Repository: DarkFenX/Pyfa Branch: master Commit: a46ad2b81b03 Files: 751 Total size: 243.9 MB Directory structure: gitextract_rzw9mcuf/ ├── .appveyor.yml ├── .codecov.yml ├── .gitattributes ├── .gitignore ├── .mailmap ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── _development/ │ ├── Pyfa_CodeStyle.xml │ ├── Pyfa_Inspections.xml │ ├── __init__.py │ ├── helpers.py │ ├── helpers_fits.py │ ├── helpers_items.py │ └── helpers_locale.py ├── config.py ├── crowdin.yml ├── db_update.py ├── dist_assets/ │ ├── cacert.pem │ ├── linux/ │ │ └── AppImageBuilder.yml │ ├── mac/ │ │ ├── pyfa.icns │ │ └── pyfa.spec │ └── win/ │ ├── dist.py │ ├── pyfa-setup.iss │ ├── pyfa.spec │ └── version_resource.py ├── docs/ │ ├── _config.yml │ ├── callback.html │ └── index.md ├── eos/ │ ├── __init__.py │ ├── calc.py │ ├── capSim.py │ ├── config.py │ ├── const.py │ ├── db/ │ │ ├── __init__.py │ │ ├── gamedata/ │ │ │ ├── __init__.py │ │ │ ├── alphaClones.py │ │ │ ├── attribute.py │ │ │ ├── category.py │ │ │ ├── dynamicAttributes.py │ │ │ ├── effect.py │ │ │ ├── group.py │ │ │ ├── implantSet.py │ │ │ ├── item.py │ │ │ ├── marketGroup.py │ │ │ ├── metaData.py │ │ │ ├── metaGroup.py │ │ │ ├── queries.py │ │ │ ├── traits.py │ │ │ └── unit.py │ │ ├── migration.py │ │ ├── migrations/ │ │ │ ├── __init__.py │ │ │ ├── upgrade1.py │ │ │ ├── upgrade10.py │ │ │ ├── upgrade11.py │ │ │ ├── upgrade12.py │ │ │ ├── upgrade13.py │ │ │ ├── upgrade14.py │ │ │ ├── upgrade15.py │ │ │ ├── upgrade16.py │ │ │ ├── upgrade17.py │ │ │ ├── upgrade18.py │ │ │ ├── upgrade19.py │ │ │ ├── upgrade2.py │ │ │ ├── upgrade20.py │ │ │ ├── upgrade21.py │ │ │ ├── upgrade22.py │ │ │ ├── upgrade23.py │ │ │ ├── upgrade24.py │ │ │ ├── upgrade25.py │ │ │ ├── upgrade26.py │ │ │ ├── upgrade27.py │ │ │ ├── upgrade28.py │ │ │ ├── upgrade29.py │ │ │ ├── upgrade3.py │ │ │ ├── upgrade30.py │ │ │ ├── upgrade31.py │ │ │ ├── upgrade32.py │ │ │ ├── upgrade33.py │ │ │ ├── upgrade34.py │ │ │ ├── upgrade35.py │ │ │ ├── upgrade36.py │ │ │ ├── upgrade37.py │ │ │ ├── upgrade38.py │ │ │ ├── upgrade39.py │ │ │ ├── upgrade4.py │ │ │ ├── upgrade40.py │ │ │ ├── upgrade41.py │ │ │ ├── upgrade42.py │ │ │ ├── upgrade43.py │ │ │ ├── upgrade44.py │ │ │ ├── upgrade45.py │ │ │ ├── upgrade46.py │ │ │ ├── upgrade47.py │ │ │ ├── upgrade48.py │ │ │ ├── upgrade49.py │ │ │ ├── upgrade5.py │ │ │ ├── upgrade6.py │ │ │ ├── upgrade7.py │ │ │ ├── upgrade8.py │ │ │ └── upgrade9.py │ │ ├── saveddata/ │ │ │ ├── __init__.py │ │ │ ├── booster.py │ │ │ ├── cargo.py │ │ │ ├── character.py │ │ │ ├── damagePattern.py │ │ │ ├── databaseRepair.py │ │ │ ├── drone.py │ │ │ ├── fighter.py │ │ │ ├── fit.py │ │ │ ├── implant.py │ │ │ ├── implantSet.py │ │ │ ├── miscData.py │ │ │ ├── module.py │ │ │ ├── mutatorDrone.py │ │ │ ├── mutatorMod.py │ │ │ ├── override.py │ │ │ ├── price.py │ │ │ ├── queries.py │ │ │ ├── skill.py │ │ │ ├── targetProfile.py │ │ │ └── user.py │ │ └── util.py │ ├── effectHandlerHelpers.py │ ├── effects.py │ ├── eqBase.py │ ├── events.py │ ├── gamedata.py │ ├── lgpl.txt │ ├── modifiedAttributeDict.py │ ├── saveddata/ │ │ ├── __init__.py │ │ ├── booster.py │ │ ├── boosterSideEffect.py │ │ ├── cargo.py │ │ ├── character.py │ │ ├── citadel.py │ │ ├── damagePattern.py │ │ ├── drone.py │ │ ├── fighter.py │ │ ├── fighterAbility.py │ │ ├── fit.py │ │ ├── implant.py │ │ ├── implantSet.py │ │ ├── miscData.py │ │ ├── mode.py │ │ ├── module.py │ │ ├── mutatedMixin.py │ │ ├── mutator.py │ │ ├── override.py │ │ ├── price.py │ │ ├── ship.py │ │ ├── ssocharacter.py │ │ ├── targetProfile.py │ │ └── user.py │ └── utils/ │ ├── __init__.py │ ├── cycles.py │ ├── default.py │ ├── float.py │ ├── pyinst_support.py │ ├── round.py │ ├── spoolSupport.py │ └── stats.py ├── graphs/ │ ├── __init__.py │ ├── calc.py │ ├── data/ │ │ ├── __init__.py │ │ ├── base/ │ │ │ ├── __init__.py │ │ │ ├── cache.py │ │ │ ├── defs.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitCapacitor/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitDamageStats/ │ │ │ ├── __init__.py │ │ │ ├── cache/ │ │ │ │ ├── __init__.py │ │ │ │ ├── projected.py │ │ │ │ └── time.py │ │ │ ├── calc/ │ │ │ │ ├── __init__.py │ │ │ │ ├── application.py │ │ │ │ └── projected.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitEcmBurstScanresDamps/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitEwarStats/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitLockTime/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitMobility/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitRemoteReps/ │ │ │ ├── __init__.py │ │ │ ├── cache.py │ │ │ ├── calc.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ ├── fitShieldRegen/ │ │ │ ├── __init__.py │ │ │ ├── getter.py │ │ │ └── graph.py │ │ └── fitWarpTime/ │ │ ├── __init__.py │ │ ├── cache.py │ │ ├── getter.py │ │ └── graph.py │ ├── events.py │ ├── gui/ │ │ ├── __init__.py │ │ ├── canvasPanel.py │ │ ├── ctrlPanel.py │ │ ├── frame.py │ │ ├── lists.py │ │ ├── stylePickers.py │ │ └── vector.py │ ├── style.py │ └── wrapper.py ├── gui/ │ ├── __init__.py │ ├── aboutData.py │ ├── additionsPane.py │ ├── app.py │ ├── attribute_gauge.py │ ├── auxWindow.py │ ├── bitmap_loader.py │ ├── builtinAdditionPanes/ │ │ ├── __init__.py │ │ ├── boosterView.py │ │ ├── cargoView.py │ │ ├── commandView.py │ │ ├── droneView.py │ │ ├── fighterView.py │ │ ├── implantView.py │ │ ├── notesView.py │ │ └── projectedView.py │ ├── builtinContextMenus/ │ │ ├── __init__.py │ │ ├── additionsExportAll.py │ │ ├── additionsExportSelection.py │ │ ├── additionsImport.py │ │ ├── ammoToDmgPattern.py │ │ ├── boosterSideEffects.py │ │ ├── cargoAdd.py │ │ ├── cargoAddAmmo.py │ │ ├── cargoFill.py │ │ ├── commandFitAdd.py │ │ ├── damagePatternChange.py │ │ ├── droneAddStack.py │ │ ├── droneSplitStack.py │ │ ├── envEffectAdd.py │ │ ├── factorReload.py │ │ ├── fighterAbilities.py │ │ ├── fitAddBrowse.py │ │ ├── fitAddCurrentlyOpen.py │ │ ├── fitOpenNewTab.py │ │ ├── fitPilotSecurity.py │ │ ├── fitSystemSecurity.py │ │ ├── graphDmgApplyProjected.py │ │ ├── graphDmgDroneMode.py │ │ ├── graphDmgIgnoreResists.py │ │ ├── graphDroneControlRange.py │ │ ├── graphFitAmmoPicker.py │ │ ├── graphLockRange.py │ │ ├── implantSetApply.py │ │ ├── implantSetSave.py │ │ ├── itemAmountChange.py │ │ ├── itemFill.py │ │ ├── itemMarketJump.py │ │ ├── itemMutations.py │ │ ├── itemProject.py │ │ ├── itemProjectionRange.py │ │ ├── itemRemove.py │ │ ├── itemStats.py │ │ ├── itemVariationChange.py │ │ ├── moduleAmmoChange.py │ │ ├── moduleFill.py │ │ ├── moduleMutatedExport.py │ │ ├── moduleRahPattern.py │ │ ├── moduleSpool.py │ │ ├── priceOptions.py │ │ ├── resistMode.py │ │ ├── shared/ │ │ │ ├── __init__.py │ │ │ └── patterns.py │ │ ├── shipJump.py │ │ ├── shipModeChange.py │ │ ├── skillAffectors.py │ │ └── targetProfile/ │ │ ├── __init__.py │ │ ├── adder.py │ │ ├── editor.py │ │ └── switcher.py │ ├── builtinItemStatsViews/ │ │ ├── __init__.py │ │ ├── attributeGrouping.py │ │ ├── attributeSlider.py │ │ ├── helpers.py │ │ ├── itemAffectedBy.py │ │ ├── itemAttributes.py │ │ ├── itemCompare.py │ │ ├── itemDependants.py │ │ ├── itemDescription.py │ │ ├── itemEffects.py │ │ ├── itemMutator.py │ │ ├── itemProperties.py │ │ ├── itemRequirements.py │ │ └── itemTraits.py │ ├── builtinMarketBrowser/ │ │ ├── __init__.py │ │ ├── events.py │ │ ├── itemView.py │ │ ├── marketTree.py │ │ ├── metaButton.py │ │ ├── pfSearchBox.py │ │ └── searchBox.py │ ├── builtinPreferenceViews/ │ │ ├── __init__.py │ │ ├── dummyView.py │ │ ├── pyfaContextMenuPreferences.py │ │ ├── pyfaDatabasePreferences.py │ │ ├── pyfaEnginePreferences.py │ │ ├── pyfaEsiPreferences.py │ │ ├── pyfaGeneralPreferences.py │ │ ├── pyfaHTMLExportPreferences.py │ │ ├── pyfaLoggingPreferences.py │ │ ├── pyfaMarketPreferences.py │ │ ├── pyfaNetworkPreferences.py │ │ ├── pyfaStatViewPreferences.py │ │ └── pyfaUpdatePreferences.py │ ├── builtinShipBrowser/ │ │ ├── __init__.py │ │ ├── categoryItem.py │ │ ├── events.py │ │ ├── fitItem.py │ │ ├── navigationPanel.py │ │ ├── pfBitmapButton.py │ │ ├── pfBitmapFrame.py │ │ ├── pfListPane.py │ │ ├── pfStaticText.py │ │ ├── pfWidgetContainer.py │ │ ├── raceSelector.py │ │ ├── sfBrowserItem.py │ │ └── shipItem.py │ ├── builtinStatsViews/ │ │ ├── __init__.py │ │ ├── bombingViewFull.py │ │ ├── capacitorViewFull.py │ │ ├── firepowerViewFull.py │ │ ├── miningyieldViewFull.py │ │ ├── outgoingViewFull.py │ │ ├── outgoingViewMinimal.py │ │ ├── priceViewFull.py │ │ ├── priceViewMinimal.py │ │ ├── rechargeViewFull.py │ │ ├── resistancesViewFull.py │ │ ├── resourcesViewFull.py │ │ └── targetingMiscViewMinimal.py │ ├── builtinViewColumns/ │ │ ├── __init__.py │ │ ├── abilities.py │ │ ├── ammo.py │ │ ├── ammoIcon.py │ │ ├── attributeDisplay.py │ │ ├── attributeDisplayGraph.py │ │ ├── baseIcon.py │ │ ├── baseName.py │ │ ├── capacitorUse.py │ │ ├── dampScanRes.py │ │ ├── droneEhp.py │ │ ├── droneRegen.py │ │ ├── graphColor.py │ │ ├── graphLightness.py │ │ ├── graphLineStyle.py │ │ ├── heat.py │ │ ├── maxRange.py │ │ ├── misc.py │ │ ├── price.py │ │ ├── projectionRange.py │ │ ├── propertyDisplay.py │ │ ├── sideEffects.py │ │ ├── state.py │ │ └── targetResists.py │ ├── builtinViews/ │ │ ├── __init__.py │ │ ├── emptyView.py │ │ ├── entityEditor.py │ │ ├── fittingView.py │ │ └── implantEditor.py │ ├── cachingImageList.py │ ├── characterEditor.py │ ├── characterSelection.py │ ├── chrome_tabs.py │ ├── contextMenu.py │ ├── copySelectDialog.py │ ├── devTools.py │ ├── display.py │ ├── errorDialog.py │ ├── esiFittings.py │ ├── fitBrowserLite.py │ ├── fitCommands/ │ │ ├── __init__.py │ │ ├── calc/ │ │ │ ├── __init__.py │ │ │ ├── booster/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── remove.py │ │ │ │ ├── sideEffectToggleState.py │ │ │ │ └── toggleStates.py │ │ │ ├── cargo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ └── remove.py │ │ │ ├── commandFit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── remove.py │ │ │ │ └── toggleStates.py │ │ │ ├── drone/ │ │ │ │ ├── __init__.py │ │ │ │ ├── localAdd.py │ │ │ │ ├── localChangeAmount.py │ │ │ │ ├── localChangeMutation.py │ │ │ │ ├── localRemove.py │ │ │ │ ├── localToggleStates.py │ │ │ │ ├── projectedAdd.py │ │ │ │ ├── projectedChangeAmount.py │ │ │ │ ├── projectedChangeProjectionRange.py │ │ │ │ ├── projectedChangeState.py │ │ │ │ └── projectedRemove.py │ │ │ ├── fighter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── abilityToggleStates.py │ │ │ │ ├── changeAmount.py │ │ │ │ ├── localAdd.py │ │ │ │ ├── localRemove.py │ │ │ │ ├── localToggleStates.py │ │ │ │ ├── projectedAdd.py │ │ │ │ ├── projectedChangeProjectionRange.py │ │ │ │ ├── projectedChangeState.py │ │ │ │ └── projectedRemove.py │ │ │ ├── fitPilotSecurity.py │ │ │ ├── fitRename.py │ │ │ ├── fitSystemSecurity.py │ │ │ ├── implant/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeLocation.py │ │ │ │ ├── remove.py │ │ │ │ └── toggleStates.py │ │ │ ├── itemRebase.py │ │ │ ├── module/ │ │ │ │ ├── __init__.py │ │ │ │ ├── changeCharges.py │ │ │ │ ├── changeSpool.py │ │ │ │ ├── localAdd.py │ │ │ │ ├── localChangeMutation.py │ │ │ │ ├── localChangeStates.py │ │ │ │ ├── localClone.py │ │ │ │ ├── localRemove.py │ │ │ │ ├── localReplace.py │ │ │ │ ├── localSwap.py │ │ │ │ ├── projectedAdd.py │ │ │ │ ├── projectedChangeProjectionRange.py │ │ │ │ ├── projectedChangeStates.py │ │ │ │ └── projectedRemove.py │ │ │ ├── projectedFit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ ├── changeProjectionRange.py │ │ │ │ ├── changeState.py │ │ │ │ └── remove.py │ │ │ └── shipModeChange.py │ │ ├── gui/ │ │ │ ├── __init__.py │ │ │ ├── booster/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeMeta.py │ │ │ │ ├── imprt.py │ │ │ │ ├── remove.py │ │ │ │ ├── sideEffectToggleState.py │ │ │ │ └── toggleStates.py │ │ │ ├── cargo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ ├── changeMetas.py │ │ │ │ ├── imprt.py │ │ │ │ └── remove.py │ │ │ ├── commandFit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── remove.py │ │ │ │ └── toggleStates.py │ │ │ ├── fitPilotSecurity.py │ │ │ ├── fitRename.py │ │ │ ├── fitRestrictionToggle.py │ │ │ ├── fitSystemSecurity.py │ │ │ ├── implant/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeLocation.py │ │ │ │ ├── changeMeta.py │ │ │ │ ├── imprt.py │ │ │ │ ├── remove.py │ │ │ │ ├── setAdd.py │ │ │ │ └── toggleStates.py │ │ │ ├── itemsRebase.py │ │ │ ├── localDrone/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ ├── changeMetas.py │ │ │ │ ├── changeMutation.py │ │ │ │ ├── clone.py │ │ │ │ ├── imprt.py │ │ │ │ ├── mutatedConvert.py │ │ │ │ ├── mutatedImport.py │ │ │ │ ├── mutatedRevert.py │ │ │ │ ├── remove.py │ │ │ │ ├── stackSplit.py │ │ │ │ ├── stacksMerge.py │ │ │ │ └── toggleStates.py │ │ │ ├── localFighter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── abilityToggleState.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ ├── changeMetas.py │ │ │ │ ├── imprt.py │ │ │ │ ├── remove.py │ │ │ │ └── toggleStates.py │ │ │ ├── localModule/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeCharges.py │ │ │ │ ├── changeMetas.py │ │ │ │ ├── changeMutation.py │ │ │ │ ├── changeSpool.py │ │ │ │ ├── changeStates.py │ │ │ │ ├── clone.py │ │ │ │ ├── fillAdd.py │ │ │ │ ├── fillClone.py │ │ │ │ ├── mutatedConvert.py │ │ │ │ ├── mutatedImport.py │ │ │ │ ├── mutatedRevert.py │ │ │ │ ├── remove.py │ │ │ │ ├── replace.py │ │ │ │ └── swap.py │ │ │ ├── localModuleCargo/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cargoToLocalModule.py │ │ │ │ └── localModuleToCargo.py │ │ │ ├── projectedChangeProjectionRange.py │ │ │ ├── projectedChangeStates.py │ │ │ ├── projectedDrone/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ └── changeMetas.py │ │ │ ├── projectedFighter/ │ │ │ │ ├── __init__.py │ │ │ │ ├── abilityToggleState.py │ │ │ │ ├── add.py │ │ │ │ ├── changeAmount.py │ │ │ │ └── changeMetas.py │ │ │ ├── projectedFit/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ └── changeAmount.py │ │ │ ├── projectedModule/ │ │ │ │ ├── __init__.py │ │ │ │ ├── add.py │ │ │ │ ├── changeCharges.py │ │ │ │ ├── changeMetas.py │ │ │ │ └── changeSpool.py │ │ │ ├── projectedRemove.py │ │ │ └── shipModeChange.py │ │ └── helpers.py │ ├── globalEvents.py │ ├── itemStats.py │ ├── mainFrame.py │ ├── mainMenuBar.py │ ├── marketBrowser.py │ ├── multiSwitch.py │ ├── patternEditor.py │ ├── preferenceDialog.py │ ├── preferenceView.py │ ├── propertyEditor.py │ ├── pyfa_gauge.py │ ├── setEditor.py │ ├── shipBrowser.py │ ├── ssoLogin.py │ ├── statsPane.py │ ├── statsView.py │ ├── targetProfileEditor.py │ ├── toggle_panel.py │ ├── updateDialog.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── anim.py │ │ ├── anim_effects.py │ │ ├── clipboard.py │ │ ├── color.py │ │ ├── dark.py │ │ ├── draw.py │ │ ├── exportHtml.py │ │ ├── fonts.py │ │ ├── gdi.py │ │ ├── helpers_wxPython.py │ │ ├── inputs.py │ │ ├── listFormatter.py │ │ ├── numberFormatter.py │ │ ├── progressHelper.py │ │ ├── sorter.py │ │ └── staticHelpers.py │ └── viewColumn.py ├── locale/ │ ├── README.md │ ├── en_US/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── es_ES/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── fr_FR/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── it_IT/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── ja_JP/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── ko_KR/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── lang.pot │ ├── ru_RU/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ ├── tr_TR/ │ │ └── LC_MESSAGES/ │ │ └── lang.po │ └── zh_CN/ │ └── LC_MESSAGES/ │ └── lang.po ├── locale_test/ │ └── getTextLocale.py ├── pyfa.py ├── pyfa.spec ├── requirements.txt ├── scripts/ │ ├── __init__.py │ ├── compile_data.py │ ├── compile_lang.py │ ├── conversion.py │ ├── dump_crowdin_progress.py │ ├── dump_data.py │ ├── dump_version.py │ ├── dynamicattributes.py │ ├── effectUsedBy.py │ ├── findNonMarket.py │ ├── icons_update.py │ ├── itemDiff.py │ ├── msgfmt.py │ ├── osx-package.sh │ ├── osx-setup.sh │ ├── osx-translations.sh │ └── renders_update.py ├── service/ │ ├── __init__.py │ ├── ammo.py │ ├── attribute.py │ ├── character.py │ ├── const.py │ ├── conversions/ │ │ ├── __init__.py │ │ ├── releaseApr2020.py │ │ ├── releaseApril2016.py │ │ ├── releaseAug2019.py │ │ ├── releaseAug2020.py │ │ ├── releaseAug2022.py │ │ ├── releaseCarnyx.py │ │ ├── releaseDec2021.py │ │ ├── releaseDecember15.py │ │ ├── releaseEquinox.py │ │ ├── releaseFeb2016.py │ │ ├── releaseFeb2018.py │ │ ├── releaseFeb2020.py │ │ ├── releaseFeb2023.py │ │ ├── releaseInvasion.py │ │ ├── releaseJan2016.py │ │ ├── releaseJan2020.py │ │ ├── releaseJul2020.py │ │ ├── releaseJun2020.py │ │ ├── releaseMar2016.py │ │ ├── releaseMar2020.py │ │ ├── releaseMay2020.py │ │ ├── releaseNov2016.py │ │ ├── releaseNov2025.py │ │ ├── releaseOceanus.py │ │ ├── releaseOct2020.py │ │ ├── releaseOct2021.py │ │ ├── releaseParallax.py │ │ ├── releaseProteus.py │ │ ├── releaseSep2020.py │ │ ├── releaseSep2023.py │ │ ├── releaseSep2024.py │ │ ├── releaseSep2025.py │ │ ├── releaseTiamat.py │ │ ├── skinnedShips.py │ │ └── trigDread.py │ ├── crudeTests.py │ ├── damagePattern.py │ ├── esi.py │ ├── esiAccess.py │ ├── eveapi.py │ ├── fit.py │ ├── implantSet.py │ ├── jargon/ │ │ ├── __init__.py │ │ ├── defaults.yaml │ │ ├── header.yaml │ │ ├── jargon.py │ │ ├── loader.py │ │ └── resources.py │ ├── market.py │ ├── marketSources/ │ │ ├── __init__.py │ │ ├── cevemarket.py │ │ ├── evemarketdata.py │ │ ├── evetycoon.py │ │ └── fuzzwork.py │ ├── network.py │ ├── port/ │ │ ├── __init__.py │ │ ├── dna.py │ │ ├── efs.py │ │ ├── eft.py │ │ ├── esi.py │ │ ├── multibuy.py │ │ ├── muta.py │ │ ├── port.py │ │ ├── shared.py │ │ ├── shipstats.py │ │ └── xml.py │ ├── precalcImplantSet.py │ ├── prefetch.py │ ├── prereqsCheck.py │ ├── price.py │ ├── pycrest/ │ │ └── eve.py │ ├── server.py │ ├── settings.py │ ├── targetProfile.py │ └── update.py ├── staticdata/ │ ├── fsd_built/ │ │ ├── categories.0.json │ │ ├── dogmaattributes.0.json │ │ ├── dogmaeffects.0.json │ │ ├── dogmaunits.0.json │ │ ├── dynamicitemattributes.0.json │ │ ├── groups.0.json │ │ ├── iconids.0.json │ │ ├── marketgroups.0.json │ │ ├── metagroups.0.json │ │ ├── requiredskillsfortypes.0.json │ │ ├── typedogma.0.json │ │ ├── typedogma.1.json │ │ ├── typedogma.2.json │ │ ├── types.0.json │ │ ├── types.1.json │ │ ├── types.2.json │ │ ├── types.3.json │ │ ├── types.4.json │ │ └── types.5.json │ ├── fsd_lite/ │ │ ├── clonegrades.0.json │ │ └── dbuffcollections.0.json │ └── phobos/ │ ├── metadata.0.json │ └── traits.0.json ├── tests/ │ ├── jeffy_ja-en[99].xml │ ├── test_locale/ │ │ ├── file_dialog.py │ │ ├── readme.md │ │ ├── test_Pyfa/ │ │ │ ├── test_codec_english.py │ │ │ └── testcodec │ │ ├── test_os_walk.py │ │ ├── test_знаф/ │ │ │ ├── test_codec_russian.py │ │ │ └── testcodec │ │ ├── test_פטכש/ │ │ │ ├── test_codec_hebrew.py │ │ │ └── testcodec │ │ └── test_测试/ │ │ ├── test_codec_chinese_simplified.py │ │ └── testcodec │ ├── test_modules/ │ │ ├── test_eos/ │ │ │ ├── test_gamedata.py │ │ │ ├── test_modifiedAttributeDict.py │ │ │ ├── test_saveddata/ │ │ │ │ ├── test_booster.py │ │ │ │ └── test_fit_2.py │ │ │ └── test_utils/ │ │ │ └── test_stats.py │ │ ├── test_gui/ │ │ │ └── test_aboutData.py │ │ └── test_service/ │ │ ├── test_attribute.py │ │ └── test_fit.py │ ├── test_placeholder.py │ └── test_unread_desc.py ├── tox.ini ├── utils/ │ ├── __init__.py │ ├── cjk.py │ ├── deprecated.py │ ├── repr.py │ ├── stopwatch.py │ ├── strfunctions.py │ └── timer.py └── version.yml ================================================ FILE CONTENTS ================================================ ================================================ FILE: .appveyor.yml ================================================ image: - Ubuntu2204 - Visual Studio 2022 - macos-monterey for: - matrix: only: - image: Ubuntu2204 environment: APPVEYOR_SSH_KEY: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDhb96UEXy8yOy/f+riX/8kKbNx/lOfIZ4pP4Cw3Gj3DmnTwEnxtRtyc+xtaxOsKbt+7+EAXFpCzYX+jHMhtd0QtWB7dbey8DBg31g0f8C5EPquqROibVbhzr/F3f6/d52FFfq6Y/CWaAvLjezvipr+zOOsIFcVusqtXdPJQ/LtUJ0LS5d4lFiw5ELHSxHIpqwGwyb7PbR3ufEFoqbr8eYiCH+vlBob72ArPfo2f3u0sMvpGYmjVVu2jj4FEY2h89sLrGyFdNWBoyumRhkb38+WSAuyPa/Y21+g+S8sRzIlkwbxicGNMtrMIi6zHEIGAgA06Sw2psP807h730PPOVaWjUcU3ojNW8hH3nPizF74pT82+iP7/fFC4PXLP+tBa+8OoHC5yiO7QKUKprMSqVa1qOm8fHbrzglplKJXfzSfUtSE+AQ+HtHhuUWKI+0LBLDrsOJwI5hbsPOAuiZ5I3VfqfAOck6SH9TcmlapVmQEypc7d7oeeUtZSOuIWKXp068= dfx@aw" APPIMAGE_TOOL: appimage-builder-x86_64.AppImage DEPLOY_DIR: AppDir/opt/pyfa # APPVEYOR_SSH_BLOCK: true cache: - /home/appveyor/.cache/pip -> requirements.txt # init: # - sh: curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - install: - sh: sudo DEBIAN_FRONTEND=noninteractive apt-get -y update --allow-releaseinfo-change # AppImage dependencies - sh: sudo DEBIAN_FRONTEND=noninteractive apt-get -y install libfuse2 # Preparation script dependencies - sh: sudo DEBIAN_FRONTEND=noninteractive apt-get -y install python3-wxgtk4.0 python3-sqlalchemy python3-logbook before_build: # Prepare pyfa data - sh: find locale/ -type f -name "*.po" -exec msgen "{}" -o "{}" \; - sh: pyenv global system - sh: python3 -B scripts/compile_lang.py - sh: python3 -B scripts/dump_crowdin_progress.py - sh: python3 -B db_update.py - sh: export PYFA_VERSION="$(python3 -B scripts/dump_version.py)" - sh: mkdir build # Download packaging tool - sh: curl --fail-with-body -o $APPIMAGE_TOOL -L https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage - sh: chmod +x $APPIMAGE_TOOL build_script: - sh: mkdir -p AppDir/opt/pyfa - sh: cp -r eos graphs gui imgs locale service utils eve.db config.py pyfa.py db_update.py README.md LICENSE version.yml AppDir/opt/pyfa/ - sh: mkdir -p AppDir/usr/share/icons/hicolor/64x64/apps/ - sh: cp imgs/gui/pyfa64.png AppDir/usr/share/icons/hicolor/64x64/apps/pyfa.png - sh: ./$APPIMAGE_TOOL --recipe dist_assets/linux/AppImageBuilder.yml after_build: - sh: ls -la artifacts: - path: pyfa-$PYFA_VERSION-linux.AppImage deploy: tag: $PYFA_VERSION release: pyfa $PYFA_VERSION description: 'Release description' provider: GitHub auth_token: secure: M94o0xMtzxrvlKpqMcXU2KfbJdd3aYJ3UxWzePUz/pkT1/Ojiis052CiLsLVyzJg draft: true force_update: false # deploy on tag push only on: APPVEYOR_REPO_TAG: true - matrix: only: - image: Visual Studio 2022 environment: PYTHON: "C:\\Python311-x64" # Should be enabled only for build process debugging # init: # - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) cache: - C:\users\appveyor\appdata\local\pip\cache\ -> requirements.txt install: - ps: echo("OS version:") - ps: "[System.Environment]::OSVersion.Version" - ps: echo("Filesystem - root:") - ps: "ls \"C:\\\"" - ps: echo("Filesystem - projects root:") - ps: "ls \"C:\\projects\\\"" - ps: echo("Filesystem - pyfa root:") - ps: "ls \"C:\\projects\\$env:APPVEYOR_PROJECT_SLUG\\\"" - ps: echo("Filesystem - installed SDKs:") - ps: "ls \"C:\\Program Files (x86)\\Windows Kits\\\"" # Prepend newly installed Python to the PATH of this build (this cannot be # done from inside the powershell script as it would require to restart # the parent CMD process). - cmd: "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" - cmd: "appveyor DownloadFile https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.20.2-v1.16/gettext0.20.2-iconv1.16-shared-64.zip" - cmd: "7z x gettext0.20.2-iconv1.16-shared-64.zip -ogettext" - cmd: "SET PATH=gettext;%PATH%" - cmd: "python --version" - cmd: "python -c \"import struct; print(struct.calcsize('P') * 8)\"" # Upgrade to the latest version of pip to avoid it displaying warnings # about it being out of date. - cmd: "python -m pip install --upgrade pip" # Install the build dependencies of the project. If some dependencies contain # compiled extensions and are not provided as pre-built wheel packages, # pip will build them from source using the MSVC compiler matching the # target Python version and architecture - ps: echo("Install pip requirements:") - cmd: "python -m pip install -r requirements.txt" - cmd: "python -m pip install PyInstaller==6.0.0" before_build: # directory that will contain the built files - ps: $env:PYFA_DIST_DIR = "c:\projects\$env:APPVEYOR_PROJECT_SLUG\dist" - ps: $env:PYFA_VERSION = (python ./scripts/dump_version.py) - ps: echo("pyfa version $env:PYFA_VERSION") build_script: - ps: echo("Build pyfa:") - ps: Get-ChildItem locale/*.po -Recurse -File| Foreach {msgen $_.fullname -o $_.fullname} # Build language files - cmd: "python scripts/compile_lang.py" # Dump language progress - cmd: "python scripts/dump_crowdin_progress.py" # Build gamedata DB - cmd: "python db_update.py" # Build command for PyInstaller - cmd: "python -m PyInstaller --clean -y pyfa.spec" # Copy over manifest (See pyfa-org/pyfa#1622) - ps: xcopy /y dist_assets\win\pyfa.exe.manifest $env:PYFA_DIST_DIR\pyfa\ # InnoScript EXE building. This is in a separate script because I don't feel like copying over the logic to AppVeyor script right now... - cmd: "python dist_assets/win/dist.py" - ps: dir $env:PYFA_DIST_DIR/ after_build: - ps: "ls \"./\"" - ps: 7z a "pyfa-$env:PYFA_VERSION-win.zip" -r "$env:PYFA_DIST_DIR\pyfa\*" artifacts: - path: pyfa*-win.zip - path: pyfa*-win.exe deploy: tag: $(pyfa_version) release: pyfa $(pyfa_version) description: 'Release description' provider: GitHub auth_token: secure: M94o0xMtzxrvlKpqMcXU2KfbJdd3aYJ3UxWzePUz/pkT1/Ojiis052CiLsLVyzJg draft: true force_update: false # deploy on tag push only on: APPVEYOR_REPO_TAG: true - matrix: only: - image: macos-monterey environment: APPVEYOR_SSH_KEY: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJDW/+oYNGOiPvwuwAL9tc/LQgg58aosIVpMYfepQZ20V+VZnHpZh8IRDA8Jo5xht19p2PksA+hFgqA0kpKtrSkuiWdE8rATQItfk4gf7yB0yGasJGGQZYazy9k/9XtmYkq2HHOOeEqdxvrICddJQ88MLCLT9lJENSUP/YS/yGcjZFXVxE11pTeIcqlCRU+3eYa1v7BeNvXIKNhZoK5orXWrtuH3cy8jrSns/u70aYfJ6B2jA8CnWnDbuvpeQtEY61SQqlKUsSArNa8NAsXj41wr3Ar9gAG9330w7EMTqlutk8HZO35uHI0q5qinUhaQYufPPrVkb2L/N+ZCfu0fnh appveyor" cache: - /Users/appveyor/Library/Caches/pip/ -> requirements.txt init: # - sh: curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - - sh: source ~/venv3.11/bin/activate install: - sh: bash scripts/osx-setup.sh build_script: - sh: bash scripts/osx-translations.sh - sh: python3 scripts/compile_lang.py - sh: python3 scripts/dump_crowdin_progress.py - sh: python3 db_update.py after_build: - sh: export PYFA_VERSION="$(python3 scripts/dump_version.py)" - sh: bash scripts/osx-package.sh # on_finish: # - sh: export APPVEYOR_SSH_BLOCK=true # - sh: curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e - artifacts: - path: dist/pyfa*-mac.zip before_deploy: - sh: export RELEASE_PKG_FILE=$(ls *.deb) - sh: echo "deploying $RELEASE_PKG_FILE to GitHub releases" deploy: tag: $PYFA_VERSION release: pyfa $PYFA_VERSION description: 'Release description' provider: GitHub auth_token: secure: M94o0xMtzxrvlKpqMcXU2KfbJdd3aYJ3UxWzePUz/pkT1/Ojiis052CiLsLVyzJg draft: true force_update: false # deploy on tag push only on: APPVEYOR_REPO_TAG: true ================================================ FILE: .codecov.yml ================================================ codecov: notify: require_ci_to_pass: yes coverage: precision: 2 round: down range: "70...100" status: project: yes patch: yes changes: no parsers: gcov: branch_detection: conditional: yes loop: yes method: no macro: no comment: layout: "header, diff" behavior: default require_changes: no ================================================ FILE: .gitattributes ================================================ # Set the default behavior, in case people don't have core.autocrlf set. * text=auto # Explicitly declare text files you want to always be normalized and converted # to native line endings on checkout. # *.c text # *.h text # Declare files that will always have CRLF line endings on checkout. # Source files # ============ *.pxd text eol=crlf *.py text eol=crlf *.py3 text eol=crlf *.pyw text eol=crlf *.pyx text eol=crlf pyfa.py text eol=lf # Denote all files that are truly binary and should not be modified. # Binary files # ============ *.db binary *.p binary *.pkl binary *.pyc binary *.pyd binary *.pyo binary # Note: .db, .p, and .pkl files are associated # with the python modules ``pickle``, ``dbm.*``, # ``shelve``, ``marshal``, ``anydbm``, & ``bsddb`` # (among others). # Denote all files that are truly binary and should not be modified. # Image files # ============ *.png binary *.jpg binary *.icns binary *.ico binary ================================================ FILE: .gitignore ================================================ #Python specific *.pyc #Kwrite/Gedit/Other crapapps making backups *~ #Patch files *.patch #Personal /saveddata/ #Pyfa file pyfaFits.html #Temporary files *.py__jb_tmp__ # Based on https://github.com/github/gitignore # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg Pyfa.egg-info/ # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *,cover .hypothesis/ # Translations *.mo # Django stuff: *.log local_settings.py # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # IPython Notebook .ipynb_checkpoints # pyenv .python-version PyfaEnv/ # celery beat schedule file celerybeat-schedule # dotenv .env # virtualenv .venv/ venv/ ENV/ # Spyder project settings .spyderproject # Rope project settings .ropeproject # Eclipse project settings .project .pydevproject .settings # Pycharm project settings .idea eos.iml gitversion .version /.version *.swp *.fsdbinary /locale/progress.json # vscode settings .vscode ================================================ FILE: .mailmap ================================================ cncfanatics cncfanatics blitzmann blitzmann blitzmann blitzmann blitzmann blitzman blitzmann Ryan Holmes blitzmann Corollax Corollax Corollax Corollax Mr. Nukealizer Mr. Nukealizer DarkPhoenix Sakari Orisi Will Wykeham Will Wykeham OISumeko OISumeko ================================================ FILE: CONTRIBUTING.md ================================================ # Contribution ## Requirements - Python 3.11 (later versions may not work) - Git CLI installed - Python, pip and git are all available as command-line commands (add to the path if needed) Virtual environment will be created in *PyfaEnv* folder. Project will be cloned and run from the *PyfaDEV* folder. Separate virtual environment will be created so required libraries won't clutter the main python installation. > Commands and screens were created on Windows 10. Please, update all the paths according to your OS. ## Setting up the project manually Clone the repository ``` git clone PyfaDEV ``` Create the virtual environment ``` python -m venv PyfaEnv ``` Activate the virtual environment ``` For cmd.exe: PyfaEnv\scripts\activate.bat For PowerShell: PyfaEnv\Scripts\Activate.ps1 For bash: source /Scripts/activate ``` > For other OS check [Python documentation](https://docs.python.org/3/library/venv.html) Install requirements for the project from *requirements.txt* ``` pip install -r PyfaDEV\requirements.txt ``` > For some Linux distributions, you may need to install separate wxPython bindings, such as `python-matplotlib-wx` > You may need to [install a C compiler](https://mesonbuild.com/SimpleStart.html#installing-a-compiler-toolchain) Check that the libs from *requirements.txt* are installed ``` pip list ``` Build translations and database: ``` python PyfaDEV\scripts\compile_lang.py python PyfaDEV\db_update.py ``` Test that the project is starting properly ``` python PyfaDEV\pyfa.py ``` ## Setting up the project with PyCharm/IntelliJ Install PyCharm / Other IntelliJ product with Python plugin After launching - select *Check out from Version Control* -> *GIt* ![welcome](https://user-images.githubusercontent.com/54093496/66862580-d8edab00-ef99-11e9-94e2-e93d7043e620.png) Login to GitHub, paste the repo URL and select the folder to which to clone the project into, press *Clone*. ![Clone](https://user-images.githubusercontent.com/54093496/66862748-38e45180-ef9a-11e9-9f68-4903baf47385.png) After process is complete, open *File* -> *Settings* -> *Project* -> *Project Interpreter*. ![Settings](https://user-images.githubusercontent.com/54093496/66862792-544f5c80-ef9a-11e9-9e0f-f64767f3f1b0.png) Press on options and add new virtual environment. ![venv](https://user-images.githubusercontent.com/54093496/66862833-67622c80-ef9a-11e9-94fa-47cca0158d29.png) Open project tree view and double-click on the *requirements.txt*. Press *Install requirements*. Install all requirements. ![Reqs](https://user-images.githubusercontent.com/54093496/66862870-7a74fc80-ef9a-11e9-9b18-e64be42c49b8.png) Create new *Run Configuration*. Set correct *Script path* and *Python interpreter*. ![Run configuraion](https://user-images.githubusercontent.com/54093496/66862970-b4460300-ef9a-11e9-9fb4-20e24759904b.png) Check that the project is starting properly. ## Running tests Switch to the proper virtual environment ``` For cmd.exe: PyfaEnv\scripts\activate.bat For PowerShell: PyfaEnv\Scripts\Activate.ps1 For bash: source /Scripts/activate ``` Install pytest ``` pip install pytest ``` Switch to pyfa directory. Run tests (any will do) ``` python -m pytest py.test ``` More information on tests can be found on appropriate [Wiki page](https://github.com/pyfa-org/Pyfa/wiki/Developers:-Writing-Tests-for-Pyfa). ================================================ FILE: ISSUE_TEMPLATE.md ================================================ ## Bug Report ### Expected behavior: ### Actual behavior: ### Detailed steps to reproduce: ### Fits involved in EFT format (Edit > To Clipboard > EFT): ### Release or development git branch? Please note the release version or commit hash: ### Operating system and version (eg: Windows 10, OS X 10.9, OS X 10.11, Ubuntu 16.10): ### Other relevant information: ================================================ FILE: LICENSE ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================ # pyfa [![Build Status](https://ci.appveyor.com/api/projects/status/github/pyfa-org/pyfa?branch=master&svg=true)]([https://travis-ci.org/pyfa-org/Pyfa](https://ci.appveyor.com/project/pyfa-org/pyfa)) ![pyfa](https://user-images.githubusercontent.com/275209/66119992-864be080-e5e2-11e9-994a-3a4368c9fad7.png) ## What is it? Pyfa, short for **py**thon **f**itting **a**ssistant, allows you to create, experiment with, and save ship fittings without being in game. Open source and written in Python, it is available on any platform where Python 3 and wxWidgets are available, including Windows, macOS, and Linux. ## Latest Version and Changelogs The latest version along with release notes can always be found on the project's [releases](https://github.com/pyfa-org/Pyfa/releases) page. Pyfa will notify you if you are running an outdated version. ## Installation Windows, macOS, and Linux users are supplied self-contained builds of pyfa on the [latest releases](https://github.com/pyfa-org/Pyfa/releases/latest) page. ### Third Party Packages Please note that these packages are maintained by third-parties and are not evaluated by the pyfa developers. #### macOS Apart from the official release, there is also a [Homebrew](https://formulae.brew.sh/cask/pyfa) option for installing pyfa on macOS. Simply fire up in terminal: ``` $ brew install --cask pyfa ``` #### Linux Distro-specific Packages The following is a list of pyfa packages available for certain distributions. * Arch: https://aur.archlinux.org/packages/pyfa/ * Gentoo: https://github.com/ZeroPointEnergy/gentoo-pyfa-overlay ## Contribution If you wish to help with development or you need to run pyfa through a Python interpreter, check out [the instructions](https://github.com/pyfa-org/Pyfa/blob/master/CONTRIBUTING.md). ## Bug Reporting The preferred method of reporting bugs is through the project's [GitHub Issues interface](https://github.com/pyfa-org/Pyfa/issues). Alternatively, posting a report in the [pyfa thread](https://forums.eveonline.com/t/27156) on the official EVE Online forums is acceptable. Guidelines for bug reporting can be found on [this wiki page](https://github.com/pyfa-org/Pyfa/wiki/Bug-Reporting). ## License Pyfa is licensed under the GNU GPL v3.0, see LICENSE ## Resources * [Development repository](https://github.com/pyfa-org/Pyfa) * [EVE forum thread](https://forums.eveonline.com/t/27156) * [EVE University guide using pyfa](https://wiki.eveuniversity.org/PYFA) * [EVE Online website](http://www.eveonline.com/) ## Contacts: * Kadesh / DarkPhoenix * GitHub: @DarkFenX * EVE: Kadesh Priestess * Email: phoenix@mail.ru * Sable Blitzmann * GitHub: @blitzmann * [TweetFleet Slack](https://www.fuzzwork.co.uk/tweetfleet-slack-invites/): @blitzmann * [Gitter chat](https://gitter.im/pyfa-org/Pyfa): @blitzmann * Email: sable.blitzmann@gmail.com ## CCP Copyright Notice EVE Online, the EVE logo, EVE and all associated logos and designs are the intellectual property of CCP hf. All artwork, screenshots, characters, vehicles, storylines, world facts or other recognizable features of the intellectual property relating to these trademarks are likewise the intellectual property of CCP hf. EVE Online and the EVE logo are the registered trademarks of CCP hf. All rights are reserved worldwide. All other trademarks are the property of their respective owners. CCP hf. has granted permission to pyfa to use EVE Online and all associated logos and designs for promotional and information purposes on its website but does not endorse, and is not in any way affiliated with, pyfa. CCP is in no way responsible for the content on or functioning of this program, nor can it be liable for any damage arising from the use of this program. ================================================ FILE: _development/Pyfa_CodeStyle.xml ================================================ ================================================ FILE: _development/Pyfa_Inspections.xml ================================================ ================================================ FILE: _development/__init__.py ================================================ ================================================ FILE: _development/helpers.py ================================================ # noinspection PyPackageRequirements import pytest import os import sys import threading from sqlalchemy import MetaData, create_engine from sqlalchemy.orm import sessionmaker script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root folder to python paths sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..'))) sys._called_from_test = True # noinspection PyUnresolvedReferences,PyUnusedLocal @pytest.fixture def DBInMemory_test(): def rollback(): with sd_lock: saveddata_session.rollback() print("Creating database in memory") from os.path import realpath, join, dirname, abspath debug = False gamedataCache = True saveddataCache = True gamedata_version = "" gamedata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(str(__file__))), "..", "eve.db")) saveddata_connectionstring = 'sqlite:///:memory:' class ReadOnlyException(Exception): pass if callable(gamedata_connectionstring): gamedata_engine = create_engine("sqlite://", creator=gamedata_connectionstring, echo=debug) else: gamedata_engine = create_engine(gamedata_connectionstring, echo=debug) gamedata_meta = MetaData() gamedata_meta.bind = gamedata_engine gamedata_session = sessionmaker(bind=gamedata_engine, autoflush=False, expire_on_commit=False)() # This should be moved elsewhere, maybe as an actual query. Current, without try-except, it breaks when making a new # game db because we haven't reached gamedata_meta.create_all() try: gamedata_version = gamedata_session.execute( "SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'" ).fetchone()[0] except (KeyboardInterrupt, SystemExit): raise except Exception as e: print("Missing gamedata version.") gamedata_version = None if saveddata_connectionstring is not None: if callable(saveddata_connectionstring): saveddata_engine = create_engine(creator=saveddata_connectionstring, echo=debug) else: saveddata_engine = create_engine(saveddata_connectionstring, echo=debug) saveddata_meta = MetaData() saveddata_meta.bind = saveddata_engine saveddata_session = sessionmaker(bind=saveddata_engine, autoflush=False, expire_on_commit=False)() else: saveddata_meta = None # Lock controlling any changes introduced to session sd_lock = threading.Lock() # Import all the definitions for all our database stuff # noinspection PyPep8 #from eos.db.gamedata import alphaClones, attribute, category, effect, group, icon, item, marketGroup, metaData, metaGroup, queries, traits, unit # noinspection PyPep8 #from eos.db.saveddata import booster, cargo, character, crest, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, miscData, module, override, price, queries, skill, targetProfile, user # If using in memory saveddata, you'll want to reflect it so the data structure is good. if saveddata_connectionstring == "sqlite:///:memory:": saveddata_meta.create_all() # Output debug info to help us troubleshoot Travis print(saveddata_engine) print(gamedata_engine) helper = { #'config': eos.config, 'gamedata_session' : gamedata_session, 'saveddata_session' : saveddata_session, } return helper # noinspection PyUnresolvedReferences,PyUnusedLocal @pytest.fixture def DBInMemory(): print("Creating database in memory") import eos.config import eos import eos.db # Output debug info to help us troubleshoot Travis print(eos.db.saveddata_engine) print(eos.db.gamedata_engine) helper = { 'config': eos.config, 'db' : eos.db, 'gamedata_session' : eos.db.gamedata_session, 'saveddata_session' : eos.db.saveddata_session, } return helper @pytest.fixture def Gamedata(): print("Building Gamedata") from eos.gamedata import Item helper = { 'Item': Item, } return helper @pytest.fixture def Saveddata(): print("Building Saveddata") from eos.saveddata.ship import Ship from eos.saveddata.fit import Fit from eos.saveddata.character import Character from eos.saveddata.module import Module from eos.const import FittingModuleState from eos.saveddata.citadel import Citadel from eos.saveddata.booster import Booster helper = { 'Structure': Citadel, 'Ship' : Ship, 'Fit' : Fit, 'Character': Character, 'Module' : Module, 'State' : FittingModuleState, 'Booster' : Booster, } return helper ================================================ FILE: _development/helpers_fits.py ================================================ import pytest # noinspection PyPackageRequirements # noinspection PyShadowingNames @pytest.fixture def RifterFit(DB, Gamedata, Saveddata): print("Creating Rifter") item = DB['gamedata_session'].query(Gamedata['Item']).filter(Gamedata['Item'].name == "Rifter").first() ship = Saveddata['Ship'](item) # setup fit fit = Saveddata['Fit'](ship, "My Rifter Fit") return fit # noinspection PyShadowingNames @pytest.fixture def KeepstarFit(DB, Gamedata, Saveddata): print("Creating Keepstar") item = DB['gamedata_session'].query(Gamedata['Item']).filter(Gamedata['Item'].name == "Keepstar").first() ship = Saveddata['Structure'](item) # setup fit fit = Saveddata['Fit'](ship, "Keepstar Fit") return fit # noinspection PyShadowingNames @pytest.fixture def CurseFit(DB, Gamedata, Saveddata): print("Creating Curse - With Neuts") item = DB['gamedata_session'].query(Gamedata['Item']).filter(Gamedata['Item'].name == "Curse").first() ship = Saveddata['Ship'](item) # setup fit fit = Saveddata['Fit'](ship, "Curse - With Neuts") mod = Saveddata['Module'](DB['db'].getItem("Medium Energy Neutralizer II")) mod.state = Saveddata['State'].ONLINE # Add 5 neuts for _ in range(5): fit.modules.append(mod) return fit # noinspection PyShadowingNames @pytest.fixture def HeronFit(DB, Gamedata, Saveddata): print("Creating Heron - RemoteSebo") item = DB['gamedata_session'].query(Gamedata['Item']).filter(Gamedata['Item'].name == "Heron").first() ship = Saveddata['Ship'](item) # setup fit fit = Saveddata['Fit'](ship, "Heron - RemoteSebo") mod = Saveddata['Module'](DB['db'].getItem("Remote Sensor Booster II")) mod.state = Saveddata['State'].ONLINE # Add 5 neuts for _ in range(4): fit.modules.append(mod) return fit ================================================ FILE: _development/helpers_items.py ================================================ import pytest # noinspection PyPackageRequirements # noinspection PyShadowingNames @pytest.fixture def StrongBluePillBooster (DB, Gamedata, Saveddata): print("Creating Strong Blue Pill Booster") item = DB['gamedata_session'].query(Gamedata['Item']).filter(Gamedata['Item'].name == "Strong Blue Pill Booster").first() return Saveddata['Booster'](item) ================================================ FILE: _development/helpers_locale.py ================================================ import os # https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx windows_codecs = { 'cp1252', # Standard Windows 'cp1251', # Russian 'cp037', 'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850', 'cp852', 'cp855', 'cp856', 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', 'cp1026', 'cp1140', 'cp1250', 'cp1253', 'cp1254', 'cp1255', 'cp1256', 'cp1257', 'cp1258', } linux_codecs = { 'utf_8', # Generic Linux/Mac } mac_codecs = [ 'utf_8', # Generic Linux/Mac 'mac_cyrillic', 'mac_greek', 'mac_iceland', 'mac_latin2', 'mac_roman', 'mac_turkish', ] universal_codecs = [ 'utf_16', 'utf_32', 'utf_32_be', 'utf_32_le', 'utf_16_be', 'utf_16_le', 'utf_7', 'utf_8_sig', ] other_codecs = [ 'scii', 'big5', 'big5hkscs', 'euc_jp', 'euc_jis_2004', 'euc_jisx0213', 'euc_kr', 'gb2312', 'gbk', 'gb18030', 'hz', 'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr', 'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', 'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10', 'iso8859_11', 'iso8859_13', 'iso8859_14', 'iso8859_15', 'iso8859_16', 'johab', 'koi8_r', 'koi8_u', 'ptcp154', 'shift_jis', 'shift_jis_2004', 'shift_jisx0213' ] system_names = { 'Windows': windows_codecs, 'Linux': linux_codecs, 'Darwin': mac_codecs, } def GetPath(root, file=None, codec=None): # Replace this with the function we actually use for this path = os.path.realpath(os.path.abspath(root)) if file: path = os.path.join(path, file) if codec: path = path.decode(codec) return path def GetUnicodePath(root, file=None, codec=None): # Replace this with the function we actually use for this path = os.path.realpath(os.path.abspath(root)) if file: path = os.path.join(path, file) if codec: path = str(path, codec) else: path = str(path) return path ================================================ FILE: config.py ================================================ import os import sys import yaml import wx from logbook import CRITICAL, DEBUG, ERROR, FingersCrossedHandler, INFO, Logger, NestedSetup, NullHandler, \ StreamHandler, TimedRotatingFileHandler, WARNING import hashlib from eos.const import FittingSlot from cryptography.fernet import Fernet from collections import namedtuple pyfalog = Logger(__name__) # Load variable overrides specific to distribution type try: import configforced except ImportError: pyfalog.warning("Failed to import: configforced") configforced = None # Turns on debug mode debug = False # Defines if our saveddata will be in pyfa root or not saveInRoot = False evemonMinVersion = "4081" minItemSearchLength = 3 minItemSearchLengthCjk = 1 pyfaPath = None savePath = None saveDB = None gameDB = None imgsZIP = None logPath = None loggingLevel = None logging_setup = None cipher = None clientHash = None experimentalFeatures = None version = None language = None ApiServer = namedtuple('ApiBase', ['name', 'sso', 'esi', 'client_id', 'callback', 'supports_auto_login']) supported_servers = { "Tranquility": ApiServer("Tranquility", "login.eveonline.com", "esi.evetech.net", '095d8cd841ac40b581330919b49fe746', 'https://pyfa-org.github.io/Pyfa/callback', True), # No point having SISI: https://developers.eveonline.com/blog/article/removing-datasource-singularity # "Singularity": ApiServer("Singularity", "sisilogin.testeveonline.com", "esi.evetech.net", 'b9c3cc79448f449ab17f3aebd018842e', 'https://pyfa-org.github.io/Pyfa/callback'), "Serenity": ApiServer("Serenity", "login.evepc.163.com", "ali-esi.evepc.163.com", 'bc90aa496a404724a93f41b4f4e97761', 'https://ali-esi.evepc.163.com/ui/oauth2-redirect.html', False) } SSO_LOGOFF_SERENITY='https://login.evepc.163.com/account/logoff' ESI_CACHE = 'esi_cache' LOGLEVEL_MAP = { "critical": CRITICAL, "error": ERROR, "warning": WARNING, "info": INFO, "debug": DEBUG, } CATALOG = 'lang' slotColourMapDark = { FittingSlot.LOW: wx.Colour(44, 36, 19), # yellow = low slots 24/13 FittingSlot.MED: wx.Colour(28, 39, 51), # blue = mid slots 8.1/9.5 FittingSlot.HIGH: wx.Colour(53, 31, 34), # red = high slots 6.5/11.5 FittingSlot.RIG: '', FittingSlot.SUBSYSTEM: ''} errColorDark = wx.Colour(70, 20, 20) slotColourMap = { FittingSlot.LOW: wx.Colour(250, 235, 204), # yellow = low slots FittingSlot.MED: wx.Colour(188, 215, 241), # blue = mid slots FittingSlot.HIGH: wx.Colour(235, 204, 209), # red = high slots FittingSlot.RIG: '', FittingSlot.SUBSYSTEM: ''} errColor = wx.Colour(204, 51, 51) def getClientSecret(): return clientHash def isFrozen(): if hasattr(sys, 'frozen'): return True else: return False def __createDirs(path): if not os.path.exists(path): os.makedirs(path) def getPyfaRoot(): if hasattr(sys, '_MEIPASS'): return sys._MEIPASS base = getattr(sys.modules['__main__'], "__file__", sys.executable) if isFrozen() else __file__ root = os.path.dirname(os.path.realpath(os.path.abspath(base))) root = root return root def getVersion(): return version def getDefaultSave(): return os.path.expanduser(os.path.join("~", ".pyfa")) def defPaths(customSavePath=None): global debug global pyfaPath global savePath global saveDB global gameDB global imgsZIP global saveInRoot global logPath global cipher global clientHash global version global experimentalFeatures global language pyfalog.debug("Configuring Pyfa") # The main pyfa directory which contains run.py # Python 2.X uses ANSI by default, so we need to convert the character encoding pyfaPath = getattr(configforced, "pyfaPath", pyfaPath) if pyfaPath is None: pyfaPath = getPyfaRoot() # Version data with open(os.path.join(pyfaPath, "version.yml"), 'r') as file: data = yaml.load(file, Loader=yaml.SafeLoader) version = data['version'] # Where we store the saved fits etc, default is the current users home directory if saveInRoot is True: savePath = getattr(configforced, "savePath", None) if savePath is None: savePath = os.path.join(pyfaPath, "saveddata") else: savePath = getattr(configforced, "savePath", None) if savePath is None: if customSavePath is None: # customSavePath is not overriden savePath = getDefaultSave() else: savePath = customSavePath __createDirs(savePath) secret_file = os.path.join(savePath, ".secret") if not os.path.exists(secret_file): with open(secret_file, "wb") as _file: _file.write(Fernet.generate_key()) with open(secret_file, 'rb') as fp: key = fp.read() clientHash = hashlib.sha3_256(key).hexdigest() cipher = Fernet(key) # if isFrozen(): # os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(pyfaPath, "cacert.pem") # os.environ["SSL_CERT_FILE"] = os.path.join(pyfaPath, "cacert.pem") # The database where we store all the fits etc saveDB = os.path.join(savePath, "saveddata.db") # The database where the static EVE data from the datadump is kept. # This is not the standard sqlite datadump but a modified version created by eos # maintenance script gameDB = getattr(configforced, "gameDB", gameDB) if not gameDB: gameDB = os.path.join(pyfaPath, "eve.db") imgsZIP = getattr(configforced, "imgsZIP", imgsZIP) if not imgsZIP: imgsZIP = os.path.join(pyfaPath, "imgs.zip") if debug: logFile = "pyfa_debug.log" else: logFile = "pyfa.log" logPath = os.path.join(savePath, logFile) experimentalFeatures = getattr(configforced, "experimentalFeatures", experimentalFeatures) if experimentalFeatures is None: experimentalFeatures = False # DON'T MODIFY ANYTHING BELOW import eos.config # Caching modifiers, disable all gamedata caching, its unneeded. eos.config.gamedataCache = False # saveddata db location modifier, shouldn't ever need to touch this eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False" eos.config.gamedata_connectionstring = "sqlite:///" + gameDB + "?check_same_thread=False" # initialize the settings from service.settings import EOSSettings, LocaleSettings eos.config.settings = EOSSettings.getInstance().EOSSettings # this is kind of confusing, but whatever # set langauge, taking the passed argument or falling back to what's saved in the settings localeSettings = LocaleSettings.getInstance() language = language or localeSettings.get('locale') # sets the lang for eos, using the mapped langauge. eos.config.set_lang(localeSettings.get_eos_locale()) def defLogging(): global debug global logPath global loggingLevel global logging_setup try: if debug: logging_setup = NestedSetup([ # make sure we never bubble up to the stderr handler # if we run out of setup handling NullHandler(), StreamHandler( sys.stdout, bubble=False, level=loggingLevel ), TimedRotatingFileHandler( logPath, level=0, backup_count=3, bubble=True, date_format='%Y-%m-%d', ), ]) else: logging_setup = NestedSetup([ # make sure we never bubble up to the stderr handler # if we run out of setup handling NullHandler(), FingersCrossedHandler( TimedRotatingFileHandler( logPath, level=0, backup_count=3, bubble=False, date_format='%Y-%m-%d', ), action_level=ERROR, buffer_size=1000, # pull_information=True, # reset=False, ) ]) except (KeyboardInterrupt, SystemExit): raise except: print("Critical error attempting to setup logging. Falling back to console only.") logging_setup = NestedSetup([ # make sure we never bubble up to the stderr handler # if we run out of setup handling NullHandler(), StreamHandler( sys.stdout, bubble=False ) ]) class LoggerWriter: def __init__(self, level): # self.level is really like using log.debug(message) # at least in my case self.level = level def write(self, message): # if statement reduces the amount of newlines that are # printed to the logger if message.strip() != '': self.level(message.replace("\n", "")) def flush(self): # create a flush method so things can be flushed when # the system wants to. Not sure if simply 'printing' # sys.stderr is the correct way to do it, but it seemed # to work properly for me. self.level(sys.stderr) ================================================ FILE: crowdin.yml ================================================ files: - source: /locale/*.pot translation: /locale/%locale_with_underscore%/LC_MESSAGES/lang.po ================================================ FILE: db_update.py ================================================ #!/usr/bin/env python3 #====================================================================== # Copyright (C) 2012 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation, either version 3 of # the License, or (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with eos. If not, see . #====================================================================== import functools import itertools import json import os import re import sqlite3 import sys import sqlalchemy.orm from sqlalchemy import or_, and_ # todo: need to set the EOS language to en, becasuse this assumes it's being run within an English context # Need to know what that would do if called from pyfa ROOT_DIR = os.path.realpath(os.path.dirname(__file__)) DB_PATH = os.path.join(ROOT_DIR, 'eve.db') JSON_DIR = os.path.join(ROOT_DIR, 'staticdata') if ROOT_DIR not in sys.path: sys.path.insert(0, ROOT_DIR) GAMEDATA_SCHEMA_VERSION = 4 def db_needs_update(): """True if needs, false if it does not, none if we cannot check it.""" try: with open(os.path.join(JSON_DIR, 'phobos', 'metadata.0.json')) as f: data_version = next((r['field_value'] for r in json.load(f) if r['field_name'] == 'client_build')) except (KeyboardInterrupt, SystemExit): raise # If we have no source data - return None; should not update in this case except: return None if not os.path.isfile(DB_PATH): print('Gamedata DB not found') return True db_data_version = None db_schema_version = None try: db = sqlite3.connect(DB_PATH) cursor = db.cursor() cursor.execute('SELECT field_value FROM metadata WHERE field_name = \'client_build\'') for row in cursor: db_data_version = int(row[0]) cursor.execute('SELECT field_value FROM metadata WHERE field_name = \'schema_version\'') for row in cursor: db_schema_version = int(row[0]) cursor.close() db.close() except (KeyboardInterrupt, SystemExit): raise except: print('Error when fetching gamedata DB metadata') return True if data_version != db_data_version: print('Gamedata DB data version mismatch: needed {}, DB has {}'.format(data_version, db_data_version)) return True if GAMEDATA_SCHEMA_VERSION != db_schema_version: print('Gamedata DB schema version mismatch: needed {}, DB has {}'.format(GAMEDATA_SCHEMA_VERSION, db_schema_version)) return True return False def update_db(): print('Building gamedata DB...') if os.path.isfile(DB_PATH): os.remove(DB_PATH) import eos.db import eos.gamedata import eos.config # Create the database tables eos.db.gamedata_meta.create_all() def _readData(minerName, jsonName, keyIdName=None): compiled_data = None for i in itertools.count(0): try: with open(os.path.join(JSON_DIR, minerName, '{}.{}.json'.format(jsonName, i)), encoding='utf-8') as f: rawData = json.load(f) if i == 0: compiled_data = {} if type(rawData) == dict else [] if type(rawData) == dict: compiled_data.update(rawData) else: compiled_data.extend(rawData) except FileNotFoundError: break if not keyIdName: return compiled_data # IDs in keys, rows in values data = [] for k, v in compiled_data.items(): row = {} row.update(v) row[keyIdName] = int(k) data.append(row) return data def _addRows(data, cls, fieldMap=None): if fieldMap is None: fieldMap = {} for row in data: instance = cls() for k, v in row.items(): if isinstance(v, str): v = v.strip() setattr(instance, fieldMap.get(k, k), v) eos.db.gamedata_session.add(instance) def processEveTypes(): print('processing evetypes') data = _readData('fsd_built', 'types', keyIdName='typeID') for row in data: if ( # Apparently people really want Civilian modules available (row['typeName_en-us'].startswith('Civilian') and "Shuttle" not in row['typeName_en-us']) or row['typeName_en-us'] == 'Capsule' or row['groupID'] == 4033 # destructible effect beacons or row['typeID'] == 82941 # Metenox service or row['typeID'] in (87164, 87177) # Trig buff carriers or re.match(r'AIR .+Booster.*', row['typeName_en-us']) ): row['published'] = True # Nearly useless and clutter search results too much elif ( row['typeName_en-us'].startswith('Limited Synth ') or row['typeName_en-us'].startswith('Expired ') or re.match(r'Grand Prix .*Booster', row['typeName_en-us']) or re.match(r'Mining Blitz .+ Booster Dose .+', row['typeName_en-us']) or row['typeName_en-us'].endswith(' Filament') and ( "'Needlejack'" not in row['typeName_en-us'] and "'Devana'" not in row['typeName_en-us'] and "'Pochven'" not in row['typeName_en-us'] and "'Extraction'" not in row['typeName_en-us'] and "'Krai Veles'" not in row['typeName_en-us'] and "'Krai Perun'" not in row['typeName_en-us'] and "'Krai Svarog'" not in row['typeName_en-us'] ) ): row['published'] = False newData = [] for row in data: if ( row['published'] or # group Ship Modifiers, for items like tactical t3 ship modes row['groupID'] == 1306 or # Micro Bombs (Fighters) row['typeID'] in (41549, 41548, 41551, 41550) or # Abyssal weather (environment) row['groupID'] in ( 1882, 1975, 1971, 1983) # the "container" for the abyssal environments ): newData.append(row) map = {'typeName_en-us': 'typeName', 'description_en-us': '_description'} map.update({'description'+v: '_description'+v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) _addRows(newData, eos.gamedata.Item, fieldMap=map) return newData def processEveGroups(): print('processing evegroups') data = _readData('fsd_built', 'groups', keyIdName='groupID') map = {'groupName_en-us': 'name'} map.update({'groupName'+v: 'name'+v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) _addRows(data, eos.gamedata.Group, fieldMap=map) return data def processEveCategories(): print('processing evecategories') data = _readData('fsd_built', 'categories', keyIdName='categoryID') map = { 'categoryName_en-us': 'name' } map.update({'categoryName'+v: 'name'+v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) _addRows(data, eos.gamedata.Category, fieldMap=map) def processDogmaAttributes(): print('processing dogmaattributes') data = _readData('fsd_built', 'dogmaattributes', keyIdName='attributeID') map = { 'displayName_en-us': 'displayName', # 'tooltipDescription_en-us': 'tooltipDescription' } _addRows(data, eos.gamedata.AttributeInfo, fieldMap=map) def processDogmaTypeAttributes(eveTypesData): print('processing dogmatypeattributes') data = _readData('fsd_built', 'typedogma', keyIdName='typeID') eveTypeIds = set(r['typeID'] for r in eveTypesData) newData = [] seenKeys = set() def checkKey(key): if key in seenKeys: return False seenKeys.add(key) return True for typeData in data: if typeData['typeID'] not in eveTypeIds: continue for row in typeData.get('dogmaAttributes', ()): row['typeID'] = typeData['typeID'] if checkKey((row['typeID'], row['attributeID'])): newData.append(row) for row in eveTypesData: for attrId, attrName in {4: 'mass', 38: 'capacity', 161: 'volume', 162: 'radius'}.items(): if attrName in row and checkKey((row['typeID'], attrId)): newData.append({'typeID': row['typeID'], 'attributeID': attrId, 'value': row[attrName]}) _addRows(newData, eos.gamedata.Attribute) return newData def processDynamicItemAttributes(): print('processing dynamicitemattributes') data = _readData('fsd_built', 'dynamicitemattributes') for mutaID, mutaData in data.items(): muta = eos.gamedata.DynamicItem() muta.typeID = mutaID muta.resultingTypeID = mutaData['inputOutputMapping'][0]['resultingType'] eos.db.gamedata_session.add(muta) for x in mutaData['inputOutputMapping'][0]['applicableTypes']: item = eos.gamedata.DynamicItemItem() item.typeID = mutaID item.applicableTypeID = x eos.db.gamedata_session.add(item) for attrID, attrData in mutaData['attributeIDs'].items(): attr = eos.gamedata.DynamicItemAttribute() attr.typeID = mutaID attr.attributeID = attrID attr.min = attrData['min'] attr.max = attrData['max'] eos.db.gamedata_session.add(attr) def processDogmaEffects(): print('processing dogmaeffects') data = _readData('fsd_built', 'dogmaeffects', keyIdName='effectID') _addRows(data, eos.gamedata.Effect, fieldMap={'resistanceAttributeID': 'resistanceID'}) def processDogmaTypeEffects(eveTypesData): print('processing dogmatypeeffects') data = _readData('fsd_built', 'typedogma', keyIdName='typeID') eveTypeIds = set(r['typeID'] for r in eveTypesData) newData = [] for typeData in data: if typeData['typeID'] not in eveTypeIds: continue for row in typeData.get('dogmaEffects', ()): row['typeID'] = typeData['typeID'] newData.append(row) _addRows(newData, eos.gamedata.ItemEffect) return newData def processDogmaUnits(): print('processing dogmaunits') data = _readData('fsd_built', 'dogmaunits', keyIdName='unitID') _addRows(data, eos.gamedata.Unit, fieldMap={ 'name': 'unitName', 'displayName_en-us': 'displayName' }) def processMarketGroups(): print('processing marketgroups') data = _readData('fsd_built', 'marketgroups', keyIdName='marketGroupID') map = { 'name_en-us': 'marketGroupName', 'description_en-us': '_description', } map.update({'name'+v: 'marketGroupName'+v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) map.update({'description' + v: '_description' + v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) _addRows(data, eos.gamedata.MarketGroup, fieldMap=map) def processMetaGroups(): print('processing metagroups') data = _readData('fsd_built', 'metagroups', keyIdName='metaGroupID') map = {'name_en-us': 'metaGroupName'} map.update({'name' + v: 'metaGroupName' + v for (k, v) in eos.config.translation_mapping.items() if k != 'en'}) _addRows(data, eos.gamedata.MetaGroup, fieldMap=map) def processCloneGrades(): print('processing clonegrades') data = _readData('fsd_lite', 'clonegrades') newData = [] # December, 2017 - CCP decided to use only one set of skill levels for alpha clones. However, this is still # represented in the data as a skillset per race. To ensure that all skills are the same, we store them in a way # that we can check to make sure all races have the same skills, as well as skill levels check = {} for ID in data: for skill in data[ID]['skills']: newData.append({ 'alphaCloneID': int(ID), 'alphaCloneName': 'Alpha Clone', 'typeID': skill['typeID'], 'level': skill['level']}) if ID not in check: check[ID] = {} check[ID][int(skill['typeID'])] = int(skill['level']) if not functools.reduce(lambda a, b: a if a == b else False, [v for _, v in check.items()]): raise Exception('Alpha Clones not all equal') newData = [x for x in newData if x['alphaCloneID'] == 1] if len(newData) == 0: raise Exception('Alpha Clone processing failed') tmp = [] for row in newData: if row['alphaCloneID'] not in tmp: cloneParent = eos.gamedata.AlphaClone() setattr(cloneParent, 'alphaCloneID', row['alphaCloneID']) setattr(cloneParent, 'alphaCloneName', row['alphaCloneName']) eos.db.gamedata_session.add(cloneParent) tmp.append(row['alphaCloneID']) _addRows(newData, eos.gamedata.AlphaCloneSkill) def processTraits(): print('processing traits') data = _readData('phobos', 'traits') def convertSection(sectionData): sectionLines = [] headerText = '{}'.format(sectionData['header']) sectionLines.append(headerText) for bonusData in sectionData['bonuses']: prefix = '{} '.format(bonusData['number']) if 'number' in bonusData else '' bonusText = '{}{}'.format(prefix, bonusData['text'].replace('\u00B7', '\u2022 ')) sectionLines.append(bonusText) sectionLine = '
\n'.join(sectionLines) return sectionLine newData = [] for row in data: try: newRow = { 'typeID': row['typeID'], } for (k, v) in eos.config.translation_mapping.items(): if v == '': v = '_en-us' typeLines = [] traitData = row['traits{}'.format(v)] for skillData in sorted(traitData.get('skills', ()), key=lambda i: i['header']): typeLines.append(convertSection(skillData)) if 'role' in traitData: typeLines.append(convertSection(traitData['role'])) if 'misc' in traitData: typeLines.append(convertSection(traitData['misc'])) traitLine = '
\n
\n'.join(typeLines) newRow['traitText{}'.format(v)] = traitLine newData.append(newRow) except: pass _addRows(newData, eos.gamedata.Traits, fieldMap={'traitText_en-us': 'traitText'}) def processMetadata(): print('processing metadata') data = _readData('phobos', 'metadata') _addRows(data, eos.gamedata.MetaData) def processReqSkills(eveTypesData): print('processing requiredskillsfortypes') def composeReqSkills(raw): reqSkills = {} for skillTypeID, skillLevel in raw.items(): reqSkills[int(skillTypeID)] = skillLevel return reqSkills eveTypeIds = set(r['typeID'] for r in eveTypesData) data = _readData('fsd_built', 'requiredskillsfortypes') reqsByItem = {} itemsByReq = {} for typeID, skillreqData in data.items(): typeID = int(typeID) if typeID not in eveTypeIds: continue for skillTypeID, skillLevel in composeReqSkills(skillreqData).items(): reqsByItem.setdefault(typeID, {})[skillTypeID] = skillLevel itemsByReq.setdefault(skillTypeID, {})[typeID] = skillLevel for item in eos.db.gamedata_session.query(eos.gamedata.Item).all(): if item.typeID in reqsByItem: item.reqskills = json.dumps(reqsByItem[item.typeID]) if item.typeID in itemsByReq: item.requiredfor = json.dumps(itemsByReq[item.typeID]) def processReplacements(eveTypesData, eveGroupsData, dogmaTypeAttributesData, dogmaTypeEffectsData): print('finding item replacements') def compareAttrs(attrs1, attrs2): # Consider items as different if they have no attrs if len(attrs1) == 0 and len(attrs2) == 0: return False if set(attrs1) != set(attrs2): return False if all(attrs1[aid] == attrs2[aid] for aid in attrs1): return True return False skillReqAttribs = { 182: 277, 183: 278, 184: 279, 1285: 1286, 1289: 1287, 1290: 1288} skillReqAttribsFlat = set(skillReqAttribs.keys()).union(skillReqAttribs.values()) # Get data on type groups # Format: {type ID: group ID} typesGroups = {} for row in eveTypesData: typesGroups[row['typeID']] = row['groupID'] # Get data on item effects # Format: {type ID: set(effect, IDs)} typesEffects = {} for row in dogmaTypeEffectsData: typesEffects.setdefault(row['typeID'], set()).add(row['effectID']) # Get data on type attributes # Format: {type ID: {attribute ID: attribute value}} typesNormalAttribs = {} typesSkillAttribs = {} for row in dogmaTypeAttributesData: attributeID = row['attributeID'] if attributeID in skillReqAttribsFlat: typeSkillAttribs = typesSkillAttribs.setdefault(row['typeID'], {}) typeSkillAttribs[row['attributeID']] = row['value'] # Ignore these attributes for comparison purposes elif attributeID in ( # We do not need mass as it affects final ship stats only when carried by ship itself # (and we're not going to replace ships), but it's wildly inconsistent for other items, # which otherwise would be the same 4, # mass 124, # mainColor 162, # radius 422, # techLevel 633, # metaLevel 1692, # metaGroupID 1768 # typeColorScheme ): continue else: typeNormalAttribs = typesNormalAttribs.setdefault(row['typeID'], {}) typeNormalAttribs[row['attributeID']] = row['value'] # Get data on skill requirements # Format: {type ID: {skill type ID: skill level}} typesSkillReqs = {} for typeID, typeAttribs in typesSkillAttribs.items(): typeSkillAttribs = typesSkillAttribs.get(typeID, {}) if not typeSkillAttribs: continue typeSkillReqs = typesSkillReqs.setdefault(typeID, {}) for skillreqTypeAttr, skillreqLevelAttr in skillReqAttribs.items(): try: skillType = int(typeSkillAttribs[skillreqTypeAttr]) skillLevel = int(typeSkillAttribs[skillreqLevelAttr]) except (KeyError, ValueError): continue typeSkillReqs[skillType] = skillLevel # Format: {group ID: category ID} groupCategories = {} for row in eveGroupsData: groupCategories[row['groupID']] = row['categoryID'] # As EVE affects various types mostly depending on their group or skill requirements, # we're going to group various types up this way # Format: {(group ID, frozenset(skillreq, type, IDs), frozenset(type, effect, IDs): [type ID, {attribute ID: attribute value}]} groupedData = {} for row in eveTypesData: typeID = row['typeID'] # Ignore items outside of categories we need if groupCategories[typesGroups[typeID]] not in ( 6, # Ship 7, # Module 8, # Charge 18, # Drone 20, # Implant 22, # Deployable 23, # Starbase 32, # Subsystem 35, # Decryptors 65, # Structure 66, # Structure Module 87, # Fighter ): continue typeAttribs = typesNormalAttribs.get(typeID, {}) # Ignore items w/o attributes if not typeAttribs: continue # We need only skill types, not levels for keys typeSkillreqs = frozenset(typesSkillReqs.get(typeID, {})) typeGroup = typesGroups[typeID] typeEffects = frozenset(typesEffects.get(typeID, ())) groupData = groupedData.setdefault((typeGroup, typeSkillreqs, typeEffects), []) groupData.append((typeID, typeAttribs)) # Format: {type ID: set(type IDs)} replacements = {} # Now, go through composed groups and for every item within it # find items which are the same for groupData in groupedData.values(): for type1, type2 in itertools.combinations(groupData, 2): if compareAttrs(type1[1], type2[1]): replacements.setdefault(type1[0], set()).add(type2[0]) replacements.setdefault(type2[0], set()).add(type1[0]) # Update DB session with data we generated for item in eos.db.gamedata_session.query(eos.gamedata.Item).all(): itemReplacements = replacements.get(item.typeID) if itemReplacements is not None: item.replacements = ','.join('{}'.format(tid) for tid in sorted(itemReplacements)) def processImplantSets(eveTypesData): print('composing implant sets') # Includes only implants which can be considered part of sets, not all implants implant_groups = (300, 1730) specials = {'Genolution': ('Genolution Core Augmentation', r'CA-\d+')} implantSets = {} for row in eveTypesData: if not row.get('published'): continue if row.get('groupID') not in implant_groups: continue typeName = row.get('typeName_en-us', '') # Regular sets matching m = re.match(r'(?P(High|Mid|Low)-grade) (?P\w+) (?P(Alpha|Beta|Gamma|Delta|Epsilon|Omega))', typeName, re.IGNORECASE) if m: implantSets.setdefault((m.group('grade'), m.group('set')), set()).add(row['typeID']) # Special set matching for setHandle, (setName, implantPattern) in specials.items(): pattern = '(?P{}) (?P{})'.format(setName, implantPattern) m = re.match(pattern, typeName) if m: implantSets.setdefault((None, setHandle), set()).add(row['typeID']) break data = [] for (gradeName, setName), implants in implantSets.items(): if len(implants) < 2: continue implants = ','.join('{}'.format(tid) for tid in sorted(implants)) row = {'setName': setName, 'gradeName': gradeName, 'implants': implants} data.append(row) _addRows(data, eos.gamedata.ImplantSet) eveTypesData = processEveTypes() eveGroupsData = processEveGroups() processEveCategories() processDogmaAttributes() dogmaTypeAttributesData = processDogmaTypeAttributes(eveTypesData) processDynamicItemAttributes() processDogmaEffects() dogmaTypeEffectsData = processDogmaTypeEffects(eveTypesData) processDogmaUnits() processMarketGroups() processMetaGroups() processCloneGrades() processTraits() processMetadata() eos.db.gamedata_session.flush() processReqSkills(eveTypesData) processReplacements(eveTypesData, eveGroupsData, dogmaTypeAttributesData, dogmaTypeEffectsData) processImplantSets(eveTypesData) # Add schema version to prevent further updates metadata_schema_version = eos.gamedata.MetaData() metadata_schema_version.field_name = 'schema_version' metadata_schema_version.field_value = GAMEDATA_SCHEMA_VERSION eos.db.gamedata_session.add(metadata_schema_version) eos.db.gamedata_session.flush() # CCP still has 5 subsystems assigned to T3Cs, even though only 4 are available / usable. They probably have some # old legacy requirement or assumption that makes it difficult for them to change this value in the data. But for # pyfa, we can do it here as a post-processing step for attr in eos.db.gamedata_session.query(eos.gamedata.Attribute).filter(eos.gamedata.Attribute.ID == 1367).all(): attr.value = 4.0 for item in eos.db.gamedata_session.query(eos.gamedata.Item).filter(or_( eos.gamedata.Item.name.like('%abyssal%'), eos.gamedata.Item.name.like('%mutated%'), eos.gamedata.Item.name.like('%_PLACEHOLDER%'), # Drifter weapons are published for some reason eos.gamedata.Item.name.in_(('Lux Kontos', 'Lux Xiphos', 'Lux Ballistra', 'Lux Kopis')) )).all(): if 'Asteroid Mining Crystal' in item.name: continue if 'Mutated Drone Specialization' in item.name: continue item.published = False for x in [ 30 # Apparel ]: cat = eos.db.gamedata_session.query(eos.gamedata.Category).filter(eos.gamedata.Category.ID == x).first() print ('Removing Category: {}'.format(cat.name)) eos.db.gamedata_session.delete(cat) # Unused normally, can be useful for customizing items def _copyItem(srcName, tgtTypeID, tgtName): eveType = eos.db.gamedata_session.query(eos.gamedata.Item).filter(eos.gamedata.Item.name == srcName).one() eos.db.gamedata_session.expunge(eveType) sqlalchemy.orm.make_transient(eveType) eveType.ID = tgtTypeID for suffix in eos.config.translation_mapping.values(): setattr(eveType, f'typeName{suffix}', tgtName) eos.db.gamedata_session.add(eveType) eos.db.gamedata_session.flush() def _hardcodeAttribs(typeID, attrMap): for attrName, value in attrMap.items(): try: attr = eos.db.gamedata_session.query(eos.gamedata.Attribute).filter(and_( eos.gamedata.Attribute.name == attrName, eos.gamedata.Attribute.typeID == typeID)).one() except sqlalchemy.orm.exc.NoResultFound: attrInfo = eos.db.gamedata_session.query(eos.gamedata.AttributeInfo).filter(eos.gamedata.AttributeInfo.name == attrName).one() attr = eos.gamedata.Attribute() attr.attributeID = attrInfo.ID attr.typeID = typeID attr.value = value eos.db.gamedata_session.add(attr) else: attr.value = value def _hardcodeEffects(typeID, effectMap, clearEffects=True): item = eos.db.gamedata_session.query(eos.gamedata.Item).filter(eos.gamedata.Item.ID == typeID).one() if clearEffects: item.effects.clear() for effectID, effectName in effectMap.items(): try: effect = eos.db.gamedata_session.query(eos.gamedata.Effect).filter(eos.gamedata.Effect.ID == effectID).one() except sqlalchemy.orm.exc.NoResultFound: effect = eos.gamedata.Effect() effect.effectID = effectID effect.effectName = effectName item.effects[effectName] = effect def hardcodeSuppressionTackleRange(): beaconTypeID = 79839 attrMap = { 'warfareBuff1ID': 2405, 'warfareBuff1Value': 10} effectMap = {100000: 'pyfaCustomSuppressionTackleRange'} _hardcodeAttribs(beaconTypeID, attrMap) _hardcodeEffects(beaconTypeID, effectMap) eos.db.gamedata_session.flush() def hardcodeSovUpgradeBuffs(): typeBuffMap = { # Gamma 87815: { 'warfareBuff1ID': 2433, 'warfareBuff1Value': 5, 'warfareBuff2ID': 2434, 'warfareBuff2Value': 10, 'warfareBuff3ID': 2441, 'warfareBuff3Value': 5}, # Plasma 87949: { 'warfareBuff1ID': 2442, 'warfareBuff1Value': 5, 'warfareBuff2ID': 2435, 'warfareBuff2Value': 5, 'warfareBuff3ID': 2436, 'warfareBuff3Value': 10}, # Electric 87950: { 'warfareBuff1ID': 2437, 'warfareBuff1Value': -25, 'warfareBuff2ID': 2438, 'warfareBuff2Value': 25}, # Exotic 87951: { 'warfareBuff1ID': 2440, 'warfareBuff1Value': 2, 'warfareBuff2ID': 2439, 'warfareBuff2Value': 25}} effectMap = {100001: 'pyfaCustomSovUpgradeBuffEffect'} for typeID, attrMap in typeBuffMap.items(): _hardcodeAttribs(typeID, attrMap) _hardcodeEffects(typeID, effectMap, clearEffects=False) eos.db.gamedata_session.flush() def hardcodeTrigSystemEffects(): typeBuffMap = { # Final Liminality / Pochven 87164: ('Final Liminality', { 'warfareBuff1ID': 2534, 'warfareBuff1Value': -50, 'warfareBuff2ID': 2535, 'warfareBuff2Value': -30, 'warfareBuff3ID': 2538, 'warfareBuff3Value': 30, 'warfareBuff4ID': 2539, 'warfareBuff4Value': 30}), # Minor Victory 87177: ('Triglavian Minor Victory', { 'warfareBuff1ID': 2534, 'warfareBuff1Value': -50, 'warfareBuff2ID': 2538, 'warfareBuff2Value': 15, 'warfareBuff3ID': 2539, 'warfareBuff3Value': 15})} effectMap = {100002: 'pyfaCustomTrigSystemBuffEffect'} for typeID, (name, attrMap) in typeBuffMap.items(): item = eos.db.gamedata_session.query(eos.gamedata.Item).filter(eos.gamedata.Item.ID == typeID).one() item.published = True item.name = name _hardcodeAttribs(typeID, attrMap) _hardcodeEffects(typeID, effectMap, clearEffects=True) eos.db.gamedata_session.flush() def hardcodeShapash(): shapashTypeID = 1000000 _copyItem(srcName='Utu', tgtTypeID=shapashTypeID, tgtName='Shapash') attrMap = { # Fitting 'powerOutput': 50, 'cpuOutput': 225, 'capacitorCapacity': 420, 'rechargeRate': 187500, # Slots 'hiSlots': 3, 'medSlots': 4, 'lowSlots': 4, 'launcherSlotsLeft': 0, 'turretSlotsLeft': 3, # Rigs 'rigSlots': 2, 'rigSize': 1, 'upgradeCapacity': 400, # Shield 'shieldCapacity': 575, 'shieldRechargeRate': 625000, 'shieldEmDamageResonance': 1 - 0.0, 'shieldThermalDamageResonance': 1 - 0.6, 'shieldKineticDamageResonance': 1 - 0.85, 'shieldExplosiveDamageResonance': 1 - 0.5, # Armor 'armorHP': 1015, 'armorEmDamageResonance': 1 - 0.5, 'armorThermalDamageResonance': 1 - 0.675, 'armorKineticDamageResonance': 1 - 0.8375, 'armorExplosiveDamageResonance': 1 - 0.1, # Structure 'hp': 1274, 'emDamageResonance': 1 - 0.33, 'thermalDamageResonance': 1 - 0.33, 'kineticDamageResonance': 1 - 0.33, 'explosiveDamageResonance': 1 - 0.33, 'mass': 1215000, 'volume': 29500, 'capacity': 165, # Navigation 'maxVelocity': 325, 'agility': 3.467, 'warpSpeedMultiplier': 5.5, # Drones 'droneCapacity': 75, 'droneBandwidth': 25, # Targeting 'maxTargetRange': 49000, 'maxLockedTargets': 6, 'scanRadarStrength': 0, 'scanLadarStrength': 0, 'scanMagnetometricStrength': 9, 'scanGravimetricStrength': 0, 'signatureRadius': 39, 'scanResolution': 550, # Misc 'energyWarfareResistance': 0, 'stasisWebifierResistance': 0, 'weaponDisruptionResistance': 0} effectMap = { 100100: 'pyfaCustomShapashAfArAmount', 100101: 'pyfaCustomShapashAfShtTrackingOptimal', 100102: 'pyfaCustomShapashGfShtDamage', 100103: 'pyfaCustomShapashGfPointRange', 100104: 'pyfaCustomShapashGfPropOverheat', 100105: 'pyfaCustomShapashRolePlateMass', 100106: 'pyfaCustomShapashRoleHeat'} _hardcodeAttribs(shapashTypeID, attrMap) _hardcodeEffects(shapashTypeID, effectMap) def hardcodeCybele(): cybeleTypeID = 1000001 _copyItem(srcName='Adrestia', tgtTypeID=cybeleTypeID, tgtName='Cybele') attrMap = { # Fitting 'powerOutput': 1284, 'cpuOutput': 400, 'capacitorCapacity': 2400, 'rechargeRate': 334000, 'hiSlots': 5, 'medSlots': 4, 'lowSlots': 6, 'launcherSlotsLeft': 0, 'turretSlotsLeft': 5, # Rigs 'rigSlots': 2, 'rigSize': 2, 'upgradeCapacity': 400, # Shield 'shieldCapacity': 1200, 'shieldRechargeRate': 1250000, 'shieldEmDamageResonance': 1 - 0.0, 'shieldThermalDamageResonance': 1 - 0.5, 'shieldKineticDamageResonance': 1 - 0.9, 'shieldExplosiveDamageResonance': 1 - 0.5, # Armor 'armorHP': 1900, 'armorEmDamageResonance': 1 - 0.5, 'armorThermalDamageResonance': 1 - 0.69, 'armorKineticDamageResonance': 1 - 0.85, 'armorExplosiveDamageResonance': 1 - 0.1, # Structure 'hp': 2300, 'emDamageResonance': 1 - 0.33, 'thermalDamageResonance': 1 - 0.33, 'kineticDamageResonance': 1 - 0.33, 'explosiveDamageResonance': 1 - 0.33, 'mass': 11100000, 'volume': 112000, 'capacity': 450, # Navigation 'maxVelocity': 235, 'agility': 0.457, 'warpSpeedMultiplier': 4.5, # Drones 'droneCapacity': 100, 'droneBandwidth': 50, # Targeting 'maxTargetRange': 60000, 'maxLockedTargets': 6, 'scanRadarStrength': 0, 'scanLadarStrength': 0, 'scanMagnetometricStrength': 15, 'scanGravimetricStrength': 0, 'signatureRadius': 115, 'scanResolution': 330, # Misc 'energyWarfareResistance': 0, 'stasisWebifierResistance': 0, 'weaponDisruptionResistance': 0} effectMap = { 100200: 'pyfaCustomCybeleHacMhtFalloff', 100201: 'pyfaCustomCybeleHacMhtTracking', 100202: 'pyfaCustomCybeleGcMhtDamage', 100203: 'pyfaCustomCybeleGcArAmount', 100204: 'pyfaCustomCybeleGcPointRange', 100205: 'pyfaCustomCybeleRoleVelocity', 100206: 'pyfaCustomCybeleRolePlateMass'} _hardcodeAttribs(cybeleTypeID, attrMap) _hardcodeEffects(cybeleTypeID, effectMap) hardcodeSuppressionTackleRange() hardcodeSovUpgradeBuffs() hardcodeTrigSystemEffects() eos.db.gamedata_session.commit() eos.db.gamedata_engine.execute('VACUUM') print('done') if __name__ == '__main__': update_db() ================================================ FILE: dist_assets/cacert.pem ================================================ # Issuer: O=Equifax OU=Equifax Secure Certificate Authority # Subject: O=Equifax OU=Equifax Secure Certificate Authority # Label: "Equifax Secure CA" # Serial: 903804111 # MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 # SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a # SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 -----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y 7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 -----END CERTIFICATE----- # Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA # Label: "GlobalSign Root CA" # Serial: 4835703278459707669005204 # MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a # SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c # SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 -----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 # Label: "GlobalSign Root CA - R2" # Serial: 4835703278459682885658125 # MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 # SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe # SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG 3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO 291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Label: "Verisign Class 3 Public Primary Certification Authority - G3" # Serial: 206684696279472310254277870180966723415 # MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 # SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 # SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te 2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only # Label: "Verisign Class 4 Public Primary Certification Authority - G3" # Serial: 314531972711909413743075096039378935511 # MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df # SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d # SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ +mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c 2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== -----END CERTIFICATE----- # Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Premium 2048 Secure Server CA" # Serial: 946069240 # MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 # SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 # SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH 4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er fF6adulZkMV8gzURZVE= -----END CERTIFICATE----- # Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust # Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust # Label: "Baltimore CyberTrust Root" # Serial: 33554617 # MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 # SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 # SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- # Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Low-Value Services Root" # Serial: 1 # MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc # SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d # SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 -----BEGIN CERTIFICATE----- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC +Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X 7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz 43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= -----END CERTIFICATE----- # Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network # Label: "AddTrust External Root" # Serial: 1 # MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f # SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 # SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 -----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- # Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Public Services Root" # Serial: 1 # MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f # SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 # SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV 6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH 1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF 62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh 4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= -----END CERTIFICATE----- # Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network # Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network # Label: "AddTrust Qualified Certificates Root" # Serial: 1 # MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb # SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf # SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 -----BEGIN CERTIFICATE----- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G 87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i 2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no xqE= -----END CERTIFICATE----- # Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. # Label: "Entrust Root Certification Authority" # Serial: 1164660820 # MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 # SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 # SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c -----BEGIN CERTIFICATE----- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi 94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP 9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m 0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- # Issuer: O=RSA Security Inc OU=RSA Security 2048 V3 # Subject: O=RSA Security Inc OU=RSA Security 2048 V3 # Label: "RSA Security 2048 v3" # Serial: 13297492616345471454730593562152402946 # MD5 Fingerprint: 77:0d:19:b1:21:fd:00:42:9c:3e:0c:a5:dd:0b:02:8e # SHA1 Fingerprint: 25:01:90:19:cf:fb:d9:99:1c:b7:68:25:74:8d:94:5f:30:93:95:42 # SHA256 Fingerprint: af:8b:67:62:a1:e5:28:22:81:61:a9:5d:5c:55:9e:e2:66:27:8f:75:d7:9e:83:01:89:a5:03:50:6a:bd:6b:4c -----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6 MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJp dHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAX BgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJTQSBTZWN1cml0eSAy MDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt49VcdKA3Xtp eafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7Jylg /9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGl wSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnh AMFRD0xS+ARaqn1y07iHKrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2 PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpu AWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NR MKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYc HnmYv/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/ Zb5gEydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+ f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVO rSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEkllgVsRch 6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kApKnXwiJPZ9d3 7CAFYd4= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA O=GeoTrust Inc. # Label: "GeoTrust Global CA" # Serial: 144470 # MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 # SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 # SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a -----BEGIN CERTIFICATE----- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== -----END CERTIFICATE----- # Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. # Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. # Label: "GeoTrust Global CA 2" # Serial: 1 # MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 # SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d # SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 -----BEGIN CERTIFICATE----- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL 5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe 2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv /NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz 4iIprn2DQKi6bA== -----END CERTIFICATE----- # Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. # Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. # Label: "GeoTrust Universal CA" # Serial: 1 # MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 # SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 # SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 -----BEGIN CERTIFICATE----- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB /wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG 9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. # Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. # Label: "GeoTrust Universal CA 2" # Serial: 1 # MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 # SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 # SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m 1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH 6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS -----END CERTIFICATE----- # Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association # Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association # Label: "Visa eCommerce Root" # Serial: 25952180776285836048024890241505565794 # MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02 # SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62 # SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22 -----BEGIN CERTIFICATE----- MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h 2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq 299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd 7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw ++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt 398znM/jra6O1I7mT1GvFpLgXPYHDw== -----END CERTIFICATE----- # Issuer: CN=Certum CA O=Unizeto Sp. z o.o. # Subject: CN=Certum CA O=Unizeto Sp. z o.o. # Label: "Certum Root CA" # Serial: 65568 # MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 # SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 # SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 -----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs 6GAqm4VKQPNriiTsBhYscw== -----END CERTIFICATE----- # Issuer: CN=AAA Certificate Services O=Comodo CA Limited # Subject: CN=AAA Certificate Services O=Comodo CA Limited # Label: "Comodo AAA Services root" # Serial: 1 # MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 # SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 # SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 -----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe 3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- # Issuer: CN=Secure Certificate Services O=Comodo CA Limited # Subject: CN=Secure Certificate Services O=Comodo CA Limited # Label: "Comodo Secure Services root" # Serial: 1 # MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd # SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 # SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 -----BEGIN CERTIFICATE----- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk 3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz 6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= -----END CERTIFICATE----- # Issuer: CN=Trusted Certificate Services O=Comodo CA Limited # Subject: CN=Trusted Certificate Services O=Comodo CA Limited # Label: "Comodo Trusted Services root" # Serial: 1 # MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 # SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd # SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW 1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority # Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority # Label: "QuoVadis Root CA" # Serial: 985026699 # MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 # SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 # SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 -----BEGIN CERTIFICATE----- MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK SnQ2+Q== -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited # Label: "QuoVadis Root CA 2" # Serial: 1289 # MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b # SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 # SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 -----BEGIN CERTIFICATE----- MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp +ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og /zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y 4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza 8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited # Label: "QuoVadis Root CA 3" # Serial: 1478 # MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf # SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 # SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 -----BEGIN CERTIFICATE----- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB 4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd 8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A 4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd +LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B 4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK 4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- # Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 # Subject: O=SECOM Trust.net OU=Security Communication RootCA1 # Label: "Security Communication Root CA" # Serial: 0 # MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a # SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 # SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c -----BEGIN CERTIFICATE----- MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== -----END CERTIFICATE----- # Issuer: CN=Sonera Class2 CA O=Sonera # Subject: CN=Sonera Class2 CA O=Sonera # Label: "Sonera Class 2 Root CA" # Serial: 29 # MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb # SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 # SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 -----BEGIN CERTIFICATE----- MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt 5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s 3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu 8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ 3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M -----END CERTIFICATE----- # Issuer: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden # Subject: CN=Staat der Nederlanden Root CA O=Staat der Nederlanden # Label: "Staat der Nederlanden Root CA" # Serial: 10000010 # MD5 Fingerprint: 60:84:7c:5a:ce:db:0c:d4:cb:a7:e9:fe:02:c6:a9:c0 # SHA1 Fingerprint: 10:1d:fa:3f:d5:0b:cb:bb:9b:b5:60:0c:19:55:a4:1a:f4:73:3a:04 # SHA256 Fingerprint: d4:1d:82:9e:8c:16:59:82:2a:f9:3f:ce:62:bf:fc:de:26:4f:c8:4e:8b:95:0c:5f:f2:75:d0:52:35:46:95:a3 -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJO TDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFh dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEy MTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVTdGFhdCBkZXIgTmVk ZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENB MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFtvszn ExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw71 9tV2U02PjLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MO hXeiD+EwR+4A5zN9RGcaC1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+U tFE5A3+y3qcym7RHjm+0Sq7lr7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3o BmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAh SQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDww OgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMv cm9vdC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA 7Jbg0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k /rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzm eafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0C5GUR5z6 u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3ynGQI0DvDKcWy 7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== -----END CERTIFICATE----- # Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN DATACorp SGC Root CA" # Serial: 91374294542884689855167577680241077609 # MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 # SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 # SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 -----BEGIN CERTIFICATE----- MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK 4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv 2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 mfnGV/TJVTl4uix5yaaIK/QI -----END CERTIFICATE----- # Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com # Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com # Label: "UTN USERFirst Hardware Root CA" # Serial: 91374294542884704022267039221184531197 # MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 # SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 # SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 -----BEGIN CERTIFICATE----- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn 0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t 3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== -----END CERTIFICATE----- # Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org # Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org # Label: "Camerfirma Chambers of Commerce Root" # Serial: 0 # MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 # SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 # SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq 7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p 26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi 1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu tGWaIZDgqtCYvDi1czyL+Nw= -----END CERTIFICATE----- # Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org # Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org # Label: "Camerfirma Global Chambersign Root" # Serial: 0 # MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 # SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 # SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed -----BEGIN CERTIFICATE----- MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== -----END CERTIFICATE----- # Issuer: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Subject: CN=NetLock Kozjegyzoi (Class A) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Label: "NetLock Notary (Class A) Root" # Serial: 259 # MD5 Fingerprint: 86:38:6d:5e:49:63:6c:85:5c:db:6d:dc:94:b7:d0:f7 # SHA1 Fingerprint: ac:ed:5f:65:53:fd:25:ce:01:5f:1f:7a:48:3b:6a:74:9f:61:78:c6 # SHA256 Fingerprint: 7f:12:cd:5f:7e:5e:29:0e:c7:d8:51:79:d5:b7:2c:20:a5:be:75:08:ff:db:5b:f8:1a:b9:68:4a:7f:c9:f6:67 -----BEGIN CERTIFICATE----- MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhV MRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMe TmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0 dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFzcyBB KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oXDTE5MDIxOTIzMTQ0 N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQHEwhC dWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQu MRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBL b3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSMD7tM9DceqQWC2ObhbHDqeLVu0ThEDaiD zl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZz+qMkjvN9wfcZnSX9EUi 3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC/tmwqcm8 WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LY Oph7tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2Esi NCubMvJIH5+hCoR64sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCC ApswDgYDVR0PAQH/BAQDAgAGMBIGA1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4 QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZRUxFTSEgRXplbiB0 YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRhdGFz aSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtm ZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMg ZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVs amFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJhc2EgbWVndGFsYWxoYXRv IGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBzOi8vd3d3 Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6 ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1 YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3Qg dG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRs b2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNAbmV0bG9jay5uZXQuMA0G CSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5ayZrU3/b39/zcT0mwBQO xmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjPytoUMaFP 0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQ QeJBCWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxk f1qbFFgBJ34TUMdrKuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK 8CtmdWOMovsEPoMOmzbwGOQmIMOM8CgHrTwXZoi1/baI -----END CERTIFICATE----- # Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com # Label: "XRamp Global CA Root" # Serial: 107108908803651509692980124233745014957 # MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 # SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 # SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ O+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- # Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority # Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority # Label: "Go Daddy Class 2 CA" # Serial: 0 # MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 # SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 # SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h /t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf ReYNnyicsbkqWletNw+vHX/bvZ8= -----END CERTIFICATE----- # Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority # Label: "Starfield Class 2 CA" # Serial: 0 # MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 # SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a # SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf 8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN +lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA 1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Label: "StartCom Certification Authority" # Serial: 1 # MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 # SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f # SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea -----BEGIN CERTIFICATE----- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ 9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= -----END CERTIFICATE----- # Issuer: O=Government Root Certification Authority # Subject: O=Government Root Certification Authority # Label: "Taiwan GRCA" # Serial: 42023070807708724159991140556527066870 # MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e # SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 # SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 -----BEGIN CERTIFICATE----- MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl pYYsfPQS -----END CERTIFICATE----- # Issuer: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services # Subject: CN=Swisscom Root CA 1 O=Swisscom OU=Digital Certificate Services # Label: "Swisscom Root CA 1" # Serial: 122348795730808398873664200247279986742 # MD5 Fingerprint: f8:38:7c:77:88:df:2c:16:68:2e:c2:e2:52:4b:b8:f9 # SHA1 Fingerprint: 5f:3a:fc:0a:8b:64:f6:86:67:34:74:df:7e:a9:a2:fe:f9:fa:7a:51 # SHA256 Fingerprint: 21:db:20:12:36:60:bb:2e:d4:18:20:5d:a1:1e:e7:a8:5a:65:e2:bc:6e:55:b5:af:7e:78:99:c8:a2:66:d9:2e -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBk MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg Q0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4MTgyMjA2MjBaMGQxCzAJBgNVBAYT AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9 m2BtRsiMMW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdih FvkcxC7mlSpnzNApbjyFNDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/ TilftKaNXXsLmREDA/7n29uj/x2lzZAeAR81sH8A25Bvxn570e56eqeqDFdvpG3F EzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkCb6dJtDZd0KTeByy2dbco kdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn7uHbHaBu HYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNF vJbNcA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo 19AOeCMgkckkKmUpWyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjC L3UcPX7ape8eYIVpQtPM+GP+HkM5haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJW bjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNYMUJDLXT5xp6mig/p/r+D5kNX JLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw FDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzc K6FptWfUjNP9MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzf ky9NfEBWMXrrpA9gzXrzvsMnjgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7Ik Vh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQMbFamIp1TpBcahQq4FJHgmDmHtqB sfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4HVtA4oJVwIHaM190e 3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtlvrsR ls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ip mXeascClOS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HH b6D0jqTsNFFbjCYDcKF31QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksf rK/7DZBaZmBwXarNeNQk7shBoJMBkpxqnvy5JMWzFYJ+vq6VK+uxwNrjAWALXmms hFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCyx/yP2FS1k2Kdzs9Z+z0Y zirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMWNY6E0F/6 MBr1mmz0DlP5OlvRHA== -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root CA" # Serial: 17154717934120587862167794914071425081 # MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 # SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 # SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root CA" # Serial: 10944719598952040374951832963794454346 # MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e # SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 # SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- # Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert High Assurance EV Root CA" # Serial: 3553400076410547919724730734378100087 # MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a # SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 # SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep +OkuE6N36B9K -----END CERTIFICATE----- # Issuer: CN=Class 2 Primary CA O=Certplus # Subject: CN=Class 2 Primary CA O=Certplus # Label: "Certplus Class 2 Primary CA" # Serial: 177770208045934040241468760488327595043 # MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b # SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb # SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb -----BEGIN CERTIFICATE----- MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 l7+ijrRU -----END CERTIFICATE----- # Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. # Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. # Label: "DST Root CA X3" # Serial: 91299735575339953335919266965803778155 # MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 # SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 # SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- # Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES # Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES # Label: "DST ACES CA X6" # Serial: 17771143917277623872238992636097467865 # MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 # SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d # SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 -----BEGIN CERTIFICATE----- MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= -----END CERTIFICATE----- # Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. # Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=(c) 2005 TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. # Label: "TURKTRUST Certificate Services Provider Root 1" # Serial: 1 # MD5 Fingerprint: f1:6a:22:18:c9:cd:df:ce:82:1d:1d:b7:78:5c:a9:a5 # SHA1 Fingerprint: 79:98:a3:08:e1:4d:65:85:e6:c2:1e:15:3a:71:9f:ba:5a:d3:4a:d9 # SHA256 Fingerprint: 44:04:e3:3b:5e:14:0d:cf:99:80:51:fd:fc:80:28:c7:c8:16:15:c5:ee:73:7b:11:1b:58:82:33:a9:b5:35:a0 -----BEGIN CERTIFICATE----- MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOc UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx c8SxMQswCQYDVQQGDAJUUjEPMA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykg MjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMxMDI3MTdaFw0xNTAz MjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2Vy dGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYD VQQHDAZBTktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kg xLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEu xZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7 XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GXyGl8hMW0kWxsE2qkVa2k heiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8iSi9BB35J YbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5C urKZ8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1 JuTm5Rh8i27fbMx4W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51 b0dewQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV 9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46sWrv7/hg0Uw2ZkUd82YCdAR7 kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxEq8Sn5RTOPEFh fEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdA aLX/7KfS0zgYnNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKS RGQDJereW26fyfJOrN3H -----END CERTIFICATE----- # Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 # Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Kasım 2005 # Label: "TURKTRUST Certificate Services Provider Root 2" # Serial: 1 # MD5 Fingerprint: 37:a5:6e:d4:b1:25:84:97:b7:fd:56:15:7a:f9:a2:00 # SHA1 Fingerprint: b4:35:d4:e1:11:9d:1c:66:90:a7:49:eb:b3:94:bd:63:7b:a7:82:b7 # SHA256 Fingerprint: c4:70:cf:54:7e:23:02:b9:77:fb:29:dd:71:a8:9a:7b:6c:1f:60:77:7b:03:29:f5:60:17:f3:28:bf:4f:6b:e6 -----BEGIN CERTIFICATE----- MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOc UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xS S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg SGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcNMDUxMTA3MTAwNzU3 WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVrdHJv bmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJU UjEPMA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSw bGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWe LiAoYykgS2FzxLFtIDIwMDUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqeLCDe2JAOCtFp0if7qnef J1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKIx+XlZEdh R3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJ Qv2gQrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGX JHpsmxcPbe9TmJEr5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1p zpwACPI2/z7woQ8arBT9pmAPAgMBAAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58S Fq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8GA1UdEwEB/wQFMAMBAf8wDQYJ KoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/nttRbj2hWyfIvwq ECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFz gw2lGh1uEpJ+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotH uFEJjOp9zYhys2AzsfAKRO8P9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LS y3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5UrbnBEI= -----END CERTIFICATE----- # Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG # Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG # Label: "SwissSign Gold CA - G2" # Serial: 13492815561806991280 # MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 # SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 # SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 -----BEGIN CERTIFICATE----- MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c 6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn 8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a 77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ -----END CERTIFICATE----- # Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG # Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG # Label: "SwissSign Silver CA - G2" # Serial: 5700383053117599563 # MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 # SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb # SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 -----BEGIN CERTIFICATE----- MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH 6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ 2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. # Label: "GeoTrust Primary Certification Authority" # Serial: 32798226551256963324313806436981982369 # MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf # SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 # SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c -----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl 4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA" # Serial: 69529181992039203566298953787712940909 # MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 # SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 # SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f -----BEGIN CERTIFICATE----- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta 3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 /qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 jVaMaA== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only # Label: "VeriSign Class 3 Public Primary Certification Authority - G5" # Serial: 33037644167568058970164719475676101450 # MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c # SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 # SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y 5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ 4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- # Issuer: CN=SecureTrust CA O=SecureTrust Corporation # Subject: CN=SecureTrust CA O=SecureTrust Corporation # Label: "SecureTrust CA" # Serial: 17199774589125277788362757014266862032 # MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 # SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 # SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 -----BEGIN CERTIFICATE----- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO 0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj 7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS 8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ 3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= -----END CERTIFICATE----- # Issuer: CN=Secure Global CA O=SecureTrust Corporation # Subject: CN=Secure Global CA O=SecureTrust Corporation # Label: "Secure Global CA" # Serial: 9751836167731051554232119481456978597 # MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de # SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b # SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 -----BEGIN CERTIFICATE----- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa /FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW -----END CERTIFICATE----- # Issuer: CN=COMODO Certification Authority O=COMODO CA Limited # Subject: CN=COMODO Certification Authority O=COMODO CA Limited # Label: "COMODO Certification Authority" # Serial: 104350513648249232941998508985834464573 # MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 # SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b # SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI 2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp +2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW /zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB ZQ== -----END CERTIFICATE----- # Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. # Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. # Label: "Network Solutions Certificate Authority" # Serial: 116697915152937497490437556386812487904 # MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e # SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce # SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c -----BEGIN CERTIFICATE----- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH /nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- # Issuer: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA # Subject: CN=WellsSecure Public Root Certificate Authority O=Wells Fargo WellsSecure OU=Wells Fargo Bank NA # Label: "WellsSecure Public Root Certificate Authority" # Serial: 1 # MD5 Fingerprint: 15:ac:a5:c2:92:2d:79:bc:e8:7f:cb:67:ed:02:cf:36 # SHA1 Fingerprint: e7:b4:f6:9d:61:ec:90:69:db:7e:90:a7:40:1a:3c:f4:7d:4f:e8:ee # SHA256 Fingerprint: a7:12:72:ae:aa:a3:cf:e8:72:7f:7f:b3:9f:0f:b3:d1:e5:42:6e:90:60:b0:6e:e6:f1:3e:9a:3c:58:33:cd:43 -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMx IDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxs cyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9v dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcxMjEzMTcwNzU0WhcNMjIxMjE0 MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdl bGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQD DC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+r WxxTkqxtnt3CxC5FlAM1iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjU Dk/41itMpBb570OYj7OeUt9tkTmPOL13i0Nj67eT/DBMHAGTthP796EfvyXhdDcs HqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8bJVhHlfXBIEyg1J55oNj z7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiBK0HmOFaf SZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/Slwxl AgMBAAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqG KGh0dHA6Ly9jcmwucGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0P AQH/BAQDAgHGMB0GA1UdDgQWBBQmlRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0j BIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGBi6SBiDCBhTELMAkGA1UEBhMC VVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNX ZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEB ALkVsUSRzCPIK0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd /ZDJPHV3V3p9+N701NX3leZ0bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pB A4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSljqHyita04pO2t/caaH/+Xc/77szWn k4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+esE2fDbbFwRnzVlhE9 iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJtylv 2G0xffX8oRAHh84vWdw+WNs= -----END CERTIFICATE----- # Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited # Label: "COMODO ECC Certification Authority" # Serial: 41578283867086692638256921589707938090 # MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 # SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 # SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- # Issuer: CN=IGC/A O=PM/SGDN OU=DCSSI # Subject: CN=IGC/A O=PM/SGDN OU=DCSSI # Label: "IGC/A" # Serial: 245102874772 # MD5 Fingerprint: 0c:7f:dd:6a:f4:2a:b9:c8:9b:bd:20:7e:a9:db:5c:37 # SHA1 Fingerprint: 60:d6:89:74:b5:c2:65:9e:8a:0f:c1:88:7c:88:d2:46:69:1b:18:2c # SHA256 Fingerprint: b9:be:a7:86:0a:96:2e:a3:61:1d:ab:97:ab:6d:a3:e2:1c:10:68:b9:7d:55:57:5e:d0:e1:12:79:c1:1c:89:32 -----BEGIN CERTIFICATE----- MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYT AkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQ TS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG 9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMB4XDTAyMTIxMzE0MjkyM1oXDTIw MTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAM BgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEO MAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2 LmZyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaI s9z4iPf930Pfeo2aSVz2TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2 xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCWSo7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4 u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYyHF2fYPepraX/z9E0+X1b F8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNdfrGoRpAx Vs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGd PDPQtQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNV HSAEDjAMMAoGCCqBegF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAx NjAfBgNVHSMEGDAWgBSjBS8YYFDCiQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUF AAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RKq89toB9RlPhJy3Q2FLwV3duJ L92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3QMZsyK10XZZOY YLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2a NjSaTFR+FwNIlQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R 0982gaEbeC9xs/FZTEYYKKuF0mBWWg== -----END CERTIFICATE----- # Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 # Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 # Label: "Security Communication EV RootCA1" # Serial: 0 # MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 # SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d # SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 -----BEGIN CERTIFICATE----- MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 -----END CERTIFICATE----- # Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed # Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed # Label: "OISTE WISeKey Global Root GA CA" # Serial: 86718877871133159090080555911823548314 # MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 # SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 # SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 -----BEGIN CERTIFICATE----- MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg 4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ /L7fCg0= -----END CERTIFICATE----- # Issuer: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA # Subject: CN=Microsec e-Szigno Root CA O=Microsec Ltd. OU=e-Szigno CA # Label: "Microsec e-Szigno Root CA" # Serial: 272122594155480254301341951808045322001 # MD5 Fingerprint: f0:96:b6:2f:c5:10:d5:67:8e:83:25:32:e8:5e:2e:e5 # SHA1 Fingerprint: 23:88:c9:d3:71:cc:9e:96:3d:ff:7d:3c:a7:ce:fc:d6:25:ec:19:0d # SHA256 Fingerprint: 32:7a:3d:76:1a:ba:de:a0:34:eb:99:84:06:27:5c:b1:a4:77:6e:fd:ae:2f:df:6d:01:68:ea:1c:4f:55:67:d0 -----BEGIN CERTIFICATE----- MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAw cjELMAkGA1UEBhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNy b3NlYyBMdGQuMRQwEgYDVQQLEwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9z ZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0MDYxMjI4NDRaFw0xNzA0MDYxMjI4 NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEWMBQGA1UEChMN TWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMTGU1p Y3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2u uO/TEdyB5s87lozWbxXGd36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+ LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/NoqdNAoI/gqyFxuEPkEeZlApxcpMqyabA vjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjcQR/Ji3HWVBTji1R4P770 Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJPqW+jqpx 62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcB AQRbMFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3Aw LQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAP BgNVHRMBAf8EBTADAQH/MIIBcwYDVR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIB AQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3LmUtc3ppZ25vLmh1L1NaU1ov MIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0AdAB2AOEAbgB5 ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABT AHoAbwBsAGcA4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABh ACAAcwB6AGUAcgBpAG4AdAAgAGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABo AHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMAegBpAGcAbgBvAC4AaAB1AC8AUwBa AFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6Ly93d3cuZS1zemln bm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NOPU1p Y3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxP PU1pY3Jvc2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZv Y2F0aW9uTGlzdDtiaW5hcnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuB EGluZm9AZS1zemlnbm8uaHWkdzB1MSMwIQYDVQQDDBpNaWNyb3NlYyBlLVN6aWdu w7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhTWjEWMBQGA1UEChMNTWlj cm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhVMIGsBgNV HSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJI VTERMA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDAS BgNVBAsTC2UtU3ppZ25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBS b290IENBghEAzLjnv04pGv2i3GalHCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS 8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMTnGZjWS7KXHAM/IO8VbH0jgds ZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FEaGAHQzAxQmHl 7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfR hUZLphK3dehKyVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/ MPMMNz7UwiiAc7EBt51alhQBS6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= -----END CERTIFICATE----- # Issuer: CN=Certigna O=Dhimyotis # Subject: CN=Certigna O=Dhimyotis # Label: "Certigna" # Serial: 18364802974209362175 # MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff # SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 # SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d -----BEGIN CERTIFICATE----- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q 130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG 9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA # Label: "TC TrustCenter Class 2 CA II" # Serial: 941389028203453866782103406992443 # MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 # SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e # SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 -----BEGIN CERTIFICATE----- MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK 8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== -----END CERTIFICATE----- # Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA # Label: "TC TrustCenter Universal CA I" # Serial: 601024842042189035295619584734726 # MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c # SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 # SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn 8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ 2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY -----END CERTIFICATE----- # Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center # Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center # Label: "Deutsche Telekom Root CA 2" # Serial: 38 # MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08 # SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf # SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3 -----BEGIN CERTIFICATE----- MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl 6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU Cm26OWMohpLzGITY+9HPBVZkVw== -----END CERTIFICATE----- # Issuer: CN=ComSign Secured CA O=ComSign # Subject: CN=ComSign Secured CA O=ComSign # Label: "ComSign Secured CA" # Serial: 264725503855295744117309814499492384489 # MD5 Fingerprint: 40:01:25:06:8d:21:43:6a:0e:43:00:9c:e7:43:f3:d5 # SHA1 Fingerprint: f9:cd:0e:2c:da:76:24:c1:8f:bd:f0:f0:ab:b6:45:b8:f7:fe:d5:7a # SHA256 Fingerprint: 50:79:41:c7:44:60:a0:b4:70:86:22:0d:4e:99:32:57:2a:b5:d1:b5:bb:cb:89:80:ab:1c:b1:76:51:a8:44:d2 -----BEGIN CERTIFICATE----- MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAw PDEbMBkGA1UEAxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWdu MQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwx GzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBDQTEQMA4GA1UEChMHQ29tU2lnbjEL MAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGtWhf HZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs49oh gHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sW v+bznkqH7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ue Mv5WJDmyVIRD9YTC2LxBkMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr 9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d19guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt 6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUwAwEB/zBEBgNVHR8EPTA7 MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29tU2lnblNl Y3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58 ADsAj8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkq hkiG9w0BAQUFAAOCAQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7p iL1DRYHjZiM/EoZNGeQFsOY3wo3aBijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtC dsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtpFhpFfTMDZflScZAmlaxMDPWL kz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP51qJThRv4zdL hfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== -----END CERTIFICATE----- # Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc # Subject: CN=Cybertrust Global Root O=Cybertrust, Inc # Label: "Cybertrust Global Root" # Serial: 4835703278459682877484360 # MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 # SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 # SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW WL1WMRJOEcgh4LMRkWXbtKaIOM5V -----END CERTIFICATE----- # Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority # Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority # Label: "ePKI Root Certification Authority" # Serial: 28956088682735189655030529057352760477 # MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 # SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 # SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 -----BEGIN CERTIFICATE----- MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS /jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D hNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- # Issuer: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi # Subject: CN=TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3 O=Türkiye Bilimsel ve Teknolojik Araştırma Kurumu - TÜBİTAK OU=Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü - UEKAE/Kamu Sertifikasyon Merkezi # Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" # Serial: 17 # MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 # SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 # SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a -----BEGIN CERTIFICATE----- MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM 7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs yZyQ2uypQjyttgI= -----END CERTIFICATE----- # Issuer: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 # Subject: CN=Buypass Class 2 CA 1 O=Buypass AS-983163327 # Label: "Buypass Class 2 CA 1" # Serial: 1 # MD5 Fingerprint: b8:08:9a:f0:03:cc:1b:0d:c8:6c:0b:76:a1:75:64:23 # SHA1 Fingerprint: a0:a1:ab:90:c9:fc:84:7b:3b:12:61:e8:97:7d:5f:d3:22:61:d3:cc # SHA256 Fingerprint: 0f:4e:9c:dd:26:4b:02:55:50:d1:70:80:63:40:21:4f:e9:44:34:c9:b0:2f:69:7e:c7:10:fc:5f:ea:fb:5e:38 -----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg Q2xhc3MgMiBDQSAxMB4XDTA2MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzEL MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD VQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7McXA0 ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLX l18xoS830r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVB HfCuuCkslFJgNJQ72uA40Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B 5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/RuFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3 WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNCMEAwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0PAQH/BAQD AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLP gcIV1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+ DKhQ7SLHrQVMdvvt7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKu BctN518fV4bVIJwo+28TOPX2EZL2fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHs h7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5wwDX3OaJdZtB7WZ+oRxKaJyOk LY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho -----END CERTIFICATE----- # Issuer: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 # Subject: CN=Buypass Class 3 CA 1 O=Buypass AS-983163327 # Label: "Buypass Class 3 CA 1" # Serial: 2 # MD5 Fingerprint: df:3c:73:59:81:e7:39:50:81:04:4c:34:a2:cb:b3:7b # SHA1 Fingerprint: 61:57:3a:11:df:0e:d8:7e:d5:92:65:22:ea:d0:56:d7:44:b3:23:71 # SHA256 Fingerprint: b7:b1:2b:17:1f:82:1d:aa:99:0c:d0:fe:50:87:b1:28:44:8b:a8:e5:18:4f:84:c5:1e:02:b5:c8:fb:96:2b:24 -----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3Mg Q2xhc3MgMyBDQSAxMB4XDTA1MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzEL MAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MR0wGwYD VQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKxifZg isRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//z NIqeKNc0n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI +MkcVyzwPX6UvCWThOiaAJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2R hzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+ mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNCMEAwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0PAQH/BAQD AgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFP Bdy7pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27s EzNxZy5p+qksP2bAEllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2 mSlf56oBzKwzqBwKu5HEA6BvtjT5htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yC e/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQjel/wroQk5PMr+4okoyeYZdow dXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 -----END CERTIFICATE----- # Issuer: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. # Subject: CN=EBG Elektronik Sertifika Hizmet Sağlayıcısı O=EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. # Label: "EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1" # Serial: 5525761995591021570 # MD5 Fingerprint: 2c:20:26:9d:cb:1a:4a:00:85:b5:b7:5a:ae:c2:01:37 # SHA1 Fingerprint: 8c:96:ba:eb:dd:2b:07:07:48:ee:30:32:66:a0:f3:98:6e:7c:ae:58 # SHA256 Fingerprint: 35:ae:5b:dd:d8:f7:ae:63:5c:ff:ba:56:82:a8:f0:0b:95:f4:84:62:c7:10:8e:e9:a0:e5:29:2b:07:4a:af:b2 -----BEGIN CERTIFICATE----- MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNV BAMML0VCRyBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx c8SxMTcwNQYDVQQKDC5FQkcgQmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXpt ZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAeFw0wNjA4MTcwMDIxMDlaFw0xNjA4 MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25payBTZXJ0aWZpa2Eg SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2ltIFRl a25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h 4fuXd7hxlugTlkaDT7byX3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAk tiHq6yOU/im/+4mRDGSaBUorzAzu8T2bgmmkTPiab+ci2hC6X5L8GCcKqKpE+i4s tPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfreYteIAbTdgtsApWjluTL dlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZTqNGFav4 c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8Um TDGyY5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z +kI2sSXFCjEmN1ZnuqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0O Lna9XvNRiYuoP1Vzv9s6xiQFlpJIqkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMW OeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vmExH8nYQKE3vwO9D8owrXieqW fo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0Nokb+Clsi7n2 l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB /wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgw FoAU587GT/wWZ5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+ 8ygjdsZs93/mQJ7ANtyVDR2tFcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI 6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgmzJNSroIBk5DKd8pNSe/iWtkqvTDO TLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64kXPBfrAowzIpAoHME wfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqTbCmY Iai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJn xk1Gj7sURT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4Q DgZxGhBM/nV+/x5XOULK1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9q Kd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11t hie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQY9iJSrSq3RZj9W6+YKH4 7ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9AahH3eU7 QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT -----END CERTIFICATE----- # Issuer: O=certSIGN OU=certSIGN ROOT CA # Subject: O=certSIGN OU=certSIGN ROOT CA # Label: "certSIGN ROOT CA" # Serial: 35210227249154 # MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 # SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b # SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do 0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ 44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN 9u6wWk5JRFRYX0KD -----END CERTIFICATE----- # Issuer: CN=CNNIC ROOT O=CNNIC # Subject: CN=CNNIC ROOT O=CNNIC # Label: "CNNIC ROOT" # Serial: 1228079105 # MD5 Fingerprint: 21:bc:82:ab:49:c4:13:3b:4b:b2:2b:5c:6b:90:9c:19 # SHA1 Fingerprint: 8b:af:4c:9b:1d:f0:2a:92:f7:da:12:8e:b9:1b:ac:f4:98:60:4b:6f # SHA256 Fingerprint: e2:83:93:77:3d:a8:45:a6:79:f2:08:0c:c7:fb:44:a3:b7:a1:c3:79:2c:b7:eb:77:29:fd:cb:6a:8d:99:ae:a7 -----BEGIN CERTIFICATE----- MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJD TjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2 MDcwOTE0WhcNMjcwNDE2MDcwOTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMF Q05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzDo+/hn7E7SIX1mlwh IhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tizVHa6 dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZO V/kbZKKTVrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrC GHn2emU1z5DrvTOTn1OrczvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gN v7Sg2Ca+I19zN38m5pIEo3/PIKe38zrKy5nLAgMBAAGjczBxMBEGCWCGSAGG+EIB AQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscCwQ7vptU7ETAPBgNVHRMB Af8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991SlgrHAsEO 76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnK OOK5Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvH ugDnuL8BV8F3RTIMO/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7Hgvi yJA/qIYM/PmLXoXLT1tLYhFHxUV8BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fL buXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2G8kS1sHNzYDzAgE8yGnLRUhj 2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5mmxE= -----END CERTIFICATE----- # Issuer: O=Japanese Government OU=ApplicationCA # Subject: O=Japanese Government OU=ApplicationCA # Label: "ApplicationCA - Japanese Government" # Serial: 49 # MD5 Fingerprint: 7e:23:4e:5b:a7:a5:b4:25:e9:00:07:74:11:62:ae:d6 # SHA1 Fingerprint: 7f:8a:b0:cf:d0:51:87:6a:66:f3:36:0f:47:c8:8d:8c:d3:35:fc:74 # SHA256 Fingerprint: 2d:47:43:7d:e1:79:51:21:5a:12:f3:c5:8e:51:c7:29:a5:80:26:ef:1f:cc:0a:5f:b3:d9:dc:01:2f:60:0d:19 -----BEGIN CERTIFICATE----- MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEc MBoGA1UEChMTSmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRp b25DQTAeFw0wNzEyMTIxNTAwMDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYT AkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zlcm5tZW50MRYwFAYDVQQLEw1BcHBs aWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp23gdE6H j6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4fl+K f5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55 IrmTwcrNwVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cw FO5cjFW6WY2H/CPek9AEjP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDiht QWEjdnjDuGWk81quzMKq2edY3rZ+nYVunyoKb58DKTCXKB28t89UKU5RMfkntigm /qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRUWssmP3HMlEYNllPqa0jQ k/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNVBAYTAkpQ MRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOC seODvOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD ggEBADlqRHZ3ODrso2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJ hyzjVOGjprIIC8CFqMjSnHH2HZ9g/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+ eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYDio+nEhEMy/0/ecGc/WLuo89U DNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmWdupwX3kSa+Sj B1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL rosot4LKGAfmt1t06SAZf7IbiVQ= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G3" # Serial: 28809105769928564313984085209975885599 # MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 # SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd # SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 -----BEGIN CERTIFICATE----- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz +uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn 5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G spki4cErx5z481+oghLrGREt -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA - G2" # Serial: 71758320672825410020661621085256472406 # MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f # SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 # SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 -----BEGIN CERTIFICATE----- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== -----END CERTIFICATE----- # Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only # Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only # Label: "thawte Primary Root CA - G3" # Serial: 127614157056681299805556476275995414779 # MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 # SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 # SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA 2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu MdRAGmI0Nj81Aa6sY6A= -----END CERTIFICATE----- # Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only # Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only # Label: "GeoTrust Primary Certification Authority - G2" # Serial: 80682863203381065782177908751794619243 # MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a # SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 # SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 -----BEGIN CERTIFICATE----- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz rD6ogRLQy7rQkgu2npaqBA+K -----END CERTIFICATE----- # Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only # Label: "VeriSign Universal Root Certification Authority" # Serial: 85209574734084581917763752644031726877 # MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 # SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 # SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c -----BEGIN CERTIFICATE----- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF 9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN /BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz 4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 7M2CYfE45k+XmCpajQ== -----END CERTIFICATE----- # Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only # Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only # Label: "VeriSign Class 3 Public Primary Certification Authority - G4" # Serial: 63143484348153506665311985501458640051 # MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 # SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a # SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 -----BEGIN CERTIFICATE----- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC 4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- # Issuer: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) # Subject: CN=NetLock Arany (Class Gold) Főtanúsítvány O=NetLock Kft. OU=Tanúsítványkiadók (Certification Services) # Label: "NetLock Arany (Class Gold) Főtanúsítvány" # Serial: 80544274841616 # MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 # SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 # SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C +C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- # Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden # Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden # Label: "Staat der Nederlanden Root CA - G2" # Serial: 10000012 # MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a # SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 # SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f -----BEGIN CERTIFICATE----- MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp 5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy 5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv 6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen 5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL +63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== -----END CERTIFICATE----- # Issuer: CN=CA Disig O=Disig a.s. # Subject: CN=CA Disig O=Disig a.s. # Label: "CA Disig" # Serial: 1 # MD5 Fingerprint: 3f:45:96:39:e2:50:87:f7:bb:fe:98:0c:3c:20:98:e6 # SHA1 Fingerprint: 2a:c8:d5:8b:57:ce:bf:2f:49:af:f2:fc:76:8f:51:14:62:90:7a:41 # SHA256 Fingerprint: 92:bf:51:19:ab:ec:ca:d0:b1:33:2d:c4:e1:d0:5f:ba:75:b5:67:90:44:ee:0c:a2:6e:93:1f:74:4f:2f:33:cf -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzET MBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UE AxMIQ0EgRGlzaWcwHhcNMDYwMzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQsw CQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcg YS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgmGErE Nx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnX mjxUizkDPw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYD XcDtab86wYqg6I7ZuUUohwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhW S8+2rT+MitcE5eN4TPWGqvWP+j1scaMtymfraHtuM6kMgiioTGohQBUgDCZbg8Kp FhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8wgfwwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0PAQH/BAQD AgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cu ZGlzaWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5z ay9jYS9jcmwvY2FfZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2sv Y2EvY3JsL2NhX2Rpc2lnLmNybDAaBgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEw DQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59tWDYcPQuBDRIrRhCA/ec8J9B6 yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3mkkp7M5+cTxq EEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeB EicTXxChds6KezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFN PGO+I++MzVpQuGhU+QqZMxEA4Z7CRneC9VkGjCFMhwnN5ag= -----END CERTIFICATE----- # Issuer: CN=Juur-SK O=AS Sertifitseerimiskeskus # Subject: CN=Juur-SK O=AS Sertifitseerimiskeskus # Label: "Juur-SK" # Serial: 999181308 # MD5 Fingerprint: aa:8e:5d:d9:f8:db:0a:58:b7:8d:26:87:6c:82:35:55 # SHA1 Fingerprint: 40:9d:4b:d9:17:b5:5c:27:b6:9b:64:cb:98:22:44:0d:cd:09:b8:89 # SHA256 Fingerprint: ec:c3:e9:c3:40:75:03:be:e0:91:aa:95:2f:41:34:8f:f8:8b:aa:86:3b:22:64:be:fa:c8:07:90:15:74:e9:39 -----BEGIN CERTIFICATE----- MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcN AQkBFglwa2lAc2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZp dHNlZXJpbWlza2Vza3VzMRAwDgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMw MVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMQsw CQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEQ MA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOB SvZiF3tfTQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkz ABpTpyHhOEvWgxutr2TC+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvH LCu3GFH+4Hv2qEivbDtPL+/40UceJlfwUR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMP PbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDaTpxt4brNj3pssAki14sL 2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQFMAMBAf8w ggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwIC MIHDHoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDk AGwAagBhAHMAdABhAHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0 AHMAZQBlAHIAaQBtAGkAcwBrAGUAcwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABz AGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABrAGkAbgBuAGkAdABhAG0AaQBz AGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nwcy8wKwYDVR0f BCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcY P2/v6X2+MA4GA1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOi CfP+JmeaUOTDBS8rNXiRTHyoERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+g kcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyLabVAyJRld/JXIWY7zoVAtjNjGr95 HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678IIbsSt4beDI3poHS na9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkhMp6q qIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0Z TbvGRNs2yyqcjg== -----END CERTIFICATE----- # Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post # Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post # Label: "Hongkong Post Root CA 1" # Serial: 1000 # MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca # SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 # SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 -----BEGIN CERTIFICATE----- MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi AmvZWg== -----END CERTIFICATE----- # Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. # Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. # Label: "SecureSign RootCA11" # Serial: 1 # MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 # SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 # SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 -----BEGIN CERTIFICATE----- MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni 8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN QSdJQO7e5iNEOdyhIta6A/I= -----END CERTIFICATE----- # Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI # Subject: CN=ACEDICOM Root O=EDICOM OU=PKI # Label: "ACEDICOM Root" # Serial: 7029493972724711941 # MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 # SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 # SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a -----BEGIN CERTIFICATE----- MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI 2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i 5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== -----END CERTIFICATE----- # Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. # Label: "Microsec e-Szigno Root CA 2009" # Serial: 14014712776195784473 # MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 # SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e # SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 -----BEGIN CERTIFICATE----- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 +rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c 2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 # Label: "GlobalSign Root CA - R3" # Serial: 4835703278459759426209954 # MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 # SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad # SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH WD9f -----END CERTIFICATE----- # Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 # Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 # Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" # Serial: 6047274297262753887 # MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 # SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa # SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef -----BEGIN CERTIFICATE----- MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF 6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF 661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS 3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF 3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V -----END CERTIFICATE----- # Issuer: CN=Izenpe.com O=IZENPE S.A. # Subject: CN=Izenpe.com O=IZENPE S.A. # Label: "Izenpe.com" # Serial: 917563065490389241595536686991402621 # MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 # SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 # SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f -----BEGIN CERTIFICATE----- MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- # Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. # Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. # Label: "Chambers of Commerce Root - 2008" # Serial: 11806822484801597146 # MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 # SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c # SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 -----BEGIN CERTIFICATE----- MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR 5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s +12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 +HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF 5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ d0jQ -----END CERTIFICATE----- # Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. # Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. # Label: "Global Chambersign Root - 2008" # Serial: 14541511773111788494 # MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 # SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c # SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca -----BEGIN CERTIFICATE----- MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r 6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B -----END CERTIFICATE----- # Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. # Label: "Go Daddy Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 # SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b # SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH /PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu 9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo 2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI 4uJEvlz36hz1 -----END CERTIFICATE----- # Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 # SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e # SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg 8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- # Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. # Label: "Starfield Services Root Certificate Authority - G2" # Serial: 0 # MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 # SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f # SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk 6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn 0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN sSi6 -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Commercial O=AffirmTrust # Subject: CN=AffirmTrust Commercial O=AffirmTrust # Label: "AffirmTrust Commercial" # Serial: 8608355977964138876 # MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 # SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 # SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Networking O=AffirmTrust # Subject: CN=AffirmTrust Networking O=AffirmTrust # Label: "AffirmTrust Networking" # Serial: 8957382827206547757 # MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f # SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f # SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp 6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Premium O=AffirmTrust # Subject: CN=AffirmTrust Premium O=AffirmTrust # Label: "AffirmTrust Premium" # Serial: 7893706540734352110 # MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 # SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 # SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ +jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S 5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B 8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc 0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e KeC2uAloGRwYQw== -----END CERTIFICATE----- # Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust # Subject: CN=AffirmTrust Premium ECC O=AffirmTrust # Label: "AffirmTrust Premium ECC" # Serial: 8401224907861490260 # MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d # SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb # SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 -----BEGIN CERTIFICATE----- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D 0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== -----END CERTIFICATE----- # Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority # Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority # Label: "Certum Trusted Network CA" # Serial: 279744 # MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 # SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e # SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- # Issuer: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 # Subject: CN=Certinomis - Autorité Racine O=Certinomis OU=0002 433998903 # Label: "Certinomis - Autorité Racine" # Serial: 1 # MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a # SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 # SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 -----BEGIN CERTIFICATE----- MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N 8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K /OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu 7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC 28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB 0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q 619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn 2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG 5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 -----END CERTIFICATE----- # Issuer: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA # Subject: CN=Root CA Generalitat Valenciana O=Generalitat Valenciana OU=PKIGVA # Label: "Root CA Generalitat Valenciana" # Serial: 994436456 # MD5 Fingerprint: 2c:8c:17:5e:b1:54:ab:93:17:b5:36:5a:db:d1:c6:f2 # SHA1 Fingerprint: a0:73:e5:c5:bd:43:61:0d:86:4c:21:13:0a:85:58:57:cc:9c:ea:46 # SHA256 Fingerprint: 8c:4e:df:d0:43:48:f3:22:96:9e:7e:29:a4:cd:4d:ca:00:46:55:06:1c:16:e1:b0:76:42:2e:f3:42:ad:63:0e -----BEGIN CERTIFICATE----- MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJF UzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJ R1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcN MDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3WjBoMQswCQYDVQQGEwJFUzEfMB0G A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScw JQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+ WmmmO3I2F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKj SgbwJ/BXufjpTjJ3Cj9BZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGl u6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQD0EbtFpKd71ng+CT516nDOeB0/RSrFOy A8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXteJajCq+TA81yc477OMUxk Hl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMBAAGjggM7 MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBr aS5ndmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIIC IwYKKwYBBAG/VQIBADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8A cgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIA YQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIAYQBsAGkAdABhAHQAIABWAGEA bABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQByAGEAYwBpAPMA bgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMA aQBvAG4AYQBtAGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQA ZQAgAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEA YwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBuAHQAcgBhACAAZQBuACAAbABhACAA ZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAAOgAvAC8AdwB3AHcA LgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0dHA6 Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+y eAT8MIGVBgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQsw CQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0G A1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVu Y2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRhTvW1yEICKrNcda3Fbcrn lD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdzCkj+IHLt b8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg 9J63NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XF ducTZnV+ZfsBn5OHiJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmC IoaZM3Fa6hlXPZHNqcCjbgcTpsnt+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= -----END CERTIFICATE----- # Issuer: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 # Subject: CN=A-Trust-nQual-03 O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH OU=A-Trust-nQual-03 # Label: "A-Trust-nQual-03" # Serial: 93214 # MD5 Fingerprint: 49:63:ae:27:f4:d5:95:3d:d8:db:24:86:b8:9c:07:53 # SHA1 Fingerprint: d3:c0:63:f2:19:ed:07:3e:34:ad:5d:75:0b:32:76:29:ff:d5:9a:f2 # SHA256 Fingerprint: 79:3c:bf:45:59:b9:fd:e3:8a:b2:2d:f1:68:69:f6:98:81:ae:14:c4:b0:13:9a:c7:88:a7:8a:1a:fc:ca:02:fb -----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MDgxNzIyMDAw MFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52 ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMM EEEtVHJ1c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQCtPWFuA/OQO8BBC4SAzewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUj lUC5B3ilJfYKvUWG6Nm9wASOhURh73+nyfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZ znF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPESU7l0+m0iKsMrmKS1GWH 2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4iHQF63n1 k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs 2e3Vcuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYD VR0OBAoECERqlWdVeRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC AQEAVdRU0VlIXLOThaq/Yy/kgM40ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fG KOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmrsQd7TZjTXLDR8KdCoLXEjq/+ 8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZdJXDRZslo+S4R FGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmE DNuxUCAKGkq6ahq97BvIxYSazQ== -----END CERTIFICATE----- # Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA # Label: "TWCA Root Certification Authority" # Serial: 1 # MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 # SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 # SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 -----BEGIN CERTIFICATE----- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx 3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== -----END CERTIFICATE----- # Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 # Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 # Label: "Security Communication RootCA2" # Serial: 0 # MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 # SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 # SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy 1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- # Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority # Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority # Label: "Hellenic Academic and Research Institutions RootCA 2011" # Serial: 0 # MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 # SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d # SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 -----BEGIN CERTIFICATE----- MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD 75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp 5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p 6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI l7WdmplNsDz4SgCbZN2fOUvRJ9e4 -----END CERTIFICATE----- # Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 # Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 # Label: "Actalis Authentication Root CA" # Serial: 6271844772424770508 # MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 # SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac # SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 -----BEGIN CERTIFICATE----- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX 4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ 51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- # Issuer: O=Trustis Limited OU=Trustis FPS Root CA # Subject: O=Trustis Limited OU=Trustis FPS Root CA # Label: "Trustis FPS Root CA" # Serial: 36053640375399034304724988975563710553 # MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d # SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 # SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d -----BEGIN CERTIFICATE----- MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA 0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN ZetX2fNXlrtIzYE= -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing # Label: "StartCom Certification Authority" # Serial: 45 # MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 # SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 # SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 -----BEGIN CERTIFICATE----- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w +2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B 26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst 0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK 1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ 8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm fyWl8kgAwKQB2j8= -----END CERTIFICATE----- # Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. # Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. # Label: "StartCom Certification Authority G2" # Serial: 59 # MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 # SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 # SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 -----BEGIN CERTIFICATE----- MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM 0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl 6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK 9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI -----END CERTIFICATE----- # Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 # Label: "Buypass Class 2 Root CA" # Serial: 2 # MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 # SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 # SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr 6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN 9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h 9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo +fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h 3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= -----END CERTIFICATE----- # Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 # Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 # Label: "Buypass Class 3 Root CA" # Serial: 2 # MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec # SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 # SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX 0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c /3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D 34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv 033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq 4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= -----END CERTIFICATE----- # Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Label: "T-TeleSec GlobalRoot Class 3" # Serial: 1 # MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef # SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 # SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN 8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ 1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT 91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p TpPDpFQUWw== -----END CERTIFICATE----- # Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus # Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus # Label: "EE Certification Centre Root CA" # Serial: 112324828676200291871926431888494945866 # MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f # SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 # SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 -----BEGIN CERTIFICATE----- MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE 1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= -----END CERTIFICATE----- # Issuer: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 # Subject: CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş. (c) Aralık 2007 # Label: "TURKTRUST Certificate Services Provider Root 2007" # Serial: 1 # MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 # SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 # SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 -----BEGIN CERTIFICATE----- MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG +7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M 733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 -----END CERTIFICATE----- # Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH # Label: "D-TRUST Root Class 3 CA 2 2009" # Serial: 623603 # MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f # SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 # SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 -----BEGIN CERTIFICATE----- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp /hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y Johw1+qRzT65ysCQblrGXnRl11z+o+I= -----END CERTIFICATE----- # Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH # Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH # Label: "D-TRUST Root Class 3 CA 2 EV 2009" # Serial: 623604 # MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 # SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 # SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp 3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 -----END CERTIFICATE----- # Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica # Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT # Label: "PSCProcert" # Serial: 11 # MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec # SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 # SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 -----BEGIN CERTIFICATE----- MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH 0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ 6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS 1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB 3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km -----END CERTIFICATE----- # Issuer: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center # Subject: CN=China Internet Network Information Center EV Certificates Root O=China Internet Network Information Center # Label: "China Internet Network Information Center EV Certificates Root" # Serial: 1218379777 # MD5 Fingerprint: 55:5d:63:00:97:bd:6a:97:f5:67:ab:4b:fb:6e:63:15 # SHA1 Fingerprint: 4f:99:aa:93:fb:2b:d1:37:26:a1:99:4a:ce:7f:f0:05:f2:93:5d:1e # SHA256 Fingerprint: 1c:01:c6:f4:db:b2:fe:fc:22:55:8b:2b:ca:32:56:3f:49:84:4a:cf:c3:2b:7b:e4:b0:ff:59:9f:9e:8c:7a:f7 -----BEGIN CERTIFICATE----- MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC Q04xMjAwBgNVBAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24g Q2VudGVyMUcwRQYDVQQDDD5DaGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0 aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMgUm9vdDAeFw0xMDA4MzEwNzExMjVa Fw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpQ2hpbmEg SW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMMPkNo aW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRp ZmljYXRlcyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z 7r07eKpkQ0H1UN+U8i6yjUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA// DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV98YPjUesWgbdYavi7NifFy2cyjw1l1Vx zUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2HklY0bBoQCxfVWhyXWIQ8 hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23KzhmBsUs 4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54u gQEC7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oY NJKiyoOCWTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E FgQUfHJLOcfA22KlT5uqGDSSosqDglkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3 j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd50XPFtQO3WKwMVC/GVhMPMdoG 52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM7+czV0I664zB echNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrI zo9uoV1/A3U05K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATy wy39FCqQmbkHzJ8= -----END CERTIFICATE----- # Issuer: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services # Subject: CN=Swisscom Root CA 2 O=Swisscom OU=Digital Certificate Services # Label: "Swisscom Root CA 2" # Serial: 40698052477090394928831521023204026294 # MD5 Fingerprint: 5b:04:69:ec:a5:83:94:63:18:a7:86:d0:e4:f2:6e:19 # SHA1 Fingerprint: 77:47:4f:c6:30:e4:0f:4c:47:64:3f:84:ba:b8:c6:95:4a:8a:41:ec # SHA256 Fingerprint: f0:9b:12:2c:71:14:f4:a0:9b:d4:ea:4f:4a:99:d5:58:b4:6e:4c:25:cd:81:14:0d:29:c0:56:13:91:4c:38:41 -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBk MQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0 YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3Qg Q0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2MjUwNzM4MTRaMGQxCzAJBgNVBAYT AmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZp Y2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvEr jw0DzpPMLgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r 0rk0X2s682Q2zsKwzxNoysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f 2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJwDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVP ACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpHWrumnf2U5NGKpV+GY3aF y6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1aSgJA/MTA tukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL 6yxSNLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0 uPoTXGiTOmekl9AbmbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrAL acywlKinh/LTSlDcX3KwFnUey7QYYpqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velh k6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3qPyZ7iVNTA6z00yPhOgpD/0Q VAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0hBBYw FDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqh b97iEoHF8TwuMA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4R fbgZPnm3qKhyN2abGu2sEzsOv2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv /2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ82YqZh6NM4OKb3xuqFp1mrjX2lhI REeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLzo9v/tdhZsnPdTSpx srpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcsa0vv aGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciAT woCqISxxOQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99n Bjx8Oto0QuFmtEYE3saWmA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5W t6NlUe07qxS/TFED6F+KBZvuim6c779o+sjaC+NCydAXFJy3SuCvkychVSa1ZC+N 8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TCrvJcwhbtkj6EPnNgiLx2 9CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX5OfNeOI5 wSsSnqaeG8XmDtkx2Q== -----END CERTIFICATE----- # Issuer: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services # Subject: CN=Swisscom Root EV CA 2 O=Swisscom OU=Digital Certificate Services # Label: "Swisscom Root EV CA 2" # Serial: 322973295377129385374608406479535262296 # MD5 Fingerprint: 7b:30:34:9f:dd:0a:4b:6b:35:ca:31:51:28:5d:ae:ec # SHA1 Fingerprint: e7:a1:90:29:d3:d5:52:dc:0d:0f:c6:92:d3:ea:88:0d:15:2e:1a:6b # SHA256 Fingerprint: d9:5f:ea:3c:a4:ee:dc:e7:4c:d7:6e:75:fc:6d:1f:f6:2c:44:1f:0f:a8:bc:77:f0:34:b1:9e:5d:b2:58:01:5d -----BEGIN CERTIFICATE----- MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAw ZzELMAkGA1UEBhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdp dGFsIENlcnRpZmljYXRlIFNlcnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290 IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcNMzEwNjI1MDg0NTA4WjBnMQswCQYD VQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2Vy dGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYgQ0Eg MjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7Bx UglgRCgzo3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD 1ycfMQ4jFrclyxy0uYAyXhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPH oCE2G3pXKSinLr9xJZDzRINpUKTk4RtiGZQJo/PDvO/0vezbE53PnUgJUmfANykR HvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8LiqG12W0OfvrSdsyaGOx9/ 5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaHZa0zKcQv idm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHL OdAGalNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaC NYGu+HuB5ur+rPQam3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f 46Fq9mDU5zXNysRojddxyNMkM3OxbPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCB UWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDixzgHcgplwLa7JSnaFp6LNYth 7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/BAQDAgGGMB0G A1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWB bj2ITY1x0kbBbkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6x XCX5145v9Ydkn+0UjrgEjihLj6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98T PLr+flaYC/NUn81ETm484T4VvwYmneTwkLbUwp4wLh/vx3rEUMfqe9pQy3omywC0 Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7XwgiG/W9mR4U9s70 WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH59yL Gn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm 7JFe3VE/23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4S nr8PyQUQ3nqjsTzyP6WqJ3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VN vBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyAHmBR3NdUIR7KYndP+tiPsys6DXhyyWhB WkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/giuMod89a2GQ+fYWVq6nTI fI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuWl8PVP3wb I+2ksx0WckNLIOFZfsLorSa/ovc= -----END CERTIFICATE----- # Issuer: CN=CA Disig Root R1 O=Disig a.s. # Subject: CN=CA Disig Root R1 O=Disig a.s. # Label: "CA Disig Root R1" # Serial: 14052245610670616104 # MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a # SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 # SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK /yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD 3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE 7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb 7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL -----END CERTIFICATE----- # Issuer: CN=CA Disig Root R2 O=Disig a.s. # Subject: CN=CA Disig Root R2 O=Disig a.s. # Label: "CA Disig Root R2" # Serial: 10572350602393338211 # MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 # SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 # SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka +elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL -----END CERTIFICATE----- # Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV # Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV # Label: "ACCVRAIZ1" # Serial: 6828503384748696800 # MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 # SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 # SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 -----BEGIN CERTIFICATE----- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ 0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA 7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH 7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 -----END CERTIFICATE----- # Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA # Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA # Label: "TWCA Global Root CA" # Serial: 3262 # MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 # SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 # SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF 10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz 0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc 46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm 4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL 1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh 15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW 6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy KwbQBM0= -----END CERTIFICATE----- # Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera # Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera # Label: "TeliaSonera Root CA v1" # Serial: 199041966741090107964904287217786801558 # MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c # SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 # SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ /jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs 81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG 9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- # Issuer: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi # Subject: CN=E-Tugra Certification Authority O=E-Tuğra EBG Bilişim Teknolojileri ve Hizmetleri A.Ş. OU=E-Tugra Sertifikasyon Merkezi # Label: "E-Tugra Certification Authority" # Serial: 7667447206703254355 # MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 # SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 # SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c -----BEGIN CERTIFICATE----- MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c 77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 +GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== -----END CERTIFICATE----- # Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center # Label: "T-TeleSec GlobalRoot Class 2" # Serial: 1 # MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a # SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 # SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi 1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP BSeOE6Fuwg== -----END CERTIFICATE----- # Issuer: CN=Atos TrustedRoot 2011 O=Atos # Subject: CN=Atos TrustedRoot 2011 O=Atos # Label: "Atos TrustedRoot 2011" # Serial: 6643877497813316402 # MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 # SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 # SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ 4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 1 G3" # Serial: 687049649626669250736271037606554624078720034195 # MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab # SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 # SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh 4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc 3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 2 G3" # Serial: 390156079458959257446133169266079962026824725800 # MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 # SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 # SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz 8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l 7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE +V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M -----END CERTIFICATE----- # Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited # Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited # Label: "QuoVadis Root CA 3 G3" # Serial: 268090761170461462463995952157327242137089239581 # MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 # SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d # SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR /xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP 0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf 3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl 8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root G2" # Serial: 15385348160840213938643033620894905419 # MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d # SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f # SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 -----BEGIN CERTIFICATE----- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I 0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo IhNzbM8m9Yop5w== -----END CERTIFICATE----- # Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Assured ID Root G3" # Serial: 15459312981008553731928384953135426796 # MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb # SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 # SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 -----BEGIN CERTIFICATE----- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv 6pZjamVFkpUBtA== -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root G2" # Serial: 4293743540046975378534879503202253541 # MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 # SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 # SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI 2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx 1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV 5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY 1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- # Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Global Root G3" # Serial: 7089244469030293291760083333884364146 # MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca # SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e # SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 -----BEGIN CERTIFICATE----- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 sycX -----END CERTIFICATE----- # Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com # Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com # Label: "DigiCert Trusted Root G4" # Serial: 7451500558977370777930084869016614236 # MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 # SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 # SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 -----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t 9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd +SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N 0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie 4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 /YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ -----END CERTIFICATE----- # Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited # Subject: CN=Certification Authority of WoSign O=WoSign CA Limited # Label: "WoSign" # Serial: 125491772294754854453622855443212256657 # MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d # SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb # SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 -----BEGIN CERTIFICATE----- MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT ee5Ehr7XHuQe+w== -----END CERTIFICATE----- # Issuer: CN=CA 沃通根证书 O=WoSign CA Limited # Subject: CN=CA 沃通根证书 O=WoSign CA Limited # Label: "WoSign China" # Serial: 106921963437422998931660691310149453965 # MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 # SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 # SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 -----BEGIN CERTIFICATE----- MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb +gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj /feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== -----END CERTIFICATE----- # Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited # Label: "COMODO RSA Certification Authority" # Serial: 101909084537582093308941363524873193117 # MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 # SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 # SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 -----BEGIN CERTIFICATE----- MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR 6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC 9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV /erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z +pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB /wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM 4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV 2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl 0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB NVOFBkpdn627G190 -----END CERTIFICATE----- # Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network # Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network # Label: "USERTrust RSA Certification Authority" # Serial: 2645093764781058787591871645665788717 # MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 # SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e # SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 -----BEGIN CERTIFICATE----- MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B 3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT 79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs 8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG jjxDah2nGN59PRbxYvnKkKj9 -----END CERTIFICATE----- # Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network # Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network # Label: "USERTrust ECC Certification Authority" # Serial: 123013823720199481456569720443997572134 # MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 # SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 # SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a -----BEGIN CERTIFICATE----- MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 # Label: "GlobalSign ECC Root CA - R4" # Serial: 14367148294922964480859022125800977897474 # MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e # SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb # SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c -----BEGIN CERTIFICATE----- MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs ewv4n4Q= -----END CERTIFICATE----- # Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 # Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 # Label: "GlobalSign ECC Root CA - R5" # Serial: 32785792099990507226680698011560947931244 # MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 # SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa # SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 -----BEGIN CERTIFICATE----- MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc 8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg 515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO xwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- # Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden # Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden # Label: "Staat der Nederlanden Root CA - G3" # Serial: 10003001 # MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 # SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc # SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 -----BEGIN CERTIFICATE----- MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR 9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az 5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh /WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw 0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq 4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR 1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM 94B7IWcnMFk= -----END CERTIFICATE----- # Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden # Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden # Label: "Staat der Nederlanden EV Root CA" # Serial: 10000013 # MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba # SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb # SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a -----BEGIN CERTIFICATE----- MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS /ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH 1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u 2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc 7uzXLg== -----END CERTIFICATE----- # Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust # Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust # Label: "IdenTrust Commercial Root CA 1" # Serial: 13298821034946342390520003877796839426 # MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 # SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 # SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT 3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU +ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH 6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 +wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG 4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A 7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H -----END CERTIFICATE----- # Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust # Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust # Label: "IdenTrust Public Sector Root CA 1" # Serial: 13298821034946342390521976156843933698 # MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba # SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd # SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f -----BEGIN CERTIFICATE----- MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF /YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R 3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy 9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ 2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 +bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv 8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c -----END CERTIFICATE----- # Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only # Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only # Label: "Entrust Root Certification Authority - G2" # Serial: 1246989352 # MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 # SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 # SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 -----BEGIN CERTIFICATE----- MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v 1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== -----END CERTIFICATE----- # Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only # Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only # Label: "Entrust Root Certification Authority - EC1" # Serial: 51543124481930649114116133369 # MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc # SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 # SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 -----BEGIN CERTIFICATE----- MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G -----END CERTIFICATE----- # Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority # Subject: CN=CFCA EV ROOT O=China Financial Certification Authority # Label: "CFCA EV ROOT" # Serial: 407555286 # MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 # SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 # SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd -----BEGIN CERTIFICATE----- MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 /ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp 7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN 5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe /v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ 5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su -----END CERTIFICATE----- # Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited # Label: "Entrust.net Secure Server CA" # Serial: 927650371 # MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee # SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 # SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 -----BEGIN CERTIFICATE----- MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN 95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd 2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority # Label: "ValiCert Class 2 VA" # Serial: 1 # MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 # SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 # SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd -----END CERTIFICATE----- # Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Label: "NetLock Express (Class C) Root" # Serial: 104 # MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 # SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b # SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f -----BEGIN CERTIFICATE----- MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC 2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 Fp1hBWeAyNDYpQcCNJgEjTME1A== -----END CERTIFICATE----- # Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok # Label: "NetLock Business (Class B) Root" # Serial: 105 # MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 # SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af # SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 -----BEGIN CERTIFICATE----- MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS NitjrFgBazMpUIaD8QFI -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority # Label: "RSA Root Certificate 1" # Serial: 1 # MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 # SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb # SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs 2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu -----END CERTIFICATE----- # Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority # Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority # Label: "ValiCert Class 1 VA" # Serial: 1 # MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb # SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e # SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 -----BEGIN CERTIFICATE----- MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG 9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI -----END CERTIFICATE----- # Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. # Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. # Label: "Equifax Secure eBusiness CA 1" # Serial: 4 # MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d # SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 # SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 -----BEGIN CERTIFICATE----- MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN /Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== -----END CERTIFICATE----- # Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. # Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. # Label: "Equifax Secure Global eBusiness CA" # Serial: 1 # MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc # SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 # SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 -----BEGIN CERTIFICATE----- MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc 58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv 8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV -----END CERTIFICATE----- # Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division # Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division # Label: "Thawte Premium Server CA" # Serial: 1 # MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a # SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a # SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 -----BEGIN CERTIFICATE----- MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG 9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== -----END CERTIFICATE----- # Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division # Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division # Label: "Thawte Server CA" # Serial: 1 # MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d # SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c # SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 -----BEGIN CERTIFICATE----- MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG 7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ qdq5snUb9kLy78fyGPmJvKP/iiMucEc= -----END CERTIFICATE----- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority # Label: "Verisign Class 3 Public Primary Certification Authority" # Serial: 149843929435818692848040365716851702463 # MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 # SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 # SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 -----BEGIN CERTIFICATE----- MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k -----END CERTIFICATE----- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority # Label: "Verisign Class 3 Public Primary Certification Authority" # Serial: 80507572722862485515306429940691309246 # MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 # SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b # SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 -----BEGIN CERTIFICATE----- MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i 2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ 2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ -----END CERTIFICATE----- # Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network # Label: "Verisign Class 3 Public Primary Certification Authority - G2" # Serial: 167285380242319648451154478808036881606 # MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 # SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f # SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b -----BEGIN CERTIFICATE----- MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY oJ2daZH9 -----END CERTIFICATE----- # Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. # Label: "GTE CyberTrust Global Root" # Serial: 421 # MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db # SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 # SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 -----BEGIN CERTIFICATE----- MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ -----END CERTIFICATE----- ================================================ FILE: dist_assets/linux/AppImageBuilder.yml ================================================ version: 1 AppDir: path: ./AppDir app_info: id: pyfa name: pyfa icon: pyfa version: '{{PYFA_VERSION}}' exec: usr/bin/python3.11 exec_args: "-s $APPDIR/opt/pyfa/pyfa.py $@" apt: arch: [ amd64 ] sources: - sourceline: 'deb http://us.archive.ubuntu.com/ubuntu jammy main restricted universe multiverse' key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c' - sourceline: 'deb http://us.archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse' key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c' - sourceline: 'deb http://us.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse' key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c' - sourceline: 'deb http://us.archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse' key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x871920d1991bc93c' - sourceline: 'deb https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu jammy main' key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf23c5a6cf475977595c89f51ba6932366a755776' include: - python3.11 # wx dependencies - libgtk-3-0 - librsvg2-common # GTK3 recommendation; without it, search in char editor crashes - libwebkit2gtk-4.0-37 # Needed for wx's HTML lib # Unknown - libpcre2-32-0 # https://github.com/pyfa-org/Pyfa/issues/2572 - libnotify4 # https://github.com/pyfa-org/Pyfa/issues/2598 - libwayland-client0 # https://github.com/pyfa-org/Pyfa/issues/2600 exclude: - hicolor-icon-theme - humanity-icon-theme - ubuntu-mono after_bundle: # Install python dependencies to bundled interpreter - export PYTHONHOME="AppDir/usr" - export PYTHONPATH="AppDir/usr/lib/python3.11/site-packages" - curl -L https://bootstrap.pypa.io/get-pip.py -o get-pip.py - AppDir/usr/bin/python3.11 get-pip.py # Just to bundle certificates with AppImage - AppDir/usr/bin/python3.11 -s -m pip install certifi - AppDir/usr/bin/python3.11 -s -m pip install -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04 -r requirements.txt files: exclude: - usr/lib/x86_64-linux-gnu/gconv - usr/share/man - usr/share/doc/*/README.* - usr/share/doc/*/changelog.* - usr/share/doc/*/NEWS.* - usr/share/doc/*/TODO.* - usr/include runtime: env: PYTHONHOME: '${APPDIR}/usr' PYTHONPATH: '${APPDIR}/usr/lib/python3.11/site-packages' SSL_CERT_FILE: '${APPDIR}/usr/local/lib/python3.11/dist-packages/certifi/cacert.pem' # Workaround for https://github.com/AppImageCrafters/appimage-builder/issues/336 XDG_DATA_DIRS: '${APPDIR}/usr/local/share:${APPDIR}/usr/share:/usr/local/share:/usr/share:$XDG_DATA_DIRS' AppImage: sign-key: None arch: x86_64 file_name: 'pyfa-{{PYFA_VERSION}}-linux.AppImage' ================================================ FILE: dist_assets/mac/pyfa.spec ================================================ # -*- mode: python -*- import os from itertools import chain import subprocess import requests.certs label = subprocess.check_output([ "git", "describe", "--tags"]).strip() with open('.version', 'w+') as f: f.write(label.decode()) block_cipher = None added_files = [ ('../../imgs/gui/*.png', 'imgs/gui'), ('../../imgs/gui/*.gif', 'imgs/gui'), ('../../imgs/icons/*.png', 'imgs/icons'), ('../../imgs/renders/*.png', 'imgs/renders'), ('../../dist_assets/win/pyfa.ico', '.'), ('../../service/jargon/*.yaml', 'service/jargon'), ('../../locale', 'locale'), (requests.certs.where(), '.'), # is this needed anymore? ('../../eve.db', '.'), ('../../README.md', '.'), ('../../LICENSE', '.'), ('../../version.yml', '.'), ] import_these = [ 'numpy.core._dtype_ctypes', # https://github.com/pyinstaller/pyinstaller/issues/3982 'sqlalchemy.ext.baked', # windows build doesn't launch without if when using sqlalchemy 1.3.x 'pkg_resources.py2_warn' # issue 2156 ] icon = os.path.join(os.getcwd(), "dist_assets", "mac", "pyfa.icns") # Walk directories that do dynamic importing paths = ('eos/db/migrations', 'service/conversions') for root, folders, files in chain.from_iterable(os.walk(path) for path in paths): for file_ in files: if file_.endswith(".py") and not file_.startswith("_"): mod_name = "{}.{}".format( root.replace("/", "."), file_.split(".py")[0], ) import_these.append(mod_name) a = Analysis([r'../../pyfa.py'], pathex=[], binaries=[], datas=added_files, hiddenimports=import_these, hookspath=['dist_assets/pyinstaller_hooks'], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, name='pyfa', debug=False, strip=False, upx=True, runtime_tmpdir=None, console=False , icon=icon, ) app = BUNDLE( exe, name='pyfa.app', version=os.getenv('PYFA_VERSION'), icon=icon, bundle_identifier=None, info_plist={ 'NSHighResolutionCapable': 'True', 'NSPrincipalClass': 'NSApplication', 'CFBundleName': 'pyfa', 'CFBundleDisplayName': 'pyfa', 'CFBundleIdentifier': 'org.pyfaorg.pyfa', 'CFBundleVersion': os.getenv('PYFA_VERSION'), 'CFBundleShortVersionString': os.getenv('PYFA_VERSION'), } ) ================================================ FILE: dist_assets/win/dist.py ================================================ # helper script to zip up pyinstaller distribution and create installer file import os.path from subprocess import call import zipfile from packaging.version import Version import yaml with open("version.yml", 'r') as file: data = yaml.load(file, Loader=yaml.SafeLoader) version = data['version'] os.environ["PYFA_DIST_DIR"] = os.path.join(os.getcwd(), 'dist') os.environ["PYFA_VERSION"] = version iscc = r"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" source = os.path.join(os.environ["PYFA_DIST_DIR"], "pyfa") fileName = "pyfa-{}-win".format(os.environ["PYFA_VERSION"]) print("Compiling EXE") v = Version(version) print(v) call([ iscc, os.path.join(os.getcwd(), "dist_assets", "win", "pyfa-setup.iss"), "/dMyAppVersion=%s" % v, "/dMyAppDir=%s" % source, "/dMyOutputDir=%s" % os.path.join(os.getcwd()), "/dMyOutputFile=%s" % fileName]) # stdout=devnull, stderr=devnull print("Done") ================================================ FILE: dist_assets/win/pyfa-setup.iss ================================================ ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! ; Versioning ; we do some #ifdef conditionals because automated compilation passes these as arguments #ifndef MyAppVersion #define MyAppVersion "2.1.0" #endif ; Other config #define MyAppName "pyfa" #define MyAppPublisher "pyfa" #define MyAppURL "https://github.com/pyfa-org/Pyfa/" #define MyAppExeName "pyfa.exe" #ifndef MyOutputFile #define MyOutputFile LowerCase(StringChange(MyAppName+'-'+MyAppVersion+'-win', " ", "-")) #endif #ifndef MyAppDir #define MyAppDir "pyfa" #endif #ifndef MyOutputDir #define MyOutputDir "dist" #endif [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{3DA39096-C08D-49CD-90E0-1D177F32C8AA} AppName={#MyAppName} AppVersion={#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} ArchitecturesAllowed=x64 ArchitecturesInstallIn64BitMode=x64 CloseApplications=yes DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes LicenseFile={#MyAppDir}\app\LICENSE OutputDir={#MyOutputDir} OutputBaseFilename={#MyOutputFile} SetupIconFile={#MyAppDir}\app\pyfa.ico SolidCompression=yes [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] Source: "{#MyAppDir}\pyfa.exe"; DestDir: "{app}"; Flags: ignoreversion; AfterInstall: RemoveFromVirtualStore Source: "{#MyAppDir}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [InstallDelete] ; These will delete left over generated files from 1.14 and below Type: filesandordirs; Name: "{app}\eos" Type: filesandordirs; Name: "{app}\gui" Type: filesandordirs; Name: "{app}\service" Type: filesandordirs; Name: "{app}\utils" Type: files; Name: "{app}\*.pyo" Type: files; Name: "{app}\*.pyc" [Code] ///////////////////////////////////////////////////////////////////// function IsAppRunning(const FileName : string): Boolean; var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result := false; FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName])); Result := (FWbemObjectSet.Count > 0); FWbemObjectSet := Unassigned; FWMIService := Unassigned; FSWbemLocator := Unassigned; end; ///////////////////////////////////////////////////////////////////// procedure RemoveFromVirtualStore; var VirtualStore,FileName,FilePath:String; DriveChars:Integer; begin VirtualStore:=AddBackslash(ExpandConstant('{localappdata}'))+'VirtualStore'; FileName:=ExpandConstant(CurrentFileName); DriveChars:=Length(ExtractFileDrive(FileName)); if DriveChars>0 then begin Delete(FileName,1,DriveChars); FileName:=VirtualStore+FileName; FilePath:=ExtractFilePath(FileName); DelTree(FilePath, True, True, True); end; end; ///////////////////////////////////////////////////////////////////// function PrepareToInstall(var NeedsRestart: Boolean): String; begin if(IsAppRunning( 'pyfa.exe' )) then begin Result := 'Please close pyfa before continuing. When closed, please go back to the previous step and continue. If you have named this installer pyfa.exe, please rename it and restart installation'; end else begin Result := ''; end end; ///////////////////////////////////////////////////////////////////// function GetUninstallString(): String; var sUnInstPath: String; sUnInstallString: String; begin sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{{3DA39096-C08D-49CD-90E0-1D177F32C8AA}_is1'); //Your App GUID/ID sUnInstallString := ''; if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then if not RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString) then if not RegQueryStringValue(HKLM32, sUnInstPath, 'UninstallString', sUnInstallString) then RegQueryStringValue(HKCU32, sUnInstPath, 'UninstallString', sUnInstallString); Result := sUnInstallString; end; ///////////////////////////////////////////////////////////////////// function UnInstallOldVersion(): Integer; var sUnInstallString: String; iResultCode: Integer; begin // Return Values: // 1 - uninstall string is empty // 2 - error executing the UnInstallString // 3 - successfully executed the UnInstallString // default return value Result := 0; // get the uninstall string of the old app sUnInstallString := GetUninstallString(); if sUnInstallString <> '' then begin sUnInstallString := RemoveQuotes(sUnInstallString); if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then Result := 3 else Result := 2; end else Result := 1; end; ///////////////////////////////////////////////////////////////////// function IsUpgrade(): Boolean; begin Result := (GetUninstallString() <> ''); end; ///////////////////////////////////////////////////////////////////// procedure CurStepChanged(CurStep: TSetupStep); begin if (CurStep=ssInstall) then begin if (IsUpgrade()) then begin UnInstallOldVersion(); end; end; end; ================================================ FILE: dist_assets/win/pyfa.spec ================================================ # -*- mode: python -*- import os from itertools import chain import subprocess import requests.certs label = subprocess.check_output(["git", "describe", "--tags"]).strip() with open('.version', 'w+') as f: f.write(label.decode()) block_cipher = None added_files = [ ('../../imgs/gui/*.png', 'imgs/gui'), ('../../imgs/gui/*.gif', 'imgs/gui'), ('../../imgs/icons/*.png', 'imgs/icons'), ('../../imgs/renders/*.png', 'imgs/renders'), ('../../service/jargon/*.yaml', 'service/jargon'), ('../../dist_assets/win/pyfa.ico', '.'), ('../../dist_assets/win/pyfa.exe.manifest', '.'), (requests.certs.where(), '.'), # is this needed anymore? ('../../eve.db', '.'), ('../../README.md', '.'), ('../../LICENSE', '.'), ('../../version.yml', '.'), ] import_these = [ 'numpy.core._dtype_ctypes', # https://github.com/pyinstaller/pyinstaller/issues/3982 'sqlalchemy.ext.baked', # windows build doesn't launch without if when using sqlalchemy 1.3.x 'pkg_resources.py2_warn' # issue 2156 ] # Walk directories that do dynamic importing paths = ('eos/db/migrations', 'service/conversions') for root, folders, files in chain.from_iterable(os.walk(path) for path in paths): for file_ in files: if file_.endswith(".py") and not file_.startswith("_"): mod_name = "{}.{}".format( root.replace("/", "."), file_.split(".py")[0], ) import_these.append(mod_name) a = Analysis(['../../pyfa.py'], pathex=[ # Need this, see https://github.com/pyinstaller/pyinstaller/issues/1566 # To get this, download and install windows 10 SDK # If not building on Windows 10, this might be optional r'C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86'], binaries=[], datas=added_files, hiddenimports=import_these, hookspath=['dist_assets/pyinstaller_hooks'], runtime_hooks=[], excludes=['Tkinter'], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, exclude_binaries=True, debug=False, console=False, strip=False, upx=True, name='pyfa', icon='dist_assets/win/pyfa.ico', ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, name='pyfa', icon='dist_assets/win/pyfa.ico', ) ================================================ FILE: dist_assets/win/version_resource.py ================================================ # UTF-8 # # For more details about fixed file info 'ffi' see: # http://msdn.microsoft.com/en-us/library/ms646997.aspx VSVersionInfo( ffi=FixedFileInfo( # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4) # Set not needed items to zero 0. filevers=(1, 15, 1, 0), prodvers=(1, 15, 1, 0), # Contains a bitmask that specifies the valid bits 'flags'r mask=0x3f, # Contains a bitmask that specifies the Boolean attributes of the file. flags=0x0, # The operating system for which this file was designed. # 0x4 - NT and there is no need to change it. OS=0x40004, # The general type of file. # 0x1 - the file is an application. fileType=0x1, # The function of the file. # 0x0 - the function is not defined for this fileType subtype=0x0, # Creation date and time stamp. date=(0, 0) ), kids=[ StringFileInfo( [ StringTable( u'040904E4', [StringStruct(u'LegalCopyright', u''), StringStruct(u'InternalName', u'pyfa.exe'), StringStruct(u'FileVersion', u'1.15.1.0'), StringStruct(u'CompanyName', u''), StringStruct(u'OriginalFilename', u'pyfa.exe'), StringStruct(u'ProductVersion', u'1.15.1.0'), StringStruct(u'FileDescription', u'Python fitting assistant'), StringStruct(u'LegalTrademarks', u''), StringStruct(u'Comments', u''), StringStruct(u'ProductName', u'pyfa')]) ]), VarFileInfo([VarStruct(u'Translation', [1033, 1252])]) ] ) ================================================ FILE: docs/_config.yml ================================================ theme: jekyll-theme-midnight ================================================ FILE: docs/callback.html ================================================ pyfa Authentication Proxy

pyfa

================================================ FILE: docs/index.md ================================================ ## Welcome to GitHub Pages You can use the [editor on GitHub](https://github.com/pyfa-org/Pyfa/edit/gh-pages/index.md) to maintain and preview the content for your website in Markdown files. Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files. ### Markdown Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for ```markdown Syntax highlighted code block # Header 1 ## Header 2 ### Header 3 - Bulleted - List 1. Numbered 2. List **Bold** and _Italic_ and `Code` text [Link](url) and ![Image](src) ``` For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). ### Jekyll Themes Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/pyfa-org/Pyfa/settings/pages). The name of this theme is saved in the Jekyll `_config.yml` configuration file. ### Support or Contact Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://support.github.com/contact) and we’ll help you sort it out. ================================================ FILE: eos/__init__.py ================================================ version = "0.2.3" tag = "git" ================================================ FILE: eos/calc.py ================================================ # ============================================================================= # Copyright (C) 2019 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math # Just copy-paste penalization chain calculation code (with some modifications, # as multipliers arrive in different form) in here to not make actual attribute # calculations slower than they already are due to extra function calls def calculateMultiplier(multipliers): """ multipliers: dictionary in format: {stacking group name: [(mult, resist attr ID), (mult, resist attr ID)]} """ val = 1 for penalizedMultipliers in multipliers.values(): # A quick explanation of how this works: # 1: Bonuses and penalties are calculated seperately, so we'll have to filter each of them l1 = [v[0] for v in penalizedMultipliers if v[0] > 1] l2 = [v[0] for v in penalizedMultipliers if v[0] < 1] # 2: The most significant bonuses take the smallest penalty, # This means we'll have to sort abssort = lambda _val: -abs(_val - 1) l1.sort(key=abssort) l2.sort(key=abssort) # 3: The first module doesn't get penalized at all # Any module after the first takes penalties according to: # 1 + (multiplier - 1) * math.exp(- math.pow(i, 2) / 7.1289) for l in (l1, l2): for i in range(len(l)): bonus = l[i] val *= 1 + (bonus - 1) * math.exp(- i ** 2 / 7.1289) return val def calculateRangeFactor(srcOptimalRange, srcFalloffRange, distance, restrictedRange=True): """Range strength/chance factor, applicable to guns, ewar, RRs, etc.""" if distance is None: return 1 if srcFalloffRange > 0: # Most modules cannot be activated when at 3x falloff range, with few exceptions like guns if restrictedRange and distance > srcOptimalRange + 3 * srcFalloffRange: return 0 return 0.5 ** ((max(0, distance - srcOptimalRange) / srcFalloffRange) ** 2) elif distance <= srcOptimalRange: return 1 else: return 0 def calculateLockTime(srcScanRes, tgtSigRadius): if not srcScanRes or not tgtSigRadius: return None return min(40000 / srcScanRes / math.asinh(tgtSigRadius) ** 2, 30 * 60) ================================================ FILE: eos/capSim.py ================================================ import heapq import time from math import sqrt, exp from collections import Counter DAY = 24 * 60 * 60 * 1000 def lcm(a, b): n = a * b while b: a, b = b, a % b return n / a class CapSimulator: """Entity's EVE Capacitor Simulator""" def __init__(self): # simulator defaults (change in instance, not here) self.capacitorCapacity = 100 self.capacitorRecharge = 1000 self.startingCapacity = 1000 # max simulated time. self.t_max = DAY # take reloads into account? self.reload = False # stagger activations of identical modules? self.stagger = False # scale activation duration and capNeed to values that ease the # calculation at the cost of accuracy? self.scale = False # millisecond resolutions for scaling self.scale_resolutions = (100, 50, 25, 10) # relevant decimal digits of capacitor for LCM period optimization self.stability_precision = 1 # Stores how cap sim changed cap values outside of cap regen time self.saved_changes = () self.saved_changes_internal = None # Reports if sim was stopped due to detecting stability early self.optimize_repeats = True self.result_optimized_repeats = None def scale_activation(self, duration, capNeed): for res in self.scale_resolutions: mod = duration % res if mod: if mod > res / 2.0: mod = res - mod else: mod = -mod if abs(mod) <= duration / 100.0: # only adjust if the adjustment is less than 1% duration += mod capNeed += float(mod) / duration * capNeed break return duration, capNeed def init(self, modules): """prepare modules. a list of (duration, capNeed, clipSize, disableStagger, reloadTime, isInjector) tuples is expected, with clipSize 0 if the module has infinite ammo. """ self.modules = modules def reset(self): """Reset the simulator state""" self.state = [] self.saved_changes_internal = {} self.result_optimized_repeats = False mods = {} period = 1 disable_period = False # Loop over modules, clearing clipSize if applicable, and group modules based on attributes for (duration, capNeed, clipSize, disableStagger, reloadTime, isInjector) in self.modules: if self.scale: duration, capNeed = self.scale_activation(duration, capNeed) # set clipSize to infinite if reloads are disabled unless it's # a cap booster module if not self.reload and not isInjector: clipSize = 0 reloadTime = 0 # Group modules based on their properties key = (duration, capNeed, clipSize, disableStagger, reloadTime, isInjector) if key in mods: mods[key] += 1 else: mods[key] = 1 # Loop over grouped modules, configure staggering and push to the simulation state for (duration, capNeed, clipSize, disableStagger, reloadTime, isInjector), amount in mods.items(): # period optimization doesn't work when reloads are active. if clipSize: disable_period = True # Just push multiple instances if item is injector. We do not want to stagger them as we will # use them as needed and want them to be available right away if isInjector: for i in range(amount): heapq.heappush(self.state, [0, duration, capNeed, 0, clipSize, reloadTime, isInjector]) continue if self.stagger and not disableStagger: # Stagger all mods if they do not need to be reloaded if clipSize == 0: duration = int(duration / amount) # Stagger mods after first else: stagger_amount = (duration * clipSize + reloadTime) / (amount * clipSize) for i in range(1, amount): heapq.heappush(self.state, [i * stagger_amount, duration, capNeed, 0, clipSize, reloadTime, isInjector]) # If mods are not staggered - just multiply cap use else: capNeed *= amount period = lcm(period, duration) heapq.heappush(self.state, [0, duration, capNeed, 0, clipSize, reloadTime, isInjector]) if disable_period: self.period = self.t_max else: self.period = period def run(self): """Run the simulation""" start = time.time() awaitingInjectors = [] awaitingInjectorsCounterWrap = Counter() self.reset() push = heapq.heappush pop = heapq.heappop state = self.state stability_precision = self.stability_precision period = self.period activation = None iterations = 0 capCapacity = self.capacitorCapacity tau = self.capacitorRecharge / 5.0 cap_wrap = self.startingCapacity # cap value at last period cap_lowest = self.startingCapacity # lowest cap value encountered cap_lowest_pre = self.startingCapacity # lowest cap value before activations cap = self.startingCapacity # current cap value t_wrap = self.period # point in time of next period t_last = 0 t_max = self.t_max while 1: # Nothing to pop - might happen when no mods are activated, or when # only cap injectors are active (and are postponed by code below) try: activation = pop(state) except IndexError: break t_now, duration, capNeed, shot, clipSize, reloadTime, isInjector = activation # Max time reached, stop simulation - we're stable if t_now >= t_max: break # Regenerate cap from last time point if t_now > t_last: cap = ((1.0 + (sqrt(cap / capCapacity) - 1.0) * exp((t_last - t_now) / tau)) ** 2) * capCapacity if t_now != t_last: if cap < cap_lowest_pre: cap_lowest_pre = cap if t_now == t_wrap: # history is repeating itself, so if we have more cap now than last # time this happened, it is a stable setup. awaitingInjectorsCounterNow = Counter(awaitingInjectors) if self.optimize_repeats and cap >= cap_wrap and awaitingInjectorsCounterNow == awaitingInjectorsCounterWrap: self.result_optimized_repeats = True break cap_wrap = round(cap, stability_precision) awaitingInjectorsCounterWrap = awaitingInjectorsCounterNow t_wrap += period t_last = t_now iterations += 1 # If injecting cap will "overshoot" max cap, postpone it if isInjector and cap - capNeed > capCapacity: awaitingInjectors.append((duration, capNeed, shot, clipSize, reloadTime, isInjector)) else: # If we will need more cap than we have, but we are not at 100% - # use awaiting cap injectors to top us up until we have enough or # until we're full if capNeed > cap and cap < capCapacity: while awaitingInjectors and capNeed > cap and capCapacity > cap: neededInjection = min(capNeed - cap, capCapacity - cap) # Find injectors which have just enough cap or more goodInjectors = [i for i in awaitingInjectors if -i[1] >= neededInjection] if goodInjectors: # Pick injector which overshoots the least bestInjector = min(goodInjectors, key=lambda i: -i[1]) else: # Take the one which provides the most cap bestInjector = max(goodInjectors, key=lambda i: -i[1]) # Use injector awaitingInjectors.remove(bestInjector) inj_duration, inj_capNeed, inj_shot, inj_clipSize, inj_reloadTime, inj_isInjector = bestInjector cap -= inj_capNeed if cap > capCapacity: cap = capCapacity self.saved_changes_internal[t_now] = cap # Add injector to regular state tracker inj_t_now = t_now inj_t_now += inj_duration inj_shot += 1 if inj_clipSize: if inj_shot % inj_clipSize == 0: inj_shot = 0 inj_t_now += inj_reloadTime push(state, [inj_t_now, inj_duration, inj_capNeed, inj_shot, inj_clipSize, inj_reloadTime, inj_isInjector]) # Apply cap modification cap -= capNeed if cap > capCapacity: cap = capCapacity self.saved_changes_internal[t_now] = cap if cap < cap_lowest: # Negative cap - we're unstable, simulation is over if cap < 0.0: break cap_lowest = cap # Try using awaiting injectors to top up the cap after spending some while awaitingInjectors and cap < capCapacity: neededInjection = capCapacity - cap # Find injectors which do not overshoot max cap goodInjectors = [i for i in awaitingInjectors if -i[1] <= neededInjection] if not goodInjectors: break # Take the one which provides the most cap bestInjector = max(goodInjectors, key=lambda i: -i[1]) # Use injector awaitingInjectors.remove(bestInjector) inj_duration, inj_capNeed, inj_shot, inj_clipSize, inj_reloadTime, inj_isInjector = bestInjector cap -= inj_capNeed if cap > capCapacity: cap = capCapacity self.saved_changes_internal[t_now] = cap # Add injector to regular state tracker inj_t_now = t_now inj_t_now += inj_duration inj_shot += 1 if inj_clipSize: if inj_shot % inj_clipSize == 0: inj_shot = 0 inj_t_now += inj_reloadTime push(state, [inj_t_now, inj_duration, inj_capNeed, inj_shot, inj_clipSize, inj_reloadTime, inj_isInjector]) # queue the next activation of this module t_now += duration shot += 1 if clipSize: if shot % clipSize == 0: shot = 0 t_now += reloadTime # include reload time activation[0] = t_now activation[3] = shot push(state, activation) if activation is not None: push(state, activation) # update instance with relevant results. self.t = t_last self.iterations = iterations # calculate EVE's stability value try: avgDrain = sum(x[2] / x[1] for x in self.state) self.cap_stable_eve = 0.25 * (1.0 + sqrt(-(2.0 * avgDrain * tau - capCapacity) / capCapacity)) ** 2 except ValueError: self.cap_stable_eve = 0.0 if cap > 0.0: # capacitor low/high water marks self.cap_stable_low = cap_lowest self.cap_stable_high = cap_lowest_pre else: self.cap_stable_low = self.cap_stable_high = 0.0 self.saved_changes = tuple((k / 1000, max(0, self.saved_changes_internal[k])) for k in sorted(self.saved_changes_internal)) self.saved_changes_internal = None self.runtime = time.time() - start ================================================ FILE: eos/config.py ================================================ import sys from os.path import realpath, join, dirname, abspath from logbook import Logger import os istravis = os.environ.get('TRAVIS') == 'true' pyfalog = Logger(__name__) debug = False gamedataCache = True saveddataCache = True gamedata_version = "" gamedata_date = "" gamedata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(__file__)), "..", "eve.db")) lang = "" # Maps supported langauges to their suffix in the database translation_mapping = { "en": "", "fr": "_fr", # "it": "_it", "ja": "_ja", "ko": "_ko", "ru": "_ru", "zh": "_zh", } def set_lang(i18n_lang): global lang lang = translation_mapping.get(i18n_lang, translation_mapping.get("en")) pyfalog.debug("Gamedata connection string: {0}", gamedata_connectionstring) if istravis is True or hasattr(sys, '_called_from_test'): # Running in Travis. Run saveddata database in memory. saveddata_connectionstring = 'sqlite:///:memory:' else: saveddata_connectionstring = 'sqlite:///' + realpath(join(dirname(abspath(__file__)), "..", "saveddata", "saveddata.db")) pyfalog.debug("Saveddata connection string: {0}", saveddata_connectionstring) settings = { "useStaticAdaptiveArmorHardener": False, "strictSkillLevels": True, "globalDefaultSpoolupPercentage": 1.0 } # Autodetect path, only change if the autodetection bugs out. path = dirname(__file__) ================================================ FILE: eos/const.py ================================================ # ============================================================================= # Copyright (C) 2019 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from enum import IntEnum,unique @unique class FittingSlot(IntEnum): """ Contains slots for ship fittings """ # These are self-explanatory LOW = 1 MED = 2 HIGH = 3 RIG = 4 SUBSYSTEM = 5 # not a real slot, need for pyfa display rack separation MODE = 6 # system effects. They are projected "modules" and pyfa assumes all modules # have a slot. In this case, make one up. SYSTEM = 7 # used for citadel services SERVICE = 8 # fighter 'slots'. Just easier to put them here... F_LIGHT = 10 F_SUPPORT = 11 F_HEAVY = 12 # fighter 'slots' (for structures) FS_LIGHT = 13 FS_SUPPORT = 14 FS_HEAVY = 15 @unique class ImplantLocation(IntEnum): """ Contains location of the implant """ FIT = 0 CHARACTER = 1 @unique class CalcType(IntEnum): """ Contains location of the calculation """ LOCAL = 0 PROJECTED = 1 COMMAND = 2 @unique class FittingModuleState(IntEnum): """ Contains the state of a fitting module """ OFFLINE = -1 ONLINE = 0 ACTIVE = 1 OVERHEATED = 2 @unique class FittingHardpoint(IntEnum): """ Contains the types of a fitting hardpoint """ NONE = 0 MISSILE = 1 TURRET = 2 @unique class SpoolType(IntEnum): # Spool and cycle scale are different in case if max spool amount cannot # be divided by spool step without remainder SPOOL_SCALE = 0 # [0..1] CYCLE_SCALE = 1 # [0..1] TIME = 2 # Expressed via time in seconds since spool up started CYCLES = 3 # Expressed in amount of cycles since spool up started @unique class FitSystemSecurity(IntEnum): HISEC = 0 LOWSEC = 1 NULLSEC = 2 WSPACE = 3 @unique class Operator(IntEnum): PREASSIGN = 0 PREINCREASE = 1 MULTIPLY = 2 POSTINCREASE = 3 FORCE = 4 ================================================ FILE: eos/db/__init__.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import re import threading from sqlalchemy import MetaData, create_engine, event from sqlalchemy.orm import sessionmaker, scoped_session from . import migration from eos import config from logbook import Logger pyfalog = Logger(__name__) pyfalog.info("Initializing database") pyfalog.info("Gamedata connection: {0}", config.gamedata_connectionstring) pyfalog.info("Saveddata connection: {0}", config.saveddata_connectionstring) class ReadOnlyException(Exception): pass def re_fn(expr, item): try: reg = re.compile(expr, re.IGNORECASE) except (SystemExit, KeyboardInterrupt): raise except: return False return reg.search(item) is not None pyfalog.debug('Initializing gamedata') gamedata_connectionstring = config.gamedata_connectionstring if callable(gamedata_connectionstring): gamedata_engine = create_engine("sqlite://", creator=gamedata_connectionstring, echo=config.debug) else: gamedata_engine = create_engine(gamedata_connectionstring, echo=config.debug) @event.listens_for(gamedata_engine, 'connect') def create_functions(dbapi_connection, connection_record): dbapi_connection.create_function('regexp', 2, re_fn) gamedata_meta = MetaData() gamedata_meta.bind = gamedata_engine GamedataSession = scoped_session(sessionmaker(bind=gamedata_engine, autoflush=False, expire_on_commit=False)) gamedata_session = GamedataSession() gamedata_sessions = {threading.get_ident(): gamedata_session} def get_gamedata_session(): thread_id = threading.get_ident() if thread_id not in gamedata_sessions: gamedata_sessions[thread_id] = GamedataSession() return gamedata_sessions[thread_id] pyfalog.debug('Getting gamedata version') # This should be moved elsewhere, maybe as an actual query. Current, without try-except, it breaks when making a new # game db because we haven't reached gamedata_meta.create_all() try: config.gamedata_version = gamedata_session.execute( "SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'" ).fetchone()[0] config.gamedata_date = gamedata_session.execute( "SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'dump_time'" ).fetchone()[0] except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warning("Missing gamedata version.") pyfalog.critical(e) config.gamedata_version = None config.gamedata_date = None pyfalog.debug('Initializing saveddata') saveddata_connectionstring = config.saveddata_connectionstring if saveddata_connectionstring is not None: if callable(saveddata_connectionstring): saveddata_engine = create_engine(creator=saveddata_connectionstring, echo=config.debug) else: saveddata_engine = create_engine(saveddata_connectionstring, echo=config.debug) saveddata_meta = MetaData() saveddata_meta.bind = saveddata_engine saveddata_session = sessionmaker(bind=saveddata_engine, autoflush=False, expire_on_commit=False)() else: saveddata_meta = None # Lock controlling any changes introduced to session sd_lock = threading.RLock() pyfalog.debug('Importing gamedata DB scheme') # Import all the definitions for all our database stuff # noinspection PyPep8 from eos.db.gamedata import alphaClones, attribute, category, effect, group, item, marketGroup, metaData, metaGroup, queries, traits, unit, dynamicAttributes, implantSet pyfalog.debug('Importing saveddata DB scheme') # noinspection PyPep8 from eos.db.saveddata import booster, cargo, character, damagePattern, databaseRepair, drone, fighter, fit, implant, implantSet, \ miscData, mutatorMod, mutatorDrone, module, override, price, queries, skill, targetProfile, user pyfalog.debug('Importing gamedata queries') # noinspection PyPep8 from eos.db.gamedata.queries import * pyfalog.debug('Importing saveddata queries') # noinspection PyPep8 from eos.db.saveddata.queries import * # If using in memory saveddata, you'll want to reflect it so the data structure is good. if config.saveddata_connectionstring == "sqlite:///:memory:": saveddata_meta.create_all() pyfalog.info("Running database out of memory.") def rollback(): with sd_lock: pyfalog.warning("Session rollback triggered.") saveddata_session.rollback() ================================================ FILE: eos/db/gamedata/__init__.py ================================================ __all__ = ["attribute", "category", "effect", "group", "metaData", "dynamicAttributes", "item", "marketGroup", "metaGroup", "unit", "alphaClones", "implantSet"] ================================================ FILE: eos/db/gamedata/alphaClones.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, String, Integer, Table, ForeignKey from sqlalchemy.orm import relation, mapper, synonym from eos.db import gamedata_meta from eos.gamedata import AlphaClone, AlphaCloneSkill alphaclones_table = Table( "alphaClones", gamedata_meta, Column("alphaCloneID", Integer, primary_key=True), Column("alphaCloneName", String), ) alphacloneskskills_table = Table( "alphaCloneSkills", gamedata_meta, Column("alphaCloneID", Integer, ForeignKey("alphaClones.alphaCloneID"), primary_key=True), Column("typeID", Integer, primary_key=True), Column("level", Integer), ) mapper(AlphaClone, alphaclones_table, properties={ "ID" : synonym("alphaCloneID"), "skills": relation( AlphaCloneSkill, cascade="all,delete-orphan", backref="clone") }) mapper(AlphaCloneSkill, alphacloneskskills_table) ================================================ FILE: eos/db/gamedata/attribute.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, Unicode, ForeignKey, String, Boolean from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import relation, mapper, synonym, deferred from eos.db import gamedata_meta from eos.gamedata import Attribute, AttributeInfo, Unit import eos.config typeattributes_table = Table("dgmtypeattribs", gamedata_meta, Column("value", Float), Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True, index=True), Column("attributeID", ForeignKey("dgmattribs.attributeID"), primary_key=True)) attributes_table = Table("dgmattribs", gamedata_meta, Column("attributeID", Integer, primary_key=True), Column("attributeName", String), Column("defaultValue", Float), Column("maxAttributeID", Integer, ForeignKey("dgmattribs.attributeID")), Column("description", Unicode), Column("published", Boolean), *[Column("displayName{}".format(lang), String) for lang in eos.config.translation_mapping.values()], Column("highIsGood", Boolean), Column("iconID", Integer), Column("attributeCategory", Integer), # Column("tooltipDescription", Integer), # deprecated...? Column("unitID", Integer, ForeignKey("dgmunits.unitID"))) mapper(Attribute, typeattributes_table, properties={"info": relation(AttributeInfo, lazy=False)}) mapper(AttributeInfo, attributes_table, properties={ "unit" : relation(Unit), "ID" : synonym("attributeID"), "name" : synonym("attributeName"), "description": deferred(attributes_table.c.description), }) Attribute.ID = association_proxy("info", "attributeID") Attribute.name = association_proxy("info", "attributeName") Attribute.description = association_proxy("info", "description") Attribute.published = association_proxy("info", "published") Attribute.displayName = association_proxy("info", "displayName{}".format(eos.config.lang)) Attribute.highIsGood = association_proxy("info", "highIsGood") Attribute.iconID = association_proxy("info", "iconID") Attribute.icon = association_proxy("info", "icon") Attribute.unit = association_proxy("info", "unit") ================================================ FILE: eos/db/gamedata/category.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Boolean, Column, Integer, String, Table from sqlalchemy.orm import deferred, mapper, synonym from eos.db import gamedata_meta from eos.gamedata import Category import eos.config categories_table = Table("invcategories", gamedata_meta, Column("categoryID", Integer, primary_key=True), *[Column("name{}".format(lang), String) for lang in eos.config.translation_mapping.values()], # Column("description", String), # deprecated Column("published", Boolean), Column("iconID", Integer)) mapper(Category, categories_table, properties={ "ID" : synonym("categoryID"), "displayName": synonym("name{}".format(eos.config.lang)), # "description": deferred(categories_table.c.description) # deprecated }) ================================================ FILE: eos/db/gamedata/dynamicAttributes.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, Float, Integer, Table, ForeignKey from sqlalchemy.orm import mapper, relation, synonym from sqlalchemy.ext.associationproxy import association_proxy from eos.db import gamedata_meta from eos.gamedata import DynamicItem, DynamicItemAttribute, DynamicItemItem, Item from eos.gamedata import AttributeInfo dynamic_table = Table("mutaplasmids", gamedata_meta, Column("typeID", ForeignKey("invtypes.typeID"), primary_key=True, index=True), Column("resultingTypeID", ForeignKey("invtypes.typeID"), primary_key=True)) dynamicAttributes_table = Table("mutaplasmidAttributes", gamedata_meta, Column("typeID", Integer, ForeignKey("mutaplasmids.typeID"), primary_key=True), Column("attributeID", ForeignKey("dgmattribs.attributeID"), primary_key=True), Column("min", Float), Column("max", Float)) dynamicApplicable_table = Table("mutaplasmidItems", gamedata_meta, Column("typeID", ForeignKey("mutaplasmids.typeID"), primary_key=True), Column("applicableTypeID", ForeignKey("invtypes.typeID"), primary_key=True),) mapper(DynamicItem, dynamic_table, properties={ "attributes": relation(DynamicItemAttribute), "item": relation(Item, foreign_keys=[dynamic_table.c.typeID]), "resultingItem": relation(Item, foreign_keys=[dynamic_table.c.resultingTypeID]), "ID": synonym("typeID"), }) mapper(DynamicItemAttribute, dynamicAttributes_table, properties={"info": relation(AttributeInfo, lazy=False)}) mapper(DynamicItemItem, dynamicApplicable_table, properties={ "mutaplasmid": relation(DynamicItem, viewonly=True), }) DynamicItemAttribute.ID = association_proxy("info", "attributeID") DynamicItemAttribute.name = association_proxy("info", "attributeName") DynamicItemAttribute.description = association_proxy("info", "description") DynamicItemAttribute.published = association_proxy("info", "published") DynamicItemAttribute.displayName = association_proxy("info", "displayName") DynamicItemAttribute.highIsGood = association_proxy("info", "highIsGood") DynamicItemAttribute.iconID = association_proxy("info", "iconID") DynamicItemAttribute.icon = association_proxy("info", "icon") DynamicItemAttribute.unit = association_proxy("info", "unit") ================================================ FILE: eos/db/gamedata/effect.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, Table, ForeignKey from sqlalchemy.orm import mapper, synonym, deferred from eos.db import gamedata_meta from eos.gamedata import Effect, ItemEffect typeeffects_table = Table("dgmtypeeffects", gamedata_meta, Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True, index=True), Column("effectID", Integer, ForeignKey("dgmeffects.effectID"), primary_key=True)) effects_table = Table("dgmeffects", gamedata_meta, Column("effectID", Integer, primary_key=True), Column("effectName", String), Column("description", String), Column("published", Boolean), Column("isAssistance", Boolean), Column("isOffensive", Boolean), Column("resistanceID", Integer)) mapper(Effect, effects_table, properties={ "ID" : synonym("effectID"), "name" : synonym("effectName"), "description": deferred(effects_table.c.description) }) mapper(ItemEffect, typeeffects_table) ================================================ FILE: eos/db/gamedata/group.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table from sqlalchemy.orm import relation, mapper, synonym, deferred, backref from eos.db import gamedata_meta from eos.gamedata import Category, Group import eos.config groups_table = Table("invgroups", gamedata_meta, Column("groupID", Integer, primary_key=True), *[Column("name{}".format(lang), String) for lang in eos.config.translation_mapping.values()], # Column("description", String), # deprecated Column("published", Boolean), Column("categoryID", Integer, ForeignKey("invcategories.categoryID")), Column("iconID", Integer)) mapper(Group, groups_table, properties={ "category" : relation(Category, backref=backref("groups", cascade="all,delete")), "ID" : synonym("groupID"), "displayName" : synonym("name{}".format(eos.config.lang)), # "description": deferred(groups_table.c.description) # deprecated }) ================================================ FILE: eos/db/gamedata/implantSet.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, String, Integer, Table from sqlalchemy.orm import mapper, synonym from eos.db import gamedata_meta from eos.gamedata import ImplantSet implant_set_table = Table("implantsets", gamedata_meta, Column("setID", Integer, primary_key=True), Column("setName", String), Column("gradeName", String), Column("implants", String)) mapper(ImplantSet, implant_set_table, properties={"ID": synonym("setID")}) ================================================ FILE: eos/db/gamedata/item.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Table from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import backref, deferred, mapper, relation, synonym from sqlalchemy.orm.collections import attribute_mapped_collection from eos.db import gamedata_meta from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table from eos.db.gamedata.effect import typeeffects_table from eos.gamedata import Attribute, DynamicItem, Effect, Group, Item, Traits, MetaGroup import eos.config items_table = Table("invtypes", gamedata_meta, Column("typeID", Integer, primary_key=True), *[Column("typeName{}".format(lang), String, index=True) for lang in eos.config.translation_mapping.values()], *[Column("typeDescription{}".format(lang), String) for lang in eos.config.translation_mapping.values()], Column("raceID", Integer), Column("factionID", Integer), Column("published", Boolean), Column("marketGroupID", Integer, ForeignKey("invmarketgroups.marketGroupID")), Column("iconID", Integer), Column("graphicID", Integer), Column("groupID", Integer, ForeignKey("invgroups.groupID"), index=True), Column("metaLevel", Integer), Column("metaGroupID", Integer, ForeignKey("invmetagroups.metaGroupID"), index=True), Column("variationParentTypeID", Integer, ForeignKey("invtypes.typeID"), index=True), Column("replacements", String), Column("reqskills", String), Column("requiredfor", String), ) from .traits import traits_table # noqa props = { "group": relation(Group, backref=backref("items", cascade="all,delete")), "_Item__attributes": relation(Attribute, cascade='all, delete, delete-orphan', collection_class=attribute_mapped_collection('name')), "effects": relation(Effect, secondary=typeeffects_table, collection_class=attribute_mapped_collection('name')), "metaGroup": relation(MetaGroup, backref=backref("items", cascade="all,delete")), "varParent": relation(Item, backref=backref("varChildren", cascade="all,delete"), remote_side=items_table.c.typeID), "ID": synonym("typeID"), "name": synonym("typeName{}".format(eos.config.lang)), "description" : synonym("_description{}".format(eos.config.lang)), "traits": relation( Traits, primaryjoin=traits_table.c.typeID == items_table.c.typeID, uselist=False ), "mutaplasmids": relation( DynamicItem, primaryjoin=dynamicApplicable_table.c.applicableTypeID == items_table.c.typeID, secondaryjoin=dynamicApplicable_table.c.typeID == DynamicItem.typeID, secondary=dynamicApplicable_table, backref="applicableItems", viewonly=True ) } # Create deferred columns shadowing all the description fields. The literal `description` property will dynamically # be assigned as synonym to one of these props.update({'_description' + v: deferred(items_table.c['typeDescription' + v]) for (k, v) in eos.config.translation_mapping.items()}) mapper(Item, items_table, properties=props) Item.category = association_proxy("group", "category") ================================================ FILE: eos/db/gamedata/marketGroup.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table from sqlalchemy.orm import relation, mapper, synonym, deferred from eos.db import gamedata_meta from eos.gamedata import Item, MarketGroup import eos.config marketgroups_table = Table("invmarketgroups", gamedata_meta, Column("marketGroupID", Integer, primary_key=True), *[Column("marketGroupName{}".format(lang), String) for lang in eos.config.translation_mapping.values()], *[Column("marketGroupDescription{}".format(lang), String) for lang in eos.config.translation_mapping.values()], Column("hasTypes", Boolean), Column("parentGroupID", Integer, ForeignKey("invmarketgroups.marketGroupID", initially="DEFERRED", deferrable=True)), Column("iconID", Integer)) props = { "items": relation(Item, backref="marketGroup"), "parent": relation(MarketGroup, backref="children", remote_side=[marketgroups_table.c.marketGroupID]), "ID": synonym("marketGroupID"), "name": synonym("marketGroupName{}".format(eos.config.lang)), "description": synonym("_description{}".format(eos.config.lang)), } # Create deferred columns shadowing all the description fields. The literal `description` property will dynamically # be assigned as synonym to one of these # this is mostly here to allow the db_update to be language-agnostic # todo: determine if we ever use market group descriptions... can we just get with of these? props.update({'_description' + v: deferred(marketgroups_table.c['marketGroupDescription' + v]) for (k, v) in eos.config.translation_mapping.items()}) mapper( MarketGroup, marketgroups_table, properties=props ) ================================================ FILE: eos/db/gamedata/metaData.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, Table, String from sqlalchemy.orm import mapper from eos.db import gamedata_meta from eos.gamedata import MetaData metadata_table = Table("metadata", gamedata_meta, Column("field_name", String, primary_key=True), Column("field_value", String)) mapper(MetaData, metadata_table) ================================================ FILE: eos/db/gamedata/metaGroup.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, String from sqlalchemy.orm import mapper, synonym from eos.db import gamedata_meta from eos.gamedata import MetaGroup import eos.config metagroups_table = Table( "invmetagroups", gamedata_meta, Column("metaGroupID", Integer, primary_key=True), *[Column("metaGroupName{}".format(lang), String) for lang in eos.config.translation_mapping.values()], ) mapper( MetaGroup, metagroups_table, properties={ "ID" : synonym("metaGroupID"), "name": synonym("metaGroupName{}".format(eos.config.lang)) } ) ================================================ FILE: eos/db/gamedata/queries.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy.inspection import inspect from sqlalchemy.orm import aliased, exc, join from sqlalchemy.sql import and_, or_, select import eos.config from eos.db import get_gamedata_session from eos.db.gamedata.item import items_table from eos.db.gamedata.group import groups_table from eos.db.util import processEager, processWhere from eos.gamedata import AlphaClone, Attribute, AttributeInfo, Category, DynamicItem, Group, Item, MarketGroup, MetaData, MetaGroup, ImplantSet cache = {} configVal = getattr(eos.config, "gamedataCache", None) if configVal is True: def cachedQuery(amount, *keywords): def deco(function): def checkAndReturn(*args, **kwargs): useCache = kwargs.pop("useCache", True) cacheKey = [] cacheKey.extend(args) for keyword in keywords: cacheKey.append(kwargs.get(keyword)) cacheKey = tuple(cacheKey) handler = cache.get(cacheKey) if handler is None or not useCache: handler = cache[cacheKey] = function(*args, **kwargs) return handler return checkAndReturn return deco elif callable(configVal): cachedQuery = eos.config.gamedataCache else: def cachedQuery(amount, *keywords): def deco(function): def checkAndReturn(*args, **kwargs): return function(*args, **kwargs) return checkAndReturn return deco def sqlizeNormalString(line): # Escape backslashes first, as they will be as escape symbol in queries # Then escape percent and underscore signs # Finally, replace generic wildcards with sql-style wildcards line = line.replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_").replace("*", "%") return line itemNameMap = {} @cachedQuery(1, "lookfor") def getItem(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: item = get_gamedata_session().query(Item).get(lookfor) else: item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.ID == lookfor).first() elif isinstance(lookfor, str): if lookfor in itemNameMap: id = itemNameMap[lookfor] if eager is None: item = get_gamedata_session().query(Item).get(id) else: item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.ID == id).first() else: # Item names are unique, so we can use first() instead of one() item = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.typeName == lookfor).first() if item is not None: itemNameMap[lookfor] = item.ID else: raise TypeError("Need integer or string as argument") return item @cachedQuery(1, "itemIDs") def getItems(itemIDs, eager=None): if not isinstance(itemIDs, (tuple, list, set)) or not all(isinstance(t, int) for t in itemIDs): raise TypeError("Need iterable of integers as argument") if eager is None: items = get_gamedata_session().query(Item).filter(Item.ID.in_(itemIDs)).all() else: items = get_gamedata_session().query(Item).options(*processEager(eager)).filter(Item.ID.in_(itemIDs)).all() return items def getMutaplasmid(lookfor, eager=None): if isinstance(lookfor, int): item = get_gamedata_session().query(DynamicItem).filter(DynamicItem.ID == lookfor).first() else: raise TypeError("Need integer as argument") return item def getItemWithBaseItemAttribute(lookfor, baseItemID, eager=None): # A lot of this is described in more detail in #1597 item = get_gamedata_session().query(Item).get(lookfor) base = getItem(baseItemID) # we have to load all attributes for this object, otherwise we'll lose access to them when we expunge. # todo: figure out a way to eagerly load all these via the query... for x in [*inspect(Item).relationships.keys(), 'description']: getattr(item, x) # Copy over the attributes from the base, but ise the items attributes when there's an overlap # WARNING: the attribute object still has the old typeID. I don't believe we access this typeID anywhere in the code, # but should keep this in mind for now. item._Item__attributes = {**base.attributes, **item.attributes} # Expunge the item form the session. This is required to have different Abyssal / Base combinations loaded in memory. # Without expunging it, once one Abyssal Web is created, SQLAlchmey will use it for all others. We don't want this, # we want to generate a completely new object to work with get_gamedata_session().expunge(item) return item @cachedQuery(1, "lookfor") def getItems(lookfor, eager=None): """ Gets a list of items. Does a bit of cache hackery to get working properly -- cache is usually based on function calls with the parameters, needed to extract data directly. Works well enough. Not currently used, but it's here for possible future inclusion """ toGet = [] results = [] for id in lookfor: if (id, None) in cache: results.append(cache.get((id, None))) else: toGet.append(id) if len(toGet) > 0: # Get items that aren't currently cached, and store them in the cache items = get_gamedata_session().query(Item).filter(Item.ID.in_(toGet)).all() for item in items: cache[(item.ID, None)] = item results += items # sort the results based on the original indexing results.sort(key=lambda x: lookfor.index(x.ID)) return results @cachedQuery(1, "lookfor") def getAlphaClone(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: item = get_gamedata_session().query(AlphaClone).get(lookfor) else: item = get_gamedata_session().query(AlphaClone).options(*processEager(eager)).filter(AlphaClone.ID == lookfor).first() else: raise TypeError("Need integer as argument") return item def getAlphaCloneList(eager=None): eager = processEager(eager) clones = get_gamedata_session().query(AlphaClone).options(*eager).all() return clones groupNameMap = {} @cachedQuery(1, "lookfor") def getGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: group = get_gamedata_session().query(Group).get(lookfor) else: group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.ID == lookfor).first() elif isinstance(lookfor, str): if lookfor in groupNameMap: id = groupNameMap[lookfor] if eager is None: group = get_gamedata_session().query(Group).get(id) else: group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.ID == id).first() else: # Group names are unique, so we can use first() instead of one() group = get_gamedata_session().query(Group).options(*processEager(eager)).filter(Group.name == lookfor).first() if group is not None: groupNameMap[lookfor] = group.ID else: raise TypeError("Need integer or string as argument") return group categoryNameMap = {} @cachedQuery(1, "lookfor") def getCategory(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: category = get_gamedata_session().query(Category).get(lookfor) else: category = get_gamedata_session().query(Category).options(*processEager(eager)).filter( Category.ID == lookfor).first() elif isinstance(lookfor, str): if lookfor in categoryNameMap: id = categoryNameMap[lookfor] if eager is None: category = get_gamedata_session().query(Category).get(id) else: category = get_gamedata_session().query(Category).options(*processEager(eager)).filter( Category.ID == id).first() else: # Category names are unique, so we can use first() instead of one() category = get_gamedata_session().query(Category).options(*processEager(eager)).filter( Category.name == lookfor).first() if category is not None: categoryNameMap[lookfor] = category.ID else: raise TypeError("Need integer or string as argument") return category metaGroupNameMap = {} @cachedQuery(1, "lookfor") def getMetaGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: metaGroup = get_gamedata_session().query(MetaGroup).get(lookfor) else: metaGroup = get_gamedata_session().query(MetaGroup).options(*processEager(eager)).filter( MetaGroup.ID == lookfor).first() elif isinstance(lookfor, str): if lookfor in metaGroupNameMap: id = metaGroupNameMap[lookfor] if eager is None: metaGroup = get_gamedata_session().query(MetaGroup).get(id) else: metaGroup = get_gamedata_session().query(MetaGroup).options(*processEager(eager)).filter( MetaGroup.ID == id).first() else: # MetaGroup names are unique, so we can use first() instead of one() metaGroup = get_gamedata_session().query(MetaGroup).options(*processEager(eager)).filter( MetaGroup.metaGroupName == lookfor).first() if metaGroup is not None: metaGroupNameMap[lookfor] = metaGroup.ID else: raise TypeError("Need integer or string as argument") return metaGroup def getMetaGroups(): return get_gamedata_session().query(MetaGroup).all() @cachedQuery(1, "lookfor") def getMarketGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: marketGroup = get_gamedata_session().query(MarketGroup).get(lookfor) else: marketGroup = get_gamedata_session().query(MarketGroup).options(*processEager(eager)).filter( MarketGroup.ID == lookfor).first() else: raise TypeError("Need integer as argument") return marketGroup def getMarketTreeNodeIds(rootNodeIds): allIds = set() addedIds = set(rootNodeIds) while addedIds: allIds.update(addedIds) addedIds = {mg.ID for mg in get_gamedata_session().query(MarketGroup).filter(MarketGroup.parentGroupID.in_(addedIds))} return allIds @cachedQuery(2, "where", "filter") def getItemsByCategory(filter, where=None, eager=None): if isinstance(filter, int): filter = Category.ID == filter elif isinstance(filter, str): filter = Category.name == filter else: raise TypeError("Need integer or string as argument") filter = processWhere(filter, where) return get_gamedata_session().query(Item).options(*processEager(eager)).join(Item.group, Group.category).filter( filter).all() @cachedQuery(3, "where", "nameLike", "join") def searchItems(nameLike, where=None, join=None, eager=None): if not isinstance(nameLike, str): raise TypeError("Need string as argument") if join is None: join = tuple() if not hasattr(join, "__iter__"): join = (join,) items = get_gamedata_session().query(Item).options(*processEager(eager)).join(*join) for token in nameLike.split(' '): token_safe = "%{0}%".format(sqlizeNormalString(token)) if where is not None: items = items.filter(and_(Item.name.like(token_safe, escape="\\"), where)) else: items = items.filter(Item.name.like(token_safe, escape="\\")) items = items.limit(100).all() return items @cachedQuery(3, "tokens", "where", "join") def searchItemsRegex(tokens, where=None, join=None, eager=None): if not isinstance(tokens, (tuple, list)) or not all(isinstance(t, str) for t in tokens): raise TypeError("Need tuple or list of strings as argument") if join is None: join = tuple() if not hasattr(join, "__iter__"): join = (join,) items = get_gamedata_session().query(Item).options(*processEager(eager)).join(*join) for token in tokens: if where is not None: items = items.filter(and_(Item.name.op('regexp')(token), where)) else: items = items.filter(Item.name.op('regexp')(token)) items = items.limit(100).all() return items @cachedQuery(3, "where", "nameLike", "join") def searchSkills(nameLike, where=None, eager=None): if not isinstance(nameLike, str): raise TypeError("Need string as argument") items = get_gamedata_session().query(Item).options(*processEager(eager)).join(Item.group, Group.category) for token in nameLike.split(' '): token_safe = "%{0}%".format(sqlizeNormalString(token)) if where is not None: items = items.filter(and_(Item.name.like(token_safe, escape="\\"), Category.ID == 16, where)) else: items = items.filter(and_(Item.name.like(token_safe, escape="\\"), Category.ID == 16)) items = items.limit(100).all() return items @cachedQuery(2, "where", "itemids") def getVariations(itemids, groupIDs=None, where=None, eager=None): for itemid in itemids: if not isinstance(itemid, int): raise TypeError("All passed item IDs must be integers") # Get out if list of provided IDs is empty if len(itemids) == 0: return [] itemfilter = or_(*(items_table.c.variationParentTypeID == itemid for itemid in itemids)) filter = processWhere(itemfilter, where) vars = get_gamedata_session().query(Item).options(*processEager(eager)).filter(filter).all() if vars: return vars elif groupIDs: itemfilter = or_(*(groups_table.c.groupID == groupID for groupID in groupIDs)) filter = processWhere(itemfilter, where) joinon = items_table.c.groupID == groups_table.c.groupID vars = get_gamedata_session().query(Item).options(*processEager(eager)).join((groups_table, joinon)).filter( filter).all() return vars @cachedQuery(1, "attr") def getAttributeInfo(attr, eager=None): if isinstance(attr, str): filter = AttributeInfo.name == attr elif isinstance(attr, int): filter = AttributeInfo.ID == attr else: raise TypeError("Need integer or string as argument") try: result = get_gamedata_session().query(AttributeInfo).options(*processEager(eager)).filter(filter).one() except exc.NoResultFound: result = None return result @cachedQuery(1, "field") def getMetaData(field): if isinstance(field, str): data = get_gamedata_session().query(MetaData).get(field) else: raise TypeError("Need string as argument") return data @cachedQuery(2, "itemIDs", "attributeID") def directAttributeRequest(itemIDs, attrIDs): for itemID in itemIDs: if not isinstance(itemID, int): raise TypeError("All attrIDs must be integer") for itemID in itemIDs: if not isinstance(itemID, int): raise TypeError("All itemIDs must be integer") q = select((Item.typeID, Attribute.attributeID, Attribute.value), and_(Attribute.attributeID.in_(attrIDs), Item.typeID.in_(itemIDs)), from_obj=[join(Attribute, Item)]) result = get_gamedata_session().execute(q).fetchall() return result def getAbyssalTypes(): return set([r.resultingTypeID for r in get_gamedata_session().query(DynamicItem.resultingTypeID).distinct()]) @cachedQuery(1, "itemID") def getDynamicItem(itemID, eager=None): try: if isinstance(itemID, int): if eager is None: result = get_gamedata_session().query(DynamicItem).filter(DynamicItem.ID == itemID).one() else: result = get_gamedata_session().query(DynamicItem).options(*processEager(eager)).filter(DynamicItem.ID == itemID).one() else: raise TypeError("Need integer as argument") except exc.NoResultFound: result = None return result @cachedQuery(1, "lookfor") def getAllImplantSets(): implantSets = get_gamedata_session().query(ImplantSet).all() return implantSets ================================================ FILE: eos/db/gamedata/traits.py ================================================ from sqlalchemy import Column, Table, Integer, String, ForeignKey from sqlalchemy.orm import mapper, synonym from eos.db import gamedata_meta from eos.gamedata import Traits import eos.config traits_table = Table( "invtraits", gamedata_meta, Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True), *[Column("traitText{}".format(lang), String) for lang in eos.config.translation_mapping.values()], ) mapper( Traits, traits_table, properties={ "display": synonym("traitText{}".format(eos.config.lang)), } ) ================================================ FILE: eos/db/gamedata/unit.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, Table, Integer, String from sqlalchemy.orm import mapper, synonym from eos.db import gamedata_meta from eos.gamedata import Unit import eos.config groups_table = Table("dgmunits", gamedata_meta, Column("unitID", Integer, primary_key=True), Column("unitName", String), *[Column("displayName{}".format(lang), String) for lang in eos.config.translation_mapping.values()], ) mapper(Unit, groups_table, properties={ "ID" : synonym("unitID"), "name": synonym("unitName") }) ================================================ FILE: eos/db/migration.py ================================================ from logbook import Logger import shutil import time import config from . import migrations pyfalog = Logger(__name__) def getVersion(db): cursor = db.execute('PRAGMA user_version') return cursor.fetchone()[0] def getAppVersion(): return migrations.appVersion def update(saveddata_engine): dbVersion = getVersion(saveddata_engine) appVersion = getAppVersion() if dbVersion == appVersion: return if dbVersion < appVersion: # Automatically backup database toFile = "%s/saveddata_migration_%d-%d_%s.db" % ( config.savePath, dbVersion, appVersion, time.strftime("%Y%m%d_%H%M%S")) shutil.copyfile(config.saveDB, toFile) for version in range(dbVersion, appVersion): func = migrations.updates[version + 1] if func: pyfalog.info("Applying database update: {0}", version + 1) func(saveddata_engine) # when all is said and done, set version to current saveddata_engine.execute("PRAGMA user_version = {}".format(appVersion)) ================================================ FILE: eos/db/migrations/__init__.py ================================================ """ The migration module includes migration logic to update database scheme and/or data for the user database. To create a migration, simply create a file upgrade.py and define an upgrade() function with the logic. Please note that there must be as many upgrade files as there are database versions (version 5 would include upgrade files 1-5) """ import re from eos.utils.pyinst_support import iterNamespace updates = {} appVersion = 0 prefix = __name__ + "." for modName in iterNamespace(__name__, __path__): # loop through python files, extracting update number and function, and # adding it to a list modname_tail = modName.rsplit('.', 1)[-1] m = re.match(r"^upgrade(?P\d+)$", modname_tail) if not m: continue index = int(m.group("index")) appVersion = max(appVersion, index) module = __import__(modName, fromlist=True) upgrade = getattr(module, "upgrade", False) if upgrade: updates[index] = upgrade ================================================ FILE: eos/db/migrations/upgrade1.py ================================================ """ Migration 1 - Alters fits table to introduce target resist attribute - Converts modules based on Oceanus Module Tiericide Some modules have been deleted, which causes pyfa to crash when fits are loaded as they no longer exist in the database. We therefore replace these modules with their new replacements Based on https://www.eveonline.com/news/view/patch-notes-for-oceanus and output of itemDiff.py """ import sqlalchemy CONVERSIONS = { 6135 : [ # Scoped Cargo Scanner 6133, # Interior Type-E Cargo Identifier ], 6527 : [ # Compact Ship Scanner 6525, # Ta3 Perfunctory Vessel Probe 6529, # Speculative Ship Identifier I 6531, # Practical Type-E Ship Probe ], 6569 : [ # Scoped Survey Scanner 6567, # ML-3 Amphilotite Mining Probe 6571, # Rock-Scanning Sensor Array I 6573, # 'Dactyl' Type-E Asteroid Analyzer ], 509 : [ # 'Basic' Capacitor Flux Coil 8163, # Partial Power Plant Manager: Capacitor Flux 8165, # Alpha Reactor Control: Capacitor Flux 8167, # Type-E Power Core Modification: Capacitor Flux 8169, # Marked Generator Refitting: Capacitor Flux ], 8135 : [ # Restrained Capacitor Flux Coil 8131, # Local Power Plant Manager: Capacitor Flux I ], 8133 : [ # Compact Capacitor Flux Coil 8137, # Mark I Generator Refitting: Capacitor Flux ], 3469 : [ # Basic Co-Processor 8744, # Nanoelectrical Co-Processor 8743, # Nanomechanical CPU Enhancer 8746, # Quantum Co-Processor 8745, # Photonic CPU Enhancer 15425, # Naiyon's Modified Co-Processor (never existed but convert # anyway as some fits may include it) ], 8748 : [ # Upgraded Co-Processor 8747, # Nanomechanical CPU Enhancer I 8750, # Quantum Co-Processor I 8749, # Photonic CPU Enhancer I ], 1351 : [ # Basic Reactor Control Unit 8251, # Partial Power Plant Manager: Reaction Control 8253, # Alpha Reactor Control: Reaction Control 8257, # Marked Generator Refitting: Reaction Control ], 8263 : [ # Compact Reactor Control Unit 8259, # Local Power Plant Manager: Reaction Control I 8265, # Mark I Generator Refitting: Reaction Control 8261, # Beta Reactor Control: Reaction Control I ], 16537: [ # Compact Micro Auxiliary Power Core 16539, # Micro B88 Core Augmentation 16541, # Micro K-Exhaust Core Augmentation ], 31936: [ # Navy Micro Auxiliary Power Core 16543, # Micro 'Vigor' Core Augmentation ], 8089 : [ # Compact Light Missile Launcher 8093, # Prototype 'Arbalest' Light Missile Launcher ], 8091 : [ # Ample Light Missile Launcher 7993, # Experimental TE-2100 Light Missile Launcher ], # Surface Cargo Scanner I was removed from game, however no mention of # replacement module in patch notes. Morphing it to meta 0 module to be safe 442 : [ # Cargo Scanner I 6129, # Surface Cargo Scanner I ] } def upgrade(saveddata_engine): # Update fits schema to include target resists attribute try: saveddata_engine.execute("SELECT targetResistsID FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN targetResistsID INTEGER;") # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade10.py ================================================ """ Migration 10 - Adds active attribute to projected fits """ import sqlalchemy def upgrade(saveddata_engine): # Update projectedFits schema to include active attribute try: saveddata_engine.execute("SELECT active FROM projectedFits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE projectedFits ADD COLUMN active BOOLEAN") saveddata_engine.execute("UPDATE projectedFits SET active = 1") saveddata_engine.execute("UPDATE projectedFits SET amount = 1") ================================================ FILE: eos/db/migrations/upgrade11.py ================================================ """ Migration 11 - Converts modules based on December Release 2015 Tiericide Some modules have been unpublished (and unpublished module attributes are removed from database), which causes pyfa to crash. We therefore replace these modules with their new replacements """ CONVERSIONS = { 16467: ( # Medium Gremlin Compact Energy Neutralizer 16471, # Medium Unstable Power Fluctuator I ), 22947: ( # 'Beatnik' Small Remote Armor Repairer 23414, # 'Brotherhood' Small Remote Armor Repairer ), 8295 : ( # Type-D Restrained Shield Flux Coil 8293, # Beta Reactor Control: Shield Flux I ), 16499: ( # Heavy Knave Scoped Energy Nosferatu 16501, # E500 Prototype Energy Vampire ), 16477: ( # Heavy Infectious Scoped Energy Neutralizer 16473, # Heavy Rudimentary Energy Destabilizer I ), 16475: ( # Heavy Gremlin Compact Energy Neutralizer 16479, # Heavy Unstable Power Fluctuator I ), 16447: ( # Medium Solace Scoped Remote Armor Repairer 16445, # Medium 'Arup' Remote Armor Repairer ), 508 : ( # 'Basic' Shield Flux Coil 8325, # Alpha Reactor Shield Flux 8329, # Marked Generator Refitting: Shield Flux 8323, # Partial Power Plant Manager: Shield Flux 8327, # Type-E Power Core Modification: Shield Flux ), 1419 : ( # 'Basic' Shield Power Relay 8341, # Alpha Reactor Shield Power Relay 8345, # Marked Generator Refitting: Shield Power Relay 8339, # Partial Power Plant Manager: Shield Power Relay 8343, # Type-E Power Core Modification: Shield Power Relay ), 16439: ( # Small Solace Scoped Remote Armor Repairer 16437, # Small 'Arup' Remote Armor Repairer ), 16505: ( # Medium Ghoul Compact Energy Nosferatu 16511, # Medium Diminishing Power System Drain I ), 8297 : ( # Mark I Compact Shield Flux Coil 8291, # Local Power Plant Manager: Reaction Shield Flux I ), 16455: ( # Large Solace Scoped Remote Armor Repairer 16453, # Large 'Arup' Remote Armor Repairer ), 6485 : ( # M51 Benefactor Compact Shield Recharger 6491, # Passive Barrier Compensator I 6489, # 'Benefactor' Ward Reconstructor 6487, # Supplemental Screen Generator I ), 5137 : ( # Small Knave Scoped Energy Nosferatu 5135, # E5 Prototype Energy Vampire ), 8579 : ( # Medium Murky Compact Remote Shield Booster 8581, # Medium 'Atonement' Remote Shield Booster ), 8531 : ( # Small Murky Compact Remote Shield Booster 8533, # Small 'Atonement' Remote Shield Booster ), 16497: ( # Heavy Ghoul Compact Energy Nosferatu 16503, # Heavy Diminishing Power System Drain I ), 4477 : ( # Small Gremlin Compact Energy Neutralizer 4475, # Small Unstable Power Fluctuator I ), 8337 : ( # Mark I Compact Shield Power Relay 8331, # Local Power Plant Manager: Reaction Shield Power Relay I ), 23416: ( # 'Peace' Large Remote Armor Repairer 22951, # 'Pacifier' Large Remote Armor Repairer ), 5141 : ( # Small Ghoul Compact Energy Nosferatu 5139, # Small Diminishing Power System Drain I ), 4471 : ( # Small Infectious Scoped Energy Neutralizer 4473, # Small Rudimentary Energy Destabilizer I ), 16469: ( # Medium Infectious Scoped Energy Neutralizer 16465, # Medium Rudimentary Energy Destabilizer I ), 8335 : ( # Type-D Restrained Shield Power Relay 8333, # Beta Reactor Control: Shield Power Relay I ), 405 : ( # 'Micro' Remote Shield Booster 8631, # Micro Asymmetric Remote Shield Booster 8627, # Micro Murky Remote Shield Booster 8629, # Micro 'Atonement' Remote Shield Booster 8633, # Micro S95a Remote Shield Booster ), 8635 : ( # Large Murky Compact Remote Shield Booster 8637, # Large 'Atonement' Remote Shield Booster ), 16507: ( # Medium Knave Scoped Energy Nosferatu 16509, # E50 Prototype Energy Vampire ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade12.py ================================================ """ Migration 12 - Converts modules based on March 2016 Module Tiericide Some modules have been unpublished (and unpublished module attributes are removed from database), which causes pyfa to crash. We therefore replace these modules with their new replacements """ CONVERSIONS = { 16457: ( # Crosslink Compact Ballistic Control System 16459, # Muon Coil Bolt Array I 16461, # Multiphasic Bolt Array I 16463, # 'Pandemonium' Ballistic Enhancement ), 5281 : ( # Coadjunct Scoped Remote Sensor Booster 7218, # Piercing ECCM Emitter I ), 5365 : ( # Cetus Scoped Burst Jammer 5359, # 1Z-3 Subversive ECM Eruption ), 1973 : ( # Sensor Booster I 1947, # ECCM - Radar I 2002, # ECCM - Ladar I 2003, # ECCM - Magnetometric I 2004, # ECCM - Gravimetric I 2005, # ECCM - Omni I ), 1951 : ( # 'Basic' Tracking Enhancer 6322, # Beta-Nought Tracking Mode 6323, # Azimuth Descalloping Tracking Enhancer 6324, # F-AQ Delay-Line Scan Tracking Subroutines 6321, # Beam Parallax Tracking Program ), 521 : ( # 'Basic' Damage Control 5829, # GLFF Containment Field 5831, # Interior Force Field Array 5835, # F84 Local Damage System 5833, # Systematic Damage Control ), 22925: ( # 'Bootleg' Remote Sensor Booster 22939, # 'Boss' Remote Sensor Booster 22941, # 'Entrepreneur' Remote Sensor Booster ), 5443 : ( # Faint Epsilon Scoped Warp Scrambler 5441, # Fleeting Progressive Warp Scrambler I ), 1963 : ( # Remote Sensor Booster I 1959, # ECCM Projector I ), 6325 : ( # Fourier Compact Tracking Enhancer 6326, # Sigma-Nought Tracking Mode I 6327, # Auto-Gain Control Tracking Enhancer I 6328, # F-aQ Phase Code Tracking Subroutines ), 21486: ( # 'Kindred' Gyrostabilizer 21488, # Monophonic Stabilization Actuator I ), 19927: ( # Hypnos Scoped Magnetometric ECM 9518, # Initiated Ion Field ECM I ), 10188: ( # 'Basic' Magnetic Field Stabilizer 11111, # Insulated Stabilizer Array 11109, # Linear Flux Stabilizer 11115, # Gauss Field Balancer 11113, # Magnetic Vortex Stabilizer ), 22919: ( # 'Monopoly' Magnetic Field Stabilizer 22917, # 'Capitalist' Magnetic Field Stabilizer I ), 5839 : ( # IFFA Compact Damage Control 5841, # Emergency Damage Control I 5843, # F85 Peripheral Damage System I 5837, # Pseudoelectron Containment Field I ), 522 : ( # 'Micro' Cap Battery 4747, # Micro Ld-Acid Capacitor Battery I 4751, # Micro Ohm Capacitor Reserve I 4745, # Micro F-4a Ld-Sulfate Capacitor Charge Unit 4749, # Micro Peroxide Capacitor Power Cell 3480, # Micro Capacitor Battery II ), 518 : ( # 'Basic' Gyrostabilizer 5915, # Lateral Gyrostabilizer 5919, # F-M2 Weapon Inertial Suspensor 5913, # Hydraulic Stabilization Actuator 5917, # Stabilized Weapon Mounts ), 19931: ( # Compulsive Scoped Multispectral ECM 19933, # 'Hypnos' Multispectral ECM I ), 5403 : ( # Faint Scoped Warp Disruptor 5401, # Fleeting Warp Disruptor I ), 23902: ( # 'Trebuchet' Heat Sink I 23900, # 'Mangonel' Heat Sink I ), 1893 : ( # 'Basic' Heat Sink 5845, # Heat Exhaust System 5856, # C3S Convection Thermal Radiator 5855, # 'Boreas' Coolant System 5854, # Stamped Heat Sink ), 6160 : ( # F-90 Compact Sensor Booster 20214, # Extra Radar ECCM Scanning Array I 20220, # Extra Ladar ECCM Scanning Array I 20226, # Extra Gravimetric ECCM Scanning Array I 20232, # Extra Magnetometric ECCM Scanning Array I 7948, # Gravimetric Positional ECCM Sensor System I 7964, # Radar Positional ECCM Sensor System I 7965, # Omni Positional ECCM Sensor System I 7966, # Ladar Positional ECCM Sensor System I 7970, # Magnetometric Positional ECCM Sensor System I 20218, # Conjunctive Radar ECCM Scanning Array I 20224, # Conjunctive Ladar ECCM Scanning Array I 20230, # Conjunctive Gravimetric ECCM Scanning Array I 20236, # Conjunctive Magnetometric ECCM Scanning Array I 6157, # Supplemental Scanning CPU I ), 23418: ( # 'Radical' Damage Control 22893, # 'Gonzo' Damage Control I ), 19952: ( # Umbra Scoped Radar ECM 9520, # 'Penumbra' White Noise ECM ), 1952 : ( # Sensor Booster II 2258, # ECCM - Omni II 2259, # ECCM - Gravimetric II 2260, # ECCM - Ladar II 2261, # ECCM - Magnetometric II 2262, # ECCM - Radar II ), 5282 : ( # Linked Enduring Sensor Booster 7219, # Scattering ECCM Projector I ), 1986 : ( # Signal Amplifier I 2579, # Gravimetric Backup Array I 2583, # Ladar Backup Array I 2587, # Magnetometric Backup Array I 2591, # Multi Sensor Backup Array I 4013, # RADAR Backup Array I ), 4871 : ( # Large Compact Pb-Acid Cap Battery 4875, # Large Ohm Capacitor Reserve I 4869, # Large F-4a Ld-Sulfate Capacitor Charge Unit 4873, # Large Peroxide Capacitor Power Cell ), 1964 : ( # Remote Sensor Booster II 1960, # ECCM Projector II ), 5933 : ( # Counterbalanced Compact Gyrostabilizer 5931, # Cross-Lateral Gyrostabilizer I 5935, # F-M3 Munition Inertial Suspensor 5929, # Pneumatic Stabilization Actuator I ), 4025 : ( # X5 Enduring Stasis Webifier 4029, # 'Langour' Drive Disruptor I ), 4027 : ( # Fleeting Compact Stasis Webifier 4031, # Patterned Stasis Web I ), 22937: ( # 'Enterprise' Remote Tracking Computer 22935, # 'Tycoon' Remote Tracking Computer ), 22929: ( # 'Marketeer' Tracking Computer 22927, # 'Economist' Tracking Computer I ), 1987 : ( # Signal Amplifier II 2580, # Gravimetric Backup Array II 2584, # Ladar Backup Array II 2588, # Magnetometric Backup Array II 2592, # Multi Sensor Backup Array II 4014, # RADAR Backup Array II ), 19939: ( # Enfeebling Scoped Ladar ECM 9522, # Faint Phase Inversion ECM I ), 5340 : ( # P-S Compact Remote Tracking Computer 5341, # 'Prayer' Remote Tracking Computer ), 19814: ( # Phased Scoped Target Painter 19808, # Partial Weapon Navigation ), 1949 : ( # 'Basic' Signal Amplifier 1946, # Basic RADAR Backup Array 1982, # Basic Ladar Backup Array 1983, # Basic Gravimetric Backup Array 1984, # Basic Magnetometric Backup Array 1985, # Basic Multi Sensor Backup Array 6193, # Emergency Magnetometric Scanners 6194, # Emergency Multi-Frequency Scanners 6202, # Emergency RADAR Scanners 6216, # Emergency Ladar Scanners 6217, # Emergency Gravimetric Scanners 6225, # Sealed RADAR Backup Cluster 6238, # Sealed Magnetometric Backup Cluster 6239, # Sealed Multi-Frequency Backup Cluster 6241, # Sealed Ladar Backup Cluster 6242, # Sealed Gravimetric Backup Cluster 6257, # Surplus RADAR Reserve Array 6258, # F-42 Reiterative RADAR Backup Sensors 6283, # Surplus Magnetometric Reserve Array 6284, # F-42 Reiterative Magnetometric Backup Sensors 6285, # Surplus Multi-Frequency Reserve Array 6286, # F-42 Reiterative Multi-Frequency Backup Sensors 6289, # Surplus Ladar Reserve Array 6290, # F-42 Reiterative Ladar Backup Sensors 6291, # Surplus Gravimetric Reserve Array 6292, # F-42 Reiterative Gravimetric Backup Sensors 6309, # Amplitude Signal Enhancer 6310, # 'Acolyth' Signal Booster 6311, # Type-E Discriminative Signal Augmentation 6312, # F-90 Positional Signal Amplifier ), 21527: ( # 'Firewall' Signal Amplifier 21521, # Gravimetric Firewall 21523, # Ladar Firewall 21525, # Magnetometric Firewall 21527, # Multi Sensor Firewall 21529, # RADAR Firewall ), 23416: ( # 'Peace' Large Remote Armor Repairer None, # 'Pacifier' Large Remote Armor Repairer ), 6176 : ( # F-12 Enduring Tracking Computer 6174, # Monopulse Tracking Mechanism I ), 6159 : ( # Alumel-Wired Enduring Sensor Booster 7917, # Alumel Radar ECCM Sensor Array I 7918, # Alumel Ladar ECCM Sensor Array I 7922, # Alumel Gravimetric ECCM Sensor Array I 7926, # Alumel Omni ECCM Sensor Array I 7937, # Alumel Magnetometric ECCM Sensor Array I 7867, # Supplemental Ladar ECCM Scanning Array I 7869, # Supplemental Gravimetric ECCM Scanning Array I 7870, # Supplemental Omni ECCM Scanning Array I 7887, # Supplemental Radar ECCM Scanning Array I 7889, # Supplemental Magnetometric ECCM Scanning Array I 20216, # Incremental Radar ECCM Scanning Array I 20222, # Incremental Ladar ECCM Scanning Array I 20228, # Incremental Gravimetric ECCM Scanning Array I 20234, # Incremental Magnetometric ECCM Scanning Array I 7892, # Prototype ECCM Radar Sensor Cluster 7893, # Prototype ECCM Ladar Sensor Cluster 7895, # Prototype ECCM Gravimetric Sensor Cluster 7896, # Prototype ECCM Omni Sensor Cluster 7914, # Prototype ECCM Magnetometric Sensor Cluster 6158, # Prototype Sensor Booster ), 5849 : ( # Extruded Compact Heat Sink 5846, # Thermal Exhaust System I 5858, # C4S Coiled Circuit Thermal Radiator 5857, # 'Skadi' Coolant System I ), 22895: ( # 'Shady' Sensor Booster 22897, # 'Forger' ECCM - Magnetometric I ), 11105: ( # Vortex Compact Magnetic Field Stabilizer 11103, # Insulated Stabilizer Array I 11101, # Linear Flux Stabilizer I 11107, # Gauss Field Balancer I ), 22945: ( # 'Executive' Remote Sensor Dampener 22943, # 'Broker' Remote Sensor Dampener I ), 6173 : ( # Optical Compact Tracking Computer 6175, # 'Orion' Tracking CPU I ), 5279 : ( # F-23 Compact Remote Sensor Booster 7217, # Spot Pulsing ECCM I 7220, # Phased Muon ECCM Caster I 5280, # Connected Remote Sensor Booster ), 4787 : ( # Small Compact Pb-Acid Cap Battery 4791, # Small Ohm Capacitor Reserve I 4785, # Small F-4a Ld-Sulfate Capacitor Charge Unit 4789, # Small Peroxide Capacitor Power Cell ), 19946: ( # BZ-5 Scoped Gravimetric ECM 9519, # FZ-3 Subversive Spatial Destabilizer ECM ), 6073 : ( # Medium Compact Pb-Acid Cap Battery 6097, # Medium Ohm Capacitor Reserve I 6111, # Medium F-4a Ld-Sulfate Capacitor Charge Unit 6083, # Medium Peroxide Capacitor Power Cell ), 21484: ( # 'Full Duplex' Ballistic Control System 21482, # Ballistic 'Purge' Targeting System I ), 6296 : ( # F-89 Compact Signal Amplifier 6218, # Protected Gravimetric Backup Cluster I 6222, # Protected Ladar Backup Cluster I 6226, # Protected Magnetometric Backup Cluster I 6230, # Protected Multi-Frequency Backup Cluster I 6234, # Protected RADAR Backup Cluster I 6195, # Reserve Gravimetric Scanners 6199, # Reserve Ladar Scanners 6203, # Reserve Magnetometric Scanners 6207, # Reserve Multi-Frequency Scanners 6212, # Reserve RADAR Scanners 20238, # Secure Gravimetric Backup Cluster I 20244, # Secure Ladar Backup Cluster I 20250, # Secure Magnetometric Backup Cluster I 20260, # Secure Radar Backup Cluster I 6244, # F-43 Repetitive Gravimetric Backup Sensors 6252, # F-43 Repetitive Ladar Backup Sensors 6260, # F-43 Repetitive Magnetometric Backup Sensors 6268, # F-43 Repetitive Multi-Frequency Backup Sensors 6276, # F-43 Repetitive RADAR Backup Sensors 20240, # Shielded Gravimetric Backup Cluster I 20246, # Shielded Ladar Backup Cluster I 20252, # Shielded Magnetometric Backup Cluster I 20262, # Shielded Radar Backup Cluster I 6243, # Surrogate Gravimetric Reserve Array I 6251, # Surrogate Ladar Reserve Array I 6259, # Surrogate Magnetometric Reserve Array I 6267, # Surrogate Multi-Frequency Reserve Array I 6275, # Surrogate RADAR Reserve Array I 20242, # Warded Gravimetric Backup Cluster I 20248, # Warded Ladar Backup Cluster I 20254, # Warded Magnetometric Backup Cluster I 20264, # Warded Radar Backup Cluster I 6294, # 'Mendicant' Signal Booster I 6293, # Wavelength Signal Enhancer I 6295, # Type-D Attenuation Signal Augmentation ), 5302 : ( # Phased Muon Scoped Sensor Dampener 5300, # Indirect Scanning Dampening Unit I ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade13.py ================================================ """ Migration 13 - Alters fits table to introduce implant location attribute """ import sqlalchemy def upgrade(saveddata_engine): # Update fits schema to include implant location attribute try: saveddata_engine.execute("SELECT implantLocation FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN implantLocation INTEGER;") saveddata_engine.execute("UPDATE fits SET implantLocation = 0") ================================================ FILE: eos/db/migrations/upgrade14.py ================================================ """ Migration 14 - This should take care of issue #586. """ import sqlalchemy def upgrade(saveddata_engine): if saveddata_engine.execute( "SELECT name FROM sqlite_master WHERE type='table' AND name='fighters'").scalar() == 'fighters': # Fighters table exists try: saveddata_engine.execute("SELECT active FROM fighters LIMIT 1") except sqlalchemy.exc.DatabaseError: # if we don't have the active column, we are on an old pre-release version. Drop the tables and move on # (they will be recreated) saveddata_engine.execute("DROP TABLE fighters") saveddata_engine.execute("DROP TABLE fightersAbilities") ================================================ FILE: eos/db/migrations/upgrade15.py ================================================ """ Migration 15 - Delete projected modules on citadels """ def upgrade(saveddata_engine): sql = """ DELETE FROM modules WHERE ID IN ( SELECT m.ID FROM modules AS m JOIN fits AS f ON m.fitID = f.ID WHERE f.shipID IN ("35832", "35833", "35834", "40340") AND m.projected = 1 ) """ saveddata_engine.execute(sql) ================================================ FILE: eos/db/migrations/upgrade16.py ================================================ """ Migration 16 - Alters fits table to introduce notes attribute """ import sqlalchemy def upgrade(saveddata_engine): # Update fits schema to include notes attribute try: saveddata_engine.execute("SELECT notes FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN notes VARCHAR;") ================================================ FILE: eos/db/migrations/upgrade17.py ================================================ """ Migration 17 - Moves all fleet boosters to the new schema """ def upgrade(saveddata_engine): from eos.db import saveddata_session from eos.db.saveddata.fit import commandFits_table sql = """ SELECT sm.memberID as boostedFit, s.leaderID AS squadBoost, w.leaderID AS wingBoost, g.leaderID AS gangBoost FROM squadmembers sm JOIN squads s ON s.ID = sm.squadID JOIN wings w on w.ID = s.wingID JOIN gangs g on g.ID = w.gangID """ try: results = saveddata_session.execute(sql) inserts = [] for row in results: boosted = row["boostedFit"] types = ("squad", "wing", "gang") for x in types: value = row["{}Boost".format(x)] if value is None: continue inserts.append({"boosterID": value, "boostedID": boosted, "active": 1}) try: saveddata_session.execute(commandFits_table.insert(), {"boosterID": value, "boostedID": boosted, "active": 1}) except (KeyboardInterrupt, SystemExit): raise except Exception: pass saveddata_session.commit() except (KeyboardInterrupt, SystemExit): raise except: # Shouldn't fail unless you have updated database without the old fleet schema and manually modify the database version # If it does, simply fail. Fleet data migration isn't critically important here pass ================================================ FILE: eos/db/migrations/upgrade18.py ================================================ """ Migration 8 - Converts modules from old Warfare Links to Command Modules """ CONVERSIONS = { 42526: ( # Armor Command Burst I 20069, # Armored Warfare Link - Damage Control I 20409, # Armored Warfare Link - Passive Defense I 22227, # Armored Warfare Link - Rapid Repair I ), 43552: ( # Armor Command Burst II 4264, # Armored Warfare Link - Damage Control II 4266, # Armored Warfare Link - Passive Defense II 4266, # Armored Warfare Link - Rapid Repair II ), 42527: ( # Information Command Burst I 11052, # Information Warfare Link - Sensor Integrity I 20405, # Information Warfare Link - Recon Operation I 20406, # Information Warfare Link - Electronic Superiority I ), 43554: ( # Information Command Burst II 4268, # Information Warfare Link - Electronic Superiority II 4270, # Information Warfare Link - Recon Operation II 4272, # Information Warfare Link - Sensor Integrity II ), 42529: ( # Shield Command Burst I 20124, # Siege Warfare Link - Active Shielding I 20514, # Siege Warfare Link - Shield Harmonizing I 22228, # Siege Warfare Link - Shield Efficiency I ), 43555: ( # Shield Command Burst II 4280, # Siege Warfare Link - Active Shielding II 4282, # Siege Warfare Link - Shield Efficiency II 4284 # Siege Warfare Link - Shield Harmonizing II ), 42530: ( # Skirmish Command Burst I 11017, # Skirmish Warfare Link - Interdiction Maneuvers I 20070, # Skirmish Warfare Link - Evasive Maneuvers I 20408, # Skirmish Warfare Link - Rapid Deployment I ), 43556: ( # Skirmish Command Burst II 4286, # Skirmish Warfare Link - Evasive Maneuvers II 4288, # Skirmish Warfare Link - Interdiction Maneuvers II 4290 # Skirmish Warfare Link - Rapid Deployment II ), 42528: ( # Mining Foreman Burst I 22553, # Mining Foreman Link - Harvester Capacitor Efficiency I 22555, # Mining Foreman Link - Mining Laser Field Enhancement I 22557, # Mining Foreman Link - Laser Optimization I ), 43551: ( # Mining Foreman Burst II 4274, # Mining Foreman Link - Harvester Capacitor Efficiency II 4276, # Mining Foreman Link - Laser Optimization II 4278 # Mining Foreman Link - Mining Laser Field Enhancement II ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade19.py ================================================ """ Migration 19 - Deletes broken references to fits from the commandFits table (see GH issue #844) """ def upgrade(saveddata_engine): from eos.db import saveddata_session sql = """ DELETE FROM commandFits WHERE boosterID NOT IN (select ID from fits) OR boostedID NOT IN (select ID from fits) """ saveddata_session.execute(sql) saveddata_session.commit() ================================================ FILE: eos/db/migrations/upgrade2.py ================================================ """ Migration 2 - Includes old upgrade paths pre-1.5.0. See GH issue #190 for why this is needed """ import sqlalchemy def upgrade(saveddata_engine): # Update characters schema to include default chars try: saveddata_engine.execute("SELECT defaultChar, chars FROM characters LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER") saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR") # Update fits schema to include booster attribute try: saveddata_engine.execute("SELECT booster FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN booster BOOLEAN") ================================================ FILE: eos/db/migrations/upgrade20.py ================================================ """ Migration 20 - Adds support for alpha clones to the characters table """ import sqlalchemy def upgrade(saveddata_engine): # Update characters schema to include alphaCloneID try: saveddata_engine.execute("SELECT alphaCloneID FROM characters LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE characters ADD COLUMN alphaCloneID INTEGER;") ================================================ FILE: eos/db/migrations/upgrade21.py ================================================ """ Migration 21 - Fixes discrepancy in drone table where we may have an amount active that is not equal to the amount in the stack (we don't support activating only 2/5 drones). See GH issue #728 """ def upgrade(saveddata_engine): saveddata_engine.execute("UPDATE drones SET amountActive = amount where amountActive > 0 AND amountActive <> amount;") ================================================ FILE: eos/db/migrations/upgrade22.py ================================================ """ Migration 22 - Adds the created and modified fields to most tables """ import sqlalchemy def upgrade(saveddata_engine): # 1 = created only # 2 = created and modified tables = { "boosters": 2, "cargo": 2, "characters": 2, # "crest": 1, "damagePatterns": 2, "drones": 2, "fighters": 2, "fits": 2, "projectedFits": 2, "commandFits": 2, "implants": 2, "implantSets": 2, "modules": 2, "overrides": 2, "characterSkills": 2, "targetResists": 2 } for table in list(tables.keys()): # midnight brain, there's probably a much more simple way to do this, but fuck it if tables[table] > 0: try: saveddata_engine.execute("SELECT created FROM {0} LIMIT 1;".format(table)) except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE {} ADD COLUMN created DATETIME;".format(table)) if tables[table] > 1: try: saveddata_engine.execute("SELECT modified FROM {0} LIMIT 1;".format(table)) except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE {} ADD COLUMN modified DATETIME;".format(table)) ================================================ FILE: eos/db/migrations/upgrade23.py ================================================ """ Migration 23 - Adds a sec status field to the character table """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT secStatus FROM characters LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE characters ADD COLUMN secStatus FLOAT;") ================================================ FILE: eos/db/migrations/upgrade24.py ================================================ """ Migration 24 - Adds a boolean value to fit to signify if fit should ignore restrictions """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT ignoreRestrictions FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN ignoreRestrictions BOOLEAN") saveddata_engine.execute("UPDATE fits SET ignoreRestrictions = 0") ================================================ FILE: eos/db/migrations/upgrade25.py ================================================ """ Migration 25 - Converts T3C fitting configurations based on the spreadsheet noted here: https://www.eveonline.com/news/view/patch-notes-for-july-2017-release (csv copies can be found on the pyfa repo in case the official documents are deleted) - For fits that don't have 5 subsystems, or for fits that error out during the conversion, go by the generic "loose" conversion. Best effort ftw """ conversion = { frozenset([30046, 29969, 30139, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30139, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30139, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30139, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30139, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29969, 30139, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30139, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30139, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29969, 30139, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29969, 30139, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30139, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30139, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29969, 30141, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30141, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30141, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30141, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30141, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29969, 30141, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30141, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30141, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29969, 30141, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29969, 30141, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30141, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30141, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29969, 30143, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30143, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30143, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30143, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30143, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29969, 30143, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30143, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30143, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29969, 30143, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29969, 30143, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30143, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30143, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29969, 30145, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30145, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30145, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30145, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29969, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29969, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29969, 30145, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29969, 30145, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30145, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29969, 30145, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29969, 30145, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29969, 30145, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30145, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29969, 30145, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29970, 30139, 30122, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30139, 30122, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30139, 30122, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30139, 30122, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30139, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30139, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30139, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30139, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30139, 30124, 30090]): (45627, 45591, 45602, 45615), frozenset([30046, 29970, 30139, 30124, 30088]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30139, 30124, 30086]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30139, 30124, 30092]): (45627, 45591, 45602, 45613), frozenset([30046, 29970, 30139, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29970, 30139, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30139, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30139, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29970, 30141, 30122, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30141, 30122, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30141, 30122, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30141, 30122, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30141, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30141, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30141, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30141, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30141, 30124, 30090]): (45627, 45591, 45602, 45615), frozenset([30046, 29970, 30141, 30124, 30088]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30141, 30124, 30086]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30141, 30124, 30092]): (45627, 45591, 45602, 45613), frozenset([30046, 29970, 30141, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29970, 30141, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30141, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30141, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29970, 30143, 30122, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30143, 30122, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30143, 30122, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30143, 30122, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30143, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30143, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30143, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30143, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30143, 30124, 30090]): (45627, 45591, 45602, 45615), frozenset([30046, 29970, 30143, 30124, 30088]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30143, 30124, 30086]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30143, 30124, 30092]): (45627, 45591, 45602, 45613), frozenset([30046, 29970, 30143, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29970, 30143, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30143, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30143, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29970, 30145, 30122, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30145, 30122, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30145, 30122, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30145, 30122, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30145, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30046, 29970, 30145, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30145, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30046, 29970, 30145, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30046, 29970, 30145, 30124, 30090]): (45627, 45591, 45602, 45615), frozenset([30046, 29970, 30145, 30124, 30088]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30145, 30124, 30086]): (45627, 45591, 45602, 45614), frozenset([30046, 29970, 30145, 30124, 30092]): (45627, 45591, 45602, 45613), frozenset([30046, 29970, 30145, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29970, 30145, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30145, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29970, 30145, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29971, 30139, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30139, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30139, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30139, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30139, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29971, 30139, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30139, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30139, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29971, 30139, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29971, 30139, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30139, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30139, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29971, 30141, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30141, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30141, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30141, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30141, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29971, 30141, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30141, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30141, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29971, 30141, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29971, 30141, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30141, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30141, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29971, 30143, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30143, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30143, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30143, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30143, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29971, 30143, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30143, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30143, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29971, 30143, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29971, 30143, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30143, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30143, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29971, 30145, 30122, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30145, 30122, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30145, 30122, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30145, 30122, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30046, 29971, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30046, 29971, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30046, 29971, 30145, 30124, 30090]): (45627, 45590, 45602, 45615), frozenset([30046, 29971, 30145, 30124, 30088]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30145, 30124, 30086]): (45627, 45590, 45602, 45614), frozenset([30046, 29971, 30145, 30124, 30092]): (45627, 45590, 45602, 45613), frozenset([30046, 29971, 30145, 30125, 30090]): (45627, 45589, 45601, 45615), frozenset([30046, 29971, 30145, 30125, 30088]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30145, 30125, 30086]): (45627, 45589, 45601, 45614), frozenset([30046, 29971, 30145, 30125, 30092]): (45627, 45589, 45601, 45613), frozenset([30046, 29972, 30139, 30122, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30139, 30122, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30122, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30122, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30139, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30139, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30139, 30124, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30139, 30124, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30124, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30139, 30124, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30139, 30125, 30090]): (45627, 45589, 45603, 45615), frozenset([30046, 29972, 30139, 30125, 30088]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30139, 30125, 30086]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30139, 30125, 30092]): (45627, 45589, 45603, 45613), frozenset([30046, 29972, 30141, 30122, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30141, 30122, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30122, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30122, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30141, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30141, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30141, 30124, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30141, 30124, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30124, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30141, 30124, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30141, 30125, 30090]): (45627, 45589, 45603, 45615), frozenset([30046, 29972, 30141, 30125, 30088]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30141, 30125, 30086]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30141, 30125, 30092]): (45627, 45589, 45603, 45613), frozenset([30046, 29972, 30143, 30122, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30143, 30122, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30122, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30122, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30143, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30143, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30143, 30124, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30143, 30124, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30124, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30143, 30124, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30143, 30125, 30090]): (45627, 45589, 45603, 45615), frozenset([30046, 29972, 30143, 30125, 30088]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30143, 30125, 30086]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30143, 30125, 30092]): (45627, 45589, 45603, 45613), frozenset([30046, 29972, 30145, 30122, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30145, 30122, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30122, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30122, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30145, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30145, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30145, 30124, 30090]): (45627, 45590, 45603, 45615), frozenset([30046, 29972, 30145, 30124, 30088]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30124, 30086]): (45627, 45590, 45603, 45614), frozenset([30046, 29972, 30145, 30124, 30092]): (45627, 45590, 45603, 45613), frozenset([30046, 29972, 30145, 30125, 30090]): (45627, 45589, 45603, 45615), frozenset([30046, 29972, 30145, 30125, 30088]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30145, 30125, 30086]): (45627, 45589, 45603, 45614), frozenset([30046, 29972, 30145, 30125, 30092]): (45627, 45589, 45603, 45613), frozenset([30048, 29969, 30139, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29969, 30139, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30139, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30139, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29969, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29969, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29969, 30139, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29969, 30139, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30139, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30139, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29969, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29969, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29969, 30141, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29969, 30141, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30141, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30141, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29969, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29969, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29969, 30141, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29969, 30141, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30141, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30141, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29969, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29969, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29969, 30143, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29969, 30143, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30143, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29969, 30143, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29969, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29969, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29969, 30143, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29969, 30143, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30143, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29969, 30143, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29969, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29969, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29969, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29969, 30145, 30122, 30090]): (45625, 45590, 45601, 45615), frozenset([30048, 29969, 30145, 30122, 30088]): (45625, 45590, 45601, 45614), frozenset([30048, 29969, 30145, 30122, 30086]): (45625, 45590, 45601, 45614), frozenset([30048, 29969, 30145, 30122, 30092]): (45625, 45590, 45601, 45613), frozenset([30048, 29969, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29969, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29969, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29969, 30145, 30124, 30090]): (45625, 45590, 45602, 45615), frozenset([30048, 29969, 30145, 30124, 30088]): (45625, 45590, 45602, 45614), frozenset([30048, 29969, 30145, 30124, 30086]): (45625, 45590, 45602, 45614), frozenset([30048, 29969, 30145, 30124, 30092]): (45625, 45590, 45602, 45613), frozenset([30048, 29969, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30048, 29969, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30048, 29969, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30048, 29969, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30048, 29970, 30139, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30048, 29970, 30139, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30139, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30139, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30048, 29970, 30139, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30048, 29970, 30139, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30139, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30139, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30048, 29970, 30139, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30048, 29970, 30139, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30139, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30139, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30048, 29970, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29970, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29970, 30141, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30048, 29970, 30141, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30141, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30141, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30048, 29970, 30141, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30048, 29970, 30141, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30141, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30141, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30048, 29970, 30141, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30048, 29970, 30141, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30141, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30141, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30048, 29970, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29970, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29970, 30143, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30048, 29970, 30143, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30143, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30048, 29970, 30143, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30048, 29970, 30143, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30048, 29970, 30143, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30143, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30143, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30048, 29970, 30143, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30048, 29970, 30143, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30143, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30048, 29970, 30143, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30048, 29970, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29970, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29970, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29970, 30145, 30122, 30090]): (45625, 45591, 45601, 45615), frozenset([30048, 29970, 30145, 30122, 30088]): (45625, 45591, 45601, 45614), frozenset([30048, 29970, 30145, 30122, 30086]): (45625, 45591, 45601, 45614), frozenset([30048, 29970, 30145, 30122, 30092]): (45625, 45591, 45601, 45613), frozenset([30048, 29970, 30145, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30048, 29970, 30145, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30145, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30048, 29970, 30145, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30048, 29970, 30145, 30124, 30090]): (45625, 45591, 45602, 45615), frozenset([30048, 29970, 30145, 30124, 30088]): (45625, 45591, 45602, 45614), frozenset([30048, 29970, 30145, 30124, 30086]): (45625, 45591, 45602, 45614), frozenset([30048, 29970, 30145, 30124, 30092]): (45625, 45591, 45602, 45613), frozenset([30048, 29970, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30048, 29970, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30048, 29970, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30048, 29970, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30048, 29971, 30139, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29971, 30139, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30139, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30139, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29971, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29971, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29971, 30139, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29971, 30139, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30139, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30139, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29971, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29971, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29971, 30141, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29971, 30141, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30141, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30141, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29971, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29971, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29971, 30141, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29971, 30141, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30141, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30141, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29971, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29971, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29971, 30143, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30048, 29971, 30143, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30143, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30048, 29971, 30143, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30048, 29971, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29971, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29971, 30143, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30048, 29971, 30143, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30143, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30048, 29971, 30143, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30048, 29971, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30048, 29971, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30048, 29971, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30048, 29971, 30145, 30122, 30090]): (45625, 45590, 45601, 45615), frozenset([30048, 29971, 30145, 30122, 30088]): (45625, 45590, 45601, 45614), frozenset([30048, 29971, 30145, 30122, 30086]): (45625, 45590, 45601, 45614), frozenset([30048, 29971, 30145, 30122, 30092]): (45625, 45590, 45601, 45613), frozenset([30048, 29971, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30048, 29971, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30048, 29971, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30048, 29971, 30145, 30124, 30090]): (45625, 45590, 45602, 45615), frozenset([30048, 29971, 30145, 30124, 30088]): (45625, 45590, 45602, 45614), frozenset([30048, 29971, 30145, 30124, 30086]): (45625, 45590, 45602, 45614), frozenset([30048, 29971, 30145, 30124, 30092]): (45625, 45590, 45602, 45613), frozenset([30048, 29971, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30048, 29971, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30048, 29971, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30048, 29971, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30048, 29972, 30139, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30139, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30139, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30048, 29972, 30139, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30048, 29972, 30139, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30139, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30139, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30139, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30048, 29972, 30139, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30139, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30139, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30048, 29972, 30141, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30141, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30141, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30048, 29972, 30141, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30048, 29972, 30141, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30141, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30141, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30141, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30048, 29972, 30141, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30141, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30141, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30048, 29972, 30143, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30143, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30143, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30048, 29972, 30143, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30048, 29972, 30143, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30048, 29972, 30143, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30048, 29972, 30143, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30048, 29972, 30143, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30048, 29972, 30143, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30143, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30048, 29972, 30143, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30048, 29972, 30145, 30122, 30090]): (45625, 45590, 45603, 45615), frozenset([30048, 29972, 30145, 30122, 30088]): (45625, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30122, 30086]): (45625, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30122, 30092]): (45625, 45590, 45603, 45613), frozenset([30048, 29972, 30145, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30048, 29972, 30145, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30048, 29972, 30145, 30124, 30090]): (45625, 45590, 45603, 45615), frozenset([30048, 29972, 30145, 30124, 30088]): (45625, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30124, 30086]): (45625, 45590, 45603, 45614), frozenset([30048, 29972, 30145, 30124, 30092]): (45625, 45590, 45603, 45613), frozenset([30048, 29972, 30145, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30048, 29972, 30145, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30048, 29972, 30145, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30048, 29972, 30145, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30050, 29969, 30139, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29969, 30139, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30139, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30139, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29969, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29969, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29969, 30139, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29969, 30139, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30139, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30139, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29969, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29969, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29969, 30141, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29969, 30141, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30141, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30141, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29969, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29969, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29969, 30141, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29969, 30141, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30141, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30141, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29969, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29969, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29969, 30143, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29969, 30143, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30143, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29969, 30143, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29969, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29969, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29969, 30143, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29969, 30143, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30143, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29969, 30143, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29969, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29969, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29969, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29969, 30145, 30122, 30090]): (45625, 45590, 45601, 45615), frozenset([30050, 29969, 30145, 30122, 30088]): (45625, 45590, 45601, 45614), frozenset([30050, 29969, 30145, 30122, 30086]): (45625, 45590, 45601, 45614), frozenset([30050, 29969, 30145, 30122, 30092]): (45625, 45590, 45601, 45613), frozenset([30050, 29969, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29969, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29969, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29969, 30145, 30124, 30090]): (45625, 45590, 45602, 45615), frozenset([30050, 29969, 30145, 30124, 30088]): (45625, 45590, 45602, 45614), frozenset([30050, 29969, 30145, 30124, 30086]): (45625, 45590, 45602, 45614), frozenset([30050, 29969, 30145, 30124, 30092]): (45625, 45590, 45602, 45613), frozenset([30050, 29969, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30050, 29969, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30050, 29969, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30050, 29969, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30050, 29970, 30139, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30050, 29970, 30139, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30139, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30139, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30050, 29970, 30139, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30050, 29970, 30139, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30139, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30139, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30050, 29970, 30139, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30050, 29970, 30139, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30139, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30139, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30050, 29970, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29970, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29970, 30141, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30050, 29970, 30141, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30141, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30141, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30050, 29970, 30141, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30050, 29970, 30141, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30141, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30141, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30050, 29970, 30141, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30050, 29970, 30141, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30141, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30141, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30050, 29970, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29970, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29970, 30143, 30122, 30090]): (45626, 45591, 45601, 45615), frozenset([30050, 29970, 30143, 30122, 30088]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30143, 30122, 30086]): (45626, 45591, 45601, 45614), frozenset([30050, 29970, 30143, 30122, 30092]): (45626, 45591, 45601, 45613), frozenset([30050, 29970, 30143, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30050, 29970, 30143, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30143, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30143, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30050, 29970, 30143, 30124, 30090]): (45626, 45591, 45602, 45615), frozenset([30050, 29970, 30143, 30124, 30088]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30143, 30124, 30086]): (45626, 45591, 45602, 45614), frozenset([30050, 29970, 30143, 30124, 30092]): (45626, 45591, 45602, 45613), frozenset([30050, 29970, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29970, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29970, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29970, 30145, 30122, 30090]): (45625, 45591, 45601, 45615), frozenset([30050, 29970, 30145, 30122, 30088]): (45625, 45591, 45601, 45614), frozenset([30050, 29970, 30145, 30122, 30086]): (45625, 45591, 45601, 45614), frozenset([30050, 29970, 30145, 30122, 30092]): (45625, 45591, 45601, 45613), frozenset([30050, 29970, 30145, 30123, 30090]): (45627, 45591, 45601, 45615), frozenset([30050, 29970, 30145, 30123, 30088]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30145, 30123, 30086]): (45627, 45591, 45601, 45614), frozenset([30050, 29970, 30145, 30123, 30092]): (45627, 45591, 45601, 45613), frozenset([30050, 29970, 30145, 30124, 30090]): (45625, 45591, 45602, 45615), frozenset([30050, 29970, 30145, 30124, 30088]): (45625, 45591, 45602, 45614), frozenset([30050, 29970, 30145, 30124, 30086]): (45625, 45591, 45602, 45614), frozenset([30050, 29970, 30145, 30124, 30092]): (45625, 45591, 45602, 45613), frozenset([30050, 29970, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30050, 29970, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30050, 29970, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30050, 29970, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30050, 29971, 30139, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29971, 30139, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30139, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30139, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29971, 30139, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29971, 30139, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30139, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30139, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29971, 30139, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29971, 30139, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30139, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30139, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29971, 30139, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29971, 30139, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30139, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30139, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29971, 30141, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29971, 30141, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30141, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30141, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29971, 30141, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29971, 30141, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30141, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30141, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29971, 30141, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29971, 30141, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30141, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30141, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29971, 30141, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29971, 30141, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30141, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30141, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29971, 30143, 30122, 30090]): (45626, 45590, 45601, 45615), frozenset([30050, 29971, 30143, 30122, 30088]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30143, 30122, 30086]): (45626, 45590, 45601, 45614), frozenset([30050, 29971, 30143, 30122, 30092]): (45626, 45590, 45601, 45613), frozenset([30050, 29971, 30143, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29971, 30143, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30143, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30143, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29971, 30143, 30124, 30090]): (45626, 45590, 45602, 45615), frozenset([30050, 29971, 30143, 30124, 30088]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30143, 30124, 30086]): (45626, 45590, 45602, 45614), frozenset([30050, 29971, 30143, 30124, 30092]): (45626, 45590, 45602, 45613), frozenset([30050, 29971, 30143, 30125, 30090]): (45626, 45589, 45601, 45615), frozenset([30050, 29971, 30143, 30125, 30088]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30143, 30125, 30086]): (45626, 45589, 45601, 45614), frozenset([30050, 29971, 30143, 30125, 30092]): (45626, 45589, 45601, 45613), frozenset([30050, 29971, 30145, 30122, 30090]): (45625, 45590, 45601, 45615), frozenset([30050, 29971, 30145, 30122, 30088]): (45625, 45590, 45601, 45614), frozenset([30050, 29971, 30145, 30122, 30086]): (45625, 45590, 45601, 45614), frozenset([30050, 29971, 30145, 30122, 30092]): (45625, 45590, 45601, 45613), frozenset([30050, 29971, 30145, 30123, 30090]): (45627, 45590, 45601, 45615), frozenset([30050, 29971, 30145, 30123, 30088]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30145, 30123, 30086]): (45627, 45590, 45601, 45614), frozenset([30050, 29971, 30145, 30123, 30092]): (45627, 45590, 45601, 45613), frozenset([30050, 29971, 30145, 30124, 30090]): (45625, 45590, 45602, 45615), frozenset([30050, 29971, 30145, 30124, 30088]): (45625, 45590, 45602, 45614), frozenset([30050, 29971, 30145, 30124, 30086]): (45625, 45590, 45602, 45614), frozenset([30050, 29971, 30145, 30124, 30092]): (45625, 45590, 45602, 45613), frozenset([30050, 29971, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30050, 29971, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30050, 29971, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30050, 29971, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30050, 29972, 30139, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30139, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30139, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30050, 29972, 30139, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30050, 29972, 30139, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30139, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30139, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30139, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30050, 29972, 30139, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30139, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30139, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30050, 29972, 30141, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30141, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30141, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30050, 29972, 30141, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30050, 29972, 30141, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30141, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30141, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30141, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30050, 29972, 30141, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30141, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30141, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30050, 29972, 30143, 30122, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30143, 30122, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30122, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30122, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30143, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30050, 29972, 30143, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30050, 29972, 30143, 30124, 30090]): (45626, 45590, 45603, 45615), frozenset([30050, 29972, 30143, 30124, 30088]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30124, 30086]): (45626, 45590, 45603, 45614), frozenset([30050, 29972, 30143, 30124, 30092]): (45626, 45590, 45603, 45613), frozenset([30050, 29972, 30143, 30125, 30090]): (45626, 45589, 45603, 45615), frozenset([30050, 29972, 30143, 30125, 30088]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30143, 30125, 30086]): (45626, 45589, 45603, 45614), frozenset([30050, 29972, 30143, 30125, 30092]): (45626, 45589, 45603, 45613), frozenset([30050, 29972, 30145, 30122, 30090]): (45625, 45590, 45603, 45615), frozenset([30050, 29972, 30145, 30122, 30088]): (45625, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30122, 30086]): (45625, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30122, 30092]): (45625, 45590, 45603, 45613), frozenset([30050, 29972, 30145, 30123, 30090]): (45627, 45590, 45603, 45615), frozenset([30050, 29972, 30145, 30123, 30088]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30123, 30086]): (45627, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30123, 30092]): (45627, 45590, 45603, 45613), frozenset([30050, 29972, 30145, 30124, 30090]): (45625, 45590, 45603, 45615), frozenset([30050, 29972, 30145, 30124, 30088]): (45625, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30124, 30086]): (45625, 45590, 45603, 45614), frozenset([30050, 29972, 30145, 30124, 30092]): (45625, 45590, 45603, 45613), frozenset([30050, 29972, 30145, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30050, 29972, 30145, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30050, 29972, 30145, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30050, 29972, 30145, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29969, 30139, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30139, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30139, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29969, 30139, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29969, 30139, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29969, 30139, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30139, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30139, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29969, 30139, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30139, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30139, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30141, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30141, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30141, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29969, 30141, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29969, 30141, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29969, 30141, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30141, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30141, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29969, 30141, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30141, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30141, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30143, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30143, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30143, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29969, 30143, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29969, 30143, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29969, 30143, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30143, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30143, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29969, 30143, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30143, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30143, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30145, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30145, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29969, 30145, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29969, 30145, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29969, 30145, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29969, 30145, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30145, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29969, 30145, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29969, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29969, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29969, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30139, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30139, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30139, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29970, 30139, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29970, 30139, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29970, 30139, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30139, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30139, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29970, 30139, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30139, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30139, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30141, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30141, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30141, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29970, 30141, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29970, 30141, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29970, 30141, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30141, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30141, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29970, 30141, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30141, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30141, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30143, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30143, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30143, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29970, 30143, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29970, 30143, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29970, 30143, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30143, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30143, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29970, 30143, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30143, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30143, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30145, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30145, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29970, 30145, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29970, 30145, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29970, 30145, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29970, 30145, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30145, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29970, 30145, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29970, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29970, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29970, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30139, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30139, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30139, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29971, 30139, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29971, 30139, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29971, 30139, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30139, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30139, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29971, 30139, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30139, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30139, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30141, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30141, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30141, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29971, 30141, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29971, 30141, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29971, 30141, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30141, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30141, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29971, 30141, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30141, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30141, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30143, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30143, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30143, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29971, 30143, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29971, 30143, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29971, 30143, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30143, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30143, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29971, 30143, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30143, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30143, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30145, 30122, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30145, 30122, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30122, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30122, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29971, 30145, 30123, 30090]): (45627, 45589, 45601, 45615), frozenset([30052, 29971, 30145, 30123, 30088]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30123, 30086]): (45627, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30123, 30092]): (45627, 45589, 45601, 45613), frozenset([30052, 29971, 30145, 30124, 30090]): (45625, 45589, 45602, 45615), frozenset([30052, 29971, 30145, 30124, 30088]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30145, 30124, 30086]): (45625, 45589, 45602, 45614), frozenset([30052, 29971, 30145, 30124, 30092]): (45625, 45589, 45602, 45613), frozenset([30052, 29971, 30145, 30125, 30090]): (45625, 45589, 45601, 45615), frozenset([30052, 29971, 30145, 30125, 30088]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30125, 30086]): (45625, 45589, 45601, 45614), frozenset([30052, 29971, 30145, 30125, 30092]): (45625, 45589, 45601, 45613), frozenset([30052, 29972, 30139, 30122, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30139, 30122, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30122, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30122, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30139, 30123, 30090]): (45627, 45589, 45603, 45615), frozenset([30052, 29972, 30139, 30123, 30088]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30123, 30086]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30123, 30092]): (45627, 45589, 45603, 45613), frozenset([30052, 29972, 30139, 30124, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30139, 30124, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30124, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30124, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30139, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30139, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30139, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30141, 30122, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30141, 30122, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30122, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30122, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30141, 30123, 30090]): (45627, 45589, 45603, 45615), frozenset([30052, 29972, 30141, 30123, 30088]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30123, 30086]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30123, 30092]): (45627, 45589, 45603, 45613), frozenset([30052, 29972, 30141, 30124, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30141, 30124, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30124, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30124, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30141, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30141, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30141, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30143, 30122, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30143, 30122, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30122, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30122, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30143, 30123, 30090]): (45627, 45589, 45603, 45615), frozenset([30052, 29972, 30143, 30123, 30088]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30123, 30086]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30123, 30092]): (45627, 45589, 45603, 45613), frozenset([30052, 29972, 30143, 30124, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30143, 30124, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30124, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30124, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30143, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30143, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30143, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30145, 30122, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30145, 30122, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30122, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30122, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30145, 30123, 30090]): (45627, 45589, 45603, 45615), frozenset([30052, 29972, 30145, 30123, 30088]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30123, 30086]): (45627, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30123, 30092]): (45627, 45589, 45603, 45613), frozenset([30052, 29972, 30145, 30124, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30145, 30124, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30124, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30124, 30092]): (45625, 45589, 45603, 45613), frozenset([30052, 29972, 30145, 30125, 30090]): (45625, 45589, 45603, 45615), frozenset([30052, 29972, 30145, 30125, 30088]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30125, 30086]): (45625, 45589, 45603, 45614), frozenset([30052, 29972, 30145, 30125, 30092]): (45625, 45589, 45603, 45613), frozenset([30036, 29964, 30169, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30169, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30169, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30169, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30169, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30169, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30169, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30169, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30169, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29964, 30169, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30169, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29964, 30169, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30169, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29964, 30169, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30169, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29964, 30169, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30171, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30171, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30171, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30171, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30171, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30171, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30171, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30171, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30171, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29964, 30171, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30171, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29964, 30171, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30171, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29964, 30171, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30171, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29964, 30171, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30173, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30173, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30173, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30173, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30173, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30173, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30173, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30173, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30173, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29964, 30173, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30173, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29964, 30173, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30173, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29964, 30173, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30173, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29964, 30173, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30175, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30175, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30175, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30175, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30175, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29964, 30175, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30175, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29964, 30175, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29964, 30175, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29964, 30175, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30175, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29964, 30175, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29964, 30175, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29964, 30175, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29964, 30175, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29964, 30175, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30169, 30117, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30169, 30117, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30169, 30117, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30169, 30117, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30169, 30118, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30169, 30118, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30169, 30118, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30169, 30118, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30169, 30119, 30076]): (45624, 45588, 45598, 45611), frozenset([30036, 29965, 30169, 30119, 30078]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30169, 30119, 30082]): (45624, 45588, 45598, 45610), frozenset([30036, 29965, 30169, 30119, 30080]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30169, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29965, 30169, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30169, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29965, 30169, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30171, 30117, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30171, 30117, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30171, 30117, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30171, 30117, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30171, 30118, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30171, 30118, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30171, 30118, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30171, 30118, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30171, 30119, 30076]): (45624, 45588, 45598, 45611), frozenset([30036, 29965, 30171, 30119, 30078]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30171, 30119, 30082]): (45624, 45588, 45598, 45610), frozenset([30036, 29965, 30171, 30119, 30080]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30171, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29965, 30171, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30171, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29965, 30171, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30173, 30117, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30173, 30117, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30173, 30117, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30173, 30117, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30173, 30118, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30173, 30118, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30173, 30118, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30173, 30118, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30173, 30119, 30076]): (45624, 45588, 45598, 45611), frozenset([30036, 29965, 30173, 30119, 30078]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30173, 30119, 30082]): (45624, 45588, 45598, 45610), frozenset([30036, 29965, 30173, 30119, 30080]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30173, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29965, 30173, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30173, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29965, 30173, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30175, 30117, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30175, 30117, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30175, 30117, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30175, 30117, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30175, 30118, 30076]): (45624, 45588, 45599, 45611), frozenset([30036, 29965, 30175, 30118, 30078]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30175, 30118, 30082]): (45624, 45588, 45599, 45610), frozenset([30036, 29965, 30175, 30118, 30080]): (45624, 45588, 45599, 45612), frozenset([30036, 29965, 30175, 30119, 30076]): (45624, 45588, 45598, 45611), frozenset([30036, 29965, 30175, 30119, 30078]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30175, 30119, 30082]): (45624, 45588, 45598, 45610), frozenset([30036, 29965, 30175, 30119, 30080]): (45624, 45588, 45598, 45612), frozenset([30036, 29965, 30175, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29965, 30175, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29965, 30175, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29965, 30175, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30169, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30169, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30169, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30169, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30169, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30169, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30169, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30169, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30169, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29966, 30169, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30169, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29966, 30169, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30169, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29966, 30169, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30169, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29966, 30169, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30171, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30171, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30171, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30171, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30171, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30171, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30171, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30171, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30171, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29966, 30171, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30171, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29966, 30171, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30171, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29966, 30171, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30171, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29966, 30171, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30173, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30173, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30173, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30173, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30173, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30173, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30173, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30173, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30173, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29966, 30173, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30173, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29966, 30173, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30173, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29966, 30173, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30173, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29966, 30173, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30175, 30117, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30175, 30117, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30175, 30117, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30175, 30117, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30175, 30118, 30076]): (45624, 45587, 45599, 45611), frozenset([30036, 29966, 30175, 30118, 30078]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30175, 30118, 30082]): (45624, 45587, 45599, 45610), frozenset([30036, 29966, 30175, 30118, 30080]): (45624, 45587, 45599, 45612), frozenset([30036, 29966, 30175, 30119, 30076]): (45624, 45587, 45598, 45611), frozenset([30036, 29966, 30175, 30119, 30078]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30175, 30119, 30082]): (45624, 45587, 45598, 45610), frozenset([30036, 29966, 30175, 30119, 30080]): (45624, 45587, 45598, 45612), frozenset([30036, 29966, 30175, 30120, 30076]): (45624, 45586, 45598, 45611), frozenset([30036, 29966, 30175, 30120, 30078]): (45624, 45586, 45598, 45612), frozenset([30036, 29966, 30175, 30120, 30082]): (45624, 45586, 45598, 45610), frozenset([30036, 29966, 30175, 30120, 30080]): (45624, 45586, 45598, 45612), frozenset([30036, 29967, 30169, 30117, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30169, 30117, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30117, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30169, 30117, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30118, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30169, 30118, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30118, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30169, 30118, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30119, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30169, 30119, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30119, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30169, 30119, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30169, 30120, 30076]): (45624, 45586, 45600, 45611), frozenset([30036, 29967, 30169, 30120, 30078]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30169, 30120, 30082]): (45624, 45586, 45600, 45610), frozenset([30036, 29967, 30169, 30120, 30080]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30171, 30117, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30171, 30117, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30117, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30171, 30117, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30118, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30171, 30118, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30118, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30171, 30118, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30119, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30171, 30119, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30119, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30171, 30119, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30171, 30120, 30076]): (45624, 45586, 45600, 45611), frozenset([30036, 29967, 30171, 30120, 30078]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30171, 30120, 30082]): (45624, 45586, 45600, 45610), frozenset([30036, 29967, 30171, 30120, 30080]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30173, 30117, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30173, 30117, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30117, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30173, 30117, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30118, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30173, 30118, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30118, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30173, 30118, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30119, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30173, 30119, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30119, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30173, 30119, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30173, 30120, 30076]): (45624, 45586, 45600, 45611), frozenset([30036, 29967, 30173, 30120, 30078]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30173, 30120, 30082]): (45624, 45586, 45600, 45610), frozenset([30036, 29967, 30173, 30120, 30080]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30175, 30117, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30175, 30117, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30117, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30175, 30117, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30118, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30175, 30118, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30118, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30175, 30118, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30119, 30076]): (45624, 45587, 45600, 45611), frozenset([30036, 29967, 30175, 30119, 30078]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30119, 30082]): (45624, 45587, 45600, 45610), frozenset([30036, 29967, 30175, 30119, 30080]): (45624, 45587, 45600, 45612), frozenset([30036, 29967, 30175, 30120, 30076]): (45624, 45586, 45600, 45611), frozenset([30036, 29967, 30175, 30120, 30078]): (45624, 45586, 45600, 45612), frozenset([30036, 29967, 30175, 30120, 30082]): (45624, 45586, 45600, 45610), frozenset([30036, 29967, 30175, 30120, 30080]): (45624, 45586, 45600, 45612), frozenset([30038, 29964, 30169, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30169, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30169, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30169, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30169, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30169, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30169, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30169, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30169, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29964, 30169, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30169, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29964, 30169, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29964, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29964, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30171, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30171, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30171, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30171, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30171, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30171, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30171, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30171, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30171, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29964, 30171, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30171, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29964, 30171, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29964, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29964, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30173, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30173, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30173, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30173, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30173, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29964, 30173, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30173, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29964, 30173, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29964, 30173, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29964, 30173, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30173, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29964, 30173, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29964, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29964, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29964, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29964, 30175, 30117, 30076]): (45622, 45587, 45599, 45611), frozenset([30038, 29964, 30175, 30117, 30078]): (45622, 45587, 45599, 45612), frozenset([30038, 29964, 30175, 30117, 30082]): (45622, 45587, 45599, 45610), frozenset([30038, 29964, 30175, 30117, 30080]): (45622, 45587, 45599, 45612), frozenset([30038, 29964, 30175, 30118, 30076]): (45622, 45587, 45599, 45611), frozenset([30038, 29964, 30175, 30118, 30078]): (45622, 45587, 45599, 45612), frozenset([30038, 29964, 30175, 30118, 30082]): (45622, 45587, 45599, 45610), frozenset([30038, 29964, 30175, 30118, 30080]): (45622, 45587, 45599, 45612), frozenset([30038, 29964, 30175, 30119, 30076]): (45622, 45587, 45598, 45611), frozenset([30038, 29964, 30175, 30119, 30078]): (45622, 45587, 45598, 45612), frozenset([30038, 29964, 30175, 30119, 30082]): (45622, 45587, 45598, 45610), frozenset([30038, 29964, 30175, 30119, 30080]): (45622, 45587, 45598, 45612), frozenset([30038, 29964, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30038, 29964, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30038, 29964, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30038, 29964, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30038, 29965, 30169, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30169, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30169, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30169, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30169, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30169, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30169, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30169, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30169, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30038, 29965, 30169, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30169, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30038, 29965, 30169, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29965, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29965, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30171, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30171, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30171, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30171, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30171, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30171, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30171, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30171, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30171, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30038, 29965, 30171, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30171, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30038, 29965, 30171, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29965, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29965, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30173, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30173, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30173, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30173, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30173, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30038, 29965, 30173, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30173, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30038, 29965, 30173, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30038, 29965, 30173, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30038, 29965, 30173, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30173, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30038, 29965, 30173, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30038, 29965, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29965, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29965, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29965, 30175, 30117, 30076]): (45622, 45588, 45599, 45611), frozenset([30038, 29965, 30175, 30117, 30078]): (45622, 45588, 45599, 45612), frozenset([30038, 29965, 30175, 30117, 30082]): (45622, 45588, 45599, 45610), frozenset([30038, 29965, 30175, 30117, 30080]): (45622, 45588, 45599, 45612), frozenset([30038, 29965, 30175, 30118, 30076]): (45622, 45588, 45599, 45611), frozenset([30038, 29965, 30175, 30118, 30078]): (45622, 45588, 45599, 45612), frozenset([30038, 29965, 30175, 30118, 30082]): (45622, 45588, 45599, 45610), frozenset([30038, 29965, 30175, 30118, 30080]): (45622, 45588, 45599, 45612), frozenset([30038, 29965, 30175, 30119, 30076]): (45622, 45588, 45598, 45611), frozenset([30038, 29965, 30175, 30119, 30078]): (45622, 45588, 45598, 45612), frozenset([30038, 29965, 30175, 30119, 30082]): (45622, 45588, 45598, 45610), frozenset([30038, 29965, 30175, 30119, 30080]): (45622, 45588, 45598, 45612), frozenset([30038, 29965, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30038, 29965, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30038, 29965, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30038, 29965, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30038, 29966, 30169, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30169, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30169, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30169, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30169, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30169, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30169, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30169, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30169, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29966, 30169, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30169, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29966, 30169, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29966, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29966, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30171, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30171, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30171, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30171, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30171, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30171, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30171, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30171, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30171, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29966, 30171, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30171, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29966, 30171, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29966, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29966, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30173, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30173, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30173, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30173, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30173, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30038, 29966, 30173, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30173, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30038, 29966, 30173, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30038, 29966, 30173, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30038, 29966, 30173, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30173, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30038, 29966, 30173, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30038, 29966, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30038, 29966, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30038, 29966, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30038, 29966, 30175, 30117, 30076]): (45622, 45587, 45599, 45611), frozenset([30038, 29966, 30175, 30117, 30078]): (45622, 45587, 45599, 45612), frozenset([30038, 29966, 30175, 30117, 30082]): (45622, 45587, 45599, 45610), frozenset([30038, 29966, 30175, 30117, 30080]): (45622, 45587, 45599, 45612), frozenset([30038, 29966, 30175, 30118, 30076]): (45622, 45587, 45599, 45611), frozenset([30038, 29966, 30175, 30118, 30078]): (45622, 45587, 45599, 45612), frozenset([30038, 29966, 30175, 30118, 30082]): (45622, 45587, 45599, 45610), frozenset([30038, 29966, 30175, 30118, 30080]): (45622, 45587, 45599, 45612), frozenset([30038, 29966, 30175, 30119, 30076]): (45622, 45587, 45598, 45611), frozenset([30038, 29966, 30175, 30119, 30078]): (45622, 45587, 45598, 45612), frozenset([30038, 29966, 30175, 30119, 30082]): (45622, 45587, 45598, 45610), frozenset([30038, 29966, 30175, 30119, 30080]): (45622, 45587, 45598, 45612), frozenset([30038, 29966, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30038, 29966, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30038, 29966, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30038, 29966, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30038, 29967, 30169, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30169, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30169, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30169, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30169, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30169, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30169, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30169, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30038, 29967, 30169, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30169, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30038, 29967, 30169, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30171, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30171, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30171, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30171, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30171, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30171, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30171, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30171, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30038, 29967, 30171, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30171, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30038, 29967, 30171, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30173, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30173, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30173, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30173, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30173, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30038, 29967, 30173, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30038, 29967, 30173, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30038, 29967, 30173, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30038, 29967, 30173, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30173, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30038, 29967, 30173, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30038, 29967, 30175, 30117, 30076]): (45622, 45587, 45600, 45611), frozenset([30038, 29967, 30175, 30117, 30078]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30117, 30082]): (45622, 45587, 45600, 45610), frozenset([30038, 29967, 30175, 30117, 30080]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30118, 30076]): (45622, 45587, 45600, 45611), frozenset([30038, 29967, 30175, 30118, 30078]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30118, 30082]): (45622, 45587, 45600, 45610), frozenset([30038, 29967, 30175, 30118, 30080]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30119, 30076]): (45622, 45587, 45600, 45611), frozenset([30038, 29967, 30175, 30119, 30078]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30119, 30082]): (45622, 45587, 45600, 45610), frozenset([30038, 29967, 30175, 30119, 30080]): (45622, 45587, 45600, 45612), frozenset([30038, 29967, 30175, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30038, 29967, 30175, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30038, 29967, 30175, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30038, 29967, 30175, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30040, 29964, 30169, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30169, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30169, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30169, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30169, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30169, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30169, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30169, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30169, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29964, 30169, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30169, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29964, 30169, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29964, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29964, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30171, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30171, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30171, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30171, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30171, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30171, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30171, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30171, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30171, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29964, 30171, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30171, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29964, 30171, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29964, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29964, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30173, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30173, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30173, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30173, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30173, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29964, 30173, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30173, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29964, 30173, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29964, 30173, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29964, 30173, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30173, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29964, 30173, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29964, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29964, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29964, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29964, 30175, 30117, 30076]): (45622, 45587, 45599, 45611), frozenset([30040, 29964, 30175, 30117, 30078]): (45622, 45587, 45599, 45612), frozenset([30040, 29964, 30175, 30117, 30082]): (45622, 45587, 45599, 45610), frozenset([30040, 29964, 30175, 30117, 30080]): (45622, 45587, 45599, 45612), frozenset([30040, 29964, 30175, 30118, 30076]): (45622, 45587, 45599, 45611), frozenset([30040, 29964, 30175, 30118, 30078]): (45622, 45587, 45599, 45612), frozenset([30040, 29964, 30175, 30118, 30082]): (45622, 45587, 45599, 45610), frozenset([30040, 29964, 30175, 30118, 30080]): (45622, 45587, 45599, 45612), frozenset([30040, 29964, 30175, 30119, 30076]): (45622, 45587, 45598, 45611), frozenset([30040, 29964, 30175, 30119, 30078]): (45622, 45587, 45598, 45612), frozenset([30040, 29964, 30175, 30119, 30082]): (45622, 45587, 45598, 45610), frozenset([30040, 29964, 30175, 30119, 30080]): (45622, 45587, 45598, 45612), frozenset([30040, 29964, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30040, 29964, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30040, 29964, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30040, 29964, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30040, 29965, 30169, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30169, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30169, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30169, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30169, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30169, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30169, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30169, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30169, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30040, 29965, 30169, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30169, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30040, 29965, 30169, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29965, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29965, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30171, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30171, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30171, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30171, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30171, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30171, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30171, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30171, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30171, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30040, 29965, 30171, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30171, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30040, 29965, 30171, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29965, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29965, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30173, 30117, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30173, 30117, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30173, 30117, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30173, 30117, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30173, 30118, 30076]): (45623, 45588, 45599, 45611), frozenset([30040, 29965, 30173, 30118, 30078]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30173, 30118, 30082]): (45623, 45588, 45599, 45610), frozenset([30040, 29965, 30173, 30118, 30080]): (45623, 45588, 45599, 45612), frozenset([30040, 29965, 30173, 30119, 30076]): (45623, 45588, 45598, 45611), frozenset([30040, 29965, 30173, 30119, 30078]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30173, 30119, 30082]): (45623, 45588, 45598, 45610), frozenset([30040, 29965, 30173, 30119, 30080]): (45623, 45588, 45598, 45612), frozenset([30040, 29965, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29965, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29965, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29965, 30175, 30117, 30076]): (45622, 45588, 45599, 45611), frozenset([30040, 29965, 30175, 30117, 30078]): (45622, 45588, 45599, 45612), frozenset([30040, 29965, 30175, 30117, 30082]): (45622, 45588, 45599, 45610), frozenset([30040, 29965, 30175, 30117, 30080]): (45622, 45588, 45599, 45612), frozenset([30040, 29965, 30175, 30118, 30076]): (45622, 45588, 45599, 45611), frozenset([30040, 29965, 30175, 30118, 30078]): (45622, 45588, 45599, 45612), frozenset([30040, 29965, 30175, 30118, 30082]): (45622, 45588, 45599, 45610), frozenset([30040, 29965, 30175, 30118, 30080]): (45622, 45588, 45599, 45612), frozenset([30040, 29965, 30175, 30119, 30076]): (45622, 45588, 45598, 45611), frozenset([30040, 29965, 30175, 30119, 30078]): (45622, 45588, 45598, 45612), frozenset([30040, 29965, 30175, 30119, 30082]): (45622, 45588, 45598, 45610), frozenset([30040, 29965, 30175, 30119, 30080]): (45622, 45588, 45598, 45612), frozenset([30040, 29965, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30040, 29965, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30040, 29965, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30040, 29965, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30040, 29966, 30169, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30169, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30169, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30169, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30169, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30169, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30169, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30169, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30169, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29966, 30169, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30169, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29966, 30169, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30169, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29966, 30169, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30169, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29966, 30169, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30171, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30171, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30171, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30171, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30171, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30171, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30171, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30171, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30171, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29966, 30171, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30171, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29966, 30171, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30171, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29966, 30171, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30171, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29966, 30171, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30173, 30117, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30173, 30117, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30173, 30117, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30173, 30117, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30173, 30118, 30076]): (45623, 45587, 45599, 45611), frozenset([30040, 29966, 30173, 30118, 30078]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30173, 30118, 30082]): (45623, 45587, 45599, 45610), frozenset([30040, 29966, 30173, 30118, 30080]): (45623, 45587, 45599, 45612), frozenset([30040, 29966, 30173, 30119, 30076]): (45623, 45587, 45598, 45611), frozenset([30040, 29966, 30173, 30119, 30078]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30173, 30119, 30082]): (45623, 45587, 45598, 45610), frozenset([30040, 29966, 30173, 30119, 30080]): (45623, 45587, 45598, 45612), frozenset([30040, 29966, 30173, 30120, 30076]): (45623, 45586, 45598, 45611), frozenset([30040, 29966, 30173, 30120, 30078]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30173, 30120, 30082]): (45623, 45586, 45598, 45610), frozenset([30040, 29966, 30173, 30120, 30080]): (45623, 45586, 45598, 45612), frozenset([30040, 29966, 30175, 30117, 30076]): (45622, 45587, 45599, 45611), frozenset([30040, 29966, 30175, 30117, 30078]): (45622, 45587, 45599, 45612), frozenset([30040, 29966, 30175, 30117, 30082]): (45622, 45587, 45599, 45610), frozenset([30040, 29966, 30175, 30117, 30080]): (45622, 45587, 45599, 45612), frozenset([30040, 29966, 30175, 30118, 30076]): (45622, 45587, 45599, 45611), frozenset([30040, 29966, 30175, 30118, 30078]): (45622, 45587, 45599, 45612), frozenset([30040, 29966, 30175, 30118, 30082]): (45622, 45587, 45599, 45610), frozenset([30040, 29966, 30175, 30118, 30080]): (45622, 45587, 45599, 45612), frozenset([30040, 29966, 30175, 30119, 30076]): (45622, 45587, 45598, 45611), frozenset([30040, 29966, 30175, 30119, 30078]): (45622, 45587, 45598, 45612), frozenset([30040, 29966, 30175, 30119, 30082]): (45622, 45587, 45598, 45610), frozenset([30040, 29966, 30175, 30119, 30080]): (45622, 45587, 45598, 45612), frozenset([30040, 29966, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30040, 29966, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30040, 29966, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30040, 29966, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30040, 29967, 30169, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30169, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30169, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30169, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30169, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30169, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30169, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30169, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30040, 29967, 30169, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30169, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30040, 29967, 30169, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30171, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30171, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30171, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30171, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30171, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30171, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30171, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30171, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30040, 29967, 30171, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30171, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30040, 29967, 30171, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30173, 30117, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30173, 30117, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30117, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30173, 30117, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30118, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30173, 30118, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30118, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30173, 30118, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30119, 30076]): (45623, 45587, 45600, 45611), frozenset([30040, 29967, 30173, 30119, 30078]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30119, 30082]): (45623, 45587, 45600, 45610), frozenset([30040, 29967, 30173, 30119, 30080]): (45623, 45587, 45600, 45612), frozenset([30040, 29967, 30173, 30120, 30076]): (45623, 45586, 45600, 45611), frozenset([30040, 29967, 30173, 30120, 30078]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30173, 30120, 30082]): (45623, 45586, 45600, 45610), frozenset([30040, 29967, 30173, 30120, 30080]): (45623, 45586, 45600, 45612), frozenset([30040, 29967, 30175, 30117, 30076]): (45622, 45587, 45600, 45611), frozenset([30040, 29967, 30175, 30117, 30078]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30117, 30082]): (45622, 45587, 45600, 45610), frozenset([30040, 29967, 30175, 30117, 30080]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30118, 30076]): (45622, 45587, 45600, 45611), frozenset([30040, 29967, 30175, 30118, 30078]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30118, 30082]): (45622, 45587, 45600, 45610), frozenset([30040, 29967, 30175, 30118, 30080]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30119, 30076]): (45622, 45587, 45600, 45611), frozenset([30040, 29967, 30175, 30119, 30078]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30119, 30082]): (45622, 45587, 45600, 45610), frozenset([30040, 29967, 30175, 30119, 30080]): (45622, 45587, 45600, 45612), frozenset([30040, 29967, 30175, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30040, 29967, 30175, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30040, 29967, 30175, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30040, 29967, 30175, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29964, 30169, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30169, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30169, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30169, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30169, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30169, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30169, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30169, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30169, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30169, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30169, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30169, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30169, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30169, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30169, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30169, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30171, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30171, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30171, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30171, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30171, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30171, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30171, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30171, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30171, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30171, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30171, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30171, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30171, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30171, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30171, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30171, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30173, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30173, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30173, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30173, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30173, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30173, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30173, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30173, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30173, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30173, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30173, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30173, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30173, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30173, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30173, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30173, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30175, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30175, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30175, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30175, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30175, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29964, 30175, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30175, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29964, 30175, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29964, 30175, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30175, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30175, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30175, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29964, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29964, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29964, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30169, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30169, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30169, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30169, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30169, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30169, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30169, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30169, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30169, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30169, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30169, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30169, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30169, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30169, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30169, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30169, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30171, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30171, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30171, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30171, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30171, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30171, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30171, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30171, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30171, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30171, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30171, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30171, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30171, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30171, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30171, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30171, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30173, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30173, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30173, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30173, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30173, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30173, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30173, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30173, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30173, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30173, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30173, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30173, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30173, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30173, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30173, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30173, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30175, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30175, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30175, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30175, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30175, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29965, 30175, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30175, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29965, 30175, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29965, 30175, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30175, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30175, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30175, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29965, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29965, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29965, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30169, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30169, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30169, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30169, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30169, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30169, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30169, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30169, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30169, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30169, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30169, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30169, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30169, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30169, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30169, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30169, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30171, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30171, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30171, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30171, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30171, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30171, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30171, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30171, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30171, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30171, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30171, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30171, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30171, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30171, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30171, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30171, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30173, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30173, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30173, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30173, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30173, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30173, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30173, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30173, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30173, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30173, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30173, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30173, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30173, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30173, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30173, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30173, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30175, 30117, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30175, 30117, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30175, 30117, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30175, 30117, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30175, 30118, 30076]): (45622, 45586, 45599, 45611), frozenset([30042, 29966, 30175, 30118, 30078]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30175, 30118, 30082]): (45622, 45586, 45599, 45610), frozenset([30042, 29966, 30175, 30118, 30080]): (45622, 45586, 45599, 45612), frozenset([30042, 29966, 30175, 30119, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30175, 30119, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30175, 30119, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30175, 30119, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30175, 30120, 30076]): (45622, 45586, 45598, 45611), frozenset([30042, 29966, 30175, 30120, 30078]): (45622, 45586, 45598, 45612), frozenset([30042, 29966, 30175, 30120, 30082]): (45622, 45586, 45598, 45610), frozenset([30042, 29966, 30175, 30120, 30080]): (45622, 45586, 45598, 45612), frozenset([30042, 29967, 30169, 30117, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30169, 30117, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30117, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30169, 30117, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30118, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30169, 30118, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30118, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30169, 30118, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30119, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30169, 30119, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30119, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30169, 30119, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30169, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30169, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30169, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30117, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30171, 30117, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30117, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30171, 30117, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30118, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30171, 30118, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30118, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30171, 30118, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30119, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30171, 30119, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30119, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30171, 30119, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30171, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30171, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30171, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30117, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30173, 30117, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30117, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30173, 30117, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30118, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30173, 30118, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30118, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30173, 30118, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30119, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30173, 30119, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30119, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30173, 30119, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30173, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30173, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30173, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30117, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30175, 30117, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30117, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30175, 30117, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30118, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30175, 30118, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30118, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30175, 30118, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30119, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30175, 30119, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30119, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30175, 30119, 30080]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30120, 30076]): (45622, 45586, 45600, 45611), frozenset([30042, 29967, 30175, 30120, 30078]): (45622, 45586, 45600, 45612), frozenset([30042, 29967, 30175, 30120, 30082]): (45622, 45586, 45600, 45610), frozenset([30042, 29967, 30175, 30120, 30080]): (45622, 45586, 45600, 45612), frozenset([30056, 29979, 30149, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30149, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30149, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30149, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30149, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30149, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30149, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30149, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30149, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29979, 30149, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29979, 30149, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30149, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30149, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29979, 30149, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29979, 30149, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30149, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30151, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30151, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30151, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30151, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30151, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30151, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30151, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30151, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30151, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29979, 30151, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29979, 30151, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30151, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30151, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29979, 30151, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29979, 30151, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30151, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30153, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30153, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30153, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30153, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30153, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30153, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30153, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30153, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30153, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29979, 30153, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29979, 30153, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30153, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30153, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29979, 30153, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29979, 30153, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30153, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30155, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30155, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30155, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30155, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30155, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29979, 30155, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29979, 30155, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30155, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29979, 30155, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29979, 30155, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29979, 30155, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30155, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29979, 30155, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29979, 30155, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29979, 30155, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29979, 30155, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30149, 30127, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30149, 30127, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30149, 30127, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30149, 30127, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30149, 30128, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30149, 30128, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30149, 30128, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30149, 30128, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30149, 30129, 30100]): (45630, 45594, 45605, 45617), frozenset([30056, 29980, 30149, 30129, 30102]): (45630, 45594, 45605, 45616), frozenset([30056, 29980, 30149, 30129, 30098]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30149, 30129, 30096]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30149, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29980, 30149, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29980, 30149, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30149, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30151, 30127, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30151, 30127, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30151, 30127, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30151, 30127, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30151, 30128, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30151, 30128, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30151, 30128, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30151, 30128, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30151, 30129, 30100]): (45630, 45594, 45605, 45617), frozenset([30056, 29980, 30151, 30129, 30102]): (45630, 45594, 45605, 45616), frozenset([30056, 29980, 30151, 30129, 30098]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30151, 30129, 30096]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30151, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29980, 30151, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29980, 30151, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30151, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30153, 30127, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30153, 30127, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30153, 30127, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30153, 30127, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30153, 30128, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30153, 30128, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30153, 30128, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30153, 30128, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30153, 30129, 30100]): (45630, 45594, 45605, 45617), frozenset([30056, 29980, 30153, 30129, 30102]): (45630, 45594, 45605, 45616), frozenset([30056, 29980, 30153, 30129, 30098]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30153, 30129, 30096]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30153, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29980, 30153, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29980, 30153, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30153, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30155, 30127, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30155, 30127, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30155, 30127, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30155, 30127, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30155, 30128, 30100]): (45630, 45594, 45604, 45617), frozenset([30056, 29980, 30155, 30128, 30102]): (45630, 45594, 45604, 45616), frozenset([30056, 29980, 30155, 30128, 30098]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30155, 30128, 30096]): (45630, 45594, 45604, 45618), frozenset([30056, 29980, 30155, 30129, 30100]): (45630, 45594, 45605, 45617), frozenset([30056, 29980, 30155, 30129, 30102]): (45630, 45594, 45605, 45616), frozenset([30056, 29980, 30155, 30129, 30098]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30155, 30129, 30096]): (45630, 45594, 45605, 45618), frozenset([30056, 29980, 30155, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29980, 30155, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29980, 30155, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29980, 30155, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30149, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30149, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30149, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30149, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30149, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30149, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30149, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30149, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30149, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29981, 30149, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29981, 30149, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30149, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30149, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29981, 30149, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29981, 30149, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30149, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30151, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30151, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30151, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30151, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30151, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30151, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30151, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30151, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30151, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29981, 30151, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29981, 30151, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30151, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30151, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29981, 30151, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29981, 30151, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30151, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30153, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30153, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30153, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30153, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30153, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30153, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30153, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30153, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30153, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29981, 30153, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29981, 30153, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30153, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30153, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29981, 30153, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29981, 30153, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30153, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30155, 30127, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30155, 30127, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30155, 30127, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30155, 30127, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30155, 30128, 30100]): (45630, 45593, 45604, 45617), frozenset([30056, 29981, 30155, 30128, 30102]): (45630, 45593, 45604, 45616), frozenset([30056, 29981, 30155, 30128, 30098]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30155, 30128, 30096]): (45630, 45593, 45604, 45618), frozenset([30056, 29981, 30155, 30129, 30100]): (45630, 45593, 45605, 45617), frozenset([30056, 29981, 30155, 30129, 30102]): (45630, 45593, 45605, 45616), frozenset([30056, 29981, 30155, 30129, 30098]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30155, 30129, 30096]): (45630, 45593, 45605, 45618), frozenset([30056, 29981, 30155, 30130, 30100]): (45630, 45592, 45604, 45617), frozenset([30056, 29981, 30155, 30130, 30102]): (45630, 45592, 45604, 45616), frozenset([30056, 29981, 30155, 30130, 30098]): (45630, 45592, 45604, 45618), frozenset([30056, 29981, 30155, 30130, 30096]): (45630, 45592, 45604, 45618), frozenset([30056, 29982, 30149, 30127, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30149, 30127, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30149, 30127, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30127, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30128, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30149, 30128, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30149, 30128, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30128, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30129, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30149, 30129, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30149, 30129, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30129, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30149, 30130, 30100]): (45630, 45592, 45606, 45617), frozenset([30056, 29982, 30149, 30130, 30102]): (45630, 45592, 45606, 45616), frozenset([30056, 29982, 30149, 30130, 30098]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30149, 30130, 30096]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30151, 30127, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30151, 30127, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30151, 30127, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30127, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30128, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30151, 30128, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30151, 30128, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30128, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30129, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30151, 30129, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30151, 30129, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30129, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30151, 30130, 30100]): (45630, 45592, 45606, 45617), frozenset([30056, 29982, 30151, 30130, 30102]): (45630, 45592, 45606, 45616), frozenset([30056, 29982, 30151, 30130, 30098]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30151, 30130, 30096]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30153, 30127, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30153, 30127, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30153, 30127, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30127, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30128, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30153, 30128, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30153, 30128, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30128, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30129, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30153, 30129, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30153, 30129, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30129, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30153, 30130, 30100]): (45630, 45592, 45606, 45617), frozenset([30056, 29982, 30153, 30130, 30102]): (45630, 45592, 45606, 45616), frozenset([30056, 29982, 30153, 30130, 30098]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30153, 30130, 30096]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30155, 30127, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30155, 30127, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30155, 30127, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30127, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30128, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30155, 30128, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30155, 30128, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30128, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30129, 30100]): (45630, 45593, 45606, 45617), frozenset([30056, 29982, 30155, 30129, 30102]): (45630, 45593, 45606, 45616), frozenset([30056, 29982, 30155, 30129, 30098]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30129, 30096]): (45630, 45593, 45606, 45618), frozenset([30056, 29982, 30155, 30130, 30100]): (45630, 45592, 45606, 45617), frozenset([30056, 29982, 30155, 30130, 30102]): (45630, 45592, 45606, 45616), frozenset([30056, 29982, 30155, 30130, 30098]): (45630, 45592, 45606, 45618), frozenset([30056, 29982, 30155, 30130, 30096]): (45630, 45592, 45606, 45618), frozenset([30058, 29979, 30149, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30149, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30149, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30149, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30149, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30149, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30149, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30149, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30149, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29979, 30149, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29979, 30149, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30149, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29979, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29979, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30151, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30151, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30151, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30151, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30151, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30151, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30151, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30151, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30151, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29979, 30151, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29979, 30151, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30151, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29979, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29979, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30153, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30153, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30153, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30153, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30153, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29979, 30153, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29979, 30153, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30153, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29979, 30153, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29979, 30153, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29979, 30153, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30153, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29979, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29979, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29979, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29979, 30155, 30127, 30100]): (45628, 45593, 45604, 45617), frozenset([30058, 29979, 30155, 30127, 30102]): (45628, 45593, 45604, 45616), frozenset([30058, 29979, 30155, 30127, 30098]): (45628, 45593, 45604, 45618), frozenset([30058, 29979, 30155, 30127, 30096]): (45628, 45593, 45604, 45618), frozenset([30058, 29979, 30155, 30128, 30100]): (45628, 45593, 45604, 45617), frozenset([30058, 29979, 30155, 30128, 30102]): (45628, 45593, 45604, 45616), frozenset([30058, 29979, 30155, 30128, 30098]): (45628, 45593, 45604, 45618), frozenset([30058, 29979, 30155, 30128, 30096]): (45628, 45593, 45604, 45618), frozenset([30058, 29979, 30155, 30129, 30100]): (45628, 45593, 45605, 45617), frozenset([30058, 29979, 30155, 30129, 30102]): (45628, 45593, 45605, 45616), frozenset([30058, 29979, 30155, 30129, 30098]): (45628, 45593, 45605, 45618), frozenset([30058, 29979, 30155, 30129, 30096]): (45628, 45593, 45605, 45618), frozenset([30058, 29979, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30058, 29979, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30058, 29979, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30058, 29979, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30058, 29980, 30149, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30149, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30149, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30149, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30149, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30149, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30149, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30149, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30149, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30058, 29980, 30149, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30058, 29980, 30149, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30149, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29980, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29980, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30151, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30151, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30151, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30151, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30151, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30151, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30151, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30151, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30151, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30058, 29980, 30151, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30058, 29980, 30151, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30151, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29980, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29980, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30153, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30153, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30153, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30153, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30153, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30058, 29980, 30153, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30058, 29980, 30153, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30153, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30058, 29980, 30153, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30058, 29980, 30153, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30058, 29980, 30153, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30153, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30058, 29980, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29980, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29980, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29980, 30155, 30127, 30100]): (45628, 45594, 45604, 45617), frozenset([30058, 29980, 30155, 30127, 30102]): (45628, 45594, 45604, 45616), frozenset([30058, 29980, 30155, 30127, 30098]): (45628, 45594, 45604, 45618), frozenset([30058, 29980, 30155, 30127, 30096]): (45628, 45594, 45604, 45618), frozenset([30058, 29980, 30155, 30128, 30100]): (45628, 45594, 45604, 45617), frozenset([30058, 29980, 30155, 30128, 30102]): (45628, 45594, 45604, 45616), frozenset([30058, 29980, 30155, 30128, 30098]): (45628, 45594, 45604, 45618), frozenset([30058, 29980, 30155, 30128, 30096]): (45628, 45594, 45604, 45618), frozenset([30058, 29980, 30155, 30129, 30100]): (45628, 45594, 45605, 45617), frozenset([30058, 29980, 30155, 30129, 30102]): (45628, 45594, 45605, 45616), frozenset([30058, 29980, 30155, 30129, 30098]): (45628, 45594, 45605, 45618), frozenset([30058, 29980, 30155, 30129, 30096]): (45628, 45594, 45605, 45618), frozenset([30058, 29980, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30058, 29980, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30058, 29980, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30058, 29980, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30058, 29981, 30149, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30149, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30149, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30149, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30149, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30149, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30149, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30149, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30149, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29981, 30149, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29981, 30149, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30149, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29981, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29981, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30151, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30151, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30151, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30151, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30151, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30151, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30151, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30151, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30151, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29981, 30151, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29981, 30151, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30151, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29981, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29981, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30153, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30153, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30153, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30153, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30153, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30058, 29981, 30153, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30058, 29981, 30153, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30153, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30058, 29981, 30153, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30058, 29981, 30153, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30058, 29981, 30153, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30153, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30058, 29981, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30058, 29981, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30058, 29981, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30058, 29981, 30155, 30127, 30100]): (45628, 45593, 45604, 45617), frozenset([30058, 29981, 30155, 30127, 30102]): (45628, 45593, 45604, 45616), frozenset([30058, 29981, 30155, 30127, 30098]): (45628, 45593, 45604, 45618), frozenset([30058, 29981, 30155, 30127, 30096]): (45628, 45593, 45604, 45618), frozenset([30058, 29981, 30155, 30128, 30100]): (45628, 45593, 45604, 45617), frozenset([30058, 29981, 30155, 30128, 30102]): (45628, 45593, 45604, 45616), frozenset([30058, 29981, 30155, 30128, 30098]): (45628, 45593, 45604, 45618), frozenset([30058, 29981, 30155, 30128, 30096]): (45628, 45593, 45604, 45618), frozenset([30058, 29981, 30155, 30129, 30100]): (45628, 45593, 45605, 45617), frozenset([30058, 29981, 30155, 30129, 30102]): (45628, 45593, 45605, 45616), frozenset([30058, 29981, 30155, 30129, 30098]): (45628, 45593, 45605, 45618), frozenset([30058, 29981, 30155, 30129, 30096]): (45628, 45593, 45605, 45618), frozenset([30058, 29981, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30058, 29981, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30058, 29981, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30058, 29981, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30058, 29982, 30149, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30149, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30149, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30149, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30149, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30149, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30149, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30149, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30058, 29982, 30149, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30058, 29982, 30149, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30149, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30151, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30151, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30151, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30151, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30151, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30151, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30151, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30151, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30058, 29982, 30151, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30058, 29982, 30151, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30151, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30153, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30153, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30153, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30153, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30153, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30058, 29982, 30153, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30058, 29982, 30153, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30058, 29982, 30153, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30058, 29982, 30153, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30058, 29982, 30153, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30153, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30058, 29982, 30155, 30127, 30100]): (45628, 45593, 45606, 45617), frozenset([30058, 29982, 30155, 30127, 30102]): (45628, 45593, 45606, 45616), frozenset([30058, 29982, 30155, 30127, 30098]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30127, 30096]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30128, 30100]): (45628, 45593, 45606, 45617), frozenset([30058, 29982, 30155, 30128, 30102]): (45628, 45593, 45606, 45616), frozenset([30058, 29982, 30155, 30128, 30098]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30128, 30096]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30129, 30100]): (45628, 45593, 45606, 45617), frozenset([30058, 29982, 30155, 30129, 30102]): (45628, 45593, 45606, 45616), frozenset([30058, 29982, 30155, 30129, 30098]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30129, 30096]): (45628, 45593, 45606, 45618), frozenset([30058, 29982, 30155, 30130, 30100]): (45628, 45592, 45606, 45617), frozenset([30058, 29982, 30155, 30130, 30102]): (45628, 45592, 45606, 45616), frozenset([30058, 29982, 30155, 30130, 30098]): (45628, 45592, 45606, 45618), frozenset([30058, 29982, 30155, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30060, 29979, 30149, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30149, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30149, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30149, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30149, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30149, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30149, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30149, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30149, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29979, 30149, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29979, 30149, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30149, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29979, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29979, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30151, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30151, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30151, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30151, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30151, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30151, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30151, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30151, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30151, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29979, 30151, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29979, 30151, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30151, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29979, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29979, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30153, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30153, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30153, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30153, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30153, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29979, 30153, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29979, 30153, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30153, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29979, 30153, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29979, 30153, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29979, 30153, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30153, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29979, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29979, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29979, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29979, 30155, 30127, 30100]): (45628, 45593, 45604, 45617), frozenset([30060, 29979, 30155, 30127, 30102]): (45628, 45593, 45604, 45616), frozenset([30060, 29979, 30155, 30127, 30098]): (45628, 45593, 45604, 45618), frozenset([30060, 29979, 30155, 30127, 30096]): (45628, 45593, 45604, 45618), frozenset([30060, 29979, 30155, 30128, 30100]): (45628, 45593, 45604, 45617), frozenset([30060, 29979, 30155, 30128, 30102]): (45628, 45593, 45604, 45616), frozenset([30060, 29979, 30155, 30128, 30098]): (45628, 45593, 45604, 45618), frozenset([30060, 29979, 30155, 30128, 30096]): (45628, 45593, 45604, 45618), frozenset([30060, 29979, 30155, 30129, 30100]): (45628, 45593, 45605, 45617), frozenset([30060, 29979, 30155, 30129, 30102]): (45628, 45593, 45605, 45616), frozenset([30060, 29979, 30155, 30129, 30098]): (45628, 45593, 45605, 45618), frozenset([30060, 29979, 30155, 30129, 30096]): (45628, 45593, 45605, 45618), frozenset([30060, 29979, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30060, 29979, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30060, 29979, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30060, 29979, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30060, 29980, 30149, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30149, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30149, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30149, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30149, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30149, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30149, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30149, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30149, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30060, 29980, 30149, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30060, 29980, 30149, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30149, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29980, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29980, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30151, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30151, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30151, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30151, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30151, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30151, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30151, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30151, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30151, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30060, 29980, 30151, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30060, 29980, 30151, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30151, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29980, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29980, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30153, 30127, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30153, 30127, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30153, 30127, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30153, 30127, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30153, 30128, 30100]): (45629, 45594, 45604, 45617), frozenset([30060, 29980, 30153, 30128, 30102]): (45629, 45594, 45604, 45616), frozenset([30060, 29980, 30153, 30128, 30098]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30153, 30128, 30096]): (45629, 45594, 45604, 45618), frozenset([30060, 29980, 30153, 30129, 30100]): (45629, 45594, 45605, 45617), frozenset([30060, 29980, 30153, 30129, 30102]): (45629, 45594, 45605, 45616), frozenset([30060, 29980, 30153, 30129, 30098]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30153, 30129, 30096]): (45629, 45594, 45605, 45618), frozenset([30060, 29980, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29980, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29980, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29980, 30155, 30127, 30100]): (45628, 45594, 45604, 45617), frozenset([30060, 29980, 30155, 30127, 30102]): (45628, 45594, 45604, 45616), frozenset([30060, 29980, 30155, 30127, 30098]): (45628, 45594, 45604, 45618), frozenset([30060, 29980, 30155, 30127, 30096]): (45628, 45594, 45604, 45618), frozenset([30060, 29980, 30155, 30128, 30100]): (45628, 45594, 45604, 45617), frozenset([30060, 29980, 30155, 30128, 30102]): (45628, 45594, 45604, 45616), frozenset([30060, 29980, 30155, 30128, 30098]): (45628, 45594, 45604, 45618), frozenset([30060, 29980, 30155, 30128, 30096]): (45628, 45594, 45604, 45618), frozenset([30060, 29980, 30155, 30129, 30100]): (45628, 45594, 45605, 45617), frozenset([30060, 29980, 30155, 30129, 30102]): (45628, 45594, 45605, 45616), frozenset([30060, 29980, 30155, 30129, 30098]): (45628, 45594, 45605, 45618), frozenset([30060, 29980, 30155, 30129, 30096]): (45628, 45594, 45605, 45618), frozenset([30060, 29980, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30060, 29980, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30060, 29980, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30060, 29980, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30060, 29981, 30149, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30149, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30149, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30149, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30149, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30149, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30149, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30149, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30149, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29981, 30149, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29981, 30149, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30149, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30149, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29981, 30149, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29981, 30149, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30149, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30151, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30151, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30151, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30151, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30151, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30151, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30151, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30151, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30151, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29981, 30151, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29981, 30151, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30151, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30151, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29981, 30151, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29981, 30151, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30151, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30153, 30127, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30153, 30127, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30153, 30127, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30153, 30127, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30153, 30128, 30100]): (45629, 45593, 45604, 45617), frozenset([30060, 29981, 30153, 30128, 30102]): (45629, 45593, 45604, 45616), frozenset([30060, 29981, 30153, 30128, 30098]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30153, 30128, 30096]): (45629, 45593, 45604, 45618), frozenset([30060, 29981, 30153, 30129, 30100]): (45629, 45593, 45605, 45617), frozenset([30060, 29981, 30153, 30129, 30102]): (45629, 45593, 45605, 45616), frozenset([30060, 29981, 30153, 30129, 30098]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30153, 30129, 30096]): (45629, 45593, 45605, 45618), frozenset([30060, 29981, 30153, 30130, 30100]): (45629, 45592, 45604, 45617), frozenset([30060, 29981, 30153, 30130, 30102]): (45629, 45592, 45604, 45616), frozenset([30060, 29981, 30153, 30130, 30098]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30153, 30130, 30096]): (45629, 45592, 45604, 45618), frozenset([30060, 29981, 30155, 30127, 30100]): (45628, 45593, 45604, 45617), frozenset([30060, 29981, 30155, 30127, 30102]): (45628, 45593, 45604, 45616), frozenset([30060, 29981, 30155, 30127, 30098]): (45628, 45593, 45604, 45618), frozenset([30060, 29981, 30155, 30127, 30096]): (45628, 45593, 45604, 45618), frozenset([30060, 29981, 30155, 30128, 30100]): (45628, 45593, 45604, 45617), frozenset([30060, 29981, 30155, 30128, 30102]): (45628, 45593, 45604, 45616), frozenset([30060, 29981, 30155, 30128, 30098]): (45628, 45593, 45604, 45618), frozenset([30060, 29981, 30155, 30128, 30096]): (45628, 45593, 45604, 45618), frozenset([30060, 29981, 30155, 30129, 30100]): (45628, 45593, 45605, 45617), frozenset([30060, 29981, 30155, 30129, 30102]): (45628, 45593, 45605, 45616), frozenset([30060, 29981, 30155, 30129, 30098]): (45628, 45593, 45605, 45618), frozenset([30060, 29981, 30155, 30129, 30096]): (45628, 45593, 45605, 45618), frozenset([30060, 29981, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30060, 29981, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30060, 29981, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30060, 29981, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30060, 29982, 30149, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30149, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30149, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30149, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30149, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30149, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30149, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30149, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30060, 29982, 30149, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30060, 29982, 30149, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30149, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30151, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30151, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30151, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30151, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30151, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30151, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30151, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30151, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30060, 29982, 30151, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30060, 29982, 30151, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30151, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30153, 30127, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30153, 30127, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30153, 30127, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30127, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30128, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30153, 30128, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30153, 30128, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30128, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30129, 30100]): (45629, 45593, 45606, 45617), frozenset([30060, 29982, 30153, 30129, 30102]): (45629, 45593, 45606, 45616), frozenset([30060, 29982, 30153, 30129, 30098]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30129, 30096]): (45629, 45593, 45606, 45618), frozenset([30060, 29982, 30153, 30130, 30100]): (45629, 45592, 45606, 45617), frozenset([30060, 29982, 30153, 30130, 30102]): (45629, 45592, 45606, 45616), frozenset([30060, 29982, 30153, 30130, 30098]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30153, 30130, 30096]): (45629, 45592, 45606, 45618), frozenset([30060, 29982, 30155, 30127, 30100]): (45628, 45593, 45606, 45617), frozenset([30060, 29982, 30155, 30127, 30102]): (45628, 45593, 45606, 45616), frozenset([30060, 29982, 30155, 30127, 30098]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30127, 30096]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30128, 30100]): (45628, 45593, 45606, 45617), frozenset([30060, 29982, 30155, 30128, 30102]): (45628, 45593, 45606, 45616), frozenset([30060, 29982, 30155, 30128, 30098]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30128, 30096]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30129, 30100]): (45628, 45593, 45606, 45617), frozenset([30060, 29982, 30155, 30129, 30102]): (45628, 45593, 45606, 45616), frozenset([30060, 29982, 30155, 30129, 30098]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30129, 30096]): (45628, 45593, 45606, 45618), frozenset([30060, 29982, 30155, 30130, 30100]): (45628, 45592, 45606, 45617), frozenset([30060, 29982, 30155, 30130, 30102]): (45628, 45592, 45606, 45616), frozenset([30060, 29982, 30155, 30130, 30098]): (45628, 45592, 45606, 45618), frozenset([30060, 29982, 30155, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29979, 30149, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30149, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30149, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30149, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30149, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30149, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30149, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30149, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30149, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29979, 30149, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29979, 30149, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30149, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30149, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30149, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30149, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30149, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30151, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30151, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30151, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30151, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29979, 30151, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29979, 30151, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30151, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30151, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30151, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30151, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30151, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30153, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30153, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30153, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30153, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29979, 30153, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29979, 30153, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30153, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30153, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30153, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30153, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30153, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30155, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30155, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30155, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30155, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29979, 30155, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29979, 30155, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30155, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29979, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29979, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29979, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29979, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30149, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30149, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30149, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30149, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29980, 30149, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29980, 30149, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30149, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30149, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30149, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30149, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30149, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30151, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30151, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30151, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30151, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29980, 30151, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29980, 30151, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30151, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30151, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30151, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30151, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30151, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30153, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30153, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30153, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30153, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29980, 30153, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29980, 30153, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30153, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30153, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30153, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30153, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30153, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30155, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30155, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30155, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30155, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29980, 30155, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29980, 30155, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30155, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29980, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29980, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29980, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29980, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30149, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30149, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30149, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30149, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29981, 30149, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29981, 30149, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30149, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30149, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30149, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30149, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30149, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30151, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30151, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30151, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30151, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29981, 30151, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29981, 30151, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30151, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30151, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30151, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30151, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30151, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30153, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30153, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30153, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30153, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29981, 30153, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29981, 30153, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30153, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30153, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30153, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30153, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30153, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30127, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30155, 30127, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30155, 30127, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30127, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30128, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30155, 30128, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30155, 30128, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30128, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30129, 30100]): (45628, 45592, 45605, 45617), frozenset([30062, 29981, 30155, 30129, 30102]): (45628, 45592, 45605, 45616), frozenset([30062, 29981, 30155, 30129, 30098]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30155, 30129, 30096]): (45628, 45592, 45605, 45618), frozenset([30062, 29981, 30155, 30130, 30100]): (45628, 45592, 45604, 45617), frozenset([30062, 29981, 30155, 30130, 30102]): (45628, 45592, 45604, 45616), frozenset([30062, 29981, 30155, 30130, 30098]): (45628, 45592, 45604, 45618), frozenset([30062, 29981, 30155, 30130, 30096]): (45628, 45592, 45604, 45618), frozenset([30062, 29982, 30149, 30127, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30149, 30127, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30149, 30127, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30127, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30128, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30149, 30128, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30149, 30128, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30128, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30129, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30149, 30129, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30149, 30129, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30129, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30130, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30149, 30130, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30149, 30130, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30149, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30127, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30151, 30127, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30151, 30127, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30127, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30128, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30151, 30128, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30151, 30128, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30128, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30129, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30151, 30129, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30151, 30129, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30129, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30130, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30151, 30130, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30151, 30130, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30151, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30127, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30153, 30127, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30153, 30127, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30127, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30128, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30153, 30128, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30153, 30128, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30128, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30129, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30153, 30129, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30153, 30129, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30129, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30130, 30100]): (45628, 45592, 45606, 45617), frozenset([30062, 29982, 30153, 30130, 30102]): (45628, 45592, 45606, 45616), frozenset([30062, 29982, 30153, 30130, 30098]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30153, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30062, 29982, 30155, 30127, 30100]): (45628, 45593, 45606, 45617), frozenset([30062, 29982, 30155, 30127, 30102]): (45628, 45594, 45606, 45616), frozenset([30062, 29982, 30155, 30127, 30098]): (45628, 45595, 45606, 45618), frozenset([30062, 29982, 30155, 30127, 30096]): (45628, 45596, 45606, 45618), frozenset([30062, 29982, 30155, 30128, 30100]): (45628, 45597, 45606, 45617), frozenset([30062, 29982, 30155, 30128, 30102]): (45628, 45598, 45606, 45616), frozenset([30062, 29982, 30155, 30128, 30098]): (45628, 45599, 45606, 45618), frozenset([30062, 29982, 30155, 30128, 30096]): (45628, 45600, 45606, 45618), frozenset([30062, 29982, 30155, 30129, 30100]): (45628, 45601, 45606, 45617), frozenset([30062, 29982, 30155, 30129, 30102]): (45628, 45602, 45606, 45616), frozenset([30062, 29982, 30155, 30129, 30098]): (45628, 45603, 45606, 45618), frozenset([30062, 29982, 30155, 30129, 30096]): (45628, 45604, 45606, 45618), frozenset([30062, 29982, 30155, 30130, 30100]): (45628, 45605, 45606, 45617), frozenset([30062, 29982, 30155, 30130, 30102]): (45628, 45606, 45606, 45616), frozenset([30062, 29982, 30155, 30130, 30098]): (45628, 45607, 45606, 45618), frozenset([30062, 29982, 30155, 30130, 30096]): (45628, 45592, 45606, 45618), frozenset([30066, 29974, 30159, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30159, 30132, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30159, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30159, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30159, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30159, 30133, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30159, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30159, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30159, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30159, 30134, 30110]): (45633, 45596, 45608, 45621), frozenset([30066, 29974, 30159, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30159, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29974, 30159, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30159, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29974, 30159, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30159, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29974, 30161, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30161, 30132, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30161, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30161, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30161, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30161, 30133, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30161, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30161, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30161, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30161, 30134, 30110]): (45633, 45596, 45608, 45621), frozenset([30066, 29974, 30161, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30161, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29974, 30161, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30161, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29974, 30161, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30161, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29974, 30163, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30163, 30132, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30163, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30163, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30163, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30163, 30133, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30163, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30163, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30163, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30163, 30134, 30110]): (45633, 45596, 45608, 45621), frozenset([30066, 29974, 30163, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30163, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29974, 30163, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30163, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29974, 30163, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30163, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29974, 30165, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30165, 30132, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30165, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30165, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30165, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30165, 30133, 30110]): (45633, 45596, 45607, 45621), frozenset([30066, 29974, 30165, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29974, 30165, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29974, 30165, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30165, 30134, 30110]): (45633, 45596, 45608, 45621), frozenset([30066, 29974, 30165, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29974, 30165, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29974, 30165, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30165, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29974, 30165, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29974, 30165, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29975, 30159, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30132, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30159, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30133, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30159, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30159, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30159, 30134, 30110]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30159, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30159, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29975, 30159, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30159, 30135, 30110]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30159, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30159, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29975, 30161, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30132, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30161, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30133, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30161, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30161, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30161, 30134, 30110]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30161, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30161, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29975, 30161, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30161, 30135, 30110]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30161, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30161, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29975, 30163, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30132, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30163, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30133, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30163, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30163, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30163, 30134, 30110]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30163, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30163, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29975, 30163, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30163, 30135, 30110]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30163, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30163, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29975, 30165, 30132, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30132, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30132, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30132, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30165, 30133, 30106]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30133, 30110]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30133, 30108]): (45633, 45596, 45607, 45620), frozenset([30066, 29975, 30165, 30133, 30112]): (45633, 45596, 45607, 45619), frozenset([30066, 29975, 30165, 30134, 30106]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30165, 30134, 30110]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30165, 30134, 30108]): (45633, 45596, 45608, 45620), frozenset([30066, 29975, 30165, 30134, 30112]): (45633, 45596, 45608, 45619), frozenset([30066, 29975, 30165, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30165, 30135, 30110]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30165, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29975, 30165, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29976, 30159, 30132, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30159, 30132, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30159, 30132, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30159, 30132, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30159, 30133, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30159, 30133, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30159, 30133, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30159, 30133, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30159, 30134, 30106]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30159, 30134, 30110]): (45633, 45597, 45608, 45621), frozenset([30066, 29976, 30159, 30134, 30108]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30159, 30134, 30112]): (45633, 45597, 45608, 45619), frozenset([30066, 29976, 30159, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30159, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29976, 30159, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30159, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29976, 30161, 30132, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30161, 30132, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30161, 30132, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30161, 30132, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30161, 30133, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30161, 30133, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30161, 30133, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30161, 30133, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30161, 30134, 30106]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30161, 30134, 30110]): (45633, 45597, 45608, 45621), frozenset([30066, 29976, 30161, 30134, 30108]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30161, 30134, 30112]): (45633, 45597, 45608, 45619), frozenset([30066, 29976, 30161, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30161, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29976, 30161, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30161, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29976, 30163, 30132, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30163, 30132, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30163, 30132, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30163, 30132, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30163, 30133, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30163, 30133, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30163, 30133, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30163, 30133, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30163, 30134, 30106]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30163, 30134, 30110]): (45633, 45597, 45608, 45621), frozenset([30066, 29976, 30163, 30134, 30108]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30163, 30134, 30112]): (45633, 45597, 45608, 45619), frozenset([30066, 29976, 30163, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30163, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29976, 30163, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30163, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29976, 30165, 30132, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30165, 30132, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30165, 30132, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30165, 30132, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30165, 30133, 30106]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30165, 30133, 30110]): (45633, 45597, 45607, 45621), frozenset([30066, 29976, 30165, 30133, 30108]): (45633, 45597, 45607, 45620), frozenset([30066, 29976, 30165, 30133, 30112]): (45633, 45597, 45607, 45619), frozenset([30066, 29976, 30165, 30134, 30106]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30165, 30134, 30110]): (45633, 45597, 45608, 45621), frozenset([30066, 29976, 30165, 30134, 30108]): (45633, 45597, 45608, 45620), frozenset([30066, 29976, 30165, 30134, 30112]): (45633, 45597, 45608, 45619), frozenset([30066, 29976, 30165, 30135, 30106]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30165, 30135, 30110]): (45633, 45595, 45607, 45621), frozenset([30066, 29976, 30165, 30135, 30108]): (45633, 45595, 45607, 45620), frozenset([30066, 29976, 30165, 30135, 30112]): (45633, 45595, 45607, 45619), frozenset([30066, 29977, 30159, 30132, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30132, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30159, 30132, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30132, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30159, 30133, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30133, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30159, 30133, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30133, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30159, 30134, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30134, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30159, 30134, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30159, 30134, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30159, 30135, 30106]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30159, 30135, 30110]): (45633, 45595, 45609, 45621), frozenset([30066, 29977, 30159, 30135, 30108]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30159, 30135, 30112]): (45633, 45595, 45609, 45619), frozenset([30066, 29977, 30161, 30132, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30132, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30161, 30132, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30132, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30161, 30133, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30133, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30161, 30133, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30133, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30161, 30134, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30134, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30161, 30134, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30161, 30134, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30161, 30135, 30106]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30161, 30135, 30110]): (45633, 45595, 45609, 45621), frozenset([30066, 29977, 30161, 30135, 30108]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30161, 30135, 30112]): (45633, 45595, 45609, 45619), frozenset([30066, 29977, 30163, 30132, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30132, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30163, 30132, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30132, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30163, 30133, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30133, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30163, 30133, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30133, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30163, 30134, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30134, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30163, 30134, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30163, 30134, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30163, 30135, 30106]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30163, 30135, 30110]): (45633, 45595, 45609, 45621), frozenset([30066, 29977, 30163, 30135, 30108]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30163, 30135, 30112]): (45633, 45595, 45609, 45619), frozenset([30066, 29977, 30165, 30132, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30132, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30165, 30132, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30132, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30165, 30133, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30133, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30165, 30133, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30133, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30165, 30134, 30106]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30134, 30110]): (45633, 45596, 45609, 45621), frozenset([30066, 29977, 30165, 30134, 30108]): (45633, 45596, 45609, 45620), frozenset([30066, 29977, 30165, 30134, 30112]): (45633, 45596, 45609, 45619), frozenset([30066, 29977, 30165, 30135, 30106]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30165, 30135, 30110]): (45633, 45595, 45609, 45621), frozenset([30066, 29977, 30165, 30135, 30108]): (45633, 45595, 45609, 45620), frozenset([30066, 29977, 30165, 30135, 30112]): (45633, 45595, 45609, 45619), frozenset([30068, 29974, 30159, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30159, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30159, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30159, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30159, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30159, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30159, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30159, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30159, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30159, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30068, 29974, 30159, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30159, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29974, 30159, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30159, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29974, 30159, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29974, 30161, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30161, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30161, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30161, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30161, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30161, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30161, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30161, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30161, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30161, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30068, 29974, 30161, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30161, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29974, 30161, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30161, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29974, 30161, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29974, 30163, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30163, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30163, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30163, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30163, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30163, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30068, 29974, 30163, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30163, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29974, 30163, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30163, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30068, 29974, 30163, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30163, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29974, 30163, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30163, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29974, 30163, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29974, 30165, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30165, 30132, 30110]): (45631, 45596, 45607, 45621), frozenset([30068, 29974, 30165, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30165, 30132, 30112]): (45631, 45596, 45607, 45619), frozenset([30068, 29974, 30165, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30165, 30133, 30110]): (45631, 45596, 45607, 45621), frozenset([30068, 29974, 30165, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29974, 30165, 30133, 30112]): (45631, 45596, 45607, 45619), frozenset([30068, 29974, 30165, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30165, 30134, 30110]): (45631, 45596, 45608, 45621), frozenset([30068, 29974, 30165, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30068, 29974, 30165, 30134, 30112]): (45631, 45596, 45608, 45619), frozenset([30068, 29974, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30068, 29974, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29974, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30068, 29975, 30159, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30159, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30159, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30159, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30159, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30159, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30159, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29975, 30159, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30159, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30159, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29975, 30161, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30161, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30161, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30161, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30161, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30161, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30161, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29975, 30161, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30161, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30161, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29975, 30163, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30163, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30068, 29975, 30163, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30068, 29975, 30163, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30163, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30163, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30068, 29975, 30163, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30068, 29975, 30163, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30163, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30163, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29975, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29975, 30165, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30132, 30110]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30132, 30112]): (45631, 45596, 45607, 45619), frozenset([30068, 29975, 30165, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30133, 30110]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30068, 29975, 30165, 30133, 30112]): (45631, 45596, 45607, 45619), frozenset([30068, 29975, 30165, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30068, 29975, 30165, 30134, 30110]): (45631, 45596, 45608, 45620), frozenset([30068, 29975, 30165, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30068, 29975, 30165, 30134, 30112]): (45631, 45596, 45608, 45619), frozenset([30068, 29975, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29975, 30165, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30068, 29975, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29975, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30068, 29976, 30159, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30159, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30159, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30159, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30159, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30159, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30159, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30159, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30159, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30159, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30068, 29976, 30159, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30159, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30068, 29976, 30159, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30159, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29976, 30159, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29976, 30161, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30161, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30161, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30161, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30161, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30161, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30161, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30161, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30161, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30161, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30068, 29976, 30161, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30161, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30068, 29976, 30161, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30161, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29976, 30161, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29976, 30163, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30163, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30163, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30163, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30163, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30163, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30068, 29976, 30163, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30068, 29976, 30163, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30068, 29976, 30163, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30163, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30068, 29976, 30163, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30068, 29976, 30163, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30068, 29976, 30163, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30163, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30068, 29976, 30163, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30068, 29976, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30068, 29976, 30165, 30132, 30106]): (45631, 45597, 45607, 45620), frozenset([30068, 29976, 30165, 30132, 30110]): (45631, 45597, 45607, 45621), frozenset([30068, 29976, 30165, 30132, 30108]): (45631, 45597, 45607, 45620), frozenset([30068, 29976, 30165, 30132, 30112]): (45631, 45597, 45607, 45619), frozenset([30068, 29976, 30165, 30133, 30106]): (45631, 45597, 45607, 45620), frozenset([30068, 29976, 30165, 30133, 30110]): (45631, 45597, 45607, 45621), frozenset([30068, 29976, 30165, 30133, 30108]): (45631, 45597, 45607, 45620), frozenset([30068, 29976, 30165, 30133, 30112]): (45631, 45597, 45607, 45619), frozenset([30068, 29976, 30165, 30134, 30106]): (45631, 45597, 45608, 45620), frozenset([30068, 29976, 30165, 30134, 30110]): (45631, 45597, 45608, 45621), frozenset([30068, 29976, 30165, 30134, 30108]): (45631, 45597, 45608, 45620), frozenset([30068, 29976, 30165, 30134, 30112]): (45631, 45597, 45608, 45619), frozenset([30068, 29976, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30068, 29976, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30068, 29976, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30068, 29976, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30068, 29977, 30159, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30159, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30159, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30159, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30159, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30159, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30159, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30159, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30159, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30068, 29977, 30159, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30159, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30068, 29977, 30161, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30161, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30161, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30161, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30161, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30161, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30161, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30161, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30161, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30068, 29977, 30161, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30161, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30068, 29977, 30163, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30163, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30163, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30163, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30163, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30068, 29977, 30163, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30068, 29977, 30163, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30068, 29977, 30163, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30163, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30068, 29977, 30163, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30068, 29977, 30163, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30068, 29977, 30165, 30132, 30106]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30132, 30110]): (45631, 45596, 45609, 45621), frozenset([30068, 29977, 30165, 30132, 30108]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30132, 30112]): (45631, 45596, 45609, 45619), frozenset([30068, 29977, 30165, 30133, 30106]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30133, 30110]): (45631, 45596, 45609, 45621), frozenset([30068, 29977, 30165, 30133, 30108]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30133, 30112]): (45631, 45596, 45609, 45619), frozenset([30068, 29977, 30165, 30134, 30106]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30134, 30110]): (45631, 45596, 45609, 45621), frozenset([30068, 29977, 30165, 30134, 30108]): (45631, 45596, 45609, 45620), frozenset([30068, 29977, 30165, 30134, 30112]): (45631, 45596, 45609, 45619), frozenset([30068, 29977, 30165, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30068, 29977, 30165, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30068, 29977, 30165, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30068, 29977, 30165, 30135, 30112]): (45631, 45595, 45609, 45619), frozenset([30070, 29974, 30159, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30159, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30159, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30159, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30159, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30159, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30159, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30159, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30159, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30159, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30070, 29974, 30159, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30159, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29974, 30159, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30159, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29974, 30159, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29974, 30161, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30161, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30161, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30161, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30161, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30161, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30161, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30161, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30161, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30161, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30070, 29974, 30161, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30161, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29974, 30161, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30161, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29974, 30161, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29974, 30163, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30163, 30132, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30163, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30163, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30163, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30163, 30133, 30110]): (45632, 45596, 45607, 45621), frozenset([30070, 29974, 30163, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30163, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29974, 30163, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30163, 30134, 30110]): (45632, 45596, 45608, 45621), frozenset([30070, 29974, 30163, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30163, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29974, 30163, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30163, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29974, 30163, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29974, 30165, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30165, 30132, 30110]): (45631, 45596, 45607, 45621), frozenset([30070, 29974, 30165, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30165, 30132, 30112]): (45631, 45596, 45607, 45619), frozenset([30070, 29974, 30165, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30165, 30133, 30110]): (45631, 45596, 45607, 45621), frozenset([30070, 29974, 30165, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29974, 30165, 30133, 30112]): (45631, 45596, 45607, 45619), frozenset([30070, 29974, 30165, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30165, 30134, 30110]): (45631, 45596, 45608, 45621), frozenset([30070, 29974, 30165, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30070, 29974, 30165, 30134, 30112]): (45631, 45596, 45608, 45619), frozenset([30070, 29974, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30070, 29974, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29974, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30070, 29975, 30159, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30159, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30159, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30159, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30159, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30159, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30159, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29975, 30159, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30159, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30159, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29975, 30161, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30161, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30161, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30161, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30161, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30161, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30161, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29975, 30161, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30161, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30161, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29975, 30163, 30132, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30132, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30132, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30132, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30163, 30133, 30106]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30133, 30110]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30133, 30108]): (45632, 45596, 45607, 45620), frozenset([30070, 29975, 30163, 30133, 30112]): (45632, 45596, 45607, 45619), frozenset([30070, 29975, 30163, 30134, 30106]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30163, 30134, 30110]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30163, 30134, 30108]): (45632, 45596, 45608, 45620), frozenset([30070, 29975, 30163, 30134, 30112]): (45632, 45596, 45608, 45619), frozenset([30070, 29975, 30163, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30163, 30135, 30110]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30163, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29975, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29975, 30165, 30132, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30132, 30110]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30132, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30132, 30112]): (45631, 45596, 45607, 45619), frozenset([30070, 29975, 30165, 30133, 30106]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30133, 30110]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30133, 30108]): (45631, 45596, 45607, 45620), frozenset([30070, 29975, 30165, 30133, 30112]): (45631, 45596, 45607, 45619), frozenset([30070, 29975, 30165, 30134, 30106]): (45631, 45596, 45608, 45620), frozenset([30070, 29975, 30165, 30134, 30110]): (45631, 45596, 45608, 45620), frozenset([30070, 29975, 30165, 30134, 30108]): (45631, 45596, 45608, 45620), frozenset([30070, 29975, 30165, 30134, 30112]): (45631, 45596, 45608, 45619), frozenset([30070, 29975, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29975, 30165, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30070, 29975, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29975, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30070, 29976, 30159, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30159, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30159, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30159, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30159, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30159, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30159, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30159, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30159, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30159, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30070, 29976, 30159, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30159, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30070, 29976, 30159, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30159, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29976, 30159, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30159, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29976, 30161, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30161, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30161, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30161, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30161, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30161, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30161, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30161, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30161, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30161, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30070, 29976, 30161, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30161, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30070, 29976, 30161, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30161, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29976, 30161, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30161, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29976, 30163, 30132, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30163, 30132, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30163, 30132, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30163, 30132, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30163, 30133, 30106]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30163, 30133, 30110]): (45632, 45597, 45607, 45621), frozenset([30070, 29976, 30163, 30133, 30108]): (45632, 45597, 45607, 45620), frozenset([30070, 29976, 30163, 30133, 30112]): (45632, 45597, 45607, 45619), frozenset([30070, 29976, 30163, 30134, 30106]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30163, 30134, 30110]): (45632, 45597, 45608, 45621), frozenset([30070, 29976, 30163, 30134, 30108]): (45632, 45597, 45608, 45620), frozenset([30070, 29976, 30163, 30134, 30112]): (45632, 45597, 45608, 45619), frozenset([30070, 29976, 30163, 30135, 30106]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30163, 30135, 30110]): (45632, 45595, 45607, 45621), frozenset([30070, 29976, 30163, 30135, 30108]): (45632, 45595, 45607, 45620), frozenset([30070, 29976, 30163, 30135, 30112]): (45632, 45595, 45607, 45619), frozenset([30070, 29976, 30165, 30132, 30106]): (45631, 45597, 45607, 45620), frozenset([30070, 29976, 30165, 30132, 30110]): (45631, 45597, 45607, 45621), frozenset([30070, 29976, 30165, 30132, 30108]): (45631, 45597, 45607, 45620), frozenset([30070, 29976, 30165, 30132, 30112]): (45631, 45597, 45607, 45619), frozenset([30070, 29976, 30165, 30133, 30106]): (45631, 45597, 45607, 45620), frozenset([30070, 29976, 30165, 30133, 30110]): (45631, 45597, 45607, 45621), frozenset([30070, 29976, 30165, 30133, 30108]): (45631, 45597, 45607, 45620), frozenset([30070, 29976, 30165, 30133, 30112]): (45631, 45597, 45607, 45619), frozenset([30070, 29976, 30165, 30134, 30106]): (45631, 45597, 45608, 45620), frozenset([30070, 29976, 30165, 30134, 30110]): (45631, 45597, 45608, 45621), frozenset([30070, 29976, 30165, 30134, 30108]): (45631, 45597, 45608, 45620), frozenset([30070, 29976, 30165, 30134, 30112]): (45631, 45597, 45608, 45619), frozenset([30070, 29976, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30070, 29976, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30070, 29976, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30070, 29976, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30070, 29977, 30159, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30159, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30159, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30159, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30159, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30159, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30159, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30159, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30159, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30070, 29977, 30159, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30159, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30070, 29977, 30161, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30161, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30161, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30161, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30161, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30161, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30161, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30161, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30161, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30070, 29977, 30161, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30161, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30070, 29977, 30163, 30132, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30132, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30163, 30132, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30132, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30163, 30133, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30133, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30163, 30133, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30133, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30163, 30134, 30106]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30134, 30110]): (45632, 45596, 45609, 45621), frozenset([30070, 29977, 30163, 30134, 30108]): (45632, 45596, 45609, 45620), frozenset([30070, 29977, 30163, 30134, 30112]): (45632, 45596, 45609, 45619), frozenset([30070, 29977, 30163, 30135, 30106]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30163, 30135, 30110]): (45632, 45595, 45609, 45621), frozenset([30070, 29977, 30163, 30135, 30108]): (45632, 45595, 45609, 45620), frozenset([30070, 29977, 30163, 30135, 30112]): (45632, 45595, 45609, 45619), frozenset([30070, 29977, 30165, 30132, 30106]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30132, 30110]): (45631, 45596, 45609, 45621), frozenset([30070, 29977, 30165, 30132, 30108]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30132, 30112]): (45631, 45596, 45609, 45619), frozenset([30070, 29977, 30165, 30133, 30106]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30133, 30110]): (45631, 45596, 45609, 45621), frozenset([30070, 29977, 30165, 30133, 30108]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30133, 30112]): (45631, 45596, 45609, 45619), frozenset([30070, 29977, 30165, 30134, 30106]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30134, 30110]): (45631, 45596, 45609, 45621), frozenset([30070, 29977, 30165, 30134, 30108]): (45631, 45596, 45609, 45620), frozenset([30070, 29977, 30165, 30134, 30112]): (45631, 45596, 45609, 45619), frozenset([30070, 29977, 30165, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30070, 29977, 30165, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30070, 29977, 30165, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30070, 29977, 30165, 30135, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29974, 30159, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30159, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30159, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30159, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30159, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30159, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29974, 30159, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30159, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29974, 30159, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30159, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30159, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30161, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30161, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30161, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30161, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30161, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30161, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29974, 30161, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30161, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29974, 30161, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30161, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30161, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30163, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30163, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30163, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30163, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30163, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30163, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29974, 30163, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30163, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29974, 30163, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30163, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30163, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30165, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30165, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30165, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30165, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29974, 30165, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30165, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29974, 30165, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29974, 30165, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29974, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29974, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29974, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30159, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30132, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30159, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30133, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30159, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30159, 30134, 30110]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30159, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30159, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29975, 30159, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30159, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30161, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30132, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30161, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30133, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30161, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30161, 30134, 30110]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30161, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30161, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29975, 30161, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30161, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30163, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30132, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30163, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30133, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30163, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30163, 30134, 30110]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30163, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30163, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29975, 30163, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30163, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30165, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30132, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30165, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30133, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29975, 30165, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30165, 30134, 30110]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30165, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29975, 30165, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29975, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30135, 30110]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29975, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30159, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30159, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30159, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30159, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30159, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30159, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29976, 30159, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30159, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29976, 30159, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30159, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30159, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30161, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30161, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30161, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30161, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30161, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30161, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29976, 30161, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30161, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29976, 30161, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30161, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30161, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30163, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30163, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30163, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30163, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30163, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30163, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29976, 30163, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30163, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29976, 30163, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30163, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30163, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30165, 30132, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30132, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30165, 30132, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30132, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30165, 30133, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30133, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30165, 30133, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30133, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29976, 30165, 30134, 30106]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30165, 30134, 30110]): (45631, 45595, 45608, 45621), frozenset([30072, 29976, 30165, 30134, 30108]): (45631, 45595, 45608, 45620), frozenset([30072, 29976, 30165, 30134, 30112]): (45631, 45595, 45608, 45619), frozenset([30072, 29976, 30165, 30135, 30106]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30135, 30110]): (45631, 45595, 45607, 45621), frozenset([30072, 29976, 30165, 30135, 30108]): (45631, 45595, 45607, 45620), frozenset([30072, 29976, 30165, 30135, 30112]): (45631, 45595, 45607, 45619), frozenset([30072, 29977, 30159, 30132, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30132, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30159, 30132, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30132, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30159, 30133, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30133, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30159, 30133, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30133, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30159, 30134, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30134, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30159, 30134, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30134, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30159, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30159, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30159, 30135, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30161, 30132, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30132, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30161, 30132, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30132, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30161, 30133, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30133, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30161, 30133, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30133, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30161, 30134, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30134, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30161, 30134, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30134, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30161, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30161, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30161, 30135, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30163, 30132, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30132, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30163, 30132, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30132, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30163, 30133, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30133, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30163, 30133, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30133, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30163, 30134, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30134, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30163, 30134, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30134, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30163, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30163, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30163, 30135, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30165, 30132, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30132, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30165, 30132, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30132, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30165, 30133, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30133, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30165, 30133, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30133, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30165, 30134, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30134, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30165, 30134, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30134, 30112]): (45631, 45595, 45609, 45619), frozenset([30072, 29977, 30165, 30135, 30106]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30135, 30110]): (45631, 45595, 45609, 45621), frozenset([30072, 29977, 30165, 30135, 30108]): (45631, 45595, 45609, 45620), frozenset([30072, 29977, 30165, 30135, 30112]): (45631, 45595, 45609, 45619), } conversion2 = { 30326: 30325, 30536: 30539, 30541: 30546, 30542: 30548, 30543: 30547, 20116: 20115, 30600: 30586, 30605: 30588, 30599: 30582, 30036: 45624, 30038: 45622, 30040: 45622, 30042: 45622, 30046: 45627, 30048: 45625, 30050: 45625, 30052: 45625, 30056: 45630, 30058: 45628, 30060: 45628, 30062: 45628, 30066: 45633, 30068: 45631, 30070: 45631, 30072: 45631, 30139: 45626, 30141: 45626, 30143: 45626, 30145: 45627, 30149: 45629, 30151: 45629, 30153: 45629, 30155: 45630, 30159: 45632, 30161: 45632, 30163: 45632, 30165: 45633, 30169: 45623, 30171: 45623, 30173: 45623, 30175: 45624, 30076: 45611, 30078: 45612, 30080: 45612, 30082: 45610, 30086: 45614, 30088: 45614, 30090: 45615, 30092: 45613, 30096: 45618, 30098: 45618, 30100: 45617, 30102: 45616, 30106: 45620, 30108: 45620, 30110: 45621, 30112: 45619, 29964: 45587, 29965: 45588, 29966: 45587, 29967: 45587, 29969: 45590, 29970: 45591, 29971: 45590, 29972: 45590, 29974: 45596, 29975: 45596, 29976: 45597, 29977: 45596, 29979: 45593, 29980: 45594, 29981: 45593, 29982: 45593, 30117: 45599, 30118: 45599, 30119: 45598, 30120: 45598, 30122: 45601, 30123: 45601, 30124: 45602, 30125: 45601, 30127: 45604, 30128: 45604, 30129: 45605, 30130: 45604, 30132: 45607, 30133: 45607, 30134: 45608, 30135: 45607, } def upgrade(saveddata_engine): # First we want to get a list of fittings that are completely fitted out with subsystems oldItems = [str(x) for x in conversion2.keys()] # I can't figure out a way to get IN operator to work when supplying a list using a parameterized query. So I'm # doing it the shitty way by formatting the SQL string. Don't do this kids! fits = [x['fitID'] for x in saveddata_engine.execute( "SELECT fitID FROM modules WHERE itemID IN ({}) GROUP BY fitID HAVING COUNT(*) = 5".format(','.join(oldItems)))] for fitID in fits: try: # Gather a list of the old subsystems and their record IDs modules = saveddata_engine.execute( "SELECT * FROM modules WHERE itemID IN ({}) AND fitID = ?".format(','.join(oldItems)), (fitID,)) oldModules = [] for mod in modules: oldModules.append((mod['ID'], mod['itemID'])) # find the conversion in the Big Fucken Dictionary (BFD) newModules = conversion.get(frozenset([y[1] for y in oldModules]), None) if newModules is None: # We don't have a conversion for this. I don't think this will ever happen, but who knows continue # It doesn't actually matter which old module is replaced with which new module, so we don't have to worry # about module position or anything like that. Just do a straight up record UPDATE for i, old in enumerate(oldModules[:4]): saveddata_engine.execute("UPDATE modules SET itemID = ? WHERE ID = ?", (newModules[i], old[0])) # And last but not least, delete the last subsystem saveddata_engine.execute("DELETE FROM modules WHERE ID = ?", (oldModules[4][0],)) except (KeyboardInterrupt, SystemExit): raise except: # if something fails, fuck it, we tried. It'll default to the generic conversion below continue for oldItem, newItem in conversion2.items(): saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (newItem, oldItem)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (newItem, oldItem)) ================================================ FILE: eos/db/migrations/upgrade26.py ================================================ """ Migration 26 - Deletes invalid command fit relationships caused by a bug (see #1244) """ def upgrade(saveddata_engine): saveddata_engine.execute("DELETE FROM commandFits WHERE boosterID NOT IN (SELECT ID FROM fits) OR boostedID NOT IN (SELECT ID FROM fits)") ================================================ FILE: eos/db/migrations/upgrade27.py ================================================ """ Migration 27 - Resets all alpha clones to 1 (CCP consolidated all alpha's into one skillset) """ def upgrade(saveddata_engine): saveddata_engine.execute("UPDATE characters SET alphaCloneID = 1 WHERE alphaCloneID IS NOT NULL") ================================================ FILE: eos/db/migrations/upgrade28.py ================================================ """ Migration 28 - adds baseItemID and mutaplasmidID to modules table """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT baseItemID FROM modules LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE modules ADD COLUMN baseItemID INT;") try: saveddata_engine.execute("SELECT mutaplasmidID FROM modules LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE modules ADD COLUMN mutaplasmidID INT;") ================================================ FILE: eos/db/migrations/upgrade29.py ================================================ """ Migration 29 - adds spoolType and spoolAmount to modules table """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT spoolType FROM modules LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE modules ADD COLUMN spoolType INT;") try: saveddata_engine.execute("SELECT spoolAmount FROM modules LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE modules ADD COLUMN spoolAmount FLOAT;") ================================================ FILE: eos/db/migrations/upgrade3.py ================================================ """ Migration 3 - Adds mode column for fits (t3 dessy) """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT modeID FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN modeID INTEGER") ================================================ FILE: eos/db/migrations/upgrade30.py ================================================ """ Migration 30 - changes to prices table """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT status FROM prices LIMIT 1") except sqlalchemy.exc.DatabaseError: # Just drop table, table will be re-created by sqlalchemy and # data will be re-fetched saveddata_engine.execute("DROP TABLE prices;") ================================================ FILE: eos/db/migrations/upgrade31.py ================================================ """ Migration 31 - added fit system security column """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT systemSecurity FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN systemSecurity INT") ================================================ FILE: eos/db/migrations/upgrade32.py ================================================ """ Migration 32 - added speed, sig and radius columns to targetResists table """ import sqlalchemy def upgrade(saveddata_engine): for column in ('maxVelocity', 'signatureRadius', 'radius'): try: saveddata_engine.execute("SELECT {} FROM targetResists LIMIT 1;".format(column)) except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE targetResists ADD COLUMN {} FLOAT;".format(column)) ================================================ FILE: eos/db/migrations/upgrade33.py ================================================ """ Migration 33 Allow use of floats in damage pattern values """ tmpTable = """ CREATE TABLE "damagePatternsTemp" ( "ID" INTEGER NOT NULL, "name" VARCHAR, "emAmount" FLOAT, "thermalAmount" FLOAT, "kineticAmount" FLOAT, "explosiveAmount" FLOAT, "ownerID" INTEGER, "created" DATETIME, "modified" DATETIME, PRIMARY KEY ("ID"), FOREIGN KEY("ownerID") REFERENCES users ("ID") ) """ def upgrade(saveddata_engine): saveddata_engine.execute(tmpTable) saveddata_engine.execute( 'INSERT INTO damagePatternsTemp (ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID, created, modified) ' 'SELECT ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID, created, modified FROM damagePatterns') saveddata_engine.execute('DROP TABLE damagePatterns') saveddata_engine.execute('ALTER TABLE damagePatternsTemp RENAME TO damagePatterns') ================================================ FILE: eos/db/migrations/upgrade34.py ================================================ """ Migration 34 - Adds projection range columns to projectable entities """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT projectionRange FROM projectedFits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE projectedFits ADD COLUMN projectionRange FLOAT;") try: saveddata_engine.execute("SELECT projectionRange FROM modules LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE modules ADD COLUMN projectionRange FLOAT;") try: saveddata_engine.execute("SELECT projectionRange FROM drones LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE drones ADD COLUMN projectionRange FLOAT;") try: saveddata_engine.execute("SELECT projectionRange FROM fighters LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fighters ADD COLUMN projectionRange FLOAT;") ================================================ FILE: eos/db/migrations/upgrade35.py ================================================ """ Migration 35 - Remove builtin damage patterns and target profiles from the database """ import sqlalchemy dmgPatterns = ( 'Uniform', '[Bombs]Concussion Bomb', '[Bombs]Electron Bomb', '[Bombs]Scorch Bomb', '[Bombs]Shrapnel Bomb', '[Exotic Plasma]Baryon', '[Exotic Plasma]Meson', '[Exotic Plasma]Tetryon', '[Exotic Plasma][T2] Mystic', '[Exotic Plasma][T2] Occult', '[Frequency Crystals]Gamma', '[Frequency Crystals]Infrared', '[Frequency Crystals]Microwave', '[Frequency Crystals]Multifrequency', '[Frequency Crystals]Radio', '[Frequency Crystals]Standard', '[Frequency Crystals]Ultraviolet', '[Frequency Crystals]Xray', '[Frequency Crystals][T2] Aurora', '[Frequency Crystals][T2] Conflagration', '[Frequency Crystals][T2] Gleam', '[Frequency Crystals][T2] Scorch', '[Generic]EM', '[Generic]Explosive', '[Generic]Kinetic', '[Generic]Thermal', '[Hybrid Charges]Antimatter', '[Hybrid Charges]Iridium', '[Hybrid Charges]Iron', '[Hybrid Charges]Lead', '[Hybrid Charges]Plutonium', '[Hybrid Charges]Thorium', '[Hybrid Charges]Tungsten', '[Hybrid Charges]Uranium', '[Hybrid Charges][T2] Javelin', '[Hybrid Charges][T2] Null', '[Hybrid Charges][T2] Spike', '[Hybrid Charges][T2] Void', '[Missiles]Inferno', '[Missiles]Mjolnir', '[Missiles]Nova', '[Missiles]Scourge', '[Missiles][Structure) Standup Missile', '[Missiles][Structure] Standup Missile', '[NPC][Asteroid] Angel Cartel', '[NPC][Asteroid] Blood Raiders', '[NPC][Asteroid] Guristas', '[NPC][Asteroid] Rogue Drone', '[NPC][Asteroid] Sanshas Nation', '[NPC][Asteroid] Serpentis', '[NPC][Burner] Ashimmu (Blood Raiders)', '[NPC][Burner] Cruor (Blood Raiders)', '[NPC][Burner] Daredevil (Serpentis)', '[NPC][Burner] Dramiel (Angel)', '[NPC][Burner] Enyo', '[NPC][Burner] Hawk', '[NPC][Burner] Jaguar', '[NPC][Burner] Sentinel', '[NPC][Burner] Succubus (Sanshas Nation)', '[NPC][Burner] Talos', '[NPC][Burner] Vengeance', '[NPC][Burner] Worm (Guristas)', '[NPC][Deadspace] Angel Cartel', '[NPC][Deadspace] Blood Raiders', '[NPC][Deadspace] Guristas', '[NPC][Deadspace] Rogue Drone', '[NPC][Deadspace] Sanshas Nation', '[NPC][Deadspace] Serpentis', '[NPC][Mission] Amarr Empire', '[NPC][Mission] CONCORD', '[NPC][Mission] Caldari State', '[NPC][Mission] Gallente Federation', '[NPC][Mission] Khanid', '[NPC][Mission] Minmatar Republic', '[NPC][Mission] Mordus Legion', '[NPC][Mission] Thukker', '[NPC][Other] Sansha Incursion', '[NPC][Other] Sleepers', '[Projectile Ammo]Carbonized Lead', '[Projectile Ammo]Depleted Uranium', '[Projectile Ammo]EMP', '[Projectile Ammo]Fusion', '[Projectile Ammo]Nuclear', '[Projectile Ammo]Phased Plasma', '[Projectile Ammo]Proton', '[Projectile Ammo]Titanium Sabot', '[Projectile Ammo][T2] Barrage', '[Projectile Ammo][T2] Hail', '[Projectile Ammo][T2] Quake', '[Projectile Ammo][T2] Tremor') tgtProfiles = ( 'Uniform (25%)', 'Uniform (50%)', 'Uniform (75%)', 'Uniform (90%)', '[NPC][Asteroid] Angel Cartel', '[NPC][Asteroid] Blood Raiders', '[NPC][Asteroid] Guristas', '[NPC][Asteroid] Rogue Drones', '[NPC][Asteroid] Sanshas Nation', '[NPC][Asteroid] Serpentis', '[NPC][Burner] Ashimmu (Blood Raiders)', '[NPC][Burner] Cruor (Blood Raiders)', '[NPC][Burner] Daredevil (Serpentis)', '[NPC][Burner] Dramiel (Angel)', '[NPC][Burner] Enyo', '[NPC][Burner] Hawk', '[NPC][Burner] Jaguar', '[NPC][Burner] Sentinel', '[NPC][Burner] Succubus (Sanshas Nation)', '[NPC][Burner] Talos', '[NPC][Burner] Vengeance', '[NPC][Burner] Worm (Guristas)', '[NPC][Deadspace] Angel Cartel', '[NPC][Deadspace] Blood Raiders', '[NPC][Deadspace] Guristas', '[NPC][Deadspace] Rogue Drones', '[NPC][Deadspace] Sanshas Nation', '[NPC][Deadspace] Serpentis', '[NPC][Mission] Amarr Empire', '[NPC][Mission] CONCORD', '[NPC][Mission] Caldari State', '[NPC][Mission] Gallente Federation', '[NPC][Mission] Khanid', '[NPC][Mission] Minmatar Republic', '[NPC][Mission] Mordus Legion', '[NPC][Other] Sansha Incursion', '[NPC][Other] Sleeper', '[T1 Resist]Armor', '[T1 Resist]Armor (+T2 DCU)', '[T1 Resist]Hull', '[T1 Resist]Hull (+T2 DCU)', '[T1 Resist]Shield', '[T1 Resist]Shield (+T2 DCU)', '[T2 Resist]Amarr (Armor)', '[T2 Resist]Amarr (Shield)', '[T2 Resist]Caldari (Armor)', '[T2 Resist]Caldari (Shield)', '[T2 Resist]Gallente (Armor)', '[T2 Resist]Gallente (Shield)', '[T2 Resist]Minmatar (Armor)', '[T2 Resist]Minmatar (Shield)') def upgrade(saveddata_engine): saveddata_engine.execute('DELETE FROM damagePatterns WHERE name in ({});'.format(', '.join('\'{}\''.format(n) for n in dmgPatterns))) saveddata_engine.execute('DELETE FROM targetResists WHERE name in ({});'.format(', '.join('\'{}\''.format(n) for n in tgtProfiles))) try: saveddata_engine.execute("SELECT builtinDamagePatternID FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN builtinDamagePatternID INT;") try: saveddata_engine.execute("SELECT builtinTargetResistsID FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN builtinTargetResistsID INT;") ================================================ FILE: eos/db/migrations/upgrade36.py ================================================ """ Migration 36 - Shield Booster, Armor Repairer and Capacitor Transfer tiericide """ CONVERSIONS = { 6441: ( # Small Clarity Ward Enduring Shield Booster 6443, # Small Converse Deflection Catalyzer ), 6437: ( # Small C5-L Compact Shield Booster 6439, # Small Neutron Saturation Injector I ), 10868: ( # Medium Clarity Ward Enduring Shield Booster 10870, # Medium Converse Deflection Catalyzer ), 10872: ( # Medium C5-L Compact Shield Booster 10866, # Medium Neutron Saturation Injector I ), 10876: ( # Large Clarity Ward Enduring Shield Booster 10878, # Large Converse Deflection Catalyzer ), 10880: ( # Large C5-L Compact Shield Booster 10874, # Large Neutron Saturation Injector I ), 10884: ( # X-Large Clarity Ward Enduring Shield Booster 10886, # X-Large Converse Deflection Catalyzer ), 10888: ( # X-Large C5-L Compact Shield Booster 10882, # X-Large Neutron Saturation Injector I ), 4533: ( # Small ACM Compact Armor Repairer 4531, # Small Inefficient Armor Repair Unit ), 4529: ( # Small I-a Enduring Armor Repairer 4535, # Small Automated Carapace Restoration ), 4573: ( # Medium ACM Compact Armor Repairer 4571, # Medium Inefficient Armor Repair Unit ), 4569: ( # Medium I-a Enduring Armor Repairer 4575, # Medium Automated Carapace Restoration ), 22889: ( # 'Meditation' Medium Armor Repairer I 4579, # Medium Nano Armor Repair Unit I ), 4613: ( # Large ACM Compact Armor Repairer 4611, # Large Inefficient Armor Repair Unit ), 4609: ( # Large I-a Enduring Armor Repairer 4615, # Large Automated Carapace Restoration ), 22891: ( # 'Protest' Large Armor Repairer I 4621, # Large 'Reprieve' Vestment Reconstructer I ), 5093: ( # Small Radiative Scoped Remote Capacitor Transmitter 5087, # Small Partial E95a Remote Capacitor Transmitter ), 5091: ( # Small Inductive Compact Remote Capacitor Transmitter 5089, # Small Murky Remote Capacitor Transmitter ), 16489: ( # Medium Radiative Scoped Remote Capacitor Transmitter 16493, # Medium Partial E95b Remote Capacitor Transmitter ), 16495: ( # Medium Inductive Compact Remote Capacitor Transmitter 16491, # Medium Murky Remote Capacitor Transmitter ), 16481: ( # Large Radiative Scoped Remote Capacitor Transmitter 16485, # Large Partial E95c Remote Capacitor Transmitter ), 16487: ( # Large Inductive Compact Remote Capacitor Transmitter 16483, # Large Murky Remote Capacitor Transmitter ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade37.py ================================================ """ Migration 37 - Capacitor Booster tiericide """ CONVERSIONS = { 4959: ( # 'Seed' Micro Capacitor Booster I 4957, # Micro Brief Capacitor Overcharge I 4961, # Micro Tapered Capacitor Infusion I 4955, # Micro F-RX Prototype Capacitor Boost 3556, # Micro Capacitor Booster I 3558, # Micro Capacitor Booster II 15774, # Ammatar Navy Micro Capacitor Booster 14180, # Dark Blood Micro Capacitor Booster 14182, # True Sansha Micro Capacitor Booster 15782, # Imperial Navy Micro Capacitor Booster ), 5011: ( # Small F-RX Compact Capacitor Booster 5009, # Small Brief Capacitor Overcharge I 5013, # Small Tapered Capacitor Infusion I 5007, # Small F-RX Prototype Capacitor Boost ), 4833: ( # Medium F-RX Compact Capacitor Booster 4831, # Medium Brief Capacitor Overcharge I 4835, # Medium Tapered Capacitor Infusion I 4829, # Medium F-RX Prototype Capacitor Boost ), 5051: ( # Heavy F-RX Compact Capacitor Booster 5049, # Heavy Brief Capacitor Overcharge I 5053, # Heavy Tapered Capacitor Infusion I 5047, # Heavy F-RX Prototype Capacitor Boost ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade38.py ================================================ """ Migration 38 - Armor hardener tiericide """ CONVERSIONS = { 16357: ( # Experimental Enduring EM Armor Hardener I 16353, # Upgraded Armor EM Hardener I ), 16365: ( # Experimental Enduring Explosive Armor Hardener I 16361, # Upgraded Armor Explosive Hardener I ), 16373: ( # Experimental Enduring Kinetic Armor Hardener I 16369, # Upgraded Armor Kinetic Hardener I ), 16381: ( # Experimental Enduring Thermal Armor Hardener I 16377, # Upgraded Armor Thermal Hardener I ), 16359: ( # Prototype Compact EM Armor Hardener I 16355, # Limited Armor EM Hardener I ), 16367: ( # Prototype Compact Explosive Armor Hardener I 16363, # Limited Armor Explosive Hardener I ), 16375: ( # Prototype Compact Kinetic Armor Hardener I 16371, # Limited Armor Kinetic Hardener I ), 16383: ( # Prototype Compact Thermal Armor Hardener I 16379, # Limited Armor Thermal Hardener I ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade39.py ================================================ """ Migration 39 - Shield amplifier tiericide - CCP getting rid of DB TDs due to exploits """ CONVERSIONS = { 1798: ( # 'Basic' EM Shield Amplifier 9562, # Supplemental EM Ward Amplifier ), 1804: ( # 'Basic' Explosive Shield Amplifier 9574, # Supplemental Explosive Deflection Amplifier ), 1802: ( # 'Basic' Kinetic Shield Amplifier 9570, # Supplemental Kinetic Deflection Amplifier ), 1800: ( # 'Basic' Thermal Shield Amplifier 9566, # Supplemental Thermal Dissipation Amplifier ), 22933: ( # 'Investor' Tracking Disruptor I 32416, # Dark Blood Tracking Disruptor ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade4.py ================================================ """ Migration 4 - Converts modules based on Proteus Module Tiericide Some modules have been unpublished (and unpublished module attributes are removed from database), which causes pyfa to crash. We therefore replace these modules with their new replacements Based on https://www.eveonline.com/news/view/patch-notes-for-proteus and output of itemDiff.py """ CONVERSIONS = { 506 : ( # 'Basic' Capacitor Power Relay 8205, # Alpha Reactor Control: Capacitor Power Relay 8209, # Marked Generator Refitting: Capacitor Power Relay 8203, # Partial Power Plant Manager: Capacity Power Relay 8207, # Type-E Power Core Modification: Capacitor Power Relay ), 8177 : ( # Mark I Compact Capacitor Power Relay 8173, # Beta Reactor Control: Capacitor Power Relay I ), 8175 : ( # Type-D Restrained Capacitor Power Relay 8171, # Local Power Plant Manager: Capacity Power Relay I ), 421 : ( # 'Basic' Capacitor Recharger 4425, # AGM Capacitor Charge Array, 4421, # F-a10 Buffer Capacitor Regenerator 4423, # Industrial Capacitor Recharger 4427, # Secondary Parallel Link-Capacitor ), 4435 : ( # Eutectic Compact Cap Recharger 4433, # Barton Reactor Capacitor Recharger I 4431, # F-b10 Nominal Capacitor Regenerator 4437, # Fixed Parallel Link-Capacitor I ), 1315 : ( # 'Basic' Expanded Cargohold 5483, # Alpha Hull Mod Expanded Cargo 5479, # Marked Modified SS Expanded Cargo 5481, # Partial Hull Conversion Expanded Cargo 5485, # Type-E Altered SS Expanded Cargo ), 5493 : ( # Type-D Restrained Expanded Cargo 5491, # Beta Hull Mod Expanded Cargo 5489, # Local Hull Conversion Expanded Cargo I 5487, # Mark I Modified SS Expanded Cargo ), 1401 : ( # 'Basic' Inertial Stabilizers 5523, # Alpha Hull Mod Inertial Stabilizers 5521, # Partial Hull Conversion Inertial Stabilizers 5525, # Type-E Altered SS Inertial Stabilizers ), 5533 : ( # Type-D Restrained Inertial Stabilizers 5531, # Beta Hull Mod Inertial Stabilizers 5529, # Local Hull Conversion Inertial Stabilizers I 5527, # Mark I Modified SS Inertial Stabilizers 5519, # Marked Modified SS Inertial Stabilizers ), 5239 : ( # EP-S Gaussian Scoped Mining Laser 5241, # Dual Diode Mining Laser I ), 5233 : ( # Single Diode Basic Mining Laser 5231, # EP-R Argon Ion Basic Excavation Pulse 5237, # Rubin Basic Particle Bore Stream 5235, # Xenon Basic Drilling Beam ), 5245 : ( # Particle Bore Compact Mining Laser 5243, # XeCl Drilling Beam I ), 22619: ( # Frigoris Restrained Ice Harvester Upgrade 22617, # Crisium Ice Harvester Upgrade ), 22611: ( # Elara Restrained Mining Laser Upgrade 22609, # Erin Mining Laser Upgrade ), 1242 : ( # 'Basic' Nanofiber Internal Structure 5591, # Alpha Hull Mod Nanofiber Structure 5595, # Marked Modified SS Nanofiber Structure 5559, # Partial Hull Conversion Nanofiber Structure 5593, # Type-E Altered SS Nanofiber Structure ), 5599 : ( # Type-D Restrained Nanofiber Structure 5597, # Beta Hull Mod Nanofiber Structure 5561, # Local Hull Conversion Nanofiber Structure I 5601, # Mark I Modified SS Nanofiber Structure ), 1192 : ( # 'Basic' Overdrive Injector System 5613, # Alpha Hull Mod Overdrive Injector 5617, # Marked Modified SS Overdrive Injector 5611, # Partial Hull Conversion Overdrive Injector 5615, # Type-E Altered SS Overdrive Injector ), 5631 : ( # Type-D Restrained Overdrive Injector 5629, # Beta Hull Mod Overdrive Injector 5627, # Local Hull Conversion Overdrive Injector I 5633, # Mark I Modified SS Overdrive Injector ), 1537 : ( # 'Basic' Power Diagnostic System 8213, # Alpha Reactor Control: Diagnostic System 8217, # Marked Generator Refitting: Diagnostic System 8211, # Partial Power Plant Manager: Diagnostic System 8215, # Type-E Power Core Modification: Diagnostic System 8255, # Type-E Power Core Modification: Reaction Control ), 8225 : ( # Mark I Compact Power Diagnostic System 8221, # Beta Reactor Control: Diagnostic System I 8219, # Local Power Plant Manager: Diagnostic System I 8223, # Type-D Power Core Modification: Diagnostic System ), 1240 : ( # 'Basic' Reinforced Bulkheads 5677, # Alpha Hull Mod Reinforced Bulkheads 5681, # Marked Modified SS Reinforced Bulkheads 5675, # Partial Hull Conversion Reinforced Bulkheads 5679, # Type-E Altered SS Reinforced Bulkheads ), 5649 : ( # Mark I Compact Reinforced Bulkheads 5645, # Beta Hull Mod Reinforced Bulkheads ), 5647 : ( # Type-D Restrained Reinforced Bulkheads 5643, # Local Hull Conversion Reinforced Bulkheads I ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade40.py ================================================ """ Migration 40 Imports all item conversions since Migration 28 and runs them against module.baseItemID. This column seems to have been forgotten about since it's been added. """ from .upgrade36 import CONVERSIONS as u36 from .upgrade37 import CONVERSIONS as u37 from .upgrade38 import CONVERSIONS as u38 from .upgrade39 import CONVERSIONS as u39 def upgrade(saveddata_engine): for conversions in [u36, u37, u38, u39]: for replacement_item, list in conversions.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade41.py ================================================ """ Migration 41 - Resistance plating tiericide """ CONVERSIONS = { 16345: ( # Upgraded Layered Coating I 16347, # Limited Layered Plating I 16349, # 'Scarab' Layered Plating I 16351, # 'Grail' Layered Plating I ), 16305: ( # Upgraded Multispectrum Coating I 16307, # Limited Adaptive Nano Plating I 16309, # 'Collateral' Adaptive Nano Plating I 16311, # 'Refuge' Adaptive Nano Plating I ), 16329: ( # Upgraded EM Coating I 16331, # Limited EM Plating I 16333, # 'Contour' EM Plating I 16335, # 'Spiegel' EM Plating I ), 16321: ( # Upgraded Explosive Coating I 16323, # Limited Explosive Plating I 16325, # Experimental Explosive Plating I 16319, # 'Aegis' Explosive Plating I ), 16313: ( # Upgraded Kinetic Coating I 16315, # Limited Kinetic Plating I 16317, # Experimental Kinetic Plating I 16327, # 'Element' Kinetic Plating I ), 16337: ( # Upgraded Thermal Coating I 16339, # Limited Thermal Plating I 16341, # Experimental Thermal Plating I 16343, # Prototype Thermal Plating I ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade42.py ================================================ """ Migration 42 - Resistance membrane tiericide """ CONVERSIONS = { 16391: ( # Compact Multispectrum Energized Membrane 16389, # Experimental Energized Adaptive Nano Membrane I 16387, # Limited Energized Adaptive Nano Membrane I 16385, # Upgraded Energized Adaptive Nano Membrane I ), 16423: ( # Compact Layered Energized Membrane 16421, # Experimental Energized Armor Layering Membrane I 16419, # Limited Energized Armor Layering Membrane I 16417, # Upgraded Energized Armor Layering Membrane I ), 16415: ( # Compact EM Energized Membrane 16413, # Experimental Energized EM Membrane I 16411, # Limited Energized EM Membrane I 16409, # Upgraded Energized EM Membrane I ), 16407: ( # Compact Explosive Energized Membrane 16405, # Experimental Energized Explosive Membrane I 16403, # Limited Energized Explosive Membrane I 16401, # Upgraded Energized Explosive Membrane I ), 16399: ( # Compact Kinetic Energized Membrane 16397, # Experimental Energized Kinetic Membrane I 16395, # Limited Energized Kinetic Membrane I 16393, # Upgraded Energized Kinetic Membrane I ), 16431: ( # Compact Thermal Energized Membrane 16429, # Experimental Energized Thermal Membrane I 16427, # Limited Energized Thermal Membrane I 16425, # Upgraded Energized Thermal Membrane I ) } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade43.py ================================================ """ Migration 43 - Shield booster amplifier tiericide """ CONVERSIONS = { 16533: ( # Stalwart Restrained Shield Boost Amplifier 16531, # 5a Prototype Shield Support I ), 16535: ( # Copasetic Compact Shield Boost Amplifier 16529, # Ionic Field Accelerator I ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade44.py ================================================ """ Migration 44 - Signal distortion amplifier tiericide """ CONVERSIONS = { 25565: ( # Hypnos Compact Signal Distortion Amplifier I 25571, # Initiated Signal Distortion Amplifier I 25569, # Induced Signal Distortion Amplifier I 25567, # Compulsive Signal Distortion Amplifier I ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade45.py ================================================ """ Migration 45 - Drone mutaplasmid support """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT baseItemID FROM drones LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE drones ADD COLUMN baseItemID INTEGER;") try: saveddata_engine.execute("SELECT mutaplasmidID FROM drones LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE drones ADD COLUMN mutaplasmidID INTEGER;") ================================================ FILE: eos/db/migrations/upgrade46.py ================================================ """ Migration 46 - Mining crystal changes """ CONVERSIONS = { 60276: ( # Simple Asteroid Mining Crystal Type A I 18066, # Veldspar Mining Crystal I 18062, # Scordite Mining Crystal I 18060, # Pyroxeres Mining Crystal I 18058, # Plagioclase Mining Crystal I ), 60281: ( # Simple Asteroid Mining Crystal Type A II 18618, # Veldspar Mining Crystal II 18616, # Scordite Mining Crystal II 18614, # Pyroxeres Mining Crystal II 18612, # Plagioclase Mining Crystal II ), 60285: ( # Coherent Asteroid Mining Crystal Type A I 18056, # Omber Mining Crystal I 18052, # Kernite Mining Crystal I 18050, # Jaspet Mining Crystal I 18048, # Hemorphite Mining Crystal I 18046, # Hedbergite Mining Crystal I ), 60288: ( # Coherent Asteroid Mining Crystal Type A II 18610, # Omber Mining Crystal II 18604, # Jaspet Mining Crystal II 18606, # Kernite Mining Crystal II 18600, # Hedbergite Mining Crystal II 18602, # Hemorphite Mining Crystal II ), 60291: ( # Variegated Asteroid Mining Crystal Type A I 18044, # Gneiss Mining Crystal I 18042, # Dark Ochre Mining Crystal I 18040, # Crokite Mining Crystal I ), 60294: ( # Variegated Asteroid Mining Crystal Type A II 18598, # Gneiss Mining Crystal II 18596, # Dark Ochre Mining Crystal II 18594, # Crokite Mining Crystal II ), 60297: ( # Complex Asteroid Mining Crystal Type A I 18038, # Bistot Mining Crystal I 18036, # Arkonor Mining Crystal I 18064, # Spodumain Mining Crystal I ), 60300: ( # Complex Asteroid Mining Crystal Type A II 18592, # Bistot Mining Crystal II 18590, # Arkonor Mining Crystal II 18624, # Spodumain Mining Crystal II ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "baseItemID" = ? WHERE "baseItemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "modules" SET "chargeID" = ? WHERE "chargeID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade47.py ================================================ """ Migration 46 - add support for server selection for SSO characters """ import sqlalchemy tmpTable = """ CREATE TABLE ssoCharacterTemp ( ID INTEGER NOT NULL, client VARCHAR NOT NULL, characterID INTEGER NOT NULL, characterName VARCHAR NOT NULL, refreshToken VARCHAR NOT NULL, accessToken VARCHAR NOT NULL, accessTokenExpires DATETIME NOT NULL, created DATETIME, modified DATETIME, server VARCHAR, PRIMARY KEY (ID), CONSTRAINT "uix_client_server_characterID" UNIQUE (client, server, characterID), CONSTRAINT "uix_client_server_characterName" UNIQUE (client, server, characterName) ) """ def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT server FROM ssoCharacter LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute(tmpTable) saveddata_engine.execute( "INSERT INTO ssoCharacterTemp (ID, client, characterID, characterName, refreshToken, accessToken, accessTokenExpires, created, modified, server) " "SELECT ID, client, characterID, characterName, refreshToken, accessToken, accessTokenExpires, created, modified, 'Tranquility' " "FROM ssoCharacter") saveddata_engine.execute("DROP TABLE ssoCharacter") saveddata_engine.execute("ALTER TABLE ssoCharacterTemp RENAME TO ssoCharacter") ================================================ FILE: eos/db/migrations/upgrade48.py ================================================ """ Migration 48 - added pilot security column (CONCORD ships) """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT pilotSecurity FROM fits LIMIT 1") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE fits ADD COLUMN pilotSecurity FLOAT") ================================================ FILE: eos/db/migrations/upgrade49.py ================================================ """ Migration 49 - added hp column to targetResists table """ import sqlalchemy def upgrade(saveddata_engine): try: saveddata_engine.execute("SELECT hp FROM targetResists LIMIT 1;") except sqlalchemy.exc.DatabaseError: saveddata_engine.execute("ALTER TABLE targetResists ADD COLUMN hp FLOAT;") ================================================ FILE: eos/db/migrations/upgrade5.py ================================================ """ Migration 5 Simply deletes damage profiles with a blank name. See GH issue #256 """ def upgrade(saveddata_engine): saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ?', ("",)) ================================================ FILE: eos/db/migrations/upgrade6.py ================================================ """ Migration 6 Overwrites damage profile 0 to reset bad uniform values (bad values set with bug) """ def upgrade(saveddata_engine): saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1")) saveddata_engine.execute('INSERT INTO damagePatterns (ID, name, emAmount, thermalAmount, kineticAmount, explosiveAmount, ownerID) VALUES (?, ?, ?, ?, ?, ?, ?)', (1, "Uniform", 25, 25, 25, 25, None)) ================================================ FILE: eos/db/migrations/upgrade7.py ================================================ """ Migration 7 - Converts Scorpion Ishukone Watch to Scorpion Mosaic introduced proper skinning system, and Ishukone Scorp was the only ship which was presented as stand-alone ship in Pyfa. """ CONVERSIONS = { 640: ( # Scorpion 4005, # Scorpion Ishukone Watch ) } def upgrade(saveddata_engine): # Convert ships for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "fits" SET "shipID" = ? WHERE "shipID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade8.py ================================================ """ Migration 8 - Converts modules based on Carnyx Module Tiericide Some modules have been unpublished (and unpublished module attributes are removed from database), which causes pyfa to crash. We therefore replace these modules with their new replacements """ CONVERSIONS = { 8529 : ( # Large F-S9 Regolith Compact Shield Extender 8409, # Large Subordinate Screen Stabilizer I ), 8419 : ( # Large Azeotropic Restrained Shield Extender 8489, # Large Supplemental Barrier Emitter I ), 8517 : ( # Medium F-S9 Regolith Compact Shield Extender 8397, # Medium Subordinate Screen Stabilizer I ), 8433 : ( # Medium Azeotropic Restrained Shield Extender 8477, # Medium Supplemental Barrier Emitter I ), 20627: ( # Small 'Trapper' Shield Extender 8437, # Micro Azeotropic Ward Salubrity I 8505, # Micro F-S9 Regolith Shield Induction 3849, # Micro Shield Extender I 3851, # Micro Shield Extender II 8387, # Micro Subordinate Screen Stabilizer I 8465, # Micro Supplemental Barrier Emitter I ), 8521 : ( # Small F-S9 Regolith Compact Shield Extender 8401, # Small Subordinate Screen Stabilizer I ), 8427 : ( # Small Azeotropic Restrained Shield Extender 8481, # Small Supplemental Barrier Emitter I ), 11343: ( # 100mm Crystalline Carbonide Restrained Plates 11345, # 100mm Reinforced Nanofiber Plates I ), 11341: ( # 100mm Rolled Tungsten Compact Plates 11339, # 100mm Reinforced Titanium Plates I ), 11327: ( # 1600mm Crystalline Carbonide Restrained Plates 11329, # 1600mm Reinforced Nanofiber Plates I ), 11325: ( # 1600mm Rolled Tungsten Compact Plates 11323, # 1600mm Reinforced Titanium Plates I ), 11351: ( # 200mm Crystalline Carbonide Restrained Plates 11353, # 200mm Reinforced Nanofiber Plates I ), 11349: ( # 200mm Rolled Tungsten Compact Plates 11347, # 200mm Reinforced Titanium Plates I ), 11311: ( # 400mm Crystalline Carbonide Restrained Plates 11313, # 400mm Reinforced Nanofiber Plates I ), 11309: ( # 400mm Rolled Tungsten Compact Plates 11307, # 400mm Reinforced Titanium Plates I ), 23791: ( # 'Citadella' 100mm Steel Plates 11335, # 50mm Reinforced Crystalline Carbonide Plates I 11337, # 50mm Reinforced Nanofiber Plates I 11333, # 50mm Reinforced Rolled Tungsten Plates I 11291, # 50mm Reinforced Steel Plates I 20343, # 50mm Reinforced Steel Plates II 11331, # 50mm Reinforced Titanium Plates I ), 11319: ( # 800mm Crystalline Carbonide Restrained Plates 11321, # 800mm Reinforced Nanofiber Plates I ), 11317: ( # 800mm Rolled Tungsten Compact Plates 11315, # 800mm Reinforced Titanium Plates I ), } def upgrade(saveddata_engine): # Convert modules for replacement_item, list in CONVERSIONS.items(): for retired_item in list: saveddata_engine.execute('UPDATE "modules" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) saveddata_engine.execute('UPDATE "cargo" SET "itemID" = ? WHERE "itemID" = ?', (replacement_item, retired_item)) ================================================ FILE: eos/db/migrations/upgrade9.py ================================================ """ Migration 9 Effectively drops UNIQUE constraint from boosters table. SQLite does not support this, so we have to copy the table to the updated schema and then rename it """ tmpTable = """ CREATE TABLE boostersTemp ( 'ID' INTEGER NOT NULL, 'itemID' INTEGER, 'fitID' INTEGER NOT NULL, 'active' BOOLEAN, PRIMARY KEY(ID), FOREIGN KEY('fitID') REFERENCES fits ('ID') ) """ def upgrade(saveddata_engine): saveddata_engine.execute(tmpTable) saveddata_engine.execute( "INSERT INTO boostersTemp (ID, itemID, fitID, active) SELECT ID, itemID, fitID, active FROM boosters") saveddata_engine.execute("DROP TABLE boosters") saveddata_engine.execute("ALTER TABLE boostersTemp RENAME TO boosters") ================================================ FILE: eos/db/saveddata/__init__.py ================================================ __all__ = [ "character", "fit", "mutatorMod", "mutatorDrone", "module", "user", "skill", "price", "booster", "drone", "implant", "damagePattern", "miscData", "targetProfile", "override", "implantSet" ] ================================================ FILE: eos/db/saveddata/booster.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, ForeignKey, Integer, Boolean, DateTime from sqlalchemy.orm import mapper, relation import datetime from eos.db import saveddata_meta from eos.saveddata.booster import Booster from eos.saveddata.boosterSideEffect import BoosterSideEffect from eos.saveddata.fit import Fit boosters_table = Table("boosters", saveddata_meta, Column("ID", Integer, primary_key=True), Column("itemID", Integer), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False, index=True), Column("active", Boolean), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), ) booster_side_effect_table = Table("boosterSideEffects", saveddata_meta, Column("boosterID", Integer, ForeignKey("boosters.ID"), primary_key=True, index=True), Column("effectID", Integer, nullable=False, primary_key=True), Column("active", Boolean, default=False) ) mapper(Booster, boosters_table, properties={ "owner": relation(Fit), "_Booster__sideEffects": relation( BoosterSideEffect, backref="booster", cascade='all, delete, delete-orphan'), } ) mapper(BoosterSideEffect, booster_side_effect_table) ================================================ FILE: eos/db/saveddata/cargo.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, ForeignKey, DateTime from sqlalchemy.orm import mapper, relation import datetime from eos.db import saveddata_meta from eos.saveddata.cargo import Cargo from eos.saveddata.fit import Fit cargo_table = Table("cargo", saveddata_meta, Column("ID", Integer, primary_key=True), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False, index=True), Column("itemID", Integer, nullable=False), Column("amount", Integer, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), ) mapper(Cargo, cargo_table, properties={ "owner": relation(Fit) } ) ================================================ FILE: eos/db/saveddata/character.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, ForeignKey, String, DateTime, Float, UniqueConstraint from sqlalchemy.orm import relation, mapper import datetime from eos.db import saveddata_meta from eos.db.saveddata.implant import charImplants_table from eos.effectHandlerHelpers import HandledImplantList, HandledSsoCharacterList from eos.saveddata.implant import Implant from eos.saveddata.user import User from eos.saveddata.character import Character, Skill from eos.saveddata.ssocharacter import SsoCharacter characters_table = Table("characters", saveddata_meta, Column("ID", Integer, primary_key=True), Column("name", String, nullable=False), Column("defaultLevel", Integer, nullable=True), Column("alphaCloneID", Integer, nullable=True), Column("ownerID", ForeignKey("users.ID"), nullable=True), Column("secStatus", Float, nullable=True, default=0.0), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now)) sso_table = Table("ssoCharacter", saveddata_meta, Column("ID", Integer, primary_key=True), Column("client", String, nullable=False), Column("characterID", Integer, nullable=False), Column("characterName", String, nullable=False), Column("server", String, nullable=False), Column("refreshToken", String, nullable=False), Column("accessToken", String, nullable=False), Column("accessTokenExpires", DateTime, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), UniqueConstraint('client', 'server', 'characterID', name='uix_client_server_characterID'), UniqueConstraint('client', 'server', 'characterName', name='uix_client_server_characterName')) sso_character_map_table = Table("ssoCharacterMap", saveddata_meta, Column("characterID", ForeignKey("characters.ID"), primary_key=True), Column("ssoCharacterID", ForeignKey("ssoCharacter.ID"), primary_key=True), ) mapper(SsoCharacter, sso_table) mapper(Character, characters_table, properties={ "_Character__alphaCloneID": characters_table.c.alphaCloneID, "savedName" : characters_table.c.name, "_Character__secStatus": characters_table.c.secStatus, "_Character__owner" : relation( User, backref="characters"), "_Character__skills" : relation( Skill, backref="character", cascade="all,delete-orphan"), "_Character__implants" : relation( Implant, collection_class=HandledImplantList, cascade='all,delete-orphan', backref='character', single_parent=True, primaryjoin=charImplants_table.c.charID == characters_table.c.ID, secondaryjoin=charImplants_table.c.implantID == Implant.ID, secondary=charImplants_table), "_Character__ssoCharacters" : relation( SsoCharacter, collection_class=HandledSsoCharacterList, backref='characters', secondary=sso_character_map_table) } ) ================================================ FILE: eos/db/saveddata/damagePattern.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, ForeignKey, String, DateTime from sqlalchemy.orm import mapper import datetime from eos.db import saveddata_meta from eos.saveddata.damagePattern import DamagePattern damagePatterns_table = Table( 'damagePatterns', saveddata_meta, Column('ID', Integer, primary_key=True), Column('name', String), Column('emAmount', Float), Column('thermalAmount', Float), Column('kineticAmount', Float), Column('explosiveAmount', Float), Column('ownerID', ForeignKey('users.ID'), nullable=True), Column('created', DateTime, nullable=True, default=datetime.datetime.now), Column('modified', DateTime, nullable=True, onupdate=datetime.datetime.now)) mapper( DamagePattern, damagePatterns_table, properties={'rawName': damagePatterns_table.c.name}) ================================================ FILE: eos/db/saveddata/databaseRepair.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== from sqlalchemy.exc import DatabaseError from logbook import Logger pyfalog = Logger(__name__) class DatabaseCleanup: def __init__(self): pass @staticmethod def ExecuteSQLQuery(saveddata_engine, query): try: results = saveddata_engine.execute(query) return results except DatabaseError: pyfalog.error("Failed to connect to database or error executing query:\n{0}", query) return None @staticmethod def OrphanedCharacterSkills(saveddata_engine): # Find orphaned character skills. # This solves an issue where the character doesn't exist, but skills for that character do. # See issue #917 pyfalog.debug("Running database cleanup for character skills.") query = "SELECT COUNT(*) AS num FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "DELETE FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)" delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) @staticmethod def OrphanedFitDamagePatterns(saveddata_engine): # Find orphaned damage patterns. # This solves an issue where the damage pattern doesn't exist, but fits reference the pattern. # See issue #777 pyfalog.debug("Running database cleanup for orphaned damage patterns attached to fits.") query = "SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: # Get Uniform damage pattern ID uniform_query = "SELECT ID FROM damagePatterns WHERE name = 'Uniform'" uniform_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, uniform_query) if uniform_results is None: return rows = uniform_results.fetchall() if len(rows) == 0: pyfalog.error("Missing uniform damage pattern.") elif len(rows) > 1: pyfalog.error("More than one uniform damage pattern found.") else: uniform_damage_pattern_id = rows[0]['ID'] update_query = "UPDATE 'fits' SET 'damagePatternID' = {} " \ "WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL".format(uniform_damage_pattern_id) update_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, update_query) pyfalog.error("Database corruption found. Cleaning up {0} records.", update_results.rowcount) @staticmethod def OrphanedFitCharacterIDs(saveddata_engine): # Find orphaned character IDs. This solves an issue where the character doesn't exist, but fits reference the pattern. pyfalog.debug("Running database cleanup for orphaned characters attached to fits.") query = "SELECT COUNT(*) AS num FROM fits WHERE characterID NOT IN (SELECT ID FROM characters) OR characterID IS NULL" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: # Get All 5 character ID all5_query = "SELECT ID FROM characters WHERE name = 'All 5'" all5_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, all5_query) if all5_results is None: return rows = all5_results.fetchall() if len(rows) == 0: pyfalog.error("Missing 'All 5' character.") elif len(rows) > 1: pyfalog.error("More than one 'All 5' character found.") else: all5_id = rows[0]['ID'] update_query = "UPDATE 'fits' SET 'characterID' = " + str(all5_id) + \ " WHERE characterID not in (select ID from characters) OR characterID IS NULL" update_results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, update_query) pyfalog.error("Database corruption found. Cleaning up {0} records.", update_results.rowcount) @staticmethod def NullDamagePatternNames(saveddata_engine): # Find damage patterns that are missing the name. # This solves an issue where the damage pattern ends up with a name that is null. # See issue #949 pyfalog.debug("Running database cleanup for missing damage pattern names.") query = "SELECT COUNT(*) AS num FROM damagePatterns WHERE name IS NULL OR name = ''" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "DELETE FROM damagePatterns WHERE name IS NULL OR name = ''" delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) @staticmethod def NullTargetResistNames(saveddata_engine): # Find target resists that are missing the name. # This solves an issue where the target resist ends up with a name that is null. # See issue #949 pyfalog.debug("Running database cleanup for missing target resist names.") query = "SELECT COUNT(*) AS num FROM targetResists WHERE name IS NULL OR name = ''" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "DELETE FROM targetResists WHERE name IS NULL OR name = ''" delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) @staticmethod def OrphanedFitIDItemID(saveddata_engine): # Orphaned items that are missing the fit ID or item ID. # See issue #954 for table in ['drones', 'cargo', 'fighters']: pyfalog.debug("Running database cleanup for orphaned {0} items.", table) query = "SELECT COUNT(*) AS num FROM {} WHERE itemID IS NULL OR itemID = '' or itemID = '0' or fitID IS NULL OR fitID = '' or fitID = '0'".format( table) results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "DELETE FROM {} WHERE itemID IS NULL OR itemID = '' or itemID = '0' or fitID IS NULL OR fitID = '' or fitID = '0'".format( table) delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) for table in ['modules']: pyfalog.debug("Running database cleanup for orphaned {0} items.", table) query = "SELECT COUNT(*) AS num FROM {} WHERE itemID = '0' or fitID IS NULL OR fitID = '' or fitID = '0'".format( table) results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "DELETE FROM {} WHERE itemID = '0' or fitID IS NULL OR fitID = '' or fitID = '0'".format(table) delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) @staticmethod def NullDamageTargetPatternValues(saveddata_engine): # Find patterns that have null values # See issue #954 for profileType in ['damagePatterns', 'targetResists']: for damageType in ['em', 'thermal', 'kinetic', 'explosive']: pyfalog.debug("Running database cleanup for null {0} values. ({1})", profileType, damageType) query = "SELECT COUNT(*) AS num FROM {0} WHERE {1}Amount IS NULL OR {1}Amount = ''".format(profileType, damageType) results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num']: query = "UPDATE '{0}' SET '{1}Amount' = '0' WHERE {1}Amount IS NULL OR {1}Amount = ''".format(profileType, damageType) delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) @staticmethod def DuplicateSelectedAmmoName(saveddata_engine): # Orphaned items that are missing the fit ID or item ID. # See issue #954 pyfalog.debug("Running database cleanup for duplicated selected ammo profiles.") query = "SELECT COUNT(*) AS num FROM damagePatterns WHERE name = 'Selected Ammo'" results = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) if results is None: return row = results.first() if row and row['num'] > 1: query = "DELETE FROM damagePatterns WHERE name = 'Selected Ammo'" delete = DatabaseCleanup.ExecuteSQLQuery(saveddata_engine, query) pyfalog.error("Database corruption found. Cleaning up {0} records.", delete.rowcount) ================================================ FILE: eos/db/saveddata/drone.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, ForeignKey, Boolean, DateTime from sqlalchemy.orm import mapper, relation, synonym from sqlalchemy.orm.collections import attribute_mapped_collection import datetime from eos.db import saveddata_meta from eos.saveddata.drone import Drone from eos.saveddata.fit import Fit from eos.saveddata.mutator import MutatorDrone drones_table = Table("drones", saveddata_meta, Column("groupID", Integer, primary_key=True), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False, index=True), Column("itemID", Integer, nullable=False), Column("baseItemID", Integer, nullable=True), Column("mutaplasmidID", Integer, nullable=True), Column("amount", Integer, nullable=False), Column("amountActive", Integer, nullable=False), Column("projected", Boolean, default=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), Column("projectionRange", Float, nullable=True)) mapper(Drone, drones_table, properties={ "ID": synonym("groupID"), "owner": relation(Fit), "mutators": relation( MutatorDrone, backref="item", cascade="all,delete-orphan", collection_class=attribute_mapped_collection('attrID'))}) ================================================ FILE: eos/db/saveddata/fighter.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, ForeignKey, Boolean, DateTime from sqlalchemy.orm import mapper, relation import datetime from eos.db import saveddata_meta from eos.saveddata.fighterAbility import FighterAbility from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit fighters_table = Table("fighters", saveddata_meta, Column("groupID", Integer, primary_key=True), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False, index=True), Column("itemID", Integer, nullable=False), Column("active", Boolean, nullable=True), Column("amount", Integer, nullable=False), Column("projected", Boolean, default=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), Column("projectionRange", Float, nullable=True), ) fighter_abilities_table = Table("fightersAbilities", saveddata_meta, Column("groupID", Integer, ForeignKey("fighters.groupID"), primary_key=True, index=True), Column("effectID", Integer, nullable=False, primary_key=True), Column("active", Boolean, default=False)) mapper(Fighter, fighters_table, properties={ "owner" : relation(Fit), "_amount" : fighters_table.c.amount, "_Fighter__abilities": relation( FighterAbility, backref="fighter", cascade='all, delete, delete-orphan'), }) mapper(FighterAbility, fighter_abilities_table) ================================================ FILE: eos/db/saveddata/fit.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import datetime from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Float, String, Table from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import mapper, reconstructor, relation, relationship from sqlalchemy.orm.collections import attribute_mapped_collection from sqlalchemy.sql import and_ from eos.db import saveddata_meta, saveddata_session from eos.db.saveddata.cargo import cargo_table from eos.db.saveddata.drone import drones_table from eos.db.saveddata.fighter import fighters_table from eos.db.saveddata.implant import fitImplants_table from eos.db.saveddata.module import modules_table from eos.effectHandlerHelpers import HandledDroneCargoList, HandledImplantList, HandledBoosterList, HandledModuleList, HandledProjectedDroneList, HandledProjectedModList from eos.saveddata.booster import Booster from eos.saveddata.cargo import Cargo from eos.saveddata.character import Character from eos.saveddata.damagePattern import DamagePattern from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit as es_Fit from eos.saveddata.implant import Implant from eos.saveddata.module import Module from eos.saveddata.targetProfile import TargetProfile from eos.saveddata.user import User fits_table = Table("fits", saveddata_meta, Column("ID", Integer, primary_key=True), Column("ownerID", ForeignKey("users.ID"), nullable=True, index=True), Column("shipID", Integer, nullable=False, index=True), Column("name", String, nullable=False), Column("timestamp", Integer, nullable=False), Column("characterID", ForeignKey("characters.ID"), nullable=True), Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True), Column("builtinDamagePatternID", Integer, nullable=True), Column("booster", Boolean, nullable=False, index=True, default=0), Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True), Column("builtinTargetResistsID", Integer, nullable=True), Column("modeID", Integer, nullable=True), Column("implantLocation", Integer, nullable=False), Column("notes", String, nullable=True), Column("ignoreRestrictions", Boolean, default=0), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, default=datetime.datetime.now, onupdate=datetime.datetime.now), Column("systemSecurity", Integer, nullable=True), Column("pilotSecurity", Float, nullable=True), ) projectedFits_table = Table("projectedFits", saveddata_meta, Column("sourceID", ForeignKey("fits.ID"), primary_key=True), Column("victimID", ForeignKey("fits.ID"), primary_key=True), Column("amount", Integer, nullable=False, default=1), Column("active", Boolean, nullable=False, default=1), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), Column("projectionRange", Float, nullable=True), ) commandFits_table = Table("commandFits", saveddata_meta, Column("boosterID", ForeignKey("fits.ID"), primary_key=True), Column("boostedID", ForeignKey("fits.ID"), primary_key=True), Column("active", Boolean, nullable=False, default=1), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now) ) class ProjectedFit: def __init__(self, sourceID, source_fit, amount=1, active=True): self.sourceID = sourceID self.source_fit = source_fit self.active = active self.__amount = amount @reconstructor def init(self): if self.source_fit.isInvalid: # Very rare for this to happen, but be prepared for it saveddata_session.delete(self.source_fit) saveddata_session.flush() saveddata_session.refresh(self.victim_fit) # We have a series of setters and getters here just in case someone # downgrades and screws up the table with NULL values @property def amount(self): return self.__amount or 1 @amount.setter def amount(self, amount): self.__amount = amount def __repr__(self): return "ProjectedFit(sourceID={}, victimID={}, amount={}, active={}) at {}".format( self.sourceID, self.victimID, self.amount, self.active, hex(id(self)) ) class CommandFit: def __init__(self, boosterID, booster_fit, active=True): self.boosterID = boosterID self.booster_fit = booster_fit self.active = active @reconstructor def init(self): if self.booster_fit.isInvalid: # Very rare for this to happen, but be prepared for it saveddata_session.delete(self.booster_fit) saveddata_session.flush() saveddata_session.refresh(self.boosted_fit) def __repr__(self): return "CommandFit(boosterID={}, boostedID={}, active={}) at {}".format( self.boosterID, self.boostedID, self.active, hex(id(self)) ) es_Fit.projectedFitDict = association_proxy( "victimOf", # look at the victimOf association... "source_fit", # .. and return the source fits creator=lambda sourceID, source_fit: ProjectedFit(sourceID, source_fit) ) es_Fit.commandFitDict = association_proxy( "boostedOf", # look at the boostedOf association... "booster_fit", # .. and return the booster fit creator=lambda boosterID, booster_fit: CommandFit(boosterID, booster_fit) ) # These relationships are broken out so that we can easily access it in the events stuff # We sometimes don't want particular relationships to cause a fit modified update (eg: projecting # a fit onto another would 'modify' both fits unless the following relationship is ignored) projectedFitSourceRel = relationship( ProjectedFit, primaryjoin=projectedFits_table.c.sourceID == fits_table.c.ID, backref='source_fit', collection_class=attribute_mapped_collection('victimID'), cascade='all, delete, delete-orphan') boostedOntoRel = relationship( CommandFit, primaryjoin=commandFits_table.c.boosterID == fits_table.c.ID, backref='booster_fit', collection_class=attribute_mapped_collection('boostedID'), cascade='all, delete, delete-orphan') mapper(es_Fit, fits_table, properties={ "_Fit__modules": relation( Module, collection_class=HandledModuleList, primaryjoin=and_(modules_table.c.fitID == fits_table.c.ID, modules_table.c.projected == False), # noqa order_by=modules_table.c.position, overlaps='owner', cascade='all, delete, delete-orphan'), "_Fit__projectedModules": relation( Module, collection_class=HandledProjectedModList, overlaps='owner, _Fit__modules', cascade='all, delete, delete-orphan', primaryjoin=and_(modules_table.c.fitID == fits_table.c.ID, modules_table.c.projected == True)), # noqa "owner": relation( User, backref="fits"), "itemID": fits_table.c.shipID, "shipID": fits_table.c.shipID, "_Fit__boosters": relation( Booster, collection_class=HandledBoosterList, overlaps='owner', cascade='all, delete, delete-orphan'), "_Fit__drones": relation( Drone, collection_class=HandledDroneCargoList, overlaps='owner', cascade='all, delete, delete-orphan', primaryjoin=and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == False)), # noqa "_Fit__fighters": relation( Fighter, collection_class=HandledDroneCargoList, overlaps='owner', cascade='all, delete, delete-orphan', primaryjoin=and_(fighters_table.c.fitID == fits_table.c.ID, fighters_table.c.projected == False)), # noqa "_Fit__cargo": relation( Cargo, collection_class=HandledDroneCargoList, overlaps='owner', cascade='all, delete, delete-orphan', primaryjoin=and_(cargo_table.c.fitID == fits_table.c.ID)), "_Fit__projectedDrones": relation( Drone, collection_class=HandledProjectedDroneList, overlaps='owner, _Fit__drones', cascade='all, delete, delete-orphan', primaryjoin=and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == True)), # noqa "_Fit__projectedFighters": relation( Fighter, collection_class=HandledProjectedDroneList, overlaps='owner, _Fit__fighters', cascade='all, delete, delete-orphan', primaryjoin=and_(fighters_table.c.fitID == fits_table.c.ID, fighters_table.c.projected == True)), # noqa "_Fit__implants": relation( Implant, collection_class=HandledImplantList, cascade='all, delete, delete-orphan', backref='owner', single_parent=True, primaryjoin=fitImplants_table.c.fitID == fits_table.c.ID, secondaryjoin=fitImplants_table.c.implantID == Implant.ID, secondary=fitImplants_table), "_Fit__character": relation( Character, backref="fits"), "_Fit__userDamagePattern": relation(DamagePattern), "_Fit__builtinDamagePatternID": fits_table.c.builtinDamagePatternID, "_Fit__userTargetProfile": relation(TargetProfile), "_Fit__builtinTargetProfileID": fits_table.c.builtinTargetResistsID, "projectedOnto": projectedFitSourceRel, "victimOf": relationship( ProjectedFit, primaryjoin=fits_table.c.ID == projectedFits_table.c.victimID, backref='victim_fit', collection_class=attribute_mapped_collection('sourceID'), cascade='all, delete, delete-orphan'), "boostedOnto": boostedOntoRel, "boostedOf": relationship( CommandFit, primaryjoin=fits_table.c.ID == commandFits_table.c.boostedID, backref='boosted_fit', collection_class=attribute_mapped_collection('boosterID'), cascade='all, delete, delete-orphan'), } ) mapper(ProjectedFit, projectedFits_table, properties={ "_ProjectedFit__amount": projectedFits_table.c.amount, } ) mapper(CommandFit, commandFits_table) ================================================ FILE: eos/db/saveddata/implant.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, ForeignKey, Boolean, DateTime from sqlalchemy.orm import mapper import datetime from eos.db import saveddata_meta from eos.saveddata.implant import Implant implants_table = Table("implants", saveddata_meta, Column("ID", Integer, primary_key=True), Column("itemID", Integer), Column("active", Boolean), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now) ) fitImplants_table = Table("fitImplants", saveddata_meta, Column("fitID", ForeignKey("fits.ID"), index=True), Column("implantID", ForeignKey("implants.ID"), primary_key=True)) charImplants_table = Table("charImplants", saveddata_meta, Column("charID", ForeignKey("characters.ID"), index=True), Column("implantID", ForeignKey("implants.ID"), primary_key=True)) implantsSetMap_table = Table("implantSetMap", saveddata_meta, Column("setID", ForeignKey("implantSets.ID"), index=True), Column("implantID", ForeignKey("implants.ID"), primary_key=True)) mapper(Implant, implants_table) ================================================ FILE: eos/db/saveddata/implantSet.py ================================================ # =============================================================================== # Copyright (C) 2016 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, String, DateTime from sqlalchemy.orm import relation, mapper import datetime from eos.db import saveddata_meta from eos.db.saveddata.implant import implantsSetMap_table from eos.effectHandlerHelpers import HandledImplantList from eos.saveddata.implant import Implant from eos.saveddata.implantSet import ImplantSet implant_set_table = Table("implantSets", saveddata_meta, Column("ID", Integer, primary_key=True), Column("name", String, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now) ) mapper(ImplantSet, implant_set_table, properties={ "_ImplantSet__implants": relation( Implant, collection_class=HandledImplantList, cascade='all, delete, delete-orphan', backref='set', single_parent=True, primaryjoin=implantsSetMap_table.c.setID == implant_set_table.c.ID, secondaryjoin=implantsSetMap_table.c.implantID == Implant.ID, secondary=implantsSetMap_table), } ) ================================================ FILE: eos/db/saveddata/miscData.py ================================================ # =============================================================================== # Copyright (C) 2011 Anton Vorobyov # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Column, Table, String from sqlalchemy.orm import mapper from eos.db import saveddata_meta from eos.saveddata.miscData import MiscData miscdata_table = Table("miscdata", saveddata_meta, Column("fieldName", String, primary_key=True), Column("fieldValue", String)) mapper(MiscData, miscdata_table) ================================================ FILE: eos/db/saveddata/module.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, ForeignKey, CheckConstraint, Boolean, DateTime from sqlalchemy.orm import relation, mapper from sqlalchemy.orm.collections import attribute_mapped_collection import datetime from eos.db import saveddata_meta from eos.saveddata.module import Module from eos.saveddata.fit import Fit from eos.saveddata.mutator import MutatorModule modules_table = Table("modules", saveddata_meta, Column("ID", Integer, primary_key=True), Column("fitID", Integer, ForeignKey("fits.ID"), nullable=False, index=True), Column("itemID", Integer, nullable=True), Column("baseItemID", Integer, nullable=True), Column("mutaplasmidID", Integer, nullable=True), Column("dummySlot", Integer, nullable=True, default=None), Column("chargeID", Integer), Column("state", Integer, CheckConstraint("state >= -1"), CheckConstraint("state <= 2")), Column("projected", Boolean, default=False, nullable=False), Column("position", Integer), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now), Column("spoolType", Integer, nullable=True), Column("spoolAmount", Float, nullable=True), Column("projectionRange", Float, nullable=True), CheckConstraint('("dummySlot" = NULL OR "itemID" = NULL) AND "dummySlot" != "itemID"')) mapper(Module, modules_table, properties={ "owner": relation(Fit), "mutators": relation( MutatorModule, backref="item", cascade="all,delete-orphan", collection_class=attribute_mapped_collection('attrID'))}) ================================================ FILE: eos/db/saveddata/mutatorDrone.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import datetime from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, Table from sqlalchemy.orm import mapper from eos.db import saveddata_meta from eos.saveddata.mutator import MutatorDrone mutatorDrones_table = Table( "mutatorsDrones", saveddata_meta, Column("groupID", Integer, ForeignKey("drones.groupID"), primary_key=True, index=True), Column("attrID", Integer, primary_key=True, index=True), Column("value", Float, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now)) mapper(MutatorDrone, mutatorDrones_table) ================================================ FILE: eos/db/saveddata/mutatorMod.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import datetime from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, Table from sqlalchemy.orm import mapper from eos.db import saveddata_meta from eos.saveddata.mutator import MutatorModule mutatorMods_table = Table( "mutators", saveddata_meta, Column("moduleID", Integer, ForeignKey("modules.ID"), primary_key=True, index=True), Column("attrID", Integer, primary_key=True, index=True), Column("value", Float, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now)) mapper(MutatorModule, mutatorMods_table) ================================================ FILE: eos/db/saveddata/override.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, DateTime from sqlalchemy.orm import mapper import datetime from eos.db import saveddata_meta from eos.saveddata.override import Override overrides_table = Table("overrides", saveddata_meta, Column("itemID", Integer, primary_key=True, index=True), Column("attrID", Integer, primary_key=True, index=True), Column("value", Float, nullable=False), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now) ) mapper(Override, overrides_table) ================================================ FILE: eos/db/saveddata/price.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Float, Integer from sqlalchemy.orm import mapper from eos.db import saveddata_meta from eos.saveddata.price import Price prices_table = Table("prices", saveddata_meta, Column("typeID", Integer, primary_key=True), Column("price", Float, default=0.0), Column("time", Integer, nullable=False), Column("status", Integer, nullable=False)) mapper(Price, prices_table) ================================================ FILE: eos/db/saveddata/queries.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import sys from sqlalchemy.sql import and_ from sqlalchemy import desc, select from sqlalchemy import func from eos.db import saveddata_session, sd_lock from eos.db.saveddata.fit import fits_table, projectedFits_table from eos.db.util import processEager, processWhere from eos.saveddata.price import Price from eos.saveddata.user import User from eos.saveddata.ssocharacter import SsoCharacter from eos.saveddata.damagePattern import DamagePattern from eos.saveddata.targetProfile import TargetProfile from eos.saveddata.character import Character from eos.saveddata.implantSet import ImplantSet from eos.saveddata.fit import Fit, FitLite from eos.saveddata.module import Module from eos.saveddata.miscData import MiscData from eos.saveddata.override import Override import eos.config configVal = getattr(eos.config, "saveddataCache", None) if configVal is True: import weakref itemCache = {} queryCache = {} def cachedQuery(type, amount, *keywords): itemCache[type] = localItemCache = weakref.WeakValueDictionary() queryCache[type] = typeQueryCache = {} def deco(function): localQueryCache = typeQueryCache[function] = {} def setCache(cacheKey, args, kwargs): items = function(*args, **kwargs) IDs = set() localQueryCache[cacheKey] = (isinstance(items, list), IDs) stuff = items if isinstance(items, list) else (items,) for item in stuff: ID = getattr(item, "ID", None) if ID is None: # Some uncachable data, don't cache this query del localQueryCache[cacheKey] break localItemCache[ID] = item IDs.add(ID) return items def checkAndReturn(*args, **kwargs): useCache = kwargs.pop("useCache", True) cacheKey = [] items = None cacheKey.extend(args) for keyword in keywords: cacheKey.append(kwargs.get(keyword)) cacheKey = tuple(cacheKey) info = localQueryCache.get(cacheKey) if info is None or not useCache: items = setCache(cacheKey, args, kwargs) else: l, IDs = info if l: items = [] for ID in IDs: data = localItemCache.get(ID) if data is None: # Fuck, some of our stuff isn't cached it seems. items = setCache(cacheKey, args, kwargs) break items.append(data) else: for ID in IDs: items = localItemCache.get(ID) if items is None: items = setCache(cacheKey, args, kwargs) break return items return checkAndReturn return deco def removeCachedEntry(type, ID): if type not in queryCache: return functionCache = queryCache[type] for _, localCache in functionCache.items(): toDelete = set() for cacheKey, info in localCache.items(): IDs = info[1] if ID in IDs: toDelete.add(cacheKey) for cacheKey in toDelete: del localCache[cacheKey] if ID in itemCache[type]: del itemCache[type][ID] elif callable(configVal): cachedQuery, removeCachedEntry = eos.config.gamedataCache else: def cachedQuery(amount, *keywords): def deco(function): def checkAndReturn(*args, **kwargs): return function(*args, **kwargs) return checkAndReturn return deco def removeCachedEntry(*args, **kwargs): return def sqlizeString(line): # Escape backslashes first, as they will be as escape symbol in queries # Then escape percent and underscore signs # Finally, replace generic wildcards with sql-style wildcards line = line.replace("\\", "\\\\").replace("%", "\\%").replace("_", "\\_").replace("*", "%") return line @cachedQuery(User, 1, "lookfor") def getUser(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: user = saveddata_session.query(User).get(lookfor) else: eager = processEager(eager) with sd_lock: user = saveddata_session.query(User).options(*eager).filter(User.ID == lookfor).first() elif isinstance(lookfor, str): eager = processEager(eager) with sd_lock: user = saveddata_session.query(User).options(*eager).filter(User.username == lookfor).first() else: raise TypeError("Need integer or string as argument") return user @cachedQuery(Character, 1, "lookfor") def getCharacter(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: character = saveddata_session.query(Character).get(lookfor) else: eager = processEager(eager) with sd_lock: character = saveddata_session.query(Character).options(*eager).filter(Character.ID == lookfor).first() elif isinstance(lookfor, str): eager = processEager(eager) with sd_lock: character = saveddata_session.query(Character).options(*eager).filter( Character.savedName == lookfor).first() else: raise TypeError("Need integer or string as argument") return character def getCharacterList(eager=None): eager = processEager(eager) with sd_lock: characters = saveddata_session.query(Character).options(*eager).all() return characters def getCharactersForUser(lookfor, eager=None): if isinstance(lookfor, int): eager = processEager(eager) with sd_lock: characters = saveddata_session.query(Character).options(*eager).filter(Character.ownerID == lookfor).all() else: raise TypeError("Need integer as argument") return characters @cachedQuery(Fit, 1, "lookfor") def getFit(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: fit = saveddata_session.query(Fit).get(lookfor) else: eager = processEager(eager) with sd_lock: fit = saveddata_session.query(Fit).options(*eager).filter(Fit.ID == lookfor).first() else: raise TypeError("Need integer as argument") if fit and fit.isInvalid: with sd_lock: removeInvalid([fit]) return None return fit def getFitsWithShip(shipID, ownerID=None, where=None, eager=None): """ Get all the fits using a certain ship. If no user is passed, do this for all users. """ if isinstance(shipID, int): if ownerID is not None and not isinstance(ownerID, int): raise TypeError("OwnerID must be integer") filter = Fit.shipID == shipID if ownerID is not None: filter = and_(filter, Fit.ownerID == ownerID) filter = processWhere(filter, where) eager = processEager(eager) with sd_lock: fits = removeInvalid(saveddata_session.query(Fit).options(*eager).filter(filter).all()) else: raise TypeError("ShipID must be integer") return fits def getRecentFits(ownerID=None, where=None, eager=None): eager = processEager(eager) with sd_lock: q = select(( Fit.ID, Fit.shipID, Fit.name, Fit.modified, Fit.created, Fit.timestamp, Fit.notes )).order_by(desc(Fit.modified), desc(Fit.timestamp)).limit(50) fits = eos.db.saveddata_session.execute(q).fetchall() return fits def getFitsWithModules(typeIDs, eager=None): """ Get all the fits that have typeIDs fitted to them """ if not hasattr(typeIDs, "__iter__"): typeIDs = (typeIDs,) eager = processEager(eager) with sd_lock: fits = removeInvalid(saveddata_session.query(Fit).join(Module).options(*eager).filter(Module.itemID.in_(typeIDs)).all()) return fits def countAllFits(): with sd_lock: count = saveddata_session.query(Fit).count() return count def countFitGroupedByShip(): with sd_lock: count = eos.db.saveddata_session.query(Fit.shipID, func.count(Fit.shipID)).group_by(Fit.shipID).all() return count def countFitsWithShip(lookfor, ownerID=None, where=None, eager=None): """ Get all the fits using a certain ship. If no user is passed, do this for all users. """ if ownerID is not None and not isinstance(ownerID, int): raise TypeError("OwnerID must be integer") if isinstance(lookfor, int): filter = Fit.shipID == lookfor elif isinstance(lookfor, list): if len(lookfor) == 0: return 0 filter = Fit.shipID.in_(lookfor) else: raise TypeError("You must supply either an integer or ShipID must be integer") if ownerID is not None: filter = and_(filter, Fit.ownerID == ownerID) filter = processWhere(filter, where) eager = processEager(eager) with sd_lock: count = saveddata_session.query(Fit).options(*eager).filter(filter).count() return count def getFitList(eager=None): eager = processEager(eager) with sd_lock: fits = removeInvalid(saveddata_session.query(Fit).options(*eager).all()) return fits def getFitListLite(): with sd_lock: stmt = select([fits_table.c.ID, fits_table.c.name, fits_table.c.shipID]) data = eos.db.saveddata_session.execute(stmt).fetchall() fits = [] for fitID, fitName, shipID in data: fit = FitLite(id=fitID, name=fitName, shipID=shipID) fits.append(fit) return fits @cachedQuery(Price, 1, "typeID") def getPrice(typeID): if isinstance(typeID, int): with sd_lock: price = saveddata_session.query(Price).get(typeID) else: raise TypeError("Need integer as argument") return price def clearPrices(): with sd_lock: deleted_rows = saveddata_session.query(Price).delete() commit() return deleted_rows def getMiscData(field): if isinstance(field, str): with sd_lock: data = saveddata_session.query(MiscData).get(field) else: raise TypeError("Need string as argument") return data def getDamagePatternList(eager=None): eager = processEager(eager) with sd_lock: patterns = saveddata_session.query(DamagePattern).options(*eager).all() return patterns def clearDamagePatterns(): with sd_lock: deleted_rows = saveddata_session.query(DamagePattern).filter(DamagePattern.name != 'Uniform').delete() commit() return deleted_rows def getTargetProfileList(eager=None): eager = processEager(eager) with sd_lock: patterns = saveddata_session.query(TargetProfile).options(*eager).all() return patterns def clearTargetProfiles(): with sd_lock: deleted_rows = saveddata_session.query(TargetProfile).delete() commit() return deleted_rows def getImplantSetList(eager=None): eager = processEager(eager) with sd_lock: sets = saveddata_session.query(ImplantSet).options(*eager).all() return sets @cachedQuery(DamagePattern, 1, "lookfor") def getDamagePattern(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: pattern = saveddata_session.query(DamagePattern).get(lookfor) else: eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(DamagePattern).options(*eager).filter( DamagePattern.ID == lookfor).first() elif isinstance(lookfor, str): eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(DamagePattern).options(*eager).filter( DamagePattern.rawName == lookfor).first() else: raise TypeError("Need integer or string as argument") return pattern @cachedQuery(TargetProfile, 1, "lookfor") def getTargetProfile(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: pattern = saveddata_session.query(TargetProfile).get(lookfor) else: eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(TargetProfile).options(*eager).filter( TargetProfile.ID == lookfor).first() elif isinstance(lookfor, str): eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(TargetProfile).options(*eager).filter( TargetProfile.rawName == lookfor).first() else: raise TypeError("Need integer or string as argument") return pattern @cachedQuery(ImplantSet, 1, "lookfor") def getImplantSet(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: with sd_lock: pattern = saveddata_session.query(ImplantSet).get(lookfor) else: eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(ImplantSet).options(*eager).filter( TargetProfile.ID == lookfor).first() elif isinstance(lookfor, str): eager = processEager(eager) with sd_lock: pattern = saveddata_session.query(ImplantSet).options(*eager).filter(TargetProfile.name == lookfor).first() else: raise TypeError("Improper argument") return pattern def searchFits(nameLike, where=None, eager=None): if not isinstance(nameLike, str): raise TypeError("Need string as argument") # Prepare our string for request nameLike = "%{0}%".format(sqlizeString(nameLike)) # Add any extra components to the search to our where clause filter = processWhere(Fit.name.like(nameLike, escape="\\"), where) eager = processEager(eager) with sd_lock: fits = removeInvalid(saveddata_session.query(Fit).options(*eager).filter(filter).limit(100).all()) return fits def getProjectedFits(fitID): if isinstance(fitID, int): with sd_lock: filter = and_(projectedFits_table.c.sourceID == fitID, Fit.ID == projectedFits_table.c.victimID) fits = saveddata_session.query(Fit).filter(filter).all() return fits else: raise TypeError("Need integer as argument") def getSsoCharacters(clientHash, eager=None): eager = processEager(eager) with sd_lock: characters = saveddata_session.query(SsoCharacter).filter(SsoCharacter.client == clientHash).options(*eager).all() return characters @cachedQuery(SsoCharacter, 1, "lookfor", "clientHash") def getSsoCharacter(lookfor, clientHash, server=None, eager=None): filter = SsoCharacter.client == clientHash if server is not None: filter = and_(filter, SsoCharacter.server == server) if isinstance(lookfor, int): filter = and_(filter, SsoCharacter.ID == lookfor) elif isinstance(lookfor, str): filter = and_(filter, SsoCharacter.characterName == lookfor) else: raise TypeError("Need integer or string as argument") eager = processEager(eager) with sd_lock: character = saveddata_session.query(SsoCharacter).options(*eager).filter(filter).first() return character def getOverrides(itemID, eager=None): if isinstance(itemID, int): return saveddata_session.query(Override).filter(Override.itemID == itemID).all() else: raise TypeError("Need integer as argument") def clearOverrides(): with sd_lock: deleted_rows = saveddata_session.query(Override).delete() commit() return deleted_rows def getAllOverrides(eager=None): return saveddata_session.query(Override).all() def removeInvalid(fits): invalids = [f for f in fits if f.isInvalid] if invalids: list(map(fits.remove, invalids)) list(map(saveddata_session.delete, invalids)) saveddata_session.commit() return fits def add(stuff): with sd_lock: saveddata_session.add(stuff) def save(stuff): add(stuff) commit() def remove(stuff): removeCachedEntry(type(stuff), stuff.ID) with sd_lock: saveddata_session.delete(stuff) commit() def commit(): with sd_lock: try: saveddata_session.commit() except (KeyboardInterrupt, SystemExit): raise except Exception: saveddata_session.rollback() exc_info = sys.exc_info() raise exc_info[0](exc_info[1]).with_traceback(exc_info[2]) def flush(): with sd_lock: try: saveddata_session.flush() except (KeyboardInterrupt, SystemExit): raise except Exception: saveddata_session.rollback() exc_info = sys.exc_info() raise exc_info[0](exc_info[1]).with_traceback(exc_info[2]) ================================================ FILE: eos/db/saveddata/skill.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, ForeignKey, DateTime from sqlalchemy.orm import mapper import datetime from eos.db import saveddata_meta from eos.saveddata.character import Skill skills_table = Table("characterSkills", saveddata_meta, Column("characterID", ForeignKey("characters.ID"), primary_key=True, index=True), Column("itemID", Integer, primary_key=True), Column("_Skill__level", Integer, nullable=True), Column("created", DateTime, nullable=True, default=datetime.datetime.now), Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now) ) mapper(Skill, skills_table) ================================================ FILE: eos/db/saveddata/targetProfile.py ================================================ # =============================================================================== # Copyright (C) 2014 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, Float, ForeignKey, String, DateTime from sqlalchemy.orm import mapper import datetime from eos.db import saveddata_meta from eos.saveddata.targetProfile import TargetProfile targetProfiles_table = Table( 'targetResists', saveddata_meta, Column('ID', Integer, primary_key=True), Column('name', String), Column('emAmount', Float), Column('thermalAmount', Float), Column('kineticAmount', Float), Column('explosiveAmount', Float), Column('maxVelocity', Float, nullable=True), Column('signatureRadius', Float, nullable=True), Column('radius', Float, nullable=True), Column('hp', Float, nullable=True), Column('ownerID', ForeignKey('users.ID'), nullable=True), Column('created', DateTime, nullable=True, default=datetime.datetime.now), Column('modified', DateTime, nullable=True, onupdate=datetime.datetime.now)) mapper( TargetProfile, targetProfiles_table, properties={ 'rawName': targetProfiles_table.c.name, '_maxVelocity': targetProfiles_table.c.maxVelocity, '_signatureRadius': targetProfiles_table.c.signatureRadius, '_radius': targetProfiles_table.c.radius, '_hp': targetProfiles_table.c.hp}) ================================================ FILE: eos/db/saveddata/user.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy import Table, Column, Integer, String, Boolean from sqlalchemy.orm import mapper from eos.db import saveddata_meta from eos.saveddata.user import User users_table = Table("users", saveddata_meta, Column("ID", Integer, primary_key=True), Column("username", String, nullable=False, unique=True), Column("password", String, nullable=False), Column("admin", Boolean, nullable=False)) mapper(User, users_table) ================================================ FILE: eos/db/util.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy.orm import eagerload from sqlalchemy.sql import and_ replace = { "attributes" : "_Item__attributes", "modules" : "_Fit__modules", "projectedModules": "_Fit__projectedModules", "boosters" : "_Fit__boosters", "drones" : "_Fit__drones", "projectedDrones" : "_Fit__projectedDrones", "implants" : "_Fit__implants", "character" : "_Fit__character", "damagePattern" : "_Fit__damagePattern", "projectedFits" : "_Fit__projectedFits" } def processEager(eager): if eager is None: return tuple() else: l = [] if isinstance(eager, str): eager = (eager,) for e in eager: l.append(eagerload(_replacements(e))) return l def _replacements(eagerString): splitEager = eagerString.split(".") for i in range(len(splitEager)): part = splitEager[i] replacement = replace.get(part) if replacement: splitEager[i] = replacement return ".".join(splitEager) def processWhere(clause, where): if where is not None: if not hasattr(where, "__iter__"): where = (where,) try: for extraClause in where: clause = and_(clause, extraClause) except NotImplementedError: clause = and_(clause, where) return clause ================================================ FILE: eos/effectHandlerHelpers.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm.attributes import flag_dirty from sqlalchemy.orm.collections import collection pyfalog = Logger(__name__) class HandledList(list): def filteredItemPreAssign(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.preAssignItemAttr(*args, **kwargs) except AttributeError: pass def filteredItemIncrease(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.increaseItemAttr(*args, **kwargs) except AttributeError: pass def filteredItemMultiply(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.multiplyItemAttr(*args, **kwargs) except AttributeError: pass def filteredItemBoost(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.boostItemAttr(*args, **kwargs) except AttributeError: pass def filteredItemForce(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.forceItemAttr(*args, **kwargs) except AttributeError: pass def filteredChargePreAssign(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.preAssignChargeAttr(*args, **kwargs) except AttributeError: pass def filteredChargeIncrease(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.increaseChargeAttr(*args, **kwargs) except AttributeError: pass def filteredChargeMultiply(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.multiplyChargeAttr(*args, **kwargs) except AttributeError: pass def filteredChargeBoost(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.boostChargeAttr(*args, **kwargs) except AttributeError: pass def filteredChargeForce(self, filter, *args, **kwargs): for element in self: try: if filter(element): element.forceChargeAttr(*args, **kwargs) except AttributeError: pass def remove(self, thing): # We must flag it as modified, otherwise it not be removed from the database flag_dirty(thing) list.remove(self, thing) def sort(self, *args, **kwargs): # We need it here to prevent external users from accidentally sorting the list as alot of # external logic relies on keeping modules at their places raise NotImplementedError class HandledModuleList(HandledList): def append(self, mod): emptyPosition = float("Inf") for i in range(len(self)): currMod = self[i] if currMod.isEmpty and not mod.isEmpty and currMod.slot == mod.slot: currPos = mod.position or i if currPos < emptyPosition: emptyPosition = currPos if emptyPosition < len(self): mod.position = emptyPosition self.__toModule(emptyPosition, mod) if mod.isInvalid: self.__toDummy(mod.position) else: self.appendIgnoreEmpty(mod) @collection.appender def appendIgnoreEmpty(self, mod): mod.position = len(self) super().append(mod) if mod.isInvalid: self.remove(mod) def replace(self, idx, mod): try: oldMod = self[idx] except IndexError: return self.__toModule(idx, mod) if mod.isInvalid: self.__toModule(idx, oldMod) def replaceRackPosition(self, rackPosition, mod): listPositions = [] for currPos in range(len(self)): currMod = self[currPos] if currMod.slot == mod.slot: listPositions.append(currPos) listPositions.sort() try: modListPosition = listPositions[rackPosition] except IndexError: self.appendIgnoreEmpty(mod) else: oldMod = self[modListPosition] if mod.isEmpty: self.__toDummy(modListPosition) else: self.__toModule(modListPosition, mod) # If new module cannot be appended, restore old state if mod.isInvalid: if oldMod.isEmpty: self.__toDummy(modListPosition) else: self.__toModule(modListPosition, oldMod) def insert(self, idx, mod): mod.position = idx i = idx while i < len(self): self[i].position += 1 i += 1 HandledList.insert(self, idx, mod) if mod.isInvalid: self.remove(mod) def remove(self, mod): HandledList.remove(self, mod) oldPos = mod.position mod.position = None for i in range(oldPos, len(self)): self[i].position -= 1 def free(self, idx): self.__toDummy(idx) def __toDummy(self, index): mod = self[index] if not mod.isEmpty: dummy = mod.buildEmpty(mod.slot) dummy.position = index self[index] = dummy mod.position = None def __toModule(self, index, mod): oldMod = self[index] mod.position = index self[index] = mod oldMod.position = None class HandledDroneCargoList(HandledList): def find(self, item): for o in self: if o.item == item: yield o def findFirst(self, item): for o in self.find(item): return o def append(self, thing): HandledList.append(self, thing) if thing.isInvalid: self.remove(thing) def insert(self, idx, thing): HandledList.insert(self, idx, thing) if thing.isInvalid: self.remove(thing) class HandledImplantList(HandledList): def append(self, implant): if implant.isInvalid: HandledList.append(self, implant) self.remove(implant) return if self.__slotCheck(implant): HandledList.append(self, implant) self.remove(implant) return HandledList.append(self, implant) def insert(self, idx, implant): if implant.isInvalid: HandledList.insert(self, idx, implant) self.remove(implant) return if self.__slotCheck(implant): HandledList.insert(self, idx, implant) self.remove(implant) return HandledList.insert(self, idx, implant) def makeRoom(self, implant): # if needed, remove booster that was occupying slot oldObj = next((i for i in self if i.slot == implant.slot), None) if oldObj is not None: pyfalog.info("Slot {0} occupied with {1}, replacing with {2}", implant.slot, oldObj.item.name, implant.item.name) position = self.index(oldObj) from gui.fitCommands.helpers import ImplantInfo implantInfo = ImplantInfo.fromImplant(oldObj) oldObj.itemID = 0 # hack to remove from DB. See GH issue #324 self.remove(oldObj) return position, implantInfo return None, None def __slotCheck(self, implant): return any(i.slot == implant.slot for i in self) class HandledBoosterList(HandledList): def append(self, booster): if booster.isInvalid: HandledList.append(self, booster) self.remove(booster) return if self.__slotCheck(booster): HandledList.append(self, booster) self.remove(booster) return HandledList.append(self, booster) def insert(self, idx, booster): if booster.isInvalid: HandledList.insert(self, idx, booster) self.remove(booster) return if self.__slotCheck(booster): HandledList.insert(self, idx, booster) self.remove(booster) return HandledList.insert(self, idx, booster) def makeRoom(self, booster): # if needed, remove booster that was occupying slot oldObj = next((b for b in self if b.slot == booster.slot), None) if oldObj is not None: pyfalog.info("Slot {0} occupied with {1}, replacing with {2}", booster.slot, oldObj.item.name, booster.item.name) position = self.index(oldObj) from gui.fitCommands.helpers import BoosterInfo boosterInfo = BoosterInfo.fromBooster(oldObj) oldObj.itemID = 0 # hack to remove from DB. See GH issue #324 self.remove(oldObj) return position, boosterInfo return None, None def __slotCheck(self, booster): return any(b.slot == booster.slot for b in self) class HandledSsoCharacterList(list): def append(self, character): old = next((x for x in self if x.client == character.client), None) if old is not None: pyfalog.warning("Removing SSO Character with same hash: {}".format(repr(old))) list.remove(self, old) list.append(self, character) class HandledProjectedModList(HandledList): def append(self, proj): if proj.isInvalid: # we must include it before we remove it. doing it this way ensures # rows and relationships in database are removed as well HandledList.append(self, proj) self.remove(proj) return proj.projected = True HandledList.append(self, proj) # Remove non-projectable modules if not proj.item.isType("projected") and not proj.isExclusiveSystemEffect: self.remove(proj) def insert(self, idx, proj): if proj.isInvalid: # we must include it before we remove it. doing it this way ensures # rows and relationships in database are removed as well HandledList.insert(self, idx, proj) self.remove(proj) return proj.projected = True HandledList.insert(self, idx, proj) # Remove non-projectable modules if not proj.item.isType("projected") and not proj.isExclusiveSystemEffect: self.remove(proj) @property def currentSystemEffect(self): return next((m for m in self if m.isExclusiveSystemEffect), None) def makeRoom(self, proj): if proj.isExclusiveSystemEffect: # remove other system effects - only 1 per fit plz mod = self.currentSystemEffect if mod: pyfalog.info("System effect occupied with {0}, removing it to make space for {1}".format(mod.item.name, proj.item.name)) position = self.index(mod) # We need to pack up this info, so whatever... from gui.fitCommands.helpers import ModuleInfo modInfo = ModuleInfo.fromModule(mod) self.remove(mod) return position, modInfo return None, None class HandledProjectedDroneList(HandledDroneCargoList): def append(self, proj): proj.projected = True HandledList.append(self, proj) # Remove invalid or non-projectable drones if proj.isInvalid or not proj.item.isType("projected"): self.remove(proj) proj.projected = False def insert(self, idx, proj): proj.projected = True HandledList.insert(self, idx, proj) # Remove invalid or non-projectable drones if proj.isInvalid or not proj.item.isType("projected"): self.remove(proj) proj.projected = False class HandledItem: def preAssignItemAttr(self, *args, **kwargs): self.itemModifiedAttributes.preAssign(*args, **kwargs) def increaseItemAttr(self, *args, **kwargs): self.itemModifiedAttributes.increase(*args, **kwargs) def multiplyItemAttr(self, *args, **kwargs): self.itemModifiedAttributes.multiply(*args, **kwargs) def boostItemAttr(self, *args, **kwargs): self.itemModifiedAttributes.boost(*args, **kwargs) def forceItemAttr(self, *args, **kwargs): self.itemModifiedAttributes.force(*args, **kwargs) class HandledCharge: def preAssignChargeAttr(self, *args, **kwargs): self.chargeModifiedAttributes.preAssign(*args, **kwargs) def increaseChargeAttr(self, *args, **kwargs): self.chargeModifiedAttributes.increase(*args, **kwargs) def multiplyChargeAttr(self, *args, **kwargs): self.chargeModifiedAttributes.multiply(*args, **kwargs) def boostChargeAttr(self, *args, **kwargs): self.chargeModifiedAttributes.boost(*args, **kwargs) def forceChargeAttr(self, *args, **kwargs): self.chargeModifiedAttributes.force(*args, **kwargs) ================================================ FILE: eos/effects.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import eos.config from eos.calc import calculateRangeFactor from eos.const import FittingModuleState, FitSystemSecurity from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions class BaseEffect: dealsDamage = False @staticmethod def handler(fit, module, context, projectionRange, **kwargs): pass class DummyEffect(BaseEffect): pass class Effect100000(BaseEffect): """ pyfaCustomSuppressionTackleRange Used by: Celestial: Insurgency Suppression Interdiction Range Beacon """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): if id := beacon.getModifiedItemAttr('warfareBuff1ID'): value = beacon.getModifiedItemAttr('warfareBuff1Value') if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect100001(BaseEffect): """ pyfaCustomSovUpgradeBuffEffect Used by: Infrastructure Upgradess from group: Sovereignty Hub System Effect Generator Upgrades (4 of 4) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for i in range(1, 4): if id := beacon.getModifiedItemAttr(f'warfareBuff{i}ID'): value = beacon.getModifiedItemAttr(f'warfareBuff{i}Value') fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect100002(BaseEffect): """ pyfaCustomTrigSystemBuffEffect Used by: Celestial: Final Liminality Celestial: Triglavian Minor Victory """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for i in range(1, 5): if id := beacon.getModifiedItemAttr(f'warfareBuff{i}ID'): value = beacon.getModifiedItemAttr(f'warfareBuff{i}Value') fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect4(BaseEffect): """ shieldBoosting Used by: Modules from group: Shield Booster (94 of 94) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs) class Effect10(BaseEffect): """ targetAttack Used by: Celestials from group: Destructible Effect Beacon (6 of 6) Drones from group: Combat Drone (98 of 98) Modules from group: Energy Weapon (216 of 220) Celestial: BH Sentry Gun Celestial: EDENCOM Stockpile Non-Interactable (Do not translate) Celestial: Liberation Games Firework Sentry ( DO NOT TRANSLATE) Celestial: Minmatar Sentry Gun (DO NOT TRANSLATE) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect17(BaseEffect): """ mining Used by: Drones from group: Mining Drone (14 of 14) """ grouped = True type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): miningDroneAmountPercent = container.getModifiedItemAttr('miningDroneAmountPercent') if (miningDroneAmountPercent is None) or (miningDroneAmountPercent == 0): pass else: container.multiplyItemAttr('miningAmount', miningDroneAmountPercent / 100, **kwargs) class Effect21(BaseEffect): """ shieldCapacityBonusOnline Used by: Modules from group: Shield Extender (36 of 36) Modules from group: Shield Resistance Amplifier (84 of 84) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('capacityBonus'), **kwargs) class Effect25(BaseEffect): """ capacitorCapacityBonus Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs) class Effect26(BaseEffect): """ structureRepair Used by: Modules from group: Hull Repair Unit (25 of 25) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('structureDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('hullRepair', amount / speed, **kwargs) class Effect27(BaseEffect): """ armorRepair Used by: Modules from group: Armor Repair Unit (105 of 105) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('armorDamageAmount') speed = module.getModifiedItemAttr('duration') / 1000.0 rps = amount / speed fit.extraAttributes.increase('armorRepair', rps, **kwargs) fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs) fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs) class Effect34(BaseEffect): """ projectileFired Used by: Modules from group: Hybrid Weapon (223 of 223) Modules from group: Projectile Weapon (167 of 167) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): rt = module.getModifiedItemAttr('reloadTime') if not rt: # Set reload time to 10 seconds module.reloadTime = 10000 else: module.reloadTime = rt class Effect38(BaseEffect): """ empWave Used by: Modules from group: Smart Bomb (137 of 137) """ dealsDamage = True type = 'active' class Effect39(BaseEffect): """ warpDisrupt Used by: Modules named like: Warp Disruptor (29 of 29) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) class Effect46(BaseEffect): """ shipScan Used by: Modules from group: Ship Scanner (3 of 3) """ type = 'active' class Effect47(BaseEffect): """ cargoScan Used by: Modules from group: Cargo Scanner (4 of 4) """ type = 'active' class Effect48(BaseEffect): """ powerBooster Used by: Modules from group: Capacitor Booster (43 of 43) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 10 seconds module.reloadTime = 10000 # Make so that reloads are always taken into account during clculations module.forceReload = True if module.charge is None: return capAmount = module.getModifiedChargeAttr('capacitorBonus') or 0 module.itemModifiedAttributes['capacitorNeed'] = -capAmount class Effect50(BaseEffect): """ modifyShieldRechargeRate Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules from group: Shield Recharger (4 of 4) Modules named like: Flux Coil (13 of 13) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier') or 1, **kwargs) class Effect51(BaseEffect): """ modifyPowerRechargeRate Used by: Modules from group: Capacitor Flux Coil (7 of 7) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Capacitor Recharger (18 of 18) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules from group: Shield Power Relay (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs) class Effect54(BaseEffect): """ targetPassively Used by: Modules from group: Passive Targeting System (6 of 6) """ type = 'active' class Effect55(BaseEffect): """ targetHostiles Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'active' class Effect56(BaseEffect): """ powerOutputMultiply Used by: Modules from group: Capacitor Flux Coil (7 of 7) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Variations of structure module: Standup Reactor Control Unit I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('powerOutput', module.getModifiedItemAttr('powerOutputMultiplier', None), **kwargs) class Effect57(BaseEffect): """ shieldCapacityMultiply Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Reactor Control Unit (22 of 22) Modules named like: Flux Coil (13 of 13) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacityMultiplier', None), **kwargs) class Effect58(BaseEffect): """ capacitorCapacityMultiply Used by: Modules from group: Capacitor Flux Coil (7 of 7) Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Power Diagnostic System (23 of 23) Modules from group: Propulsion Module (73 of 147) Modules from group: Reactor Control Unit (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # We default this to None as there are times when the source attribute doesn't exist (for example, Cap Power Relay). # It will return 0 as it doesn't exist, which would nullify whatever the target attribute is fit.ship.multiplyItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacityMultiplier', None), **kwargs) class Effect59(BaseEffect): """ cargoCapacityMultiply Used by: Modules from group: Expanded Cargohold (8 of 8) Modules from group: Overdrive Injector System (7 of 7) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityMultiplier'), **kwargs) class Effect60(BaseEffect): """ structureHPMultiply Used by: Modules from group: Nanofiber Internal Structure (8 of 8) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs) class Effect61(BaseEffect): """ agilityBonus Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('agility', src.getModifiedItemAttr('agilityBonusAdd'), **kwargs) class Effect63(BaseEffect): """ armorHPMultiply Used by: Modules from group: Armor Coating (184 of 184) Modules from group: Energized Armor Membrane (169 of 169) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', module.getModifiedItemAttr('armorHPMultiplier'), **kwargs) class Effect67(BaseEffect): """ miningLaser Used by: Modules from group: Frequency Mining Laser (6 of 6) Modules from group: Mining Laser (18 of 18) Modules from group: Strip Miner (9 of 9) Module: Citizen Miner """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect89(BaseEffect): """ projectileWeaponSpeedMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect91(BaseEffect): """ energyWeaponDamageMultiply Used by: Modules from group: Heat Sink (20 of 20) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect92(BaseEffect): """ projectileWeaponDamageMultiply Used by: Modules from group: Gyrostabilizer (14 of 14) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect93(BaseEffect): """ hybridWeaponDamageMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect95(BaseEffect): """ energyWeaponSpeedMultiply Used by: Modules from group: Heat Sink (20 of 20) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect96(BaseEffect): """ hybridWeaponSpeedMultiply Used by: Modules from group: Magnetic Field Stabilizer (15 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect101(BaseEffect): """ useMissiles Used by: Modules from group: Missile Launcher Heavy (12 of 12) Modules from group: Missile Launcher Rocket (16 of 16) Modules named like: Launcher (159 of 159) Structure Modules named like: Standup Launcher (7 of 7) """ dealsDamage = True type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Set reload time to 10 seconds src.reloadTime = 10000 if 'projected' not in context: return if src.item.group.name == 'Missile Launcher Bomb': # Bomb Launcher Cooldown Timer moduleReactivationDelay = src.getModifiedItemAttr('moduleReactivationDelay') speed = src.getModifiedItemAttr('speed') # Void and Focused Void Bombs neutAmount = src.getModifiedChargeAttr('energyNeutralizerAmount') if moduleReactivationDelay and neutAmount and speed: fit.addDrain(src, speed + moduleReactivationDelay, neutAmount, 0) # Lockbreaker Bombs ecmStrengthBonus = src.getModifiedChargeAttr('scan{0}StrengthBonus'.format(fit.scanType)) if ecmStrengthBonus: fit.addProjectedEcm(ecmStrengthBonus) elif src.item.group.name == 'Interdiction Sphere Launcher': speedFactor = src.getModifiedChargeAttr('speedFactor') if speedFactor: fit.ship.boostItemAttr('maxVelocity', speedFactor, **kwargs) class Effect118(BaseEffect): """ electronicAttributeModifyOnline Used by: Modules from group: Automated Targeting System (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect157(BaseEffect): """ largeHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeHybridTurret Used by: Implants named like: Zainou 'Deadeye' Large Hybrid Turret LH (6 of 6) Implant: Festival-only 'Longbow' HD4 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Large Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect159(BaseEffect): """ mediumEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Medium Energy Turret ME (6 of 6) Implant: Festival-only 'Longbow' ED3 Dose Implant: Festival-only 'Longbow' ED6 Dose Skill: Medium Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect160(BaseEffect): """ mediumHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumHybridTurret Used by: Implants named like: Zainou 'Deadeye' Medium Hybrid Turret MH (6 of 6) Implant: Festival-only 'Longbow' HD3 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Medium Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect161(BaseEffect): """ mediumProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Medium Projectile Turret MP (6 of 6) Implant: Festival-only 'Longbow' PD3 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Medium Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect162(BaseEffect): """ largeEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Large Energy Turret LE (6 of 6) Implant: Festival-only 'Longbow' ED4 Dose Implant: Festival-only 'Longbow' ED6 Dose Implant: Pashan's Turret Handling Mindlink Skill: Large Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect172(BaseEffect): """ smallEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallEnergyTurret Used by: Implants named like: Inherent Implants 'Lancer' Small Energy Turret SE (6 of 6) Implant: Festival-only 'Longbow' ED2 Dose Implant: Festival-only 'Longbow' ED6 Dose Skill: Small Energy Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect173(BaseEffect): """ smallHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallHybridTurret Used by: Implants named like: Zainou 'Deadeye' Small Hybrid Turret SH (6 of 6) Implant: Festival-only 'Longbow' HD2 Dose Implant: Festival-only 'Longbow' HD6 Dose Skill: Small Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect174(BaseEffect): """ smallProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Small Projectile Turret SP (6 of 6) Implant: Festival-only 'Longbow' PD2 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Small Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect212(BaseEffect): """ sensorUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringSensorUpgrades Used by: Implants named like: Zainou 'Gypsy' Electronics Upgrades EU (6 of 6) Modules named like: Liquid Cooled Electronics (8 of 8) Skill: Electronics Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronics Upgrades'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect214(BaseEffect): """ targetingMaxTargetBonusModAddMaxLockedTargetsLocationChar Used by: Skills named like: Target Management (2 of 2) """ type = 'passive', 'structure' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = skill.getModifiedItemAttr('maxTargetBonus') * skill.level fit.extraAttributes.increase('maxTargetsLockedFromSkills', amount, **kwargs) class Effect223(BaseEffect): """ navigationVelocityBonusPostPercentMaxVelocityLocationShip Used by: Implant: Low-grade Snake Alpha Implant: Mid-grade Snake Alpha """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus'), **kwargs) class Effect227(BaseEffect): """ accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner Used by: Modules named like: Dynamic Fuel Valve (8 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect230(BaseEffect): """ afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6) Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) Implant: Zor's Custom Navigation Link Skill: Afterburner """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect235(BaseEffect): """ warpdriveoperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShip Used by: Implants named like: Eifyr and Co. 'Rogue' Warp Drive Operation WD (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', implant.getModifiedItemAttr('warpCapacitorNeedBonus'), **kwargs) class Effect242(BaseEffect): """ accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner Used by: Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6) Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', implant.getModifiedItemAttr('speedFBonus'), **kwargs) class Effect244(BaseEffect): """ highSpeedManuveringCapacitorNeedMultiplierPostPercentCapacitorNeedLocationShipModulesRequiringHighSpeedManuvering Used by: Implants named like: Eifyr and Co. 'Rogue' High Speed Maneuvering HS (6 of 6) Implants named like: Federation Mobility Booster (4 of 4) Implants named like: Republic Mobility Booster (4 of 4) Skill: High Speed Maneuvering """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect271(BaseEffect): """ hullUpgradesArmorHpBonusPostPercentHpLocationShip Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: grade Amulet (15 of 18) Modules named like: Trimark Armor Pump (8 of 8) Implant: Low-grade Snake Epsilon Implant: Mid-grade Snake Epsilon Skill: Hull Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('armorHP', (container.getModifiedItemAttr('armorHpBonus') or 0) * level, **kwargs) class Effect272(BaseEffect): """ repairSystemsDurationBonusPostPercentDurationLocationShipModulesRequiringRepairSystems Used by: Implants named like: Inherent Implants 'Noble' Repair Systems RS (6 of 6) Modules named like: Nanobot Accelerator (8 of 8) Implant: AIR Repairer Booster III Implant: Numon Family Heirloom Skill: Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs) class Effect273(BaseEffect): """ shieldUpgradesPowerNeedBonusPostPercentPowerLocationShipModulesRequiringShieldUpgrades Used by: Implants named like: Zainou 'Gnome' Shield Upgrades SU (6 of 6) Modules named like: Core Defense Charge Economizer (8 of 8) Skill: Shield Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'power', container.getModifiedItemAttr('powerNeedBonus') * level, **kwargs) class Effect277(BaseEffect): """ tacticalshieldManipulationSkillBoostUniformityBonus Used by: Skill: Tactical Shield Manipulation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldUniformity', skill.getModifiedItemAttr('uniformityBonus') * skill.level, **kwargs) class Effect279(BaseEffect): """ shieldEmmisionSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringShieldEmmisionSystems Used by: Implants named like: Zainou 'Gnome' Shield Emission Systems SE (6 of 6) Skill: Shield Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect287(BaseEffect): """ controlledBurstsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringGunnery Used by: Implants named like: Inherent Implants 'Lancer' Controlled Bursts CB (6 of 6) Skill: Controlled Bursts """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect290(BaseEffect): """ sharpshooterRangeSkillBonusPostPercentMaxRangeLocationShipModulesRequiringGunnery Used by: Implants named like: Frentix Booster (4 of 4) Implants named like: Halcyon B Booster (5 of 5) Implants named like: Zainou 'Deadeye' Sharpshooter ST (6 of 6) Skill: Sharpshooter """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs) class Effect298(BaseEffect): """ surgicalStrikeFalloffBonusPostPercentFalloffLocationShipModulesRequiringGunnery Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Sooth Sayer Booster (4 of 4) Implants named like: Zainou 'Deadeye' Trajectory Analysis TA (6 of 6) Skill: Trajectory Analysis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect315(BaseEffect): """ dronesSkillBoostMaxActiveDroneBonus Used by: Skill: Drones """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = skill.getModifiedItemAttr('maxActiveDroneBonus') * skill.level fit.extraAttributes.increase('maxActiveDrones', amount, **kwargs) class Effect391(BaseEffect): """ astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining Used by: Implants named like: AIR Mining Yield Booster (3 of 3) Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) Implant: Michi's Excavation Augmentor Skill: Astrogeology Skill: Mining """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs) class Effect392(BaseEffect): """ mechanicHullHpBonusPostPercentHpShip Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' HH Dose (4 of 4) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Inherent Implants 'Noble' Mechanic MC (6 of 6) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Modules named like: Transverse Bulkhead (8 of 8) Skill: Mechanics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs) class Effect394(BaseEffect): """ navigationVelocityBonusPostPercentMaxVelocityShip Used by: Modules from group: Rig Anchor (4 of 4) Implants named like: Agency 'Overclocker' SB Dose (4 of 4) Implants named like: Grand Prix Booster (5 of 6) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Imperial Mobility Booster (4 of 4) Implants named like: Republic Mobility Booster (4 of 4) Implants named like: grade Snake (16 of 18) Modules named like: Auxiliary Thrusters (8 of 8) Implant: AIR Overclocker Booster II Implant: Quafe Zero Classic Implant: Serenity YC122.9 Season Booster - Max Velocity Implant: Starsi Blast! Classic Implant: Wisdom of Gheinok Skill: Navigation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('velocityBonus') or 0 penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context fit.ship.boostItemAttr('maxVelocity', amount * level, stackingPenalties=penalties, **kwargs) class Effect395(BaseEffect): """ evasiveManeuveringAgilityBonusPostPercentAgilityShip Used by: Modules from group: Rig Anchor (4 of 4) Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6) Implants named like: Federation Mobility Booster (4 of 4) Implants named like: Grand Prix Booster (4 of 6) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: State Mobility Booster (4 of 4) Implants named like: grade Nomad (10 of 12) Modules named like: Low Friction Nozzle Joints (8 of 8) Implant: AIR Agility Booster II Implant: AIR Overclocker Booster III Implant: Genolution Core Augmentation CA-4 Implant: Quafe Zero Green Apple Implant: Serenity YC122.9 Season Booster - Agility Implant: Starsi Blast! Classic Skill: Evasive Maneuvering Skill: Spaceship Command """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalties = 'skill' not in context and 'implant' not in context and 'booster' not in context fit.ship.boostItemAttr('agility', container.getModifiedItemAttr('agilityBonus') * level, stackingPenalties=penalties, **kwargs) class Effect396(BaseEffect): """ energyGridUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyGridUpgrades Used by: Implants named like: Inherent Implants 'Squire' Energy Grid Upgrades EU (6 of 6) Modules named like: Powergrid Subroutine Maximizer (8 of 8) Skill: Energy Grid Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Grid Upgrades'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect397(BaseEffect): """ electronicsCpuOutputBonusPostPercentCpuOutputLocationShipGroupComputer Used by: Implants named like: Zainou 'Gypsy' CPU Management EE (6 of 6) Modules named like: Processor Overclocking Unit (8 of 8) Subsystems named like: Core Electronic Efficiency Gate (2 of 2) Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-2 Skill: CPU Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('cpuOutput', container.getModifiedItemAttr('cpuOutputBonus2') * level, **kwargs) class Effect408(BaseEffect): """ largeProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeProjectileTurret Used by: Implants named like: Eifyr and Co. 'Gunslinger' Large Projectile Turret LP (6 of 6) Implant: Festival-only 'Longbow' PD4 Dose Implant: Festival-only 'Longbow' PD6 Dose Skill: Large Projectile Turret """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect414(BaseEffect): """ gunneryTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Inherent Implants 'Lancer' Gunnery RF (6 of 6) Implant: Pashan's Turret Customization Mindlink Skill: Gunnery """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', container.getModifiedItemAttr('turretSpeeBonus') * level, **kwargs) class Effect446(BaseEffect): """ shieldManagementShieldCapacityBonusPostPercentCapacityLocationShipGroupShield Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' SH Dose (4 of 4) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Implants named like: Zainou 'Gnome' Shield Management SM (6 of 6) Modules named like: Core Defense Field Extender (8 of 8) Implant: AIR Nirvana Booster II Implant: Genolution Core Augmentation CA-3 Implant: Sansha Modified 'Gnome' Implant Skill: Shield Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldCapacityBonus') * level, **kwargs) class Effect485(BaseEffect): """ capacitorRechargeTimeBonusPostPercentPassive Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Inherent Implants 'Squire' Capacitor Systems Operation EO (6 of 6) Implants named like: grade Rapture (15 of 18) Modules named like: Capacitor Control Circuit (8 of 8) Implant: AIR Overclocker Booster III Implant: AIR Rapture Booster II Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-2 Implant: Quafe Zero Green Apple Implant: Starsi Blast! Orange Skill: Capacitor Systems Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('rechargeRate', container.getModifiedItemAttr('capRechargeBonus') * level, **kwargs) class Effect486(BaseEffect): """ shieldOperationRechargeratebonusPostPercentRechargeRateLocationShipGroupShield Used by: Implants named like: Zainou 'Gnome' Shield Operation SP (6 of 6) Modules named like: Core Defense Field Purger (8 of 8) Implant: Sansha Modified 'Gnome' Implant Skill: Shield Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('shieldRechargeRate', container.getModifiedItemAttr('rechargeratebonus') * level, **kwargs) class Effect490(BaseEffect): """ engineeringPowerEngineeringOutputBonusPostPercentPowerOutputLocationShipGroupPowerCore Used by: Implants named like: Inherent Implants 'Squire' Power Grid Management EG (6 of 6) Modules named like: Ancillary Current Router (8 of 8) Subsystems named like: Core Augmented Reactor (4 of 4) Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-1 Skill: Power Grid Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('powerOutput', container.getModifiedItemAttr('powerEngineeringOutputBonus') * level, **kwargs) class Effect494(BaseEffect): """ warpDriveOperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShipGroupPropulsion Used by: Modules named like: Warp Core Optimizer (8 of 8) Skill: Warp Drive Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('warpCapacitorNeedBonus') * level, stackingPenalties='skill' not in context, **kwargs) class Effect504(BaseEffect): """ scoutDroneOperationDroneRangeBonusModAddDroneControlDistanceChar Used by: Implants named like: Halcyon Y Booster (5 of 5) Modules named like: Drone Control Range Augmentor (8 of 8) Skills named like: Drone Avionics (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 amount = container.getModifiedItemAttr('droneRangeBonus') * level fit.extraAttributes.increase('droneControlRange', amount, **kwargs) class Effect506(BaseEffect): """ fuelConservationCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringAfterburner Used by: Skill: Afterburner Skill: Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect507(BaseEffect): """ longRangeTargetingMaxTargetRangeBonusPostPercentMaxTargetRangeLocationShipGroupElectronic Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Zainou 'Gypsy' Long Range Targeting LT (6 of 6) Skill: Long Range Targeting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus') * level, **kwargs) class Effect508(BaseEffect): """ shipPDmgBonusMF Used by: Ship: Freki Ship: Republic Fleet Firetail Ship: Slasher Ship: Stiletto Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect511(BaseEffect): """ shipEnergyTCapNeedBonusAF Used by: Ship: Crusader Ship: Executioner Ship: Gold Magnate Ship: Punisher Ship: Retribution Ship: Silver Magnate Ship: Tormentor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect512(BaseEffect): """ shipSHTDmgBonusGF Used by: Variations of ship: Incursus (3 of 3) Ship: Atron Ship: Federation Navy Comet Ship: Pacifier Ship: Shapash Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect514(BaseEffect): """ shipSETDmgBonusAF Used by: Variations of ship: Magnate (3 of 5) Ship: Executioner Ship: Tormentor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect516(BaseEffect): """ shipTCapNeedBonusAC Used by: Ship: Devoter Ship: Omen Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect521(BaseEffect): """ shipHRangeBonusCC Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect527(BaseEffect): """ shipVelocityBonusMI Used by: Variations of ship: Mammoth (2 of 2) Ship: Hoarder Ship: Prowler """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Hauler', **kwargs) class Effect529(BaseEffect): """ shipCargoBonusAI Used by: Variations of ship: Sigil (2 of 2) Ship: Bestower """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Hauler', **kwargs) class Effect536(BaseEffect): """ cpuMultiplierPostMulCpuOutputShip Used by: Modules from group: CPU Enhancer (19 of 19) Variations of structure module: Standup Co-Processor Array I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('cpuOutput', module.getModifiedItemAttr('cpuMultiplier'), **kwargs) class Effect542(BaseEffect): """ shipCapNeedBonusAB Used by: Ships named like: Imperial Issue (2 of 2) Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect549(BaseEffect): """ shipPTDmgBonusMB Used by: Variations of ship: Tempest (3 of 4) Ship: Machariel Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect550(BaseEffect): """ shipHTDmgBonusGB Used by: Ships from group: Black Ops (3 of 6) Ship: Dominix Navy Issue Ship: Hyperion Ship: Kronos Ship: Megathron Federate Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect553(BaseEffect): """ shipHTTrackingBonusGB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect562(BaseEffect): """ shipHTDmgBonusfixedGC Used by: Variations of ship: Vexor (3 of 4) Ship: Adrestia Ship: Arazu Ship: Cobra Ship: Cybele Ship: Deimos Ship: Enforcer Ship: Exequror Navy Issue Ship: Thorax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect581(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringGunnery Used by: Implants named like: Zainou 'Gnome' Weapon Upgrades WU (6 of 6) Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Vorton Projector Operation'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect582(BaseEffect): """ rapidFiringRofBonusPostPercentSpeedLocationShipModulesRequiringGunnery Used by: Skill: Rapid Firing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect584(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Eifyr and Co. 'Gunslinger' Surgical Strike SS (6 of 6) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect587(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupEnergyWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect588(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupProjectileWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect589(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupHybridWeapon Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect590(BaseEffect): """ energyPulseWeaponsDurationBonusPostPercentDurationLocationShipModulesRequiringEnergyPulseWeapons Used by: Implants named like: Inherent Implants 'Squire' Energy Pulse Weapons EP (6 of 6) Skill: Energy Pulse Weapons """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect596(BaseEffect): """ ammoInfluenceRange Used by: Items from category: Charge (610 of 1025) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('maxRange', module.getModifiedChargeAttr('weaponRangeMultiplier'), **kwargs) class Effect598(BaseEffect): """ ammoSpeedMultiplier Used by: Charges from group: Festival Charges (40 of 40) Charges from group: Interdiction Probe (2 of 2) Charges from group: Structure Festival Charges (2 of 2) Special Edition Assetss from group: Festival Charges Expired (4 of 4) Charge: Stasis Webification Probe """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('speed', module.getModifiedChargeAttr('speedMultiplier') or 1, **kwargs) class Effect599(BaseEffect): """ ammoFallofMultiplier Used by: Charges from group: Advanced Artillery Ammo (8 of 8) Charges from group: Advanced Autocannon Ammo (8 of 8) Charges from group: Advanced Beam Laser Crystal (8 of 8) Charges from group: Advanced Blaster Charge (8 of 8) Charges from group: Advanced Pulse Laser Crystal (8 of 8) Charges from group: Advanced Railgun Charge (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('falloff', module.getModifiedChargeAttr('fallofMultiplier') or 1, **kwargs) class Effect600(BaseEffect): """ ammoTrackingMultiplier Used by: Charges from group: Advanced Artillery Ammo (8 of 8) Charges from group: Advanced Autocannon Ammo (8 of 8) Charges from group: Advanced Beam Laser Crystal (8 of 8) Charges from group: Advanced Blaster Charge (8 of 8) Charges from group: Advanced Exotic Plasma Charge (8 of 8) Charges from group: Advanced Pulse Laser Crystal (8 of 8) Charges from group: Advanced Railgun Charge (8 of 8) Charges from group: Projectile Ammo (128 of 128) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('trackingSpeed', module.getModifiedChargeAttr('trackingSpeedMultiplier'), **kwargs) class Effect602(BaseEffect): """ shipPTurretSpeedBonusMC Used by: Variations of ship: Stabber (3 of 3) Ship: Broadsword Ship: Cobra Ship: Enforcer Ship: Huginn Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect604(BaseEffect): """ shipPTspeedBonusMB2 Used by: Ships from group: Black Ops (3 of 6) Variations of ship: Tempest (3 of 4) Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect607(BaseEffect): """ cloaking Used by: Modules from group: Cloaking Device (10 of 14) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set flag which is used to determine if ship is cloaked or not # This is used to apply cloak-only bonuses, like Black Ops' speed bonus fit.extraAttributes['cloaked'] = True # Apply speed penalty fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect623(BaseEffect): """ miningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar Used by: Modules named like: Drone Mining Augmentor (8 of 8) Skill: Mining Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', container.getModifiedItemAttr('miningAmountBonus') * level, **kwargs) class Effect627(BaseEffect): """ powerIncrease Used by: Modules from group: Auxiliary Power Core (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerIncrease'), **kwargs) class Effect657(BaseEffect): """ agilityMultiplierEffect Used by: Modules from group: Inertial Stabilizer (7 of 7) Modules from group: Nanofiber Internal Structure (8 of 8) Modules from group: Reinforced Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True, **kwargs) class Effect660(BaseEffect): """ missileEMDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect661(BaseEffect): """ missileExplosiveDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect662(BaseEffect): """ missileThermalDmgBonus Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect668(BaseEffect): """ missileKineticDmgBonus2 Used by: Skills named like: Missiles (5 of 7) Skill: Rockets Skill: Torpedoes """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill(skill), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect675(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyPulseWeapons Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs) class Effect677(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringMissileLauncherOperation Used by: Implants named like: Zainou 'Gnome' Launcher CPU Efficiency LE (6 of 6) Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) class Effect699(BaseEffect): """ signatureAnalysisScanResolutionBonusPostPercentScanResolutionShip Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Zainou 'Gypsy' Signature Analysis SA (6 of 6) Modules named like: Targeting System Subcontroller (8 of 8) Implant: Quafe Zero Classic Implant: Starsi Blast! Orange Skill: Signature Analysis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus') * level, stackingPenalties=penalized, **kwargs) class Effect706(BaseEffect): """ covertOpsWarpResistance Used by: Ships from group: Covert Ops (5 of 9) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpFactor', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect726(BaseEffect): """ shipBonusCargo2GI Used by: Variations of ship: Miasmos (3 of 4) Variations of ship: Nereus (2 of 2) Ship: Iteron Mark V """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # TODO: investigate if we can live without such ifs or hardcoding # Viator doesn't have GI bonus if 'shipBonusGI' in fit.ship.item.attributes: bonusAttr = 'shipBonusGI' else: bonusAttr = 'shipBonusGI2' fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs) class Effect727(BaseEffect): """ shipBonusCargoCI Used by: Variations of ship: Badger (2 of 2) Ship: Tayra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs) class Effect728(BaseEffect): """ shipBonusCargoMI Used by: Variations of ship: Wreathe (2 of 2) Ship: Mammoth """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('shipBonusMI'), skill='Minmatar Hauler', **kwargs) class Effect729(BaseEffect): """ shipBonusVelocityGI Used by: Variations of ship: Epithal (2 of 2) Variations of ship: Miasmos (4 of 4) Ship: Iteron Mark V Ship: Kryos Ship: Viator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # TODO: investigate if we can live without such ifs or hardcoding # Viator doesn't have GI bonus if 'shipBonusGI' in fit.ship.item.attributes: bonusAttr = 'shipBonusGI' else: bonusAttr = 'shipBonusGI2' fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr(bonusAttr), skill='Gallente Hauler', **kwargs) class Effect730(BaseEffect): """ shipBonusVelocityCI Used by: Variations of ship: Tayra (2 of 2) Ship: Crane """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusCI'), skill='Caldari Hauler', **kwargs) class Effect732(BaseEffect): """ shipVelocityBonusAI Used by: Variations of ship: Bestower (2 of 2) Ship: Prorator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusAI'), skill='Amarr Hauler', **kwargs) class Effect736(BaseEffect): """ shipBonusCapCapAB Used by: Ship: Apocalypse Imperial Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect744(BaseEffect): """ surveyScanspeedBonusPostPercentDurationLocationShipModulesRequiringElectronics Used by: Modules named like: Signal Focusing Kit (8 of 8) Skill: Survey """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('CPU Management'), 'duration', container.getModifiedItemAttr('scanspeedBonus') * level, **kwargs) class Effect754(BaseEffect): """ shipHybridDamageBonusCF Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect757(BaseEffect): """ shipETDamageAF Used by: Ship: Crucifier Navy Issue Ship: Crusader Ship: Imperial Navy Slicer Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect760(BaseEffect): """ shipBonusSmallMissileRoFCF2 Used by: Ship: Hawk Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect763(BaseEffect): """ missileDMGBonus Used by: Modules from group: Ballistic Control System (22 of 22) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation') or mod.charge.requiresSkill('Defender Missiles'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True, **kwargs) class Effect784(BaseEffect): """ missileBombardmentMaxFlightTimeBonusPostPercentExplosionDelayOwnerCharModulesRequiringMissileLauncherOperation Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Republic Projection Booster (4 of 4) Implants named like: Zainou 'Deadeye' Missile Bombardment MB (6 of 6) Modules named like: Rocket Fuel Cache Partition (8 of 8) Implant: Antipharmakon Toxot Skill: Missile Bombardment """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', container.getModifiedItemAttr('maxFlightTimeBonus') * level, stackingPenalties=penalized, **kwargs) class Effect804(BaseEffect): """ ammoInfluenceCapNeed Used by: Items from category: Charge (546 of 1025) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Dirty hack to work around cap charges setting cap booster # injection amount to zero rawAttr = module.item.getAttribute('capacitorNeed') if rawAttr is not None and rawAttr >= 0: module.boostItemAttr('capacitorNeed', module.getModifiedChargeAttr('capNeedBonus') or 0, **kwargs) class Effect836(BaseEffect): """ skillFreightBonus Used by: Modules named like: Cargohold Optimization (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('cargoCapacityBonus'), **kwargs) class Effect848(BaseEffect): """ cloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking Used by: Skill: Cloaking """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', skill.getModifiedItemAttr('cloakingTargetingDelayBonus') * skill.level, **kwargs) class Effect854(BaseEffect): """ cloakingScanResolutionMultiplier Used by: Modules from group: Cloaking Device (12 of 14) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, penaltyGroup='cloakingScanResolutionMultiplier', **kwargs) class Effect856(BaseEffect): """ warpSkillSpeed Used by: Implants named like: Eifyr and Co. 'Rogue' Agility (2 of 2) Implants named like: Eifyr and Co. 'Rogue' Warp Drive Speed WS (6 of 6) Implants named like: Grand Prix Booster (5 of 6) Implants named like: Halcyon B Booster (5 of 5) Implants named like: Mobility Booster (16 of 16) Implants named like: Serenity Limited 'Overclocker' Dose (3 of 3) Implants named like: grade Ascendancy (10 of 12) Modules named like: Hyperspatial Velocity Optimizer (8 of 8) Implant: Serenity YC122.9 Season Booster - Warp Speed """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.ship.boostItemAttr('warpSpeedMultiplier', container.getModifiedItemAttr('WarpSBonus'), stackingPenalties=penalized, **kwargs) class Effect882(BaseEffect): """ shipHybridRangeBonusCF2 Used by: Ship: Harpy Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect887(BaseEffect): """ shipETspeedBonusAB2 Used by: Ship: Armageddon Imperial Issue Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect889(BaseEffect): """ missileLauncherSpeedMultiplier Used by: Modules from group: Ballistic Control System (22 of 22) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect891(BaseEffect): """ shipCruiseMissileVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect892(BaseEffect): """ shipTorpedosVelocityBonusCB3 Used by: Variations of ship: Raven (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect896(BaseEffect): """ covertOpsCpuBonus1 Used by: Ships from group: Stealth Bomber (4 of 5) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', container.getModifiedItemAttr('cloakingCpuNeedBonus'), **kwargs) class Effect898(BaseEffect): """ shipMissileKineticDamageCF Used by: Ship: Condor Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect899(BaseEffect): """ shipMissileKineticDamageCC Used by: Ship: Cerberus Ship: Laelaps Ship: Onyx Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect907(BaseEffect): """ shipLaserRofAC2 Used by: Ship: Omen """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'speed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect909(BaseEffect): """ shipArmorHpAC2 Used by: Ship: Augoror Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect912(BaseEffect): """ shipMissileLauncherRofCC2 Used by: Ship: Laelaps Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect918(BaseEffect): """ shipDronesMaxGC2 Used by: Ship: Guardian-Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.increase('maxActiveDrones', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect919(BaseEffect): """ shipHybridTrackingGC2 Used by: Ship: Cobra Ship: Enforcer Ship: Thorax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect958(BaseEffect): """ shipArmorEmResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect959(BaseEffect): """ shipArmorExplosiveResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect960(BaseEffect): """ shipArmorKineticResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect961(BaseEffect): """ shipArmorThermalResistanceAC2 Used by: Ship: Maller """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect968(BaseEffect): """ shipProjectileDmgMC2 Used by: Ship: Broadsword Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect980(BaseEffect): """ cloakingWarpSafe Used by: Modules named like: Covert Ops Cloaking Device II (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.extraAttributes['cloaked'] = True fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs) class Effect989(BaseEffect): """ eliteBonusGunshipHybridOptimal1 Used by: Ship: Enyo Ship: Harpy Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect991(BaseEffect): """ eliteBonusGunshipLaserOptimal1 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect996(BaseEffect): """ eliteBonusGunshipHybridTracking2 Used by: Ship: Enyo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect998(BaseEffect): """ eliteBonusGunshipProjectileFalloff2 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect999(BaseEffect): """ eliteBonusGunshipShieldBoost2 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1001(BaseEffect): """ eliteBonusGunshipCapRecharge2 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1003(BaseEffect): """ selfT2SmallLaserPulseDamageBonus Used by: Skill: Small Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1004(BaseEffect): """ selfT2SmallLaserBeamDamageBonus Used by: Skill: Small Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1005(BaseEffect): """ selfT2SmallHybridBlasterDamageBonus Used by: Skill: Small Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1006(BaseEffect): """ selfT2SmallHybridRailDamageBonus Used by: Skill: Small Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1007(BaseEffect): """ selfT2SmallProjectileACDamageBonus Used by: Skill: Small Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1008(BaseEffect): """ selfT2SmallProjectileArtyDamageBonus Used by: Skill: Small Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1009(BaseEffect): """ selfT2MediumLaserPulseDamageBonus Used by: Skill: Medium Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1010(BaseEffect): """ selfT2MediumLaserBeamDamageBonus Used by: Skill: Medium Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1011(BaseEffect): """ selfT2MediumHybridBlasterDamageBonus Used by: Skill: Medium Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1012(BaseEffect): """ selfT2MediumHybridRailDamageBonus Used by: Skill: Medium Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1013(BaseEffect): """ selfT2MediumProjectileACDamageBonus Used by: Skill: Medium Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1014(BaseEffect): """ selfT2MediumProjectileArtyDamageBonus Used by: Skill: Medium Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1015(BaseEffect): """ selfT2LargeLaserPulseDamageBonus Used by: Skill: Large Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Pulse Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1016(BaseEffect): """ selfT2LargeLaserBeamDamageBonus Used by: Skill: Large Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Beam Laser Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1017(BaseEffect): """ selfT2LargeHybridBlasterDamageBonus Used by: Skill: Large Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Blaster Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1018(BaseEffect): """ selfT2LargeHybridRailDamageBonus Used by: Skill: Large Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Railgun Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1019(BaseEffect): """ selfT2LargeProjectileACDamageBonus Used by: Skill: Large Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Autocannon Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1020(BaseEffect): """ selfT2LargeProjectileArtyDamageBonus Used by: Skill: Large Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Artillery Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1021(BaseEffect): """ eliteBonusGunshipHybridDmg2 Used by: Ship: Harpy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1024(BaseEffect): """ shipMissileHeavyVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Cruiser' penalties = False else: skill = None penalties = True fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect1030(BaseEffect): """ remoteArmorSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringRemoteArmorSystems Used by: Implants named like: Inherent Implants 'Noble' Remote Armor Repair Systems RA (6 of 6) Modules named like: Remote Repair Augmentor (6 of 8) Skill: Remote Armor Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1033(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairCapNeed1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1034(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairCapNeed2 Used by: Ship: Guardian Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1035(BaseEffect): """ eliteBonusLogisticShieldTransferCapNeed2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1036(BaseEffect): """ eliteBonusLogisticShieldTransferCapNeed1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1046(BaseEffect): """ shipRemoteArmorRangeGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect1047(BaseEffect): """ shipRemoteArmorRangeAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect1048(BaseEffect): """ shipShieldTransferRangeCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1049(BaseEffect): """ shipShieldTransferRangeMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect1058(BaseEffect): """ eliteBonusHeavyGunshipLaserOptimal1 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1060(BaseEffect): """ eliteBonusHeavyGunshipProjectileFallOff1 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1061(BaseEffect): """ eliteBonusHeavyGunshipHybridDmg2 Used by: Ship: Deimos Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1062(BaseEffect): """ eliteBonusHeavyGunshipLaserDmg2 Used by: Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1080(BaseEffect): """ eliteBonusHeavyGunshipHybridFallOff1 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1084(BaseEffect): """ eliteBonusHeavyGunshipDroneControlRange1 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.increase('droneControlRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect1087(BaseEffect): """ eliteBonusHeavyGunshipProjectileDmg2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect1099(BaseEffect): """ shipProjectileTrackingMF2 Used by: Variations of ship: Slasher (3 of 3) Ship: Republic Fleet Firetail Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect1176(BaseEffect): """ accerationControlSkillAb&MwdSpeedBoost Used by: Implant: Zor's Custom Navigation Hyper-Link Skill: Acceleration Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', container.getModifiedItemAttr('speedFBonus') * level, **kwargs) class Effect1179(BaseEffect): """ eliteBonusGunshipLaserDamage2 Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect1181(BaseEffect): """ eliteBonusLogisticEnergyTransferCapNeed1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect1182(BaseEffect): """ shipEnergyTransferRange1 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect1183(BaseEffect): """ eliteBonusLogisticEnergyTransferCapNeed2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect1184(BaseEffect): """ shipEnergyTransferRange2 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1185(BaseEffect): """ structureStealthEmitterArraySigDecrease Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: X Instinct Booster (4 of 4) Implants named like: grade Halo (15 of 18) Implant: Serenity YC122.9 Season Booster - Signature Radius """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', implant.getModifiedItemAttr('signatureRadiusBonus'), **kwargs) class Effect1190(BaseEffect): """ iceHarvestCycleTimeModulesRequiringIceHarvesting Used by: Implants named like: Inherent Implants 'Yeti' Ice Harvesting IH (3 of 3) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) Module: Medium Ice Harvester Accelerator I Skill: Ice Harvesting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', container.getModifiedItemAttr('iceHarvestCycleBonus') * level, **kwargs) class Effect1200(BaseEffect): """ miningCrystalsMiningAtributesAdjustments Used by: Charges from group: Mercoxit Mining Crystal (6 of 6) Charges from group: Mining Crystal (66 of 66) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr( 'miningAmount', module.getModifiedChargeAttr('specializationAsteroidYieldMultiplier'), **kwargs) module.increaseItemAttr( 'miningWastedVolumeMultiplier', module.getModifiedChargeAttr('specializationCrystalMiningWastedVolumeMultiplierBonus'), **kwargs) module.increaseItemAttr( 'miningWasteProbability', module.getModifiedChargeAttr('specializationCrystalMiningWasteProbabilityBonus'), **kwargs) class Effect1212(BaseEffect): """ crystalMiningamountInfo2 Used by: Modules from group: Frequency Mining Laser (6 of 6) """ runTime = 'late' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.preAssignItemAttr('specialtyMiningAmount', module.getModifiedItemAttr('miningAmount'), **kwargs) class Effect1215(BaseEffect): """ shipEnergyDrainAmountAF1 Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1218(BaseEffect): """ shipBonusPirateSmallHybridDmg Used by: Ship: Daredevil Ship: Hecate Ship: Metamorphosis Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1219(BaseEffect): """ shipEnergyVampireTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect1220(BaseEffect): """ shipEnergyVampireTransferAmountBonusAc Used by: Ship: Ashimmu Ship: Rabisu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect1221(BaseEffect): """ shipStasisWebRangeBonusMB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect1222(BaseEffect): """ shipStasisWebRangeBonusMC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect1228(BaseEffect): """ shipProjectileTrackingGF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect1230(BaseEffect): """ shipMissileVelocityPirateFactionFrigate Used by: Ship: Barghest Ship: Garmur Ship: Laelaps Ship: Orthrus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), stackingPenalties=penalties, **kwargs) class Effect1232(BaseEffect): """ shipProjectileRofPirateCruiser Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1233(BaseEffect): """ shipHybridDmgPirateCruiser Used by: Ship: Gnosis Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1234(BaseEffect): """ shipMissileVelocityPirateFactionLight Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1239(BaseEffect): """ shipProjectileRofPirateBattleship Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1240(BaseEffect): """ shipHybridDmgPirateBattleship Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect1255(BaseEffect): """ setBonusBloodraider Used by: Implants named like: grade Talisman (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'durationBonus', implant.getModifiedItemAttr('implantSetBloodraider'), **kwargs) class Effect1256(BaseEffect): """ setBonusBloodraiderNosferatu Used by: Implants named like: grade Talisman (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect1261(BaseEffect): """ setBonusSerpentis Used by: Implants named like: grade Snake (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'velocityBonus', implant.getModifiedItemAttr('implantSetSerpentis'), **kwargs) class Effect1264(BaseEffect): """ interceptor2HybridTracking Used by: Ship: Taranis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect1268(BaseEffect): """ interceptor2LaserTracking Used by: Ship: Crusader """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect1281(BaseEffect): """ structuralAnalysisEffect Used by: Implants named like: Inherent Implants 'Noble' Repair Proficiency RP (6 of 6) Modules named like: Auxiliary Nano Pump (8 of 8) Implant: Imperial Navy Modified 'Noble' Implant """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalized = 'implant' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', container.getModifiedItemAttr('repairBonus'), stackingPenalties=penalized, **kwargs) class Effect1318(BaseEffect): """ ewSkillScanStrengthBonus Used by: Modules named like: Particle Dispersion Augmentor (8 of 8) Skill: Signal Dispersion """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): groups = ('ECM', 'Burst Jammer') level = container.level if 'skill' in context else 1 for scanType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'scan{0}StrengthBonus'.format(scanType), container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, stackingPenalties=False if 'skill' in context else True, **kwargs) class Effect1360(BaseEffect): """ ewSkillRsdCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Sensor Linking SL (6 of 6) Skill: Sensor Linking """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1361(BaseEffect): """ ewSkillTdCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Weapon Disruption WD (6 of 6) Skill: Weapon Disruption """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1370(BaseEffect): """ ewSkillTpCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Target Painting TG (6 of 6) Skill: Target Painting """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1372(BaseEffect): """ ewSkillEwCapNeedSkillLevel Used by: Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6) Modules named like: Signal Disruption Amplifier (8 of 8) Skill: Electronic Warfare """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1395(BaseEffect): """ shieldBoostAmplifierPassive Used by: Implants named like: Republic Defense Booster (4 of 4) Implants named like: grade Crystal (15 of 18) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs) class Effect1397(BaseEffect): """ setBonusGuristas Used by: Implants named like: grade Crystal (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'shieldBoostMultiplier', implant.getModifiedItemAttr('implantSetGuristas'), **kwargs) class Effect1409(BaseEffect): """ systemScanDurationSkillAstrometrics Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Acquisition AQ (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implant: AIR Astro-Acquisition II Booster Skill: Astrometric Acquisition Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect1410(BaseEffect): """ propulsionSkillCapNeedBonusSkillLevel Used by: Implants named like: Zainou 'Gypsy' Propulsion Jamming PJ (6 of 6) Skill: Propulsion Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect1412(BaseEffect): """ shipBonusHybridOptimalCB Used by: Ship: Rokh """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect1434(BaseEffect): """ caldariShipEwStrengthCB Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for sensorType in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Electronic Warfare'), 'scan{0}StrengthBonus'.format(sensorType), ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect1441(BaseEffect): """ caldariShipEwOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect1442(BaseEffect): """ caldariShipEwOptimalRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1443(BaseEffect): """ caldariShipEwCapacitorNeedCC Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1445(BaseEffect): """ ewSkillRsdMaxRangeBonus Used by: Implants named like: Federation Electronics Booster (3 of 3) Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Sensor Linking'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1446(BaseEffect): """ ewSkillTpMaxRangeBonus Used by: Implants named like: Republic Electronics Booster (4 of 4) Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1448(BaseEffect): """ ewSkillTdMaxRangeBonus Used by: Implants named like: Imperial Electronics Booster (4 of 4) Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1449(BaseEffect): """ ewSkillRsdFallOffBonus Used by: Implants named like: Federation Electronics Booster (3 of 3) Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Sensor Linking'), 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1450(BaseEffect): """ ewSkillTpFallOffBonus Used by: Implants named like: Republic Electronics Booster (4 of 4) Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1451(BaseEffect): """ ewSkillTdFallOffBonus Used by: Implants named like: Imperial Electronics Booster (4 of 4) Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1452(BaseEffect): """ ewSkillEwMaxRangeBonus Used by: Implants named like: State Electronics Booster (4 of 4) Implants named like: grade Centurion (10 of 12) Modules named like: Particle Dispersion Projector (8 of 8) Implant: Serenity YC122.9 Season Booster - EW Range Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties='skill' not in context and 'implant' not in context, **kwargs) class Effect1453(BaseEffect): """ ewSkillEwFallOffBonus Used by: Implants named like: State Electronics Booster (4 of 4) Skill: Frequency Modulation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', container.getModifiedItemAttr('falloffBonus') * level, **kwargs) class Effect1472(BaseEffect): """ missileSkillAoeCloudSizeBonus Used by: Implants named like: State Application Booster (4 of 4) Implants named like: Zainou 'Deadeye' Guided Missile Precision GP (6 of 6) Modules named like: Warhead Rigor Catalyst (8 of 8) Skill: Guided Missile Precision """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1500(BaseEffect): """ shieldOperationSkillBoostCapacitorNeedBonus Used by: Modules named like: Core Defense Capacitor Safeguard (8 of 8) Skill: Shield Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs) class Effect1550(BaseEffect): """ ewSkillTargetPaintingStrengthBonus Used by: Skill: Signature Focusing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): level = skill.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', skill.getModifiedItemAttr('scanSkillTargetPaintStrengthBonus') * level, **kwargs) class Effect1551(BaseEffect): """ minmatarShipEwTargetPainterMF2 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect1577(BaseEffect): """ haloSetBonus Used by: Implants named like: grade Halo (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), 'signatureRadiusBonus', implant.getModifiedItemAttr('implantSetHalo'), **kwargs) class Effect1579(BaseEffect): """ setBonusSansha Used by: Implants named like: grade Amulet (18 of 18) Implant: High-grade Halo Omega """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'armorHpBonus', implant.getModifiedItemAttr('implantSetAmulet') or 1, **kwargs) class Effect1581(BaseEffect): """ jumpDriveSkillsRangeBonus Used by: Skill: Jump Drive Calibration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveRange', skill.getModifiedItemAttr('jumpDriveRangeBonus') * skill.level, **kwargs) class Effect1585(BaseEffect): """ capitalTurretSkillLaserDamage Used by: Skill: Capital Energy Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1586(BaseEffect): """ capitalTurretSkillProjectileDamage Used by: Skill: Capital Projectile Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1587(BaseEffect): """ capitalTurretSkillHybridDamage Used by: Skill: Capital Hybrid Turret """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1588(BaseEffect): """ capitalLauncherSkillCitadelKineticDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1590(BaseEffect): """ missileSkillAoeVelocityBonus Used by: Implants named like: Halcyon G Booster (5 of 5) Implants named like: Republic Application Booster (4 of 4) Implants named like: Zainou 'Deadeye' Target Navigation Prediction TN (6 of 6) Modules named like: Warhead Flare Catalyst (8 of 8) Skill: Target Navigation Prediction """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalize = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, stackingPenalties=penalize, **kwargs) class Effect1592(BaseEffect): """ capitalLauncherSkillCitadelEmDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1593(BaseEffect): """ capitalLauncherSkillCitadelExplosiveDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1594(BaseEffect): """ capitalLauncherSkillCitadelThermalDamage Used by: Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) Skill: XL Torpedoes """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect1595(BaseEffect): """ missileSkillWarheadUpgradesEmDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1596(BaseEffect): """ missileSkillWarheadUpgradesExplosiveDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1597(BaseEffect): """ missileSkillWarheadUpgradesKineticDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1615(BaseEffect): """ shipAdvancedSpaceshipCommandAgilityBonus Used by: Items from market group: Ships > Capital Ships (52 of 52) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): skillName = 'Advanced Spaceship Command' skill = fit.character.getSkill(skillName) fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus'), skill=skillName, **kwargs) class Effect1616(BaseEffect): """ skillCapitalShipsAdvancedAgility Used by: Skill: Capital Ships """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): if fit.ship.item.requiresSkill('Capital Ships'): fit.ship.boostItemAttr('agility', skill.getModifiedItemAttr('agilityBonus') * skill.level, **kwargs) class Effect1617(BaseEffect): """ shipCapitalAgilityBonus Used by: Ships from group: Carrier (4 of 4) Ships from group: Dreadnought (13 of 13) Ships from group: Force Auxiliary (6 of 6) Ships from group: Lancer Dreadnought (4 of 4) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('agility', src.getModifiedItemAttr('advancedCapitalAgility'), stackingPenalties=True, **kwargs) class Effect1634(BaseEffect): """ capitalShieldOperationSkillCapacitorNeedBonus Used by: Modules named like: Core Defense Capacitor Safeguard (8 of 8) Skill: Capital Shield Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'capacitorNeed', container.getModifiedItemAttr('shieldBoostCapacitorBonus') * level, **kwargs) class Effect1635(BaseEffect): """ capitalRepairSystemsSkillDurationBonus Used by: Modules named like: Nanobot Accelerator (8 of 8) Implant: AIR Repairer Booster III Skill: Capital Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration', container.getModifiedItemAttr('durationSkillBonus') * level, **kwargs) class Effect1638(BaseEffect): """ skillAdvancedWeaponUpgradesPowerNeedBonus Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Missile Launcher Operation') or mod.item.requiresSkill('Vorton Projector Operation')), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs) class Effect1643(BaseEffect): """ armoredCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1644(BaseEffect): """ skirmishCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1645(BaseEffect): """ shieldCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1646(BaseEffect): """ informationCommandMindlink Used by: Implants from group: Cyber Leadership (4 of 13) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1650(BaseEffect): """ skillSiegeModuleConsumptionQuantityBonus Used by: Skill: Tactical Weapon Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect1657(BaseEffect): """ missileSkillWarheadUpgradesThermalDamageBonus Used by: Implants named like: 'Pyrolancea' Dose (7 of 7) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II Skill: Warhead Upgrades """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): mod = src.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('damageMultiplierBonus') * mod, **kwargs) class Effect1668(BaseEffect): """ freighterCargoBonusA2 Used by: Variations of ship: Providence (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusA2'), skill='Amarr Freighter', **kwargs) class Effect1669(BaseEffect): """ freighterCargoBonusC2 Used by: Variations of ship: Charon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusC2'), skill='Caldari Freighter', **kwargs) class Effect1670(BaseEffect): """ freighterCargoBonusG2 Used by: Variations of ship: Obelisk (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusG2'), skill='Gallente Freighter', **kwargs) class Effect1671(BaseEffect): """ freighterCargoBonusM2 Used by: Variations of ship: Fenrir (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', ship.getModifiedItemAttr('freighterBonusM2'), skill='Minmatar Freighter', **kwargs) class Effect1672(BaseEffect): """ freighterMaxVelocityBonusA1 Used by: Ship: Providence """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs) class Effect1673(BaseEffect): """ freighterMaxVelocityBonusC1 Used by: Ship: Charon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs) class Effect1674(BaseEffect): """ freighterMaxVelocityBonusG1 Used by: Ship: Obelisk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs) class Effect1675(BaseEffect): """ freighterMaxVelocityBonusM1 Used by: Ship: Fenrir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs) class Effect1720(BaseEffect): """ shieldBoostAmplifier Used by: Modules from group: Capacitor Power Relay (20 of 20) Modules from group: Shield Boost Amplifier (23 of 23) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True, **kwargs) class Effect1722(BaseEffect): """ jumpDriveSkillsCapacitorNeedBonus Used by: Skill: Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveCapacitorNeed', skill.getModifiedItemAttr('jumpDriveCapacitorNeedBonus') * skill.level, **kwargs) class Effect1730(BaseEffect): """ droneDmgBonus Used by: Skills from group: Drones (9 of 32) """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill(skill), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect1738(BaseEffect): """ doHacking Used by: Modules from group: Data Miners (12 of 12) """ type = 'active' class Effect1763(BaseEffect): """ missileSkillRapidLauncherRoF Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Zainou 'Deadeye' Rapid Launch RL (6 of 6) Implant: Whelan Machorin's Ballistic Smartlink Skill: Missile Launcher Operation Skill: Rapid Launch """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', container.getModifiedItemAttr('rofBonus') * level, **kwargs) class Effect1764(BaseEffect): """ missileSkillMissileProjectileVelocityBonus Used by: Implants named like: State Projection Booster (4 of 4) Implants named like: Zainou 'Deadeye' Missile Projection MP (6 of 6) Modules named like: Hydraulic Bay Thrusters (8 of 8) Skill: Missile Projection """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', container.getModifiedItemAttr('speedFactor') * level, stackingPenalties=penalized, **kwargs) class Effect1773(BaseEffect): """ shipBonusSHTFalloffGF2 Used by: Ship: Atron Ship: Daredevil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect1804(BaseEffect): """ shipArmorEMResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1805(BaseEffect): """ shipArmorTHResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1806(BaseEffect): """ shipArmorKNResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1807(BaseEffect): """ shipArmorEXResistanceAF1 Used by: Ship: Astero Ship: Malice Ship: Punisher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect1812(BaseEffect): """ shipShieldEMResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1813(BaseEffect): """ shipShieldThermalResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1814(BaseEffect): """ shipShieldKineticResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1815(BaseEffect): """ shipShieldExplosiveResistanceCC2 Used by: Variations of ship: Moa (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect1816(BaseEffect): """ shipShieldEMResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1817(BaseEffect): """ shipShieldThermalResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1819(BaseEffect): """ shipShieldKineticResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1820(BaseEffect): """ shipShieldExplosiveResistanceCF2 Used by: Variations of ship: Merlin (3 of 4) Ship: Cambion Ship: Whiptail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect1848(BaseEffect): """ miningForemanMindlink Used by: Implant: Mining Foreman Mindlink Implant: ORE Mining Director Mindlink """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect1851(BaseEffect): """ selfRof Used by: Skills named like: Missile Specialization (4 of 5) Skill: Rocket Specialization Skill: Torpedo Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect1862(BaseEffect): """ shipMissileEMDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1863(BaseEffect): """ shipMissileThermalDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1864(BaseEffect): """ shipMissileExplosiveDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect1882(BaseEffect): """ miningYieldMultiplyPercent Used by: Modules from group: Mining Upgrade (8 of 13) Variations of module: Mining Laser Upgrade I (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountBonus'), **kwargs) class Effect1885(BaseEffect): """ shipCruiseLauncherROFBonus2CB Used by: Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect1886(BaseEffect): """ shipSiegeLauncherROFBonus2CB Used by: Ship: Raven Ship: Raven State Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect1910(BaseEffect): """ eliteBonusVampireDrainAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1911(BaseEffect): """ eliteReconBonusGravimetricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1912(BaseEffect): """ eliteReconBonusMagnetometricStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1913(BaseEffect): """ eliteReconBonusRadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1914(BaseEffect): """ eliteReconBonusLadarStrength2 Used by: Ship: Chameleon Ship: Falcon Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1921(BaseEffect): """ eliteReconStasisWebBonus2 Used by: Ship: Huginn Ship: Moracha Ship: Rapier Ship: Victor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1922(BaseEffect): """ eliteReconScramblerRangeBonus2 Used by: Ship: Arazu Ship: Enforcer Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect1959(BaseEffect): """ armorReinforcerMassAdd Used by: Modules from group: Armor Plate (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) class Effect1964(BaseEffect): """ shipBonusShieldTransferCapneed1 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect1969(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedGC1 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect1996(BaseEffect): """ caldariShipEwCapacitorNeedCF2 Used by: Ship: Griffin Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect2000(BaseEffect): """ droneRangeBonusAdd Used by: Modules from group: Drone Control Range Module (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('droneRangeBonus') fit.extraAttributes.increase('droneControlRange', amount, **kwargs) class Effect2008(BaseEffect): """ cynosuralDurationBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Force Recon Ship (9 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'), 'duration', ship.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2013(BaseEffect): """ droneMaxVelocityBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Modules named like: Drone Speed Augmentor (6 of 8) Implant: Overmind 'Goliath' Drone Tuner T25-10S Implant: Overmind 'Hawkmoth' Drone Tuner S10-25T """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalties = False if 'implant' in context or 'booster' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', container.getModifiedItemAttr('droneMaxVelocityBonus') * level, stackingPenalties=penalties, **kwargs) class Effect2014(BaseEffect): """ droneMaxRangeBonus Used by: Modules named like: Drone Scope Chip (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus') * level, stackingPenalties=penalized, **kwargs) class Effect2015(BaseEffect): """ droneDurabilityShieldCapBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', module.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect2016(BaseEffect): """ droneDurabilityArmorHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', module.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect2017(BaseEffect): """ droneDurabilityHPBonus Used by: Modules named like: Drone Durability Enhancer (6 of 8) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', container.getModifiedItemAttr('hullHpBonus') * level, **kwargs) class Effect2019(BaseEffect): """ repairDroneShieldBonusBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'shieldBonus', container.getModifiedItemAttr('damageHP') * level, stackingPenalties=penalized, **kwargs) class Effect2020(BaseEffect): """ repairDroneArmorDamageAmountBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context else True fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'armorDamageAmount', container.getModifiedItemAttr('damageHP') * level, stackingPenalties=penalized, **kwargs) class Effect2029(BaseEffect): """ addToSignatureRadius2 Used by: Modules from group: Missile Launcher Bomb (2 of 2) Modules from group: Shield Extender (36 of 36) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusAdd'), **kwargs) class Effect2041(BaseEffect): """ modifyArmorResonancePostPercent Used by: Modules from group: Armor Coating (184 of 184) Modules from group: Energized Armor Membrane (169 of 169) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True, **kwargs) class Effect2052(BaseEffect): """ modifyShieldResonancePostPercent Used by: Modules from group: Shield Resistance Amplifier (84 of 84) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % type), stackingPenalties=True, **kwargs) class Effect2053(BaseEffect): """ emShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: EM Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2054(BaseEffect): """ explosiveShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Explosive Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2055(BaseEffect): """ kineticShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Kinetic Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2056(BaseEffect): """ thermalShieldCompensationHardeningBonusGroupShieldAmp Used by: Skill: Thermal Shield Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Shield Resistance Amplifier', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2105(BaseEffect): """ emArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2106(BaseEffect): """ explosiveArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2107(BaseEffect): """ kineticArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2108(BaseEffect): """ thermicArmorCompensationHardeningBonusGroupArmorCoating Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Coating', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2109(BaseEffect): """ emArmorCompensationHardeningBonusGroupEnergized Used by: Skill: EM Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'emDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2110(BaseEffect): """ explosiveArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Explosive Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'explosiveDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2111(BaseEffect): """ kineticArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Kinetic Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'kineticDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2112(BaseEffect): """ thermicArmorCompensationHardeningBonusGroupEnergized Used by: Skill: Thermal Armor Compensation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energized Armor Membrane', 'thermalDamageResistanceBonus', skill.getModifiedItemAttr('hardeningBonus') * skill.level, **kwargs) class Effect2130(BaseEffect): """ smallHybridMaxRangeBonus Used by: Ship: Catalyst Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2131(BaseEffect): """ smallEnergyMaxRangeBonus Used by: Ship: Coercer Ship: Gold Magnate Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2132(BaseEffect): """ smallProjectileMaxRangeBonus Used by: Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2133(BaseEffect): """ energyTransferArrayMaxRangeBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus2'), **kwargs) class Effect2134(BaseEffect): """ shieldTransporterMaxRangeBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Osprey Ship: Rorqual Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2135(BaseEffect): """ armorRepairProjectorMaxRangeBonus Used by: Variations of ship: Navitas (2 of 2) Ship: Augoror Ship: Deacon Ship: Exequror Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect2143(BaseEffect): """ minmatarShipEwTargetPainterMC2 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect2152(BaseEffect): """ jumpPortalGeneration Used by: Module: Industrial Jump Portal Generator I Module: Jump Portal Generator I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect2155(BaseEffect): """ eliteBonusCommandShipProjectileDamageCS1 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect2156(BaseEffect): """ eliteBonusCommandShipProjectileFalloffCS2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect2157(BaseEffect): """ eliteBonusCommandShipLaserDamageCS1 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect2160(BaseEffect): """ eliteBonusCommandShipHybridFalloffCS2 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect2179(BaseEffect): """ shipBonusDroneHitpointsGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2181(BaseEffect): """ shipBonusDroneHitpointsFixedAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2186(BaseEffect): """ shipBonusDroneHitpointsGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2187(BaseEffect): """ shipBonusDroneDamageMultiplierGB2 Used by: Variations of ship: Dominix (3 of 3) Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2188(BaseEffect): """ shipBonusDroneDamageMultiplierGC2 Used by: Ships named like: Stratios (2 of 2) Ship: Vexor Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2189(BaseEffect): """ shipBonusDroneDamageMultiplierAC2 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2201(BaseEffect): """ eliteBonusInterdictorsProjectileFalloff1 Used by: Ship: Sabre """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect2215(BaseEffect): """ shipBonusPirateFrigateProjDamage Used by: Ship: Chremoas Ship: Dramiel Ship: Mekubal Ship: Metamorphosis Ship: Sunesis Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect2232(BaseEffect): """ scanStrengthBonusPercentOnline Used by: Modules from group: Signal Amplifier (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr('scan%sStrength' % type, module.getModifiedItemAttr('scan%sStrengthPercent' % type), stackingPenalties=True, **kwargs) class Effect2249(BaseEffect): """ shipBonusDroneMiningAmountAC2 Used by: Ship: Arbitrator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'miningAmount', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect2250(BaseEffect): """ shipBonusDroneMiningAmountGC2 Used by: Ship: Vexor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2251(BaseEffect): """ commandshipMultiRelayEffect Used by: Ships from group: Command Ship (8 of 8) Ships from group: Industrial Command Ship (2 of 2) Ship: Odysseus Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules'), **kwargs) class Effect2252(BaseEffect): """ covertOpsAndReconOpsCloakModuleDelayBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Blockade Runner (5 of 5) Ships from group: Covert Ops (9 of 9) Ships from group: Expedition Frigate (2 of 2) Ships from group: Force Recon Ship (10 of 10) Ships from group: Stealth Bomber (5 of 5) Ships named like: Stratios (2 of 2) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Ship: Astero Ship: Cenotaph Ship: Metamorphosis Ship: Odysseus Ship: Rabisu Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.requiresSkill('Cloaking'), 'moduleReactivationDelay', container.getModifiedItemAttr('covertOpsAndReconOpsCloakModuleDelay'), **kwargs) class Effect2253(BaseEffect): """ covertOpsStealthBomberTargettingDelayBonus Used by: Ships from group: Black Ops (6 of 6) Ships from group: Stealth Bomber (5 of 5) Ship: Caedes Ship: Chremoas Ship: Endurance Ship: Etana Ship: Rabisu Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'cloakingTargetingDelay', ship.getModifiedItemAttr('covertOpsStealthBomberTargettingDelay'), **kwargs) class Effect2255(BaseEffect): """ tractorBeamCan Used by: Deployables from group: Mobile Tractor Unit (5 of 5) Modules from group: Tractor Beam (6 of 6) """ type = 'active' class Effect2296(BaseEffect): """ modifyArmorResonancePassivePostPercentPassive Used by: Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Imperial Defense Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.boostItemAttr(f'armor{tgtResType}DamageResonance', booster.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs) class Effect2297(BaseEffect): """ modifyShieldResonancePassivePostPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: State Defense Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.boostItemAttr(f'shield{tgtResType}DamageResonance', ship.getModifiedItemAttr(f'passive{srcResType}DamageResistanceBonus'), **kwargs) class Effect2298(BaseEffect): """ scanStrengthBonusPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon G Booster (5 of 5) Implants named like: High grade Grail (5 of 6) Implants named like: High grade Jackal (5 of 6) Implants named like: High grade Spur (5 of 6) Implants named like: High grade Talon (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): sensorType = 'scan{0}Strength'.format(type) sensorBoost = 'scan{0}StrengthPercent'.format(type) if sensorBoost in implant.item.attributes: fit.ship.boostItemAttr(sensorType, implant.getModifiedItemAttr(sensorBoost), **kwargs) class Effect2302(BaseEffect): """ damageControl Used by: Modules from group: Damage Control (25 of 30) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): bonus = '%s%sDamageResonance' % (attrPrefix, damageType) bonus = '%s%s' % (bonus[0].lower(), bonus[1:]) booster = '%s%sDamageResonance' % (layer, damageType) fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster), stackingPenalties=True, penaltyGroup='preMul', **kwargs) class Effect2305(BaseEffect): """ eliteReconBonusEnergyNeutAmount2 Used by: Ship: Curse Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect2354(BaseEffect): """ capitalRemoteArmorRepairerCapNeedBonusSkill Used by: Variations of module: Capital Remote Repair Augmentor I (2 of 2) Skill: Capital Remote Armor Repair Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2355(BaseEffect): """ capitalRemoteShieldTransferCapNeedBonusSkill Used by: Skill: Capital Shield Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2356(BaseEffect): """ capitalRemoteEnergyTransferCapNeedBonusSkill Used by: Skill: Capital Capacitor Emission Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2402(BaseEffect): """ skillSuperWeaponDmgBonus Used by: Skill: Advanced Doomsday Operation Skill: Doomsday Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for dmgType in damageTypes: fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Doomsday Operation'), f'{dmgType}Damage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect2422(BaseEffect): """ implantVelocityBonus Used by: Implants named like: Eifyr and Co. 'Rogue' Navigation NN (6 of 6) Implant: Genolution Core Augmentation CA-3 Implant: Shaqil's Speed Enhancer """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('implantBonusVelocity'), **kwargs) class Effect2432(BaseEffect): """ energyManagementCapacitorCapacityBonusPostPercentPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6) Implants named like: Mindflood Booster (4 of 4) Modules named like: Semiconductor Memory Cell (8 of 8) Implant: Antipharmakon Aeolis Implant: Basic Capsuleer Engineering Augmentation Chip Implant: Genolution Core Augmentation CA-1 Skill: Capacitor Management """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.ship.boostItemAttr('capacitorCapacity', container.getModifiedItemAttr('capacitorCapacityBonus') * level, **kwargs) class Effect2444(BaseEffect): """ minerCpuUsageMultiplyPercent2 Used by: Modules from group: Mining Upgrade (8 of 13) Variations of module: Mining Laser Upgrade I (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs) class Effect2445(BaseEffect): """ iceMinerCpuUsagePercent Used by: Variations of module: Ice Harvester Upgrade I (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'cpu', module.getModifiedItemAttr('cpuPenaltyPercent'), **kwargs) class Effect2456(BaseEffect): """ miningUpgradeCPUPenaltyReductionModulesRequiringMiningUpgradePercent Used by: Implants named like: Inherent Implants 'Highwall' Mining Upgrades MU (3 of 3) Skill: Mining Upgrades """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Upgrades'), 'cpuPenaltyPercent', container.getModifiedItemAttr('miningUpgradeCPUReductionBonus') * level, **kwargs) class Effect2465(BaseEffect): """ shipBonusArmorResistAB Used by: Ship: Abaddon Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'): fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect2479(BaseEffect): """ iceHarvestCycleTimeModulesRequiringIceHarvestingOnline Used by: Variations of module: Ice Harvester Upgrade I (5 of 5) Module: Frostline 'Omnivore' Harvester Upgrade """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', module.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs) class Effect2485(BaseEffect): """ implantArmorHpBonus2 Used by: Implants named like: Capsuleer Defense Augmentation Chip (3 of 3) Implants named like: Festival only 'Rock' AH Dose (4 of 4) Implants named like: Inherent Implants 'Noble' Hull Upgrades HG (7 of 7) Implants named like: Serenity Limited 'Hardshell' Dose (3 of 3) Implant: Genolution Core Augmentation CA-4 Implant: Imperial Navy Modified 'Noble' Implant Implant: Imperial Special Ops Field Enhancer - Standard """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', implant.getModifiedItemAttr('armorHpBonus2'), **kwargs) class Effect2488(BaseEffect): """ implantVelocityBonus2 Used by: Implant: Republic Special Ops Field Enhancer - Gamma """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', implant.getModifiedItemAttr('velocityBonus2'), **kwargs) class Effect2489(BaseEffect): """ shipBonusRemoteTrackingComputerFalloffMC Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect2490(BaseEffect): """ shipBonusRemoteTrackingComputerFalloffGC2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect2491(BaseEffect): """ ewSkillEcmBurstRangeBonus Used by: Modules named like: Particle Dispersion Projector (8 of 8) Skill: Long Distance Jamming """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'ecmBurstRange', container.getModifiedItemAttr('rangeSkillBonus') * level, **kwargs) class Effect2492(BaseEffect): """ ewSkillEcmBurstCapNeedBonus Used by: Implants named like: Zainou 'Gypsy' Electronic Warfare EW (6 of 6) Modules named like: Signal Disruption Amplifier (8 of 8) Skill: Electronic Warfare """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect2503(BaseEffect): """ shipHTTrackingBonusGB2 Used by: Ships named like: Megathron (3 of 3) Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect2504(BaseEffect): """ shipBonusHybridTrackingGF2 Used by: Ship: Ares Ship: Federation Navy Comet Ship: Pacifier Ship: Sidewinder Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect2561(BaseEffect): """ eliteBonusAssaultShipMissileVelocity1 Used by: Ship: Hawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect2589(BaseEffect): """ modifyBoosterEffectChanceWithBoosterChanceBonusPostPercent Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Recovery NR (2 of 2) Skill: Neurotoxin Recovery """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 for i in range(5): attr = 'boosterEffectChance{0}'.format(i + 1) fit.boosters.filteredItemBoost(lambda booster: attr in booster.itemModifiedAttributes, attr, container.getModifiedItemAttr('boosterChanceBonus') * level, **kwargs) class Effect2602(BaseEffect): """ shipBonusEmShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2603(BaseEffect): """ shipBonusExplosiveShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2604(BaseEffect): """ shipBonusKineticShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2605(BaseEffect): """ shipBonusThermicShieldResistanceCB2 Used by: Ship: Rattlesnake Ship: Rokh Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect2611(BaseEffect): """ eliteBonusGunshipProjectileDamage1 Used by: Ship: Wolf """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect2644(BaseEffect): """ increaseSignatureRadiusOnline Used by: Modules from group: Inertial Stabilizer (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect2645(BaseEffect): """ scanResolutionMultiplierOnline Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) class Effect2646(BaseEffect): """ maxTargetRangeBonus Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect2647(BaseEffect): """ eliteBonusHeavyGunshipHeavyMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2648(BaseEffect): """ eliteBonusHeavyGunshipHeavyAssaultMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2649(BaseEffect): """ eliteBonusHeavyGunshipAssaultMissileLauncherRof2 Used by: Ship: Cerberus Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect2670(BaseEffect): """ sensorBoosterActivePercentage Used by: Modules from group: Sensor Booster (16 of 16) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) class Effect2688(BaseEffect): """ capNeedBonusEffectLasers Used by: Modules named like: Energy Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect2689(BaseEffect): """ capNeedBonusEffectHybrids Used by: Modules named like: Hybrid Discharge Elutriation (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'capacitorNeed', module.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect2690(BaseEffect): """ cpuNeedBonusEffectLasers Used by: Modules named like: Algid Energy Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect2691(BaseEffect): """ cpuNeedBonusEffectHybrid Used by: Modules named like: Algid Hybrid Administrations Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'cpu', module.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect2693(BaseEffect): """ falloffBonusEffectLasers Used by: Implants named like: Imperial Projection Booster (4 of 4) Modules named like: Energy Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2694(BaseEffect): """ falloffBonusEffectHybrids Used by: Implants named like: Federation Projection Booster (4 of 4) Implants named like: State Projection Booster (4 of 4) Modules named like: Hybrid Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2695(BaseEffect): """ falloffBonusEffectProjectiles Used by: Implants named like: Republic Projection Booster (4 of 4) Modules named like: Projectile Ambit Extension (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=penalize, **kwargs) class Effect2696(BaseEffect): """ maxRangeBonusEffectLasers Used by: Implants named like: Imperial Projection Booster (4 of 4) Modules named like: Energy Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalties, **kwargs) class Effect2697(BaseEffect): """ maxRangeBonusEffectHybrids Used by: Implants named like: Federation Projection Booster (4 of 4) Implants named like: State Projection Booster (4 of 4) Modules named like: Hybrid Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalties, **kwargs) class Effect2698(BaseEffect): """ maxRangeBonusEffectProjectiles Used by: Implants named like: Republic Projection Booster (4 of 4) Modules named like: Projectile Locus Coordinator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=penalize, **kwargs) class Effect2706(BaseEffect): """ drawbackPowerNeedLasers Used by: Modules from group: Rig Energy Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2707(BaseEffect): """ drawbackPowerNeedHybrids Used by: Modules from group: Rig Hybrid Weapon (56 of 56) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2708(BaseEffect): """ drawbackPowerNeedProjectiles Used by: Modules from group: Rig Projectile Weapon (40 of 40) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2712(BaseEffect): """ drawbackArmorHP Used by: Modules from group: Rig Navigation (48 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2713(BaseEffect): """ drawbackCPUOutput Used by: Modules from group: Rig Drones (58 of 64) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('cpuOutput', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2714(BaseEffect): """ drawbackCPUNeedLaunchers Used by: Modules from group: Rig Launcher (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'cpu', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2716(BaseEffect): """ drawbackSigRad Used by: Modules from group: Rig Shield (72 of 72) Modules named like: Optimizer (16 of 16) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect2717(BaseEffect): """ drawbackAgility Used by: Modules from group: Rig Armor (48 of 72) Modules from group: Rig Resource Processing (8 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect2718(BaseEffect): """ drawbackShieldCapacity Used by: Modules from group: Rig Electronic Systems (40 of 48) Modules from group: Rig Targeting (16 of 16) Modules named like: Signal Focusing Kit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('drawback'), **kwargs) class Effect2726(BaseEffect): """ miningClouds Used by: Modules named like: Gas Cloud (10 of 10) """ type = 'active' class Effect2727(BaseEffect): """ gasCloudHarvestingMaxGroupSkillLevel Used by: Skill: Gas Cloud Harvesting """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Gas Cloud Scoops', 'maxGroupActive', skill.level, **kwargs) class Effect2734(BaseEffect): """ shipECMScanStrengthBonusCF Used by: Ship: Griffin Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect2735(BaseEffect): """ boosterArmorHpPenalty Used by: Implants named like: Crash Booster (3 of 4) Implants named like: Exile Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterArmorHPPenalty' displayName = 'Armor Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2736(BaseEffect): """ boosterArmorRepairAmountPenalty Used by: Implants named like: Drop Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) """ runTime = 'late' attr = 'boosterArmorRepairAmountPenalty' displayName = 'Armor Repair Amount' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Armor Repair Unit', 'Ancillary Armor Repairer'), 'armorDamageAmount', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2737(BaseEffect): """ boosterShieldCapacityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Drop Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterShieldCapacityPenalty' displayName = 'Shield Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2739(BaseEffect): """ boosterTurretOptimalRangePenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Mindflood Booster (3 of 4) Implants named like: Sooth Sayer Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretOptimalRangePenalty' displayName = 'Turret Optimal Range' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2741(BaseEffect): """ boosterTurretFalloffPenalty Used by: Implants named like: Drop Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretFalloffPenalty' displayName = 'Turret Falloff' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2745(BaseEffect): """ boosterCapacitorCapacityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) Implants named like: Exile Booster (3 of 4) """ runTime = 'late' attr = 'boosterCapacitorCapacityPenalty' displayName = 'Cap Capacity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2746(BaseEffect): """ boosterMaxVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Items from market group: Implants & Boosters > Booster > Booster Slot 02 (9 of 13) """ runTime = 'late' attr = 'boosterMaxVelocityPenalty' displayName = 'Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2747(BaseEffect): """ boosterTurretTrackingPenalty Used by: Implants named like: Exile Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) """ runTime = 'late' attr = 'boosterTurretTrackingPenalty' displayName = 'Turret Tracking' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2748(BaseEffect): """ boosterMissileVelocityPenalty Used by: Implants named like: Crash Booster (3 of 4) Implants named like: X Instinct Booster (3 of 4) """ runTime = 'late' attr = 'boosterMissileVelocityPenalty' displayName = 'Missile Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2749(BaseEffect): """ boosterMissileExplosionVelocityPenalty Used by: Implants named like: Blue Pill Booster (3 of 5) """ runTime = 'late' attr = 'boosterAOEVelocityPenalty' displayName = 'Missile Explosion Velocity' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2756(BaseEffect): """ shipBonusECMStrengthBonusCC Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Magnetometric', 'Ladar', 'Radar'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect2757(BaseEffect): """ salvaging Used by: Modules from group: Salvager (3 of 3) """ type = 'active' class Effect2760(BaseEffect): """ boosterModifyBoosterArmorPenalties Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterArmorHPPenalty', 'boosterArmorRepairAmountPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2763(BaseEffect): """ boosterModifyBoosterShieldPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterShieldBoostAmountPenalty', 'boosterShieldCapacityPenalty', 'shieldBoostMultiplier') for attr in attrs: # shieldBoostMultiplier can be positive (Blue Pill) and negative value (other boosters) # We're interested in decreasing only side-effects fit.boosters.filteredItemBoost(lambda booster: booster.getModifiedItemAttr(attr) < 0, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2766(BaseEffect): """ boosterModifyBoosterMaxVelocityAndCapacitorPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterCapacitorCapacityPenalty', 'boosterMaxVelocityPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2776(BaseEffect): """ boosterModifyBoosterMissilePenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterAOEVelocityPenalty', 'boosterMissileAOECloudPenalty', 'boosterMissileVelocityPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2778(BaseEffect): """ boosterModifyBoosterTurretPenalty Used by: Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2) Implants named like: grade Edge (10 of 12) Skill: Neurotoxin Control """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 attrs = ('boosterTurretFalloffPenalty', 'boosterTurretOptimalRangePenalty', 'boosterTurretTrackingPenalty') for attr in attrs: fit.boosters.filteredItemBoost(lambda booster: True, attr, container.getModifiedItemAttr('boosterAttributeModifier') * level, **kwargs) class Effect2791(BaseEffect): """ boosterMissileExplosionCloudPenaltyFixed Used by: Implants named like: Exile Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) """ attr = 'boosterMissileAOECloudPenalty' displayName = 'Missile Explosion Radius' type = 'boosterSideEffect' @classmethod def handler(cls, fit, booster, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', booster.getModifiedItemAttr(cls.attr), **kwargs) class Effect2792(BaseEffect): """ modifyArmorResonancePostPercentPassive Used by: Modules named like: Armor Reinforcer (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True, **kwargs) class Effect2794(BaseEffect): """ salvagingAccessDifficultyBonusEffectPassive Used by: Modules from group: Rig Resource Processing (8 of 10) Implant: Poteque 'Prospector' Salvaging SV-905 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Salvaging'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus'), position='post', **kwargs) class Effect2795(BaseEffect): """ modifyShieldResonancePostPercentPassive Used by: Modules named like: Shield Reinforcer (32 of 32) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + type.capitalize() + 'DamageResonance', module.getModifiedItemAttr(type + 'DamageResistanceBonus') or 0, stackingPenalties=True, **kwargs) class Effect2796(BaseEffect): """ massReductionBonusPassive Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True, **kwargs) class Effect2797(BaseEffect): """ projectileWeaponSpeedMultiplyPassive Used by: Modules named like: Projectile Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2798(BaseEffect): """ projectileWeaponDamageMultiplyPassive Used by: Implants named like: Republic Damage Booster (4 of 4) Modules named like: Projectile Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Projectile Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalize, **kwargs) class Effect2799(BaseEffect): """ missileLauncherSpeedMultiplierPassive Used by: Modules named like: Bay Loading Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2801(BaseEffect): """ energyWeaponSpeedMultiplyPassive Used by: Modules named like: Energy Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2802(BaseEffect): """ hybridWeaponDamageMultiplyPassive Used by: Implants named like: Federation Damage Booster (4 of 4) Implants named like: State Damage Booster (4 of 4) Modules named like: Hybrid Collision Accelerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalize, **kwargs) class Effect2803(BaseEffect): """ energyWeaponDamageMultiplyPassive Used by: Implants named like: Imperial Damage Booster (4 of 4) Modules named like: Energy Collision Accelerator (8 of 8) Implant: Wisdom of Gheinok """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=penalties, **kwargs) class Effect2804(BaseEffect): """ hybridWeaponSpeedMultiplyPassive Used by: Modules named like: Hybrid Burst Aerator (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect2805(BaseEffect): """ shipBonusLargeEnergyWeaponDamageAB2 Used by: Ship: Abaddon Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect2809(BaseEffect): """ shipMissileAssaultMissileVelocityBonusCC2 Used by: Ship: Caracal Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect2812(BaseEffect): """ caldariShipECMBurstOptimalRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'ecmBurstRange', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect2837(BaseEffect): """ armorHPBonusAdd Used by: Modules from group: Armor Plate (51 of 51) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd'), **kwargs) class Effect2847(BaseEffect): """ trackingSpeedBonusPassiveRequiringGunneryTrackingSpeedBonus Used by: Implants named like: Drop Booster (4 of 4) Implants named like: Eifyr and Co. 'Gunslinger' Motion Prediction MR (6 of 6) Implants named like: Halcyon G Booster (5 of 5) Implant: Antipharmakon Iokira Implant: Ogdin's Eye Coordination Enhancer Skill: Motion Prediction """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', container.getModifiedItemAttr('trackingSpeedBonus') * level, **kwargs) class Effect2848(BaseEffect): """ accessDifficultyBonusModifierRequiringArchaelogy Used by: Modules named like: Emission Scope Sharpener (8 of 8) Implant: Poteque 'Prospector' Archaeology AC-905 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Archaeology'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs) class Effect2849(BaseEffect): """ accessDifficultyBonusModifierRequiringHacking Used by: Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda c: c.item.requiresSkill('Hacking'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonusModifier'), **kwargs) class Effect2850(BaseEffect): """ durationBonusForGroupAfterburner Used by: Modules named like: Engine Thermal Shielding (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'duration', module.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2851(BaseEffect): """ missileDMGBonusPassive Used by: Implants named like: Republic Damage Booster (4 of 4) Implants named like: State Damage Booster (4 of 4) Modules named like: Warhead Calefaction Catalyst (8 of 8) Implant: Guristas Damage Booster III """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): penalize = False if 'booster' in context else True for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '%sDamage' % dmgType, container.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=penalize, **kwargs) class Effect2853(BaseEffect): """ cloakingTargetingDelayBonusLRSMCloakingPassive Used by: Modules named like: Targeting Systems Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Cloaking'), 'cloakingTargetingDelay', module.getModifiedItemAttr('cloakingTargetingDelayBonus'), **kwargs) class Effect2857(BaseEffect): """ cynosuralGeneration Used by: Modules from group: Cynosural Field Generator (3 of 3) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), **kwargs) class Effect2858(BaseEffect): """ cloneJumpAccepting Used by: Module: Clone Vat Bay I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('canCloak', mod.getModifiedChargeAttr('canCloak'), **kwargs) class Effect2865(BaseEffect): """ velocityBonusOnline Used by: Modules from group: Entosis Link (6 of 6) Modules from group: Nanofiber Internal Structure (8 of 8) Modules from group: Overdrive Injector System (7 of 7) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True, **kwargs) class Effect2866(BaseEffect): """ biologyTimeBonusFixed Used by: Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2) Skill: Biology """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.boosters.filteredItemBoost(lambda bst: True, 'boosterDuration', container.getModifiedItemAttr('durationBonus') * level, **kwargs) class Effect2867(BaseEffect): """ sentryDroneDamageBonus Used by: Modules named like: Sentry Damage Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', module.getModifiedItemAttr('damageMultiplierBonus'), stackingPenalties=True, **kwargs) class Effect2868(BaseEffect): """ armorDamageAmountBonusCapitalArmorRepairers Used by: Modules named like: Auxiliary Nano Pump (8 of 8) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', implant.getModifiedItemAttr('repairBonus'), stackingPenalties=True, **kwargs) class Effect2872(BaseEffect): """ missileVelocityBonusDefender Used by: Implants named like: Zainou 'Snapshot' Defender Missiles DM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', container.getModifiedItemAttr('missileVelocityBonus'), **kwargs) class Effect2881(BaseEffect): """ missileEMDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2882(BaseEffect): """ missileExplosiveDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2883(BaseEffect): """ missileKineticDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2884(BaseEffect): """ missileThermalDmgBonusCruise3 Used by: Implants named like: Zainou 'Snapshot' Cruise Missiles CM (6 of 6) Implant: Festival-only 'Longbow' CM3 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2885(BaseEffect): """ gasHarvestingCycleTimeModulesRequiringGasCloudHarvesting Used by: Implants named like: Eifyr and Co. 'Alchemist' Gas Harvesting GH (3 of 3) Implants named like: ORE 'Harvester' Efficiency (2 of 2) Implants named like: Serenity Limited 'Efficiency' Dose (3 of 3) Implants named like: Serenity Poteque 'Prospector' Harvesting MC (3 of 3) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2887(BaseEffect): """ missileEMDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2888(BaseEffect): """ missileExplosiveDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2889(BaseEffect): """ missileKineticDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2890(BaseEffect): """ missileThermalDmgBonusRocket Used by: Implants named like: Zainou 'Snapshot' Rockets RD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' RD2 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2891(BaseEffect): """ missileEMDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2892(BaseEffect): """ missileExplosiveDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2893(BaseEffect): """ missileKineticDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2894(BaseEffect): """ missileThermalDmgBonusStandard Used by: Implants named like: Festival only 'Longbow' MD Dose (2 of 2) Implants named like: Zainou 'Snapshot' Light Missiles LM (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2899(BaseEffect): """ missileEMDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2900(BaseEffect): """ missileExplosiveDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2901(BaseEffect): """ missileKineticDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2902(BaseEffect): """ missileThermalDmgBonusHeavy Used by: Implants named like: Zainou 'Snapshot' Heavy Missiles HM (6 of 6) Implant: Festival-only 'Longbow' HM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2903(BaseEffect): """ missileEMDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2904(BaseEffect): """ missileExplosiveDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2905(BaseEffect): """ missileKineticDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2906(BaseEffect): """ missileThermalDmgBonusHAM Used by: Implants named like: Zainou 'Snapshot' Heavy Assault Missiles AM (6 of 6) Implant: Festival-only 'Longbow' HAM4 Dose Implant: Festival-only 'Longbow' MD6 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2907(BaseEffect): """ missileEMDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2908(BaseEffect): """ missileExplosiveDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2909(BaseEffect): """ missileKineticDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2910(BaseEffect): """ missileThermalDmgBonusTorpedo Used by: Implants named like: Zainou 'Snapshot' Torpedoes TD (6 of 6) Implant: Festival-only 'Longbow' MD6 Dose Implant: Festival-only 'Longbow' TP3 Dose """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', container.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect2911(BaseEffect): """ dataminerModuleDurationReduction Used by: Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Data Miners', 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect2967(BaseEffect): """ skillTriageModuleConsumptionQuantityBonus Used by: Skill: Tactical Logistics Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect2979(BaseEffect): """ skillRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2980(BaseEffect): """ skillCapitalRemoteHullRepairSystemsCapNeedBonus Used by: Skill: Capital Remote Hull Repair Systems """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Hull Repair Systems'), 'capacitorNeed', skill.getModifiedItemAttr('capNeedBonus') * skill.level, **kwargs) class Effect2982(BaseEffect): """ skillRemoteECMDurationBonus Used by: Skill: Burst Projector Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): # We need to make sure that the attribute exists, otherwise we add attributes that don't belong. See #927 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('duration'), 'duration', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationECMJammerBurstProjector'), 'durationECMJammerBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationTargetIlluminationBurstProjector'), 'durationTargetIlluminationBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationSensorDampeningBurstProjector'), 'durationSensorDampeningBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation') and mod.item.getAttribute('durationWeaponDisruptionBurstProjector'), 'durationWeaponDisruptionBurstProjector', skill.getModifiedItemAttr('projECMDurationBonus') * skill.level, **kwargs) class Effect3001(BaseEffect): """ overloadRofBonus Used by: Modules from group: Missile Launcher Torpedo (22 of 22) Items from market group: Ship Equipment > Turrets & Launchers (446 of 935) Module: Interdiction Sphere Launcher I """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('speed', module.getModifiedItemAttr('overloadRofBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) class Effect3002(BaseEffect): """ overloadSelfDurationBonus Used by: Modules from group: Armor Resistance Shift Hardener (2 of 2) Modules from group: Capacitor Booster (43 of 43) Modules from group: Energy Neutralizer (57 of 57) Modules from group: Energy Nosferatu (58 of 58) Modules from group: Hull Repair Unit (25 of 25) Modules from group: Remote Capacitor Transmitter (37 of 37) Modules from group: Remote Hull Repairer (8 of 8) Modules from group: Smart Bomb (137 of 137) Modules from group: Warp Disrupt Field Generator (8 of 8) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus') or 0, **kwargs) class Effect3024(BaseEffect): """ eliteBonusCoverOpsBombExplosiveDmg1 Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3025(BaseEffect): """ overloadSelfDamageBonus Used by: Modules from group: Energy Weapon (105 of 220) Modules from group: Hybrid Weapon (107 of 223) Modules from group: Precursor Weapon (20 of 20) Modules from group: Projectile Weapon (101 of 167) Modules named like: Pulse Laser (89 of 90) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('damageMultiplier', module.getModifiedItemAttr('overloadDamageModifier'), **kwargs) class Effect3026(BaseEffect): """ eliteBonusCoverOpsBombKineticDmg1 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3027(BaseEffect): """ eliteBonusCoverOpsBombThermalDmg1 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3028(BaseEffect): """ eliteBonusCoverOpsBombEmDmg1 Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect3029(BaseEffect): """ overloadSelfEmHardeningBonus Used by: Variations of module: EM Armor Hardener I (37 of 37) Variations of module: EM Shield Hardener I (20 of 20) Module: Civilian EM Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('emDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3030(BaseEffect): """ overloadSelfThermalHardeningBonus Used by: Variations of module: Thermal Armor Hardener I (37 of 37) Variations of module: Thermal Shield Hardener I (20 of 20) Module: Civilian Thermal Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('thermalDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3031(BaseEffect): """ overloadSelfExplosiveHardeningBonus Used by: Variations of module: Explosive Armor Hardener I (37 of 37) Variations of module: Explosive Shield Hardener I (20 of 20) Module: Civilian Explosive Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('explosiveDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3032(BaseEffect): """ overloadSelfKineticHardeningBonus Used by: Variations of module: Kinetic Armor Hardener I (37 of 37) Variations of module: Kinetic Shield Hardener I (20 of 20) Module: Civilian Kinetic Shield Hardener """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('kineticDamageResistanceBonus', module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3035(BaseEffect): """ overloadSelfHardeningInvulnerabilityBonus Used by: Modules named like: Capital Flex Hardener (9 of 9) Variations of module: Multispectrum Shield Hardener I (19 of 19) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): module.boostItemAttr('%sDamageResistanceBonus' % type, module.getModifiedItemAttr('overloadHardeningBonus'), **kwargs) class Effect3036(BaseEffect): """ skillBombDeploymentModuleReactivationDelayBonus Used by: Skill: Bomb Deployment """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Bomb', 'moduleReactivationDelay', skill.getModifiedItemAttr('reactivationDelayBonus') * skill.level, **kwargs) class Effect3046(BaseEffect): """ modifyMaxVelocityOfShipPassive Used by: Modules from group: Expanded Cargohold (8 of 8) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), stackingPenalties=True, **kwargs) class Effect3047(BaseEffect): """ structureHPMultiplyPassive Used by: Modules from group: Expanded Cargohold (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('hp', module.getModifiedItemAttr('structureHPMultiplier'), **kwargs) class Effect3061(BaseEffect): """ heatDamageBonus Used by: Modules from group: Shield Boost Amplifier (23 of 23) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'heatDamage', module.getModifiedItemAttr('heatDamageBonus'), **kwargs) class Effect3169(BaseEffect): """ shieldTransportCpuNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'cpu', src.getModifiedItemAttr('shieldTransportCpuNeedBonus'), **kwargs) class Effect3172(BaseEffect): """ droneArmorDamageBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # This is actually level-less bonus, anyway you have to train cruisers 5 # and will get 100% (20%/lvl as stated by description) fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'armorDamageAmount', ship.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs) class Effect3173(BaseEffect): """ droneShieldBonusBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # This is actually level-less bonus, anyway you have to train cruisers 5 # and will get 100% (20%/lvl as stated by description) fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'shieldBonus', ship.getModifiedItemAttr('droneShieldBonusBonus'), **kwargs) class Effect3174(BaseEffect): """ overloadSelfRangeBonus Used by: Modules from group: Stasis Grappler (8 of 8) Modules from group: Stasis Web (19 of 19) Modules from group: Warp Scrambler (56 of 57) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRange', module.getModifiedItemAttr('overloadRangeBonus'), stackingPenalties=True, **kwargs) class Effect3175(BaseEffect): """ overloadSelfSpeedBonus Used by: Modules from group: Propulsion Module (147 of 147) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('speedFactor', module.getModifiedItemAttr('overloadSpeedFactorBonus'), stackingPenalties=True, **kwargs) class Effect3182(BaseEffect): """ overloadSelfECMStrenghtBonus Used by: Modules from group: Burst Jammer (11 of 11) Modules from group: ECM (43 of 43) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{0}StrengthBonus'.format(scanType), module.getModifiedItemAttr('overloadECMStrengthBonus'), stackingPenalties=True, **kwargs) class Effect3196(BaseEffect): """ thermodynamicsSkillDamageBonus Used by: Skill: Thermodynamics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost( lambda mod: 'heatDamage' in mod.item.attributes, 'heatDamage', container.getModifiedItemAttr('thermodynamicsHeatDamage') * level, **kwargs) class Effect3200(BaseEffect): """ overloadSelfArmorDamageAmountDurationBonus Used by: Modules from group: Ancillary Armor Repairer (12 of 12) Modules from group: Armor Repair Unit (105 of 105) Modules from group: Remote Armor Repairer (43 of 43) Modules named like: Remote Armor Repairer (52 of 52) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('armorDamageAmount', module.getModifiedItemAttr('overloadArmorDamageAmount'), stackingPenalties=True, **kwargs) class Effect3201(BaseEffect): """ overloadSelfShieldBonusDurationBonus Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) Modules from group: Ancillary Shield Booster (14 of 14) Modules from group: Remote Shield Booster (42 of 42) Modules from group: Shield Booster (94 of 94) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedItemAttr('overloadSelfDurationBonus')) module.boostItemAttr('shieldBonus', module.getModifiedItemAttr('overloadShieldBonus'), stackingPenalties=True, **kwargs) class Effect3212(BaseEffect): """ missileSkillFoFAoeCloudSizeBonus Used by: Implants named like: Zainou 'Snapshot' Auto Targeting Explosion Radius FR (6 of 6) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs) class Effect3234(BaseEffect): """ shipRocketExplosiveDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3235(BaseEffect): """ shipRocketKineticDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3236(BaseEffect): """ shipRocketThermalDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3237(BaseEffect): """ shipRocketEmDmgAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3241(BaseEffect): """ eliteBonusGunshipArmorEmResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3242(BaseEffect): """ eliteBonusGunshipArmorThermalResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3243(BaseEffect): """ eliteBonusGunshipArmorKineticResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3244(BaseEffect): """ eliteBonusGunshipArmorExplosiveResistance1 Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect3264(BaseEffect): """ skillCapitalIndustrialReconfigurationConsumptionQuantityBonus Used by: Skill: Capital Industrial Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect3267(BaseEffect): """ shipConsumptionQuantityBonusIndustrialReconfigurationORECapital1 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity', ship.getModifiedItemAttr('shipBonusORECapital1'), skill='Capital Industrial Ships', **kwargs) class Effect3297(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAB Used by: Ship: Bhaalgorn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect3298(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAC Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect3299(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAF Used by: Ship: Caedes Ship: Cruor Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect3313(BaseEffect): """ cloneVatMaxJumpCloneBonusSkillNew Used by: Skill: Cloning Facility Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxJumpClones', skill.getModifiedItemAttr('maxJumpClonesBonus') * skill.level, **kwargs) class Effect3331(BaseEffect): """ eliteBonusCommandShipArmorHP1 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect3335(BaseEffect): """ shipArmorEmResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3336(BaseEffect): """ shipArmorExplosiveResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3339(BaseEffect): """ shipArmorKineticResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3340(BaseEffect): """ shipArmorThermalResistanceMC2 Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3343(BaseEffect): """ eliteBonusHeavyInterdictorsProjectileFalloff1 Used by: Ship: Broadsword """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3355(BaseEffect): """ eliteBonusHeavyInterdictorHeavyMissileVelocityBonus1 Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3356(BaseEffect): """ eliteBonusHeavyInterdictorHeavyAssaultMissileVelocityBonus Used by: Ship: Onyx """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3366(BaseEffect): """ shipRemoteSensorDampenerCapNeedGF Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect3367(BaseEffect): """ eliteBonusElectronicAttackShipWarpScramblerMaxRange1 Used by: Ship: Keres Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3369(BaseEffect): """ eliteBonusElectronicAttackShipECMOptimalRange1 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3370(BaseEffect): """ eliteBonusElectronicAttackShipStasisWebMaxRange1 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect3371(BaseEffect): """ eliteBonusElectronicAttackShipWarpScramblerCapNeed2 Used by: Ship: Keres Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3374(BaseEffect): """ eliteBonusElectronicAttackShipSignatureRadius2 Used by: Ship: Hyena """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3379(BaseEffect): """ implantHardwiringABcapacitorNeed Used by: Implants named like: Eifyr and Co. 'Rogue' Fuel Conservation FC (6 of 6) Implants named like: Imperial Mobility Booster (4 of 4) Implants named like: State Mobility Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'capacitorNeed', implant.getModifiedItemAttr('capNeedBonus'), **kwargs) class Effect3380(BaseEffect): """ warpDisruptSphere Used by: Modules from group: Warp Disrupt Field Generator (8 of 8) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' in context: if module.charge is None: return if module.getModifiedItemAttr('warpScrambleRange', 0) < (projectionRange or 0): return if module.charge.ID in (29003, 45010): fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) if module.charge.ID == 45010: fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', 1, **kwargs) else: fit.ship.forceItemAttr('disallowAssistance', 1, **kwargs) if module.charge is not None: return fit.ship.boostItemAttr('mass', module.getModifiedItemAttr('massBonusPercentage'), **kwargs) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedBoostFactor', module.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'speedFactor', module.getModifiedItemAttr('speedFactorBonus'), **kwargs) class Effect3392(BaseEffect): """ eliteBonusBlackOpsLargeEnergyTurretTracking1 Used by: Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect3415(BaseEffect): """ eliteBonusViolatorsLargeEnergyTurretDamageRole1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3416(BaseEffect): """ eliteBonusViolatorsLargeHybridTurretDamageRole1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3417(BaseEffect): """ eliteBonusViolatorsLargeProjectileTurretDamageRole1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect3424(BaseEffect): """ eliteBonusViolatorsLargeHybridTurretTracking1 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3425(BaseEffect): """ eliteBonusViolatorsLargeProjectileTurretTracking1 Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3427(BaseEffect): """ eliteBonusViolatorsTractorBeamMaxRangeRole2 Used by: Ships from group: Marauder (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('eliteBonusViolatorsRole2'), **kwargs) class Effect3439(BaseEffect): """ eliteBonusViolatorsEwTargetPainting1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3447(BaseEffect): """ shipBonusPTFalloffMB1 Used by: Ship: Marshal Ship: Python Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect3466(BaseEffect): """ eliteBonusElectronicAttackShipRechargeRate2 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3467(BaseEffect): """ eliteBonusElectronicAttackShipCapacitorCapacity2 Used by: Ship: Kitsune """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', ship.getModifiedItemAttr('eliteBonusElectronicAttackShip2'), skill='Electronic Attack Ships', **kwargs) class Effect3468(BaseEffect): """ eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2 Used by: Ships from group: Heavy Interdiction Cruiser (6 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator', 'warpScrambleRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors2'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect3473(BaseEffect): """ eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3 Used by: Ships from group: Marauder (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('eliteBonusViolatorsRole3'), **kwargs) class Effect3478(BaseEffect): """ shipLaserDamagePirateBattleship Used by: Ship: Bhaalgorn Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3480(BaseEffect): """ shipTrackingBonusAB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect3483(BaseEffect): """ shipBonusMediumEnergyTurretDamagePirateFaction Used by: Ships named like: Stratios (2 of 2) Ship: Ashimmu Ship: Fiend Ship: Gnosis Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3484(BaseEffect): """ shipBonusMediumEnergyTurretTrackingAC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect3487(BaseEffect): """ shipBonusSmallEnergyTurretDamagePirateFaction Used by: Ship: Caedes Ship: Confessor Ship: Cruor Ship: Imp Ship: Metamorphosis Ship: Succubus Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect3489(BaseEffect): """ shipBonusSmallEnergyTurretTracking2AF Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect3493(BaseEffect): """ rorqualCargoScanRangeBonus Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cargo Scanner', 'cargoScanRange', ship.getModifiedItemAttr('cargoScannerRangeBonus'), **kwargs) class Effect3495(BaseEffect): """ shipCapPropulsionJamming Used by: Ships from group: Interceptor (10 of 10) Ship: Atron Ship: Condor Ship: Executioner Ship: Slasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Stasis Web', 'Warp Scrambler') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', ship.getModifiedItemAttr('eliteBonusInterceptorRole'), **kwargs) class Effect3496(BaseEffect): """ setBonusThukker Used by: Implants named like: grade Nomad (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'agilityBonus', implant.getModifiedItemAttr('implantSetThukker'), **kwargs) class Effect3498(BaseEffect): """ setBonusSisters Used by: Implants named like: grade Virtue (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'scanStrengthBonus', implant.getModifiedItemAttr('implantSetSisters'), **kwargs) class Effect3499(BaseEffect): """ setBonusSyndicate Used by: Implants named like: grade Edge (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'boosterAttributeModifier', implant.getModifiedItemAttr('implantSetSyndicate'), **kwargs) class Effect3513(BaseEffect): """ setBonusMordus Used by: Implants named like: grade Centurion (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'rangeSkillBonus', implant.getModifiedItemAttr('implantSetMordus'), **kwargs) class Effect3514(BaseEffect): """ Interceptor2WarpScrambleRange Used by: Ships from group: Interceptor (6 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect3519(BaseEffect): """ weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringBombLauncher Used by: Skill: Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', skill.getModifiedItemAttr('cpuNeedBonus') * skill.level, **kwargs) class Effect3520(BaseEffect): """ skillAdvancedWeaponUpgradesPowerNeedBonusBombLaunchers Used by: Skill: Advanced Weapon Upgrades """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs) class Effect3526(BaseEffect): """ cynosuralTheoryConsumptionBonus Used by: Ships from group: Force Recon Ship (9 of 10) Ships named like: Venture (2 of 2) Skill: Cynosural Field Theory """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cynosural Field Generator', 'consumptionQuantity', container.getModifiedItemAttr('consumptionQuantityBonusPercentage') * level, **kwargs) class Effect3532(BaseEffect): """ skillJumpDriveConsumptionAmountBonusPercentage Used by: Skill: Jump Fuel Conservation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', skill.getModifiedItemAttr('consumptionQuantityBonusPercentage') * skill.level, **kwargs) class Effect3561(BaseEffect): """ ewSkillTrackingDisruptionTrackingSpeedBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'trackingSpeedBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect3568(BaseEffect): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect3569(BaseEffect): """ eliteBonusLogisticsTrackingLinkMaxRangeBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'maxRangeBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect3570(BaseEffect): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect3571(BaseEffect): """ eliteBonusLogisticsTrackingLinkTrackingSpeedBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'trackingSpeedBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect3586(BaseEffect): """ ewSkillSignalSuppressionScanResolutionBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context else True fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, stackingPenalties=penalized, **kwargs) class Effect3587(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3588(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGF2 Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect3589(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGF2 Used by: Ship: Keres Ship: Maulus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect3590(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusGC2 Used by: Variations of ship: Celestis (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3591(BaseEffect): """ ewSkillSignalSuppressionMaxTargetRangeBonus Used by: Modules named like: Inverted Signal Field Projector (8 of 8) Skill: Signal Suppression """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect3592(BaseEffect): """ eliteBonusJumpFreighterHullHP1 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hp', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3593(BaseEffect): """ eliteBonusJumpFreighterJumpDriveConsumptionAmount2 Used by: Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', ship.getModifiedItemAttr('eliteBonusJumpFreighter2'), skill='Jump Freighters', **kwargs) class Effect3597(BaseEffect): """ scriptSensorBoosterScanResolutionBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) Charges from group: Sensor Dampener Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('scanResolutionBonus', module.getModifiedChargeAttr('scanResolutionBonusBonus'), **kwargs) class Effect3598(BaseEffect): """ scriptSensorBoosterMaxTargetRangeBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) Charges from group: Sensor Dampener Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedChargeAttr('maxTargetRangeBonusBonus'), **kwargs) class Effect3599(BaseEffect): """ scriptTrackingComputerTrackingSpeedBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('trackingSpeedBonus', module.getModifiedChargeAttr('trackingSpeedBonusBonus'), **kwargs) class Effect3600(BaseEffect): """ scriptTrackingComputerMaxRangeBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRangeBonus', module.getModifiedChargeAttr('maxRangeBonusBonus'), **kwargs) class Effect3601(BaseEffect): """ scriptWarpDisruptionFieldGeneratorSetDisallowInEmpireandHazardSpace Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr('disallowInEmpireSpace', module.getModifiedChargeAttr('disallowInEmpireSpace'), **kwargs) module.forceItemAttr('disallowInHazardSystem', module.getModifiedChargeAttr('disallowInHazardSystem'), **kwargs) class Effect3602(BaseEffect): """ scriptDurationBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('duration', module.getModifiedChargeAttr('durationBonus'), **kwargs) class Effect3617(BaseEffect): """ scriptSignatureRadiusBonusBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('signatureRadiusBonus', module.getModifiedChargeAttr('signatureRadiusBonusBonus'), **kwargs) class Effect3648(BaseEffect): """ scriptWarpScrambleRangeBonus Used by: Charges from group: Warp Disruption Script (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('warpScrambleRange', module.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs) class Effect3649(BaseEffect): """ eliteBonusViolatorsLargeEnergyTurretDamage1 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect3650(BaseEffect): """ ewGroupRsdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3651(BaseEffect): """ ewGroupTpMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3652(BaseEffect): """ ewGroupTdMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Weapon Disruptor', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3653(BaseEffect): """ ewGroupEcmBurstMaxRangeBonus Used by: Implants named like: grade Centurion (10 of 12) Implant: Serenity YC122.9 Season Booster - EW Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Projectors', 'maxRange', implant.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect3655(BaseEffect): """ gunneryMaxRangeBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'maxRange', module.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect3656(BaseEffect): """ gunneryTrackingSpeedBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) class Effect3657(BaseEffect): """ shipScanResolutionBonusOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect3659(BaseEffect): """ shipMaxTargetRangeBonusOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect3660(BaseEffect): """ shipMaxLockedTargetsBonusAddOnline Used by: Modules from group: Signal Amplifier (7 of 7) Structure Modules from group: Structure Signal Amplifier (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', module.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect3668(BaseEffect): """ miningLaserRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3669(BaseEffect): """ frequencyMiningLaserMaxRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Frequency Mining Laser', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3670(BaseEffect): """ stripMinerMaxRangeBonus Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Strip Miner', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3671(BaseEffect): """ gasHarvesterMaxRangeBonus Used by: Implants named like: grade Harvest (10 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Gas Cloud Scoops', 'maxRange', implant.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect3672(BaseEffect): """ setBonusOre Used by: Implants named like: grade Harvest (12 of 12) Implant: Serenity YC122.9 Season Booster - Mining Range """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'maxRangeBonus', implant.getModifiedItemAttr('implantSetORE'), **kwargs) class Effect3674(BaseEffect): """ jumpPortalGenerationBO Used by: Module: Covert Jump Portal Generator I """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect3677(BaseEffect): """ shipBonusLargeEnergyTurretMaxRangeAB2 Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect3678(BaseEffect): """ eliteBonusJumpFreighterShieldHP1 Used by: Ship: Nomad Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3679(BaseEffect): """ eliteBonusJumpFreighterArmorHP1 Used by: Ship: Anshar Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('eliteBonusJumpFreighter1'), skill='Jump Freighters', **kwargs) class Effect3680(BaseEffect): """ freighterAgilityBonusC1 Used by: Ship: Rhea """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusC1'), skill='Caldari Freighter', **kwargs) class Effect3681(BaseEffect): """ freighterAgilityBonusM1 Used by: Ship: Nomad """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusM1'), skill='Minmatar Freighter', **kwargs) class Effect3682(BaseEffect): """ freighterAgilityBonusG1 Used by: Ship: Anshar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusG1'), skill='Gallente Freighter', **kwargs) class Effect3683(BaseEffect): """ freighterAgilityBonusA1 Used by: Ship: Ark """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusA1'), skill='Amarr Freighter', **kwargs) class Effect3686(BaseEffect): """ scriptTrackingComputerFalloffBonusBonus Used by: Charges from group: Tracking Disruption Script (2 of 2) Charges from group: Tracking Script (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('falloffBonus', module.getModifiedChargeAttr('falloffBonusBonus'), **kwargs) class Effect3703(BaseEffect): """ shipMissileLauncherSpeedBonusMC2 Used by: Ship: Bellicose """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3705(BaseEffect): """ shipHybridTurretROFBonusGC2 Used by: Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect3706(BaseEffect): """ shipBonusProjectileTrackingMC2 Used by: Ship: Rupture Ship: Stabber Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect3726(BaseEffect): """ agilityMultiplierEffectPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', module.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs) class Effect3727(BaseEffect): """ velocityBonusPassive Used by: Modules named like: Polycarbon Engine Housing (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('implantBonusVelocity'), stackingPenalties=True, **kwargs) class Effect3739(BaseEffect): """ zColinOrcaTractorRangeBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', src.getModifiedItemAttr('roleBonusTractorBeamRange'), **kwargs) class Effect3740(BaseEffect): """ zColinOrcaTractorVelocityBonus Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('roleBonusTractorBeamVelocity'), **kwargs) class Effect3744(BaseEffect): """ miningForemanBurstBonusICS2 Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusICS2'), skill='Industrial Command Ships', **kwargs) class Effect3765(BaseEffect): """ covertOpsStealthBomberSiegeMissileLauncherPowerNeedBonus Used by: Ships from group: Stealth Bomber (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'power', ship.getModifiedItemAttr('stealthBomberLauncherPower'), **kwargs) class Effect3766(BaseEffect): """ interceptorMWDSignatureRadiusBonus Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterceptor'), skill='Interceptors', **kwargs) class Effect3771(BaseEffect): """ armorHPBonusAddPassive Used by: Subsystems from group: Defensive Subsystem (9 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('armorHP', module.getModifiedItemAttr('armorHPBonusAdd') or 0, **kwargs) class Effect3773(BaseEffect): """ hardPointModifierEffect Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('turretSlotsLeft', module.getModifiedItemAttr('turretHardPointModifier'), **kwargs) fit.ship.increaseItemAttr('launcherSlotsLeft', module.getModifiedItemAttr('launcherHardPointModifier'), **kwargs) class Effect3774(BaseEffect): """ slotModifier Used by: Items from category: Subsystem (48 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('hiSlots', module.getModifiedItemAttr('hiSlotModifier'), **kwargs) fit.ship.increaseItemAttr('medSlots', module.getModifiedItemAttr('medSlotModifier'), **kwargs) fit.ship.increaseItemAttr('lowSlots', module.getModifiedItemAttr('lowSlotModifier'), **kwargs) class Effect3782(BaseEffect): """ powerOutputAddPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('powerOutput', module.getModifiedItemAttr('powerOutput'), **kwargs) class Effect3783(BaseEffect): """ cpuOutputAddCpuOutputPassive Used by: Subsystems from group: Offensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('cpuOutput', module.getModifiedItemAttr('cpuOutput'), **kwargs) class Effect3797(BaseEffect): """ droneBandwidthAddPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidth'), **kwargs) class Effect3799(BaseEffect): """ droneCapacityAdddroneCapacityPassive Used by: Subsystems from group: Offensive Subsystem (12 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('droneCapacity', module.getModifiedItemAttr('droneCapacity'), **kwargs) class Effect3807(BaseEffect): """ maxTargetRangeAddPassive Used by: Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRange'), **kwargs) class Effect3808(BaseEffect): """ signatureRadiusAddPassive Used by: Subsystems from group: Defensive Subsystem (8 of 12) Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadius'), **kwargs) class Effect3810(BaseEffect): """ capacityAddPassive Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, subsystem, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacity', subsystem.getModifiedItemAttr('cargoCapacityAdd') or 0, **kwargs) class Effect3811(BaseEffect): """ capacitorCapacityAddPassive Used by: Items from category: Subsystem (20 of 48) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', module.getModifiedItemAttr('capacitorCapacity') or 0, **kwargs) class Effect3831(BaseEffect): """ shieldCapacityAddPassive Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('shieldCapacity', module.getModifiedItemAttr('shieldCapacity'), **kwargs) class Effect3857(BaseEffect): """ subsystemBonusAmarrPropulsionMaxVelocity Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect3859(BaseEffect): """ subsystemBonusCaldariPropulsionMaxVelocity Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect3860(BaseEffect): """ subsystemBonusMinmatarPropulsionMaxVelocity Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3861(BaseEffect): """ subsystemBonusMinmatarPropulsionAfterburnerSpeedFactor Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3863(BaseEffect): """ subsystemBonusCaldariPropulsionAfterburnerSpeedFactor Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect3864(BaseEffect): """ subsystemBonusAmarrPropulsionAfterburnerSpeedFactor Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect3865(BaseEffect): """ subsystemBonusAmarrPropulsion2Agility Used by: Subsystem: Legion Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect3866(BaseEffect): """ subsystemBonusCaldariPropulsion2Agility Used by: Subsystem: Tengu Propulsion - Chassis Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect3867(BaseEffect): """ subsystemBonusGallentePropulsion2Agility Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect3868(BaseEffect): """ subsystemBonusMinmatarPropulsion2Agility Used by: Subsystem: Loki Propulsion - Intercalated Nanofibers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3869(BaseEffect): """ subsystemBonusMinmatarPropulsion2MWDPenalty Used by: Subsystem: Loki Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect3872(BaseEffect): """ subsystemBonusAmarrPropulsion2MWDPenalty Used by: Subsystem: Legion Propulsion - Wake Limiter """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect3875(BaseEffect): """ subsystemBonusGallentePropulsionABMWDCapNeed Used by: Subsystem: Proteus Propulsion - Localized Injectors """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect3893(BaseEffect): """ subsystemBonusMinmatarCoreScanStrengthLADAR Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanLadarStrength', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect3895(BaseEffect): """ subsystemBonusGallenteCoreScanStrengthMagnetometric Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanMagnetometricStrength', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect3897(BaseEffect): """ subsystemBonusCaldariCoreScanStrengthGravimetric Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanGravimetricStrength', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect3900(BaseEffect): """ subsystemBonusAmarrCoreScanStrengthRADAR Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanRadarStrength', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect3959(BaseEffect): """ subsystemBonusAmarrDefensiveArmorRepairAmount Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems', **kwargs) class Effect3961(BaseEffect): """ subsystemBonusGallenteDefensiveArmorRepairAmount Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems', **kwargs) class Effect3962(BaseEffect): """ subsystemBonusMinmatarDefensiveShieldArmorRepairAmount Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) class Effect3964(BaseEffect): """ subsystemBonusCaldariDefensiveShieldBoostAmount Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems', **kwargs) class Effect3976(BaseEffect): """ subsystemBonusCaldariDefensiveShieldHP Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', module.getModifiedItemAttr('subsystemBonusCaldariDefensive'), skill='Caldari Defensive Systems', **kwargs) class Effect3979(BaseEffect): """ subsystemBonusMinmatarDefensiveShieldArmorHP Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive'), skill='Minmatar Defensive Systems', **kwargs) class Effect3980(BaseEffect): """ subsystemBonusGallenteDefensiveArmorHP Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusGallenteDefensive'), skill='Gallente Defensive Systems', **kwargs) class Effect3982(BaseEffect): """ subsystemBonusAmarrDefensiveArmorHP Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', module.getModifiedItemAttr('subsystemBonusAmarrDefensive'), skill='Amarr Defensive Systems', **kwargs) class Effect3992(BaseEffect): """ systemShieldHP Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Republic Stellar Observatory Celestial: State Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs) class Effect3993(BaseEffect): """ systemTargetingRange Used by: Celestials named like: Class Black Hole Effects (6 of 6) Celestials named like: Class Magnetar Effects (6 of 6) Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxTargetRange', beacon.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect3995(BaseEffect): """ systemSignatureRadius Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect3996(BaseEffect): """ systemArmorEmResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3997(BaseEffect): """ systemArmorExplosiveResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3998(BaseEffect): """ systemArmorKineticResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect3999(BaseEffect): """ systemArmorThermalResistance Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestials named like: Incursion Effect (2 of 2) Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4002(BaseEffect): """ systemMissileVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', beacon.getModifiedItemAttr('missileVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4003(BaseEffect): """ systemMaxVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('maxVelocity', beacon.getModifiedItemAttr('maxVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4016(BaseEffect): """ systemDamageMultiplierGunnery Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, **kwargs) class Effect4017(BaseEffect): """ systemDamageThermalMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4018(BaseEffect): """ systemDamageEmMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4019(BaseEffect): """ systemDamageExplosiveMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4020(BaseEffect): """ systemDamageKineticMissiles Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4021(BaseEffect): """ systemDamageDrones Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4022(BaseEffect): """ systemTracking Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4023(BaseEffect): """ systemAoeVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4033(BaseEffect): """ systemHeatDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'heatDamage' in mod.itemModifiedAttributes, 'heatDamage', module.getModifiedItemAttr('heatDamageMultiplier'), **kwargs) class Effect4034(BaseEffect): """ systemOverloadArmor Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadArmorDamageAmount' in mod.itemModifiedAttributes, 'overloadArmorDamageAmount', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4035(BaseEffect): """ systemOverloadDamageModifier Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadDamageModifier' in mod.itemModifiedAttributes, 'overloadDamageModifier', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4036(BaseEffect): """ systemOverloadDurationBonus Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadDurationBonus' in mod.itemModifiedAttributes, 'overloadDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4037(BaseEffect): """ systemOverloadEccmStrength Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadECCMStrenghtBonus' in mod.itemModifiedAttributes, 'overloadECCMStrenghtBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4038(BaseEffect): """ systemOverloadEcmStrength Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadECMStrengthBonus' in mod.itemModifiedAttributes, 'overloadECMStrengthBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4039(BaseEffect): """ systemOverloadHardening Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadHardeningBonus' in mod.itemModifiedAttributes, 'overloadHardeningBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4040(BaseEffect): """ systemOverloadRange Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadRangeBonus' in mod.itemModifiedAttributes, 'overloadRangeBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4041(BaseEffect): """ systemOverloadRof Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadRofBonus' in mod.itemModifiedAttributes, 'overloadRofBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4042(BaseEffect): """ systemOverloadSelfDuration Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadSelfDurationBonus' in mod.itemModifiedAttributes, 'overloadSelfDurationBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4043(BaseEffect): """ systemOverloadShieldBonus Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadShieldBonus' in mod.itemModifiedAttributes, 'overloadShieldBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4044(BaseEffect): """ systemOverloadSpeedFactor Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: 'overloadSpeedFactorBonus' in mod.itemModifiedAttributes, 'overloadSpeedFactorBonus', module.getModifiedItemAttr('overloadBonusMultiplier'), **kwargs) class Effect4045(BaseEffect): """ systemSmartBombRange Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'empFieldRange', module.getModifiedItemAttr('empFieldRangeMultiplier'), **kwargs) class Effect4046(BaseEffect): """ systemSmartBombEmDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'emDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4047(BaseEffect): """ systemSmartBombThermalDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'thermalDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4048(BaseEffect): """ systemSmartBombKineticDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'kineticDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4049(BaseEffect): """ systemSmartBombExplosiveDamage Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Smart Bomb', 'explosiveDamage', module.getModifiedItemAttr('smartbombDamageMultiplier'), **kwargs) class Effect4054(BaseEffect): """ systemSmallEnergyDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4055(BaseEffect): """ systemSmallProjectileDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4056(BaseEffect): """ systemSmallHybridDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect4057(BaseEffect): """ systemRocketEmDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4058(BaseEffect): """ systemRocketExplosiveDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4059(BaseEffect): """ systemRocketKineticDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4060(BaseEffect): """ systemRocketThermalDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4061(BaseEffect): """ systemStandardMissileThermalDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4062(BaseEffect): """ systemStandardMissileEmDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'emDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4063(BaseEffect): """ systemStandardMissileExplosiveDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4086(BaseEffect): """ systemArmorRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4088(BaseEffect): """ systemArmorRemoteRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', module.getModifiedItemAttr('armorDamageAmountMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4089(BaseEffect): """ systemShieldRemoteRepairAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4090(BaseEffect): """ systemCapacitorCapacity Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs) class Effect4091(BaseEffect): """ systemCapacitorRecharge Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) Celestials named like: Class Pulsar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs) class Effect4093(BaseEffect): """ subsystemBonusAmarrOffensiveEnergyWeaponDamageMultiplier Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4104(BaseEffect): """ subsystemBonusCaldariOffensiveHybridWeaponMaxRange Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect4106(BaseEffect): """ subsystemBonusGallenteOffensiveHybridWeaponFalloff Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect4114(BaseEffect): """ subsystemBonusMinmatarOffensiveProjectileWeaponFalloff Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect4115(BaseEffect): """ subsystemBonusMinmatarOffensiveProjectileWeaponMaxRange Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect4122(BaseEffect): """ subsystemBonusCaldariOffensive1LauncherROF Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect4135(BaseEffect): """ systemShieldEmResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4136(BaseEffect): """ systemShieldExplosiveResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4137(BaseEffect): """ systemShieldKineticResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4138(BaseEffect): """ systemShieldThermalResistance Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestials named like: Volatile Ice Storm (2 of 2) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect4152(BaseEffect): """ subsystemBonusAmarrEngineeringHeatDamageReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect4153(BaseEffect): """ subsystemBonusCaldariEngineeringHeatDamageReduction Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect4154(BaseEffect): """ subsystemBonusGallenteEngineeringHeatDamageReduction Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect4155(BaseEffect): """ subsystemBonusMinmatarEngineeringHeatDamageReduction Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', module.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect4158(BaseEffect): """ subsystemBonusCaldariCoreCapacitorCapacity Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusCaldariCore'), skill='Caldari Core Systems', **kwargs) class Effect4159(BaseEffect): """ subsystemBonusAmarrCoreCapacitorCapacity Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacitorCapacity', src.getModifiedItemAttr('subsystemBonusAmarrCore'), skill='Amarr Core Systems', **kwargs) class Effect4161(BaseEffect): """ baseMaxScanDeviationModifierRequiringAstrometrics Used by: Implants named like: Halcyon R Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implant: AIR Astro-Pinpointing II Booster Skill: Astrometric Pinpointing Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('maxScanDeviationModifier') * level, **kwargs) class Effect4162(BaseEffect): """ baseSensorStrengthModifierRequiringAstrometrics Used by: Modules from group: Scan Probe Launcher (5 of 8) Implants named like: Electronics Booster (15 of 15) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3) Implants named like: Poteque 'Prospector' Sharpeye (2 of 2) Implants named like: Serenity Limited 'Sharpeye' Dose (3 of 3) Implants named like: grade Virtue (10 of 12) Modules named like: Gravity Capacitor Upgrade (8 of 8) Implant: AIR Astro-Rangefinding II Booster Implant: Serenity YC122.9 Season Booster - Probe Scanning Strength Skill: Astrometric Rangefinding Skill: Astrometrics """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 penalized = False if 'skill' in context or 'implant' in context or 'booster' in context else True fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('scanStrengthBonus') * level, stackingPenalties=penalized, **kwargs) class Effect4165(BaseEffect): """ shipBonusScanProbeStrengthCF2 Used by: Ships named like: Heron (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4166(BaseEffect): """ shipBonusScanProbeStrengthMF2 Used by: Ships named like: Probe (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4167(BaseEffect): """ shipBonusScanProbeStrengthGF2 Used by: Ships named like: Imicus (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4168(BaseEffect): """ eliteBonusCoverOpsScanProbeStrength2 Used by: Ships from group: Covert Ops (9 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4187(BaseEffect): """ shipBonusStrategicCruiserAmarrHeatDamage Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr1'), skill='Amarr Strategic Cruiser', **kwargs) class Effect4188(BaseEffect): """ shipBonusStrategicCruiserCaldariHeatDamage Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari1'), skill='Caldari Strategic Cruiser', **kwargs) class Effect4189(BaseEffect): """ shipBonusStrategicCruiserGallenteHeatDamage Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente1'), skill='Gallente Strategic Cruiser', **kwargs) class Effect4190(BaseEffect): """ shipBonusStrategicCruiserMinmatarHeatDamage Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar1'), skill='Minmatar Strategic Cruiser', **kwargs) class Effect4215(BaseEffect): """ subsystemBonusAmarrOffensive2EnergyWeaponCapacitorNeed Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', module.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4216(BaseEffect): """ subsystemBonusAmarrCore2EnergyVampireAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4217(BaseEffect): """ subsystemBonusAmarrCore2EnergyDestabilizerAmount Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4248(BaseEffect): """ subsystemBonusCaldariOffensive2MissileLauncherKineticDamage Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4250(BaseEffect): """ subsystemBonusGallenteOffensiveDroneDamageHP Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect4251(BaseEffect): """ subsystemBonusMinmatarOffensive2ProjectileWeaponDamageMultiplier Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4256(BaseEffect): """ subsystemBonusMinmatarOffensive2MissileLauncherROF Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4264(BaseEffect): """ subsystemBonusMinmatarCoreCapacitorRecharge Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusMinmatarCore'), skill='Minmatar Core Systems', **kwargs) class Effect4265(BaseEffect): """ subsystemBonusGallenteCoreCapacitorRecharge Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('rechargeRate', src.getModifiedItemAttr('subsystemBonusGallenteCore'), skill='Gallente Core Systems', **kwargs) class Effect4269(BaseEffect): """ subsystemBonusAmarrCore3ScanResolution Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems', **kwargs) class Effect4270(BaseEffect): """ subsystemBonusMinmatarCore3ScanResolution Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems', **kwargs) class Effect4271(BaseEffect): """ subsystemBonusCaldariCore2MaxTargetingRange Used by: Subsystem: Tengu Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect4272(BaseEffect): """ subsystemBonusGallenteCore2MaxTargetingRange Used by: Subsystem: Proteus Core - Electronic Efficiency Gate """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect4273(BaseEffect): """ subsystemBonusGallenteCore2WarpScrambleRange Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect4274(BaseEffect): """ subsystemBonusMinmatarCore2StasisWebifierRange Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect4275(BaseEffect): """ subsystemBonusCaldariPropulsion2WarpSpeed Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect4277(BaseEffect): """ subsystemBonusGallentePropulsionWarpCapacitor Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect4278(BaseEffect): """ subsystemBonusGallentePropulsion2WarpSpeed Used by: Subsystem: Proteus Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect4280(BaseEffect): """ systemAgility Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('agility', beacon.getModifiedItemAttr('agilityMultiplier'), stackingPenalties=True, **kwargs) class Effect4282(BaseEffect): """ subsystemBonusGallenteOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect4283(BaseEffect): """ subsystemBonusCaldariOffensive2HybridWeaponDamageMultiplier Used by: Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', module.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4286(BaseEffect): """ subsystemBonusAmarrOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4288(BaseEffect): """ subsystemBonusGallenteOffensive2RemoteArmorRepairCapUse Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect4290(BaseEffect): """ subsystemBonusMinmatarOffensive2RemoteRepCapUse Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive2'), skill='Minmatar Offensive Systems', **kwargs) class Effect4292(BaseEffect): """ subsystemBonusCaldariOffensive2RemoteShieldBoosterCapUse Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariOffensive2'), skill='Caldari Offensive Systems', **kwargs) class Effect4321(BaseEffect): """ subsystemBonusCaldariCore2ECMStrengthRange Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect4327(BaseEffect): """ subsystemBonusAmarrOffensive3DroneDamageHP Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect4330(BaseEffect): """ subsystemBonusAmarrOffensive3EnergyWeaponMaxRange Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', module.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect4331(BaseEffect): """ subsystemBonusCaldariOffensive3HMLHAMVelocity Used by: Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems', **kwargs) class Effect4342(BaseEffect): """ subsystemBonusMinmatarCore2MaxTargetingRange Used by: Subsystem: Loki Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect4343(BaseEffect): """ subsystemBonusAmarrCore2MaxTargetingRange Used by: Subsystem: Legion Core - Dissolution Sequencer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect4347(BaseEffect): """ subsystemBonusGallenteOffensive3TurretTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector Subsystem: Proteus Offensive - Hybrid Encoding Platform """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems', **kwargs) class Effect4351(BaseEffect): """ subsystemBonusMinmatarOffensive3TurretTracking Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', module.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect4358(BaseEffect): """ ecmRangeBonusModuleEffect Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'maxRange', module.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True, **kwargs) class Effect4360(BaseEffect): """ subsystemBonusAmarrOffensiveMissileLauncherROF Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4362(BaseEffect): """ subsystemBonusAmarrOffensive2MissileDamage Used by: Subsystem: Legion Offensive - Assault Optimization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('subsystemBonusAmarrOffensive2'), skill='Amarr Offensive Systems', **kwargs) class Effect4366(BaseEffect): """ shipBonusMediumHybridDmgCC2 Used by: Ship: Falcon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect4370(BaseEffect): """ caldariShipEwFalloffRangeCC2 Used by: Ship: Blackbird """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect4372(BaseEffect): """ caldariShipEwFalloffRangeCB3 Used by: Ship: Scorpion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect4373(BaseEffect): """ subSystemBonusAmarrOffensiveCommandBursts Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusAmarrOffensive'), skill='Amarr Offensive Systems', **kwargs) class Effect4377(BaseEffect): """ shipBonusTorpedoVelocityGF2 Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4378(BaseEffect): """ shipBonusTorpedoVelocityMF2 Used by: Ship: Hound """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4379(BaseEffect): """ shipBonusTorpedoVelocity2AF Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4380(BaseEffect): """ shipBonusTorpedoVelocityCF2 Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4384(BaseEffect): """ eliteReconBonusHeavyMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect4385(BaseEffect): """ eliteReconBonusHeavyAssaultMissileVelocity Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect4393(BaseEffect): """ shipBonusEliteCover2TorpedoThermalDamage Used by: Ship: Nemesis Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4394(BaseEffect): """ shipBonusEliteCover2TorpedoEMDamage Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4395(BaseEffect): """ shipBonusEliteCover2TorpedoExplosiveDamage Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4396(BaseEffect): """ shipBonusEliteCover2TorpedoKineticDamage Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusCovertOps2'), skill='Covert Ops', **kwargs) class Effect4398(BaseEffect): """ shipBonusMF1TorpedoExplosionVelocity Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4413(BaseEffect): """ shipBonusGF1TorpedoFlightTime Used by: Ship: Nemesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect4415(BaseEffect): """ shipBonusMF1TorpedoFlightTime Used by: Ship: Hound Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4416(BaseEffect): """ shipBonusCF1TorpedoFlightTime Used by: Ship: Manticore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect4417(BaseEffect): """ shipBonusAF1TorpedoFlightTime Used by: Ship: Purifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect4451(BaseEffect): """ ScanRadarStrengthModifierEffect Used by: Implants named like: Low grade Grail (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanRadarStrength', implant.getModifiedItemAttr('scanRadarStrengthModifier'), **kwargs) class Effect4452(BaseEffect): """ ScanLadarStrengthModifierEffect Used by: Implants named like: Low grade Jackal (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanLadarStrength', implant.getModifiedItemAttr('scanLadarStrengthModifier'), **kwargs) class Effect4453(BaseEffect): """ ScanGravimetricStrengthModifierEffect Used by: Implants named like: Low grade Talon (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanGravimetricStrength', implant.getModifiedItemAttr('scanGravimetricStrengthModifier'), **kwargs) class Effect4454(BaseEffect): """ ScanMagnetometricStrengthModifierEffect Used by: Implants named like: Low grade Spur (5 of 6) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('scanMagnetometricStrength', implant.getModifiedItemAttr('scanMagnetometricStrengthModifier'), **kwargs) class Effect4456(BaseEffect): """ federationsetbonus3 Used by: Implants named like: High grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthPercent', implant.getModifiedItemAttr('implantSetFederationNavy'), **kwargs) class Effect4457(BaseEffect): """ imperialsetbonus3 Used by: Implants named like: High grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthPercent', implant.getModifiedItemAttr('implantSetImperialNavy'), **kwargs) class Effect4458(BaseEffect): """ republicsetbonus3 Used by: Implants named like: High grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthPercent', implant.getModifiedItemAttr('implantSetRepublicFleet'), **kwargs) class Effect4459(BaseEffect): """ caldarisetbonus3 Used by: Implants named like: High grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthPercent', implant.getModifiedItemAttr('implantSetCaldariNavy'), **kwargs) class Effect4460(BaseEffect): """ imperialsetLGbonus Used by: Implants named like: Low grade Grail (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanRadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGImperialNavy'), **kwargs) class Effect4461(BaseEffect): """ federationsetLGbonus Used by: Implants named like: Low grade Spur (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanMagnetometricStrengthModifier', implant.getModifiedItemAttr('implantSetLGFederationNavy'), **kwargs) class Effect4462(BaseEffect): """ caldarisetLGbonus Used by: Implants named like: Low grade Talon (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanGravimetricStrengthModifier', implant.getModifiedItemAttr('implantSetLGCaldariNavy'), **kwargs) class Effect4463(BaseEffect): """ republicsetLGbonus Used by: Implants named like: Low grade Jackal (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'scanLadarStrengthModifier', implant.getModifiedItemAttr('implantSetLGRepublicFleet'), **kwargs) class Effect4464(BaseEffect): """ shipProjectileRofMF Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), stackingPenalties=True, skill='Minmatar Frigate', **kwargs) class Effect4471(BaseEffect): """ shipBonusStasisMF2 Used by: Ship: Caedes Ship: Cruor Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4472(BaseEffect): """ shipProjectileDmgMC Used by: Ship: Mimir Ship: Rupture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect4473(BaseEffect): """ shipVelocityBonusATC1 Used by: Ship: Adrestia Ship: Cybele Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4474(BaseEffect): """ shipMTMaxRangeBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4475(BaseEffect): """ shipMTFalloffBonusATC Used by: Ship: Mimir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4476(BaseEffect): """ shipMTFalloffBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4477(BaseEffect): """ shipMTMaxRangeBonusATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4478(BaseEffect): """ shipBonusAfterburnerCapNeedATF Used by: Ship: Freki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Propulsion Module', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4479(BaseEffect): """ shipBonusSurveyProbeExplosionDelaySkillSurveyCovertOps3 Used by: Ships from group: Covert Ops (6 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Survey Probe', 'explosionDelay', ship.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect4482(BaseEffect): """ shipETOptimalRange2AF Used by: Ship: Imperial Navy Slicer Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4484(BaseEffect): """ shipPTurretFalloffBonusGB Used by: Ship: Machariel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect4485(BaseEffect): """ shipBonusStasisWebSpeedFactorMB Used by: Ship: Vindicator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect4489(BaseEffect): """ superWeaponAmarr Used by: Module: 'Judgment' Electromagnetic Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4490(BaseEffect): """ superWeaponCaldari Used by: Module: 'Oblivion' Kinetic Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4491(BaseEffect): """ superWeaponGallente Used by: Module: 'Aurora Ominae' Thermal Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4492(BaseEffect): """ superWeaponMinmatar Used by: Module: 'Gjallarhorn' Explosive Doomsday """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect4510(BaseEffect): """ shipStasisWebStrengthBonusMC2 Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect4512(BaseEffect): """ shipPTurretFalloffBonusGC Used by: Ship: Cynabal Ship: Moracha """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect4513(BaseEffect): """ shipStasisWebStrengthBonusMF2 Used by: Ship: Daredevil Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect4515(BaseEffect): """ shipFalloffBonusMF Used by: Ship: Chremoas Ship: Dramiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect4516(BaseEffect): """ shipHTurretFalloffBonusGC Used by: Ship: Victor Ship: Vigilant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect4527(BaseEffect): """ gunneryFalloffBonusOnline Used by: Modules from group: Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), 'falloff', module.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) class Effect4555(BaseEffect): """ capitalLauncherSkillCruiseCitadelEmDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4556(BaseEffect): """ capitalLauncherSkillCruiseCitadelExplosiveDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4557(BaseEffect): """ capitalLauncherSkillCruiseCitadelKineticDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4558(BaseEffect): """ capitalLauncherSkillCruiseCitadelThermalDamage1 Used by: Skill: XL Cruise Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect4559(BaseEffect): """ gunneryMaxRangeFalloffTrackingSpeedBonus Used by: Modules from group: Tracking Computer (11 of 11) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff', 'trackingSpeed'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), attr, module.getModifiedItemAttr('%sBonus' % attr), stackingPenalties=True, **kwargs) class Effect4575(BaseEffect): """ industrialCoreEffect2 Used by: Variations of module: Capital Industrial Core I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs) fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) # Remote Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'maxRange', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('industrialCoreRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('industrialCoreRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) # Local Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mining Burst Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) # Command Burst Range Bonus fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'), stackingPenalties=True, **kwargs) # Drone Bonuses fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) # Remote impedance (no reps, etc) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) class Effect4576(BaseEffect): """ eliteBonusLogisticsTrackingLinkFalloffBonus1 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect4577(BaseEffect): """ eliteBonusLogisticsTrackingLinkFalloffBonus2 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Tracking Computer', 'falloffBonus', ship.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect4579(BaseEffect): """ droneRigStasisWebSpeedFactorBonus Used by: Modules named like: Stasis Drone Augmentor (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Stasis Webifying Drone', 'speedFactor', module.getModifiedItemAttr('webSpeedFactorBonus'), **kwargs) class Effect4619(BaseEffect): """ shipBonusDroneDamageGF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4620(BaseEffect): """ shipBonusWarpScramblerMaxRangeGF2 Used by: Ship: Garmur Ship: Shapash Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4621(BaseEffect): """ shipBonusHeatDamageATF1 Used by: Ship: Cambion Ship: Etana Ship: Shapash Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4622(BaseEffect): """ shipBonusSmallHybridMaxRangeATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4623(BaseEffect): """ shipBonusSmallHybridTrackingSpeedATF2 Used by: Ship: Utu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4624(BaseEffect): """ shipBonusHybridTrackingATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4625(BaseEffect): """ shipBonusHybridFalloffATC2 Used by: Ship: Adrestia """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect4626(BaseEffect): """ shipBonusWarpScramblerMaxRangeGC2 Used by: Ship: Adrestia Ship: Cybele Ship: Orthrus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect4635(BaseEffect): """ eliteBonusMaraudersCruiseAndTorpedoDamageRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect4636(BaseEffect): """ shipBonusAoeVelocityCruiseAndTorpedoCB2 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect4637(BaseEffect): """ shipCruiseAndTorpedoVelocityBonusCB3 Used by: Ship: Golem Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect4640(BaseEffect): """ shipArmorEMAndExpAndkinAndThmResistanceAC2 Used by: Ships named like: Stratios (2 of 2) Ship: Sacrilege Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect4643(BaseEffect): """ shipHeavyAssaultMissileEMAndExpAndKinAndThmDmgAC1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect4645(BaseEffect): """ eliteBonusHeavyGunshipHeavyAndHeavyAssaultAndAssaultMissileLauncherROF Used by: Ship: Bestla Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault', 'Missile Launcher Heavy') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect4648(BaseEffect): """ eliteBonusBlackOpsECMGravAndLadarAndMagnetometricAndRadarStrength1 Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar') for type in sensorTypes: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect4649(BaseEffect): """ shipCruiseAndSiegeLauncherROFBonus2CB Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): affectedGroups = ('Missile Launcher Cruise', 'Missile Launcher Torpedo') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in affectedGroups, 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect4667(BaseEffect): """ shipBonusNoctisSalvageCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Hauler', **kwargs) class Effect4668(BaseEffect): """ shipBonusNoctisTractorCycle Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'duration', ship.getModifiedItemAttr('shipBonusOreIndustrial1'), skill='ORE Hauler', **kwargs) class Effect4669(BaseEffect): """ shipBonusNoctisTractorVelocity Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxTractorVelocity', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Hauler', **kwargs) class Effect4670(BaseEffect): """ shipBonusNoctisTractorRange Used by: Ship: Noctis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Tractor Beam', 'maxRange', ship.getModifiedItemAttr('shipBonusOreIndustrial2'), skill='ORE Hauler', **kwargs) class Effect4728(BaseEffect): """ OffensiveDefensiveReduction Used by: Celestials named like: Drifter Incursion (6 of 6) Celestials named like: Sansha Incursion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): damages = ('em', 'thermal', 'kinetic', 'explosive') for damage in damages: # Nerf missile damage fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), '{0}Damage'.format(damage), beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf smartbomb damage fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Smart Bomb', '{0}Damage'.format(damage), beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf armor resistances fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('armor{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs) # Nerf shield resistances fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damage.capitalize()), beacon.getModifiedItemAttr('shield{0}DamageResistanceBonus'.format(damage.capitalize())), **kwargs) # Nerf drone damage output fit.drones.filteredItemBoost(lambda drone: True, 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) # Nerf turret damage output fit.modules.filteredItemBoost(lambda module: module.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('systemEffectDamageReduction'), **kwargs) class Effect4760(BaseEffect): """ subsystemBonusCaldariPropulsionWarpCapacitor Used by: Subsystem: Tengu Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion'), skill='Caldari Propulsion Systems', **kwargs) class Effect4775(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4782(BaseEffect): """ shipBonusSmallEnergyWeaponOptimalRangeATF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4789(BaseEffect): """ shipBonusSmallEnergyTurretDamageATF1 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusATF1'), **kwargs) class Effect4793(BaseEffect): """ shipBonusMissileLauncherHeavyROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4794(BaseEffect): """ shipBonusMissileLauncherAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Light', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4795(BaseEffect): """ shipBonusMissileLauncherHeavyAssaultROFATC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusATC1'), **kwargs) class Effect4799(BaseEffect): """ eliteBonusBlackOpsECMBurstGravAndLadarAndMagnetoAndRadar Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): sensorTypes = ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar') for type in sensorTypes: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect4804(BaseEffect): """ dataMiningSkillBoostAccessDifficultyBonusAbsolutePercent Used by: Skill: Archaeology Skill: Hacking Skill: Salvaging """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill(skill), 'accessDifficultyBonus', skill.getModifiedItemAttr('accessDifficultyBonusAbsolutePercent') * skill.level, **kwargs) class Effect4809(BaseEffect): """ ecmGravimetricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanGravimetricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4810(BaseEffect): """ ecmLadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanLadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4811(BaseEffect): """ ecmMagnetometricStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanMagnetometricStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4812(BaseEffect): """ ecmRadarStrengthBonusPercent Used by: Modules from group: ECM Stabilizer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scanRadarStrengthBonus', module.getModifiedItemAttr('ecmStrengthBonusPercent'), stackingPenalties=True, **kwargs) class Effect4814(BaseEffect): """ jumpPortalConsumptionBonusPercentSkill Used by: Skill: Jump Portal Generation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', skill.getModifiedItemAttr('consumptionQuantityBonusPercent') * skill.level, **kwargs) class Effect4817(BaseEffect): """ salvagerModuleDurationReduction Used by: Implants named like: Electronics Booster (15 of 15) Implant: Poteque 'Prospector' Environmental Analysis EY-1005 """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Salvager', 'duration', implant.getModifiedItemAttr('durationBonus'), **kwargs) class Effect4820(BaseEffect): """ bcLargeEnergyTurretPowerNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4821(BaseEffect): """ bcLargeHybridTurretPowerNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4822(BaseEffect): """ bcLargeProjectileTurretPowerNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'power', ship.getModifiedItemAttr('bcLargeTurretPower'), **kwargs) class Effect4823(BaseEffect): """ bcLargeEnergyTurretCPUNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4824(BaseEffect): """ bcLargeHybridTurretCPUNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4825(BaseEffect): """ bcLargeProjectileTurretCPUNeedBonus Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'cpu', ship.getModifiedItemAttr('bcLargeTurretCPU'), **kwargs) class Effect4826(BaseEffect): """ bcLargeEnergyTurretCapacitorNeedBonus Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs) class Effect4827(BaseEffect): """ bcLargeHybridTurretCapacitorNeedBonus Used by: Ship: Naga Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'capacitorNeed', ship.getModifiedItemAttr('bcLargeTurretCap'), **kwargs) class Effect4867(BaseEffect): """ setBonusChristmasPowergrid Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'powerEngineeringOutputBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4868(BaseEffect): """ setBonusChristmasCapacitorCapacity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capacitorCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4869(BaseEffect): """ setBonusChristmasCPUOutput Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'cpuOutputBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4871(BaseEffect): """ setBonusChristmasCapacitorRecharge2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'capRechargeBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect4896(BaseEffect): """ shipBonusDroneHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4897(BaseEffect): """ shipBonusDroneArmorHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4898(BaseEffect): """ shipBonusDroneShieldHitpointsGF2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4901(BaseEffect): """ shipMissileSpeedBonusAF Used by: Ship: Vengeance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect4902(BaseEffect): """ MWDSignatureRadiusRoleBonus Used by: Ships from group: Assault Frigate (10 of 15) Ships from group: Command Destroyer (6 of 6) Ships from group: Heavy Assault Cruiser (9 of 14) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('MWDSignatureRadiusBonus'), **kwargs) class Effect4906(BaseEffect): """ systemDamageFighters Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4911(BaseEffect): """ modifyShieldRechargeRatePassive Used by: Modules named like: Processor Overclocking Unit (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', module.getModifiedItemAttr('shieldRechargeRateMultiplier'), **kwargs) class Effect4921(BaseEffect): """ microJumpDrive Used by: Modules named like: Micro Jump Drive (6 of 6) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), **kwargs) class Effect4923(BaseEffect): """ skillMJDdurationBonus Used by: Skill: Micro Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect4928(BaseEffect): """ adaptiveArmorHardener Used by: Modules from group: Armor Resistance Shift Hardener (2 of 2) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # pyfalog = Logger(__name__) damagePattern = module.rahPatternOverride if module.rahPatternOverride is not None else fit.damagePattern # pyfalog.debug('==============================') if damagePattern == 'disable': for attr in ('armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance', 'armorExplosiveDamageResonance'): fit.ship.multiplyItemAttr(attr, module.getModifiedItemAttr(attr), stackingPenalties=True, penaltyGroup='preMul') return # Skip if there is no damage pattern. Example: projected ships or fleet boosters if damagePattern: # Populate a tuple with the damage profile modified by current armor resists. baseDamageTaken = ( damagePattern.emAmount * fit.ship.getModifiedItemAttr('armorEmDamageResonance'), damagePattern.thermalAmount * fit.ship.getModifiedItemAttr('armorThermalDamageResonance'), damagePattern.kineticAmount * fit.ship.getModifiedItemAttr('armorKineticDamageResonance'), damagePattern.explosiveAmount * fit.ship.getModifiedItemAttr('armorExplosiveDamageResonance'), ) # pyfalog.debug('Damage Adjusted for Armor Resists: %f/%f/%f/%f' % (baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3])) resistanceShiftAmount = module.getModifiedItemAttr( 'resistanceShiftAmount') / 100 # The attribute is in percent and we want a fraction RAHResistance = [ module.getModifiedItemAttr('armorEmDamageResonance'), module.getModifiedItemAttr('armorThermalDamageResonance'), module.getModifiedItemAttr('armorKineticDamageResonance'), module.getModifiedItemAttr('armorExplosiveDamageResonance'), ] # Simulate RAH cycles until the RAH either stops changing or enters a loop. # The number of iterations is limited to prevent an infinite loop if something goes wrong. cycleList = [] loopStart = -20 for num in range(50): # pyfalog.debug('Starting cycle %d.' % num) # The strange order is to emulate the ingame sorting when different types have taken the same amount of damage. # This doesn't take into account stacking penalties. In a few cases fitting a Damage Control causes an inaccurate result. damagePattern_tuples = [ (0, baseDamageTaken[0] * RAHResistance[0], RAHResistance[0]), (3, baseDamageTaken[3] * RAHResistance[3], RAHResistance[3]), (2, baseDamageTaken[2] * RAHResistance[2], RAHResistance[2]), (1, baseDamageTaken[1] * RAHResistance[1], RAHResistance[1]), ] # Sort the tuple to drop the highest damage value to the bottom sortedDamagePattern_tuples = sorted(damagePattern_tuples, key=lambda damagePattern: damagePattern[1]) if sortedDamagePattern_tuples[2][1] == 0: # One damage type: the top damage type takes from the other three # Since the resistances not taking damage will end up going to the type taking damage we just do the whole thing at once. change0 = 1 - sortedDamagePattern_tuples[0][2] change1 = 1 - sortedDamagePattern_tuples[1][2] change2 = 1 - sortedDamagePattern_tuples[2][2] change3 = -(change0 + change1 + change2) elif sortedDamagePattern_tuples[1][1] == 0: # Two damage types: the top two damage types take from the other two # Since the resistances not taking damage will end up going equally to the types taking damage we just do the whole thing at once. change0 = 1 - sortedDamagePattern_tuples[0][2] change1 = 1 - sortedDamagePattern_tuples[1][2] change2 = -(change0 + change1) / 2 change3 = -(change0 + change1) / 2 else: # Three or four damage types: the top two damage types take from the other two change0 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[0][2]) change1 = min(resistanceShiftAmount, 1 - sortedDamagePattern_tuples[1][2]) change2 = -(change0 + change1) / 2 change3 = -(change0 + change1) / 2 RAHResistance[sortedDamagePattern_tuples[0][0]] = sortedDamagePattern_tuples[0][2] + change0 RAHResistance[sortedDamagePattern_tuples[1][0]] = sortedDamagePattern_tuples[1][2] + change1 RAHResistance[sortedDamagePattern_tuples[2][0]] = sortedDamagePattern_tuples[2][2] + change2 RAHResistance[sortedDamagePattern_tuples[3][0]] = sortedDamagePattern_tuples[3][2] + change3 # pyfalog.debug('Resistances shifted to %f/%f/%f/%f' % ( RAHResistance[0], RAHResistance[1], RAHResistance[2], RAHResistance[3])) # See if the current RAH profile has been encountered before, indicating a loop. for i, val in enumerate(cycleList): tolerance = 1e-06 if abs(RAHResistance[0] - val[0]) <= tolerance and \ abs(RAHResistance[1] - val[1]) <= tolerance and \ abs(RAHResistance[2] - val[2]) <= tolerance and \ abs(RAHResistance[3] - val[3]) <= tolerance: loopStart = i # pyfalog.debug('Loop found: %d-%d' % (loopStart, num)) break if loopStart >= 0: break cycleList.append(list(RAHResistance)) # if loopStart < 0: # pyfalog.error('Reactive Armor Hardener failed to find equilibrium. Damage profile after armor: {0}/{1}/{2}/{3}'.format( # baseDamageTaken[0], baseDamageTaken[1], baseDamageTaken[2], baseDamageTaken[3])) # Average the profiles in the RAH loop, or the last 20 if it didn't find a loop. loopCycles = cycleList[loopStart:] numCycles = len(loopCycles) average = [0, 0, 0, 0] for cycle in loopCycles: for i in range(4): average[i] += cycle[i] for i in range(4): average[i] = round(average[i] / numCycles, 3) # Set the new resistances # pyfalog.debug('Setting new resist profile: %f/%f/%f/%f' % ( average[0], average[1], average[2],average[3])) for i, attr in enumerate(( 'armorEmDamageResonance', 'armorThermalDamageResonance', 'armorKineticDamageResonance', 'armorExplosiveDamageResonance')): module.increaseItemAttr(attr, average[i] - module.getModifiedItemAttr(attr)) fit.ship.multiplyItemAttr(attr, average[i], stackingPenalties=True, penaltyGroup='preMul', **kwargs) class Effect4934(BaseEffect): """ shipArmorRepairingGF2 Used by: Ship: Incursus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect4936(BaseEffect): """ fueledShieldBoosting Used by: Modules from group: Ancillary Shield Booster (14 of 14) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): amount = module.getModifiedItemAttr('shieldBonus') speed = module.getModifiedItemAttr('duration') / 1000.0 fit.extraAttributes.increase('shieldRepair', amount / speed, **kwargs) class Effect4941(BaseEffect): """ shipHybridDamageBonusCF2 Used by: Ship: Griffin Navy Issue Ship: Merlin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect4945(BaseEffect): """ skillTargetBreakerDurationBonus2 Used by: Skill: Signature Masking """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Signature Suppressor', 'durationHighisGood', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect4950(BaseEffect): """ shipBonusShieldBoosterMB1a Used by: Ship: Maelstrom """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect4951(BaseEffect): """ shieldBoostAmplifierPassiveBooster Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Blue Pill Booster (5 of 5) Implants named like: Halcyon R Booster (5 of 5) Implant: AIR Hardshell Booster II Implant: Antipharmakon Thureo """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', container.getModifiedItemAttr('shieldBoostMultiplier'), **kwargs) class Effect4961(BaseEffect): """ systemShieldRepairAmountShieldSkills Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', module.getModifiedItemAttr('shieldBonusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect4967(BaseEffect): """ shieldBoosterDurationBonusShieldSkills Used by: Modules named like: Core Defense Operational Solidifier (8 of 8) Implant: AIR Repairer Booster III """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'duration', module.getModifiedItemAttr('durationSkillBonus'), **kwargs) class Effect4970(BaseEffect): """ boosterShieldBoostAmountPenaltyShieldSkills Used by: Implants named like: Crash Booster (3 of 4) Implants named like: Frentix Booster (3 of 4) Implants named like: Mindflood Booster (3 of 4) """ attr = 'boosterShieldBoostAmountPenalty' displayName = 'Shield Boost' type = 'boosterSideEffect' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('boosterShieldBoostAmountPenalty'), **kwargs) class Effect4972(BaseEffect): """ eliteBonusAssaultShipLightMissileROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Light', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect4973(BaseEffect): """ eliteBonusAssaultShipRocketROF Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect4974(BaseEffect): """ eliteBonusMarauderShieldBonus2a Used by: Ship: Golem Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect4975(BaseEffect): """ shipBonusMissileKineticlATF2 Used by: Ship: Cambion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusATF2'), **kwargs) class Effect4976(BaseEffect): """ skillReactiveArmorHardenerDurationBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect4989(BaseEffect): """ missileSkillAoeCloudSizeBonusAllIncludingCapitals Used by: Implants named like: Crash Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', implant.getModifiedItemAttr('aoeCloudSizeBonus'), **kwargs) class Effect4990(BaseEffect): """ shipEnergyTCapNeedBonusRookie Used by: Ship: Hematos Ship: Impairor Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('rookieSETCapBonus'), **kwargs) class Effect4991(BaseEffect): """ shipSETDmgBonusRookie Used by: Ship: Hematos Ship: Immolator Ship: Impairor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSETDamageBonus'), **kwargs) class Effect4994(BaseEffect): """ shipArmorEMResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4995(BaseEffect): """ shipArmorEXResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4996(BaseEffect): """ shipArmorKNResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4997(BaseEffect): """ shipArmorTHResistanceRookie Used by: Ship: Devoter Ship: Gold Magnate Ship: Impairor Ship: Phobos Ship: Silver Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('rookieArmorResistanceBonus'), **kwargs) class Effect4999(BaseEffect): """ shipHybridRangeBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSHTOptimalBonus'), **kwargs) class Effect5000(BaseEffect): """ shipMissileKineticDamageRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('rookieMissileKinDamageBonus'), **kwargs) class Effect5008(BaseEffect): """ shipShieldEMResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5009(BaseEffect): """ shipShieldExplosiveResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5011(BaseEffect): """ shipShieldKineticResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5012(BaseEffect): """ shipShieldThermalResistanceRookie Used by: Ships from group: Heavy Interdiction Cruiser (4 of 6) Ship: Ibis Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('rookieShieldResistBonus'), **kwargs) class Effect5013(BaseEffect): """ shipSHTDmgBonusRookie Used by: Ship: Velator Ship: Violator Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSHTDamageBonus'), **kwargs) class Effect5014(BaseEffect): """ shipBonusDroneDamageMultiplierRookie Used by: Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5015(BaseEffect): """ shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxTargetRangeBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs) class Effect5016(BaseEffect): """ shipBonusEwRemoteSensorDampenerScanResolutionBonusRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'scanResolutionBonus', ship.getModifiedItemAttr('rookieDampStrengthBonus'), **kwargs) class Effect5017(BaseEffect): """ shipArmorRepairingRookie Used by: Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('rookieArmorRepBonus'), **kwargs) class Effect5018(BaseEffect): """ shipVelocityBonusRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', ship.getModifiedItemAttr('rookieShipVelocityBonus'), **kwargs) class Effect5019(BaseEffect): """ minmatarShipEwTargetPainterRookie Used by: Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('rookieTargetPainterStrengthBonus'), **kwargs) class Effect5020(BaseEffect): """ shipSPTDmgBonusRookie Used by: Ship: Echo Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('rookieSPTDamageBonus'), **kwargs) class Effect5021(BaseEffect): """ shipShieldBoostRookie Used by: Ship: Immolator Ship: Reaper """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('rookieShieldBoostBonus'), **kwargs) class Effect5028(BaseEffect): """ shipECMScanStrengthBonusRookie Used by: Ship: Ibis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('Gravimetric', 'Ladar', 'Radar', 'Magnetometric'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'scan{0}StrengthBonus'.format(type), ship.getModifiedItemAttr('rookieECMStrengthBonus'), **kwargs) class Effect5030(BaseEffect): """ shipBonusMiningDroneAmountPercentRookie Used by: Ship: Gnosis Ship: Praxis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', container.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5035(BaseEffect): """ shipBonusDroneHitpointsRookie Used by: Ship: Gnosis Ship: Praxis Ship: Sunesis Ship: Taipan Ship: Velator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), type, ship.getModifiedItemAttr('rookieDroneBonus'), **kwargs) class Effect5036(BaseEffect): """ shipBonusSalvageCycleAF Used by: Ship: Magnate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5045(BaseEffect): """ shipBonusSalvageCycleCF Used by: Ship: Heron """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5048(BaseEffect): """ shipBonusSalvageCycleGF Used by: Ship: Imicus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusGF'), skill='Amarr Frigate', **kwargs) class Effect5051(BaseEffect): """ shipBonusSalvageCycleMF Used by: Ship: Probe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Salvaging'), 'duration', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5058(BaseEffect): """ miningYieldMultiplyPassive Used by: Ships named like: Venture (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningAmountMultiplier'), **kwargs) class Effect5066(BaseEffect): """ shipBonusTargetPainterOptimalMF1 Used by: Ship: Hyena Ship: Vigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Target Painting'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5067(BaseEffect): """ miningBargeBonusGeneralMiningHoldCapacity Used by: Variations of ship: Retriever (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('miningBargeBonusGeneralMiningHoldCapacity'), skill='Mining Barge', **kwargs) class Effect5068(BaseEffect): """ miningBargeBonusShieldCapacity Used by: Variations of ship: Procurer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('miningBargeBonusShieldCapacity'), skill='Mining Barge', **kwargs) class Effect5069(BaseEffect): """ deepcoreMiningBonus Used by: Module: Medium Deep Core Mining Optimization I """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Mercoxit Ore Processing'), 'specializationAsteroidYieldMultiplier', module.getModifiedItemAttr('miningAmountBonus'), **kwargs) class Effect5079(BaseEffect): """ shipMissileKineticDamageCF2 Used by: Ship: Garmur Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5080(BaseEffect): """ shipMissileVelocityCF Used by: Ship: Caldari Navy Hookbill Ship: Crow Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5081(BaseEffect): """ maxTargetingRangeBonusPostPercentPassive Used by: Modules named like: Ionic Field Projector (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) class Effect5087(BaseEffect): """ shipBonusDroneHitpointsGF Used by: Ship: Astero Ship: Imicus Navy Issue Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5090(BaseEffect): """ shipShieldBoostMF Used by: Ship: Breacher Ship: Geri Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5103(BaseEffect): """ shipBonusShieldTransferCapNeedCF Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect5104(BaseEffect): """ shipBonusShieldTransferBoostAmountCF2 Used by: Variations of ship: Bantam (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5105(BaseEffect): """ shipBonusShieldTransferCapNeedMF Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5106(BaseEffect): """ shipBonusShieldTransferBoostAmountMF2 Used by: Variations of ship: Burst (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5107(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedGF Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5108(BaseEffect): """ shipBonusRemoteArmorRepairAmountGF2 Used by: Variations of ship: Navitas (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect5109(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedAF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5110(BaseEffect): """ shipBonusRemoteArmorRepairAmount2AF Used by: Ship: Deacon Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5111(BaseEffect): """ shipBonusDroneTrackingGF Used by: Ship: Imicus Navy Issue Ship: Maulus Navy Issue Ship: Tristan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5119(BaseEffect): """ shipBonusScanProbeStrength2AF Used by: Ship: Magnate Ship: Magnate Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Scanner Probe', 'baseSensorStrength', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5121(BaseEffect): """ energyTransferArrayTransferAmountBonus Used by: Ship: Augoror Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', ship.getModifiedItemAttr('energyTransferAmountBonus'), **kwargs) class Effect5122(BaseEffect): """ shipBonusShieldTransferCapneedMC1 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect5123(BaseEffect): """ shipBonusRemoteArmorRepairCapNeedAC1 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5124(BaseEffect): """ shipBonusRemoteArmorRepairAmountAC2 Used by: Ship: Augoror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5125(BaseEffect): """ shipBonusRemoteArmorRepairAmountGC2 Used by: Ship: Exequror """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5126(BaseEffect): """ shipBonusShieldTransferBoostAmountCC2 Used by: Ship: Osprey """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5127(BaseEffect): """ shipBonusShieldTransferBoostAmountMC2 Used by: Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5128(BaseEffect): """ shipBonusEwRemoteSensorDampenerOptimalBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'maxRange', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5129(BaseEffect): """ minmatarShipEwTargetPainterMC1 Used by: Ship: Bellicose Ship: Rapier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect5131(BaseEffect): """ shipMissileRofCC Used by: Ships named like: Caracal (2 of 2) Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'speed', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5132(BaseEffect): """ shipPTurretFalloffBonusMC2 Used by: Ship: Cobra Ship: Enforcer Ship: Stabber """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5133(BaseEffect): """ shipHTDamageBonusCC Used by: Ship: Moa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5136(BaseEffect): """ shipMETCDamageBonusAC Used by: Ship: Augoror Navy Issue Ship: Cobra Ship: Enforcer Ship: Maller Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5139(BaseEffect): """ miningFrigateBonusOreMiningYield Used by: Variations of ship: Venture (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', module.getModifiedItemAttr('miningFrigatesBonusOreMiningYield'), skill='Mining Frigate', **kwargs) class Effect5153(BaseEffect): """ shipMissileVelocityPirateFactionRocket Used by: Ship: Corax Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5162(BaseEffect): """ skillReactiveArmorHardenerCapNeedBonus Used by: Skill: Resistance Phasing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Resistance Shift Hardener', 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Resistance Phasing'), 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus') * lvl, **kwargs) class Effect5165(BaseEffect): """ shipBonusDroneMWDboostrole Used by: Ship: Algos Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5168(BaseEffect): """ droneSalvageBonus Used by: Skill: Salvage Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemIncrease( lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus', container.getModifiedItemAttr('accessDifficultyBonus') * container.level, **kwargs) class Effect5180(BaseEffect): """ sensorCompensationSensorStrengthBonusGravimetric Used by: Skill: Gravimetric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanGravimetricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5181(BaseEffect): """ sensorCompensationSensorStrengthBonusLadar Used by: Skill: Ladar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanLadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5182(BaseEffect): """ sensorCompensationSensorStrengthBonusMagnetometric Used by: Skill: Magnetometric Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanMagnetometricStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5183(BaseEffect): """ sensorCompensationSensorStrengthBonusRadar Used by: Skill: Radar Sensor Compensation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanRadarStrength', container.getModifiedItemAttr('sensorStrengthBonus') * container.level, **kwargs) class Effect5185(BaseEffect): """ shipEnergyVampireAmountBonusFixedAF2 Used by: Ship: Malice """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5187(BaseEffect): """ shipBonusEwRemoteSensorDampenerFalloffBonusGC1 Used by: Ship: Celestis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Sensor Dampener', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5188(BaseEffect): """ trackingSpeedBonusEffectHybrids Used by: Implants named like: Federation Application Booster (4 of 4) Implants named like: State Application Booster (4 of 4) Modules named like: Hybrid Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Hybrid Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalize, **kwargs) class Effect5189(BaseEffect): """ trackingSpeedBonusEffectLasers Used by: Implants named like: Imperial Application Booster (4 of 4) Modules named like: Energy Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalties = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalties, **kwargs) class Effect5190(BaseEffect): """ trackingSpeedBonusEffectProjectiles Used by: Implants named like: Republic Application Booster (4 of 4) Modules named like: Projectile Metastasis Adjuster (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): penalize = 'booster' not in context fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Projectile Weapon', 'trackingSpeed', module.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=penalize, **kwargs) class Effect5201(BaseEffect): """ armorUpgradesMassPenaltyReductionBonus Used by: Skills named like: Armor Layering (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', container.getModifiedItemAttr('massPenaltyReduction') * level, **kwargs) class Effect5205(BaseEffect): """ shipSETTrackingBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSETTracking'), **kwargs) class Effect5206(BaseEffect): """ shipSETOptimalBonusRookie Used by: Ship: Immolator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSETOptimal'), **kwargs) class Effect5207(BaseEffect): """ shipNOSTransferAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('rookieNosDrain'), **kwargs) class Effect5208(BaseEffect): """ shipNeutDestabilizationAmountBonusRookie Used by: Ship: Hematos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('rookieNeutDrain'), **kwargs) class Effect5209(BaseEffect): """ shipWebVelocityBonusRookie Used by: Ship: Hematos Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', ship.getModifiedItemAttr('rookieWebAmount'), **kwargs) class Effect5212(BaseEffect): """ shipDroneMWDSpeedBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: True, 'maxVelocity', ship.getModifiedItemAttr('rookieDroneMWDspeed'), **kwargs) class Effect5213(BaseEffect): """ shipRocketMaxVelocityBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', ship.getModifiedItemAttr('rookieRocketVelocity'), stackingPenalties=penalties, **kwargs) class Effect5214(BaseEffect): """ shipLightMissileMaxVelocityBonusRookie Used by: Ship: Taipan """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', ship.getModifiedItemAttr('rookieLightMissileVelocity'), stackingPenalties=penalties, **kwargs) class Effect5215(BaseEffect): """ shipSHTTrackingSpeedBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSHTTracking'), **kwargs) class Effect5216(BaseEffect): """ shipSHTFalloffBonusRookie Used by: Ship: Violator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('rookieSHTFalloff'), **kwargs) class Effect5217(BaseEffect): """ shipSPTTrackingSpeedBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('rookieSPTTracking'), **kwargs) class Effect5218(BaseEffect): """ shipSPTFalloffBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('rookieSPTFalloff'), **kwargs) class Effect5219(BaseEffect): """ shipSPTOptimalRangeBonusRookie Used by: Ship: Echo """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('rookieSPTOptimal'), **kwargs) class Effect5220(BaseEffect): """ shipProjectileDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5221(BaseEffect): """ shipHeavyAssaultMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5222(BaseEffect): """ shipHeavyAssaultMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5223(BaseEffect): """ shipHeavyAssaultMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5224(BaseEffect): """ shipHeavyAssaultMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5225(BaseEffect): """ shipHeavyMissileEMDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5226(BaseEffect): """ shipHeavyMissileExpDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5227(BaseEffect): """ shipHeavyMissileKinDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5228(BaseEffect): """ shipHeavyMissileThermDmgPirateCruiser Used by: Ship: Gnosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5229(BaseEffect): """ shipScanProbeStrengthBonusPirateCruiser Used by: Ships named like: Stratios (2 of 2) Ship: Astero Ship: Gnosis Ship: Odysseus Ship: Praxis Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect5230(BaseEffect): """ modifyActiveShieldResonancePostPercent Used by: Modules from group: Flex Shield Hardener (5 of 5) Modules from group: Shield Hardener (103 of 103) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield' + damageType.capitalize() + 'DamageResonance', module.getModifiedItemAttr(damageType + 'DamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect5231(BaseEffect): """ modifyActiveArmorResonancePostPercent Used by: Modules from group: Armor Hardener (148 of 148) Modules from group: Flex Armor Hardener (4 of 4) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for damageType in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType.capitalize(), module.getModifiedItemAttr('%sDamageResistanceBonus' % damageType), stackingPenalties=True, **kwargs) class Effect5234(BaseEffect): """ shipSmallMissileExpDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5237(BaseEffect): """ shipSmallMissileKinDmgCF2 Used by: Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5240(BaseEffect): """ shipSmallMissileThermDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5243(BaseEffect): """ shipSmallMissileEMDmgCF2 Used by: Ship: Caldari Navy Hookbill Ship: Kestrel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5259(BaseEffect): """ reconShipCloakCpuBonus1 Used by: Ships from group: Force Recon Ship (7 of 10) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect5260(BaseEffect): """ covertOpsCloakCpuPercentBonus1 Used by: Ships from group: Covert Ops (6 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect5261(BaseEffect): """ CovertCloakCPUAddition Used by: Modules named like: Covert Ops Cloaking Device II (2 of 2) Module: Covert Cynosural Field Generator I """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('covertCloakCPUAdd') or 0, **kwargs) class Effect5262(BaseEffect): """ covertOpsCloakCpuPenalty Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cloaking'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs) class Effect5263(BaseEffect): """ covertCynoCpuPenalty Used by: Subsystems from group: Defensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Cynosural Field Theory'), 'covertCloakCPUAdd', module.getModifiedItemAttr('covertCloakCPUPenalty'), **kwargs) class Effect5264(BaseEffect): """ warfareLinkCPUAddition Used by: Modules from group: Command Burst (18 of 18) Modules from group: Gang Coordinator (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('warfareLinkCPUAdd') or 0, **kwargs) class Effect5265(BaseEffect): """ warfareLinkCpuPenalty Used by: Subsystems from group: Offensive Subsystem (8 of 12) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'warfareLinkCPUAdd', module.getModifiedItemAttr('warfareLinkCPUPenalty'), **kwargs) class Effect5266(BaseEffect): """ blockadeRunnerCloakCpuPercentBonus Used by: Ships from group: Blockade Runner (5 of 5) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('eliteIndustrialCovertCloakBonus'), skill='Transport Ships', **kwargs) class Effect5267(BaseEffect): """ drawbackRepairSystemsPGNeed Used by: Modules named like: Auxiliary Nano Pump (6 of 8) Modules named like: Nanobot Accelerator (6 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5268(BaseEffect): """ drawbackCapRepPGNeed Used by: Variations of module: Capital Auxiliary Nano Pump I (2 of 2) Variations of module: Capital Nanobot Accelerator I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'power', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5275(BaseEffect): """ fueledArmorRepair Used by: Modules from group: Ancillary Armor Repairer (12 of 12) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if module.charge and module.charge.name == 'Nanite Repair Paste': multiplier = 3 else: multiplier = 1 amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier speed = module.getModifiedItemAttr('duration') / 1000.0 rps = amount / speed fit.extraAttributes.increase('armorRepair', rps, **kwargs) fit.extraAttributes.increase('armorRepairPreSpool', rps, **kwargs) fit.extraAttributes.increase('armorRepairFullSpool', rps, **kwargs) class Effect5293(BaseEffect): """ shipLaserCapNeed2AD1 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5294(BaseEffect): """ shipLaserTracking2AD2 Used by: Ship: Coercer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect5295(BaseEffect): """ shipBonusDroneDamageMultiplierAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5300(BaseEffect): """ shipBonusDroneHitpointsAD1 Used by: Variations of ship: Dragoon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5303(BaseEffect): """ shipHybridRange1CD1 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5304(BaseEffect): """ shipHybridTrackingCD2 Used by: Ship: Cormorant """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5305(BaseEffect): """ shipBonusFrigateSizedMissileKineticDamageCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5306(BaseEffect): """ shipRocketKineticDmgCD1 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5307(BaseEffect): """ shipBonusAoeVelocityRocketsCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5308(BaseEffect): """ shipBonusAoeVelocityStandardMissilesCD2 Used by: Ship: Corax """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect5309(BaseEffect): """ shipHybridFallOff1GD1 Used by: Ship: Catalyst """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5310(BaseEffect): """ shipHybridTracking1GD2 Used by: Ship: Algos Ship: Catalyst Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect5311(BaseEffect): """ shipBonusDroneDamageMultiplierGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5316(BaseEffect): """ shipBonusDroneHitpointsGD1 Used by: Variations of ship: Algos (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect5317(BaseEffect): """ shipProjectileDamageMD1 Used by: Ship: Sabre Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5318(BaseEffect): """ shipProjectileTracking1MD2 Used by: Ship: Sabre Ship: Thrasher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect5319(BaseEffect): """ shipBonusFrigateSizedLightMissileExplosiveDamageMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5320(BaseEffect): """ shipRocketExplosiveDmgMD1 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect5321(BaseEffect): """ shipBonusMWDSignatureRadiusMD2 Used by: Ship: Talwar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect5322(BaseEffect): """ shipArmorEMResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5323(BaseEffect): """ shipArmorExplosiveResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5324(BaseEffect): """ shipArmorKineticResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5325(BaseEffect): """ shipArmorThermResistance1ABC1 Used by: Ship: Absolution Ship: Damnation Ship: Prophecy """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5326(BaseEffect): """ shipBonusDroneDamageMultiplierABC2 Used by: Ships named like: Prophecy (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5331(BaseEffect): """ shipBonusDroneHitpointsABC2 Used by: Ships named like: Prophecy (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5332(BaseEffect): """ shipLaserCapABC1 Used by: Ship: Harbinger """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5333(BaseEffect): """ shipLaserDamageBonusABC2 Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5334(BaseEffect): """ shipHybridOptimal1CBC1 Used by: Ship: Ferox Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5335(BaseEffect): """ shipShieldEmResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5336(BaseEffect): """ shipShieldExplosiveResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5337(BaseEffect): """ shipShieldKineticResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5338(BaseEffect): """ shipShieldThermalResistance1CBC2 Used by: Ship: Drake Ship: Nighthawk Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5339(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5340(BaseEffect): """ shipBonusHeavyMissileKineticDamageCBC1 Used by: Ship: Drake Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5341(BaseEffect): """ shipHybridDmg1GBC1 Used by: Variations of ship: Brutix (3 of 3) Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5342(BaseEffect): """ shipArmorRepairing1GBC2 Used by: Ships named like: Myrmidon (2 of 2) Ship: Astarte Ship: Brutix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5343(BaseEffect): """ shipBonusDroneDamageMultiplierGBC1 Used by: Ships named like: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5348(BaseEffect): """ shipBonusDroneHitpointsGBC1 Used by: Ships named like: Myrmidon (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5349(BaseEffect): """ shipBonusHeavyMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5350(BaseEffect): """ shipBonusHeavyAssaultMissileLauncherRofMBC2 Used by: Variations of ship: Cyclone (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5351(BaseEffect): """ shipShieldBoost1MBC1 Used by: Ship: Cyclone Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5352(BaseEffect): """ shipBonusProjectileDamageMBC1 Used by: Ships named like: Hurricane (2 of 2) Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5353(BaseEffect): """ shipProjectileRof1MBC2 Used by: Ship: Hurricane """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5354(BaseEffect): """ shipLargeLaserCapABC1 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5355(BaseEffect): """ shipLargeLaserDamageBonusABC2 Used by: Ship: Oracle """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5356(BaseEffect): """ shipHybridRangeBonusCBC1 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5357(BaseEffect): """ shipHybridDamageBonusCBC2 Used by: Ship: Naga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect5358(BaseEffect): """ shipLargeHybridTrackingBonusGBC1 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect5359(BaseEffect): """ shipHybridDamageBonusGBC2 Used by: Ship: Talos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5360(BaseEffect): """ shipProjectileRofBonusMBC1 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect5361(BaseEffect): """ shipProjectileFalloffBonusMBC2 Used by: Ship: Tornado """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5364(BaseEffect): """ armorAllRepairSystemsAmountBonusPassive Used by: Implants named like: Agency 'Hardshell' TB Dose (4 of 4) Implants named like: Exile Booster (4 of 4) Implants named like: Halcyon R Booster (5 of 5) Implant: AIR Hardshell Booster II Implant: Antipharmakon Kosybo Implant: Wisdom of Gheinok """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', booster.getModifiedItemAttr('armorDamageAmountBonus') or 0, **kwargs) class Effect5365(BaseEffect): """ eliteBonusViolatorsRepairSystemsArmorDamageAmount2 Used by: Ships from group: Marauder (3 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect5366(BaseEffect): """ shipBonusRepairSystemsBonusATC2 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusATC2'), **kwargs) class Effect5367(BaseEffect): """ shipBonusRepairSystemsArmorRepairAmountGB2 Used by: Ship: Hyperion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5378(BaseEffect): """ shipHeavyMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5379(BaseEffect): """ shipHeavyAssaultMissileAOECloudSizeCBC1 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect5380(BaseEffect): """ shipHybridTrackingGBC2 Used by: Ship: Brutix Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect5381(BaseEffect): """ shipEnergyTrackingABC1 Used by: Ship: Harbinger Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect5382(BaseEffect): """ shipBonusMETOptimalAC2 Used by: Ship: Cobra Ship: Enforcer Ship: Omen Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5383(BaseEffect): """ shipMissileEMDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5384(BaseEffect): """ shipMissileThermDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5385(BaseEffect): """ shipMissileExpDamageCC Used by: Ship: Laelaps Ship: Orthrus Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect5386(BaseEffect): """ shipMissileKinDamageCC2 Used by: Ship: Rook """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5387(BaseEffect): """ shipHeavyAssaultMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5388(BaseEffect): """ shipHeavyMissileAOECloudSizeCC2 Used by: Ship: Caracal Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5397(BaseEffect): """ baseMaxScanDeviationModifierModuleOnline2None Used by: Variations of module: Scan Pinpointing Array I (3 of 3) Module: Triplot Scan Acquisition Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', module.getModifiedItemAttr('maxScanDeviationModifierModule'), stackingPenalties=True, **kwargs) class Effect5398(BaseEffect): """ systemScanDurationModuleModifier Used by: Modules from group: Scanning Upgrade Time (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Astrometrics'), 'duration', module.getModifiedItemAttr('scanDurationBonus'), **kwargs) class Effect5399(BaseEffect): """ baseSensorStrengthModifierModule Used by: Variations of module: Scan Rangefinding Array I (3 of 3) Module: Triplot Scan Acquisition Array """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', module.getModifiedItemAttr('scanStrengthBonusModule'), stackingPenalties=True, **kwargs) class Effect5402(BaseEffect): """ shipMissileHeavyAssaultVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5403(BaseEffect): """ shipMissileHeavyVelocityABC2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5410(BaseEffect): """ shipLaserCap1ABC2 Used by: Ship: Absolution """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC2'), skill='Amarr Battlecruiser', **kwargs) class Effect5411(BaseEffect): """ shipMissileVelocityCD1 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect5417(BaseEffect): """ shipBonusDroneDamageMultiplierAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5418(BaseEffect): """ shipBonusDroneArmorHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5419(BaseEffect): """ shipBonusDroneShieldHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5420(BaseEffect): """ shipBonusDroneStructureHitPointsAB Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5424(BaseEffect): """ shipLargeHybridTurretRofGB Used by: Ship: Megathron Ship: Megathron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5427(BaseEffect): """ shipBonusDroneTrackingGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5428(BaseEffect): """ shipBonusDroneOptimalRangeGB Used by: Ship: Dominix """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5429(BaseEffect): """ shipBonusMissileAoeVelocityMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect5430(BaseEffect): """ shipBonusAoeVelocityCruiseMissilesMB2 Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect5433(BaseEffect): """ hackingSkillVirusBonus Used by: Implants named like: Halcyon B Booster (5 of 5) Modules named like: Memetic Algorithm Bank (8 of 8) Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Implant: Poteque 'Prospector' Hacking HC-905 Skill: Hacking """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs) class Effect5437(BaseEffect): """ archaeologySkillVirusBonus Used by: Implants named like: Halcyon Y Booster (5 of 5) Modules named like: Emission Scope Sharpener (8 of 8) Implant: Poteque 'Prospector' Archaeology AC-905 Implant: Poteque 'Prospector' Environmental Analysis EY-1005 Skill: Archaeology """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'), 'virusCoherence', container.getModifiedItemAttr('virusCoherenceBonus') * level, **kwargs) class Effect5440(BaseEffect): """ systemStandardMissileKineticDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'kineticDamage', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5444(BaseEffect): """ shipTorpedoAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5445(BaseEffect): """ shipCruiseMissileAOECloudSize1CB Used by: Ship: Raven Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5456(BaseEffect): """ shipCruiseMissileROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5457(BaseEffect): """ shipTorpedoROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5459(BaseEffect): """ hackingVirusStrengthBonus Used by: Implant: Neural Lace 'Blackglass' Net Intrusion 920-40 Implant: Neural Lace 'Bluefire' Net Ablation 960-10 """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusStrength', src.getModifiedItemAttr('virusStrengthBonus'), **kwargs) class Effect5460(BaseEffect): """ minigameVirusStrengthBonus Used by: Ships from group: Covert Ops (8 of 9) Ships named like: Stratios (2 of 2) Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Variations of ship: Heron (3 of 3) Variations of ship: Imicus (3 of 3) Variations of ship: Magnate (3 of 5) Variations of ship: Probe (3 of 3) Ship: Astero Ship: Metamorphosis Ship: Nestor Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemIncrease( lambda mod: (mod.item.requiresSkill('Hacking') or mod.item.requiresSkill('Archaeology')), 'virusStrength', container.getModifiedItemAttr('virusStrengthBonus') * level, **kwargs) class Effect5461(BaseEffect): """ shieldOperationRechargeratebonusPostPercentOnline Used by: Modules from group: Shield Power Relay (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldRechargeRate', module.getModifiedItemAttr('rechargeratebonus') or 0, **kwargs) class Effect5468(BaseEffect): """ shipBonusAgilityCI2 Used by: Ship: Badger """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Hauler' penalties = False else: skill = None penalties = True fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusCI2'), skill=skill, stackingPenalties=penalties, **kwargs) class Effect5469(BaseEffect): """ shipBonusAgilityMI2 Used by: Ship: Wreathe """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5470(BaseEffect): """ shipBonusAgilityGI2 Used by: Ship: Nereus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5471(BaseEffect): """ shipBonusAgilityAI2 Used by: Ship: Sigil """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Hauler', **kwargs) class Effect5477(BaseEffect): """ shipBonusAmmoBayMI2 Used by: Ship: Hoarder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialAmmoHoldCapacity', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5478(BaseEffect): """ shipBonusPICommoditiesHoldGI2 Used by: Ship: Epithal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialPlanetaryCommoditiesHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5479(BaseEffect): """ shipBonusMineralBayGI2 Used by: Ship: Kryos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('specialMineralHoldCapacity', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5480(BaseEffect): """ setBonusChristmasBonusVelocity Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'implantBonusVelocity', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5482(BaseEffect): """ setBonusChristmasAgilityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'agilityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5483(BaseEffect): """ setBonusChristmasShieldCapacityBonus Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'shieldCapacityBonus', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5484(BaseEffect): """ setBonusChristmasArmorHPBonus2 Used by: Implants named like: Genolution Core Augmentation CA (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Special Edition Implant', 'armorHpBonus2', implant.getModifiedItemAttr('implantSetChristmas'), **kwargs) class Effect5485(BaseEffect): """ shipSPTOptimalBonusMF Used by: Ship: Chremoas """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect5486(BaseEffect): """ shipBonusProjectileDamageMBC2 Used by: Ship: Sleipnir """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect5496(BaseEffect): """ eliteBonusCommandShipHAMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy Assault', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5497(BaseEffect): """ eliteBonusCommandShipHMRoFCS1 Used by: Ship: Claymore Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Heavy', 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5499(BaseEffect): """ eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5500(BaseEffect): """ eliteBonusCommandShipsHeavyMissileExplosionRadiusCS2 Used by: Ship: Nighthawk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5501(BaseEffect): """ eliteBonusCommandShipMediumHybridDamageCS2 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5505(BaseEffect): """ eliteBonusCommandShipMediumHybridRoFCS1 Used by: Ship: Astarte """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect5514(BaseEffect): """ eliteBonusCommandShipHeavyAssaultMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5521(BaseEffect): """ eliteBonusCommandShipHeavyMissileDamageCS2 Used by: Ship: Damnation """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for damageType in damageTypes: fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect5539(BaseEffect): """ shipBonusHMLKineticDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5540(BaseEffect): """ shipBonusHMLEMDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5541(BaseEffect): """ shipBonusHMLThermDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5542(BaseEffect): """ shipBonusHMLExploDamageAC Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect5552(BaseEffect): """ shipBonusHMLVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect5553(BaseEffect): """ shipBonusHAMVelocityEliteBonusHeavyGunship1 Used by: Ship: Sacrilege """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect5554(BaseEffect): """ shipBonusArmorRepAmountGC2 Used by: Ship: Deimos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5555(BaseEffect): """ shipBonusHeavyDroneSpeedGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5556(BaseEffect): """ shipBonusHeavyDRoneTrackingGC Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5557(BaseEffect): """ shipBonusSentryDroneOptimalRangeEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect5558(BaseEffect): """ shipBonusSentryDroneTrackingEliteBonusHeavyGunship2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect5559(BaseEffect): """ shipBonusShieldBoostAmountMC2 Used by: Ship: Vagabond """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect5560(BaseEffect): """ roleBonusMarauderMJDRReactivationDelayBonus Used by: Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'moduleReactivationDelay', ship.getModifiedItemAttr('roleBonusMarauder'), stackingPenalties=penalties, **kwargs) class Effect5564(BaseEffect): """ subSystemBonusCaldariOffensiveCommandBursts Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusCaldariOffensive'), skill='Caldari Offensive Systems', **kwargs) class Effect5568(BaseEffect): """ subSystemBonusGallenteOffensiveCommandBursts Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command')), attrName, src.getModifiedItemAttr('subsystemBonusGallenteOffensive'), skill='Gallente Offensive Systems', **kwargs) class Effect5570(BaseEffect): """ subSystemBonusMinmatarOffensiveCommandBursts Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: (mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Armored Command')), attrName, src.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect5572(BaseEffect): """ eliteBonusCommandShipArmoredCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5573(BaseEffect): """ eliteBonusCommandShipSiegeCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5574(BaseEffect): """ eliteBonusCommandShipSkirmishCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5575(BaseEffect): """ eliteBonusCommandShipInformationCS3 Used by: Ships from group: Command Ship (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandShips3'), skill='Command Ships', **kwargs) class Effect5607(BaseEffect): """ capacitorEmissionSystemskill Used by: Implants named like: Inherent Implants 'Squire' Capacitor Emission Systems ES (6 of 6) Modules named like: Egress Port Maximizer (8 of 8) Skill: Capacitor Emission Systems """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', container.getModifiedItemAttr('capNeedBonus') * level, **kwargs) class Effect5610(BaseEffect): """ shipBonusLargeEnergyTurretMaxRangeAB Used by: Ship: Marshal Ship: Paladin Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect5611(BaseEffect): """ shipBonusHTFalloffGB2 Used by: Ship: Kronos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5618(BaseEffect): """ shipBonusRHMLROF2CB Used by: Ship: Raven Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): if 'ship' in context: skill = 'Caldari Battleship' penalties = False penaltyGroup = None else: skill = None penalties = True penaltyGroup = 'postPerc' fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonus2CB'), skill=skill, stackingPenalties=penalties, penaltyGroup=penaltyGroup, **kwargs) class Effect5619(BaseEffect): """ shipBonusRHMLROFCB Used by: Ship: Scorpion Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5620(BaseEffect): """ shipBonusRHMLROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5621(BaseEffect): """ shipBonusCruiseROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5622(BaseEffect): """ shipBonusTorpedoROFMB Used by: Ship: Typhoon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5628(BaseEffect): """ shipBonusCruiseMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5629(BaseEffect): """ shipBonusCruiseMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5630(BaseEffect): """ shipBonusCruiseMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5631(BaseEffect): """ shipBonusCruiseMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5632(BaseEffect): """ shipBonusTorpedoMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5633(BaseEffect): """ shipBonusTorpedoMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5634(BaseEffect): """ shipBonusTorpedoMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5635(BaseEffect): """ shipBonusTorpedoMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5636(BaseEffect): """ shipBonusHeavyMissileEMDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5637(BaseEffect): """ shipBonusHeavyMissileThermDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5638(BaseEffect): """ shipBonusHeavyMissileKineticDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5639(BaseEffect): """ shipBonusHeavyMissileExploDmgMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect5644(BaseEffect): """ shipBonusMissileVelocityCC2 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5647(BaseEffect): """ covertOpsCloakCPUPercentRoleBonus Used by: Ships from group: Expedition Frigate (2 of 2) Ships from group: Special Edition Yachts (4 of 5) Ship: Astero Ship: Cenotaph Ship: Cobra Ship: Enforcer Ship: Pacifier Ship: Sidewinder Ship: Tholos Ship: Victor Ship: Virtuoso """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5650(BaseEffect): """ shipArmorResistanceAF1 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('armor{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5657(BaseEffect): """ Interceptor2ShieldResist Used by: Ship: Raptor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr('shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect5673(BaseEffect): """ interceptor2ProjectileDamage Used by: Ship: Claw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusInterceptor2'), skill='Interceptors', **kwargs) class Effect5695(BaseEffect): """ eliteBonusInterdictorsArmorResist1 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('Em', 'Thermal', 'Explosive', 'Kinetic'): fit.ship.boostItemAttr('armor%sDamageResonance' % damageType, ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect5717(BaseEffect): """ implantSetWarpSpeed Used by: Implants named like: grade Ascendancy (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.group.name == 'Cyberimplant', 'WarpSBonus', implant.getModifiedItemAttr('implantSetWarpSpeed'), **kwargs) class Effect5721(BaseEffect): """ shipBonusMETOptimalRangePirateFaction Used by: Ships named like: Stratios (2 of 2) Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5723(BaseEffect): """ eliteBonusInterdictorsMWDSigRadius2 Used by: Ships from group: Interdictor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusInterdictors2'), skill='Interdictors', **kwargs) class Effect5724(BaseEffect): """ shipSHTOptimalBonusGF Used by: Ship: Ares """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5725(BaseEffect): """ shipBonusRemoteRepairAmountPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5726(BaseEffect): """ shipBonusLETOptimalRangePirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5733(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageExpRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5734(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageKinRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5735(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageEMRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5736(BaseEffect): """ eliteBonusMaraudersHeavyMissileDamageThermRole1 Used by: Ship: Golem """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('eliteBonusViolatorsRole1'), **kwargs) class Effect5737(BaseEffect): """ shipScanProbeStrengthBonusPirateFaction Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5738(BaseEffect): """ shipBonusRemoteRepairRangePirateFaction2 Used by: Ship: Nestor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect5754(BaseEffect): """ overloadSelfTrackingModuleBonus Used by: Modules named like: Tracking Computer (19 of 19) Variations of module: Tracking Disruptor I (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxRangeBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) module.boostItemAttr('falloffBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) module.boostItemAttr('trackingSpeedBonus', module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect5757(BaseEffect): """ overloadSelfSensorModuleBonus Used by: Modules from group: Remote Sensor Booster (8 of 8) Modules from group: Sensor Booster (16 of 16) Modules from group: Sensor Dampener (6 of 6) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxTargetRangeBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), **kwargs) module.boostItemAttr('scanResolutionBonus', module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True, **kwargs) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr( 'scan{}StrengthPercent'.format(scanType), module.getModifiedItemAttr('overloadSensorModuleStrengthBonus'), stackingPenalties=True, **kwargs) class Effect5758(BaseEffect): """ overloadSelfPainterBonus Used by: Modules from group: Target Painter (9 of 9) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('signatureRadiusBonus', module.getModifiedItemAttr('overloadPainterStrengthBonus') or 0, **kwargs) class Effect5769(BaseEffect): """ repairDroneHullBonusBonus Used by: Implants named like: Black Market 'Valdimar' Repair Drone Operation DR (3 of 3) Modules named like: Drone Repair Augmentor (8 of 8) Skill: Repair Drone Operation """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount', container.getModifiedItemAttr('damageHP') * level, **kwargs) class Effect5778(BaseEffect): """ shipMissileRoFMF2 Used by: Ship: Breacher Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5779(BaseEffect): """ shipBonusSPTFalloffMF2 Used by: Ship: Pacifier Ship: Rifter Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect5793(BaseEffect): """ ewSkillTrackingDisruptionRangeDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 for attr in ('maxRangeBonus', 'falloffBonus'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attr, container.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect5802(BaseEffect): """ shipBonusAfterburnerSpeedFactor2CB Used by: Ship: Nightmare """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect5803(BaseEffect): """ shipBonusSentryDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5804(BaseEffect): """ shipBonusHeavyDroneDamageMultiplierPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5805(BaseEffect): """ shipBonusSentryDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5806(BaseEffect): """ shipBonusSentryDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5807(BaseEffect): """ shipBonusSentryDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5808(BaseEffect): """ shipBonusHeavyDroneShieldHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5809(BaseEffect): """ shipBonusHeavyDroneArmorHpPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5810(BaseEffect): """ shipBonusHeavyDroneHPPirateFaction Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5811(BaseEffect): """ shipBonusKineticMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5812(BaseEffect): """ shipBonusThermalMissileDamageGB2 Used by: Ship: Rattlesnake """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect5813(BaseEffect): """ shipBonusAfterburnerSpeedFactorCF2 Used by: Ship: Imp Ship: Succubus """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect5814(BaseEffect): """ shipBonusKineticMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5815(BaseEffect): """ shipBonusThermalMissileDamageGF Used by: Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect5816(BaseEffect): """ shipBonusLightDroneDamageMultiplierPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5817(BaseEffect): """ shipBonusLightDroneHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5818(BaseEffect): """ shipBonusLightDroneArmorHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5819(BaseEffect): """ shipBonusLightDroneShieldHPPirateFaction Used by: Ship: Mamba Ship: Whiptail Ship: Worm """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5820(BaseEffect): """ shipBonusAfterburnerSpeedFactorCC2 Used by: Ship: Fiend Ship: Phantasm """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', module.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect5821(BaseEffect): """ shipBonusMediumDroneDamageMultiplierPirateFaction Used by: Ship: Alligator Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5822(BaseEffect): """ shipBonusMediumDroneHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5823(BaseEffect): """ shipBonusMediumDroneArmorHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5824(BaseEffect): """ shipBonusMediumDroneShieldHPPirateFaction Used by: Ship: Chameleon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect5825(BaseEffect): """ shipBonusKineticMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5826(BaseEffect): """ shipBonusThermalMissileDamageGC2 Used by: Ship: Chameleon Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect5827(BaseEffect): """ shipBonusTDOptimalBonusAF1 Used by: Ship: Crucifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', ship.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect5852(BaseEffect): """ expeditionFrigateBonusOreMiningYield Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('expeditionFrigateBonusOreMiningYield'), skill='Expedition Frigates', **kwargs) class Effect5853(BaseEffect): """ expeditionFrigateBonusSignatureRadius Used by: Ship: Prospect """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', ship.getModifiedItemAttr('expeditionFrigateBonusSignatureRadius'), skill='Expedition Frigates', **kwargs) class Effect5854(BaseEffect): """ shipBonusNosferatuOverride Used by: Ship: Ashimmu Ship: Bhaalgorn Ship: Caedes Ship: Chemosh Ship: Cruor Ship: Dagon Ship: Molok Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'nosOverride', ship.getModifiedItemAttr('nosOverride'), **kwargs) class Effect5862(BaseEffect): """ shipMissileEMDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5863(BaseEffect): """ shipMissileKinDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5864(BaseEffect): """ shipMissileThermDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5865(BaseEffect): """ shipMissileExploDamageCB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', ship.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect5866(BaseEffect): """ shipBonusWarpScrambleMaxRangeGB Used by: Ship: Barghest """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusGB'), skill='Gallente Battleship', **kwargs) class Effect5867(BaseEffect): """ shipBonusMissileExplosionDelayPirateFaction2 Used by: Ship: Barghest Ship: Garmur Ship: Laelaps Ship: Orthrus Ship: Raiju """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): penalties = 'ship' not in context fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', ship.getModifiedItemAttr('shipBonusRole8'), stackingPenalties=penalties, **kwargs) class Effect5868(BaseEffect): """ drawbackCargoCapacity Used by: Modules named like: Transverse Bulkhead (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('capacity', module.getModifiedItemAttr('drawback'), **kwargs) class Effect5869(BaseEffect): """ eliteIndustrialWarpSpeedBonus1 Used by: Ships from group: Blockade Runner (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships', **kwargs) class Effect5870(BaseEffect): """ shipBonusShieldBoostCI2 Used by: Ship: Bustard """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusCI2'), skill='Caldari Hauler', **kwargs) class Effect5871(BaseEffect): """ shipBonusShieldBoostMI2 Used by: Ship: Mastodon """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMI2'), skill='Minmatar Hauler', **kwargs) class Effect5872(BaseEffect): """ shipBonusArmorRepairAI2 Used by: Ship: Impel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusAI2'), skill='Amarr Hauler', **kwargs) class Effect5873(BaseEffect): """ shipBonusArmorRepairGI2 Used by: Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGI2'), skill='Gallente Hauler', **kwargs) class Effect5874(BaseEffect): """ eliteIndustrialFleetCapacity1 Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('fleetHangarCapacity', ship.getModifiedItemAttr('eliteBonusIndustrial1'), skill='Transport Ships', **kwargs) class Effect5881(BaseEffect): """ eliteIndustrialShieldResists2 Used by: Ships from group: Deep Space Transport (3 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs) class Effect5888(BaseEffect): """ eliteIndustrialArmorResists2 Used by: Ship: Impel Ship: Occator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.ship.boostItemAttr('armor{}DamageResonance'.format(damageType.capitalize()), ship.getModifiedItemAttr('eliteBonusIndustrial2'), skill='Transport Ships', **kwargs) class Effect5889(BaseEffect): """ eliteIndustrialABHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) Ships from group: Interceptor (4 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5890(BaseEffect): """ eliteIndustrialMWDHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) Ships from group: Interceptor (4 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5891(BaseEffect): """ eliteIndustrialArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5892(BaseEffect): """ eliteIndustrialReactiveArmorHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5893(BaseEffect): """ eliteIndustrialShieldHardenerHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5896(BaseEffect): """ eliteIndustrialShieldBoosterHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5899(BaseEffect): """ eliteIndustrialArmorRepairHeatBonus Used by: Ships from group: Deep Space Transport (5 of 5) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect5900(BaseEffect): """ warpSpeedAddition Used by: Modules from group: Warp Accelerator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('warpSpeedAdd'), **kwargs) class Effect5901(BaseEffect): """ roleBonusBulkheadCPU Used by: Ships from group: Freighter (4 of 6) Ships from group: Jump Freighter (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Reinforced Bulkhead', 'cpu', ship.getModifiedItemAttr('cpuNeedBonus'), **kwargs) class Effect5911(BaseEffect): """ onlineJumpDriveConsumptionAmountBonusPercentage Used by: Modules from group: Jump Drive Economizer (3 of 3) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('jumpDriveConsumptionAmount', module.getModifiedItemAttr('consumptionQuantityBonusPercentage'), stackingPenalties=True, **kwargs) class Effect5912(BaseEffect): """ systemRemoteCapTransmitterAmount Used by: Celestials named like: Class Cataclysmic Variable Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'powerTransferAmount', beacon.getModifiedItemAttr('energyTransferAmountBonus'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5913(BaseEffect): """ systemArmorHP Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) Celestial: Federal Stellar Observatory Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs) class Effect5914(BaseEffect): """ systemEnergyNeutMultiplier Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5915(BaseEffect): """ systemEnergyVampireMultiplier Used by: Celestials named like: Class Pulsar Effects (6 of 6) Celestial: Imperial Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', beacon.getModifiedItemAttr('energyWarfareStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5916(BaseEffect): """ systemDamageExplosiveBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'explosiveDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5917(BaseEffect): """ systemDamageKineticBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'kineticDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5918(BaseEffect): """ systemDamageThermalBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'thermalDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5919(BaseEffect): """ systemDamageEMBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'emDamage', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5920(BaseEffect): """ systemAoeCloudSize Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5921(BaseEffect): """ systemTargetPainterMultiplier Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Target Painting'), 'signatureRadiusBonus', beacon.getModifiedItemAttr('targetPainterStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5922(BaseEffect): """ systemWebifierStrengthMultiplier Used by: Celestials named like: Class Black Hole Effects (6 of 6) Celestial: Republic Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', beacon.getModifiedItemAttr('stasisWebStrengthMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5923(BaseEffect): """ systemNeutBombs Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'energyNeutralizerAmount', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5924(BaseEffect): """ systemGravimetricECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanGravimetricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5925(BaseEffect): """ systemLadarECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanLadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5926(BaseEffect): """ systemMagnetrometricECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanMagnetometricStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5927(BaseEffect): """ systemRadarECMBomb Used by: Celestials named like: Class Red Giant Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Bomb Deployment'), 'scanRadarStrengthBonus', beacon.getModifiedItemAttr('smartbombDamageMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5929(BaseEffect): """ systemDroneTracking Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemMultiply(lambda drone: True, 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect5934(BaseEffect): """ warpScrambleBlockMWDWithNPCEffect Used by: Modules named like: Warp Scrambler (28 of 28) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength')) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) class Effect5939(BaseEffect): """ shipRocketRoFBonusAF2 Used by: Ship: Malediction """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rocket', 'speed', ship.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect5944(BaseEffect): """ shipMissileLauncherRoFAD1Fixed Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect5945(BaseEffect): """ cloakingPrototype Used by: Modules named like: Prototype Cloaking Device I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set flag which is used to determine if ship is cloaked or not # This is used to apply cloak-only bonuses, like Black Ops' speed bonus # Doesn't apply to covops cloaks fit.extraAttributes['cloaked'] = True # Apply speed penalty fit.ship.multiplyItemAttr('maxVelocity', module.getModifiedItemAttr('maxVelocityModifier'), **kwargs) class Effect5951(BaseEffect): """ drawbackWarpSpeed Used by: Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', module.getModifiedItemAttr('drawback'), stackingPenalties=True, **kwargs) class Effect5956(BaseEffect): """ shipMETDamageBonusAC2 Used by: Ship: Devoter Ship: Zealot """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect5957(BaseEffect): """ eliteBonusHeavyInterdictorsMETOptimal Used by: Ship: Devoter """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect5958(BaseEffect): """ shipHybridTrackingGC Used by: Ship: Lachesis Ship: Phobos Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect5959(BaseEffect): """ eliteBonusHeavyInterdictorsHybridOptimal1 Used by: Ship: Phobos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors1'), skill='Heavy Interdiction Cruisers', **kwargs) class Effect5994(BaseEffect): """ resistanceKillerHullAll Used by: Modules named like: Polarized (12 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): tgtAttr = '{}DamageResonance'.format(dmgType) fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKillerHull'), **kwargs) class Effect5995(BaseEffect): """ resistanceKillerShieldArmorAll Used by: Modules named like: Polarized (12 of 15) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for layer in ('armor', 'shield'): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): tgtAttr = '{}{}DamageResonance'.format(layer, dmgType.capitalize()) fit.ship.forceItemAttr(tgtAttr, module.getModifiedItemAttr('resistanceKiller'), **kwargs) class Effect5998(BaseEffect): """ freighterSMACapacityBonusO1 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # todo: stacking? fit.ship.boostItemAttr('agility', ship.getModifiedItemAttr('freighterBonusO2'), skill='ORE Freighter', stackingPenalties=True, **kwargs) class Effect6001(BaseEffect): """ freighterAgilityBonus2O2 Used by: Ship: Bowhead """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shipMaintenanceBayCapacity', ship.getModifiedItemAttr('freighterBonusO1'), skill='ORE Freighter', **kwargs) class Effect6006(BaseEffect): """ shipSETDamageAmarrTacticalDestroyer1 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr1'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6007(BaseEffect): """ shipSETCapNeedAmarrTacticalDestroyer2 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr2'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6008(BaseEffect): """ shipHeatDamageAmarrTacticalDestroyer3 Used by: Ship: Confessor """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerAmarr3'), skill='Amarr Tactical Destroyer', **kwargs) class Effect6009(BaseEffect): """ probeLauncherCPUPercentRoleBonusT3 Used by: Ships from group: Strategic Cruiser (4 of 4) Ships from group: Tactical Destroyer (5 of 5) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu', src.getModifiedItemAttr('roleBonusT3ProbeCPU'), **kwargs) class Effect6010(BaseEffect): """ shipModeMaxTargetRangePostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) Module: Anhinga Primary Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'maxTargetRange', 1 / module.getModifiedItemAttr('modeMaxTargetRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6011(BaseEffect): """ shipModeSETOptimalRangePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6012(BaseEffect): """ shipModeScanStrengthPostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.multiplyItemAttr( 'scan{}Strength'.format(scanType), 1 / (module.getModifiedItemAttr('mode{}StrengthPostDiv'.format(scanType)) or 1), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6014(BaseEffect): """ modeSigRadiusPostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', 1 / module.getModifiedItemAttr('modeSignatureRadiusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6015(BaseEffect): """ modeArmorResonancePostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.multiplyItemAttr( 'armor{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6016(BaseEffect): """ modeAgilityPostDiv Used by: Modules named like: Propulsion Mode (5 of 5) Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'agility', 1 / module.getModifiedItemAttr('modeAgilityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6017(BaseEffect): """ modeVelocityPostDiv Used by: Module: Jackdaw Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr( 'maxVelocity', 1 / module.getModifiedItemAttr('modeVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6020(BaseEffect): """ shipBonusEnergyNeutOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6021(BaseEffect): """ shipBonusEnergyNosOptimalRS3 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6025(BaseEffect): """ eliteReconBonusMHTOptimalRange1 Used by: Ship: Lachesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6027(BaseEffect): """ eliteReconBonusMPTdamage1 Used by: Ship: Huginn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6032(BaseEffect): """ remoteCapacitorTransmitterPowerNeedBonusEffect Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'power', ship.getModifiedItemAttr('powerTransferPowerNeedBonus'), **kwargs) class Effect6036(BaseEffect): """ shipHeatDamageMinmatarTacticalDestroyer3 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar3'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6037(BaseEffect): """ shipSPTDamageMinmatarTacticalDestroyer1 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar1'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6038(BaseEffect): """ shipSPTOptimalMinmatarTacticalDestroyer2 Used by: Ship: Svipul """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusTacticalDestroyerMinmatar2'), skill='Minmatar Tactical Destroyer', **kwargs) class Effect6039(BaseEffect): """ shipModeSPTTrackingPostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', 1 / module.getModifiedItemAttr('modeTrackingPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6040(BaseEffect): """ modeMWDSigRadiusPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', 1 / module.getModifiedItemAttr('modeMWDSigPenaltyPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6041(BaseEffect): """ modeShieldResonancePostDiv Used by: Modules named like: Defense Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'Em'), ('Explosive', 'Explosive'), ('Kinetic', 'Kinetic'), ('Thermic', 'Thermal') ): fit.ship.multiplyItemAttr( 'shield{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6045(BaseEffect): """ shipBonusSentryDamageMultiplierGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6046(BaseEffect): """ shipBonusSentryHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'hp', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6047(BaseEffect): """ shipBonusSentryArmorHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6048(BaseEffect): """ shipBonusSentryShieldHPGC3 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect6051(BaseEffect): """ shipBonusLightDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6052(BaseEffect): """ shipBonusMediumDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6053(BaseEffect): """ shipBonusHeavyDroneDamageMultiplierGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6054(BaseEffect): """ shipBonusHeavyDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6055(BaseEffect): """ shipBonusHeavyDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6056(BaseEffect): """ shipBonusHeavyDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6057(BaseEffect): """ shipBonusMediumDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6058(BaseEffect): """ shipBonusMediumDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6059(BaseEffect): """ shipBonusMediumDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6060(BaseEffect): """ shipBonusLightDroneHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6061(BaseEffect): """ shipBonusLightDroneArmorHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6062(BaseEffect): """ shipBonusLightDroneShieldHPGC2 Used by: Ship: Ishtar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Light Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect6063(BaseEffect): """ entosisLink Used by: Modules from group: Entosis Link (6 of 6) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.forceItemAttr('disallowAssistance', module.getModifiedItemAttr('disallowAssistance')) for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): fit.ship.boostItemAttr( 'scan{}Strength'.format(scanType), module.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) class Effect6076(BaseEffect): """ shipModeMissileVelocityPostDiv Used by: Module: Jackdaw Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6077(BaseEffect): """ shipHeatDamageCaldariTacticalDestroyer3 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari3'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6083(BaseEffect): """ shipSmallMissileDmgPirateFaction Used by: Ship: Jackdaw Ship: Metamorphosis Ship: Skua Ship: Sunesis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect6085(BaseEffect): """ shipMissileRoFCaldariTacticalDestroyer1 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari1'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6088(BaseEffect): """ shipBonusHeavyAssaultMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6093(BaseEffect): """ shipBonusHeavyMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6096(BaseEffect): """ shipBonusLightMissileAllDamageMC2 Used by: Ship: Rapier Ship: Scythe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), '{0}Damage'.format(damageType), ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6098(BaseEffect): """ shipMissileReloadTimeCaldariTacticalDestroyer2 Used by: Ship: Jackdaw Ship: Skua """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', ship.getModifiedItemAttr('shipBonusTacticalDestroyerCaldari2'), skill='Caldari Tactical Destroyer', **kwargs) class Effect6104(BaseEffect): """ entosisDurationMultiply Used by: Ships from group: Carrier (4 of 4) Ships from group: Dreadnought (13 of 13) Ships from group: Force Auxiliary (6 of 6) Ships from group: Lancer Dreadnought (4 of 4) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'duration', ship.getModifiedItemAttr('entosisDurationMultiplier') or 1, **kwargs) class Effect6110(BaseEffect): """ missileVelocityBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', module.getModifiedItemAttr('missileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6111(BaseEffect): """ missileExplosionDelayBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', module.getModifiedItemAttr('explosionDelayBonus'), stackingPenalties=True, **kwargs) class Effect6112(BaseEffect): """ missileAOECloudSizeBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', module.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) class Effect6113(BaseEffect): """ missileAOEVelocityBonusOnline Used by: Modules from group: Missile Guidance Enhancer (3 of 3) Module: ML-EKP 'Polybolos' Ballistic Control System """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', module.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6128(BaseEffect): """ scriptMissileGuidanceComputerAOECloudSizeBonusBonus Used by: Charges from group: Tracking Script (2 of 2) Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('aoeCloudSizeBonus', module.getModifiedChargeAttr('aoeCloudSizeBonusBonus'), **kwargs) class Effect6129(BaseEffect): """ scriptMissileGuidanceComputerAOEVelocityBonusBonus Used by: Charges from group: Tracking Script (2 of 2) Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('aoeVelocityBonus', module.getModifiedChargeAttr('aoeVelocityBonusBonus'), **kwargs) class Effect6130(BaseEffect): """ scriptMissileGuidanceComputerMissileVelocityBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('missileVelocityBonus', module.getModifiedChargeAttr('missileVelocityBonusBonus'), **kwargs) class Effect6131(BaseEffect): """ scriptMissileGuidanceComputerExplosionDelayBonusBonus Used by: Charges named like: Missile Script (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('explosionDelayBonus', module.getModifiedChargeAttr('explosionDelayBonusBonus'), **kwargs) class Effect6135(BaseEffect): """ missileGuidanceComputerBonus4 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay'), ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6144(BaseEffect): """ overloadSelfMissileGuidanceBonus5 Used by: Modules from group: Missile Guidance Computer (3 of 3) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'maxVelocityModifier', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect6148(BaseEffect): """ shipHeatDamageGallenteTacticalDestroyer3 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'heatDamage', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente3'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6149(BaseEffect): """ shipSHTRoFGallenteTacticalDestroyer1 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente1'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6150(BaseEffect): """ shipSHTTrackingGallenteTacticalDestroyer2 Used by: Ship: Hecate """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusTacticalDestroyerGallente2'), skill='Gallente Tactical Destroyer', **kwargs) class Effect6151(BaseEffect): """ modeHullResonancePostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for srcResType, tgtResType in ( ('Em', 'em'), ('Explosive', 'explosive'), ('Kinetic', 'kinetic'), ('Thermic', 'thermal') ): fit.ship.multiplyItemAttr( '{0}DamageResonance'.format(tgtResType), 1 / module.getModifiedItemAttr('mode{0}ResistancePostDiv'.format(srcResType)), **kwargs) class Effect6152(BaseEffect): """ shipModeSHTOptimalRangePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', 1 / module.getModifiedItemAttr('modeMaxRangePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6153(BaseEffect): """ modeMWDCapPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'capacitorNeed', 1 / module.getModifiedItemAttr('modeMWDCapPostDiv'), **kwargs) class Effect6154(BaseEffect): """ modeMWDBoostPostDiv Used by: Module: Hecate Propulsion Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'speedFactor', 1 / module.getModifiedItemAttr('modeMWDVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6155(BaseEffect): """ modeArmorRepDurationPostDiv Used by: Module: Hecate Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Repair Systems'), 'duration', 1 / module.getModifiedItemAttr('modeArmorRepDurationPostDiv'), **kwargs) class Effect6163(BaseEffect): """ passiveSpeedLimit Used by: Modules from group: Entosis Link (6 of 6) """ runtime = 'late' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.extraAttributes['speedLimit'] = src.getModifiedItemAttr('speedLimit') class Effect6164(BaseEffect): """ systemMaxVelocityPercentage Used by: Celestials named like: Drifter Incursion (6 of 6) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', beacon.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6166(BaseEffect): """ shipBonusWDFGnullPenalties Used by: Ship: Fiend """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'speedBoostFactorBonus', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Propulsion Jamming'), 'massBonusPercentage', ship.getModifiedItemAttr('shipBonusAT'), **kwargs) class Effect6170(BaseEffect): """ entosisCPUPenalty Used by: Ships from group: Interceptor (10 of 10) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Infomorph Psychology'), 'entosisCPUAdd', ship.getModifiedItemAttr('entosisCPUPenalty'), **kwargs) class Effect6171(BaseEffect): """ entosisCPUAddition Used by: Modules from group: Entosis Link (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.increaseItemAttr('cpu', module.getModifiedItemAttr('entosisCPUAdd'), **kwargs) class Effect6172(BaseEffect): """ battlecruiserMETRange Used by: Ships named like: Harbinger (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6173(BaseEffect): """ battlecruiserMHTRange Used by: Ships named like: Brutix (2 of 2) Ships named like: Ferox (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6174(BaseEffect): """ battlecruiserMPTRange Used by: Ships named like: Hurricane (2 of 2) Ship: Cenotaph Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6175(BaseEffect): """ battlecruiserMissileRange Used by: Ships named like: Cyclone (2 of 2) Ships named like: Drake (2 of 2) Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', skill.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6176(BaseEffect): """ battlecruiserDroneSpeed Used by: Ships named like: Myrmidon (2 of 2) Ships named like: Prophecy (2 of 2) Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect6177(BaseEffect): """ shipHybridDmg1CBC2 Used by: Ships named like: Ferox (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect6178(BaseEffect): """ shipBonusProjectileTrackingMBC2 Used by: Ship: Hurricane Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMBC2'), skill='Minmatar Battlecruiser', **kwargs) class Effect6184(BaseEffect): """ shipModuleRemoteCapacitorTransmitter Used by: Modules from group: Remote Capacitor Transmitter (37 of 37) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if src.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return amount = src.getModifiedItemAttr('powerTransferAmount') duration = src.getModifiedItemAttr('duration') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addDrain(src, duration, -amount, 0) class Effect6185(BaseEffect): """ shipModuleRemoteHullRepairer Used by: Modules from group: Remote Hull Repairer (8 of 8) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = module.getModifiedItemAttr('structureDamageAmount') bonus *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = module.getModifiedItemAttr('duration') / 1000.0 fit._hullRr.append((bonus, duration)) class Effect6186(BaseEffect): """ shipModuleRemoteShieldBooster Used by: Modules from group: Remote Shield Booster (42 of 42) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = container.getModifiedItemAttr('shieldBonus') bonus *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = container.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((bonus, duration)) class Effect6187(BaseEffect): """ energyNeutralizerFalloff Used by: Modules from group: Energy Neutralizer (57 of 57) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6188(BaseEffect): """ shipModuleRemoteArmorRepairer Used by: Modules from group: Remote Armor Repairer (43 of 43) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return bonus = container.getModifiedItemAttr('armorDamageAmount') bonus *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) duration = container.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((bonus, duration)) fit._armorRrPreSpool.append((bonus, duration)) fit._armorRrFullSpool.append((bonus, duration)) class Effect6195(BaseEffect): """ expeditionFrigateBonusShieldResistance Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('Em', 'Thermal', 'Kinetic', 'Explosive'): fit.ship.boostItemAttr('shield{}DamageResonance'.format(dmgType), src.getModifiedItemAttr('expeditionFrigateBonusShieldResistance'), skill='Expedition Frigates', **kwargs) class Effect6197(BaseEffect): """ energyNosferatuFalloff Used by: Modules from group: Energy Nosferatu (58 of 58) """ runTime = 'late' type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): amount = src.getModifiedItemAttr('powerTransferAmount') time = src.getModifiedItemAttr('duration') if 'projected' in context: if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.addDrain(src, time, amount, 0) elif 'module' in context: src.itemModifiedAttributes.force('capacitorNeed', -amount, **kwargs) class Effect6201(BaseEffect): """ doomsdaySlash Used by: Modules named like: Reaper (4 of 4) """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6208(BaseEffect): """ microJumpPortalDrive Used by: Module: Micro Jump Field Generator """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), stackingPenalties=True, **kwargs) class Effect6214(BaseEffect): """ roleBonusCDLinksPGReduction Used by: Ships from group: Command Destroyer (6 of 6) Ship: Porpoise """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('roleBonusCD'), **kwargs) class Effect6216(BaseEffect): """ structureEnergyNeutralizerFalloff Used by: Structure Modules from group: Structure Energy Neutralizer (5 of 5) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): amount = 0 if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('maxRange'), srcFalloffRange=src.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6222(BaseEffect): """ structureWarpScrambleBlockMWDWithNPCEffect Used by: Structure Modules from group: Structure Warp Scrambler (2 of 2) """ runTime = 'early' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', module.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) class Effect6230(BaseEffect): """ shipBonusEnergyNeutOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6232(BaseEffect): """ shipBonusEnergyNeutFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect6233(BaseEffect): """ shipBonusEnergyNeutFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6234(BaseEffect): """ shipBonusEnergyNosOptimalRS1 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6237(BaseEffect): """ shipBonusEnergyNosFalloffRS2 Used by: Ship: Pilgrim """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect6238(BaseEffect): """ shipBonusEnergyNosFalloffRS3 Used by: Ship: Curse """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6241(BaseEffect): """ shipBonusEnergyNeutFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect6242(BaseEffect): """ shipBonusEnergyNeutOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6245(BaseEffect): """ shipBonusEnergyNosOptimalAD2 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6246(BaseEffect): """ shipBonusEnergyNosFalloffAD1 Used by: Ship: Dragoon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAD1'), skill='Amarr Destroyer', **kwargs) class Effect6253(BaseEffect): """ shipBonusEnergyNeutOptimalAB Used by: Ship: Armageddon Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect6256(BaseEffect): """ shipBonusEnergyNeutFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect6257(BaseEffect): """ shipBonusEnergyNosOptimalAB Used by: Ship: Armageddon Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect6260(BaseEffect): """ shipBonusEnergyNosFalloffAB2 Used by: Ship: Armageddon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect6267(BaseEffect): """ shipBonusEnergyNeutOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect6272(BaseEffect): """ shipBonusEnergyNeutFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships', **kwargs) class Effect6273(BaseEffect): """ shipBonusEnergyNosOptimalEAF1 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('eliteBonusElectronicAttackShip1'), skill='Electronic Attack Ships', **kwargs) class Effect6278(BaseEffect): """ shipBonusEnergyNosFalloffEAF3 Used by: Ship: Sentinel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusElectronicAttackShip3'), skill='Electronic Attack Ships', **kwargs) class Effect6281(BaseEffect): """ shipBonusEnergyNeutOptimalAF2 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6285(BaseEffect): """ shipBonusEnergyNeutFalloffAF3 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs) class Effect6287(BaseEffect): """ shipBonusEnergyNosOptimalAF2 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6291(BaseEffect): """ shipBonusEnergyNosFalloffAF3 Used by: Ship: Cruor Ship: Malice """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonus3AF'), skill='Amarr Frigate', **kwargs) class Effect6294(BaseEffect): """ shipBonusEnergyNeutOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6299(BaseEffect): """ shipBonusEnergyNeutFalloffAC3 Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs) class Effect6300(BaseEffect): """ shipBonusEnergyNosOptimalAC1 Used by: Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6301(BaseEffect): """ shipBonusNosOptimalFalloffAC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect6305(BaseEffect): """ shipBonusEnergyNosFalloffAC3 Used by: Ship: Ashimmu Ship: Vangel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC3'), skill='Amarr Cruiser', **kwargs) class Effect6307(BaseEffect): """ shipBonusThermMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6308(BaseEffect): """ shipBonusEMMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6309(BaseEffect): """ shipBonusKineticMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6310(BaseEffect): """ shipBonusExplosiveMissileDmgMD1 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect6315(BaseEffect): """ eliteBonusCommandDestroyerSkirmish1 Used by: Ships from group: Command Destroyer (3 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6316(BaseEffect): """ eliteBonusCommandDestroyerShield1 Used by: Ships from group: Command Destroyer (3 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6317(BaseEffect): """ eliteBonusCommandDestroyerMJFGspool2 Used by: Ships from group: Command Destroyer (6 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'duration', src.getModifiedItemAttr('eliteBonusCommandDestroyer2'), skill='Command Destroyers', **kwargs) class Effect6318(BaseEffect): """ shipBonusEMShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6319(BaseEffect): """ shipBonusKineticShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6320(BaseEffect): """ shipBonusThermalShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6321(BaseEffect): """ shipBonusExplosiveShieldResistanceMD2 Used by: Ship: Bifrost """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusMD2'), skill='Minmatar Destroyer', **kwargs) class Effect6322(BaseEffect): """ scriptscanGravimetricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanGravimetricStrengthBonus', src.getModifiedChargeAttr('scanGravimetricStrengthBonusBonus'), **kwargs) class Effect6323(BaseEffect): """ scriptscanLadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanLadarStrengthBonus', src.getModifiedChargeAttr('scanLadarStrengthBonusBonus'), **kwargs) class Effect6324(BaseEffect): """ scriptscanMagnetometricStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanMagnetometricStrengthBonus', src.getModifiedChargeAttr('scanMagnetometricStrengthBonusBonus'), **kwargs) class Effect6325(BaseEffect): """ scriptscanRadarStrengthBonusBonus Used by: Charges from group: Structure ECM script (4 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('scanRadarStrengthBonus', src.getModifiedChargeAttr('scanRadarStrengthBonusBonus'), **kwargs) class Effect6326(BaseEffect): """ shipBonusThermalMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6327(BaseEffect): """ shipBonusEMMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6328(BaseEffect): """ shipBonusKineticMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6329(BaseEffect): """ shipBonusExplosiveMissileDamageCD1 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect6330(BaseEffect): """ shipBonusShieldEMResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6331(BaseEffect): """ shipBonusShieldThermalResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6332(BaseEffect): """ shipBonusShieldKineticResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6333(BaseEffect): """ shipBonusShieldExplosiveResistanceCD2 Used by: Ship: Stork """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect6334(BaseEffect): """ eliteBonusCommandDestroyerInfo1 Used by: Ships from group: Command Destroyer (3 of 6) Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6335(BaseEffect): """ shipBonusKineticArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6336(BaseEffect): """ shipBonusThermalArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6337(BaseEffect): """ shipBonusEMArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6338(BaseEffect): """ shipBonusExplosiveArmorResistanceAD2 Used by: Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect6339(BaseEffect): """ eliteBonusCommandDestroyerArmored1 Used by: Ship: Magus Ship: Pontifex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect6340(BaseEffect): """ shipBonusKineticArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6341(BaseEffect): """ shipBonusEMArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6342(BaseEffect): """ shipBonusThermalArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6343(BaseEffect): """ shipBonusExplosiveArmorResistanceGD2 Used by: Ship: Magus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusGD2'), skill='Gallente Destroyer', **kwargs) class Effect6350(BaseEffect): """ shipSmallMissileKinDmgCF3 Used by: Ship: Caldari Navy Hookbill """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Light Missiles') or mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate', **kwargs) class Effect6351(BaseEffect): """ shipMissileKinDamageCC3 Used by: Ship: Osprey Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser', **kwargs) class Effect6352(BaseEffect): """ roleBonusWDRange Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'maxRange', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6353(BaseEffect): """ roleBonusWDCapCPU Used by: Ship: Crucifier Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'cpu', src.getModifiedItemAttr('roleBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), 'capacitorNeed', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6354(BaseEffect): """ shipBonusEwWeaponDisruptionStrengthAF2 Used by: Variations of ship: Crucifier (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ( 'trackingSpeedBonus', 'explosionDelayBonus', 'maxRangeBonus', 'falloffBonus', 'missileVelocityBonus', 'aoeVelocityBonus', 'aoeCloudSizeBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName, src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6357(BaseEffect): """ shipBonusJustScramblerRangeGF2 Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect6358(BaseEffect): """ roleBonusJustScramblerStrength Used by: Ship: Maulus Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength', ship.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6359(BaseEffect): """ shipBonusAoeVelocityRocketsMF Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'aoeVelocity', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6360(BaseEffect): """ shipRocketEMThermKinDmgMF2 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'emDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'thermalDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'kineticDamage', src.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect6361(BaseEffect): """ shipRocketExpDmgMF3 Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosiveDamage', src.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs) class Effect6362(BaseEffect): """ roleBonusStasisRange Used by: Ship: Vigil Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('roleBonus'), **kwargs) class Effect6368(BaseEffect): """ shieldTransporterFalloffBonus Used by: Variations of ship: Bantam (2 of 2) Variations of ship: Burst (2 of 2) Ship: Osprey Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Shield Booster', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect6369(BaseEffect): """ shipShieldTransferFalloffMC2 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6370(BaseEffect): """ shipShieldTransferFalloffCC1 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect6371(BaseEffect): """ shipRemoteArmorFalloffGC1 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect6372(BaseEffect): """ shipRemoteArmorFalloffAC2 Used by: Ship: Guardian """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect6373(BaseEffect): """ armorRepairProjectorFalloffBonus Used by: Variations of ship: Navitas (2 of 2) Ship: Augoror Ship: Deacon Ship: Exequror Ship: Inquisitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Ancillary Remote Armor Repairer', 'falloffEffectiveness', src.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect6374(BaseEffect): """ droneHullRepairBonusEffect Used by: Ships from group: Logistics (6 of 7) Ship: Exequror Ship: Scythe """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == 'Logistic Drone', 'structureDamageAmount', src.getModifiedItemAttr('droneArmorDamageAmountBonus'), **kwargs) class Effect6377(BaseEffect): """ eliteBonusLogiFrigArmorRepSpeedCap1 Used by: Ship: Deacon Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) class Effect6378(BaseEffect): """ eliteBonusLogiFrigShieldRepSpeedCap1 Used by: Ship: Kirin Ship: Scalpel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogiFrig1'), skill='Logistics Frigates', **kwargs) class Effect6379(BaseEffect): """ eliteBonusLogiFrigArmorHP2 Used by: Ship: Deacon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6380(BaseEffect): """ eliteBonusLogiFrigShieldHP2 Used by: Ship: Kirin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6381(BaseEffect): """ eliteBonusLogiFrigSignature2 Used by: Ship: Scalpel Ship: Thalia """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('eliteBonusLogiFrig2'), skill='Logistics Frigates', **kwargs) class Effect6384(BaseEffect): """ overloadSelfMissileGuidanceModuleBonus Used by: Variations of module: Guidance Disruptor I (7 of 7) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for tgtAttr in ( 'aoeCloudSizeBonus', 'explosionDelayBonus', 'missileVelocityBonus', 'aoeVelocityBonus' ): module.boostItemAttr(tgtAttr, module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus'), **kwargs) class Effect6385(BaseEffect): """ ignoreCloakVelocityPenalty Used by: Ships from group: Expedition Frigate (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemForce(lambda mod: mod.item.group.name == 'Cloaking Device', 'maxVelocityModifier', src.getModifiedItemAttr('ignoreCloakVelocityPenalty'), **kwargs) class Effect6386(BaseEffect): """ ewSkillGuidanceDisruptionBonus Used by: Modules named like: Tracking Diagnostic Subroutines (8 of 8) Skill: Weapon Destabilization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): level = src.level if 'skill' in context else 1 for attr in ( 'explosionDelayBonus', 'aoeVelocityBonus', 'aoeCloudSizeBonus', 'missileVelocityBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attr, src.getModifiedItemAttr('scanSkillEwStrengthBonus') * level, **kwargs) class Effect6395(BaseEffect): """ shipBonusEwWeaponDisruptionStrengthAC1 Used by: Variations of ship: Arbitrator (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ( 'missileVelocityBonus', 'aoeVelocityBonus', 'maxRangeBonus', 'explosionDelayBonus', 'aoeCloudSizeBonus', 'trackingSpeedBonus', 'falloffBonus' ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Weapon Disruption'), attrName, src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect6396(BaseEffect): """ skillStructureMissileDamageBonus Used by: Skill: Structure Missile Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile', 'Guided Bomb') for damageType in ('em', 'thermal', 'explosive', 'kinetic'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, '%sDamage' % damageType, src.getModifiedItemAttr('damageMultiplierBonus'), skill='Structure Missile Systems', **kwargs) class Effect6400(BaseEffect): """ skillStructureElectronicSystemsCapNeedBonus Used by: Skill: Structure Electronic Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Warp Scrambler', 'Structure ECM Battery', 'Structure Stasis Webifier') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'), skill='Structure Electronic Systems', **kwargs) class Effect6401(BaseEffect): """ skillStructureEngineeringSystemsCapNeedBonus Used by: Skill: Structure Engineering Systems """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Energy Neutralizer', 'Structure Area Denial Module') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('capNeedBonus'), skill='Structure Engineering Systems', **kwargs) class Effect6402(BaseEffect): """ structureRigAoeVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, 'aoeVelocity', src.getModifiedItemAttr('structureRigMissileExploVeloBonus'), stackingPenalties=True, **kwargs) class Effect6403(BaseEffect): """ structureRigVelocityBonusSingleTargetMissiles Used by: Structure Modules named like: Standup Set Missile (6 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in groups, 'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6404(BaseEffect): """ structureRigNeutralizerMaxRangeFalloffEffectiveness Used by: Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2) Structure Modules named like: Standup Set Energy Neutralizer (4 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) class Effect6405(BaseEffect): """ structureRigNeutralizerCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig XL - Energy Neutralizer and EW (2 of 2) Structure Modules named like: Standup Set Energy Neutralizer (4 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), stackingPenalties=True, **kwargs) class Effect6406(BaseEffect): """ structureRigEWMaxRangeFalloff Used by: Structure Modules from group: Structure Combat Rig M - EW projection (2 of 2) Structure Modules named like: Standup Set EW (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloff', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'maxRange', src.getModifiedItemAttr('structureRigEwarOptimalBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'falloffEffectiveness', src.getModifiedItemAttr('structureRigEwarFalloffBonus'), stackingPenalties=True, **kwargs) class Effect6407(BaseEffect): """ structureRigEWCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig M - EW Cap Reduction (2 of 2) Structure Modules named like: Standup Set EW (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure ECM Battery', 'Structure Disruption Battery') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'capacitorNeed', src.getModifiedItemAttr('structureRigEwarCapUseBonus'), **kwargs) class Effect6408(BaseEffect): """ structureRigMaxTargets Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) Structure Modules named like: Standup Set Target (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs) class Effect6409(BaseEffect): """ structureRigSensorResolution Used by: Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2) Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'), stackingPenalties=True, **kwargs) class Effect6410(BaseEffect): """ structureRigExplosionRadiusBonusAoEMissiles Used by: Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb', 'aoeCloudSize', src.getModifiedItemAttr('structureRigMissileExplosionRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6411(BaseEffect): """ structureRigVelocityBonusAoeMissiles Used by: Structure Modules from group: Structure Combat Rig L - AoE Launcher Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Missile and AoE Missile (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == 'Guided Bomb', 'maxVelocity', src.getModifiedItemAttr('structureRigMissileVelocityBonus'), stackingPenalties=True, **kwargs) class Effect6412(BaseEffect): """ structureRigPDBmaxRange Used by: Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), stackingPenalties=True, **kwargs) class Effect6413(BaseEffect): """ structureRigPDBCapacitorNeed Used by: Structure Modules from group: Structure Combat Rig L - Point Defense Battery Application and Projection (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs) class Effect6417(BaseEffect): """ structureRigDoomsdayDamageLoss Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponDamageLossTarget', src.getModifiedItemAttr('structureRigDoomsdayDamageLossTargetBonus'), **kwargs) class Effect6422(BaseEffect): """ remoteSensorDampFalloff Used by: Modules from group: Sensor Dampener (6 of 6) Starbases from group: Sensor Dampening Battery (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor, stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor, stackingPenalties=True, **kwargs) class Effect6423(BaseEffect): """ shipModuleGuidanceDisruptor Used by: Variations of module: Guidance Disruptor I (7 of 7) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6424(BaseEffect): """ shipModuleTrackingDisruptor Used by: Variations of module: Tracking Disruptor I (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6425(BaseEffect): """ remoteTargetPaintFalloff Used by: Modules from group: Target Painter (9 of 9) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus') * calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs) class Effect6426(BaseEffect): """ remoteWebifierFalloff Used by: Modules from group: Stasis Grappler (8 of 8) Modules from group: Stasis Web (19 of 19) Starbases from group: Stasis Webification Battery (3 of 3) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = module.getModifiedItemAttr('speedFactor') * calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', appliedBoost, stackingPenalties=True, **kwargs) class Effect6427(BaseEffect): """ remoteSensorBoostFalloff Used by: Modules from group: Remote Sensor Booster (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('maxTargetRangeBonus', 'maxTargetRange'), ('scanResolutionBonus', 'scanResolution'), ('scanGravimetricStrengthPercent', 'scanGravimetricStrength'), ('scanMagnetometricStrengthPercent', 'scanMagnetometricStrength'), ('scanRadarStrengthPercent', 'scanRadarStrength'), ('scanLadarStrengthPercent', 'scanLadarStrength') ): fit.ship.boostItemAttr(tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6428(BaseEffect): """ shipModuleRemoteTrackingComputer Used by: Modules from group: Remote Tracking Computer (8 of 8) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6431(BaseEffect): """ fighterAbilityMissiles Used by: Items from category: Fighter (56 of 94) """ dealsDamage = True displayName = 'Missile Attack' hasCharges = True prefix = 'fighterAbilityMissiles' type = 'active' class Effect6434(BaseEffect): """ fighterAbilityEnergyNeutralizer Used by: Fighters named like: Cenobite (5 of 5) """ displayName = 'Energy Neutralizer' grouped = True prefix = 'fighterAbilityEnergyNeutralizer' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return amount = src.getModifiedItemAttr('{}Amount'.format(cls.prefix)) * src.amount amount *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('{}Duration'.format(cls.prefix)) fit.addDrain(src, time, amount, 0) class Effect6435(BaseEffect): """ fighterAbilityStasisWebifier Used by: Fighters named like: Dromi (5 of 5) """ displayName = 'Stasis Webifier' grouped = True prefix = 'fighterAbilityStasisWebifier' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return speedBoost = src.getModifiedItemAttr('{}SpeedPenalty'.format(cls.prefix)) * src.amount speedBoost *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}OptimalRange'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}FalloffRange'.format(cls.prefix)), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs) class Effect6436(BaseEffect): """ fighterAbilityWarpDisruption Used by: Fighters named like: Siren (5 of 5) """ displayName = 'Warp Disruption' grouped = True prefix = 'fighterAbilityWarpDisruption' type = 'active', 'projected' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if src.getModifiedItemAttr('{}Range'.format(cls.prefix), 0) < (projectionRange or 0): return fit.ship.increaseItemAttr( 'warpScrambleStatus', src.getModifiedItemAttr('{}PointStrength'.format(cls.prefix)) * src.amount, **kwargs) class Effect6437(BaseEffect): """ fighterAbilityECM Used by: Fighters named like: Scarab (5 of 5) """ displayName = 'ECM' grouped = True prefix = 'fighterAbilityECM' type = 'projected', 'active' @classmethod def handler(cls, fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = src.getModifiedItemAttr('{}Strength{}'.format(cls.prefix, fit.scanType)) * src.amount strength *= calculateRangeFactor( srcOptimalRange=src.getModifiedItemAttr('{}RangeOptimal'.format(cls.prefix)), srcFalloffRange=src.getModifiedItemAttr('{}RangeFalloff'.format(cls.prefix)), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6439(BaseEffect): """ fighterAbilityEvasiveManeuvers Used by: Fighters from group: Light Fighter (12 of 24) Fighters from group: Structure Light Fighter (8 of 16) """ displayName = 'Evasive Maneuvers' grouped = True prefix = 'fighterAbilityEvasiveManeuvers' runTime = 'late' type = 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): container.boostItemAttr('maxVelocity', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSpeedBonus'), **kwargs) container.boostItemAttr('signatureRadius', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversSignatureRadiusBonus'), stackingPenalties=True, **kwargs) # These may not have stacking penalties, but there's nothing else that affects the attributes yet to check. container.multiplyItemAttr('shieldEmDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversEmResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldThermalDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversThermResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldKineticDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversKinResonance'), stackingPenalties=True, **kwargs) container.multiplyItemAttr('shieldExplosiveDamageResonance', container.getModifiedItemAttr('fighterAbilityEvasiveManeuversExpResonance'), stackingPenalties=True, **kwargs) class Effect6440(BaseEffect): """ fighterAbilityAfterburner Used by: Fighters named like: Shadow (2 of 2) Fighters named like: Siren (5 of 5) """ displayName = 'Afterburner' grouped = True runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityAfterburnerSpeedBonus'), stackingPenalties=True, **kwargs) class Effect6441(BaseEffect): """ fighterAbilityMicroWarpDrive Used by: Items from category: Fighter (51 of 94) """ displayName = 'Microwarpdrive' grouped = True runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.boostItemAttr('maxVelocity', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSpeedBonus'), stackingPenalties=True, **kwargs) module.boostItemAttr('signatureRadius', module.getModifiedItemAttr('fighterAbilityMicroWarpDriveSignatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6443(BaseEffect): """ pointDefense Used by: Structure Modules from group: Structure Area Denial Module (2 of 2) """ type = 'active' class Effect6447(BaseEffect): """ lightningWeapon Used by: Structure Module: Standup Arcing Vorton Projector I """ type = 'active' class Effect6448(BaseEffect): """ structureMissileGuidanceEnhancer Used by: Variations of structure module: Standup Missile Guidance Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile') for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay'), ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name in missileGroups, tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6449(BaseEffect): """ structureBallisticControlSystem Used by: Variations of structure module: Standup Ballistic Control System I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): missileGroups = ('Structure Anti-Capital Missile', 'Structure Anti-Subcapital Missile') for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.group.name in missileGroups, '%sDamage' % dmgType, module.getModifiedItemAttr('missileDamageMultiplierBonus'), stackingPenalties=True, **kwargs) launcherGroups = ('Structure XL Missile Launcher', 'Structure Multirole Missile Launcher') fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name in launcherGroups, 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect6465(BaseEffect): """ fighterAbilityAttackM Used by: Items from category: Fighter (54 of 94) """ dealsDamage = True displayName = 'Turret Attack' prefix = 'fighterAbilityAttackMissile' type = 'active' class Effect6470(BaseEffect): """ remoteECMFalloff Used by: Modules from group: ECM (43 of 43) Starbases from group: Electronic Warfare Battery (12 of 12) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) strength *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6472(BaseEffect): """ doomsdayBeamDOT Used by: Module: 'Geiravor' Explosive Lance Module: 'Holy Destiny' Electromagnetic Lance Module: 'Iron Pike' Kinetic Lance Module: 'Phalarica' Thermal Lance """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6473(BaseEffect): """ doomsdayConeDOT Used by: Module: Bosonic Field Generator """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6474(BaseEffect): """ doomsdayHOG Used by: Module: Gravitational Transportation Field Oscillator """ type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect6475(BaseEffect): """ structureRigDoomsdayTargetAmountBonus Used by: Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'lightningWeaponTargetAmount', src.getModifiedItemAttr('structureRigDoomsdayTargetAmountBonus'), **kwargs) class Effect6476(BaseEffect): """ doomsdayAOEWeb Used by: Module: Stasis Webification Burst Projector Structure Module: Standup Stasis Webification Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6477(BaseEffect): """ doomsdayAOENeut Used by: Module: Energy Neutralization Burst Projector Structure Module: Standup Energy Neutralization Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('duration') fit.addDrain(src, time, amount, 0) class Effect6478(BaseEffect): """ doomsdayAOEPaint Used by: Module: Target Illumination Burst Projector Structure Module: Standup Target Illumination Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6479(BaseEffect): """ doomsdayAOETrack Used by: Module: Weapon Disruption Burst Projector Structure Module: Standup Weapon Disruption Burst Projector """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6481(BaseEffect): """ doomsdayAOEDamp Used by: Module: Sensor Dampening Burst Projector Structure Module: Standup Sensor Dampening Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect6482(BaseEffect): """ doomsdayAOEBubble Used by: Module: Warp Disruption Burst Projector Structure Module: Standup Warp Disruption Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): return class Effect6484(BaseEffect): """ emergencyHullEnergizer Used by: Variations of module: Capital Emergency Hull Energizer I (5 of 5) """ runtime = 'late' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.multiplyItemAttr('{}DamageResonance'.format(dmgType), src.getModifiedItemAttr('hull{}DamageResonance'.format(dmgType.title())), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect6485(BaseEffect): """ fighterAbilityLaunchBomb Used by: Fighters from group: Heavy Fighter (8 of 17) Fighters from group: Structure Heavy Fighter (8 of 17) """ dealsDamage = True displayName = 'Bomb' hasCharges = True prefix = 'fighterAbilityLaunchBomb' type = 'active' class Effect6487(BaseEffect): """ modifyEnergyWarfareResistance Used by: Modules from group: Capacitor Battery (30 of 30) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', module.getModifiedItemAttr('energyWarfareResistanceBonus'), stackingPenalties=True, **kwargs) class Effect6488(BaseEffect): """ scriptSensorBoosterSensorStrengthBonusBonus Used by: Charges from group: Sensor Booster Script (3 of 3) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for scanType in ('Gravimetric', 'Magnetometric', 'Radar', 'Ladar'): module.boostItemAttr('scan{}StrengthPercent'.format(scanType), module.getModifiedChargeAttr('sensorStrengthBonusBonus'), **kwargs) class Effect6501(BaseEffect): """ shipBonusDreadnoughtA1DamageBonus Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect6502(BaseEffect): """ shipBonusDreadnoughtA2ArmorResists Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'armor{}DamageResonance'.format(dmgType.capitalize()), src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought', **kwargs) class Effect6503(BaseEffect): """ shipBonusDreadnoughtA3CapNeed Used by: Ships named like: Revelation (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusDreadnoughtA3'), skill='Amarr Dreadnought', **kwargs) class Effect6504(BaseEffect): """ shipBonusDreadnoughtC1DamageBonus Used by: Ships named like: Phoenix (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('emDamage', 'thermalDamage', 'kineticDamage', 'explosiveDamage'): fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), attrName, src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect6505(BaseEffect): """ shipBonusDreadnoughtC2ShieldResists Used by: Variations of ship: Phoenix (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) class Effect6506(BaseEffect): """ shipBonusDreadnoughtG1DamageBonus Used by: Ship: Moros """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect6507(BaseEffect): """ shipBonusDreadnoughtG2ROFBonus Used by: Variations of ship: Moros (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtG2'), skill='Gallente Dreadnought', **kwargs) class Effect6508(BaseEffect): """ shipBonusDreadnoughtG3RepairTime Used by: Variations of ship: Moros (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtG3'), skill='Gallente Dreadnought', **kwargs) class Effect6509(BaseEffect): """ shipBonusDreadnoughtM1DamageBonus Used by: Ships named like: Naglfar (2 of 2) Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6510(BaseEffect): """ shipBonusDreadnoughtM2ROFBonus Used by: Ships named like: Naglfar (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect6511(BaseEffect): """ shipBonusDreadnoughtM3RepairTime Used by: Ship: Naglfar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'duration', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect6513(BaseEffect): """ doomsdayAOEECM Used by: Module: ECM Jammer Burst Projector Structure Module: Standup ECM Jammer Burst Projector """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6526(BaseEffect): """ shipBonusForceAuxiliaryA1RemoteRepairAndCapAmount Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6527(BaseEffect): """ shipBonusForceAuxiliaryA2ArmorResists Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryA2'), skill='Amarr Carrier', **kwargs) class Effect6533(BaseEffect): """ shipBonusForceAuxiliaryA4WarfareLinksBonus Used by: Ship: Apostle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryA4'), skill='Amarr Carrier', **kwargs) class Effect6534(BaseEffect): """ shipBonusForceAuxiliaryM4WarfareLinksBonus Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryM4'), skill='Minmatar Carrier', **kwargs) class Effect6535(BaseEffect): """ shipBonusForceAuxiliaryG4WarfareLinksBonus Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryG4'), skill='Gallente Carrier', **kwargs) class Effect6536(BaseEffect): """ shipBonusForceAuxiliaryC4WarfareLinksBonus Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusForceAuxiliaryC4'), skill='Caldari Carrier', **kwargs) class Effect6537(BaseEffect): """ shipBonusRole1CommandBurstCPUBonus Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6545(BaseEffect): """ shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if src.getModifiedItemAttr('shipBonusForceAuxiliaryC1') is None: return # See GH Issue 1321 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Capacitor Emission Systems'), 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryC1'), skill='Caldari Carrier', **kwargs) class Effect6546(BaseEffect): """ shipBonusForceAuxiliaryC2ShieldResists Used by: Variations of ship: Minokawa (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusForceAuxiliaryC2'), skill='Caldari Carrier', **kwargs) class Effect6548(BaseEffect): """ shipBonusForceAuxiliaryG1RemoteCycleTime Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs) class Effect6549(BaseEffect): """ shipBonusForceAuxiliaryG2LocalRepairAmount Used by: Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryG2'), skill='Gallente Carrier', **kwargs) class Effect6551(BaseEffect): """ shipBonusForceAuxiliaryM1RemoteDuration Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs) class Effect6552(BaseEffect): """ shipBonusForceAuxiliaryM2LocalBoostAmount Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) class Effect6555(BaseEffect): """ moduleBonusDroneNavigationComputer Used by: Modules from group: Drone Navigation Computer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6556(BaseEffect): """ moduleBonusDroneDamageAmplifier Used by: Modules from group: Drone Damage Modules (12 of 12) Modules named like: C3 'Hivaa Saitsuo' Ballistic Control System (2 of 2) Module: Abyssal Ballistic Control System """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) class Effect6557(BaseEffect): """ moduleBonusOmnidirectionalTrackingLink Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect6558(BaseEffect): """ moduleBonusOmnidirectionalTrackingLinkOverload Used by: Modules from group: Drone Tracking Modules (10 of 10) """ type = 'overheat' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): overloadBonus = module.getModifiedItemAttr('overloadTrackingModuleStrengthBonus') module.boostItemAttr('maxRangeBonus', overloadBonus, **kwargs) module.boostItemAttr('falloffBonus', overloadBonus, **kwargs) module.boostItemAttr('trackingSpeedBonus', overloadBonus, **kwargs) module.boostItemAttr('aoeCloudSizeBonus', overloadBonus, **kwargs) module.boostItemAttr('aoeVelocityBonus', overloadBonus, **kwargs) class Effect6559(BaseEffect): """ moduleBonusOmnidirectionalTrackingEnhancer Used by: Modules from group: Drone Tracking Enhancer (10 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('aoeCloudSizeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeFalloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretTrackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('trackingSpeedBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('aoeVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) class Effect6560(BaseEffect): """ skillBonusFighters Used by: Skill: Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6561(BaseEffect): """ skillBonusLightFighters Used by: Skill: Light Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Light Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6562(BaseEffect): """ skillBonusSupportFightersShield Used by: Skill: Support Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldBonus') * lvl, **kwargs) class Effect6563(BaseEffect): """ skillBonusHeavyFighters Used by: Skill: Heavy Fighters """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Heavy Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6565(BaseEffect): """ citadelRigBonus Used by: Structures from group: Citadel (9 of 9) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in [ 'structureRigDoomsdayDamageLossTargetBonus', 'structureRigScanResBonus', 'structureRigPDRangeBonus', 'structureRigPDCapUseBonus', 'structureRigMissileExploVeloBonus', 'structureRigMissileVelocityBonus', 'structureRigEwarOptimalBonus', 'structureRigEwarFalloffBonus', 'structureRigEwarCapUseBonus', 'structureRigMissileExplosionRadiusBonus' ]: fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Jury Rigging'), attr, src.getModifiedItemAttr('structureRoleBonus'), **kwargs) class Effect6566(BaseEffect): """ moduleBonusFighterSupportUnit Used by: Modules from group: Fighter Support Unit (10 of 10) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('fighterBonusShieldCapacityPercent'), **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('fighterBonusVelocityPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDuration', src.getModifiedItemAttr('fighterBonusROFPercent'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldRechargeRate', src.getModifiedItemAttr('fighterBonusShieldRechargePercent'), **kwargs) class Effect6567(BaseEffect): """ moduleBonusNetworkedSensorArray Used by: Module: Networked Sensor Array """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): attr = 'scan{}Strength'.format(scanType) bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)) fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus, stackingPenalties=True, **kwargs) # EW cap need increase groups = [ 'Burst Jammer', 'Weapon Disruptor', 'ECM', 'Stasis Grappler', 'Sensor Dampener', 'Target Painter'] fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'activationBlocked', src.getModifiedItemAttr('networkedSensorArrayDisallowCapitalMicroJump'), **kwargs) class Effect6570(BaseEffect): """ skillBonusFighterHangarManagement Used by: Skill: Fighter Hangar Management """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.ship.boostItemAttr('fighterCapacity', src.getModifiedItemAttr('skillBonusFighterHangarSize') * lvl, **kwargs) class Effect6571(BaseEffect): """ skillBonusCapitalAutocannonSpecialization Used by: Skill: Capital Autocannon Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Autocannon Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6572(BaseEffect): """ skillBonusCapitalArtillerySpecialization Used by: Skill: Capital Artillery Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Artillery Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6573(BaseEffect): """ skillBonusCapitalBlasterSpecialization Used by: Skill: Capital Blaster Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Blaster Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6574(BaseEffect): """ skillBonusCapitalRailgunSpecialization Used by: Skill: Capital Railgun Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Railgun Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6575(BaseEffect): """ skillBonusCapitalPulseLaserSpecialization Used by: Skill: Capital Pulse Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Pulse Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6576(BaseEffect): """ skillBonusCapitalBeamLaserSpecialization Used by: Skill: Capital Beam Laser Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Beam Laser Specialization'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) class Effect6577(BaseEffect): """ skillBonusXLCruiseMissileSpecialization Used by: Skill: XL Cruise Missile Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missile Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6578(BaseEffect): """ skillBonusXLTorpedoSpecialization Used by: Skill: XL Torpedo Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedo Specialization'), 'speed', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6580(BaseEffect): """ shipBonusRole2LogisticDroneRepAmountBonus Used by: Ships from group: Force Auxiliary (5 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6581(BaseEffect): """ moduleBonusTriageModule Used by: Variations of module: Triage Module I (2 of 2) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Remote effect bonuses (duration / amount / range / falloff) for skill, amtAttr, stack in ( ('Capital Remote Armor Repair Systems', 'armorDamageAmount', True), ('Capital Shield Emission Systems', 'shieldBonus', True), ('Capital Capacitor Emission Systems', 'powerTransferAmount', False), ('Capital Remote Hull Repair Systems', 'structureDamageAmount', False)): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration', src.getModifiedItemAttr('siegeRemoteLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeRemoteLogisticsAmountBonus'), stackingPenalties=stack, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'maxRange', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'falloffEffectiveness', src.getModifiedItemAttr('siegeRemoteLogisticsRangeBonus'), stackingPenalties=True, **kwargs) # Local armor/shield rep effects (duration / amount) for skill, amtAttr in ( ('Capital Shield Operation', 'shieldBonus'), ('Capital Repair Systems', 'armorDamageAmount')): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Speed bonus fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) # Scan resolution multiplier fit.ship.multiplyItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionMultiplier'), stackingPenalties=True, **kwargs) # Mass multiplier fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, **kwargs) # Max locked targets fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) # EW cap need increase groups = [ 'Burst Jammer', 'Weapon Disruptor', 'ECM', 'Stasis Grappler', 'Sensor Dampener', 'Target Painter'] fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or mod.item.requiresSkill('Propulsion Jamming'), 'capacitorNeed', src.getModifiedItemAttr('ewCapacitorNeedBonus'), **kwargs) # todo: test for April 2016 release # Block EWAR & projected effects fit.ship.forceItemAttr('disallowOffensiveModifiers', src.getModifiedItemAttr('disallowOffensiveModifiers'), **kwargs) fit.ship.forceItemAttr('disallowAssistance', src.getModifiedItemAttr('disallowAssistance'), **kwargs) # new in April 2016 release fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) class Effect6582(BaseEffect): """ moduleBonusSiegeModule Used by: Modules named like: Siege Module (4 of 4) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Turrets fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret') or mod.item.requiresSkill('Capital Hybrid Turret') or mod.item.requiresSkill('Capital Projectile Turret') or mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', src.getModifiedItemAttr('siegeTurretDamageBonus'), **kwargs) # Missiles for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes'), '%sDamage' % type, src.getModifiedItemAttr('siegeMissileDamageBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes') or mod.item.requiresSkill('XL Cruise Missiles'), 'speed', src.getModifiedItemAttr('siegeLauncherROFBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Torpedo', 'speed', src.getModifiedItemAttr('siegeHAWMissileROFBonus'), stackingPenalties=True, penaltyGroup='postPercent', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'maxVelocity', src.getModifiedItemAttr('siegeTorpedoVelocityBonus'), stackingPenalties=True, **kwargs) # Tank fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('siegeLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mobility & safety penalties fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) # Ewar and assistance resistances fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs) class Effect6591(BaseEffect): """ shipBonusSupercarrierA3WarpStrength Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierA3'), skill='Amarr Carrier', **kwargs) class Effect6592(BaseEffect): """ shipBonusSupercarrierC3WarpStrength Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierC3'), skill='Caldari Carrier', **kwargs) class Effect6593(BaseEffect): """ shipBonusSupercarrierG3WarpStrength Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierG3'), skill='Gallente Carrier', **kwargs) class Effect6594(BaseEffect): """ shipBonusSupercarrierM3WarpStrength Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusSupercarrierM3'), skill='Minmatar Carrier', **kwargs) class Effect6595(BaseEffect): """ shipBonusCarrierA4WarfareLinksBonus Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6596(BaseEffect): """ shipBonusCarrierC4WarfareLinksBonus Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierC4'), skill='Caldari Carrier', **kwargs) class Effect6597(BaseEffect): """ shipBonusCarrierG4WarfareLinksBonus Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierG4'), skill='Gallente Carrier', **kwargs) class Effect6598(BaseEffect): """ shipBonusCarrierM4WarfareLinksBonus Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusCarrierM4'), skill='Minmatar Carrier', **kwargs) class Effect6599(BaseEffect): """ shipBonusCarrierA1ArmorResists Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierA1'), skill='Amarr Carrier', **kwargs) class Effect6600(BaseEffect): """ shipBonusCarrierC1ShieldResists Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCarrierC1'), skill='Caldari Carrier', **kwargs) class Effect6601(BaseEffect): """ shipBonusCarrierG1FighterDamage Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierG1'), skill='Gallente Carrier', **kwargs) class Effect6602(BaseEffect): """ shipBonusCarrierM1FighterDamage Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusCarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6603(BaseEffect): """ shipBonusSupercarrierA1FighterDamage Used by: Ship: Aeon Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierA1'), skill='Amarr Carrier', **kwargs) class Effect6604(BaseEffect): """ shipBonusSupercarrierC1FighterDamage Used by: Ship: Revenant Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierC1'), skill='Caldari Carrier', **kwargs) class Effect6605(BaseEffect): """ shipBonusSupercarrierG1FighterDamage Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierG1'), skill='Gallente Carrier', **kwargs) class Effect6606(BaseEffect): """ shipBonusSupercarrierM1FighterDamage Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6607(BaseEffect): """ shipBonusSupercarrierA5WarfareLinksBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierA5'), skill='Amarr Carrier', **kwargs) class Effect6608(BaseEffect): """ shipBonusSupercarrierC5WarfareLinksBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Command') or mod.item.requiresSkill('Information Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierC5'), skill='Caldari Carrier', **kwargs) class Effect6609(BaseEffect): """ shipBonusSupercarrierG5WarfareLinksBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Armored Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierG5'), skill='Gallente Carrier', **kwargs) class Effect6610(BaseEffect): """ shipBonusSupercarrierM5WarfareLinksBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Skirmish Command') or mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusSupercarrierM5'), skill='Minmatar Carrier', **kwargs) class Effect6611(BaseEffect): """ shipBonusSupercarrierC2AfterburnerBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6612(BaseEffect): """ shipBonusSupercarrierA2FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionVelocity', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6613(BaseEffect): """ shipBonusSupercarrierRole1NumWarfareLinks Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6614(BaseEffect): """ shipBonusSupercarrierRole2ArmorShieldModuleBonus Used by: Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6615(BaseEffect): """ shipBonusSupercarrierA4BurstProjectorBonus Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationWeaponDisruptionBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6616(BaseEffect): """ shipBonusSupercarrierC4BurstProjectorBonus Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationECMJammerBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierC4'), skill='Caldari Carrier', **kwargs) class Effect6617(BaseEffect): """ shipBonusSupercarrierG4BurstProjectorBonus Used by: Ship: Nyx """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationSensorDampeningBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierG4'), skill='Gallente Carrier', **kwargs) class Effect6618(BaseEffect): """ shipBonusSupercarrierM4BurstProjectorBonus Used by: Ship: Hel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'durationTargetIlluminationBurstProjector', src.getModifiedItemAttr('shipBonusSupercarrierM4'), skill='Minmatar Carrier', **kwargs) class Effect6619(BaseEffect): """ shipBonusCarrierRole1NumWarfareLinks Used by: Ships from group: Carrier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6620(BaseEffect): """ shipBonusDreadnoughtC3ReloadBonus Used by: Ships named like: Phoenix (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', src.getModifiedItemAttr('shipBonusDreadnoughtC3'), skill='Caldari Dreadnought', **kwargs) class Effect6621(BaseEffect): """ shipBonusSupercarrierA2ArmorResists Used by: Ship: Aeon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6622(BaseEffect): """ shipBonusSupercarrierC2ShieldResists Used by: Ship: Wyvern """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusSupercarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6623(BaseEffect): """ shipBonusSupercarrierG2FighterHitpoints Used by: Variations of ship: Nyx (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusSupercarrierG2'), skill='Gallente Carrier', **kwargs) class Effect6624(BaseEffect): """ shipBonusSupercarrierM2FighterVelocity Used by: Ship: Hel Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusSupercarrierM2'), skill='Minmatar Carrier', **kwargs) class Effect6625(BaseEffect): """ shipBonusCarrierA2SupportFighterBonusRange Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerOptimalRange', src.getModifiedItemAttr('shipBonusCarrierA2'), skill='Amarr Carrier', **kwargs) class Effect6626(BaseEffect): """ shipBonusCarrierC2SupportFighterBonusRange Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityECMRangeOptimal', src.getModifiedItemAttr('shipBonusCarrierC2'), skill='Caldari Carrier', **kwargs) class Effect6627(BaseEffect): """ shipBonusCarrierG2SupportFighterBonusRange Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityWarpDisruptionRange', src.getModifiedItemAttr('shipBonusCarrierG2'), skill='Gallente Carrier', **kwargs) class Effect6628(BaseEffect): """ shipBonusCarrierM2SupportFighterBonusRange Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterSquadronOrbitRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierOptimalRange', src.getModifiedItemAttr('shipBonusCarrierM2'), skill='Minmatar Carrier', **kwargs) class Effect6629(BaseEffect): """ scriptResistanceBonusBonus Used by: Charges named like: Resistance Script (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('emDamageResistanceBonus', src.getModifiedChargeAttr('emDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('explosiveDamageResistanceBonus', src.getModifiedChargeAttr('explosiveDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('kineticDamageResistanceBonus', src.getModifiedChargeAttr('kineticDamageResistanceBonusBonus'), **kwargs) src.boostItemAttr('thermalDamageResistanceBonus', src.getModifiedChargeAttr('thermalDamageResistanceBonusBonus'), **kwargs) class Effect6634(BaseEffect): """ shipBonusTitanA1DamageBonus Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) class Effect6635(BaseEffect): """ shipBonusTitanC1KinDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) class Effect6636(BaseEffect): """ shipBonusTitanG1DamageBonus Used by: Ship: Erebus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) class Effect6637(BaseEffect): """ shipBonusTitanM1DamageBonus Used by: Ship: Azariel Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6638(BaseEffect): """ shipBonusTitanC2ROFBonus Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Cruise', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher XL Torpedo', 'speed', src.getModifiedItemAttr('shipBonusTitanC2'), skill='Caldari Titan', **kwargs) class Effect6639(BaseEffect): """ shipBonusSupercarrierA4FighterApplicationBonus Used by: Ship: Revenant """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileExplosionRadius', src.getModifiedItemAttr('shipBonusSupercarrierA4'), skill='Amarr Carrier', **kwargs) class Effect6640(BaseEffect): """ shipBonusRole1NumWarfareLinks Used by: Ships from group: Titan (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6641(BaseEffect): """ shipBonusRole2ArmorPlates&ShieldExtendersBonus Used by: Ships from group: Titan (8 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'armorHPBonusAdd', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Upgrades'), 'capacityBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6642(BaseEffect): """ skillBonusDoomsdayRapidFiring Used by: Skill: Doomsday Rapid Firing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Doomsday Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6647(BaseEffect): """ shipBonusTitanA3WarpStrength Used by: Variations of ship: Avatar (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanA3'), skill='Amarr Titan', **kwargs) class Effect6648(BaseEffect): """ shipBonusTitanC3WarpStrength Used by: Variations of ship: Leviathan (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanC3'), skill='Caldari Titan', **kwargs) class Effect6649(BaseEffect): """ shipBonusTitanG3WarpStrength Used by: Ships from group: Titan (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanG3'), skill='Gallente Titan', **kwargs) class Effect6650(BaseEffect): """ shipBonusTitanM3WarpStrength Used by: Ships from group: Titan (4 of 8) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('shipBonusTitanM3'), skill='Minmatar Titan', **kwargs) class Effect6651(BaseEffect): """ shipModuleAncillaryRemoteArmorRepairer Used by: Modules from group: Ancillary Remote Armor Repairer (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if module.charge and module.charge.name == 'Nanite Repair Paste': multiplier = 3 else: multiplier = 1 amount = module.getModifiedItemAttr('armorDamageAmount') * multiplier amount *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) speed = module.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((amount, speed)) fit._armorRrPreSpool.append((amount, speed)) fit._armorRrFullSpool.append((amount, speed)) class Effect6652(BaseEffect): """ shipModuleAncillaryRemoteShieldBooster Used by: Modules from group: Ancillary Remote Shield Booster (4 of 4) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return amount = module.getModifiedItemAttr('shieldBonus') amount *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) speed = module.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((amount, speed)) class Effect6653(BaseEffect): """ shipBonusTitanA2CapNeed Used by: Ship: Avatar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusTitanA2'), skill='Amarr Titan', **kwargs) class Effect6654(BaseEffect): """ shipBonusTitanG2ROFBonus Used by: Variations of ship: Erebus (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) class Effect6655(BaseEffect): """ shipBonusTitanM2ROFBonus Used by: Ship: Azariel Ship: Ragnarok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusTitanM2'), skill='Minmatar Titan', **kwargs) class Effect6657(BaseEffect): """ shipBonusTitanC5AllDamageBonus Used by: Ship: Leviathan """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanC5'), skill='Caldari Titan', **kwargs) class Effect6658(BaseEffect): """ moduleBonusBastionModule Used by: Variations of module: Bastion Module I (5 of 5) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): # Resistances for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): bonus = '%s%sDamageResonance' % (attrPrefix, damageType) bonus = '%s%s' % (bonus[0].lower(), bonus[1:]) booster = '%s%sDamageResonance' % (layer, damageType) penalize = False if layer == 'hull' else True fit.ship.multiplyItemAttr(bonus, src.getModifiedItemAttr(booster), stackingPenalties=penalize, penaltyGroup='preMul', **kwargs) # Turrets fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret') or mod.item.requiresSkill('Large Precursor Weapon'), 'maxRange', src.getModifiedItemAttr('maxRangeBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret'), 'falloff', src.getModifiedItemAttr('falloffBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret') or mod.item.requiresSkill('Large Hybrid Turret') or mod.item.requiresSkill('Large Projectile Turret') or mod.item.requiresSkill('Large Precursor Weapon'), 'speed', src.getModifiedItemAttr('bastionTurretROFBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) # Missiles fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles') or mod.charge.requiresSkill('Heavy Missiles'), 'maxVelocity', src.getModifiedItemAttr('missileVelocityBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cruise Missiles') or mod.item.requiresSkill('Torpedoes') or mod.item.requiresSkill('Torpedo Specialization') or mod.item.requiresSkill('Cruise Missile Specialization'), 'speed', src.getModifiedItemAttr('bastionMissileROFBonus'), stackingPenalties=True, penaltyGroup='postPerc', **kwargs) # Tanking fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorDamageAmountBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shieldBoostMultiplier'), stackingPenalties=True, **kwargs) for attrName in ('duration', 'capacitorNeed'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), attrName, src.getModifiedItemAttr('bastionModeArmorRepairCapDurationBonus'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), attrName, src.getModifiedItemAttr('bastionModeShieldBoosterCapDurationBonus'), **kwargs) # Speed penalty fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), **kwargs) # new with April 2016 release for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): fit.ship.boostItemAttr('scan{}Strength'.format(scanType), src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) # This one was removed from expressions, but somehow MJD is still blocked, so leaving it here fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Micro Jump Drive Operation'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) fit.ship.boostItemAttr('targetPainterResistance', src.getModifiedItemAttr('targetPainterResistanceBonus'), **kwargs) fit.ship.boostItemAttr('weaponDisruptionResistance', src.getModifiedItemAttr('weaponDisruptionResistanceBonus'), **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.forceItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.forceItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) class Effect6660(BaseEffect): """ higgsWarpBubbleImmuneRemoval Used by: Modules from group: Burst Jammer (11 of 11) Modules from group: Rig Anchor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.forceItemAttr('warpBubbleImmune', ship.getModifiedItemAttr('warpBubbleImmuneModifier'), **kwargs) class Effect6661(BaseEffect): """ shipBonusCarrierM3FighterVelocity Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('shipBonusCarrierM3'), skill='Minmatar Carrier', **kwargs) class Effect6662(BaseEffect): """ shipBonusCarrierG3FighterHitpoints Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusCarrierG3'), skill='Gallente Carrier', **kwargs) class Effect6663(BaseEffect): """ skillBonusDroneInterfacing Used by: Skill: Drone Interfacing """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningDroneAmountPercent', src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs) class Effect6664(BaseEffect): """ skillBonusDroneSharpshooting Used by: Implants named like: Black Market 'Valdimar' Drone Sharpshooting DS (3 of 3) Skill: Drone Sharpshooting """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost( lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus') * lvl, **kwargs) class Effect6665(BaseEffect): """ skillBonusDroneDurability Used by: Implants named like: Black Market 'Valdimar' Drone Durability DD (3 of 3) Implants named like: Halcyon B Booster (5 of 5) Skill: Drone Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('armorHpBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus') * lvl, **kwargs) class Effect6667(BaseEffect): """ skillBonusDroneNavigation Used by: Implants named like: Black Market 'Valdimar' Drone Navigation DN (3 of 3) Implants named like: Federation Application Booster (4 of 4) Implants named like: Imperial Application Booster (4 of 4) Skill: Drone Navigation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6669(BaseEffect): """ moduleBonusCapitalDroneDurabilityEnhancer Used by: Variations of module: Capital Drone Durability Enhancer I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('hullHpBonus'), **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6670(BaseEffect): """ moduleBonusCapitalDroneScopeChip Used by: Variations of module: Capital Drone Scope Chip I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesRange', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileRangeOptimal', src.getModifiedItemAttr('rangeSkillBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6671(BaseEffect): """ moduleBonusCapitalDroneSpeedAugmentor Used by: Variations of module: Capital Drone Speed Augmentor I (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'maxVelocity', src.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('cpuOutput', src.getModifiedItemAttr('drawback'), **kwargs) class Effect6672(BaseEffect): """ structureCombatRigSecurityModification Used by: Items from market group: Structure Modifications > Structure Combat Rigs (32 of 34) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): secMap = { FitSystemSecurity.HISEC: 'hiSecModifier', FitSystemSecurity.LOWSEC: 'lowSecModifier', FitSystemSecurity.NULLSEC: 'nullSecModifier', FitSystemSecurity.WSPACE: 'nullSecModifier'} fitSec = fit.getSystemSecurity() attrName = secMap[fitSec] secModifier = module.getModifiedItemAttr(attrName) module.multiplyItemAttr('structureRigDoomsdayDamageLossTargetBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigScanResBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigPDRangeBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigPDCapUseBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileExploVeloBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileVelocityBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarOptimalBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarFalloffBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigEwarCapUseBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMissileExplosionRadiusBonus', secModifier, **kwargs) module.multiplyItemAttr('structureRigMaxTargetRangeBonus', secModifier, **kwargs) class Effect6679(BaseEffect): """ skillStructureDoomsdayDurationBonus Used by: Skill: Structure Doomsday Operation """ type = 'passive', 'structure' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Doomsday Weapon', 'duration', src.getModifiedItemAttr('durationBonus'), skill='Structure Doomsday Operation', **kwargs) class Effect6681(BaseEffect): """ shipBonusRole3NumWarfareLinks Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6682(BaseEffect): """ structureModuleEffectStasisWebifier Used by: Structure Modules from group: Structure Stasis Webifier (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return speedBoost = module.getModifiedItemAttr('speedFactor') speedBoost *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxVelocity', speedBoost, stackingPenalties=True, **kwargs) class Effect6683(BaseEffect): """ structureModuleEffectTargetPainter Used by: Variations of structure module: Standup Target Painter I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return appliedBoost = container.getModifiedItemAttr('signatureRadiusBonus') appliedBoost *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('signatureRadius', appliedBoost, stackingPenalties=True, **kwargs) class Effect6684(BaseEffect): """ structureModuleEffectRemoteSensorDampener Used by: Variations of structure module: Standup Remote Sensor Dampener I (2 of 2) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('maxTargetRangeBonus') * rangeFactor, stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', module.getModifiedItemAttr('scanResolutionBonus') * rangeFactor, stackingPenalties=True, **kwargs) class Effect6685(BaseEffect): """ structureModuleEffectECM Used by: Structure Modules from group: Structure ECM Battery (3 of 3) """ type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) strength *= calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6686(BaseEffect): """ structureModuleEffectWeaponDisruption Used by: Variations of structure module: Standup Weapon Disruptor I (2 of 2) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return rangeFactor = calculateRangeFactor( srcOptimalRange=module.getModifiedItemAttr('maxRange'), srcFalloffRange=module.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) for srcAttr, tgtAttr in ( ('aoeCloudSizeBonus', 'aoeCloudSize'), ('aoeVelocityBonus', 'aoeVelocity'), ('missileVelocityBonus', 'maxVelocity'), ('explosionDelayBonus', 'explosionDelay') ): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, module.getModifiedItemAttr(srcAttr) * rangeFactor, stackingPenalties=True, **kwargs) class Effect6687(BaseEffect): """ npcEntityRemoteArmorRepairer Used by: Drones named like: Armor Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = container.getModifiedItemAttr('armorDamageAmount') duration = container.getModifiedItemAttr('duration') / 1000.0 fit._armorRr.append((bonus, duration)) fit._armorRrPreSpool.append((bonus, duration)) fit._armorRrFullSpool.append((bonus, duration)) class Effect6688(BaseEffect): """ npcEntityRemoteShieldBooster Used by: Drones named like: Shield Maintenance Bot (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = container.getModifiedItemAttr('shieldBonus') duration = container.getModifiedItemAttr('duration') / 1000.0 fit._shieldRr.append((bonus, duration)) class Effect6689(BaseEffect): """ npcEntityRemoteHullRepairer Used by: Drones named like: Hull Maintenance Bot (6 of 6) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return bonus = module.getModifiedItemAttr('structureDamageAmount') duration = module.getModifiedItemAttr('duration') / 1000.0 fit._hullRr.append((bonus, duration)) class Effect6690(BaseEffect): """ remoteWebifierEntity Used by: Drones named like: SW (6 of 6) """ type = 'active', 'projected' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('maxVelocity', module.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) class Effect6691(BaseEffect): """ entityEnergyNeutralizerFalloff Used by: Drones named like: EV (6 of 6) """ type = 'active', 'projected' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): if 'projected' not in context: return if not ((hasattr(src, 'state') and src.state >= FittingModuleState.ACTIVE) or hasattr(src, 'amountActive')): return if src.getModifiedItemAttr('energyNeutralizerRangeOptimal', 0) < (projectionRange or 0): return amount = src.getModifiedItemAttr('energyNeutralizerAmount') if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict amount *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) time = src.getModifiedItemAttr('energyNeutralizerDuration') fit.addDrain(src, time, amount, 0) class Effect6692(BaseEffect): """ remoteTargetPaintEntity Used by: Drones named like: TP (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('signatureRadius', container.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6693(BaseEffect): """ remoteSensorDampEntity Used by: Drones named like: SD (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return fit.ship.boostItemAttr('maxTargetRange', container.getModifiedItemAttr('maxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', container.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect6694(BaseEffect): """ npcEntityWeaponDisruptor Used by: Drones named like: TD (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('maxRange', 0) < (projectionRange or 0): return for srcAttr, tgtAttr in ( ('trackingSpeedBonus', 'trackingSpeed'), ('maxRangeBonus', 'maxRange'), ('falloffBonus', 'falloff') ): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), tgtAttr, container.getModifiedItemAttr(srcAttr), stackingPenalties=True, **kwargs) class Effect6695(BaseEffect): """ entityECMFalloff Used by: Drones named like: EC (6 of 6) """ type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if container.getModifiedItemAttr('ECMRangeOptimal', 0) < (projectionRange or 0): return strength = container.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6697(BaseEffect): """ rigDrawbackReductionArmor Used by: Skill: Armor Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Armor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Resource Processing', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6698(BaseEffect): """ rigDrawbackReductionAstronautics Used by: Skill: Astronautics Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Navigation', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Anchor', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6699(BaseEffect): """ rigDrawbackReductionDrones Used by: Skill: Drones Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Drones', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6700(BaseEffect): """ rigDrawbackReductionElectronic Used by: Skill: Electronic Superiority Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Electronic Systems', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Scanning', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Targeting', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6701(BaseEffect): """ rigDrawbackReductionProjectile Used by: Skill: Projectile Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Projectile Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6702(BaseEffect): """ rigDrawbackReductionEnergyWeapon Used by: Skill: Energy Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Energy Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6703(BaseEffect): """ rigDrawbackReductionHybrid Used by: Skill: Hybrid Weapon Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Hybrid Weapon', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6704(BaseEffect): """ rigDrawbackReductionLauncher Used by: Skill: Launcher Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Launcher', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6705(BaseEffect): """ rigDrawbackReductionShield Used by: Skill: Shield Rigging """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Rig Shield', 'drawback', src.getModifiedItemAttr('rigDrawbackBonus') * lvl, **kwargs) class Effect6706(BaseEffect): """ setBonusAsklepian Used by: Implants named like: grade Asklepian (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Cybernetics'), 'armorRepairBonus', src.getModifiedItemAttr('implantSetSerpentis2'), **kwargs) class Effect6708(BaseEffect): """ armorRepairAmountBonusSubcap Used by: Implants named like: Federation Defense Booster (4 of 4) Implants named like: Republic Defense Booster (4 of 4) Implants named like: grade Asklepian (15 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('armorRepairBonus'), **kwargs) class Effect6709(BaseEffect): """ shipBonusRole1CapitalHybridDamageBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6710(BaseEffect): """ shipBonusDreadnoughtM1WebStrengthBonus Used by: Ship: Vehement """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6711(BaseEffect): """ shipBonusRole3CapitalHybridDamageBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6712(BaseEffect): """ shipBonusTitanM1WebStrengthBonus Used by: Ship: Vanquisher """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'speedFactor', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6713(BaseEffect): """ shipBonusSupercarrierM1BurstProjectorWebBonus Used by: Ship: Vendetta """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Burst Projector Operation'), 'speedFactor', src.getModifiedItemAttr('shipBonusSupercarrierM1'), skill='Minmatar Carrier', **kwargs) class Effect6714(BaseEffect): """ ECMBurstJammer Used by: Modules from group: Burst Jammer (11 of 11) """ type = 'projected', 'active' runTime = 'late' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return if module.getModifiedItemAttr('ecmBurstRange', 0) < (projectionRange or 0): return strength = module.getModifiedItemAttr('scan{0}StrengthBonus'.format(fit.scanType)) if 'effect' in kwargs: from eos.modifiedAttributeDict import ModifiedAttributeDict strength *= ModifiedAttributeDict.getResistance(fit, kwargs['effect']) fit.addProjectedEcm(strength) class Effect6720(BaseEffect): """ shipBonusDroneRepairMC1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldBonus', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect6721(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairOptimalFalloff1 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect6722(BaseEffect): """ roleBonusRemoteArmorRepairOptimalFalloff Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'falloffEffectiveness', src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'maxRange', src.getModifiedItemAttr('roleBonusRepairRange'), **kwargs) class Effect6723(BaseEffect): """ shipBonusCloakCpuMC2 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect6724(BaseEffect): """ eliteBonusLogisticRemoteArmorRepairDuration3 Used by: Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('eliteBonusLogistics3'), skill='Logistics Cruisers', **kwargs) class Effect6725(BaseEffect): """ shipBonusSETFalloffAF2 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff', src.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect6726(BaseEffect): """ shipBonusCloakCpuMF1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6727(BaseEffect): """ eliteBonusCoverOpsNOSNeutFalloff1 Used by: Ship: Caedes """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'falloffEffectiveness', src.getModifiedItemAttr('eliteBonusCovertOps1'), stackingPenalties=True, skill='Covert Ops', **kwargs) class Effect6730(BaseEffect): """ moduleBonusMicrowarpdrive Used by: Modules from group: Propulsion Module (73 of 147) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') # It is actually a postMul, see black hole speed interactions fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonus'), stackingPenalties=True, **kwargs) class Effect6731(BaseEffect): """ moduleBonusAfterburner Used by: Modules from group: Propulsion Module (74 of 147) """ runTime = 'late' type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('mass', module.getModifiedItemAttr('massAddition'), **kwargs) speedBoost = module.getModifiedItemAttr('speedFactor') mass = fit.ship.getModifiedItemAttr('mass') thrust = module.getModifiedItemAttr('speedBoostFactor') # It is actually a postMul, see black hole speed interactions fit.ship.boostItemAttr('maxVelocity', speedBoost * thrust / mass, stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect6732(BaseEffect): """ moduleBonusWarfareLinkArmor Used by: Variations of module: Armor Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6733(BaseEffect): """ moduleBonusWarfareLinkShield Used by: Variations of module: Shield Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6734(BaseEffect): """ moduleBonusWarfareLinkSkirmish Used by: Variations of module: Skirmish Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6735(BaseEffect): """ moduleBonusWarfareLinkInfo Used by: Variations of module: Expedition Command Burst I (3 of 3) Variations of module: Information Command Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6736(BaseEffect): """ moduleBonusWarfareLinkMining Used by: Variations of module: Mining Foreman Burst I (3 of 3) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedChargeAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6737(BaseEffect): """ chargeBonusWarfareCharge Used by: Items from market group: Ammunition & Charges > Command Burst Charges (19 of 19) """ type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 4): value = module.getModifiedChargeAttr('warfareBuff{}Multiplier'.format(x)) module.multiplyItemAttr('warfareBuff{}Value'.format(x), value, **kwargs) class Effect6753(BaseEffect): """ moduleTitanEffectGenerator Used by: Modules from group: Titan Phenomena Generator (4 of 4) """ type = 'active', 'gang' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): for x in range(1, 5): if module.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = module.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = module.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, module, kwargs['effect']) class Effect6762(BaseEffect): """ miningDroneSpecBonus Used by: Skill: Mining Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'miningAmount', src.getModifiedItemAttr('miningAmountBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6763(BaseEffect): """ iceHarvestingDroneOperationDurationBonus Used by: Modules named like: Drone Mining Augmentor (8 of 8) Skill: Ice Harvesting Drone Operation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level if 'skill' in context else 1 fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) class Effect6764(BaseEffect): """ iceHarvestingDroneSpecBonus Used by: Skill: Ice Harvesting Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'duration', src.getModifiedItemAttr('rofBonus') * lvl, **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Ice Harvesting Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect6765(BaseEffect): """ spatialPhenomenaGenerationDurationBonus Used by: Skill: Spatial Phenomena Generation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Spatial Phenomena Generation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6766(BaseEffect): """ commandProcessorEffect Used by: Modules named like: Command Processor I (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupActive', src.getModifiedItemAttr('maxGangModules'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Leadership'), 'maxGroupOnline', src.getModifiedItemAttr('maxGangModules'), **kwargs) class Effect6769(BaseEffect): """ commandBurstAoEBonus Used by: Skill: Fleet Command Skill: Leadership Skill: Wing Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('areaOfEffectBonus') * src.level, **kwargs) class Effect6770(BaseEffect): """ armoredCommandDurationBonus Used by: Skill: Armored Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6771(BaseEffect): """ shieldCommandDurationBonus Used by: Skill: Shield Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6772(BaseEffect): """ informationCommandDurationBonus Used by: Skill: Information Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6773(BaseEffect): """ skirmishCommandDurationBonus Used by: Skill: Skirmish Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6774(BaseEffect): """ miningForemanDurationBonus Used by: Skill: Mining Foreman """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6776(BaseEffect): """ armoredCommandStrengthBonus Used by: Skill: Armored Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Armored Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6777(BaseEffect): """ shieldCommandStrengthBonus Used by: Skill: Shield Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6778(BaseEffect): """ informationCommandStrengthBonus Used by: Skill: Information Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Information Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6779(BaseEffect): """ skirmishCommandStrengthBonus Used by: Skill: Skirmish Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff3Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff4Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff1Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Skirmish Command'), 'warfareBuff2Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6780(BaseEffect): """ miningForemanStrengthBonus Used by: Skill: Mining Director """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect6782(BaseEffect): """ commandBurstReloadTimeBonus Used by: Skill: Command Burst Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'reloadTime', src.getModifiedItemAttr('reloadTimeBonus') * lvl, **kwargs) class Effect6783(BaseEffect): """ commandBurstAoERoleBonus Used by: Ships from group: Carrier (4 of 4) Ships from group: Combat Battlecruiser (21 of 21) Ships from group: Command Ship (8 of 8) Ships from group: Force Auxiliary (6 of 6) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (8 of 8) Subsystems named like: Offensive Support Processor (4 of 4) Ship: Odysseus Ship: Orca Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('roleBonusCommandBurstAoERange'), **kwargs) class Effect6786(BaseEffect): """ shieldCommandBurstBonusICS3 Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusICS3'), skill='Industrial Command Ships', **kwargs) class Effect6789(BaseEffect): """ industrialBonusDroneDamage Used by: Ships from group: Blockade Runner (5 of 5) Ships from group: Deep Space Transport (5 of 5) Ships from group: Hauler (18 of 18) Ships from group: Industrial Command Ship (2 of 2) Ship: Hulk Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialBonusDroneDamage'), **kwargs) class Effect6793(BaseEffect): """ miningForemanBurstBonusORECapital2 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital2'), skill='Capital Industrial Ships', **kwargs) class Effect6794(BaseEffect): """ shieldCommandBurstBonusORECapital3 Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff4Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff1Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff3Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Command'), 'warfareBuff2Value', src.getModifiedItemAttr('shipBonusORECapital3'), skill='Capital Industrial Ships', **kwargs) class Effect6796(BaseEffect): """ shipModeSHTDamagePostDiv Used by: Module: Hecate Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6797(BaseEffect): """ shipModeSPTDamagePostDiv Used by: Module: Svipul Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6798(BaseEffect): """ shipModeSETDamagePostDiv Used by: Module: Confessor Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6799(BaseEffect): """ shipModeSmallMissileDamagePostDiv Used by: Module: Jackdaw Sharpshooter Mode Module: Skua Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): types = ('thermal', 'em', 'explosive', 'kinetic') for type in types: fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), '{}Damage'.format(type), 1 / module.getModifiedItemAttr('modeDamageBonusPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6800(BaseEffect): """ modeDampTDResistsPostDiv Used by: Modules named like: Sharpshooter Mode (5 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('weaponDisruptionResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs) fit.ship.multiplyItemAttr('sensorDampenerResistance', 1 / module.getModifiedItemAttr('modeEwarResistancePostDiv'), **kwargs) class Effect6801(BaseEffect): """ modeMWDandABBoostPostDiv Used by: Modules named like: Propulsion Mode (3 of 5) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('High Speed Maneuvering') or mod.item.requiresSkill('Afterburner'), 'speedFactor', 1 / module.getModifiedItemAttr('modeVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect6807(BaseEffect): """ invulnerabilityCoreDurationBonus Used by: Skill: Invulnerability Core Operation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Invulnerability Core Operation'), 'duration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect6844(BaseEffect): """ skillMultiplierDefenderMissileVelocity Used by: Skill: Defender Missiles """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Defender Missiles'), 'maxVelocity', skill.getModifiedItemAttr('missileVelocityBonus') * skill.level, **kwargs) class Effect6845(BaseEffect): """ shipBonusCommandDestroyerRole1DefenderBonus Used by: Ships from group: Command Destroyer (5 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'), 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6851(BaseEffect): """ shipBonusRole3CapitalEnergyDamageBonus Used by: Ship: Chemosh Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect6852(BaseEffect): """ shipBonusTitanM1WebRangeBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusTitanM1'), skill='Minmatar Titan', **kwargs) class Effect6853(BaseEffect): """ shipBonusTitanA1EnergyWarfareAmountBonus Used by: Ship: Molok """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusTitanA1'), skill='Amarr Titan', **kwargs) class Effect6855(BaseEffect): """ shipBonusDreadnoughtA1EnergyWarfareAmountBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect6856(BaseEffect): """ shipBonusDreadnoughtM1WebRangeBonus Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect6857(BaseEffect): """ shipBonusForceAuxiliaryA1NosferatuRangeBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'falloffEffectiveness', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6858(BaseEffect): """ shipBonusForceAuxiliaryA1NosferatuDrainAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryA1'), skill='Amarr Carrier', **kwargs) class Effect6859(BaseEffect): """ shipBonusRole4NosferatuCPUBonus Used by: Ship: Dagon Ship: Rabisu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Nosferatu', 'cpu', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) class Effect6860(BaseEffect): """ shipBonusRole5RemoteArmorRepairPowergridBonus Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5'), **kwargs) class Effect6861(BaseEffect): """ shipBonusRole5CapitalRemoteArmorRepairPowergridBonus Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'power', src.getModifiedItemAttr('shipBonusRole5'), **kwargs) class Effect6862(BaseEffect): """ shipBonusForceAuxiliaryM1RemoteArmorRepairDuration Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'duration', src.getModifiedItemAttr('shipBonusForceAuxiliaryM1'), skill='Minmatar Carrier', **kwargs) class Effect6865(BaseEffect): """ eliteBonusCoverOpsWarpVelocity1 Used by: Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps1'), skill='Covert Ops', **kwargs) class Effect6866(BaseEffect): """ shipBonusSmallMissileFlightTimeCF1 Used by: Ship: Pacifier Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Rockets'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Light Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect6867(BaseEffect): """ shipBonusSPTRoFMF Used by: Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', src.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect6871(BaseEffect): """ concordSecStatusTankBonus Used by: Ship: Enforcer Ship: Marshal Ship: Pacifier """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects # via https://forums.eveonline.com/default.aspx?g=posts&t=515826 try: sec_status = ship.owner.getPilotSecurity(low_limit=0, high_limit=5) except (KeyboardInterrupt, SystemExit): raise except: return bonus = sec_status * 10 fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', bonus, **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', bonus, **kwargs) class Effect6872(BaseEffect): """ eliteReconStasisWebBonus1 Used by: Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6873(BaseEffect): """ eliteBonusReconWarpVelocity3 Used by: Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6874(BaseEffect): """ shipBonusMedMissileFlightTimeCC2 Used by: Ship: Cobra Ship: Enforcer """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCC2'), skill='Caldari Cruiser', **kwargs) class Effect6877(BaseEffect): """ eliteBonusBlackOpsWarpVelocity1 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('eliteBonusBlackOps1'), stackingPenalties=True, skill='Black Ops', **kwargs) class Effect6878(BaseEffect): """ eliteBonusBlackOpsScramblerRange4 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps4'), skill='Black Ops', **kwargs) class Effect6879(BaseEffect): """ eliteBonusBlackOpsWebRange3 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs) class Effect6880(BaseEffect): """ shipBonusLauncherRoF2CB Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Cruise', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Rapid Heavy', 'speed', src.getModifiedItemAttr('shipBonus2CB'), skill='Caldari Battleship', **kwargs) class Effect6881(BaseEffect): """ shipBonusLargeMissileFlightTimeCB1 Used by: Ship: Marshal Ship: Python """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosionDelay', src.getModifiedItemAttr('shipBonusCB'), skill='Caldari Battleship', **kwargs) class Effect6883(BaseEffect): """ shipBonusForceAuxiliaryM2LocalRepairAmount Used by: Ship: Dagon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusForceAuxiliaryM2'), skill='Minmatar Carrier', **kwargs) class Effect6894(BaseEffect): """ subsystemEnergyNeutFittingReduction Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'cpu', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'power', src.getModifiedItemAttr('subsystemEnergyNeutFittingReduction'), **kwargs) class Effect6895(BaseEffect): """ subsystemMETFittingReduction Used by: Subsystem: Legion Offensive - Liquid Crystal Magnifiers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'cpu', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'power', src.getModifiedItemAttr('subsystemMETFittingReduction'), **kwargs) class Effect6896(BaseEffect): """ subsystemMHTFittingReduction Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector Subsystem: Proteus Offensive - Hybrid Encoding Platform Subsystem: Tengu Offensive - Magnetic Infusion Basin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'cpu', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'power', src.getModifiedItemAttr('subsystemMHTFittingReduction'), **kwargs) class Effect6897(BaseEffect): """ subsystemMPTFittingReduction Used by: Subsystem: Loki Offensive - Projectile Scoping Array """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'power', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'cpu', src.getModifiedItemAttr('subsystemMPTFittingReduction'), **kwargs) class Effect6898(BaseEffect): """ subsystemMRARFittingReduction Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRARFittingReduction'), **kwargs) class Effect6899(BaseEffect): """ subsystemMRSBFittingReduction Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'mediumRemoteRepFittingMultiplier', src.getModifiedItemAttr('subsystemMRSBFittingReduction'), **kwargs) class Effect6900(BaseEffect): """ subsystemMMissileFittingReduction Used by: Subsystem: Legion Offensive - Assault Optimization Subsystem: Loki Offensive - Launcher Efficiency Configuration Subsystem: Tengu Offensive - Accelerated Ejection Bay """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Missile Launcher Heavy', 'Missile Launcher Rapid Light', 'Missile Launcher Heavy Assault') fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'cpu', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, 'power', src.getModifiedItemAttr('subsystemMMissileFittingReduction'), **kwargs) class Effect6908(BaseEffect): """ shipBonusStrategicCruiserCaldariNaniteRepairTime2 Used by: Ship: Tengu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserCaldari2'), skill='Caldari Strategic Cruiser', **kwargs) class Effect6909(BaseEffect): """ shipBonusStrategicCruiserAmarrNaniteRepairTime2 Used by: Ship: Legion """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserAmarr2'), skill='Amarr Strategic Cruiser', **kwargs) class Effect6910(BaseEffect): """ shipBonusStrategicCruiserGallenteNaniteRepairTime2 Used by: Ship: Proteus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserGallente2'), skill='Gallente Strategic Cruiser', **kwargs) class Effect6911(BaseEffect): """ shipBonusStrategicCruiserMinmatarNaniteRepairTime2 Used by: Ship: Loki """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: True, 'moduleRepairRate', ship.getModifiedItemAttr('shipBonusStrategicCruiserMinmatar2'), skill='Minmatar Strategic Cruiser', **kwargs) class Effect6920(BaseEffect): """ structureHPBonusAddPassive Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) Subsystem: Loki Defensive - Adaptive Defense Node """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('hp', module.getModifiedItemAttr('structureHPBonusAdd') or 0, **kwargs) class Effect6921(BaseEffect): """ subSystemBonusAmarrDefensive2ScanProbeStrength Used by: Subsystem: Legion Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) class Effect6923(BaseEffect): """ subsystemBonusMinmatarOffensive1HMLHAMVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive'), skill='Minmatar Offensive Systems', **kwargs) class Effect6924(BaseEffect): """ subsystemBonusMinmatarOffensive3MissileExpVelo Used by: Subsystem: Loki Offensive - Launcher Efficiency Configuration """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', container.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect6925(BaseEffect): """ subsystemBonusGallenteOffensive2DroneVeloTracking Used by: Subsystem: Proteus Offensive - Drone Synthesis Projector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', src.getModifiedItemAttr('subsystemBonusGallenteOffensive2'), skill='Gallente Offensive Systems', **kwargs) class Effect6926(BaseEffect): """ subsystemBonusAmarrPropulsionWarpCapacitor Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion'), skill='Amarr Propulsion Systems', **kwargs) class Effect6927(BaseEffect): """ subsystemBonusMinmatarPropulsionWarpCapacitor Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion'), skill='Minmatar Propulsion Systems', **kwargs) class Effect6928(BaseEffect): """ subsystemBonusCaldariPropulsion2PropModHeatBenefit Used by: Subsystem: Tengu Propulsion - Fuel Catalyst """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusCaldariPropulsion2'), skill='Caldari Propulsion Systems', **kwargs) class Effect6929(BaseEffect): """ subsystemBonusGallentePropulsion2PropModHeatBenefit Used by: Subsystem: Proteus Propulsion - Localized Injectors """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner') or mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('subsystemBonusGallentePropulsion2'), skill='Gallente Propulsion Systems', **kwargs) class Effect6930(BaseEffect): """ subsystemBonusAmarrCore2EnergyResistance Used by: Subsystem: Legion Core - Augmented Antimatter Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusAmarrCore2'), skill='Amarr Core Systems', **kwargs) class Effect6931(BaseEffect): """ subsystemBonusMinmatarCore2EnergyResistance Used by: Subsystem: Loki Core - Augmented Nuclear Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusMinmatarCore2'), skill='Minmatar Core Systems', **kwargs) class Effect6932(BaseEffect): """ subsystemBonusGallenteCore2EnergyResistance Used by: Subsystem: Proteus Core - Augmented Fusion Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusGallenteCore2'), skill='Gallente Core Systems', **kwargs) class Effect6933(BaseEffect): """ subsystemBonusCaldariCore2EnergyResistance Used by: Subsystem: Tengu Core - Augmented Graviton Reactor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('energyWarfareResistance', src.getModifiedItemAttr('subsystemBonusCaldariCore2'), skill='Caldari Core Systems', **kwargs) class Effect6934(BaseEffect): """ shipMaxLockedTargetsBonusAddPassive Used by: Subsystems named like: Core Dissolution Sequencer (2 of 2) Subsystems named like: Core Electronic Efficiency Gate (2 of 2) Subsystems named like: Offensive Support Processor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('maxLockedTargetsBonus'), **kwargs) class Effect6935(BaseEffect): """ subsystemBonusAmarrCore3EnergyWarHeatBonus Used by: Subsystem: Legion Core - Energy Parasitic Complex """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Energy Nosferatu', 'Energy Neutralizer'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrCore3'), skill='Amarr Core Systems', **kwargs) class Effect6936(BaseEffect): """ subsystemBonusMinmatarCore3StasisWebHeatBonus Used by: Subsystem: Loki Core - Immobility Drivers """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusMinmatarCore3'), skill='Minmatar Core Systems', **kwargs) class Effect6937(BaseEffect): """ subsystemBonusGallenteCore3WarpScramHeatBonus Used by: Subsystem: Proteus Core - Friction Extension Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'overloadRangeBonus', src.getModifiedItemAttr('subsystemBonusGallenteCore3'), skill='Gallente Core Systems', **kwargs) class Effect6938(BaseEffect): """ subsystemBonusCaldariCore3ECMHeatBonus Used by: Subsystem: Tengu Core - Obfuscation Manifold """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'ECM', 'overloadECMStrengthBonus', src.getModifiedItemAttr('subsystemBonusCaldariCore3'), skill='Caldari Core Systems', **kwargs) class Effect6939(BaseEffect): """ subsystemBonusAmarrDefensive2HardenerHeat Used by: Subsystem: Legion Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive2'), skill='Amarr Defensive Systems', **kwargs) class Effect6940(BaseEffect): """ subsystemBonusGallenteDefensive2HardenerHeat Used by: Subsystem: Proteus Defensive - Augmented Plating """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) class Effect6941(BaseEffect): """ subsystemBonusCaldariDefensive2HardenerHeat Used by: Subsystem: Tengu Defensive - Supplemental Screening """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems', **kwargs) class Effect6942(BaseEffect): """ subsystemBonusMinmatarDefensive2HardenerHeat Used by: Subsystem: Loki Defensive - Augmented Durability """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Hull Upgrades'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Tactical Shield Manipulation'), 'overloadHardeningBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) class Effect6943(BaseEffect): """ subsystemBonusAmarrDefensive3ArmorRepHeat Used by: Subsystem: Legion Defensive - Covert Reconfiguration Subsystem: Legion Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusAmarrDefensive3'), skill='Amarr Defensive Systems', **kwargs) class Effect6944(BaseEffect): """ subsystemBonusGallenteDefensive3ArmorRepHeat Used by: Subsystem: Proteus Defensive - Covert Reconfiguration Subsystem: Proteus Defensive - Nanobot Injector """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusGallenteDefensive3'), skill='Gallente Defensive Systems', **kwargs) class Effect6945(BaseEffect): """ subsystemBonusCaldariDefensive3ShieldBoostHeat Used by: Subsystem: Tengu Defensive - Amplification Node Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusCaldariDefensive3'), skill='Caldari Defensive Systems', **kwargs) class Effect6946(BaseEffect): """ subsystemBonusMinmatarDefensive3LocalRepHeat Used by: Subsystem: Loki Defensive - Adaptive Defense Node Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Shield Operation'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive3'), skill='Minmatar Defensive Systems', **kwargs) class Effect6947(BaseEffect): """ subSystemBonusCaldariDefensive2ScanProbeStrength Used by: Subsystem: Tengu Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusCaldariDefensive2'), skill='Caldari Defensive Systems', **kwargs) class Effect6949(BaseEffect): """ subSystemBonusGallenteDefensive2ScanProbeStrength Used by: Subsystem: Proteus Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusGallenteDefensive2'), skill='Gallente Defensive Systems', **kwargs) class Effect6951(BaseEffect): """ subSystemBonusMinmatarDefensive2ScanProbeStrength Used by: Subsystem: Loki Defensive - Covert Reconfiguration """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('subsystemBonusMinmatarDefensive2'), skill='Minmatar Defensive Systems', **kwargs) class Effect6953(BaseEffect): """ mediumRemoteRepFittingAdjustment Used by: Variations of module: Medium Remote Armor Repairer I (14 of 14) Variations of module: Medium Remote Shield Booster I (13 of 13) Module: Medium Ancillary Remote Armor Repairer Module: Medium Ancillary Remote Shield Booster """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('power', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs) module.multiplyItemAttr('cpu', module.getModifiedItemAttr('mediumRemoteRepFittingMultiplier'), **kwargs) class Effect6954(BaseEffect): """ subsystemBonusCommandBurstFittingReduction Used by: Subsystems named like: Offensive Support Processor (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('subsystemCommandBurstFittingReduction'), **kwargs) class Effect6955(BaseEffect): """ subsystemRemoteShieldBoostFalloffBonus Used by: Subsystem: Loki Offensive - Support Processor Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Shield Booster', 'Ancillary Remote Shield Booster'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteShieldBoosterFalloffBonus'), **kwargs) class Effect6956(BaseEffect): """ subsystemRemoteArmorRepairerOptimalBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'maxRange', src.getModifiedItemAttr('remoteArmorRepairerOptimalBonus'), **kwargs) class Effect6957(BaseEffect): """ subsystemRemoteArmorRepairerFalloffBonus Used by: Subsystems named like: Offensive Support Processor (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Remote Armor Repairer', 'Ancillary Remote Armor Repairer'), 'falloffEffectiveness', src.getModifiedItemAttr('remoteArmorRepairerFalloffBonus'), **kwargs) class Effect6958(BaseEffect): """ subsystemBonusAmarrOffensive3RemoteArmorRepairHeat Used by: Subsystem: Legion Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr, src.getModifiedItemAttr('subsystemBonusAmarrOffensive3'), skill='Amarr Offensive Systems', **kwargs) class Effect6959(BaseEffect): """ subsystemBonusGallenteOffensive3RemoteArmorRepairHeat Used by: Subsystem: Proteus Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadArmorDamageAmount'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), attr, src.getModifiedItemAttr('subsystemBonusGallenteOffensive3'), skill='Gallente Offensive Systems', **kwargs) class Effect6960(BaseEffect): """ subsystemBonusCaldariOffensive3RemoteShieldBoosterHeat Used by: Subsystem: Tengu Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('overloadSelfDurationBonus', 'overloadShieldBonus'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), attr, src.getModifiedItemAttr('subsystemBonusCaldariOffensive3'), skill='Caldari Offensive Systems', **kwargs) class Effect6961(BaseEffect): """ subsystemBonusMinmatarOffensive3RemoteRepHeat Used by: Subsystem: Loki Offensive - Support Processor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadSelfDurationBonus', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'overloadShieldBonus', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'overloadArmorDamageAmount', src.getModifiedItemAttr('subsystemBonusMinmatarOffensive3'), skill='Minmatar Offensive Systems', **kwargs) class Effect6962(BaseEffect): """ subsystemBonusAmarrPropulsion2WarpSpeed Used by: Subsystem: Legion Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusAmarrPropulsion2'), skill='Amarr Propulsion Systems', **kwargs) class Effect6963(BaseEffect): """ subsystemBonusMinmatarPropulsion2WarpSpeed Used by: Subsystem: Loki Propulsion - Interdiction Nullifier """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('subsystemBonusMinmatarPropulsion2'), skill='Minmatar Propulsion Systems', **kwargs) class Effect6964(BaseEffect): """ subsystemBonusGallentePropulsionWarpSpeed Used by: Subsystem: Proteus Propulsion - Hyperspatial Optimization """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('baseWarpSpeed', module.getModifiedItemAttr('subsystemBonusGallentePropulsion'), skill='Gallente Propulsion Systems', **kwargs) class Effect6965(BaseEffect): """ surveyProbeExplosionDelayOnline Used by: Module: Survey Probe Launcher II """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Survey'), 'explosionDelay', container.getModifiedItemAttr('surveyProbeDurationBonus'), **kwargs) class Effect6981(BaseEffect): """ shipBonusTitanG1KinThermDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Titan', **kwargs) class Effect6982(BaseEffect): """ shipBonusTitanG2EMExplosiveDamageBonus Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Titan', **kwargs) class Effect6983(BaseEffect): """ shipBonusTitanC1ShieldResists Used by: Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusTitanC1'), skill='Caldari Titan', **kwargs) class Effect6984(BaseEffect): """ shipBonusRole4FighterDamageAndHitpoints Used by: Ship: Caiman Ship: Komodo """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackTurretDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityAttackMissileDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), 'fighterAbilityMissilesDamageMultiplier', src.getModifiedItemAttr('shipBonusRole4'), **kwargs) class Effect6985(BaseEffect): """ shipBonusDreadnoughtG1KinThermDamageBonus Used by: Ship: Caiman """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill('XL Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect6986(BaseEffect): """ shipBonusForceAuxiliaryG1RemoteShieldBoostAmount Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', src.getModifiedItemAttr('shipBonusForceAuxiliaryG1'), skill='Gallente Carrier', **kwargs) class Effect6987(BaseEffect): """ shipBonusRole2LogisticDroneRepAmountAndHitpointBonus Used by: Ship: Loggerhead """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'structureDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'armorHP', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'shieldCapacity', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Drone Operation'), 'hp', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6992(BaseEffect): """ roleBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect6993(BaseEffect): """ roleBonus2BoosterPenaltyReduction Used by: Ship: Victor Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileAOECloudPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterCapacitorCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterAOEVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorRepairAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMissileVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretTrackingPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldCapacityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretOptimalRangePenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterShieldBoostAmountPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterTurretFalloffPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterArmorHPPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.boosters.filteredItemBoost(lambda mod: mod.item.group.name == 'Booster', 'boosterMaxVelocityPenalty', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect6994(BaseEffect): """ eliteReconBonusMHTDamage1 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusReconShip1'), skill='Recon Ships', **kwargs) class Effect6995(BaseEffect): """ targetDisintegratorAttack Used by: Modules from group: Precursor Weapon (20 of 20) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): # Set reload time to 1 second module.reloadTime = 1000 class Effect6996(BaseEffect): """ eliteReconBonusArmorRepAmount3 Used by: Ship: Victor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect6997(BaseEffect): """ eliteCovertOpsBonusArmorRepAmount4 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusCovertOps4'), skill='Covert Ops', **kwargs) class Effect6999(BaseEffect): """ covertOpsStealthBomberSiegeMissileLauncherCPUNeedBonus Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'cpu', ship.getModifiedItemAttr('stealthBomberLauncherCPU'), **kwargs) class Effect7000(BaseEffect): """ shipBonusSHTFalloffGF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', src.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect7001(BaseEffect): """ roleBonusTorpRoF1 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Missile Launcher Torpedo', 'speed', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7002(BaseEffect): """ roleBonusBombLauncherPWGCPU3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'power', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Bomb Deployment'), 'cpu', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect7003(BaseEffect): """ eliteBonusCovertOpsSHTDamage3 Used by: Ship: Virtuoso """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect7008(BaseEffect): """ structureFullPowerStateHitpointModifier Used by: Items from category: Structure (18 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldCapacity', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs) fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('structureFullPowerStateHitpointMultiplier') or 0, **kwargs) class Effect7009(BaseEffect): """ serviceModuleFullPowerHitpointPostAssign Used by: Structure Modules from group: Structure Citadel Service Module (2 of 2) Structure Modules from group: Structure Engineering Service Module (6 of 6) Structure Modules from group: Structure FLEX Service Module (4 of 4) Structure Modules from group: Structure Resource Processing Service Module (4 of 4) Structure Module: Standup Moon Drill I """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.forceItemAttr('structureFullPowerStateHitpointMultiplier', src.getModifiedItemAttr('serviceModuleFullPowerStateHitpointMultiplier'), **kwargs) class Effect7012(BaseEffect): """ moduleBonusAssaultDamageControl Used by: Variations of module: Assault Damage Control I (6 of 6) Module: Abyssal Assault Damage Control """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): booster = '%s%sDamageResonance' % (layer, damageType) src.forceItemAttr(booster, src.getModifiedItemAttr('resistanceMultiplier'), **kwargs) class Effect7013(BaseEffect): """ eliteBonusGunshipKineticMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7014(BaseEffect): """ eliteBonusGunshipThermalMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7015(BaseEffect): """ eliteBonusGunshipEMMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7016(BaseEffect): """ eliteBonusGunshipExplosiveMissileDamage1 Used by: Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7017(BaseEffect): """ eliteBonusGunshipExplosionVelocity2 Used by: Ship: Geri Ship: Jaguar """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect7018(BaseEffect): """ shipSETROFAF Used by: Ship: Retribution """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'speed', src.getModifiedItemAttr('shipBonusAF'), stackingPenalties=False, skill='Amarr Frigate', **kwargs) class Effect7020(BaseEffect): """ remoteWebifierMaxRangeBonus Used by: Implants named like: Inquest 'Eros' Stasis Webifier MR (3 of 3) Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', src.getModifiedItemAttr('stasisWebRangeBonus'), stackingPenalties=False, **kwargs) class Effect7021(BaseEffect): """ structureRigMaxTargetRange Used by: Structure Modules from group: Structure Combat Rig L - Max Targets and Sensor Boosting (2 of 2) Structure Modules from group: Structure Combat Rig M - Boosted Sensors (2 of 2) Structure Modules from group: Structure Combat Rig XL - Doomsday and Targeting (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxTargetRange', module.getModifiedItemAttr('structureRigMaxTargetRangeBonus'), **kwargs) class Effect7026(BaseEffect): """ scriptStandupWarpScram Used by: Charge: Standup Focused Warp Scrambling Script """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): src.boostItemAttr('maxRange', src.getModifiedChargeAttr('warpScrambleRangeBonus'), **kwargs) src.forceItemAttr('activationBlockedStrenght', src.getModifiedChargeAttr('activationBlockedStrenght'), **kwargs) class Effect7027(BaseEffect): """ structureCapacitorCapacityBonus Used by: Structure Modules from group: Structure Capacitor Battery (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('capacitorCapacity', ship.getModifiedItemAttr('capacitorBonus'), **kwargs) class Effect7028(BaseEffect): """ structureModifyPowerRechargeRate Used by: Structure Modules from group: Structure Capacitor Power Relay (2 of 2) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('rechargeRate', module.getModifiedItemAttr('capacitorRechargeRateMultiplier'), **kwargs) class Effect7029(BaseEffect): """ structureArmorHPBonus Used by: Structure Modules from group: Structure Armor Reinforcer (2 of 2) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hiddenArmorHPMultiplier', src.getModifiedItemAttr('armorHpBonus'), stackingPenalties=True, **kwargs) class Effect7030(BaseEffect): """ structureAoERoFRoleBonus Used by: Items from category: Structure (11 of 18) Structures from group: Citadel (8 of 9) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Guided Bomb Launcher', 'speed', ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs) for attr in ['duration', 'durationTargetIlluminationBurstProjector', 'durationWeaponDisruptionBurstProjector', 'durationECMJammerBurstProjector', 'durationSensorDampeningBurstProjector', 'capacitorNeed']: fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Burst Projector', attr, ship.getModifiedItemAttr('structureAoERoFRoleBonus'), **kwargs) class Effect7031(BaseEffect): """ shipBonusHeavyMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7032(BaseEffect): """ shipBonusHeavyMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7033(BaseEffect): """ shipBonusHeavyMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7034(BaseEffect): """ shipBonusHeavyMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7035(BaseEffect): """ shipBonusHeavyAssaultMissileExplosiveDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7036(BaseEffect): """ shipBonusHeavyAssaultMissileEMDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7037(BaseEffect): """ shipBonusHeavyAssaultMissileThermalDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7038(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageCBC2 Used by: Ship: Drake Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect7039(BaseEffect): """ structureHiddenMissileDamageMultiplier Used by: Items from category: Structure (14 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): groups = ('Structure Anti-Subcapital Missile', 'Structure Anti-Capital Missile') for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeMultiply(lambda mod: mod.item.group.name in groups, '%sDamage' % dmgType, src.getModifiedItemAttr('hiddenMissileDamageMultiplier'), **kwargs) class Effect7040(BaseEffect): """ structureHiddenArmorHPMultiplier Used by: Items from category: Structure (18 of 18) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('armorHP', src.getModifiedItemAttr('hiddenArmorHPMultiplier') or 0, **kwargs) class Effect7042(BaseEffect): """ shipArmorHitPointsAC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', src.getModifiedItemAttr('shipBonusAC'), skill='Amarr Cruiser', **kwargs) class Effect7043(BaseEffect): """ shipShieldHitpointsCC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', src.getModifiedItemAttr('shipBonusCC'), skill='Caldari Cruiser', **kwargs) class Effect7044(BaseEffect): """ shipAgilityBonusGC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', src.getModifiedItemAttr('shipBonusGC'), skill='Gallente Cruiser', **kwargs) class Effect7045(BaseEffect): """ shipSignatureRadiusMC1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', src.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect7046(BaseEffect): """ eliteBonusFlagCruiserAllResistances1 Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('explosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('thermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('kineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) fit.ship.boostItemAttr('emDamageResonance', src.getModifiedItemAttr('eliteBonusFlagCruisers1'), skill='Flag Cruisers', **kwargs) class Effect7047(BaseEffect): """ roleBonusFlagCruiserModuleFittingReduction Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Propulsion Module', 'Micro Jump Drive'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'cpu', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ('Target Painter', 'Scan Probe Launcher'), 'power', src.getModifiedItemAttr('flagCruiserFittingBonusPainterProbes'), **kwargs) class Effect7050(BaseEffect): """ aoe_beacon_bioluminescence_cloud Used by: Celestials named like: Bioluminescence Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7051(BaseEffect): """ aoe_beacon_caustic_cloud Used by: Celestials named like: Caustic Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7052(BaseEffect): """ roleBonusFlagCruiserTargetPainterModifications Used by: Ship: Monitor """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', src.getModifiedItemAttr('targetPainterStrengthModifierFlagCruisers'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Target Painter', 'maxRange', src.getModifiedItemAttr('targetPainterRangeModifierFlagCruisers'), **kwargs) class Effect7055(BaseEffect): """ shipLargeWeaponsDamageBonus Used by: Ship: Praxis """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Torpedoes'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'thermalDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'explosiveDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'kineticDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'emDamage', src.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect7058(BaseEffect): """ aoe_beacon_filament_cloud Used by: Celestials named like: Filament Cloud (3 of 3) """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7059(BaseEffect): """ weather_caustic_toxin Used by: Celestial: caustic_toxin_weather_1 Celestial: caustic_toxin_weather_2 Celestial: caustic_toxin_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7060(BaseEffect): """ weather_darkness Used by: Celestial: darkness_weather_1 Celestial: darkness_weather_2 Celestial: darkness_weather_3 Celestial: pvp_weather_1 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 5): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7061(BaseEffect): """ weather_electric_storm Used by: Celestial: electric_storm_weather_1 Celestial: electric_storm_weather_2 Celestial: electric_storm_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7062(BaseEffect): """ weather_infernal Used by: Celestial: infernal_weather_1 Celestial: infernal_weather_2 Celestial: infernal_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7063(BaseEffect): """ weather_xenon_gas Used by: Celestial: xenon_gas_weather_1 Celestial: xenon_gas_weather_2 Celestial: xenon_gas_weather_3 """ runTime = 'early' type = ('projected', 'passive', 'gang') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for x in range(1, 3): if beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)): value = beacon.getModifiedItemAttr('warfareBuff{}Value'.format(x)) id = beacon.getModifiedItemAttr('warfareBuff{}ID'.format(x)) if id: fit.addCommandBonus(id, value, beacon, kwargs['effect'], 'early') class Effect7064(BaseEffect): """ weather_basic Used by: Celestial: basic_weather """ runTime = 'early' type = ('projected', 'passive') class Effect7071(BaseEffect): """ smallPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Small Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7072(BaseEffect): """ mediumPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Medium Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7073(BaseEffect): """ largePrecursorTurretDmgBonusRequiredSkill Used by: Skill: Large Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7074(BaseEffect): """ smallDisintegratorSkillDmgBonus Used by: Skill: Small Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7075(BaseEffect): """ mediumDisintegratorSkillDmgBonus Used by: Skill: Medium Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7076(BaseEffect): """ largeDisintegratorSkillDmgBonus Used by: Skill: Large Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Disintegrator Specialization'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7077(BaseEffect): """ disintegratorWeaponDamageMultiply Used by: Modules from group: Entropic Radiation Sink (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) class Effect7078(BaseEffect): """ disintegratorWeaponSpeedMultiply Used by: Modules from group: Entropic Radiation Sink (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Precursor Weapon', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect7079(BaseEffect): """ shipPCBSSPeedBonusPCBS1 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'speed', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs) class Effect7080(BaseEffect): """ shipPCBSDmgBonusPCBS2 Used by: Ship: Leshak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs) class Effect7085(BaseEffect): """ shipbonusPCTDamagePC1 Used by: Variations of ship: Vedmak (2 of 2) Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7086(BaseEffect): """ shipbonusPCTTrackingPC2 Used by: Ship: Ikitursa Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect7087(BaseEffect): """ shipbonusPCTOptimalPF2 Used by: Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7088(BaseEffect): """ shipbonusPCTDamagePF1 Used by: Variations of ship: Damavik (2 of 2) Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPF1'), skill='Precursor Frigate', **kwargs) class Effect7091(BaseEffect): """ shipBonusNosNeutCapNeedRoleBonus2 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capacitor Emission Systems'), 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7092(BaseEffect): """ shipBonusRemoteRepCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7093(BaseEffect): """ shipBonusSmartbombCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Rodiva (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Energy Pulse Weapons'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7094(BaseEffect): """ shipBonusRemoteRepMaxRangeRoleBonus1 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'maxRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7097(BaseEffect): """ surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupPrecursorTurret Used by: Skill: Surgical Strike """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect7098(BaseEffect): """ structureConversionRigBasicBonuses Used by: Structure Modules from group: Outpost Conversion Rigs (104 of 104) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('hp', 'armorHP', 'shieldCapacity', 'capacitorCapacity'): fit.ship.boostItemAttr(attr, src.getModifiedItemAttr('conversionRigHPCapBonus'), **kwargs) fit.ship.boostItemAttr('maxTargetRange', src.getModifiedItemAttr('structureRigMaxTargetRangeBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('structureRigScanResBonus'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('maxLockedTargets', src.getModifiedItemAttr('structureRigMaxTargetBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'capacitorNeed', src.getModifiedItemAttr('structureRigPDCapUseBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Structure Area Denial Module', 'empFieldRange', src.getModifiedItemAttr('structureRigPDRangeBonus'), **kwargs) for attr in ('structureRigMaxTargetBonus', 'structureRigMaxTargetRangeBonus', 'structureRigScanResBonus'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Structure Combat Rig L - Max Targets and Sensor Boosting', attr, src.getModifiedItemAttr('constantZero'), **kwargs) for attr in ('structureRigPDCapUseBonus', 'structureRigPDRangeBonus'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Structure Combat Rig L - Point Defense Battery Application and Projection', attr, src.getModifiedItemAttr('constantZero'), **kwargs) class Effect7111(BaseEffect): """ systemSmallPrecursorTurretDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', module.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect7112(BaseEffect): """ shipBonusNeutCapNeedRoleBonus2 Used by: Variations of ship: Damavik (2 of 2) Variations of ship: Kikimora (2 of 2) Variations of ship: Leshak (2 of 2) Variations of ship: Vedmak (2 of 2) Ship: Drekavac Ship: Hydra Ship: Tiamat Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7116(BaseEffect): """ eliteBonusReconScanProbeStrength2 Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', src.getModifiedItemAttr('eliteBonusReconShip2'), skill='Recon Ships', **kwargs) class Effect7117(BaseEffect): """ roleBonusWarpSpeed Used by: Ships from group: Blockade Runner (5 of 5) Ships from group: Covert Ops (9 of 9) Ships from group: Hauler (5 of 18) Ships from group: Interceptor (10 of 10) Ships from group: Interdictor (4 of 4) Ships from group: Special Edition Yachts (4 of 5) Ship: Azariel Ship: Cynabal Ship: Dramiel Ship: Khizriel Ship: Leopard Ship: Machariel Ship: Mekubal Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('shipRoleBonusWarpSpeed'), **kwargs) class Effect7118(BaseEffect): """ eliteBonusCovertOps3PCTdamagePerCycle Used by: Ship: Hydra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusCovertOps3'), skill='Covert Ops', **kwargs) class Effect7119(BaseEffect): """ eliteBonusReconShip3PCTdamagePerCycle Used by: Ship: Tiamat """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusPerCycle', src.getModifiedItemAttr('eliteBonusReconShip3'), skill='Recon Ships', **kwargs) class Effect7142(BaseEffect): """ massEntanglerEffect5 Used by: Module: Zero-Point Mass Entangler """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('warpScrambleStrength'), **kwargs) fit.ship.boostItemAttr('mass', src.getModifiedItemAttr('massBonusPercentage'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedFactor', src.getModifiedItemAttr('speedFactorBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Afterburner'), 'speedBoostFactor', src.getModifiedItemAttr('speedBoostFactorBonus'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'activationBlocked', src.getModifiedItemAttr('activationBlockedStrenght'), **kwargs) fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('maxVelocityBonus'), stackingPenalties=True, **kwargs) class Effect7154(BaseEffect): """ shipBonusPD1DisintegratorDamage Used by: Variations of ship: Kikimora (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPD1'), skill='Precursor Destroyer', **kwargs) class Effect7155(BaseEffect): """ shipBonusPBC1DisintegratorDamage Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusPBC1'), skill='Precursor Battlecruiser', **kwargs) class Effect7156(BaseEffect): """ smallDisintegratorMaxRangeBonus Used by: Ship: Kikimora """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect7157(BaseEffect): """ shipBonusPD2DisintegratorMaxRange Used by: Variations of ship: Kikimora (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPD2'), skill='Precursor Destroyer', **kwargs) class Effect7158(BaseEffect): """ shipArmorKineticResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7159(BaseEffect): """ shipArmorThermalResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7160(BaseEffect): """ shipArmorEMResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7161(BaseEffect): """ shipArmorExplosiveResistancePBC2 Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPBC2'), skill='Precursor Battlecruiser', **kwargs) class Effect7162(BaseEffect): """ shipRoleDisintegratorMaxRangeCBC Used by: Ship: Drekavac """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('roleBonusCBC'), **kwargs) class Effect7166(BaseEffect): """ ShipModuleRemoteArmorMutadaptiveRepairer Used by: Modules from group: Mutadaptive Remote Armor Repairer (5 of 5) """ runTime = 'late' type = 'projected', 'active' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if 'projected' not in context: return if fit.ship.getModifiedItemAttr('disallowAssistance'): return repAmountBase = container.getModifiedItemAttr('armorDamageAmount') repAmountBase *= calculateRangeFactor( srcOptimalRange=container.getModifiedItemAttr('maxRange'), srcFalloffRange=container.getModifiedItemAttr('falloffEffectiveness'), distance=projectionRange) cycleTime = container.getModifiedItemAttr('duration') / 1000.0 repSpoolMax = container.getModifiedItemAttr('repairMultiplierBonusMax') repSpoolPerCycle = container.getModifiedItemAttr('repairMultiplierBonusPerCycle') defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] spoolType, spoolAmount = resolveSpoolOptions(SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False), container) amount = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0]) amountPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 0)[0]) amountFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SPOOL_SCALE, 1)[0]) fit._armorRr.append((amount, cycleTime)) fit._armorRrPreSpool.append((amountPreSpool, cycleTime)) fit._armorRrFullSpool.append((amountFullSpool, cycleTime)) class Effect7167(BaseEffect): """ shipBonusRemoteCapacitorTransferRangeRole1 Used by: Variations of ship: Rodiva (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Remote Capacitor Transmitter', 'maxRange', src.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect7168(BaseEffect): """ shipBonusMutadaptiveRemoteRepairRangeRole3 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect7169(BaseEffect): """ shipBonusMutadaptiveRepAmountPC1 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7170(BaseEffect): """ shipBonusMutadaptiveRepCapNeedPC2 Used by: Ship: Rodiva """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect7171(BaseEffect): """ shipBonusMutadaptiveRemoteRepRangePC1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'maxRange', src.getModifiedItemAttr('shipBonusPC1'), skill='Precursor Cruiser', **kwargs) class Effect7172(BaseEffect): """ shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'capacitorNeed', src.getModifiedItemAttr('eliteBonusLogistics1'), skill='Logistics Cruisers', **kwargs) class Effect7173(BaseEffect): """ shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2 Used by: Ship: Zarmazd """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Mutadaptive Remote Armor Repairer', 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusLogistics2'), skill='Logistics Cruisers', **kwargs) class Effect7176(BaseEffect): """ skillBonusDroneInterfacingNotFighters Used by: Implants named like: Federation Damage Booster (4 of 4) Implants named like: Halcyon G Booster (5 of 5) Implants named like: Imperial Damage Booster (4 of 4) Implant: CreoDron 'Bumblebee' Drone Tuner T10-5D Implant: CreoDron 'Yellowjacket' Drone Tuner D5-10T Implant: Guristas Damage Booster III """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect7177(BaseEffect): """ skillBonusDroneDurabilityNotFighters Used by: Implants named like: Drone Tuner (4 of 4) Implants named like: Federation Projection Booster (4 of 4) Implants named like: Imperial Projection Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('hullHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('armorHpBonus')) fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('shieldCapacityBonus'), **kwargs) class Effect7183(BaseEffect): """ implantWarpScrambleRangeBonus Used by: Implants named like: Inquest 'Hedone' Entanglement Optimizer WS (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', src.getModifiedItemAttr('warpScrambleRangeBonus'), **kwargs) class Effect7184(BaseEffect): """ shipBonusMediumDroneHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'hp', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7185(BaseEffect): """ shipBonusMediumDroneShieldHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'shieldCapacity', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7186(BaseEffect): """ shipBonusMediumDroneArmorHProle8 Used by: Ship: Alligator Ship: Gila """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Medium Drone Operation'), 'armorHP', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect7193(BaseEffect): """ systemMiningCycleTimeBonus Used by: Celestials from group: Destructible Effect Beacon (4 of 6) Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestials named like: War HQ (4 of 4) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs) class Effect7202(BaseEffect): """ systemDroneSpeedBonusPercent Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', beacon.getModifiedItemAttr('droneMaxVelocityBonus'), stackingPenalties=True, **kwargs) class Effect7203(BaseEffect): """ systemDroneDamageBonusPercent Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) Celestial: Drifter Crisis """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('droneDamageBonus'), stackingPenalties=True, **kwargs) class Effect7204(BaseEffect): """ shipArmorEMResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorEmDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7205(BaseEffect): """ shipArmorKinResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorKineticDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7206(BaseEffect): """ shipArmorThermResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorThermalDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7207(BaseEffect): """ shipArmorExpResistancePF2 Used by: Variations of ship: Damavik (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusPF2'), skill='Precursor Frigate', **kwargs) class Effect7209(BaseEffect): """ shipPCTOptimalBonusEliteGunship2 Used by: Ship: Nergal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect7210(BaseEffect): """ shipBonusCommandDestroyerRole2DefenderBonus Used by: Ship: Draugur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Defender Missiles'), 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect7211(BaseEffect): """ shipDmgMultiMaxEliteHeavyGunship1 Used by: Ship: Ikitursa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect7216(BaseEffect): """ shipDmgMultiMaxEliteGunship1 Used by: Ship: Nergal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect7223(BaseEffect): """ systemAgilityBonusPercentItem Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('agility', beacon.getModifiedItemAttr('agilityBonus'), stackingPenalties=True, **kwargs) class Effect7227(BaseEffect): """ systemHullHPBonusPercentItem Used by: Celestials named like: Triglavian Invasion System Effects (3 of 3) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('hp', beacon.getModifiedItemAttr('hullHpBonus'), **kwargs) class Effect7228(BaseEffect): """ shipMediumPrecursorWeaponOptimalEliteHeavyGunship2 Used by: Ship: Ikitursa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect7230(BaseEffect): """ shipBonusDroneTrackingGC2 Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect7231(BaseEffect): """ shipBonusArmorRepAmountGC3 Used by: Ship: Vexor Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect7232(BaseEffect): """ modifyDamageMultiplierBonusMax Used by: Implants named like: grade Mimesis (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusMax', implant.getModifiedItemAttr('damageMultiplierBonusMaxModifier'), **kwargs) class Effect7233(BaseEffect): """ modifyDamageMultiplierBonusPerCycle Used by: Implants named like: grade Mimesis (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Precursor Weapon', 'damageMultiplierBonusPerCycle', implant.getModifiedItemAttr('damageMultiplierBonusPerCycleModifier'), **kwargs) class Effect7234(BaseEffect): """ implantSetMimesis Used by: Implants named like: grade Mimesis (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusMaxModifier', implant.getModifiedItemAttr('setBonusMimesis'), **kwargs) fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.group.name == 'Cyberimplant', 'damageMultiplierBonusPerCycleModifier', implant.getModifiedItemAttr('setBonusMimesis'), **kwargs) class Effect7237(BaseEffect): """ systemWarpSpeedBonus Used by: Celestial: Drifter Crisis Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'), stackingPenalties=True, **kwargs) class Effect7238(BaseEffect): """ shipBonusDreadnoughtPC1DamageMultMax Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtPC1'), skill='Precursor Dreadnought', **kwargs) class Effect7239(BaseEffect): """ shipBonusDreadnoughtPC2ArmorResists Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for type in ('Em', 'Explosive', 'Kinetic', 'Thermal'): fit.ship.boostItemAttr('armor{0}DamageResonance'.format(type), src.getModifiedItemAttr('shipBonusDreadnoughtPC2'), skill='Precursor Dreadnought', **kwargs) class Effect7240(BaseEffect): """ shipBonusDreadnoughtPC3WeaponSpeed Used by: Ship: Zirnitra """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'speed', src.getModifiedItemAttr('shipBonusDreadnoughtPC3'), skill='Precursor Dreadnought', **kwargs) class Effect7242(BaseEffect): """ capitalPrecursorTurretDmgBonusRequiredSkill Used by: Skill: Capital Precursor Weapon """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Capital Precursor Weapon'), 'damageMultiplier', container.getModifiedItemAttr('damageMultiplierBonus') * level, **kwargs) class Effect7247(BaseEffect): """ shipBonusHAMHMLAoeVelocityMC Used by: Ship: Bellicose """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: (mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles')), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect7248(BaseEffect): """ shipPBonusROFMF Used by: Ship: Rifter """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect8011(BaseEffect): """ shieldHpBonusPostPercentHpLocationShip Used by: Implants named like: grade Nirvana (15 of 18) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', container.getModifiedItemAttr('shieldHpBonus'), **kwargs) class Effect8013(BaseEffect): """ setBonusNirvana Used by: Implants named like: grade Nirvana (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply(lambda target: target.item.requiresSkill('Cybernetics'), 'shieldHpBonus', implant.getModifiedItemAttr('ImplantSetNirvana') or 1, **kwargs) class Effect8017(BaseEffect): """ saviorSetBonus Used by: Implants named like: grade Savior (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), 'remoteRepDurationCapBonus', implant.getModifiedItemAttr('implantSetSavior'), **kwargs) class Effect8018(BaseEffect): """ subcapRemoteArmorShieldRepDurationCapBonus Used by: Implants named like: grade Savior (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('duration', 'capacitorNeed'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Remote Armor Repair Systems'), attr, implant.getModifiedItemAttr('remoteRepDurationCapBonus'), **kwargs) class Effect8020(BaseEffect): """ systemWarpSpeedAddition Used by: Celestial: System-Wide Warp Speed Bonus """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpSpeedMultiplier', src.getModifiedItemAttr('warpSpeedAdd'), **kwargs) class Effect8021(BaseEffect): """ hydraSetBonus Used by: Implants named like: grade Hydra (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('hydraDroneTrackingBonus', 'hydraDroneRangeBonus', 'hydraMissileFlightTimeBonus', 'hydraMissileExplosionVelocityBonus'): fit.appliedImplants.filteredItemMultiply( lambda implant: implant.item.requiresSkill('Cybernetics'), attr, implant.getModifiedItemAttr('implantSetHydra'), **kwargs) class Effect8023(BaseEffect): """ hydraDroneTrackingEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', implant.getModifiedItemAttr('hydraDroneTrackingBonus'), **kwargs) class Effect8024(BaseEffect): """ hydraDroneRangeEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, implant.getModifiedItemAttr('hydraDroneRangeBonus'), **kwargs) class Effect8025(BaseEffect): """ hydraMissileFlightTimeEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', implant.getModifiedItemAttr('hydraMissileFlightTimeBonus'), **kwargs) class Effect8026(BaseEffect): """ hydraMissileExplosionVelocityEffect Used by: Implants named like: grade Hydra (15 of 18) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeVelocity', implant.getModifiedItemAttr('hydraMissileExplosionVelocityBonus'), **kwargs) class Effect8029(BaseEffect): """ roleBonus7CapBoosterGroupRestriction Used by: Ships from group: Force Auxiliary (6 of 6) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('maxGroupOnline', 'maxGroupFitted'): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Capacitor Booster', attr, ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect8032(BaseEffect): """ systemWarpScrambleStrengthBonus Used by: Celestial: Federal Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Warp Scrambler', 'warpScrambleStrength', beacon.getModifiedItemAttr('warpScrambleStrengthBonus'), **kwargs) class Effect8033(BaseEffect): """ systemEcmRangeMultiplier Used by: Celestial: State Stellar Observatory """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'ECM', 'maxRange', beacon.getModifiedItemAttr('ecmRangeBonus'), stackingPenalties=True, **kwargs) class Effect8034(BaseEffect): """ smallUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Small Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8035(BaseEffect): """ mediumUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Medium Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8036(BaseEffect): """ largeUpwellWeaponDmgBonusRequiredSkill Used by: Skill: Large Vorton Projector """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8037(BaseEffect): """ ChainLightning Used by: Modules from group: Vorton Projector (15 of 15) """ type = 'active' class Effect8039(BaseEffect): """ upwellSkillaoeVelocityaoeCloudSizeBonus Used by: Implants named like: Halcyon G Booster (5 of 5) Skill: Vorton Arc Guidance """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeVelocity', container.getModifiedItemAttr('aoeVelocityBonus') * level, **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeCloudSize', container.getModifiedItemAttr('aoeCloudSizeBonus') * level, **kwargs) class Effect8041(BaseEffect): """ upwellSkillDamageMuliplierBonus Used by: Skill: Vorton Power Amplification """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Vorton Projector', 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8042(BaseEffect): """ upwellSkillSpeedBonus Used by: Skill: Vorton Projector Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed', skill.getModifiedItemAttr('turretSpeeBonus') * skill.level, **kwargs) class Effect8044(BaseEffect): """ smallVortonProjectorSkillDmgBonus Used by: Skill: Small Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8045(BaseEffect): """ mediumVortonProjectorSkillDmgBonus Used by: Skill: Medium Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8046(BaseEffect): """ largeVortonProjectorSkillDmgBonus Used by: Skill: Large Vorton Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Vorton Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) class Effect8047(BaseEffect): """ shipBonusUF1shieldResistance Used by: Ship: Skybreaker """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), ship.getModifiedItemAttr('shipBonusUF1'), skill='EDENCOM Frigate', **kwargs) class Effect8048(BaseEffect): """ shipBonusUF2damage Used by: Ship: Skybreaker """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusUF2'), skill='EDENCOM Frigate', **kwargs) class Effect8052(BaseEffect): """ shipBonusUC2ShieldResistance Used by: Ship: Stormbringer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), ship.getModifiedItemAttr('shipBonusUC2'), skill='EDENCOM Cruiser', **kwargs) class Effect8053(BaseEffect): """ shipBonusUC1maxRange Used by: Ship: Stormbringer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'maxRange', ship.getModifiedItemAttr('shipBonusUC1'), skill='EDENCOM Cruiser', **kwargs) class Effect8054(BaseEffect): """ shipBonusUB1upwellDamage Used by: Ship: Thunderchild """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusUB1'), skill='EDENCOM Battleship', **kwargs) class Effect8056(BaseEffect): """ shipBonusUB2upwellROF Used by: Ship: Thunderchild """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'speed', ship.getModifiedItemAttr('shipBonusUB2'), skill='EDENCOM Battleship', **kwargs) class Effect8057(BaseEffect): """ vortonWeaponDamageSpeedMultiply Used by: Modules from group: Vorton Projector Upgrade (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector', 'damageMultiplier', module.getModifiedItemAttr('damageMultiplier'), stackingPenalties=True, **kwargs) fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == 'Vorton Projector', 'speed', module.getModifiedItemAttr('speedMultiplier'), stackingPenalties=True, **kwargs) class Effect8062(BaseEffect): """ ammoAOEvelocityMultiplier Used by: Charges from group: Advanced Condenser Pack (6 of 6) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('aoeVelocity', module.getModifiedChargeAttr('aoeVelocityBonus') or 0, **kwargs) class Effect8065(BaseEffect): """ vortonProjectorSkillRangeBonus Used by: Skill: Vorton Arc Extension """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'maxRange', skill.getModifiedItemAttr('rangeSkillBonus') * skill.level, **kwargs) class Effect8064(BaseEffect): """ vortonProjectorOptimalRangeBonus Used by: Implants named like: Halcyon B Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'maxRange', booster.getModifiedItemAttr('rangeSkillBonus'), **kwargs) class Effect8066(BaseEffect): """ vortonProjectorDamageBonus Used by: Implants named like: Agency 'Pyrolancea' DB Dose (4 of 4) Implants named like: Halcyon Y Booster (5 of 5) Implant: AIR Pyrolancea Booster II """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier', booster.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) class Effect8068(BaseEffect): """ shipShieldResistanceBonusMBC1 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr(f'shield{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect8070(BaseEffect): """ eliteBonusCommandShipsHeavyHAMvelocityCS2 Used by: Ship: Claymore """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or mod.charge.requiresSkill('Heavy Assault Missiles'), 'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect8071(BaseEffect): """ eliteBonusCommandShipDroneRangeCS1 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect8072(BaseEffect): """ shipArmorResistanceBonusGBC2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr(f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusGBC2'), skill='Gallente Battlecruiser', **kwargs) class Effect8073(BaseEffect): """ eliteBonusCommandShipShieldHPCS1 Used by: Ship: Vulture """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) class Effect8074(BaseEffect): """ shipBonusPC2maxRange Used by: Ship: Vedmak """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPC2'), skill='Precursor Cruiser', **kwargs) class Effect8076(BaseEffect): """ systemHullThermalResistance Used by: Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8082(BaseEffect): """ systemScanResolutionBonus Used by: Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) class Effect8091(BaseEffect): """ shipBonusForceAuxiliaryG5CapBoosterStrength Used by: Ship: Loggerhead Ship: Ninazu """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryG5'), skill='Gallente Carrier', **kwargs) class Effect8094(BaseEffect): """ shipBonusHybridROFGD1 Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'speed', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect8095(BaseEffect): """ eliteBonusInterdictors1massAddition Used by: Ship: Eris """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect8096(BaseEffect): """ shipBonusKinMissileDamageCD2 Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect8097(BaseEffect): """ eliteBonusInterdictors1ShieldCapacity Used by: Ship: Flycatcher """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusInterdictors1'), skill='Interdictors', **kwargs) class Effect8098(BaseEffect): """ shipBonusArmorHPAD2 Used by: Ship: Heretic """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('armorHP', ship.getModifiedItemAttr('shipBonusAD2'), skill='Amarr Destroyer', **kwargs) class Effect8100(BaseEffect): """ shipBonusECMJamDroneDurationCF Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'ecmJamDuration', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect8101(BaseEffect): """ roleBonusDroneDamage Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), f'{dmgType}Damage', ship.getModifiedItemAttr('roleBonus'), **kwargs) class Effect8102(BaseEffect): """ shipBonusRole1DroneHitpointsDroneControlRange Used by: Ship: Griffin Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.extraAttributes.boost( 'droneControlRange', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) for attr in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect8099(BaseEffect): """ systemHeatDamageBonus Used by: Celestials named like: Metaliminal Yoiul Festival YC 122 Storm (4 of 4) Celestials named like: Volatile Ice Storm (2 of 2) """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, source, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: 'heatDamage' in mod.itemModifiedAttributes, 'heatDamage', source.getModifiedItemAttr('thermodynamicsHeatDamage'), **kwargs) class Effect8103(BaseEffect): """ setBonusRapture Used by: Implants named like: grade Rapture (18 of 18) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Cybernetics'), 'capRechargeBonus', src.getModifiedItemAttr('ImplantSetRapture'), **kwargs) class Effect8104(BaseEffect): """ salvageDroneSpecBonus Used by: Skill: Salvage Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.drones.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'), 'accessDifficultyBonus', src.getModifiedItemAttr('specAccessDifficultyBonus') * lvl, **kwargs) fit.drones.filteredItemBoost( lambda mod: mod.item.requiresSkill('Salvage Drone Specialization'), 'maxVelocity', src.getModifiedItemAttr('maxVelocityBonus') * lvl, **kwargs) class Effect8106(BaseEffect): """ shipPTdamageBonusMB2 Used by: Ship: Maelstrom Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusMB2'), skill='Minmatar Battleship', **kwargs) class Effect8107(BaseEffect): """ shipBonusLETcapNeedAB2 Used by: Ship: Paladin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB2'), skill='Amarr Battleship', **kwargs) class Effect8108(BaseEffect): """ signatureRadiusBonusOnline Used by: Modules from group: Signature Suppressor (5 of 5) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusPassive'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect8109(BaseEffect): """ targetSpectrumBreakerBonus Used by: Modules from group: Signature Suppressor (5 of 5) """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('signatureRadius', src.getModifiedItemAttr('signatureSuppressorSignatureRadiusBonusActive'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect8111(BaseEffect): """ systemElectricalStorm Used by: Celestial: Strong Metaliminal Electrical Storm Celestial: Weak Metaliminal Electrical Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('disallowCloaking', beacon.getModifiedItemAttr('disallowCloaking'), **kwargs) fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', beacon.getModifiedItemAttr('scanProbeStrengthBonus'), stackingPenalties=True, **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Archaeology'), 'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs) fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill('Hacking'), 'virusCoherence', beacon.getModifiedItemAttr('virusCoherenceBonus'), **kwargs) fit.ship.boostItemAttr('shieldEmDamageResonance', beacon.getModifiedItemAttr('shieldEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorEmDamageResonance', beacon.getModifiedItemAttr('armorEmDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('emDamageResonance', beacon.getModifiedItemAttr('emDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('rechargeRate', beacon.getModifiedItemAttr('rechargeRateMultiplier'), **kwargs) class Effect8112(BaseEffect): """ systemExoticStorm Used by: Celestial: Strong Metaliminal Exotic Matter Storm Celestial: Weak Metaliminal Exotic Matter Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Repair Systems') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', beacon.getModifiedItemAttr('armorRepairDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation') or mod.item.requiresSkill('Capital Shield Operation'), 'duration', beacon.getModifiedItemAttr('shieldBoosterDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'duration', beacon.getModifiedItemAttr('miningDurationMultiplier'), **kwargs) fit.ship.boostItemAttr('warpSpeedMultiplier', beacon.getModifiedItemAttr('warpSpeedBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('scanResolution', beacon.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('shieldKineticDamageResonance', beacon.getModifiedItemAttr('shieldKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorKineticDamageResonance', beacon.getModifiedItemAttr('armorKineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('kineticDamageResonance', beacon.getModifiedItemAttr('kineticDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8113(BaseEffect): """ systemGammaStorm Used by: Celestial: Strong Metaliminal Gamma Ray Storm Celestial: Weak Metaliminal Gamma Ray Storm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems') or mod.item.requiresSkill('Capital Shield Emission Systems'), 'shieldBonus', beacon.getModifiedItemAttr('shieldBonusMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems') or mod.item.requiresSkill('Capital Remote Armor Repair Systems'), 'armorDamageAmount', beacon.getModifiedItemAttr('armorDamageAmountMultiplierRemote'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.multiplyItemAttr('shieldCapacity', beacon.getModifiedItemAttr('shieldCapacityMultiplier'), **kwargs) fit.ship.multiplyItemAttr('capacitorCapacity', beacon.getModifiedItemAttr('capacitorCapacityMultiplierSystem'), **kwargs) fit.ship.multiplyItemAttr('signatureRadius', beacon.getModifiedItemAttr('signatureRadiusMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('shieldExplosiveDamageResonance', beacon.getModifiedItemAttr('shieldExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorExplosiveDamageResonance', beacon.getModifiedItemAttr('armorExplosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('explosiveDamageResonance', beacon.getModifiedItemAttr('explosiveDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8114(BaseEffect): """ systemPlasmaStorm Used by: Celestial: Strong Metaliminal Plasma Firestorm Celestial: Weak Metaliminal Plasma Firestorm """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, **kwargs) for attr in ('emDamage', 'explosiveDamage', 'kineticDamage', 'thermalDamage'): fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), attr, beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.drones.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.fighters.filteredItemMultiply(lambda drone: drone.item.requiresSkill('Fighters'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill('Gunnery'), 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.drones.filteredItemMultiply(lambda drone: True, 'trackingSpeed', beacon.getModifiedItemAttr('trackingSpeedMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) for attr in ('fighterAbilityAttackMissileExplosionRadius', 'fighterAbilityMissilesExplosionRadius'): fit.fighters.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Fighters'), attr, beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.multiplyItemAttr('armorHP', beacon.getModifiedItemAttr('armorHPMultiplier'), **kwargs) fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) fit.ship.boostItemAttr('shieldThermalDamageResonance', beacon.getModifiedItemAttr('shieldThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('armorThermalDamageResonance', beacon.getModifiedItemAttr('armorThermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) fit.ship.boostItemAttr('thermalDamageResonance', beacon.getModifiedItemAttr('thermalDamageResistanceBonus'), stackingPenalties=True, **kwargs) class Effect8117(BaseEffect): """ interdictionNullifierBonus Used by: Modules from group: Interdiction Nullifier (4 of 4) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.preAssignItemAttr('warpBubbleImmune', module.getModifiedItemAttr('warpBubbleImmuneBonus'), **kwargs) class Effect8119(BaseEffect): """ industrialCompactCoreEffect2 Used by: Modules named like: Industrial Core (4 of 6) """ runTime = 'early' type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', src.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('mass', src.getModifiedItemAttr('siegeMassMultiplier'), **kwargs) # Local Shield Repper Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'duration', src.getModifiedItemAttr('industrialCoreLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('industrialCoreLocalLogisticsAmountBonus'), stackingPenalties=True, **kwargs) # Mining Burst Bonuses fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff1Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff2Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff3Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining Foreman'), 'warfareBuff4Value', src.getModifiedItemAttr('industrialCoreBonusMiningBurstStrength'), **kwargs) # Command Burst Range Bonus fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'maxRange', src.getModifiedItemAttr('industrialCoreBonusCommandBurstRange'), stackingPenalties=True, **kwargs) # Drone Bonuses fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', src.getModifiedItemAttr('industrialCoreBonusDroneIceHarvesting'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', src.getModifiedItemAttr('industrialCoreBonusDroneMining'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', src.getModifiedItemAttr('industrialCoreBonusDroneVelocity'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), stackingPenalties=True, **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'shieldCapacity', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'armorHP', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'hp', src.getModifiedItemAttr('industrialCoreBonusDroneDamageHP'), **kwargs) # Remote impedance (no reps, etc) fit.ship.increaseItemAttr('warpScrambleStatus', src.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) fit.ship.boostItemAttr('remoteRepairImpedance', src.getModifiedItemAttr('remoteRepairImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowTethering', src.getModifiedItemAttr('disallowTethering'), **kwargs) fit.ship.boostItemAttr('sensorDampenerResistance', src.getModifiedItemAttr('sensorDampenerResistanceBonus'), **kwargs) fit.ship.boostItemAttr('remoteAssistanceImpedance', src.getModifiedItemAttr('remoteAssistanceImpedanceBonus'), **kwargs) fit.ship.increaseItemAttr('disallowDocking', src.getModifiedItemAttr('disallowDocking'), **kwargs) fit.ship.increaseItemAttr('gateScrambleStatus', src.getModifiedItemAttr('gateScrambleStrength'), **kwargs) fit.ship.forceItemAttr('ECMResistance', src.getModifiedItemAttr('ECMResistance'), **kwargs) class Effect8120(BaseEffect): """ interceptorNullificationRoleBonus Used by: Ships from group: Interceptor (6 of 10) Ships from group: Special Edition Yachts (4 of 5) Subsystems named like: Propulsion Interdiction Nullifier (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'maxTargetRangeBonus', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'moduleReactivationDelay', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'durationHighisGood', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Interdiction Nullifier', 'scanResolutionMultiplier', ship.getModifiedItemAttr('shipBonusRole3'), **kwargs) class Effect8121(BaseEffect): """ warpCoreStabilizerActive Used by: Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('warpScrambleStatus', module.getModifiedItemAttr('warpScrambleStrength'), **kwargs) class Effect8123(BaseEffect): """ droneBandWidthPenaltyOnline Used by: Modules from group: Interdiction Nullifier (4 of 4) Modules from group: Warp Core Stabilizer (8 of 8) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('droneBandwidth', module.getModifiedItemAttr('droneBandwidthPercentage'), **kwargs) class Effect8128(BaseEffect): """ miningLaserRangeBonusLRSM Used by: Implants named like: AIR Mining Range Booster (2 of 2) """ type = 'passive' @staticmethod def handler(fit, source, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', source.getModifiedItemAttr('maxRangeBonus'), **kwargs) class Effect8129(BaseEffect): """ shipBonusCloakVelocityBonusGF Used by: Ship: Helios """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if fit.extraAttributes['cloaked']: fit.ship.boostItemAttr( 'maxVelocity', container.getModifiedItemAttr('shipBonusGF'), skill='Gallente Frigate', **kwargs) class Effect8130(BaseEffect): """ shipBonusWarpCapacityNeedGF2 Used by: Ship: Helios """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect8131(BaseEffect): """ shipBonusWarpCapacitorNeedAF Used by: Ship: Anathema """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusAF'), skill='Amarr Frigate', **kwargs) class Effect8132(BaseEffect): """ shipBonusScanProbeDeviationA2F Used by: Ship: Anathema """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('shipBonus2AF'), skill='Amarr Frigate', **kwargs) class Effect8133(BaseEffect): """ shipBonusCloakVelocityMF Used by: Ship: Cheetah """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): if fit.extraAttributes['cloaked']: fit.ship.boostItemAttr('maxVelocity', container.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect8134(BaseEffect): """ shipBonusWarpCapacitorNeedCF2 Used by: Ship: Buzzard """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect8135(BaseEffect): """ shipBonusScanProbeDeviationCF Used by: Ship: Buzzard """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect8136(BaseEffect): """ shipBonusWarpCapacitorNeedMF2 Used by: Ship: Cheetah """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr('warpCapacitorNeed', container.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect8151(BaseEffect): """ shipBonusCloakedVelocityRole1 Used by: Ships from group: Black Ops (6 of 6) """ type = 'passive' runTime = 'early' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Cloaking'), 'maxVelocityModifier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect8152(BaseEffect): """ eliteBonusEnergyDrainAmountBlackOps2 Used by: Ship: Redeemer """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'powerTransferAmount', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8154(BaseEffect): """ eliteBonusDroneTrackingOptimalBlackOps2 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8155(BaseEffect): """ eliteBonusLPTtrackingBlackOps1 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect8156(BaseEffect): """ eliteBonusLPTfalloffBlackOps2 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'falloff', ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8157(BaseEffect): """ eliteBonusShieldResistancesBlackOps2 Used by: Ship: Widow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( 'shield{0}DamageResonance'.format(damageType), ship.getModifiedItemAttr('eliteBonusBlackOps2'), skill='Black Ops', **kwargs) class Effect8158(BaseEffect): """ stabilizeCloakDurationBonus Used by: Implant: Strong Veilguard Booster """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Cloaking'), 'stabilizeCloakDuration', booster.getModifiedItemAttr('stabilizeCloakDurationBonus'), **kwargs) class Effect8199(BaseEffect): """ gallenteIndustrialBonusIceHoldCapacity Used by: Ship: Kryos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialIceHoldCapacity', ship.getModifiedItemAttr('gallenteIndustrialBonusIceHoldCapacity'), skill='Gallente Hauler', **kwargs) class Effect8206(BaseEffect): """ specializationAsteroidDurationMultiplierEffect Used by: Charges from group: Mercoxit Mining Crystal (6 of 6) Charges from group: Mining Crystal (66 of 66) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.multiplyItemAttr('duration', module.getModifiedChargeAttr('specializationAsteroidDurationMultiplier'), **kwargs) class Effect8210(BaseEffect): """ expeditionFrigateBonusIceHarvestingDuration Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('expeditionFrigateBonusIceHarvestingDuration'), skill='Expedition Frigates', **kwargs) class Effect8223(BaseEffect): """ shipRoleBonusOreMiningYield Used by: Ships from group: Expedition Frigate (2 of 2) Ship: Retriever """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('shipRoleBonusOreMiningYield'), **kwargs) class Effect8224(BaseEffect): """ shipRoleBonusIceHarvestingDuration Used by: Variations of ship: Covetor (2 of 2) Variations of ship: Retriever (2 of 2) Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('shipRoleBonusIceHarvestingDuration'), **kwargs) class Effect8225(BaseEffect): """ shipRoleBonusDroneDamage Used by: Variations of ship: Procurer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('shipRoleBonusDroneDamage'), **kwargs) class Effect8226(BaseEffect): """ shipRoleBonusDroneHitPoints Used by: Variations of ship: Procurer (2 of 2) Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipRoleBonusDroneHitPoints'), **kwargs) class Effect8227(BaseEffect): """ miningBargeBonusOreMiningYield Used by: Ships from group: Exhumer (3 of 3) Ships from group: Mining Barge (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('miningBargeBonusOreMiningYield'), skill='Mining Barge', **kwargs) class Effect8228(BaseEffect): """ miningBargeBonusIceHarvestingDuration Used by: Ships from group: Exhumer (3 of 3) Ships from group: Mining Barge (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('miningBargeBonusIceHarvestingDuration'), skill='Mining Barge', **kwargs) class Effect8229(BaseEffect): """ miningBargeBonusGasHarvestingDuration Used by: Ships from group: Mining Barge (3 of 3) Ship: Hulk Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('miningBargeBonusGasHarvestingDuration'), skill='Mining Barge', **kwargs) class Effect8230(BaseEffect): """ miningBargeBonusOreMiningRange Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', ship.getModifiedItemAttr('miningBargeBonusOreMiningRange'), skill='Mining Barge', **kwargs) class Effect8231(BaseEffect): """ miningBargeBonusIceHarvestingRange Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange', ship.getModifiedItemAttr('miningBargeBonusIceHarvestingRange'), skill='Mining Barge', **kwargs) class Effect8243(BaseEffect): """ exhumersBonusOreMiningDuration Used by: Ship: Hulk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('exhumersBonusOreMiningDuration'), skill='Exhumers', **kwargs) class Effect8244(BaseEffect): """ exhumersBonusIceHarvestingDuration Used by: Ship: Hulk """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('exhumersBonusIceHarvestingDuration'), skill='Exhumers', **kwargs) class Effect8249(BaseEffect): """ exhumersBonusOreMiningYield Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', ship.getModifiedItemAttr('exhumersBonusOreMiningYield'), skill='Exhumers', **kwargs) class Effect8251(BaseEffect): """ exhumersBonusGeneralMiningHoldCapacity Used by: Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('exhumersBonusGeneralMiningHoldCapacity'), skill='Exhumers', **kwargs) class Effect8253(BaseEffect): """ exhumersBonusShieldResistance Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(damageType), ship.getModifiedItemAttr('exhumersBonusShieldResistance'), skill='Exhumers', **kwargs) class Effect8261(BaseEffect): """ industrialCommandBonusDroneDamage Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', ship.getModifiedItemAttr('industrialCommandBonusDroneDamage'), skill='Industrial Command Ships', **kwargs) class Effect8263(BaseEffect): """ industrialCommandBonusFuelConsuptionCompactIndustrialCore Used by: Ship: Orca """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Industrial Reconfiguration'), 'consumptionQuantity', ship.getModifiedItemAttr('industrialCommandBonusFuelConsuptionCompactIndustrialCore'), skill='Industrial Command Ships', **kwargs) class Effect8264(BaseEffect): """ industrialCommandBonusMiningForemanBurstRange Used by: Ships from group: Industrial Command Ship (2 of 2) Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining Foreman'), 'maxRange', ship.getModifiedItemAttr('industrialCommandBonusMiningForemanBurstRange'), skill='Industrial Command Ships', **kwargs) class Effect8270(BaseEffect): """ capacitorWarfareResistanceBonusPassive Used by: Implants named like: Halcyon Y Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'energyWarfareResistance', container.getModifiedItemAttr('energyWarfareResistanceBonus'), **kwargs) class Effect8275(BaseEffect): """ minmatarIndustrialBonusGasHoldCapacity Used by: Ship: Hoarder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialGasHoldCapacity', ship.getModifiedItemAttr('minmatarIndustrialBonusGasHoldCapacity'), skill='Minmatar Hauler', **kwargs) class Effect8278(BaseEffect): """ industrialCommandBonusGeneralMiningHoldCapacity Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('industrialCommandBonusGeneralMiningHoldCapacity'), skill='Industrial Command Ships', **kwargs) class Effect8279(BaseEffect): """ industrialCommandBonusShipHoldCapacity Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'capacity', ship.getModifiedItemAttr('industrialCommandBonusShipCargoCapacity'), skill='Industrial Command Ships', **kwargs) class Effect8294(BaseEffect): """ industrialCommandBonusDroneOreMiningYield Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('industrialCommandBonusDroneOreMiningYield'), skill='Industrial Command Ships', **kwargs) class Effect8295(BaseEffect): """ industrialCommandBonusDroneIceHarvestingCycleTime Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', ship.getModifiedItemAttr('industrialCommandBonusDroneIceHarvestingCycleTime'), skill='Industrial Command Ships', **kwargs) class Effect8296(BaseEffect): """ capitalIndustrialShipBonusDroneOreMiningYield Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Mining Drone Operation'), 'miningAmount', ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneOreMiningYield'), skill='Capital Industrial Ships', **kwargs) class Effect8297(BaseEffect): """ capitalIndustrialShipBonusDroneIceCycleTime Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Ice Harvesting Drone Operation'), 'duration', ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneIceCycleTime'), skill='Capital Industrial Ships', **kwargs) class Effect8300(BaseEffect): """ shipRoleBonusGasHarvestingDuration Used by: Variations of ship: Covetor (2 of 2) Variations of ship: Retriever (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('shipRoleBonusGasHarvesterDuration'), **kwargs) class Effect8301(BaseEffect): """ exhumersBonusGasHarvestingDuration Used by: Ships from group: Exhumer (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('exhumersBonusGasHarvestingDuration'), skill='Exhumers', **kwargs) class Effect8303(BaseEffect): """ shipRoleBonusStripMinerActivationCost Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'capacitorNeed', ship.getModifiedItemAttr('shipRoleBonusStripMinerActivationCost'), **kwargs) class Effect8304(BaseEffect): """ shipRoleBonusIceHarvestingActivationCost Used by: Variations of ship: Covetor (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'capacitorNeed', ship.getModifiedItemAttr('shipRoleBonusIceHarvesterActivationCost'), **kwargs) class Effect8305(BaseEffect): """ shipRoleBonusOreMiningDuration Used by: Variations of ship: Covetor (2 of 2) Ship: Mackinaw """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'duration', ship.getModifiedItemAttr('shipRoleBonusOreMiningDuration'), **kwargs) class Effect8306(BaseEffect): """ industrialReconfigurationBonusConsumptionQuantity Used by: Skill: Industrial Reconfiguration """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): amount = -skill.getModifiedItemAttr('consumptionQuantityBonus') fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill(skill), 'consumptionQuantity', amount * skill.level, **kwargs) class Effect8309(BaseEffect): """ capitalIndustrialShipBonusDroneHitPoints Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('capitalIndustrialShipBonusDroneHitPoints'), skill='Capital Industrial Ships', **kwargs) class Effect8311(BaseEffect): """ industrialCommandBonusDroneHitPoints Used by: Ships from group: Industrial Command Ship (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('industrialCommandBonusDroneHitPoints'), skill='Industrial Command Ships', **kwargs) class Effect8313(BaseEffect): """ miningFrigateBonusGasCloudHarvestingDuration Used by: Variations of ship: Venture (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', ship.getModifiedItemAttr('miningFrigateBonusGasCloudHarvestingDuration'), skill='Mining Frigate', **kwargs) class Effect8315(BaseEffect): """ shipRoleBonusGasHarvestingYield Used by: Variations of ship: Venture (3 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'miningAmount', ship.getModifiedItemAttr('shipRoleBonusGasHarvestingYield'), **kwargs) class Effect8317(BaseEffect): """ miningFrigateBonusIceHarvestingDuration Used by: Ship: Endurance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'duration', ship.getModifiedItemAttr('miningFrigateBonusIceHarvestingDuration'), skill='Mining Frigate', **kwargs) class Effect8323(BaseEffect): """ gallenteIndustrialBonusMiningHoldCapacity Used by: Ship: Miasmos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'generalMiningHoldCapacity', ship.getModifiedItemAttr('gallenteIndustrialBonusMiningHoldCapacity'), skill='Gallente Hauler', **kwargs) class Effect8360(BaseEffect): """ shipBonusMissileReloadTimeGC2 Used by: Ship: Laelaps """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'reloadTime', ship.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect8362(BaseEffect): """ shipBonusWarpDisruptionFieldGeneratorSignatureRadius Used by: Ship: Laelaps """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Disrupt Field Generator', 'signatureRadiusBonus', ship.getModifiedItemAttr('eliteBonusHeavyInterdictors3'), **kwargs) class Effect8364(BaseEffect): """ industrialItemCompression Used by: Modules from group: Compressors (12 of 12) """ type = 'active' class Effect8366(BaseEffect): """ modifyHullResonancePostPercentpassive Used by: Implants named like: Federation Defense Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( f'{dmgType}DamageResonance', src.getModifiedItemAttr('hullDamageResistanceBonus'), **kwargs) class Effect8372(BaseEffect): """ fleetCompressionLogisticsRangeBonus Used by: Skill: Fleet Compression Logistics """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shipboard Compression Technology') or mod.item.requiresSkill('Capital Shipboard Compression Technology'), 'maxRange', skill.getModifiedItemAttr('fleetCompressionLogisticsRangeBonus') * skill.level, **kwargs) class Effect8377(BaseEffect): """ BattleshipRoleBonusArmorPlate&ShieldExtenderHP Used by: Ships from group: Battleship (34 of 35) Ships from group: Black Ops (6 of 6) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'capacityBonus', ship.getModifiedItemAttr('battleshipExtenderHPBonus'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'armorHPBonusAdd', ship.getModifiedItemAttr('battleshipPlateHPBonus'), **kwargs) fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Reinforced Bulkhead', 'structureHPMultiplier', ship.getModifiedItemAttr('battleshipBulkheadHPModifierBonus'), **kwargs) class Effect8467(BaseEffect): """ modifyJumpConduitPassengerRequired Used by: Module: Covert Jump Portal Generator I Module: Industrial Jump Portal Generator I """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr( 'jumpConduitPassengerRequiredAttributeID', module.getModifiedChargeAttr('jumpConduitPassengerRequiredAttributeID'), **kwargs) class Effect8468(BaseEffect): """ subsystemBonusBlackOpsJumpPassenger Used by: Subsystems named like: Defensive Covert Reconfiguration (4 of 4) """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): module.forceItemAttr( 'isBlackOpsJumpPortalPassenger', module.getModifiedChargeAttr('isBlackOpsJumpPortalPassenger'), **kwargs) module.forceItemAttr( 'isBlackOpsJumpConduitPassenger', module.getModifiedChargeAttr('isBlackOpsJumpConduitPassenger'), **kwargs) class Effect8470(BaseEffect): """ capitalIndustrialCommandBonusDroneDamage Used by: Ship: Rorqual """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', container.getModifiedItemAttr('capitalIndustrialCommandBonusDroneDamage'), skill='Capital Industrial Ships', **kwargs) class Effect8474(BaseEffect): """ subsystemBonusMassAddition Used by: Subsystem: Proteus Defensive - Augmented Plating """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('subsystemBonusMassAddition'), **kwargs) class Effect8477(BaseEffect): """ droneTrackingBonusPassive Used by: Implants named like: Federation Application Booster (4 of 4) Implants named like: Halcyon R Booster (5 of 5) Implants named like: Imperial Application Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', container.getModifiedItemAttr('droneTrackingBonus'), **kwargs) class Effect8478(BaseEffect): """ miningAndIceHarvestingCycleTimeBonusPassive Used by: Implants named like: Halcyon B Booster (5 of 5) Implants named like: Halcyon G Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting') or mod.item.requiresSkill('Mining'), 'duration', skill.getModifiedItemAttr('iceHarvestCycleBonus'), **kwargs) class Effect8479(BaseEffect): """ droneOptimalFalloffBonusPassive Used by: Implants named like: Federation Projection Booster (4 of 4) Implants named like: Halcyon Y Booster (5 of 5) Implants named like: Imperial Projection Booster (4 of 4) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxRange', container.getModifiedItemAttr('rangeSkillBonus'), **kwargs) fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'falloff', container.getModifiedItemAttr('falloffBonus'), **kwargs) class Effect11055(BaseEffect): """ shipBonusBattlecruiserHeavyMissileAoeVelocityMBC1 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect11056(BaseEffect): """ shipBonusBattlecruiserHeavyAssaultMissileAoeVelocityMBC1 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect11057(BaseEffect): """ shipBonusShieldBoostCapacitorCBC3 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusCBC3'), skill='Caldari Battlecruiser', **kwargs) class Effect11059(BaseEffect): """ shipBonusMediumHybridTrackingCBC1 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11060(BaseEffect): """ shipBonusDroneWebStrengthAndHitpointsGBC3 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'speedFactor', ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) for attr in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), attr, ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) class Effect11061(BaseEffect): """ roleBonusMHTRangeCBC2 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), attr, ship.getModifiedItemAttr('roleBonusCBC2'), **kwargs) class Effect11063(BaseEffect): """ shipBonusMediumEnergyWeaponDamageABC3 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs) class Effect11064(BaseEffect): """ shipBonusMediumEnergyWeaponRangeABC1 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect11065(BaseEffect): """ shipBonusArmorHitpointsABC1 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'armorHP', implant.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect11067(BaseEffect): """ battlecruiserMETRange2 Used by: Ship: Prophecy Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attr in ('maxRange', 'falloff'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), attr, src.getModifiedItemAttr('roleBonusCBC2'), **kwargs) class Effect11068(BaseEffect): """ shipMissileRoFMF Used by: Ship: Probe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Missile Launcher Operation'), 'speed', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect11069(BaseEffect): """ shipRoleBonusScanProbeLauncherCPU Used by: Ship: Heron Navy Issue Ship: Imicus Navy Issue Ship: Magnate Navy Issue Ship: Probe Fleet Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Astrometrics'), 'cpu', src.getModifiedItemAttr('shipRoleBonusScanProbeLauncherCPU'), **kwargs) class Effect11070(BaseEffect): """ shipBonusMissileDamageCF Used by: Ship: Heron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusCF'), skill='Caldari Frigate', **kwargs) class Effect11072(BaseEffect): """ shipBonusSmallHybridDamageGF2 Used by: Ship: Imicus Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11358(BaseEffect): """ shipBonusBattlecruiserSignatureRadiusMBC3 Used by: Ship: Cyclone Fleet Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'signatureRadius', implant.getModifiedItemAttr('shipBonusMBC3'), skill='Minmatar Battlecruiser', **kwargs) class Effect11359(BaseEffect): """ shipBonusShieldBoostFittingCBC4 Used by: Ship: Ferox Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('cpu', 'power'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), attr, ship.getModifiedItemAttr('shipBonusCBC4'), skill='Caldari Battlecruiser', **kwargs) class Effect11373(BaseEffect): """ shipBonusDreadnoughtM1ArmorBoostAmount&ShieldBoostAmount Used by: Ship: Naglfar Fleet Issue Ship: Valravn """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusDreadnoughtM1'), skill='Minmatar Dreadnought', **kwargs) class Effect11374(BaseEffect): """ shipBonusDreadnoughtA4EnergyWarfareRangeAmountBonus Used by: Ship: Revelation Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('powerTransferAmount', 'maxRange'): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', attr, ship.getModifiedItemAttr('shipBonusDreadnoughtA4'), skill='Amarr Dreadnought', **kwargs) class Effect11376(BaseEffect): """ shipBonusDreadnoughtG1OptimalRangeBonus Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11380(BaseEffect): """ shipBonusDreadnoughtG1ArmorBoostAmount Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11381(BaseEffect): """ shipBonusWarpScramblerRangeBonusG5 Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs) class Effect11382(BaseEffect): """ shipBonusDreadnoughtC1EwTargetPainter Used by: Ship: Phoenix Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Target Painter', 'signatureRadiusBonus', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect11387(BaseEffect): """ shipHybridDamageBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente1'), skill='Gallente Destroyer', **kwargs) class Effect11388(BaseEffect): """ shipBonusArmorRepairGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente2'), skill='Gallente Destroyer', **kwargs) class Effect11390(BaseEffect): """ armorUpgradesMassPenaltyReductionBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente3'), skill='Gallente Destroyer', **kwargs) class Effect11391(BaseEffect): """ shipHybridDamageBonusCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari1'), skill='Caldari Destroyer', **kwargs) class Effect11392(BaseEffect): """ shipHybridRangeBonusCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari2'), skill='Caldari Destroyer', **kwargs) class Effect11393(BaseEffect): """ shipHybridRangeBonusGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente4'), **kwargs) class Effect11394(BaseEffect): """ shipHybridFallOffGalNavyDestroyer Used by: Ship: Catalyst Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerGallente5'), **kwargs) class Effect11395(BaseEffect): """ shipBonusShieldBoosterCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusNavyDestroyerCaldari3'), skill='Caldari Destroyer', **kwargs) class Effect11396(BaseEffect): """ shipHybridRangeBonus2CalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari4'), **kwargs) class Effect11397(BaseEffect): """ shipHybridFallOffCalNavyDestroyer Used by: Ship: Cormorant Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerCaldari5'), **kwargs) class Effect11398(BaseEffect): """ shipProjectileDamageMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar1'), skill='Minmatar Destroyer', **kwargs) class Effect11399(BaseEffect): """ shipProjectileRofMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar2'), skill='Minmatar Destroyer', **kwargs) class Effect11400(BaseEffect): """ shipBonusMWDSignatureRadiusMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'signatureRadiusBonus', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar3'), skill='Minmatar Destroyer', **kwargs) class Effect11401(BaseEffect): """ shipProjectileRangeBonusMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar4'), **kwargs) class Effect11402(BaseEffect): """ shipProjectileFallOffMinNavyDestroyer Used by: Ship: Thrasher Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerMinmatar5'), **kwargs) class Effect11404(BaseEffect): """ shipArmorHpAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'armorHP', implant.getModifiedItemAttr('shipBonusNavyDestroyerAmarr1'), skill='Amarr Destroyer', **kwargs) class Effect11405(BaseEffect): """ shipBonusSmallEnergyTurretDamageAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr2'), skill='Amarr Destroyer', **kwargs) class Effect11406(BaseEffect): """ shipLaserCap1AmaNavyIssue Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr3'), skill='Amarr Destroyer', **kwargs) class Effect11407(BaseEffect): """ shipNeutCap1AmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'capacitorNeed', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr4'), skill='Amarr Destroyer', **kwargs) class Effect11408(BaseEffect): """ shipEnergyNeutralizerTransferAmountBonusAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'energyNeutralizerAmount', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr5'), skill='Amarr Destroyer', **kwargs) class Effect11410(BaseEffect): """ shipBonusSETFalloffAmaNavyDestroyer Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr7'), **kwargs) class Effect11411(BaseEffect): """ shipMissileDmgMC2 Used by: Ship: Bestla Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusMC2'), skill='Minmatar Cruiser', **kwargs) class Effect11412(BaseEffect): """ shipBonusShieldArmorResonanceMC Used by: Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'armor{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11413(BaseEffect): """ eliteBonusHeavyGunshipMissileExplosionVelocity1 Used by: Ship: Bestla Ship: Muninn """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('Heavy Assault Missiles') or mod.charge.requiresSkill('Heavy Missiles')), 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11414(BaseEffect): """ eliteBonusShieldBoosterAmount1 Used by: Ship: Cerberus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11415(BaseEffect): """ eliteBonusHybridTracking1 Used by: Ship: Eagle """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11416(BaseEffect): """ shipBonusHybridFalloffGC2 Used by: Ship: Exequror Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', src.getModifiedItemAttr('shipBonusGC2'), skill='Gallente Cruiser', **kwargs) class Effect11417(BaseEffect): """ shipBonusArmorPlateMassGC3 Used by: Ship: Exequror Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect11419(BaseEffect): """ shipBonusDroneTrackingGB2 Used by: Ship: Dominix Navy Issue """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', container.getModifiedItemAttr('shipBonusGB2'), skill='Gallente Battleship', **kwargs) class Effect11420(BaseEffect): """ shipBonusRepairAmountGB3 Used by: Ship: Dominix Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs) class Effect11421(BaseEffect): """ shipBonusTorpedoDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11422(BaseEffect): """ shipBonusCruiseMissileDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11423(BaseEffect): """ shipBonusHeavyMissileDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11424(BaseEffect): """ shipBonusLargeEnergyTurretDamageAB Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11425(BaseEffect): """ shipBonusDroneHitpointsAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), layer, ship.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11426(BaseEffect): """ shipBonusDroneDamageAB Used by: Ship: Armageddon Navy Issue """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusAB'), skill='Amarr Battleship', **kwargs) class Effect11428(BaseEffect): """ shipBonusCruiseMissileExplosionVelocityMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11429(BaseEffect): """ shipBonusTorpedoMissileExplosionVelocityMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11430(BaseEffect): """ shipBonusLargeProjectileTrackingMB Used by: Ship: Typhoon Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusMB'), skill='Minmatar Battleship', **kwargs) class Effect11431(BaseEffect): """ shipBonusShieldHpCF2 Used by: Ship: Crow """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('shipBonusCF2'), skill='Caldari Frigate', **kwargs) class Effect11432(BaseEffect): """ shipBonusArmorRepairEliteGunship2 Used by: Ship: Ishkur """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect11445(BaseEffect): """ systemSensorStrengthBonus Used by: Celestial: Turnur Aftermath """ runTime = 'early' type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): for sensor_type in ('Gravimetric', 'Ladar', 'Magnetometric', 'Radar'): fit.ship.boostItemAttr(f'scan{sensor_type}Strength', beacon.getModifiedItemAttr('sensorStrengthBonus'), stackingPenalties=True, **kwargs) class Effect11446(BaseEffect): """ shipBonusDreadnoughtG4DamageBonus Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'damageMultiplier', src.getModifiedItemAttr('shipBonusDreadnoughtG4'), skill='Gallente Dreadnought', **kwargs) class Effect11450(BaseEffect): """ shipBonusSETOptimalAmarNavyDestroyer6 Used by: Ship: Coercer Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Energy Turret'), 'maxRange', ship.getModifiedItemAttr('shipBonusNavyDestroyerAmarr6'), **kwargs) class Effect11452(BaseEffect): """ shipBonusWarpScramblerStrengthG5 Used by: Ship: Moros Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Warp Scrambler', 'warpScrambleStrength', ship.getModifiedItemAttr('shipBonusDreadnoughtG5'), skill='Gallente Dreadnought', **kwargs) class Effect11454(BaseEffect): """ shipBonusGrapplerFalloffM4 Used by: Ship: Naglfar Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Stasis Grappler', 'falloffEffectiveness', ship.getModifiedItemAttr('shipBonusDreadnoughtM4'), skill='Minmatar Dreadnought', **kwargs) class Effect11512(BaseEffect): """ eliteBonusGunshipLightMissileAndRocketROF Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Missile Launcher Light', 'Missile Launcher Rocket'), 'speed', ship.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect11513(BaseEffect): """ shipBonusMissileDamageMF2 Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusMF2'), skill='Minmatar Frigate', **kwargs) class Effect11514(BaseEffect): """ shipBonusArmorRepairAmountMF Used by: Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusMF'), skill='Minmatar Frigate', **kwargs) class Effect11515(BaseEffect): """ shipBonusArmorRepairAmountMC Used by: Ship: Bestla """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11516(BaseEffect): """ shipBonusShieldBoostAmountMC Used by: Ship: Bestla """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', ship.getModifiedItemAttr('shipBonusMC'), skill='Minmatar Cruiser', **kwargs) class Effect11517(BaseEffect): """ shipBonusStasisWebDroneHitpointsAT Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for layer in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), layer, ship.getModifiedItemAttr('shipBonusAT'), **kwargs) class Effect11518(BaseEffect): """ shipBonusStasisWebDroneVelocityAT2 Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Propulsion Jamming'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusAT2'), **kwargs) class Effect11519(BaseEffect): """ shipBonusStasisWebDroneWebStrengthAT3 Used by: Ship: Bestla Ship: Geri """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'speedFactor', ship.getModifiedItemAttr('shipBonusAT3'), **kwargs) class Effect11528(BaseEffect): """ covopsCloakCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Cloaking'), 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11529(BaseEffect): """ shipRole8BonusCoreProbeStrength Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Science'), 'baseSensorStrength', ship.getModifiedItemAttr('shipBonusRole8'), **kwargs) class Effect11530(BaseEffect): """ shipRole6BonusCoreProbeDeviation Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Science'), 'baseMaxScanDeviation', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect11531(BaseEffect): """ probeLauncherCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Scan Probe Launcher', 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11532(BaseEffect): """ dataMinerCPURole1Bonus Used by: Ship: Metamorphosis """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'cpu', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect11691(BaseEffect): """ debuffLance Used by: Modules named like: Disruptive Lance (4 of 4) """ dealsDamage = True type = 'active' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.boostItemAttr('maxVelocity', mod.getModifiedItemAttr('speedFactor'), stackingPenalties=True, **kwargs) fit.ship.increaseItemAttr('warpScrambleStatus', mod.getModifiedItemAttr('siegeModeWarpStatus'), **kwargs) class Effect11696(BaseEffect): """ shipBonusDreadnoughtC1HybridTracking Used by: Ship: Karura """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusDreadnoughtC1'), skill='Caldari Dreadnought', **kwargs) class Effect11697(BaseEffect): """ shipBonusDreadnoughtC2HybridOptimalRange Used by: Ship: Karura """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('shipBonusDreadnoughtC2'), skill='Caldari Dreadnought', **kwargs) class Effect11698(BaseEffect): """ shipBonusDisruptionLanceDamage Used by: Ships from group: Lancer Dreadnought (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), f'{dmgType}Damage', ship.getModifiedItemAttr('shipBonusAdvancedDreadnought1'), skill='Lancer Dreadnoughts', **kwargs) class Effect11700(BaseEffect): """ skillDisruptionLanceCapacitorUseBonus Used by: Skill: Disruptive Lance Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'capacitorNeed', skill.getModifiedItemAttr('disruptionLanceSkillBoostCapacitorCost') * skill.level, **kwargs) class Effect11701(BaseEffect): """ shipBonusDisruptionLanceRange Used by: Ships from group: Lancer Dreadnought (4 of 4) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda module: module.item.requiresSkill('Disruptive Lance Operation'), 'maxRange', ship.getModifiedItemAttr('shipBonusAdvancedDreadnought2'), skill='Lancer Dreadnoughts', **kwargs) class Effect11702(BaseEffect): """ eliteBonusMarauderArmourBonus2a Used by: Ship: Vargur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusViolators2'), skill='Marauders', **kwargs) class Effect11704(BaseEffect): """ shipBonusDreadnoughtM2CapitalProjectileFalloff Used by: Ship: Valravn """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', src.getModifiedItemAttr('shipBonusDreadnoughtM2'), skill='Minmatar Dreadnought', **kwargs) class Effect11705(BaseEffect): """ shipBonusDreadnoughtA1MissileDamage Used by: Ship: Bane """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), f'{dmgType}Damage', src.getModifiedItemAttr('shipBonusDreadnoughtA1'), skill='Amarr Dreadnought', **kwargs) class Effect11706(BaseEffect): """ shipBonusDreadnoughtA2MissileExplosionRadius Used by: Ship: Bane """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: ( mod.charge.requiresSkill('XL Torpedoes') or mod.charge.requiresSkill('XL Cruise Missiles') or mod.charge.requiresSkill('Torpedoes')), 'aoeCloudSize', src.getModifiedItemAttr('shipBonusDreadnoughtA2'), skill='Amarr Dreadnought', **kwargs) class Effect11707(BaseEffect): """ shipBonusDreadnoughtG1HullResonance Used by: Ship: Hubris """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( f'{dmgType}DamageResonance', src.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect11714(BaseEffect): """ disruptionLanceDisallowCloaking Used by: Modules named like: Disruptive Lance (4 of 4) """ runTime = 'early' type = 'offline' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Cloaking'), 'activationBlocked', module.getModifiedItemAttr('disruptionLanceDisallowCloaking'), **kwargs) class Effect11743(BaseEffect): """ shipProjectileTrackingGD Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11745(BaseEffect): """ shipShieldEmResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldEmDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11746(BaseEffect): """ shipShieldThermalResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldThermalDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11747(BaseEffect): """ shipShieldKineticResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldKineticDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11748(BaseEffect): """ shipShieldExplosiveResistanceGuristasAlligatorCBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr('shieldExplosiveDamageResonance', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect11750(BaseEffect): """ shipBonusHeavyAssaultMissileKineticDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11751(BaseEffect): """ shipBonusHeavyAssaultMissileThermalDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11752(BaseEffect): """ shipBonusHeavyMissileKineticDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11753(BaseEffect): """ shipBonusHeavyMissileThermalDamageGuristasAlligatorGBC Used by: Ship: Alligator """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Missiles'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11763(BaseEffect): """ shipBonusProjectileTurretFalloffBonusGBC Used by: Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect11764(BaseEffect): """ shipRoleBonusProjectileRofPirateBattlecruiser Used by: Ship: Khizriel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'speed', ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) class Effect11767(BaseEffect): """ shipBonusHybridTrackingATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusHeavyGunship1'), skill='Heavy Assault Cruisers', **kwargs) class Effect11919(BaseEffect): """ shipBonusDestroyerMD1Falloff Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect11938(BaseEffect): """ shipShieldEMResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldEmDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11939(BaseEffect): """ shipShieldThermalResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldThermalDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11940(BaseEffect): """ shipShieldKineticResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldKineticDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11941(BaseEffect): """ shipShieldExplosiveResistanceCD2 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'shieldExplosiveDamageResonance', src.getModifiedItemAttr('shipBonusCD2'), skill='Caldari Destroyer', **kwargs) class Effect11942(BaseEffect): """ shipBonusKineticMissileDamageGD Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11943(BaseEffect): """ shipBonusThermalMissileDamageGD Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', ship.getModifiedItemAttr('shipBonusGD1'), skill='Gallente Destroyer', **kwargs) class Effect11944(BaseEffect): """ shipBonusTitanG2ProjectileFalloff Used by: Ship: Azariel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', src.getModifiedItemAttr('shipBonusTitanG2'), skill='Gallente Dreadnought', **kwargs) class Effect11945(BaseEffect): """ shipBonusTitanG1ProjectileTracking Used by: Ship: Azariel """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'trackingSpeed', src.getModifiedItemAttr('shipBonusTitanG1'), skill='Gallente Dreadnought', **kwargs) class Effect11946(BaseEffect): """ systemSmallUpwellTurretDamage Used by: Celestials named like: Class Wolf Rayet Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', beacon.getModifiedItemAttr('smallWeaponDamageMultiplier'), stackingPenalties=True, **kwargs) class Effect11947(BaseEffect): """ systemUpwellAoeCloudSize Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeCloudSize', beacon.getModifiedItemAttr('aoeCloudSizeMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11948(BaseEffect): """ systemUpwellDamageMultiplier Used by: Celestials named like: Class Magnetar Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier', beacon.getModifiedItemAttr('damageMultiplierMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11953(BaseEffect): """ systemUpwellAoeVelocity Used by: Celestials named like: Class Black Hole Effects (6 of 6) """ type = ('projected', 'passive') @staticmethod def handler(fit, beacon, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'aoeVelocity', beacon.getModifiedItemAttr('aoeVelocityMultiplier'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect11992(BaseEffect): """ shipBonusArmorPlateMassAT Used by: Ship: Cybele Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusATF3'), **kwargs) class Effect11993(BaseEffect): """ shipBonusRepairSystemsBonusATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('shipBonusGC3'), skill='Gallente Cruiser', **kwargs) class Effect11994(BaseEffect): """ shipBonusHybridFalloffATC3 Used by: Ship: Cybele """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), 'falloff', src.getModifiedItemAttr('eliteBonusHeavyGunship2'), skill='Heavy Assault Cruisers', **kwargs) class Effect11995(BaseEffect): """ shipBonusHeatAfterburnerATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Afterburner'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11996(BaseEffect): """ shipBonusMWDHeatATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('High Speed Maneuvering'), 'overloadSpeedFactorBonus', src.getModifiedItemAttr('shipBonusGF2'), skill='Gallente Frigate', **kwargs) class Effect11997(BaseEffect): """ shipBonusArmorRepATGF Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Repair Systems'), 'armorDamageAmount', src.getModifiedItemAttr('eliteBonusGunship1'), skill='Assault Frigates', **kwargs) class Effect11998(BaseEffect): """ shipBonusSmallHybridMaxRangeATF3 Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'maxRange', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect11999(BaseEffect): """ shipBonusSmallHybridTrackingSpeedATF3 Used by: Ship: Shapash """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Hybrid Turret'), 'trackingSpeed', src.getModifiedItemAttr('eliteBonusGunship2'), skill='Assault Frigates', **kwargs) class Effect12003(BaseEffect): """ vortonTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringVortonProjectorOperation Used by: Implants named like: Halcyon R Booster (5 of 5) """ type = 'passive' @staticmethod def handler(fit, booster, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'speed', booster.getModifiedItemAttr('turretSpeeBonus'), **kwargs) class Effect12038(BaseEffect): """ shipBonusSPTFalloffMF3 Used by: Ship: Republic Fleet Firetail """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonus3MF'), skill='Minmatar Frigate', **kwargs) class Effect12050(BaseEffect): """ shipBonusColonyResourcesHoldCapacityUH1 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUH1'), skill='Upwell Hauler', **kwargs) class Effect12051(BaseEffect): """ shipMissileEMDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12052(BaseEffect): """ shipMissileThermalDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12053(BaseEffect): """ shipMissileExplosiveDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12054(BaseEffect): """ shipMissileKineticDamageUH2 Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', container.getModifiedItemAttr('shipBonusUH2'), skill='Upwell Hauler', **kwargs) class Effect12057(BaseEffect): """ shipBonusColonyResourcesHoldCapacityUFreighter1 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'specialColonyResourcesHoldCapacity', src.getModifiedItemAttr('shipBonusUFreighter1'), skill='Upwell Freighter', **kwargs) class Effect12058(BaseEffect): """ shipMissileEMDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'emDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12060(BaseEffect): """ shipMissileThermalDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'thermalDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12061(BaseEffect): """ shipMissileExplosiveDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosiveDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12062(BaseEffect): """ shipMissileKineticDamageUFreighter2 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'kineticDamage', container.getModifiedItemAttr('shipBonusUFreighter2'), skill='Upwell Freighter', **kwargs) class Effect12063(BaseEffect): """ shipRoleBonusUpwellFreighterCloakCPUPenalty Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.group.name == 'Cloaking Device', 'cpu', ship.getModifiedItemAttr('upwellFreightercloakCPUPenalty'), **kwargs) class Effect12069(BaseEffect): """ shipBonusAutoTargetingMissilesUFreighter3 Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): damageTypes = ('em', 'explosive', 'kinetic', 'thermal') for dmgType in damageTypes: fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Auto-Targeting Missiles'), f'{dmgType}Damage', container.getModifiedItemAttr('shipBonusUFreighter3'), skill='Upwell Freighter', **kwargs) class Effect12071(BaseEffect): """ shipRoleBonusUpwellFreighterCapitalFlexHardenerFittingCapBonus Used by: Ship: Avalanche """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'Flex Shield Hardener', 'power', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs) fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name == 'Flex Shield Hardener', 'capacitorNeed', ship.getModifiedItemAttr('upwellFreighterCapitalFlexHardenerFittingCapBonus'), **kwargs) class Effect12072(BaseEffect): """ eliteIndustrialUpwellNeutNosHeatBonus Used by: Ship: Torrent """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Energy Neutralizer', 'Energy Nosferatu'), 'overloadSelfDurationBonus', ship.getModifiedItemAttr('roleBonusOverheatDST'), **kwargs) class Effect12098(BaseEffect): """ jumpPortalPassengerBonusPercentSkill Used by: Ships from group: Carrier (4 of 4) Ships from group: Supercarrier (6 of 6) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'conduitJumpPassengerCount', src.getModifiedItemAttr('conduitPassengerBonusPercent'), skill='Capital Jump Portal Generation', **kwargs) class Effect12102(BaseEffect): """ capitalMJDSkillCapReductionBonus Used by: Skill: Capital Micro Jump Drive Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Micro Jump Drive Operation'), 'capacitorNeed', skill.getModifiedItemAttr('capitalMJDCapReductionBonus') * skill.level, **kwargs) class Effect12126(BaseEffect): """ microJumpPortalDriveCapital Used by: Module: Capital Micro Jump Field Generator """ type = 'active' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.boostItemAttr('signatureRadius', module.getModifiedItemAttr('signatureRadiusBonusPercent'), stackingPenalties=True, **kwargs) class Effect12127(BaseEffect): """ shipRoleBonusUpwellHaulersMediumMissileFittingBonus Used by: Variations of ship: Squall (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('cpu', 'power'): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Heavy Assault', 'Missile Launcher Heavy', 'Missile Launcher Rapid Light'), attr, ship.getModifiedItemAttr('upwellHaulersMediumMissileFittingBonus'), **kwargs) class Effect12165(BaseEffect): """ ATFrigDmgBonus Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATFrigDmgBonus') * sec_status fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Small Energy Turret') or mod.item.requiresSkill('Small Hybrid Turret') or mod.item.requiresSkill('Small Projectile Turret')), 'damageMultiplier', bonus, **kwargs) for dmgType in ('em', 'kinetic', 'explosive', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets') or mod.charge.requiresSkill('Light Missiles'), f'{dmgType}Damage', bonus, **kwargs) class Effect12176(BaseEffect): """ shipBonusAllShieldresistATCC1 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusCC3'), skill='Caldari Cruiser', **kwargs) class Effect12179(BaseEffect): """ ShipBonusAllShieldResistATCF1 Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonus3CF'), skill='Caldari Frigate', **kwargs) class Effect12180(BaseEffect): """ roleBonusATCruiserMJDFittingReduction Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'cpu', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Micro Jump Drive', 'power', ship.getModifiedItemAttr('flagCruiserFittingBonusPropMods'), **kwargs) class Effect12181(BaseEffect): """ ATcruiserTackleBonus1 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATcruiserStasisWebifierBonus') * sec_status fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Stasis Web', 'maxRange', bonus, **kwargs) class Effect12183(BaseEffect): """ shipBonusATpropDuration Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name in ('Propulsion Module', 'Microwarpdrive'), 'duration', ship.getModifiedItemAttr('shipBonusATprobDuration'), **kwargs) class Effect12184(BaseEffect): """ shipBonusATAllShieldResistCB3 Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for dmgType in ('em', 'thermal', 'kinetic', 'explosive'): fit.ship.boostItemAttr( 'shield{}DamageResonance'.format(dmgType.capitalize()), ship.getModifiedItemAttr('shipBonusCB3'), skill='Caldari Battleship', **kwargs) class Effect12185(BaseEffect): """ shipBonusBurstJammer ATB Used by: Ship: Python """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATBurstJammerStrengthBonus') * sec_status for attr in ('ecmBurstRange', 'scanRadarStrengthBonus', 'scanGravimetricStrengthBonus', 'scanLadarStrengthBonus', 'scanMagnetometricStrengthBonus'): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Burst Jammer', attr, bonus, **kwargs) class Effect12188(BaseEffect): """ shipRoleBonusSPTDamage Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12189(BaseEffect): """ shipRoleBonusMPTDamage Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'damageMultiplier', container.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12190(BaseEffect): """ shipRoleBonusRocketDamage Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Rockets'), f'{damageType}Damage', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect12191(BaseEffect): """ shipRoleBonusHAMDamage Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for damageType in ('em', 'explosive', 'kinetic', 'thermal'): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), f'{damageType}Damage', ship.getModifiedItemAttr('shipBonusRole2'), **kwargs) class Effect12192(BaseEffect): """ stasisWebifierResistanceBonusMD1 Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMD1'), skill='Minmatar Destroyer', **kwargs) class Effect12193(BaseEffect): """ stasisWebifierResistanceBonusMBC1 Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.ship.boostItemAttr( 'stasisWebifierResistance', ship.getModifiedItemAttr('shipBonusMBC1'), skill='Minmatar Battlecruiser', **kwargs) class Effect12194(BaseEffect): """ shipBonusShieldBoostCD1 Used by: Ship: Tholos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusCD1'), skill='Caldari Destroyer', **kwargs) class Effect12195(BaseEffect): """ shipBonusShieldBoostCBC1 Used by: Ship: Cenotaph """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect12202(BaseEffect): """ ATcruiserTackleBonus2 Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): # Get pilot sec status bonus directly here, instead of going through the intermediary effects try: sec_status = ship.owner.getPilotSecurity(low_limit=-10, high_limit=0) except (KeyboardInterrupt, SystemExit): raise except: return bonus = ship.getModifiedItemAttr('ATcruiserScramblerDisruptorBonus') * sec_status fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == 'Warp Scrambler', 'maxRange', bonus, **kwargs) class Effect12203(BaseEffect): """ ATfrigDroneBonus Used by: Ship: Sidewinder """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Light Drone Operation'), attr, ship.getModifiedItemAttr('ATfrigDroneBonus'), **kwargs) class Effect12213(BaseEffect): """ shipBonusMPTFalloffMC3 Used by: Ship: Stabber Fleet Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Projectile Turret'), 'falloff', ship.getModifiedItemAttr('ShipBonusMC3'), skill='Minmatar Cruiser', **kwargs) class Effect12214(BaseEffect): """ AtcruiserDroneBonus Used by: Ship: Cobra """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Medium Drone Operation'), attr, ship.getModifiedItemAttr('ATcruiserDroneBonus'), **kwargs) class Effect12217(BaseEffect): """ skillDotMaxHPPercentagePerTickBonus Used by: Skill: Breacher Pod Launcher Operation """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxHPPercentagePerTick', skill.getModifiedItemAttr('dotMaxHPPercentagePerTickBonus') * skill.level, **kwargs) class Effect12218(BaseEffect): """ skillDotMaxDamagePerTickBonus Used by: Skill: Breacher Pod Clone Efficacity """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotMaxDamagePerTick', skill.getModifiedItemAttr('dotMaxDamagePerTickBonus') * skill.level, **kwargs) class Effect12219(BaseEffect): """ skillDotPodVelocityBonus Used by: Skill: Breacher Pod Projection """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'maxVelocity', skill.getModifiedItemAttr('speedFactor') * skill.level, **kwargs) class Effect12220(BaseEffect): """ skillDotLauncherRoFBonus Used by: Skill: Breacher Pod Rapid Firing """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Breacher Pod Launcher Operation'), 'speed', skill.getModifiedItemAttr('rofBonus') * skill.level, **kwargs) class Effect12221(BaseEffect): """ skillDotDurationBonus Used by: Skill: Breacher Pod Clone Longevity """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Breacher Pod Launcher Operation'), 'dotDuration', skill.getModifiedItemAttr('durationBonus') * skill.level, **kwargs) class Effect12244(BaseEffect): """ shipBonusRole1CapitalProjectileDamageBonus Used by: Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusRole1'), **kwargs) class Effect12245(BaseEffect): """ shipBonusDreadnoughtG1FalloffBonus Used by: Ship: Sarathiel """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusDreadnoughtG1'), skill='Gallente Dreadnought', **kwargs) class Effect12246(BaseEffect): """ shipBonusRoleAngelDreadMoveWhileSieged Used by: Ship: Sarathiel """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Siege Module', 'speedFactor', ship.getModifiedItemAttr('shipBonusSiegeSpeedMultiplier'), **kwargs) class Effect12249(BaseEffect): """ shipBonusDroneDamageHeavyMediumLightMultiplierGBC1 Used by: Ship: Eos Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), 'damageMultiplier', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12250(BaseEffect): """ shipBonusSentryDroneDamageAndSentryHPMultiplierGBC3 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attrName in ('damageMultiplier', 'shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), attrName, ship.getModifiedItemAttr('shipBonusGBC3'), skill='Gallente Battlecruiser', **kwargs) class Effect12251(BaseEffect): """ shipBonusDroneHPHeavyMediumLightGBC1 Used by: Ship: Eos Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attrName in ('shieldCapacity', 'armorHP', 'hp'): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), attrName, ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12252(BaseEffect): """ eliteBonusCommandShipDroneTrackingHeavyMediumLightCS2 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: ( drone.item.requiresSkill('Light Drone Operation') or drone.item.requiresSkill('Medium Drone Operation') or drone.item.requiresSkill('Heavy Drone Operation')), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) class Effect12253(BaseEffect): """ eliteBonusCommandShipDroneTrackingSentryCS4 Used by: Ship: Eos """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Sentry Drone Interfacing'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips4'), skill='Command Ships', **kwargs) class Effect12267(BaseEffect): """ shipBloodRaiderCapitalNosNeutralizationSignatureResolutionReduction Used by: Ship: Chemosh """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'energyNeutralizerSignatureResolution', ship.getModifiedItemAttr('shipBloodRaiderCapitalNosSignatureReductionMultiplyer'), **kwargs) class Effect12275(BaseEffect): """ shipBonusArmorPlateMassEliteBonusLogistics4 Used by: Ship: Oneiros """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12276(BaseEffect): """ shipBonusShieldExtenderSigEliteBonusLogistics4 Used by: Ship: Scimitar """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'signatureRadiusAdd', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12278(BaseEffect): """ shipBonusArmorPlateHitpointAmountEliteBonusLogistics4 Used by: Ships from group: Logistics (3 of 7) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'armorHPBonusAdd', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12279(BaseEffect): """ shipBonusShieldExtenderCapacityBonusEliteBonusLogistics4 Used by: Ship: Basilisk Ship: Etana """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Shield Extender', 'capacityBonus', ship.getModifiedItemAttr('eliteBonusLogistics4'), skill='Logistics Cruisers', **kwargs) class Effect12283(BaseEffect): """ implantSetHackingVirusCoheranceEffect Used by: Implants named like: grade Wedge (12 of 12) """ runTime = 'early' type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.appliedImplants.filteredItemMultiply( lambda imp: imp.item.requiresSkill('Cybernetics'), 'implantSetHackingVirusCoherenceModifier', implant.getModifiedItemAttr('implantSetHackingVirusCoherenceOmegaSetBonus'), **kwargs) class Effect12284(BaseEffect): """ implantSetHackingVirusCoheranceModifierEffect Used by: Implants named like: grade Wedge (12 of 12) """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'virusCoherence', implant.getModifiedItemAttr('implantSetHackingVirusCoherenceModifier'), **kwargs) class Effect12286(BaseEffect): """ shipLPWRangeBonusPCBS1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'maxRange', ship.getModifiedItemAttr('shipBonusPBS1'), skill='Precursor Battleship', **kwargs) class Effect12287(BaseEffect): """ shipLPWTrackingBonusPCBS1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusPBS2'), skill='Precursor Battleship', **kwargs) class Effect12288(BaseEffect): """ eliteBonusViolatorsLPWDmgMultiMax1 Used by: Ship: Babaroga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Precursor Weapon'), 'damageMultiplierBonusMax', ship.getModifiedItemAttr('eliteBonusViolators1'), skill='Marauders', **kwargs) class Effect12296(BaseEffect): """ shipLaserCapABC3 Used by: Ship: Harbinger Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Medium Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusABC3'), skill='Amarr Battlecruiser', **kwargs) class Effect12329(BaseEffect): """ shipMiningYieldBonusOreDestroyer1 Used by: Variations of ship: Pioneer (3 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', src.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs) class Effect12330(BaseEffect): """ shipMiningRangeBonusOreDestroyer2 Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'maxRange', src.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12331(BaseEffect): """ shipGasCloudDurationBonusOreDestroyer3 Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12529(BaseEffect): """ shipBonusArmorResistsUniformSOEABC1 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') for damageType in damageTypes: fit.ship.boostItemAttr( f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusABC1'), skill='Amarr Battlecruiser', **kwargs) class Effect12530(BaseEffect): """ expeditionCommandDurationBonus Used by: Skill: Expedition Command """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration', src.getModifiedItemAttr('durationBonus') * lvl, **kwargs) class Effect12531(BaseEffect): """ expeditionCommandStrengthBonus Used by: Skill: Expedition Command Specialist """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): lvl = src.level for i in (1, 2, 3, 4): fit.modules.filteredChargeBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), f'warfareBuff{i}Multiplier', src.getModifiedItemAttr('commandStrengthBonus') * lvl, **kwargs) class Effect12537(BaseEffect): """ shipBonusAnalyzerRangeECS1 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Data Miners', 'maxRange', implant.getModifiedItemAttr('shipBonusSoEECS1'), skill='Expedition Command Ships', **kwargs) class Effect12538(BaseEffect): """ shipBonusGasCloudScoopDurationECS2 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusSoEECS2'), skill='Expedition Command Ships', **kwargs) class Effect12539(BaseEffect): """ shipBonusExplorationCommandStrengthDurationECS3 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), attrName, src.getModifiedItemAttr('shipBonusSoEECS3'), skill='Expedition Command Ships', **kwargs) class Effect12540(BaseEffect): """ shipBonusArmorCommandStrengthDurationECS4 Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Armored Command'), attrName, src.getModifiedItemAttr('shipBonusSoEECS4'), skill='Expedition Command Ships', **kwargs) class Effect12541(BaseEffect): """ shipBonusGasCloudScoopCPUreductionSOEECSrole Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'cpu', src.getModifiedItemAttr('shipBonusGasCloudScoopCPUreductionSOEECSrole'), **kwargs) class Effect12542(BaseEffect): """ expeditionCommandMindlink Used by: Implants named like: Expedition Command Mindlink (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), attrName, src.getModifiedItemAttr('mindlinkBonus'), **kwargs) class Effect12543(BaseEffect): """ shipBonusRole6ExpeditionBurstDurationSOEECS Used by: Ship: Odysseus """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Expedition Command'), 'buffDuration', src.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12554(BaseEffect): """ shipDroneHPandDamageOreDestroyer2 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for attr in ('shieldCapacity', 'armorHP', 'hp', 'damageMultiplier'): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), attr, ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12555(BaseEffect): """ shipBonusShieldAllResistancesOreDestroyer3 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): for type in ('kinetic', 'thermal', 'explosive', 'em'): fit.ship.boostItemAttr( f'shield{type.capitalize()}DamageResonance', ship.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12556(BaseEffect): """ eliteBonusCommandDestroyerMining1 Used by: Ship: Outrider """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for attrName in ('buffDuration', 'warfareBuff1Value', 'warfareBuff2Value', 'warfareBuff3Value', 'warfareBuff4Value'): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining Foreman'), attrName, src.getModifiedItemAttr('eliteBonusCommandDestroyer1'), skill='Command Destroyers', **kwargs) class Effect12557(BaseEffect): """ shipBonusGasCloudDurationRoleBonusOreMiningDestroyer Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gas Cloud Harvesting'), 'duration', src.getModifiedItemAttr('shipBonusGasCloudDurationRoleBonusOreMiningDestroyer'), **kwargs) class Effect12559(BaseEffect): """ shipShieldBoosterBonusOreExecutiveDestroyer4 Used by: Ship: Pioneer Consortium Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('shipBonusOreDestroyer4'), skill='Mining Destroyer', **kwargs) class Effect12560(BaseEffect): """ oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficultyRoleBonus Used by: Ships named like: Consortium Issue (2 of 2) """ type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.drones.filteredItemIncrease( lambda drone: drone.item.requiresSkill('Salvage Drone Operation'), 'accessDifficultyBonus', container.getModifiedItemAttr('oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficulty'), **kwargs) class Effect12563(BaseEffect): """ shipShieldBoosterBonusOreExecutiveFrigate Used by: Ship: Venture Consortium Issue """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Shield Operation'), 'shieldBonus', src.getModifiedItemAttr('OreMiningFrigateExecutiveShieldBoosterShipBonus'), skill='Mining Frigate', **kwargs) class Effect12565(BaseEffect): """ shipBonusDroneTrackingSpeedGBC1 Used by: Ship: Myrmidon Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('shipBonusGBC1'), skill='Gallente Battlecruiser', **kwargs) class Effect12566(BaseEffect): """ shipBonusDroneMWDboostrole6 Used by: Ship: Mamba """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda drone: drone.item.requiresSkill('Drones'), 'maxVelocity', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12567(BaseEffect): """ shipBonusSmallProjectileFalloffRole6 Used by: Ship: Mekubal """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Small Projectile Turret'), 'falloff', ship.getModifiedItemAttr('shipBonusRole6'), **kwargs) class Effect12568(BaseEffect): """ eliteBonusJustWarpScramblerRangeBonusBlops1 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Navigation'), 'maxRange', src.getModifiedItemAttr('eliteBonusBlackOps1'), skill='Black Ops', **kwargs) class Effect12569(BaseEffect): """ eliteBonusJustWarpScramblerStrengthBonusBlops3 Used by: Ship: Sin """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemIncrease( lambda mod: mod.item.requiresSkill('Navigation'), 'warpScrambleStrength', ship.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs) class Effect12573(BaseEffect): """ shipBonusLargeEnergyTurretCapReductionAB3 Used by: Ship: Apocalypse Ship: Apocalypse Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Large Energy Turret'), 'capacitorNeed', ship.getModifiedItemAttr('shipBonusAB3'), skill='Amarr Battleship', **kwargs) class Effect12575(BaseEffect): """ modeRemoteArmorRepairCapacitorCostPostDiv Used by: Module: Confessor Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'capacitorNeed', 1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs) class Effect12576(BaseEffect): """ modeRemoteShieldRepairCapacitorCostPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'capacitorNeed', 1 / ship.getModifiedItemAttr('modeRemoteRepairCapacitorCostPostDiv'), **kwargs) class Effect12577(BaseEffect): """ modeRemoteRepairAmountArmorPostDiv Used by: Module: Confessor Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Remote Armor Repair Systems'), 'armorDamageAmount', 1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs) class Effect12578(BaseEffect): """ modeRemoteRepairAmountShieldPostDiv Used by: Module: Svipul Defense Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.requiresSkill('Shield Emission Systems'), 'shieldBonus', 1 / ship.getModifiedItemAttr('modeRemoteRepairBonusPostDiv'), **kwargs) class Effect12579(BaseEffect): """ shipBonusArmorPlateMassGB3 Used by: Ship: Megathron Navy Issue """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Armor Plate', 'massAddition', ship.getModifiedItemAttr('shipBonusGB3'), skill='Gallente Battleship', **kwargs) class Effect12591(BaseEffect): """ miningSensorArrayScannerUpgrade Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, mod, context, projectionRange, **kwargs): fit.ship.increaseItemAttr('miningScannerUpgrade', mod.getModifiedItemAttr('miningScannerUpgrade'), **kwargs) class Effect12592(BaseEffect): """ shipBonusCarrierA5SupportFighterBonusEffect Used by: Ship: Archon """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityEnergyNeutralizerAmount', src.getModifiedItemAttr('shipBonusCarrierA5'), skill='Amarr Carrier', **kwargs) class Effect12593(BaseEffect): """ shipBonusCarrierC5SupportFighterBonusEffect Used by: Ship: Chimera """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): for sensorType in ('Radar', 'Magnetometric', 'Ladar', 'Gravimetric'): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), f'fighterAbilityECMStrength{sensorType}', src.getModifiedItemAttr('shipBonusCarrierC5'), skill='Caldari Carrier', **kwargs) class Effect12594(BaseEffect): """ shipBonusCarrierG5SupportFighterBonusSpeed Used by: Ship: Thanatos """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityAfterburnerSpeedBonus', src.getModifiedItemAttr('shipBonusCarrierG5'), skill='Gallente Carrier', **kwargs) class Effect12595(BaseEffect): """ shipBonusCarrierM5SupportFighterBonusEffect Used by: Ship: Nidhoggur """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Support Fighters'), 'fighterAbilityStasisWebifierSpeedPenalty', src.getModifiedItemAttr('shipBonusCarrierM5'), skill='Minmatar Carrier', **kwargs) class Effect12596(BaseEffect): """ shipMiningBonusYieldOreDestroyerRoleBonus Used by: Ships named like: Pioneer (2 of 2) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningAmount', src.getModifiedItemAttr('shipMiningBonusYieldOreDestroyerRoleBonus'), **kwargs) class Effect12597(BaseEffect): """ moduleBonusIntegratedSensorArray Used by: Module: Integrated Sensor Array """ type = 'active' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.ship.boostItemAttr('scanResolution', src.getModifiedItemAttr('scanResolutionBonus'), stackingPenalties=True, **kwargs) fit.ship.multiplyItemAttr('maxTargetRange', src.getModifiedItemAttr('maxTargetRangeMultiplier'), stackingPenalties=True, **kwargs) fit.ship.forceItemAttr('maximumRangeCap', src.getModifiedItemAttr('maximumRangeCap'), **kwargs) for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'): attr = 'scan{}Strength'.format(scanType) bonus = src.getModifiedItemAttr('scan{}StrengthPercent'.format(scanType)) fit.ship.boostItemAttr(attr, bonus, stackingPenalties=True, **kwargs) fit.fighters.filteredItemBoost(lambda mod: mod.item.requiresSkill('Fighters'), attr, bonus, stackingPenalties=True, **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'duration', src.getModifiedItemAttr('siegeLocalLogisticsDurationBonus'), **kwargs) fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Shield Operation') or mod.item.requiresSkill('Capital Repair Systems'), 'capacitorNeed', src.getModifiedItemAttr('siegeLocalLogisticsCapacitorNeedBonus'), **kwargs) class Effect12739(BaseEffect): """ shipBonusEnergyNeutOptimalAC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Neutralizer', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect12740(BaseEffect): """ shipBonusEnergyNosOptimalAC2 Used by: Ship: Ashimmu """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Energy Nosferatu', 'maxRange', src.getModifiedItemAttr('shipBonusAC2'), skill='Amarr Cruiser', **kwargs) class Effect12753(BaseEffect): """ shipRoleBonusOREExecutiveIssueMiningCriticalHitChanceBonus Used by: Ships named like: Consortium Issue (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining'), 'miningCritChance', ship.getModifiedItemAttr('shipRoleBonusOREExecutiveIssueMiningCriticalHitChance'), **kwargs) class Effect12755(BaseEffect): """ miningCritChanceSkillPostPercentLRSMBonus Used by: Skill: Mining Precision """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus') * src.level, **kwargs) class Effect12757(BaseEffect): """ miningCritYieldSkillPostPercentLRSMBonus Used by: Skill: Mining Exploitation """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus') * src.level, **kwargs) class Effect12758(BaseEffect): """ shipRoleBonusAnhingaLargeMissilePowerFittingBonus Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Rapid Heavy', 'Missile Launcher Cruise', 'Missile Launcher Torpedo'), 'power', ship.getModifiedItemAttr('AnhingaLargeMissilePowerFittingBonus'), **kwargs) class Effect12759(BaseEffect): """ miningCritChanceBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', src.getModifiedItemAttr('miningCritChanceBonus'), **kwargs) class Effect12760(BaseEffect): """ miningCritBonusYieldBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', src.getModifiedItemAttr('miningCritBonusYieldBonus'), **kwargs) class Effect12761(BaseEffect): """ miningWasteChanceBonusOreIceOnline Used by: Modules from group: Mining Survey Chipset (4 of 4) """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill('Mining') or mod.item.requiresSkill('Ice Harvesting') or mod.item.requiresSkill('Gas Cloud Harvesting')), 'miningWasteProbability', src.getModifiedItemAttr('miningWasteProbabilityBonus'), stackingPenalties=True, **kwargs) class Effect12764(BaseEffect): """ shipRoleBonusAnhingaLargeMissileCpuFittingBonus Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Rapid Heavy', 'Missile Launcher Cruise', 'Missile Launcher Torpedo'), 'cpu', ship.getModifiedItemAttr('AnhingaLargeMissileCpuFittingBonus'), **kwargs) class Effect12766(BaseEffect): """ shipBonusTorpedoAndCruiseMissileExplosionRadiusCBC1 Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'), 'aoeCloudSize', ship.getModifiedItemAttr('shipBonusCBC1'), skill='Caldari Battlecruiser', **kwargs) class Effect12767(BaseEffect): """ tacticalBonusSkuaDefensiveShieldRechargeRate Used by: Module: Skua Defense Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.ship.multiplyItemAttr('shieldRechargeRate', 1 / module.getModifiedItemAttr('modeShieldRechargePostDiv'), **kwargs) class Effect12771(BaseEffect): """ shipRoleBonusPerseveranceIceMiningCriticalHitChanceBonus Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', ship.getModifiedItemAttr('shipRoleBonusPerseveranceIceMiningCriticalHitChance'), **kwargs) class Effect12772(BaseEffect): """ shipIceMiningCriticalHitChanceBonusOreDestroyer1 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritChance', ship.getModifiedItemAttr('shipBonusOreDestroyer1'), skill='Mining Destroyer', **kwargs) class Effect12773(BaseEffect): """ shipIceMiningCriticalHitYieldBonusOreDestroyer2 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'miningCritBonusYield', ship.getModifiedItemAttr('shipBonusOreDestroyer2'), skill='Mining Destroyer', **kwargs) class Effect12774(BaseEffect): """ shipIceMiningRangeBonusOreDestroyer3 Used by: Ship: Perseverance """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Ice Harvesting'), 'maxRange', ship.getModifiedItemAttr('shipBonusOreDestroyer3'), skill='Mining Destroyer', **kwargs) class Effect12777(BaseEffect): """ roleBonusCDLinksPGCPUReductionSkua Used by: Ship: Skua """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'cpu', src.getModifiedItemAttr('roleBonusCD'), **kwargs) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Leadership'), 'power', src.getModifiedItemAttr('roleBonusCD'), **kwargs) class Effect12790(BaseEffect): """ shipBonusTorpedoAndCruiseMissileExplosionVelocityCBC2 Used by: Ship: Anhinga """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.requiresSkill('Torpedoes') or mod.charge.requiresSkill('Cruise Missiles'), 'aoeVelocity', ship.getModifiedItemAttr('shipBonusCBC2'), skill='Caldari Battlecruiser', **kwargs) class Effect12794(BaseEffect): """ shipRocketMaxVelocityBonusPostDivSkua Used by: Module: Skua Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Rockets'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeRocketMissileMaxVelocityBonusPostDivSkua'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect12795(BaseEffect): """ shipLightMissileMaxVelocityBonusPostDivSkua Used by: Module: Skua Sharpshooter Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Light Missiles'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeLightMissileMaxVelocityBonusPostDivSkua'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect12796(BaseEffect): """ shipModeMissileFlightTimePostDiv Used by: Module: Anhinga Primary Mode Module: Anhinga Secondary Mode """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'explosionDelay', 1 / ship.getModifiedItemAttr('modeAnhingaMissileFlightTimePostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect12798(BaseEffect): """ shipModeMissileVelocityPostDiv Used by: Module: Anhinga Primary Mode Module: Anhinga Tertiary Mode """ type = 'passive' @staticmethod def handler(fit, module, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Missile Launcher Operation'), 'maxVelocity', 1 / module.getModifiedItemAttr('modeAnhingaMissileMaxVelocityPostDiv'), stackingPenalties=True, penaltyGroup='postDiv', **kwargs) class Effect12799(BaseEffect): """ shipModeAnhingaCruiseLauncherTorpedoLauncherRapidHeavyLauncherROFPostDiv Used by: Modules named like: Anhinga Mode (3 of 3) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemMultiply( lambda mod: mod.item.group.name in ( 'Missile Launcher Rapid Heavy', 'Missile Launcher Cruise', 'Missile Launcher Torpedo'), 'speed', 1 / ship.getModifiedItemAttr('modeAnhingaCruiseLauncherTorpedoLauncherRapidHeavyLauncherROFPostDiv'), stackingPenalties=True, penaltyGroup='postDiv',**kwargs) class Effect12802(BaseEffect): """ MutatedMiningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar Used by: Skill: Mutated Drone Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): fit.drones.filteredItemBoost( lambda mod: mod.item.requiresSkill('Mutated Drone Specialization'), 'miningAmount', src.getModifiedItemAttr('miningAmountBonus') * src.level, **kwargs) class Effect12811(BaseEffect): """ eliteBonusStasisGrapplerMaxRangeBlackOps3 Used by: Ship: Panther """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.group.name == 'Stasis Grappler', 'maxRange', ship.getModifiedItemAttr('eliteBonusBlackOps3'), skill='Black Ops', **kwargs) class Effect12835(BaseEffect): """ shipBonusForceAuxiliaryC5CapBoosterStrength Used by: Ship: Minokawa """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryC5'), skill='Caldari Carrier', **kwargs) class Effect12836(BaseEffect): """ shipBonusForceAuxiliaryA5CapBoosterStrength Used by: Variations of ship: Apostle (2 of 2) """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryA5'), skill='Amarr Carrier', **kwargs) class Effect12837(BaseEffect): """ shipBonusForceAuxiliaryM5CapBoosterStrength Used by: Ship: Lif """ type = 'passive' @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): fit.modules.filteredChargeBoost( lambda mod: mod.charge.group.name == 'Capacitor Booster Charge', 'capacitorBonus', ship.getModifiedItemAttr('shipBonusForceAuxiliaryM5'), skill='Minmatar Carrier', **kwargs) class Effect12838(BaseEffect): """ expeditionCommandBurstProbeStrengthBonusCharIDEffectPassivePostMul Used by: Modules from group: Scan Probe Launcher (8 of 8) """ runTime = 'late' type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseSensorStrength', container.getModifiedItemAttr('expeditionCommandBurstProbeStrengthBonusCharID'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect12839(BaseEffect): """ expeditionCommandBurstProbeDeviationBonusCharIDEffectPassivePostMul Used by: Modules from group: Scan Probe Launcher (8 of 8) """ runTime = 'late' type = 'passive' @staticmethod def handler(fit, container, context, projectionRange, **kwargs): fit.modules.filteredChargeMultiply( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'baseMaxScanDeviation', container.getModifiedItemAttr('expeditionCommandBurstProbeDeviationBonusCharID'), stackingPenalties=True, penaltyGroup='postMul', **kwargs) class Effect12844(BaseEffect): """ skillBonusAmarrFighters Used by: Skill: Amarr Fighter Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): boost = src.getModifiedItemAttr('damageMultiplierBonus') * src.level for attr in ( 'fighterAbilityAttackTurretDamageMultiplier', 'fighterAbilityAttackMissileDamageMultiplier', 'fighterAbilityMissilesDamageMultiplier' ): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Amarr Fighter Specialization'), attr, boost, **kwargs) class Effect12846(BaseEffect): """ skillBonusCaldariFighters Used by: Skill: Caldari Fighter Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): boost = src.getModifiedItemAttr('damageMultiplierBonus') * src.level for attr in ( 'fighterAbilityAttackTurretDamageMultiplier', 'fighterAbilityAttackMissileDamageMultiplier', 'fighterAbilityMissilesDamageMultiplier' ): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Caldari Fighter Specialization'), attr, boost, **kwargs) class Effect12847(BaseEffect): """ skillBonusGallenteFighters Used by: Skill: Gallente Fighter Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): boost = src.getModifiedItemAttr('damageMultiplierBonus') * src.level for attr in ( 'fighterAbilityAttackTurretDamageMultiplier', 'fighterAbilityAttackMissileDamageMultiplier', 'fighterAbilityMissilesDamageMultiplier' ): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Gallente Fighter Specialization'), attr, boost, **kwargs) class Effect12848(BaseEffect): """ skillBonusMinmatarFighters Used by: Skill: Minmatar Fighter Specialization """ type = 'passive' @staticmethod def handler(fit, src, context, projectionRange, **kwargs): boost = src.getModifiedItemAttr('damageMultiplierBonus') * src.level for attr in ( 'fighterAbilityAttackTurretDamageMultiplier', 'fighterAbilityAttackMissileDamageMultiplier', 'fighterAbilityMissilesDamageMultiplier' ): fit.fighters.filteredItemBoost( lambda mod: mod.item.requiresSkill('Minmatar Fighter Specialization'), attr, boost, **kwargs) class Effect12862(BaseEffect): """ extralargeDisintegratorSkillDmgBonus Used by: Skill: Capital Disintegrator Specialization """ type = 'passive' @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill('Capital Disintegrator Specialization'), 'damageMultiplier', skill.getModifiedItemAttr('damageMultiplierBonus') * skill.level, **kwargs) ================================================ FILE: eos/eqBase.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== class EqBase: ID = None def __eq__(self, other): return type(self) == type(other) and self.ID == other.ID def __ne__(self, other): return type(self) != type(other) or self.ID != other.ID def __hash__(self): return id(type(self)) + self.ID ================================================ FILE: eos/events.py ================================================ # Decided to put this in it's own file so that we can easily choose not to import it (thanks to mac-deprecated builds =/) import datetime from sqlalchemy.event import listen from sqlalchemy.orm.collections import InstrumentedList from eos.db.saveddata.fit import projectedFitSourceRel, boostedOntoRel from eos.saveddata.fit import Fit from eos.saveddata.module import Module from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.cargo import Cargo from eos.saveddata.implant import Implant from eos.saveddata.booster import Booster ignored_rels = [ projectedFitSourceRel, boostedOntoRel ] def update_fit_modified(target, value, oldvalue, initiator): if not target.owner: return if value != oldvalue: # some things (like Implants) have a backref to the fit, which actually produces a list. # In this situation, simply take the 0 index to get to the fit. # There may be cases in the future in which there are multiple fits, so this should be # looked at more indepth later if isinstance(target.owner, InstrumentedList): parent = target.owner[0] else: parent = target.owner # ensure this is a fit we're dealing with if isinstance(parent, Fit): parent.modified = datetime.datetime.now() def apply_col_listeners(target, context): # We only want to set these events when the module is first loaded (otherwise events will fire during the initial # population of data). This runs through all columns and sets up "set" events on each column. We do it with each # column because the alternative would be to do a before/after_update for the Mapper itself, however we're only # allowed to change the local attributes during those events as that's inter-flush. # See http://docs.sqlalchemy.org/en/rel_1_0/orm/session_events.html#mapper-level-events # @todo replace with `inspect(Module).column_attrs` when mac binaries are updated manager = getattr(target.__class__, "_sa_class_manager", None) if manager: for col in manager.mapper.column_attrs: listen(col, 'set', update_fit_modified) def rel_listener(target, value, initiator): if not target or (isinstance(value, Module) and value.isEmpty): return target.modified = datetime.datetime.now() def apply_rel_listeners(target, context): # We only want to see these events when the fit is first loaded (otherwise events will fire during the initial # population of data). This sets listeners for all the relationships on fits. This allows us to update the fit's # modified date whenever something is added/removed from fit # See http://docs.sqlalchemy.org/en/rel_1_0/orm/events.html#sqlalchemy.orm.events.InstanceEvents.load # todo: when we can, move over to `inspect(es_Fit).relationships` (when mac binaries are updated) manager = getattr(target.__class__, "_sa_class_manager", None) if manager: for rel in manager.mapper.relationships: if rel in ignored_rels: continue listen(rel, 'append', rel_listener) listen(rel, 'remove', rel_listener) listen(Fit, 'load', apply_rel_listeners) listen(Module, 'load', apply_col_listeners) listen(Drone, 'load', apply_col_listeners) listen(Fighter, 'load', apply_col_listeners) listen(Cargo, 'load', apply_col_listeners) listen(Implant, 'load', apply_col_listeners) listen(Booster, 'load', apply_col_listeners) ================================================ FILE: eos/gamedata.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import json import re from logbook import Logger from sqlalchemy.orm import reconstructor import eos.effects import eos.db from eos.saveddata.price import Price as types_Price from .eqBase import EqBase pyfalog = Logger(__name__) def _t(x): return x class Effect(EqBase): """ The effect handling class, it is used to proxy and load effect handler code, as well as a container for extra information regarding effects coming from the gamedata db. @ivar ID: the ID of this effect @ivar name: The name of this effect @ivar description: The description of this effect, this is usualy pretty useless @ivar published: Wether this effect is published or not, unpublished effects are typicaly unused. """ @reconstructor def init(self): """ Reconstructor, composes the object as we grab it from the database """ self.__generated = False self.__effectDef = None @property def handler(self): """ The handler for the effect, It is automaticly fetched from effects/.py if the file exists the first time this property is accessed. """ if not self.__generated: pyfalog.debug("Generating effect: {0} ({1}) [runTime: {2}]", self.name, self.effectID, self.runTime) self.__generateHandler() return self.__handler @property def runTime(self): """ The runTime that this effect should be run at. This property is also automaticly fetched from effects/.py if the file exists. the possible values are: None, "early", "normal", "late" None and "normal" are equivalent, and are also the default. effects with an early runTime will be ran first when things are calculated, followed by effects with a normal runTime and as last effects with a late runTime are ran. """ if not self.__generated: self.__generateHandler() return self.__runTime @property def activeByDefault(self): """ The state that this effect should be be in. This property is also automaticly fetched from effects/.py if the file exists. the possible values are: None, True, False If this is not set: We simply assume that missing/none = True, and set it accordingly (much as we set runTime to Normalif not otherwise set). Nearly all effect files will fall under this category. If this is set to True: We would enable it anyway, but hey, it's double enabled. No effect files are currently configured this way (and probably will never be). If this is set to False: Basically we simply skip adding the effect to the effect handler when the effect is called, much as if the run time didn't match or other criteria failed. """ if not self.__generated: self.__generateHandler() return self.__activeByDefault @activeByDefault.setter def activeByDefault(self, value): """ Just assign the input values to the activeByDefault attribute. You *could* do something more interesting here if you wanted. """ self.__activeByDefault = value @property def type(self): """ The type of the effect, automaticly fetched from effects/.py if the file exists. Valid values are: "passive", "active", "projected", "gang", "structure" Each gives valuable information to eos about what type the module having the effect is. passive vs active gives eos clues about wether to module is activatable or not (duh!) and projected and gang each tell eos that the module can be projected onto other fits, or used as a gang booster module respectivly """ if not self.__generated: self.__generateHandler() return self.__type @property def isImplemented(self): """ Whether this effect is implemented in code or not, unimplemented effects simply do nothing at all when run """ if not self.__generated: self.__generateHandler() return self.__effectDef is not None @property def dealsDamage(self): if not self.__generated: self.__generateHandler() return self.__dealsDamage def isType(self, type): """ Check if this effect is of the passed type """ if not self.__generated: self.__generateHandler() return self.type is not None and type in self.type def __generateHandler(self): """ Grab the handler, type and runTime from the effect code if it exists, if it doesn't, set dummy values and add a dummy handler """ try: effectDefName = "Effect{}".format(self.ID) pyfalog.debug("Loading {0} ({1})".format(self.name, effectDefName)) self.__effectDef = effectDef = getattr(eos.effects, effectDefName) self.__handler = getattr(effectDef, "handler", eos.effects.BaseEffect.handler) self.__runTime = getattr(effectDef, "runTime", "normal") self.__activeByDefault = getattr(effectDef, "activeByDefault", True) self.__dealsDamage = effectDef.dealsDamage effectType = getattr(effectDef, "type", None) effectType = effectType if isinstance(effectType, tuple) or effectType is None else (effectType,) self.__type = effectType except ImportError as e: # Effect probably doesn't exist, so create a dummy effect and flag it with a warning. self.__handler = eos.effects.DummyEffect.handler self.__runTime = "normal" self.__activeByDefault = True self.__dealsDamage = False self.__type = None pyfalog.debug("ImportError generating handler: {0}", e) except AttributeError as e: # Effect probably exists but there is an issue with it. Turn it into a dummy effect so we can continue, but flag it with an error. self.__handler = eos.effects.DummyEffect.handler self.__runTime = "normal" self.__activeByDefault = True self.__dealsDamage = False self.__type = None pyfalog.error("AttributeError generating handler: {0}", e) except (KeyboardInterrupt, SystemExit): raise except Exception as e: self.__handler = eos.effects.DummyEffect.handler self.__runTime = "normal" self.__activeByDefault = True self.__dealsDamage = False self.__type = None pyfalog.critical("Exception generating handler:") pyfalog.critical(e) self.__generated = True def getattr(self, key): if not self.__generated: self.__generateHandler() try: return self.__effectDef.get(key, None) except (KeyboardInterrupt, SystemExit): raise except: return getattr(self.__effectDef, key, None) class Item(EqBase): ABYSSAL_TYPES = None @reconstructor def init(self): self.__race = None self.__requiredSkills = None self.__requiredFor = None self.__offensive = None self.__assistive = None self.__overrides = None self.__priceObj = None def getShortName(self, charLimit=12): if len(self.name) <= charLimit: return self.name splitName = self.name.strip().split(' ') if len(splitName) == 1: return self.name shortName = '' for word in splitName: try: shortName += word[0].capitalize() except IndexError: pass return shortName @property def customName(self): return re.sub(_t('Caustic'), _t('Tachyon'), self.name) @property def attributes(self): return self.__attributes @property def attribsWithOverrides(self): overrides = self.overrides attribs = {} for aname, attr in self.attributes.items(): if aname in overrides: attribs[aname] = overrides[aname] else: attribs[aname] = attr return attribs def getAttribute(self, key, default=None): if key in self.attributes: return self.attributes[key].value else: return default def isType(self, type): for effect in self.effects.values(): if effect.isType(type): return True return False @property def overrides(self): if self.__overrides is None: self.__overrides = {} overrides = eos.db.getOverrides(self.ID) for x in overrides: if x.attr.name in self.__attributes: self.__overrides[x.attr.name] = x return self.__overrides def setOverride(self, attr, value): from eos.saveddata.override import Override if attr.name in self.overrides: override = self.overrides.get(attr.name) override.value = value else: override = Override(self, attr, value) self.overrides[attr.name] = override eos.db.save(override) def deleteOverride(self, attr): override = self.overrides.pop(attr.name, None) eos.db.saveddata_session.delete(override) eos.db.commit() @property def requiredSkills(self): if self.__requiredSkills is None: self.__requiredSkills = {} if self.reqskills: for skillTypeID, skillLevel in json.loads(self.reqskills).items(): skillItem = eos.db.getItem(int(skillTypeID)) if skillItem: self.__requiredSkills[skillItem] = skillLevel return self.__requiredSkills @property def requiredFor(self): if self.__requiredFor is None: self.__requiredFor = {} if self.requiredfor: for typeID, skillLevel in json.loads(self.requiredfor).items(): requiredForItem = eos.db.getItem(int(typeID)) if requiredForItem: self.__requiredFor[requiredForItem] = skillLevel return self.__requiredFor factionMap = { 500001: "caldari", 500002: "minmatar", 500003: "amarr", 500004: "gallente", 500005: "jove", 500010: "guristas", 500011: "angel", 500012: "blood", 500014: "ore", 500016: "sisters", 500018: "mordu", 500019: "sansha", 500020: "serpentis", 500026: "triglavian", 500027: "upwell", 500029: "deathless", } @property def race(self): if self.__race is None: try: if self.category.name == 'Structure': self.__race = "upwell" else: self.__race = self.factionMap[self.factionID] # Some ships (like few limited issue ships) do not have factionID set, # thus keep old mechanism for now except KeyError: # Define race map map = { 1 : "caldari", 2 : "minmatar", 4 : "amarr", 5 : "sansha", # Caldari + Amarr 6 : "blood", # Minmatar + Amarr 8 : "gallente", 9 : "guristas", # Caldari + Gallente 10 : "angelserp", # Minmatar + Gallente, final race depends on the order of skills 12 : "sisters", # Amarr + Gallente 15 : "concord", 16 : "jove", 32 : "sansha", # Incrusion Sansha 128: "ore", 135: "triglavian", 168: "upwell", } # Race is None by default race = None # Check primary and secondary required skills' races if race is None: skillRaces = tuple([rid for rid in (s.raceID for s in tuple(self.requiredSkills.keys())) if rid]) if sum(skillRaces) in map: race = map[sum(skillRaces)] if race == "angelserp": if skillRaces == (2, 8): race = "angel" else: race = "serpentis" # Rely on item's own raceID as last resort if race is None: race = map.get(self.raceID, None) # Store our final value self.__race = race return self.__race @property def assistive(self): """Detects if item can be used as assistance""" # Make sure we cache results if self.__assistive is None: assistive = False # Go through all effects and find first assistive for effect in self.effects.values(): if effect.isAssistance is True: # If we find one, stop and mark item as assistive assistive = True break self.__assistive = assistive return self.__assistive @property def offensive(self): """Detects if item can be used as something offensive""" # Make sure we cache results if self.__offensive is None: offensive = False # Go through all effects and find first offensive for effect in self.effects.values(): if effect.isOffensive is True: # If we find one, stop and mark item as offensive offensive = True break self.__offensive = offensive return self.__offensive def requiresSkill(self, skill, level=None): for s, l in self.requiredSkills.items(): if isinstance(skill, str): if s.typeName == skill and (level is None or l == level): return True elif isinstance(skill, int) and (level is None or l == level): if s.ID == skill: return True elif skill == s and (level is None or l == level): return True elif hasattr(skill, "item") and skill.item == s and (level is None or l == level): return True return False @property def price(self): # todo: use `from sqlalchemy import inspect` instead (mac-deprecated doesn't have inspect(), was imp[lemented in 0.8) if self.__priceObj is not None and getattr(self.__priceObj, '_sa_instance_state', None) and self.__priceObj._sa_instance_state.deleted: pyfalog.debug("Price data for {} was deleted (probably from a cache reset), resetting object".format(self.ID)) self.__priceObj = None if self.__priceObj is None: db_price = eos.db.getPrice(self.ID) # do not yet have a price in the database for this item, create one if db_price is None: pyfalog.debug("Creating a price for {}".format(self.ID)) self.__priceObj = types_Price(self.ID) eos.db.add(self.__priceObj) eos.db.flush() else: self.__priceObj = db_price return self.__priceObj @property def isAbyssal(self): if Item.ABYSSAL_TYPES is None: Item.getAbyssalTypes() return self.ID in Item.ABYSSAL_TYPES @classmethod def getAbyssalTypes(cls): cls.ABYSSAL_TYPES = eos.db.getAbyssalTypes() @property def isModule(self): return self.category.name in ('Module', 'Structure Module') @property def isSubsystem(self): return self.category.name == 'Subsystem' @property def isCharge(self): return self.category.name == 'Charge' @property def isCommodity(self): return self.category.name == 'Commodity' @property def isDrone(self): return self.category.name == 'Drone' @property def isFighter(self): return self.category.name == 'Fighter' @property def isImplant(self): return self.category.name == 'Implant' and self.group.name != 'Booster' @property def isBooster(self): return self.group.name == 'Booster' and self.category.name == 'Implant' @property def isStandup(self): if self.category.name == "Structure Module": return True if self.isFighter and {'fighterSquadronIsStandupLight', 'fighterSquadronIsStandupHeavy', 'fighterSquadronIsStandupSupport'}.intersection(self.attributes): return True return False def __repr__(self): return "Item(ID={}, name={}, display={}) at {}".format( self.ID, self.typeName, self.name, hex(id(self)) ) class MetaData(EqBase): pass class ItemEffect(EqBase): pass class AttributeInfo(EqBase): pass class Attribute(EqBase): pass class Category(EqBase): pass class AlphaClone(EqBase): @reconstructor def init(self): self.skillCache = {} for x in self.skills: self.skillCache[x.typeID] = x def getSkillLevel(self, skill): if skill.item.ID in self.skillCache: return self.skillCache[skill.item.ID].level else: return None class AlphaCloneSkill(EqBase): pass class Group(EqBase): pass class DynamicItem(EqBase): @property def shortName(self): name = self.item.customName keywords = ( 'Decayed', 'Glorified Decayed', 'Gravid', 'Glorified Gravid', 'Unstable', 'Glorified Unstable', 'Radical', 'Glorified Radical') for kw in keywords: if name.startswith(f'{kw} '): name = kw m = re.match(r'(?P(Glorified )?\S+) (?P\S+) Drone (?P\S+) Mutaplasmid', name) if m: name = '{} {}'.format(m.group('mutagrade'), m.group('mutatype')) name = name.replace('Glorified ', 'Gl. ') return name class DynamicItemAttribute(EqBase): pass class DynamicItemItem(EqBase): pass class MarketGroup(EqBase): def __repr__(self): return "MarketGroup(ID={}, name={}, parent={}) at {}".format( self.ID, self.name, getattr(self.parent, "name", None), hex(id(self))) class MetaGroup(EqBase): pass class Unit(EqBase): def __init__(self): self.name = None self.displayName = None @property def rigSizes(self): return { 1: "Small", 2: "Medium", 3: "Large", 4: "X-Large" } @property def translations(self): """ This is a mapping of various tweaks that we have to do between the internal representation of an attribute value and the display (for example, 'Millisecond' units have the display name of 's', so we have to convert value from ms to s) """ # Each entry contains: # Function to convert value to display value # Function to convert value to display format (which sometimes can be a string) # Function which controls unit name used with attribute # Function to convert display value to value return { "Inverse Absolute Percent": ( lambda v: (1 - v) * 100, lambda v: (1 - v) * 100, lambda u: u, lambda d: -1 * (d / 100) + 1), "Inversed Modifier Percent": ( lambda v: (1 - v) * 100, lambda v: (1 - v) * 100, lambda u: u, lambda d: -1 * (d / 100) + 1), "Modifier Percent": ( lambda v: (v - 1) * 100, lambda v: ("%+.2f" if ((v - 1) * 100) % 1 else "%+d") % ((v - 1) * 100), lambda u: u, lambda d: (d / 100) + 1), "Volume": ( lambda v: v, lambda v: v, lambda u: "m³", lambda d: d), "Sizeclass": ( lambda v: self.rigSizes[v], lambda v: self.rigSizes[v], lambda d: next(i for i in self.rigSizes.keys() if self.rigSizes[i] == 'Medium'), lambda u: ""), "Absolute Percent": ( lambda v: v * 100, lambda v: v * 100, lambda u: u, lambda d: d / 100), "Milliseconds": ( lambda v: v / 1000, lambda v: v / 1000, lambda u: u, lambda d: d * 1000), "Boolean": ( lambda v: True if v else False, lambda v: "Yes" if v else "No", lambda u: "", lambda d: 1.0 if d == "Yes" else 0.0), "typeID": ( self.itemIDCallback, self.itemIDCallback, lambda u: "", None), # we could probably convert these back if we really tried hard enough "groupID": ( self.groupIDCallback, self.groupIDCallback, lambda u: "", None), "attributeID": ( self.attributeIDCallback, self.attributeIDCallback, lambda u: "", None), } @staticmethod def itemIDCallback(v): v = int(v) item = eos.db.getItem(int(v)) return "%s (%d)" % (item.name, v) if item is not None else str(v) @staticmethod def groupIDCallback(v): v = int(v) group = eos.db.getGroup(v) return "%s (%d)" % (group.name, v) if group is not None else str(v) @staticmethod def attributeIDCallback(v): v = int(v) if not v: # some attributes come through with a value of 0? See #1387 return "%d" % v attribute = eos.db.getAttributeInfo(v, eager="unit") return "%s (%d)" % (attribute.name.capitalize(), v) def PreformatValue(self, value): """Attributes have to be translated certain ways based on their unit (ex: decimals converting to percentages). This allows us to get an easy representation of how the attribute should be printed """ override = self.translations.get(self.name) if override is not None: return override[1](value), override[2](self.displayName) return value, self.displayName def SimplifyValue(self, value): """Takes the internal representation value and convert it into the display value""" override = self.translations.get(self.name) if override is not None: return override[0](value) return value def ComplicateValue(self, value): """Takes the display value and turns it back into the internal representation of it""" override = self.translations.get(self.name) if override is not None: return override[3](value) return value class Traits(EqBase): pass class ImplantSet(EqBase): @property def fullName(self): if not self.gradeName: return self.setName return '{} {}'.format(self.gradeName, self.setName) ================================================ FILE: eos/lgpl.txt ================================================ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! ================================================ FILE: eos/modifiedAttributeDict.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from collections.abc import MutableMapping from copy import copy from math import exp from eos.const import Operator # TODO: This needs to be moved out, we shouldn't have *ANY* dependencies back to other modules/methods inside eos. # This also breaks writing any tests. :( from eos.db.gamedata.queries import getAttributeInfo defaultValuesCache = {} cappingAttrKeyCache = {} resistanceCache = {} def getAttrDefault(key, fallback=None): try: default = defaultValuesCache[key] except KeyError: attrInfo = getAttributeInfo(key) if attrInfo is None: default = defaultValuesCache[key] = None else: default = defaultValuesCache[key] = attrInfo.defaultValue if default is None: default = fallback return default def getResistanceAttrID(modifyingItem, effect): # If it doesn't exist on the effect, check the modifying module's attributes. # If it's there, cache it and return if effect.resistanceID: return effect.resistanceID cacheKey = (modifyingItem.item.ID, effect.ID) try: return resistanceCache[cacheKey] except KeyError: attrPrefix = effect.getattr('prefix') if attrPrefix: resistanceID = int(modifyingItem.getModifiedItemAttr('{}ResistanceID'.format(attrPrefix))) or None if not resistanceID: resistanceID = int(modifyingItem.getModifiedItemAttr('{}RemoteResistanceID'.format(attrPrefix))) or None else: resistanceID = int(modifyingItem.getModifiedItemAttr("remoteResistanceID")) or None resistanceCache[cacheKey] = resistanceID return resistanceID class ItemAttrShortcut: def getModifiedItemAttr(self, key, default=0): return_value = self.itemModifiedAttributes.get(key) return return_value if return_value is not None else default def getModifiedItemAttrExtended(self, key, extraMultipliers=None, ignoreAfflictors=(), default=0): return_value = self.itemModifiedAttributes.getExtended(key, extraMultipliers=extraMultipliers, ignoreAfflictors=ignoreAfflictors) return return_value if return_value is not None else default def getItemBaseAttrValue(self, key, default=0): return_value = self.itemModifiedAttributes.getOriginal(key) return return_value if return_value is not None else default class ChargeAttrShortcut: def getModifiedChargeAttr(self, key, default=0): return_value = self.chargeModifiedAttributes.get(key) return return_value if return_value is not None else default def getModifiedChargeAttrExtended(self, key, extraMultipliers=None, ignoreAfflictors=(), default=0): return_value = self.chargeModifiedAttributes.getExtended(key, extraMultipliers=extraMultipliers, ignoreAfflictors=ignoreAfflictors) return return_value if return_value is not None else default def getChargeBaseAttrValue(self, key, default=0): return_value = self.chargeModifiedAttributes.getOriginal(key) return return_value if return_value is not None else default class ModifiedAttributeDict(MutableMapping): overrides_enabled = False class CalculationPlaceholder: def __init__(self): pass def __init__(self, fit=None, parent=None): self.__fit = fit self.parent = parent # Stores original values of the entity self.__original = None # Modified values during calculations self.__intermediary = {} # Final modified values self.__modified = {} # Affected by entities # Format: # {attr name: {modifying fit: ( # modifying item, operation, stacking group, pre-resist amount, # post-resist amount, affects result or not)}} self.__affectedBy = {} # Overrides (per item) self.__overrides = {} # Mutators (per module) self.__mutators = {} # Dictionaries for various value modification types self.__forced = {} self.__preAssigns = {} self.__preIncreases = {} self.__multipliers = {} self.__penalizedMultipliers = {} self.__postIncreases = {} # We sometimes override the modifier (for things like skill handling). Store it here instead of registering it # with the fit (which could cause bug for items that have both item bonuses and skill bonus, ie Subsystems) self.__tmpModifier = None def clear(self): self.__intermediary.clear() self.__modified.clear() self.__affectedBy.clear() self.__forced.clear() self.__preAssigns.clear() self.__preIncreases.clear() self.__multipliers.clear() self.__penalizedMultipliers.clear() self.__postIncreases.clear() @property def fit(self): # self.fit is usually set during fit calculations when the item is registered with the fit. However, # under certain circumstances, an effect will not work as it will try to modify an item which has NOT # yet been registered and thus has not had self.fit set. In this case, use the modules owner attribute # to point to the correct fit. See GH Issue #434 if self.__fit is not None: return self.__fit if hasattr(self.parent, 'owner'): return self.parent.owner return None @fit.setter def fit(self, fit): self.__fit = fit @property def original(self): return self.__original @original.setter def original(self, val): self.__original = val self.__modified.clear() @property def overrides(self): return self.__overrides @overrides.setter def overrides(self, val): self.__overrides = val @property def mutators(self): return {x.attribute.name: x for x in self.__mutators.values()} @mutators.setter def mutators(self, val): self.__mutators = val def __getitem__(self, key): # Check if we have final calculated value val = self.__modified.get(key) if val is self.CalculationPlaceholder: val = self.__modified[key] = self.__calculateValue(key) if val is not None: return val # Then in values which are not yet calculated if self.__intermediary: val = self.__intermediary.get(key) else: val = None if val is not None: return val # Original value is the least priority return self.getOriginal(key) def getExtended(self, key, extraMultipliers=None, ignoreAfflictors=None, default=0): """ Here we consider couple of parameters. If they affect final result, we do not store result, and if they are - we do. """ # Here we do not have support for preAssigns/forceds, as doing them would # mean that we have to store all of them in a list which increases memory use, # and we do not actually need those operators atm preIncreaseAdjustment = 0 multiplierAdjustment = 1 ignorePenalizedMultipliers = {} postIncreaseAdjustment = 0 for fit, afflictors in self.getAfflictions(key).items(): for afflictor, operator, stackingGroup, preResAmount, postResAmount, used in afflictors: if afflictor in ignoreAfflictors: if operator == Operator.MULTIPLY: if stackingGroup is None: multiplierAdjustment /= postResAmount else: ignorePenalizedMultipliers.setdefault(stackingGroup, []).append(postResAmount) elif operator == Operator.PREINCREASE: preIncreaseAdjustment -= postResAmount elif operator == Operator.POSTINCREASE: postIncreaseAdjustment -= postResAmount # If we apply no customizations - use regular getter if ( not extraMultipliers and preIncreaseAdjustment == 0 and multiplierAdjustment == 1 and postIncreaseAdjustment == 0 and len(ignorePenalizedMultipliers) == 0 ): return self.get(key, default=default) # Try to calculate custom values val = self.__calculateValue( key, extraMultipliers=extraMultipliers, preIncAdj=preIncreaseAdjustment, multAdj=multiplierAdjustment, postIncAdj=postIncreaseAdjustment, ignorePenMult=ignorePenalizedMultipliers) if val is not None: return val # Then the same fallbacks as in regular getter if self.__intermediary: val = self.__intermediary.get(key) else: val = None if val is not None: return val val = self.getOriginal(key) if val is not None: return val return default def __delitem__(self, key): if key in self.__modified: del self.__modified[key] if key in self.__intermediary: del self.__intermediary[key] def getOriginal(self, key, default=None): val = None if self.overrides_enabled and self.overrides: val = self.overrides.get(key, val) # mutators are overriden by overrides. x_x val = self.mutators.get(key, val) if val is None: if self.original: val = self.original.get(key, val) if val is None: val = getAttrDefault(key, fallback=None) if val is None and val != default: val = default return val.value if hasattr(val, "value") else val def __setitem__(self, key, val): self.__intermediary[key] = val def __iter__(self): all_dict = dict(self.original, **self.__modified) return (key for key in all_dict) def __contains__(self, key): return (self.original is not None and key in self.original) or \ key in self.__modified or key in self.__intermediary def __placehold(self, key): """Create calculation placeholder in item's modified attribute dict""" self.__modified[key] = self.CalculationPlaceholder def __len__(self): keys = set() keys.update(iter(self.original.keys())) keys.update(iter(self.__modified.keys())) keys.update(iter(self.__intermediary.keys())) return len(keys) def __calculateValue(self, key, extraMultipliers=None, preIncAdj=None, multAdj=None, postIncAdj=None, ignorePenMult=None): # It's possible that various attributes are capped by other attributes, # it's defined by reference maxAttributeID try: cappingKey = cappingAttrKeyCache[key] except KeyError: attrInfo = getAttributeInfo(key) if attrInfo is None: cappingId = cappingAttrKeyCache[key] = None else: cappingId = attrInfo.maxAttributeID if cappingId is None: cappingKey = None else: cappingAttrInfo = getAttributeInfo(cappingId) cappingKey = None if cappingAttrInfo is None else cappingAttrInfo.name cappingAttrKeyCache[key] = cappingKey if cappingKey: cappingValue = self[cappingKey] cappingValue = cappingValue.value if hasattr(cappingValue, "value") else cappingValue else: cappingValue = None # If value is forced, we don't have to calculate anything, # just return forced value instead force = self.__forced[key] if key in self.__forced else None if force is not None: if cappingValue is not None: force = min(force, cappingValue) if key in ("cpu", "power", "cpuOutput", "powerOutput"): force = round(force, 2) return force # Grab our values if they're there, otherwise we'll take default values preIncrease = self.__preIncreases.get(key, 0) multiplier = self.__multipliers.get(key, 1) penalizedMultiplierGroups = self.__penalizedMultipliers.get(key, {}) # Add extra multipliers to the group, not modifying initial data source if extraMultipliers is not None: penalizedMultiplierGroups = copy(penalizedMultiplierGroups) for stackGroup, operationsData in extraMultipliers.items(): multipliers = [] for mult, resAttrID in operationsData: if not resAttrID: multipliers.append(mult) continue resAttrInfo = getAttributeInfo(resAttrID) if not resAttrInfo: multipliers.append(mult) continue resMult = self.fit.ship.itemModifiedAttributes[resAttrInfo.attributeName] if resMult is None or resMult == 1: multipliers.append(mult) continue mult = (mult - 1) * resMult + 1 multipliers.append(mult) penalizedMultiplierGroups[stackGroup] = penalizedMultiplierGroups.get(stackGroup, []) + multipliers postIncrease = self.__postIncreases.get(key, 0) # Grab initial value, priorities are: # Results of ongoing calculation > preAssign > original > 0 default = getAttrDefault(key, fallback=0.0) val = self.__intermediary.get(key, self.__preAssigns.get(key, self.getOriginal(key, default))) # We'll do stuff in the following order: # preIncrease > multiplier > stacking penalized multipliers > postIncrease val += preIncrease if preIncAdj is not None: val += preIncAdj val *= multiplier if multAdj is not None: val *= multAdj # Each group is penalized independently # Things in different groups will not be stack penalized between each other for penaltyGroup, penalizedMultipliers in penalizedMultiplierGroups.items(): if ignorePenMult is not None and penaltyGroup in ignorePenMult: # Avoid modifying source and remove multipliers we were asked to remove for this calc penalizedMultipliers = penalizedMultipliers[:] for ignoreMult in ignorePenMult[penaltyGroup]: try: penalizedMultipliers.remove(ignoreMult) except ValueError: pass # A quick explanation of how this works: # 1: Bonuses and penalties are calculated seperately, so we'll have to filter each of them l1 = [_val for _val in penalizedMultipliers if _val > 1] l2 = [_val for _val in penalizedMultipliers if _val < 1] # 2: The most significant bonuses take the smallest penalty, # This means we'll have to sort abssort = lambda _val: -abs(_val - 1) l1.sort(key=abssort) l2.sort(key=abssort) # 3: The first module doesn't get penalized at all # Any module after the first takes penalties according to: # 1 + (multiplier - 1) * math.exp(- math.pow(i, 2) / 7.1289) for l in (l1, l2): for i in range(len(l)): bonus = l[i] val *= 1 + (bonus - 1) * exp(- i ** 2 / 7.1289) val += postIncrease if postIncAdj is not None: val += postIncAdj # Cap value if we have cap defined if cappingValue is not None: val = min(val, cappingValue) if key in ("cpu", "power", "cpuOutput", "powerOutput"): val = round(val, 2) return val def __handleSkill(self, skillName): """ Since ship skill bonuses do not directly modify the attributes, it does not register as an affector (instead, the ship itself is the affector). To fix this, we pass the skill which ends up here, where we register it with the fit and thus get the correct affector. Returns skill level to be used to modify modifier. See GH issue #101 """ skill = self.fit.character.getSkill(skillName) self.__tmpModifier = skill return skill.level def getAfflictions(self, key): return self.__affectedBy.get(key, {}) def iterAfflictions(self): return self.__affectedBy.__iter__() def __afflict(self, attributeName, operator, stackingGroup, preResAmount, postResAmount, used=True): """Add modifier to list of things affecting current item""" # Do nothing if no fit is assigned fit = self.fit if fit is None: return # Create dictionary for given attribute and give it alias if attributeName not in self.__affectedBy: self.__affectedBy[attributeName] = {} affs = self.__affectedBy[attributeName] origin = fit.getOrigin() fit = origin if origin and origin != fit else fit # If there's no set for current fit in dictionary, create it if fit not in affs: affs[fit] = [] # Reassign alias to list affs = affs[fit] # Get modifier which helps to compose 'Affected by' map if self.__tmpModifier: modifier = self.__tmpModifier self.__tmpModifier = None else: modifier = fit.getModifier() # Add current affliction to list affs.append((modifier, operator, stackingGroup, preResAmount, postResAmount, used)) def preAssign(self, attributeName, value, **kwargs): """Overwrites original value of the entity with given one, allowing further modification""" self.__preAssigns[attributeName] = value self.__placehold(attributeName) self.__afflict(attributeName, Operator.PREASSIGN, None, value, value, value != self.getOriginal(attributeName)) def increase(self, attributeName, increase, position="pre", skill=None, **kwargs): """Increase value of given attribute by given number""" if skill: increase *= self.__handleSkill(skill) if 'effect' in kwargs: increase *= ModifiedAttributeDict.getResistance(self.fit, kwargs['effect']) or 1 # Increases applied before multiplications and after them are # written in separate maps if position == "pre": operator = Operator.PREINCREASE tbl = self.__preIncreases elif position == "post": operator = Operator.POSTINCREASE tbl = self.__postIncreases else: raise ValueError("position should be either pre or post") if attributeName not in tbl: tbl[attributeName] = 0 tbl[attributeName] += increase self.__placehold(attributeName) self.__afflict(attributeName, operator, None, increase, increase, increase != 0) def multiply(self, attributeName, multiplier, stackingPenalties=False, penaltyGroup="default", skill=None, **kwargs): """Multiply value of given attribute by given factor""" if multiplier is None: # See GH issue 397 return if skill: multiplier *= self.__handleSkill(skill) preResMultiplier = multiplier resisted = False # Goddammit CCP, make up your mind where you want this information >.< See #1139 if 'effect' in kwargs: resistFactor = ModifiedAttributeDict.getResistance(self.fit, kwargs['effect']) or 1 if resistFactor != 1: resisted = True multiplier = (multiplier - 1) * resistFactor + 1 # If we're asked to do stacking penalized multiplication, append values # to per penalty group lists if stackingPenalties: if attributeName not in self.__penalizedMultipliers: self.__penalizedMultipliers[attributeName] = {} if penaltyGroup not in self.__penalizedMultipliers[attributeName]: self.__penalizedMultipliers[attributeName][penaltyGroup] = [] tbl = self.__penalizedMultipliers[attributeName][penaltyGroup] tbl.append(multiplier) # Non-penalized multiplication factors go to the single list else: if attributeName not in self.__multipliers: self.__multipliers[attributeName] = 1 self.__multipliers[attributeName] *= multiplier self.__placehold(attributeName) afflictPenal = "" if stackingPenalties: afflictPenal += "s" if resisted: afflictPenal += "r" self.__afflict( attributeName, Operator.MULTIPLY, penaltyGroup if stackingPenalties else None, preResMultiplier, multiplier, multiplier != 1) def boost(self, attributeName, boostFactor, skill=None, **kwargs): """Boost value by some percentage""" if skill: boostFactor *= self.__handleSkill(skill) # We just transform percentage boost into multiplication factor self.multiply(attributeName, 1 + boostFactor / 100.0, **kwargs) def force(self, attributeName, value, **kwargs): """Force value to attribute and prohibit any changes to it""" self.__forced[attributeName] = value self.__placehold(attributeName) self.__afflict(attributeName, Operator.FORCE, None, value, value) @staticmethod def getResistance(fit, effect): # Resistances are applicable only to projected effects if isinstance(effect.type, (tuple, list)): effectType = effect.type else: effectType = (effect.type,) if 'projected' not in effectType: return 1 remoteResistID = getResistanceAttrID(modifyingItem=fit.getModifier(), effect=effect) if not remoteResistID: return 1 attrInfo = getAttributeInfo(remoteResistID) # Get the attribute of the resist resist = fit.ship.itemModifiedAttributes[attrInfo.attributeName] or None return resist or 1 class Affliction: def __init__(self, affliction_type, amount): self.type = affliction_type self.amount = amount ================================================ FILE: eos/saveddata/__init__.py ================================================ ================================================ FILE: eos/saveddata/booster.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db from eos.effectHandlerHelpers import HandledItem from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut from eos.saveddata.boosterSideEffect import BoosterSideEffect pyfalog = Logger(__name__) class Booster(HandledItem, ItemAttrShortcut): def __init__(self, item): self.__item = item if self.isInvalid: raise ValueError("Passed item is not a Booster") self.itemID = item.ID if item is not None else None self.active = True self.__sideEffects = self.__getSideEffects() self.build() @reconstructor def init(self): """Initialize a booster from the database and validate""" self.__item = None if self.itemID: self.__item = eos.db.getItem(self.itemID) if self.__item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return if self.isInvalid: pyfalog.error("Item (id: {0}) is not a Booster", self.itemID) return self.build() def build(self): """ Build object. Assumes proper and valid item already set """ self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = self.__item.attributes self.__itemModifiedAttributes.overrides = self.__item.overrides self.__slot = self.__calculateSlot(self.__item) if len(self.sideEffects) != len(self.__getSideEffects()): self.__sideEffects = [] for ability in self.__getSideEffects(): self.__sideEffects.append(ability) @property def sideEffects(self): return self.__sideEffects or [] @property def activeSideEffectEffects(self): return [x.effect for x in self.sideEffects if x.active] def __getSideEffects(self): """Returns list of BoosterSideEffect that are loaded with data""" return [BoosterSideEffect(effect) for effect in self.item.effects.values() if effect.isType("boosterSideEffect")] @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def isInvalid(self): return self.__item is None or self.__item.group.name != "Booster" @property def slot(self): return self.__slot @property def item(self): return self.__item @staticmethod def __calculateSlot(item): if "boosterness" not in item.attributes: raise ValueError("Passed item is not a booster") return int(item.attributes["boosterness"].value) def clear(self): self.itemModifiedAttributes.clear() def calculateModifiedAttributes(self, fit, runTime, forceProjected=False): if forceProjected: return if not self.active: return for effect in self.item.effects.values(): if effect.runTime == runTime and \ (effect.isType("passive") or effect.isType("boosterSideEffect")): if effect.isType("boosterSideEffect") and effect not in self.activeSideEffectEffects: continue effect.handler(fit, self, ("booster",), None, effect=effect) @validates("ID", "itemID", "ammoID", "active") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "itemID": lambda _val: isinstance(_val, int), "ammoID": lambda _val: isinstance(_val, int), "active": lambda _val: isinstance(_val, bool), "slot" : lambda _val: isinstance(_val, int) and 1 <= _val <= 3 } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def __deepcopy__(self, memo): copy = Booster(self.item) copy.active = self.active for sideEffect in self.sideEffects: copyEffect = next(filter(lambda eff: eff.effectID == sideEffect.effectID, copy.sideEffects)) copyEffect.active = sideEffect.active return copy def rebase(self, item): active = self.active sideEffectStates = {se.effectID: se.active for se in self.sideEffects} Booster.__init__(self, item) self.active = active for sideEffect in self.sideEffects: if sideEffect.effectID in sideEffectStates: sideEffect.active = sideEffectStates[sideEffect.effectID] def __repr__(self): if self.item is not None: return f"Booster(ID={self.item.ID}, name={self.item.name}) at {hex(id(self))}" return f"Booster(ID={self.itemID}) at {hex(id(self))}" ================================================ FILE: eos/saveddata/boosterSideEffect.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import reconstructor from eos.utils.round import roundToPrec pyfalog = Logger(__name__) class BoosterSideEffect: def __init__(self, effect): """Initialize from the program""" self.__effect = effect self.effectID = effect.ID if effect is not None else None self.active = False self.build() @reconstructor def init(self): """Initialize from the database""" self.__effect = None if self.effectID: self.__effect = next((x for x in self.booster.item.effects.values() if x.ID == self.effectID), None) if self.__effect is None: pyfalog.error("Effect (id: {0}) does not exist", self.effectID) return self.build() def build(self): pass @property def effect(self): return self.__effect @property def name(self): return "{0}% {1}".format( roundToPrec(self.booster.getModifiedItemAttr(self.attr), 5), self.__effect.getattr('displayName') or self.__effect.name) @property def attr(self): return self.__effect.getattr('attr') ================================================ FILE: eos/saveddata/cargo.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import sys from logbook import Logger from sqlalchemy.orm import validates, reconstructor import eos.db from eos.effectHandlerHelpers import HandledItem from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut pyfalog = Logger(__name__) class Cargo(HandledItem, ItemAttrShortcut): def __init__(self, item): """Initialize cargo from the program""" self.__item = item self.itemID = item.ID if item is not None else None self.amount = 0 self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = item.attributes self.__itemModifiedAttributes.overrides = item.overrides @reconstructor def init(self): """Initialize cargo from the database and validate""" self.__item = None if self.itemID: self.__item = eos.db.getItem(self.itemID) if self.__item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = self.__item.attributes self.__itemModifiedAttributes.overrides = self.__item.overrides @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def isInvalid(self): return self.__item is None @property def item(self): return self.__item def clear(self): self.itemModifiedAttributes.clear() @validates("fitID", "itemID", "amount") def validator(self, key, val): map = { "fitID" : lambda _val: isinstance(_val, int), "itemID": lambda _val: isinstance(_val, int), "amount": lambda _val: isinstance(_val, int) } if key == "amount" and val > sys.maxsize: val = sys.maxsize if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def __deepcopy__(self, memo): copy = Cargo(self.item) copy.amount = self.amount return copy def rebase(self, item): amount = self.amount Cargo.__init__(self, item) self.amount = amount def __repr__(self): return "Cargo(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) ================================================ FILE: eos/saveddata/character.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import time from logbook import Logger from itertools import chain from sqlalchemy.orm import validates, reconstructor import eos import eos.db import eos.config from eos.effectHandlerHelpers import HandledItem, HandledImplantList pyfalog = Logger(__name__) class Character: __itemList = None __itemIDMap = None __itemNameMap = None def __init__(self, name, defaultLevel=None, initSkills=True): self.savedName = name self.__owner = None self.defaultLevel = defaultLevel self.__skills = [] self.__skillIdMap = {} self.dirtySkills = set() self.alphaClone = None self.__secStatus = 0.0 if initSkills: for item in self.getSkillList(): self.addSkill(Skill(self, item.ID, self.defaultLevel)) self.__implants = HandledImplantList() @reconstructor def init(self): self.__skillIdMap = {} for skill in self.__skills: self.__skillIdMap[skill.itemID] = skill # get a list of skills that the character does no have, and add them (removal of old skills happens in the # Skill loading) for skillID in set(self.getSkillIDMap().keys()).difference(set(self.__skillIdMap.keys())): self.addSkill(Skill(self, skillID, self.defaultLevel)) self.dirtySkills = set() self.alphaClone = None if self.alphaCloneID: self.alphaClone = eos.db.getAlphaClone(self.alphaCloneID) @classmethod def getSkillList(cls): if cls.__itemList is None: cls.__itemList = eos.db.getItemsByCategory("Skill") return cls.__itemList @classmethod def getSkillIDMap(cls): if cls.__itemIDMap is None: map = {} for skill in cls.getSkillList(): map[skill.ID] = skill cls.__itemIDMap = map return cls.__itemIDMap @classmethod def getSkillNameMap(cls): if cls.__itemNameMap is None: map = {} for skill in cls.getSkillList(): map[skill.typeName] = skill cls.__itemNameMap = map return cls.__itemNameMap @classmethod def getAll5(cls): all5 = eos.db.getCharacter("All 5") if all5 is None: # We do not have to be afraid of committing here and saving # edited character data. If this ever runs, it will be during the # get character list phase when pyfa first starts all5 = Character("All 5", 5) eos.db.save(all5) return all5 @classmethod def getAll0(cls): all0 = eos.db.getCharacter("All 0") if all0 is None: all0 = Character("All 0") eos.db.save(all0) return all0 def apiUpdateCharSheet(self, skills, secStatus=0.00): self.clearSkills() for skillRow in skills: self.addSkill(Skill(self, skillRow["typeID"], skillRow["level"])) self.secStatus = float(secStatus) def clearSkills(self): del self.__skills[:] self.__skillIdMap.clear() self.dirtySkills.clear() @property def ro(self): return self == self.getAll0() or self == self.getAll5() @property def secStatus(self): if self.name == "All 5": self.__secStatus = 5.00 elif self.name == "All 0": self.__secStatus = 0.00 return self.__secStatus @secStatus.setter def secStatus(self, sec): self.__secStatus = sec @property def owner(self): return self.__owner @owner.setter def owner(self, owner): self.__owner = owner @property def name(self): name = self.savedName if self.isDirty: name += " *" if self.alphaCloneID: name += ' (\u03B1)' return name @name.setter def name(self, name): self.savedName = name def setSsoCharacter(self, character, clientHash): if character is not None: self.__ssoCharacters.append(character) else: for x in self.__ssoCharacters: if x.client == clientHash: self.__ssoCharacters.remove(x) def getSsoCharacter(self, clientHash): return next((x for x in self.__ssoCharacters if x.client == clientHash), None) @property def alphaCloneID(self): return self.__alphaCloneID @alphaCloneID.setter def alphaCloneID(self, cloneID): self.__alphaCloneID = cloneID self.alphaClone = eos.db.getAlphaClone(cloneID) if cloneID is not None else None @property def skills(self): return self.__skills def addSkill(self, skill): if skill.itemID in self.__skillIdMap: oldSkill = self.__skillIdMap[skill.itemID] if skill.level > oldSkill.level: # if new skill is higher, remove old skill (new skill will still append) self.__skills.remove(oldSkill) else: return self.__skillIdMap[skill.itemID] = skill def removeSkill(self, skill): self.__skills.remove(skill) del self.__skillIdMap[skill.itemID] def getSkill(self, item): if isinstance(item, str): item = self.getSkillNameMap()[item] elif isinstance(item, int): item = self.getSkillIDMap()[item] skill = self.__skillIdMap.get(item.ID) if skill is None: skill = Skill(self, item, self.defaultLevel, False, True) self.addSkill(skill) return skill @property def implants(self): return self.__implants @property def isDirty(self): return len(self.dirtySkills) > 0 def saveLevels(self): if self.ro: raise ReadOnlyException("This character is read-only") for skill in self.dirtySkills.copy(): skill.saveLevel() self.dirtySkills = set() eos.db.commit() def revertLevels(self): for skill in self.dirtySkills.copy(): skill.revert() self.dirtySkills = set() def filteredSkillIncrease(self, filter, *args, **kwargs): for element in self.skills: if filter(element): element.increaseItemAttr(*args, **kwargs) def filteredSkillMultiply(self, filter, *args, **kwargs): for element in self.skills: if filter(element): element.multiplyItemAttr(*args, **kwargs) def filteredSkillBoost(self, filter, *args, **kwargs): for element in self.skills: if filter(element): element.boostItemAttr(*args, **kwargs) def calculateModifiedAttributes(self, fit, runTime, forceProjected=False): if forceProjected: return for skill in self.skills: fit.register(skill) skill.calculateModifiedAttributes(fit, runTime) def clear(self): c = chain( self.skills, self.implants ) for stuff in c: if stuff is not None and stuff != self: stuff.clear() def __deepcopy__(self, memo): copy = Character("%s copy" % self.name, initSkills=False) for skill in self.skills: copy.addSkill(Skill(copy, skill.itemID, skill.level, False, skill.learned)) return copy @validates("ID", "name", "ownerID") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "name" : lambda _val: True, "ownerID": lambda _val: isinstance(_val, int) or _val is None } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def __repr__(self): return "Character(ID={}, name={}) at {}".format( self.ID, self.name, hex(id(self)) ) class Skill(HandledItem): def __init__(self, character, item, level=0, ro=False, learned=True): self.character = character self.__item = item if not isinstance(item, int) else None self.itemID = item.ID if not isinstance(item, int) else item self.__level = level if learned else None self.commandBonus = 0 self.build(ro) @reconstructor def init(self): self.build(False) self.__item = None def build(self, ro): self.__ro = ro self.__suppressed = False self.activeLevel = self.__level def saveLevel(self): self.__level = self.activeLevel if self in self.character.dirtySkills: self.character.dirtySkills.remove(self) def revert(self): self.activeLevel = self.__level @property def isDirty(self): return self.__level != self.activeLevel @property def learned(self): return self.activeLevel is not None @property def level(self): # @todo: there is a phantom bug that keep popping up about skills not having a character... See #1234 # Remove this at some point when the cause can be determined. if self.character: # Ensure that All 5/0 character have proper skill levels (in case database gets corrupted) if self.character.name == "All 5": self.activeLevel = self.__level = 5 elif self.character.name == "All 0": self.activeLevel = self.__level = 0 elif self.character.alphaClone: return min(self.activeLevel or 0, self.character.alphaClone.getSkillLevel(self) or 0) return self.activeLevel or 0 def setLevel(self, level, persist=False, ignoreRestrict=False): if level is not None and (level < 0 or level > 5): raise ValueError(str(level) + " is not a valid value for level") if hasattr(self, "_Skill__ro") and self.__ro is True: raise ReadOnlyException() self.activeLevel = level # todo: have a way to do bulk skill level editing. Currently, everytime a single skill is changed, this runs, # which affects performance. Should have a checkSkillLevels() or something that is more efficient for bulk. if not ignoreRestrict and eos.config.settings['strictSkillLevels']: start = time.time() for item, rlevel in self.item.requiredFor.items(): if item.group.category.ID == 16: # Skill category if level is None or level < rlevel: skill = self.character.getSkill(item.ID) # print "Removing skill: {}, Dependant level: {}, Required level: {}".format(skill, level, rlevel) skill.setLevel(None, persist) pyfalog.debug("Strict Skill levels enabled, time to process {}: {}".format(self.item.ID, time.time() - start)) if persist: self.saveLevel() else: self.character.dirtySkills.add(self) if self.activeLevel == self.__level and self in self.character.dirtySkills: self.character.dirtySkills.remove(self) @property def item(self): if self.__item is None: self.__item = item = Character.getSkillIDMap().get(self.itemID) if item is None: # This skill is no longer in the database and thus invalid it, get rid of it. self.character.removeSkill(self) return self.__item def getModifiedItemAttr(self, key): if key in self.item.attributes: return self.item.attributes[key].value else: return 0 def calculateModifiedAttributes(self, fit, runTime): if self.__suppressed: # or not self.learned - removed for GH issue 101 return item = self.item if item is None: return for effect in item.effects.values(): if effect.runTime == runTime and \ effect.isType("passive") and \ (not fit.isStructure or effect.isType("structure")) and \ effect.activeByDefault: try: effect.handler(fit, self, ("skill",), None, effect=effect) except AttributeError: continue def clear(self): self.__suppressed = False self.commandBonus = 0 def suppress(self): self.__suppressed = True def isSuppressed(self): return self.__suppressed @validates("characterID", "skillID", "level") def validator(self, key, val): if hasattr(self, "_Skill__ro") and self.__ro is True and key != "characterID": raise ReadOnlyException() map = { "characterID": lambda _val: isinstance(_val, int), "skillID" : lambda _val: isinstance(_val, int) } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def __deepcopy__(self, memo): copy = Skill(self.character, self.item, self.level, self.__ro) return copy def __repr__(self): return "Skill(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) class ReadOnlyException(Exception): pass ================================================ FILE: eos/saveddata/citadel.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from eos.saveddata.ship import Ship pyfalog = Logger(__name__) class Citadel(Ship): def validate(self, item): if item.category.name != "Structure": pyfalog.error("Passed item '{0}' (category: {1}) is not under Structure category", item.name, item.category.name) raise ValueError( 'Passed item "%s" (category: (%s)) is not under Structure category' % (item.name, item.category.name)) def __deepcopy__(self, memo): copy = Citadel(self.item) return copy def __repr__(self): return "Citadel(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) ================================================ FILE: eos/saveddata/damagePattern.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import re from collections import OrderedDict from sqlalchemy.orm import reconstructor import eos.db def _t(x): return x def _c(x): return '[' + x + ']' # Order is significant here - UI uses order as-is for built-in patterns BUILTINS = OrderedDict([ (-1, (_t('Uniform'), 25, 25, 25, 25)), (-2, (_c(_t('Generic')) + _t('EM'), 1, 0, 0, 0)), (-3, (_c(_t('Generic')) + _t('Thermal'), 0, 1, 0, 0)), (-4, (_c(_t('Generic')) + _t('Kinetic'), 0, 0, 1, 0)), (-5, (_c(_t('Generic')) + _t('Explosive'), 0, 0, 0, 1)), (-6, (_c(_t('Frequency Crystals')) + '|' + _t('[T2] Aurora'), 5, 3, 0, 0)), (-7, (_c(_t('Frequency Crystals')) + '|' + _t('[T2] Scorch'), 9, 2, 0, 0)), (-8, (_c(_t('Frequency Crystals')) + _t('Radio'), 5, 0, 0, 0)), (-9, (_c(_t('Frequency Crystals')) + _t('Microwave'), 4, 2, 0, 0)), (-10, (_c(_t('Frequency Crystals')) + _t('Infrared'), 5, 2, 0, 0)), (-11, (_c(_t('Frequency Crystals')) + _t('Standard'), 5, 3, 0, 0)), (-12, (_c(_t('Frequency Crystals')) + _t('Ultraviolet'), 6, 3, 0, 0)), (-13, (_c(_t('Frequency Crystals')) + _t('Xray'), 6, 4, 0, 0)), (-14, (_c(_t('Frequency Crystals')) + _t('Gamma'), 7, 4, 0, 0)), (-15, (_c(_t('Frequency Crystals')) + _t('Multifrequency'), 7, 5, 0, 0)), (-16, (_c(_t('Frequency Crystals')) + '|' + _t('[T2] Gleam'), 7, 7, 0, 0)), (-17, (_c(_t('Frequency Crystals')) + '|' + _t('[T2] Conflagration'), 7.7, 7.7, 0, 0)), # Different sizes of plasma do different damage ratios, the values here # are average of ratios across sizes (-18, (_c(_t('Exotic Plasma')) + '|' + _t('[T2] Mystic'), 0, 66319, 0, 33681)), (-19, (_c(_t('Exotic Plasma')) + _t('Meson'), 0, 60519, 0, 39481)), (-20, (_c(_t('Exotic Plasma')) + _t('Baryon'), 0, 59737, 0, 40263)), (-21, (_c(_t('Exotic Plasma')) + _t('Tetryon'), 0, 69208, 0, 30792)), (-22, (_c(_t('Exotic Plasma')) + '|' + _t('[T2] Occult'), 0, 55863, 0, 44137)), # Different sizes of packs do different damage ratios, the values here # are average of ratios across sizes (-23, (_c(_t('Condenser Packs')) + '|' + _t('[T2] StrikeSnipe'), 51817, 0, 48183, 0)), (-24, (_c(_t('Condenser Packs')) + _t('MesmerFlux'), 76476, 0, 23524, 0)), (-25, (_c(_t('Condenser Packs')) + _t('SlamBolt'), 23376, 0, 76624, 0)), (-26, (_c(_t('Condenser Packs')) + _t('BlastShot'), 19820, 0, 80180, 0)), (-27, (_c(_t('Condenser Packs')) + _t('GalvaSurge'), 80206, 0, 19794, 0)), (-28, (_c(_t('Condenser Packs')) + '|' + _t('[T2] ElectroPunch'), 50547, 0, 49453, 0)), (-29, (_c(_t('Hybrid Charges')) + '|' + _t('[T2] Spike'), 0, 4, 4, 0)), (-30, (_c(_t('Hybrid Charges')) + '|' + _t('[T2] Null'), 0, 6, 5, 0)), (-31, (_c(_t('Hybrid Charges')) + _t('Iron'), 0, 2, 3, 0)), (-32, (_c(_t('Hybrid Charges')) + _t('Tungsten'), 0, 2, 4, 0)), (-33, (_c(_t('Hybrid Charges')) + _t('Iridium'), 0, 3, 4, 0)), (-34, (_c(_t('Hybrid Charges')) + _t('Lead'), 0, 3, 5, 0)), (-35, (_c(_t('Hybrid Charges')) + _t('Thorium'), 0, 4, 5, 0)), (-36, (_c(_t('Hybrid Charges')) + _t('Uranium'), 0, 4, 6, 0)), (-37, (_c(_t('Hybrid Charges')) + _t('Plutonium'), 0, 5, 6, 0)), (-38, (_c(_t('Hybrid Charges')) + _t('Antimatter'), 0, 5, 7, 0)), (-39, (_c(_t('Hybrid Charges')) + '|' + _t('[T2] Javelin'), 0, 8, 6, 0)), (-40, (_c(_t('Hybrid Charges')) + '|' + _t('[T2] Void'), 0, 7.7, 7.7, 0)), (-41, (_c(_t('Projectile Ammo')) + '|' + _t('[T2] Tremor'), 0, 0, 3, 5)), (-42, (_c(_t('Projectile Ammo')) + '|' + _t('[T2] Barrage'), 0, 0, 5, 6)), (-43, (_c(_t('Projectile Ammo')) + _t('Carbonized Lead'), 0, 0, 4, 1)), (-44, (_c(_t('Projectile Ammo')) + _t('Nuclear'), 0, 0, 1, 4)), (-45, (_c(_t('Projectile Ammo')) + _t('Proton'), 3, 0, 2, 0)), (-46, (_c(_t('Projectile Ammo')) + _t('Depleted Uranium'), 0, 3, 2, 3)), (-47, (_c(_t('Projectile Ammo')) + _t('Titanium Sabot'), 0, 0, 6, 2)), (-48, (_c(_t('Projectile Ammo')) + _t('EMP'), 9, 0, 1, 2)), (-49, (_c(_t('Projectile Ammo')) + _t('Phased Plasma'), 0, 10, 2, 0)), (-50, (_c(_t('Projectile Ammo')) + _t('Fusion'), 0, 0, 2, 10)), (-51, (_c(_t('Projectile Ammo')) + '|' + _t('[T2] Quake'), 0, 0, 5, 9)), (-52, (_c(_t('Projectile Ammo')) + '|' + _t('[T2] Hail'), 0, 0, 3.3, 12.1)), (-53, (_c(_t('Missiles')) + _t('Mjolnir'), 1, 0, 0, 0)), (-54, (_c(_t('Missiles')) + _t('Inferno'), 0, 1, 0, 0)), (-55, (_c(_t('Missiles')) + _t('Scourge'), 0, 0, 1, 0)), (-56, (_c(_t('Missiles')) + _t('Nova'), 0, 0, 0, 1)), (-57, (_c(_t('Bombs')) + _t('Electron Bomb'), 6400, 0, 0, 0)), (-58, (_c(_t('Bombs')) + _t('Scorch Bomb'), 0, 6400, 0, 0)), (-59, (_c(_t('Bombs')) + _t('Concussion Bomb'), 0, 0, 6400, 0)), (-60, (_c(_t('Bombs')) + _t('Shrapnel Bomb'), 0, 0, 0, 6400)), # Source: ticket #2067 and #2265 (-61, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('All'), 126, 427, 218, 230)), (-62, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Angel'), 450, 72, 80, 398)), (-63, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Concord'), 53, 559, 94, 295)), (-64, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Drifter'), 250, 250, 250, 250)), (-65, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Drones'), 250, 250, 250, 250)), (-66, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Overmind'), 0, 410, 590, 0)), (-67, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Sansha'), 569, 431, 0, 0)), (-68, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Seeker'), 402, 402, 98, 98)), (-69, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Sleeper'), 313, 313, 187, 187)), (-70, (_c(_t('NPC')) + _c(_t('Abyssal')) + _t('Triglavian'), 0, 615, 0, 385)), (-71, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Angel Cartel'), 1838, 562, 2215, 3838)), (-72, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Blood Raiders'), 5067, 4214, 0, 0)), (-73, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Guristas'), 0, 1828, 7413, 0)), (-74, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Rogue Drone'), 394, 666, 1090, 1687)), (-75, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Sanshas Nation'), 5586, 4112, 0, 0)), (-76, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Serpentis'), 0, 5373, 4813, 0)), (-77, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Enyo'), 0, 147, 147, 0)), (-78, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Hawk'), 0, 0, 247, 0)), (-79, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Jaguar'), 36, 0, 50, 182)), (-80, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Vengeance'), 232, 0, 0, 0)), (-81, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Cruor'), 90, 90, 0, 0)), (-82, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Dramiel'), 55, 0, 20, 96)), (-83, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Daredevil'), 0, 110, 154, 0)), (-84, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Succubus'), 135, 30, 0, 0)), (-85, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Worm'), 0, 0, 228, 0)), (-86, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Ashimmu'), 260, 100, 0, 0)), (-87, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Talos'), 0, 413, 413, 0)), (-88, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Sentinel'), 0, 0, 75, 90)), (-89, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Angel Cartel'), 369, 533, 1395, 3302)), (-90, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Blood Raiders'), 6040, 5052, 10, 15)), (-91, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Guristas'), 0, 1531, 9680, 0)), (-92, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Rogue Drone'), 276, 1071, 1069, 871)), (-93, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Sanshas Nation'), 3009, 2237, 0, 0)), (-94, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Serpentis'), 0, 3110, 1929, 0)), # Source: ticket #2067 (-95, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Triglavian Entities')) + _t('Dread'), 0, 417, 0, 583)), (-96, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Triglavian Entities')) + _t('Normal Subcaps'), 0, 610, 0, 390)), # To avoid errors on msgfmt, we have to mark that '0%' is meaning literally 0% with no-python-format. # See also: https://github.com/vslavik/poedit/issues/645 (-97, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Triglavian Entities')) + # xgettext:no-python-format _t('Subcaps w/missiles 0% spool up'), 367, 155, 367, 112)), (-98, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Triglavian Entities')) + # xgettext:no-python-format _t('Subcaps w/missiles 50% spool up'), 291, 243, 291, 175)), (-99, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Triglavian Entities')) + # xgettext:no-python-format _t('Subcaps w/missiles 100% spool up'), 241, 301, 241, 217)), (-100, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Amarr EDENCOM Entities')) + _t('Dread/Subcaps'), 583, 417, 0, 0)), (-101, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Caldari EDENCOM Entities')) + _t('Dread'), 1000, 0, 0, 0)), (-102, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Caldari EDENCOM Entities')) + _t('Subcaps'), 511, 21, 29, 440)), (-103, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Gallente EDENCOM Entities')) + _t('Dread/Subcaps'), 0, 417, 583, 0)), (-104, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Minmatar EDENCOM Entities')) + _t('Dread'), 0, 0, 583, 417)), (-105, (_c(_t('NPC')) + _c(_t('Invasion')) + _c(_t('Minmatar EDENCOM Entities')) + _t('Subcaps'), 302, 136, 328, 234)), (-106, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Drifter Entities'), 250, 250, 250, 250)), (-107, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Sleeper Entities'), 265, 265, 235, 235)), (-108, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Rogue Drone Entities'), 250, 250, 250, 250)), (-109, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Amarr Empire'), 4464, 3546, 97, 0)), (-110, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Caldari State'), 0, 2139, 4867, 0)), (-111, (_c(_t('NPC')) + _c(_t('Mission')) + _t('CONCORD'), 336, 134, 212, 412)), (-112, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Gallente Federation'), 9, 3712, 2758, 0)), (-113, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Khanid'), 612, 483, 43, 6)), (-114, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Minmatar Republic'), 1024, 388, 1655, 4285)), (-115, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Mordus Legion'), 25, 262, 625, 0)), (-116, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Thukker'), 0, 52, 10, 79)), (-117, (_c(_t('NPC')) + _t('Sansha Incursion'), 1682, 1347, 3678, 3678)), (-118, (_c(_t('NPC')) + _t('Sleepers'), 1472, 1472, 1384, 1384))]) class DamagePattern: DAMAGE_TYPES = ('em', 'thermal', 'kinetic', 'explosive') _builtins = None def __init__(self, *args, **kwargs): self.builtin = False self.update(*args, **kwargs) @reconstructor def init(self): self.builtin = False def update(self, emAmount=25, thermalAmount=25, kineticAmount=25, explosiveAmount=25): self.emAmount = emAmount self.thermalAmount = thermalAmount self.kineticAmount = kineticAmount self.explosiveAmount = explosiveAmount @classmethod def getBuiltinList(cls): if cls._builtins is None: cls.__generateBuiltins() return list(cls._builtins.values()) @classmethod def getBuiltinById(cls, id): if cls._builtins is None: cls.__generateBuiltins() return cls._builtins.get(id) @classmethod def getDefaultBuiltin(cls): if cls._builtins is None: cls.__generateBuiltins() return cls._builtins.get(-1) @classmethod def __generateBuiltins(cls): cls._builtins = OrderedDict() for id, (rawName, em, therm, kin, explo) in BUILTINS.items(): pattern = DamagePattern(emAmount=em, thermalAmount=therm, kineticAmount=kin, explosiveAmount=explo) pattern.ID = id pattern.rawName = rawName pattern.builtin = True cls._builtins[id] = pattern def calculateEhp(self, item): ehp = {} for (type, attr) in (('shield', 'shieldCapacity'), ('armor', 'armorHP'), ('hull', 'hp')): rawCapacity = item.getModifiedItemAttr(attr) ehp[type] = self.effectivify(item, rawCapacity, type) return ehp def calculateEffectiveTank(self, fit, tankInfo): typeMap = { "passiveShield": "shield", "shieldRepair": "shield", "armorRepair": "armor", "armorRepairPreSpool": "armor", "armorRepairFullSpool": "armor", "hullRepair": "hull" } ereps = {} for field in tankInfo: if field in typeMap: ereps[field] = self.effectivify(fit.ship, tankInfo[field], typeMap[field]) return ereps def effectivify(self, item, amount, type): type = type if type != "hull" else "" totalDamage = sum((self.emAmount, self.thermalAmount, self.kineticAmount, self.explosiveAmount)) specificDivider = 0 for damageType in self.DAMAGE_TYPES: # Compose an attribute name, then make sure the first letter is NOT capitalized attrName = "%s%sDamageResonance" % (type, damageType.capitalize()) attrName = attrName[0].lower() + attrName[1:] resonance = item.getModifiedItemAttr(attrName) damage = getattr(self, "%sAmount" % damageType) specificDivider += damage / float(totalDamage or 1) * resonance return amount / (specificDivider or 1) importMap = { "em": "em", "therm": "thermal", "kin": "kinetic", "exp": "explosive" } @classmethod def oneType(cls, damageType, amount=100): pattern = DamagePattern() pattern.update(amount if damageType == "em" else 0, amount if damageType == "thermal" else 0, amount if damageType == "kinetic" else 0, amount if damageType == "explosive" else 0) return pattern @classmethod def importPatterns(cls, text): lines = re.split('[\n\r]+', text) patterns = [] numPatterns = 0 # When we import damage profiles, we create new ones and update old ones. To do this, get a list of current # patterns to allow lookup lookup = {} current = eos.db.getDamagePatternList() for pattern in current: lookup[pattern.rawName] = pattern for line in lines: try: if line.strip()[0] == "#": # comments continue line = line.split('#', 1)[0] # allows for comments type, data = line.rsplit('=', 1) type, data = type.strip(), data.split(',') except (KeyboardInterrupt, SystemExit): raise except: # Data isn't in correct format, continue to next line continue if type != "DamageProfile": continue numPatterns += 1 name, data = data[0], data[1:5] fields = {} for index, val in enumerate(data): try: fields["%sAmount" % cls.DAMAGE_TYPES[index]] = int(val) except (KeyboardInterrupt, SystemExit): raise except: continue if len(fields) == 4: # Avoid possible blank lines if name.strip() in lookup: pattern = lookup[name.strip()] pattern.update(**fields) eos.db.save(pattern) else: pattern = DamagePattern(**fields) pattern.rawName = name.strip() eos.db.save(pattern) patterns.append(pattern) eos.db.commit() return patterns, numPatterns EXPORT_FORMAT = "DamageProfile = %s,%d,%d,%d,%d\n" @classmethod def exportPatterns(cls, *patterns): out = "# Exported from pyfa\n#\n" out += "# Values are in following format:\n" out += "# DamageProfile = [name],[EM amount],[Thermal amount],[Kinetic amount],[Explosive amount]\n\n" for dp in patterns: out += cls.EXPORT_FORMAT % (dp.rawName, dp.emAmount, dp.thermalAmount, dp.kineticAmount, dp.explosiveAmount) return out.strip() @property def name(self): return self.rawName @property def fullName(self): categories, tail = self.__parseRawName() return '{}{}'.format(''.join('[{}]'.format(c) for c in categories), tail) @property def shortName(self): return self.__parseRawName()[1] @property def hierarchy(self): return self.__parseRawName()[0] def __parseRawName(self): categories = [] remainingName = self.rawName.strip() if self.rawName else '' while True: start, end = remainingName.find('['), remainingName.find(']') if start == -1 or end == -1: return categories, remainingName splitter = remainingName.find('|') if splitter != -1 and splitter == start - 1: return categories, remainingName[1:] categories.append(remainingName[start + 1:end]) remainingName = remainingName[end + 1:].strip() def __deepcopy__(self, memo): p = DamagePattern(self.emAmount, self.thermalAmount, self.kineticAmount, self.explosiveAmount) p.rawName = "%s copy" % self.rawName return p ================================================ FILE: eos/saveddata/drone.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math from copy import deepcopy from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict from eos.saveddata.mutatedMixin import MutatedMixin, MutaError from eos.saveddata.mutator import MutatorDrone from eos.utils.cycles import CycleInfo from eos.utils.default import DEFAULT from eos.utils.stats import DmgTypes, RRTypes pyfalog = Logger(__name__) class Drone(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, MutatedMixin): MINING_ATTRIBUTES = ("miningAmount",) def __init__(self, item, baseItem=None, mutaplasmid=None): """Initialize a drone from the program""" self._item = item self._mutaInit(baseItem=baseItem, mutaplasmid=mutaplasmid) if self.isInvalid: raise ValueError("Passed item is not a Drone") self.itemID = item.ID if item is not None else None self.amount = 0 self.amountActive = 0 self.projected = False self.projectionRange = None self.build() @reconstructor def init(self): """Initialize a drone from the database and validate""" self._item = None if self.itemID: self._item = eos.db.getItem(self.itemID) if self._item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return try: self._mutaReconstruct() except MutaError: return if self.isInvalid: pyfalog.error("Item (id: {0}) is not a Drone", self.itemID) return self.build() def build(self): """ Build object. Assumes proper and valid item already set """ self.__charge = None self.__baseVolley = None self.__baseRRAmount = None self.__miningYield = None self.__miningDrain = None self.__ehp = None self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = self._item.attributes self.__itemModifiedAttributes.overrides = self._item.overrides self.__chargeModifiedAttributes = ModifiedAttributeDict() self._mutaLoadMutators(mutatorClass=MutatorDrone) self.__itemModifiedAttributes.mutators = self.mutators chargeID = self.getModifiedItemAttr("entityMissileTypeID", None) if chargeID: charge = eos.db.getItem(int(chargeID)) self.__charge = charge self.__chargeModifiedAttributes.original = charge.attributes self.__chargeModifiedAttributes.overrides = charge.overrides @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def chargeModifiedAttributes(self): return self.__chargeModifiedAttributes @property def isInvalid(self): if self._item is None: return True if self._item.category.name != "Drone": return True if self._mutaIsInvalid: return True return False @property def item(self): return self._item @property def charge(self): return self.__charge @property def cycleTime(self): if self.hasAmmo: cycleTime = self.getModifiedItemAttr("missileLaunchDuration", 0) else: for attr in ("speed", "duration", "durationHighisGood"): cycleTime = self.getModifiedItemAttr(attr) if cycleTime: break if cycleTime is None: return 0 return max(cycleTime, 0) @property def dealsDamage(self): for attr in ("emDamage", "kineticDamage", "explosiveDamage", "thermalDamage"): if attr in self.itemModifiedAttributes or attr in self.chargeModifiedAttributes: return True @property def mines(self): if "miningAmount" in self.itemModifiedAttributes: return True @property def hasAmmo(self): return self.charge is not None def isDealingDamage(self): volleyParams = self.getVolleyParameters() for volley in volleyParams.values(): if volley.total > 0: return True return False def getVolleyParameters(self, targetProfile=None): if not self.dealsDamage or self.amountActive <= 0: return {0: DmgTypes.default()} if self.__baseVolley is None: dmgGetter = self.getModifiedChargeAttr if self.hasAmmo else self.getModifiedItemAttr dmgMult = self.amountActive * (self.getModifiedItemAttr("damageMultiplier", 1)) self.__baseVolley = DmgTypes( em=(dmgGetter("emDamage", 0)) * dmgMult, thermal=(dmgGetter("thermalDamage", 0)) * dmgMult, kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult, explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult) volley = deepcopy(self.__baseVolley) volley.profile = targetProfile return {0: volley} def getVolley(self, targetProfile=None): return self.getVolleyParameters(targetProfile=targetProfile)[0] def getDps(self, targetProfile=None): volley = self.getVolley(targetProfile=targetProfile) if not volley: return DmgTypes.default() cycleParams = self.getCycleParameters() if cycleParams is None: return DmgTypes.default() dpsFactor = 1 / (cycleParams.averageTime / 1000) dps = volley * dpsFactor return dps def isRemoteRepping(self, ignoreState=False): repParams = self.getRepAmountParameters(ignoreState=ignoreState) for rrData in repParams.values(): if rrData: return True return False def getRepAmountParameters(self, ignoreState=False): amount = self.amount if ignoreState else self.amountActive if amount <= 0: return {} if self.__baseRRAmount is None: self.__baseRRAmount = {} hullAmount = self.getModifiedItemAttr("structureDamageAmount", 0) armorAmount = self.getModifiedItemAttr("armorDamageAmount", 0) shieldAmount = self.getModifiedItemAttr("shieldBonus", 0) if shieldAmount: self.__baseRRAmount[0] = RRTypes( shield=shieldAmount * amount, armor=0, hull=0, capacitor=0) if armorAmount or hullAmount: self.__baseRRAmount[self.cycleTime] = RRTypes( shield=0, armor=armorAmount * amount, hull=hullAmount * amount, capacitor=0) return self.__baseRRAmount def getRemoteReps(self, ignoreState=False): rrDuringCycle = RRTypes(0, 0, 0, 0) cycleParams = self.getCycleParameters() if cycleParams is None: return rrDuringCycle repAmountParams = self.getRepAmountParameters(ignoreState=ignoreState) avgCycleTime = cycleParams.averageTime if len(repAmountParams) == 0 or avgCycleTime == 0: return rrDuringCycle for rrAmount in repAmountParams.values(): rrDuringCycle += rrAmount rrFactor = 1 / (avgCycleTime / 1000) rrDuringCycle *= rrFactor return rrDuringCycle def getCycleParameters(self, reloadOverride=None): cycleTime = self.cycleTime if not cycleTime: return None return CycleInfo(self.cycleTime, 0, math.inf, False) def getMiningYPS(self, ignoreState=False): if not ignoreState and self.amountActive <= 0: return 0 if self.__miningYield is None: self.__miningYield, self.__miningDrain = self.__calculateMining() return self.__miningYield def getMiningDPS(self, ignoreState=False): if not ignoreState and self.amountActive <= 0: return 0 if self.__miningDrain is None: self.__miningYield, self.__miningDrain = self.__calculateMining() return self.__miningDrain def __calculateMining(self): if self.mines is True: getter = self.getModifiedItemAttr cycleParams = self.getCycleParameters() if cycleParams is None: yps = 0 else: cycleTime = cycleParams.averageTime yield_ = sum([getter(d) for d in self.MINING_ATTRIBUTES]) * self.amount yps = yield_ / (cycleTime / 1000.0) wasteChance = self.getModifiedItemAttr("miningWasteProbability") wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier") dps = yps * (1 + max(0, min(1, wasteChance / 100)) * wasteMult) return yps, dps else: return 0, 0 @property def maxRange(self): attrs = ("shieldTransferRange", "powerTransferRange", "energyDestabilizationRange", "empFieldRange", "ecmBurstRange", "maxRange", "ECMRangeOptimal") for attr in attrs: maxRange = self.getModifiedItemAttr(attr) if maxRange: return maxRange if self.charge is not None: delay = self.getModifiedChargeAttr("explosionDelay") speed = self.getModifiedChargeAttr("maxVelocity") if delay is not None and speed is not None: return delay / 1000.0 * speed @property def hp(self): hp = {} for (type, attr) in (('shield', 'shieldCapacity'), ('armor', 'armorHP'), ('hull', 'hp')): hp[type] = self.getModifiedItemAttr(attr) return hp @property def ehp(self): if self.__ehp is None: if self.owner is None or self.owner.damagePattern is None: ehp = self.hp else: ehp = self.owner.damagePattern.calculateEhp(self) self.__ehp = ehp return self.__ehp def calculateShieldRecharge(self): capacity = self.getModifiedItemAttr("shieldCapacity") rechargeRate = self.getModifiedItemAttr("shieldRechargeRate") / 1000.0 return 10 / rechargeRate * math.sqrt(0.25) * (1 - math.sqrt(0.25)) * capacity # Had to add this to match the falloff property in modules.py # Fscking ship scanners. If you find any other falloff attributes, # Put them in the attrs tuple. @property def falloff(self): attrs = ("falloff", "falloffEffectiveness") for attr in attrs: falloff = self.getModifiedItemAttr(attr) if falloff: return falloff @validates("ID", "itemID", "chargeID", "amount", "amountActive") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "itemID" : lambda _val: isinstance(_val, int), "chargeID" : lambda _val: isinstance(_val, int), "amount" : lambda _val: isinstance(_val, int) and _val >= 0, "amountActive": lambda _val: isinstance(_val, int) and self.amount >= _val >= 0 } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def clear(self): self.__baseVolley = None self.__baseRRAmount = None self.__miningYield = None self.__miningDrain = None self.__ehp = None self.itemModifiedAttributes.clear() self.chargeModifiedAttributes.clear() def canBeApplied(self, projectedOnto): """Check if drone can engage specific fitting""" item = self.item # Do not allow to apply offensive modules on ship with offensive module immunite, with few exceptions # (all effects which apply instant modification are exception, generally speaking) if item.offensive and projectedOnto.ship.getModifiedItemAttr("disallowOffensiveModifiers") == 1: offensiveNonModifiers = {"energyDestabilizationNew", "leech", "energyNosferatuFalloff", "energyNeutralizerFalloff"} if not offensiveNonModifiers.intersection(set(item.effects)): return False # If assistive modules are not allowed, do not let to apply these altogether if item.assistive and projectedOnto.ship.getModifiedItemAttr("disallowAssistance") == 1: return False else: return True def calculateModifiedAttributes(self, fit, runTime, forceProjected=False, forcedProjRange=DEFAULT): if self.projected or forceProjected: context = "projected", "drone" projected = True else: context = ("drone",) projected = False projectionRange = self.projectionRange if forcedProjRange is DEFAULT else forcedProjRange for effect in self.item.effects.values(): if effect.runTime == runTime and \ effect.activeByDefault and \ ((projected is True and effect.isType("projected")) or projected is False and effect.isType("passive")): # See GH issue #765 if effect.getattr('grouped'): effect.handler(fit, self, context, projectionRange, effect=effect) else: i = 0 while i != self.amountActive: effect.handler(fit, self, context, projectionRange, effect=effect) i += 1 if self.charge: for effect in self.charge.effects.values(): if effect.runTime == runTime and effect.activeByDefault: effect.handler(fit, self, ("droneCharge",), projectionRange, effect=effect) def __deepcopy__(self, memo): copy = Drone(self.item, self.baseItem, self.mutaplasmid) copy.amount = self.amount copy.amountActive = self.amountActive copy.projectionRange = self.projectionRange self._mutaApplyMutators(mutatorClass=MutatorDrone, targetInstance=copy) return copy def rebase(self, item): amount = self.amount amountActive = self.amountActive projectionRange = self.projectionRange Drone.__init__(self, item, self.baseItem, self.mutaplasmid) self.amount = amount self.amountActive = amountActive self.projectionRange = projectionRange self._mutaApplyMutators(mutatorClass=MutatorDrone) def fits(self, fit): fitDroneGroupLimits = set() for i in range(1, 3): groneGrp = fit.ship.getModifiedItemAttr("allowedDroneGroup%d" % i) if groneGrp: fitDroneGroupLimits.add(int(groneGrp)) if len(fitDroneGroupLimits) == 0: return True if self.item.groupID in fitDroneGroupLimits: return True return False def canDealDamage(self, ignoreState=False): if self.item is None: return False for effect in self.item.effects.values(): if effect.dealsDamage and (ignoreState or self.amountActive > 0): return True return False ================================================ FILE: eos/saveddata/fighter.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math from copy import deepcopy from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db from eos.const import FittingSlot from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict from eos.saveddata.fighterAbility import FighterAbility from eos.utils.cycles import CycleInfo, CycleSequence from eos.utils.default import DEFAULT from eos.utils.float import floatUnerr from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) class Fighter(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): DAMAGE_TYPES = ("em", "kinetic", "explosive", "thermal") DAMAGE_TYPES2 = ("EM", "Kin", "Exp", "Therm") def __init__(self, item): """Initialize a fighter from the program""" self.__item = item if self.isInvalid: raise ValueError("Passed item is not a Fighter") self.itemID = item.ID if item is not None else None self.projected = False self.projectionRange = None self.active = True # -1 is a placeholder that represents max squadron size, which we may not know yet as ships may modify this with # their effects. If user changes this, it is then overridden with user value. self._amount = -1 self.__abilities = self.__getAbilities() self.build() standardAttackActive = False for ability in self.abilities: if ability.effect.isImplemented and ability.effect.name == 'fighterAbilityAttackM': # Activate "standard attack" if available ability.active = True standardAttackActive = True else: # Activate all other abilities (Neut, Web, etc) except propmods if no standard attack is active if ability.effect.isImplemented and \ standardAttackActive is False and \ ability.effect.name != 'fighterAbilityMicroWarpDrive' and \ ability.effect.name != 'fighterAbilityEvasiveManeuvers': ability.active = True @reconstructor def init(self): """Initialize a fighter from the database and validate""" self.__item = None if self.itemID: self.__item = eos.db.getItem(self.itemID) if self.__item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return if self.isInvalid: pyfalog.error("Item (id: {0}) is not a Fighter", self.itemID) return self.build() def build(self): """ Build object. Assumes proper and valid item already set """ self.__charge = None self.__baseVolley = None self.__miningyield = None self.__ehp = None self.__itemModifiedAttributes = ModifiedAttributeDict() self.__chargeModifiedAttributes = ModifiedAttributeDict() if {a.effectID for a in self.abilities} != {e.ID for e in self.item.effects.values()}: self.__abilities = [] for ability in self.__getAbilities(): self.__abilities.append(ability) if self.__item: self.__itemModifiedAttributes.original = self.__item.attributes self.__itemModifiedAttributes.overrides = self.__item.overrides self.__slot = self.__calculateSlot(self.__item) chargeID = self.getModifiedItemAttr("fighterAbilityLaunchBombType") if chargeID: charge = eos.db.getItem(int(chargeID)) self.__charge = charge self.__chargeModifiedAttributes.original = charge.attributes self.__chargeModifiedAttributes.overrides = charge.overrides def __getAbilities(self): """Returns list of FighterAbilities that are loaded with data""" return [FighterAbility(effect) for effect in list(self.item.effects.values())] def __calculateSlot(self, item): types = { "Light" : FittingSlot.F_LIGHT, "Support": FittingSlot.F_SUPPORT, "Heavy" : FittingSlot.F_HEAVY, "StandupLight": FittingSlot.FS_LIGHT, "StandupSupport": FittingSlot.FS_SUPPORT, "StandupHeavy": FittingSlot.FS_HEAVY } for t, slot in types.items(): if self.getModifiedItemAttr("fighterSquadronIs{}".format(t)): return slot @property def slot(self): return self.__slot @property def amount(self): return int(self.getModifiedItemAttr("fighterSquadronMaxSize")) if self._amount == -1 else self._amount @amount.setter def amount(self, amount): amount = max(0, int(amount)) if amount >= self.getModifiedItemAttr("fighterSquadronMaxSize"): amount = -1 self._amount = amount @property def fighterSquadronMaxSize(self): return int(self.getModifiedItemAttr("fighterSquadronMaxSize")) @property def abilities(self): return self.__abilities or [] @property def charge(self): return self.__charge @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def chargeModifiedAttributes(self): return self.__chargeModifiedAttributes @property def isInvalid(self): return self.__item is None or self.__item.category.name != "Fighter" @property def item(self): return self.__item @property def hasAmmo(self): return self.charge is not None def isDealingDamage(self): volleyParams = self.getVolleyParametersPerEffect() for effectData in volleyParams.values(): for volley in effectData.values(): if volley.total > 0: return True return False def getVolleyParametersPerEffect(self, targetProfile=None): if not self.active or self.amount <= 0: return {} if self.__baseVolley is None: self.__baseVolley = {} for ability in self.abilities: # Not passing resists here as we want to calculate and store base volley self.__baseVolley[ability.effectID] = {0: ability.getVolley()} adjustedVolleys = {} for effectID, effectData in self.__baseVolley.items(): adjustedVolleys[effectID] = {} for volleyTime, baseVolley in effectData.items(): adjustedVolley = deepcopy(baseVolley) adjustedVolley.profile = targetProfile adjustedVolleys[effectID][volleyTime] = adjustedVolley return adjustedVolleys def getVolleyPerEffect(self, targetProfile=None): volleyParams = self.getVolleyParametersPerEffect(targetProfile=targetProfile) volleyMap = {} for effectID, volleyData in volleyParams.items(): volleyMap[effectID] = volleyData[0] return volleyMap def getVolley(self, targetProfile=None): volleyParams = self.getVolleyParametersPerEffect(targetProfile=targetProfile) volley = DmgTypes.default() for volleyData in volleyParams.values(): volley += volleyData[0] return volley def getDps(self, targetProfile=None): dps = DmgTypes.default() for subdps in self.getDpsPerEffect(targetProfile=targetProfile).values(): dps += subdps return dps def getDpsPerEffect(self, targetProfile=None): if not self.active or self.amount <= 0: return {} cycleParams = self.getCycleParametersPerEffectOptimizedDps(targetProfile=targetProfile) dpsMap = {} for ability in self.abilities: if ability.effectID in cycleParams: cycleTime = cycleParams[ability.effectID].averageTime dpsMap[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime) return dpsMap def getCycleParametersPerEffectOptimizedDps(self, targetProfile=None, reloadOverride=None): cycleParamsInfinite = self.getCycleParametersPerEffectInfinite() cycleParamsReload = self.getCycleParametersPerEffect(reloadOverride=reloadOverride) dpsMapOnlyInfinite = {} dpsMapAllWithReloads = {} # Decide if it's better to keep steady dps up and never reload or reload from time to time for ability in self.abilities: if ability.effectID in cycleParamsInfinite: cycleTime = cycleParamsInfinite[ability.effectID].averageTime dpsMapOnlyInfinite[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime) if ability.effectID in cycleParamsReload: cycleTime = cycleParamsReload[ability.effectID].averageTime dpsMapAllWithReloads[ability.effectID] = ability.getDps(targetProfile=targetProfile, cycleTimeOverride=cycleTime) totalOnlyInfinite = sum(i.total for i in dpsMapOnlyInfinite.values()) totalAllWithReloads = sum(i.total for i in dpsMapAllWithReloads.values()) return cycleParamsInfinite if totalOnlyInfinite >= totalAllWithReloads else cycleParamsReload def getCycleParametersPerEffectInfinite(self): return { a.effectID: CycleInfo(a.cycleTime, 0, math.inf, False) for a in self.abilities if a.numShots == 0 and a.cycleTime > 0} def getCycleParametersPerEffect(self, reloadOverride=None): factorReload = reloadOverride if reloadOverride is not None else self.owner.factorReload # Assume it can cycle infinitely if not factorReload: return {a.effectID: CycleInfo(a.cycleTime, 0, math.inf, False) for a in self.abilities if a.cycleTime > 0} limitedAbilities = [a for a in self.abilities if a.numShots > 0 and a.cycleTime > 0] if len(limitedAbilities) == 0: return {a.effectID: CycleInfo(a.cycleTime, 0, math.inf, False) for a in self.abilities if a.cycleTime > 0} validAbilities = [a for a in self.abilities if a.cycleTime > 0] if len(validAbilities) == 0: return {} mostLimitedAbility = min(limitedAbilities, key=lambda a: a.cycleTime * a.numShots) durationToRefuel = mostLimitedAbility.cycleTime * mostLimitedAbility.numShots # find out how many shots various abilities will do until reload, and how much time # "extra" cycle will last (None for no extra cycle) cyclesUntilRefuel = {mostLimitedAbility.effectID: (mostLimitedAbility.numShots, None)} for ability in (a for a in validAbilities if a is not mostLimitedAbility): fullCycles = int(floatUnerr(durationToRefuel / ability.cycleTime)) extraShotTime = floatUnerr(durationToRefuel - (fullCycles * ability.cycleTime)) if extraShotTime == 0: extraShotTime = None cyclesUntilRefuel[ability.effectID] = (fullCycles, extraShotTime) refuelTimes = {} for ability in validAbilities: spentShots, extraShotTime = cyclesUntilRefuel[ability.effectID] if extraShotTime is not None: spentShots += 1 refuelTimes[ability.effectID] = ability.getReloadTime(spentShots) refuelTime = max(refuelTimes.values()) cycleParams = {} for ability in validAbilities: regularShots, extraShotTime = cyclesUntilRefuel[ability.effectID] sequence = [] if extraShotTime is not None: if regularShots > 0: sequence.append(CycleInfo(ability.cycleTime, 0, regularShots, False)) sequence.append(CycleInfo(extraShotTime, refuelTime, 1, True)) else: regularShotsNonReload = regularShots - 1 if regularShotsNonReload > 0: sequence.append(CycleInfo(ability.cycleTime, 0, regularShotsNonReload, False)) sequence.append(CycleInfo(ability.cycleTime, refuelTime, 1, True)) cycleParams[ability.effectID] = CycleSequence(sequence, math.inf) return cycleParams @property def maxRange(self): attrs = ("shieldTransferRange", "powerTransferRange", "energyDestabilizationRange", "empFieldRange", "ecmBurstRange", "maxRange") for attr in attrs: maxRange = self.getModifiedItemAttr(attr, None) if maxRange is not None: return maxRange if self.charge is not None: delay = self.getModifiedChargeAttr("explosionDelay", None) speed = self.getModifiedChargeAttr("maxVelocity", None) if delay is not None and speed is not None: return delay / 1000.0 * speed # Had to add this to match the falloff property in modules.py # Fscking ship scanners. If you find any other falloff attributes, # Put them in the attrs tuple. @property def falloff(self): attrs = ("falloff", "falloffEffectiveness") for attr in attrs: falloff = self.getModifiedItemAttr(attr, None) if falloff is not None: return falloff @property def hp(self): hp = {} for (type, attr) in (('shield', 'shieldCapacity'), ('armor', 'armorHP'), ('hull', 'hp')): hp[type] = self.getModifiedItemAttr(attr) return hp @property def ehp(self): if self.__ehp is None: if self.owner is None or self.owner.damagePattern is None: ehp = self.hp else: ehp = self.owner.damagePattern.calculateEhp(self) self.__ehp = ehp return self.__ehp def calculateShieldRecharge(self): capacity = self.getModifiedItemAttr("shieldCapacity") rechargeRate = self.getModifiedItemAttr("shieldRechargeRate") / 1000.0 return 10 / rechargeRate * math.sqrt(0.25) * (1 - math.sqrt(0.25)) * capacity @validates("ID", "itemID", "chargeID", "amount") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "itemID" : lambda _val: isinstance(_val, int), "chargeID": lambda _val: isinstance(_val, int), "amount" : lambda _val: isinstance(_val, int) and _val >= -1, } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def clear(self): self.__baseVolley = None self.__miningyield = None self.__ehp = None self.itemModifiedAttributes.clear() self.chargeModifiedAttributes.clear() [x.clear() for x in self.abilities] def canBeApplied(self, projectedOnto): """Check if fighter can engage specific fitting""" item = self.item # Do not allow to apply offensive modules on ship with offensive module immunite, with few exceptions # (all effects which apply instant modification are exception, generally speaking) if item.offensive and projectedOnto.ship.getModifiedItemAttr("disallowOffensiveModifiers") == 1: offensiveNonModifiers = {"energyDestabilizationNew", "leech", "energyNosferatuFalloff", "energyNeutralizerFalloff"} if not offensiveNonModifiers.intersection(set(item.effects)): return False # If assistive modules are not allowed, do not let to apply these altogether if item.assistive and projectedOnto.ship.getModifiedItemAttr("disallowAssistance") == 1: return False else: return True def calculateModifiedAttributes(self, fit, runTime, forceProjected=False, forcedProjRange=DEFAULT): if not self.active: return if self.projected or forceProjected: context = "projected", "fighter" projected = True else: context = ("fighter",) projected = False projectionRange = self.projectionRange if forcedProjRange is DEFAULT else forcedProjRange for ability in self.abilities: if not ability.active: continue effect = ability.effect if effect.runTime == runTime and effect.activeByDefault and \ ((projected and effect.isType("projected")) or not projected): if ability.grouped: effect.handler(fit, self, context, projectionRange, effect=effect) else: i = 0 while i != self.amount: effect.handler(fit, self, context, projectionRange, effect=effect) i += 1 def __deepcopy__(self, memo): copy = Fighter(self.item) copy._amount = self._amount copy.active = self.active for ability in self.abilities: copyAbility = next(filter(lambda a: a.effectID == ability.effectID, copy.abilities)) copyAbility.active = ability.active copy.projectionRange = self.projectionRange return copy def rebase(self, item): amount = self._amount active = self.active abilityEffectStates = {a.effectID: a.active for a in self.abilities} projectionRange = self.projectionRange Fighter.__init__(self, item) self._amount = amount self.active = active for ability in self.abilities: if ability.effectID in abilityEffectStates: ability.active = abilityEffectStates[ability.effectID] self.projectionRange = projectionRange def fits(self, fit): # If ships doesn't support this type of fighter, don't add it if fit.getNumSlots(self.slot) == 0: return False return True def canDealDamage(self, ignoreState=False, ignoreAbilityState=False): if self.item is None: return False if not self.active and not ignoreState: return False for ability in self.abilities: if not ability.active and not ignoreAbilityState: continue if ability.effect.dealsDamage: return True return False ================================================ FILE: eos/saveddata/fighterAbility.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import reconstructor from eos.utils.stats import DmgTypes pyfalog = Logger(__name__) class FighterAbility: # We aren't able to get data on the charges that can be stored with fighters. So we hardcode that data here, keyed # with the fighter squadron role NUM_SHOTS_MAPPING = { 1: 0, # Superiority fighter / Attack 2: 12, # Light fighter / Attack 4: 6, # Heavy fighter / Heavy attack 5: 3, # Heavy fighter / Long range attack } # Same as above REARM_TIME_MAPPING = { 1: 0, # Superiority fighter / Attack 2: 4000, # Light fighter / Attack 4: 6000, # Heavy fighter / Heavy attack 5: 20000, # Heavy fighter / Long range attack } def __init__(self, effect): """Initialize from the program""" self.__effect = effect self.effectID = effect.ID if effect is not None else None self.active = False self.build() @reconstructor def init(self): """Initialize from the database""" self.__effect = None if self.effectID: self.__effect = next((x for x in self.fighter.item.effects.values() if x.ID == self.effectID), None) if self.__effect is None: pyfalog.error("Effect (id: {0}) does not exist", self.effectID) return self.build() def build(self): pass @property def effect(self): return self.__effect @property def name(self): return self.__effect.getattr('displayName') or self.__effect.name @property def attrPrefix(self): return self.__effect.getattr('prefix') @property def dealsDamage(self): attr = "{}DamageMultiplier".format(self.attrPrefix) return attr in self.fighter.itemModifiedAttributes or self.fighter.charge is not None @property def grouped(self): # is the ability applied per fighter (webs, returns False), or as a group (MWD, returned True) return self.__effect.getattr('grouped') @property def hasCharges(self): return self.__effect.getattr('hasCharges') @property def reloadTime(self): return self.getReloadTime() def getReloadTime(self, spentShots=None): if spentShots is not None: spentShots = max(self.numShots, spentShots) else: spentShots = self.numShots rearm_time = (self.REARM_TIME_MAPPING[self.fighter.getModifiedItemAttr("fighterSquadronRole")] or 0 if self.hasCharges else 0) return self.fighter.getModifiedItemAttr("fighterRefuelingTime") + rearm_time * spentShots @property def numShots(self): return self.NUM_SHOTS_MAPPING[self.fighter.getModifiedItemAttr("fighterSquadronRole")] or 0 if self.hasCharges else 0 @property def cycleTime(self): speed = self.fighter.getModifiedItemAttr("{}Duration".format(self.attrPrefix)) return speed def getVolley(self, targetProfile=None): if not self.dealsDamage or not self.active: return DmgTypes.default() if self.attrPrefix == "fighterAbilityLaunchBomb": em = self.fighter.getModifiedChargeAttr("emDamage", 0) therm = self.fighter.getModifiedChargeAttr("thermalDamage", 0) kin = self.fighter.getModifiedChargeAttr("kineticDamage", 0) exp = self.fighter.getModifiedChargeAttr("explosiveDamage", 0) else: em = self.fighter.getModifiedItemAttr("{}DamageEM".format(self.attrPrefix), 0) therm = self.fighter.getModifiedItemAttr("{}DamageTherm".format(self.attrPrefix), 0) kin = self.fighter.getModifiedItemAttr("{}DamageKin".format(self.attrPrefix), 0) exp = self.fighter.getModifiedItemAttr("{}DamageExp".format(self.attrPrefix), 0) dmgMult = self.fighter.amount * self.fighter.getModifiedItemAttr("{}DamageMultiplier".format(self.attrPrefix), 1) volley = DmgTypes(em=em * dmgMult, thermal=therm * dmgMult, kinetic=kin * dmgMult, explosive=exp * dmgMult) volley.profile = targetProfile return volley def getDps(self, targetProfile=None, cycleTimeOverride=None): volley = self.getVolley(targetProfile=targetProfile) if not volley: return DmgTypes.default() cycleTime = cycleTimeOverride if cycleTimeOverride is not None else self.cycleTime dpsFactor = 1 / (cycleTime / 1000) dps = volley * dpsFactor return dps def clear(self): pass ================================================ FILE: eos/saveddata/fit.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import datetime import time from copy import deepcopy from itertools import chain from math import ceil, log, sqrt from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db from eos import capSim from eos.calc import calculateLockTime, calculateMultiplier from eos.const import CalcType, FitSystemSecurity, FittingHardpoint, FittingModuleState, FittingSlot, ImplantLocation from eos.effectHandlerHelpers import ( HandledBoosterList, HandledDroneCargoList, HandledImplantList, HandledModuleList, HandledProjectedDroneList, HandledProjectedModList) from eos.saveddata.character import Character from eos.saveddata.citadel import Citadel from eos.saveddata.damagePattern import DamagePattern from eos.saveddata.module import Module from eos.saveddata.ship import Ship from eos.saveddata.targetProfile import TargetProfile from eos.utils.float import floatUnerr from eos.utils.stats import DmgTypes, RRTypes pyfalog = Logger(__name__) def _t(x): return x class FitLite: def __init__(self, id=None, name=None, shipID=None, shipName=None, shipNameShort=None): self.ID = id self.name = name self.shipID = shipID self.shipName = shipName self.shipNameShort = shipNameShort def __repr__(self): return 'FitLite(ID={})'.format(self.ID) class Fit: """Represents a fitting, with modules, ship, implants, etc.""" PEAK_RECHARGE = 0.25 def __init__(self, ship=None, name=""): """Initialize a fit from the program""" self.__ship = None self.__mode = None # use @mode.setter's to set __attr and IDs. This will set mode as well self.ship = ship if self.ship: self.ship.owner = self self.__modules = HandledModuleList() self.__drones = HandledDroneCargoList() self.__fighters = HandledDroneCargoList() self.__cargo = HandledDroneCargoList() self.__implants = HandledImplantList() self.__boosters = HandledBoosterList() # self.__projectedFits = {} self.__projectedModules = HandledProjectedModList() self.__projectedDrones = HandledProjectedDroneList() self.__projectedFighters = HandledProjectedDroneList() self.__character = None self.__owner = None self.projected = False self.name = name self.timestamp = time.time() self.created = None self.modified = None self.modeID = None self.build() @reconstructor def init(self): """Initialize a fit from the database and validate""" self.__ship = None self.__mode = None if self.shipID: item = eos.db.getItem(self.shipID) if item is None: pyfalog.error("Item (id: {0}) does not exist", self.shipID) return try: try: self.__ship = Ship(item, self) except ValueError: self.__ship = Citadel(item, self) # @todo extra attributes is now useless, however it set to be # the same as ship attributes for ease (so we don't have to # change all instances in source). Remove this at some point self.extraAttributes = self.__ship.itemModifiedAttributes except ValueError: pyfalog.error("Item (id: {0}) is not a Ship", self.shipID) return if self.modeID and self.__ship: item = eos.db.getItem(self.modeID) # Don't need to verify if it's a proper item, as validateModeItem assures this self.__mode = self.ship.validateModeItem(item, owner=self) else: self.__mode = self.ship.validateModeItem(None, owner=self) self.build() def build(self): self.__extraDrains = [] self.__ehp = None self.__weaponDpsMap = {} self.__weaponVolleyMap = {} self.__remoteRepMap = {} self.__minerYield = None self.__droneYield = None self.__minerDrain = None self.__droneDrain = None self.__droneDps = None self.__droneVolley = None self.__sustainableTank = None self.__effectiveSustainableTank = None self.__effectiveTank = None self.__calculated = False self.__capStable = None self.__capState = None self.__capUsed = None self.__capRecharge = None self.__savedCapSimData = {} self.__calculatedTargets = [] self.factorReload = False self.boostsFits = set() self.gangBoosts = None self.__ecmProjectedList = [] self.commandBonuses = {} # Reps received, as a list of (amount, cycle time in seconds) self._hullRr = [] self._armorRr = [] self._armorRrPreSpool = [] self._armorRrFullSpool = [] self._shieldRr = [] def clearFactorReloadDependentData(self): # Here we clear all data known to rely on cycle parameters # (which, in turn, relies on factor reload flag) self.__weaponDpsMap.clear() self.__droneDps = None self.__remoteRepMap.clear() self.__capStable = None self.__capState = None self.__capUsed = None self.__capRecharge = None self.__savedCapSimData.clear() # Ancillary tank modules affect this self.__sustainableTank = None self.__effectiveSustainableTank = None @property def targetProfile(self): if self.__userTargetProfile is not None: return self.__userTargetProfile if self.__builtinTargetProfileID is not None: return TargetProfile.getBuiltinById(self.__builtinTargetProfileID) return None @targetProfile.setter def targetProfile(self, targetProfile): if targetProfile is None: self.__userTargetProfile = None self.__builtinTargetProfileID = None elif targetProfile.builtin: self.__userTargetProfile = None self.__builtinTargetProfileID = targetProfile.ID else: self.__userTargetProfile = targetProfile self.__builtinTargetProfileID = None self.__weaponDpsMap = {} self.__weaponVolleyMap = {} self.__droneDps = None self.__droneVolley = None @property def damagePattern(self): if self.__userDamagePattern is not None: return self.__userDamagePattern if self.__builtinDamagePatternID is not None: pattern = DamagePattern.getBuiltinById(self.__builtinDamagePatternID) if pattern is not None: return pattern return DamagePattern.getDefaultBuiltin() @damagePattern.setter def damagePattern(self, damagePattern): if damagePattern is None: self.__userDamagePattern = None self.__builtinDamagePatternID = None elif damagePattern.builtin: self.__userDamagePattern = None self.__builtinDamagePatternID = damagePattern.ID else: self.__userDamagePattern = damagePattern self.__builtinDamagePatternID = None self.__ehp = None self.__effectiveTank = None @property def isInvalid(self): return self.__ship is None @property def mode(self): return self.__mode @mode.setter def mode(self, mode): if self.__mode is not None: self.__mode.owner = None self.__mode = mode self.modeID = mode.item.ID if mode is not None else None if mode is not None: mode.owner = self @property def modifiedCoalesce(self): """ This is a property that should get whichever date is available for the fit. @todo: migrate old timestamp data and ensure created / modified are set in database to get rid of this """ return self.modified or self.created or datetime.datetime.fromtimestamp(self.timestamp) @property def character(self): return self.__character if self.__character is not None else Character.getAll0() @character.setter def character(self, char): self.__character = char @property def calculated(self): return self.__calculated @calculated.setter def calculated(self, bool): # todo: brief explaination hwo this works self.__calculated = bool @property def ship(self): return self.__ship @ship.setter def ship(self, ship): if self.__ship is not None: self.__ship.owner = None self.__ship = ship self.shipID = ship.item.ID if ship is not None else None if ship is not None: ship.owner = self # set mode of new ship self.mode = self.ship.validateModeItem(None, owner=self) if ship is not None else None # set fit attributes the same as ship self.extraAttributes = self.ship.itemModifiedAttributes @property def isStructure(self): return isinstance(self.ship, Citadel) @property def drones(self): return self.__drones @property def fighters(self): return self.__fighters @property def cargo(self): return self.__cargo @property def modules(self): return self.__modules @property def implants(self): return self.__implants @property def boosters(self): return self.__boosters @property def projectedModules(self): return self.__projectedModules @property def projectedFits(self): # only in extreme edge cases will the fit be invalid, but to be sure do # not return them. return [fit for fit in list(self.projectedFitDict.values()) if not fit.isInvalid] @property def commandFits(self): return [fit for fit in list(self.commandFitDict.values()) if not fit.isInvalid] def getProjectionInfo(self, fitID): return self.projectedOnto.get(fitID, None) def getCommandInfo(self, fitID): return self.boostedOnto.get(fitID, None) @property def projectedDrones(self): return self.__projectedDrones @property def projectedFighters(self): return self.__projectedFighters def getWeaponDps(self, spoolOptions=None): if spoolOptions not in self.__weaponDpsMap: self.calculateWeaponDmgStats(spoolOptions) return self.__weaponDpsMap[spoolOptions] def getWeaponVolley(self, spoolOptions=None): if spoolOptions not in self.__weaponVolleyMap: self.calculateWeaponDmgStats(spoolOptions) return self.__weaponVolleyMap[spoolOptions] def getDroneDps(self): if self.__droneDps is None: self.calculateDroneDmgStats() return self.__droneDps def getDroneVolley(self): if self.__droneVolley is None: self.calculateDroneDmgStats() return self.__droneVolley def getTotalDps(self, spoolOptions=None): return self.getDroneDps() + self.getWeaponDps(spoolOptions=spoolOptions) def getTotalVolley(self, spoolOptions=None): return self.getDroneVolley() + self.getWeaponVolley(spoolOptions=spoolOptions) @property def minerYield(self): if self.__minerYield is None: self.calculatemining() return self.__minerYield @property def minerDrain(self): if self.__minerDrain is None: self.calculatemining() return self.__minerDrain @property def droneYield(self): if self.__droneYield is None: self.calculatemining() return self.__droneYield @property def droneDrain(self): if self.__droneDrain is None: self.calculatemining() return self.__droneDrain @property def totalYield(self): return self.droneYield + self.minerYield @property def totalDrain(self): return self.droneDrain + self.minerDrain @property def maxTargets(self): maxTargets = min(self.extraAttributes["maxTargetsLockedFromSkills"], self.ship.getModifiedItemAttr("maxLockedTargets")) return ceil(floatUnerr(maxTargets)) @property def maxTargetRange(self): return self.ship.getModifiedItemAttr("maxTargetRange") @property def scanStrength(self): return max([self.ship.getModifiedItemAttr("scan%sStrength" % scanType) for scanType in ("Magnetometric", "Ladar", "Radar", "Gravimetric")]) @property def scanType(self): maxStr = -1 type_ = None for scanType in (_t("Magnetometric"), _t("Ladar"), _t("Radar"), _t("Gravimetric")): currStr = self.ship.getModifiedItemAttr("scan%sStrength" % scanType) if currStr > maxStr: maxStr = currStr type_ = scanType elif currStr == maxStr: type_ = _t("Multispectral") return type_ @property def jamChance(self): sensors = self.scanStrength retainLockChance = 1 for jamStr in self.__ecmProjectedList: retainLockChance *= 1 - min(1, jamStr / sensors) return (1 - retainLockChance) * 100 @property def maxSpeed(self): speedLimit = self.ship.getModifiedItemAttr("speedLimit") if speedLimit and self.ship.getModifiedItemAttr("maxVelocity") > speedLimit: return speedLimit return self.ship.getModifiedItemAttr("maxVelocity") @property def alignTime(self): agility = self.ship.getModifiedItemAttr("agility") or 0 mass = self.ship.getModifiedItemAttr("mass") return -log(0.25) * agility * mass / 1000000 @property def implantSource(self): return self.implantLocation @implantSource.setter def implantSource(self, source): self.implantLocation = source @property def appliedImplants(self): if self.implantLocation == ImplantLocation.CHARACTER: return self.character.implants else: return self.implants @validates("ID", "ownerID", "shipID") def validator(self, key, val): map = { "ID": lambda _val: isinstance(_val, int), "ownerID": lambda _val: isinstance(_val, int) or _val is None, "shipID": lambda _val: isinstance(_val, int) or _val is None } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def canFit(self, item): # Whereas Module.fits() deals with current state of the fit in order to determine if somethign fits (for example maxGroupFitted which can be modified by effects), # this function should be used against Items to see if the item is even allowed on the fit with rules that don't change fitsOnType = set() fitsOnGroup = set() shipType = item.attributes.get("fitsToShipType", None) if shipType is not None: fitsOnType.add(shipType.value) fitsOnType.update([item.attributes[attr].value for attr in item.attributes if attr.startswith("canFitShipType")]) fitsOnGroup.update([item.attributes[attr].value for attr in item.attributes if attr.startswith("canFitShipGroup")]) if (len(fitsOnGroup) > 0 or len(fitsOnType) > 0) \ and self.ship.item.group.ID not in fitsOnGroup \ and self.ship.item.ID not in fitsOnType: return False # Citadel modules are now under a new category, so we can check this to ensure only structure modules can fit on a citadel if isinstance(self.ship, Citadel) is not item.isStandup: return False return True def clear(self, projected=False, command=False): self.__effectiveTank = None self.__weaponDpsMap = {} self.__weaponVolleyMap = {} self.__remoteRepMap = {} self.__minerYield = None self.__droneYield = None self.__minerDrain = None self.__droneDrain = None self.__effectiveSustainableTank = None self.__sustainableTank = None self.__droneDps = None self.__droneVolley = None self.__ehp = None self.__calculated = False self.__capStable = None self.__capState = None self.__capUsed = None self.__capRecharge = None self.__savedCapSimData.clear() self.__ecmProjectedList = [] # self.commandBonuses = {} del self.__calculatedTargets[:] del self.__extraDrains[:] if self.ship: self.ship.clear() c = chain( self.modules, self.drones, self.fighters, self.boosters, self.implants, self.projectedDrones, self.projectedModules, self.projectedFighters, (self.character, self.extraAttributes), ) for stuff in c: if stuff is not None and stuff != self: stuff.clear() self._hullRr.clear() self._armorRr.clear() self._armorRrPreSpool.clear() self._armorRrFullSpool.clear() self._shieldRr.clear() # If this is the active fit that we are clearing, not a projected fit, # then this will run and clear the projected ships and flag the next # iteration to skip this part to prevent recursion. # if not projected: # for stuff in self.projectedFits: # if stuff is not None and stuff != self: # stuff.clear(projected=True) # # if not command: # for stuff in self.commandFits: # if stuff is not None and stuff != self: # stuff.clear(command=True) # Methods to register and get the thing currently affecting the fit, # so we can correctly map "Affected By" def register(self, currModifier, origin=None): self.__modifier = currModifier self.__origin = origin if hasattr(currModifier, "itemModifiedAttributes"): if hasattr(currModifier.itemModifiedAttributes, "fit"): currModifier.itemModifiedAttributes.fit = origin or self if hasattr(currModifier, "chargeModifiedAttributes"): if hasattr(currModifier.chargeModifiedAttributes, "fit"): currModifier.chargeModifiedAttributes.fit = origin or self def getModifier(self): return self.__modifier def getOrigin(self): return self.__origin def addCommandBonus(self, warfareBuffID, value, module, effect, runTime="normal"): # oh fuck this is so janky # @todo should we pass in min/max to this function, or is abs okay? # (abs is old method, ccp now provides the aggregate function in their data) if warfareBuffID not in self.commandBonuses or abs(self.commandBonuses[warfareBuffID][1]) < abs(value): self.commandBonuses[warfareBuffID] = (runTime, value, module, effect) def addProjectedEcm(self, strength): self.__ecmProjectedList.append(strength) def __runCommandBoosts(self, runTime="normal"): pyfalog.debug("Applying gang boosts for {0}", repr(self)) for warfareBuffID in list(self.commandBonuses.keys()): # Unpack all data required to run effect properly effect_runTime, value, thing, effect = self.commandBonuses[warfareBuffID] if runTime != effect_runTime: continue # This should always be a gang effect, otherwise it wouldn't be added to commandBonuses if effect.isType("gang"): self.register(thing) if warfareBuffID == 10: # Shield Burst: Shield Harmonizing: Shield Resistance for damageType in ("Em", "Explosive", "Thermal", "Kinetic"): self.ship.boostItemAttr("shield%sDamageResonance" % damageType, value, stackingPenalties=True) elif warfareBuffID == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems") or mod.item.requiresSkill("Capital Shield Emission Systems"), "capacitorNeed", value) self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Shield Emission Systems") or mod.item.requiresSkill("Capital Shield Emission Systems"), "duration", value) elif warfareBuffID == 12: # Shield Burst: Shield Extension: Shield HP self.ship.boostItemAttr("shieldCapacity", value) elif warfareBuffID == 13: # Armor Burst: Armor Energizing: Armor Resistance for damageType in ("Em", "Thermal", "Explosive", "Kinetic"): self.ship.boostItemAttr("armor%sDamageResonance" % damageType, value, stackingPenalties=True) elif warfareBuffID == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Remote Armor Repair Systems"), "capacitorNeed", value) self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Remote Armor Repair Systems"), "duration", value) elif warfareBuffID == 15: # Armor Burst: Armor Reinforcement: Armor HP self.ship.boostItemAttr("armorHP", value) elif warfareBuffID == 16: # Information Burst: Sensor Optimization: Scan Resolution self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) elif warfareBuffID == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength groups = ("ECM", "Sensor Dampener", "Weapon Disruptor", "Target Painter") self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "falloffEffectiveness", value, stackingPenalties=True) for scanType in ("Magnetometric", "Radar", "Ladar", "Gravimetric"): self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "ECM", "scan%sStrengthBonus" % scanType, value, stackingPenalties=True) for attr in ("missileVelocityBonus", "explosionDelayBonus", "aoeVelocityBonus", "falloffBonus", "maxRangeBonus", "aoeCloudSizeBonus", "trackingSpeedBonus"): self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Weapon Disruptor", attr, value) for attr in ("maxTargetRangeBonus", "scanResolutionBonus"): self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Sensor Dampener", attr, value) self.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter", "signatureRadiusBonus", value, stackingPenalties=True) elif warfareBuffID == 18: # Information Burst: Electronic Hardening: Scan Strength for scanType in ("Gravimetric", "Radar", "Ladar", "Magnetometric"): self.ship.boostItemAttr("scan%sStrength" % scanType, value, stackingPenalties=True) elif warfareBuffID == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance self.ship.boostItemAttr("sensorDampenerResistance", value) self.ship.boostItemAttr("weaponDisruptionResistance", value) elif warfareBuffID == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) elif warfareBuffID == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range groups = ("Stasis Web", "Warp Scrambler") self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) elif warfareBuffID == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner") or mod.item.requiresSkill("High Speed Maneuvering"), "speedFactor", value, stackingPenalties=True) elif warfareBuffID == 23: # Mining Burst: Mining Laser Field Enhancement: Mining Range self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "maxRange", value, stackingPenalties=True) elif warfareBuffID == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "capacitorNeed", value, stackingPenalties=True) self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting"), "duration", value, stackingPenalties=True) elif warfareBuffID == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility self.modules.filteredChargeBoost(lambda mod: mod.item.requiresSkill("Mining"), "crystalVolatilityChance", value, stackingPenalties=True) elif warfareBuffID == 26: # Information Burst: Sensor Optimization: Targeting Range self.ship.boostItemAttr("maxTargetRange", value, stackingPenalties=True) elif warfareBuffID == 60: # Skirmish Burst: Evasive Maneuvers: Agility self.ship.boostItemAttr("agility", value, stackingPenalties=True) # Titan effects elif warfareBuffID == 39: # Avatar Effect Generator : Capacitor Recharge bonus self.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True) elif warfareBuffID == 40: # Avatar Effect Generator : Kinetic resistance bonus for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "kineticDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 41: # Avatar Effect Generator : EM resistance penalty for attr in ("armorEmDamageResonance", "shieldEmDamageResonance", "emDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 42: # Erebus Effect Generator : Armor HP bonus self.ship.boostItemAttr("armorHP", value) elif warfareBuffID == 43: # Erebus Effect Generator : Explosive resistance bonus for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "explosiveDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 44: # Erebus Effect Generator : Thermal resistance penalty for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "thermalDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 45: # Ragnarok Effect Generator : Signature Radius bonus self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) elif warfareBuffID == 46: # Ragnarok Effect Generator : Thermal resistance bonus for attr in ("armorThermalDamageResonance", "shieldThermalDamageResonance", "thermalDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 47: # Ragnarok Effect Generator : Explosive resistance penaly for attr in ("armorExplosiveDamageResonance", "shieldExplosiveDamageResonance", "explosiveDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 48: # Leviathan Effect Generator : Shield HP bonus self.ship.boostItemAttr("shieldCapacity", value) elif warfareBuffID == 49: # Leviathan Effect Generator : EM resistance bonus for attr in ("armorEmDamageResonance", "shieldEmDamageResonance", "emDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 50: # Leviathan Effect Generator : Kinetic resistance penalty for attr in ("armorKineticDamageResonance", "shieldKineticDamageResonance", "kineticDamageResonance"): self.ship.boostItemAttr(attr, value, stackingPenalties=True) elif warfareBuffID == 51: # Avatar Effect Generator : Velocity penalty self.ship.boostItemAttr("maxVelocity", value, stackingPenalties=True) elif warfareBuffID == 52: # Erebus Effect Generator : Shield RR penalty self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Emission Systems"), "shieldBonus", value, stackingPenalties=True) elif warfareBuffID == 53: # Leviathan Effect Generator : Armor RR penalty self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), "armorDamageAmount", value, stackingPenalties=True) elif warfareBuffID == 54: # Ragnarok Effect Generator : Laser and Hybrid Optimal penalty groups = ("Energy Weapon", "Hybrid Weapon") self.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups, "maxRange", value, stackingPenalties=True) # Localized environment effects elif warfareBuffID == 79: # AOE_Beacon_bioluminescence_cloud self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "signatureRadius", value, stackingPenalties=True) elif warfareBuffID == 80: # AOE_Beacon_caustic_cloud_inertia self.ship.boostItemAttr("agility", value, stackingPenalties=True) elif warfareBuffID == 81: # AOE_Beacon_caustic_cloud_velocity self.ship.boostItemAttr("maxVelocity", value, stackingPenalties=True) elif warfareBuffID == 88: # AOE_Beacon_filament_cloud_shield_booster_shield_bonus self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"), "shieldBonus", value, stackingPenalties=True) elif warfareBuffID == 89: # AOE_Beacon_filament_cloud_shield_booster_duration self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"), "duration", value, stackingPenalties=True) # Abyssal Weather Effects elif warfareBuffID == 90: # Weather_electric_storm_EM_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}EmDamageResonance".format(tankType), value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "{}EmDamageResonance".format(tankType), value) self.ship.boostItemAttr("emDamageResonance", value) # for hull self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "emDamageResonance", value) #for hull elif warfareBuffID == 92: # Weather_electric_storm_capacitor_recharge_bonus self.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True) elif warfareBuffID == 93: # Weather_xenon_gas_explosive_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}ExplosiveDamageResonance".format(tankType), value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "{}ExplosiveDamageResonance".format(tankType), value) self.ship.boostItemAttr("explosiveDamageResonance", value) # for hull self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "explosiveDamageResonance", value) # for hull elif warfareBuffID == 94: # Weather_xenon_gas_shield_hp_bonus self.ship.boostItemAttr("shieldCapacity", value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "shieldCapacity", value) elif warfareBuffID == 95: # Weather_infernal_thermal_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}ThermalDamageResonance".format(tankType), value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "{}ThermalDamageResonance".format(tankType), value) self.ship.boostItemAttr("thermalDamageResonance", value) # for hull self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "thermalDamageResonance", value) # for hull elif warfareBuffID == 96: # Weather_infernal_armor_hp_bonus self.ship.boostItemAttr("armorHP", value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "armorHP", value) elif warfareBuffID == 97: # Weather_darkness_turret_range_penalty self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), "maxRange", value, stackingPenalties=True) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "maxRange", value, stackingPenalties=True) self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), "falloff", value, stackingPenalties=True) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "falloff", value, stackingPenalties=True) elif warfareBuffID == 98: # Weather_darkness_velocity_bonus self.ship.boostItemAttr("maxVelocity", value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "maxVelocity", value) elif warfareBuffID == 99: # Weather_caustic_toxin_kinetic_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}KineticDamageResonance".format(tankType), value) self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "{}KineticDamageResonance".format(tankType), value) self.ship.boostItemAttr("kineticDamageResonance", value) # for hull self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "kineticDamageResonance", value) # for hull elif warfareBuffID == 100: # Weather_caustic_toxin_scan_resolution_bonus self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) elif warfareBuffID == 2405: # Insurgency Suppression Bonus: Interdiction Range self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Navigation"), "maxRange", value, stackingPenalties=True) self.modules.filteredItemBoost( lambda mod: mod.item.group.name == "Stasis Web", "maxRange", value, stackingPenalties=True) # Sov upgrades buffs elif warfareBuffID == 2433: # Sov System Modifier Shield HP Bonus self.ship.boostItemAttr("shieldCapacity", value) elif warfareBuffID == 2434: # Sov System Modifier Capacitor Capacity Bonus self.ship.boostItemAttr("capacitorCapacity", value) elif warfareBuffID == 2435: # Sov System Modifier Armor HP Bonus self.ship.boostItemAttr("armorHP", value) elif warfareBuffID == 2436: # Sov System Modifier Overheating Bonus - Includes Ewar for attr in ( 'overloadDurationBonus', 'overloadRofBonus', 'overloadSelfDurationBonus', 'overloadHardeningBonus', 'overloadDamageModifier', 'overloadRangeBonus', 'overloadSpeedFactorBonus', 'overloadECMStrengthBonus', 'overloadECCMStrenghtBonus', 'overloadArmorDamageAmount', 'overloadShieldBonus', 'overloadTrackingModuleStrengthBonus', 'overloadSensorModuleStrengthBonus', 'overloadPainterStrengthBonus', ): self.modules.filteredItemBoost(lambda mod: attr in mod.itemModifiedAttributes, attr, value) elif warfareBuffID == 2437: # Sov System Modifier Capacitor Recharge Bonus self.ship.boostItemAttr("rechargeRate", value) elif warfareBuffID == 2438: # Sov System Modifier Targeting and DScan Range Bonus self.ship.boostItemAttr("maxTargetRange", value) self.ship.boostItemAttr("maxDirectionalScanRange", value) elif warfareBuffID == 2439: # Sov System Modifier Scan Resolution Bonus self.ship.boostItemAttr("scanResolution", value) elif warfareBuffID == 2440: # Sov System Modifier Warp Speed Addition self.ship.increaseItemAttr('warpSpeedMultiplier', value) elif warfareBuffID == 2441: # Sov System Modifier Shield Booster Bonus self.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Capital Shield Operation")), "shieldBonus", value, stackingPenalties=True) elif warfareBuffID == 2442: # Sov System Modifier Armor Repairer Bonus self.modules.filteredItemBoost( lambda mod: (mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Repair Systems")), "armorDamageAmount", value, stackingPenalties=True) elif warfareBuffID == 2464: # Expedition Burst: Probe Strength self.modules.filteredItemBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'expeditionCommandBurstProbeStrengthBonusCharID', value, stackingPenalties=True) elif warfareBuffID == 2465: # Expedition Burst: Directional Scanner, Hacking and Salvager Range self.ship.boostItemAttr("maxDirectionalScanRange", value) self.modules.filteredItemBoost( lambda mod: mod.item.group.name in ("Data Miners", "Salvager"), "maxRange", value, stackingPenalties=True) elif warfareBuffID == 2466: # Expedition Burst: Maximum Scan Deviation Modifier self.modules.filteredItemBoost( lambda mod: mod.charge.requiresSkill('Astrometrics'), 'expeditionCommandBurstProbeDeviationBonusCharID', value, stackingPenalties=True) elif warfareBuffID == 2468: # Expedition Burst: Virus Coherence self.modules.filteredItemIncrease( lambda mod: mod.item.group.name == "Data Miners", "virusCoherence", value) elif warfareBuffID == 2474: # Mining burst charges self.ship.forceItemAttr("miningScannerUpgrade", value) elif warfareBuffID == 2481: # Expedition Burst: Salvager duration bonus self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Salvaging"), "duration", value) elif warfareBuffID == 2516: # Mining Burst: Mining Crit Chance self.modules.filteredItemBoost( lambda mod: mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting"), "miningCritChance", value) elif warfareBuffID == 2517: # Mining Burst: Mining Residue Chance Reduction self.modules.filteredItemBoost( lambda mod: ( mod.item.requiresSkill("Mining") or mod.item.requiresSkill("Ice Harvesting") or mod.item.requiresSkill("Gas Cloud Harvesting")), "miningWasteProbability", value, stackingPenalties=True) elif warfareBuffID == 2534: # Triglavian System Effect - Maximum Locked Targets Percentage self.ship.boostItemAttr("maxLockedTargets", value) elif warfareBuffID == 2535: # Triglavian System Effect - Warp Speed Multiplier Percentage self.ship.boostItemAttr("warpSpeedMultiplier", value, stackingPenalties=True) elif warfareBuffID == 2538: # Triglavian System Effect - Remote Armor Repair Percentage self.modules.filteredItemBoost( lambda mod: ( mod.item.requiresSkill("Remote Armor Repair Systems") or mod.item.requiresSkill("Capital Remote Armor Repair Systems")), "armorDamageAmount", value, stackingPenalties=True) elif warfareBuffID == 2539: # Triglavian System Effect - Remote Shield Boost Percentage self.modules.filteredItemBoost( lambda mod: ( mod.item.requiresSkill("Shield Emission Systems") or mod.item.requiresSkill("Capital Shield Emission Systems")), "shieldBonus", value, stackingPenalties=True) del self.commandBonuses[warfareBuffID] def __resetDependentCalcs(self): self.calculated = False for value in list(self.projectedOnto.values()): if value.victim_fit: # removing a self-projected fit causes victim fit to be None. @todo: look into why. :3 value.victim_fit.calculated = False def calculateModifiedAttributes(self, targetFit=None, type=CalcType.LOCAL): """ The fit calculation function. It should be noted that this is a recursive function - if the local fit has projected fits, this function will be called for those projected fits to be calculated. Args: targetFit: If this is set, signals that we are currently calculating a remote fit (projected or command) that should apply it's remote effects to the targetFit. If None, signals that we are currently calcing the local fit type: The type of calculation our current iteration is in. This helps us determine the interactions between fits that rely on others for proper calculations """ pyfalog.info("Starting fit calculation on: {0}, calc: {1}", repr(self), CalcType(type).name) # If we are projecting this fit onto another one, collect the projection info for later use # We also deal with self-projection here by setting self as a copy (to get a new fit object) to apply onto original fit # First and foremost, if we're looking at a local calc, reset the calculated state of fits that this fit affects # Thankfully, due to the way projection mechanics currently work, we don't have to traverse down a projection # tree to (resetting the first degree of projection will suffice) if targetFit is None: # This resets all fits that local projects onto, allowing them to recalc when loaded self.__resetDependentCalcs() # For fits that are under local's Command, we do the same thing for value in list(self.boostedOnto.values()): # apparently this is a thing that happens when removing a command fit from a fit and then switching to # that command fit. Same as projected clears, figure out why. if value.boosted_fit: value.boosted_fit.__resetDependentCalcs() if targetFit and type == CalcType.PROJECTED: pyfalog.debug("Calculating projections from {0} to target {1}", repr(self), repr(targetFit)) projectionInfo = self.getProjectionInfo(targetFit.ID) # Start applying any command fits that we may have. # We run the command calculations first so that they can calculate fully and store the command effects on the # target fit to be used later on in the calculation. This does not apply when we're already calculating a # command fit. if type != CalcType.COMMAND and self.commandFits and not self.__calculated: for fit in self.commandFits: commandInfo = fit.getCommandInfo(self.ID) # Continue loop if we're trying to apply ourselves or if this fit isn't active if not commandInfo.active or self == commandInfo.booster_fit: continue commandInfo.booster_fit.calculateModifiedAttributes(self, CalcType.COMMAND) # If we're not explicitly asked to project fit onto something, # set self as target fit if targetFit is None: targetFit = self # If fit is calculated and we have nothing to do here, get out # A note on why we only do this for local fits. There may be # gains that we can do here after some evaluation, but right # now we need the projected and command fits to continue in # this function even if they are already calculated, since it # is during those calculations that they apply their effect # to the target fits. todo: We could probably skip local fit # calculations if calculated, and instead to projections and # command stuffs. ninja edit: this is probably already being # done with the calculated conditional in the calc loop if self.__calculated and type == CalcType.LOCAL: pyfalog.debug("Fit has already been calculated and is local, returning: {0}", self) return if not self.__calculated: pyfalog.info("Fit is not yet calculated; will be running local calcs for {}".format(repr(self))) self.clear() # Loop through our run times here. These determine which effects are run in which order. for runTime in ("early", "normal", "late"): # pyfalog.debug("Run time: {0}", runTime) # Items that are unrestricted. These items are run on the local fit # first and then projected onto the target fit it one is designated u = [ (self.character, self.ship), self.drones, self.fighters, self.boosters, self.appliedImplants, self.modules ] if not self.isStructure else [ # Ensure a restricted set for citadels (self.character, self.ship), self.fighters, self.modules ] # Items that are restricted. These items are only run on the local # fit. They are NOT projected onto the target fit. # See issue 354 r = [(self.mode,), self.projectedDrones, self.projectedFighters, self.projectedModules] # chain unrestricted and restricted into one iterable c = chain.from_iterable(u + r) for item in c: # Registering the item about to affect the fit allows us to # track "Affected By" relations correctly if item is not None: # apply effects locally if this is first time running them on fit if not self.__calculated: self.register(item) item.calculateModifiedAttributes(self, runTime, False) # Run command effects against target fit. We only have to worry about modules if type == CalcType.COMMAND and item in self.modules: # Apply the gang boosts to target fit # targetFit.register(item, origin=self) item.calculateModifiedAttributes(targetFit, runTime, False, True) # pyfalog.debug("Command Bonuses: {}".format(self.commandBonuses)) # If we are calculating our local or projected fit and have command bonuses, apply them if type != CalcType.COMMAND and self.commandBonuses: self.__runCommandBoosts(runTime) # Run projection effects against target fit. Projection effects have been broken out of the main loop, # see GH issue #1081 if type == CalcType.PROJECTED and projectionInfo: self.__runProjectionEffects(runTime, targetFit, projectionInfo) # Recursive command ships (A <-> B) get marked as calculated, which means that they aren't recalced when changing # tabs. See GH issue 1193 if type == CalcType.COMMAND and targetFit in self.commandFits: pyfalog.debug("{} is in the command listing for COMMAND ({}), do not mark self as calculated (recursive)".format(repr(targetFit), repr(self))) else: self.__calculated = True # Only apply projected fits if fit it not projected itself. if type == CalcType.LOCAL: for fit in self.projectedFits: projInfo = fit.getProjectionInfo(self.ID) if projInfo.active: if fit == self: # If doing self projection, no need to run through the recursion process. Simply run the # projection effects on ourselves pyfalog.debug("Running self-projection for {0}", repr(self)) for runTime in ("early", "normal", "late"): self.__runProjectionEffects(runTime, self, projInfo) else: fit.calculateModifiedAttributes(self, type=CalcType.PROJECTED) pyfalog.debug('Done with fit calculation') def __runProjectionEffects(self, runTime, targetFit, projectionInfo): """ To support a simpler way of doing self projections (so that we don't have to make a copy of the fit and recalculate), this function was developed to be a common source of projected effect application. """ for item in chain(self.drones, self.fighters): if item is not None: # apply effects onto target fit x amount of times for _ in range(projectionInfo.amount): targetFit.register(item, origin=self) item.calculateModifiedAttributes( targetFit, runTime, forceProjected=True, forcedProjRange=0) for mod in self.modules: for _ in range(projectionInfo.amount): targetFit.register(mod, origin=self) mod.calculateModifiedAttributes( targetFit, runTime, forceProjected=True, forcedProjRange=projectionInfo.projectionRange) def fill(self): """ Fill this fit's module slots with enough dummy slots so that all slots are used. This is mostly for making the life of gui's easier. GUI's can call fill() and then stop caring about empty slots completely. todo: want to get rid of using this from the gui/commands, and instead make it a more built-in feature within recalc. Figure out a way to keep track of any changes to slot layout and call this automatically """ if self.ship is None: return {} # Look for any dummies of that type to remove posToRemove = {} for slotType in ( FittingSlot.LOW.value, FittingSlot.MED.value, FittingSlot.HIGH.value, FittingSlot.RIG.value, FittingSlot.SUBSYSTEM.value, FittingSlot.SERVICE.value): amount = self.getSlotsFree(slotType, True) if amount > 0: for _ in range(int(amount)): self.modules.append(Module.buildEmpty(slotType)) if amount < 0: for mod in self.modules: if mod.isEmpty and mod.slot == slotType: pos = self.modules.index(mod) posToRemove[pos] = slotType amount += 1 if amount == 0: break for pos in sorted(posToRemove, reverse=True): mod = self.modules[pos] self.modules.remove(mod) return posToRemove def unfill(self): for i in range(len(self.modules) - 1, -1, -1): mod = self.modules[i] if mod.isEmpty: del self.modules[i] def clearTail(self): tailPositions = {} for mod in reversed(self.modules): if not mod.isEmpty: break tailPositions[self.modules.index(mod)] = mod.slot for pos in sorted(tailPositions, reverse=True): self.modules.remove(self.modules[pos]) return tailPositions @property def modCount(self): x = 0 for i in range(len(self.modules) - 1, -1, -1): mod = self.modules[i] if not mod.isEmpty: x += 1 return x @staticmethod def getItemAttrSum(dict, attr): amount = 0 for mod in dict: add = mod.getModifiedItemAttr(attr) if add is not None: amount += add return amount @staticmethod def getItemAttrOnlineSum(dict, attr): amount = 0 for mod in dict: add = mod.getModifiedItemAttr(attr) if mod.state >= FittingModuleState.ONLINE else None if add is not None: amount += add return amount def getHardpointsUsed(self, type): amount = 0 for mod in self.modules: if mod.hardpoint is type and not mod.isEmpty: amount += 1 return amount def getSlotsUsed(self, type, countDummies=False): amount = 0 for mod in chain(self.modules, self.fighters): if mod.slot is type and (not getattr(mod, "isEmpty", False) or countDummies): if type in (FittingSlot.F_HEAVY, FittingSlot.F_SUPPORT, FittingSlot.F_LIGHT, FittingSlot.FS_HEAVY, FittingSlot.FS_LIGHT, FittingSlot.FS_SUPPORT) and not mod.active: continue amount += 1 return amount slots = { FittingSlot.LOW: "lowSlots", FittingSlot.MED: "medSlots", FittingSlot.HIGH: "hiSlots", FittingSlot.RIG: "rigSlots", FittingSlot.SUBSYSTEM: "maxSubSystems", FittingSlot.SERVICE: "serviceSlots", FittingSlot.F_LIGHT: "fighterLightSlots", FittingSlot.F_SUPPORT: "fighterSupportSlots", FittingSlot.F_HEAVY: "fighterHeavySlots", FittingSlot.FS_LIGHT: "fighterStandupLightSlots", FittingSlot.FS_SUPPORT: "fighterStandupSupportSlots", FittingSlot.FS_HEAVY: "fighterStandupHeavySlots", } def getSlotsFree(self, type, countDummies=False): if type in (FittingSlot.MODE, FittingSlot.SYSTEM): # These slots don't really exist, return default 0 return 0 slotsUsed = self.getSlotsUsed(type, countDummies) totalSlots = self.ship.getModifiedItemAttr(self.slots[type]) or 0 return int(totalSlots - slotsUsed) def getNumSlots(self, type): return self.ship.getModifiedItemAttr(self.slots[type]) or 0 def getHardpointsFree(self, type): if type == FittingHardpoint.NONE: return 1 elif type == FittingHardpoint.TURRET: return self.ship.getModifiedItemAttr('turretSlotsLeft') - self.getHardpointsUsed(FittingHardpoint.TURRET) elif type == FittingHardpoint.MISSILE: return self.ship.getModifiedItemAttr('launcherSlotsLeft') - self.getHardpointsUsed(FittingHardpoint.MISSILE) else: raise ValueError("%d is not a valid value for Hardpoint Enum", type) @property def calibrationUsed(self): return self.getItemAttrOnlineSum(self.modules, 'upgradeCost') @property def pgUsed(self): return round(self.getItemAttrOnlineSum(self.modules, "power"), 2) @property def cpuUsed(self): return round(self.getItemAttrOnlineSum(self.modules, "cpu"), 2) @property def droneBandwidthUsed(self): amount = 0 for d in self.drones: amount += d.getModifiedItemAttr("droneBandwidthUsed") * d.amountActive return amount @property def droneBayUsed(self): amount = 0 for d in self.drones: amount += d.item.attributes['volume'].value * d.amount return amount @property def fighterBayUsed(self): amount = 0 for f in self.fighters: amount += f.item.attributes['volume'].value * f.amount return amount @property def fighterTubesUsed(self): amount = 0 for f in self.fighters: if f.active: amount += 1 return amount @property def fighterTubesTotal(self): return self.ship.getModifiedItemAttr("fighterTubes") @property def cargoBayUsed(self): amount = 0 for c in self.cargo: amount += c.getModifiedItemAttr("volume") * c.amount return amount @property def activeDrones(self): amount = 0 for d in self.drones: amount += d.amountActive return amount @property def probeSize(self): """ Expresses how difficult a target is to probe down with scan probes """ sigRad = self.ship.getModifiedItemAttr("signatureRadius") sensorStr = float(self.scanStrength) probeSize = sigRad / sensorStr if sensorStr != 0 else None # http://www.eveonline.com/ingameboard.asp?a=topic&threadID=1532170&page=2#42 if probeSize is not None: # Probe size is capped at 1.08 probeSize = max(probeSize, 1.08) return probeSize @property def warpSpeed(self): base = self.ship.getModifiedItemAttr("baseWarpSpeed") or 1 multiplier = self.ship.getModifiedItemAttr("warpSpeedMultiplier") or 1 return base * multiplier @property def maxWarpDistance(self): capacity = self.ship.getModifiedItemAttr("capacitorCapacity") mass = self.ship.getModifiedItemAttr("mass") warpCapNeed = self.ship.getModifiedItemAttr("warpCapacitorNeed") if not warpCapNeed: return 0 return capacity / (mass * warpCapNeed) @property def capStable(self): if self.__capStable is None: self.simulateCap() return self.__capStable @property def capState(self): """ If the cap is stable, the capacitor state is the % at which it is stable. If the cap is unstable, this is the amount of time before it runs out """ if self.__capState is None: self.simulateCap() return self.__capState @property def capUsed(self): if self.__capUsed is None: self.simulateCap() return self.__capUsed @property def capRecharge(self): if self.__capRecharge is None: self.simulateCap() return self.__capRecharge @property def capDelta(self): return (self.__capRecharge or 0) - (self.__capUsed or 0) def calculateCapRecharge(self, percent=PEAK_RECHARGE, capacity=None, rechargeRate=None): if capacity is None: capacity = self.ship.getModifiedItemAttr("capacitorCapacity") if rechargeRate is None: rechargeRate = self.ship.getModifiedItemAttr("rechargeRate") / 1000.0 return 10 / rechargeRate * sqrt(percent) * (1 - sqrt(percent)) * capacity def calculateShieldRecharge(self, percent=PEAK_RECHARGE): capacity = self.ship.getModifiedItemAttr("shieldCapacity") rechargeRate = self.ship.getModifiedItemAttr("shieldRechargeRate") / 1000.0 return 10 / rechargeRate * sqrt(percent) * (1 - sqrt(percent)) * capacity def addDrain(self, src, cycleTime, capNeed, clipSize=0, reloadTime=0): """ Used for both cap drains and cap fills (fills have negative capNeed) """ energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = self.ship.getModifiedItemAttr("signatureRadius") # Signature reduction, uses the bomb formula as per CCP Larrikin if energyNeutralizerSignatureResolution: capNeed = capNeed * min(1, signatureRadius / energyNeutralizerSignatureResolution) if capNeed: self.__extraDrains.append((cycleTime, capNeed, clipSize, reloadTime)) def removeDrain(self, i): del self.__extraDrains[i] def iterDrains(self): return self.__extraDrains.__iter__() def __generateDrain(self): drains = [] capUsed = 0 capAdded = 0 for mod in self.activeModulesIter(): if (mod.getModifiedItemAttr("capacitorNeed") or 0) != 0: cycleTime = mod.rawCycleTime or 0 reactivationTime = mod.getModifiedItemAttr("moduleReactivationDelay") or 0 fullCycleTime = cycleTime + reactivationTime reloadTime = mod.reloadTime if fullCycleTime > 0: capNeed = mod.capUse if capNeed > 0: capUsed += capNeed else: capAdded -= capNeed # If this is a turret, don't stagger activations disableStagger = mod.hardpoint == FittingHardpoint.TURRET drains.append(( int(fullCycleTime), mod.getModifiedItemAttr("capacitorNeed") or 0, mod.numShots or 0, disableStagger, reloadTime, mod.item.group.name == 'Capacitor Booster')) for fullCycleTime, capNeed, clipSize, reloadTime in self.iterDrains(): drains.append(( int(fullCycleTime), capNeed, clipSize, # Stagger incoming effects for cap simulation False, reloadTime, False)) if capNeed > 0: capUsed += capNeed / (fullCycleTime / 1000.0) else: capAdded += -capNeed / (fullCycleTime / 1000.0) return drains, capUsed, capAdded def simulateCap(self): drains, self.__capUsed, self.__capRecharge = self.__generateDrain() self.__capRecharge += self.calculateCapRecharge() sim = self.__runCapSim(drains=drains) if sim is not None: capState = (sim.cap_stable_low + sim.cap_stable_high) / (2 * sim.capacitorCapacity) self.__capStable = capState > 0 self.__capState = min(100, capState * 100) if self.__capStable else sim.t / 1000.0 else: self.__capStable = True self.__capState = 100 def getCapSimData(self, startingCap): if startingCap not in self.__savedCapSimData: self.__runCapSim(startingCap=startingCap, tMax=3600, optimizeRepeats=False) return self.__savedCapSimData[startingCap] def __runCapSim(self, drains=None, startingCap=None, tMax=None, optimizeRepeats=True): if drains is None: drains, nil, nil = self.__generateDrain() if tMax is None: tMax = 6 * 60 * 60 * 1000 else: tMax *= 1000 if len(drains) > 0: sim = capSim.CapSimulator() sim.init(drains) sim.capacitorCapacity = self.ship.getModifiedItemAttr("capacitorCapacity") sim.capacitorRecharge = self.ship.getModifiedItemAttr("rechargeRate") sim.startingCapacity = startingCap = self.ship.getModifiedItemAttr("capacitorCapacity") if startingCap is None else startingCap sim.stagger = True sim.scale = False sim.t_max = tMax sim.reload = self.factorReload sim.optimize_repeats = optimizeRepeats sim.run() # We do not want to store partial results if not sim.result_optimized_repeats: self.__savedCapSimData[startingCap] = sim.saved_changes return sim else: self.__savedCapSimData[startingCap] = [] return None def getCapRegenGainFromMod(self, mod): """Return how much cap regen do we gain from having this module""" currentRegen = self.calculateCapRecharge() nomodRegen = self.calculateCapRecharge( capacity=self.ship.getModifiedItemAttrExtended("capacitorCapacity", ignoreAfflictors=[mod]), rechargeRate=self.ship.getModifiedItemAttrExtended("rechargeRate", ignoreAfflictors=[mod]) / 1000.0) return currentRegen - nomodRegen def getRemoteReps(self, spoolOptions=None): if spoolOptions not in self.__remoteRepMap: remoteReps = RRTypes(0, 0, 0, 0) for module in self.modules: remoteReps += module.getRemoteReps(spoolOptions=spoolOptions) for drone in self.drones: remoteReps += drone.getRemoteReps() self.__remoteRepMap[spoolOptions] = remoteReps return self.__remoteRepMap[spoolOptions] @property def hp(self): hp = {} for (type, attr) in (('shield', 'shieldCapacity'), ('armor', 'armorHP'), ('hull', 'hp')): hp[type] = self.ship.getModifiedItemAttr(attr) return hp @property def ehp(self): if self.__ehp is None: if self.damagePattern is None: ehp = self.hp else: ehp = self.damagePattern.calculateEhp(self.ship) self.__ehp = ehp return self.__ehp @property def tank(self): reps = { "passiveShield": self.calculateShieldRecharge(), "shieldRepair": self.extraAttributes["shieldRepair"] + self._getAppliedShieldRr(), "armorRepair": self.extraAttributes["armorRepair"] + self._getAppliedArmorRr(), "armorRepairPreSpool": self.extraAttributes["armorRepairPreSpool"] + self._getAppliedArmorPreSpoolRr(), "armorRepairFullSpool": self.extraAttributes["armorRepairFullSpool"] + self._getAppliedArmorFullSpoolRr(), "hullRepair": self.extraAttributes["hullRepair"] + self._getAppliedHullRr() } return reps @property def effectiveTank(self): if self.__effectiveTank is None: if self.damagePattern is None: ehps = self.tank else: ehps = self.damagePattern.calculateEffectiveTank(self, self.tank) self.__effectiveTank = ehps return self.__effectiveTank @property def sustainableTank(self): if self.__sustainableTank is None: self.calculateSustainableTank() return self.__sustainableTank @property def effectiveSustainableTank(self): if self.__effectiveSustainableTank is None: if self.damagePattern is None: tank = self.sustainableTank else: tank = self.damagePattern.calculateEffectiveTank(self, self.sustainableTank) self.__effectiveSustainableTank = tank return self.__effectiveSustainableTank def calculateSustainableTank(self): if self.__sustainableTank is None: sustainable = { "passiveShield": self.calculateShieldRecharge(), "shieldRepair": self.extraAttributes["shieldRepair"] + self._getAppliedShieldRr(), "armorRepair": self.extraAttributes["armorRepair"] + self._getAppliedArmorRr(), "armorRepairPreSpool": self.extraAttributes["armorRepairPreSpool"] + self._getAppliedArmorPreSpoolRr(), "armorRepairFullSpool": self.extraAttributes["armorRepairFullSpool"] + self._getAppliedArmorFullSpoolRr(), "hullRepair": self.extraAttributes["hullRepair"] + self._getAppliedHullRr() } if not self.capStable or self.factorReload: # Map a local repairer type to the attribute it uses groupAttrMap = { "Shield Booster": "shieldBonus", "Ancillary Shield Booster": "shieldBonus", "Armor Repair Unit": "armorDamageAmount", "Ancillary Armor Repairer": "armorDamageAmount", "Hull Repair Unit": "structureDamageAmount" } # Map local repairer type to tank type groupStoreMap = { "Shield Booster": "shieldRepair", "Ancillary Shield Booster": "shieldRepair", "Armor Repair Unit": "armorRepair", "Ancillary Armor Repairer": "armorRepair", "Hull Repair Unit": "hullRepair" } repairers = [] localAdjustment = {"shieldRepair": 0, "armorRepair": 0, "hullRepair": 0} capUsed = self.capUsed for tankType in localAdjustment: dict = self.extraAttributes.getAfflictions(tankType) if self in dict: for afflictor, operator, stackingGroup, preResAmount, postResAmount, used in dict[self]: if not used: continue if afflictor.projected: continue if afflictor.item.group.name not in groupAttrMap: continue usesCap = True try: if afflictor.capUse: capUsed -= afflictor.capUse else: usesCap = False except AttributeError: usesCap = False # Normal Repairers if usesCap and not afflictor.charge: cycleTime = afflictor.rawCycleTime amount = afflictor.getModifiedItemAttr(groupAttrMap[afflictor.item.group.name]) localAdjustment[tankType] -= amount / (cycleTime / 1000.0) repairers.append(afflictor) # Ancillary Armor reps etc elif usesCap and afflictor.charge: cycleTime = afflictor.rawCycleTime amount = afflictor.getModifiedItemAttr(groupAttrMap[afflictor.item.group.name]) if afflictor.charge.name == "Nanite Repair Paste": multiplier = afflictor.getModifiedItemAttr("chargedArmorDamageMultiplier") or 1 else: multiplier = 1 localAdjustment[tankType] -= amount * multiplier / (cycleTime / 1000.0) repairers.append(afflictor) # Ancillary Shield boosters etc elif not usesCap and afflictor.item.group.name in ("Ancillary Shield Booster", "Ancillary Remote Shield Booster"): cycleTime = afflictor.rawCycleTime amount = afflictor.getModifiedItemAttr(groupAttrMap[afflictor.item.group.name]) if self.factorReload and afflictor.charge: reloadtime = afflictor.reloadTime else: reloadtime = 0.0 offdutycycle = reloadtime / ((max(afflictor.numShots, 1) * cycleTime) + reloadtime) localAdjustment[tankType] -= amount * offdutycycle / (cycleTime / 1000.0) # Sort repairers by efficiency. We want to use the most efficient repairers first repairers.sort(key=lambda _mod: _mod.getModifiedItemAttr( groupAttrMap[_mod.item.group.name]) * (_mod.getModifiedItemAttr( "chargedArmorDamageMultiplier") or 1) / _mod.getModifiedItemAttr("capacitorNeed"), reverse=True) # Loop through every module until we're above peak recharge # Most efficient first, as we sorted earlier. # calculate how much the repper can rep stability & add to total totalPeakRecharge = self.capRecharge for afflictor in repairers: if capUsed > totalPeakRecharge: break if self.factorReload and afflictor.charge: reloadtime = afflictor.reloadTime else: reloadtime = 0.0 cycleTime = afflictor.rawCycleTime capPerSec = afflictor.capUse if capPerSec is not None and cycleTime is not None: # Check how much this repper can work sustainability = min(1, (totalPeakRecharge - capUsed) / capPerSec) amount = afflictor.getModifiedItemAttr(groupAttrMap[afflictor.item.group.name]) # Add the sustainable amount if not afflictor.charge: localAdjustment[groupStoreMap[afflictor.item.group.name]] += sustainability * amount / ( cycleTime / 1000.0) else: if afflictor.charge.name == "Nanite Repair Paste": multiplier = afflictor.getModifiedItemAttr("chargedArmorDamageMultiplier") or 1 else: multiplier = 1 ondutycycle = (max(afflictor.numShots, 1) * cycleTime) / ( (max(afflictor.numShots, 1) * cycleTime) + reloadtime) localAdjustment[groupStoreMap[ afflictor.item.group.name]] += sustainability * amount * ondutycycle * multiplier / ( cycleTime / 1000.0) capUsed += capPerSec sustainable["shieldRepair"] += localAdjustment["shieldRepair"] sustainable["armorRepair"] += localAdjustment["armorRepair"] sustainable["armorRepairPreSpool"] += localAdjustment["armorRepair"] sustainable["armorRepairFullSpool"] += localAdjustment["armorRepair"] sustainable["hullRepair"] += localAdjustment["hullRepair"] self.__sustainableTank = sustainable return self.__sustainableTank def calculateLockTime(self, radius): scanRes = self.ship.getModifiedItemAttr("scanResolution") if scanRes is not None and scanRes > 0: return calculateLockTime(srcScanRes=scanRes, tgtSigRadius=radius) else: return self.ship.getModifiedItemAttr("scanSpeed") / 1000.0 def calculatemining(self): minerYield = 0 minerDrain = 0 droneYield = 0 droneDrain = 0 for mod in self.modules: minerYield += mod.getMiningYPS() minerDrain += mod.getMiningDPS() for drone in self.drones: droneYield += drone.getMiningYPS() droneDrain += drone.getMiningDPS() self.__minerYield = minerYield self.__minerDrain = minerDrain self.__droneYield = droneYield self.__droneDrain = droneDrain def calculateWeaponDmgStats(self, spoolOptions): weaponVolley = DmgTypes.default() weaponDps = DmgTypes.default() for mod in self.modules: weaponVolley += mod.getVolley(spoolOptions=spoolOptions) weaponDps += mod.getDps(spoolOptions=spoolOptions) weaponVolley.profile = self.targetProfile weaponDps.profile = self.targetProfile self.__weaponVolleyMap[spoolOptions] = weaponVolley self.__weaponDpsMap[spoolOptions] = weaponDps def calculateDroneDmgStats(self): droneVolley = DmgTypes.default() droneDps = DmgTypes.default() for drone in self.drones: droneVolley += drone.getVolley() droneDps += drone.getDps() for fighter in self.fighters: droneVolley += fighter.getVolley() droneDps += fighter.getDps() droneVolley.profile = self.targetProfile droneDps.profile = self.targetProfile self.__droneDps = droneDps self.__droneVolley = droneVolley @property def fits(self): for mod in self.modules: if not mod.isEmpty and not mod.fits(self): return False return True def getReleaseLimitForDrone(self, item): if not item.isDrone: return 0 bw = round(self.ship.getModifiedItemAttr("droneBandwidth")) volume = round(item.attribsWithOverrides['volume'].value) return int(bw / volume) def getStoreLimitForDrone(self, item): if not item.isDrone: return 0 bayTotal = round(self.ship.getModifiedItemAttr("droneCapacity")) bayUsed = round(self.droneBayUsed) volume = item.attribsWithOverrides['volume'].value return int((bayTotal - bayUsed) / volume) def getSystemSecurity(self): secstatus = self.systemSecurity # Default to nullsec if secstatus is None: secstatus = FitSystemSecurity.NULLSEC return secstatus def getPilotSecurity(self, low_limit=-10, high_limit=5): secstatus = self.pilotSecurity # Not defined -> use character SS, with 0.0 fallback if it fails if secstatus is None: try: secstatus = self.character.secStatus except (SystemExit, KeyboardInterrupt): raise except: secstatus = 0 return max(low_limit, min(high_limit, secstatus)) def activeModulesIter(self): for mod in self.modules: if mod.state >= FittingModuleState.ACTIVE: yield mod def activeDronesIter(self): for drone in self.drones: if drone.amountActive > 0: yield drone def activeFightersIter(self): for fighter in self.fighters: if fighter.active: yield fighter def activeFighterAbilityIter(self): for fighter in self.activeFightersIter(): for ability in fighter.abilities: if ability.active: yield fighter, ability def getDampMultScanRes(self): damps = [] for mod in self.activeModulesIter(): for effectName in ('remoteSensorDampFalloff', 'structureModuleEffectRemoteSensorDampener'): if effectName in mod.item.effects: damps.append((mod.getModifiedItemAttr('scanResolutionBonus'), 'default')) if 'doomsdayAOEDamp' in mod.item.effects: damps.append((mod.getModifiedItemAttr('scanResolutionBonus'), 'default')) for drone in self.activeDronesIter(): if 'remoteSensorDampEntity' in drone.item.effects: damps.extend(drone.amountActive * ((drone.getModifiedItemAttr('scanResolutionBonus'), 'default'),)) mults = {} for strength, stackingGroup in damps: mults.setdefault(stackingGroup, []).append((1 + strength / 100, None)) return calculateMultiplier(mults) def _getAppliedHullRr(self): return self.__getAppliedRr(self._hullRr) def _getAppliedArmorRr(self): return self.__getAppliedRr(self._armorRr) def _getAppliedArmorPreSpoolRr(self): return self.__getAppliedRr(self._armorRrPreSpool) def _getAppliedArmorFullSpoolRr(self): return self.__getAppliedRr(self._armorRrFullSpool) def _getAppliedShieldRr(self): return self.__getAppliedRr(self._shieldRr) @staticmethod def __getAppliedRr(rrList): totalRaw = 0 for amount, cycleTime in rrList: # That's right, for considerations of RR diminishing returns cycle time is rounded this way totalRaw += amount / int(cycleTime) RR_ADDITION = 7000 RR_MULTIPLIER = 20 appliedRr = 0 for amount, cycleTime in rrList: rrps = amount / int(cycleTime) modified_rrps = RR_ADDITION + (rrps * RR_MULTIPLIER) rrps_mult = 1 - (((rrps + modified_rrps) / (totalRaw + modified_rrps)) - 1) ** 2 appliedRr += rrps_mult * amount / cycleTime return appliedRr def __deepcopy__(self, memo=None): fitCopy = Fit() # Character and owner are not copied fitCopy.character = self.__character fitCopy.owner = self.owner fitCopy.ship = deepcopy(self.ship) fitCopy.mode = deepcopy(self.mode) fitCopy.name = "%s copy" % self.name fitCopy.damagePattern = self.damagePattern fitCopy.targetProfile = self.targetProfile fitCopy.implantLocation = self.implantLocation fitCopy.systemSecurity = self.systemSecurity fitCopy.pilotSecurity = self.pilotSecurity fitCopy.notes = self.notes for i in self.modules: fitCopy.modules.appendIgnoreEmpty(deepcopy(i)) toCopy = ( "drones", "fighters", "cargo", "implants", "boosters", "projectedModules", "projectedDrones", "projectedFighters") for name in toCopy: orig = getattr(self, name) c = getattr(fitCopy, name) for i in orig: c.append(deepcopy(i)) # this bit is required -- see GH issue # 83 def forceUpdateSavedata(fit): eos.db.saveddata_session.flush() eos.db.saveddata_session.refresh(fit) for fit in self.commandFits: fitCopy.commandFitDict[fit.ID] = fit forceUpdateSavedata(fit) copyCommandInfo = fit.getCommandInfo(fitCopy.ID) originalCommandInfo = fit.getCommandInfo(self.ID) copyCommandInfo.active = originalCommandInfo.active forceUpdateSavedata(fit) for fit in self.projectedFits: fitCopy.projectedFitDict[fit.ID] = fit forceUpdateSavedata(fit) copyProjectionInfo = fit.getProjectionInfo(fitCopy.ID) originalProjectionInfo = fit.getProjectionInfo(self.ID) copyProjectionInfo.active = originalProjectionInfo.active copyProjectionInfo.amount = originalProjectionInfo.amount copyProjectionInfo.projectionRange = originalProjectionInfo.projectionRange forceUpdateSavedata(fit) return fitCopy def __repr__(self): return "Fit(ID={}, ship={}, name={}) at {}".format( self.ID, self.ship.item.name, self.name, hex(id(self)) ) def __str__(self): return "{} ({})".format( self.name, self.ship.item.name ) ================================================ FILE: eos/saveddata/implant.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import validates, reconstructor import eos.db from eos.effectHandlerHelpers import HandledItem from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut pyfalog = Logger(__name__) class Implant(HandledItem, ItemAttrShortcut): def __init__(self, item): self.__item = item if self.isInvalid: raise ValueError("Passed item is not an Implant") self.itemID = item.ID if item is not None else None self.active = True self.build() @reconstructor def init(self): self.__item = None if self.itemID: self.__item = eos.db.getItem(self.itemID) if self.__item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return if self.isInvalid: pyfalog.error("Item (id: {0}) is not an Implant", self.itemID) return self.build() def build(self): """ Build object. Assumes proper and valid item already set """ self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = self.__item.attributes self.__itemModifiedAttributes.overrides = self.__item.overrides self.__slot = self.__calculateSlot(self.__item) @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def isInvalid(self): return self.__item is None or self.__item.category.name != "Implant" @property def slot(self): return self.__slot @property def item(self): return self.__item @staticmethod def __calculateSlot(item): if "implantness" not in item.attributes: raise ValueError("Passed item is not an implant") return int(item.attributes["implantness"].value) def clear(self): self.itemModifiedAttributes.clear() def calculateModifiedAttributes(self, fit, runTime, forceProjected=False): if forceProjected: return if not self.active: return for effect in self.item.effects.values(): if effect.runTime == runTime and effect.isType("passive") and effect.activeByDefault: effect.handler(fit, self, ("implant",), None, effect=effect) @validates("fitID", "itemID", "active") def validator(self, key, val): map = { "fitID" : lambda _val: isinstance(_val, int), "itemID": lambda _val: isinstance(_val, int), "active": lambda _val: isinstance(_val, bool) } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def __deepcopy__(self, memo): copy = Implant(self.item) copy.active = self.active return copy def rebase(self, item): active = self.active Implant.__init__(self, item) self.active = active def __repr__(self): return "Implant(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) ================================================ FILE: eos/saveddata/implantSet.py ================================================ # =============================================================================== # Copyright (C) 2016 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from copy import deepcopy from eos.effectHandlerHelpers import HandledImplantList class ImplantSet: def __init__(self, name=None): self.name = name self.__implants = HandledImplantList() @property def implants(self): return self.__implants @classmethod def exportSets(cls, *sets): out = "# Exported from pyfa\n#\n" \ "# Values are in following format:\n" \ "# [Implant Set name]\n" \ "# [Implant name]\n" \ "# [Implant name]\n" \ "# ...\n\n" for set in sets: out += "[{}]\n".format(set.name) for implant in set.implants: out += "{}\n".format(implant.item.name) out += "\n" return out.strip() def __deepcopy__(self, memo): copy = ImplantSet(self.name) copy.name = "%s copy" % self.name orig = getattr(self, 'implants') c = getattr(copy, 'implants') for i in orig: c.append(deepcopy(i)) return copy ================================================ FILE: eos/saveddata/miscData.py ================================================ # =============================================================================== # Copyright (C) 2011 Anton Vorobyov # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from eos.eqBase import EqBase class MiscData(EqBase): def __init__(self, name, val=None): self.fieldName = name self.fieldValue = val ================================================ FILE: eos/saveddata/mode.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from eos.effectHandlerHelpers import HandledItem from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut class Mode(ItemAttrShortcut, HandledItem): def __init__(self, item, owner=None): if item.group.name != "Ship Modifiers": raise ValueError( 'Passed item "%s" (category: (%s)) is not a Ship Modifier' % (item.name, item.category.name)) self.owner = owner self.__item = item self.__itemModifiedAttributes = ModifiedAttributeDict() self.__itemModifiedAttributes.original = self.item.attributes self.__itemModifiedAttributes.overrides = self.item.overrides @property def item(self): return self.__item @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes # @todo: rework to fit only on t3 dessy def fits(self, fit): raise NotImplementedError() def clear(self): self.itemModifiedAttributes.clear() def calculateModifiedAttributes(self, fit, runTime, forceProjected=False): if self.item: for effect in self.item.effects.values(): if effect.runTime == runTime and effect.activeByDefault: effect.handler(fit, self, ("module",), None, effect=effect) def __deepcopy__(self, memo): copy = Mode(self.item) return copy def __repr__(self): return "Mode(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) ================================================ FILE: eos/saveddata/module.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math from logbook import Logger from sqlalchemy.orm import reconstructor, validates import eos.db from eos.const import FittingHardpoint, FittingModuleState, FittingSlot from eos.effectHandlerHelpers import HandledCharge, HandledItem from eos.modifiedAttributeDict import ChargeAttrShortcut, ItemAttrShortcut, ModifiedAttributeDict from eos.saveddata.citadel import Citadel from eos.saveddata.mutatedMixin import MutatedMixin, MutaError from eos.saveddata.mutator import MutatorModule from eos.utils.cycles import CycleInfo, CycleSequence from eos.utils.default import DEFAULT from eos.utils.float import floatUnerr from eos.utils.spoolSupport import calculateSpoolup, resolveSpoolOptions from eos.utils.stats import BreacherInfo, DmgTypes, RRTypes pyfalog = Logger(__name__) ProjectedMap = { FittingModuleState.OVERHEATED: FittingModuleState.ACTIVE, FittingModuleState.ACTIVE: FittingModuleState.OFFLINE, FittingModuleState.OFFLINE: FittingModuleState.ACTIVE, FittingModuleState.ONLINE: FittingModuleState.ACTIVE # Just in case } # Old state : New State LocalMap = { FittingModuleState.OVERHEATED: FittingModuleState.ACTIVE, FittingModuleState.ACTIVE: FittingModuleState.ONLINE, FittingModuleState.OFFLINE: FittingModuleState.ONLINE, FittingModuleState.ONLINE: FittingModuleState.ACTIVE } # For system effects. They should only ever be online or offline ProjectedSystem = { FittingModuleState.OFFLINE: FittingModuleState.ONLINE, FittingModuleState.ONLINE: FittingModuleState.OFFLINE } class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut, MutatedMixin): """An instance of this class represents a module together with its charge and modified attributes""" MINING_ATTRIBUTES = ("miningAmount",) SYSTEM_GROUPS = ( "Effect Beacon", "MassiveEnvironments", "Abyssal Hazards", "Non-Interactable Object", "Destructible Effect Beacon", "Sovereignty Hub System Effect Generator Upgrades") def __init__(self, item, baseItem=None, mutaplasmid=None): """Initialize a module from the program""" self.itemID = item.ID if item is not None else None self._item = item self._mutaInit(baseItem=baseItem, mutaplasmid=mutaplasmid) if item is not None and self.isInvalid: raise ValueError("Passed item is not a Module") self.__charge = None self.projected = False self.projectionRange = None self.state = FittingModuleState.ONLINE self.build() @reconstructor def init(self): """Initialize a module from the database and validate""" self._item = None self.__charge = None # we need this early if module is invalid and returns early self.__slot = self.dummySlot if self.itemID: self._item = eos.db.getItem(self.itemID) if self._item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return try: self._mutaReconstruct() except MutaError: return if self.isInvalid: pyfalog.error("Item (id: {0}) is not a Module", self.itemID) return if self.chargeID: self.__charge = eos.db.getItem(self.chargeID) self.build() def build(self): """ Builds internal module variables from both init's """ if self.__charge and self.__charge.category.name != "Charge": self.__charge = None self.rahPatternOverride = None self.__baseVolley = None self.__baseRRAmount = None self.__miningYield = None self.__miningDrain = None self.__reloadTime = None self.__reloadForce = None self.__chargeCycles = None self.__hardpoint = FittingHardpoint.NONE self.__itemModifiedAttributes = ModifiedAttributeDict(parent=self) self.__chargeModifiedAttributes = ModifiedAttributeDict(parent=self) self.__slot = self.dummySlot # defaults to None if self._item: self.__itemModifiedAttributes.original = self._item.attributes self.__itemModifiedAttributes.overrides = self._item.overrides self.__hardpoint = self.__calculateHardpoint(self._item) self.__slot = self.calculateSlot(self._item) self._mutaLoadMutators(mutatorClass=MutatorModule) self.__itemModifiedAttributes.mutators = self.mutators if self.__charge: self.__chargeModifiedAttributes.original = self.__charge.attributes self.__chargeModifiedAttributes.overrides = self.__charge.overrides @classmethod def buildEmpty(cls, slot): empty = Module(None) empty.__slot = slot empty.dummySlot = slot return empty @classmethod def buildRack(cls, slot, num=None): empty = Rack(None) empty.__slot = slot empty.dummySlot = slot empty.num = num return empty @property def isEmpty(self): return self.dummySlot is not None @property def hardpoint(self): return self.__hardpoint @property def isInvalid(self): # todo: validate baseItem as well if it's set. if self.isEmpty: return False if self._item is None: return True if ( self._item.category.name not in ("Module", "Subsystem", "Structure Module") and self._item.group.name not in self.SYSTEM_GROUPS ): return True if ( self._item.category.name == "Structure Module" and self._item.group.name == "Quantum Cores" ): return True if self._mutaIsInvalid: return True return False @property def numCharges(self): return self.getNumCharges(self.charge) def getNumCharges(self, charge): if charge is None: charges = 0 else: chargeVolume = charge.attributes['volume'].value containerCapacity = self.item.attributes['capacity'].value if chargeVolume is None or containerCapacity is None: charges = 0 else: charges = int(floatUnerr(containerCapacity / chargeVolume)) return charges @property def numShots(self): if self.charge is None: return 0 if self.__chargeCycles is None and self.charge: numCharges = self.numCharges # Usual ammo like projectiles and missiles if numCharges > 0 and "chargeRate" in self.itemModifiedAttributes: self.__chargeCycles = self.__calculateAmmoShots() # Frequency crystals (combat and mining lasers) elif numCharges > 0 and "crystalsGetDamaged" in self.chargeModifiedAttributes: self.__chargeCycles = self.__calculateCrystalShots() # Scripts and stuff else: self.__chargeCycles = 0 return self.__chargeCycles else: return self.__chargeCycles @property def modPosition(self): return self.getModPosition() def getModPosition(self, fit=None): # Pass in fit for reliability. When it's not passed, we rely on owner and owner # is set by sqlalchemy during flush fit = fit if fit is not None else self.owner if fit: container = fit.projectedModules if self.isProjected else fit.modules try: return container.index(self) except ValueError: return None return None @property def isProjected(self): if self.owner: return self in self.owner.projectedModules return None @property def isExclusiveSystemEffect(self): # See issue #2258 # return self.item.group.name in ("Effect Beacon", "Non-Interactable Object", "MassiveEnvironments") return False @property def isCapitalSize(self): return self.getModifiedItemAttr("volume", 0) >= 4000 @property def hpBeforeReload(self): """ If item is some kind of repairer with charges, calculate HP it reps before going into reload. """ cycles = self.numShots armorRep = self.getModifiedItemAttr("armorDamageAmount") or 0 shieldRep = self.getModifiedItemAttr("shieldBonus") or 0 if not cycles or (not armorRep and not shieldRep): return 0 hp = round((armorRep + shieldRep) * cycles) return hp def __calculateAmmoShots(self): if self.charge is not None: # Set number of cycles before reload is needed # numcycles = math.floor(module_capacity / (module_volume * module_chargerate)) chargeRate = self.getModifiedItemAttr("chargeRate") numCharges = self.numCharges numShots = math.floor(numCharges / chargeRate) else: numShots = None return numShots def __calculateCrystalShots(self): if self.charge is not None: if self.getModifiedChargeAttr("crystalsGetDamaged") == 1: # For depletable crystals, calculate average amount of shots before it's destroyed hp = self.getModifiedChargeAttr("hp") chance = self.getModifiedChargeAttr("crystalVolatilityChance") damage = self.getModifiedChargeAttr("crystalVolatilityDamage") crystals = self.numCharges numShots = math.floor((crystals * hp) / (damage * chance)) else: # Set 0 (infinite) for permanent crystals like t1 laser crystals numShots = 0 else: numShots = None return numShots @property def maxRange(self): attrs = ("maxRange", "shieldTransferRange", "powerTransferRange", "energyDestabilizationRange", "empFieldRange", "ecmBurstRange", "warpScrambleRange", "cargoScanRange", "shipScanRange", "surveyScanRange") maxRange = None for attr in attrs: maxRange = self.getModifiedItemAttr(attr) if maxRange: break if maxRange: if 'burst projector' in self.item.name.lower(): maxRange -= self.owner.ship.getModifiedItemAttr("radius") return maxRange missileMaxRangeData = self.missileMaxRangeData if missileMaxRangeData is None: return None lowerRange, higherRange, higherChance = missileMaxRangeData maxRange = lowerRange * (1 - higherChance) + higherRange * higherChance return maxRange @property def missileMaxRangeData(self): if self.charge is None: return None try: chargeName = self.charge.group.name except AttributeError: pass else: if chargeName in ("Scanner Probe", "Survey Probe"): return None def calculateRange(maxVelocity, mass, agility, flightTime): # Source: http://www.eveonline.com/ingameboard.asp?a=topic&threadID=1307419&page=1#15 # D_m = V_m * (T_m + T_0*[exp(- T_m/T_0)-1]) accelTime = min(flightTime, mass * agility / 1000000) # Average distance done during acceleration duringAcceleration = maxVelocity / 2 * accelTime # Distance done after being at full speed fullSpeed = maxVelocity * (flightTime - accelTime) maxRange = duringAcceleration + fullSpeed return maxRange maxVelocity = self.getModifiedChargeAttr("maxVelocity") if not maxVelocity: return None shipRadius = self.owner.ship.getModifiedItemAttr("radius") # Flight time has bonus based on ship radius, see https://github.com/pyfa-org/Pyfa/issues/2083 flightTime = floatUnerr(self.getModifiedChargeAttr("explosionDelay") / 1000 + shipRadius / maxVelocity) mass = self.getModifiedChargeAttr("mass") agility = self.getModifiedChargeAttr("agility") lowerTime = math.floor(flightTime) higherTime = math.ceil(flightTime) lowerRange = calculateRange(maxVelocity, mass, agility, lowerTime) higherRange = calculateRange(maxVelocity, mass, agility, higherTime) # Fof range limit is supposedly calculated based on overview (surface-to-surface) range if 'fofMissileLaunching' in self.charge.effects: rangeLimit = self.getModifiedChargeAttr("maxFOFTargetRange") if rangeLimit: lowerRange = min(lowerRange, rangeLimit) higherRange = min(higherRange, rangeLimit) # Make range center-to-surface, as missiles spawn in the center of the ship lowerRange = max(0, lowerRange - shipRadius) higherRange = max(0, higherRange - shipRadius) higherChance = flightTime - lowerTime return lowerRange, higherRange, higherChance @property def falloff(self): attrs = ("falloffEffectiveness", "falloff", "shipScanFalloff") for attr in attrs: falloff = self.getModifiedItemAttr(attr) if falloff: return falloff @property def slot(self): return self.__slot @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes @property def chargeModifiedAttributes(self): return self.__chargeModifiedAttributes @property def item(self): return self._item if self._item != 0 else None @property def charge(self): return self.__charge if self.__charge != 0 else None @charge.setter def charge(self, charge): self.__charge = charge if charge is not None: self.chargeID = charge.ID self.__chargeModifiedAttributes.original = charge.attributes self.__chargeModifiedAttributes.overrides = charge.overrides else: self.chargeID = None self.__chargeModifiedAttributes.original = None self.__chargeModifiedAttributes.overrides = {} self.__itemModifiedAttributes.clear() def getMiningYPS(self, ignoreState=False): if self.isEmpty: return 0 if not ignoreState and self.state < FittingModuleState.ACTIVE: return 0 if self.__miningYield is None: self.__miningYield, self.__miningDrain = self.__calculateMining() return self.__miningYield def getMiningDPS(self, ignoreState=False): if self.isEmpty: return 0 if not ignoreState and self.state < FittingModuleState.ACTIVE: return 0 if self.__miningDrain is None: self.__miningYield, self.__miningDrain = self.__calculateMining() return self.__miningDrain def __calculateMining(self): yield_ = self.getModifiedItemAttr("miningAmount") if yield_: cycleParams = self.getCycleParameters() if cycleParams is None: yps = 0 else: cycleTime = cycleParams.averageTime yps = yield_ / (cycleTime / 1000.0) else: yps = 0 wasteChance = self.getModifiedItemAttr("miningWasteProbability") wasteMult = self.getModifiedItemAttr("miningWastedVolumeMultiplier") dps = yps * (1 + max(0, min(1, wasteChance / 100)) * wasteMult) critChance = self.getModifiedItemAttr("miningCritChance") critBonusMult = self.getModifiedItemAttr("miningCritBonusYield") yps += yps * critChance * critBonusMult return yps, dps def isDealingDamage(self, ignoreState=False): volleyParams = self.getVolleyParameters(ignoreState=ignoreState) for volley in volleyParams.values(): if volley.total > 0: return True return False @property def isBreacher(self): return self.charge and 'dotMissileLaunching' in self.charge.effects def canDealDamage(self, ignoreState=False): if self.isEmpty: return False for effect in self.item.effects.values(): if effect.dealsDamage and ( ignoreState or effect.isType('offline') or (effect.isType('passive') and self.state >= FittingModuleState.ONLINE) or (effect.isType('active') and self.state >= FittingModuleState.ACTIVE) or (effect.isType('overheat') and self.state >= FittingModuleState.OVERHEATED) ): return True return False def getVolleyParameters(self, spoolOptions=None, targetProfile=None, ignoreState=False): if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): return {0: DmgTypes.default()} if self.__baseVolley is None: self.__baseVolley = {} if self.isBreacher: dmgDelay = 1 subcycles = math.floor(self.getModifiedChargeAttr("dotDuration", 0) / 1000) breacher_info = BreacherInfo( absolute=self.getModifiedChargeAttr("dotMaxDamagePerTick", 0), relative=self.getModifiedChargeAttr("dotMaxHPPercentagePerTick", 0) / 100) for i in range(subcycles): volley = DmgTypes.default() volley.add_breacher(dmgDelay + i, breacher_info) self.__baseVolley[dmgDelay + i] = volley else: dmgGetter = self.getModifiedChargeAttr if self.charge else self.getModifiedItemAttr dmgMult = self.getModifiedItemAttr("damageMultiplier", 1) # Some delay attributes have non-0 default value, so we have to pick according to effects if {'superWeaponAmarr', 'superWeaponCaldari', 'superWeaponGallente', 'superWeaponMinmatar', 'lightningWeapon'}.intersection(self.item.effects): dmgDelay = self.getModifiedItemAttr("damageDelayDuration", 0) elif {'doomsdayBeamDOT', 'doomsdaySlash', 'doomsdayConeDOT', 'debuffLance'}.intersection(self.item.effects): dmgDelay = self.getModifiedItemAttr("doomsdayWarningDuration", 0) else: dmgDelay = 0 dmgDuration = self.getModifiedItemAttr("doomsdayDamageDuration", 0) dmgSubcycle = self.getModifiedItemAttr("doomsdayDamageCycleTime", 0) # Reaper DD can damage each target only once if dmgDuration != 0 and dmgSubcycle != 0 and 'doomsdaySlash' not in self.item.effects: subcycles = math.floor(floatUnerr(dmgDuration / dmgSubcycle)) else: subcycles = 1 for i in range(subcycles): self.__baseVolley[dmgDelay + dmgSubcycle * i] = DmgTypes( em=(dmgGetter("emDamage", 0)) * dmgMult, thermal=(dmgGetter("thermalDamage", 0)) * dmgMult, kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult, explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult) spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) spoolBoost = calculateSpoolup( self.getModifiedItemAttr("damageMultiplierBonusMax", 0), self.getModifiedItemAttr("damageMultiplierBonusPerCycle", 0), self.rawCycleTime / 1000, spoolType, spoolAmount)[0] spoolMultiplier = 1 + spoolBoost adjustedVolleys = {} for volleyTime, baseVolley in self.__baseVolley.items(): adjustedVolley = baseVolley * spoolMultiplier adjustedVolley.profile = targetProfile adjustedVolleys[volleyTime] = adjustedVolley return adjustedVolleys def getVolley(self, spoolOptions=None, targetProfile=None, ignoreState=False): volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetProfile=targetProfile, ignoreState=ignoreState) if len(volleyParams) == 0: return DmgTypes.default() return volleyParams[min(volleyParams)] def getDps(self, spoolOptions=None, targetProfile=None, ignoreState=False): dps = DmgTypes.default() cycleParams = self.getCycleParameters() if cycleParams is None: return dps volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetProfile=targetProfile, ignoreState=ignoreState) avgCycleTime = cycleParams.averageTime if len(volleyParams) == 0 or avgCycleTime == 0: return dps if self.isBreacher: return volleyParams[min(volleyParams)] for volleyValue in volleyParams.values(): dps += volleyValue dpsFactor = 1 / (avgCycleTime / 1000) dps *= dpsFactor return dps def isRemoteRepping(self, ignoreState=False): repParams = self.getRepAmountParameters(ignoreState=ignoreState) for rrData in repParams.values(): if rrData: return True return False def getRepAmountParameters(self, spoolOptions=None, ignoreState=False): if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState): return {} remoteModuleGroups = { "Remote Armor Repairer": "Armor", "Ancillary Remote Armor Repairer": "Armor", "Mutadaptive Remote Armor Repairer": "Armor", "Remote Hull Repairer": "Hull", "Remote Shield Booster": "Shield", "Ancillary Remote Shield Booster": "Shield", "Remote Capacitor Transmitter": "Capacitor"} rrType = remoteModuleGroups.get(self.item.group.name) if rrType is None: return {} if self.__baseRRAmount is None: self.__baseRRAmount = {} shieldAmount = 0 armorAmount = 0 hullAmount = 0 capacitorAmount = 0 if rrType == "Hull": hullAmount += self.getModifiedItemAttr("structureDamageAmount", 0) elif rrType == "Armor": if self.item.group.name == "Ancillary Remote Armor Repairer" and self.charge: mult = self.getModifiedItemAttr("chargedArmorDamageMultiplier", 1) else: mult = 1 armorAmount += self.getModifiedItemAttr("armorDamageAmount", 0) * mult elif rrType == "Shield": shieldAmount += self.getModifiedItemAttr("shieldBonus", 0) elif rrType == "Capacitor": capacitorAmount += self.getModifiedItemAttr("powerTransferAmount", 0) rrDelay = 0 if rrType == "Shield" else self.rawCycleTime self.__baseRRAmount[rrDelay] = RRTypes(shield=shieldAmount, armor=armorAmount, hull=hullAmount, capacitor=capacitorAmount) spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) spoolBoost = calculateSpoolup( self.getModifiedItemAttr("repairMultiplierBonusMax", 0), self.getModifiedItemAttr("repairMultiplierBonusPerCycle", 0), self.rawCycleTime / 1000, spoolType, spoolAmount)[0] spoolMultiplier = 1 + spoolBoost adjustedRRAmount = {} for rrTime, rrAmount in self.__baseRRAmount.items(): if spoolMultiplier == 1: adjustedRRAmount[rrTime] = rrAmount else: adjustedRRAmount[rrTime] = rrAmount * spoolMultiplier return adjustedRRAmount def getRemoteReps(self, spoolOptions=None, ignoreState=False, reloadOverride=None): rrDuringCycle = RRTypes(0, 0, 0, 0) cycleParams = self.getCycleParameters(reloadOverride=reloadOverride) if cycleParams is None: return rrDuringCycle repAmountParams = self.getRepAmountParameters(spoolOptions=spoolOptions, ignoreState=ignoreState) avgCycleTime = cycleParams.averageTime if len(repAmountParams) == 0 or avgCycleTime == 0: return rrDuringCycle for rrAmount in repAmountParams.values(): rrDuringCycle += rrAmount rrFactor = 1 / (avgCycleTime / 1000) rps = rrDuringCycle * rrFactor return rps def getSpoolData(self, spoolOptions=None): weaponMultMax = self.getModifiedItemAttr("damageMultiplierBonusMax", 0) weaponMultPerCycle = self.getModifiedItemAttr("damageMultiplierBonusPerCycle", 0) if weaponMultMax and weaponMultPerCycle: spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) _, spoolCycles, spoolTime = calculateSpoolup( weaponMultMax, weaponMultPerCycle, self.rawCycleTime / 1000, spoolType, spoolAmount) return spoolCycles, spoolTime rrMultMax = self.getModifiedItemAttr("repairMultiplierBonusMax", 0) rrMultPerCycle = self.getModifiedItemAttr("repairMultiplierBonusPerCycle", 0) if rrMultMax and rrMultPerCycle: spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self) _, spoolCycles, spoolTime = calculateSpoolup( rrMultMax, rrMultPerCycle, self.rawCycleTime / 1000, spoolType, spoolAmount) return spoolCycles, spoolTime return 0, 0 @property def reloadTime(self): # Get reload time from attrs first, then use # custom value specified otherwise (e.g. in effects) moduleReloadTime = self.getModifiedItemAttr("reloadTime") if moduleReloadTime is None: moduleReloadTime = self.__reloadTime return moduleReloadTime or 0.0 @reloadTime.setter def reloadTime(self, milliseconds): self.__reloadTime = milliseconds @property def forceReload(self): return self.__reloadForce @forceReload.setter def forceReload(self, type): self.__reloadForce = type def fits(self, fit, hardpointLimit=True): """ Function that determines if a module can be fit to the ship. We always apply slot restrictions no matter what (too many assumptions made on this), however all other fitting restrictions are optional """ slot = self.slot if slot is None: return False if fit.getSlotsFree(slot) <= (0 if self.owner != fit else -1): return False fits = self.__fitRestrictions(fit, hardpointLimit) if not fits and fit.ignoreRestrictions: self.restrictionOverridden = True fits = True elif fits and fit.ignoreRestrictions: self.restrictionOverridden = False return fits def __fitRestrictions(self, fit, hardpointLimit=True): if not fit.canFit(self.item): return False # EVE doesn't let capital modules be fit onto subcapital hulls. Confirmed by CCP Larrikin that this is dictated # by the modules volume. See GH issue #1096 if not isinstance(fit.ship, Citadel) and fit.ship.getModifiedItemAttr("isCapitalSize", 0) != 1 and self.isCapitalSize: return False # If the mod is a subsystem, don't let two subs in the same slot fit if self.slot == FittingSlot.SUBSYSTEM: subSlot = self.getModifiedItemAttr("subSystemSlot") for mod in fit.modules: if mod is self: continue if mod.getModifiedItemAttr("subSystemSlot") == subSlot: return False # Check rig sizes if self.slot == FittingSlot.RIG: if self.getModifiedItemAttr("rigSize") != fit.ship.getModifiedItemAttr("rigSize"): return False # Check max group fitted # use raw value, since it seems what EVE uses. Example is FAXes with their capacitor boosters, # which have unmodified value of 10, and modified of 1, and you can actually fit multiples try: max = self.item.attributes.get('maxGroupFitted').value except AttributeError: pass else: if max: current = 0 # if self.owner != fit else -1 # Disabled, see #1278 for mod in fit.modules: if (mod.item and mod.item.groupID == self.item.groupID and self.getModPosition(fit) != mod.getModPosition(fit)): current += 1 if current >= max: return False # Check this only if we're told to do so if hardpointLimit: if fit.getHardpointsFree(self.hardpoint) < (1 if self.owner != fit else 0): return False return True def isValidState(self, state): """ Check if the state is valid for this module, without considering other modules at all """ # Check if we're within bounds if state < -1 or state > 2: return False elif state >= FittingModuleState.ACTIVE and (not self.item.isType("active") or self.getModifiedItemAttr('activationBlocked') > 0): return False elif state == FittingModuleState.OVERHEATED and not self.item.isType("overheat"): return False # Some destructible effect beacons contain active effects, hardcap those at online state elif state > FittingModuleState.ONLINE and self.slot == FittingSlot.SYSTEM: return False else: return True def getMaxState(self, proposedState=None): states = sorted((s for s in FittingModuleState if proposedState is None or s <= proposedState), reverse=True) for state in states: if self.isValidState(state): return state def canHaveState(self, state=None, projectedOnto=None): """ Check with other modules if there are restrictions that might not allow this module to be activated. Returns True if state is allowed, or max state module can have if current state is invalid. """ # If we're going to set module to offline, it should be fine for all cases item = self.item if state <= FittingModuleState.OFFLINE: return True # Check if the local module is over it's max limit; if it's not, we're fine maxGroupOnline = self.getModifiedItemAttr("maxGroupOnline", None) maxGroupActive = self.getModifiedItemAttr("maxGroupActive", None) if not maxGroupOnline and not maxGroupActive and projectedOnto is None: return True # Following is applicable only to local modules, we do not want to limit projected if projectedOnto is None: currOnline = 0 currActive = 0 group = item.group.name maxState = None for mod in self.owner.modules: currItem = getattr(mod, "item", None) if currItem is not None and currItem.group.name == group: if mod.state >= FittingModuleState.ONLINE: currOnline += 1 if mod.state >= FittingModuleState.ACTIVE: currActive += 1 if maxGroupOnline and currOnline > maxGroupOnline: if maxState is None or maxState > FittingModuleState.OFFLINE: maxState = FittingModuleState.OFFLINE break if maxGroupActive and currActive > maxGroupActive: if maxState is None or maxState > FittingModuleState.ONLINE: maxState = FittingModuleState.ONLINE return True if maxState is None else maxState # For projected, we're checking if ship is vulnerable to given item else: # Do not allow to apply offensive modules on ship with offensive module immunite, with few exceptions # (all effects which apply instant modification are exception, generally speaking) if item.offensive and projectedOnto.ship.getModifiedItemAttr("disallowOffensiveModifiers") == 1: offensiveNonModifiers = {"energyDestabilizationNew", "leech", "energyNosferatuFalloff", "energyNeutralizerFalloff"} if not offensiveNonModifiers.intersection(set(item.effects)): return FittingModuleState.OFFLINE # If assistive modules are not allowed, do not let to apply these altogether if item.assistive and projectedOnto.ship.getModifiedItemAttr("disallowAssistance") == 1: return FittingModuleState.OFFLINE return True def isValidCharge(self, charge): # Check sizes, if 'charge size > module volume' it won't fit if charge is None: return True chargeVolume = charge.attributes['volume'].value moduleCapacity = self.item.attributes['capacity'].value if chargeVolume is not None and moduleCapacity is not None and chargeVolume > moduleCapacity: return False itemChargeSize = self.getModifiedItemAttr("chargeSize") if itemChargeSize > 0: chargeSize = charge.getAttribute('chargeSize') if itemChargeSize != chargeSize: return False chargeGroup = charge.groupID for i in range(5): itemChargeGroup = self.getModifiedItemAttr('chargeGroup' + str(i), None) if not itemChargeGroup: continue if itemChargeGroup == chargeGroup: return True return False def getValidCharges(self): validCharges = set() for i in range(5): itemChargeGroup = self.getModifiedItemAttr('chargeGroup' + str(i), None) if itemChargeGroup: g = eos.db.getGroup(int(itemChargeGroup), eager="items.attributes") if g is None: continue for singleItem in g.items: if singleItem.published and self.isValidCharge(singleItem): validCharges.add(singleItem) return validCharges @staticmethod def __calculateHardpoint(item): effectHardpointMap = { "turretFitted" : FittingHardpoint.TURRET, "launcherFitted": FittingHardpoint.MISSILE } if item is None: return FittingHardpoint.NONE for effectName, slot in effectHardpointMap.items(): if effectName in item.effects: return slot return FittingHardpoint.NONE @staticmethod def calculateSlot(item): effectSlotMap = { "rigSlot" : FittingSlot.RIG.value, "loPower" : FittingSlot.LOW.value, "medPower" : FittingSlot.MED.value, "hiPower" : FittingSlot.HIGH.value, "subSystem" : FittingSlot.SUBSYSTEM.value, "serviceSlot": FittingSlot.SERVICE.value } if item is None: return None for effectName, slot in effectSlotMap.items(): if effectName in item.effects: return slot if item.group.name in Module.SYSTEM_GROUPS: return FittingSlot.SYSTEM return None @validates("ID", "itemID", "ammoID") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "itemID": lambda _val: _val is None or isinstance(_val, int), "ammoID": lambda _val: isinstance(_val, int) } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val def clear(self): self.__baseVolley = None self.__baseRRAmount = None self.__miningYield = None self.__miningDrain = None self.__reloadTime = None self.__reloadForce = None self.__chargeCycles = None self.itemModifiedAttributes.clear() self.chargeModifiedAttributes.clear() def calculateModifiedAttributes(self, fit, runTime, forceProjected=False, gang=False, forcedProjRange=DEFAULT): # We will run the effect when two conditions are met: # 1: It makes sense to run the effect # The effect is either offline # or the effect is passive and the module is in the online state (or higher) # or the effect is active and the module is in the active state (or higher) # or the effect is overheat and the module is in the overheated state (or higher) # 2: the runtimes match if self.projected or forceProjected: context = "projected", "module" projected = True else: context = ("module",) projected = False projectionRange = self.projectionRange if forcedProjRange is DEFAULT else forcedProjRange if self.charge is not None: # fix for #82 and it's regression #106 if not projected or (self.projected and not forceProjected) or gang: for effect in self.charge.effects.values(): if ( effect.runTime == runTime and effect.activeByDefault and ( effect.isType("offline") or (effect.isType("passive") and self.state >= FittingModuleState.ONLINE) or (effect.isType("active") and self.state >= FittingModuleState.ACTIVE)) and (not gang or (gang and effect.isType("gang"))) ): contexts = ("moduleCharge",) effect.handler(fit, self, contexts, projectionRange, effect=effect) if self.item: if self.state >= FittingModuleState.OVERHEATED: for effect in self.item.effects.values(): if effect.runTime == runTime and \ effect.isType("overheat") \ and not forceProjected \ and effect.activeByDefault \ and ((gang and effect.isType("gang")) or not gang): effect.handler(fit, self, context, projectionRange, effect=effect) for effect in self.item.effects.values(): if effect.runTime == runTime and \ effect.activeByDefault and \ (effect.isType("offline") or (effect.isType("passive") and self.state >= FittingModuleState.ONLINE) or (effect.isType("active") and self.state >= FittingModuleState.ACTIVE)) \ and ((projected and effect.isType("projected")) or not projected) \ and ((gang and effect.isType("gang")) or not gang): effect.handler(fit, self, context, projectionRange, effect=effect) def getCycleParametersForDps(self, reloadOverride=None): # Special hack for breachers, since those are DoT and work independently of gun cycle if self.isBreacher: return CycleInfo(activeTime=1000, inactiveTime=0, quantity=math.inf, isInactivityReload=False) else: return self.getCycleParameters(reloadOverride=reloadOverride) def getCycleParameters(self, reloadOverride=None): """Copied from new eos as well""" # Determine if we'll take into account reload time or not if reloadOverride is not None: factorReload = reloadOverride else: factorReload = self.owner.factorReload if self.forceReload is None else self.forceReload cycles_until_reload = self.numShots if cycles_until_reload == 0: cycles_until_reload = math.inf active_time = self.rawCycleTime if active_time == 0: return None forced_inactive_time = self.reactivationDelay reload_time = self.reloadTime # Effects which cannot be reloaded have the same processing whether # caller wants to take reload time into account or not if reload_time is None and cycles_until_reload < math.inf: final_cycles = 1 early_cycles = cycles_until_reload - final_cycles # Single cycle until effect cannot run anymore if early_cycles == 0: return CycleInfo(active_time, 0, 1, False) # Multiple cycles with the same parameters if forced_inactive_time == 0: return CycleInfo(active_time, 0, cycles_until_reload, False) # Multiple cycles with different parameters return CycleSequence(( CycleInfo(active_time, forced_inactive_time, early_cycles, False), CycleInfo(active_time, 0, final_cycles, False) ), 1) # Module cycles the same way all the time in 3 cases: # 1) caller doesn't want to take into account reload time # 2) effect does not have to reload anything to keep running # 3) effect has enough time to reload during inactivity periods if ( not factorReload or cycles_until_reload == math.inf or forced_inactive_time >= reload_time ): isInactivityReload = factorReload and forced_inactive_time >= reload_time return CycleInfo(active_time, forced_inactive_time, math.inf, isInactivityReload) # We've got to take reload into consideration else: final_cycles = 1 early_cycles = cycles_until_reload - final_cycles # If effect has to reload after each its cycle, then its parameters # are the same all the time if early_cycles == 0: return CycleInfo(active_time, reload_time, math.inf, True) return CycleSequence(( CycleInfo(active_time, forced_inactive_time, early_cycles, False), CycleInfo(active_time, reload_time, final_cycles, True) ), math.inf) @property def rawCycleTime(self): speed = max( self.getModifiedItemAttr("speed", 0), # Most weapons self.getModifiedItemAttr("duration", 0), # Most average modules self.getModifiedItemAttr("durationHighisGood", 0), # Most average modules self.getModifiedItemAttr("durationSensorDampeningBurstProjector", 0), self.getModifiedItemAttr("durationTargetIlluminationBurstProjector", 0), self.getModifiedItemAttr("durationECMJammerBurstProjector", 0), self.getModifiedItemAttr("durationWeaponDisruptionBurstProjector", 0) ) return speed @property def disallowRepeatingAction(self): return self.getModifiedItemAttr("disallowRepeatingActivation", 0) @property def reactivationDelay(self): return self.getModifiedItemAttr("moduleReactivationDelay", 0) @property def capUse(self): capNeed = self.getModifiedItemAttr("capacitorNeed") if capNeed and self.state >= FittingModuleState.ACTIVE: cycleParams = self.getCycleParameters() if cycleParams is None: return 0 cycleTime = cycleParams.averageTime if cycleTime > 0: capUsed = capNeed / (cycleTime / 1000.0) return capUsed else: return 0 @staticmethod def getProposedState(mod, click, proposedState=None): pyfalog.debug("Get proposed state for module.") if mod.slot == FittingSlot.SUBSYSTEM or mod.isEmpty: return FittingModuleState.ONLINE if mod.slot == FittingSlot.SYSTEM: transitionMap = ProjectedSystem else: transitionMap = ProjectedMap if mod.projected else LocalMap currState = mod.state if proposedState is not None: state = proposedState elif click == "right": state = FittingModuleState.OVERHEATED elif click == "ctrl": state = FittingModuleState.OFFLINE else: try: state = transitionMap[currState] except KeyError: state = min(transitionMap) # If passive module tries to transition into online and fails, # put it to passive instead if not mod.isValidState(state) and currState == FittingModuleState.ONLINE: state = FittingModuleState.OFFLINE return mod.getMaxState(proposedState=state) def __deepcopy__(self, memo): item = self.item if item is None: copy = Module.buildEmpty(self.slot) else: copy = Module(self.item, self.baseItem, self.mutaplasmid) copy.charge = self.charge copy.state = self.state copy.spoolType = self.spoolType copy.spoolAmount = self.spoolAmount copy.projectionRange = self.projectionRange copy.rahPatternOverride = self.rahPatternOverride self._mutaApplyMutators(mutatorClass=MutatorModule, targetInstance=copy) return copy def rebase(self, item): state = self.state charge = self.charge spoolType = self.spoolType spoolAmount = self.spoolAmount projectionRange = self.projectionRange rahPatternOverride = self.rahPatternOverride Module.__init__(self, item, self.baseItem, self.mutaplasmid) self.state = state if self.isValidCharge(charge): self.charge = charge self.spoolType = spoolType self.spoolAmount = spoolAmount self.projectionRange = projectionRange self.rahPatternOverride = rahPatternOverride self._mutaApplyMutators(mutatorClass=MutatorModule) def __repr__(self): if self.item: return "Module(ID={}, name={}) at {}".format(self.item.ID, self.item.name, hex(id(self))) else: return "EmptyModule() at {}".format(hex(id(self))) class Rack(Module): """ This is simply the Module class named something else to differentiate it for app logic. The only thing interesting about it is the num property, which is the number of slots for this rack """ num = None ================================================ FILE: eos/saveddata/mutatedMixin.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import eos.db from logbook import Logger pyfalog = Logger(__name__) class MutaError(Exception): pass class MutatedMixin: @property def isMutated(self): return bool(self.baseItemID and self.mutaplasmidID) @property def baseItem(self): return self.__baseItem @property def mutaplasmid(self): return self.__mutaplasmid @property def fullName(self): if self.isMutated: mutaShortName = self.mutaplasmid.shortName mutaFullName = self.mutaplasmid.item.customName # Short name can be unavailable for non-english language if mutaShortName != mutaFullName: return f'{self.mutaplasmid.shortName} {self.baseItem.customName}' return self.item.customName def _mutaInit(self, baseItem, mutaplasmid): self.baseItemID = baseItem.ID if baseItem is not None else None self.mutaplasmidID = mutaplasmid.ID if mutaplasmid is not None else None if baseItem is not None: # we're working with a mutated module, need to get abyssal module loaded with the base attributes # Note: there may be a better way of doing this, such as a metho on this classe to convert(mutaplamid). This # will require a bit more research though, considering there has never been a need to "swap" out the item of a Module # before, and there may be assumptions taken with regards to the item never changing (pre-calculated / cached results, for example) self._item = eos.db.getItemWithBaseItemAttribute(self._item.ID, self.baseItemID) self.__baseItem = baseItem self.__mutaplasmid = mutaplasmid else: self.__baseItem = None self.__mutaplasmid = None def _mutaReconstruct(self): self.__baseItem = None self.__mutaplasmid = None if self.baseItemID: self._item = eos.db.getItemWithBaseItemAttribute(self.itemID, self.baseItemID) self.__baseItem = eos.db.getItem(self.baseItemID) self.__mutaplasmid = eos.db.getMutaplasmid(self.mutaplasmidID) if self.__baseItem is None: pyfalog.error("Base Item (id: {0}) does not exist", self.itemID) raise MutaError def _mutaLoadMutators(self, mutatorClass): # Instantiate / remove mutators if this is a mutated module if self.__baseItem: for x in self.mutaplasmid.attributes: attr = self.item.attributes[x.name] id = attr.ID if id not in self.mutators: # create the mutator mutatorClass(self, attr, attr.value) # @todo: remove attributes that are no longer part of the mutaplasmid. @property def _mutaIsInvalid(self): if self.item.isAbyssal and not self.isMutated: return True if self.isMutated and not self.__mutaplasmid: return True return False def _mutaApplyMutators(self, mutatorClass, targetInstance=None): if targetInstance is None: targetInstance = self for x in self.mutators.values(): mutatorClass(targetInstance, x.attribute, x.value) ================================================ FILE: eos/saveddata/mutator.py ================================================ # =============================================================================== # Copyright (C) 2015 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import validates, reconstructor import eos.db from eos.eqBase import EqBase pyfalog = Logger(__name__) class MutatorBase(EqBase): """ Mutators are the object that represent an attribute override on the eos item level, in conjunction with mutaplasmids. Each mutated item, when created, is instantiated with a list of these objects, dictated by the mutaplasmid that is used on the base item. A note on the different attributes on this object: * attribute: points to the definition of the attribute from dgmattribs. * baseAttribute: points to the attribute defined for the base item (contains the base value with with to mutate) * dynamicAttribute: points to the Mutaplasmid definition of the attribute, including min/max This could probably be cleaned up with smarter relationships, but whatever """ def __init__(self, item, attr, value): # this needs to be above item assignment, as assigning the item will add it to the list and it via # relationship and needs this set 4correctly self.attrID = attr.ID self.item = item self.itemID = item.ID self.__attr = attr self.build() self.value = value # must run after the build(), because the validator requires build() to run first @reconstructor def init(self): self.__attr = None if self.attrID: self.__attr = eos.db.getAttributeInfo(self.attrID) if self.__attr is None: pyfalog.error("Attribute (id: {0}) does not exist", self.attrID) return self.build() self.value = self.value # run the validator (to ensure we catch any changed min/max values might CCP release) def build(self): # try...except here to catch orphaned mutators. Pretty rare, only happens so far if hacking the database # But put it here to remove the eos item link if it happens, until a better solution can be developed try: # dynamic attribute links to the Mutaplasmids attribute definition for this mutated definition self.dynamicAttribute = next(a for a in self.item.mutaplasmid.attributes if a.attributeID == self.attrID) # base attribute links to the base ite's attribute for this mutated definition (contains original, base value) self.baseAttribute = self.item.baseItem.attributes[self.dynamicAttribute.name] except (KeyboardInterrupt, SystemExit): raise except: self.item = None @validates("value") def validator(self, key, val): """ Validates values as properly falling within the range of the items' Mutaplasmid """ if self.baseValue == 0: return 0 mod = val / self.baseValue if self.minMod <= mod <= self.maxMod: # sweet, all good returnVal = val else: actualMin = min(self.minValue, self.maxValue) actualMax = max(self.minValue, self.maxValue) returnVal = min(actualMax, max(actualMin, val)) return returnVal @property def isInvalid(self): # @todo: need to test what happens: # 1) if an attribute is removed from the EVE database # 2) if a mutaplasmid does not have the attribute anymore # 3) if a mutaplasmid does not exist (in eve or on the pyfa item's item) # Can remove invalid ones in a SQLAlchemy collection class... eventually return self.__attr is None @property def highIsGood(self): return self.attribute.highIsGood @property def minMod(self): return round(self.dynamicAttribute.min, 3) @property def maxMod(self): return round(self.dynamicAttribute.max, 3) @property def baseValue(self): try: return self.baseAttribute.value except AttributeError: return 0 @property def minValue(self): try: return self.minMod * self.baseAttribute.value except AttributeError: return 0 @property def maxValue(self): try: return self.maxMod * self.baseAttribute.value except AttributeError: return 0 @property def attribute(self): return self.__attr class MutatorModule(MutatorBase): pass class MutatorDrone(MutatorBase): pass ================================================ FILE: eos/saveddata/override.py ================================================ # =============================================================================== # Copyright (C) 2015 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger from sqlalchemy.orm import reconstructor import eos.db from eos.eqBase import EqBase pyfalog = Logger(__name__) class Override(EqBase): def __init__(self, item, attr, value): self.itemID = item.ID self.__item = item self.attrID = attr.ID self.__attr = attr self.value = value @reconstructor def init(self): self.__attr = None self.__item = None if self.attrID: self.__attr = eos.db.getAttributeInfo(self.attrID) if self.__attr is None: pyfalog.error("Attribute (id: {0}) does not exist", self.attrID) return if self.itemID: self.__item = eos.db.getItem(self.itemID) if self.__item is None: pyfalog.error("Item (id: {0}) does not exist", self.itemID) return @property def attr(self): return self.__attr @property def item(self): return self.__item ================================================ FILE: eos/saveddata/price.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # Copyright (C) 2011 Anton Vorobyov # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from enum import IntEnum, unique from time import time from logbook import Logger VALIDITY = 24 * 60 * 60 # Price validity period, 24 hours REREQUEST = 4 * 60 * 60 # Re-request delay for failed fetches, 4 hours TIMEOUT = 15 * 60 # Network timeout delay for connection issues, 15 minutes pyfalog = Logger(__name__) @unique class PriceStatus(IntEnum): initialized = 0 notSupported = 1 fetchSuccess = 2 fetchFail = 3 fetchTimeout = 4 class Price: def __init__(self, typeID): self.typeID = typeID self.time = 0 self.price = 0 self.status = PriceStatus.initialized def isValid(self, validityOverride=None): # Always attempt to update prices which were just initialized, and prices # of unsupported items (maybe we start supporting them at some point) if self.status in (PriceStatus.initialized, PriceStatus.notSupported): return False elif self.status == PriceStatus.fetchSuccess: return time() <= self.time + (validityOverride if validityOverride is not None else VALIDITY) elif self.status == PriceStatus.fetchFail: return time() <= self.time + REREQUEST elif self.status == PriceStatus.fetchTimeout: return time() <= self.time + TIMEOUT else: return False def update(self, status, price=0): # Keep old price if we failed to fetch new one if status in (PriceStatus.fetchFail, PriceStatus.fetchTimeout): price = self.price elif status != PriceStatus.fetchSuccess: price = 0 self.time = time() self.price = price self.status = status ================================================ FILE: eos/saveddata/ship.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from logbook import Logger import eos.db from eos.effectHandlerHelpers import HandledItem from eos.modifiedAttributeDict import ModifiedAttributeDict, ItemAttrShortcut, cappingAttrKeyCache from eos.saveddata.mode import Mode pyfalog = Logger(__name__) class Ship(ItemAttrShortcut, HandledItem): EXTRA_ATTRIBUTES = { "armorRepair": 0, "armorRepairPreSpool": 0, "armorRepairFullSpool": 0, "hullRepair": 0, "shieldRepair": 0, "maxActiveDrones": 0, "maxTargetsLockedFromSkills": 2, "droneControlRange": 20000, "cloaked": False, # We also have speedLimit for Entosis Link, but there seems to be an # issue with naming it exactly "speedLimit" due to unknown reasons. # Regardless, we don't have to put it here anyways - it will come up # as None unless the Entosis effect sets it. } def __init__(self, item, owner=None): self.validate(item) self.__item = item self.__modeItems = self.__getModeItems() self.__itemModifiedAttributes = ModifiedAttributeDict(parent=self) self.__itemModifiedAttributes.original = dict(self.item.attributes) self.__itemModifiedAttributes.original.update(self.EXTRA_ATTRIBUTES) self.__itemModifiedAttributes.overrides = self.item.overrides if "maximumRangeCap" in self.__itemModifiedAttributes.original: cappingAttrKeyCache["maxTargetRange"] = "maximumRangeCap" self.owner = owner self.commandBonus = 0 def validate(self, item): if item.category.name != "Ship": pyfalog.error("Passed item '{0}' (category: {1}) is not under Ship category", item.name, item.category.name) raise ValueError( 'Passed item "%s" (category: (%s)) is not under Ship category' % (item.name, item.category.name)) @property def item(self): return self.__item @property def name(self): # NOTE: add name property return self.__item.name @property def itemModifiedAttributes(self): return self.__itemModifiedAttributes def clear(self): self.itemModifiedAttributes.clear() self.commandBonus = 0 def calculateModifiedAttributes(self, fit, runTime, forceProjected=False): if forceProjected: return for effect in self.item.effects.values(): if effect.runTime == runTime and \ effect.isType("passive") and \ effect.activeByDefault: # Ships have effects that utilize the level of a skill as an # additional operator to the modifier. These are defined in # the effect itself, and these skillbooks are registered when # they are provided. However, we must re-register the ship # before each effect, otherwise effects that do not have # skillbook modifiers will use the stale modifier value # GH issue #351 fit.register(self) effect.handler(fit, self, ("ship",), None, effect=effect) def validateModeItem(self, item, owner=None): """ Checks if provided item is a valid mode """ items = self.__modeItems if items is not None: # if we have items, then we are in a tactical destroyer and must have a mode if item is None or item not in items: # If provided item is invalid mode, force new one return Mode(items[0], owner=owner) return Mode(item) return None @property def modeItems(self): return self.__modeItems @property def modes(self): return [Mode(item) for item in self.__modeItems] if self.__modeItems else None def __getModeItems(self): """ Returns a list of valid mode items for ship. Note that this returns the valid Item objects, not the Mode objects. Returns None if not a t3 dessy """ if self.item.group.name != "Tactical Destroyer" and self.item.name != "Anhinga": return None items = [] g = eos.db.getGroup("Ship Modifiers", eager="items.attributes") for item in g.items: # Rely on name detection because race is not reliable if item.name.lower().startswith(self.item.name.lower()): items.append(item) return items def __deepcopy__(self, memo): copy = Ship(self.item) return copy def __repr__(self): return "Ship(ID={}, name={}) at {}".format( self.item.ID, self.item.name, hex(id(self)) ) ================================================ FILE: eos/saveddata/ssocharacter.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== from sqlalchemy.orm import reconstructor import datetime import time # from tomorrow import threads class SsoCharacter: def __init__(self, charID, name, client, server, accessToken=None, refreshToken=None): self.characterID = charID self.characterName = name self.client = client self.server = server self.accessToken = accessToken self.refreshToken = refreshToken self.accessTokenExpires = None @reconstructor def init(self): pass @property def characterDisplay(self): return "{} [{}]".format(self.characterName, self.server) def is_token_expired(self): if self.accessTokenExpires is None: return True return datetime.datetime.now() >= self.accessTokenExpires def __repr__(self): return "SsoCharacter(ID={}, name={}, client={}) at {}".format( self.ID, self.characterName, self.client, hex(id(self)) ) ================================================ FILE: eos/saveddata/targetProfile.py ================================================ # =============================================================================== # Copyright (C) 2014 Ryan Holmes # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math import re from collections import OrderedDict from logbook import Logger from sqlalchemy.orm import reconstructor import eos.db pyfalog = Logger(__name__) def _t(x): return x def _c(x): return '[' + x + ']' BUILTINS = OrderedDict([ # 0 is taken by ideal target profile, composed manually in one of TargetProfile methods (-1, (_t('Uniform (25%)'), 0.25, 0.25, 0.25, 0.25)), (-2, (_t('Uniform (50%)'), 0.50, 0.50, 0.50, 0.50)), (-3, (_t('Uniform (75%)'), 0.75, 0.75, 0.75, 0.75)), (-4, (_t('Uniform (90%)'), 0.90, 0.90, 0.90, 0.90)), (-5, (_c(_t('T1 Resist')) + _t('Shield'), 0.0, 0.20, 0.40, 0.50)), (-6, (_c(_t('T1 Resist')) + _t('Armor'), 0.50, 0.45, 0.25, 0.10)), (-7, (_c(_t('T1 Resist')) + _t('Hull'), 0.33, 0.33, 0.33, 0.33)), (-8, (_c(_t('T1 Resist')) + _t('Shield (+T2 DCU)'), 0.125, 0.30, 0.475, 0.562)), (-9, (_c(_t('T1 Resist')) + _t('Armor (+T2 DCU)'), 0.575, 0.532, 0.363, 0.235)), (-10, (_c(_t('T1 Resist')) + _t('Hull (+T2 DCU)'), 0.598, 0.598, 0.598, 0.598)), (-11, (_c(_t('T2 Resist')) + _t('Amarr (Shield)'), 0.0, 0.20, 0.70, 0.875)), (-12, (_c(_t('T2 Resist')) + _t('Amarr (Armor)'), 0.50, 0.35, 0.625, 0.80)), (-13, (_c(_t('T2 Resist')) + _t('Caldari (Shield)'), 0.20, 0.84, 0.76, 0.60)), (-14, (_c(_t('T2 Resist')) + _t('Caldari (Armor)'), 0.50, 0.8625, 0.625, 0.10)), (-15, (_c(_t('T2 Resist')) + _t('Gallente (Shield)'), 0.0, 0.60, 0.85, 0.50)), (-16, (_c(_t('T2 Resist')) + _t('Gallente (Armor)'), 0.50, 0.675, 0.8375, 0.10)), (-17, (_c(_t('T2 Resist')) + _t('Minmatar (Shield)'), 0.75, 0.60, 0.40, 0.50)), (-18, (_c(_t('T2 Resist')) + _t('Minmatar (Armor)'), 0.90, 0.675, 0.25, 0.10)), (-19, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Angel Cartel'), 0.54, 0.42, 0.37, 0.32)), (-20, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Blood Raiders'), 0.34, 0.39, 0.45, 0.52)), (-21, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Guristas'), 0.55, 0.35, 0.3, 0.48)), (-22, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Rogue Drones'), 0.35, 0.38, 0.44, 0.49)), (-23, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Sanshas Nation'), 0.35, 0.4, 0.47, 0.53)), (-24, (_c(_t('NPC')) + _c(_t('Asteroid')) + _t('Serpentis'), 0.49, 0.38, 0.29, 0.51)), (-25, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Angel Cartel'), 0.59, 0.48, 0.4, 0.32)), (-26, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Blood Raiders'), 0.31, 0.39, 0.47, 0.56)), (-27, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Guristas'), 0.57, 0.39, 0.31, 0.5)), (-28, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Rogue Drones'), 0.42, 0.42, 0.47, 0.49)), (-29, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Sanshas Nation'), 0.31, 0.39, 0.47, 0.56)), (-30, (_c(_t('NPC')) + _c(_t('Deadspace')) + _t('Serpentis'), 0.49, 0.38, 0.29, 0.56)), (-31, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Amarr Empire'), 0.34, 0.38, 0.42, 0.46)), (-32, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Caldari State'), 0.51, 0.38, 0.3, 0.51)), (-33, (_c(_t('NPC')) + _c(_t('Mission')) + _t('CONCORD'), 0.47, 0.46, 0.47, 0.47)), (-34, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Gallente Federation'), 0.51, 0.38, 0.31, 0.52)), (-35, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Khanid'), 0.51, 0.42, 0.36, 0.4)), (-36, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Minmatar Republic'), 0.51, 0.46, 0.41, 0.35)), (-37, (_c(_t('NPC')) + _c(_t('Mission')) + _t('Mordus Legion'), 0.32, 0.48, 0.4, 0.62)), (-38, (_c(_t('NPC')) + _c(_t('Other')) + _t('Sleeper'), 0.61, 0.61, 0.61, 0.61)), (-39, (_c(_t('NPC')) + _c(_t('Other')) + _t('Sansha Incursion'), 0.65, 0.63, 0.64, 0.65)), # Anomic Team, source: client data dump (-40, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Enyo'), 0.575, 0.724, 0.862, 0.235, 1020, 37, 39)), (-41, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Navitas'), 0.681, 0.586, 0.522, 0.49, 870, 30, 35)), (-42, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Hawk'), 0.3, 0.86, 0.79, 0.65, 1122, 48, 39)), (-43, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Bantam'), 0.344, 0.475, 0.606, 0.672, 1016, 45, 27)), (-44, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Jaguar'), 0.781, 0.65, 0.475, 0.563, 1400, 42, 31)), (-45, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Burst'), 0.344, 0.475, 0.606, 0.672, 1174, 39, 31)), (-46, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Vengeance'), 0.66, 0.558, 0.745, 0.864, 1050, 37, 40)), (-47, (_c(_t('NPC')) + _c(_t('Burner')) + _c(_t('Team')) + _t('Inquisitor'), 0.681, 0.586, 0.522, 0.49, 920, 29, 20.5)), # Anomic Agent & Base, source: client data dump (-48, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Cruor'), 0.795, 0.734, 0.693, 0.672, 900, 18, 20.5)), (-49, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Dramiel'), 0.351, 0.481, 0.611, 0.676, 2100, 11, 25)), (-50, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Daredevil'), 0.685, 0.59, 0.59, 0.433, 1200, 18, 25)), (-51, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Succubus'), 0.351, 0.481, 0.611, 0.676, 4750, 30, 59)), (-52, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Worm'), 0.475, 0.58, 0.685, 0.738, 360, 70, 39)), (-53, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Ashimmu'), 0.8, 0.76, 0.68, 0.7, 500, 120, 137)), (-54, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Sentinel'), 0.575, 0.448, 0.522, 0.66, 500, 50, 39)), (-55, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Talos'), 0.681, 0.586, 0.586, 0.426, 150, 125, 266)), (-56, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Dragonfly'), 0.35, 0.72, 0.70, 0.55, 1200, 15, 35)), (-57, (_c(_t('NPC')) + _c(_t('Burner')) + _t('Mantis'), 0.60, 0.52, 0.71, 0.71, 900, 25, 35)), # Source: ticket #2067 (-58, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Triglavian Entities'), 0.422, 0.367, 0.453, 0.411)), (-59, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Amarr EDENCOM Entities'), 0.360, 0.310, 0.441, 0.602)), (-60, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Caldari EDENCOM Entities'), 0.303, 0.610, 0.487, 0.401)), (-61, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Gallente EDENCOM Entities'), 0.383, 0.414, 0.578, 0.513)), (-62, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Minmatar EDENCOM Entities'), 0.620, 0.422, 0.355, 0.399)), (-63, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Drones'), 0.439, 0.522, 0.529, 0.435)), (-64, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Overmind'), 0.643, 0.593, 0.624, 0.639)), (-65, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Seeker'), 0.082, 0.082, 0.082, 0.082)), (-66, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Triglavian'), 0.494, 0.41, 0.464, 0.376)), (-67, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Drifter'), 0.415, 0.415, 0.415, 0.415)), (-68, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Sleeper'), 0.435, 0.435, 0.435, 0.435)), (-69, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('All'), 0.508, 0.474, 0.495, 0.488)), (-70, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Drones'), 0.323, 0.522, 0.529, 0.435)), (-71, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Overmind'), 0.542, 0.593, 0.624, 0.639)), (-72, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Seeker'), 0, 0.082, 0.082, 0.082)), (-73, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Triglavian'), 0.356, 0.41, 0.464, 0.376)), (-74, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Drifter'), 0.277, 0.415, 0.415, 0.415)), (-75, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Sleeper'), 0.329, 0.435, 0.435, 0.435)), (-76, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('All'), 0.381, 0.474, 0.495, 0.488)), (-77, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Drones'), 0.255, 0.522, 0.529, 0.435)), (-78, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Overmind'), 0.48, 0.593, 0.624, 0.639)), (-79, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Seeker'), 0, 0.082, 0.082, 0.0822)), (-80, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Triglavian'), 0.268, 0.41, 0.464, 0.376)), (-81, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Drifter'), 0.191, 0.415, 0.415, 0.415)), (-82, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Sleeper'), 0.268, 0.435, 0.435, 0.435)), (-83, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('All'), 0.308, 0.474, 0.495, 0.488)), (-84, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Drones'), 0.193, 0.522, 0.529, 0.435)), (-85, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Overmind'), 0.423, 0.593, 0.624, 0.639)), (-86, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Seeker'), 0, 0.082, 0.082, 0.082)), (-87, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Triglavian'), 0.206, 0.41, 0.464, 0.376)), (-88, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Drifter'), 0.111, 0.415, 0.415, 0.415)), (-89, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Sleeper'), 0.215, 0.435, 0.435, 0.435)), (-90, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('All'), 0.247, 0.474, 0.495, 0.488)), (-91, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Drones'), 0.461, 0.425, 0.541, 0.443)), (-92, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Overmind'), 0.666, 0.489, 0.634, 0.646)), (-93, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Seeker'), 0.084, 0, 0.084, 0.084)), (-94, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Triglavian'), 0.537, 0.269, 0.489, 0.371)), (-95, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Drifter'), 0.43, 0.289, 0.43, 0.43)), (-96, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Sleeper'), 0.512, 0.402, 0.512, 0.512)), (-97, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('All'), 0.537, 0.352, 0.512, 0.495)), (-98, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Drones'), 0.461, 0.36, 0.541, 0.443)), (-99, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Overmind'), 0.666, 0.413, 0.634, 0.646)), (-100, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Seeker'), 0.084, 0, 0.084, 0.084)), (-101, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Triglavian'), 0.537, 0.166, 0.489, 0.371)), (-102, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Drifter'), 0.43, 0.201, 0.43, 0.43)), (-103, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Sleeper'), 0.512, 0.337, 0.512, 0.512)), (-104, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('All'), 0.537, 0.269, 0.512, 0.495)), (-105, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Drones'), 0.461, 0.305, 0.541, 0.443)), (-106, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Overmind'), 0.666, 0.345, 0.634, 0.646)), (-107, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Seeker'), 0.084, 0, 0.084, 0.084)), (-108, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Triglavian'), 0.537, 0.085, 0.489, 0.371)), (-109, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Drifter'), 0.43, 0.117, 0.43, 0.43)), (-110, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Sleeper'), 0.512, 0.276, 0.512, 0.512)), (-111, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('All'), 0.537, 0.201, 0.512, 0.495)), (-112, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Drones'), 0.439, 0.522, 0.417, 0.435)), (-113, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Overmind'), 0.643, 0.593, 0.511, 0.639)), (-114, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Seeker'), 0.082, 0.082, 0, 0.082)), (-115, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Triglavian'), 0.494, 0.41, 0.304, 0.376)), (-116, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Drifter'), 0.415, 0.415, 0.277, 0.415)), (-117, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Sleeper'), 0.435, 0.435, 0.329, 0.435)), (-118, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('All'), 0.508, 0.474, 0.359, 0.488)), (-119, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Drones'), 0.439, 0.522, 0.351, 0.435)), (-120, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Overmind'), 0.643, 0.593, 0.435, 0.639)), (-121, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Seeker'), 0.082, 0.082, 0, 0.082)), (-122, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Triglavian'), 0.494, 0.41, 0.198, 0.376)), (-123, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Drifter'), 0.415, 0.415, 0.191, 0.415)), (-124, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Sleeper'), 0.435, 0.435, 0.268, 0.435)), (-125, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('All'), 0.508, 0.474, 0.276, 0.488)), (-126, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Drones'), 0.439, 0.522, 0.293, 0.435)), (-127, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Overmind'), 0.643, 0.593, 0.362, 0.639)), (-128, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Seeker'), 0.082, 0.082, 0, 0.082)), (-129, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Triglavian'), 0.494, 0.41, 0.122, 0.376)), (-130, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Drifter'), 0.415, 0.415, 0.111, 0.415)), (-131, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Sleeper'), 0.435, 0.435, 0.215, 0.435)), (-132, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('All'), 0.508, 0.474, 0.208, 0.488)), (-133, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Drones'), 0.449, 0.54, 0.549, 0.336)), (-134, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Overmind'), 0.619, 0.574, 0.612, 0.522)), (-135, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Seeker'), 0.085, 0.085, 0.085, 0)), (-136, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Triglavian'), 0.477, 0.4, 0.461, 0.202)), (-137, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Drifter'), 0.437, 0.437, 0.437, 0.295)), (-138, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Sleeper'), 0.435, 0.435, 0.435, 0.329)), (-139, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('All'), 0.493, 0.468, 0.492, 0.35)), (-140, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Drones'), 0.449, 0.54, 0.549, 0.264)), (-141, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Overmind'), 0.619, 0.574, 0.612, 0.449)), (-142, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Seeker'), 0.085, 0.085, 0.085, 0)), (-143, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Triglavian'), 0.477, 0.4, 0.461, 0.081)), (-144, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Drifter'), 0.437, 0.437, 0.437, 0.206)), (-145, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Sleeper'), 0.435, 0.435, 0.435, 0.268)), (-146, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('All'), 0.493, 0.468, 0.492, 0.264)), (-147, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Drones'), 0.449, 0.54, 0.549, 0.197)), (-148, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Overmind'), 0.619, 0.574, 0.612, 0.379)), (-149, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Seeker'), 0.085, 0.085, 0.085, 0)), (-150, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Triglavian'), 0.477, 0.4, 0.461, 0.034)), (-151, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Drifter'), 0.437, 0.437, 0.437, 0.121)), (-152, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Sleeper'), 0.435, 0.435, 0.435, 0.215)), (-153, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('All'), 0.493, 0.468, 0.492, 0.196)), # Source: ticket #2265 (-154, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Concord'), 0.324, 0.318, 0.369, 0.372)), (-155, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Sansha'), 0.137, 0.331, 0.332, 0.322)), (-156, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Dark Matter All Tiers')) + _t('Angel'), 0.582, 0.508, 0.457, 0.416)), (-157, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Concord'), 0.121, 0.318, 0.369, 0.372)), (-158, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Sansha'), 0.034, 0.331, 0.332, 0.322)), (-159, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T0/T1/T2')) + _t('Angel'), 0.456, 0.508, 0.457, 0.416)), (-160, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Concord'), 0.025, 0.318, 0.369, 0.372)), (-161, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Sansha'), 0.018, 0.331, 0.332, 0.322)), (-162, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T3 (Some T5 Rooms)')) + _t('Angel'), 0.373, 0.508, 0.457, 0.416)), (-163, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Concord'), 0.008, 0.318, 0.369, 0.372)), (-164, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Sansha'), 0.009, 0.331, 0.332, 0.322)), (-165, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Electrical T4/T5/T6')) + _t('Angel'), 0.3, 0.508, 0.457, 0.416)), (-166, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Concord'), 0.324, 0.107, 0.369, 0.372)), (-167, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Sansha'), 0.148, 0.181, 0.329, 0.328)), (-168, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T0/T1/T2')) + _t('Angel'), 0.587, 0.342, 0.439, 0.39)), (-169, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Concord'), 0.324, 0.016, 0.369, 0.372)), (-170, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Sansha'), 0.148, 0.14, 0.329, 0.328)), (-171, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T3 (Some T5 Rooms)')) + _t('Angel'), 0.587, 0.241, 0.439, 0.39)), (-172, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Concord'), 0.324, 0.004, 0.369, 0.372)), (-173, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Sansha'), 0.148, 0.106, 0.329, 0.328)), (-174, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Firestorm T4/T5/T6')) + _t('Angel'), 0.587, 0.172, 0.439, 0.39)), (-175, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Concord'), 0.324, 0.318, 0.18, 0.372)), (-176, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Sansha'), 0.137, 0.331, 0.166, 0.322)), (-177, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T0/T1/T2')) + _t('Angel'), 0.582, 0.508, 0.295, 0.416)), (-178, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Concord'), 0.324, 0.318, 0.089, 0.372)), (-179, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Sansha'), 0.137, 0.331, 0.108, 0.322)), (-180, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T3 (Some T5 Rooms)')) + _t('Angel'), 0.582, 0.508, 0.203, 0.416)), (-181, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Concord'), 0.324, 0.318, 0.068, 0.372)), (-182, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Sansha'), 0.137, 0.331, 0.073, 0.322)), (-183, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Exotic T4/T5/T6')) + _t('Angel'), 0.582, 0.508, 0.14, 0.416)), (-184, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Concord'), 0.324, 0.318, 0.369, 0.203)), (-185, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Sansha'), 0.137, 0.355, 0.352, 0.16)), (-186, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T0/T1/T2')) + _t('Angel'), 0.59, 0.528, 0.477, 0.286)), (-187, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Concord'), 0.324, 0.318, 0.369, 0.112)), (-188, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Sansha'), 0.137, 0.355, 0.352, 0.05)), (-189, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T3 (Some T5 Rooms)')) + _t('Angel'), 0.59, 0.528, 0.477, 0.197)), (-190, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Concord'), 0.324, 0.318, 0.369, 0.086)), (-191, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Sansha'), 0.137, 0.355, 0.352, 0)), (-192, (_c(_t('NPC')) + _c(_t('Abyssal')) + _c(_t('Gamma T4/T5/T6')) + _t('Angel'), 0.59, 0.528, 0.477, 0.126)), (-193, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Drifter Entities'), 0.128, 0.375, 0.383, 0.383)), (-194, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Rogue Drone Entities'), 0.104, 0.147, 0.147, 0.102)), (-195, (_c(_t('NPC')) + _c(_t('Invasion')) + _t('Sleeper Entities'), 0.563, 0.563, 0.563, 0.563))]) class TargetProfile: # also determined import/export order - VERY IMPORTANT DAMAGE_TYPES = ('em', 'thermal', 'kinetic', 'explosive') _idealTarget = None _builtins = None def __init__(self, *args, **kwargs): self.builtin = False self.update(*args, **kwargs) @reconstructor def init(self): self.builtin = False def update(self, emAmount=0, thermalAmount=0, kineticAmount=0, explosiveAmount=0, maxVelocity=None, signatureRadius=None, radius=None, hp=None): self.emAmount = emAmount self.thermalAmount = thermalAmount self.kineticAmount = kineticAmount self.explosiveAmount = explosiveAmount self._maxVelocity = maxVelocity self._signatureRadius = signatureRadius self._radius = radius self._hp = hp @classmethod def getBuiltinList(cls): if cls._builtins is None: cls.__generateBuiltins() return list(cls._builtins.values()) @classmethod def getBuiltinById(cls, id): if cls._builtins is None: cls.__generateBuiltins() return cls._builtins.get(id) @classmethod def __generateBuiltins(cls): cls._builtins = OrderedDict() for id, data in BUILTINS.items(): rawName = data[0] data = data[1:] profile = TargetProfile(*data) profile.ID = id profile.rawName = rawName profile.builtin = True cls._builtins[id] = profile @classmethod def getIdeal(cls): if cls._idealTarget is None: cls._idealTarget = cls( emAmount=0, thermalAmount=0, kineticAmount=0, explosiveAmount=0, maxVelocity=0, signatureRadius=None, radius=0) cls._idealTarget.rawName = _t('Ideal Target') cls._idealTarget.ID = 0 cls._idealTarget.builtin = True return cls._idealTarget @property def maxVelocity(self): return self._maxVelocity or 0 @maxVelocity.setter def maxVelocity(self, val): self._maxVelocity = val @property def signatureRadius(self): if self._signatureRadius is None or self._signatureRadius == -1: return math.inf return self._signatureRadius @signatureRadius.setter def signatureRadius(self, val): if val is not None and math.isinf(val): val = None self._signatureRadius = val @property def radius(self): return self._radius or 0 @radius.setter def radius(self, val): self._radius = val @property def hp(self): if self._hp is None or self._hp == -1: return math.inf return self._hp @hp.setter def hp(self, val): if val is not None and math.isinf(val): val = None self._hp = val @classmethod def importPatterns(cls, text): lines = re.split('[\n\r]+', text) patterns = [] numPatterns = 0 # When we import damage profiles, we create new ones and update old ones. To do this, get a list of current # patterns to allow lookup lookup = {} current = eos.db.getTargetProfileList() for pattern in current: lookup[pattern.rawName] = pattern for line in lines: try: if line.strip()[0] == "#": # comments continue line = line.split('#', 1)[0] # allows for comments type, data = line.rsplit('=', 1) type, data = type.strip(), [d.strip() for d in data.split(',')] except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Data isn't in correct format, continue to next line.") continue if type not in ("TargetProfile", "TargetResists"): continue numPatterns += 1 name, dataRes, dataMisc = data[0], data[1:5], data[5:8] fields = {} for index, val in enumerate(dataRes): val = float(val) if val else 0 if math.isinf(val): val = 0 try: assert 0 <= val <= 100 fields["%sAmount" % cls.DAMAGE_TYPES[index]] = val / 100 except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Caught unhandled exception in import patterns.") continue if len(dataMisc) == 3: for index, val in enumerate(dataMisc): try: fieldName = ("maxVelocity", "signatureRadius", "radius")[index] except IndexError: break val = float(val) if val else 0 if fieldName != "signatureRadius" and math.isinf(val): val = 0 fields[fieldName] = val if len(fields) in (4, 7): # Avoid possible blank lines if name.strip() in lookup: pattern = lookup[name.strip()] pattern.update(**fields) eos.db.save(pattern) else: pattern = TargetProfile(**fields) pattern.rawName = name.strip() eos.db.save(pattern) patterns.append(pattern) eos.db.commit() return patterns, numPatterns EXPORT_FORMAT = "TargetProfile = %s,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f\n" @classmethod def exportPatterns(cls, *patterns): out = "# Exported from pyfa\n#\n" out += "# Values are in following format:\n" out += "# TargetProfile = [name],[EM %],[Thermal %],[Kinetic %],[Explosive %],[Max velocity m/s],[Signature radius m],[Radius m]\n\n" for dp in patterns: out += cls.EXPORT_FORMAT % ( dp.rawName, dp.emAmount * 100, dp.thermalAmount * 100, dp.kineticAmount * 100, dp.explosiveAmount * 100, dp.maxVelocity, dp.signatureRadius, dp.radius ) return out.strip() @property def name(self): return self.rawName @property def fullName(self): categories, tail = self.__parseRawName() return '{}{}'.format(''.join('[{}]'.format(c) for c in categories), tail) @property def shortName(self): return self.__parseRawName()[1] @property def hierarchy(self): return self.__parseRawName()[0] def __parseRawName(self): hierarchy = [] remainingName = self.rawName.strip() if self.rawName else '' while True: start, end = remainingName.find('['), remainingName.find(']') if start == -1 or end == -1: return hierarchy, remainingName splitter = remainingName.find('|') if splitter != -1 and splitter == start - 1: return hierarchy, remainingName[1:] hierarchy.append(remainingName[start + 1:end]) remainingName = remainingName[end + 1:].strip() def __deepcopy__(self, memo): p = TargetProfile( self.emAmount, self.thermalAmount, self.kineticAmount, self.explosiveAmount, self._maxVelocity, self._signatureRadius, self._radius) p.rawName = "%s copy" % self.rawName return p ================================================ FILE: eos/saveddata/user.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import hashlib import random import string from sqlalchemy.orm import validates class User: def __init__(self, username, password=None, admin=False): self.username = username if password is not None: self.encodeAndSetPassword(password) self.admin = admin def encodeAndSetPassword(self, pw): h = hashlib.new("sha256") salt = "".join([random.choice(string.letters) for _ in range(32)]) h.update(pw) h.update(salt) self.password = ("%s%s" % (h.hexdigest(), salt)) def isPasswordValid(self, pw): if self.password is None: return False salt = self.password[-32:] h = hashlib.new("sha256") h.update(pw) h.update(salt) return self.password == ("%s%s" % (h.hexdigest(), salt)) @validates("ID", "username", "password", "admin") def validator(self, key, val): map = { "ID" : lambda _val: isinstance(_val, int), "username": lambda _val: isinstance(_val, str), "password": lambda _val: isinstance(_val, str) and len(_val) == 96, "admin" : lambda _val: isinstance(_val, bool) } if not map[key](val): raise ValueError(str(val) + " is not a valid value for " + key) else: return val ================================================ FILE: eos/utils/__init__.py ================================================ ================================================ FILE: eos/utils/cycles.py ================================================ # Borrowed from new eos from utils.repr import makeReprStr class CycleInfo: def __init__(self, activeTime, inactiveTime, quantity, isInactivityReload): self.activeTime = activeTime self.inactiveTime = inactiveTime self.quantity = quantity self.isInactivityReload = isInactivityReload @property def averageTime(self): return self.activeTime + self.inactiveTime def iterCycles(self): i = 0 while i < self.quantity: yield self.activeTime, self.inactiveTime, self.isInactivityReload i += 1 def _getCycleQuantity(self): return self.quantity def _getTime(self): return (self.activeTime + self.inactiveTime) * self.quantity def __repr__(self): spec = ['activeTime', 'inactiveTime', 'quantity', 'isInactivityReload'] return makeReprStr(self, spec) class CycleSequence: def __init__(self, sequence, quantity): self.sequence = sequence self.quantity = quantity @property def averageTime(self): """Get average time between cycles.""" return self._getTime() / self._getCycleQuantity() def iterCycles(self): i = 0 while i < self.quantity: for cycleInfo in self.sequence: for cycleTime, inactiveTime, isInactivityReload in cycleInfo.iterCycles(): yield cycleTime, inactiveTime, isInactivityReload i += 1 def _getCycleQuantity(self): quantity = 0 for item in self.sequence: quantity += item._getCycleQuantity() return quantity def _getTime(self): time = 0 for item in self.sequence: time += item._getTime() return time def __repr__(self): spec = ['sequence', 'quantity'] return makeReprStr(self, spec) ================================================ FILE: eos/utils/default.py ================================================ class DEFAULT: """Singleton class to signify default argument value.""" pass ================================================ FILE: eos/utils/float.py ================================================ """ Sometimes use of floats may lead to undesirable results, e.g. int(2.3 / 0.1) = 22. We cannot afford to use different number representations (e.g. representations provided by decimal or fraction modules), thus consequences are worked around by this module. """ import math import sys # As we will be rounding numbers after operations (which introduce higher error # than base float representation error), we need to keep less significant # numbers than for single float number w/o operations keepDigits = int(sys.float_info.dig / 2) def floatUnerr(value): """Round possible float number error, killing some precision in process.""" if value in (0, math.inf): return value # Find round factor, taking into consideration that we want to keep at least # predefined amount of significant digits roundFactor = int(keepDigits - math.ceil(math.log10(abs(value)))) return round(value, roundFactor) ================================================ FILE: eos/utils/pyinst_support.py ================================================ """ Slightly modified version of function taken from here: https://github.com/pyinstaller/pyinstaller/issues/1905#issuecomment-525221546 """ import pkgutil def iterNamespace(name, path): """Pyinstaller-compatible namespace iteration. Yields the name of all modules found at a given Fully-qualified path. To have it running with pyinstaller, it requires to ensure a hook inject the "hidden" modules from your plugins folder inside the executable: - if your plugins are under the ``myappname/pluginfolder`` module - create a file ``specs/hook-.py`` - content of this file should be: .. code-block:: python from PyInstaller.utils.hooks import collect_submodules hiddenimports = collect_submodules('') """ prefix = name + "." for p in pkgutil.iter_modules(path, prefix): yield p[1] # special handling when the package is bundled with PyInstaller 3.5 # See https://github.com/pyinstaller/pyinstaller/issues/1905#issuecomment-445787510 toc = set() for importer in pkgutil.iter_importers(name.partition(".")[0]): if hasattr(importer, 'toc'): toc |= importer.toc for name in toc: if name.startswith(prefix): yield name ================================================ FILE: eos/utils/round.py ================================================ import math def roundToPrec(val, prec, nsValue=None): """ nsValue: custom value which should be used to determine normalization shift """ # We're not rounding integers anyway # Also make sure that we do not ask to calculate logarithm of zero if int(val) == val: return int(val) roundFactor = int(prec - math.floor(math.log10(abs(val if nsValue is None else nsValue))) - 1) # But we don't want to round integers if roundFactor < 0: roundFactor = 0 # Do actual rounding val = round(val, roundFactor) # Make sure numbers with .0 part designating float don't get through if int(val) == val: val = int(val) return val def roundDec(val, prec): if int(val) == val: return int(val) return round(val, prec) ================================================ FILE: eos/utils/spoolSupport.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math from collections import namedtuple from eos.const import SpoolType from eos.utils.float import floatUnerr SpoolOptions = namedtuple('SpoolOptions', ('spoolType', 'spoolAmount', 'force')) def calculateSpoolup(modMaxValue, modStepValue, modCycleTime, spoolType, spoolAmount): """ Calculate damage multiplier increment based on passed parameters. Module cycle time is specified in seconds. Returns spoolup value, amount of cycles to reach it and time to reach it. """ if not modMaxValue or not modStepValue: return 0, 0, 0 if spoolType == SpoolType.SPOOL_SCALE: # Find out at which point of spoolup scale we're on, find out how many cycles # is enough to reach it and recalculate spoolup value for that amount of cycles cycles = math.ceil(floatUnerr(modMaxValue * spoolAmount / modStepValue)) spoolValue = min(modMaxValue, cycles * modStepValue) return spoolValue, cycles, cycles * modCycleTime elif spoolType == SpoolType.CYCLE_SCALE: # For cycle scale, find out max amount of cycles and scale against it cycles = round(spoolAmount * math.ceil(floatUnerr(modMaxValue / modStepValue))) spoolValue = min(modMaxValue, cycles * modStepValue) return spoolValue, cycles, cycles * modCycleTime elif spoolType == SpoolType.TIME: cycles = min( # How many full cycles mod had by passed time math.floor(floatUnerr(spoolAmount / modCycleTime)), # Max amount of cycles math.ceil(floatUnerr(modMaxValue / modStepValue))) spoolValue = min(modMaxValue, cycles * modStepValue) return spoolValue, cycles, cycles * modCycleTime elif spoolType == SpoolType.CYCLES: cycles = min( # Consider full cycles only math.floor(spoolAmount), # Max amount of cycles math.ceil(floatUnerr(modMaxValue / modStepValue))) spoolValue = min(modMaxValue, cycles * modStepValue) return spoolValue, cycles, cycles * modCycleTime else: return 0, 0, 0 def resolveSpoolOptions(spoolOptions, module): # Rely on passed options if they are forcing us to do so if spoolOptions is not None and spoolOptions.force: return spoolOptions.spoolType, spoolOptions.spoolAmount # If we're not forced to use options and module has options set, prefer on-module values elif module is not None and module.spoolType is not None: return module.spoolType, module.spoolAmount # Otherwise - rely on passed options elif spoolOptions is not None: return spoolOptions.spoolType, spoolOptions.spoolAmount else: return None, None ================================================ FILE: eos/utils/stats.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . # =============================================================================== import math from collections import defaultdict from eos.utils.float import floatUnerr from utils.repr import makeReprStr def _t(x): return x class BreacherInfo: def __init__(self, absolute, relative): self.absolute = absolute self.relative = relative def __mul__(self, mul): return type(self)(absolute=self.absolute * mul, relative=self.relative * mul) def __imul__(self, mul): if mul == 1: return self self.absolute *= mul self.relative *= mul return self def __truediv__(self, div): return type(self)(absolute=self.absolute / div, relative=self.relative / div) class DmgTypes: """ Container for volley stats, which stores breacher pod data in raw form, before application of it to target profile. """ def __init__(self, em, thermal, kinetic, explosive): self._em = em self._thermal = thermal self._kinetic = kinetic self._explosive = explosive self._breachers = defaultdict(lambda: []) self.__profile = None # Cached data self.__cached_em = None self.__cached_thermal = None self.__cached_kinetic = None self.__cached_explosive = None self.__cached_pure = None self.__cached_total = None @classmethod def default(cls): return cls(0, 0, 0, 0) def _clear_cached(self): self.__cached_em = None self.__cached_thermal = None self.__cached_kinetic = None self.__cached_explosive = None self.__cached_pure = None self.__cached_total = None def add_breacher(self, key, data): self._breachers[key].append(data) @property def profile(self): return self.__profile @profile.setter def profile(self, profile): self.__profile = profile self._clear_cached() @property def em(self): if self.__cached_em is not None: return self.__cached_em dmg = self._em if self.profile is not None: dmg *= 1 - getattr(self.profile, "emAmount", 0) self.__cached_em = dmg return dmg @property def thermal(self): if self.__cached_thermal is not None: return self.__cached_thermal dmg = self._thermal if self.profile is not None: dmg *= 1 - getattr(self.profile, "thermalAmount", 0) self.__cached_thermal = dmg return dmg @property def kinetic(self): if self.__cached_kinetic is not None: return self.__cached_kinetic dmg = self._kinetic if self.profile is not None: dmg *= 1 - getattr(self.profile, "kineticAmount", 0) self.__cached_kinetic = dmg return dmg @property def explosive(self): if self.__cached_explosive is not None: return self.__cached_explosive dmg = self._explosive if self.profile is not None: dmg *= 1 - getattr(self.profile, "explosiveAmount", 0) self.__cached_explosive = dmg return dmg @property def pure(self): if self.__cached_pure is not None: return self.__cached_pure if self.profile is None: dmg = sum( max((b.absolute for b in bs), default=0) for bs in self._breachers.values()) else: dmg = sum( max((min(b.absolute, b.relative * getattr(self.profile, "hp", math.inf)) for b in bs), default=0) for bs in self._breachers.values()) self.__cached_pure = dmg return dmg @property def total(self): if self.__cached_total is not None: return self.__cached_total dmg = self.em + self.thermal + self.kinetic + self.explosive + self.pure self.__cached_total = dmg return dmg # Iterator is needed to support tuple-style unpacking def __iter__(self): yield self.em yield self.thermal yield self.kinetic yield self.explosive yield self.pure yield self.total def __eq__(self, other): if not isinstance(other, DmgTypes): return NotImplemented # Round for comparison's sake because often damage profiles are # generated from data which includes float errors return ( floatUnerr(self._em) == floatUnerr(other._em) and floatUnerr(self._thermal) == floatUnerr(other._thermal) and floatUnerr(self._kinetic) == floatUnerr(other._kinetic) and floatUnerr(self._explosive) == floatUnerr(other._explosive) and sorted(self._breachers) == sorted(other._breachers) and self.profile == other.profile) def __add__(self, other): new = type(self)( em=self._em + other._em, thermal=self._thermal + other._thermal, kinetic=self._kinetic + other._kinetic, explosive=self._explosive + other._explosive) new.profile = self.profile for k, v in self._breachers.items(): new._breachers[k].extend(v) for k, v in other._breachers.items(): new._breachers[k].extend(v) return new def __iadd__(self, other): self._em += other._em self._thermal += other._thermal self._kinetic += other._kinetic self._explosive += other._explosive for k, v in other._breachers.items(): self._breachers[k].extend(v) self._clear_cached() return self def __mul__(self, mul): new = type(self)( em=self._em * mul, thermal=self._thermal * mul, kinetic=self._kinetic * mul, explosive=self._explosive * mul) new.profile = self.profile for k, v in self._breachers.items(): new._breachers[k] = [b * mul for b in v] return new def __imul__(self, mul): if mul == 1: return self self._em *= mul self._thermal *= mul self._kinetic *= mul self._explosive *= mul for v in self._breachers.values(): for b in v: b *= mul self._clear_cached() return self def __truediv__(self, div): new = type(self)( em=self._em / div, thermal=self._thermal / div, kinetic=self._kinetic / div, explosive=self._explosive / div) new.profile = self.profile for k, v in self._breachers.items(): new._breachers[k] = [b / div for b in v] return new def __bool__(self): return any(( self._em, self._thermal, self._kinetic, self._explosive, any(b.absolute or b.relative for b in self._breachers))) def __repr__(self): class_name = type(self).__name__ return (f'<{class_name}(em={self._em}, thermal={self._thermal}, kinetic={self._kinetic}, ' f'explosive={self._explosive}, breachers={len(self._breachers)})>') @staticmethod def names(short=None, postProcessor=None, includePure=False): value = [_t('em'), _t('th'), _t('kin'), _t('exp')] if short else [_t('em'), _t('thermal'), _t('kinetic'), _t('explosive')] if includePure: value += [_t('pure')] if postProcessor: value = [postProcessor(x) for x in value] return value class RRTypes: """Container for tank data stats.""" def __init__(self, shield, armor, hull, capacitor): self.shield = shield self.armor = armor self.hull = hull self.capacitor = capacitor # Iterator is needed to support tuple-style unpacking def __iter__(self): yield self.shield yield self.armor yield self.hull yield self.capacitor def __eq__(self, other): if not isinstance(other, RRTypes): return NotImplemented # Round for comparison's sake because often tanking numbers are # generated from data which includes float errors return ( floatUnerr(self.shield) == floatUnerr(other.shield) and floatUnerr(self.armor) == floatUnerr(other.armor) and floatUnerr(self.hull) == floatUnerr(other.hull) and floatUnerr(self.capacitor) == floatUnerr(other.capacitor)) def __bool__(self): return any((self.shield, self.armor, self.hull, self.capacitor)) def __add__(self, other): return type(self)( shield=self.shield + other.shield, armor=self.armor + other.armor, hull=self.hull + other.hull, capacitor=self.capacitor + other.capacitor) def __iadd__(self, other): self.shield += other.shield self.armor += other.armor self.hull += other.hull self.capacitor += other.capacitor return self def __mul__(self, mul): return type(self)( shield=self.shield * mul, armor=self.armor * mul, hull=self.hull * mul, capacitor=self.capacitor * mul) def __imul__(self, mul): if mul == 1: return self.shield *= mul self.armor *= mul self.hull *= mul self.capacitor *= mul return self def __truediv__(self, div): return type(self)( shield=self.shield / div, armor=self.armor / div, hull=self.hull / div, capacitor=self.capacitor / div) def __itruediv__(self, div): if div == 1: return self self.shield /= div self.armor /= div self.hull /= div self.capacitor /= div return self def __repr__(self): spec = RRTypes.names(False) return makeReprStr(self, spec) @staticmethod def names(ehpOnly=True, postProcessor=None): value = ['shield', 'armor', 'hull'] if not ehpOnly: value.append('capacitor') if postProcessor: value = [postProcessor(x) for x in value] return value ================================================ FILE: graphs/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .gui.canvasPanel import graphFrame_enabled from .gui.frame import GraphFrame ================================================ FILE: graphs/calc.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from service.settings import GraphSettings def checkLockRange(src, distance): if distance is None: return True if GraphSettings.getInstance().get('ignoreLockRange'): return True return distance <= src.item.maxTargetRange def checkDroneControlRange(src, distance): if distance is None: return True if GraphSettings.getInstance().get('ignoreDCR'): return True return distance <= src.item.extraAttributes['droneControlRange'] ================================================ FILE: graphs/data/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from . import fitDamageStats from . import fitEwarStats from . import fitRemoteReps from . import fitShieldRegen from . import fitCapacitor from . import fitMobility from . import fitWarpTime from . import fitLockTime # Hidden graphs, available via ctrl-alt-g from . import fitEcmBurstScanresDamps ================================================ FILE: graphs/data/base/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .cache import FitDataCache from .defs import XDef, YDef, VectorDef, Input, InputCheckbox from .getter import PointGetter, SmoothPointGetter from .graph import FitGraph ================================================ FILE: graphs/data/base/cache.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= class FitDataCache: def __init__(self): self._data = {} def clearForFit(self, fitID): if fitID in self._data: del self._data[fitID] def clearAll(self): self._data.clear() ================================================ FILE: graphs/data/base/defs.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import namedtuple VectorDef = namedtuple('VectorDef', ('lengthHandle', 'lengthUnit', 'angleHandle', 'angleUnit', 'label')) class YDef: def __init__(self, handle, unit, label, selectorLabel=None, hidden=False): self.handle = handle self.unit = unit self.label = label self._selectorLabel = selectorLabel self.hidden = hidden @property def selectorLabel(self): if self._selectorLabel is not None: return self._selectorLabel return self.label def __hash__(self): return hash((self.handle, self.unit, self.label, self._selectorLabel)) def __eq__(self, other): if not isinstance(other, YDef): return False return all(( self.handle == other.handle, self.unit == other.unit, self.label == other.label, self._selectorLabel == other._selectorLabel)) class XDef: def __init__(self, handle, unit, label, mainInput, selectorLabel=None, hidden=False): self.handle = handle self.unit = unit self.label = label self.mainInput = mainInput self._selectorLabel = selectorLabel self.hidden = hidden @property def selectorLabel(self): if self._selectorLabel is not None: return self._selectorLabel return self.label def __hash__(self): return hash((self.handle, self.unit, self.label, self.mainInput, self._selectorLabel)) def __eq__(self, other): if not isinstance(other, XDef): return False return all(( self.handle == other.handle, self.unit == other.unit, self.label == other.label, self.mainInput == other.mainInput, self._selectorLabel == other._selectorLabel)) class Input: def __init__(self, handle, unit, label, iconID, defaultValue, defaultRange, mainTooltip=None, secondaryTooltip=None, conditions=()): self.handle = handle self.unit = unit self.label = label self.iconID = iconID self.defaultValue = defaultValue self.defaultRange = defaultRange self.mainTooltip = mainTooltip self.secondaryTooltip = secondaryTooltip # Format: ((x condition, y condition), (x condition, y condition), ...) self.conditions = tuple(conditions) def __hash__(self): return hash((self.handle, self.unit, self.label, self.iconID, self.defaultValue, self.defaultRange, self.mainTooltip, self.secondaryTooltip, self.conditions)) def __eq__(self, other): if not isinstance(other, Input): return False return all(( self.handle == other.handle, self.unit == other.unit, self.label == other.label, self.iconID == other.iconID, self.defaultValue == other.defaultValue, self.defaultRange == other.defaultRange, self.mainTooltip == other.mainTooltip, self.secondaryTooltip == other.secondaryTooltip, self.conditions == other.conditions)) class InputCheckbox: def __init__(self, handle, label, defaultValue, conditions=()): self.handle = handle self.label = label self.defaultValue = defaultValue # Format: ((x condition, y condition), (x condition, y condition), ...) self.conditions = tuple(conditions) def __hash__(self): return hash((self.handle, self.label, self.defaultValue, self.conditions)) def __eq__(self, other): if not isinstance(other, Input): return False return all(( self.handle == other.handle, self.label == other.label, self.defaultValue == other.defaultValue, self.conditions == other.conditions)) ================================================ FILE: graphs/data/base/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from abc import ABCMeta, abstractmethod class PointGetter(metaclass=ABCMeta): def __init__(self, graph): self.graph = graph @abstractmethod def getRange(self, xRange, miscParams, src, tgt): raise NotImplementedError @abstractmethod def getPoint(self, x, miscParams, src, tgt): raise NotImplementedError class SmoothPointGetter(PointGetter, metaclass=ABCMeta): _baseResolution = 200 _extraDepth = 0 def getRange(self, xRange, miscParams, src, tgt): xs = [] ys = [] commonData = self._getCommonData(miscParams=miscParams, src=src, tgt=tgt) def addExtraPoints(x1, y1, x2, y2, depth): if depth <= 0 or y1 == y2: return newX = (x1 + x2) / 2 newY = self._calculatePoint(x=newX, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) addExtraPoints(x1=prevX, y1=prevY, x2=newX, y2=newY, depth=depth - 1) xs.append(newX) ys.append(newY) addExtraPoints(x1=newX, y1=newY, x2=x2, y2=y2, depth=depth - 1) prevX = None prevY = None # Go through X points defined by our resolution setting for x in self._xIterLinear(xRange): y = self._calculatePoint(x=x, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) if prevX is not None and prevY is not None: # And if Y values of adjacent data points are not equal, add extra points # depending on extra depth setting addExtraPoints(x1=prevX, y1=prevY, x2=x, y2=y, depth=self._extraDepth) prevX = x prevY = y xs.append(x) ys.append(y) return xs, ys def getPoint(self, x, miscParams, src, tgt): commonData = self._getCommonData(miscParams=miscParams, src=src, tgt=tgt) return self._calculatePoint(x=x, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) def _xIterLinear(self, xRange): xLow = min(xRange) xHigh = max(xRange) # Resolution defines amount of ranges between points here, # not amount of points step = (xHigh - xLow) / self._baseResolution if step == 0 or math.isnan(step): yield xLow else: for i in range(self._baseResolution + 1): yield xLow + step * i def _getCommonData(self, miscParams, src, tgt): return {} @abstractmethod def _calculatePoint(self, x, miscParams, src, tgt, commonData): raise NotImplementedError ================================================ FILE: graphs/data/base/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from abc import ABCMeta, abstractmethod from collections import OrderedDict from eos.utils.float import floatUnerr from service.const import GraphCacheCleanupReason class FitGraph(metaclass=ABCMeta): # UI stuff hidden = False views = [] viewMap = {} @classmethod def register(cls): FitGraph.views.append(cls) FitGraph.viewMap[cls.internalName] = cls def __init__(self): # Format: {(fit ID, target type, target ID): {(xSpec, ySpec): (xs, ys)}} self._plotCache = {} # Format: {(fit ID, target type, target ID): {(xSpec, ySpec): {x: y}}} self._pointCache = {} @property @abstractmethod def name(self): raise NotImplementedError @property @abstractmethod def internalName(self): raise NotImplementedError @property @abstractmethod def yDefs(self): raise NotImplementedError @property def yDefMap(self): return OrderedDict(((y.handle, y.unit), y) for y in self.yDefs) @property @abstractmethod def xDefs(self): raise NotImplementedError @property def xDefMap(self): return OrderedDict(((x.handle, x.unit), x) for x in self.xDefs) @property def inputs(self): raise NotImplementedError @property def inputMap(self): return OrderedDict(((i.handle, i.unit), i) for i in self.inputs) checkboxes = () @property def checkboxesMap(self): return OrderedDict((ec.handle, ec) for ec in self.checkboxes) hasTargets = False srcVectorDef = None tgtVectorDef = None srcExtraCols = () tgtExtraCols = () usesHpEffectivity = False def getPlotPoints(self, mainInput, miscInputs, xSpec, ySpec, src, tgt=None): cacheKey = self._makeCacheKey(src=src, tgt=tgt) try: plotData = self._plotCache[cacheKey][(ySpec, xSpec)] except KeyError: plotData = self._calcPlotPoints( mainInput=mainInput, miscInputs=miscInputs, xSpec=xSpec, ySpec=ySpec, src=src, tgt=tgt) self._plotCache.setdefault(cacheKey, {})[(ySpec, xSpec)] = plotData return plotData def getPoint(self, x, miscInputs, xSpec, ySpec, src, tgt=None): cacheKey = self._makeCacheKey(src=src, tgt=tgt) try: y = self._pointCache[cacheKey][(ySpec, xSpec)][x] except KeyError: y = self._calcPoint(x=x, miscInputs=miscInputs, xSpec=xSpec, ySpec=ySpec, src=src, tgt=tgt) self._pointCache.setdefault(cacheKey, {}).setdefault((ySpec, xSpec), {})[x] = y return y def clearCache(self, reason, extraData=None): caches = (self._plotCache, self._pointCache) plotKeysToClear = set() # If fit changed - clear plots which concern this fit if reason in (GraphCacheCleanupReason.fitChanged, GraphCacheCleanupReason.fitRemoved): for cache in caches: for cacheKey in cache: cacheFitID, cacheTgtType, cacheTgtID = cacheKey if extraData == cacheFitID: plotKeysToClear.add(cacheKey) elif cacheTgtType == 'fit' and extraData == cacheTgtID: plotKeysToClear.add(cacheKey) # Same for profile elif reason in (GraphCacheCleanupReason.profileChanged, GraphCacheCleanupReason.profileRemoved): for cache in caches: for cacheKey in cache: cacheFitID, cacheTgtType, cacheTgtID = cacheKey if cacheTgtType == 'profile' and extraData == cacheTgtID: plotKeysToClear.add(cacheKey) # Target fit resist mode changed elif reason == GraphCacheCleanupReason.resistModeChanged: for cache in caches: for cacheKey in cache: cacheFitID, cacheTgtType, cacheTgtID = cacheKey if cacheTgtType == 'fit' and extraData == cacheTgtID: plotKeysToClear.add(cacheKey) # Wipe out whole plot cache otherwise else: for cache in caches: for cacheKey in cache: plotKeysToClear.add(cacheKey) # Do actual cleanup for cache in caches: for cacheKey in plotKeysToClear: try: del cache[cacheKey] except KeyError: pass # Process any internal caches graphs might have self._clearInternalCache(reason, extraData) def _makeCacheKey(self, src, tgt): if tgt is not None and tgt.isFit: tgtType = 'fit' tgtItemID = tgt.item.ID elif tgt is not None and tgt.isProfile: tgtType = 'profile' tgtItemID = tgt.item.ID else: tgtType = None tgtItemID = None cacheKey = (src.item.ID, tgtType, tgtItemID) return cacheKey def _clearInternalCache(self, reason, extraData): return # Calculation stuff def _calcPlotPoints(self, mainInput, miscInputs, xSpec, ySpec, src, tgt): mainParamRange = self._normalizeMain(mainInput=mainInput, src=src, tgt=tgt) miscParams = self._normalizeMisc(miscInputs=miscInputs, src=src, tgt=tgt) mainParamRange = self._limitMain(mainParamRange=mainParamRange, src=src, tgt=tgt) miscParams = self._limitMisc(miscParams=miscParams, src=src, tgt=tgt) xs, ys = self._getPlotPoints( xRange=mainParamRange[1], miscParams=miscParams, xSpec=xSpec, ySpec=ySpec, src=src, tgt=tgt) ys = self._denormalizeValues(values=ys, axisSpec=ySpec, src=src, tgt=tgt) # Sometimes x denormalizer may fail (e.g. during conversion of 0 ship speed to %). # If both inputs and outputs are in %, do some extra processing to at least have # proper graph which shows the same value over whole specified relative parameter # range try: xs = self._denormalizeValues(values=xs, axisSpec=xSpec, src=src, tgt=tgt) except ZeroDivisionError: if mainInput.unit == xSpec.unit == '%' and len(set(floatUnerr(y) for y in ys)) == 1: xs = [min(mainInput.value), max(mainInput.value)] ys = [ys[0], ys[0]] else: raise else: # Same for NaN which means we tried to denormalize infinity values, which might be the # case for the ideal target profile with infinite signature radius if mainInput.unit == xSpec.unit == '%' and all(math.isnan(x) for x in xs): xs = [min(mainInput.value), max(mainInput.value)] ys = [ys[0], ys[0]] return xs, ys def _calcPoint(self, x, miscInputs, xSpec, ySpec, src, tgt): x = self._normalizeValue(value=x, axisSpec=xSpec, src=src, tgt=tgt) miscParams = self._normalizeMisc(miscInputs=miscInputs, src=src, tgt=tgt) miscParams = self._limitMisc(miscParams=miscParams, src=src, tgt=tgt) y = self._getPoint(x=x, miscParams=miscParams, xSpec=xSpec, ySpec=ySpec, src=src, tgt=tgt) y = self._denormalizeValue(value=y, axisSpec=ySpec, src=src, tgt=tgt) return y _normalizers = {} def _normalizeMain(self, mainInput, src, tgt): key = (mainInput.handle, mainInput.unit) if key in self._normalizers: normalizer = self._normalizers[key] mainParamRange = (mainInput.handle, tuple(normalizer(v, src, tgt) for v in mainInput.value)) else: mainParamRange = (mainInput.handle, mainInput.value) return mainParamRange def _normalizeMisc(self, miscInputs, src, tgt): miscParams = {} for miscInput in miscInputs: key = (miscInput.handle, miscInput.unit) if key in self._normalizers: normalizer = self._normalizers[key] miscParams[miscInput.handle] = normalizer(miscInput.value, src, tgt) else: miscParams[miscInput.handle] = miscInput.value return miscParams def _normalizeValue(self, value, axisSpec, src, tgt): key = (axisSpec.handle, axisSpec.unit) if key in self._normalizers: normalizer = self._normalizers[key] value = normalizer(value, src, tgt) return value _limiters = {} def _limitMain(self, mainParamRange, src, tgt): mainHandle, mainValue = mainParamRange if mainHandle in self._limiters: limiter = self._limiters[mainHandle] mainParamRange = (mainHandle, tuple(self.__limitToRange(v, limiter(src, tgt)) for v in mainValue)) return mainParamRange def _limitMisc(self, miscParams, src, tgt): for miscHandle in miscParams: if miscHandle in self._limiters: limiter = self._limiters[miscHandle] miscValue = miscParams[miscHandle] miscParams[miscHandle] = self.__limitToRange(miscValue, limiter(src, tgt)) return miscParams @staticmethod def __limitToRange(val, limitRange): if val is None: return None val = max(val, min(limitRange)) val = min(val, max(limitRange)) return val _getters = {} def _getPlotPoints(self, xRange, miscParams, xSpec, ySpec, src, tgt): try: getterClass = self._getters[(xSpec.handle, ySpec.handle)] except KeyError: return [], [] else: getter = getterClass(graph=self) return getter.getRange(xRange=xRange, miscParams=miscParams, src=src, tgt=tgt) def _getPoint(self, x, miscParams, xSpec, ySpec, src, tgt): try: getterClass = self._getters[(xSpec.handle, ySpec.handle)] except KeyError: return [], [] else: getter = getterClass(graph=self) return getter.getPoint(x=x, miscParams=miscParams, src=src, tgt=tgt) _denormalizers = {} def _denormalizeValues(self, values, axisSpec, src, tgt): key = (axisSpec.handle, axisSpec.unit) if key in self._denormalizers: denormalizer = self._denormalizers[key] values = [denormalizer(v, src, tgt) for v in values] return values def _denormalizeValue(self, value, axisSpec, src, tgt): key = (axisSpec.handle, axisSpec.unit) if key in self._denormalizers: denormalizer = self._denormalizers[key] value = denormalizer(value, src, tgt) return value ================================================ FILE: graphs/data/fitCapacitor/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitCapacitorGraph FitCapacitorGraph.register() ================================================ FILE: graphs/data/fitCapacitor/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from graphs.data.base import SmoothPointGetter class Time2CapAmountGetter(SmoothPointGetter): def getRange(self, xRange, miscParams, src, tgt): # Use smooth getter when we're not using cap sim if not miscParams['useCapsim']: return super().getRange(xRange=xRange, miscParams=miscParams, src=src, tgt=tgt) capAmountT0 = miscParams['capAmountT0'] or 0 capSimDataRaw = src.item.getCapSimData(startingCap=capAmountT0) # Same here, no cap sim data - use smooth getter which considers only regen if not capSimDataRaw: return super().getRange(xRange=xRange, miscParams=miscParams, src=src, tgt=tgt) capSimDataMaxTime = capSimDataRaw[-1][0] minTime, maxTime = xRange maxTime = min(maxTime, capSimDataMaxTime) maxPointXDistance = (maxTime - minTime) / self._baseResolution capSimDataInRange = {k: v for k, v in capSimDataRaw if minTime <= k <= maxTime} prevTime = minTime xs = [] ys = [] capSimDataBefore = {k: v for k, v in capSimDataRaw if k < minTime} # When time range lies to the right of last cap sim data point, return nothing if len(capSimDataBefore) > 0 and max(capSimDataBefore) == capSimDataMaxTime: return xs, ys maxCapAmount = src.item.ship.getModifiedItemAttr('capacitorCapacity') capRegenTime = src.item.ship.getModifiedItemAttr('rechargeRate') / 1000 def plotCapRegen(prevTime, prevCap, currentTime): subrangeAmount = math.ceil((currentTime - prevTime) / maxPointXDistance) subrangeLength = (currentTime - prevTime) / subrangeAmount for i in range(1, subrangeAmount + 1): subrangeTime = prevTime + subrangeLength * i subrangeCap = calculateCapAmount( maxCapAmount=maxCapAmount, capRegenTime=capRegenTime, capAmountT0=prevCap, time=subrangeTime - prevTime) xs.append(subrangeTime) ys.append(subrangeCap) # Calculate starting cap for first value seen in our range if capSimDataBefore: timeBefore = max(capSimDataBefore) capBefore = capSimDataBefore[timeBefore] prevCap = calculateCapAmount( maxCapAmount=maxCapAmount, capRegenTime=capRegenTime, capAmountT0=capBefore, time=prevTime - timeBefore) else: prevCap = calculateCapAmount( maxCapAmount=maxCapAmount, capRegenTime=capRegenTime, capAmountT0=capAmountT0, time=prevTime) xs.append(prevTime) ys.append(prevCap) for currentTime in sorted(capSimDataInRange): if currentTime > prevTime: plotCapRegen(prevTime=prevTime, prevCap=prevCap, currentTime=currentTime) currentCap = capSimDataInRange[currentTime] xs.append(currentTime) ys.append(currentCap) prevTime = currentTime prevCap = currentCap if maxTime > prevTime: plotCapRegen(prevTime=prevTime, prevCap=prevCap, currentTime=maxTime) return xs, ys def getPoint(self, x, miscParams, src, tgt): # Use smooth getter when we're not using cap sim if not miscParams['useCapsim']: return super().getPoint(x=x, miscParams=miscParams, src=src, tgt=tgt) capAmountT0 = miscParams['capAmountT0'] or 0 capSimDataRaw = src.item.getCapSimData(startingCap=capAmountT0) # Same here, no cap sim data - use smooth getter which considers only regen if not capSimDataRaw: return super().getPoint(x=x, miscParams=miscParams, src=src, tgt=tgt) currentTime = x capSimDataBefore = {k: v for k, v in capSimDataRaw if k <= currentTime} capSimDataMaxTime = capSimDataRaw[-1][0] # When time range lies to the right of last cap sim data point, return nothing if len(capSimDataBefore) > 0 and max(capSimDataBefore) == capSimDataMaxTime: return None maxCapAmount = src.item.ship.getModifiedItemAttr('capacitorCapacity') capRegenTime = src.item.ship.getModifiedItemAttr('rechargeRate') / 1000 if capSimDataBefore: timeBefore = max(capSimDataBefore) capBefore = capSimDataBefore[timeBefore] if timeBefore == currentTime: currentCap = capBefore else: currentCap = calculateCapAmount( maxCapAmount=maxCapAmount, capRegenTime=capRegenTime, capAmountT0=capBefore, time=currentTime - timeBefore) else: currentCap = calculateCapAmount( maxCapAmount=maxCapAmount, capRegenTime=capRegenTime, capAmountT0=capAmountT0, time=currentTime) return currentCap def _getCommonData(self, miscParams, src, tgt): return { 'maxCapAmount': src.item.ship.getModifiedItemAttr('capacitorCapacity'), 'capRegenTime': src.item.ship.getModifiedItemAttr('rechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x capAmount = calculateCapAmount( maxCapAmount=commonData['maxCapAmount'], capRegenTime=commonData['capRegenTime'], capAmountT0=miscParams['capAmountT0'] or 0, time=time) return capAmount class Time2CapRegenGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxCapAmount': src.item.ship.getModifiedItemAttr('capacitorCapacity'), 'capRegenTime': src.item.ship.getModifiedItemAttr('rechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x capAmount = calculateCapAmount( maxCapAmount=commonData['maxCapAmount'], capRegenTime=commonData['capRegenTime'], capAmountT0=miscParams['capAmountT0'] or 0, time=time) capRegen = calculateCapRegen( maxCapAmount=commonData['maxCapAmount'], capRegenTime=commonData['capRegenTime'], currentCapAmount=capAmount) return capRegen # Useless, but valid combination of x and y class CapAmount2CapAmountGetter(SmoothPointGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): capAmount = x return capAmount class CapAmount2CapRegenGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxCapAmount': src.item.ship.getModifiedItemAttr('capacitorCapacity'), 'capRegenTime': src.item.ship.getModifiedItemAttr('rechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): capAmount = x capRegen = calculateCapRegen( maxCapAmount=commonData['maxCapAmount'], capRegenTime=commonData['capRegenTime'], currentCapAmount=capAmount) return capRegen def calculateCapAmount(maxCapAmount, capRegenTime, capAmountT0, time): # https://wiki.eveuniversity.org/Capacitor#Capacitor_recharge_rate return maxCapAmount * (1 + math.exp(5 * -time / capRegenTime) * (math.sqrt(capAmountT0 / maxCapAmount) - 1)) ** 2 def calculateCapRegen(maxCapAmount, capRegenTime, currentCapAmount): # https://wiki.eveuniversity.org/Capacitor#Capacitor_recharge_rate return 10 * maxCapAmount / capRegenTime * (math.sqrt(currentCapAmount / maxCapAmount) - currentCapAmount / maxCapAmount) ================================================ FILE: graphs/data/fitCapacitor/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, InputCheckbox, XDef, YDef from .getter import CapAmount2CapAmountGetter, CapAmount2CapRegenGetter, Time2CapAmountGetter, Time2CapRegenGetter _t = wx.GetTranslation class FitCapacitorGraph(FitGraph): # UI stuff internalName = 'capacitorGraph' name = _t('Capacitor') xDefs = [ XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')), XDef(handle='capAmount', unit='GJ', label=_t('Cap amount'), mainInput=('capAmount', '%')), XDef(handle='capAmount', unit='%', label=_t('Cap amount'), mainInput=('capAmount', '%'))] yDefs = [ YDef(handle='capAmount', unit='GJ', label=_t('Cap amount')), YDef(handle='capRegen', unit='GJ/s', label=_t('Cap regen'))] inputs = [ Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[ (('time', 's'), None)]), Input(handle='capAmount', unit='%', label=_t('Cap amount'), iconID=1668, defaultValue=25, defaultRange=(0, 100), conditions=[ (('capAmount', 'GJ'), None), (('capAmount', '%'), None)]), Input(handle='capAmountT0', unit='%', label=_t('Starting cap amount'), iconID=1668, defaultValue=100, defaultRange=(0, 100), conditions=[ (('time', 's'), None)])] checkboxes = [InputCheckbox(handle='useCapsim', label=_t('Use capacitor simulator'), defaultValue=True, conditions=[ (('time', 's'), ('capAmount', 'GJ'))])] srcExtraCols = ('CapAmount', 'CapTime') # Calculation stuff _normalizers = { ('capAmount', '%'): lambda v, src, tgt: v / 100 * src.item.ship.getModifiedItemAttr('capacitorCapacity'), ('capAmountT0', '%'): lambda v, src, tgt: None if v is None else v / 100 * src.item.ship.getModifiedItemAttr('capacitorCapacity')} _limiters = { 'time': lambda src, tgt: (0, 3600), 'capAmount': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('capacitorCapacity')), 'capAmountT0': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('capacitorCapacity'))} _getters = { ('time', 'capAmount'): Time2CapAmountGetter, ('time', 'capRegen'): Time2CapRegenGetter, ('capAmount', 'capAmount'): CapAmount2CapAmountGetter, ('capAmount', 'capRegen'): CapAmount2CapRegenGetter} _denormalizers = {('capAmount', '%'): lambda v, src, tgt: v * 100 / src.item.ship.getModifiedItemAttr('capacitorCapacity')} ================================================ FILE: graphs/data/fitDamageStats/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitDamageStatsGraph FitDamageStatsGraph.register() ================================================ FILE: graphs/data/fitDamageStats/cache/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .projected import ProjectedDataCache from .time import TimeCache ================================================ FILE: graphs/data/fitDamageStats/cache/projected.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import namedtuple from eos.modifiedAttributeDict import getResistanceAttrID from graphs.data.base import FitDataCache ModProjData = namedtuple('ModProjData', ('boost', 'optimal', 'falloff', 'stackingGroup', 'resAttrID')) MobileProjData = namedtuple('MobileProjData', ('boost', 'optimal', 'falloff', 'stackingGroup', 'resAttrID', 'speed', 'radius')) class ProjectedDataCache(FitDataCache): def getProjModData(self, src): try: projectedData = self._data[src.item.ID]['modules'] except KeyError: # Format of items for both: (boost strength, optimal, falloff, stacking group, resistance attr ID) webMods = [] tpMods = [] projectedData = self._data.setdefault(src.item.ID, {})['modules'] = (webMods, tpMods) for mod in src.item.activeModulesIter(): for webEffectName in ('remoteWebifierFalloff', 'structureModuleEffectStasisWebifier'): if webEffectName in mod.item.effects: webMods.append(ModProjData( mod.getModifiedItemAttr('speedFactor'), mod.maxRange or 0, mod.falloff or 0, 'default', getResistanceAttrID(modifyingItem=mod, effect=mod.item.effects[webEffectName]))) if 'doomsdayAOEWeb' in mod.item.effects: webMods.append(ModProjData( mod.getModifiedItemAttr('speedFactor'), max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', getResistanceAttrID(modifyingItem=mod, effect=mod.item.effects['doomsdayAOEWeb']))) for tpEffectName in ('remoteTargetPaintFalloff', 'structureModuleEffectTargetPainter'): if tpEffectName in mod.item.effects: tpMods.append(ModProjData( mod.getModifiedItemAttr('signatureRadiusBonus'), mod.maxRange or 0, mod.falloff or 0, 'default', getResistanceAttrID(modifyingItem=mod, effect=mod.item.effects[tpEffectName]))) if 'doomsdayAOEPaint' in mod.item.effects: tpMods.append(ModProjData( mod.getModifiedItemAttr('signatureRadiusBonus'), max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', getResistanceAttrID(modifyingItem=mod, effect=mod.item.effects['doomsdayAOEPaint']))) return projectedData def getProjDroneData(self, src): try: projectedData = self._data[src.item.ID]['drones'] except KeyError: # Format of items for both: (boost strength, optimal, falloff, stacking group, resistance attr ID, drone speed, drone radius) webDrones = [] tpDrones = [] projectedData = self._data.setdefault(src.item.ID, {})['drones'] = (webDrones, tpDrones) for drone in src.item.activeDronesIter(): if 'remoteWebifierEntity' in drone.item.effects: webDrones.extend(drone.amountActive * (MobileProjData( drone.getModifiedItemAttr('speedFactor'), drone.maxRange or 0, drone.falloff or 0, 'default', getResistanceAttrID(modifyingItem=drone, effect=drone.item.effects['remoteWebifierEntity']), drone.getModifiedItemAttr('maxVelocity'), drone.getModifiedItemAttr('radius')),)) if 'remoteTargetPaintEntity' in drone.item.effects: tpDrones.extend(drone.amountActive * (MobileProjData( drone.getModifiedItemAttr('signatureRadiusBonus'), drone.maxRange or 0, drone.falloff or 0, 'default', getResistanceAttrID(modifyingItem=drone, effect=drone.item.effects['remoteTargetPaintEntity']), drone.getModifiedItemAttr('maxVelocity'), drone.getModifiedItemAttr('radius')),)) return projectedData def getProjFighterData(self, src): try: projectedData = self._data[src.item.ID]['fighters'] except KeyError: # Format of items for both: (boost strength, optimal, falloff, stacking group, resistance attr ID, fighter speed, fighter radius) webFighters = [] tpFighters = [] projectedData = self._data.setdefault(src.item.ID, {})['fighters'] = (webFighters, tpFighters) for fighter, ability in src.item.activeFighterAbilityIter(): if ability.effect.name == 'fighterAbilityStasisWebifier': webFighters.append(MobileProjData( fighter.getModifiedItemAttr('fighterAbilityStasisWebifierSpeedPenalty') * fighter.amount, fighter.getModifiedItemAttr('fighterAbilityStasisWebifierOptimalRange'), fighter.getModifiedItemAttr('fighterAbilityStasisWebifierFalloffRange'), 'default', getResistanceAttrID(modifyingItem=fighter, effect=fighter.item.effects['fighterAbilityStasisWebifier']), fighter.getModifiedItemAttr('maxVelocity'), fighter.getModifiedItemAttr('radius'))) return projectedData ================================================ FILE: graphs/data/fitDamageStats/cache/time.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from copy import copy from eos.utils.float import floatUnerr from eos.utils.spoolSupport import SpoolOptions, SpoolType from eos.utils.stats import DmgTypes from graphs.data.base import FitDataCache class TimeCache(FitDataCache): # Whole data getters def getDpsData(self, src): """Return DPS data in {time: {key: dps}} format.""" return self._data[src.item.ID]['finalDps'] def getVolleyData(self, src): """Return volley data in {time: {key: volley}} format.""" return self._data[src.item.ID]['finalVolley'] def getDmgData(self, src): """Return inflicted damage data in {time: {key: damage}} format.""" return self._data[src.item.ID]['finalDmg'] # Specific data point getters def getDpsDataPoint(self, src, time): """Get DPS data by specified time in {key: dps} format.""" return self._getDataPoint(src=src, time=time, dataFunc=self.getDpsData) def getVolleyDataPoint(self, src, time): """Get volley data by specified time in {key: volley} format.""" return self._getDataPoint(src=src, time=time, dataFunc=self.getVolleyData) def getDmgDataPoint(self, src, time): """Get inflicted damage data by specified time in {key: dmg} format.""" return self._getDataPoint(src=src, time=time, dataFunc=self.getDmgData) # Preparation functions def prepareDpsData(self, src, maxTime): self._prepareDpsVolleyData(src=src, maxTime=maxTime) def prepareVolleyData(self, src, maxTime): self._prepareDpsVolleyData(src=src, maxTime=maxTime) def prepareDmgData(self, src, maxTime): # Time is none means that time parameter has to be ignored, # we do not need cache for that if maxTime is None: return self._generateInternalForm(src=src, maxTime=maxTime) fitCache = self._data[src.item.ID] # Final cache has been generated already, don't do anything if 'finalDmg' in fitCache: return intCache = fitCache['internalDmg'] changesByTime = {} for key, dmgMap in intCache.items(): for time in dmgMap: changesByTime.setdefault(time, []).append(key) # Here we convert cache to following format: # {time: {key: damage done by key at this time}} finalCache = fitCache['finalDmg'] = {} timeDmgData = {} for time in sorted(changesByTime): timeDmgData = copy(timeDmgData) for key in changesByTime[time]: keyDmg = intCache[key][time] if key in timeDmgData: timeDmgData[key] = timeDmgData[key] + keyDmg else: timeDmgData[key] = keyDmg finalCache[time] = timeDmgData # We do not need internal cache once we have final del fitCache['internalDmg'] # Private stuff def _prepareDpsVolleyData(self, src, maxTime): # Time is none means that time parameter has to be ignored, # we do not need cache for that if maxTime is None: return True self._generateInternalForm(src=src, maxTime=maxTime) fitCache = self._data[src.item.ID] # Final cache has been generated already, don't do anything if 'finalDps' in fitCache and 'finalVolley' in fitCache: return # Convert cache from segments with assigned values into points # which are located at times when dps/volley values change pointCache = {} for key, dmgList in fitCache['internalDpsVolley'].items(): pointData = pointCache[key] = {} prevDps = None prevVolley = None prevTimeEnd = None for timeStart, timeEnd, dps, volley in dmgList: # First item if not pointData: pointData[timeStart] = (dps, volley) # Gap between items elif floatUnerr(prevTimeEnd) < floatUnerr(timeStart): pointData[prevTimeEnd] = (DmgTypes.default(), DmgTypes.default()) pointData[timeStart] = (dps, volley) # Changed value elif dps != prevDps or volley != prevVolley: pointData[timeStart] = (dps, volley) prevDps = dps prevVolley = volley prevTimeEnd = timeEnd # We have data in another form, do not need old one any longer del fitCache['internalDpsVolley'] changesByTime = {} for key, dmgMap in pointCache.items(): for time in dmgMap: changesByTime.setdefault(time, []).append(key) # Here we convert cache to following format: # {time: {key: (dps, volley}} finalDpsCache = fitCache['finalDps'] = {} finalVolleyCache = fitCache['finalVolley'] = {} timeDpsData = {} timeVolleyData = {} for time in sorted(changesByTime): timeDpsData = copy(timeDpsData) timeVolleyData = copy(timeVolleyData) for key in changesByTime[time]: dps, volley = pointCache[key][time] timeDpsData[key] = dps timeVolleyData[key] = volley finalDpsCache[time] = timeDpsData finalVolleyCache[time] = timeVolleyData def _generateInternalForm(self, src, maxTime): if self._isTimeCacheValid(src=src, maxTime=maxTime): return fitCache = self._data[src.item.ID] = {'maxTime': maxTime} intCacheDpsVolley = fitCache['internalDpsVolley'] = {} intCacheDmg = fitCache['internalDmg'] = {} def addDpsVolley(ddKey, addedTimeStart, addedTimeFinish, addedVolleys): if not addedVolleys: return volleySum = sum(addedVolleys, DmgTypes.default()) if volleySum.total > 0: addedDps = volleySum / (addedTimeFinish - addedTimeStart) # We can take "just best" volley, no matter target resistances, because all # known items have the same damage type ratio throughout their cycle - and # applying resistances doesn't change final outcome bestVolley = max(addedVolleys, key=lambda v: v.total) ddCacheDps = intCacheDpsVolley.setdefault(ddKey, []) ddCacheDps.append((addedTimeStart, addedTimeFinish, addedDps, bestVolley)) def addDmg(ddKey, addedTime, addedDmg): if addedDmg.total == 0: return addedDmg._breachers = {addedTime + k: v for k, v in addedDmg._breachers.items()} addedDmg._clear_cached() intCacheDmg.setdefault(ddKey, {})[addedTime] = addedDmg # Modules for mod in src.item.activeModulesIter(): if not mod.isDealingDamage(): continue cycleParams = mod.getCycleParametersForDps(reloadOverride=True) if cycleParams is None: continue currentTime = 0 nonstopCycles = 0 isBreacher = mod.isBreacher for cycleTimeMs, inactiveTimeMs, isInactivityReload in cycleParams.iterCycles(): cycleVolleys = [] volleyParams = mod.getVolleyParameters(spoolOptions=SpoolOptions(SpoolType.CYCLES, nonstopCycles, True)) for volleyTimeMs, volley in volleyParams.items(): cycleVolleys.append(volley) time = currentTime + volleyTimeMs / 1000 if isBreacher: time += 1 addDmg(mod, time, volley) if isBreacher: break timeStart = currentTime timeFinish = currentTime + cycleTimeMs / 1000 if isBreacher: timeStart += 1 timeFinish += 1 addDpsVolley(mod, timeStart, timeFinish, cycleVolleys) if inactiveTimeMs > 0: nonstopCycles = 0 else: nonstopCycles += 1 if currentTime > maxTime: break currentTime += cycleTimeMs / 1000 + inactiveTimeMs / 1000 # Drones for drone in src.item.activeDronesIter(): if not drone.isDealingDamage(): continue cycleParams = drone.getCycleParameters(reloadOverride=True) if cycleParams is None: continue currentTime = 0 volleyParams = drone.getVolleyParameters() for cycleTimeMs, inactiveTimeMs, isInactivityReload in cycleParams.iterCycles(): cycleVolleys = [] for volleyTimeMs, volley in volleyParams.items(): cycleVolleys.append(volley) addDmg(drone, currentTime + volleyTimeMs / 1000, volley) addDpsVolley(drone, currentTime, currentTime + cycleTimeMs / 1000, cycleVolleys) if currentTime > maxTime: break currentTime += cycleTimeMs / 1000 + inactiveTimeMs / 1000 # Fighters for fighter in src.item.activeFightersIter(): if not fighter.isDealingDamage(): continue cycleParams = fighter.getCycleParametersPerEffectOptimizedDps(reloadOverride=True) if cycleParams is None: continue volleyParams = fighter.getVolleyParametersPerEffect() for effectID, abilityCycleParams in cycleParams.items(): if effectID not in volleyParams: continue currentTime = 0 abilityVolleyParams = volleyParams[effectID] for cycleTimeMs, inactiveTimeMs, isInactivityReload in abilityCycleParams.iterCycles(): cycleVolleys = [] for volleyTimeMs, volley in abilityVolleyParams.items(): cycleVolleys.append(volley) addDmg((fighter, effectID), currentTime + volleyTimeMs / 1000, volley) addDpsVolley((fighter, effectID), currentTime, currentTime + cycleTimeMs / 1000, cycleVolleys) if currentTime > maxTime: break currentTime += cycleTimeMs / 1000 + inactiveTimeMs / 1000 def _isTimeCacheValid(self, src, maxTime): try: cacheMaxTime = self._data[src.item.ID]['maxTime'] except KeyError: return False return maxTime <= cacheMaxTime def _getDataPoint(self, src, time, dataFunc): data = dataFunc(src) timesBefore = [t for t in data if floatUnerr(t) <= floatUnerr(time)] try: time = max(timesBefore) except ValueError: return {} else: return data[time] ================================================ FILE: graphs/data/fitDamageStats/calc/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= ================================================ FILE: graphs/data/fitDamageStats/calc/application.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from functools import lru_cache from eos.calc import calculateRangeFactor from eos.const import FittingHardpoint from eos.utils.float import floatUnerr from graphs.calc import checkLockRange, checkDroneControlRange from service.attribute import Attribute from service.const import GraphDpsDroneMode from service.settings import GraphSettings def getApplicationPerKey(src, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAngle, tgtSigRadius): inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) applicationMap = {} for mod in src.item.activeModulesIter(): if not mod.isDealingDamage(): continue if "ChainLightning" in mod.item.effects: if inLockRange: applicationMap[mod] = getVortonMult( mod=mod, distance=distance, tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) elif mod.hardpoint == FittingHardpoint.TURRET: if inLockRange: applicationMap[mod] = getTurretMult( mod=mod, src=src, tgt=tgt, atkSpeed=atkSpeed, atkAngle=atkAngle, distance=distance, tgtSpeed=tgtSpeed, tgtAngle=tgtAngle, tgtSigRadius=tgtSigRadius) else: applicationMap[mod] = 0 # Missile launcher or civilian missile launcher elif mod.hardpoint == FittingHardpoint.MISSILE or mod.item.ID == 32461: # FoF missiles can shoot beyond lock range if inLockRange or (mod.charge is not None and 'fofMissileLaunching' in mod.charge.effects): applicationMap[mod] = getLauncherMult( mod=mod, distance=distance, tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) else: applicationMap[mod] = 0 elif mod.item.group.name in ('Smart Bomb', 'Structure Area Denial Module'): applicationMap[mod] = getSmartbombMult( mod=mod, distance=distance) elif mod.item.group.name == 'Missile Launcher Bomb': applicationMap[mod] = getBombMult( mod=mod, src=src, tgt=tgt, distance=distance, tgtSigRadius=tgtSigRadius) elif mod.item.group.name == 'Structure Guided Bomb Launcher': if inLockRange: applicationMap[mod] = getGuidedBombMult( mod=mod, src=src, distance=distance, tgtSigRadius=tgtSigRadius) else: applicationMap[mod] = 0 elif mod.item.group.name in ('Super Weapon', 'Structure Doomsday Weapon'): # Only single-target DDs need locks if not inLockRange and {'superWeaponAmarr', 'superWeaponCaldari', 'superWeaponGallente', 'superWeaponMinmatar', 'lightningWeapon'}.intersection(mod.item.effects): applicationMap[mod] = 0 else: applicationMap[mod] = getDoomsdayMult( mod=mod, tgt=tgt, distance=distance, tgtSigRadius=tgtSigRadius) elif mod.isBreacher: applicationMap[mod] = getBreacherMult(mod=mod, distance=distance) if inLockRange else 0 for drone in src.item.activeDronesIter(): if not drone.isDealingDamage(): continue if inLockRange and inDroneRange: applicationMap[drone] = getDroneMult( drone=drone, src=src, tgt=tgt, atkSpeed=atkSpeed, atkAngle=atkAngle, distance=distance, tgtSpeed=tgtSpeed, tgtAngle=tgtAngle, tgtSigRadius=tgtSigRadius) else: applicationMap[drone] = 0 for fighter in src.item.activeFightersIter(): if not fighter.isDealingDamage(): continue for ability in fighter.abilities: if not ability.dealsDamage or not ability.active: continue # Bomb launching doesn't need locks if inLockRange or ability.effect.name == 'fighterAbilityLaunchBomb': applicationMap[(fighter, ability.effectID)] = getFighterAbilityMult( fighter=fighter, ability=ability, src=src, tgt=tgt, distance=distance, tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) else: applicationMap[(fighter, ability.effectID)] = 0 # Ensure consistent results - round off a little to avoid float errors for k, v in applicationMap.items(): applicationMap[k] = floatUnerr(v) return applicationMap # Item application multiplier calculation def getTurretMult(mod, src, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAngle, tgtSigRadius): cth = _calcTurretChanceToHit( atkSpeed=atkSpeed, atkAngle=atkAngle, atkRadius=src.getRadius(), atkOptimalRange=mod.maxRange or 0, atkFalloffRange=mod.falloff or 0, atkTracking=mod.getModifiedItemAttr('trackingSpeed'), atkOptimalSigRadius=mod.getModifiedItemAttr('optimalSigRadius'), distance=distance, tgtSpeed=tgtSpeed, tgtAngle=tgtAngle, tgtRadius=tgt.getRadius(), tgtSigRadius=tgtSigRadius) mult = _calcTurretMult(cth) return mult def getVortonMult(mod, distance, tgtSpeed, tgtSigRadius): rangeFactor = calculateRangeFactor( mod.getModifiedItemAttr('maxRange'), 0, distance) applicationFactor = _calcMissileFactor( atkEr=mod.getModifiedItemAttr('aoeCloudSize'), atkEv=mod.getModifiedItemAttr('aoeVelocity'), atkDrf=mod.getModifiedItemAttr('aoeDamageReductionFactor'), tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) return rangeFactor * applicationFactor def getLauncherMult(mod, distance, tgtSpeed, tgtSigRadius): missileMaxRangeData = mod.missileMaxRangeData if missileMaxRangeData is None: return 0 # The ranges already consider ship radius lowerRange, higherRange, higherChance = missileMaxRangeData if distance is None or distance <= lowerRange: distanceFactor = 1 elif lowerRange < distance <= higherRange: distanceFactor = higherChance else: distanceFactor = 0 applicationFactor = _calcMissileFactor( atkEr=mod.getModifiedChargeAttr('aoeCloudSize'), atkEv=mod.getModifiedChargeAttr('aoeVelocity'), atkDrf=mod.getModifiedChargeAttr('aoeDamageReductionFactor'), tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) return distanceFactor * applicationFactor def getBreacherMult(mod, distance): missileMaxRangeData = mod.missileMaxRangeData if missileMaxRangeData is None: return 0 # The ranges already consider ship radius lowerRange, higherRange, higherChance = missileMaxRangeData if distance is None or distance <= lowerRange: distanceFactor = 1 elif lowerRange < distance <= higherRange: distanceFactor = higherChance else: distanceFactor = 0 return distanceFactor def getSmartbombMult(mod, distance): modRange = mod.maxRange if modRange is None: return 0 if distance is not None and distance > modRange: return 0 return 1 def getDoomsdayMult(mod, tgt, distance, tgtSigRadius): modRange = mod.maxRange # Single-target DDs have no range limit if distance is not None and modRange and distance > modRange: return 0 # Single-target titan DDs are vs capitals only if {'superWeaponAmarr', 'superWeaponCaldari', 'superWeaponGallente', 'superWeaponMinmatar'}.intersection(mod.item.effects): # Disallow only against subcaps, allow against caps and tgt profiles if tgt.isFit and not tgt.item.ship.item.requiresSkill('Capital Ships'): return 0 damageSig = mod.getModifiedItemAttr('signatureRadius') if not damageSig: return 1 return min(1, tgtSigRadius / damageSig) def getBombMult(mod, src, tgt, distance, tgtSigRadius): modRange = mod.maxRange if modRange is None: return 0 blastRadius = mod.getModifiedChargeAttr('explosionRange') atkRadius = src.getRadius() tgtRadius = tgt.getRadius() # Bomb starts in the center of the ship # Also here we assume that it affects target as long as blast # touches its surface, not center - I did not check this if distance is not None and distance < max(0, modRange - atkRadius - tgtRadius - blastRadius): return 0 if distance is not None and distance > max(0, modRange - atkRadius + tgtRadius + blastRadius): return 0 return _calcBombFactor( atkEr=mod.getModifiedChargeAttr('aoeCloudSize'), tgtSigRadius=tgtSigRadius) def getGuidedBombMult(mod, src, distance, tgtSigRadius): modRange = mod.maxRange if modRange is None: return 0 if distance is not None and distance > modRange - src.getRadius(): return 0 eR = mod.getModifiedChargeAttr('aoeCloudSize') if eR == 0: return 1 else: return min(1, tgtSigRadius / eR) def getDroneMult(drone, src, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAngle, tgtSigRadius): if ( distance is not None and ( (not GraphSettings.getInstance().get('ignoreDCR') and distance > src.item.extraAttributes['droneControlRange']) or (not GraphSettings.getInstance().get('ignoreLockRange') and distance > src.item.maxTargetRange)) ): return 0 droneSpeed = drone.getModifiedItemAttr('maxVelocity') # Hard to simulate drone behavior, so assume chance to hit is 1 for mobile drones # which catch up with target droneOpt = GraphSettings.getInstance().get('mobileDroneMode') if ( droneSpeed > 1 and ( (droneOpt == GraphDpsDroneMode.auto and droneSpeed >= tgtSpeed) or droneOpt == GraphDpsDroneMode.followTarget) ): cth = 1 # Otherwise put the drone into center of the ship, move it at its max speed or ship's speed # (whichever is lower) towards direction of attacking ship and see how well it projects else: droneRadius = drone.getModifiedItemAttr('radius') if distance is None: cthDistance = None else: # As distance is ship surface to ship surface, we adjust it according # to attacker ship's radiuses to have drone surface to ship surface distance cthDistance = distance + src.getRadius() - droneRadius cth = _calcTurretChanceToHit( atkSpeed=min(atkSpeed, droneSpeed), atkAngle=atkAngle, atkRadius=droneRadius, atkOptimalRange=drone.maxRange or 0, atkFalloffRange=drone.falloff or 0, atkTracking=drone.getModifiedItemAttr('trackingSpeed'), atkOptimalSigRadius=drone.getModifiedItemAttr('optimalSigRadius'), distance=cthDistance, tgtSpeed=tgtSpeed, tgtAngle=tgtAngle, tgtRadius=tgt.getRadius(), tgtSigRadius=tgtSigRadius) mult = _calcTurretMult(cth) return mult def getFighterAbilityMult(fighter, ability, src, tgt, distance, tgtSpeed, tgtSigRadius): fighterSpeed = fighter.getModifiedItemAttr('maxVelocity') attrPrefix = ability.attrPrefix # It's bomb attack if attrPrefix == 'fighterAbilityLaunchBomb': # Just assume we can land bomb anywhere return _calcBombFactor( atkEr=fighter.getModifiedChargeAttr('aoeCloudSize'), tgtSigRadius=tgtSigRadius) droneOpt = GraphSettings.getInstance().get('mobileDroneMode') # It's regular missile-based attack if (droneOpt == GraphDpsDroneMode.auto and fighterSpeed >= tgtSpeed) or droneOpt == GraphDpsDroneMode.followTarget: rangeFactor = 1 # Same as with drones, if fighters are slower - put them to center of # the ship and see how they apply else: if distance is None: rangeFactorDistance = None else: rangeFactorDistance = distance + src.getRadius() - fighter.getModifiedItemAttr('radius') rangeFactor = calculateRangeFactor( srcOptimalRange=fighter.getModifiedItemAttr('{}RangeOptimal'.format(attrPrefix)) or fighter.getModifiedItemAttr('{}Range'.format(attrPrefix)), srcFalloffRange=fighter.getModifiedItemAttr('{}RangeFalloff'.format(attrPrefix)), distance=rangeFactorDistance) drf = fighter.getModifiedItemAttr('{}ReductionFactor'.format(attrPrefix), None) if drf is None: drf = fighter.getModifiedItemAttr('{}DamageReductionFactor'.format(attrPrefix)) drs = fighter.getModifiedItemAttr('{}ReductionSensitivity'.format(attrPrefix), None) if drs is None: drs = fighter.getModifiedItemAttr('{}DamageReductionSensitivity'.format(attrPrefix)) missileFactor = _calcMissileFactor( atkEr=fighter.getModifiedItemAttr('{}ExplosionRadius'.format(attrPrefix)), atkEv=fighter.getModifiedItemAttr('{}ExplosionVelocity'.format(attrPrefix)), atkDrf=_calcAggregatedDrf(reductionFactor=drf, reductionSensitivity=drs), tgtSpeed=tgtSpeed, tgtSigRadius=tgtSigRadius) resistMult = 1 if tgt.isFit: resistAttrID = fighter.getModifiedItemAttr('{}ResistanceID'.format(attrPrefix)) if resistAttrID: resistAttrInfo = Attribute.getInstance().getAttributeInfo(resistAttrID) if resistAttrInfo is not None: resistMult = tgt.item.ship.getModifiedItemAttr(resistAttrInfo.name, 1) mult = rangeFactor * missileFactor * resistMult return mult # Turret-specific math @lru_cache(maxsize=50) def _calcTurretMult(chanceToHit): """Calculate damage multiplier for turret-based weapons.""" # https://wiki.eveuniversity.org/Turret_mechanics#Damage wreckingChance = min(chanceToHit, 0.01) wreckingPart = wreckingChance * 3 normalChance = chanceToHit - wreckingChance if normalChance > 0: avgDamageMult = (0.01 + chanceToHit) / 2 + 0.49 normalPart = normalChance * avgDamageMult else: normalPart = 0 totalMult = normalPart + wreckingPart return totalMult @lru_cache(maxsize=1000) def _calcTurretChanceToHit( atkSpeed, atkAngle, atkRadius, atkOptimalRange, atkFalloffRange, atkTracking, atkOptimalSigRadius, distance, tgtSpeed, tgtAngle, tgtRadius, tgtSigRadius ): """Calculate chance to hit for turret-based weapons.""" # https://wiki.eveuniversity.org/Turret_mechanics#Hit_Math angularSpeed = _calcAngularSpeed(atkSpeed, atkAngle, atkRadius, distance, tgtSpeed, tgtAngle, tgtRadius) # Turrets can be activated regardless of range to target rangeFactor = calculateRangeFactor(atkOptimalRange, atkFalloffRange, distance, restrictedRange=False) trackingFactor = _calcTrackingFactor(atkTracking, atkOptimalSigRadius, angularSpeed, tgtSigRadius) cth = rangeFactor * trackingFactor return cth def _calcAngularSpeed(atkSpeed, atkAngle, atkRadius, distance, tgtSpeed, tgtAngle, tgtRadius): """Calculate angular speed based on mobility parameters of two ships.""" if distance is None: return 0 atkAngle = atkAngle * math.pi / 180 tgtAngle = tgtAngle * math.pi / 180 ctcDistance = atkRadius + distance + tgtRadius # Target is to the right of the attacker, so transversal is projection onto Y axis transSpeed = abs(atkSpeed * math.sin(atkAngle) - tgtSpeed * math.sin(tgtAngle)) if ctcDistance == 0: return 0 if transSpeed == 0 else math.inf else: return transSpeed / ctcDistance def _calcTrackingFactor(atkTracking, atkOptimalSigRadius, angularSpeed, tgtSigRadius): """Calculate tracking chance to hit component.""" return 0.5 ** (((angularSpeed * atkOptimalSigRadius) / (atkTracking * tgtSigRadius)) ** 2) # Missile-specific math @lru_cache(maxsize=200) def _calcMissileFactor(atkEr, atkEv, atkDrf, tgtSpeed, tgtSigRadius): """Missile application.""" factors = [1] # "Slow" part if atkEr > 0: factors.append(tgtSigRadius / atkEr) # "Fast" part if tgtSpeed > 0: factors.append(((atkEv * tgtSigRadius) / (atkEr * tgtSpeed)) ** atkDrf) totalMult = min(factors) return totalMult def _calcAggregatedDrf(reductionFactor, reductionSensitivity): """ Sometimes DRF is specified as 2 separate numbers, here we combine them into generic form. """ return math.log(reductionFactor) / math.log(reductionSensitivity) # Misc math def _calcBombFactor(atkEr, tgtSigRadius): if atkEr == 0: return 1 else: return min(1, tgtSigRadius / atkEr) ================================================ FILE: graphs/data/fitDamageStats/calc/projected.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from eos.calc import calculateRangeFactor from eos.utils.float import floatUnerr from graphs.calc import checkLockRange, checkDroneControlRange from service.const import GraphDpsDroneMode from service.settings import GraphSettings def _isRegularScram(mod): if not mod.item: return False if not {'warpScrambleBlockMWDWithNPCEffect', 'structureWarpScrambleBlockMWDWithNPCEffect'}.intersection(mod.item.effects): return False if not mod.getModifiedItemAttr('activationBlockedStrenght', 0): return False return True def _isHicScram(mod): if not mod.item: return False if 'warpDisruptSphere' not in mod.item.effects: return False if not mod.charge: return False if 'shipModuleFocusedWarpScramblingScript' not in mod.charge.effects: return False return True def getScramRange(src): scramRange = None for mod in src.item.activeModulesIter(): if _isRegularScram(mod) or _isHicScram(mod): scramRange = max(scramRange or 0, mod.maxRange or 0) return scramRange def getScrammables(tgt): scrammables = [] if tgt.isFit: for mod in tgt.item.activeModulesIter(): if not mod.item: continue if {'moduleBonusMicrowarpdrive', 'microJumpDrive', 'microJumpPortalDrive'}.intersection(mod.item.effects): scrammables.append(mod) return scrammables def getTackledSpeed(src, tgt, currentUntackledSpeed, srcScramRange, tgtScrammables, webMods, webDrones, webFighters, distance): # Can slow down non-immune ships and target profiles if tgt.isFit and tgt.item.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return currentUntackledSpeed maxUntackledSpeed = tgt.getMaxVelocity() # What's immobile cannot be slowed if maxUntackledSpeed == 0: return maxUntackledSpeed inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) speedRatio = currentUntackledSpeed / maxUntackledSpeed # No scrams or distance is longer than longest scram - nullify scrammables list if not inLockRange or srcScramRange is None or (distance is not None and distance > srcScramRange): tgtScrammables = () appliedMultipliers = {} # Modules first, they are always applied the same way if inLockRange: for wData in webMods: appliedBoost = wData.boost * calculateRangeFactor( srcOptimalRange=wData.optimal, srcFalloffRange=wData.falloff, distance=distance) if appliedBoost: appliedMultipliers.setdefault(wData.stackingGroup, []).append((1 + appliedBoost / 100, wData.resAttrID)) maxTackledSpeed = tgt.getMaxVelocity(extraMultipliers=appliedMultipliers, ignoreAfflictors=tgtScrammables) currentTackledSpeed = maxTackledSpeed * speedRatio # Drones and fighters mobileWebs = [] if inLockRange: mobileWebs.extend(webFighters) if inLockRange and inDroneRange: mobileWebs.extend(webDrones) atkRadius = src.getRadius() # As mobile webs either follow the target or stick to the attacking ship, # if target is within mobile web optimal - it can be applied unconditionally longEnoughMws = [mw for mw in mobileWebs if distance is None or distance <= mw.optimal - atkRadius + mw.radius] if longEnoughMws: for mwData in longEnoughMws: appliedMultipliers.setdefault(mwData.stackingGroup, []).append((1 + mwData.boost / 100, mwData.resAttrID)) mobileWebs.remove(mwData) maxTackledSpeed = tgt.getMaxVelocity(extraMultipliers=appliedMultipliers, ignoreAfflictors=tgtScrammables) currentTackledSpeed = maxTackledSpeed * speedRatio # Apply remaining webs, from fastest to slowest droneOpt = GraphSettings.getInstance().get('mobileDroneMode') while mobileWebs: # Process in batches unified by speed to save up resources fastestMwSpeed = max(mobileWebs, key=lambda mw: mw.speed).speed fastestMws = [mw for mw in mobileWebs if mw.speed == fastestMwSpeed] for mwData in fastestMws: # Faster than target or set to follow it - apply full slowdown if (droneOpt == GraphDpsDroneMode.auto and mwData.speed >= currentTackledSpeed) or droneOpt == GraphDpsDroneMode.followTarget: appliedMwBoost = mwData.boost # Otherwise project from the center of the ship else: if distance is None: rangeFactorDistance = None else: rangeFactorDistance = distance + atkRadius - mwData.radius appliedMwBoost = mwData.boost * calculateRangeFactor( srcOptimalRange=mwData.optimal, srcFalloffRange=mwData.falloff, distance=rangeFactorDistance) appliedMultipliers.setdefault(mwData.stackingGroup, []).append((1 + appliedMwBoost / 100, mwData.resAttrID)) mobileWebs.remove(mwData) maxTackledSpeed = tgt.getMaxVelocity(extraMultipliers=appliedMultipliers, ignoreAfflictors=tgtScrammables) currentTackledSpeed = maxTackledSpeed * speedRatio # Ensure consistent results - round off a little to avoid float errors return floatUnerr(currentTackledSpeed) def getSigRadiusMult(src, tgt, tgtSpeed, srcScramRange, tgtScrammables, tpMods, tpDrones, tpFighters, distance): # Can blow non-immune ships and target profiles if tgt.isFit and tgt.item.ship.getModifiedItemAttr('disallowOffensiveModifiers'): return 1 inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) initSig = tgt.getSigRadius() # No scrams or distance is longer than longest scram - nullify scrammables list if not inLockRange or srcScramRange is None or (distance is not None and distance > srcScramRange): tgtScrammables = () # TPing modules appliedMultipliers = {} if inLockRange: for tpData in tpMods: appliedBoost = tpData.boost * calculateRangeFactor( srcOptimalRange=tpData.optimal, srcFalloffRange=tpData.falloff, distance=distance) if appliedBoost: appliedMultipliers.setdefault(tpData.stackingGroup, []).append((1 + appliedBoost / 100, tpData.resAttrID)) # TPing drones mobileTps = [] if inLockRange: mobileTps.extend(tpFighters) if inLockRange and inDroneRange: mobileTps.extend(tpDrones) droneOpt = GraphSettings.getInstance().get('mobileDroneMode') atkRadius = src.getRadius() for mtpData in mobileTps: # Faster than target or set to follow it - apply full TP if (droneOpt == GraphDpsDroneMode.auto and mtpData.speed >= tgtSpeed) or droneOpt == GraphDpsDroneMode.followTarget: appliedMtpBoost = mtpData.boost # Otherwise project from the center of the ship else: if distance is None: rangeFactorDistance = None else: rangeFactorDistance = distance + atkRadius - mtpData.radius appliedMtpBoost = mtpData.boost * calculateRangeFactor( srcOptimalRange=mtpData.optimal, srcFalloffRange=mtpData.falloff, distance=rangeFactorDistance) appliedMultipliers.setdefault(mtpData.stackingGroup, []).append((1 + appliedMtpBoost / 100, mtpData.resAttrID)) modifiedSig = tgt.getSigRadius(extraMultipliers=appliedMultipliers, ignoreAfflictors=tgtScrammables) if modifiedSig == math.inf and initSig == math.inf: return 1 mult = modifiedSig / initSig # Ensure consistent results - round off a little to avoid float errors return floatUnerr(mult) ================================================ FILE: graphs/data/fitDamageStats/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import eos.config from eos.saveddata.targetProfile import TargetProfile from eos.utils.spoolSupport import SpoolOptions, SpoolType from eos.utils.stats import DmgTypes from graphs.data.base import PointGetter, SmoothPointGetter from service.settings import GraphSettings from .calc.application import getApplicationPerKey from .calc.projected import getScramRange, getScrammables, getTackledSpeed, getSigRadiusMult def applyDamage(dmgMap, applicationMap, tgtResists, tgtFullHp): total = DmgTypes.default() for key, dmg in dmgMap.items(): total += dmg * applicationMap.get(key, 0) if not GraphSettings.getInstance().get('ignoreResists'): emRes, thermRes, kinRes, exploRes = tgtResists else: emRes = thermRes = kinRes = exploRes = 0 total.profile = TargetProfile( emAmount=emRes, thermalAmount=thermRes, kineticAmount=kinRes, explosiveAmount=exploRes, hp=tgtFullHp) return total # Y mixins class YDpsMixin: def _getDamagePerKey(self, src, time): # Use data from time cache if time was not specified if time is not None: return self._getTimeCacheDataPoint(src=src, time=time) # Compose map ourselves using current fit settings if time is not specified dpsMap = {} defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] for mod in src.item.activeModulesIter(): if not mod.isDealingDamage(): continue dpsMap[mod] = mod.getDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)) for drone in src.item.activeDronesIter(): if not drone.isDealingDamage(): continue dpsMap[drone] = drone.getDps() for fighter in src.item.activeFightersIter(): if not fighter.isDealingDamage(): continue for effectID, effectDps in fighter.getDpsPerEffect().items(): dpsMap[(fighter, effectID)] = effectDps return dpsMap def _prepareTimeCache(self, src, maxTime): self.graph._timeCache.prepareDpsData(src=src, maxTime=maxTime) def _getTimeCacheData(self, src): return self.graph._timeCache.getDpsData(src=src) def _getTimeCacheDataPoint(self, src, time): return self.graph._timeCache.getDpsDataPoint(src=src, time=time) class YVolleyMixin: def _getDamagePerKey(self, src, time): # Use data from time cache if time was not specified if time is not None: return self._getTimeCacheDataPoint(src=src, time=time) # Compose map ourselves using current fit settings if time is not specified volleyMap = {} defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] for mod in src.item.activeModulesIter(): if not mod.isDealingDamage(): continue volleyMap[mod] = mod.getVolley(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)) for drone in src.item.activeDronesIter(): if not drone.isDealingDamage(): continue volleyMap[drone] = drone.getVolley() for fighter in src.item.activeFightersIter(): if not fighter.isDealingDamage(): continue for effectID, effectVolley in fighter.getVolleyPerEffect().items(): volleyMap[(fighter, effectID)] = effectVolley return volleyMap def _prepareTimeCache(self, src, maxTime): self.graph._timeCache.prepareVolleyData(src=src, maxTime=maxTime) def _getTimeCacheData(self, src): return self.graph._timeCache.getVolleyData(src=src) def _getTimeCacheDataPoint(self, src, time): return self.graph._timeCache.getVolleyDataPoint(src=src, time=time) class YInflictedDamageMixin: def _getDamagePerKey(self, src, time): # Damage inflicted makes no sense without time specified if time is None: raise ValueError return self._getTimeCacheDataPoint(src=src, time=time) def _prepareTimeCache(self, src, maxTime): self.graph._timeCache.prepareDmgData(src=src, maxTime=maxTime) def _getTimeCacheData(self, src): return self.graph._timeCache.getDmgData(src=src) def _getTimeCacheDataPoint(self, src, time): return self.graph._timeCache.getDmgDataPoint(src=src, time=time) # X mixins class XDistanceMixin(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): # Prepare time cache here because we need to do it only once, # and this function is called once per point info fetch self._prepareTimeCache(src=src, maxTime=miscParams['time']) applyProjected = GraphSettings.getInstance().get('applyProjected') return { 'applyProjected': applyProjected, 'srcScramRange': getScramRange(src=src) if applyProjected else None, 'tgtScrammables': getScrammables(tgt=tgt) if applyProjected else (), 'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']), 'tgtResists': tgt.getResists(), 'tgtFullHp': tgt.getFullHp()} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x tgtSpeed = miscParams['tgtSpeed'] tgtSigRadius = tgt.getSigRadius() if commonData['applyProjected']: webMods, tpMods = self.graph._projectedCache.getProjModData(src) webDrones, tpDrones = self.graph._projectedCache.getProjDroneData(src) webFighters, tpFighters = self.graph._projectedCache.getProjFighterData(src) tgtSpeed = getTackledSpeed( src=src, tgt=tgt, currentUntackledSpeed=tgtSpeed, srcScramRange=commonData['srcScramRange'], tgtScrammables=commonData['tgtScrammables'], webMods=webMods, webDrones=webDrones, webFighters=webFighters, distance=distance) tgtSigRadius = tgtSigRadius * getSigRadiusMult( src=src, tgt=tgt, tgtSpeed=tgtSpeed, srcScramRange=commonData['srcScramRange'], tgtScrammables=commonData['tgtScrammables'], tpMods=tpMods, tpDrones=tpDrones, tpFighters=tpFighters, distance=distance) applicationMap = getApplicationPerKey( src=src, tgt=tgt, atkSpeed=miscParams['atkSpeed'], atkAngle=miscParams['atkAngle'], distance=distance, tgtSpeed=tgtSpeed, tgtAngle=miscParams['tgtAngle'], tgtSigRadius=tgtSigRadius) y = applyDamage( dmgMap=commonData['dmgMap'], applicationMap=applicationMap, tgtResists=commonData['tgtResists'], tgtFullHp=commonData['tgtFullHp']).total return y class XTimeMixin(PointGetter): def _prepareApplicationMap(self, miscParams, src, tgt): tgtSpeed = miscParams['tgtSpeed'] tgtSigRadius = tgt.getSigRadius() if GraphSettings.getInstance().get('applyProjected'): srcScramRange = getScramRange(src=src) tgtScrammables = getScrammables(tgt=tgt) webMods, tpMods = self.graph._projectedCache.getProjModData(src) webDrones, tpDrones = self.graph._projectedCache.getProjDroneData(src) webFighters, tpFighters = self.graph._projectedCache.getProjFighterData(src) tgtSpeed = getTackledSpeed( src=src, tgt=tgt, currentUntackledSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, webMods=webMods, webDrones=webDrones, webFighters=webFighters, distance=miscParams['distance']) tgtSigRadius = tgtSigRadius * getSigRadiusMult( src=src, tgt=tgt, tgtSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, tpMods=tpMods, tpDrones=tpDrones, tpFighters=tpFighters, distance=miscParams['distance']) # Get all data we need for all times into maps/caches applicationMap = getApplicationPerKey( src=src, tgt=tgt, atkSpeed=miscParams['atkSpeed'], atkAngle=miscParams['atkAngle'], distance=miscParams['distance'], tgtSpeed=tgtSpeed, tgtAngle=miscParams['tgtAngle'], tgtSigRadius=tgtSigRadius) return applicationMap def getRange(self, xRange, miscParams, src, tgt): xs = [] ys = [] minTime, maxTime = xRange # Prepare time cache and various shared data self._prepareTimeCache(src=src, maxTime=maxTime) timeCache = self._getTimeCacheData(src=src) applicationMap = self._prepareApplicationMap(miscParams=miscParams, src=src, tgt=tgt) # Custom iteration for time graph to show all data points currentDmg = None currentTime = None for currentTime in sorted(timeCache): prevDmg = currentDmg currentDmgData = timeCache[currentTime] currentDmg = applyDamage( dmgMap=currentDmgData, applicationMap=applicationMap, tgtResists=tgt.getResists(), tgtFullHp=tgt.getFullHp()).total if currentTime < minTime: continue # First set of data points if not xs: # Start at exactly requested time, at last known value initialDmg = prevDmg or 0 xs.append(minTime) ys.append(initialDmg) # If current time is bigger then starting, extend plot to that time with old value if currentTime > minTime: xs.append(currentTime) ys.append(initialDmg) # If new value is different, extend it with new point to the new value if currentDmg != prevDmg: xs.append(currentTime) ys.append(currentDmg) continue # Last data point if currentTime >= maxTime: xs.append(maxTime) ys.append(prevDmg) break # Anything in-between if currentDmg != prevDmg: if prevDmg is not None: xs.append(currentTime) ys.append(prevDmg) xs.append(currentTime) ys.append(currentDmg) # Special case - there are no damage dealers if currentDmg is None and currentTime is None: xs.append(minTime) ys.append(0) # Make sure that last data point is always at max time if maxTime > (currentTime or 0): xs.append(maxTime) ys.append(currentDmg or 0) return xs, ys def getPoint(self, x, miscParams, src, tgt): time = x # Prepare time cache and various data self._prepareTimeCache(src=src, maxTime=time) dmgData = self._getTimeCacheDataPoint(src=src, time=time) applicationMap = self._prepareApplicationMap(miscParams=miscParams, src=src, tgt=tgt) y = applyDamage( dmgMap=dmgData, applicationMap=applicationMap, tgtResists=tgt.getResists(), tgtFullHp=tgt.getFullHp()).total return y class XTgtSpeedMixin(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): # Prepare time cache here because we need to do it only once, # and this function is called once per point info fetch self._prepareTimeCache(src=src, maxTime=miscParams['time']) return { 'applyProjected': GraphSettings.getInstance().get('applyProjected'), 'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']), 'tgtResists': tgt.getResists(), 'tgtFullHp': tgt.getFullHp()} def _calculatePoint(self, x, miscParams, src, tgt, commonData): tgtSpeed = x tgtSigRadius = tgt.getSigRadius() if commonData['applyProjected']: srcScramRange = getScramRange(src=src) tgtScrammables = getScrammables(tgt=tgt) webMods, tpMods = self.graph._projectedCache.getProjModData(src) webDrones, tpDrones = self.graph._projectedCache.getProjDroneData(src) webFighters, tpFighters = self.graph._projectedCache.getProjFighterData(src) tgtSpeed = getTackledSpeed( src=src, tgt=tgt, currentUntackledSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, webMods=webMods, webDrones=webDrones, webFighters=webFighters, distance=miscParams['distance']) tgtSigRadius = tgtSigRadius * getSigRadiusMult( src=src, tgt=tgt, tgtSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, tpMods=tpMods, tpDrones=tpDrones, tpFighters=tpFighters, distance=miscParams['distance']) applicationMap = getApplicationPerKey( src=src, tgt=tgt, atkSpeed=miscParams['atkSpeed'], atkAngle=miscParams['atkAngle'], distance=miscParams['distance'], tgtSpeed=tgtSpeed, tgtAngle=miscParams['tgtAngle'], tgtSigRadius=tgtSigRadius) y = applyDamage( dmgMap=commonData['dmgMap'], applicationMap=applicationMap, tgtResists=commonData['tgtResists'], tgtFullHp=commonData['tgtFullHp']).total return y class XTgtSigRadiusMixin(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): tgtSpeed = miscParams['tgtSpeed'] tgtSigMult = 1 if GraphSettings.getInstance().get('applyProjected'): srcScramRange = getScramRange(src=src) tgtScrammables = getScrammables(tgt=tgt) webMods, tpMods = self.graph._projectedCache.getProjModData(src) webDrones, tpDrones = self.graph._projectedCache.getProjDroneData(src) webFighters, tpFighters = self.graph._projectedCache.getProjFighterData(src) tgtSpeed = getTackledSpeed( src=src, tgt=tgt, currentUntackledSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, webMods=webMods, webDrones=webDrones, webFighters=webFighters, distance=miscParams['distance']) tgtSigMult = getSigRadiusMult( src=src, tgt=tgt, tgtSpeed=tgtSpeed, srcScramRange=srcScramRange, tgtScrammables=tgtScrammables, tpMods=tpMods, tpDrones=tpDrones, tpFighters=tpFighters, distance=miscParams['distance']) # Prepare time cache here because we need to do it only once, # and this function is called once per point info fetch self._prepareTimeCache(src=src, maxTime=miscParams['time']) return { 'tgtSpeed': tgtSpeed, 'tgtSigMult': tgtSigMult, 'dmgMap': self._getDamagePerKey(src=src, time=miscParams['time']), 'tgtResists': tgt.getResists(), 'tgtFullHp': tgt.getFullHp()} def _calculatePoint(self, x, miscParams, src, tgt, commonData): tgtSigRadius = x applicationMap = getApplicationPerKey( src=src, tgt=tgt, atkSpeed=miscParams['atkSpeed'], atkAngle=miscParams['atkAngle'], distance=miscParams['distance'], tgtSpeed=commonData['tgtSpeed'], tgtAngle=miscParams['tgtAngle'], tgtSigRadius=tgtSigRadius * commonData['tgtSigMult']) y = applyDamage( dmgMap=commonData['dmgMap'], applicationMap=applicationMap, tgtResists=commonData['tgtResists'], tgtFullHp=commonData['tgtFullHp']).total return y # Final getters class Distance2DpsGetter(XDistanceMixin, YDpsMixin): pass class Distance2VolleyGetter(XDistanceMixin, YVolleyMixin): pass class Distance2InflictedDamageGetter(XDistanceMixin, YInflictedDamageMixin): pass class Time2DpsGetter(XTimeMixin, YDpsMixin): pass class Time2VolleyGetter(XTimeMixin, YVolleyMixin): pass class Time2InflictedDamageGetter(XTimeMixin, YInflictedDamageMixin): pass class TgtSpeed2DpsGetter(XTgtSpeedMixin, YDpsMixin): pass class TgtSpeed2VolleyGetter(XTgtSpeedMixin, YVolleyMixin): pass class TgtSpeed2InflictedDamageGetter(XTgtSpeedMixin, YInflictedDamageMixin): pass class TgtSigRadius2DpsGetter(XTgtSigRadiusMixin, YDpsMixin): pass class TgtSigRadius2VolleyGetter(XTgtSigRadiusMixin, YVolleyMixin): pass class TgtSigRadius2InflictedDamageGetter(XTgtSigRadiusMixin, YInflictedDamageMixin): pass ================================================ FILE: graphs/data/fitDamageStats/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, VectorDef, XDef, YDef from service.const import GraphCacheCleanupReason from service.settings import GraphSettings from .cache import ProjectedDataCache, TimeCache from .getter import (Distance2DpsGetter, Distance2InflictedDamageGetter, Distance2VolleyGetter, TgtSigRadius2DpsGetter, TgtSigRadius2InflictedDamageGetter, TgtSigRadius2VolleyGetter, TgtSpeed2DpsGetter, TgtSpeed2InflictedDamageGetter, TgtSpeed2VolleyGetter, Time2DpsGetter, Time2InflictedDamageGetter, Time2VolleyGetter) _t = wx.GetTranslation class FitDamageStatsGraph(FitGraph): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._timeCache = TimeCache() self._projectedCache = ProjectedDataCache() def _clearInternalCache(self, reason, extraData): # Here, we care only about fit changes and graph changes. # - Input changes are irrelevant as time cache cares only about # time input, and it regenerates once time goes beyond cached value # - Option changes are irrelevant as cache contains "raw" damage # values which do not rely on any graph options if reason in (GraphCacheCleanupReason.fitChanged, GraphCacheCleanupReason.fitRemoved): self._timeCache.clearForFit(extraData) self._projectedCache.clearForFit(extraData) elif reason == GraphCacheCleanupReason.graphSwitched: self._timeCache.clearAll() self._projectedCache.clearAll() # UI stuff internalName = 'dmgStatsGraph' name = _t('Damage Stats') xDefs = [ XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km')), XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')), XDef(handle='tgtSpeed', unit='m/s', label=_t('Target speed'), mainInput=('tgtSpeed', '%')), XDef(handle='tgtSpeed', unit='%', label=_t('Target speed'), mainInput=('tgtSpeed', '%')), XDef(handle='tgtSigRad', unit='m', label=_t('Target signature radius'), mainInput=('tgtSigRad', '%')), XDef(handle='tgtSigRad', unit='%', label=_t('Target signature radius'), mainInput=('tgtSigRad', '%'))] inputs = [ Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100), mainTooltip=_t('Distance between the attacker and the target, as seen in overview (surface-to-surface)'), secondaryTooltip=_t('Distance between the attacker and the target, as seen in overview (surface-to-surface)\nWhen set, places the target that far away from the attacker\nWhen not set, attacker\'s weapons always hit the target')), Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=None, defaultRange=(0, 80), secondaryTooltip=_t('When set, uses attacker\'s exact damage stats at a given time\nWhen not set, uses attacker\'s damage stats as shown in stats panel of main window')), Input(handle='tgtSpeed', unit='%', label=_t('Target speed'), iconID=1389, defaultValue=100, defaultRange=(0, 100)), Input(handle='tgtSigRad', unit='%', label=_t('Target signature'), iconID=1390, defaultValue=100, defaultRange=(100, 200), conditions=[ (('tgtSigRad', 'm'), None), (('tgtSigRad', '%'), None)])] srcVectorDef = VectorDef(lengthHandle='atkSpeed', lengthUnit='%', angleHandle='atkAngle', angleUnit='degrees', label=_t('Attacker')) tgtVectorDef = VectorDef(lengthHandle='tgtSpeed', lengthUnit='%', angleHandle='tgtAngle', angleUnit='degrees', label=_t('Target')) hasTargets = True srcExtraCols = ('Dps', 'Volley', 'Speed', 'Radius') @property def yDefs(self): ignoreResists = GraphSettings.getInstance().get('ignoreResists') return [ YDef(handle='dps', unit=None, label=_t('DPS') if ignoreResists else _t('Effective DPS')), YDef(handle='volley', unit=None, label=_t('Volley') if ignoreResists else _t('Effective volley')), YDef(handle='damage', unit=None, label=_t('Damage inflicted') if ignoreResists else _t('Effective damage inflicted'))] @property def tgtExtraCols(self): cols = [] if not GraphSettings.getInstance().get('ignoreResists'): cols.append('Target Resists') cols.extend(('Speed', 'SigRadius', 'Radius', 'FullHP')) return cols # Calculation stuff _normalizers = { ('distance', 'km'): lambda v, src, tgt: None if v is None else v * 1000, ('atkSpeed', '%'): lambda v, src, tgt: v / 100 * src.getMaxVelocity(), ('tgtSpeed', '%'): lambda v, src, tgt: v / 100 * tgt.getMaxVelocity(), ('tgtSigRad', '%'): lambda v, src, tgt: v / 100 * tgt.getSigRadius()} _limiters = {'time': lambda src, tgt: (0, 2500)} _getters = { ('distance', 'dps'): Distance2DpsGetter, ('distance', 'volley'): Distance2VolleyGetter, ('distance', 'damage'): Distance2InflictedDamageGetter, ('time', 'dps'): Time2DpsGetter, ('time', 'volley'): Time2VolleyGetter, ('time', 'damage'): Time2InflictedDamageGetter, ('tgtSpeed', 'dps'): TgtSpeed2DpsGetter, ('tgtSpeed', 'volley'): TgtSpeed2VolleyGetter, ('tgtSpeed', 'damage'): TgtSpeed2InflictedDamageGetter, ('tgtSigRad', 'dps'): TgtSigRadius2DpsGetter, ('tgtSigRad', 'volley'): TgtSigRadius2VolleyGetter, ('tgtSigRad', 'damage'): TgtSigRadius2InflictedDamageGetter} _denormalizers = { ('distance', 'km'): lambda v, src, tgt: None if v is None else v / 1000, ('tgtSpeed', '%'): lambda v, src, tgt: v * 100 / tgt.getMaxVelocity(), ('tgtSigRad', '%'): lambda v, src, tgt: v * 100 / tgt.getSigRadius()} ================================================ FILE: graphs/data/fitEcmBurstScanresDamps/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitEcmBurstScanresDampsGraph FitEcmBurstScanresDampsGraph.register() ================================================ FILE: graphs/data/fitEcmBurstScanresDamps/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from eos.calc import calculateLockTime from graphs.data.base import SmoothPointGetter ECM_BURST_DURATION = 30 DRONE_LOCK_TIME = 2 class TgtScanRes2TgtLockTimeGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): if miscParams['applyDamps']: tgtScanResMult = src.item.getDampMultScanRes() else: tgtScanResMult = 1 return { 'tgtScanResMult': tgtScanResMult, 'sigRadius': src.item.ship.getModifiedItemAttr('signatureRadius')} def _calculatePoint(self, x, miscParams, src, tgt, commonData): scanRes = x time = calculateLockTime( srcScanRes=scanRes * commonData['tgtScanResMult'], tgtSigRadius=commonData['sigRadius']) return time class TgtScanRes2TgtLockUptimeGetter(TgtScanRes2TgtLockTimeGetter): def _calculatePoint(self, *args, **kwargs): # Assuming you ECM burst every 30 seconds, find out how long you # will be locked before you burst another time lockTime = super()._calculatePoint(*args, **kwargs) lockedTime = max(0, ECM_BURST_DURATION - lockTime) return lockedTime class SrcDmgBaseGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): if miscParams['applyDamps']: tgtScanResMult = src.item.getDampMultScanRes() else: tgtScanResMult = 1 return { 'tgtScanResMult': tgtScanResMult, 'srcSigRadius': src.item.ship.getModifiedItemAttr('signatureRadius'), 'srcEhp': sum(src.item.ehp.values()), 'srcDpsWeapon': src.item.getWeaponDps().total, 'srcDpsDrone': src.item.getDroneDps().total if miscParams['applyDrones'] else 0} @staticmethod def _calculateInflictedDamage(srcSigRadius, srcWeaponDps, srcDroneDps, srcEhp, tgtScanRes, tgtDps, uptimeAdjustment, uptimeAmountLimit): lockTime = calculateLockTime(srcScanRes=tgtScanRes, tgtSigRadius=srcSigRadius) lockUptime = max(0, ECM_BURST_DURATION - lockTime - uptimeAdjustment) lockDowntime = ECM_BURST_DURATION - lockUptime inflictedDmg = 0 remainingEhp = srcEhp for i in range(int(uptimeAmountLimit)): timeAliveUnderFire = min(lockUptime, remainingEhp / tgtDps) timeAlive = lockDowntime + timeAliveUnderFire remainingEhp -= lockUptime * tgtDps inflictedDmg += timeAlive * srcWeaponDps inflictedDmg += max(0, timeAlive - DRONE_LOCK_TIME - 1) * srcDroneDps if remainingEhp <= 0: break return inflictedDmg class TgtScanRes2SrcDmgGetter(SrcDmgBaseGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): damage = self._calculateInflictedDamage( srcSigRadius=commonData['srcSigRadius'], srcWeaponDps=commonData['srcDpsWeapon'], srcDroneDps=commonData['srcDpsDrone'], srcEhp=commonData['srcEhp'], tgtScanRes=x * commonData['tgtScanResMult'], tgtDps=miscParams['tgtDps'], uptimeAdjustment=miscParams['uptimeAdj'], uptimeAmountLimit=miscParams['uptimeAmtLimit']) return damage class TgtDps2SrcDmgGetter(SrcDmgBaseGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): damage = self._calculateInflictedDamage( srcSigRadius=commonData['srcSigRadius'], srcWeaponDps=commonData['srcDpsWeapon'], srcDroneDps=commonData['srcDpsDrone'], srcEhp=commonData['srcEhp'], tgtScanRes=miscParams['tgtScanRes'] * commonData['tgtScanResMult'], tgtDps=x, uptimeAdjustment=miscParams['uptimeAdj'], uptimeAmountLimit=miscParams['uptimeAmtLimit']) return damage ================================================ FILE: graphs/data/fitEcmBurstScanresDamps/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= """ Disclaimer by kadesh: this graph was made to analyze my ECM burst + damp frig concept. I do not think it is useful for regular player, so it is disabled. Enable by setting config.experimentalFeatures = True. """ import math from graphs.data.base import FitGraph, XDef, YDef, Input, InputCheckbox from .getter import ( TgtScanRes2TgtLockTimeGetter, TgtScanRes2TgtLockUptimeGetter, TgtScanRes2SrcDmgGetter, TgtDps2SrcDmgGetter) class FitEcmBurstScanresDampsGraph(FitGraph): # UI stuff hidden = True internalName = 'ecmBurstScanresDamps' name = 'ECM Burst + Scanres Damps' xDefs = [ XDef(handle='tgtDps', unit=None, label='Enemy DPS', mainInput=('tgtDps', None)), XDef(handle='tgtScanRes', unit='mm', label='Enemy scanres', mainInput=('tgtScanRes', 'mm'))] yDefs = [ YDef(handle='srcDmg', unit=None, label='Damage inflicted'), YDef(handle='tgtLockTime', unit='s', label='Lock time'), YDef(handle='tgtLockUptime', unit='s', label='Lock uptime')] inputs = [ Input(handle='tgtScanRes', unit='mm', label='Enemy scanres', iconID=74, defaultValue=700, defaultRange=(100, 1000)), Input(handle='tgtDps', unit=None, label='Enemy DPS', iconID=1432, defaultValue=200, defaultRange=(100, 600)), Input(handle='uptimeAdj', unit='s', label='Uptime adjustment', iconID=1392, defaultValue=1, defaultRange=(None, None), conditions=[(None, ('srcDmg', None))]), Input(handle='uptimeAmtLimit', unit=None, label='Max amount of uptimes', iconID=1397, defaultValue=3, defaultRange=(None, None), conditions=[(None, ('srcDmg', None))])] checkboxes = [ InputCheckbox(handle='applyDamps', label='Apply sensor dampeners', defaultValue=True), InputCheckbox(handle='applyDrones', label='Use drones', defaultValue=True, conditions=[(None, ('srcDmg', None))])] srcExtraCols = ('SigRadius', 'Damp ScanRes') # Calculation stuff _limiters = {'tgtScanRes': lambda src, tgt: (1, math.inf)} _getters = { ('tgtScanRes', 'tgtLockTime'): TgtScanRes2TgtLockTimeGetter, ('tgtScanRes', 'tgtLockUptime'): TgtScanRes2TgtLockUptimeGetter, ('tgtScanRes', 'srcDmg'): TgtScanRes2SrcDmgGetter, ('tgtDps', 'srcDmg'): TgtDps2SrcDmgGetter} ================================================ FILE: graphs/data/fitEwarStats/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitEwarStatsGraph FitEwarStatsGraph.register() ================================================ FILE: graphs/data/fitEwarStats/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from eos.calc import calculateMultiplier, calculateRangeFactor from graphs.calc import checkLockRange, checkDroneControlRange from graphs.data.base import SmoothPointGetter class Distance2NeutingStrGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) neuts = [] for mod in src.item.activeModulesIter(): for effectName in ('energyNeutralizerFalloff', 'structureEnergyNeutralizerFalloff'): if effectName in mod.item.effects: neuts.append(( mod.getModifiedItemAttr('energyNeutralizerAmount') / self.__getDuration(mod) * resonance, mod.maxRange or 0, mod.falloff or 0, True, False)) if 'energyNosferatuFalloff' in mod.item.effects and mod.getModifiedItemAttr('nosOverride'): neuts.append(( mod.getModifiedItemAttr('powerTransferAmount') / self.__getDuration(mod) * resonance, mod.maxRange or 0, mod.falloff or 0, True, False)) if 'doomsdayAOENeut' in mod.item.effects: neuts.append(( mod.getModifiedItemAttr('energyNeutralizerAmount') / self.__getDuration(mod) * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, False, False)) for drone in src.item.activeDronesIter(): if 'entityEnergyNeutralizerFalloff' in drone.item.effects: neuts.extend(drone.amountActive * (( drone.getModifiedItemAttr('energyNeutralizerAmount') / (drone.getModifiedItemAttr('energyNeutralizerDuration') / 1000) * resonance, math.inf, 0, True, True),)) for fighter, ability in src.item.activeFighterAbilityIter(): if ability.effect.name == 'fighterAbilityEnergyNeutralizer': nps = fighter.getModifiedItemAttr('fighterAbilityEnergyNeutralizerAmount') / (ability.cycleTime / 1000) neuts.append(( nps * fighter.amount * resonance, math.inf, 0, True, False)) return {'neuts': neuts} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) combinedStr = 0 for strength, optimal, falloff, needsLock, needsDcr in commonData['neuts']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue combinedStr += strength * calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) return combinedStr def __getDuration(self, mod): return getattr(mod.getCycleParameters(), 'averageTime', math.inf) / 1000 class Distance2WebbingStrGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) webs = [] for mod in src.item.activeModulesIter(): for effectName in ('remoteWebifierFalloff', 'structureModuleEffectStasisWebifier'): if effectName in mod.item.effects: webs.append(( mod.getModifiedItemAttr('speedFactor') * resonance, mod.maxRange or 0, mod.falloff or 0, 'default', True, False)) if 'doomsdayAOEWeb' in mod.item.effects: webs.append(( mod.getModifiedItemAttr('speedFactor') * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', False, False)) for drone in src.item.activeDronesIter(): if 'remoteWebifierEntity' in drone.item.effects: webs.extend(drone.amountActive * (( drone.getModifiedItemAttr('speedFactor') * resonance, math.inf, 0, 'default', True, True),)) for fighter, ability in src.item.activeFighterAbilityIter(): if ability.effect.name == 'fighterAbilityStasisWebifier': webs.append(( fighter.getModifiedItemAttr('fighterAbilityStasisWebifierSpeedPenalty') * fighter.amount * resonance, math.inf, 0, 'default', True, False)) return {'webs': webs} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) strMults = {} for strength, optimal, falloff, stackingGroup, needsLock, needsDcr in commonData['webs']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue strength *= calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) strMults.setdefault(stackingGroup, []).append((1 + strength / 100, None)) strMult = calculateMultiplier(strMults) strength = (1 - strMult) * 100 return strength class Distance2EcmStrMaxGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 ECM_ATTRS_GENERAL = ('scanGravimetricStrengthBonus', 'scanLadarStrengthBonus', 'scanMagnetometricStrengthBonus', 'scanRadarStrengthBonus') ECM_ATTRS_FIGHTERS = ('fighterAbilityECMStrengthGravimetric', 'fighterAbilityECMStrengthLadar', 'fighterAbilityECMStrengthMagnetometric', 'fighterAbilityECMStrengthRadar') def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) ecms = [] for mod in src.item.activeModulesIter(): for effectName in ('remoteECMFalloff', 'structureModuleEffectECM'): if effectName in mod.item.effects: ecms.append(( max(mod.getModifiedItemAttr(a) for a in self.ECM_ATTRS_GENERAL) * resonance, mod.maxRange or 0, mod.falloff or 0, True, False)) if 'doomsdayAOEECM' in mod.item.effects: ecms.append(( max(mod.getModifiedItemAttr(a) for a in self.ECM_ATTRS_GENERAL) * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, False, False)) for drone in src.item.activeDronesIter(): if 'entityECMFalloff' in drone.item.effects: ecms.extend(drone.amountActive * (( max(drone.getModifiedItemAttr(a) for a in self.ECM_ATTRS_GENERAL) * resonance, math.inf, 0, True, True),)) for fighter, ability in src.item.activeFighterAbilityIter(): if ability.effect.name == 'fighterAbilityECM': ecms.append(( max(fighter.getModifiedItemAttr(a) for a in self.ECM_ATTRS_FIGHTERS) * fighter.amount * resonance, math.inf, 0, True, False)) return {'ecms': ecms} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) combinedStr = 0 for strength, optimal, falloff, needsLock, needsDcr in commonData['ecms']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue combinedStr += strength * calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) return combinedStr class Distance2DampStrLockRangeGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) damps = [] for mod in src.item.activeModulesIter(): for effectName in ('remoteSensorDampFalloff', 'structureModuleEffectRemoteSensorDampener'): if effectName in mod.item.effects: damps.append(( mod.getModifiedItemAttr('maxTargetRangeBonus') * resonance, mod.maxRange or 0, mod.falloff or 0, 'default', True, False)) if 'doomsdayAOEDamp' in mod.item.effects: damps.append(( mod.getModifiedItemAttr('maxTargetRangeBonus') * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', False, False)) for drone in src.item.activeDronesIter(): if 'remoteSensorDampEntity' in drone.item.effects: damps.extend(drone.amountActive * (( drone.getModifiedItemAttr('maxTargetRangeBonus') * resonance, math.inf, 0, 'default', True, True),)) return {'damps': damps} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) strMults = {} for strength, optimal, falloff, stackingGroup, needsLock, needsDcr in commonData['damps']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue strength *= calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) strMults.setdefault(stackingGroup, []).append((1 + strength / 100, None)) strMult = calculateMultiplier(strMults) strength = (1 - strMult) * 100 return strength class Distance2TdStrOptimalGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) tds = [] for mod in src.item.activeModulesIter(): for effectName in ('shipModuleTrackingDisruptor', 'structureModuleEffectWeaponDisruption'): if effectName in mod.item.effects: tds.append(( mod.getModifiedItemAttr('maxRangeBonus') * resonance, mod.maxRange or 0, mod.falloff or 0, 'default', True, False)) if 'doomsdayAOETrack' in mod.item.effects: tds.append(( mod.getModifiedItemAttr('maxRangeBonus') * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', False, False)) for drone in src.item.activeDronesIter(): if 'npcEntityWeaponDisruptor' in drone.item.effects: tds.extend(drone.amountActive * (( drone.getModifiedItemAttr('maxRangeBonus') * resonance, math.inf, 0, 'default', True, True),)) return {'tds': tds} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) strMults = {} for strength, optimal, falloff, stackingGroup, needsLock, needsDcr in commonData['tds']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue strength *= calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) strMults.setdefault(stackingGroup, []).append((1 + strength / 100, None)) strMult = calculateMultiplier(strMults) strength = (1 - strMult) * 100 return strength class Distance2GdStrRangeGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) gds = [] for mod in src.item.activeModulesIter(): for effectName in ('shipModuleGuidanceDisruptor', 'structureModuleEffectWeaponDisruption'): if effectName in mod.item.effects: gds.append(( mod.getModifiedItemAttr('missileVelocityBonus') * resonance, mod.getModifiedItemAttr('explosionDelayBonus') * resonance, mod.maxRange or 0, mod.falloff or 0, 'default', True, False)) if 'doomsdayAOETrack' in mod.item.effects: gds.append(( mod.getModifiedItemAttr('missileVelocityBonus') * resonance, mod.getModifiedItemAttr('explosionDelayBonus') * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', False, False)) return {'gds': gds} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) velocityStrMults = {} timeStrMults = {} for velocityStr, timeStr, optimal, falloff, stackingGroup, needsLock, needsDcr in commonData['gds']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue rangeFactor = calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) velocityStr *= rangeFactor timeStr *= rangeFactor velocityStrMults.setdefault(stackingGroup, []).append((1 + velocityStr / 100, None)) timeStrMults.setdefault(stackingGroup, []).append((1 + timeStr / 100, None)) velocityStrMult = calculateMultiplier(velocityStrMults) timeStrMult = calculateMultiplier(timeStrMults) strength = (1 - velocityStrMult * timeStrMult) * 100 return strength class Distance2TpStrGetter(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): resonance = 1 - (miscParams['resist'] or 0) tps = [] for mod in src.item.activeModulesIter(): for effectName in ('remoteTargetPaintFalloff', 'structureModuleEffectTargetPainter'): if effectName in mod.item.effects: tps.append(( mod.getModifiedItemAttr('signatureRadiusBonus') * resonance, mod.maxRange or 0, mod.falloff or 0, 'default', True, False)) if 'doomsdayAOEPaint' in mod.item.effects: tps.append(( mod.getModifiedItemAttr('signatureRadiusBonus') * resonance, max(0, (mod.maxRange or 0) + mod.getModifiedItemAttr('doomsdayAOERange')), mod.falloff or 0, 'default', False, False)) for drone in src.item.activeDronesIter(): if 'remoteTargetPaintEntity' in drone.item.effects: tps.extend(drone.amountActive * (( drone.getModifiedItemAttr('signatureRadiusBonus') * resonance, math.inf, 0, 'default', True, True),)) return {'tps': tps} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) strMults = {} for strength, optimal, falloff, stackingGroup, needsLock, needsDcr in commonData['tps']: if (needsLock and not inLockRange) or (needsDcr and not inDroneRange): continue strength *= calculateRangeFactor(srcOptimalRange=optimal, srcFalloffRange=falloff, distance=distance) strMults.setdefault(stackingGroup, []).append((1 + strength / 100, None)) strMult = calculateMultiplier(strMults) strength = (strMult - 1) * 100 return strength ================================================ FILE: graphs/data/fitEwarStats/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, XDef, YDef from .getter import (Distance2DampStrLockRangeGetter, Distance2EcmStrMaxGetter, Distance2GdStrRangeGetter, Distance2NeutingStrGetter, Distance2TdStrOptimalGetter, Distance2TpStrGetter, Distance2WebbingStrGetter) _t = wx.GetTranslation class FitEwarStatsGraph(FitGraph): # UI stuff internalName = 'ewarStatsGraph' name = _t('Electronic Warfare Stats') xDefs = [XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km'))] yDefs = [ YDef(handle='neutStr', unit=None, label=_t('Cap neutralized per second'), selectorLabel=_t('Neuts: cap per second')), YDef(handle='webStr', unit='%', label=_t('Speed reduction'), selectorLabel=_t('Webs: speed reduction')), YDef(handle='ecmStrMax', unit=None, label=_t('Combined ECM strength'), selectorLabel=_t('ECM: combined strength')), YDef(handle='dampStrLockRange', unit='%', label=_t('Lock range reduction'), selectorLabel=_t('Damps: lock range reduction')), YDef(handle='tdStrOptimal', unit='%', label=_t('Turret optimal range reduction'), selectorLabel=_t('TDs: turret optimal range reduction')), YDef(handle='gdStrRange', unit='%', label=_t('Missile flight range reduction'), selectorLabel=_t('GDs: missile flight range reduction')), YDef(handle='tpStr', unit='%', label=_t('Signature radius increase'), selectorLabel=_t('TPs: signature radius increase'))] inputs = [ Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100)), Input(handle='resist', unit='%', label=_t('Target resistance'), iconID=1393, defaultValue=0, defaultRange=(0, 100))] # Calculation stuff _normalizers = { ('distance', 'km'): lambda v, src, tgt: None if v is None else v * 1000, ('resist', '%'): lambda v, src, tgt: None if v is None else v / 100} _limiters = {'resist': lambda src, tgt: (0, 1)} _getters = { ('distance', 'neutStr'): Distance2NeutingStrGetter, ('distance', 'webStr'): Distance2WebbingStrGetter, ('distance', 'ecmStrMax'): Distance2EcmStrMaxGetter, ('distance', 'dampStrLockRange'): Distance2DampStrLockRangeGetter, ('distance', 'tdStrOptimal'): Distance2TdStrOptimalGetter, ('distance', 'gdStrRange'): Distance2GdStrRangeGetter, ('distance', 'tpStr'): Distance2TpStrGetter} _denormalizers = {('distance', 'km'): lambda v, src, tgt: None if v is None else v / 1000} ================================================ FILE: graphs/data/fitLockTime/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitLockTimeGraph FitLockTimeGraph.register() ================================================ FILE: graphs/data/fitLockTime/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from graphs.data.base import SmoothPointGetter class TgtSigRadius2LockTimeGetter(SmoothPointGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): tgtSigRadius = x time = src.item.calculateLockTime(radius=tgtSigRadius) return time ================================================ FILE: graphs/data/fitLockTime/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math import wx from graphs.data.base import FitGraph, Input, XDef, YDef from .getter import TgtSigRadius2LockTimeGetter _t = wx.GetTranslation class FitLockTimeGraph(FitGraph): # UI stuff internalName = 'lockTimeGraph' name = _t('Lock Time') xDefs = [XDef(handle='tgtSigRad', unit='m', label=_t('Target signature radius'), mainInput=('tgtSigRad', 'm'))] yDefs = [YDef(handle='time', unit='s', label=_t('Lock time'))] inputs = [Input(handle='tgtSigRad', unit='m', label=_t('Target signature'), iconID=1390, defaultValue=None, defaultRange=(25, 500))] srcExtraCols = ('ScanResolution',) # Calculation stuff _limiters = {'tgtSigRad': lambda src, tgt: (1, math.inf)} _getters = {('tgtSigRad', 'time'): TgtSigRadius2LockTimeGetter} ================================================ FILE: graphs/data/fitMobility/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitMobilityGraph FitMobilityGraph.register() ================================================ FILE: graphs/data/fitMobility/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from graphs.data.base import SmoothPointGetter class Time2DistanceGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxSpeed': src.getMaxVelocity(), 'mass': src.item.ship.getModifiedItemAttr('mass'), 'agility': src.item.ship.getModifiedItemAttr('agility')} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x maxSpeed = commonData['maxSpeed'] mass = commonData['mass'] agility = commonData['agility'] # Definite integral of: # https://wiki.eveuniversity.org/Acceleration#Mathematics_and_formulae distance_t = maxSpeed * time + (maxSpeed * agility * mass * math.exp((-time * 1000000) / (agility * mass)) / 1000000) distance_0 = maxSpeed * 0 + (maxSpeed * agility * mass * math.exp((-0 * 1000000) / (agility * mass)) / 1000000) distance = distance_t - distance_0 return distance class Time2SpeedGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxSpeed': src.getMaxVelocity(), 'mass': src.item.ship.getModifiedItemAttr('mass'), 'agility': src.item.ship.getModifiedItemAttr('agility')} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x maxSpeed = commonData['maxSpeed'] mass = commonData['mass'] agility = commonData['agility'] # https://wiki.eveuniversity.org/Acceleration#Mathematics_and_formulae speed = maxSpeed * (1 - math.exp((-time * 1000000) / (agility * mass))) return speed class Time2MomentumGetter(Time2SpeedGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): mass = commonData['mass'] speed = Time2SpeedGetter._calculatePoint( self, x=x, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) momentum = speed * mass return momentum class Time2BumpSpeedGetter(Time2SpeedGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): # S. Santorine, Ship Motion in EVE-Online, p3, Collisions & Bumping section # https://docs.google.com/document/d/1rwVWjTvzVdPEFETf0vwm649AFb4bgRBaNLpRPaoB03o # Internally, Santorine's formulas are using millions of kilograms, so we normalize to them here bumperMass = commonData['mass'] / 10 ** 6 bumperSpeed = Time2SpeedGetter._calculatePoint( self, x=x, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) tgtMass = miscParams['tgtMass'] / 10 ** 6 tgtSpeed = (2 * bumperSpeed * bumperMass) / (bumperMass + tgtMass) return tgtSpeed class Time2BumpDistanceGetter(Time2BumpSpeedGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): # S. Santorine, Ship Motion in EVE-Online, p3, Collisions & Bumping section # https://docs.google.com/document/d/1rwVWjTvzVdPEFETf0vwm649AFb4bgRBaNLpRPaoB03o # Internally, Santorine's formulas are using millions of kilograms, so we normalize to them here tgtMass = miscParams['tgtMass'] / 10 ** 6 tgtInertia = miscParams['tgtInertia'] tgtSpeed = Time2BumpSpeedGetter._calculatePoint( self, x=x, miscParams=miscParams, src=src, tgt=tgt, commonData=commonData) tgtDistance = tgtSpeed * tgtMass * tgtInertia return tgtDistance ================================================ FILE: graphs/data/fitMobility/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, XDef, YDef from .getter import Time2BumpDistanceGetter, Time2BumpSpeedGetter, Time2DistanceGetter, Time2MomentumGetter, Time2SpeedGetter _t = wx.GetTranslation class FitMobilityGraph(FitGraph): # UI stuff internalName = 'mobilityGraph' name = _t('Mobility') xDefs = [XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's'))] yDefs = [ YDef(handle='speed', unit='m/s', label=_t('Speed')), YDef(handle='distance', unit='km', label=_t('Distance')), YDef(handle='momentum', unit='Gkg⋅m/s', label=_t('Momentum')), YDef(handle='bumpSpeed', unit='m/s', label=_t('Target speed'), selectorLabel=_t('Bump speed')), YDef(handle='bumpDistance', unit='km', label=_t('Target distance traveled'), selectorLabel=_t('Bump distance'))] inputs = [ Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=10, defaultRange=(0, 30)), # Default values in target fields correspond to a random carrier/fax Input(handle='tgtMass', unit='Mkg', label=_t('Target mass'), iconID=76, defaultValue=1300, defaultRange=(100, 2500), conditions=[(None, ('bumpSpeed', 'm/s')), (None, ('bumpDistance', 'km'))], secondaryTooltip=_t('Defined in millions of kilograms')), Input(handle='tgtInertia', unit=None, label=_t('Target inertia factor'), iconID=1401, defaultValue=0.015, defaultRange=(0.03, 0.1), conditions=[(None, ('bumpDistance', 'km'))], secondaryTooltip=_t('Inertia Modifier attribute value of the target ship'))] srcExtraCols = ('Speed', 'Agility') # Calculation stuff _normalizers = {('tgtMass', 'Mkg'): lambda v, src, tgt: None if v is None else v * 10 ** 6} _getters = { ('time', 'speed'): Time2SpeedGetter, ('time', 'distance'): Time2DistanceGetter, ('time', 'momentum'): Time2MomentumGetter, ('time', 'bumpSpeed'): Time2BumpSpeedGetter, ('time', 'bumpDistance'): Time2BumpDistanceGetter} _denormalizers = { ('distance', 'km'): lambda v, src, tgt: v / 1000, ('momentum', 'Gkg⋅m/s'): lambda v, src, tgt: v / 10 ** 9, ('bumpDistance', 'km'): lambda v, src, tgt: v / 1000} ================================================ FILE: graphs/data/fitRemoteReps/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitRemoteRepsGraph FitRemoteRepsGraph.register() ================================================ FILE: graphs/data/fitRemoteReps/cache.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from copy import copy from eos.utils.float import floatUnerr from eos.utils.spoolSupport import SpoolOptions, SpoolType from eos.utils.stats import RRTypes from graphs.data.base import FitDataCache class TimeCache(FitDataCache): # Whole data getters def getRpsData(self, src, ancReload): """Return RPS data in {time: {key: rps}} format.""" return self._data[src.item.ID][ancReload]['finalRps'] def getRepAmountData(self, src, ancReload): """Return rep amount data in {time: {key: amount}} format.""" return self._data[src.item.ID][ancReload]['finalRepAmount'] # Specific data point getters def getRpsDataPoint(self, src, ancReload, time): """Get RPS data by specified time in {key: rps} format.""" return self._getDataPoint(src=src, ancReload=ancReload, time=time, dataFunc=self.getRpsData) def getRepAmountDataPoint(self, src, ancReload, time): """Get rep amount data by specified time in {key: amount} format.""" return self._getDataPoint(src=src, ancReload=ancReload, time=time, dataFunc=self.getRepAmountData) # Preparation functions def prepareRpsData(self, src, ancReload, maxTime): # Time is none means that time parameter has to be ignored, # we do not need cache for that if maxTime is None: return True self._generateInternalForm(src=src, ancReload=ancReload, maxTime=maxTime) fitCache = self._data[src.item.ID][ancReload] # Final cache has been generated already, don't do anything if 'finalRps' in fitCache: return # Convert cache from segments with assigned values into points # which are located at times when rps value changes pointCache = {} for key, rpsList in fitCache['internalRps'].items(): pointData = pointCache[key] = {} prevRps = None prevTimeEnd = None for timeStart, timeEnd, rps in rpsList: # First item if not pointData: pointData[timeStart] = rps # Gap between items elif floatUnerr(prevTimeEnd) < floatUnerr(timeStart): pointData[prevTimeEnd] = RRTypes(0, 0, 0, 0) pointData[timeStart] = rps # Changed value elif rps != prevRps: pointData[timeStart] = rps prevRps = rps prevTimeEnd = timeEnd # We have data in another form, do not need old one any longer del fitCache['internalRps'] changesByTime = {} for key, rpsMap in pointCache.items(): for time in rpsMap: changesByTime.setdefault(time, []).append(key) # Here we convert cache to following format: # {time: {key: rps} finalRpsCache = fitCache['finalRps'] = {} timeRpsData = {} for time in sorted(changesByTime): timeRpsData = copy(timeRpsData) for key in changesByTime[time]: timeRpsData[key] = pointCache[key][time] finalRpsCache[time] = timeRpsData def prepareRepAmountData(self, src, ancReload, maxTime): # Time is none means that time parameter has to be ignored, # we do not need cache for that if maxTime is None: return self._generateInternalForm(src=src, ancReload=ancReload, maxTime=maxTime) fitCache = self._data[src.item.ID][ancReload] # Final cache has been generated already, don't do anything if 'finalRepAmount' in fitCache: return intCache = fitCache['internalRepAmount'] changesByTime = {} for key, remAmountMap in intCache.items(): for time in remAmountMap: changesByTime.setdefault(time, []).append(key) # Here we convert cache to following format: # {time: {key: hp repaired by key at this time}} finalCache = fitCache['finalRepAmount'] = {} timeRepAmountData = {} for time in sorted(changesByTime): timeRepAmountData = copy(timeRepAmountData) for key in changesByTime[time]: keyRepAmount = intCache[key][time] if key in timeRepAmountData: timeRepAmountData[key] = timeRepAmountData[key] + keyRepAmount else: timeRepAmountData[key] = keyRepAmount finalCache[time] = timeRepAmountData # We do not need internal cache once we have final del fitCache['internalRepAmount'] # Private stuff def _generateInternalForm(self, src, ancReload, maxTime): if self._isTimeCacheValid(src=src, ancReload=ancReload, maxTime=maxTime): return fitCache = self._data.setdefault(src.item.ID, {})[ancReload] = {'maxTime': maxTime} intCacheRps = fitCache['internalRps'] = {} intCacheRepAmount = fitCache['internalRepAmount'] = {} def addRps(rrKey, addedTimeStart, addedTimeFinish, addedRepAmounts): if not addedRepAmounts: return repAmountSum = sum(addedRepAmounts, RRTypes(0, 0, 0, 0)) if repAmountSum.shield > 0 or repAmountSum.armor > 0 or repAmountSum.hull > 0: addedRps = repAmountSum / (addedTimeFinish - addedTimeStart) rrCacheRps = intCacheRps.setdefault(rrKey, []) rrCacheRps.append((addedTimeStart, addedTimeFinish, addedRps)) def addRepAmount(rrKey, addedTime, addedRepAmount): if addedRepAmount.shield > 0 or addedRepAmount.armor > 0 or addedRepAmount.hull > 0: intCacheRepAmount.setdefault(rrKey, {})[addedTime] = addedRepAmount # Modules for mod in src.item.activeModulesIter(): if not mod.isRemoteRepping(): continue isAncShield = 'shipModuleAncillaryRemoteShieldBooster' in mod.item.effects isAncArmor = 'shipModuleAncillaryRemoteArmorRepairer' in mod.item.effects if isAncShield or isAncArmor: cycleParams = mod.getCycleParameters(reloadOverride=ancReload) else: cycleParams = mod.getCycleParameters(reloadOverride=True) if cycleParams is None: continue currentTime = 0 nonstopCycles = 0 cyclesWithoutReload = 0 cyclesUntilReload = mod.numShots for cycleTimeMs, inactiveTimeMs, isInactivityReload in cycleParams.iterCycles(): cyclesWithoutReload += 1 cycleRepAmounts = [] repAmountParams = mod.getRepAmountParameters(spoolOptions=SpoolOptions(SpoolType.CYCLES, nonstopCycles, True)) for repTimeMs, repAmount in repAmountParams.items(): # Loaded ancillary armor rep can keep running at less efficiency if we decide to not reload if isAncArmor and mod.charge and not ancReload and cyclesWithoutReload > cyclesUntilReload: repAmount = repAmount / mod.getModifiedItemAttr('chargedArmorDamageMultiplier', 1) cycleRepAmounts.append(repAmount) addRepAmount(mod, currentTime + repTimeMs / 1000, repAmount) addRps(mod, currentTime, currentTime + cycleTimeMs / 1000, cycleRepAmounts) if inactiveTimeMs > 0: nonstopCycles = 0 else: nonstopCycles += 1 if isInactivityReload: cyclesWithoutReload = 0 if currentTime > maxTime: break currentTime += cycleTimeMs / 1000 + inactiveTimeMs / 1000 # Drones for drone in src.item.activeDronesIter(): if not drone.isRemoteRepping(): continue cycleParams = drone.getCycleParameters(reloadOverride=True) if cycleParams is None: continue currentTime = 0 repAmountParams = drone.getRepAmountParameters() for cycleTimeMs, inactiveTimeMs, isInactivityReload in cycleParams.iterCycles(): cycleRepAmounts = [] for repTimeMs, repAmount in repAmountParams.items(): cycleRepAmounts.append(repAmount) addRepAmount(drone, currentTime + repTimeMs / 1000, repAmount) addRps(drone, currentTime, currentTime + cycleTimeMs / 1000, cycleRepAmounts) if currentTime > maxTime: break currentTime += cycleTimeMs / 1000 + inactiveTimeMs / 1000 def _isTimeCacheValid(self, src, ancReload, maxTime): try: cacheMaxTime = self._data[src.item.ID][ancReload]['maxTime'] except KeyError: return False return maxTime <= cacheMaxTime def _getDataPoint(self, src, ancReload, time, dataFunc): data = dataFunc(src=src, ancReload=ancReload) timesBefore = [t for t in data if floatUnerr(t) <= floatUnerr(time)] try: time = max(timesBefore) except ValueError: return {} else: return data[time] ================================================ FILE: graphs/data/fitRemoteReps/calc.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from eos.calc import calculateRangeFactor from eos.utils.float import floatUnerr from graphs.calc import checkLockRange, checkDroneControlRange def getApplicationPerKey(src, distance): inLockRange = checkLockRange(src=src, distance=distance) inDroneRange = checkDroneControlRange(src=src, distance=distance) applicationMap = {} for mod in src.item.activeModulesIter(): if not mod.isRemoteRepping(): continue if not inLockRange: applicationMap[mod] = 0 else: applicationMap[mod] = calculateRangeFactor( srcOptimalRange=mod.maxRange or 0, srcFalloffRange=mod.falloff or 0, distance=distance) for drone in src.item.activeDronesIter(): if not drone.isRemoteRepping(): continue if not inLockRange or not inDroneRange: applicationMap[drone] = 0 else: applicationMap[drone] = 1 # Ensure consistent results - round off a little to avoid float errors for k, v in applicationMap.items(): applicationMap[k] = floatUnerr(v) return applicationMap ================================================ FILE: graphs/data/fitRemoteReps/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import eos.config from eos.utils.spoolSupport import SpoolOptions, SpoolType from eos.utils.stats import RRTypes from graphs.data.base import PointGetter, SmoothPointGetter from .calc import getApplicationPerKey def applyReps(rrMap, applicationMap): totalAmount = RRTypes(shield=0, armor=0, hull=0, capacitor=0) for key, repAmount in rrMap.items(): totalAmount += repAmount * applicationMap.get(key, 0) # We do not want to include energy transfers into final value totalReps = totalAmount.shield + totalAmount.armor + totalAmount.hull return totalReps # Y mixins class YRpsMixin: def _getRepsPerKey(self, src, ancReload, time): # Use data from time cache if time was not specified if time is not None: return self._getTimeCacheDataPoint(src=src, ancReload=ancReload, time=time) # Compose map ourselves using current fit settings if time is not specified rpsMap = {} defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] for mod in src.item.activeModulesIter(): if not mod.isRemoteRepping(): continue isAncShield = 'shipModuleAncillaryRemoteShieldBooster' in mod.item.effects isAncArmor = 'shipModuleAncillaryRemoteArmorRepairer' in mod.item.effects rpsMap[mod] = mod.getRemoteReps( spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False), reloadOverride=ancReload if (isAncShield or isAncArmor) else None) for drone in src.item.activeDronesIter(): if not drone.isRemoteRepping(): continue rpsMap[drone] = drone.getRemoteReps() return rpsMap def _prepareTimeCache(self, src, ancReload, maxTime): self.graph._timeCache.prepareRpsData(src=src, ancReload=ancReload, maxTime=maxTime) def _getTimeCacheData(self, src, ancReload): return self.graph._timeCache.getRpsData(src=src, ancReload=ancReload) def _getTimeCacheDataPoint(self, src, ancReload, time): return self.graph._timeCache.getRpsDataPoint(src=src, ancReload=ancReload, time=time) class YRepAmountMixin: def _getRepsPerKey(self, src, ancReload, time): # Total reps given makes no sense without time specified if time is None: raise ValueError return self._getTimeCacheDataPoint(src=src, ancReload=ancReload, time=time) def _prepareTimeCache(self, src, ancReload, maxTime): self.graph._timeCache.prepareRepAmountData(src=src, ancReload=ancReload, maxTime=maxTime) def _getTimeCacheData(self, src, ancReload): return self.graph._timeCache.getRepAmountData(src=src, ancReload=ancReload) def _getTimeCacheDataPoint(self, src, ancReload, time): return self.graph._timeCache.getRepAmountDataPoint(src=src, ancReload=ancReload, time=time) # X mixins class XDistanceMixin(SmoothPointGetter): _baseResolution = 50 _extraDepth = 2 def _getCommonData(self, miscParams, src, tgt): # Prepare time cache here because we need to do it only once, # and this function is called once per point info fetch self._prepareTimeCache(src=src, ancReload=miscParams['ancReload'], maxTime=miscParams['time']) return {'rrMap': self._getRepsPerKey(src=src, ancReload=miscParams['ancReload'], time=miscParams['time'])} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x applicationMap = getApplicationPerKey(src=src, distance=distance) y = applyReps( rrMap=commonData['rrMap'], applicationMap=applicationMap) return y class XTimeMixin(PointGetter): def getRange(self, xRange, miscParams, src, tgt): xs = [] ys = [] minTime, maxTime = xRange # Prepare time cache and various shared data self._prepareTimeCache(src=src, ancReload=miscParams['ancReload'], maxTime=maxTime) timeCache = self._getTimeCacheData(src=src, ancReload=miscParams['ancReload']) applicationMap = getApplicationPerKey(src=src, distance=miscParams['distance']) # Custom iteration for time graph to show all data points currentRepAmount = None currentTime = None for currentTime in sorted(timeCache): prevRepAmount = currentRepAmount currentRepAmountData = timeCache[currentTime] currentRepAmount = applyReps(rrMap=currentRepAmountData, applicationMap=applicationMap) if currentTime < minTime: continue # First set of data points if not xs: # Start at exactly requested time, at last known value initialRepAmount = prevRepAmount or 0 xs.append(minTime) ys.append(initialRepAmount) # If current time is bigger then starting, extend plot to that time with old value if currentTime > minTime: xs.append(currentTime) ys.append(initialRepAmount) # If new value is different, extend it with new point to the new value if currentRepAmount != prevRepAmount: xs.append(currentTime) ys.append(currentRepAmount) continue # Last data point if currentTime >= maxTime: xs.append(maxTime) ys.append(prevRepAmount) break # Anything in-between if currentRepAmount != prevRepAmount: if prevRepAmount is not None: xs.append(currentTime) ys.append(prevRepAmount) xs.append(currentTime) ys.append(currentRepAmount) # Special case - there are no remote reppers if currentRepAmount is None and currentTime is None: xs.append(minTime) ys.append(0) # Make sure that last data point is always at max time if maxTime > (currentTime or 0): xs.append(maxTime) ys.append(currentRepAmount or 0) return xs, ys def getPoint(self, x, miscParams, src, tgt): time = x # Prepare time cache and various data self._prepareTimeCache(src=src, ancReload=miscParams['ancReload'], maxTime=time) repAmountData = self._getTimeCacheDataPoint(src=src, ancReload=miscParams['ancReload'], time=time) applicationMap = getApplicationPerKey(src=src, distance=miscParams['distance']) y = applyReps(rrMap=repAmountData, applicationMap=applicationMap) return y # Final getters class Distance2RpsGetter(XDistanceMixin, YRpsMixin): pass class Distance2RepAmountGetter(XDistanceMixin, YRepAmountMixin): pass class Time2RpsGetter(XTimeMixin, YRpsMixin): pass class Time2RepAmountGetter(XTimeMixin, YRepAmountMixin): pass ================================================ FILE: graphs/data/fitRemoteReps/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, InputCheckbox, XDef, YDef from service.const import GraphCacheCleanupReason from .cache import TimeCache from .getter import Distance2RepAmountGetter, Distance2RpsGetter, Time2RepAmountGetter, Time2RpsGetter _t = wx.GetTranslation class FitRemoteRepsGraph(FitGraph): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._timeCache = TimeCache() def _clearInternalCache(self, reason, extraData): # Here, we care only about fit changes, graph changes and option switches # - Input changes are irrelevant as time cache cares only about # time input, and it regenerates once time goes beyond cached value if reason in (GraphCacheCleanupReason.fitChanged, GraphCacheCleanupReason.fitRemoved): self._timeCache.clearForFit(extraData) elif reason == GraphCacheCleanupReason.graphSwitched: self._timeCache.clearAll() # UI stuff internalName = 'remoteRepsGraph' name = _t('Remote Repairs') xDefs = [ XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km')), XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's'))] yDefs = [ YDef(handle='rps', unit='HP/s', label=_t('Repair speed')), YDef(handle='total', unit='HP', label=_t('Total repaired'))] inputs = [ Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=None, defaultRange=(0, 80), secondaryTooltip=_t('When set, uses repairing ship\'s exact RR stats at a given time\nWhen not set, uses repairing ship\'s RR stats as shown in stats panel of main window')), Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=None, defaultRange=(0, 100), mainTooltip=_t('Distance between the repairing ship and the target, as seen in overview (surface-to-surface)'), secondaryTooltip=_t('Distance between the repairing ship and the target, as seen in overview (surface-to-surface)'))] srcExtraCols = ('ShieldRR', 'ArmorRR', 'HullRR') checkboxes = [InputCheckbox(handle='ancReload', label=_t('Reload ancillary RRs'), defaultValue=True)] # Calculation stuff _normalizers = {('distance', 'km'): lambda v, src, tgt: None if v is None else v * 1000} _limiters = {'time': lambda src, tgt: (0, 2500)} _getters = { ('distance', 'rps'): Distance2RpsGetter, ('distance', 'total'): Distance2RepAmountGetter, ('time', 'rps'): Time2RpsGetter, ('time', 'total'): Time2RepAmountGetter} _denormalizers = {('distance', 'km'): lambda v, src, tgt: None if v is None else v / 1000} ================================================ FILE: graphs/data/fitShieldRegen/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitShieldRegenGraph FitShieldRegenGraph.register() ================================================ FILE: graphs/data/fitShieldRegen/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from graphs.data.base import SmoothPointGetter class Time2ShieldAmountGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxShieldAmount': src.item.ship.getModifiedItemAttr('shieldCapacity'), 'shieldRegenTime': src.item.ship.getModifiedItemAttr('shieldRechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x shieldAmount = calculateShieldAmount( maxShieldAmount=commonData['maxShieldAmount'], shieldRegenTime=commonData['shieldRegenTime'], shieldAmountT0=miscParams['shieldAmountT0'] or 0, time=time) return shieldAmount class Time2ShieldRegenGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxShieldAmount': src.item.ship.getModifiedItemAttr('shieldCapacity'), 'shieldRegenTime': src.item.ship.getModifiedItemAttr('shieldRechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): time = x shieldAmount = calculateShieldAmount( maxShieldAmount=commonData['maxShieldAmount'], shieldRegenTime=commonData['shieldRegenTime'], shieldAmountT0=miscParams['shieldAmountT0'] or 0, time=time) shieldRegen = calculateShieldRegen( maxShieldAmount=commonData['maxShieldAmount'], shieldRegenTime=commonData['shieldRegenTime'], currentShieldAmount=shieldAmount) return shieldRegen # Useless, but valid combination of x and y class ShieldAmount2ShieldAmountGetter(SmoothPointGetter): def _calculatePoint(self, x, miscParams, src, tgt, commonData): shieldAmount = x return shieldAmount class ShieldAmount2ShieldRegenGetter(SmoothPointGetter): def _getCommonData(self, miscParams, src, tgt): return { 'maxShieldAmount': src.item.ship.getModifiedItemAttr('shieldCapacity'), 'shieldRegenTime': src.item.ship.getModifiedItemAttr('shieldRechargeRate') / 1000} def _calculatePoint(self, x, miscParams, src, tgt, commonData): shieldAmount = x shieldRegen = calculateShieldRegen( maxShieldAmount=commonData['maxShieldAmount'], shieldRegenTime=commonData['shieldRegenTime'], currentShieldAmount=shieldAmount) return shieldRegen def calculateShieldAmount(maxShieldAmount, shieldRegenTime, shieldAmountT0, time): # The same formula as for cap # https://wiki.eveuniversity.org/Capacitor#Capacitor_recharge_rate return maxShieldAmount * (1 + math.exp(5 * -time / shieldRegenTime) * (math.sqrt(shieldAmountT0 / maxShieldAmount) - 1)) ** 2 def calculateShieldRegen(maxShieldAmount, shieldRegenTime, currentShieldAmount): # The same formula as for cap # https://wiki.eveuniversity.org/Capacitor#Capacitor_recharge_rate return 10 * maxShieldAmount / shieldRegenTime * (math.sqrt(currentShieldAmount / maxShieldAmount) - currentShieldAmount / maxShieldAmount) ================================================ FILE: graphs/data/fitShieldRegen/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx import gui.mainFrame from graphs.data.base import FitGraph, Input, XDef, YDef from .getter import (ShieldAmount2ShieldAmountGetter, ShieldAmount2ShieldRegenGetter, Time2ShieldAmountGetter, Time2ShieldRegenGetter) _t = wx.GetTranslation class FitShieldRegenGraph(FitGraph): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.isEffective = gui.mainFrame.MainFrame.getInstance().statsPane.nameViewMap['resistancesViewFull'].showEffective # UI stuff internalName = 'shieldRegenGraph' name = _t('Shield Regeneration') inputs = [ Input(handle='time', unit='s', label=_t('Time'), iconID=1392, defaultValue=120, defaultRange=(0, 300), conditions=[ (('time', 's'), None)]), Input(handle='shieldAmount', unit='%', label=_t('Shield amount'), iconID=1384, defaultValue=25, defaultRange=(0, 100), conditions=[ (('shieldAmount', 'EHP'), None), (('shieldAmount', 'HP'), None), (('shieldAmount', '%'), None)]), Input(handle='shieldAmountT0', unit='%', label=_t('Starting shield amount'), iconID=1384, defaultValue=0, defaultRange=(0, 100), conditions=[ (('time', 's'), None)])] srcExtraCols = ('ShieldAmount', 'ShieldTime') usesHpEffectivity = True @property def xDefs(self): return [ XDef(handle='time', unit='s', label=_t('Time'), mainInput=('time', 's')), XDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount'), mainInput=('shieldAmount', '%')), XDef(handle='shieldAmount', unit='%', label=_t('Shield amount'), mainInput=('shieldAmount', '%'))] @property def yDefs(self): return [ YDef(handle='shieldAmount', unit='EHP' if self.isEffective else 'HP', label=_t('Shield amount')), YDef(handle='shieldRegen', unit='EHP/s' if self.isEffective else 'HP/s', label=_t('Shield regen'))] # Calculation stuff _normalizers = { ('shieldAmount', '%'): lambda v, src, tgt: v / 100 * src.item.ship.getModifiedItemAttr('shieldCapacity'), ('shieldAmountT0', '%'): lambda v, src, tgt: None if v is None else v / 100 * src.item.ship.getModifiedItemAttr('shieldCapacity'), # Needed only for "x mark" support, to convert EHP x into normalized value ('shieldAmount', 'EHP'): lambda v, src, tgt: v / src.item.damagePattern.effectivify(src.item.ship, 1, 'shield')} _limiters = { 'shieldAmount': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('shieldCapacity')), 'shieldAmountT0': lambda src, tgt: (0, src.item.ship.getModifiedItemAttr('shieldCapacity'))} _getters = { ('time', 'shieldAmount'): Time2ShieldAmountGetter, ('time', 'shieldRegen'): Time2ShieldRegenGetter, ('shieldAmount', 'shieldAmount'): ShieldAmount2ShieldAmountGetter, ('shieldAmount', 'shieldRegen'): ShieldAmount2ShieldRegenGetter} _denormalizers = { ('shieldAmount', '%'): lambda v, src, tgt: v * 100 / src.item.ship.getModifiedItemAttr('shieldCapacity'), ('shieldAmount', 'EHP'): lambda v, src, tgt: src.item.damagePattern.effectivify(src.item.ship, v, 'shield'), ('shieldRegen', 'EHP/s'): lambda v, src, tgt: src.item.damagePattern.effectivify(src.item.ship, v, 'shield')} ================================================ FILE: graphs/data/fitWarpTime/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .graph import FitWarpTimeGraph FitWarpTimeGraph.register() ================================================ FILE: graphs/data/fitWarpTime/cache.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from eos.const import FittingModuleState from graphs.data.base import FitDataCache class SubwarpSpeedCache(FitDataCache): def getSubwarpSpeed(self, src): try: subwarpSpeed = self._data[src.item.ID] except KeyError: modStates = {} disallowedGroups = ( # Active modules which affect ship speed and cannot be used in warp 'Propulsion Module', 'Mass Entanglers', 'Cloaking Device', # Those reduce ship speed to 0 'Siege Module', 'Super Weapon', 'Cynosural Field Generator', 'Clone Vat Bay', 'Jump Portal Generator') for mod in src.item.activeModulesIter(): if mod.item is not None and mod.item.group.name in disallowedGroups: modStates[mod] = mod.state mod.state = FittingModuleState.ONLINE projFitStates = {} for projFit in src.item.projectedFits: projectionInfo = projFit.getProjectionInfo(src.item.ID) if projectionInfo is not None and projectionInfo.active: projFitStates[projectionInfo] = projectionInfo.active projectionInfo.active = False projModStates = {} for mod in src.item.projectedModules: if not mod.isExclusiveSystemEffect and mod.state >= FittingModuleState.ACTIVE: projModStates[mod] = mod.state mod.state = FittingModuleState.ONLINE projDroneStates = {} for drone in src.item.projectedDrones: if drone.amountActive > 0: projDroneStates[drone] = drone.amountActive drone.amountActive = 0 projFighterStates = {} for fighter in src.item.projectedFighters: if fighter.active: projFighterStates[fighter] = fighter.active fighter.active = False src.item.calculateModifiedAttributes() subwarpSpeed = src.getMaxVelocity() self._data[src.item.ID] = subwarpSpeed for projInfo, state in projFitStates.items(): projInfo.active = state for mod, state in modStates.items(): mod.state = state for mod, state in projModStates.items(): mod.state = state for drone, amountActive in projDroneStates.items(): drone.amountActive = amountActive for fighter, state in projFighterStates.items(): fighter.active = state src.item.calculateModifiedAttributes() return subwarpSpeed ================================================ FILE: graphs/data/fitWarpTime/getter.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from graphs.data.base import SmoothPointGetter AU_METERS = 149597870700 class Distance2TimeGetter(SmoothPointGetter): _baseResolution = 500 def _getCommonData(self, miscParams, src, tgt): return { 'subwarpSpeed': self.graph._subspeedCache.getSubwarpSpeed(src), 'warpSpeed': src.item.warpSpeed} def _calculatePoint(self, x, miscParams, src, tgt, commonData): distance = x time = calculate_time_in_warp( max_subwarp_speed=commonData['subwarpSpeed'], max_warp_speed=commonData['warpSpeed'], warp_dist=distance) return time # Taken from https://wiki.eveuniversity.org/Warp_time_calculation#Implementation # with minor modifications # Warp speed in AU/s, subwarp speed in m/s, distance in m def calculate_time_in_warp(max_warp_speed, max_subwarp_speed, warp_dist): if warp_dist == 0: return 0 k_accel = max_warp_speed k_decel = min(max_warp_speed / 3, 2) warp_dropout_speed = min(max_subwarp_speed / 2, 100) max_ms_warp_speed = max_warp_speed * AU_METERS accel_dist = AU_METERS decel_dist = max_ms_warp_speed / k_decel minimum_dist = accel_dist + decel_dist cruise_time = 0 if minimum_dist > warp_dist: max_ms_warp_speed = warp_dist * k_accel * k_decel / (k_accel + k_decel) else: cruise_time = (warp_dist - minimum_dist) / max_ms_warp_speed accel_time = math.log(max_ms_warp_speed / k_accel) / k_accel decel_time = math.log(max_ms_warp_speed / warp_dropout_speed) / k_decel total_time = cruise_time + accel_time + decel_time return total_time ================================================ FILE: graphs/data/fitWarpTime/graph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import wx from graphs.data.base import FitGraph, Input, XDef, YDef from service.const import GraphCacheCleanupReason from .cache import SubwarpSpeedCache from .getter import AU_METERS, Distance2TimeGetter _t = wx.GetTranslation class FitWarpTimeGraph(FitGraph): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._subspeedCache = SubwarpSpeedCache() def _clearInternalCache(self, reason, extraData): if reason in (GraphCacheCleanupReason.fitChanged, GraphCacheCleanupReason.fitRemoved): self._subspeedCache.clearForFit(extraData) elif reason == GraphCacheCleanupReason.graphSwitched: self._subspeedCache.clearAll() # UI stuff internalName = 'warpTimeGraph' name = _t('Warp Time') xDefs = [ XDef(handle='distance', unit='AU', label=_t('Distance'), mainInput=('distance', 'AU')), XDef(handle='distance', unit='km', label=_t('Distance'), mainInput=('distance', 'km'))] yDefs = [YDef(handle='time', unit='s', label=_t('Warp time'))] inputs = [ Input(handle='distance', unit='AU', label=_t('Distance'), iconID=1391, defaultValue=20, defaultRange=(0, 50)), Input(handle='distance', unit='km', label=_t('Distance'), iconID=1391, defaultValue=1000, defaultRange=(150, 5000))] srcExtraCols = ('WarpSpeed', 'WarpDistance') # Calculation stuff _normalizers = { ('distance', 'AU'): lambda v, src, tgt: v * AU_METERS, ('distance', 'km'): lambda v, src, tgt: v * 1000 } _limiters = {'distance': lambda src, tgt: (0, src.item.maxWarpDistance * AU_METERS)} _getters = {('distance', 'time'): Distance2TimeGetter} _denormalizers = { ('distance', 'AU'): lambda v, src, tgt: v / AU_METERS, ('distance', 'km'): lambda v, src, tgt: v / 1000} ================================================ FILE: graphs/events.py ================================================ # noinspection PyPackageRequirements import wx.lib.newevent ResistModeChanged, RESIST_MODE_CHANGED = wx.lib.newevent.NewEvent() ================================================ FILE: graphs/gui/__init__.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= ================================================ FILE: graphs/gui/canvasPanel.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import itertools import math import os import traceback from bisect import bisect # noinspection PyPackageRequirements import wx from logbook import Logger from graphs.style import BASE_COLORS, LIGHTNESSES, STYLES, hsl_to_hsv from gui.utils.numberFormatter import roundToPrec pyfalog = Logger(__name__) try: import matplotlib as mpl mpl_version = int(mpl.__version__[0]) or -1 if mpl_version >= 2: mpl.use('wxagg') graphFrame_enabled = True else: graphFrame_enabled = False from matplotlib.lines import Line2D from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas from matplotlib.figure import Figure from matplotlib.colors import hsv_to_rgb except ImportError as e: pyfalog.warning('Matplotlib failed to import. Likely missing or incompatible version.') graphFrame_enabled = False except (KeyboardInterrupt, SystemExit): raise except Exception: # We can get exceptions deep within matplotlib. Catch those. See GH #1046 tb = traceback.format_exc() pyfalog.critical('Exception when importing Matplotlib. Continuing without importing.') pyfalog.critical(tb) graphFrame_enabled = False class GraphCanvasPanel(wx.Panel): def __init__(self, graphFrame, parent): super().__init__(parent) self.graphFrame = graphFrame # Remove matplotlib font cache, see #234 try: cache_dir = mpl._get_cachedir() except (KeyboardInterrupt, SystemExit): raise except: cache_dir = os.path.expanduser(os.path.join('~', '.matplotlib')) cache_file = os.path.join(cache_dir, 'fontList.cache') if os.access(cache_dir, os.W_OK | os.X_OK) and os.path.isfile(cache_file): os.remove(cache_file) mainSizer = wx.BoxSizer(wx.VERTICAL) self.figure = Figure(figsize=(5, 3), tight_layout={'pad': 1.08}) rgbtuple = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE).Get() clr = [c / 255. for c in rgbtuple] self.figure.set_facecolor(clr) self.figure.set_edgecolor(clr) self.canvas = Canvas(self, -1, self.figure) self.canvas.SetBackgroundColour(wx.Colour(*rgbtuple)) self.canvas.mpl_connect('button_press_event', self.OnMplCanvasClick) self.subplot = self.figure.add_subplot(111) self.subplot.grid(True) mainSizer.Add(self.canvas, 1, wx.EXPAND | wx.ALL, 0) self.SetSizer(mainSizer) self.xMark = None self.mplOnDragHandler = None self.mplOnReleaseHandler = None def draw(self, accurateMarks=True): self.subplot.clear() self.subplot.grid(True) allXs = set() allYs = set() plotData = {} legendData = [] chosenX = self.graphFrame.ctrlPanel.xType chosenY = self.graphFrame.ctrlPanel.yType self.subplot.set( xlabel=self.graphFrame.ctrlPanel.formatLabel(chosenX), ylabel=self.graphFrame.ctrlPanel.formatLabel(chosenY)) mainInput, miscInputs = self.graphFrame.ctrlPanel.getValues() view = self.graphFrame.getView() sources = self.graphFrame.ctrlPanel.sources if view.hasTargets: iterList = tuple(itertools.product(sources, self.graphFrame.ctrlPanel.targets)) else: iterList = tuple((f, None) for f in sources) # Draw plot lines and get data for legend for source, target in iterList: # Get line style data try: colorData = BASE_COLORS[source.colorID] except KeyError: pyfalog.warning('Invalid color "{}" for "{}"'.format(source.colorID, source.name)) continue color = colorData.hsl lineStyle = 'solid' if target is not None: try: lightnessData = LIGHTNESSES[target.lightnessID] except KeyError: pyfalog.warning('Invalid lightness "{}" for "{}"'.format(target.lightnessID, target.name)) continue color = lightnessData.func(color) try: lineStyleData = STYLES[target.lineStyleID] except KeyError: pyfalog.warning('Invalid line style "{}" for "{}"'.format(target.lightnessID, target.name)) continue lineStyle = lineStyleData.mplSpec color = hsv_to_rgb(hsl_to_hsv(color)) # Get point data try: xs, ys = view.getPlotPoints( mainInput=mainInput, miscInputs=miscInputs, xSpec=chosenX, ySpec=chosenY, src=source, tgt=target) if not self.__checkNumbers(xs, ys): pyfalog.warning('Failed to plot "{}" vs "{}" due to inf or NaN in values'.format(source.name, '' if target is None else target.name)) continue plotData[(source, target)] = (xs, ys) allXs.update(xs) allYs.update(ys) # If we have single data point, show marker - otherwise line won't be shown if len(xs) == 1 and len(ys) == 1: self.subplot.plot(xs, ys, color=color, linestyle=lineStyle, marker='.') else: self.subplot.plot(xs, ys, color=color, linestyle=lineStyle) # Fill data for legend if target is None: legendData.append((color, lineStyle, source.shortName)) else: legendData.append((color, lineStyle, '{} vs {}'.format(source.shortName, target.shortName))) except (KeyboardInterrupt, SystemExit): raise except Exception: pyfalog.warning('Failed to plot "{}" vs "{}"'.format(source.name, '' if target is None else target.name)) self.canvas.draw() self.Refresh() return # Setting Y limits for canvas if self.graphFrame.ctrlPanel.showY0: allYs.add(0) canvasMinY, canvasMaxY = self._getLimits(allYs, minExtra=0.05, maxExtra=0.1) canvasMinX, canvasMaxX = self._getLimits(allXs, minExtra=0.02, maxExtra=0.02) self.subplot.set_ylim(bottom=canvasMinY, top=canvasMaxY) self.subplot.set_xlim(left=canvasMinX, right=canvasMaxX) # Process X marks line if self.xMark is not None: minX = min(allXs, default=None) maxX = max(allXs, default=None) if minX is not None and maxX is not None: minY = min(allYs, default=None) maxY = max(allYs, default=None) yDiff = (maxY or 0) - (minY or 0) xMark = max(min(self.xMark, maxX), minX) # If in top 10% of X coordinates, align labels differently if xMark > canvasMinX + 0.9 * (canvasMaxX - canvasMinX): labelAlignment = 'right' labelPrefix = '' labelSuffix = ' ' else: labelAlignment = 'left' labelPrefix = ' ' labelSuffix = '' # Draw line self.subplot.axvline(x=xMark, linestyle='dotted', linewidth=1, color=(0, 0, 0)) # Draw its X position if chosenX.unit is None: xLabel = '{}{}{}'.format(labelPrefix, roundToPrec(xMark, 4), labelSuffix) else: xLabel = '{}{} {}{}'.format(labelPrefix, roundToPrec(xMark, 4), chosenX.unit, labelSuffix) self.subplot.annotate( xLabel, xy=(xMark, canvasMaxY - 0.01 * (canvasMaxY - canvasMinY)), xytext=(0, 0), annotation_clip=False, textcoords='offset pixels', ha=labelAlignment, va='top', fontsize='small') # Get Y values yMarks = set() def addYMark(val): if val is None: return # Round according to shown Y range - the bigger the range, # the rougher the rounding if yDiff != 0: rounded = roundToPrec(val, 4, nsValue=yDiff) else: rounded = val # If due to some bug or insufficient plot density we're # out of bounds, do not add anything if minY <= val <= maxY or minY <= rounded <= maxY: yMarks.add(rounded) for source, target in iterList: xs, ys = plotData[(source, target)] if not xs or xMark < min(xs) or xMark > max(xs): continue # Fetch values from graphs when we're asked to provide accurate data if accurateMarks: try: y = view.getPoint( x=xMark, miscInputs=miscInputs, xSpec=chosenX, ySpec=chosenY, src=source, tgt=target) addYMark(y) except (KeyboardInterrupt, SystemExit): raise except Exception: pyfalog.warning('Failed to get X mark for "{}" vs "{}"'.format(source.name, '' if target is None else target.name)) # Silently skip this mark, otherwise other marks and legend display will fail continue # Otherwise just do linear interpolation between two points else: if xMark in xs: # We might have multiples of the same value in our sequence, pick value for the last one idx = len(xs) - xs[::-1].index(xMark) - 1 addYMark(ys[idx]) continue idx = bisect(xs, xMark) yMark = self._interpolateX(x=xMark, x1=xs[idx - 1], y1=ys[idx - 1], x2=xs[idx], y2=ys[idx]) addYMark(yMark) # Draw Y values for yMark in yMarks: self.subplot.annotate( '{}{}{}'.format(labelPrefix, yMark, labelSuffix), xy=(xMark, yMark), xytext=(0, 0), textcoords='offset pixels', ha=labelAlignment, va='center', fontsize='small') legendLines = [] for i, iData in enumerate(legendData): color, lineStyle, label = iData legendLines.append(Line2D([0], [0], color=color, linestyle=lineStyle, label=label.replace('$', r'\$'))) if len(legendLines) > 0 and self.graphFrame.ctrlPanel.showLegend: legend = self.subplot.legend(handles=legendLines) for t in legend.get_texts(): t.set_fontsize('small') for l in legend.get_lines(): l.set_linewidth(1) self.canvas.draw() self.Refresh() def markXApproximate(self, x): if x is not None: self.xMark = x self.draw(accurateMarks=False) def unmarkX(self): self.xMark = None self.draw() @staticmethod def _getLimits(vals, minExtra=0, maxExtra=0): minVal = min(vals, default=0) maxVal = max(vals, default=0) # Extend range a little for some visual space valRange = maxVal - minVal minVal -= valRange * minExtra maxVal += valRange * maxExtra # Extend by % of value if we show function of a constant if minVal == maxVal: minVal -= minVal * 0.05 maxVal += minVal * 0.05 # If still equal, function is 0, spread out visual space as special case if minVal == maxVal: minVal -= 5 maxVal += 5 return minVal, maxVal @staticmethod def _interpolateX(x, x1, y1, x2, y2): pos = (x - x1) / (x2 - x1) y = y1 + pos * (y2 - y1) return y @staticmethod def __checkNumbers(xs, ys): for number in itertools.chain(xs, ys): if math.isnan(number) or math.isinf(number): return False return True # Matplotlib event handlers def OnMplCanvasClick(self, event): if event.button == 1: if not self.mplOnDragHandler: self.mplOnDragHandler = self.canvas.mpl_connect('motion_notify_event', self.OnMplCanvasDrag) if not self.mplOnReleaseHandler: self.mplOnReleaseHandler = self.canvas.mpl_connect('button_release_event', self.OnMplCanvasRelease) self.markXApproximate(event.xdata) elif event.button == 3: self.unmarkX() def OnMplCanvasDrag(self, event): self.markXApproximate(event.xdata) def OnMplCanvasRelease(self, event): if event.button == 1: if self.mplOnDragHandler: self.canvas.mpl_disconnect(self.mplOnDragHandler) self.mplOnDragHandler = None if self.mplOnReleaseHandler: self.canvas.mpl_disconnect(self.mplOnReleaseHandler) self.mplOnReleaseHandler = None # Do not write markX here because of strange mouse behavior: when dragging, # sometimes when you release button, x coordinate changes. To avoid that, # we just re-use coordinates set on click/drag and just request to redraw # using accurate data self.draw(accurateMarks=True) ================================================ FILE: graphs/gui/ctrlPanel.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import namedtuple # noinspection PyPackageRequirements import wx from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenu from gui.utils.inputs import FloatBox, FloatRangeBox from service.const import GraphCacheCleanupReason from service.fit import Fit from .lists import SourceWrapperList, TargetWrapperList from .vector import VectorPicker InputData = namedtuple('InputData', ('handle', 'unit', 'value')) InputBox = namedtuple('InputBox', ('handle', 'unit', 'textBox', 'icon', 'label')) CheckBox = namedtuple('CheckBox', ('handle', 'checkBox')) _t = wx.GetTranslation class GraphControlPanel(wx.Panel): def __init__(self, graphFrame, parent): super().__init__(parent) self.graphFrame = graphFrame self._mainInputBox = None self._miscInputBoxes = [] self._inputCheckboxes = [] self._storedRanges = {} self._storedConsts = {} mainSizer = wx.BoxSizer(wx.VERTICAL) optsSizer = wx.BoxSizer(wx.HORIZONTAL) commonOptsSizer = wx.BoxSizer(wx.VERTICAL) ySubSelectionSizer = wx.BoxSizer(wx.HORIZONTAL) yText = wx.StaticText(self, wx.ID_ANY, _t('Axis Y:')) ySubSelectionSizer.Add(yText, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) self.ySubSelection = wx.Choice(self, wx.ID_ANY) self.ySubSelection.Bind(wx.EVT_CHOICE, self.OnYTypeUpdate) ySubSelectionSizer.Add(self.ySubSelection, 1, wx.EXPAND | wx.ALL, 0) commonOptsSizer.Add(ySubSelectionSizer, 0, wx.EXPAND | wx.ALL, 0) xSubSelectionSizer = wx.BoxSizer(wx.HORIZONTAL) xText = wx.StaticText(self, wx.ID_ANY, _t('Axis X:')) xSubSelectionSizer.Add(xText, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) self.xSubSelection = wx.Choice(self, wx.ID_ANY) self.xSubSelection.Bind(wx.EVT_CHOICE, self.OnXTypeUpdate) xSubSelectionSizer.Add(self.xSubSelection, 1, wx.EXPAND | wx.ALL, 0) commonOptsSizer.Add(xSubSelectionSizer, 0, wx.EXPAND | wx.TOP, 5) self.showLegendCb = wx.CheckBox(self, wx.ID_ANY, _t('Show legend'), wx.DefaultPosition, wx.DefaultSize, 0) self.showLegendCb.SetValue(True) self.showLegendCb.Bind(wx.EVT_CHECKBOX, self.OnShowLegendChange) commonOptsSizer.Add(self.showLegendCb, 0, wx.EXPAND | wx.TOP, 5) self.showY0Cb = wx.CheckBox(self, wx.ID_ANY, _t('Always show Y = 0'), wx.DefaultPosition, wx.DefaultSize, 0) self.showY0Cb.SetValue(True) self.showY0Cb.Bind(wx.EVT_CHECKBOX, self.OnShowY0Change) commonOptsSizer.Add(self.showY0Cb, 0, wx.EXPAND | wx.TOP, 5) optsSizer.Add(commonOptsSizer, 0, wx.EXPAND | wx.RIGHT, 10) graphOptsSizer = wx.BoxSizer(wx.HORIZONTAL) self.inputsSizer = wx.BoxSizer(wx.VERTICAL) graphOptsSizer.Add(self.inputsSizer, 1, wx.EXPAND | wx.ALL, 0) vectorSize = 90 if 'wxGTK' in wx.PlatformInfo else 75 self.srcVectorSizer = wx.BoxSizer(wx.VERTICAL) self.srcVectorLabel = wx.StaticText(self, wx.ID_ANY, '') self.srcVectorSizer.Add(self.srcVectorLabel, 0, wx.ALIGN_CENTER_HORIZONTAL| wx.BOTTOM, 5) self.srcVector = VectorPicker(self, style=wx.NO_BORDER, size=vectorSize, offset=0) self.srcVector.Bind(VectorPicker.EVT_VECTOR_CHANGED, self.OnNonMainInputChanged) self.srcVectorSizer.Add(self.srcVector, 0, wx.SHAPED | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0) graphOptsSizer.Add(self.srcVectorSizer, 0, wx.EXPAND | wx.LEFT, 15) self.tgtVectorSizer = wx.BoxSizer(wx.VERTICAL) self.tgtVectorLabel = wx.StaticText(self, wx.ID_ANY, '') self.tgtVectorSizer.Add(self.tgtVectorLabel, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.BOTTOM, 5) self.tgtVector = VectorPicker(self, style=wx.NO_BORDER, size=vectorSize, offset=0) self.tgtVector.Bind(VectorPicker.EVT_VECTOR_CHANGED, self.OnNonMainInputChanged) self.tgtVectorSizer.Add(self.tgtVector, 0, wx.SHAPED | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0) graphOptsSizer.Add(self.tgtVectorSizer, 0, wx.EXPAND | wx.LEFT, 10) optsSizer.Add(graphOptsSizer, 1, wx.EXPAND | wx.ALL, 0) contextSizer = wx.BoxSizer(wx.VERTICAL) savedFont = self.GetFont() contextIconFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) contextIconFont.SetPointSize(8) self.SetFont(contextIconFont) self.contextIcon = wx.StaticText(self, wx.ID_ANY, '\u2630', size=wx.Size((10, -1))) self.contextIcon.Bind(wx.EVT_CONTEXT_MENU, self.contextMenuHandler) self.contextIcon.Bind(wx.EVT_LEFT_UP, self.contextMenuHandler) self.SetFont(savedFont) contextSizer.Add(self.contextIcon, 0, wx.EXPAND | wx.ALL, 0) optsSizer.Add(contextSizer, 0, wx.EXPAND | wx.ALL, 0) mainSizer.Add(optsSizer, 0, wx.EXPAND | wx.ALL, 10) self.srcTgtSizer = wx.BoxSizer(wx.HORIZONTAL) self.sourceList = SourceWrapperList(graphFrame, self) self.sourceList.SetMinSize((270, -1)) self.srcTgtSizer.Add(self.sourceList, 1, wx.EXPAND | wx.ALL, 0) self.targetList = TargetWrapperList(graphFrame, self) self.targetList.SetMinSize((270, -1)) self.srcTgtSizer.Add(self.targetList, 1, wx.EXPAND | wx.LEFT, 10) mainSizer.Add(self.srcTgtSizer, 1, wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT, 10) self.SetSizer(mainSizer) self.inputTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnInputTimer, self.inputTimer) self._setVectorDefaults() def updateControls(self, layout=True): if layout: self.Freeze() self._clearStoredValues() view = self.graphFrame.getView() self.refreshAxeLabels() # Vectors self._setVectorDefaults() if view.srcVectorDef is not None: self.srcVector.Show(True) self.srcVectorLabel.Show(True) self.srcVectorLabel.SetLabel(view.srcVectorDef.label) else: self.srcVector.Show(False) self.srcVectorLabel.Show(False) if view.tgtVectorDef is not None: self.tgtVector.Show(True) self.tgtVectorLabel.Show(True) self.tgtVectorLabel.SetLabel(view.tgtVectorDef.label) else: self.tgtVector.Show(False) self.tgtVectorLabel.Show(False) # Source and target list self.refreshColumns(layout=False) self.targetList.Show(view.hasTargets) # Inputs self._updateInputs(storeInputs=False) # Context icon self.contextIcon.Show(ContextMenu.hasMenu(self, None, None, (view.internalName,))) if layout: self.graphFrame.Layout() self.graphFrame.UpdateWindowSize() self.Thaw() def _updateInputs(self, storeInputs=True): if storeInputs: self._storeCurrentValues() # Clean up old inputs for inputBox in (self._mainInputBox, *self._miscInputBoxes): if inputBox is None: continue for child in (inputBox.textBox, inputBox.icon, inputBox.label): if child is not None: child.Destroy() for checkbox in self._inputCheckboxes: checkbox.checkBox.Destroy() self.inputsSizer.Clear() self._mainInputBox = None self._miscInputBoxes.clear() self._inputCheckboxes.clear() # Update vectors view = self.graphFrame.getView() handledHandles = set() if view.srcVectorDef is not None: self.__handleVector(view.srcVectorDef, self.srcVector, handledHandles, self.xType.mainInput[0]) if view.tgtVectorDef is not None: self.__handleVector(view.tgtVectorDef, self.tgtVector, handledHandles, self.xType.mainInput[0]) # Update inputs self.__addInputField(view.inputMap[self.xType.mainInput], handledHandles, mainInput=True) for inputDef in view.inputs: if inputDef.handle in handledHandles: continue self.__addInputField(inputDef, handledHandles) # Add checkboxes for checkboxDef in view.checkboxes: if checkboxDef.handle in handledHandles: continue self.__addInputCheckbox(checkboxDef, handledHandles) def __handleVector(self, vectorDef, vector, handledHandles, mainInputHandle): handledHandles.add(vectorDef.lengthHandle) handledHandles.add(vectorDef.angleHandle) try: storedLength = self._storedConsts[(vectorDef.lengthHandle, vectorDef.lengthUnit)] except KeyError: pass else: vector.SetLength(storedLength / 100) try: storedAngle = self._storedConsts[(vectorDef.angleHandle, vectorDef.angleUnit)] except KeyError: pass else: vector.SetAngle(storedAngle) vector.SetDirectionOnly(vectorDef.lengthHandle == mainInputHandle) def __addInputField(self, inputDef, handledHandles, mainInput=False): if not self.__checkInputConditions(inputDef): return handledHandles.add(inputDef.handle) fieldSizer = wx.BoxSizer(wx.HORIZONTAL) tooltipText = (inputDef.mainTooltip if mainInput else inputDef.secondaryTooltip) or '' if mainInput: fieldTextBox = FloatRangeBox(self, self._storedRanges.get((inputDef.handle, inputDef.unit), inputDef.defaultRange)) fieldTextBox.Bind(wx.EVT_TEXT, self.OnMainInputChanged) else: fieldTextBox = FloatBox(self, self._storedConsts.get((inputDef.handle, inputDef.unit), inputDef.defaultValue)) fieldTextBox.Bind(wx.EVT_TEXT, self.OnNonMainInputChanged) fieldTextBox.SetToolTip(wx.ToolTip(tooltipText)) fieldSizer.Add(fieldTextBox, 0, wx.EXPAND | wx.RIGHT, 5) fieldIcon = None if inputDef.iconID is not None: icon = BitmapLoader.getBitmap(inputDef.iconID, 'icons') if icon is not None: fieldIcon = wx.StaticBitmap(self) fieldIcon.SetBitmap(icon) fieldIcon.SetToolTip(wx.ToolTip(tooltipText)) fieldSizer.Add(fieldIcon, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 3) fieldLabel = wx.StaticText(self, wx.ID_ANY, self.formatLabel(inputDef)) fieldLabel.SetToolTip(wx.ToolTip(tooltipText)) fieldSizer.Add(fieldLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0) self.inputsSizer.Add(fieldSizer, 0, wx.EXPAND | wx.BOTTOM, 5) # Store info about added input box inputBox = InputBox(handle=inputDef.handle, unit=inputDef.unit, textBox=fieldTextBox, icon=fieldIcon, label=fieldLabel) if mainInput: self._mainInputBox = inputBox else: self._miscInputBoxes.append(inputBox) def __addInputCheckbox(self, checkboxDef, handledHandles): if not self.__checkInputConditions(checkboxDef): return handledHandles.add(checkboxDef.handle) fieldCheckbox = wx.CheckBox(self, wx.ID_ANY, checkboxDef.label, wx.DefaultPosition, wx.DefaultSize, 0) fieldCheckbox.SetValue(self._storedConsts.get((checkboxDef.handle, None), checkboxDef.defaultValue)) fieldCheckbox.Bind(wx.EVT_CHECKBOX, self.OnNonMainInputChanged) self.inputsSizer.Add(fieldCheckbox, 0, wx.BOTTOM, 5) # Store info about added checkbox checkbox = CheckBox(handle=checkboxDef.handle, checkBox=fieldCheckbox) self._inputCheckboxes.append(checkbox) def __checkInputConditions(self, inputDef): if not inputDef.conditions: return True selectedX = self.xType selectedY = self.yType for xCond, yCond in inputDef.conditions: xMatch = True yMatch = True if xCond is not None: xCondHandle, xCondUnit = xCond xMatch = selectedX.handle == xCondHandle and selectedX.unit == xCondUnit if yCond is not None: yCondHandle, yCondUnit = yCond yMatch = selectedY.handle == yCondHandle and selectedY.unit == yCondUnit if xMatch and yMatch: return True return False def refreshAxeLabels(self, restoreSelection=False): view = self.graphFrame.getView() if restoreSelection: selectedY = self.ySubSelection.GetSelection() selectedX = self.xSubSelection.GetSelection() else: selectedY = selectedX = 0 self.ySubSelection.Clear() for yDef in view.yDefs: if yDef.hidden and not self.graphFrame.includeHidden: continue self.ySubSelection.Append(self.formatLabel(yDef, selector=True), yDef) self.ySubSelection.Enable(len(view.yDefs) > 1) self.ySubSelection.SetSelection(selectedY) self.xSubSelection.Clear() for xDef in view.xDefs: if xDef.hidden and not self.graphFrame.includeHidden: continue self.xSubSelection.Append(self.formatLabel(xDef, selector=True), xDef) self.xSubSelection.Enable(len(view.xDefs) > 1) self.xSubSelection.SetSelection(selectedX) def refreshColumns(self, layout=True): view = self.graphFrame.getView() self.sourceList.refreshExtraColumns(view.srcExtraCols) self.targetList.refreshExtraColumns(view.tgtExtraCols) self.srcTgtSizer.Detach(self.sourceList) self.srcTgtSizer.Detach(self.targetList) self.srcTgtSizer.Add(self.sourceList, self.sourceList.getWidthProportion(), wx.EXPAND | wx.ALL, 0) self.srcTgtSizer.Add(self.targetList, self.targetList.getWidthProportion(), wx.EXPAND | wx.LEFT, 10) self.Layout() def OnShowLegendChange(self, event): event.Skip() self.graphFrame.draw() def OnShowY0Change(self, event): event.Skip() self.graphFrame.draw() def OnYTypeUpdate(self, event): event.Skip() self._updateInputs() self.graphFrame.resetXMark() self.graphFrame.Layout() self.graphFrame.UpdateWindowSize() self.graphFrame.draw() def OnXTypeUpdate(self, event): event.Skip() self._updateInputs() self.graphFrame.resetXMark() self.graphFrame.Layout() self.graphFrame.UpdateWindowSize() self.graphFrame.draw() def OnMainInputChanged(self, event): event.Skip() self.graphFrame.resetXMark() self.inputTimer.Stop() self.inputTimer.Start(Fit.getInstance().serviceFittingOptions['marketSearchDelay'], True) def OnNonMainInputChanged(self, event): event.Skip() self.inputTimer.Stop() self.inputTimer.Start(Fit.getInstance().serviceFittingOptions['marketSearchDelay'], True) def OnInputTimer(self, event): event.Skip() self.graphFrame.clearCache(reason=GraphCacheCleanupReason.inputChanged) self.graphFrame.draw() def getValues(self): view = self.graphFrame.getView() misc = [] processedHandles = set() def addMiscData(handle, unit, value): if handle in processedHandles: return inputData = InputData(handle=handle, unit=unit, value=value) misc.append(inputData) # Main input box main = InputData(handle=self._mainInputBox.handle, unit=self._mainInputBox.unit, value=self._mainInputBox.textBox.GetValueRange()) processedHandles.add(self._mainInputBox.handle) # Vectors srcVectorDef = view.srcVectorDef if srcVectorDef is not None: if not self.srcVector.IsDirectionOnly: addMiscData(handle=srcVectorDef.lengthHandle, unit=srcVectorDef.lengthUnit, value=self.srcVector.GetLength() * 100) addMiscData(handle=srcVectorDef.angleHandle, unit=srcVectorDef.angleUnit, value=self.srcVector.GetAngle()) tgtVectorDef = view.tgtVectorDef if tgtVectorDef is not None: if not self.tgtVector.IsDirectionOnly: addMiscData(handle=tgtVectorDef.lengthHandle, unit=tgtVectorDef.lengthUnit, value=self.tgtVector.GetLength() * 100) addMiscData(handle=tgtVectorDef.angleHandle, unit=tgtVectorDef.angleUnit, value=self.tgtVector.GetAngle()) # Other input boxes for inputBox in self._miscInputBoxes: addMiscData(handle=inputBox.handle, unit=inputBox.unit, value=inputBox.textBox.GetValueFloat()) # Checkboxes for checkbox in self._inputCheckboxes: addMiscData(handle=checkbox.handle, unit=None, value=checkbox.checkBox.GetValue()) return main, misc @property def showLegend(self): return self.showLegendCb.GetValue() @property def showY0(self): return self.showY0Cb.GetValue() @property def yType(self): return self.ySubSelection.GetClientData(self.ySubSelection.GetSelection()) @property def xType(self): return self.xSubSelection.GetClientData(self.xSubSelection.GetSelection()) @property def sources(self): return self.sourceList.wrappers @property def targets(self): return self.targetList.wrappers # Fit events def OnFitRenamed(self, event): self.sourceList.OnFitRenamed(event) self.targetList.OnFitRenamed(event) def OnFitChanged(self, event): self.sourceList.OnFitChanged(event) self.targetList.OnFitChanged(event) def OnFitRemoved(self, event): self.sourceList.OnFitRemoved(event) self.targetList.OnFitRemoved(event) # Target profile events def OnProfileRenamed(self, event): self.sourceList.OnProfileRenamed(event) self.targetList.OnProfileRenamed(event) def OnProfileChanged(self, event): self.sourceList.OnProfileChanged(event) self.targetList.OnProfileChanged(event) def OnProfileRemoved(self, event): self.sourceList.OnProfileRemoved(event) self.targetList.OnProfileRemoved(event) def OnResistModeChanged(self, event): self.targetList.OnResistModeChanged(event) def formatLabel(self, axisDef, selector=False): label = axisDef.selectorLabel if selector else axisDef.label if axisDef.unit is None: return label return '{}, {}'.format(label, axisDef.unit) def _storeCurrentValues(self): main, misc = self.getValues() if main is not None: self._storedRanges[(main.handle, main.unit)] = main.value for input in misc: self._storedConsts[(input.handle, input.unit)] = input.value def _clearStoredValues(self): self._storedRanges.clear() self._storedConsts.clear() def _setVectorDefaults(self): self.srcVector.SetValue(length=0, angle=90) self.tgtVector.SetValue(length=1, angle=90) def contextMenuHandler(self, event): viewName = self.graphFrame.getView().internalName menu = ContextMenu.getMenu(self, None, None, (viewName,)) if menu is not None: self.PopupMenu(menu) event.Skip() ================================================ FILE: graphs/gui/frame.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from logbook import Logger import gui.display import gui.globalEvents as GE import gui.mainFrame from graphs.data.base import FitGraph from graphs.events import RESIST_MODE_CHANGED from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from service.const import GraphCacheCleanupReason from service.settings import GraphSettings from . import canvasPanel from .ctrlPanel import GraphControlPanel pyfalog = Logger(__name__) _t = wx.GetTranslation REDRAW_DELAY = 500 class GraphFrame(AuxiliaryFrame): def __init__(self, parent, includeHidden=False): if not canvasPanel.graphFrame_enabled: pyfalog.warning('Matplotlib is not enabled. Skipping initialization.') return super().__init__(parent, title=_t('Graphs'), size=(520, 390), resizeable=True) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.includeHidden = includeHidden self.SetIcon(wx.Icon(BitmapLoader.getBitmap('graphs_small', 'gui'))) mainSizer = wx.BoxSizer(wx.VERTICAL) # Layout - graph selector self.graphSelection = wx.Choice(self, wx.ID_ANY, style=0) self.graphSelection.Bind(wx.EVT_CHOICE, self.OnGraphSwitched) mainSizer.Add(self.graphSelection, 0, wx.EXPAND) # Layout - plot area self.canvasPanel = canvasPanel.GraphCanvasPanel(self, self) mainSizer.Add(self.canvasPanel, 1, wx.EXPAND | wx.ALL, 0) mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND) # Layout - graph control panel self.ctrlPanel = GraphControlPanel(self, self) mainSizer.Add(self.ctrlPanel, 0, wx.EXPAND | wx.ALL, 0) self.SetSizer(mainSizer) # Setup - graph selector for view in FitGraph.views: if view.hidden and not self.includeHidden: continue self.graphSelection.Append(view.name, view()) self.graphSelection.SetSelection(0) self.ctrlPanel.updateControls(layout=False) # Event bindings - local events self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) # Event bindings - external events self.mainFrame.Bind(GE.FIT_RENAMED, self.OnFitRenamed) self.mainFrame.Bind(GE.FIT_CHANGED, self.OnFitChanged) self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved) self.mainFrame.Bind(GE.TARGET_PROFILE_RENAMED, self.OnProfileRenamed) self.mainFrame.Bind(GE.TARGET_PROFILE_CHANGED, self.OnProfileChanged) self.mainFrame.Bind(GE.TARGET_PROFILE_REMOVED, self.OnProfileRemoved) self.mainFrame.Bind(RESIST_MODE_CHANGED, self.OnResistModeChanged) self.mainFrame.Bind(GE.GRAPH_OPTION_CHANGED, self.OnGraphOptionChanged) self.mainFrame.Bind(GE.EFFECTIVE_HP_TOGGLED, self.OnEffectiveHpToggled) self.drawTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnDrawTimer, self.drawTimer) self.Layout() self.UpdateWindowSize() self.draw() @classmethod def openOne(cls, parent, *args, **kwargs): if canvasPanel.graphFrame_enabled: super().openOne(parent, *args, **kwargs) def UpdateWindowSize(self): curW, curH = self.GetSize() bestW, bestH = self.GetBestSize() newW = max(curW, bestW) newH = max(curH, bestH) if newW > curW or newH > curH: newSize = wx.Size(round(newW), round(newH)) self.SetSize(newSize) self.SetMinSize(newSize) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() # Fit events def OnFitRenamed(self, event): event.Skip() self.ctrlPanel.OnFitRenamed(event) self.draw() def OnFitChanged(self, event): event.Skip() for fitID in event.fitIDs: self.clearCache(reason=GraphCacheCleanupReason.fitChanged, extraData=fitID) self.ctrlPanel.OnFitChanged(event) # Data has to be recalculated - delay redraw # to give time to finish UI update in main window self.drawTimer.Stop() self.drawTimer.Start(REDRAW_DELAY, True) def OnFitRemoved(self, event): event.Skip() self.clearCache(reason=GraphCacheCleanupReason.fitRemoved, extraData=event.fitID) self.ctrlPanel.OnFitRemoved(event) self.draw() # Target profile events def OnProfileRenamed(self, event): event.Skip() self.ctrlPanel.OnProfileRenamed(event) self.draw() def OnProfileChanged(self, event): event.Skip() self.clearCache(reason=GraphCacheCleanupReason.profileChanged, extraData=event.profileID) self.ctrlPanel.OnProfileChanged(event) self.draw() def OnProfileRemoved(self, event): event.Skip() self.clearCache(reason=GraphCacheCleanupReason.profileRemoved, extraData=event.profileID) self.ctrlPanel.OnProfileRemoved(event) self.draw() def OnResistModeChanged(self, event): event.Skip() for fitID in event.fitIDs: self.clearCache(reason=GraphCacheCleanupReason.resistModeChanged, extraData=fitID) self.ctrlPanel.OnResistModeChanged(event) self.draw() def OnGraphOptionChanged(self, event): event.Skip() layout = getattr(event, 'refreshColumns', False) or getattr(event, 'refreshColumns', False) if layout: self.ctrlPanel.Freeze() if getattr(event, 'refreshAxeLabels', False): self.ctrlPanel.refreshAxeLabels(restoreSelection=True) if getattr(event, 'refreshColumns', False): self.ctrlPanel.refreshColumns() self.Layout() self.ctrlPanel.Thaw() self.clearCache(reason=GraphCacheCleanupReason.optionChanged) self.draw() def OnEffectiveHpToggled(self, event): event.Skip() currentView = self.getView() # Redraw graph if needed if currentView.usesHpEffectivity: currentView.isEffective = event.effective self.ctrlPanel.refreshAxeLabels(restoreSelection=True) self.Layout() self.clearCache(reason=GraphCacheCleanupReason.hpEffectivityChanged) # Data has to be recalculated - delay redraw # to give time to finish UI update in main window self.drawTimer.Stop() self.drawTimer.Start(REDRAW_DELAY, True) # Even if graph is not selected, keep it updated for idx in range(self.graphSelection.GetCount()): view = self.getView(idx=idx) if view is currentView: continue if view.usesHpEffectivity: view.isEffective = event.effective def OnGraphSwitched(self, event): view = self.getView() GraphSettings.getInstance().set('selectedGraph', view.internalName) self.clearCache(reason=GraphCacheCleanupReason.graphSwitched) self.resetXMark() self.ctrlPanel.updateControls() self.draw() event.Skip() def OnDrawTimer(self, event): event.Skip() self.draw() def OnClose(self, event): self.mainFrame.Unbind(GE.FIT_RENAMED, handler=self.OnFitRenamed) self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.OnFitChanged) self.mainFrame.Unbind(GE.FIT_REMOVED, handler=self.OnFitRemoved) self.mainFrame.Unbind(GE.TARGET_PROFILE_RENAMED, handler=self.OnProfileRenamed) self.mainFrame.Unbind(GE.TARGET_PROFILE_CHANGED, handler=self.OnProfileChanged) self.mainFrame.Unbind(GE.TARGET_PROFILE_REMOVED, handler=self.OnProfileRemoved) self.mainFrame.Unbind(RESIST_MODE_CHANGED, handler=self.OnResistModeChanged) self.mainFrame.Unbind(GE.GRAPH_OPTION_CHANGED, handler=self.OnGraphOptionChanged) self.mainFrame.Unbind(GE.EFFECTIVE_HP_TOGGLED, handler=self.OnEffectiveHpToggled) event.Skip() def getView(self, idx=None): if idx is None: idx = self.graphSelection.GetSelection() return self.graphSelection.GetClientData(idx) def clearCache(self, reason, extraData=None): self.getView().clearCache(reason, extraData) def draw(self): self.canvasPanel.draw() def resetXMark(self): self.canvasPanel.xMark = None ================================================ FILE: graphs/gui/lists.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.display from eos.saveddata.targetProfile import TargetProfile from graphs.style import BASE_COLORS, LIGHTNESSES, STYLES from graphs.wrapper import SourceWrapper, TargetWrapper from gui.builtinViewColumns.graphColor import GraphColor from gui.builtinViewColumns.graphLightness import GraphLightness from gui.builtinViewColumns.graphLineStyle import GraphLineStyle from gui.contextMenu import ContextMenu from service.const import GraphCacheCleanupReason from service.fit import Fit from .stylePickers import ColorPickerPopup, LightnessPickerPopup, LineStylePickerPopup _t = wx.GetTranslation class BaseWrapperList(gui.display.Display): def __init__(self, graphFrame, parent): super().__init__(parent) self.graphFrame = graphFrame self._wrappers = [] self.hoveredRow = None self.hoveredColumn = None self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) @property def wrappers(self): # Sort fits first, then target profiles return sorted(self._wrappers, key=lambda w: not w.isFit) # UI-related stuff @property def defaultTTText(self): raise NotImplementedError def refreshExtraColumns(self, extraColSpecs): baseColNames = set() for baseColName in self.DEFAULT_COLS: if ":" in baseColName: baseColName = baseColName.split(":", 1)[0] baseColNames.add(baseColName) columnsToRemove = set() for col in self.activeColumns: if col.name not in baseColNames: columnsToRemove.add(col) for col in columnsToRemove: self.removeColumn(col) for colSpec in extraColSpecs: self.appendColumnBySpec(colSpec) self.refreshView() def refreshView(self): self.refresh(self.wrappers) def updateView(self): self.update(self.wrappers) # UI event handling def OnMouseMove(self, event): row, _, col = self.HitTestSubItem(event.Position) if row != self.hoveredRow or col != self.hoveredColumn: if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredRow = row self.hoveredColumn = col if row != -1 and col != -1 and col < self.ColumnCount: item = self.getWrapper(row) if item is None: return tooltip = self.activeColumns[col].getToolTip(item) if tooltip: self.SetToolTip(tooltip) else: self.SetToolTip(None) else: self.SetToolTip(self.defaultTTText) event.Skip() def OnLeaveWindow(self, event): self.SetToolTip(None) self.hoveredRow = None self.hoveredColumn = None event.Skip() def handleDrag(self, type, fitID): if type == 'fit' and not self.containsFitID(fitID): sFit = Fit.getInstance() fit = sFit.getFit(fitID) self.appendItem(fit) self.updateView() self.graphFrame.draw() def OnLeftDown(self, event): row, _ = self.HitTest(event.Position) if row != -1: pickers = { self.getColIndex(GraphColor): ColorPickerPopup, self.getColIndex(GraphLightness): LightnessPickerPopup, self.getColIndex(GraphLineStyle): LineStylePickerPopup} # In case we had no index for some column, remove None pickers.pop(None, None) col = self.getColumn(event.Position) if col in pickers: picker = pickers[col] wrapper = self.getWrapper(row) if wrapper is not None: win = picker(parent=self, wrapper=wrapper) pos = wx.GetMousePosition() win.Position(pos, (0, 0)) win.Popup() return event.Skip() def OnLineStyleChange(self): self.updateView() self.graphFrame.draw() def OnLeftDClick(self, event): row, _ = self.HitTest(event.Position) wrapper = self.getWrapper(row) if wrapper is None: return self.removeWrappers([wrapper]) def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: self.removeWrappers(self.getSelectedWrappers()) event.Skip() # Wrapper-related methods def getWrapper(self, row): if row == -1: return None try: return self.wrappers[row] except IndexError: return None def removeWrappers(self, wrappers): wrappers = set(wrappers).intersection(self._wrappers) if not wrappers: return for wrapper in wrappers: self._wrappers.remove(wrapper) self.updateView() for wrapper in wrappers: if wrapper.isFit: self.graphFrame.clearCache(reason=GraphCacheCleanupReason.fitRemoved, extraData=wrapper.item.ID) elif wrapper.isProfile: self.graphFrame.clearCache(reason=GraphCacheCleanupReason.profileRemoved, extraData=wrapper.item.ID) self.graphFrame.draw() def getSelectedWrappers(self): wrappers = [] for row in self.getSelectedRows(): wrapper = self.getWrapper(row) if wrapper is None: continue wrappers.append(wrapper) return wrappers def appendItem(self, item): raise NotImplemented def containsFitID(self, fitID): for wrapper in self._wrappers: if wrapper.isFit and wrapper.item.ID == fitID: return True return False def containsProfileID(self, profileID): for wrapper in self._wrappers: if wrapper.isProfile and wrapper.item.ID == profileID: return True return False # Wrapper-related events def OnFitRenamed(self, event): if self.containsFitID(event.fitID): self.updateView() def OnFitChanged(self, event): if set(event.fitIDs).intersection(w.item.ID for w in self._wrappers if w.isFit): self.updateView() def OnFitRemoved(self, event): wrapper = next((w for w in self._wrappers if w.isFit and w.item.ID == event.fitID), None) if wrapper is not None: self._wrappers.remove(wrapper) self.updateView() def OnProfileRenamed(self, event): if self.containsProfileID(event.profileID): self.updateView() def OnProfileChanged(self, event): if self.containsProfileID(event.profileID): self.updateView() def OnProfileRemoved(self, event): wrapper = next((w for w in self._wrappers if w.isProfile and w.item.ID == event.profileID), None) if wrapper is not None: self._wrappers.remove(wrapper) self.updateView() # Context menu handlers def addFit(self, fit): if fit is None: return if self.containsFitID(fit.ID): return self.appendItem(fit) self.updateView() self.graphFrame.draw() def getExistingFitIDs(self): return [w.item.ID for w in self._wrappers if w.isFit] def addFitsByIDs(self, fitIDs): sFit = Fit.getInstance() for fitID in fitIDs: if self.containsFitID(fitID): continue fit = sFit.getFit(fitID) if fit is not None: self.appendItem(fit) self.updateView() self.graphFrame.draw() class SourceWrapperList(BaseWrapperList): DEFAULT_COLS = ( 'Graph Color', 'Base Icon', 'Base Name') def __init__(self, graphFrame, parent): super().__init__(graphFrame, parent) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) fit = Fit.getInstance().getFit(self.graphFrame.mainFrame.getActiveFit()) if fit is not None: self.appendItem(fit) self.updateView() def appendItem(self, item): # Find out least used color colorUseMap = {c: 0 for c in BASE_COLORS} for wrapper in self._wrappers: if wrapper.colorID not in colorUseMap: continue colorUseMap[wrapper.colorID] += 1 def getDefaultParams(): leastUses = min(colorUseMap.values(), default=0) for colorID in BASE_COLORS: if leastUses == colorUseMap.get(colorID, 0): return colorID return None colorID = getDefaultParams() self._wrappers.append(SourceWrapper(item=item, colorID=colorID)) def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedWrappers() mainItem = self.getWrapper(clickedPos) itemContext = None if mainItem is None else _t('Fit') menu = ContextMenu.getMenu(self, mainItem, selection, ('graphFitList', itemContext), ('graphFitListMisc', itemContext)) if menu: self.PopupMenu(menu) @property def defaultTTText(self): return _t('Drag a fit into this list to graph it') class TargetWrapperList(BaseWrapperList): DEFAULT_COLS = ( 'Graph Lightness', 'Graph Line Style', 'Base Icon', 'Base Name') def __init__(self, graphFrame, parent): super().__init__(graphFrame, parent) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.appendItem(TargetProfile.getIdeal()) self.updateView() def appendItem(self, item): # Find out least used lightness lightnessUseMap = {(l, s): 0 for l in LIGHTNESSES for s in STYLES} for wrapper in self._wrappers: key = (wrapper.lightnessID, wrapper.lineStyleID) if key not in lightnessUseMap: continue lightnessUseMap[key] += 1 def getDefaultParams(): leastUses = min(lightnessUseMap.values(), default=0) for lineStyleID in STYLES: for lightnessID in LIGHTNESSES: if leastUses == lightnessUseMap.get((lightnessID, lineStyleID), 0): return lightnessID, lineStyleID return None, None lightnessID, lineStyleID = getDefaultParams() self._wrappers.append(TargetWrapper(item=item, lightnessID=lightnessID, lineStyleID=lineStyleID)) def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedWrappers() mainItem = self.getWrapper(clickedPos) itemContext = None if mainItem is None else _t('Target') menu = ContextMenu.getMenu(self, mainItem, selection, ('graphTgtList', itemContext), ('graphTgtListMisc', itemContext)) if menu: self.PopupMenu(menu) def OnResistModeChanged(self, event): if set(event.fitIDs).intersection(w.item.ID for w in self._wrappers if w.isFit): self.updateView() @property def defaultTTText(self): return _t('Drag a fit into this list to have your fits graphed against it') # Context menu handlers def addProfile(self, profile): if profile is None: return if self.containsProfileID(profile.ID): return self.appendItem(profile) self.updateView() self.graphFrame.draw() ================================================ FILE: graphs/gui/stylePickers.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from graphs.style import BASE_COLORS, LIGHTNESSES, STYLES from gui.bitmap_loader import BitmapLoader from service.const import GraphLightness class StylePickerPopup(wx.PopupTransientWindow): def __init__(self, parent, wrapper): super().__init__(parent, flags=wx.BORDER_SIMPLE) self.wrapper = wrapper self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) sizer = wx.BoxSizer(wx.VERTICAL) grid = wx.GridSizer(self.nrows, self.ncols, 0, 0) self.patches = list() for styleID in self.sortingOrder: styleData = self.styleContainer[styleID] icon = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap(styleData.iconName, 'gui')) icon.styleID = styleID icon.SetToolTip(styleData.name) icon.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) grid.Add(icon, flag=wx.ALL, border=3) sizer.Add(grid) self.SetSizer(sizer) self.Fit() self.Layout() @property def styleContainer(self): raise NotImplementedError @property def sortingOrder(self): return self.styleContainer @property def ncols(self): raise NotImplementedError @property def nrows(self): raise NotImplementedError @property def wrapperAttr(self): raise NotImplementedError def OnLeftDown(self, event): styleID = getattr(event.GetEventObject(), 'styleID', None) if styleID is not None: setattr(self.wrapper, self.wrapperAttr, styleID) self.Parent.OnLineStyleChange() self.Hide() self.Destroy() return event.Skip() class ColorPickerPopup(StylePickerPopup): styleContainer = BASE_COLORS wrapperAttr = 'colorID' ncols = 4 nrows = 2 class LightnessPickerPopup(StylePickerPopup): styleContainer = LIGHTNESSES sortingOrder = (GraphLightness.dark, GraphLightness.normal, GraphLightness.bright) wrapperAttr = 'lightnessID' ncols = 3 nrows = 1 class LineStylePickerPopup(StylePickerPopup): styleContainer = STYLES wrapperAttr = 'lineStyleID' ncols = 4 nrows = 1 ================================================ FILE: graphs/gui/vector.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math # noinspection PyPackageRequirements import wx from eos.utils.float import floatUnerr class VectorPicker(wx.Window): myEVT_VECTOR_CHANGED = wx.NewEventType() EVT_VECTOR_CHANGED = wx.PyEventBinder(myEVT_VECTOR_CHANGED, 1) def __init__(self, *args, **kwargs): self._label = str(kwargs.pop('label', '')) self._labelpos = int(kwargs.pop('labelpos', 0)) self._offset = float(kwargs.pop('offset', 0)) self._size = max(0, float(kwargs.pop('size', 50))) self._directionOnly = kwargs.pop('directionOnly', False) super().__init__(*args, **kwargs) self._fontsize = max(1, float(kwargs.pop('fontsize', 8 / self.GetContentScaleFactor()))) self._font = wx.Font(round(self._fontsize), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False) self._angle = 0 self.__length = 1 self._left = False self._right = False self._savedFocusedWindow = None self.SetToolTip(wx.ToolTip(self._tooltip)) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) self.Bind(wx.EVT_MOUSEWHEEL, self.OnWheel) # Allows to focus these widgets on hover, needed to support # vector length changing by scrolling if 'wxMSW' in wx.PlatformInfo: self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave) @property def _tooltip(self): if self._directionOnly: return 'Click to set angle\nShift-click or right-click to snap to 15% angle' else: return 'Click to set angle and velocity\nShift-click or right-click to snap to 15% angle/5% speed increments\nMouse wheel to change velocity only' @property def _length(self): if self._directionOnly: return 1 else: return self.__length @_length.setter def _length(self, newLength): self.__length = newLength def DoGetBestSize(self): return wx.Size(round(self._size), round(self._size)) def AcceptsFocusFromKeyboard(self): return False def GetValue(self): return self._angle, self._length def GetAngle(self): return self._angle def GetLength(self): return self._length def SetValue(self, angle=None, length=None): if angle is not None: self._angle = min(max(angle, -180), 180) if length is not None: self._length = min(max(length, 0), 1) self.Refresh() def SetAngle(self, angle): self.SetValue(angle, None) def SetLength(self, length): self.SetValue(None, length) def OnPaint(self, event): dc = wx.BufferedPaintDC(self) self.Draw(dc) def GetScaledClientSize(self): return tuple([dim / self.GetContentScaleFactor() for dim in self.GetClientSize()]) def Draw(self, dc): width, height = self.GetScaledClientSize() if not width or not height: return dc.SetBackground(wx.Brush(self.GetBackgroundColour(), wx.BRUSHSTYLE_SOLID)) dc.Clear() dc.SetTextForeground(wx.Colour(0)) dc.SetFont(self._font) radius = min(width, height) / 2 - 2 dc.SetBrush(wx.WHITE_BRUSH) dc.DrawCircle(round(radius + 2), round(radius + 2), round(radius)) a = math.radians(self._angle + self._offset) x = math.cos(a) * radius y = math.sin(a) * radius # See PR #2260 on why this is needed pointRadius = 2 / self.GetContentScaleFactor() if 'wxGTK' in wx.PlatformInfo else 2 dc.DrawLine( round(radius + 2), round(radius + 2), round(radius + 2 + x * self._length), round(radius + 2 - y * self._length)) dc.SetBrush(wx.BLACK_BRUSH) dc.DrawCircle(round(radius + 2 + x * self._length), round(radius + 2 - y * self._length), round(pointRadius)) if self._label: labelText = self._label labelTextW, labelTextH = dc.GetTextExtent(labelText) labelTextX = (radius * 2 + 4 - labelTextW) if (self._labelpos & 1) else 0 labelTextY = (radius * 2 + 4 - labelTextH) if (self._labelpos & 2) else 0 dc.DrawText(labelText, round(labelTextX), round(labelTextY)) if not self._directionOnly: lengthText = '%d%%' % (100 * self._length,) lengthTextW, lengthTextH = dc.GetTextExtent(lengthText) lengthTextX = radius + 2 + x / 2 - y / 3 - lengthTextW / 2 lengthTextY = radius + 2 - y / 2 - x / 3 - lengthTextH / 2 dc.DrawText(lengthText, round(lengthTextX), round(lengthTextY)) angleText = '%d\u00B0' % (self._angle,) angleTextW, angleTextH = dc.GetTextExtent(angleText) angleTextX = radius + 2 - x / 2 - angleTextW / 2 angleTextY = radius + 2 + y / 2 - angleTextH / 2 dc.DrawText(angleText, round(angleTextX), round(angleTextY)) def OnEraseBackground(self, event): pass def OnLeftDown(self, event): self._left = True self.SetToolTip(None) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self.OnLeftUp) if not self._right: self.Bind(wx.EVT_MOTION, self.OnMotion) if not self.HasCapture(): self.CaptureMouse() self.HandleMouseEvent(event) def OnRightDown(self, event): self._right = True self.SetToolTip(None) self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp) self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self.OnRightUp) if not self._left: self.Bind(wx.EVT_MOTION, self.OnMotion) if not self.HasCapture(): self.CaptureMouse() self.HandleMouseEvent(event) def OnLeftUp(self, event): self.HandleMouseEvent(event) self.Unbind(wx.EVT_LEFT_UP, handler=self.OnLeftUp) self.Unbind(wx.EVT_MOUSE_CAPTURE_LOST, handler=self.OnLeftUp) self._left = False if not self._right: self.Unbind(wx.EVT_MOTION, handler=self.OnMotion) self.SendChangeEvent() self.SetToolTip(wx.ToolTip(self._tooltip)) if self.HasCapture(): self.ReleaseMouse() def OnRightUp(self, event): self.HandleMouseEvent(event) self.Unbind(wx.EVT_RIGHT_UP, handler=self.OnRightUp) self.Unbind(wx.EVT_MOUSE_CAPTURE_LOST, handler=self.OnRightUp) self._right = False if not self._left: self.Unbind(wx.EVT_MOTION, handler=self.OnMotion) self.SendChangeEvent() self.SetToolTip(wx.ToolTip(self._tooltip)) if self.HasCapture(): self.ReleaseMouse() def OnMotion(self, event): self.HandleMouseEvent(event) event.Skip() def OnWheel(self, event): amount = 0.1 * event.GetWheelRotation() / event.GetWheelDelta() self._length = floatUnerr(min(max(self._length + amount, 0.0), 1.0)) self.Refresh() self.SendChangeEvent() def HandleMouseEvent(self, event): width, height = self.GetClientSize() if width and height: center = min(width, height) / 2 x, y = event.GetPosition() x = x - center y = center - y angle = self._angle length = min((x ** 2 + y ** 2) ** 0.5 / (center - 2), 1.0) if length < 0.01: length = 0 else: angle = ((math.degrees(math.atan2(y, x)) - self._offset + 180) % 360) - 180 if (self._right and not self._left) or event.ShiftDown(): angle = round(angle / 15.0) * 15.0 # floor() for length to make it easier to hit 0%, can still hit 100% outside the circle length = math.floor(length / 0.05) * 0.05 if (angle != self._angle) or (length != self._length): self._angle = angle self._length = length self.Refresh() if (self._right and not self._left) or event.ShiftDown(): self.SendChangeEvent() # Focus manipulation - otherwise scrolling doesn't work under Windows def OnMouseMove(self, event): event.Skip() if not self.HasFocus(): self._savedFocusedWindow = self.FindFocus() self.SetFocus() def OnMouseLeave(self, event): event.Skip() if self.HasFocus(): if self._savedFocusedWindow is not None: self._savedFocusedWindow.SetFocus() self._savedFocusedWindow = None def SendChangeEvent(self): changeEvent = wx.CommandEvent(self.myEVT_VECTOR_CHANGED, self.GetId()) changeEvent._object = self changeEvent._angle = self._angle changeEvent._length = self._length self.GetEventHandler().ProcessEvent(changeEvent) def SetDirectionOnly(self, val): if self._directionOnly is val: return self._directionOnly = val self.GetToolTip().SetTip(self._tooltip) @property def IsDirectionOnly(self): return self._directionOnly ================================================ FILE: graphs/style.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import OrderedDict, namedtuple # noinspection PyPackageRequirements import wx from service.const import GraphColor, GraphLightness, GraphLineStyle ColorData = namedtuple('ColorData', ('hsl', 'name', 'iconName')) LightnessData = namedtuple('LightnessData', ('name', 'iconName', 'func')) _t = wx.GetTranslation class LineStyleData: def __init__(self, name, iconNamePrefix, mplSpec): self.name = name self._iconNamePrefix = iconNamePrefix self.mplSpec = mplSpec @property def iconName(self): # Get lightness out of RGB color, see following link for math: # https://www.niwa.nu/2013/05/math-behind-colorspace-conversions-rgb-hsl/ r, g, b, a = (c / 255 for c in wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) l = (max(r, g, b) + min (r, g, b)) / 2 suffix = '_black' if l > 0.3 else '_white' return '{}{}'.format(self._iconNamePrefix, suffix) # In HSL format BASE_COLORS = OrderedDict([ (GraphColor.red, ColorData((0 / 360.0, 1.0, 0.5), _t('Red'), 'color_red')), (GraphColor.green, ColorData((120 / 360.0, 1.0, 0.5), _t('Green'), 'color_green')), (GraphColor.blue, ColorData((240 / 360.0, 1.0, 0.5), _t('Blue'), 'color_blue')), (GraphColor.orange, ColorData((40 / 360.0, 1.0, 0.5), _t('Orange'), 'color_orange')), (GraphColor.magenta, ColorData((300 / 360.0, 1.0, 0.5), _t('Magenta'), 'color_magenta')), (GraphColor.cyan, ColorData((180 / 360.0, 1.0, 0.5), _t('Cyan'), 'color_cyan')), (GraphColor.purple, ColorData((275 / 360.0, 1.0, 0.5), _t('Purple'), 'color_purple')), (GraphColor.yellow, ColorData((56 / 360.0, 1.0, 0.5), _t('Yellow'), 'color_yellow'))]) def hsl_to_hsv(hsl): h, s, l = hsl s *= l if (l < 0.5) else (1 - l) l += s return (h, 2 * s / l, l) def darken(hsl): h, s, l = hsl return h, s * 0.5, l * 0.7 def brighten(hsl): h, s, l = hsl return h, s * 0.5, l + (1 - l) * 0.5 LIGHTNESSES = OrderedDict([ (GraphLightness.normal, LightnessData(_t('Normal'), 'lightness_normal', lambda hsl: hsl)), (GraphLightness.dark, LightnessData(_t('Dark'), 'lightness_dark', darken)), (GraphLightness.bright, LightnessData(_t('Bright'), 'lightness_bright', brighten))]) STYLES = OrderedDict([ (GraphLineStyle.solid, LineStyleData(_t('Solid'), 'style_solid', 'solid')), (GraphLineStyle.dashed, LineStyleData(_t('Dashed'), 'style_dashed', (0, (5, 1)))), (GraphLineStyle.dotted, LineStyleData(_t('Dotted'), 'style_dotted', (0, (1, 1)))), (GraphLineStyle.dashdotted, LineStyleData(_t('Dash-dotted'), 'style_dashdot', (0, (3, 1, 1, 1))))]) ================================================ FILE: graphs/wrapper.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from eos.calc import calculateMultiplier from eos.saveddata.damagePattern import DamagePattern from eos.saveddata.fit import Fit from eos.saveddata.targetProfile import TargetProfile from service.const import TargetResistMode class BaseWrapper: def __init__(self, item): self.item = item @property def isFit(self): return isinstance(self.item, Fit) @property def isProfile(self): return isinstance(self.item, TargetProfile) @property def name(self): if self.isFit: return '{} ({})'.format(self.item.name, self.item.ship.item.name) elif self.isProfile: return self.item.fullName return '' @property def shortName(self): if self.isFit: return '{} ({})'.format(self.item.name, self.item.ship.item.getShortName()) elif self.isProfile: return self.item.shortName return '' def getMaxVelocity(self, extraMultipliers=None, ignoreAfflictors=()): if self.isFit: if extraMultipliers or ignoreAfflictors: maxVelocity = self.item.ship.getModifiedItemAttrExtended( 'maxVelocity', extraMultipliers=extraMultipliers, ignoreAfflictors=ignoreAfflictors) else: maxVelocity = self.item.ship.getModifiedItemAttr('maxVelocity') elif self.isProfile: maxVelocity = self.item.maxVelocity if extraMultipliers: maxVelocity *= calculateMultiplier(extraMultipliers) else: maxVelocity = None return maxVelocity def getSigRadius(self, extraMultipliers=None, ignoreAfflictors=()): if self.isFit: if extraMultipliers or ignoreAfflictors: sigRadius = self.item.ship.getModifiedItemAttrExtended( 'signatureRadius', extraMultipliers=extraMultipliers, ignoreAfflictors=ignoreAfflictors) else: sigRadius = self.item.ship.getModifiedItemAttr('signatureRadius') elif self.isProfile: sigRadius = self.item.signatureRadius if extraMultipliers: sigRadius *= calculateMultiplier(extraMultipliers) else: sigRadius = None return sigRadius def getRadius(self): if self.isFit: radius = self.item.ship.getModifiedItemAttr('radius') elif self.isProfile: radius = self.item.radius else: radius = None return radius class SourceWrapper(BaseWrapper): def __init__(self, item, colorID): super().__init__(item) self._colorID = colorID @property def colorID(self): return self._colorID @colorID.setter def colorID(self, value): self._colorID = value class TargetWrapper(BaseWrapper): def __init__(self, item, lightnessID, lineStyleID): super().__init__(item=item) self.lightnessID = lightnessID self.lineStyleID = lineStyleID self.resistMode = TargetResistMode.auto def getResists(self, includeLayer=False): em = therm = kin = explo = 0 layer = None if self.isProfile: em = self.item.emAmount therm = self.item.thermalAmount kin = self.item.kineticAmount explo = self.item.explosiveAmount if self.isFit: if self.resistMode == TargetResistMode.auto: em, therm, kin, explo, layer = _getAutoResists(fit=self.item) elif self.resistMode == TargetResistMode.shield: em, therm, kin, explo = _getShieldResists(ship=self.item.ship) elif self.resistMode == TargetResistMode.armor: em, therm, kin, explo = _getArmorResists(ship=self.item.ship) elif self.resistMode == TargetResistMode.hull: em, therm, kin, explo = _getHullResists(ship=self.item.ship) elif self.resistMode == TargetResistMode.weightedAverage: em, therm, kin, explo = _getWeightedResists(fit=self.item) if includeLayer: return em, therm, kin, explo, layer else: return em, therm, kin, explo def getFullHp(self): if self.isProfile: return self.item.hp if self.isFit: return self.item.hp.get('shield', 0) + self.item.hp.get('armor', 0) + self.item.hp.get('hull', 0) def _getShieldResists(ship): em = 1 - ship.getModifiedItemAttr('shieldEmDamageResonance') therm = 1 - ship.getModifiedItemAttr('shieldThermalDamageResonance') kin = 1 - ship.getModifiedItemAttr('shieldKineticDamageResonance') explo = 1 - ship.getModifiedItemAttr('shieldExplosiveDamageResonance') return em, therm, kin, explo def _getArmorResists(ship): em = 1 - ship.getModifiedItemAttr('armorEmDamageResonance') therm = 1 - ship.getModifiedItemAttr('armorThermalDamageResonance') kin = 1 - ship.getModifiedItemAttr('armorKineticDamageResonance') explo = 1 - ship.getModifiedItemAttr('armorExplosiveDamageResonance') return em, therm, kin, explo def _getHullResists(ship): em = 1 - ship.getModifiedItemAttr('emDamageResonance') therm = 1 - ship.getModifiedItemAttr('thermalDamageResonance') kin = 1 - ship.getModifiedItemAttr('kineticDamageResonance') explo = 1 - ship.getModifiedItemAttr('explosiveDamageResonance') return em, therm, kin, explo def _getWeightedResists(fit): shieldEmRes, shieldThermRes, shieldKinRes, shieldExploRes = _getShieldResists(fit.ship) armorEmRes, armorThermRes, armorKinRes, armorExploRes = _getArmorResists(fit.ship) hullEmRes, hullThermRes, hullKinRes, hullExploRes = _getHullResists(fit.ship) hpData = fit.hp shieldHp = hpData['shield'] armorHp = hpData['armor'] hullHp = hpData['hull'] totalHp = shieldHp + armorHp + hullHp totalEhpEm = shieldHp / (1 - shieldEmRes) + armorHp / (1 - armorEmRes) + hullHp / (1 - hullEmRes) totalEhpTherm = shieldHp / (1 - shieldThermRes) + armorHp / (1 - armorThermRes) + hullHp / (1 - hullThermRes) totalEhpKin = shieldHp / (1 - shieldKinRes) + armorHp / (1 - armorKinRes) + hullHp / (1 - hullKinRes) totalEhpExplo = shieldHp / (1 - shieldExploRes) + armorHp / (1 - armorExploRes) + hullHp / (1 - hullExploRes) weightedEmRes = 1 - totalHp / totalEhpEm weightedThermRes = 1 - totalHp / totalEhpTherm weightedKinRes = 1 - totalHp / totalEhpKin weightedExploRes = 1 - totalHp / totalEhpExplo return weightedEmRes, weightedThermRes, weightedKinRes, weightedExploRes def _getAutoResists(fit): # Get all the data # HP / EHP hpData = fit.hp shieldHp = hpData['shield'] armorHp = hpData['armor'] hullHp = hpData['hull'] uniformDamagePattern = DamagePattern(emAmount=25, thermalAmount=25, kineticAmount=25, explosiveAmount=25) ehpData = uniformDamagePattern.calculateEhp(fit.ship) shieldEhp = ehpData['shield'] armorEhp = ehpData['armor'] hullEhp = ehpData['hull'] totalEhp = shieldEhp + armorEhp + hullEhp # Resist factors try: shieldResFactor = shieldEhp / shieldHp except ZeroDivisionError: shieldResFactor = 1 try: armorResFactor = armorEhp / armorHp except ZeroDivisionError: armorResFactor = 1 try: hullResFactor = hullEhp / hullHp except ZeroDivisionError: hullResFactor = 1 # Tank tankData = fit.tank shieldTank = tankData['shieldRepair'] armorTank = tankData['armorRepair'] hullTank = tankData['hullRepair'] shieldRegen = tankData['passiveShield'] shieldScore = 0 armorScore = 0 hullScore = 0 # EHP scoring ehpWeight = 100 shieldScore += ehpWeight * (shieldEhp / totalEhp) ** 1.5 armorScore += ehpWeight * (armorEhp / totalEhp) ** 1.5 hullScore += ehpWeight * (hullEhp / totalEhp) ** 1.5 # Resists scoring # We include it to have some extra points for receiving better reps from the outside resistWeight = 25 bestResFactor = max(shieldResFactor, armorResFactor, hullResFactor) shieldScore += resistWeight * (shieldResFactor / bestResFactor) ** 1.5 armorScore += resistWeight * (armorResFactor / bestResFactor) ** 1.5 hullScore += resistWeight * (hullResFactor / bestResFactor) ** 1.5 # Active tank activeWeight = 10000 shieldScore += activeWeight * shieldTank * shieldResFactor / totalEhp armorScore += activeWeight * armorTank * armorResFactor / totalEhp hullScore += activeWeight * hullTank * hullResFactor / totalEhp # Shield regen regenWeight = 5000 shieldScore += regenWeight * shieldRegen * shieldResFactor / totalEhp maxScore = max(shieldScore, armorScore, hullScore) if maxScore == shieldScore: return (*_getShieldResists(fit.ship), 'shield') if maxScore == armorScore: return (*_getArmorResists(fit.ship), 'armor') if maxScore == hullScore: return (*_getHullResists(fit.ship), 'hull') return 0, 0, 0, 0, None ================================================ FILE: gui/__init__.py ================================================ ================================================ FILE: gui/aboutData.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import config import wx _t = wx.GetTranslation try: versionString = "{0}".format(config.getVersion()) except NameError: # is caught in case we run test and there are no config values initialized versionString = "0.0" licenses = ( _t("pyfa is released under GNU GPLv3 - see included LICENSE file"), _t("All EVE-Online related materials are property of CCP hf."), _t("Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License"), _t("Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License") ) developers = ( "blitzmann \tSable Blitzmann (maintainer)", "cncfanatics \tSakari Orisi (retired)", "DarkPhoenix \tKadesh Priestess (retired)", "Darriele \t\tDarriele (retired)", "Ebag333 \t\tEbag Trescientas" ) credits = ( "Entity (Entity) \tCapacitor calculations / EVEAPI python lib / Reverence", "Aurora \t\tMaths", "Corollax (Aamrr) \tVarious EOS / pyfa improvements", "Dreae (Dreae)\tPyCrest") description = ( _t("Pyfa (the Python Fitting Assistant) is an open-source standalone application able to " "create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of " "accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported.") ) ================================================ FILE: gui/additionsPane.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.globalEvents as GE from gui.bitmap_loader import BitmapLoader from gui.builtinAdditionPanes.boosterView import BoosterView from gui.builtinAdditionPanes.cargoView import CargoView from gui.builtinAdditionPanes.commandView import CommandView from gui.builtinAdditionPanes.droneView import DroneView from gui.builtinAdditionPanes.fighterView import FighterView from gui.builtinAdditionPanes.implantView import ImplantView from gui.builtinAdditionPanes.notesView import NotesView from gui.builtinAdditionPanes.projectedView import ProjectedView from gui.chrome_tabs import ChromeNotebook from gui.toggle_panel import TogglePanel _t = wx.GetTranslation class AdditionsPane(TogglePanel): def __init__(self, parent, mainFrame): TogglePanel.__init__(self, parent, force_layout=1) self.mainFrame = mainFrame self.SetLabel(_t("Additions")) pane = self.GetContentPanel() baseSizer = wx.BoxSizer(wx.HORIZONTAL) pane.SetSizer(baseSizer) self.notebook = ChromeNotebook(pane, can_add=False, tabWidthMode=1) self.notebook.SetMinSize((-1, 1000)) baseSizer.Add(self.notebook, 1, wx.EXPAND) droneImg = BitmapLoader.getImage("drone_small", "gui") fighterImg = BitmapLoader.getImage("fighter_small", "gui") implantImg = BitmapLoader.getImage("implant_small", "gui") boosterImg = BitmapLoader.getImage("booster_small", "gui") projectedImg = BitmapLoader.getImage("projected_small", "gui") gangImg = BitmapLoader.getImage("fleet_fc_small", "gui") cargoImg = BitmapLoader.getImage("cargo_small", "gui") notesImg = BitmapLoader.getImage("skill_small", "gui") self.drone = DroneView(self.notebook) self.notebook.AddPage(self.drone, _t("Drones"), image=droneImg, closeable=False) self.fighter = FighterView(self.notebook) self.notebook.AddPage(self.fighter, _t("Fighters"), image=fighterImg, closeable=False) self.cargo = CargoView(self.notebook) self.notebook.AddPage(self.cargo, _t("Cargo"), image=cargoImg, closeable=False) self.implant = ImplantView(self.notebook) self.notebook.AddPage(self.implant, _t("Implants"), image=implantImg, closeable=False) self.booster = BoosterView(self.notebook) self.notebook.AddPage(self.booster, _t("Boosters"), image=boosterImg, closeable=False) self.projectedPage = ProjectedView(self.notebook) self.notebook.AddPage(self.projectedPage, _t("Projected"), image=projectedImg, closeable=False) self.gangPage = CommandView(self.notebook) self.notebook.AddPage(self.gangPage, _t("Command"), image=gangImg, closeable=False) self.notes = NotesView(self.notebook) self.notebook.AddPage(self.notes, _t("Notes"), image=notesImg, closeable=False) self.mainFrame.Bind(GE.FIT_CHANGED, self.OnFitChanged) self.mainFrame.Bind(GE.FIT_NOTES_CHANGED, self.OnNotesChanged) self.notebook.SetSelection(0) PANES = ["Drones", "Fighters", "Cargo", "Implants", "Boosters", "Projected", "Command", "Notes"] def select(self, name, focus=True): self.notebook.SetSelection(self.PANES.index(name), focus=focus) def getName(self, idx): return self.PANES[idx] def ToggleContent(self, event): TogglePanel.ToggleContent(self, event) h = self.header_panel.GetSize()[1] + 4 if self.IsCollapsed(): self.old_pos = self.parent.GetSashPosition() self.parent.SetMinimumPaneSize(h) self.parent.SetSashPosition(h * -1, True) self.parent.SetSashInvisible(True) else: self.parent.SetSashInvisible(False) self.parent.SetMinimumPaneSize(200) self.parent.SetSashPosition(self.old_pos, True) def OnFitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return self.updateExtraText() def OnNotesChanged(self, event): event.Skip() self.updateExtraText() def updateExtraText(self): refresh = False for i in range(self.notebook.GetPageCount()): page = self.notebook.GetPage(i) if hasattr(page, 'getTabExtraText'): refresh = True self.notebook.SetPageTitleExtra(i, page.getTabExtraText() or '', refresh=False) if refresh: self.notebook.tabs_container.AdjustTabsSize() self.notebook.Refresh() ================================================ FILE: gui/app.py ================================================ import wx import config import os import sys from logbook import Logger pyfalog = Logger(__name__) from service.settings import LocaleSettings class PyfaApp(wx.App): def OnInit(self): """ Do application initialization work, e.g. define application globals. """ # Name for my application. self.appName = "pyfa" #------------ # # Simplified init method. # self.DoConfig() # self.Init() # InspectionMixin # # work around for Python stealing "_". # sys.displayhook = _displayHook # # #------------ # Return locale folder. localeDir = os.path.join(config.pyfaPath, "locale") # Set language stuff and update to last used language. self.locale = None wx.Locale.AddCatalogLookupPathPrefix(localeDir) # Set language stuff and update to last used language. self.UpdateLanguage(config.language) return True #----------------------------------------------------------------------- def UpdateLanguage(self, lang=None): """ Update the language to the requested one. Make *sure* any existing locale is deleted before the new one is created. The old C++ object needs to be deleted before the new one is created, and if we just assign a new instance to the old Python variable, the old C++ locale will not be destroyed soon enough, likely causing a crash. :param string `lang`: one of the supported language codes. """ # Language domain. langDomain = config.CATALOG # If an unsupported language is requested default to English. if self.locale: assert sys.getrefcount(self.locale) <= 2 del self.locale # Create a locale object for this language. langInfo = wx.Locale.FindLanguageInfo(lang) if langInfo is not None: pyfalog.debug("Setting language to: " + lang) self.locale = wx.Locale(langInfo.Language) if self.locale.IsOk(): success = self.locale.AddCatalog(langDomain) if not success: print("Langauage catalog not successfully loaded") else: pyfalog.debug("Cannot find langauge: " + lang) self.locale = wx.Locale(wx.Locale.FindLanguageInfo(LocaleSettings.defaults['locale']).Language) ================================================ FILE: gui/attribute_gauge.py ================================================ import math import wx from gui.utils import anim_effects # todo: clean class up. Took from pyfa gauge, has a bunch of extra shit we don't need class AttributeGauge(wx.Window): def __init__( self, parent, max_range=100, animate=True, leading_edge=True, edge_on_neutral=True, guide_lines=False, size=(-1, 30), *args, **kwargs ): super().__init__(parent, size=size, *args, **kwargs) self._size = size self.guide_lines = guide_lines self._border_colour = wx.BLACK self.leading_edge = leading_edge self.edge_on_neutral = edge_on_neutral self._border_padding = 0 self._max_range = max_range self._value = 0 self._timer_id = wx.NewId() self._timer = None self._oldValue = 0 self._animate = animate self._anim_duration = 500 self._anim_step = 0 self._period = 20 self._anim_value = 0 self._anim_direction = 0 self.anim_effect = anim_effects.OUT_QUAD self.goodColor = wx.Colour(96, 191, 0) self.badColor = wx.Colour(255, 64, 0) self.gradient_effect = -35 self._percentage = 0 self._old_percentage = 0 self._show_remaining = False self.SetBackgroundColour(wx.Colour(51, 51, 51)) self._tooltip = wx.ToolTip("0.00/100.00") self.SetToolTip(self._tooltip) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_TIMER, self.OnTimer) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) def OnEraseBackground(self, event): pass def GetBorderColour(self): return self._border_colour def SetBorderColour(self, colour): self._border_colour = colour def GetBorderPadding(self): return self._border_padding def SetBorderPadding(self, padding): self._border_padding = padding def GetRange(self): """ Returns the maximum value of the gauge. """ return self._max_range def Animate(self): if self._animate: if not self._timer: self._timer = wx.Timer(self, self._timer_id) self._anim_step = 0 self._timer.Start(self._period) else: self._anim_value = self._percentage self.Refresh() def FreezeAnimation(self): self._animate = False if self._timer: self._timer.Stop() def SetRange(self, range, reinit=False, animate=True): """ Sets the range of the gauge. The gauge length is its value as a proportion of the range. """ if self._max_range == range: return # we cannot have a range of zero (laws of physics, etc), so we set it if range <= 0: self._max_range = 0.01 else: self._max_range = range if reinit is False: self._old_percentage = self._percentage self._percentage = (self._value / self._max_range) * 100 else: self._old_percentage = self._percentage self._percentage = 0 self._value = 0 if animate: self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if self._max_range > 0.01 else 0)) def GetValue(self): return self._value def SetValue(self, value, animate=True): """ Sets the current position of the gauge. """ if self._value == value: return self._old_percentage = self._percentage self._value = value self._percentage = (self._value / self._max_range) * 100 if animate: self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range)) def SetValueRange(self, value, range, reinit=False): """ Set both value and range of the gauge. """ range_ = float(range) if range_ <= 0: self._max_range = 0.01 else: self._max_range = range_ value = float(value) self._value = value if reinit is False: self._old_percentage = self._percentage self._percentage = (self._value / self._max_range) * 100 else: self._old_percentage = self._percentage self._percentage = 0 self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if float(self._max_range) > 0.01 else 0)) def OnPaint(self, event): dc = wx.AutoBufferedPaintDC(self) rect = self.GetClientRect() dc.SetBackground(wx.Brush(self.GetBackgroundColour())) dc.Clear() colour = self.GetBackgroundColour() dc.SetBrush(wx.Brush(colour)) dc.SetPen(wx.Pen(colour)) dc.DrawRectangle(rect) value = self._percentage if self._timer: if self._timer.IsRunning(): value = self._anim_value if self._border_colour: dc.SetPen(wx.Pen(self.GetBorderColour())) dc.DrawRectangle(rect) pad = 1 + self.GetBorderPadding() rect.Deflate(pad, pad) # if we have a bar color set, then we will use this colour = self.goodColor if value >= 0 else self.badColor is_even = rect.width % 2 == 0 # the size of half our available drawing area (since we're only working in halves) half = (rect.width / 2) # calculate width of bar as a percentage of half the space w = abs(half * (value / 100)) w = min(w, half) # Ensure that we don't overshoot our drawing area w = math.ceil(w) # round up to nearest pixel, this ensures that we don't lose representation for sub pixels # print("Percentage: {}\t\t\t\t\tValue: {}\t\t\t\t\tWidth: {}\t\t\t\t\tHalf: {}\t\t\t\t\tRect Width: {}".format( # round(self._percentage, 3), round(value,3), w, half, rect.width)) # set guide_lines every 10 pixels of the main gauge (not including borders) if self.guide_lines: for x in range(1, 20): dc.SetBrush(wx.Brush(wx.LIGHT_GREY)) dc.SetPen(wx.Pen(wx.LIGHT_GREY)) dc.DrawRectangle(round(x * 10), 1, 1, round(rect.height)) dc.SetBrush(wx.Brush(colour)) dc.SetPen(wx.Pen(colour)) # If we have an even width, we can simply dedicate the middle-most pixels to both sides # However, if there is an odd width, the middle pixel is shared between the left and right gauge if value >= 0: padding = (half if is_even else math.ceil(half - 1)) + 1 dc.DrawRectangle(round(padding), 1, round(w), round(rect.height)) else: padding = half - w + 1 if is_even else math.ceil(half) - (w - 1) dc.DrawRectangle(round(padding), 1, round(w), round(rect.height)) if self.leading_edge and (self.edge_on_neutral or value != 0): dc.SetPen(wx.Pen(wx.WHITE)) dc.SetBrush(wx.Brush(wx.WHITE)) if value > 0: dc.DrawRectangle(round(min(padding + w, rect.width)), 1, 1, round(rect.height)) else: dc.DrawRectangle(round(max(padding - 1, 1)), 1, 1, round(rect.height)) def OnTimer(self, event): old_value = self._old_percentage value = self._percentage start = 0 # -1 = left direction, 1 = right direction direction = 1 if old_value < value else -1 end = direction * (value - old_value) self._anim_direction = direction step = self.anim_effect(self._anim_step, start, end, self._anim_duration) self._anim_step += self._period if self._timer_id == event.GetId(): stop_timer = False if self._anim_step > self._anim_duration: stop_timer = True # add new value to the animation if we haven't reached our goal # otherwise, stop animation if direction == 1: if old_value + step < value: self._anim_value = old_value + step else: stop_timer = True else: if old_value - step > value: self._anim_value = old_value - step else: stop_timer = True if stop_timer: self._timer.Stop() self.Refresh() ================================================ FILE: gui/auxWindow.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx class AuxiliaryMixin: _instance = None def __init__(self, parent, id=None, title=None, pos=None, size=None, style=None, name=None, resizeable=False): baseStyle = wx.FRAME_NO_TASKBAR | wx.CAPTION | wx.CLOSE_BOX | wx.SYSTEM_MENU if parent is not None: baseStyle = baseStyle | wx.FRAME_FLOAT_ON_PARENT if resizeable: baseStyle = baseStyle | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX kwargs = { 'parent': parent, 'style': baseStyle if style is None else baseStyle | style} if id is not None: kwargs['id'] = id if title is not None: kwargs['title'] = title if pos is not None: kwargs['pos'] = pos if size is not None: kwargs['size'] = size if name is not None: kwargs['name'] = name super().__init__(**kwargs) # Intercept copy-paste actions and do nothing in secondary windows, # otherwise on Mac OS X Cmd-C brings up copy fit dialog if 'wxMac' in wx.PlatformInfo: self.Bind(wx.EVT_MENU, self.OnSuppressedAction, id=wx.ID_COPY) self.Bind(wx.EVT_MENU, self.OnSuppressedAction, id=wx.ID_PASTE) if 'wxMSW' in wx.PlatformInfo: self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) @classmethod def openOne(cls, parent, *args, forceReopen=False, **kwargs): """If window is open and alive - raise it, open otherwise""" if not cls._instance or forceReopen: if cls._instance: cls._instance.Close() frame = cls(parent, *args, **kwargs) cls._instance = frame frame.Show() else: cls._instance.Raise() return cls._instance def OnSuppressedAction(self, event): return class AuxiliaryFrame(AuxiliaryMixin, wx.Frame): pass class AuxiliaryDialog(AuxiliaryMixin, wx.Dialog): pass ================================================ FILE: gui/bitmap_loader.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import io import os.path import zipfile from collections import OrderedDict # noinspection PyPackageRequirements import wx from logbook import Logger import config pyfalog = Logger(__name__) class BitmapLoader: # Can be None if we're running from tests if config.imgsZIP is None: pyfalog.info("Using local image files.") archive = None else: try: archive = zipfile.ZipFile(config.imgsZIP, 'r') pyfalog.info("Using zipped image files.") except (IOError, TypeError): pyfalog.info("Using local image files.") archive = None cached_bitmaps = OrderedDict() dont_use_cached_bitmaps = False max_cached_bitmaps = 500 scaling_factor = None @classmethod def getStaticBitmap(cls, name, parent, location): bitmap = cls.getBitmap(name or 0, location) if bitmap is None: return None static = wx.StaticBitmap(parent) static.SetBitmap(bitmap) return static @classmethod def getBitmap(cls, name, location): if cls.dont_use_cached_bitmaps: return cls.loadBitmap(name, location) path = "%s%s" % (name, location) if len(cls.cached_bitmaps) == cls.max_cached_bitmaps: cls.cached_bitmaps.popitem(False) if path not in cls.cached_bitmaps: bmp = cls.loadBitmap(name, location) cls.cached_bitmaps[path] = bmp else: bmp = cls.cached_bitmaps[path] return bmp @classmethod def getImage(cls, name, location): bmp = cls.getBitmap(name, location) if bmp is not None: return bmp.ConvertToImage() else: return None @classmethod def loadBitmap(cls, name, location): if cls.scaling_factor is None: cls.scaling_factor = 1 if 'wxGTK' in wx.PlatformInfo else int(wx.GetApp().GetTopWindow().GetContentScaleFactor()) scale = cls.scaling_factor filename, img = cls.loadScaledBitmap(name, location, scale) while img is None and scale > 0: # can't find the correctly scaled image, fallback to smaller scales scale -= 1 filename, img = cls.loadScaledBitmap(name, location, scale) if img is None: pyfalog.warning("Missing icon file: {0}/{1}".format(location, filename)) return None if scale > 1: return img.Scale(round(img.GetWidth() // scale), round(img.GetHeight() // scale)).ConvertToBitmap() return img.ConvertToBitmap() @classmethod def loadScaledBitmap(cls, name, location, scale=0): """Attempts to load a scaled bitmap. Args: name (str): TypeID or basename of the image being requested. location (str): Path to a location that may contain the image. scale (int): Scale factor of the image variant to load. If ``0``, attempts to load the unscaled variant. Returns: (str, wx.Image): Tuple of the filename that may have been loaded and the image at that location. The filename will always be present, but the image may be ``None``. """ filename = "{0}@{1}x.png".format(name, scale) if scale > 0 else "{0}.png".format(name) img = cls.loadImage(filename, location) return filename, img @classmethod def loadImage(cls, filename, location): if cls.archive: path = os.path.join(location, filename) if os.sep != "/" and os.sep in path: path = path.replace(os.sep, "/") try: img_data = cls.archive.read(path) bbuf = io.BytesIO(img_data) return wx.Image(bbuf) except KeyError: pyfalog.warning("Missing icon file from zip: {0}".format(path)) else: path = os.path.join(config.pyfaPath, 'imgs' + os.sep + location + os.sep + filename) if os.path.exists(path): return wx.Image(path) else: return None ================================================ FILE: gui/builtinAdditionPanes/__init__.py ================================================ ================================================ FILE: gui/builtinAdditionPanes/boosterView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE from gui.builtinMarketBrowser.events import ITEM_SELECTED, ItemSelected from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market _t = wx.GetTranslation class BoosterViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(BoosterViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data data = dragged_data.split(':') if dragged_data is None: return t self.dropFn(x, y, data) return t class BoosterView(d.Display): DEFAULT_COLS = [ "State", "attr:boosterness", "Base Name", "Side Effects", "Price", "Miscellanea", ] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.SetDropTarget(BoosterViewDrop(self.handleListDrag)) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "market": wx.PostEvent(self.mainFrame, ItemSelected(itemID=int(data[1]))) def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: boosters = self.getSelectedBoosters() self.removeBoosters(boosters) event.Skip() def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return self.original = fit.boosters if fit is not None else None self.boosters = fit.boosters[:] if fit is not None else None if self.boosters is not None: self.boosters.sort(key=lambda booster: booster.slot or 0) if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.update(self.boosters) def addItem(self, event): item = Market.getInstance().getItem(event.itemID, eager='group') if item is None or not item.isBooster: event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if not fit or fit.isStructure: event.Skip() return self.mainFrame.command.Submit(cmd.GuiAddBoosterCommand(fitID=fitID, itemID=event.itemID)) # Select in any case - as we might've added booster which has been there already and command failed self.mainFrame.additionsPane.select('Boosters') event.Skip() def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) if col != self.getColIndex(State): try: booster = self.boosters[row] except IndexError: return self.removeBoosters([booster]) def removeBoosters(self, boosters): fitID = self.mainFrame.getActiveFit() positions = [] for booster in boosters: if booster in self.original: positions.append(self.original.index(booster)) self.mainFrame.command.Submit(cmd.GuiRemoveBoostersCommand(fitID=fitID, positions=positions)) def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): fitID = self.mainFrame.getActiveFit() try: mainBooster = self.boosters[mainRow] except IndexError: return if mainBooster in self.original: mainPosition = self.original.index(mainBooster) positions = [] for row in self.getSelectedRows(): try: booster = self.boosters[row] except IndexError: continue if booster in self.original: positions.append(self.original.index(booster)) if mainPosition not in positions: positions = [mainPosition] self.mainFrame.command.Submit(cmd.GuiToggleBoosterStatesCommand( fitID=fitID, mainPosition=mainPosition, positions=positions)) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedBoosters() mainBooster = None if clickedPos != -1: try: booster = self.boosters[clickedPos] except IndexError: pass else: if booster in self.original: mainBooster = booster itemContext = None if mainBooster is None else _t("Booster") menu = ContextMenu.getMenu(self, mainBooster, selection, ("boosterItem", itemContext), ("boosterItemMisc", itemContext)) if menu: self.PopupMenu(menu) def getSelectedBoosters(self): boosters = [] for row in self.getSelectedRows(): try: booster = self.boosters[row] except IndexError: continue boosters.append(booster) return boosters def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active boosters if opt == 1: amount = len([b for b in fit.boosters if b.active]) return ' ({})'.format(amount) if amount else None # Total amount of boosters elif opt == 2: amount = len(fit.boosters) return ' ({})'.format(amount) if amount else None else: return None ================================================ FILE: gui/builtinAdditionPanes/cargoView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE from gui.contextMenu import ContextMenu from gui.builtinMarketBrowser.events import ITEM_SELECTED, ItemSelected from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market class CargoViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(CargoViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t # @todo: Was copied form another class and modified. Look through entire file, refine class CargoView(d.Display): DEFAULT_COLS = ["Base Icon", "Base Name", "attr:volume", "Price"] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.SetDropTarget(CargoViewDrop(self.handleListDrag)) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) def addItem(self, event): item = Market.getInstance().getItem(event.itemID, eager='group') if item is None or not (item.isCharge or item.isCommodity): event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if not fit: event.Skip() return modifiers = wx.GetMouseState().GetModifiers() amount = 1 if modifiers == wx.MOD_CONTROL: amount = 10 elif modifiers == wx.MOD_ALT: amount = 100 elif modifiers == wx.MOD_CONTROL | wx.MOD_ALT: amount = 1000 self.mainFrame.command.Submit(cmd.GuiAddCargoCommand( fitID=fitID, itemID=item.ID, amount=amount)) self.mainFrame.additionsPane.select('Cargo') event.Skip() def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "fitting": self.swapModule(x, y, int(data[1])) elif data[0] == "market": fitID = self.mainFrame.getActiveFit() if fitID: self.mainFrame.command.Submit(cmd.GuiAddCargoCommand( fitID=fitID, itemID=int(data[1]), amount=1)) def startDrag(self, event): row = event.GetIndex() if row != -1: data = wx.TextDataObject() try: dataStr = "cargo:{}".format(self.cargo[row].itemID) except IndexError: return data.SetText(dataStr) self.unselectAll() self.Select(row, True) dropSource = wx.DropSource(self) dropSource.SetData(data) DragDropHelper.data = dataStr dropSource.DoDragDrop() def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: cargos = self.getSelectedCargos() self.removeCargos(cargos) event.Skip() def swapModule(self, x, y, modIdx): """Swap a module from fitting window with cargo""" sFit = Fit.getInstance() fit = sFit.getFit(self.mainFrame.getActiveFit()) dstRow, _ = self.HitTest((x, y)) if dstRow > -1: try: dstCargoItemID = getattr(self.cargo[dstRow], 'itemID', None) except IndexError: dstCargoItemID = None else: dstCargoItemID = None self.mainFrame.command.Submit(cmd.GuiLocalModuleToCargoCommand( fitID=self.mainFrame.getActiveFit(), modPosition=modIdx, cargoItemID=dstCargoItemID, copy=wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL)) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) # self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return self.original = fit.cargo if fit is not None else None self.cargo = fit.cargo[:] if fit is not None else None if self.cargo is not None: self.cargo.sort(key=lambda c: (c.item.group.category.name, c.item.group.name, c.item.name)) if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.populate(self.cargo) self.refresh(self.cargo) def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: try: cargo = self.cargo[row] except IndexError: return self.removeCargos([cargo]) def removeCargos(self, cargos): fitID = self.mainFrame.getActiveFit() itemIDs = [] for cargo in cargos: if cargo in self.original: itemIDs.append(cargo.itemID) self.mainFrame.command.Submit(cmd.GuiRemoveCargosCommand(fitID=fitID, itemIDs=itemIDs)) def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedCargos() mainCargo = None if clickedPos != -1: try: cargo = self.cargo[clickedPos] except IndexError: pass else: if cargo in self.original: mainCargo = cargo itemContext = None if mainCargo is None else Market.getInstance().getCategoryByItem(mainCargo.item).displayName menu = ContextMenu.getMenu(self, mainCargo, selection, ("cargoItem", itemContext), ("cargoItemMisc", itemContext)) if menu: self.PopupMenu(menu) def getSelectedCargos(self): cargos = [] for row in self.getSelectedRows(): try: cargo = self.cargo[row] except IndexError: continue cargos.append(cargo) return cargos def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Total amount of cargo items if opt in (1, 2): amount = len(fit.cargo) return ' ({})'.format(amount) if amount else None else: return None ================================================ FILE: gui/builtinAdditionPanes/commandView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.builtinAdditionPanes.droneView import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE from gui.builtinContextMenus.commandFitAdd import AddCommandFit from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit _t = wx.GetTranslation class DummyItem: def __init__(self, txt): self.name = txt self.iconID = None class DummyEntry: def __init__(self, txt): self.item = DummyItem(txt) class CommandViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(CommandViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class CommandView(d.Display): DEFAULT_COLS = ["State", "Base Name"] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, AddCommandFit.fitChanged) self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.droneView = gui.builtinAdditionPanes.droneView.DroneView self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.SetDropTarget(CommandViewDrop(self.handleListDrag)) def OnFitRemoved(self, event): event.Skip() AddCommandFit.populateFits(event) fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) self.refreshContents(fit) @staticmethod def handleListDrag(x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ pass def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: commandFits = self.getSelectedCommandFits() self.removeCommandFits(commandFits) event.Skip() def handleDrag(self, type, fitID): # Those are drags coming from pyfa sources, NOT builtin wx drags if type == "fit": activeFit = self.mainFrame.getActiveFit() if activeFit: self.mainFrame.command.Submit(cmd.GuiAddCommandFitsCommand(fitID=activeFit, commandFitIDs=[fitID])) @staticmethod def fitSort(fit): return fit.name def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.refreshContents(fit) def refreshContents(self, fit): stuff = [] if fit is not None: self.fits = fit.commandFits[:] self.fits.sort(key=self.fitSort) stuff.extend(self.fits) if not stuff: stuff = [DummyEntry(_t("Drag a fit to this area"))] self.update(stuff) def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): fitID = self.mainFrame.getActiveFit() try: mainCommandFitID = self.fits[mainRow].ID except IndexError: return commandFitIDs = [] for commandFit in self.getSelectedCommandFits(): commandFitIDs.append(commandFit.ID) if mainCommandFitID not in commandFitIDs: commandFitIDs = [mainCommandFitID] self.mainFrame.command.Submit(cmd.GuiToggleCommandFitStatesCommand( fitID=fitID, mainCommandFitID=mainCommandFitID, commandFitIDs=commandFitIDs)) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedCommandFits() mainCommandFit = None if clickedPos != -1: try: mainCommandFit = self.fits[clickedPos] except IndexError: pass contexts = [] if mainCommandFit is not None: contexts.append(('commandFit', _t('Command Fit'))) contexts.append(('commandView',)) menu = ContextMenu.getMenu(self, mainCommandFit, selection, *contexts) if menu: self.PopupMenu(menu) def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: try: commandFit = self.fits[row] except IndexError: return self.removeCommandFits([commandFit]) def removeCommandFits(self, commandFits): fitID = self.mainFrame.getActiveFit() commandFitIDs = [] for commandFit in commandFits: if commandFit in self.fits: commandFitIDs.append(commandFit.ID) self.mainFrame.command.Submit(cmd.GuiRemoveCommandFitsCommand(fitID=fitID, commandFitIDs=commandFitIDs)) def getSelectedCommandFits(self): commandFits = [] for row in self.getSelectedRows(): try: commandFit = self.fits[row] except IndexError: continue commandFits.append(commandFit) return commandFits # Context menu handlers def addFit(self, fit): if fit is None: return self.mainFrame.command.Submit(cmd.GuiAddCommandFitsCommand( fitID=self.mainFrame.getActiveFit(), commandFitIDs=[fit.ID])) def getExistingFitIDs(self): return [f.ID for f in self.fits] def addFitsByIDs(self, fitIDs): if not fitIDs: return self.mainFrame.command.Submit(cmd.GuiAddCommandFitsCommand( fitID=self.mainFrame.getActiveFit(), commandFitIDs=fitIDs)) def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active command fits if opt == 1: amount = 0 for commandFit in fit.commandFits: info = commandFit.getCommandInfo(fitID) if info is not None and info.active: amount += 1 return ' ({})'.format(amount) if amount else None # Total amount of command fits elif opt == 2: amount = len(fit.commandFits) return ' ({})'.format(amount) if amount else None else: return None ================================================ FILE: gui/builtinAdditionPanes/droneView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED from gui.display import Display from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market import gui.fitCommands as cmd from gui.fitCommands.helpers import droneStackLimit DRONE_ORDER = ('Light Scout Drones', 'Medium Scout Drones', 'Heavy Attack Drones', 'Sentry Drones', 'Combat Utility Drones', 'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones') class DroneViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(DroneViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class DroneView(Display): DEFAULT_COLS = [ "State", # "Base Icon", "Base Name", # "prop:droneDps,droneBandwidth", "Max Range", "Miscellanea", "attr:maxVelocity", "Drone HP", "Drone Regen", "Price", ] def __init__(self, parent): Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.hoveredRow = None self.hoveredColumn = None self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.SetDropTarget(DroneViewDrop(self.handleDragDrop)) def OnLeaveWindow(self, event): self.SetToolTip(None) self.hoveredRow = None self.hoveredColumn = None event.Skip() def OnMouseMove(self, event): row, _, col = self.HitTestSubItem(event.Position) if row != self.hoveredRow or col != self.hoveredColumn: if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredRow = row self.hoveredColumn = col if row != -1 and col != -1 and col < len(self.DEFAULT_COLS): try: mod = self.drones[row] except IndexError: return if self.DEFAULT_COLS[col] == "Miscellanea": tooltip = self.activeColumns[col].getToolTip(mod) if tooltip is not None: self.SetToolTip(tooltip) else: self.SetToolTip(None) else: self.SetToolTip(None) else: self.SetToolTip(None) event.Skip() def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: drones = self.getSelectedDrones() self.removeDroneStacks(drones) event.Skip() def startDrag(self, event): row = event.GetIndex() if row != -1: self.unselectAll() self.Select(row, True) data = wx.TextDataObject() dataStr = "drone:" + str(row) data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) DragDropHelper.data = dataStr dropSource.DoDragDrop() def handleDragDrop(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "drone": srcRow = int(data[1]) if srcRow != -1: if wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL: try: srcDrone = self.drones[srcRow] except IndexError: return if srcDrone not in self.original: return self.mainFrame.command.Submit(cmd.GuiCloneLocalDroneCommand( fitID=self.mainFrame.getActiveFit(), position=self.original.index(srcDrone))) else: dstRow, _ = self.HitTest((x, y)) if dstRow != -1: self._merge(srcRow, dstRow) elif data[0] == "market": wx.PostEvent(self.mainFrame, ItemSelected(itemID=int(data[1]))) def _merge(self, srcRow, dstRow): fitID = self.mainFrame.getActiveFit() try: srcDrone = self.drones[srcRow] dstDrone = self.drones[dstRow] except IndexError: return if srcDrone in self.original and dstDrone in self.original: srcPosition = self.original.index(srcDrone) dstPosition = self.original.index(dstDrone) self.mainFrame.command.Submit(cmd.GuiMergeLocalDroneStacksCommand( fitID=fitID, srcPosition=srcPosition, dstPosition=dstPosition)) @staticmethod def droneKey(drone): if drone.isMutated: item = drone.baseItem else: item = drone.item groupName = Market.getInstance().getMarketGroupByItem(item).marketGroupName return (DRONE_ORDER.index(groupName), drone.isMutated, drone.fullName) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return self.original = fit.drones if fit is not None else None self.drones = fit.drones[:] if fit is not None else None if self.drones is not None: self.drones.sort(key=self.droneKey) if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.update(self.drones) def addItem(self, event): item = Market.getInstance().getItem(event.itemID, eager='group.category') if item is None or not item.isDrone: event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if not fit or fit.isStructure: event.Skip() return amount = droneStackLimit(fit, event.itemID) if wx.GetMouseState().GetModifiers() == wx.MOD_ALT else 1 if self.mainFrame.command.Submit(cmd.GuiAddLocalDroneCommand(fitID=fitID, itemID=event.itemID, amount=amount)): self.mainFrame.additionsPane.select('Drones') event.Skip() def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) if col != self.getColIndex(State): try: drone = self.drones[row] except IndexError: return if event.GetModifiers() == wx.MOD_ALT: self.removeDroneStacks([drone]) else: self.removeDrone(drone) def removeDrone(self, drone): fitID = self.mainFrame.getActiveFit() if drone in self.original: position = self.original.index(drone) self.mainFrame.command.Submit(cmd.GuiRemoveLocalDronesCommand( fitID=fitID, positions=[position], amount=1)) def removeDroneStacks(self, drones): fitID = self.mainFrame.getActiveFit() positions = [] for drone in drones: if drone in self.original: positions.append(self.original.index(drone)) self.mainFrame.command.Submit(cmd.GuiRemoveLocalDronesCommand( fitID=fitID, positions=positions, amount=math.inf)) def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): try: mainDrone = self.drones[mainRow] except IndexError: return if mainDrone in self.original: mainPosition = self.original.index(mainDrone) positions = [] for row in self.getSelectedRows(): try: drone = self.drones[row] except IndexError: continue if drone in self.original: positions.append(self.original.index(drone)) if mainPosition not in positions: positions = [mainPosition] self.mainFrame.command.Submit(cmd.GuiToggleLocalDroneStatesCommand( fitID=self.mainFrame.getActiveFit(), mainPosition=mainPosition, positions=positions)) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) mainDrone = None if clickedPos != -1: try: drone = self.drones[clickedPos] except IndexError: pass else: if drone in self.original: mainDrone = drone selection = self.getSelectedDrones() itemContext = None if mainDrone is None else Market.getInstance().getCategoryByItem(mainDrone.item).displayName menu = ContextMenu.getMenu(self, mainDrone, selection, ("droneItem", itemContext), ("droneItemMisc", itemContext)) if menu: self.PopupMenu(menu) def getSelectedDrones(self): drones = [] for row in self.getSelectedRows(): try: drone = self.drones[row] except IndexError: continue drones.append(drone) return drones def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active drones if opt == 1: amount = 0 for droneStack in fit.drones: amount += droneStack.amountActive return ' ({})'.format(amount) if amount else None # Total amount of drones elif opt == 2: amount = 0 for droneStack in fit.drones: amount += droneStack.amount return ' ({})'.format(amount) if amount else None else: return None ================================================ FILE: gui/builtinAdditionPanes/fighterView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE import gui.mainFrame from eos.const import FittingSlot from gui.builtinMarketBrowser.events import ItemSelected, ITEM_SELECTED from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.fitCommands.helpers import getSimilarFighters from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market FIGHTER_ORDER = ( 'Light Fighter', 'Structure Light Fighter', 'Heavy Fighter', 'Structure Heavy Fighter', 'Support Fighter', 'Structure Support Fighter') _t = wx.GetTranslation class FighterViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(FighterViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class FighterView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.labels = [("Light", _t("Light")), ("Heavy", _t("Heavy")), ("Support", _t("Support"))] mainSizer = wx.BoxSizer(wx.VERTICAL) self.fighterDisplay = FighterDisplay(self) mainSizer.Add(self.fighterDisplay, 1, wx.EXPAND, 0) textSizer = wx.BoxSizer(wx.HORIZONTAL) textSizer.AddStretchSpacer() for attr, label in self.labels: lbl = wx.StaticText(self, wx.ID_ANY, label) textSizer.Add(lbl, 0, wx.ALIGN_CENTER | wx.LEFT, 5) lbl = wx.StaticText(self, wx.ID_ANY, "0") setattr(self, "label%sUsed" % attr, lbl) textSizer.Add(lbl, 0, wx.ALIGN_CENTER | wx.LEFT, 5) textSizer.Add(wx.StaticText(self, wx.ID_ANY, "/"), 0, wx.ALIGN_CENTER) lbl = wx.StaticText(self, wx.ID_ANY, "0") setattr(self, "label%sTotal" % attr, lbl) textSizer.Add(lbl, 0, wx.ALIGN_CENTER) textSizer.AddStretchSpacer() mainSizer.Add(textSizer, 0, wx.EXPAND, 5) self.SetSizer(mainSizer) self.SetAutoLayout(True) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) if fit: for x, _ in self.labels: if fit.isStructure: slot = getattr(FittingSlot, "FS_{}".format(x.upper())) else: slot = getattr(FittingSlot, "F_{}".format(x.upper())) used = fit.getSlotsUsed(slot) total = fit.getNumSlots(slot) color = wx.Colour(204, 51, 51) if used > total else wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT) lbl = getattr(self, "label%sUsed" % x.capitalize()) lbl.SetLabel(str(int(used))) lbl.SetForegroundColour(color) lbl = getattr(self, "label%sTotal" % x.capitalize()) lbl.SetLabel(str(int(total))) lbl.SetForegroundColour(color) self.Refresh() def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active fighter squads if opt == 1: amount = len([f for f in fit.fighters if f.active]) return ' ({})'.format(amount) if amount else None # Total amount of fighter squads elif opt == 2: amount = len(fit.fighters) return ' ({})'.format(amount) if amount else None else: return None class FighterDisplay(d.Display): DEFAULT_COLS = ["State", # "Base Icon", "Base Name", # "prop:droneDps,droneBandwidth", # "Max Range", # "Miscellanea", "attr:maxVelocity", "Drone HP", "Drone Regen", "Fighter Abilities", "Price", ] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.hoveredRow = None self.hoveredColumn = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.SetDropTarget(FighterViewDrop(self.handleDragDrop)) def OnLeaveWindow(self, event): self.SetToolTip(None) self.hoveredRow = None self.hoveredColumn = None event.Skip() def OnMouseMove(self, event): row, _, col = self.HitTestSubItem(event.Position) if row != self.hoveredRow or col != self.hoveredColumn: if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredRow = row self.hoveredColumn = col if row != -1 and col != -1 and col < len(self.DEFAULT_COLS): try: mod = self.fighters[row] except IndexError: return if self.DEFAULT_COLS[col] == "Miscellanea": tooltip = self.activeColumns[col].getToolTip(mod) if tooltip is not None: self.SetToolTip(tooltip) else: self.SetToolTip(None) else: self.SetToolTip(None) else: self.SetToolTip(None) event.Skip() def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: fighters = self.getSelectedFighters() self.removeFighters(fighters) event.Skip() def startDrag(self, event): row = event.GetIndex() if row != -1: self.unselectAll() self.Select(row, True) data = wx.TextDataObject() dataStr = "fighter:" + str(row) data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) DragDropHelper.data = dataStr dropSource.DoDragDrop() def handleDragDrop(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "fighter": # we want to merge fighters srcRow = int(data[1]) dstRow, _ = self.HitTest((x, y)) if srcRow != -1 and dstRow != -1: self._merge(srcRow, dstRow) elif data[0] == "market": wx.PostEvent(self.mainFrame, ItemSelected(itemID=int(data[1]))) @staticmethod def _merge(src, dst): return @staticmethod def fighterKey(fighter): groupName = Market.getInstance().getGroupByItem(fighter.item).name orderPos = FIGHTER_ORDER.index(groupName) # Sort support fighters by name, ignore their abilities if groupName == 'Support Fighter': abilityEffectIDs = () # Group up fighters from various roles else: abilityEffectIDs = sorted(a.effectID for a in fighter.abilities) return orderPos, abilityEffectIDs, fighter.item.name def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.Parent.Parent.Parent.DisablePage(self.Parent, not fit) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return self.original = fit.fighters if fit is not None else None self.fighters = fit.fighters[:] if fit is not None else None if self.fighters is not None: self.fighters.sort(key=self.fighterKey) if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.update(self.fighters) def addItem(self, event): item = Market.getInstance().getItem(event.itemID, eager='group.category') if item is None or not item.isFighter: event.Skip() return fitID = self.mainFrame.getActiveFit() if self.mainFrame.command.Submit(cmd.GuiAddLocalFighterCommand(fitID, event.itemID)): self.mainFrame.additionsPane.select('Fighters') event.Skip() def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) if col != self.getColIndex(State): try: fighter = self.fighters[row] except IndexError: return if event.GetModifiers() == wx.MOD_ALT: fighters = getSimilarFighters(self.original, fighter) else: fighters = [fighter] self.removeFighters(fighters) def removeFighters(self, fighters): fitID = self.mainFrame.getActiveFit() positions = [] for fighter in fighters: if fighter in self.original: positions.append(self.original.index(fighter)) self.mainFrame.command.Submit(cmd.GuiRemoveLocalFightersCommand(fitID=fitID, positions=positions)) def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): fitID = self.mainFrame.getActiveFit() try: mainFighter = self.fighters[mainRow] except IndexError: return if mainFighter in self.original: mainPosition = self.original.index(mainFighter) positions = [] if event.GetModifiers() == wx.MOD_ALT: for fighter in getSimilarFighters(self.original, mainFighter): positions.append(self.original.index(fighter)) else: for row in self.getSelectedRows(): try: fighter = self.fighters[row] except IndexError: continue if fighter in self.original: positions.append(self.original.index(fighter)) if mainPosition not in positions: positions = [mainPosition] self.mainFrame.command.Submit(cmd.GuiToggleLocalFighterStatesCommand( fitID=fitID, mainPosition=mainPosition, positions=positions)) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedFighters() mainFighter = None if clickedPos != -1: try: fighter = self.fighters[clickedPos] except IndexError: pass else: if fighter in self.original: mainFighter = fighter itemContext = None if mainFighter is None else Market.getInstance().getCategoryByItem(mainFighter.item).displayName menu = ContextMenu.getMenu(self, mainFighter, selection, ("fighterItem", itemContext), ("fighterItemMisc", itemContext)) if menu: self.PopupMenu(menu) def getSelectedFighters(self): fighters = [] for row in self.getSelectedRows(): try: fighter = self.fighters[row] except IndexError: continue fighters.append(fighter) return fighters ================================================ FILE: gui/builtinAdditionPanes/implantView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE import gui.mainFrame from eos.const import ImplantLocation from gui.builtinMarketBrowser.events import ITEM_SELECTED from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market _t = wx.GetTranslation class ImplantViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(ImplantViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class ImplantView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) self.mainFrame = gui.mainFrame.MainFrame.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.implantDisplay = ImplantDisplay(self) mainSizer.Add(self.implantDisplay, 1, wx.EXPAND, 0) radioSizer = wx.BoxSizer(wx.HORIZONTAL) radioSizer.AddStretchSpacer() self.rbFit = wx.RadioButton(self, id=wx.ID_ANY, label=_t("Use Fit-specific Implants"), style=wx.RB_GROUP) self.rbChar = wx.RadioButton(self, id=wx.ID_ANY, label=_t("Use Character Implants")) radioSizer.Add(self.rbFit, 0, wx.ALL, 5) radioSizer.Add(self.rbChar, 0, wx.ALL, 5) radioSizer.AddStretchSpacer() mainSizer.Add(radioSizer, 0, wx.EXPAND, 5) self.SetSizer(mainSizer) self.SetAutoLayout(True) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioSelect, self.rbFit) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioSelect, self.rbChar) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) if fit: self.source = fit.implantSource if fit.implantSource == ImplantLocation.FIT: self.rbFit.SetValue(True) else: self.rbChar.SetValue(True) self.rbFit.Enable(fit is not None) self.rbChar.Enable(fit is not None) def OnRadioSelect(self, event): fitID = self.mainFrame.getActiveFit() if fitID is not None: self.mainFrame.command.Submit(cmd.GuiChangeImplantLocationCommand( fitID=fitID, source=ImplantLocation.FIT if self.rbFit.GetValue() else ImplantLocation.CHARACTER)) def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active implants if opt == 1: amount = len([i for i in fit.appliedImplants if i.active]) return ' ({})'.format(amount) if amount else None # Total amount of implants elif opt == 2: amount = len(fit.appliedImplants) return ' ({})'.format(amount) if amount else None else: return None class ImplantDisplay(d.Display): DEFAULT_COLS = [ "State", "attr:implantness", "Base Icon", "Base Name", "Price", ] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.SetDropTarget(ImplantViewDrop(self.handleListDrag)) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "market": if self.mainFrame.command.Submit(cmd.GuiAddImplantCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(data[1]))): self.mainFrame.additionsPane.select("Implants") def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: implants = self.getSelectedImplants() self.removeImplants(implants) event.Skip() def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.Parent.Parent.Parent.DisablePage(self.Parent, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return self.original = fit.appliedImplants if fit is not None else None self.implants = fit.appliedImplants[:] if fit is not None else None if self.implants is not None: self.implants.sort(key=lambda implant: implant.slot or 0) if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.update(self.implants) def addItem(self, event): item = Market.getInstance().getItem(event.itemID, eager='group.category') if item is None or not item.isImplant: event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if not fit or fit.isStructure: event.Skip() return self.mainFrame.command.Submit(cmd.GuiAddImplantCommand( fitID=fitID, itemID=event.itemID)) # Select in any case - as we might've added implant which has been there already and command failed self.mainFrame.additionsPane.select('Implants') event.Skip() def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) if col != self.getColIndex(State): try: implant = self.implants[row] except IndexError: return self.removeImplants([implant]) def removeImplants(self, implants): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if fit.implantLocation != ImplantLocation.FIT: return positions = [] for implant in implants: if implant in self.original: positions.append(self.original.index(implant)) self.mainFrame.command.Submit(cmd.GuiRemoveImplantsCommand(fitID=fitID, positions=positions)) def click(self, event): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if fit.implantLocation == ImplantLocation.FIT: mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): fitID = self.mainFrame.getActiveFit() try: mainImplant = self.implants[mainRow] except IndexError: return if mainImplant in self.original: mainPosition = self.original.index(mainImplant) positions = [] for row in self.getSelectedRows(): try: implant = self.implants[row] except IndexError: continue if implant in self.original: positions.append(self.original.index(implant)) if mainPosition not in positions: positions = [mainPosition] self.mainFrame.command.Submit(cmd.GuiToggleImplantStatesCommand( fitID=fitID, mainPosition=mainPosition, positions=positions)) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) selection = self.getSelectedImplants() mainImplant = None if clickedPos != -1: try: implant = self.implants[clickedPos] except IndexError: pass else: if implant in self.original: mainImplant = implant fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) sourceContext1 = "implantItem" if fit.implantSource == ImplantLocation.FIT else "implantItemChar" sourceContext2 = "implantItemMisc" if fit.implantSource == ImplantLocation.FIT else "implantItemMiscChar" itemContext = None if mainImplant is None else Market.getInstance().getCategoryByItem(mainImplant.item).displayName menu = ContextMenu.getMenu(self, mainImplant, selection, (sourceContext1, itemContext), (sourceContext2, itemContext) ) if menu: self.PopupMenu(menu) def getSelectedImplants(self): implants = [] for row in self.getSelectedRows(): try: implant = self.implants[row] except IndexError: continue implants.append(implant) return implants def addImplants(self, implants): self.mainFrame.command.Submit(cmd.GuiAddImplantSetCommand( fitID=self.mainFrame.getActiveFit(), itemIDs=[i.itemID for i in implants])) ================================================ FILE: gui/builtinAdditionPanes/notesView.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.utils.helpers_wxPython import HandleCtrlBackspace from gui.utils.numberFormatter import formatAmount from service.fit import Fit class NotesView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) self.lastFitId = None self.mainFrame = gui.mainFrame.MainFrame.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.editNotes = wx.TextCtrl(self, style=wx.TE_MULTILINE | wx.BORDER_NONE) mainSizer.Add(self.editNotes, 1, wx.EXPAND | wx.ALL, 10) self.SetSizer(mainSizer) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_TEXT, self.onText) self.editNotes.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) self.changeTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.delayedSave, self.changeTimer) def OnKeyDown(self, event): if event.RawControlDown() and event.GetKeyCode() == wx.WXK_BACK: try: HandleCtrlBackspace(self.editNotes) except (KeyboardInterrupt, SystemExit): raise except: pass else: event.Skip() def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) self.changeTimer.Stop() # cancel any pending timers self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # when switching fits, ensure that we save the notes for the previous fit if self.lastFitId is not None: sFit.editNotes(self.lastFitId, self.editNotes.GetValue()) if activeFitID is None and self.lastFitId is not None: self.lastFitId = None return elif activeFitID != self.lastFitId: self.lastFitId = activeFitID self.editNotes.ChangeValue(fit.notes or "") wx.PostEvent(self.mainFrame, GE.FitNotesChanged()) def onText(self, event): # delay the save so we're not writing to sqlite on every keystroke self.changeTimer.Stop() # cancel the existing timer self.changeTimer.Start(1000, True) def delayedSave(self, event): event.Skip() sFit = Fit.getInstance() sFit.editNotes(self.lastFitId, self.editNotes.GetValue()) wx.PostEvent(self.mainFrame, GE.FitNotesChanged()) def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active implants if opt in (1, 2): amount = len(self.editNotes.GetValue()) return ' ({})'.format(formatAmount(amount, 2, 0, 3)) if amount else None else: return None ================================================ FILE: gui/builtinAdditionPanes/projectedView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math # noinspection PyPackageRequirements import wx from logbook import Logger import gui.builtinAdditionPanes.droneView import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE from eos.const import FittingModuleState from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.fitCommands.helpers import getSimilarFighters, getSimilarModPositions from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) _t = wx.GetTranslation class DummyItem: def __init__(self, txt): self.name = txt self.iconID = None class DummyEntry: def __init__(self, txt): self.item = DummyItem(txt) class ProjectedViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(ProjectedViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class ProjectedView(d.Display): DEFAULT_COLS = ['State', 'Ammo Icon', 'Base Icon', 'Base Name', 'Ammo', 'Projection Range'] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.BORDER_NONE) self.lastFitId = None self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick) self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.SetDropTarget(ProjectedViewDrop(self.handleListDrag)) def OnFitRemoved(self, event): event.Skip() fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) self.refreshContents(fit) def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two indices: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if data[0] == 'fitting': dstRow, _ = self.HitTest((x, y)) # Gather module information to get position self.mainFrame.command.Submit(cmd.GuiAddProjectedModuleCommand( fitID=fitID, itemID=fit.modules[int(data[1])].itemID)) elif data[0] == 'market': itemID = int(data[1]) item = Market.getInstance().getItem(itemID) if item.isModule: self.mainFrame.command.Submit(cmd.GuiAddProjectedModuleCommand(fitID=fitID, itemID=itemID)) elif item.isDrone: self.mainFrame.command.Submit(cmd.GuiAddProjectedDroneCommand(fitID=fitID, itemID=itemID)) elif item.isFighter: self.mainFrame.command.Submit(cmd.GuiAddProjectedFighterCommand(fitID=fitID, itemID=itemID)) def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=self.mainFrame.getActiveFit(), items=self.getSelectedProjectors(), amount=math.inf)) event.Skip() def handleDrag(self, type, fitID): # Those are drags coming from pyfa sources, NOT builtin wx drags if type == 'fit': activeFit = self.mainFrame.getActiveFit() if activeFit: self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( fitID=activeFit, projectedFitIDs=[fitID], amount=1)) @staticmethod def moduleSort(module): return not module.isExclusiveSystemEffect, module.item.name @staticmethod def fighterSort(fighter): return fighter.item.name def droneSort(self, drone): item = drone.item if item.marketGroup is None: item = item.metaGroup.parent return (gui.builtinAdditionPanes.droneView.DRONE_ORDER.index(item.marketGroup.name), drone.item.name) @staticmethod def fitSort(fit): return fit.name def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) # pyfalog.debug('ProjectedView::fitChanged: {}', repr(fit)) self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if activeFitID is None and self.lastFitId is not None: self.DeleteAllItems() self.lastFitId = None return if activeFitID != self.lastFitId: self.lastFitId = activeFitID item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE) if item != -1: self.EnsureVisible(item) self.unselectAll() self.refreshContents(fit) def refreshContents(self, fit): stuff = [] if fit is not None: self.originalFits = fit.projectedFits self.fits = fit.projectedFits[:] self.originalModules = fit.projectedModules self.modules = fit.projectedModules[:] self.originalDrones = fit.projectedDrones self.drones = fit.projectedDrones[:] self.originalFighters = fit.projectedFighters self.fighters = fit.projectedFighters[:] self.fits.sort(key=self.fitSort) self.modules.sort(key=self.moduleSort) self.drones.sort(key=self.droneSort) self.fighters.sort(key=self.fighterSort) stuff.extend(self.fits) stuff.extend(self.modules) stuff.extend(self.drones) stuff.extend(self.fighters) if not stuff: stuff = [DummyEntry(_t('Drag an item or fit, or use right-click menu for wormhole effects'))] self.update(stuff) def get(self, row): if row == -1: return None numFits = len(self.fits) numMods = len(self.modules) numDrones = len(self.drones) numFighters = len(self.fighters) if (numFits + numMods + numDrones + numFighters) == 0: return None if row < numFits: fit = self.fits[row] if fit in self.originalFits: return fit elif row - numFits < numMods: mod = self.modules[row - numFits] if mod in self.originalModules: return mod elif row - numFits - numMods < numDrones: drone = self.drones[row - numFits - numMods] if drone in self.originalDrones: return drone else: fighter = self.fighters[row - numFits - numMods - numDrones] if fighter in self.originalFighters: return fighter return None def click(self, event): mainRow, _ = self.HitTest(event.Position) if mainRow != -1: col = self.getColumn(event.Position) if col == self.getColIndex(State): mainItem = self.get(mainRow) if mainItem is None: return selection = self.getSelectedProjectors() if mainItem not in selection: selection = [mainItem] modPressed = event.GetModifiers() == wx.MOD_ALT fitID = self.mainFrame.getActiveFit() if isinstance(mainItem, EosModule) and modPressed: fit = Fit.getInstance().getFit(fitID) positions = getSimilarModPositions(fit.projectedModules, mainItem) selection = [fit.projectedModules[p] for p in positions] elif isinstance(mainItem, EosFighter) and modPressed: fit = Fit.getInstance().getFit(fitID) selection = getSimilarFighters(fit.projectedFighters, mainItem) self.mainFrame.command.Submit(cmd.GuiChangeProjectedItemStatesCommand( fitID=fitID, mainItem=mainItem, items=selection, click='right' if event.GetButton() == 3 else 'left')) return event.Skip() def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) fitID = self.mainFrame.getActiveFit() if fitID is None: return if self.getColumn(self.screenToClientFixed(event.Position)) == self.getColIndex(State): return mainItem = self.get(clickedPos) contexts = [] if mainItem is not None: sMkt = Market.getInstance() if isinstance(mainItem, EosModule): modSrcContext = 'projectedModule' modItemContext = _t('Projected Item') modFullContext = (modSrcContext, modItemContext) contexts.append(modFullContext) if mainItem.charge is not None: chargeSrcContext = 'projectedCharge' chargeItemContext = sMkt.getCategoryByItem(mainItem.charge).displayName chargeFullContext = (chargeSrcContext, chargeItemContext) contexts.append(chargeFullContext) elif isinstance(mainItem, EosDrone): srcContext = 'projectedDrone' itemContext = _t('Projected Item') droneFullContext = (srcContext, itemContext) contexts.append(droneFullContext) elif isinstance(mainItem, EosFighter): srcContext = 'projectedFighter' itemContext = _t('Projected Item') fighterFullContext = (srcContext, itemContext) contexts.append(fighterFullContext) else: fitSrcContext = 'projectedFit' fitItemContext = _t('Projected Item') fitFullContext = (fitSrcContext, fitItemContext) contexts.append(fitFullContext) contexts.append(('projected',)) selection = self.getSelectedProjectors() menu = ContextMenu.getMenu(self, mainItem, selection, *contexts) if menu is not None: self.PopupMenu(menu) def onLeftDoubleClick(self, event): row, _ = self.HitTest(event.Position) if row != -1: col = self.getColumn(event.Position) if col != self.getColIndex(State): mainItem = self.get(row) if mainItem is None: return fitID = self.mainFrame.getActiveFit() modPressed = event.GetModifiers() == wx.MOD_ALT if isinstance(mainItem, EosFit): self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=[mainItem], amount=math.inf if modPressed else 1)) elif isinstance(mainItem, EosModule): if modPressed: fit = Fit.getInstance().getFit(fitID) positions = getSimilarModPositions(fit.projectedModules, mainItem) items = [fit.projectedModules[p] for p in positions] else: items = [mainItem] self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=items, amount=1)) elif isinstance(mainItem, EosDrone): self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=[mainItem], amount=math.inf if modPressed else 1)) elif isinstance(mainItem, EosFighter): if modPressed: fit = Fit.getInstance().getFit(fitID) items = getSimilarFighters(fit.projectedFighters, mainItem) else: items = [mainItem] self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=items, amount=1)) else: self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=[mainItem], amount=math.inf if modPressed else 1)) def getSelectedProjectors(self): projectors = [] for row in self.getSelectedRows(): projector = self.get(row) if projector is None: continue projectors.append(projector) return projectors # Context menu handlers def addFit(self, fit): if fit is None: return self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( fitID=self.mainFrame.getActiveFit(), projectedFitIDs=[fit.ID], amount=1)) def getExistingFitIDs(self): return [f.ID for f in self.fits] def addFitsByIDs(self, fitIDs): if not fitIDs: return self.mainFrame.command.Submit(cmd.GuiAddProjectedFitsCommand( fitID=self.mainFrame.getActiveFit(), projectedFitIDs=fitIDs, amount=1)) def getTabExtraText(self): fitID = self.mainFrame.getActiveFit() if fitID is None: return None sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit is None: return None opt = sFit.serviceFittingOptions["additionsLabels"] # Amount of active projected items if opt == 1: amount = 0 for projectedFit in fit.projectedFits: info = projectedFit.getProjectionInfo(fitID) if info is not None and info.active: amount += 1 amount += len([m for m in fit.projectedModules if m.state > FittingModuleState.OFFLINE]) amount += len([d for d in fit.projectedDrones if d.amountActive > 0]) amount += len([f for f in fit.projectedFighters if f.active]) return ' ({})'.format(amount) if amount else None # Total amount of projected items elif opt == 2: amount = 0 amount += len(fit.projectedFits) amount += len(fit.projectedModules) amount += len(fit.projectedDrones) amount += len(fit.projectedFighters) return ' ({})'.format(amount) if amount else None else: return None ================================================ FILE: gui/builtinContextMenus/__init__.py ================================================ # Various command and projected-related items which we want to have first, # before generic commands from gui.builtinContextMenus import fitOpenNewTab from gui.builtinContextMenus import fitAddBrowse from gui.builtinContextMenus import fitAddCurrentlyOpen from gui.builtinContextMenus import envEffectAdd from gui.builtinContextMenus import commandFitAdd from gui.builtinContextMenus.targetProfile import adder from gui.builtinContextMenus import graphFitAmmoPicker # Often-used item manipulations from gui.builtinContextMenus import shipModeChange from gui.builtinContextMenus import moduleAmmoChange from gui.builtinContextMenus import moduleSpool from gui.builtinContextMenus import moduleRahPattern from gui.builtinContextMenus import boosterSideEffects from gui.builtinContextMenus import fighterAbilities from gui.builtinContextMenus import resistMode from gui.builtinContextMenus.targetProfile import editor # Item info from gui.builtinContextMenus import itemStats from gui.builtinContextMenus import itemMarketJump from gui.builtinContextMenus import fitSystemSecurity # Not really an item info but want to keep it here from gui.builtinContextMenus import fitPilotSecurity # Not really an item info but want to keep it here from gui.builtinContextMenus import shipJump # Generic item manipulations from gui.builtinContextMenus import itemRemove from gui.builtinContextMenus import itemAmountChange from gui.builtinContextMenus import itemProjectionRange from gui.builtinContextMenus import droneSplitStack from gui.builtinContextMenus import itemVariationChange from gui.builtinContextMenus import itemMutations from gui.builtinContextMenus import moduleFill from gui.builtinContextMenus import moduleMutatedExport from gui.builtinContextMenus import skillAffectors # Market stuff from gui.builtinContextMenus import itemFill from gui.builtinContextMenus import droneAddStack from gui.builtinContextMenus import cargoAdd from gui.builtinContextMenus import cargoFill from gui.builtinContextMenus import cargoAddAmmo from gui.builtinContextMenus import itemProject from gui.builtinContextMenus import ammoToDmgPattern from gui.builtinContextMenus import implantSetApply from gui.builtinContextMenus import implantSetSave # Price from gui.builtinContextMenus import priceOptions # Resistance panel from gui.builtinContextMenus import damagePatternChange # Firepower panel from gui.builtinContextMenus import factorReload from gui.builtinContextMenus.targetProfile import switcher # Graph extra options from gui.builtinContextMenus import graphDmgApplyProjected from gui.builtinContextMenus import graphDmgIgnoreResists from gui.builtinContextMenus import graphLockRange from gui.builtinContextMenus import graphDroneControlRange from gui.builtinContextMenus import graphDmgDroneMode # Additions panel menus from gui.builtinContextMenus import additionsExportSelection from gui.builtinContextMenus import additionsExportAll from gui.builtinContextMenus import additionsImport ================================================ FILE: gui/builtinContextMenus/additionsExportAll.py ================================================ import wx import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from gui.utils.clipboard import toClipboard from service.fit import Fit from service.port.eft import exportBoosters, exportCargo, exportDrones, exportFighters, exportImplants _t = wx.GetTranslation class AdditionsExportAll(ContextMenuUnconditional): visibilitySetting = 'additionsCopyPaste' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.viewSpecMap = { 'droneItemMisc': (_t('Drones'), lambda cw: cw.drones, exportDrones), 'fighterItemMisc': (_t('Fighters'), lambda cw: cw.fighters, exportFighters), 'cargoItemMisc': (_t('Cargo Items'), lambda cw: cw.cargo, exportCargo), 'implantItemMisc': (_t('Implants'), lambda cw: cw.implants, exportImplants), 'implantItemMiscChar': (_t('Implants'), lambda cw: cw.implants, exportImplants), 'boosterItemMisc': (_t('Boosters'), lambda cw: cw.boosters, exportBoosters) } def display(self, callingWindow, srcContext): if srcContext not in self.viewSpecMap: return False fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit()) if fit is None: return False if not self.viewSpecMap[srcContext][1](callingWindow): return False self.srcContext = srcContext return True def getText(self, callingWindow, itmContext): return _t('Copy All {}').format(self.viewSpecMap[self.srcContext][0]) def activate(self, callingWindow, fullContext, i): items = self.viewSpecMap[self.srcContext][1](callingWindow) export = self.viewSpecMap[self.srcContext][2](items) if export: toClipboard(export) AdditionsExportAll.register() ================================================ FILE: gui/builtinContextMenus/additionsExportSelection.py ================================================ import wx import gui.mainFrame from gui.contextMenu import ContextMenuSelection from gui.utils.clipboard import toClipboard from service.fit import Fit from service.port.eft import exportBoosters, exportCargo, exportDrones, exportFighters, exportImplants _t = wx.GetTranslation class AdditionsExportAll(ContextMenuSelection): visibilitySetting = 'additionsCopyPaste' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.viewSpecMap = { 'droneItemMisc': (_t('Drones'), exportDrones), 'fighterItemMisc': (_t('Fighters'), exportFighters), 'cargoItemMisc': (_t('Cargo Items'), exportCargo), 'implantItemMisc': (_t('Implants'), exportImplants), 'implantItemMiscChar': (_t('Implants'), exportImplants), 'boosterItemMisc': (_t('Boosters'), exportBoosters) } def display(self, callingWindow, srcContext, selection): if srcContext not in self.viewSpecMap: return False if not selection: return False fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit()) if fit is None: return False self.srcContext = srcContext return True def getText(self, callingWindow, itmContext, selection): return _t('Copy Selected {}').format(self.viewSpecMap[self.srcContext][0]) def activate(self, callingWindow, fullContext, selection, i): export = self.viewSpecMap[self.srcContext][1](selection) if export: toClipboard(export) AdditionsExportAll.register() ================================================ FILE: gui/builtinContextMenus/additionsImport.py ================================================ import wx import gui.mainFrame from gui import fitCommands as cmd from gui.contextMenu import ContextMenuUnconditional from gui.utils.clipboard import fromClipboard from service.fit import Fit from service.port.eft import parseAdditions, importGetMutationData, lineIter _t = wx.GetTranslation class AdditionsImport(ContextMenuUnconditional): visibilitySetting = 'additionsCopyPaste' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.viewSpecMap = { 'droneItemMisc': (_t('Drones'), lambda i: i.isDrone, cmd.GuiImportLocalDronesCommand), 'fighterItemMisc': (_t('Fighters'), lambda i: i.isFighter, cmd.GuiImportLocalFightersCommand), 'cargoItemMisc': (_t('Cargo Items'), lambda i: not i.isAbyssal, cmd.GuiImportCargosCommand), 'implantItemMisc': (_t('Implants'), lambda i: i.isImplant, cmd.GuiImportImplantsCommand), 'implantItemMiscChar': (_t('Implants'), lambda i: i.isImplant, cmd.GuiImportImplantsCommand), 'boosterItemMisc': (_t('Boosters'), lambda i: i.isBooster, cmd.GuiImportBoostersCommand) } def display(self, callingWindow, srcContext): if srcContext not in self.viewSpecMap: return False fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit()) if fit is None: return False if not fromClipboard(): return False self.srcContext = srcContext return True def getText(self, callingWindow, itmContext): return _t('Paste {}').format(self.viewSpecMap[self.srcContext][0]) def activate(self, callingWindow, fullContext, i): text = fromClipboard() lines = list(lineIter(text)) mutaData = importGetMutationData(lines) text = '\n'.join(lines) items = parseAdditions(text, mutaData=mutaData) filterFunc = self.viewSpecMap[self.srcContext][1] items = [(i.ID, a, m) for i, a, m in items if filterFunc(i)] if not items: return command = self.viewSpecMap[self.srcContext][2] self.mainFrame.command.Submit(command(self.mainFrame.getActiveFit(), items)) AdditionsImport.register() ================================================ FILE: gui/builtinContextMenus/ammoToDmgPattern.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class AmmoToDmgPattern(ContextMenuSingle): visibilitySetting = 'ammoPattern' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False for attr in ("emDamage", "thermalDamage", "explosiveDamage", "kineticDamage"): if mainItem.getAttribute(attr) is not None: return True return False def getText(self, callingWindow, itmContext, mainItem): return _t("Set {} as Damage Pattern").format(itmContext if itmContext is not None else _t("Item")) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() Fit.getInstance().setAsPattern(fitID, mainItem) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def getBitmap(self, callingWindow, context, mainItem): return None AmmoToDmgPattern.register() ================================================ FILE: gui/builtinContextMenus/boosterSideEffects.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui import fitCommands as cmd from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class BoosterSideEffects(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if self.mainFrame.getActiveFit() is None or srcContext not in "boosterItem": return False if mainItem is None: return False self.booster = mainItem for effect in self.booster.sideEffects: if effect.effect.isImplemented: return True return False def getText(self, callingWindow, itmContext, mainItem): return _t("Side Effects") def addEffect(self, menu, ability): label = ability.name id = ContextMenuSingle.nextID() self.effectIds[id] = ability menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.effectIds = {} sub = wx.Menu() for effect in self.booster.sideEffects: if not effect.effect.isImplemented: continue menuItem = self.addEffect(rootMenu if msw else sub, effect) sub.Append(menuItem) menuItem.Check(effect.active) return sub def handleMode(self, event): effect = self.effectIds[event.Id] booster = self.booster if effect is False or effect not in booster.sideEffects: event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if booster in fit.boosters: index = fit.boosters.index(booster) self.mainFrame.command.Submit(cmd.GuiToggleBoosterSideEffectStateCommand( fitID=fitID, position=index, effectID=effect.effectID)) BoosterSideEffects.register() ================================================ FILE: gui/builtinContextMenus/cargoAdd.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class AddToCargo(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc"): return False if mainItem is None: return False sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() fit = sFit.getFit(fitID) if not fit or (fit.isStructure and mainItem.category.ID != 8): return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("Add {} to Cargo").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() typeID = int(mainItem.ID) command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=typeID, amount=1) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select("Cargo", focus=False) AddToCargo.register() ================================================ FILE: gui/builtinContextMenus/cargoAddAmmo.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle _t = wx.GetTranslation class AddToCargoAmmo(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False if mainItem.category.ID != 8: return False return True def getText(self, callingWindow, itmContext, mainItem): if mainItem.marketGroup and mainItem.marketGroup.name == "Scan Probes": return _t("Add {0} to Cargo (x8)").format(itmContext) return _t("Add {0} to Cargo (x1000)").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() typeID = int(mainItem.ID) if mainItem.marketGroup and mainItem.marketGroup.name == "Scan Probes": command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=typeID, amount=8) else: command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=typeID, amount=1000) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select("Cargo", focus=False) AddToCargoAmmo.register() ================================================ FILE: gui/builtinContextMenus/cargoFill.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit from eos.saveddata.cargo import Cargo _t = wx.GetTranslation class FillCargoWithItem(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc", "cargoItem"): return False if mainItem is None: return False if self.mainFrame.getActiveFit() is None: return False if srcContext in ("marketItemGroup", "marketItemMisc"): if not (mainItem.isCharge or mainItem.isCommodity): return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("Fill Cargo With {0}").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if isinstance(mainItem, Cargo): itemVolume = mainItem.item.attributes['volume'].value itemID = mainItem.itemID else: itemVolume = mainItem.attributes['volume'].value itemID = int(mainItem.ID) if itemVolume is None or itemVolume <= 0: return # Calculate how many items can fit in the cargo cargoCapacity = fit.ship.getModifiedItemAttr("capacity") currentCargoVolume = fit.cargoBayUsed availableVolume = cargoCapacity - currentCargoVolume if availableVolume <= 0: return # Calculate maximum amount that can fit maxAmount = int(availableVolume / itemVolume) if maxAmount <= 0: return # Add the items to cargo command = cmd.GuiAddCargoCommand(fitID=fitID, itemID=itemID, amount=maxAmount) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select("Cargo", focus=False) FillCargoWithItem.register() ================================================ FILE: gui/builtinContextMenus/commandFitAdd.py ================================================ # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit from service.market import Market _t = wx.GetTranslation class AddCommandFit(ContextMenuUnconditional): # Get list of items that define a command fit sMkt = Market.getInstance() grp = sMkt.getGroup(1770) # Command burst group commandTypeIDs = {item.ID for item in grp.items} commandFits = [] menu = None @classmethod def fitChanged(cls, evt): # This fires on a FitChanged event and updates the command fits whenever a command burst module is added or # removed from a fit. evt.typeID can be either a int or a set (in the case of multiple module deletions) if evt is None or (getattr(evt, 'action', None) in ("modadd", "moddel") and getattr(evt, 'typeID', None)): if evt is not None: ids = getattr(evt, 'typeID') if not isinstance(ids, set): ids = {ids} if evt is None or not ids.isdisjoint(cls.commandTypeIDs): # we are adding or removing an item that defines a command fit. Need to refresh fit list cls.populateFits(evt) evt.Skip() @classmethod def populateFits(cls, evt): sFit = Fit.getInstance() cls.commandFits = sFit.getFitsWithModules(cls.commandTypeIDs) def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or len(self.__class__.commandFits) == 0 or srcContext != "commandView": return False return True def getText(self, callingWindow, itmContext): return _t("Command Fits") def addFit(self, menu, fit, includeShip=False): label = fit.name if not includeShip else "({}) {}".format(fit.ship.item.name, fit.name) if not label: label = ' ' id = ContextMenuUnconditional.nextID() self.fitMenuItemIds[id] = fit menuItem = wx.MenuItem(menu, id, label) menu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.fitMenuItemIds = {} sub = wx.Menu() if len(self.__class__.commandFits) < 15: for fit in sorted(self.__class__.commandFits, key=lambda x: x.name): menuItem = self.addFit(rootMenu if msw else sub, fit, True) sub.Append(menuItem) else: typeDict = {} for fit in self.__class__.commandFits: shipName = fit.ship.item.name if shipName not in typeDict: typeDict[shipName] = [] typeDict[shipName].append(fit) for ship in sorted(typeDict.keys()): shipItem = wx.MenuItem(sub, ContextMenuUnconditional.nextID(), ship) grandSub = wx.Menu() shipItem.SetSubMenu(grandSub) for fit in sorted(typeDict[ship], key=lambda x: x.name): fitItem = self.addFit(rootMenu if msw else grandSub, fit, False) grandSub.Append(fitItem) sub.Append(shipItem) return sub def handleSelection(self, event): fit = self.fitMenuItemIds[event.Id] if fit is False or fit not in self.__class__.commandFits: event.Skip() return fitID = self.mainFrame.getActiveFit() self.mainFrame.command.Submit(cmd.GuiAddCommandFitsCommand(fitID=fitID, commandFitIDs=[fit.ID])) AddCommandFit.populateFits(None) AddCommandFit.register() ================================================ FILE: gui/builtinContextMenus/damagePatternChange.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.builtinContextMenus.shared.patterns import DamagePatternMixin from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class ChangeDamagePattern(ContextMenuUnconditional, DamagePatternMixin): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): return srcContext == "resistancesViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None def getText(self, callingWindow, itmContext): sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() self.fit = sFit.getFit(fitID) self.patternEventMap = {} self.patterns = self._getPatterns() self.items = self._getItems(self.patterns) return list(self.items[0].keys()) + list(self.items[1].keys()) def _addPattern(self, parentMenu, pattern, name): id = ContextMenuUnconditional.nextID() self.patternEventMap[id] = pattern menuItem = wx.MenuItem(parentMenu, id, name, kind=wx.ITEM_CHECK) parentMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, menuItem) # determine active pattern sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() fit = sFit.getFit(fitID) checked = fit.damagePattern is pattern if fit else False return menuItem, checked def _addCategory(self, parentMenu, name): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, menuItem) return menuItem def isChecked(self, i): try: patternName = list(self.items[0].keys())[i] except IndexError: return super().isChecked(i) pattern = self.items[0][patternName] if self.fit and pattern is self.fit.damagePattern: return True return False def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): # Pattern as menu item if i < len(self.items[0]): id = pitem.GetId() self.patternEventMap[id] = list(self.items[0].values())[i] rootMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, pitem) return False # Category as menu item - expands further msw = "wxMSW" in wx.PlatformInfo def makeMenu(container, parentMenu): menu = wx.Menu() for name, subcontainer in container[1].items(): menuItem = self._addCategory(rootMenu if msw else parentMenu, name) subMenu = makeMenu(subcontainer, menu) menuItem.SetSubMenu(subMenu) menu.Append(menuItem) for name, pattern in container[0].items(): menuItem, checked = self._addPattern(rootMenu if msw else parentMenu, pattern, name) menu.Append(menuItem) menuItem.Check(checked) menu.Bind(wx.EVT_MENU, self.handlePatternSwitch) return menu container = list(self.items[1].values())[i - len(self.items[0])] subMenu = makeMenu(container, rootMenu) return subMenu def handlePatternSwitch(self, event): pattern = self.patternEventMap.get(event.Id, False) if pattern is False: event.Skip() return sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() sFit.setDamagePattern(fitID, pattern) setattr(self.mainFrame, "_activeDmgPattern", pattern) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) ChangeDamagePattern.register() ================================================ FILE: gui/builtinContextMenus/droneAddStack.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.fitCommands.helpers import droneStackLimit from service.fit import Fit _t = wx.GetTranslation class DroneAddStack(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ('marketItemGroup', 'marketItemMisc'): return False if self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False if mainItem.category.name != 'Drone': return False fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) amount = droneStackLimit(fit, mainItem) if amount < 1: return False self.amount = amount return True def getText(self, callingWindow, itmContext, mainItem): return _t('Add {} to Drone Bay{}').format( itmContext, '' if self.amount == 1 else ' (x{})'.format(self.amount)) def activate(self, callingWindow, fullContext, mainItem, i): command = cmd.GuiAddLocalDroneCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(mainItem.ID), amount=self.amount) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select('Drones', focus=False) DroneAddStack.register() ================================================ FILE: gui/builtinContextMenus/droneSplitStack.py ================================================ import re # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class DroneSplitStack(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext != "droneItem": return False if mainItem is None: return False return mainItem.amount > 1 def getText(self, callingWindow, itmContext, mainItem): return _t("Split {} Stack").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, i): with DroneStackSplit(self.mainFrame, mainItem.amount) as dlg: if dlg.ShowModal() == wx.ID_OK: if dlg.input.GetLineText(0).strip() == '': return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) cleanInput = re.sub(r'[^0-9.]', '', dlg.input.GetLineText(0).strip()) if mainItem in fit.drones: position = fit.drones.index(mainItem) self.mainFrame.command.Submit(cmd.GuiSplitLocalDroneStackCommand( fitID=fitID, position=position, amount=int(cleanInput))) DroneSplitStack.register() class DroneStackSplit(wx.Dialog): def __init__(self, parent, value): super().__init__(parent, title="Split Drone Stack", style=wx.DEFAULT_DIALOG_STYLE) self.SetMinSize((346, 156)) bSizer1 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, "New Amount:") bSizer2.Add(text, 0) bSizer1.Add(bSizer2, 0, wx.ALL, 10) self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) self.input.SetValue(str(value)) bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 15) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.Bind(wx.EVT_CHAR, self.onChar) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) self.Fit() self.CenterOnParent() self.input.SetFocus() self.input.SelectAll() def processEnter(self, evt): self.EndModal(wx.ID_OK) # checks to make sure it's valid number @staticmethod def onChar(event): key = event.GetKeyCode() acceptable_characters = "1234567890" acceptable_keycode = [3, 22, 13, 8, 127] # modifiers like delete, copy, paste if key in acceptable_keycode or key >= 255 or (key < 255 and chr(key) in acceptable_characters): event.Skip() return else: return False ================================================ FILE: gui/builtinContextMenus/envEffectAdd.py ================================================ import re from collections import OrderedDict from itertools import chain # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.market import Market _t = wx.GetTranslation class Group: def __init__(self): self.groups = OrderedDict() self.items = [] def sort(self): self.groups = OrderedDict((k, self.groups[k]) for k in sorted(self.groups)) for group in self.groups.values(): group.sort() self.items.sort(key=lambda e: e.shortName) class Entry: def __init__(self, itemID, name, shortName): self.itemID = itemID self.name = name self.shortName = shortName class AddEnvironmentEffect(ContextMenuUnconditional): # CCP doesn't currently provide a mapping between the general Environment, and the specific environment effect # (which can be random when going into Abyssal space). This is how we currently define it: # environment type: specific type name prefix abyssal_mapping = { 'caustic_toxin_weather': 47862, # Exotic Particle Storm 'darkness_weather': 47863, # Dark Matter Field 'infernal_weather': 47864, # Plasma Firestorm 'electric_storm_weather': 47865, # Electrical Storm 'xenon_gas_weather': 47866, # Gamma-Ray Afterglow } def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): return srcContext == "projected" def getText(self, callingWindow, itmContext): return _t("Add Environmental Effect") def _addGroup(self, parentMenu, name): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem def _addEffect(self, parentMenu, typeID, name): id = ContextMenuUnconditional.nextID() self.idmap[id] = typeID menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): self.idmap = {} data = self.getData() msw = "wxMSW" in wx.PlatformInfo def makeMenu(data, parentMenu): menu = wx.Menu() for group_name in data.groups: menuItem = self._addGroup(rootMenu if msw else parentMenu, group_name) subMenu = makeMenu(data.groups[group_name], menu) menuItem.SetSubMenu(subMenu) menu.Append(menuItem) for entry in data.items: menuItem = self._addEffect(rootMenu if msw else parentMenu, entry.itemID, entry.shortName) menu.Append(menuItem) menu.Bind(wx.EVT_MENU, self.handleSelection) return menu sub = makeMenu(data, rootMenu) return sub def handleSelection(self, event): # Skip events ids that aren't mapped swObj = self.idmap.get(event.Id, False) if not swObj: event.Skip() return fitID = self.mainFrame.getActiveFit() self.mainFrame.command.Submit(cmd.GuiAddProjectedModuleCommand(fitID, swObj)) def getData(self): data = Group() data.groups[_t('Metaliminal Storm')] = self.getEffectBeacons( _t('ContextMenu|ProjectedEffectManipulation|Electrical'), _t('ContextMenu|ProjectedEffectManipulation|Exotic'), _t('ContextMenu|ProjectedEffectManipulation|Gamma'), _t('ContextMenu|ProjectedEffectManipulation|Plasma'), extra_garbage=( _t('ContextMenu|ProjectedEffectManipulation|Metaliminal'), _t('ContextMenu|ProjectedEffectManipulation|Storm'), _t('ContextMenu|ProjectedEffectManipulation|Matter'), _t('ContextMenu|ProjectedEffectManipulation|Ray'), _t('ContextMenu|ProjectedEffectManipulation|Firestorm'))) data.groups[_t('Wormhole')] = self.getEffectBeacons( _t('ContextMenu|ProjectedEffectManipulation|Black Hole'), _t('ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable'), _t('ContextMenu|ProjectedEffectManipulation|Magnetar'), _t('ContextMenu|ProjectedEffectManipulation|Pulsar'), _t('ContextMenu|ProjectedEffectManipulation|Red Giant'), _t('ContextMenu|ProjectedEffectManipulation|Wolf Rayet')) data.groups[_t('Abyssal Weather')] = self.getAbyssalWeather() data.groups[_t('Sansha Incursion')] = self.getEffectBeacons( _t('ContextMenu|ProjectedEffectManipulation|Sansha Incursion')) data.groups[_t('Drifter Incursion')] = self.getDrifterIncursion() data.groups[_t('Triglavian Invasion')] = self.getInvasionBeacons() data.groups[_t('Pirate Insurgency')] = self.getEffectBeacons( _t('ContextMenu|ProjectedEffectManipulation|Insurgency'), extra_garbage=(_t('ContextMenu|ProjectedEffectManipulation|Beacon'),)) data.groups[_t('IHub Upgrades')] = self.getIHubEffects() return data def getEffectBeacons(self, *groups, extra_garbage=()): """ Get dictionary with system-wide effects """ compacted = len(groups) <= 1 sMkt = Market.getInstance() # Container for system-wide effects data = Group() # Stuff we don't want to see in names garbages = [ _t('ContextMenu|ProjectedEffectManipulation|System Effects'), _t('ContextMenu|ProjectedEffectManipulation|Effects')] garbages.extend(extra_garbage) # Get group with all the system-wide beacons grp = sMkt.getGroup("Effect Beacon") # Cycle through them for beacon in sMkt.getItemsByGroup(grp): # Check if it belongs to any valid group for group in groups: # Check beginning of the name only if re.search(group, beacon.name): # Get full beacon name beaconname = beacon.name for garbage in garbages: beaconname = re.sub(garbage, "", beaconname) beaconname = re.sub(" {2,}", " ", beaconname).strip() # Get short name shortname = re.sub(group, "", beacon.name) for garbage in garbages: shortname = re.sub(garbage, "", shortname) shortname = re.sub(" {2,}", " ", shortname).strip() # Get group name groupname = group for garbage in garbages: groupname = re.sub(garbage, "", groupname) groupname = re.sub(" {2,}", " ", groupname).strip() # Add stuff to dictionary if compacted: container = data.items else: container = data.groups.setdefault(groupname, Group()).items container.append(Entry(beacon.ID, beaconname, shortname)) # Break loop on 1st result break return data def getAbyssalWeather(self): sMkt = Market.getInstance() data = Group() environments = {x.ID: x for x in sMkt.getGroup("Abyssal Environment").items} items = chain( sMkt.getGroup("MassiveEnvironments").items, sMkt.getGroup("Non-Interactable Object").items) for beacon in items: if not beacon.isType('projected'): continue type = self.__class__.abyssal_mapping.get(beacon.name[0:-2], None) type = environments.get(type, None) if type is None: continue subdata = data.groups.setdefault(type.name, Group()) display_name = "{} {}".format(type.name, beacon.name[-1:]) subdata.items.append(Entry(beacon.ID, display_name, display_name)) data.sort() # Localized abyssal hazards items = sMkt.getGroup("Abyssal Hazards").items if items: subdata = data.groups.setdefault(_t('Localized'), Group()) for beacon in sMkt.getGroup("Abyssal Hazards").items: if not beacon.isType('projected'): continue groups = (_t('Bioluminescence'), _t('Tachyon'), _t('Filament')) for group in groups: if re.search(group, beacon.customName): key = group break else: continue subsubdata = subdata.groups.setdefault(key, Group()) subsubdata.items.append(Entry(beacon.ID, beacon.customName, beacon.customName)) subdata.sort() return data def getDrifterIncursion(self): data = self.getEffectBeacons(_t('ContextMenu|ProjectedEffectManipulation|Drifter Incursion')) # Drifter Crisis item = Market.getInstance().getItem(87294) data.items.append(Entry(item.ID, item.name, item.name)) return data def getInvasionBeacons(self): data = Group() # Trig Minor Victory item = Market.getInstance().getItem(87177) data.items.append(Entry(item.ID, item.name, item.name)) # Trig Final Liminality item = Market.getInstance().getItem(87164) data.items.append(Entry(item.ID, item.name, item.name)) # Turnur weather item = Market.getInstance().getItem(74002) data.items.append(Entry(item.ID, item.name, item.name)) return data def getIHubEffects(self): data = Group() # Electric item = Market.getInstance().getItem(87950) data.items.append(Entry(item.ID, item.name, _t('Electric'))) # Plasma item = Market.getInstance().getItem(87949) data.items.append(Entry(item.ID, item.name, _t('Plasma'))) # Exotic item = Market.getInstance().getItem(87951) data.items.append(Entry(item.ID, item.name, _t('Exotic'))) # Gamma item = Market.getInstance().getItem(87815) data.items.append(Entry(item.ID, item.name, _t('Gamma'))) return data AddEnvironmentEffect.register() ================================================ FILE: gui/builtinContextMenus/factorReload.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class FactorReload(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): return srcContext == "firepowerViewFull" @property def enabled(self): return self.mainFrame.getActiveFit() is not None def getText(self, callingWindow, itmContext): return _t("Factor in Reload Time") def activate(self, callingWindow, fullContext, i): fitIDs = Fit.getInstance().toggleFactorReload() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=tuple(fitIDs))) def isChecked(self, i): sFit = Fit.getInstance() return sFit.serviceFittingOptions["useGlobalForceReload"] FactorReload.register() ================================================ FILE: gui/builtinContextMenus/fighterAbilities.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui import fitCommands as cmd from gui.contextMenu import ContextMenuCombined from gui.fitCommands.helpers import getSimilarFighters from service.fit import Fit _t = wx.GetTranslation class FighterAbilities(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.isProjected = None def display(self, callingWindow, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ("fighterItem", "projectedFighter"): return False if mainItem is None: return False self.fighter = mainItem self.selection = selection self.isProjected = True if srcContext == "projectedFighter" else False return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t("Abilities") def addAbility(self, menu, ability): label = ability.name id = ContextMenuCombined.nextID() self.abilityIds[id] = ability menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.abilityIds = {} sub = wx.Menu() for ability in self.fighter.abilities: if not ability.effect.isImplemented: continue menuItem = self.addAbility(rootMenu if msw else sub, ability) sub.Append(menuItem) menuItem.Check(ability.active) return sub def handleMode(self, event): ability = self.abilityIds[event.Id] if ability is False or ability not in self.fighter.abilities: event.Skip() return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if self.isProjected: container = fit.projectedFighters command = cmd.GuiToggleProjectedFighterAbilityStateCommand else: container = fit.fighters command = cmd.GuiToggleLocalFighterAbilityStateCommand if self.fighter in container: mainPosition = container.index(self.fighter) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fighters = getSimilarFighters(container, self.fighter) else: fighters = self.selection positions = [] for fighter in fighters: if fighter in container: positions.append(container.index(fighter)) self.mainFrame.command.Submit(command( fitID=fitID, mainPosition=mainPosition, positions=positions, effectID=ability.effectID)) FighterAbilities.register() ================================================ FILE: gui/builtinContextMenus/fitAddBrowse.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional _t = wx.GetTranslation class AddBrowsedFits(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext not in ('projected', 'commandView', 'graphFitList', 'graphTgtList'): return False return True def getText(self, callingWindow, itmContext): return _t('Add Fit...') def activate(self, callingWindow, fullContext, i): from gui.fitBrowserLite import FitBrowserLiteDialog titles = { 'projected': 'Add Projected Fits', 'commandView': 'Add Command Fits', 'graphFitList': 'Add Fits to Graph', 'graphTgtList': 'Add Targets to Graph' } excludedFitIDs = callingWindow.getExistingFitIDs() with FitBrowserLiteDialog(self.mainFrame, title=titles[fullContext[0]], excludedFitIDs=excludedFitIDs) as dlg: if dlg.ShowModal() == wx.ID_OK: fitIDs = dlg.getFitIDsToAdd() callingWindow.addFitsByIDs(fitIDs) AddBrowsedFits.register() ================================================ FILE: gui/builtinContextMenus/fitAddCurrentlyOpen.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.builtinViews.emptyView import BlankPage from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class AddCurrentlyOpenFit(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext not in ('projected', 'commandView', 'graphFitList', 'graphTgtList'): return False if srcContext in ('projected', 'commandView') and self.mainFrame.getActiveFit() is None: return False return True def getText(self, callingWindow, itmContext): return _t('Add Currently Open Fit') def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): self.fitLookup = {} self.context = context self.callingWindow = callingWindow sFit = Fit.getInstance() m = wx.Menu() # If on Windows we need to bind out events into the root menu, on other # platforms they need to go to our sub menu if "wxMSW" in wx.PlatformInfo: bindmenu = rootMenu else: bindmenu = m for page in self.mainFrame.fitMultiSwitch._pages: if isinstance(page, BlankPage): continue fit = sFit.getFit(page.activeFitID, basic=True) if fit is None: continue id = ContextMenuUnconditional.nextID() mitem = wx.MenuItem(rootMenu, id, "{}: {}".format(fit.ship.item.name, fit.name)) bindmenu.Bind(wx.EVT_MENU, self.handleSelection, mitem) self.fitLookup[id] = fit m.Append(mitem) return m def handleSelection(self, event): fit = self.fitLookup[event.Id] self.callingWindow.addFit(fit) AddCurrentlyOpenFit.register() ================================================ FILE: gui/builtinContextMenus/fitOpenNewTab.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from graphs.wrapper import BaseWrapper from gui.builtinShipBrowser.events import FitSelected from gui.contextMenu import ContextMenuSingle _t = wx.GetTranslation class OpenFitInNewTab(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("projectedFit", "commandFit", "graphFitListMisc", "graphTgtListMisc"): return False if mainItem is None: return False if isinstance(mainItem, BaseWrapper): if not mainItem.isFit: return False mainItem = mainItem.item currentFitID = self.mainFrame.getActiveFit() selectedFitID = mainItem.ID if currentFitID == selectedFitID: return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("Open Fit in New Tab") def activate(self, callingWindow, fullContext, mainItem, i): if isinstance(mainItem, BaseWrapper): mainItem = mainItem.item wx.PostEvent(self.mainFrame, FitSelected(fitID=mainItem.ID, startup=2)) OpenFitInNewTab.register() ================================================ FILE: gui/builtinContextMenus/fitPilotSecurity.py ================================================ import re import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class FitPilotSecurityMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext != "fittingShip": return False fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if fit.ship.name not in ('Pacifier', 'Enforcer', 'Marshal', 'Sidewinder', 'Cobra', 'Python'): return return True def getText(self, callingWindow, itmContext): return _t("Pilot Security Status") def addOption(self, menu, optionLabel, optionValue): id = ContextMenuUnconditional.nextID() self.optionIds[id] = optionValue menuItem = wx.MenuItem(menu, id, optionLabel, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def addOptionCustom(self, menu, optionLabel): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(menu, id, optionLabel, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleModeCustom, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) msw = True if "wxMSW" in wx.PlatformInfo else False self.optionIds = {} sub = wx.Menu() presets = (-10, -8, -6, -4, -2, 0, 1, 2, 3, 4, 5) # Inherit char_sec_status = round(fit.character.secStatus, 2) menuItem = self.addOption(rootMenu if msw else sub, _t('Character') + f' ({char_sec_status})', None) sub.Append(menuItem) menuItem.Check(fit.pilotSecurity is None) # Custom label = _t('Custom') is_checked = False if fit.pilotSecurity is not None and fit.pilotSecurity not in presets: sec_status = round(fit.getPilotSecurity(), 2) label += f' ({sec_status})' is_checked = True menuItem = self.addOptionCustom(rootMenu if msw else sub, label) sub.Append(menuItem) menuItem.Check(is_checked) sub.AppendSeparator() # Predefined options for sec_status in presets: menuItem = self.addOption(rootMenu if msw else sub, str(sec_status), sec_status) sub.Append(menuItem) menuItem.Check(fit.pilotSecurity == sec_status) return sub def handleMode(self, event): optionValue = self.optionIds[event.Id] self.mainFrame.command.Submit(cmd.GuiChangeFitPilotSecurityCommand( fitID=self.mainFrame.getActiveFit(), secStatus=optionValue)) def handleModeCustom(self, event): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) sec_status = fit.getPilotSecurity() with SecStatusChanger(self.mainFrame, value=sec_status) as dlg: if dlg.ShowModal() == wx.ID_OK: cleanInput = re.sub(r'[^0-9.\-+]', '', dlg.input.GetLineText(0).strip()) if cleanInput: try: cleanInputFloat = float(cleanInput) except ValueError: return else: return self.mainFrame.command.Submit(cmd.GuiChangeFitPilotSecurityCommand( fitID=fitID, secStatus=max(-10.0, min(5.0, cleanInputFloat)))) FitPilotSecurityMenu.register() class SecStatusChanger(wx.Dialog): def __init__(self, parent, value): super().__init__(parent, title=_t('Change Security Status'), style=wx.DEFAULT_DIALOG_STYLE) self.SetMinSize((346, 156)) bSizer1 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, _t('Security Status (min -10.0, max 5.0):')) bSizer2.Add(text, 0) bSizer1.Add(bSizer2, 0, wx.ALL, 10) self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) if value is None: value = '0.0' else: if value == int(value): value = int(value) value = str(value) self.input.SetValue(value) bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 15) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.Bind(wx.EVT_CHAR, self.onChar) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) self.Fit() self.CenterOnParent() self.input.SetFocus() self.input.SelectAll() def processEnter(self, evt): self.EndModal(wx.ID_OK) # checks to make sure it's valid number @staticmethod def onChar(event): key = event.GetKeyCode() acceptable_characters = '1234567890.-+' acceptable_keycode = [3, 22, 13, 8, 127] # modifiers like delete, copy, paste if key in acceptable_keycode or key >= 255 or (key < 255 and chr(key) in acceptable_characters): event.Skip() return else: return False ================================================ FILE: gui/builtinContextMenus/fitSystemSecurity.py ================================================ from collections import OrderedDict import wx import gui.fitCommands as cmd import gui.mainFrame from eos.const import FitSystemSecurity from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class FitSystemSecurityMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.optionMap = OrderedDict(( (_t('High Security'), FitSystemSecurity.HISEC), (_t('Low Security'), FitSystemSecurity.LOWSEC), (_t('Null Security'), FitSystemSecurity.NULLSEC), (_t('W-Space'), FitSystemSecurity.WSPACE))) def display(self, callingWindow, srcContext): if srcContext != "fittingShip": return False fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if not fit.isStructure: return return True def getText(self, callingWindow, itmContext): return _t("Citadel System Security") def addOption(self, menu, optionLabel): id = ContextMenuUnconditional.nextID() self.optionIds[id] = optionLabel menuItem = wx.MenuItem(menu, id, optionLabel, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) msw = True if "wxMSW" in wx.PlatformInfo else False self.optionIds = {} sub = wx.Menu() for optionLabel, optionValue in self.optionMap.items(): menuItem = self.addOption(rootMenu if msw else sub, optionLabel) sub.Append(menuItem) menuItem.Check(fit.getSystemSecurity() == optionValue) return sub def handleMode(self, event): optionLabel = self.optionIds[event.Id] optionValue = self.optionMap[optionLabel] self.mainFrame.command.Submit(cmd.GuiChangeFitSystemSecurityCommand( fitID=self.mainFrame.getActiveFit(), secStatus=optionValue)) FitSystemSecurityMenu.register() ================================================ FILE: gui/builtinContextMenus/graphDmgApplyProjected.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.settings import GraphSettings _t = wx.GetTranslation class GraphDmgApplyProjectedMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' def getText(self, callingWindow, itmContext): return _t('Apply Projected Items') def activate(self, callingWindow, fullContext, i): self.settings.set('applyProjected', not self.settings.get('applyProjected')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) def isChecked(self, i): return self.settings.get('applyProjected') GraphDmgApplyProjectedMenu.register() ================================================ FILE: gui/builtinContextMenus/graphDmgDroneMode.py ================================================ from collections import OrderedDict import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.const import GraphDpsDroneMode from service.settings import GraphSettings # noinspection PyPackageRequirements _t = wx.GetTranslation class GraphDmgDroneModeMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' def getText(self, callingWindow, itmContext): return _t('Drone Mode') def handleModeSwitch(self, event): option = self.idOptionMap[event.Id] if option == self.settings.get('mobileDroneMode'): return self.settings.set('mobileDroneMode', option) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): m = wx.Menu() if "wxMSW" in wx.PlatformInfo: bindmenu = rootMenu else: bindmenu = m self.idOptionMap = {} optionMap = OrderedDict([ (GraphDpsDroneMode.auto, _t('Auto')), (GraphDpsDroneMode.followTarget, _t('Stick to Target')), (GraphDpsDroneMode.followAttacker, _t('Stick to Attacker'))]) for option, label in optionMap.items(): menuId = ContextMenuUnconditional.nextID() item = wx.MenuItem(m, menuId, label, kind=wx.ITEM_CHECK) bindmenu.Bind(wx.EVT_MENU, self.handleModeSwitch, item) m.Append(item) item.Check(option == self.settings.get('mobileDroneMode')) self.idOptionMap[menuId] = option return m GraphDmgDroneModeMenu.register() ================================================ FILE: gui/builtinContextMenus/graphDmgIgnoreResists.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.settings import GraphSettings _t = wx.GetTranslation class GraphDmgIgnoreResistsMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() def display(self, callingWindow, srcContext): return srcContext == 'dmgStatsGraph' def getText(self, callingWindow, itmContext): return _t('Ignore Target Resists') def activate(self, callingWindow, fullContext, i): self.settings.set('ignoreResists', not self.settings.get('ignoreResists')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged(refreshAxeLabels=True, refreshColumns=True)) def isChecked(self, i): return self.settings.get('ignoreResists') GraphDmgIgnoreResistsMenu.register() ================================================ FILE: gui/builtinContextMenus/graphDroneControlRange.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.settings import GraphSettings _t = wx.GetTranslation class GraphIgnoreDcrMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() def display(self, callingWindow, srcContext): return srcContext in ('dmgStatsGraph', 'remoteRepsGraph', 'ewarStatsGraph') def getText(self, callingWindow, itmContext): return _t('Ignore Drone Control Range') def activate(self, callingWindow, fullContext, i): self.settings.set('ignoreDCR', not self.settings.get('ignoreDCR')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) def isChecked(self, i): return self.settings.get('ignoreDCR') GraphIgnoreDcrMenu.register() ================================================ FILE: gui/builtinContextMenus/graphFitAmmoPicker.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.auxWindow import AuxiliaryDialog from gui.contextMenu import ContextMenuSingle from service.ammo import Ammo from service.market import Market _t = wx.GetTranslation class GraphFitAmmoPicker(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext != 'graphFitList': return False if mainItem is None or not mainItem.isFit: return False if callingWindow.graphFrame.getView().internalName != 'dmgStatsGraph': return False return True def getText(self, callingWindow, itmContext, mainItem): return _t('Plot with Different Ammo...') def activate(self, callingWindow, fullContext, mainItem, i): AmmoPickerFrame.openOne(callingWindow, mainItem.item, forceReopen=True) # GraphFitAmmoPicker.register() class AmmoPickerFrame(AuxiliaryDialog): def __init__(self, parent, fit): super().__init__(parent, title='Choose Different Ammo', style=wx.DEFAULT_DIALOG_STYLE, resizeable=True) padding = 5 mainSizer = wx.BoxSizer(wx.VERTICAL) contents = AmmoPickerContents(self, fit) mainSizer.Add(contents, 1, wx.EXPAND | wx.ALL, padding) buttonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL) if buttonSizer: mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, padding) self.SetSizer(mainSizer) self.Layout() contW, contH = contents.GetVirtualSize() bestW = contW + padding * 2 bestH = contH + padding * 2 if buttonSizer: # Yeah right... whatever buttW, buttH = buttonSizer.GetSize() bestW = max(bestW, buttW + padding * 2) bestH += buttH + padding * 2 bestW = min(1000, bestW) bestH = min(700, bestH) self.SetSize(bestW, bestH) self.SetMinSize(wx.Size(int(bestW * 0.7), int(bestH * 0.7))) self.CenterOnParent() self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() class AmmoPickerContents(wx.ScrolledCanvas): indent = 15 def __init__(self, parent, fit): wx.ScrolledCanvas.__init__(self, parent) self.SetScrollRate(0, 15) mods = self.getMods(fit) drones = self.getDrones(fit) fighters = self.getFighters(fit) self.rbLabelMap = {} self.rbCheckboxMap = {} mainSizer = wx.BoxSizer(wx.VERTICAL) moduleSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(moduleSizer, 0, wx.ALL, 0) self.droneSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(self.droneSizer, 0, wx.ALL, 0) fighterSizer = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(fighterSizer, 0, wx.ALL, 0) firstRadio = True for modInfo, modAmmo in mods: text = '\n'.join('{}x {}'.format(amount, item.name) for item, amount in modInfo) modRb = self.addRadioButton(moduleSizer, text, firstRadio) firstRadio = False # Get actual module, as ammo getters need it mod = next((m for m in fit.modules if m.itemID == next(iter(modInfo))[0].ID), None) _, ammoTree = Ammo.getInstance().getModuleStructuredAmmo(mod) if len(ammoTree) == 1: for ammoCatName, ammos in ammoTree.items(): for ammo in ammos: self.addCheckbox(moduleSizer, ammo.name, modRb, indentLvl=1) else: for ammoCatName, ammos in ammoTree.items(): if len(ammos) == 1: ammo = next(iter(ammos)) self.addCheckbox(moduleSizer, ammo.name, modRb, indentLvl=1) else: self.addLabel(moduleSizer, '{}:'.format(ammoCatName), modRb, indentLvl=1) for ammo in ammos: self.addCheckbox(moduleSizer, ammo.name, modRb, indentLvl=2) if drones: droneRb = self.addRadioButton(self.droneSizer, 'Drones', firstRadio) from gui.builtinAdditionPanes.droneView import DroneView for drone in sorted(drones, key=DroneView.droneKey): self.addCheckbox(self.droneSizer, '{}x {}'.format(drone.amount, drone.item.name), droneRb, indentLvl=1) addBtn = wx.Button(self, wx.ID_ANY, '+', style=wx.BU_EXACTFIT) addBtn.Bind(wx.EVT_BUTTON, self.OnDroneGroupAdd) mainSizer.Add(addBtn, 0, wx.LEFT, self.indent) if fighters: fighterRb = self.addRadioButton(fighterSizer, 'Fighters', firstRadio) from gui.builtinAdditionPanes.fighterView import FighterDisplay for fighter in sorted(fighters, key=FighterDisplay.fighterKey): self.addCheckbox(fighterSizer, '{}x {}'.format(fighter.amount, fighter.item.name), fighterRb, indentLvl=1) self.SetSizer(mainSizer) self.refreshStatus() def addRadioButton(self, sizer, text, firstRadio=False): if firstRadio: rb = wx.RadioButton(self, wx.ID_ANY, text, style=wx.RB_GROUP) rb.SetValue(True) else: rb = wx.RadioButton(self, wx.ID_ANY, text) rb.SetValue(False) rb.Bind(wx.EVT_RADIOBUTTON, self.rbSelected) sizer.Add(rb, 0, wx.EXPAND | wx.ALL, 0) return rb def addCheckbox(self, sizer, text, currentRb, indentLvl=0): cb = wx.CheckBox(self, -1, text) sizer.Add(cb, 0, wx.EXPAND | wx.LEFT, self.indent * indentLvl) if currentRb is not None: self.rbCheckboxMap.setdefault(currentRb, []).append(cb) def addLabel(self, sizer, text, currentRb, indentLvl=0): text = text[0].capitalize() + text[1:] label = wx.StaticText(self, wx.ID_ANY, text) sizer.Add(label, 0, wx.EXPAND | wx.LEFT, self.indent * indentLvl) if currentRb is not None: self.rbLabelMap.setdefault(currentRb, []).append(label) def getMods(self, fit): sMkt = Market.getInstance() sAmmo = Ammo.getInstance() loadableChargesCache = {} # Modules, format: {frozenset(ammo): {item: count}} modsPrelim = {} if fit is not None: for mod in fit.modules: if not mod.canDealDamage(): continue typeID = mod.item.ID if typeID not in loadableChargesCache: loadableChargesCache[typeID] = sAmmo.getModuleFlatAmmo(mod) charges = loadableChargesCache[typeID] # We're not interested in modules which contain no charges if charges: data = modsPrelim.setdefault(frozenset(charges), {}) if mod.item not in data: data[mod.item] = 0 data[mod.item] += 1 # Format: [([(item, count), ...], frozenset(ammo)), ...] modsFinal = [] for charges, itemCounts in modsPrelim.items(): modsFinal.append(( # Sort items within group sorted(itemCounts.items(), key=lambda i: sMkt.itemSort(i[0], reverseMktGrp=True), reverse=True), charges)) # Sort item groups modsFinal.sort(key=lambda i: sMkt.itemSort(i[0][0][0], reverseMktGrp=True), reverse=True) return modsFinal def getDrones(self, fit): drones = [] if fit is not None: for drone in fit.drones: if drone.item is None: continue # Drones are our "ammo", so we want to pick even those which are inactive if drone.canDealDamage(ignoreState=True): drones.append(drone) continue if {'remoteWebifierEntity', 'remoteTargetPaintEntity'}.intersection(drone.item.effects): drones.append(drone) continue return drones def getFighters(self, fit): fighters = [] if fit is not None: for fighter in fit.fighters: if fighter.item is None: continue # Fighters are our "ammo" as well if fighter.canDealDamage(ignoreState=True): fighters.append(fighter) continue for ability in fighter.abilities: if not ability.active: continue if ability.effect.name == 'fighterAbilityStasisWebifier': fighters.append(fighter) break return fighters def OnDroneGroupAdd(self, event): event.Skip() sizer = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText() self.droneSizer.Add(sizer, 0, wx.EXPAND | wx.LEFT, self.indent) def refreshStatus(self): for map in (self.rbLabelMap, self.rbCheckboxMap): for rb, items in map.items(): for item in items: item.Enable(rb.GetValue()) def rbSelected(self, event): event.Skip() self.refreshStatus() ================================================ FILE: gui/builtinContextMenus/graphLockRange.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.settings import GraphSettings _t = wx.GetTranslation class GraphIgnoreLockRangeMenu(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = GraphSettings.getInstance() def display(self, callingWindow, srcContext): return srcContext in ('dmgStatsGraph', 'remoteRepsGraph', 'ewarStatsGraph') def getText(self, callingWindow, itmContext): return _t('Ignore Lock Range') def activate(self, callingWindow, fullContext, i): self.settings.set('ignoreLockRange', not self.settings.get('ignoreLockRange')) wx.PostEvent(self.mainFrame, GE.GraphOptionChanged()) def isChecked(self, i): return self.settings.get('ignoreLockRange') GraphIgnoreLockRangeMenu.register() ================================================ FILE: gui/builtinContextMenus/implantSetApply.py ================================================ # noinspection PyPackageRequirements import wx from gui.contextMenu import ContextMenuUnconditional from service.implantSet import ImplantSets as UserImplantSets from service.precalcImplantSet import PrecalcedImplantSets _t = wx.GetTranslation class ImplantSetApply(ContextMenuUnconditional): def display(self, callingWindow, srcContext): self.userImplantSets = UserImplantSets.getInstance().getImplantSetList() self.structedImplantSets = PrecalcedImplantSets.getStructuredSets() if len(self.userImplantSets) == 0 and len(self.structedImplantSets) == 0: return False return srcContext in ("implantItemMisc", "implantEditor") def getText(self, callingWindow, context): return _t("Apply Implant Set") def _addSeparator(self, m, text): id_ = ContextMenuUnconditional.nextID() m.Append(id_, '─ %s ─' % text) m.Enable(id_, False) def _addSet(self, parentMenu, profile, name): id = ContextMenuUnconditional.nextID() self.eventSetMap[id] = profile menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem def _addCategory(self, parentMenu, name): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleSelection, menuItem) return menuItem def _gradeSorter(self, item): order = ['low-grade', 'mid-grade', 'high-grade'] try: pos = order.index(item.lower()) except IndexError: pos = len(order) return pos, item def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = "wxMSW" in wx.PlatformInfo menu_lvl1 = wx.Menu() self.context = context self.callingWindow = callingWindow self.eventSetMap = {} # Auto-generated sets for setName in sorted(self.structedImplantSets): setData = self.structedImplantSets[setName] if len(setData) == 1: for implantIDs in setData.values(): menuitem_lvl1 = self._addSet(rootMenu, implantIDs, setName) menu_lvl1.Append(menuitem_lvl1) else: menuitem_lvl1 = self._addCategory(rootMenu, setName) menu_lvl2 = wx.Menu() for gradeName in sorted(setData, key=self._gradeSorter): implantIDs = setData[gradeName] menuitem_lvl2 = self._addSet(rootMenu if msw else menu_lvl1, implantIDs, gradeName) menu_lvl2.Append(menuitem_lvl2) menu_lvl2.Bind(wx.EVT_MENU, self.handleSelection) menuitem_lvl1.SetSubMenu(menu_lvl2) menu_lvl1.Append(menuitem_lvl1) # Separator if self.userImplantSets and self.structedImplantSets: menu_lvl1.AppendSeparator() # Saved sets if self.userImplantSets: menuitem_lvl1 = self._addCategory(rootMenu, 'Saved Sets') menu_lvl2 = wx.Menu() for implantSet in sorted(self.userImplantSets, key=lambda i: i.name): menuitem_lvl2 = self._addSet(rootMenu if msw else menu_lvl1, implantSet, implantSet.name) menu_lvl2.Append(menuitem_lvl2) menu_lvl2.Bind(wx.EVT_MENU, self.handleSelection) menuitem_lvl1.SetSubMenu(menu_lvl2) menu_lvl1.Append(menuitem_lvl1) menu_lvl1.Bind(wx.EVT_MENU, self.handleSelection) return menu_lvl1 def handleSelection(self, event): impSet = self.eventSetMap.get(event.Id, None) if impSet is None: event.Skip() return if isinstance(impSet, str): implants = PrecalcedImplantSets.stringToImplants(impSet) else: implants = impSet.implants self.callingWindow.addImplants(implants) ImplantSetApply.register() ================================================ FILE: gui/builtinContextMenus/implantSetSave.py ================================================ import wx import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class ImplantSetSave(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext not in ('implantItemMisc', 'implantItemMiscChar'): return False fit = Fit.getInstance().getFit(self.mainFrame.getActiveFit()) self.implants = fit.appliedImplants[:] if not self.implants: return False return True def getText(self, callingWindow, context): return _t('Save as New Implant Set') def activate(self, callingWindow, fullContext, i): with NameDialog(self.mainFrame, '') as dlg: if dlg.ShowModal() == wx.ID_OK: name = dlg.input.GetLineText(0).strip() if name == '': return from gui.setEditor import ImplantSetEditor ImplantSetEditor.openOne(parent=self.mainFrame, dataToAdd=(name, self.implants)) ImplantSetSave.register() class NameDialog(wx.Dialog): def __init__(self, parent, value): super().__init__(parent, title=_t('New Implant Set'), style=wx.DEFAULT_DIALOG_STYLE) self.SetMinSize((346, 156)) bSizer1 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, _t('Enter a name for your new Implant Set:')) bSizer2.Add(text, 0) bSizer1.Add(bSizer2, 0, wx.ALL, 10) self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) if value is None: value = '' else: value = str(value) self.input.SetValue(value) bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 15) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) self.Fit() self.CenterOnParent() self.input.SetFocus() self.input.SelectAll() def processEnter(self, evt): self.EndModal(wx.ID_OK) ================================================ FILE: gui/builtinContextMenus/itemAmountChange.py ================================================ import re import wx import gui.fitCommands as cmd import gui.mainFrame from eos.saveddata.cargo import Cargo as es_Cargo from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter as es_Fighter from eos.saveddata.fit import Fit as es_Fit from gui.contextMenu import ContextMenuCombined from service.fit import Fit # noinspection PyPackageRequirements _t = wx.GetTranslation class ChangeItemAmount(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ("droneItem", "projectedDrone", "cargoItem", "projectedFit", "fighterItem", "projectedFighter"): return False if mainItem is None: return False return True def getText(self, callingWindow, itmContext, mainItem, selection): if isinstance(mainItem, es_Cargo): return _t("Change Selection Quantity") return _t("Change {0} Quantity").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, selection, i): fitID = self.mainFrame.getActiveFit() srcContext = fullContext[0] if isinstance(mainItem, es_Fit): try: value = mainItem.getProjectionInfo(fitID).amount except AttributeError: return else: value = mainItem.amount limits = (0, 20) if isinstance(mainItem, es_Fit) else None with AmountChanger(self.mainFrame, value, limits) as dlg: if dlg.ShowModal() == wx.ID_OK: if dlg.input.GetLineText(0).strip() == '': return sFit = Fit.getInstance() fit = sFit.getFit(fitID) cleanInput = int(float(re.sub(r'[^0-9.]', '', dlg.input.GetLineText(0).strip()))) if isinstance(mainItem, es_Cargo): itemIDs = [] for cargo in selection: if cargo in fit.cargo: itemIDs.append(cargo.itemID) self.mainFrame.command.Submit(cmd.GuiChangeCargosAmountCommand( fitID=fitID, itemIDs=itemIDs, amount=cleanInput)) elif isinstance(mainItem, Drone): if srcContext == "projectedDrone": self.mainFrame.command.Submit(cmd.GuiChangeProjectedDroneAmountCommand( fitID=fitID, itemID=mainItem.itemID, amount=cleanInput)) else: if mainItem in fit.drones: position = fit.drones.index(mainItem) self.mainFrame.command.Submit(cmd.GuiChangeLocalDroneAmountCommand( fitID=fitID, position=position, amount=cleanInput)) elif isinstance(mainItem, es_Fit): self.mainFrame.command.Submit(cmd.GuiChangeProjectedFitAmountCommand( fitID=fitID, projectedFitID=mainItem.ID, amount=cleanInput)) elif isinstance(mainItem, es_Fighter): if srcContext == "projectedFighter": if mainItem in fit.projectedFighters: position = fit.projectedFighters.index(mainItem) self.mainFrame.command.Submit(cmd.GuiChangeProjectedFighterAmountCommand( fitID=fitID, position=position, amount=cleanInput)) else: if mainItem in fit.fighters: position = fit.fighters.index(mainItem) self.mainFrame.command.Submit(cmd.GuiChangeLocalFighterAmountCommand( fitID=fitID, position=position, amount=cleanInput)) ChangeItemAmount.register() class AmountChanger(wx.Dialog): def __init__(self, parent, value, limits=None): super().__init__(parent, title=_t("Change Amount"), style=wx.DEFAULT_DIALOG_STYLE) self.SetMinSize((346, 156)) bSizer1 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, _t("New Amount:") if limits is None else _t("New Amount ({}-{})").format(*limits)) bSizer2.Add(text, 0) bSizer1.Add(bSizer2, 0, wx.ALL, 10) self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) self.input.SetValue(str(value)) bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 15) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.Bind(wx.EVT_CHAR, self.onChar) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) self.Fit() self.CenterOnParent() self.input.SetFocus() self.input.SelectAll() def processEnter(self, evt): self.EndModal(wx.ID_OK) # checks to make sure it's valid number @staticmethod def onChar(event): key = event.GetKeyCode() acceptable_characters = "1234567890" acceptable_keycode = [3, 22, 13, 8, 127] # modifiers like delete, copy, paste if key in acceptable_keycode or key >= 255 or (key < 255 and chr(key) in acceptable_characters): event.Skip() return else: return False ================================================ FILE: gui/builtinContextMenus/itemFill.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle _t = wx.GetTranslation class FillWithItem(ContextMenuSingle): visibilitySetting = 'moduleFill' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ('marketItemGroup', 'marketItemMisc'): return False if self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False if mainItem.category.name != 'Module': return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("Fill With Module") def activate(self, callingWindow, fullContext, mainItem, i): self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand( fitID=self.mainFrame.getActiveFit(), itemID=int(mainItem.ID))) FillWithItem.register() ================================================ FILE: gui/builtinContextMenus/itemMarketJump.py ================================================ import wx import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.market import Market _t = wx.GetTranslation class JumpToMarketItem(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): validContexts = ("marketItemMisc", "fittingModule", "fittingCharge", "droneItem", "implantItem", "boosterItem", "projectedModule", "projectedDrone", "projectedCharge", "cargoItem", "implantItemChar", "fighterItem", "projectedFighter") if srcContext not in validContexts or mainItem is None: return False if mainItem is None or getattr(mainItem, "isEmpty", False): return False sMkt = Market.getInstance() item = getattr(mainItem, "item", mainItem) isMutated = getattr(mainItem, "isMutated", False) mktGrp = sMkt.getMarketGroupByItem(item) if mktGrp is None and isMutated: mktGrp = sMkt.getMarketGroupByItem(mainItem.baseItem) # 1663 is Special Edition Festival Assets, we don't have root group for it if mktGrp is None or mktGrp.ID == 1663: return False doit = not mainItem.isEmpty if srcContext == "fittingModule" else True return doit def getText(self, callingWindow, itmContext, mainItem): return _t("{0} Market Group").format(itmContext if itmContext is not None else _t("Item")) def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] if srcContext in ("fittingCharge", "projectedCharge"): item = mainItem.charge elif hasattr(mainItem, "item"): if getattr(mainItem, "isMutated", False): item = mainItem.baseItem else: item = mainItem.item else: item = mainItem self.mainFrame.notebookBrowsers.SetSelection(0) self.mainFrame.marketBrowser.jump(item) JumpToMarketItem.register() ================================================ FILE: gui/builtinContextMenus/itemMutations.py ================================================ import re # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.fitCommands import ( GuiConvertMutatedLocalModuleCommand, GuiRevertMutatedLocalModuleCommand, GuiConvertMutatedLocalDroneCommand, GuiRevertMutatedLocalDroneCommand) from service.fit import Fit _t = wx.GetTranslation GLORIFIED_PREFIX = 'Gl. ' def nameSorter(mutaplasmid): name = mutaplasmid.shortName if name.startswith(GLORIFIED_PREFIX): return name[len(GLORIFIED_PREFIX):], True return name, False class ChangeItemMutation(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.eventIDs = {} def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("fittingModule", "droneItem") or self.mainFrame.getActiveFit() is None: return False if mainItem is None or getattr(mainItem, 'isEmpty', False): return False if len(mainItem.item.mutaplasmids) == 0 and not mainItem.isMutated: return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("Apply Mutaplasmid") if not mainItem.isMutated else _t("Revert to {}").format(mainItem.baseItem.name) def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): if mainItem.isMutated: return None msw = True if "wxMSW" in wx.PlatformInfo else False self.skillIds = {} sub = wx.Menu() menu = rootMenu if msw else sub for mutaplasmid in sorted(mainItem.item.mutaplasmids, key=nameSorter): id = ContextMenuSingle.nextID() self.eventIDs[id] = (mutaplasmid, mainItem) mItem = wx.MenuItem(menu, id, mutaplasmid.shortName) menu.Bind(wx.EVT_MENU, self.handleMenu, mItem) sub.Append(mItem) return sub def handleMenu(self, event): mutaplasmid, item = self.eventIDs[event.Id] fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if item in fit.modules: position = fit.modules.index(item) self.mainFrame.command.Submit(GuiConvertMutatedLocalModuleCommand( fitID=fitID, position=position, mutaplasmid=mutaplasmid)) elif item in fit.drones: position = fit.drones.index(item) self.mainFrame.command.Submit(GuiConvertMutatedLocalDroneCommand( fitID=fitID, position=position, mutaplasmid=mutaplasmid)) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if mainItem in fit.modules: position = fit.modules.index(mainItem) self.mainFrame.command.Submit(GuiRevertMutatedLocalModuleCommand( fitID=fitID, position=position)) elif mainItem in fit.drones: position = fit.drones.index(mainItem) self.mainFrame.command.Submit(GuiRevertMutatedLocalDroneCommand( fitID=fitID, position=position)) def getBitmap(self, callingWindow, context, mainItem): return None ChangeItemMutation.register() ================================================ FILE: gui/builtinContextMenus/itemProject.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class ProjectItem(ContextMenuSingle): visibilitySetting = 'project' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ("marketItemGroup", "marketItemMisc") or self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() fit = sFit.getFit(fitID) if fit.isStructure: return False return mainItem.isType("projected") def getText(self, callingWindow, itmContext, mainItem): return _t("Project {0} onto Fit").format(itmContext) def activate(self, callingWindow, fullContext, mainItem, i): fitID = self.mainFrame.getActiveFit() if mainItem.isModule: success = self.mainFrame.command.Submit(cmd.GuiAddProjectedModuleCommand(fitID=fitID, itemID=mainItem.ID)) elif mainItem.isDrone: success = self.mainFrame.command.Submit(cmd.GuiAddProjectedDroneCommand(fitID=fitID, itemID=mainItem.ID)) elif mainItem.isFighter: success = self.mainFrame.command.Submit(cmd.GuiAddProjectedFighterCommand(fitID=fitID, itemID=mainItem.ID)) else: success = False if success: self.mainFrame.additionsPane.select('Projected', focus=False) ProjectItem.register() ================================================ FILE: gui/builtinContextMenus/itemProjectionRange.py ================================================ import re import wx import gui.fitCommands as cmd import gui.mainFrame from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui.contextMenu import ContextMenuCombined from gui.fitCommands.helpers import getSimilarFighters, getSimilarModPositions from service.fit import Fit # noinspection PyPackageRequirements _t = wx.GetTranslation class ChangeItemProjectionRange(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ('projectedFit', 'projectedModule', 'projectedDrone', 'projectedFighter'): return False if mainItem is None: return False if getattr(mainItem, 'isExclusiveSystemEffect', False): return False return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t('Change {} Range').format(itmContext) def activate(self, callingWindow, fullContext, mainItem, selection, i): fitID = self.mainFrame.getActiveFit() if isinstance(mainItem, EosFit): try: value = mainItem.getProjectionInfo(fitID).projectionRange except AttributeError: return else: value = mainItem.projectionRange if value is not None: value /= 1000 with RangeChanger(self.mainFrame, value) as dlg: if dlg.ShowModal() == wx.ID_OK: cleanInput = re.sub(r'[^0-9.]', '', dlg.input.GetLineText(0).strip()) if cleanInput: try: cleanInputFloat = float(cleanInput) except ValueError: return newRange = cleanInputFloat * 1000 else: newRange = None fitID = self.mainFrame.getActiveFit() items = selection if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): if isinstance(mainItem, EosModule): fit = Fit.getInstance().getFit(fitID) positions = getSimilarModPositions(fit.projectedModules, mainItem) items = [fit.projectedModules[p] for p in positions] elif isinstance(mainItem, EosFighter): fit = Fit.getInstance().getFit(fitID) items = getSimilarFighters(fit.projectedFighters, mainItem) self.mainFrame.command.Submit(cmd.GuiChangeProjectedItemsProjectionRangeCommand( fitID=fitID, items=items, projectionRange=newRange)) ChangeItemProjectionRange.register() class RangeChanger(wx.Dialog): def __init__(self, parent, value): super().__init__(parent, title='Change Projection Range', style=wx.DEFAULT_DIALOG_STYLE) self.SetMinSize((346, 156)) bSizer1 = wx.BoxSizer(wx.VERTICAL) bSizer2 = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, 'New Range, km:') bSizer2.Add(text, 0) bSizer1.Add(bSizer2, 0, wx.ALL, 10) self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) if value is None: value = '' else: if value == int(value): value = int(value) value = str(value) self.input.SetValue(value) bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 15) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.Bind(wx.EVT_CHAR, self.onChar) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) self.Fit() self.CenterOnParent() self.input.SetFocus() self.input.SelectAll() def processEnter(self, evt): self.EndModal(wx.ID_OK) # checks to make sure it's valid number @staticmethod def onChar(event): key = event.GetKeyCode() acceptable_characters = '1234567890.' acceptable_keycode = [3, 22, 13, 8, 127] # modifiers like delete, copy, paste if key in acceptable_keycode or key >= 255 or (key < 255 and chr(key) in acceptable_characters): event.Skip() return else: return False ================================================ FILE: gui/builtinContextMenus/itemRemove.py ================================================ import math import wx import gui.fitCommands as cmd import gui.mainFrame from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui.contextMenu import ContextMenuCombined from gui.fitCommands.helpers import getSimilarFighters, getSimilarModPositions from service.fit import Fit _t = wx.GetTranslation class RemoveItem(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ( "fittingModule", "droneItem", "implantItem", "boosterItem", "projectedModule", "cargoItem", "projectedFit", "projectedDrone", "fighterItem", "projectedFighter", "commandFit", "graphFitList", "graphTgtList" ): return False if mainItem is None or getattr(mainItem, "isEmpty", False): return False self.srcContext = srcContext return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t('Remove {item}{stack}').format( item=itmContext if itmContext is not None else _t('Item'), stack=_t(' Stack') if self.srcContext in ('droneItem', 'projectedDrone', 'cargoItem', 'projectedFit') else '') def activate(self, callingWindow, fullContext, mainItem, selection, i): handlerMap = { 'fittingModule': self.__handleModule, 'droneItem': self.__handleDrone, 'fighterItem': self.__handleFighter, 'implantItem': self.__handleImplant, 'boosterItem': self.__handleBooster, 'cargoItem': self.__handleCargo, 'projectedFit': self.__handleProjectedItem, 'projectedModule': self.__handleProjectedItem, 'projectedDrone': self.__handleProjectedItem, 'projectedFighter': self.__handleProjectedItem, 'commandFit': self.__handleCommandFit, 'graphFitList': self.__handleGraphItem, 'graphTgtList': self.__handleGraphItem } srcContext = fullContext[0] handler = handlerMap.get(srcContext) if handler is None: return handler(callingWindow, mainItem, selection) def __handleModule(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): positions = getSimilarModPositions(fit.modules, mainItem) else: positions = [] for mod in selection: if mod in fit.modules: positions.append(fit.modules.index(mod)) self.mainFrame.command.Submit(cmd.GuiRemoveLocalModuleCommand( fitID=fitID, positions=positions)) def __handleDrone(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) positions = [] for drone in selection: if drone in fit.drones: positions.append(fit.drones.index(drone)) self.mainFrame.command.Submit(cmd.GuiRemoveLocalDronesCommand( fitID=fitID, positions=positions, amount=math.inf)) def __handleFighter(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fighters = getSimilarFighters(fit.fighters, mainItem) else: fighters = selection positions = [] for fighter in fighters: if fighter in fit.fighters: positions.append(fit.fighters.index(fighter)) self.mainFrame.command.Submit(cmd.GuiRemoveLocalFightersCommand( fitID=fitID, positions=positions)) def __handleImplant(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) positions = [] for implant in selection: if implant in fit.implants: positions.append(fit.implants.index(implant)) self.mainFrame.command.Submit(cmd.GuiRemoveImplantsCommand( fitID=fitID, positions=positions)) def __handleBooster(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) positions = [] for booster in selection: if booster in fit.boosters: positions.append(fit.boosters.index(booster)) self.mainFrame.command.Submit(cmd.GuiRemoveBoostersCommand( fitID=fitID, positions=positions)) def __handleCargo(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() itemIDs = [c.itemID for c in selection] self.mainFrame.command.Submit(cmd.GuiRemoveCargosCommand( fitID=fitID, itemIDs=itemIDs)) def __handleProjectedItem(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() if isinstance(mainItem, EosFit): self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=selection, amount=math.inf)) elif isinstance(mainItem, EosModule): if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fit = Fit.getInstance().getFit(fitID) positions = getSimilarModPositions(fit.projectedModules, mainItem) items = [fit.projectedModules[p] for p in positions] else: items = selection self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=items, amount=math.inf)) elif isinstance(mainItem, EosDrone): self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=selection, amount=math.inf)) elif isinstance(mainItem, EosFighter): if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fit = Fit.getInstance().getFit(fitID) items = getSimilarFighters(fit.projectedFighters, mainItem) else: items = selection self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=items, amount=math.inf)) else: self.mainFrame.command.Submit(cmd.GuiRemoveProjectedItemsCommand( fitID=fitID, items=selection, amount=math.inf)) def __handleCommandFit(self, callingWindow, mainItem, selection): fitID = self.mainFrame.getActiveFit() commandFitIDs = [cf.ID for cf in selection] self.mainFrame.command.Submit(cmd.GuiRemoveCommandFitsCommand( fitID=fitID, commandFitIDs=commandFitIDs)) def __handleGraphItem(self, callingWindow, mainItem, selection): callingWindow.removeWrappers(selection) RemoveItem.register() ================================================ FILE: gui/builtinContextMenus/itemStats.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.itemStats import ItemStatsFrame from service.fit import Fit _t = wx.GetTranslation class ItemStats(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ( "marketItemGroup", "marketItemMisc", "fittingModule", "fittingCharge", "fittingShip", "baseShip", "cargoItem", "droneItem", "implantItem", "boosterItem", "skillItem", "projectedModule", "projectedDrone", "projectedCharge", "itemStats", "fighterItem", "implantItemChar", "projectedFighter", "fittingMode" ): return False if (mainItem is None or getattr(mainItem, "isEmpty", False)) and srcContext != "fittingShip": return False return True def getText(self, callingWindow, itmContext, mainItem): return _t("{} Stats").format(itmContext if itmContext is not None else _t("Item")) def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] if srcContext == "fittingShip": fitID = self.mainFrame.getActiveFit() sFit = Fit.getInstance() stuff = sFit.getFit(fitID).ship elif srcContext == "fittingMode": stuff = mainItem.item else: stuff = mainItem if srcContext == "fittingModule" and stuff.isEmpty: return reuse = False if wx.GetMouseState().GetModifiers() == wx.MOD_SHIFT: reuse = True if self.mainFrame.GetActiveStatsWindow() is None and reuse: frame = ItemStatsFrame(stuff, fullContext) elif reuse: lastWnd = self.mainFrame.GetActiveStatsWindow() pos = lastWnd.GetPosition() maximized = lastWnd.IsMaximized() if not maximized: size = lastWnd.GetSize() else: size = wx.DefaultSize pos = wx.DefaultPosition frame = ItemStatsFrame(stuff, fullContext, pos, size, maximized) lastWnd.Close() else: frame = ItemStatsFrame(stuff, fullContext) frame.Show() ItemStats.register() ================================================ FILE: gui/builtinContextMenus/itemVariationChange.py ================================================ # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuCombined from gui.fitCommands.helpers import getSimilarFighters, getSimilarModPositions from service.fit import Fit from service.market import Market _t = wx.GetTranslation class ChangeItemToVariation(ContextMenuCombined): visibilitySetting = 'metaSwap' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem, selection): if self.mainFrame.getActiveFit() is None or srcContext not in ( 'fittingModule', 'droneItem', 'fighterItem', 'boosterItem', 'implantItem', 'cargoItem', 'projectedModule', 'projectedDrone', 'projectedFighter' ): return False if mainItem is None or getattr(mainItem, 'isEmpty', False): return False self.mainVariations = Market.getInstance().getVariationsByItems((mainItem.item,)) # No variations from current module if len(self.mainVariations) < 2: return False self.mainItem = mainItem self.selection = selection self.srcContext = srcContext return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t('Variations') def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): self.moduleLookup = {} sFit = Fit.getInstance() sMkt = Market.getInstance() fit = sFit.getFit(self.mainFrame.getActiveFit()) def get_metalevel(x): return x.metaLevel or 0 def get_metagroup(x): remap = { # We want deadspace before officer mods 5: 6, 6: 5, # For structures we want t1-t2-faction 54: 52, 52: 54 } metaGroup = sMkt.getMetaGroupByItem(x) return remap.get(metaGroup.ID, metaGroup.ID) if metaGroup is not None else 0 def get_boosterrank(x): # If we're returning a lot of items, sort my name if len(self.mainVariations) > 7: return x.name # Sort by booster chance to get some sort of pseudorank. elif 'boosterEffectChance1' in x.attributes: return x.attributes['boosterEffectChance1'].value # the "first" rank (Synth) doesn't have boosterEffectChance1. If we're not pulling back all boosters, return 0 for proper sorting else: return 0 m = wx.Menu() # If on Windows we need to bind out events into the root menu, on other # platforms they need to go to our sub menu if 'wxMSW' in wx.PlatformInfo: bindmenu = rootMenu else: bindmenu = m # Do not show abyssal items items = list( i for i in self.mainVariations if sMkt.getMetaGroupByItem(i) is None or sMkt.getMetaGroupByItem(i).ID != 15) # Sort items by metalevel, and group within that metalevel # Sort all items by name first items.sort(key=lambda x: x.name) # Do not do any extra sorting for implants if 'implantItem' in context: pass # Boosters don't have meta or anything concrete that we can rank by. Go by chance to inflict side effect elif 'boosterItem' in context: items.sort(key=get_boosterrank) else: # sort by group and meta level items.sort(key=get_metalevel) items.sort(key=get_metagroup) group = None for item in items: # Apparently no metaGroup for the Tech I variant: metaGroup = sMkt.getMetaGroupByItem(item) if 'subSystem' in item.effects: thisgroup = item.marketGroup.marketGroupName elif metaGroup is None: thisgroup = 'Tech I' else: thisgroup = metaGroup.name if thisgroup != group and context not in ('implantItem', 'boosterItem'): group = thisgroup id = ContextMenuCombined.nextID() m.Append(id, '─ %s ─' % group) m.Enable(id, False) id = ContextMenuCombined.nextID() mitem = wx.MenuItem(rootMenu, id, item.name) bindmenu.Bind(wx.EVT_MENU, self.handleSwitch, mitem) self.moduleLookup[id] = item, context m.Append(mitem) mitem.Enable(self.srcContext in ('projectedModule', 'projectedDrone', 'projectedFighter') or fit.canFit(item)) return m def handleSwitch(self, event): item, context = self.moduleLookup.get(event.Id, None) if item is None: event.Skip() return handlerMap = { 'fittingModule': self.__handleModule, 'droneItem': self.__handleDrone, 'fighterItem': self.__handleFighter, 'cargoItem': self.__handleCargo, 'implantItem': self.__handleImplant, 'boosterItem': self.__handleBooster, 'projectedModule': self.__handleProjectedModule, 'projectedDrone': self.__handleProjectedDrone, 'projectedFighter': self.__handleProjectedFighter } handler = handlerMap.get(context) if handler is None: return handler(item) def __handleModule(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): positions = getSimilarModPositions(fit.modules, self.mainItem) else: sMkt = Market.getInstance() positions = [] for mod in self.selection: if mod.isEmpty: continue if mod is self.mainItem: positions.append(fit.modules.index(mod)) continue if mod not in fit.modules: continue modVariations = sMkt.getVariationsByItems((mod.item,)) if modVariations == self.mainVariations: positions.append(fit.modules.index(mod)) self.mainFrame.command.Submit(cmd.GuiChangeLocalModuleMetasCommand( fitID=fitID, positions=positions, newItemID=varItem.ID)) def __handleDrone(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) sMkt = Market.getInstance() positions = [] for drone in self.selection: if drone not in fit.drones: continue if drone is self.mainItem: positions.append(fit.drones.index(drone)) continue droneVariations = sMkt.getVariationsByItems((drone.item,)) if droneVariations == self.mainVariations: positions.append(fit.drones.index(drone)) self.mainFrame.command.Submit(cmd.GuiChangeLocalDroneMetasCommand( fitID=fitID, positions=positions, newItemID=varItem.ID)) def __handleFighter(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fighters = getSimilarFighters(fit.fighters, self.mainItem) else: fighters = self.selection sMkt = Market.getInstance() positions = [] for fighter in fighters: if fighter not in fit.fighters: continue if fighter is self.mainItem: positions.append(fit.fighters.index(fighter)) continue fighterVariations = sMkt.getVariationsByItems((fighter.item,)) if fighterVariations == self.mainVariations: positions.append(fit.fighters.index(fighter)) self.mainFrame.command.Submit(cmd.GuiChangeLocalFighterMetasCommand( fitID=fitID, positions=positions, newItemID=varItem.ID)) def __handleCargo(self, varItem): fitID = self.mainFrame.getActiveFit() sMkt = Market.getInstance() itemIDs = [] for cargo in self.selection: if cargo is self.mainItem: itemIDs.append(cargo.itemID) continue cargoVariations = sMkt.getVariationsByItems((cargo.item,)) if cargoVariations == self.mainVariations: itemIDs.append(cargo.itemID) self.mainFrame.command.Submit(cmd.GuiChangeCargoMetasCommand( fitID=fitID, itemIDs=itemIDs, newItemID=varItem.ID)) def __handleImplant(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) implant = self.mainItem if implant in fit.implants: position = fit.implants.index(implant) self.mainFrame.command.Submit(cmd.GuiChangeImplantMetaCommand( fitID=fitID, position=position, newItemID=varItem.ID)) def __handleBooster(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) booster = self.mainItem if booster in fit.boosters: position = fit.boosters.index(booster) self.mainFrame.command.Submit(cmd.GuiChangeBoosterMetaCommand( fitID=fitID, position=position, newItemID=varItem.ID)) def __handleProjectedModule(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): positions = getSimilarModPositions(fit.projectedModules, self.mainItem) else: sMkt = Market.getInstance() positions = [] for mod in self.selection: if mod is self.mainItem: positions.append(fit.projectedModules.index(mod)) continue if mod not in fit.projectedModules: continue modVariations = sMkt.getVariationsByItems((mod.item,)) if modVariations == self.mainVariations: positions.append(fit.projectedModules.index(mod)) self.mainFrame.command.Submit(cmd.GuiChangeProjectedModuleMetasCommand( fitID=fitID, positions=positions, newItemID=varItem.ID)) def __handleProjectedDrone(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) sMkt = Market.getInstance() itemIDs = [] for drone in self.selection: if drone not in fit.projectedDrones: continue if drone is self.mainItem: itemIDs.append(drone.itemID) continue droneVariations = sMkt.getVariationsByItems((drone.item,)) if droneVariations == self.mainVariations: itemIDs.append(drone.itemID) self.mainFrame.command.Submit(cmd.GuiChangeProjectedDroneMetasCommand( fitID=fitID, itemIDs=itemIDs, newItemID=varItem.ID)) def __handleProjectedFighter(self, varItem): fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL): fighters = getSimilarFighters(fit.projectedFighters, self.mainItem) else: fighters = self.selection sMkt = Market.getInstance() positions = [] for fighter in fighters: if fighter not in fit.projectedFighters: continue if fighter is self.mainItem: positions.append(fit.projectedFighters.index(fighter)) continue fighterVariations = sMkt.getVariationsByItems((fighter.item,)) if fighterVariations == self.mainVariations: positions.append(fit.projectedFighters.index(fighter)) self.mainFrame.command.Submit(cmd.GuiChangeProjectedFighterMetasCommand( fitID=fitID, positions=positions, newItemID=varItem.ID)) ChangeItemToVariation.register() ================================================ FILE: gui/builtinContextMenus/moduleAmmoChange.py ================================================ from collections import OrderedDict # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenuCombined from gui.fitCommands.helpers import getSimilarModPositions from service.ammo import Ammo from service.fit import Fit _t = wx.GetTranslation class ChangeModuleAmmo(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() # Format: {type ID: set(loadable, charges)} self.loadableChargesCache = {} # Translations for the missile categories, as the text here is auto-generated via damage attributes self.ddMissileChargeCatTrans = { 'em': _t('EM'), 'thermal': _t('Thermal'), 'explosive': _t('Explosive'), 'kinetic': _t('Kinetic'), 'mixed': _t('Mixed')} self.oreChargeCatTrans = OrderedDict([ ('a1', _t('Asteroid Simple')), ('a2', _t('Asteroid Coherent')), ('a3', _t('Asteroid Variegated')), ('a4', _t('Asteroid Complex')), ('a5', _t('Asteroid Abyssal')), ('a6', _t('Asteroid Mercoxit')), ('r4', _t('Moon Ubiquitous')), ('r8', _t('Moon Common')), ('r16', _t('Moon Uncommon')), ('r32', _t('Moon Rare')), ('r64', _t('Moon Exceptional')), ('err', _t('Erratic')), ('misc', _t('Misc'))]) def display(self, callingWindow, srcContext, mainItem, selection): if srcContext not in ('fittingModule', 'projectedModule'): return False if self.mainFrame.getActiveFit() is None: return False self.mainCharges = self._getAmmo(mainItem) if not self.mainCharges: return False self.module = mainItem self.selection = selection self.srcContext = srcContext return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t('Charge') def _getAmmo(self, mod): if mod.itemID is None: return set() if mod.itemID not in self.loadableChargesCache: self.loadableChargesCache[mod.itemID] = Ammo.getInstance().getModuleFlatAmmo(mod) return self.loadableChargesCache[mod.itemID] def _addCharge(self, menu, charge): id_ = ContextMenuCombined.nextID() name = charge.name if charge is not None else _t('Empty') self.chargeEventMap[id_] = charge item = wx.MenuItem(menu, id_, name) menu.Bind(wx.EVT_MENU, self.handleAmmoSwitch, item) item.charge = charge if charge is not None and charge.iconID is not None: bitmap = BitmapLoader.getBitmap(charge.iconID, 'icons') if bitmap is not None: item.SetBitmap(bitmap) return item @staticmethod def _addSeparator(m, text): id_ = ContextMenuCombined.nextID() m.Append(id_, '─ %s ─' % text) m.Enable(id_, False) def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): msw = True if 'wxMSW' in wx.PlatformInfo else False menu = wx.Menu() self.chargeEventMap = {} modType, chargeDict = Ammo.getInstance().getModuleStructuredAmmo(self.module, ammo=self.mainCharges) if modType == 'ddTurret': self._addSeparator(menu, _t('Long Range')) menuItems = [] for charges in chargeDict.values(): if len(charges) == 1: menuItems.append(self._addCharge(rootMenu if msw else menu, charges[0])) else: baseCharge = charges[0] menuItem = self._addCharge(rootMenu if msw else menu, baseCharge) menuItems.append(menuItem) subMenu = wx.Menu() subMenu.Bind(wx.EVT_MENU, self.handleAmmoSwitch) menuItem.SetSubMenu(subMenu) self._addSeparator(subMenu, _t('Less Damage')) for charge in charges: subMenu.Append(self._addCharge(rootMenu if msw else subMenu, charge)) self._addSeparator(subMenu, _t('More Damage')) for menuItem in menuItems: menu.Append(menuItem) self._addSeparator(menu, _t('Short Range')) elif modType == 'ddMissile': menuItems = [] for chargeCatName, charges in chargeDict.items(): menuItem = wx.MenuItem(menu, wx.ID_ANY, self.ddMissileChargeCatTrans.get(chargeCatName, chargeCatName)) bitmap = BitmapLoader.getBitmap("%s_small" % chargeCatName, "gui") if bitmap is not None: menuItem.SetBitmap(bitmap) menuItems.append(menuItem) subMenu = wx.Menu() subMenu.Bind(wx.EVT_MENU, self.handleAmmoSwitch) menuItem.SetSubMenu(subMenu) self._addSeparator(subMenu, _t('Less Damage')) for charge in charges: subMenu.Append(self._addCharge(rootMenu if msw else subMenu, charge)) self._addSeparator(subMenu, _t('More Damage')) for menuItem in menuItems: menu.Append(menuItem) elif modType == 'miner': menuItems = [] for catHandle, catLabel in self.oreChargeCatTrans.items(): charges = chargeDict.get(catHandle) if not charges: continue if len(charges) == 1: menuItems.append(self._addCharge(rootMenu if msw else menu, charges[0])) else: menuItem = wx.MenuItem(menu, wx.ID_ANY, catLabel) menuItems.append(menuItem) subMenu = wx.Menu() subMenu.Bind(wx.EVT_MENU, self.handleAmmoSwitch) menuItem.SetSubMenu(subMenu) for charge in charges: subMenu.Append(self._addCharge(rootMenu if msw else subMenu, charge)) for menuItem in menuItems: menu.Append(menuItem) elif modType == 'general': for charge in chargeDict['general']: menu.Append(self._addCharge(rootMenu if msw else menu, charge)) menu.Append(self._addCharge(rootMenu if msw else menu, None)) return menu def handleAmmoSwitch(self, event): charge = self.chargeEventMap.get(event.Id, False) if charge is False: event.Skip() return fitID = self.mainFrame.getActiveFit() sFit = Fit.getInstance() fit = sFit.getFit(fitID) # Switch in selection or all modules, depending on modifier key state and settings switchAll = sFit.serviceFittingOptions['ammoChangeAll'] is not (wx.GetMouseState().GetModifiers() in (wx.MOD_ALT, wx.MOD_CONTROL)) if switchAll: if self.srcContext == 'fittingModule': command = cmd.GuiChangeLocalModuleChargesCommand modContainer = fit.modules elif self.srcContext == 'projectedModule': command = cmd.GuiChangeProjectedModuleChargesCommand modContainer = fit.projectedModules else: return positions = getSimilarModPositions(modContainer, self.module) self.mainFrame.command.Submit(command( fitID=fitID, positions=positions, chargeItemID=charge.ID if charge is not None else None)) else: if self.srcContext == 'fittingModule': command = cmd.GuiChangeLocalModuleChargesCommand modContainer = fit.modules elif self.srcContext == 'projectedModule': command = cmd.GuiChangeProjectedModuleChargesCommand modContainer = fit.projectedModules else: return positions = [] for position, mod in enumerate(modContainer): if mod in self.selection: modCharges = self._getAmmo(mod) if modCharges.issubset(self.mainCharges): positions.append(position) self.mainFrame.command.Submit(command( fitID=fitID, positions=positions, chargeItemID=charge.ID if charge is not None else None)) ChangeModuleAmmo.register() ================================================ FILE: gui/builtinContextMenus/moduleFill.py ================================================ import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class FillWithModule(ContextMenuSingle): visibilitySetting = 'moduleFill' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if mainItem is None or getattr(mainItem, 'isEmpty', False): return False return srcContext == "fittingModule" def getText(self, callingWindow, itmContext, mainItem): return _t("Fill With {0}").format(itmContext if itmContext is not None else _t("Module")) def activate(self, callingWindow, fullContext, mainItem, i): srcContext = fullContext[0] fitID = self.mainFrame.getActiveFit() if srcContext == "fittingModule": fit = Fit.getInstance().getFit(fitID) if mainItem in fit.modules: position = fit.modules.index(mainItem) self.mainFrame.command.Submit(cmd.GuiFillWithClonedLocalModulesCommand( fitID=fitID, position=position)) FillWithModule.register() ================================================ FILE: gui/builtinContextMenus/moduleMutatedExport.py ================================================ import wx import gui.mainFrame from gui.contextMenu import ContextMenuSingle from gui.utils.clipboard import toClipboard from service.port.muta import renderMutant _t = wx.GetTranslation class ExportMutatedModule(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext != 'fittingModule': return False if self.mainFrame.getActiveFit() is None: return False if mainItem is None: return False if not mainItem.isMutated: return False return True def getText(self, callingWindow, itmContext, mainItem): return _t('Copy Module to Clipboard') def activate(self, callingWindow, fullContext, mainItem, i): export = renderMutant(mainItem, prefix=' ') toClipboard(export) ExportMutatedModule.register() ================================================ FILE: gui/builtinContextMenus/moduleRahPattern.py ================================================ from collections import OrderedDict # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.builtinContextMenus.shared.patterns import DamagePatternMixin from gui.contextMenu import ContextMenuSingle from service.fit import Fit _t = wx.GetTranslation class ChangeRahPattern(ContextMenuSingle, DamagePatternMixin): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext != 'fittingModule': return False if self.mainFrame.getActiveFit() is None: return False if (mainItem is None or getattr(mainItem, "isEmpty", False)) and srcContext != "fittingShip": return False if mainItem.item.group.name != 'Armor Resistance Shift Hardener': return False self.module = mainItem self.patternEventMap = {} self.patterns = self._getPatterns() self.items = self._getItems(self.patterns) return True def getText(self, callingWindow, itmContext, mainItem): return _t('RAH Damage Pattern') def _addPattern(self, parentMenu, pattern, name): id = ContextMenuSingle.nextID() self.patternEventMap[id] = pattern menuItem = wx.MenuItem(parentMenu, id, name, kind=wx.ITEM_CHECK) parentMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, menuItem) checked = self.module.rahPatternOverride is pattern return menuItem, checked def _addCategory(self, parentMenu, name): id = ContextMenuSingle.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handlePatternSwitch, menuItem) return menuItem def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): # Category as menu item - expands further msw = "wxMSW" in wx.PlatformInfo def makeMenu(container, parentMenu, root=False): menu = wx.Menu() if root: menuItem, checked = self._addPattern(rootMenu if msw else parentMenu, None, 'Fit Pattern') menu.Append(menuItem) menuItem.Check(checked) menuItem, checked = self._addPattern(rootMenu if msw else parentMenu, 'disable', 'Do Not Adapt') menu.Append(menuItem) menuItem.Check(checked) menu.AppendSeparator() for name, subcontainer in container[1].items(): menuItem = self._addCategory(rootMenu if msw else parentMenu, name) subMenu = makeMenu(subcontainer, menu) menuItem.SetSubMenu(subMenu) menu.Append(menuItem) for name, pattern in container[0].items(): menuItem, checked = self._addPattern(rootMenu if msw else parentMenu, pattern, name) menu.Append(menuItem) menuItem.Check(checked) menu.Bind(wx.EVT_MENU, self.handlePatternSwitch) return menu subMenu = makeMenu(self.items, rootMenu, root=True) return subMenu def handlePatternSwitch(self, event): pattern = self.patternEventMap.get(event.Id, False) if pattern is False: event.Skip() return sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() sFit.setRahPattern(fitID, self.module, pattern) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) ChangeRahPattern.register() ================================================ FILE: gui/builtinContextMenus/moduleSpool.py ================================================ import math import wx import eos.config import gui.fitCommands as cmd import gui.mainFrame from eos.utils.spoolSupport import SpoolOptions, SpoolType from gui.contextMenu import ContextMenuSingle from service.fit import Fit # noinspection PyPackageRequirements _t = wx.GetTranslation class ChangeModuleSpool(ContextMenuSingle): visibilitySetting = 'spoolup' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.resetId = None def display(self, callingWindow, srcContext, mainItem): if srcContext not in ('fittingModule', 'projectedModule') or self.mainFrame.getActiveFit() is None: return False if mainItem is None or mainItem.isEmpty: return False self.mod = mainItem self.context = srcContext return self.mod.item.group.name in ("Precursor Weapon", "Mutadaptive Remote Armor Repairer") def getText(self, callingWindow, itmContext, mainItem): return _t("Spoolup Cycles") def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): m = wx.Menu() if "wxMSW" in wx.PlatformInfo: bindmenu = rootMenu else: bindmenu = m isNotDefault = self.mod.spoolType is not None and self.mod.spoolAmount is not None cycleDefault = self.mod.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, eos.config.settings['globalDefaultSpoolupPercentage'], True))[0] cycleCurrent = self.mod.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, eos.config.settings['globalDefaultSpoolupPercentage'], False))[0] cycleMin = self.mod.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True))[0] cycleMax = self.mod.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True))[0] cycleTotalMin = min(cycleDefault, cycleCurrent, cycleMin) cycleTotalMax = max(cycleDefault, cycleCurrent, cycleMax) def findCycles(val1, val2): # Try to compose list of 21 steps max (0-20) maxSteps = 20 valDiff = val2 - val1 valScale = valDiff / maxSteps minStep = math.ceil(round(valScale, 9)) maxStep = math.floor(round(valDiff / 4, 9)) # Check steps from smallest to highest and see if we can go from min value # to max value using those for currentStep in range(minStep, maxStep + 1): if valDiff % currentStep == 0: return set(range(val1, val2 + currentStep, currentStep)) # Otherwise just split range in halves and go both ends using min values else: cycles = set() while val2 >= val1: cycles.add(val1) cycles.add(val2) val1 += minStep val2 -= minStep return cycles self.cycleMap = {} cyclesToShow = findCycles(cycleMin, cycleMax) for cycle in range(cycleTotalMin, cycleTotalMax + 1): menuId = ContextMenuSingle.nextID() # Show default only for current value and when not overriden if not isNotDefault and cycle == cycleDefault: text = _t("{} (default)").format(cycle) # Always show current selection and stuff which we decided to show via the cycles function elif cycle == cycleCurrent or cycle in cyclesToShow: text = "{}".format(cycle) # Ignore the rest to not have very long menu else: continue item = wx.MenuItem(m, menuId, text, kind=wx.ITEM_CHECK) bindmenu.Bind(wx.EVT_MENU, self.handleSpoolChange, item) m.Append(item) item.Check(isNotDefault and cycle == cycleCurrent) self.cycleMap[menuId] = cycle self.resetId = ContextMenuSingle.nextID() item = wx.MenuItem(m, self.resetId, _t("Reset")) bindmenu.Bind(wx.EVT_MENU, self.handleSpoolChange, item) m.Append(item) return m def handleSpoolChange(self, event): if event.Id == self.resetId: spoolType = None spoolAmount = None elif event.Id in self.cycleMap: spoolType = SpoolType.CYCLES spoolAmount = self.cycleMap[event.Id] else: return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if self.context == 'fittingModule': if self.mod in fit.modules: position = fit.modules.index(self.mod) self.mainFrame.command.Submit(cmd.GuiChangeLocalModuleSpoolCommand( fitID=fitID, position=position, spoolType=spoolType, spoolAmount=spoolAmount)) elif self.context == 'projectedModule': if self.mod in fit.projectedModules: position = fit.projectedModules.index(self.mod) self.mainFrame.command.Submit(cmd.GuiChangeProjectedModuleSpoolCommand( fitID=fitID, position=position, spoolType=spoolType, spoolAmount=spoolAmount)) ChangeModuleSpool.register() ================================================ FILE: gui/builtinContextMenus/priceOptions.py ================================================ from abc import ABCMeta, abstractmethod import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.settings import MarketPriceSettings _t = wx.GetTranslation class ItemGroupPrice(ContextMenuUnconditional, metaclass=ABCMeta): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = MarketPriceSettings.getInstance() @property @abstractmethod def optionName(self): raise NotImplementedError() def display(self, callingWindow, srcContext): return srcContext in ("priceViewFull", "priceViewMinimal") def activate(self, callingWindow, fullContext, i): self.settings.set(self.optionName, not self.settings.get(self.optionName)) fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def isChecked(self, i): return self.settings.get(self.optionName) class DronesPrice(ItemGroupPrice): optionName = 'drones' def getText(self, callingWindow, itmContext): return _t('Drones') class CargoPrice(ItemGroupPrice): optionName = 'cargo' def getText(self, callingWindow, itmContext): return _t('Cargo') class ImplantBoosterPrice(ItemGroupPrice): optionName = 'character' def getText(self, callingWindow, itmContext): return _t('Implants && Boosters') DronesPrice.register() CargoPrice.register() ImplantBoosterPrice.register() ================================================ FILE: gui/builtinContextMenus/resistMode.py ================================================ from collections import OrderedDict import wx import gui.mainFrame from graphs.events import ResistModeChanged from graphs.wrapper import TargetWrapper from gui.contextMenu import ContextMenuCombined from service.const import TargetResistMode from service.settings import GraphSettings # noinspection PyPackageRequirements _t = wx.GetTranslation optionMap = OrderedDict(( ('Auto', TargetResistMode.auto), ('Shield', TargetResistMode.shield), ('Armor', TargetResistMode.armor), ('Hull', TargetResistMode.hull), ('Weighted Average', TargetResistMode.weightedAverage))) class TargetWrapperResists(ContextMenuCombined): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem, selection): if srcContext != 'graphTgtList': return False if GraphSettings.getInstance().get('ignoreResists'): return False if not isinstance(mainItem, TargetWrapper) or not mainItem.isFit: return False self.callingWindow = callingWindow self.selection = selection return True def getText(self, callingWindow, itmContext, mainItem, selection): return _t('Resist Mode') def addOption(self, menu, optionLabel): id = ContextMenuCombined.nextID() self.optionIds[id] = optionLabel menuItem = wx.MenuItem(menu, id, optionLabel, kind=wx.ITEM_CHECK) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.optionIds = {} sub = wx.Menu() for optionLabel, optionValue in optionMap.items(): menuItem = self.addOption(rootMenu if msw else sub, optionLabel) sub.Append(menuItem) menuItem.Check(mainItem.resistMode == optionValue) return sub def handleMode(self, event): optionLabel = self.optionIds[event.Id] optionValue = optionMap[optionLabel] changedFitIDs = set() for wrapper in self.selection: if wrapper.isFit and wrapper.resistMode != optionValue: wrapper.resistMode = optionValue changedFitIDs.add(wrapper.item.ID) wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), ResistModeChanged(fitIDs=changedFitIDs)) TargetWrapperResists.register() ================================================ FILE: gui/builtinContextMenus/shared/__init__.py ================================================ ================================================ FILE: gui/builtinContextMenus/shared/patterns.py ================================================ from collections import OrderedDict from itertools import chain # noinspection PyPackageRequirements import wx from gui.utils.sorter import smartSort from service.damagePattern import DamagePattern as DmgPatternSvc _t = wx.GetTranslation class DamagePatternMixin: def _getPatterns(self): sDP = DmgPatternSvc.getInstance() builtinPatterns = sDP.getBuiltinDamagePatternList() userPatterns = sorted(sDP.getUserDamagePatternList(), key=lambda p: smartSort(p.fullName)) # Order here is important: patterns with duplicate names from the latter will overwrite # patterns from the former patterns = sorted( chain(builtinPatterns, userPatterns), key=lambda p: p.fullName not in ["Uniform", "Selected Ammo"]) return patterns def _getItems(self, patterns): items = (OrderedDict(), OrderedDict()) for pattern in patterns: container = items for categoryName in pattern.hierarchy: categoryName = _t(categoryName) if pattern.builtin else categoryName container = container[1].setdefault(categoryName, (OrderedDict(), OrderedDict())) shortName = _t(pattern.shortName) if pattern.builtin else pattern.shortName container[0][shortName] = pattern return items ================================================ FILE: gui/builtinContextMenus/shipJump.py ================================================ # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.builtinShipBrowser.events import Stage3Selected from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class JumpToShip(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext != "fittingShip": return False fitTabSelected = self.mainFrame.notebookBrowsers.GetSelection() == 1 if not fitTabSelected: return True browsingStage = self.mainFrame.shipBrowser.GetActiveStage() if browsingStage != 3: return True fitID = self.mainFrame.getActiveFit() ship = Fit.getInstance().getFit(fitID).ship browsingShipID = self.mainFrame.shipBrowser.GetStageData(browsingStage) if browsingShipID != ship.item.ID: return True return False def getText(self, callingWindow, itmContext): return _t("Open in Fitting Browser") def activate(self, callingWindow, fullContext, i): fitID = self.mainFrame.getActiveFit() ship = Fit.getInstance().getFit(fitID).ship self.mainFrame.notebookBrowsers.SetSelection(1) wx.PostEvent(self.mainFrame.shipBrowser, Stage3Selected(shipID=ship.item.ID, back=True)) JumpToShip.register() ================================================ FILE: gui/builtinContextMenus/shipModeChange.py ================================================ # noinspection PyPackageRequirements import wx import gui.fitCommands as cmd import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from service.fit import Fit _t = wx.GetTranslation class ChangeShipTacticalMode(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.modeMap = { 'Defense': _t('Defense'), 'Propulsion': _t('Propulsion'), 'Sharpshooter': _t('Sharpshooter'), 'Primary': _t('Primary'), 'Secondary': _t('Secondary'), 'Tertiary': _t('Tertiary'), } def display(self, callingWindow, srcContext): if self.mainFrame.getActiveFit() is None or srcContext != "fittingShip": return False sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() fit = sFit.getFit(fitID) self.modes = fit.ship.modes self.currMode = fit.mode return srcContext == "fittingShip" and self.modes is not None def getText(self, callingWindow, itmContext): return _t("Tactical Mode") def addMode(self, menu, mode): key = mode.item.typeName.rsplit()[-2] label = self.modeMap[key] id = ContextMenuUnconditional.nextID() self.modeIds[id] = mode menuItem = wx.MenuItem(menu, id, label, kind=wx.ITEM_RADIO) menu.Bind(wx.EVT_MENU, self.handleMode, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.context = context self.modeIds = {} sub = wx.Menu() for mode in self.modes: menuItem = self.addMode(rootMenu if msw else sub, mode) sub.Append(menuItem) menuItem.Check(self.currMode.item == mode.item) return sub def handleMode(self, event): item = self.modeIds[event.Id] if item is False or item not in self.modes: event.Skip() return fitID = self.mainFrame.getActiveFit() self.mainFrame.command.Submit(cmd.GuiChangeShipModeCommand(fitID, self.modeIds[event.Id].item.ID)) ChangeShipTacticalMode.register() ================================================ FILE: gui/builtinContextMenus/skillAffectors.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from eos.saveddata.character import Skill from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenuSingle from service.character import Character from service.fit import Fit _t = wx.GetTranslation class ChangeAffectingSkills(ContextMenuSingle): visibilitySetting = 'changeAffectingSkills' def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext not in ( "fittingModule", "fittingCharge", "fittingShip", "droneItem", "fighterItem" ): return False fitID = self.mainFrame.getActiveFit() if fitID is None: return False if (mainItem is None or getattr(mainItem, "isEmpty", False)) and srcContext != "fittingShip": return False self.sChar = Character.getInstance() self.sFit = Fit.getInstance() fit = self.sFit.getFit(fitID) self.charID = fit.character.ID # if self.sChar.getCharName(self.charID) in ("All 0", "All 5"): # return False if srcContext == "fittingShip": sFit = Fit.getInstance() self.stuff = sFit.getFit(fitID).ship cont = sFit.getFit(fitID).ship.itemModifiedAttributes elif srcContext == "fittingCharge": cont = mainItem.chargeModifiedAttributes else: cont = mainItem.itemModifiedAttributes skills = set() for attrName in cont.iterAfflictions(): if cont[attrName] == 0: continue for fit, afflictors in cont.getAfflictions(attrName).items(): for afflictor, operator, stackingGroup, preResAmount, postResAmount, used in afflictors: # only add Skills if not isinstance(afflictor, Skill): continue skills.add(afflictor) self.skills = sorted(skills, key=lambda x: x.item.name) return len(self.skills) > 0 def getText(self, callingWindow, itmContext, mainItem): return _t("Change %s Skills") % itmContext def addSkill(self, rootMenu, skill, i): if i < 0: label = _t("Not Learned") else: label = _t("Level %s") % i id = ContextMenuSingle.nextID() self.skillIds[id] = (skill, i) menuItem = wx.MenuItem(rootMenu, id, label, kind=wx.ITEM_RADIO) rootMenu.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem) return menuItem def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): msw = True if "wxMSW" in wx.PlatformInfo else False self.skillIds = {} sub = wx.Menu() for skill in self.skills: skillItem = wx.MenuItem(sub, ContextMenuSingle.nextID(), skill.item.name) grandSub = wx.Menu() skillItem.SetSubMenu(grandSub) if skill.learned: bitmap = BitmapLoader.getBitmap("lvl%s" % skill.level, "gui") if bitmap is not None: skillItem.SetBitmap(bitmap) for i in range(-1, 6): levelItem = self.addSkill(rootMenu if msw else grandSub, skill, i) grandSub.Append(levelItem) if (not skill.learned and i == -1) or (skill.learned and skill.level == i): levelItem.Check(True) sub.Append(skillItem) return sub def handleSkillChange(self, event): skill, level = self.skillIds[event.Id] self.sChar.changeLevel(self.charID, skill.item.ID, level) fitID = self.mainFrame.getActiveFit() self.sFit.changeChar(fitID, self.charID) wx.PostEvent(self.mainFrame, GE.CharListUpdated()) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) ChangeAffectingSkills.register() ================================================ FILE: gui/builtinContextMenus/targetProfile/__init__.py ================================================ ================================================ FILE: gui/builtinContextMenus/targetProfile/adder.py ================================================ from collections import OrderedDict from itertools import chain import wx import gui.mainFrame from eos.saveddata.targetProfile import TargetProfile from gui.contextMenu import ContextMenuUnconditional from gui.utils.sorter import smartSort from service.targetProfile import TargetProfile as svc_TargetProfile # noinspection PyPackageRequirements _t = wx.GetTranslation class TargetProfileAdder(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext != 'graphTgtList': return False # We always show "Ideal Profile" anyway return True def getText(self, callingWindow, itmContext): return _t('Add Target Profile') def handleProfileAdd(self, event): profile = self.eventProfileMap.get(event.Id, False) if profile is False: event.Skip() return self.callingWindow.addProfile(profile) def _addProfile(self, parentMenu, profile, name): id = ContextMenuUnconditional.nextID() self.eventProfileMap[id] = profile menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleProfileAdd, menuItem) return menuItem def _addCategory(self, parentMenu, name): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleProfileAdd, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): self.callingWindow = callingWindow sTR = svc_TargetProfile.getInstance() profiles = list(chain(sTR.getBuiltinTargetProfileList(), sTR.getUserTargetProfileList())) profiles.sort(key=lambda p: smartSort(p.fullName)) self.eventProfileMap = {} items = (OrderedDict(), OrderedDict()) for profile in profiles: container = items for categoryName in profile.hierarchy: categoryName = _t(categoryName) if profile.builtin else categoryName container = container[1].setdefault(categoryName, (OrderedDict(), OrderedDict())) shortName = _t(profile.shortName) if profile.builtin else profile.shortName container[0][shortName] = profile # Category as menu item - expands further msw = "wxMSW" in wx.PlatformInfo def makeMenu(container, parentMenu, first=False): menu = wx.Menu() if first: idealProfile = TargetProfile.getIdeal() mitem = self._addProfile(rootMenu if msw else parentMenu, idealProfile, idealProfile.fullName) menu.Append(mitem) for name, pattern in container[0].items(): menuItem = self._addProfile(rootMenu if msw else parentMenu, pattern, name) menu.Append(menuItem) for name, subcontainer in container[1].items(): menuItem = self._addCategory(rootMenu if msw else parentMenu, name) subMenu = makeMenu(subcontainer, menu) menuItem.SetSubMenu(subMenu) menu.Append(menuItem) menu.Bind(wx.EVT_MENU, self.handleProfileAdd) return menu subMenu = makeMenu(items, rootMenu, first=True) return subMenu TargetProfileAdder.register() ================================================ FILE: gui/builtinContextMenus/targetProfile/editor.py ================================================ import wx import gui.mainFrame from graphs.wrapper import TargetWrapper from gui.contextMenu import ContextMenuSingle from gui.targetProfileEditor import TargetProfileEditor _t = wx.GetTranslation class TargetProfileEditorMenu(ContextMenuSingle): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext, mainItem): if srcContext != 'graphTgtList': return False if not isinstance(mainItem, TargetWrapper): return False if not mainItem.isProfile: return False if mainItem.item.builtin: return False return True def getText(self, callingWindow, itmContext, mainItem): return 'Edit Target Profile' def activate(self, callingWindow, fullContext, mainItem, i): TargetProfileEditor.openOne(parent=self.mainFrame, selected=mainItem.item) TargetProfileEditorMenu.register() ================================================ FILE: gui/builtinContextMenus/targetProfile/switcher.py ================================================ from collections import OrderedDict from itertools import chain import wx import gui.globalEvents as GE import gui.mainFrame from gui.contextMenu import ContextMenuUnconditional from gui.utils.sorter import smartSort from service.fit import Fit from service.targetProfile import TargetProfile as svc_TargetProfile # noinspection PyPackageRequirements _t = wx.GetTranslation class TargetProfileSwitcher(ContextMenuUnconditional): def __init__(self): self.mainFrame = gui.mainFrame.MainFrame.getInstance() def display(self, callingWindow, srcContext): if srcContext != 'firepowerViewFull': return False if self.mainFrame.getActiveFit() is None: return False # We always show "No Profile" anyway return True def getText(self, callingWindow, itmContext): # We take into consideration just target resists, so call menu item accordingly return _t('Target Resists') def handleResistSwitch(self, event): profile = self.profileEventMap.get(event.Id, False) if profile is False: event.Skip() return sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() sFit.setTargetProfile(fitID, profile) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def _addProfile(self, parentMenu, profile, name): id = ContextMenuUnconditional.nextID() self.profileEventMap[id] = profile menuItem = wx.MenuItem(parentMenu, id, name, kind=wx.ITEM_CHECK) parentMenu.Bind(wx.EVT_MENU, self.handleResistSwitch, menuItem) # determine active profile sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() checked = sFit.getFit(fitID).targetProfile is profile return menuItem, checked def _addCategory(self, parentMenu, name): id = ContextMenuUnconditional.nextID() menuItem = wx.MenuItem(parentMenu, id, name) parentMenu.Bind(wx.EVT_MENU, self.handleResistSwitch, menuItem) return menuItem def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): sTR = svc_TargetProfile.getInstance() profiles = list(chain(sTR.getBuiltinTargetProfileList(), sTR.getUserTargetProfileList())) profiles.sort(key=lambda p: smartSort(p.fullName)) self.profileEventMap = {} items = (OrderedDict(), OrderedDict()) for profile in profiles: container = items for categoryName in profile.hierarchy: categoryName = _t(categoryName) if profile.builtin else categoryName container = container[1].setdefault(categoryName, (OrderedDict(), OrderedDict())) shortName = _t(profile.shortName) if profile.builtin else profile.shortName container[0][shortName] = profile # Category as menu item - expands further msw = "wxMSW" in wx.PlatformInfo def makeMenu(container, parentMenu, first=False): menu = wx.Menu() if first: mitem, checked = self._addProfile(rootMenu if msw else parentMenu, None, _t('No Profile')) menu.Append(mitem) mitem.Check(checked) if len(container[0]) > 0 or len(container[1]) > 0: menu.AppendSeparator() for name, pattern in container[0].items(): menuItem, checked = self._addProfile(rootMenu if msw else parentMenu, pattern, name) menu.Append(menuItem) menuItem.Check(checked) for name, subcontainer in container[1].items(): menuItem = self._addCategory(rootMenu if msw else parentMenu, name) subMenu = makeMenu(subcontainer, menu) menuItem.SetSubMenu(subMenu) menu.Append(menuItem) menu.Bind(wx.EVT_MENU, self.handleResistSwitch) return menu subMenu = makeMenu(items, rootMenu, first=True) return subMenu TargetProfileSwitcher.register() ================================================ FILE: gui/builtinItemStatsViews/__init__.py ================================================ ================================================ FILE: gui/builtinItemStatsViews/attributeGrouping.py ================================================ from service.const import GuiAttrGroup RequiredSkillAttrs = sum((["requiredSkill{}".format(x), "requiredSkill{}Level".format(x)] for x in range(1, 7)), []) #todo: maybe moved some of these basic definitions into eos proper? Can really be useful with effect writing as a lot of these are used over and over damage_types = ["em", "thermal", "kinetic", "explosive"] scan_types = ["radar", "magnetometric", "gravimetric", "ladar"] DamageAttrs = ["{}Damage".format(x) for x in damage_types] HullResistsAttrs = ["{}DamageResonance".format(x) for x in damage_types] ArmorResistsAttrs = ["armor{}DamageResonance".format(x.capitalize()) for x in damage_types] ShieldResistsAttrs = ["shield{}DamageResonance".format(x.capitalize()) for x in damage_types] ScanStrAttrs = ["scan{}Strength".format(x.capitalize()) for x in scan_types] # todo: convert to named tuples? AttrGroups = [ (DamageAttrs, "Damage"), (HullResistsAttrs, "Resistances"), (ArmorResistsAttrs, "Resistances"), (ShieldResistsAttrs, "Resistances"), (ScanStrAttrs, "Sensor Strengths") ] GroupedAttributes = [] for x in AttrGroups: GroupedAttributes += x[0] # Start defining all the known attribute groups AttrGroupDict = { GuiAttrGroup.FITTING : { "label" : "Fitting", "attributes": [ # parent-level attributes "cpuOutput", "powerOutput", "upgradeCapacity", "hiSlots", "medSlots", "lowSlots", "serviceSlots", "turretSlotsLeft", "launcherSlotsLeft", "upgradeSlotsLeft", # child-level attributes "cpu", "power", "rigSize", "upgradeCost", # "mass", ] }, GuiAttrGroup.STRUCTURE : { "label" : "Structure", "attributes": [ "hp", "capacity", "mass", "volume", "agility", "droneCapacity", "droneBandwidth", "generalMiningHoldCapacity", "specialIceHoldCapacity", "specialGasHoldCapacity", "specialMineralHoldCapacity", "specialSalvageHoldCapacity", "specialShipHoldCapacity", "specialSmallShipHoldCapacity", "specialMediumShipHoldCapacity", "specialLargeShipHoldCapacity", "specialIndustrialShipHoldCapacity", "specialAmmoHoldCapacity", "specialCommandCenterHoldCapacity", "specialPlanetaryCommoditiesHoldCapacity", "specialColonyResourcesHoldCapacity", "structureDamageLimit", "specialSubsystemHoldCapacity", "emDamageResonance", "thermalDamageResonance", "kineticDamageResonance", "explosiveDamageResonance" ] }, GuiAttrGroup.ARMOR : { "label": "Armor", "attributes":[ "armorHP", "armorDamageLimit", "armorEmDamageResonance", "armorThermalDamageResonance", "armorKineticDamageResonance", "armorExplosiveDamageResonance", ] }, GuiAttrGroup.SHIELD : { "label": "Shield", "attributes": [ "shieldCapacity", "shieldRechargeRate", "shieldDamageLimit", "shieldEmDamageResonance", "shieldExplosiveDamageResonance", "shieldKineticDamageResonance", "shieldThermalDamageResonance", ] }, GuiAttrGroup.EWAR_RESISTS : { "label": "Electronic Warfare", "attributes": [ "ECMResistance", "remoteAssistanceImpedance", "remoteRepairImpedance", "energyWarfareResistance", "sensorDampenerResistance", "stasisWebifierResistance", "targetPainterResistance", "weaponDisruptionResistance", ] }, GuiAttrGroup.CAPACITOR : { "label": "Capacitor", "attributes": [ "capacitorCapacity", "rechargeRate", ] }, GuiAttrGroup.TARGETING : { "label": "Targeting", "attributes": [ "maxTargetRange", "maxRange", "maxLockedTargets", "signatureRadius", "optimalSigRadius", "scanResolution", "proximityRange", "falloff", "trackingSpeed", "scanRadarStrength", "scanMagnetometricStrength", "scanGravimetricStrength", "scanLadarStrength", ] }, GuiAttrGroup.SHARED_FACILITIES : { "label" : "Shared Facilities", "attributes": [ "fleetHangarCapacity", "shipMaintenanceBayCapacity", "maxJumpClones", ] }, GuiAttrGroup.FIGHTER_FACILITIES: { "label": "Fighter Squadron Facilities", "attributes": [ "fighterCapacity", "fighterTubes", "fighterLightSlots", "fighterSupportSlots", "fighterHeavySlots", "fighterStandupLightSlots", "fighterStandupSupportSlots", "fighterStandupHeavySlots", ] }, GuiAttrGroup.ON_DEATH : { "label": "On Death", "attributes": [ "onDeathDamageEM", "onDeathDamageTherm", "onDeathDamageKin", "onDeathDamageExp", "onDeathAOERadius", "onDeathSignatureRadius", ] }, GuiAttrGroup.JUMP_SYSTEMS : { "label": "Jump Drive Systems", "attributes": [ "jumpDriveCapacitorNeed", "jumpDriveRange", "jumpDriveConsumptionType", "jumpDriveConsumptionAmount", "jumpPortalCapacitorNeed", "jumpDriveDuration", "specialFuelBayCapacity", "jumpPortalConsumptionMassFactor", "jumpPortalDuration", ] }, GuiAttrGroup.PROPULSIONS : { "label": "Propulsion", "attributes": [ "maxVelocity" ] }, GuiAttrGroup.FIGHTERS : { "label": "Fighter", "attributes": [ "mass", "maxVelocity", "agility", "volume", "signatureRadius", "fighterSquadronMaxSize", "fighterRefuelingTime", "fighterSquadronOrbitRange", ] }, GuiAttrGroup.SHIP_GROUP : { "label" : "Can Fit To", "attributes": [] }, } AttrGroupDict[GuiAttrGroup.SHIP_GROUP]["attributes"].extend([("canFitShipGroup{:02d}".format(i+1), "Group") for i in range(20)]) AttrGroupDict[GuiAttrGroup.SHIP_GROUP]["attributes"].extend([("canFitShipType{:01d}".format(i+1), "Ship") for i in range(20)]) Group1 = [ GuiAttrGroup.FITTING, GuiAttrGroup.STRUCTURE, GuiAttrGroup.ARMOR, GuiAttrGroup.SHIELD, GuiAttrGroup.EWAR_RESISTS, GuiAttrGroup.CAPACITOR, GuiAttrGroup.TARGETING, GuiAttrGroup.SHARED_FACILITIES, GuiAttrGroup.FIGHTER_FACILITIES, GuiAttrGroup.ON_DEATH, GuiAttrGroup.JUMP_SYSTEMS, GuiAttrGroup.PROPULSIONS, GuiAttrGroup.SHIP_GROUP ] CategoryGroups = { "Fighter" : [ GuiAttrGroup.FIGHTERS, GuiAttrGroup.SHIELD, GuiAttrGroup.TARGETING, ], "Ship" : Group1, "Drone" : Group1, "Structure": Group1 } ================================================ FILE: gui/builtinItemStatsViews/attributeSlider.py ================================================ import math import wx import wx.lib.newevent from gui.attribute_gauge import AttributeGauge from eos.utils.float import floatUnerr _ValueChanged, EVT_VALUE_CHANGED = wx.lib.newevent.NewEvent() class AttributeSliderChangeEvent: def __init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=True): self.__obj = obj self.__old = old_value self.__new = new_value self.__old_percent = old_percentage self.__new_percent = new_percentage self.__affect_modified_flag = affect_modified_flag def GetObj(self): return self.__obj def GetOldValue(self): return self.__old def GetValue(self): return self.__new def GetOldPercentage(self): return self.__old_percent def GetPercentage(self): return self.__new_percent @property def AffectsModifiedFlag(self): return self.__affect_modified_flag Object = property(GetObj) OldValue = property(GetOldValue) Value = property(GetValue) OldPercentage = property(GetOldPercentage) Percentage = property(GetPercentage) class ValueChanged(_ValueChanged, AttributeSliderChangeEvent): def __init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=True): _ValueChanged.__init__(self) AttributeSliderChangeEvent.__init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=affect_modified_flag) class AttributeSlider(wx.Panel): # Slider which abstracts users values from internal values (because the built in slider does not deal with floats # and the like), based on http://wxpython-users.wxwidgets.narkive.com/ekgBzA7u/anyone-ever-thought-of-a-floating-point-slider def __init__(self, parent, baseValue, minValue, maxValue, inverse=False, id=-1): wx.Panel.__init__(self, parent, id=id) self.parent = parent self.base_value = baseValue self.UserMinValue = minValue self.UserMaxValue = maxValue self.inverse = inverse def getStep(valRange): """ Find step for the passed range, which is based on 1, 2 or 5. Step returned will make sure that range fits 10..50 of them, as close to 10 as possible. """ steps = {1: None, 2: None, 5: None} for baseInc in steps: baseIncAmount = valRange / baseInc incScale = math.floor(math.log10(baseIncAmount) - 1) steps[baseInc] = baseInc * 10 ** incScale chosenBase = min(steps, key=lambda base: valRange / steps[base]) chosenStep = steps[chosenBase] if inverse: chosenStep *= -1 return chosenStep def getDigitPlaces(minValue, maxValue): minDigits = 3 maxDigits = 5 currentDecision = minDigits for value in (floatUnerr(minValue), floatUnerr(maxValue)): for currentDigit in range(minDigits, maxDigits + 1): if round(value, currentDigit) == value: if currentDigit > currentDecision: currentDecision = currentDigit break # Max decimal places we can afford to show was not enough else: return maxDigits return currentDecision self.ctrl = wx.SpinCtrlDouble(self, min=minValue, max=maxValue, inc=getStep(maxValue - minValue)) self.ctrl.SetDigits(getDigitPlaces(minValue, maxValue)) self.ctrl.Bind(wx.EVT_SPINCTRLDOUBLE, self.UpdateValue) # GTK scrolls spinboxes with mousewheel, others do not if "wxGTK" not in wx.PlatformInfo: self.ctrl.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) self.slider = AttributeGauge(self, size=(-1, 8)) b = 4 vsizer1 = wx.BoxSizer(wx.VERTICAL) vsizer1.Add(self.ctrl, 0, wx.LEFT | wx.RIGHT | wx.CENTER, b) vsizer1.Add(self.slider, 0, wx.EXPAND | wx.ALL , b) self.SetSizerAndFit(vsizer1) self.parent.SetClientSize((500, vsizer1.GetSize()[1])) def GetValue(self): return self.ctrl.GetValue() def UpdateValue(self, evt): self.SetValue(self.GetValue()) evt.Skip() def SetValue(self, value, post_event=True, affect_modified_flag=True): self.ctrl.SetValue(value) invert_factor = -1 if self.inverse else 1 try: if value >= self.base_value: slider_percentage = (value - self.base_value) / (self.UserMaxValue - self.base_value) * 100 * invert_factor else: slider_percentage = (value - self.base_value) / (self.base_value - self.UserMinValue) * 100 * invert_factor except ZeroDivisionError: slider_percentage = 0 self.slider.SetValue(slider_percentage) if post_event: wx.PostEvent(self, ValueChanged(self, None, value, None, slider_percentage, affect_modified_flag=affect_modified_flag)) def OnMouseWheel(self, evt): if evt.GetWheelRotation() > 0 and evt.GetWheelAxis() == wx.MOUSE_WHEEL_VERTICAL: self.SetValue(self.ctrl.Value + self.ctrl.Increment) elif evt.GetWheelRotation() < 0 and evt.GetWheelAxis() == wx.MOUSE_WHEEL_VERTICAL: self.SetValue(self.ctrl.Value - self.ctrl.Increment) else: evt.Skip() def OnWindowClose(self): # Stop animations to prevent crashes when window is # closed while animation is in progress self.slider.FreezeAnimation() ================================================ FILE: gui/builtinItemStatsViews/helpers.py ================================================ # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import wx.lib.mixins.listctrl as listmix from gui.utils.dark import isDark class AutoListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ListRowHighlighter): def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): wx.ListCtrl.__init__(self, parent, ID, pos, size, style) listmix.ListCtrlAutoWidthMixin.__init__(self) listmix.ListRowHighlighter.__init__(self) if isDark(): listcol = wx.SystemSettings.GetColour(wx.SYS_COLOUR_LISTBOX) highlight = listcol.ChangeLightness(110) listmix.ListRowHighlighter.SetHighlightColor(self, highlight) class AutoListCtrlNoHighlight(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ListRowHighlighter): def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): wx.ListCtrl.__init__(self, parent, ID, pos, size, style) listmix.ListCtrlAutoWidthMixin.__init__(self) ================================================ FILE: gui/builtinItemStatsViews/itemAffectedBy.py ================================================ # noinspection PyPackageRequirements import wx from eos.const import Operator from eos.saveddata.mode import Mode from eos.saveddata.character import Skill from eos.saveddata.implant import Implant from eos.saveddata.booster import Booster from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.module import Module from eos.saveddata.ship import Ship from eos.saveddata.citadel import Citadel from eos.saveddata.fit import Fit import gui.mainFrame from gui.contextMenu import ContextMenu from gui.bitmap_loader import BitmapLoader _t = wx.GetTranslation def formatOperator(operator, stackingGroup, preResAmount, postResAmount): opMap = { Operator.PREASSIGN: '=', Operator.PREINCREASE: '+', Operator.MULTIPLY: '*', Operator.POSTINCREASE: '+', Operator.FORCE: '\u2263' } prefix = '' if stackingGroup is not None: prefix += 's' if preResAmount != postResAmount: prefix += 'r' return '{}{}'.format(prefix, opMap[operator]) class ItemAffectedBy(wx.Panel): ORDER = [Fit, Ship, Citadel, Mode, Module, Drone, Fighter, Implant, Booster, Skill] def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) self.stuff = stuff self.item = item self.activeFit = gui.mainFrame.MainFrame.getInstance().getActiveFit() self.showRealNames = False self.showAttrView = False self.expand = -1 self.treeItems = [] mainSizer = wx.BoxSizer(wx.VERTICAL) self.affectedBy = wx.TreeCtrl(self, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER) self.affectedBy.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) mainSizer.Add(self.affectedBy, 1, wx.ALL | wx.EXPAND, 0) self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer(wx.HORIZONTAL) self.toggleExpandBtn = wx.ToggleButton(self, wx.ID_ANY, _t("Expand All"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.toggleExpandBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.toggleNameBtn = wx.ToggleButton(self, wx.ID_ANY, _t("Toggle Names"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.toggleNameBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, _t("Toggle View"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL) if stuff is not None: self.refreshBtn = wx.Button(self, wx.ID_ANY, _t("Refresh"), wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshTree) self.toggleNameBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleNameMode) self.toggleExpandBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleExpand) self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode) mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT) self.SetSizer(mainSizer) self.PopulateTree() self.Layout() self.affectedBy.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) def spawnMenu(self, event): item, _ = self.affectedBy.HitTest(self.ScreenToClient(event.Position)) self.affectedBy.SelectItem(item) stuff = self.affectedBy.GetItemData(item) # String is set as data when we are dealing with attributes, not stuff containers if stuff is None or isinstance(stuff, str): return contexts = [] # Skills are different in that they don't have itemModifiedAttributes, # which is needed if we send the container to itemStats dialog. So # instead, we send the item. type_ = stuff.__class__.__name__ contexts.append(("itemStats", type_)) stuff = stuff if type_ != "Skill" else stuff.item menu = ContextMenu.getMenu(self, stuff, (stuff,), *contexts) self.PopupMenu(menu) def ExpandCollapseTree(self): self.Freeze() if self.expand == 1: self.affectedBy.ExpandAll() else: try: self.affectedBy.CollapseAll() except (KeyboardInterrupt, SystemExit): raise except: pass self.Thaw() def ToggleExpand(self, event): self.expand *= -1 self.ExpandCollapseTree() def ToggleViewTree(self): self.Freeze() for item in self.treeItems: change = self.affectedBy.GetItemData(item) display = self.affectedBy.GetItemText(item) self.affectedBy.SetItemText(item, change) self.affectedBy.SetItemData(item, display) self.Thaw() def UpdateTree(self): self.Freeze() self.affectedBy.DeleteAllItems() self.PopulateTree() self.Thaw() def RefreshTree(self, event): self.UpdateTree() event.Skip() def ToggleViewMode(self, event): self.showAttrView = not self.showAttrView self.affectedBy.DeleteAllItems() self.PopulateTree() event.Skip() def ToggleNameMode(self, event): self.showRealNames = not self.showRealNames self.ToggleViewTree() event.Skip() def PopulateTree(self): # sheri was here del self.treeItems[:] root = self.affectedBy.AddRoot("WINPWNZ0R") self.affectedBy.SetItemData(root, None) self.imageList = wx.ImageList(16, 16) self.affectedBy.SetImageList(self.imageList) if self.showAttrView: self.buildAttributeView(root) else: self.buildModuleView(root) self.ExpandCollapseTree() def sortAttrDisplayName(self, attr): info = self.stuff.item.attributes.get(attr) if info and info.displayName: return info.displayName return attr def buildAttributeView(self, root): """ We first build a usable dictionary of items. The key is either a fit if the afflictions stem from a projected fit, or self.stuff if they are local afflictions (everything else, even gang boosts at this time) The value of this is yet another dictionary in the following format: "attribute name": { "Module Name": [ class of affliction, affliction item (required due to GH issue #335) modifier type amount of modification whether this affliction was projected ] } """ attributes = self.stuff.itemModifiedAttributes if self.item == self.stuff.item else self.stuff.chargeModifiedAttributes container = {} for attrName in attributes.iterAfflictions(): # if value is 0 or there has been no change from original to modified, return if attributes[attrName] == (attributes.getOriginal(attrName, 0)): continue for fit, afflictors in attributes.getAfflictions(attrName).items(): for afflictor, operator, stackingGroup, preResAmount, postResAmount, used in afflictors: if not used or afflictor.item is None: continue if fit.ID != self.activeFit: # affliction fit does not match our fit if fit not in container: container[fit] = {} items = container[fit] else: # local afflictions if self.stuff not in container: container[self.stuff] = {} items = container[self.stuff] # items hold our module: info mappings if attrName not in items: items[attrName] = [] if afflictor == self.stuff and getattr(afflictor, 'charge', None): # we are showing a charges modifications, see #335 item = afflictor.charge else: item = afflictor.item items[attrName].append(( type(afflictor), afflictor, item, formatOperator(operator, stackingGroup, preResAmount, postResAmount), postResAmount, getattr(afflictor, "projected", False))) # Make sure projected fits are on top rootOrder = list(container.keys()) rootOrder.sort(key=lambda x: self.ORDER.index(type(x))) # Now, we take our created dictionary and start adding stuff to our tree for thing in rootOrder: # This block simply directs which parent we are adding to (root or projected fit) if thing == self.stuff: parent = root else: # projected fit icon = self.imageList.Add(BitmapLoader.getBitmap("ship_small", "gui")) child = self.affectedBy.AppendItem(root, "{} ({})".format(thing.name, thing.ship.item.name), icon) parent = child attributes = container[thing] attrOrder = sorted(list(attributes.keys()), key=self.sortAttrDisplayName) for attrName in attrOrder: attrInfo = self.stuff.item.attributes.get(attrName) displayName = attrInfo.displayName if attrInfo and attrInfo.displayName else attrName if attrInfo: if attrInfo.iconID is not None: iconFile = attrInfo.iconID icon = BitmapLoader.getBitmap(iconFile, "icons") if icon is None: icon = BitmapLoader.getBitmap("transparent16x16", "gui") attrIcon = self.imageList.Add(icon) else: attrIcon = self.imageList.Add(BitmapLoader.getBitmap("0", "icons")) else: attrIcon = self.imageList.Add(BitmapLoader.getBitmap("0", "icons")) if self.showRealNames: display = attrName saved = displayName else: display = displayName saved = attrName # this is the attribute node child = self.affectedBy.AppendItem(parent, display, attrIcon) self.affectedBy.SetItemData(child, saved) self.treeItems.append(child) items = attributes[attrName] items.sort(key=lambda x: self.ORDER.index(x[0])) for itemInfo in items: afflictorType, afflictor, item, attrModifier, attrAmount, projected = itemInfo if afflictorType == Ship: itemIcon = self.imageList.Add(BitmapLoader.getBitmap("ship_small", "gui")) elif item.iconID: bitmap = BitmapLoader.getBitmap(item.iconID, "icons") itemIcon = self.imageList.Add(bitmap) if bitmap else -1 else: itemIcon = -1 displayStr = item.name if projected: displayStr += " (projected)" penalized = "" if '*' in attrModifier: if 's' in attrModifier: penalized += "(penalized)" if 'r' in attrModifier: penalized += "(resisted)" attrModifier = "*" if attrModifier == "+" and attrAmount < 0: attrModifier = "-" attrAmount = -attrAmount # this is the Module node, the attribute will be attached to this display = "%s %s %.2f %s" % (displayStr, attrModifier, attrAmount, penalized) treeItem = self.affectedBy.AppendItem(child, display, itemIcon) self.affectedBy.SetItemData(treeItem, afflictor) def buildModuleView(self, root): """ We first build a usable dictionary of items. The key is either a fit if the afflictions stem from a projected fit, or self.stuff if they are local afflictions (everything else, even gang boosts at this time) The value of this is yet another dictionary in the following format: "Module Name": [ class of affliction, set of afflictors (such as 2 of the same module), info on affliction (attribute name, modifier, and modification amount), item that will be used to determine icon (required due to GH issue #335) whether this affliction is actually used (unlearned skills are not used) ] """ attributes = self.stuff.itemModifiedAttributes if self.item == self.stuff.item else self.stuff.chargeModifiedAttributes container = {} for attrName in attributes.iterAfflictions(): # if value is 0 or there has been no change from original to modified, return if attributes[attrName] == (attributes.getOriginal(attrName, 0)): continue for fit, afflictors in attributes.getAfflictions(attrName).items(): for afflictor, operator, stackingGroup, preResAmount, postResAmount, used in afflictors: if not used or getattr(afflictor, 'item', None) is None: continue if fit.ID != self.activeFit: # affliction fit does not match our fit if fit not in container: container[fit] = {} items = container[fit] else: # local afflictions if self.stuff not in container: container[self.stuff] = {} items = container[self.stuff] if afflictor == self.stuff and getattr(afflictor, 'charge', None): # we are showing a charges modifications, see #335 item = afflictor.charge else: item = afflictor.item # items hold our module: info mappings if item.name not in items: items[item.name] = [type(afflictor), set(), [], item, getattr(afflictor, "projected", False)] info = items[item.name] info[1].add(afflictor) operatorStr = formatOperator(operator, stackingGroup, preResAmount, postResAmount) # If info[1] > 1, there are two separate modules working. # Check to make sure we only include the modifier once # See GH issue 154 if len(info[1]) > 1 and (attrName, operatorStr, postResAmount) in info[2]: continue info[2].append((attrName, operatorStr, postResAmount)) # Make sure projected fits are on top rootOrder = list(container.keys()) rootOrder.sort(key=lambda x: self.ORDER.index(type(x))) # Now, we take our created dictionary and start adding stuff to our tree for thing in rootOrder: # This block simply directs which parent we are adding to (root or projected fit) if thing == self.stuff: parent = root else: # projected fit icon = self.imageList.Add(BitmapLoader.getBitmap("ship_small", "gui")) child = self.affectedBy.AppendItem(root, "{} ({})".format(thing.name, thing.ship.item.name), icon) parent = child items = container[thing] order = list(items.keys()) order.sort(key=lambda x: (self.ORDER.index(items[x][0]), x)) for itemName in order: info = items[itemName] afflictorType, afflictors, attrData, item, projected = info counter = len(afflictors) if afflictorType == Ship: itemIcon = self.imageList.Add(BitmapLoader.getBitmap("ship_small", "gui")) elif item.iconID: bitmap = BitmapLoader.getBitmap(item.iconID, "icons") itemIcon = self.imageList.Add(bitmap) if bitmap else -1 else: itemIcon = -1 displayStr = itemName if counter > 1: displayStr += " x {}".format(counter) if projected: displayStr += " (projected)" # this is the Module node, the attribute will be attached to this child = self.affectedBy.AppendItem(parent, displayStr, itemIcon) self.affectedBy.SetItemData(child, afflictors.pop()) if counter > 0: attributes = [] for attrName, attrModifier, attrAmount in attrData: attrInfo = self.stuff.item.attributes.get(attrName) displayName = attrInfo.displayName if attrInfo else "" if attrInfo: if attrInfo.iconID is not None: iconFile = attrInfo.iconID icon = BitmapLoader.getBitmap(iconFile, "icons") if icon is None: icon = BitmapLoader.getBitmap("transparent16x16", "gui") attrIcon = self.imageList.Add(icon) else: attrIcon = self.imageList.Add(BitmapLoader.getBitmap("0", "icons")) else: attrIcon = self.imageList.Add(BitmapLoader.getBitmap("0", "icons")) penalized = "" if '*' in attrModifier: if 's' in attrModifier: penalized += "(penalized)" if 'r' in attrModifier: penalized += "(resisted)" attrModifier = "*" if attrModifier == "+" and attrAmount < 0: attrModifier = "-" attrAmount = -attrAmount attributes.append((attrName, (displayName if displayName else attrName), attrModifier, attrAmount, penalized, attrIcon)) attrSorted = sorted(attributes, key=lambda attribName: attribName[0]) for attr in attrSorted: attrName, displayName, attrModifier, attrAmount, penalized, attrIcon = attr if self.showRealNames: display = "%s %s %.2f %s" % (attrName, attrModifier, attrAmount, penalized) saved = "%s %s %.2f %s" % ( displayName if displayName else attrName, attrModifier, attrAmount, penalized ) else: display = "%s %s %.2f %s" % ( displayName if displayName else attrName, attrModifier, attrAmount, penalized ) saved = "%s %s %.2f %s" % (attrName, attrModifier, attrAmount, penalized) treeitem = self.affectedBy.AppendItem(child, display, attrIcon) self.affectedBy.SetItemData(treeitem, saved) self.treeItems.append(treeitem) ================================================ FILE: gui/builtinItemStatsViews/itemAttributes.py ================================================ import csv from enum import IntEnum # noinspection PyPackageRequirements import wx import wx.lib.agw.hypertreelist import config import gui from gui import globalEvents as GE from gui.bitmap_loader import BitmapLoader from gui.builtinItemStatsViews.attributeGrouping import * from gui.utils.numberFormatter import formatAmount, roundDec from service.const import GuiAttrGroup _t = wx.GetTranslation class AttributeView(IntEnum): NORMAL = 1 RAW = -1 class ItemParams(wx.Panel): def __init__(self, parent, stuff, item, context=None): # Had to manually set the size here, otherwise column widths couldn't be calculated correctly. See #1878 wx.Panel.__init__(self, parent, size=(1000, 1000)) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) self.mainFrame = gui.mainFrame.MainFrame.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.paramList = wx.lib.agw.hypertreelist.HyperTreeList(self, wx.ID_ANY, agwStyle=wx.TR_HIDE_ROOT | wx.TR_NO_LINES | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_HAS_BUTTONS) self.paramList.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.toggleView = AttributeView.NORMAL self.stuff = stuff self.item = item self.isStuffItem = stuff is not None and item is not None and getattr(stuff, 'item', None) == item self.isStuffCharge = stuff is not None and item is not None and getattr(stuff, 'charge', None) == item self.attrInfo = {} self.attrValues = {} self._fetchValues() self.paramList.AddColumn(_t("Attribute")) self.paramList.AddColumn(_t("Current Value")) if self.stuff is not None: self.paramList.AddColumn(_t("Base Value")) self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer(wx.HORIZONTAL) self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, _t("View Raw Data"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.exportStatsBtn = wx.ToggleButton(self, wx.ID_ANY, _t("Export Item Stats"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.exportStatsBtn, 0, wx.ALIGN_CENTER_VERTICAL) if stuff is not None: self.refreshBtn = wx.Button(self, wx.ID_ANY, _t("Refresh"), wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshValues) mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT) self.imageList = wx.ImageList(16, 16) self.PopulateList() self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode) self.exportStatsBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ExportItemStats) self.mainFrame.Bind(GE.ITEM_CHANGED_INPLACE, self.OnUpdateStuff) def OnWindowClose(self): self.mainFrame.Unbind(GE.ITEM_CHANGED_INPLACE) def _fetchValues(self): if self.stuff is None: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.item.attributes) self.attrValues.update(self.item.attributes) elif self.isStuffItem: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.stuff.item.attributes) self.attrValues.update(self.stuff.itemModifiedAttributes) elif self.isStuffCharge: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.stuff.charge.attributes) self.attrValues.update(self.stuff.chargeModifiedAttributes) # When item for stats window no longer exists, don't change anything else: return def UpdateList(self): self.Freeze() self.paramList.DeleteRoot() self.PopulateList() self.Thaw() # self.paramList.resizeLastColumn(100) def RefreshValues(self, event): self._fetchValues() self.UpdateList() if event: event.Skip() def ToggleViewMode(self, event): self.toggleView *= -1 self.UpdateList() event.Skip() def ExportItemStats(self, event): exportFileName = self.item.name + " (" + str(self.item.ID) + ").csv" with wx.FileDialog( self, _t("Save CSV file"), "", exportFileName, _t("CSV files") + " (*.csv)|*.csv", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT ) as dlg: if dlg.ShowModal() == wx.ID_CANCEL: return # the user hit cancel... with open(dlg.GetPath(), "w") as exportFile: writer = csv.writer(exportFile, delimiter=',') writer.writerow( [ "ID", "Internal Name", "Friendly Name", "Modified Value", "Base Value", ] ) for attribute in self.attrValues: try: attribute_id = self.attrInfo[attribute].ID except (KeyError, AttributeError): attribute_id = '' try: attribute_name = self.attrInfo[attribute].name except (KeyError, AttributeError): attribute_name = attribute try: attribute_displayname = self.attrInfo[attribute].displayName except (KeyError, AttributeError): attribute_displayname = '' try: attribute_value = self.attrInfo[attribute].value except (KeyError, AttributeError): attribute_value = '' try: attribute_modified_value = self.attrValues[attribute].value except (KeyError, AttributeError): attribute_modified_value = self.attrValues[attribute] writer.writerow( [ attribute_id, attribute_name, attribute_displayname, attribute_modified_value, attribute_value, ] ) def OnUpdateStuff(self, event): if self.stuff is event.old: self.stuff = event.new def SetupImageList(self): self.imageList.RemoveAll() self.blank_icon = self.imageList.Add(BitmapLoader.getBitmap("transparent16x16", "gui")) self.unknown_icon = self.imageList.Add(BitmapLoader.getBitmap("0", "icons")) self.paramList.AssignImageList(self.imageList) def AddAttribute(self, parent, attr): display = None if isinstance(attr, tuple): display = attr[1] attr = attr[0] if attr in self.attrValues and attr not in self.processed_attribs: data = self.GetData(attr, display) if data is None: return attrIcon, attrName, currentVal, baseVal = data attr_item = self.paramList.AppendItem(parent, attrName) self.paramList.SetItemTextColour(attr_item, wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) self.paramList.SetItemText(attr_item, currentVal, 1) if self.stuff is not None: self.paramList.SetItemText(attr_item, baseVal, 2) self.paramList.SetItemImage(attr_item, attrIcon, which=wx.TreeItemIcon_Normal) self.processed_attribs.add(attr) def ExpandOrDelete(self, item): if self.paramList.GetChildrenCount(item) == 0: self.paramList.Delete(item) else: self.paramList.Expand(item) def PopulateList(self): # self.paramList.setResizeColumn(0) self.SetupImageList() self.processed_attribs = set() root = self.paramList.AddRoot("The Root Item") misc_parent = root # We must first deet4ermine if it's categorey already has defined groupings set for it. Otherwise, we default to just using the fitting group order = CategoryGroups.get(self.item.category.name, [GuiAttrGroup.FITTING, GuiAttrGroup.SHIP_GROUP]) # start building out the tree for data in [AttrGroupDict[o] for o in order]: heading = data.get("label") header_item = self.paramList.AppendItem(root, heading) self.paramList.SetItemTextColour(header_item, wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) for attr in data.get("attributes", []): # Attribute is a "grouped" attr (eg: damage, sensor strengths, etc). Automatically group these into a child item if attr in GroupedAttributes: # find which group it's in for grouping in AttrGroups: if attr in grouping[0]: break # create a child item with the groups label item = self.paramList.AppendItem(header_item, grouping[1]) self.paramList.SetItemTextColour(item, wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) for attr2 in grouping[0]: # add each attribute in the group self.AddAttribute(item, attr2) self.ExpandOrDelete(item) continue self.AddAttribute(header_item, attr) self.ExpandOrDelete(header_item) names = list(self.attrValues.keys()) names.sort() # this will take care of any attributes that weren't collected withe the defined grouping (or all attributes if the item ddidn't have anything defined) for name in names: if name in GroupedAttributes: # find which group it's in for grouping in AttrGroups: if name in grouping[0]: break # get all attributes in group item = self.paramList.AppendItem(root, grouping[1]) self.paramList.SetItemTextColour(item, wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) for attr2 in grouping[0]: self.AddAttribute(item, attr2) self.ExpandOrDelete(item) continue self.AddAttribute(root, name) self.Layout() for i in range(self.paramList.GetMainWindow().GetColumnCount()): self.paramList.SetColumnWidth(i, wx.LIST_AUTOSIZE) def GetData(self, attr, displayOveride=None): info = self.attrInfo.get(attr) att = self.attrValues[attr] # If we're working with a stuff object, we should get the original value from our getItemBaseAttrValue function, # which will return the value with respect to the effective base (with mutators / overrides in place) valDefault = getattr(info, "value", None) # Get default value from attribute if self.stuff is not None: # if it's a stuff, overwrite default (with fallback to current value) if self.isStuffItem: valDefault = self.stuff.getItemBaseAttrValue(attr, valDefault) elif self.isStuffCharge: valDefault = self.stuff.getChargeBaseAttrValue(attr, valDefault) valueDefault = valDefault if valDefault is not None else att val = getattr(att, "value", None) value = val if val is not None else att if self.toggleView == AttributeView.NORMAL and ( (attr not in GroupedAttributes and not (value or valueDefault)) or info is None or not info.published or attr in RequiredSkillAttrs): return None if info and info.displayName and self.toggleView == AttributeView.NORMAL: attrName = displayOveride or info.displayName else: attrName = attr if info and config.debug: attrName += " ({})".format(info.ID) if info: if info.iconID is not None: iconFile = info.iconID icon = BitmapLoader.getBitmap(iconFile, "icons") if icon is None: attrIcon = self.blank_icon else: attrIcon = self.imageList.Add(icon) else: attrIcon = self.unknown_icon else: attrIcon = self.unknown_icon # index = self.paramList.AppendItem(root, attrName) # idNameMap[idCount] = attrName # self.paramList.SetPyData(index, idCount) # idCount += 1 if self.toggleView == AttributeView.RAW: valueUnit = str(value) elif info and info.unit: valueUnit = self.FormatValue(*info.unit.PreformatValue(value)) else: valueUnit = formatAmount(value, 3, 0, 0) if self.toggleView == AttributeView.RAW: valueUnitDefault = str(valueDefault) elif info and info.unit: valueUnitDefault = self.FormatValue(*info.unit.PreformatValue(valueDefault)) else: valueUnitDefault = formatAmount(valueDefault, 3, 0, 0) # todo: attribute that point to another item should load that item's icon. return (attrIcon, attrName, valueUnit, valueUnitDefault) # self.paramList.SetItemText(index, valueUnit, 1) # if self.stuff is not None: # self.paramList.SetItemText(index, valueUnitDefault, 2) # self.paramList.SetItemImage(index, attrIcon, which=wx.TreeItemIcon_Normal) @staticmethod def FormatValue(value, unit, rounding='prec', digits=3): """Formats a value / unit combination into a string @todo: move this to a more central location, since this is also used in the item mutator panel""" if isinstance(value, (int, float)) and rounding == 'prec': fvalue = formatAmount(value, digits, 0, 0) elif isinstance(value, (int, float)) and rounding == 'dec': fvalue = roundDec(value, digits) else: fvalue = value unitSuffix = f' {unit}' if unit is not None else '' return f'{fvalue}{unitSuffix}' ================================================ FILE: gui/builtinItemStatsViews/itemCompare.py ================================================ # noinspection PyPackageRequirements import wx from .helpers import AutoListCtrl from service.price import Price as ServicePrice from service.market import Market from service.attribute import Attribute from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation def defaultSort(item): return (item.metaLevel or 0, item.name) class ItemCompare(wx.Panel): def __init__(self, parent, stuff, item, items, context=None): # Start dealing with Price stuff to get that thread going sPrice = ServicePrice.getInstance() sPrice.getPrices(items, self.UpdateList, fetchTimeout=90) wx.Panel.__init__(self, parent) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) mainSizer = wx.BoxSizer(wx.VERTICAL) self.paramList = AutoListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER) mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.toggleView = 1 self.stuff = stuff self.currentSort = None self.sortReverse = False self.item = item self.items = sorted(items, key=defaultSort) self.attrs = {} self.HighlightOn = wx.Colour(255, 255, 0, wx.ALPHA_OPAQUE) self.highlightedNames = [] # get a dict of attrName: attrInfo of all unique attributes across all items for item in self.items: for attr in list(item.attributes.keys()): if item.attributes[attr].info.displayName: self.attrs[attr] = item.attributes[attr].info # Process attributes for items and find ones that differ for attr in list(self.attrs.keys()): value = None for item in self.items: # we can automatically break here if this item doesn't have the attribute, # as that means at least one item did if attr not in item.attributes: break # this is the first attribute for the item set, set the initial value if value is None: value = item.attributes[attr].value continue if attr not in item.attributes or item.attributes[attr].value != value: break else: # attribute values were all the same, delete del self.attrs[attr] self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer(wx.HORIZONTAL) self.totalAttrsLabel = wx.StaticText(self, wx.ID_ANY, " ", wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) self.toggleViewBtn = wx.ToggleButton(self, wx.ID_ANY, _t("Toggle view mode"), wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.toggleViewBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.refreshBtn = wx.Button(self, wx.ID_ANY, _t("Refresh"), wx.DefaultPosition, wx.DefaultSize, wx.BU_EXACTFIT) bSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL) self.refreshBtn.Bind(wx.EVT_BUTTON, self.RefreshValues) mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT) self.PopulateList() self.toggleViewBtn.Bind(wx.EVT_TOGGLEBUTTON, self.ToggleViewMode) self.Bind(wx.EVT_LIST_COL_CLICK, self.SortCompareCols) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.HighlightRow) def HighlightRow(self, event): itemIdx = event.GetIndex() name = self.paramList.GetItem(itemIdx).Text if name in self.highlightedNames: self.highlightedNames.remove(name) else: self.highlightedNames.append(name) self.Freeze() self.paramList.ClearAll() self.PopulateList() self.Thaw() event.Skip() def SortCompareCols(self, event): self.Freeze() self.paramList.ClearAll() self.PopulateList(event.Column) self.Thaw() def UpdateList(self, items=None): # We do nothing with `items`, but it gets returned by the price service thread self.Freeze() self.paramList.ClearAll() self.PopulateList() self.Thaw() self.paramList.resizeLastColumn(100) def RefreshValues(self, event): self.UpdateList() event.Skip() def ToggleViewMode(self, event): self.toggleView *= -1 self.UpdateList() event.Skip() def processPrices(self, prices): for i, price in enumerate(prices): self.paramList.SetItem(i, len(self.attrs) + 1, formatAmount(price.value, 3, 3, 9, currency=True)) def PopulateList(self, sort=None): if sort is not None and self.currentSort == sort: self.sortReverse = not self.sortReverse else: self.currentSort = sort self.sortReverse = False if sort is not None: if sort == 0: # Name sort func = lambda _val: _val.name else: try: # Remember to reduce by 1, because the attrs array # starts at 0 while the list has the item name as column 0. attr = str(list(self.attrs.keys())[sort - 1]) func = lambda _val: _val.attributes[attr].value if attr in _val.attributes else 0.0 # Clicked on a column that's not part of our array (price most likely) except IndexError: # Price if sort == len(self.attrs) + 1: func = lambda i: i.price.price if i.price.price != 0 else float("Inf") # Something else else: self.sortReverse = False func = defaultSort self.items = sorted(self.items, key=func, reverse=self.sortReverse) self.paramList.InsertColumn(0, _t("Item")) self.paramList.SetColumnWidth(0, 200) for i, attr in enumerate(self.attrs.keys()): name = self.attrs[attr].displayName if self.attrs[attr].displayName else attr self.paramList.InsertColumn(i + 1, name) self.paramList.SetColumnWidth(i + 1, 120) self.paramList.InsertColumn(len(self.attrs) + 1, _t("Price")) self.paramList.SetColumnWidth(len(self.attrs) + 1, 60) toHighlight = [] for item in self.items: i = self.paramList.InsertItem(self.paramList.GetItemCount(), item.name) for x, attr in enumerate(self.attrs.keys()): if attr in item.attributes: info = self.attrs[attr] value = item.attributes[attr].value if self.toggleView != 1: valueUnit = str(value) elif info and info.unit and self.toggleView == 1: valueUnit = self.TranslateValueUnit(value, info.unit.displayName, info.unit.name) else: valueUnit = formatAmount(value, 3, 0, 0) self.paramList.SetItem(i, x + 1, valueUnit) # Add prices self.paramList.SetItem(i, len(self.attrs) + 1, formatAmount(item.price.price, 3, 3, 9, currency=True) if item.price.price else "") if item.name in self.highlightedNames: toHighlight.append(i) self.paramList.RefreshRows() self.Layout() # Highlight after layout, otherwise colors are getting overwritten for itemIdx in toHighlight: listItem = self.paramList.GetItem(itemIdx) listItem.SetBackgroundColour(self.HighlightOn) listItem.SetFont(listItem.GetFont().MakeBold()) self.paramList.SetItem(listItem) @staticmethod def TranslateValueUnit(value, unitName, unitDisplayName): def itemIDCallback(): item = Market.getInstance().getItem(value) return "%s (%d)" % (item.name, value) if item is not None else str(value) def groupIDCallback(): group = Market.getInstance().getGroup(value) return "%s (%d)" % (group.name, value) if group is not None else str(value) def attributeIDCallback(): attribute = Attribute.getInstance().getAttributeInfo(value) return "%s (%d)" % (attribute.name.capitalize(), value) trans = { "Inverse Absolute Percent": (lambda: (1 - value) * 100, unitName), "Inversed Modifier Percent": (lambda: (1 - value) * 100, unitName), "Modifier Percent": (lambda: ("%+.2f" if ((value - 1) * 100) % 1 else "%+d") % ((value - 1) * 100), unitName), "Volume": (lambda: value, "m\u00B3"), "Sizeclass": (lambda: value, ""), "Absolute Percent": (lambda: (value * 100), unitName), "Milliseconds": (lambda: value / 1000.0, unitName), "typeID": (itemIDCallback, ""), "groupID": (groupIDCallback, ""), "attributeID": (attributeIDCallback, "") } override = trans.get(unitDisplayName) if override is not None: v = override[0]() if isinstance(v, str): fvalue = v elif isinstance(v, (int, float)): fvalue = formatAmount(v, 3, 0, 0) else: fvalue = v return "%s %s" % (fvalue, override[1]) else: return "%s %s" % (formatAmount(value, 3, 0), unitName) ================================================ FILE: gui/builtinItemStatsViews/itemDependants.py ================================================ # noinspection PyPackageRequirements import wx from gui.bitmap_loader import BitmapLoader _t = wx.GetTranslation class ItemDependents(wx.Panel): def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL) # itemId is set by the parent. self.romanNb = ["0", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"] self.skillIdHistory = [] mainSizer = wx.BoxSizer(wx.VERTICAL) self.reqTree = wx.TreeCtrl(self, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER) mainSizer.Add(self.reqTree, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.root = self.reqTree.AddRoot("WINRARZOR") self.reqTree.SetItemData(self.root, None) self.imageList = wx.ImageList(16, 16) self.reqTree.SetImageList(self.imageList) skillBookId = self.imageList.Add(BitmapLoader.getBitmap("skill_small", "gui")) self.getFullSkillTree(item, self.root, skillBookId) self.Layout() def getFullSkillTree(self, parentSkill, parent, sbIconId): levelToItems = {} for item, level in parentSkill.requiredFor.items(): if level not in levelToItems: levelToItems[level] = [] levelToItems[level].append(item) for x in sorted(levelToItems.keys()): items = levelToItems[x] items.sort(key=lambda x: x.name) child = self.reqTree.AppendItem(parent, _t("Level {}").format(self.romanNb[int(x)]), sbIconId) for item in items: if item.iconID: bitmap = BitmapLoader.getBitmap(item.iconID, "icons") itemIcon = self.imageList.Add(bitmap) if bitmap else -1 else: itemIcon = -1 self.reqTree.AppendItem(child, "{}".format(item.name), itemIcon) ================================================ FILE: gui/builtinItemStatsViews/itemDescription.py ================================================ # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import wx.html import re _t = wx.GetTranslation class ItemDescription(wx.Panel): def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent) mainSizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(mainSizer) bgcolor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) fgcolor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) self.description = wx.html.HtmlWindow(self) if not item.description: return desc = item.description.replace("\n", "
") # Strip font tags desc = re.sub("<( *)font( *)color( *)=(.*?)>(?P.*?)<( *)/( *)font( *)>", r"\g", desc) # Strip URLs desc = re.sub("<( *)a(.*?)>(?P.*?)<( *)/( *)a( *)>", r"\g", desc) desc = "{}".format( bgcolor.GetAsString(wx.C2S_HTML_SYNTAX), fgcolor.GetAsString(wx.C2S_HTML_SYNTAX), desc ) self.description.SetPage(desc) mainSizer.Add(self.description, 1, wx.ALL | wx.EXPAND, 0) self.Layout() self.description.Bind(wx.EVT_CONTEXT_MENU, self.onPopupMenu) self.description.Bind(wx.EVT_KEY_UP, self.onKeyUp) self.popupMenu = wx.Menu() copyItem = wx.MenuItem(self.popupMenu, 1, _t('Copy')) self.popupMenu.Append(copyItem) self.popupMenu.Bind(wx.EVT_MENU, self.menuClickHandler, copyItem) def onPopupMenu(self, event): self.PopupMenu(self.popupMenu) def menuClickHandler(self, event): selectedMenuItem = event.GetId() if selectedMenuItem == 1: # Copy was chosen self.copySelectionToClipboard() def onKeyUp(self, event): keyCode = event.GetKeyCode() # Ctrl + C if keyCode == 67 and event.ControlDown(): self.copySelectionToClipboard() # Ctrl + A if keyCode == 65 and event.ControlDown(): self.description.SelectAll() def copySelectionToClipboard(self): selectedText = self.description.SelectionToText() if selectedText == '': # if no selection, copy all content selectedText = self.description.ToText() if wx.TheClipboard.Open(): wx.TheClipboard.SetData(wx.TextDataObject(selectedText)) wx.TheClipboard.Close() ================================================ FILE: gui/builtinItemStatsViews/itemEffects.py ================================================ import os import subprocess import config # noinspection PyPackageRequirements import wx from .helpers import AutoListCtrl _t = wx.GetTranslation class ItemEffects(wx.Panel): def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent) self.item = item mainSizer = wx.BoxSizer(wx.VERTICAL) self.effectList = AutoListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER) mainSizer.Add(self.effectList, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnClick, self.effectList) self.PopulateList() def PopulateList(self): self.effectList.InsertColumn(0, _t("Name")) self.effectList.InsertColumn(1, _t("Active")) self.effectList.InsertColumn(2, _t("Type")) if config.debug: self.effectList.InsertColumn(3, _t("Run Time")) self.effectList.InsertColumn(4, _t("ID")) # self.effectList.SetColumnWidth(0,385) self.effectList.setResizeColumn(0) self.effectList.SetColumnWidth(1, 50) self.effectList.SetColumnWidth(2, 80) if config.debug: self.effectList.SetColumnWidth(3, 65) self.effectList.SetColumnWidth(4, 40) item = self.item self.effects = effects = item.effects names = list(effects.keys()) names.sort() for name in names: index = self.effectList.InsertItem(self.effectList.GetItemCount(), name) if effects[name].isImplemented: if effects[name].activeByDefault: activeByDefault = _t("Yes") else: activeByDefault = _t("No") else: activeByDefault = "" effectTypeText = "" if effects[name].type: for effectType in effects[name].type: effectTypeText += effectType + " " pass if effects[name].runTime and effects[name].isImplemented: effectRunTime = str(effects[name].runTime) else: effectRunTime = "" self.effectList.SetItem(index, 1, activeByDefault) self.effectList.SetItem(index, 2, effectTypeText) if config.debug: self.effectList.SetItem(index, 3, effectRunTime) self.effectList.SetItem(index, 4, str(effects[name].ID)) self.effectList.RefreshRows() self.Layout() def OnClick(self, event): """ Debug use: toggle effects on/off. Affects *ALL* items that use that effect. Is not stateful. Will reset if Pyfa is closed and reopened. """ try: activeByDefault = getattr(self.item.effects[event.GetText()], "activeByDefault") if activeByDefault: setattr(self.item.effects[event.GetText()], "activeByDefault", False) else: setattr(self.item.effects[event.GetText()], "activeByDefault", True) except AttributeError: # Attribute doesn't exist, do nothing pass self.RefreshValues(event) def RefreshValues(self, event): self.Freeze() self.effectList.ClearAll() self.PopulateList() self.effectList.RefreshRows() self.Layout() self.Thaw() event.Skip() ================================================ FILE: gui/builtinItemStatsViews/itemMutator.py ================================================ # noinspection PyPackageRequirements import random import wx from logbook import Logger import gui.fitCommands as cmd import gui.globalEvents as GE import gui.mainFrame from gui.bitmap_loader import BitmapLoader from service.fit import Fit from .attributeSlider import AttributeSlider, EVT_VALUE_CHANGED from .itemAttributes import ItemParams pyfalog = Logger(__name__) _t = wx.GetTranslation class ItemMutatorPanel(wx.Panel): def __init__(self, parent, stuff): wx.Panel.__init__(self, parent) self.stuff = stuff self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) mainSizer = wx.BoxSizer(wx.VERTICAL) headerSizer = wx.BoxSizer(wx.HORIZONTAL) headerSizer.AddStretchSpacer() itemIcon = BitmapLoader.getStaticBitmap(stuff.item.iconID, self, "icons") if itemIcon is not None: headerSizer.Add(itemIcon, 0, 0, 0) mutaIcon = BitmapLoader.getStaticBitmap(stuff.mutaplasmid.item.iconID, self, "icons") if mutaIcon is not None: headerSizer.Add(mutaIcon, 0, wx.LEFT, 0) sourceItemText = wx.StaticText(self, wx.ID_ANY, stuff.fullName) font = parent.GetFont() font.SetWeight(wx.BOLD) sourceItemText.SetFont(font) headerSizer.Add(sourceItemText, 0, wx.LEFT, 10) headerSizer.AddStretchSpacer() mainSizer.Add(headerSizer, 0, wx.ALL | wx.EXPAND, 5) mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 0) self.mutaList = ItemMutatorList(self, stuff) mainSizer.Add(self.mutaList, 1, wx.EXPAND | wx.ALL, 0) mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 0) footerSizer = wx.BoxSizer(wx.HORIZONTAL) self.refreshBtn = wx.Button(self, wx.ID_ANY, _t("Reset defaults"), wx.DefaultPosition, wx.DefaultSize, 0) footerSizer.Add(self.refreshBtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5) self.refreshBtn.Bind(wx.EVT_BUTTON, self.mutaList.resetMutatedValues) self.randomBtn = wx.Button(self, wx.ID_ANY, _t("Random stats"), wx.DefaultPosition, wx.DefaultSize, 0) footerSizer.Add(self.randomBtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5) self.randomBtn.Bind(wx.EVT_BUTTON, self.mutaList.randomMutatedValues) self.revertBtn = wx.Button(self, wx.ID_ANY, _t("Revert changes"), wx.DefaultPosition, wx.DefaultSize, 0) footerSizer.Add(self.revertBtn, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 5) self.revertBtn.Bind(wx.EVT_BUTTON, self.mutaList.revertChanges) mainSizer.Add(footerSizer, 0, wx.ALL | wx.EXPAND, 5) self.SetSizer(mainSizer) self.Layout() def OnWindowClose(self): self.mutaList.OnWindowClose() class ItemMutatorList(wx.ScrolledWindow): def __init__(self, parent, stuff): wx.ScrolledWindow.__init__(self, parent) self.SetScrollRate(0, 15) self.carryingFitID = gui.mainFrame.MainFrame.getInstance().getActiveFit() self.initialMutations = {} self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) self.stuff = stuff self.timer = None self.isModified = False goodColor = wx.Colour(96, 191, 0) badColor = wx.Colour(255, 64, 0) font = parent.GetFont() font.SetWeight(wx.BOLD) sizer = wx.BoxSizer(wx.VERTICAL) self.event_mapping = {} higOverrides = { ('Stasis Web', 'speedFactor'): False, ('Damage Control', 'duration'): True, ('Siege Module', 'siegeLocalLogisticsDurationBonus'): False } first = True for m in sorted(stuff.mutators.values(), key=lambda x: x.attribute.displayName): if m.baseValue == 0: continue if not first: sizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.ALL | wx.EXPAND, 5) first = False self.initialMutations[m.attrID] = m.value highIsGood = higOverrides.get((stuff.item.group.name, m.attribute.name), m.highIsGood) # Format: [raw value, modifier applied to base raw value, display value] range1 = (m.minValue, self._simplifyValue(m, m.minValue)) range2 = (m.maxValue, self._simplifyValue(m, m.maxValue)) # minValue/maxValue do not always correspond to min/max, because these are # just base value multiplied by minMod/maxMod, and in case base is negative # minValue is actually bigger than maxValue if range1[0] <= range2[0]: minRange = range1 maxRange = range2 else: minRange = range2 maxRange = range1 if (highIsGood and minRange[0] >= maxRange[0]) or (not highIsGood and minRange[0] <= maxRange[0]): betterRange = minRange worseRange = maxRange else: betterRange = maxRange worseRange = minRange if minRange[1] >= maxRange[1]: displayMaxRange = minRange displayMinRange = maxRange else: displayMaxRange = maxRange displayMinRange = minRange # If base value is outside of mutation range, make sure that center of slider # corresponds to the value which is closest available to actual base value. It's # how EVE handles it if minRange[0] <= m.baseValue <= maxRange[0]: sliderBaseValue = m.baseValue else: sliderBaseValue = max(minRange[0], min(maxRange[0], m.baseValue)) headingSizer = wx.BoxSizer(wx.HORIZONTAL) headingSizer.Add(BitmapLoader.getStaticBitmap(m.attribute.iconID, self, "icons"), 0, wx.RIGHT, 10) displayName = wx.StaticText(self, wx.ID_ANY, m.attribute.displayName) displayName.SetFont(font) headingSizer.Add(displayName, 3, wx.ALL | wx.EXPAND, 0) worseVal = ItemParams.FormatValue(*self._preformatValue(m, worseRange[0]), rounding='dec') worseText = wx.StaticText(self, wx.ID_ANY, worseVal) worseText.SetForegroundColour(badColor) betterVal = ItemParams.FormatValue(*self._preformatValue(m, betterRange[0]), rounding='dec') betterText = wx.StaticText(self, wx.ID_ANY, betterVal) betterText.SetForegroundColour(goodColor) headingSizer.Add(worseText, 0, wx.ALL | wx.EXPAND, 0) headingSizer.Add(wx.StaticText(self, wx.ID_ANY, " ─ "), 0, wx.RIGHT | wx.LEFT | wx.EXPAND, 5) headingSizer.Add(betterText, 0, wx.RIGHT | wx.EXPAND, 10) sizer.Add(headingSizer, 0, wx.ALL | wx.EXPAND, 5) slider = AttributeSlider(parent=self, baseValue=self._simplifyValue(m, sliderBaseValue), minValue=displayMinRange[1], maxValue=displayMaxRange[1], inverse=displayMaxRange is worseRange) slider.SetValue(self._simplifyValue(m, m.value), False) slider.Bind(EVT_VALUE_CHANGED, self.changeMutatedValue) self.event_mapping[slider] = m sizer.Add(slider, 0, wx.RIGHT | wx.LEFT | wx.EXPAND, 10) self.SetSizer(sizer) def _simplifyValue(self, mutator, value): if mutator.attribute.unit is None: return value return mutator.attribute.unit.SimplifyValue(value) def _complicateValue(self, mutator, value): if mutator.attribute.unit is None: return value return mutator.attribute.unit.ComplicateValue(value) def _preformatValue(self, mutator, value): if mutator.attribute.unit is None: return value, None return mutator.attribute.unit.PreformatValue(value) def changeMutatedValue(self, evt): if evt.AffectsModifiedFlag: self.isModified = True m = self.event_mapping[evt.Object] value = evt.Value value = self._complicateValue(m, value) sFit = Fit.getInstance() sFit.changeMutatedValuePrelim(m, value) if self.timer: self.timer.Stop() self.timer = None for x in self.Parent.Parent.Children: if isinstance(x, ItemParams): x.RefreshValues(None) break self.timer = wx.CallLater(1000, self.callLater) def resetMutatedValues(self, evt): self.isModified = True sFit = Fit.getInstance() for slider, m in self.event_mapping.items(): value = sFit.changeMutatedValuePrelim(m, m.baseValue) value = self._simplifyValue(m, value) slider.SetValue(value, affect_modified_flag=False) evt.Skip() def randomMutatedValues(self, evt): self.isModified = True sFit = Fit.getInstance() for slider, m in self.event_mapping.items(): value = random.uniform(m.minValue, m.maxValue) value = sFit.changeMutatedValuePrelim(m, value) value = self._simplifyValue(m, value) slider.SetValue(value, affect_modified_flag=False) evt.Skip() def revertChanges(self, evt): self.isModified = False sFit = Fit.getInstance() for slider, m in self.event_mapping.items(): if m.attrID in self.initialMutations: value = sFit.changeMutatedValuePrelim(m, self.initialMutations[m.attrID]) value = self._simplifyValue(m, value) slider.SetValue(value, affect_modified_flag=False) evt.Skip() def OnWindowClose(self): # Submit mutation changes sFit = Fit.getInstance() fit = sFit.getFit(self.carryingFitID) isCurrentMod = self.stuff in fit.modules isCurrentDrone = self.stuff in fit.drones if isCurrentMod or isCurrentDrone: if self.isModified: currentMutation = {} for slider, m in self.event_mapping.items(): # Sliders may have more up-to-date info than mutator in case we changed # value in slider and without confirming it, decided to close window value = slider.GetValue() value = self._complicateValue(m, value) if value != m.value: value = sFit.changeMutatedValuePrelim(m, value) currentMutation[m.attrID] = value else: currentMutation = self.initialMutations mainFrame = gui.mainFrame.MainFrame.getInstance() if isCurrentMod: mainFrame.getCommandForFit(self.carryingFitID).Submit(cmd.GuiChangeLocalModuleMutationCommand( fitID=self.carryingFitID, position=fit.modules.index(self.stuff), mutation=currentMutation, oldMutation=self.initialMutations)) elif isCurrentDrone: mainFrame.getCommandForFit(self.carryingFitID).Submit(cmd.GuiChangeLocalDroneMutationCommand( fitID=self.carryingFitID, position=fit.drones.index(self.stuff), mutation=currentMutation, oldMutation=self.initialMutations)) for slider in self.event_mapping: slider.OnWindowClose() def callLater(self): self.timer = None sFit = Fit.getInstance() # recalc the fit that this module affects. This is not necessarily the currently active fit sFit.refreshFit(self.carryingFitID) mainFrame = gui.mainFrame.MainFrame.getInstance() activeFit = mainFrame.getActiveFit() if activeFit != self.carryingFitID: # if we're no longer on the fit this module is affecting, simulate a "switch fit" so that the active fit # can be recalculated (if needed) sFit.switchFit(activeFit) # Send signal to GUI to update stats with current active fit wx.PostEvent(mainFrame, GE.FitChanged(fitIDs=(activeFit,))) ================================================ FILE: gui/builtinItemStatsViews/itemProperties.py ================================================ # noinspection PyPackageRequirements import wx from .helpers import AutoListCtrl _t = wx.GetTranslation class ItemProperties(wx.Panel): def __init__(self, parent, stuff, item, context=None): wx.Panel.__init__(self, parent) mainSizer = wx.BoxSizer(wx.VERTICAL) self.paramList = AutoListCtrl(self, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES | wx.NO_BORDER) mainSizer.Add(self.paramList, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.toggleView = 1 self.stuff = stuff self.item = item self.attrInfo = {} self.attrValues = {} self._fetchValues() self.m_staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline, 0, wx.EXPAND) bSizer = wx.BoxSizer(wx.HORIZONTAL) self.totalAttrsLabel = wx.StaticText(self, wx.ID_ANY, " ", wx.DefaultPosition, wx.DefaultSize, 0) bSizer.Add(self.totalAttrsLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT) mainSizer.Add(bSizer, 0, wx.ALIGN_RIGHT) self.PopulateList() def _fetchValues(self): if self.stuff is None: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.item.attributes) self.attrValues.update(self.item.attributes) elif self.stuff.item == self.item: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.stuff.item.attributes) self.attrValues.update(self.stuff.itemModifiedAttributes) elif self.stuff.charge == self.item: self.attrInfo.clear() self.attrValues.clear() self.attrInfo.update(self.stuff.charge.attributes) self.attrValues.update(self.stuff.chargeModifiedAttributes) # When item for stats window no longer exists, don't change anything else: return def PopulateList(self): self.paramList.InsertColumn(0, _t("Attribute")) self.paramList.InsertColumn(1, _t("Current Value")) self.paramList.SetColumnWidth(0, 110) self.paramList.SetColumnWidth(1, 1500) self.paramList.setResizeColumn(0) if self.stuff: names = dir(self.stuff) else: names = dir(self.item) names = [a for a in names if not (a.startswith('__') and a.endswith('__'))] idNameMap = {} idCount = 0 for name in names: try: if self.stuff: attrName = name.title() value = getattr(self.stuff, name) else: attrName = name.title() value = getattr(self.item, name) index = self.paramList.InsertItem(self.paramList.GetItemCount(), attrName) # index = self.paramList.InsertImageStringItem(sys.maxint, attrName) idNameMap[idCount] = attrName self.paramList.SetItemData(index, idCount) idCount += 1 valueUnit = str(value) self.paramList.SetItem(index, 1, valueUnit) except (KeyboardInterrupt, SystemExit): raise except: # TODO: Add logging to this. # We couldn't get a property for some reason. Skip it for now. continue self.paramList.SortItems(lambda id1, id2: (idNameMap[id1] > idNameMap[id2]) - (idNameMap[id1] < idNameMap[id2])) self.paramList.RefreshRows() self.totalAttrsLabel.SetLabel(_t("%d attribute.", "%d attributes.", idCount) % idCount) self.Layout() ================================================ FILE: gui/builtinItemStatsViews/itemRequirements.py ================================================ # noinspection PyPackageRequirements import wx from gui.bitmap_loader import BitmapLoader class ItemRequirements(wx.Panel): def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL) # itemId is set by the parent. self.romanNb = ["0", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"] self.skillIdHistory = [] mainSizer = wx.BoxSizer(wx.VERTICAL) self.reqTree = wx.TreeCtrl(self, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT | wx.NO_BORDER) mainSizer.Add(self.reqTree, 1, wx.ALL | wx.EXPAND, 0) self.SetSizer(mainSizer) self.root = self.reqTree.AddRoot("WINRARZOR") self.reqTree.SetItemData(self.root, None) self.imageList = wx.ImageList(16, 16) self.reqTree.SetImageList(self.imageList) skillBookId = self.imageList.Add(BitmapLoader.getBitmap("skill_small", "gui")) self.getFullSkillTree(item, self.root, skillBookId) self.reqTree.ExpandAll() self.Layout() def getFullSkillTree(self, parentSkill, parent, sbIconId): for skill, level in parentSkill.requiredSkills.items(): child = self.reqTree.AppendItem(parent, "%s %s" % (skill.name, self.romanNb[int(level)]), sbIconId) if skill.ID not in self.skillIdHistory: self.getFullSkillTree(skill, child, sbIconId) self.skillIdHistory.append(skill.ID) ================================================ FILE: gui/builtinItemStatsViews/itemTraits.py ================================================ # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import wx.html _t = wx.GetTranslation class ItemTraits(wx.Panel): def __init__(self, parent, stuff, item): wx.Panel.__init__(self, parent) mainSizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(mainSizer) self.traits = wx.html.HtmlWindow(self) bgcolor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) fgcolor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) self.traits.SetPage("{}".format( bgcolor.GetAsString(wx.C2S_HTML_SYNTAX), fgcolor.GetAsString(wx.C2S_HTML_SYNTAX), item.traits.display)) self.traits.Bind(wx.EVT_CONTEXT_MENU, self.onPopupMenu) self.traits.Bind(wx.EVT_KEY_UP, self.onKeyUp) mainSizer.Add(self.traits, 1, wx.ALL | wx.EXPAND, 0) self.Layout() self.popupMenu = wx.Menu() copyItem = wx.MenuItem(self.popupMenu, 1, _t('Copy')) self.popupMenu.Append(copyItem) self.popupMenu.Bind(wx.EVT_MENU, self.menuClickHandler, copyItem) def onPopupMenu(self, event): self.PopupMenu(self.popupMenu) def menuClickHandler(self, event): selectedMenuItem = event.GetId() if selectedMenuItem == 1: # Copy was chosen self.copySelectionToClipboard() def onKeyUp(self, event): keyCode = event.GetKeyCode() # Ctrl + C if keyCode == 67 and event.ControlDown(): self.copySelectionToClipboard() # Ctrl + A if keyCode == 65 and event.ControlDown(): self.traits.SelectAll() def copySelectionToClipboard(self): selectedText = self.traits.SelectionToText() if selectedText == '': # if no selection, copy all content selectedText = self.traits.ToText() if wx.TheClipboard.Open(): wx.TheClipboard.SetData(wx.TextDataObject(selectedText)) wx.TheClipboard.Close() ================================================ FILE: gui/builtinMarketBrowser/__init__.py ================================================ ================================================ FILE: gui/builtinMarketBrowser/events.py ================================================ # noinspection PyPackageRequirements import wx.lib.newevent ItemSelected, ITEM_SELECTED = wx.lib.newevent.NewEvent() RECENTLY_USED_MODULES = -2 CHARGES_FOR_FIT = -3 ================================================ FILE: gui/builtinMarketBrowser/itemView.py ================================================ import wx from logbook import Logger import gui.builtinMarketBrowser.pfSearchBox as SBox import gui.globalEvents as GE from config import slotColourMap, slotColourMapDark from eos.saveddata.module import Module from gui.builtinMarketBrowser.events import ItemSelected, RECENTLY_USED_MODULES, CHARGES_FOR_FIT from gui.contextMenu import ContextMenu from gui.display import Display from gui.utils.staticHelpers import DragDropHelper from gui.utils.dark import isDark from service.fit import Fit from service.market import Market from service.ammo import Ammo pyfalog = Logger(__name__) class ItemView(Display): DEFAULT_COLS = ["Base Icon", "Base Name", "attr:power,,,True", "attr:cpu,,,True"] def __init__(self, parent, marketBrowser): Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) pyfalog.debug("Initialize ItemView") marketBrowser.Bind(wx.EVT_TREE_SEL_CHANGED, self.treeSelectionChanged) self.unfilteredStore = set() self.filteredStore = set() self.sMkt = marketBrowser.sMkt self.sFit = Fit.getInstance() self.sAmmo = Ammo.getInstance() self.marketBrowser = marketBrowser self.marketView = marketBrowser.marketView # Set up timer for delaying search on every EVT_TEXT self.searchTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.scheduleSearch, self.searchTimer) # Make sure our search actually does interesting stuff self.marketBrowser.search.Bind(SBox.EVT_TEXT_ENTER, self.scheduleSearch) self.marketBrowser.search.Bind(SBox.EVT_SEARCH_BTN, self.scheduleSearch) self.marketBrowser.search.Bind(SBox.EVT_CANCEL_BTN, self.clearSearch) self.marketBrowser.search.Bind(SBox.EVT_TEXT, self.delaySearch) # Make sure WE do interesting stuff too self.Bind(wx.EVT_CONTEXT_MENU, self.contextMenu) self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemActivated) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) # the "charges for active fitting" needs to listen to fitting changes self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.active = [] def delaySearch(self, evt): sFit = Fit.getInstance() self.searchTimer.Stop() self.searchTimer.Start(sFit.serviceFittingOptions["marketSearchDelay"], True) def startDrag(self, event): row = self.GetFirstSelected() if row != -1: data = wx.TextDataObject() dataStr = "market:" + str(self.active[row].ID) pyfalog.debug("Dragging from market: " + dataStr) data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) DragDropHelper.data = dataStr dropSource.DoDragDrop() def itemActivated(self, event=None): # Check if something is selected, if so, spawn the menu for it sel = self.GetFirstSelected() if sel == -1: return if self.mainFrame.getActiveFit(): wx.PostEvent(self.mainFrame, ItemSelected(itemID=self.active[sel].ID)) def treeSelectionChanged(self, event=None): self.selectionMade('tree') def selectionMade(self, context): self.marketBrowser.mode = 'normal' # Grab the threeview selection and check if it's fine sel = self.marketView.GetSelection() if sel.IsOk(): # Get data field of the selected item (which is a marketGroup ID if anything was selected) seldata = self.marketView.GetItemData(sel) if seldata == RECENTLY_USED_MODULES: items = self.sMkt.getRecentlyUsed() elif seldata == CHARGES_FOR_FIT: items = self.getChargesForActiveFit() elif seldata is not None: # If market group treeview item doesn't have children (other market groups or dummies), # then it should have items in it and we want to request them if self.marketView.ItemHasChildren(sel) is False: sMkt = self.sMkt # Get current market group mg = sMkt.getMarketGroup(seldata, eager=("items", "items.metaGroup")) # Get all its items items = sMkt.getItemsByMarketGroup(mg) else: items = set() else: items = set() # Fill store self.updateItemStore(items) # Set toggle buttons / use search mode flag if recently used modules category is selected (in order to have all modules listed and not filtered) if seldata == RECENTLY_USED_MODULES: self.marketBrowser.mode = 'recent' if seldata == CHARGES_FOR_FIT: self.marketBrowser.mode = 'charges' self.setToggles() if context == 'tree' and self.marketBrowser.settings.get('marketMGMarketSelectMode') == 1: for btn in self.marketBrowser.metaButtons: if not btn.GetValue(): btn.setUserSelection(True) self.filterItemStore() def getChargesForActiveFit(self): fitId = self.mainFrame.getActiveFit() # no active fit => no charges if fitId is None: return set() fit = self.sFit.getFit(fitId) # use a set so we only add one entry for each charge items = set() for mod in fit.modules: charges = self.sAmmo.getModuleFlatAmmo(mod) for charge in charges: items.add(charge) return items def fitChanged(self, event): # skip the event so the other handlers also get called event.Skip() if self.marketBrowser.mode != 'charges': return activeFitID = self.mainFrame.getActiveFit() # if it was not the active fitting that was changed, do not do anything if activeFitID is not None and activeFitID not in event.fitIDs: return items = self.getChargesForActiveFit() # update the UI self.updateItemStore(items) self.filterItemStore() def updateItemStore(self, items): self.unfilteredStore = items def filterItemStore(self): filteredItems = self.filterItems() if len(filteredItems) == 0 and len(self.unfilteredStore) > 0: setting = self.marketBrowser.settings.get('marketMGEmptyMode') # Enable leftmost available if setting == 1: for btn in self.marketBrowser.metaButtons: if btn.IsEnabled() and not btn.userSelected: btn.setUserSelection(True) break filteredItems = self.filterItems() # Enable all elif setting == 2: for btn in self.marketBrowser.metaButtons: if btn.IsEnabled() and not btn.userSelected: btn.setUserSelection(True) filteredItems = self.filterItems() self.filteredStore = filteredItems self.update(self.filteredStore) def filterItems(self): sMkt = self.sMkt selectedMetas = set() for btn in self.marketBrowser.metaButtons: if btn.userSelected: selectedMetas.update(sMkt.META_MAP[btn.metaName]) filteredItems = sMkt.filterItemsByMeta(self.unfilteredStore, selectedMetas) return filteredItems def setToggles(self): metaIDs = set() sMkt = self.sMkt for item in self.unfilteredStore: metaIDs.add(sMkt.getMetaGroupIdByItem(item)) for btn in self.marketBrowser.metaButtons: btn.reset() btnMetas = sMkt.META_MAP[btn.metaName] if len(metaIDs.intersection(btnMetas)) > 0: btn.setMetaAvailable(True) else: btn.setMetaAvailable(False) def scheduleSearch(self, event=None): self.searchTimer.Stop() # Cancel any pending timers search = self.marketBrowser.search.GetLineText(0) # Make sure we do not count wildcards as search symbol realsearch = search.replace('*', '').replace('?', '') # Re-select market group if search query has zero length if len(realsearch) == 0: self.selectionMade('search') return self.marketBrowser.mode = 'search' self.sMkt.searchItems(search, self.populateSearch, 'market') def clearSearch(self, event=None): # Wipe item store and update everything to accomodate with it # If clearSearch was generated by SearchCtrl's Cancel button, clear the content also if event: self.marketBrowser.search.Clear() if self.marketBrowser.mode == 'search': self.marketBrowser.mode = 'normal' self.updateItemStore(set()) self.setToggles() self.filterItemStore() def populateSearch(self, itemIDs): # If we're no longer searching, dump the results if self.marketBrowser.mode != 'search': return items = Market.getItems(itemIDs) self.updateItemStore(items) self.setToggles() self.filterItemStore() def contextMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) # Check if something is selected, if so, spawn the menu for it if clickedPos == -1: return item = self.active[clickedPos] sMkt = self.sMkt sourceContext = "marketItemMisc" if self.marketBrowser.mode in ("search", "recent") else "marketItemGroup" itemContext = sMkt.getCategoryByItem(item).displayName menu = ContextMenu.getMenu(self, item, (item,), (sourceContext, itemContext)) self.PopupMenu(menu) def populate(self, items): if len(items) > 0: # Clear selection self.unselectAll() # Perform sorting, using item's meta levels besides other stuff if self.marketBrowser.mode != 'recent': items.sort(key=self.sMkt.itemSort) # Mark current item list as active self.active = items # Show them Display.populate(self, items) def refresh(self, items): if len(items) > 1: # Re-sort stuff if self.marketBrowser.mode != 'recent': items.sort(key=self.sMkt.itemSort) for i, item in enumerate(items[:9]): # set shortcut info for first 9 modules item.marketShortcut = i + 1 Display.refresh(self, items) def columnBackground(self, colItem, item): if self.sFit.serviceFittingOptions["colorFitBySlot"]: colorMap = slotColourMapDark if isDark() else slotColourMap return colorMap.get(Module.calculateSlot(item)) or self.GetBackgroundColour() else: return self.GetBackgroundColour() ================================================ FILE: gui/builtinMarketBrowser/marketTree.py ================================================ import wx from gui.cachingImageList import CachingImageList from gui.builtinMarketBrowser.events import RECENTLY_USED_MODULES, CHARGES_FOR_FIT from logbook import Logger pyfalog = Logger(__name__) _t = wx.GetTranslation class MarketTree(wx.TreeCtrl): def __init__(self, parent, marketBrowser): wx.TreeCtrl.__init__(self, parent, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) pyfalog.debug("Initialize marketTree") self.root = self.AddRoot("root") self.imageList = CachingImageList(16, 16) self.SetImageList(self.imageList) self.sMkt = marketBrowser.sMkt self.marketBrowser = marketBrowser # Form market tree root sMkt = self.sMkt for mktGrp in sMkt.getMarketRoot(): iconId = self.addImage(sMkt.getIconByMarketGroup(mktGrp)) childId = self.AppendItem(self.root, mktGrp.name, iconId, data=mktGrp.ID) # All market groups which were never expanded are dummies, here we assume # that all root market groups are expandable self.AppendItem(childId, "dummy") self.SortChildren(self.root) # Add recently used modules node rumIconId = self.addImage("market_small", "gui") self.AppendItem(self.root, _t("Recently Used Items"), rumIconId, data=RECENTLY_USED_MODULES) # Add charges for active fitting node cffIconId = self.addImage("damagePattern_small", "gui") self.AppendItem(self.root, _t("Charges For Active Fit"), cffIconId, data=CHARGES_FOR_FIT) # Bind our lookup method to when the tree gets expanded self.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnCollapsed) def addImage(self, iconFile, location="icons"): if iconFile is None: return -1 return self.imageList.GetImageIndex(iconFile, location) def expandLookup(self, event): """Process market tree expands""" root = event.Item child = self.GetFirstChild(root)[0] # If child of given market group is a dummy if self.GetItemText(child) == "dummy": # Delete it self.Delete(child) # And add real market group contents sMkt = self.sMkt currentMktGrp = sMkt.getMarketGroup(self.GetItemData(root), eager="children") for childMktGrp in sMkt.getMarketGroupChildren(currentMktGrp): # If market should have items but it doesn't, do not show it if sMkt.marketGroupValidityCheck(childMktGrp) is False: continue icon = sMkt.getIconByMarketGroup(childMktGrp) iconId = -1 if icon is None else self.addImage(icon) try: childId = self.AppendItem(root, childMktGrp.name, iconId, data=childMktGrp.ID) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.debug("Error appending item.") pyfalog.debug(e) continue if sMkt.marketGroupHasTypesCheck(childMktGrp) is False: self.AppendItem(childId, "dummy") self.SortChildren(root) def OnCollapsed(self, event): self.CollapseAllChildren(event.Item) event.Skip() def jump(self, item): """Open market group and meta tab of given item""" sMkt = self.sMkt mg = sMkt.getMarketGroupByItem(item) jumpList = [] while mg is not None: jumpList.append(mg.ID) mg = mg.parent for id in sMkt.ROOT_MARKET_GROUPS: if id in jumpList: jumpList = jumpList[:jumpList.index(id) + 1] item = self.root for i in range(len(jumpList) - 1, -1, -1): target = jumpList[i] child, cookie = self.GetFirstChild(item) while self.GetItemData(child) != target: child, cookie = self.GetNextChild(item, cookie) item = child self.Expand(item) self.SelectItem(item) ================================================ FILE: gui/builtinMarketBrowser/metaButton.py ================================================ import wx from logbook import Logger pyfalog = Logger(__name__) class MetaButton(wx.ToggleButton): def __init__(self, *args, **kwargs): super(MetaButton, self).__init__(*args, **kwargs) self.setUserSelection(True) def setUserSelection(self, isSelected): self.userSelected = isSelected self.SetValue(isSelected) def setMetaAvailable(self, isAvailable): self.Enable(isAvailable) # need to also SetValue(False) for windows because Enabled=False AND SetValue(True) looks enabled. if not isAvailable and "wxMSW" in wx.PlatformInfo: self.SetValue(False) def reset(self): self.Enable(True) self.SetValue(self.userSelected) ================================================ FILE: gui/builtinMarketBrowser/pfSearchBox.py ================================================ # noinspection PyPackageRequirements import wx import gui.utils.color as colorUtils import gui.utils.draw as drawUtils from gui.utils.helpers_wxPython import HandleCtrlBackspace SearchButton, EVT_SEARCH_BTN = wx.lib.newevent.NewEvent() CancelButton, EVT_CANCEL_BTN = wx.lib.newevent.NewEvent() TextEnter, EVT_TEXT_ENTER = wx.lib.newevent.NewEvent() TextTyped, EVT_TEXT = wx.lib.newevent.NewEvent() class PFSearchBox(wx.Window): def __init__(self, parent, id=wx.ID_ANY, value="", pos=wx.DefaultPosition, size=wx.Size(-1, 24), style=0): wx.Window.__init__(self, parent, id, pos, size, style=style) self.isSearchButtonVisible = False self.isCancelButtonVisible = False self.descriptiveText = "Search" self.searchBitmap = None self.cancelBitmap = None self.bkBitmap = None self.resized = True self.searchButtonX = 0 self.searchButtonY = 0 self.searchButtonPressed = False self.cancelButtonX = 0 self.cancelButtonY = 0 self.cancelButtonPressed = False self.editX = 0 self.editY = 0 self.padding = 4 self._hl = False w, h = size self.EditBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1), wx.TE_PROCESS_ENTER | (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0)) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBk) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) # self.EditBox.ChangeValue(self.descriptiveText) self.EditBox.Bind(wx.EVT_SET_FOCUS, self.OnEditSetFocus) self.EditBox.Bind(wx.EVT_KILL_FOCUS, self.OnEditKillFocus) self.EditBox.Bind(wx.EVT_KEY_DOWN, self.OnKeyPress) self.EditBox.Bind(wx.EVT_TEXT, self.OnText) self.EditBox.Bind(wx.EVT_TEXT_ENTER, self.OnTextEnter) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) self.SetMinSize(size) def OnText(self, event): wx.PostEvent(self, TextTyped()) event.Skip() def OnTextEnter(self, event): wx.PostEvent(self, TextEnter()) event.Skip() @staticmethod def OnEditSetFocus(event): # value = self.EditBox.GetValue() # if value == self.descriptiveText: # self.EditBox.ChangeValue("") event.Skip() def OnEditKillFocus(self, event): if self.EditBox.GetValue() == "": self.Clear() event.Skip() def OnKeyPress(self, event): if event.RawControlDown() and event.GetKeyCode() == wx.WXK_BACK: HandleCtrlBackspace(self.EditBox) else: event.Skip() def Clear(self): self.EditBox.Clear() # self.EditBox.ChangeValue(self.descriptiveText) def Focus(self): self.EditBox.SetFocus() def SetValue(self, value): self.EditBox.SetValue(value) def ChangeValue(self, value): self.EditBox.ChangeValue(value) def GetValue(self): return self.EditBox.GetValue() def GetLineText(self, lineno): return self.EditBox.GetLineText(lineno) def HitTest(self, target, position, area): x, y = target px, py = position aX, aY = area if (x < px < x + aX) and (y < py < y + aY): return True return False def GetButtonsPos(self): btnpos = [ (self.searchButtonX, self.searchButtonY), (self.cancelButtonX, self.cancelButtonY) ] return btnpos def GetButtonsSize(self): btnsize = [] if self.searchBitmap: sw = self.searchBitmap.GetWidth() sh = self.searchBitmap.GetHeight() else: sw = 0 sh = 0 if self.cancelBitmap: cw = self.cancelBitmap.GetWidth() ch = self.cancelBitmap.GetHeight() else: cw = 0 ch = 0 btnsize.append((sw, sh)) btnsize.append((cw, ch)) return btnsize def OnLeftDown(self, event): btnpos = self.GetButtonsPos() btnsize = self.GetButtonsSize() self.CaptureMouse() for btn in range(2): if self.HitTest(btnpos[btn], event.GetPosition(), btnsize[btn]): if btn == 0: if not self.searchButtonPressed: self.searchButtonPressed = True self.Refresh() if btn == 1: if not self.cancelButtonPressed: self.cancelButtonPressed = True self.Refresh() def OnLeftUp(self, event): btnpos = self.GetButtonsPos() btnsize = self.GetButtonsSize() if self.HasCapture(): self.ReleaseMouse() for btn in range(2): if self.HitTest(btnpos[btn], event.GetPosition(), btnsize[btn]): if btn == 0: if self.searchButtonPressed: self.searchButtonPressed = False self.Refresh() self.SetFocus() wx.PostEvent(self, SearchButton()) if btn == 1: if self.cancelButtonPressed: self.cancelButtonPressed = False self.Refresh() self.SetFocus() wx.PostEvent(self, CancelButton()) else: if btn == 0: if self.searchButtonPressed: self.searchButtonPressed = False self.Refresh() if btn == 1: if self.cancelButtonPressed: self.cancelButtonPressed = False self.Refresh() def OnSize(self, event): self.resized = True self.Refresh() def OnEraseBk(self, event): pass def UpdateElementsPos(self, dc): rect = self.GetRect() if self.searchBitmap and self.isSearchButtonVisible: sw = self.searchBitmap.GetWidth() sh = self.searchBitmap.GetHeight() else: sw = 0 sh = 0 if self.cancelBitmap and self.isCancelButtonVisible: cw = self.cancelBitmap.GetWidth() ch = self.cancelBitmap.GetHeight() else: cw = 0 ch = 0 cwidth = rect.width cheight = rect.height self.searchButtonX = self.padding self.searchButtonY = (cheight - sh) / 2 self.cancelButtonX = cwidth - self.padding - cw self.cancelButtonY = (cheight - ch) / 2 self.editX = self.searchButtonX + self.padding + sw editWidth, editHeight = self.EditBox.GetSize() self.editY = (cheight - editHeight) / 2 self.EditBox.SetPosition((self.editX, self.editY)) self.EditBox.SetSize((self.cancelButtonX - self.padding - self.editX, -1)) def OnPaint(self, event): dc = wx.AutoBufferedPaintDC(self) bkColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) sepColor = colorUtils.GetSuitable(bkColor, 0.2) rect = self.GetRect() if self.resized: self.bkBitmap = drawUtils.RenderGradientBar(bkColor, rect.width, rect.height, 0.1, 0.1, 0.2, 2) self.UpdateElementsPos(dc) self.resized = False dc.DrawBitmap(self.bkBitmap, 0, 0) if self.isSearchButtonVisible: if self.searchBitmap: if self.searchButtonPressed: spad = 1 else: spad = 0 dc.DrawBitmap(self.searchBitmapShadow, round(self.searchButtonX + 1), round(self.searchButtonY + 1)) dc.DrawBitmap(self.searchBitmap, round(self.searchButtonX + spad), round(self.searchButtonY + spad)) if self.isCancelButtonVisible: if self.cancelBitmap: if self.cancelButtonPressed: cpad = 1 else: cpad = 0 dc.DrawBitmap(self.cancelBitmapShadow, round(self.cancelButtonX + 1), round(self.cancelButtonY + 1)) dc.DrawBitmap(self.cancelBitmap, round(self.cancelButtonX + cpad), round(self.cancelButtonY + cpad)) dc.SetPen(wx.Pen(sepColor, 1)) dc.DrawLine(0, rect.height - 1, rect.width, rect.height - 1) def SetSearchBitmap(self, bitmap): self.searchBitmap = bitmap self.searchBitmapShadow = drawUtils.CreateDropShadowBitmap(bitmap, 0.2) def SetCancelBitmap(self, bitmap): self.cancelBitmap = bitmap self.cancelBitmapShadow = drawUtils.CreateDropShadowBitmap(bitmap, 0.2) def IsSearchButtonVisible(self): return self.isSearchButtonVisible def IsCancelButtonVisible(self): return self.isCancelButtonVisible def ShowSearchButton(self, show=True): self.isSearchButtonVisible = show def ShowCancelButton(self, show=True): self.isCancelButtonVisible = show def SetDescriptiveText(self, text): self.descriptiveText = text def GetDescriptiveText(self): return self.descriptiveText ================================================ FILE: gui/builtinMarketBrowser/searchBox.py ================================================ from gui.bitmap_loader import BitmapLoader from .pfSearchBox import PFSearchBox class SearchBox(PFSearchBox): def __init__(self, parent, **kwargs): PFSearchBox.__init__(self, parent, **kwargs) cancelBitmap = BitmapLoader.getBitmap("fit_delete_small", "gui") searchBitmap = BitmapLoader.getBitmap("fsearch_small", "gui") self.SetSearchBitmap(searchBitmap) self.SetCancelBitmap(cancelBitmap) self.ShowSearchButton() self.ShowCancelButton() ================================================ FILE: gui/builtinPreferenceViews/__init__.py ================================================ __all__ = [ "pyfaGeneralPreferences", "pyfaHTMLExportPreferences", "pyfaUpdatePreferences", "pyfaNetworkPreferences", "pyfaDatabasePreferences", "pyfaLoggingPreferences", "pyfaEnginePreferences", "pyfaEsiPreferences", "pyfaStatViewPreferences", "pyfaMarketPreferences"] ================================================ FILE: gui/builtinPreferenceViews/dummyView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView class DummyView(PreferenceView): title = "Dummy" def populatePanel(self, panel): mainSizer = wx.BoxSizer(wx.VERTICAL) headerSizer = self.initHeader(panel) mainSizer.Add(headerSizer, 0, wx.EXPAND, 5) self.stline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.stline1, 0, wx.EXPAND, 5) contentSizer = self.initContent(panel) mainSizer.Add(contentSizer, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 10) self.stline2 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.stline2, 0, wx.EXPAND, 5) footerSizer = self.initFooter(panel) mainSizer.Add(footerSizer, 0, wx.EXPAND, 5) panel.SetSizer(mainSizer) panel.Layout() def refreshPanel(self, fit): pass def initHeader(self, panel): headerSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, "Dummy", wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(14, 70, 90, 90, False, wx.EmptyString)) headerSizer.Add(self.stTitle, 0, wx.ALL, 5) return headerSizer def initContent(self, panel): contentSizer = wx.BoxSizer(wx.VERTICAL) self.m_checkBox2 = wx.CheckBox(panel, wx.ID_ANY, "Check Me!", wx.DefaultPosition, wx.DefaultSize, 0) contentSizer.Add(self.m_checkBox2, 0, wx.ALL, 5) self.m_radioBtn2 = wx.RadioButton(panel, wx.ID_ANY, "RadioBtn", wx.DefaultPosition, wx.DefaultSize, 0) contentSizer.Add(self.m_radioBtn2, 0, wx.ALL, 5) self.m_slider2 = wx.Slider(panel, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize, wx.SL_HORIZONTAL) contentSizer.Add(self.m_slider2, 0, wx.ALL, 5) self.m_gauge1 = wx.Gauge(panel, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL) contentSizer.Add(self.m_gauge1, 0, wx.ALL, 5) self.m_textCtrl2 = wx.TextCtrl(panel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0) contentSizer.Add(self.m_textCtrl2, 0, wx.ALL, 5) return contentSizer def initFooter(self, panel): footerSizer = wx.BoxSizer(wx.HORIZONTAL) footerSizer.AddStretchSpacer() self.btnRestore = wx.Button(panel, wx.ID_ANY, "Restore", wx.DefaultPosition, wx.DefaultSize, 0) self.btnRestore.Enable(False) footerSizer.Add(self.btnRestore, 0, wx.ALL, 5) self.btnApply = wx.Button(panel, wx.ID_ANY, "Apply", wx.DefaultPosition, wx.DefaultSize, 0) footerSizer.Add(self.btnApply, 0, wx.ALL, 5) return footerSizer DummyView.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py ================================================ import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader import gui.mainFrame from service.settings import ContextMenuSettings _t = wx.GetTranslation class PFContextMenuPref(PreferenceView): def populatePanel(self, panel): self.title = _t("Context Menus") self.settings = ContextMenuSettings.getInstance() self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.dirtySettings = False mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.stSubTitle = wx.StaticText( panel, wx.ID_ANY, _t('Disabling context menus can improve responsiveness.\n' 'You can hold {} key + right-click to show all menu items regardless of these settings.').format( 'Command' if 'wxMac' in wx.PlatformInfo else 'Control'), wx.DefaultPosition, wx.DefaultSize, 0) self.stSubTitle.Wrap(-1) mainSizer.Add(self.stSubTitle, 0, wx.ALL, 5) # Row 1 self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.ALL, 5) rbSizerRow1 = wx.BoxSizer(wx.HORIZONTAL) self.rbBox1 = wx.RadioBox(panel, -1, _t("Set as Damage Pattern"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox1.SetSelection(self.settings.get('ammoPattern')) rbSizerRow1.Add(self.rbBox1, 1, wx.ALL, 5) self.rbBox1.Bind(wx.EVT_RADIOBOX, self.OnSetting1Change) self.rbBox2 = wx.RadioBox(panel, -1, _t("Change Skills"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox2.SetSelection(self.settings.get('changeAffectingSkills')) rbSizerRow1.Add(self.rbBox2, 1, wx.ALL, 5) self.rbBox2.Bind(wx.EVT_RADIOBOX, self.OnSetting2Change) self.rbBox3 = wx.RadioBox(panel, -1, _t("Variations"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox3.SetSelection(self.settings.get('metaSwap')) rbSizerRow1.Add(self.rbBox3, 1, wx.ALL, 5) self.rbBox3.Bind(wx.EVT_RADIOBOX, self.OnSetting3Change) mainSizer.Add(rbSizerRow1, 1, wx.ALL | wx.EXPAND, 0) # Row 2 rbSizerRow2 = wx.BoxSizer(wx.HORIZONTAL) self.rbBox4 = wx.RadioBox(panel, -1, _t("Project onto Fit"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox4.SetSelection(self.settings.get('project')) rbSizerRow2.Add(self.rbBox4, 1, wx.ALL, 5) self.rbBox4.Bind(wx.EVT_RADIOBOX, self.OnSetting4Change) self.rbBox5 = wx.RadioBox(panel, -1, _t("Fill with module"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox5.SetSelection(self.settings.get('moduleFill')) rbSizerRow2.Add(self.rbBox5, 1, wx.ALL, 5) self.rbBox5.Bind(wx.EVT_RADIOBOX, self.OnSetting5Change) self.rbBox6 = wx.RadioBox(panel, -1, _t("Spoolup"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox6.SetSelection(self.settings.get('spoolup')) rbSizerRow2.Add(self.rbBox6, 1, wx.ALL, 5) self.rbBox6.Bind(wx.EVT_RADIOBOX, self.OnSetting6Change) mainSizer.Add(rbSizerRow2, 1, wx.ALL | wx.EXPAND, 0) # Row 3 rbSizerRow3 = wx.BoxSizer(wx.HORIZONTAL) self.rbBox7 = wx.RadioBox(panel, -1, _t("Additions Panel Copy/Paste"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox7.SetSelection(self.settings.get('additionsCopyPaste')) rbSizerRow3.Add(self.rbBox7, 1, wx.ALL, 5) self.rbBox7.Bind(wx.EVT_RADIOBOX, self.OnSetting7Change) self.rbBox8 = wx.RadioBox(panel, -1, _t("Fill cargo with"), wx.DefaultPosition, wx.DefaultSize, [_t('Disabled'), _t('Enabled')], 1, wx.RA_SPECIFY_COLS) self.rbBox8.SetSelection(self.settings.get('cargoFill')) rbSizerRow3.Add(self.rbBox8, 1, wx.ALL, 5) self.rbBox8.Bind(wx.EVT_RADIOBOX, self.OnSetting8Change) mainSizer.Add(rbSizerRow3, 1, wx.ALL | wx.EXPAND, 0) panel.SetSizer(mainSizer) panel.Layout() def OnSetting1Change(self, event): self.settings.set('ammoPattern', event.GetInt()) def OnSetting2Change(self, event): self.settings.set('changeAffectingSkills', event.GetInt()) def OnSetting3Change(self, event): self.settings.set('metaSwap', event.GetInt()) def OnSetting4Change(self, event): self.settings.set('project', event.GetInt()) def OnSetting5Change(self, event): self.settings.set('moduleFill', event.GetInt()) def OnSetting6Change(self, event): self.settings.set('spoolup', event.GetInt()) def OnSetting7Change(self, event): self.settings.set('additionsCopyPaste', event.GetInt()) def OnSetting8Change(self, event): self.settings.set('cargoFill', event.GetInt()) def getImage(self): return BitmapLoader.getBitmap("settings_menu", "gui") PFContextMenuPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaDatabasePreferences.py ================================================ import wx import config from eos.db.saveddata.queries import clearPrices, clearDamagePatterns, clearTargetProfiles from gui.bitmap_loader import BitmapLoader from gui.preferenceView import PreferenceView from gui.utils import helpers_wxPython as wxHelpers _t = wx.GetTranslation class PFGeneralPref(PreferenceView): def populatePanel(self, panel): self.title = _t("Database") self.dirtySettings = False mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.stSubTitle = wx.StaticText(panel, wx.ID_ANY, _t("(Cannot be changed while pyfa is running. Set via command line switches.)"), wx.DefaultPosition, wx.DefaultSize, 0) self.stSubTitle.Wrap(-1) mainSizer.Add(self.stSubTitle, 0, wx.ALL, 3) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) # Save in Root self.cbsaveInRoot = wx.CheckBox(panel, wx.ID_ANY, _t("Using Executable Path for Saved Fit Database and Settings"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbsaveInRoot, 0, wx.ALL | wx.EXPAND, 5) # Database path self.stSetUserPath = wx.StaticText(panel, wx.ID_ANY, _t("pyfa User Path:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stSetUserPath.Wrap(-1) mainSizer.Add(self.stSetUserPath, 0, wx.ALL, 5) self.inputUserPath = wx.TextCtrl(panel, wx.ID_ANY, config.savePath, wx.DefaultPosition, wx.DefaultSize, 0) self.inputUserPath.SetEditable(False) self.inputUserPath.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputUserPath, 0, wx.ALL | wx.EXPAND, 5) # Save DB self.stFitDB = wx.StaticText(panel, wx.ID_ANY, _t("Fitting Database:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stFitDB.Wrap(-1) mainSizer.Add(self.stFitDB, 0, wx.ALL, 5) self.inputFitDB = wx.TextCtrl(panel, wx.ID_ANY, config.saveDB, wx.DefaultPosition, wx.DefaultSize, 0) self.inputFitDB.SetEditable(False) self.inputFitDB.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputFitDB, 0, wx.ALL | wx.EXPAND, 5) # Game Data DB self.stGameDB = wx.StaticText(panel, wx.ID_ANY, _t("Game Database:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stGameDB.Wrap(-1) mainSizer.Add(self.stGameDB, 0, wx.ALL, 5) self.inputGameDB = wx.TextCtrl(panel, wx.ID_ANY, config.gameDB, wx.DefaultPosition, wx.DefaultSize, 0) self.inputGameDB.SetEditable(False) self.inputGameDB.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputGameDB, 0, wx.ALL | wx.EXPAND, 5) self.cbsaveInRoot.SetValue(config.saveInRoot) self.cbsaveInRoot.Bind(wx.EVT_CHECKBOX, self.onCBsaveInRoot) # self.inputUserPath.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) # self.inputFitDB.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) # self.inputGameDB.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) self.m_staticline3 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline3, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) btnSizer = wx.BoxSizer(wx.VERTICAL) btnSizer.AddStretchSpacer() self.btnDeleteDamagePatterns = wx.Button(panel, wx.ID_ANY, _t("Delete All Damage Pattern Profiles"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.btnDeleteDamagePatterns, 0, wx.ALL, 5) self.btnDeleteDamagePatterns.Bind(wx.EVT_BUTTON, self.DeleteDamagePatterns) self.btnDeleteTargetProfiles = wx.Button(panel, wx.ID_ANY, _t("Delete All Target Profiles"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.btnDeleteTargetProfiles, 0, wx.ALL, 5) self.btnDeleteTargetProfiles.Bind(wx.EVT_BUTTON, self.DeleteTargetProfiles) self.btnPrices = wx.Button(panel, wx.ID_ANY, _t("Delete All Prices"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.btnPrices, 0, wx.ALL, 5) self.btnPrices.Bind(wx.EVT_BUTTON, self.DeletePrices) mainSizer.Add(btnSizer, 0, wx.EXPAND, 5) panel.SetSizer(mainSizer) panel.Layout() def DeleteDamagePatterns(self, event): question = _t("This is a destructive action that will delete all damage pattern profiles.\nAre you sure you want to do this?") if wxHelpers.YesNoDialog(question, _t("Confirm")): clearDamagePatterns() def DeleteTargetProfiles(self, event): question = _t("This is a destructive action that will delete all target profiles.\nAre you sure you want to do this?") if wxHelpers.YesNoDialog(question, _t("Confirm")): clearTargetProfiles() def DeletePrices(self, event): question = _t("This is a destructive action that will delete all cached prices out of the database.\nAre you sure you want to do this?") if wxHelpers.YesNoDialog(question, _t("Confirm")): clearPrices() def onCBsaveInRoot(self, event): # We don't want users to be able to actually change this, # so if they try and change it, set it back to the current setting self.cbsaveInRoot.SetValue(config.saveInRoot) # If we ever enable it might need this. ''' config.saveInRoot = self.cbsaveInRoot.GetValue() ''' def getImage(self): return BitmapLoader.getBitmap("settings_database", "gui") PFGeneralPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaEnginePreferences.py ================================================ import logging import wx from service.fit import Fit from gui.bitmap_loader import BitmapLoader import gui.globalEvents as GE from gui.preferenceView import PreferenceView from service.settings import EOSSettings import gui.mainFrame from wx.lib.intctrl import IntCtrl logger = logging.getLogger(__name__) _t = wx.GetTranslation class PFFittingEnginePref(PreferenceView): def __init__(self): self.dirtySettings = False def refreshPanel(self, fit): pass # noinspection PyAttributeOutsideInit def populatePanel(self, panel): self.title = _t("Fitting Engine") self.mainFrame = gui.mainFrame.MainFrame.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) helpCursor = wx.Cursor(wx.CURSOR_QUESTION_ARROW) self.engine_settings = EOSSettings.getInstance() self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.cbGlobalForceReload = wx.CheckBox(panel, wx.ID_ANY, _t("Factor in reload time when calculating capacitor usage, damage, and tank."), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbGlobalForceReload, 0, wx.ALL | wx.EXPAND, 5) self.cbStrictSkillLevels = wx.CheckBox(panel, wx.ID_ANY, _t("Enforce strict skill level requirements"), wx.DefaultPosition, wx.DefaultSize, 0) self.cbStrictSkillLevels.SetCursor(helpCursor) self.cbStrictSkillLevels.SetToolTip(wx.ToolTip( _t('When enabled, skills will check their dependencies\' requirements when their levels change and reset ' 'skills that no longer meet the requirement.\neg: Setting Drones from level V to IV will reset the Heavy ' 'Drone Operation skill, as that requires Drones V'))) mainSizer.Add(self.cbStrictSkillLevels, 0, wx.ALL | wx.EXPAND, 5) spoolup_sizer = wx.BoxSizer(wx.HORIZONTAL) self.spool_up_label = wx.StaticText(panel, wx.ID_ANY, _t("Global Default Spoolup Percentage:"), wx.DefaultPosition, wx.DefaultSize, 0) self.spool_up_label.Wrap(-1) self.spool_up_label.SetCursor(helpCursor) self.spool_up_label.SetToolTip( wx.ToolTip(_t('The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis'))) spoolup_sizer.Add(self.spool_up_label, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.spoolup_value = IntCtrl(panel, min=0, max=100, limited=True) spoolup_sizer.Add(self.spoolup_value, 0, wx.ALL, 5) mainSizer.Add(spoolup_sizer, 0, wx.ALL | wx.EXPAND, 0) # Future code once new cap sim is implemented ''' self.cbGlobalForceReactivationTimer = wx.CheckBox( panel, wx.ID_ANY, "Factor in reactivation timer", wx.DefaultPosition, wx.DefaultSize, 0 ) mainSizer.Add( self.cbGlobalForceReactivationTimer, 0, wx.ALL|wx.EXPAND, 5 ) text = " Ignores reactivation timer when calculating capacitor usage,\n damage, and tank." self.cbGlobalForceReactivationTimerText = wx.StaticText( panel, wx.ID_ANY, text, wx.DefaultPosition, wx.DefaultSize, 0 ) self.cbGlobalForceReactivationTimerText.Wrap( -1 ) self.cbGlobalForceReactivationTimerText.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) mainSizer.Add( self.cbGlobalForceReactivationTimerText, 0, wx.ALL, 5 ) ''' # Future code for mining laser crystal ''' self.cbGlobalMiningSpecialtyCrystal = wx.CheckBox( panel, wx.ID_ANY, "Factor in reactivation timer", wx.DefaultPosition, wx.DefaultSize, 0 ) mainSizer.Add( self.cbGlobalMiningSpecialtyCrystal, 0, wx.ALL|wx.EXPAND, 5 ) text = " If enabled, displays the Specialty Crystal mining amount.\n This is the amount mined when using crystals and mining the matching asteroid." self.cbGlobalMiningSpecialtyCrystalText = wx.StaticText( panel, wx.ID_ANY, text, wx.DefaultPosition, wx.DefaultSize, 0 ) self.cbGlobalMiningSpecialtyCrystalText.Wrap( -1 ) self.cbGlobalMiningSpecialtyCrystalText.SetFont( wx.Font( 10, 70, 90, 90, False, wx.EmptyString ) ) mainSizer.Add( self.cbGlobalMiningSpecialtyCrystalText, 0, wx.ALL, 5 ) ''' self.sFit = Fit.getInstance() self.cbGlobalForceReload.SetValue(self.sFit.serviceFittingOptions["useGlobalForceReload"]) self.cbGlobalForceReload.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalForceReloadStateChange) self.cbStrictSkillLevels.SetValue(self.engine_settings.get("strictSkillLevels")) self.cbStrictSkillLevels.Bind(wx.EVT_CHECKBOX, self.OnCBStrictSkillLevelsChange) self.spoolup_value.SetValue(int(self.engine_settings.get("globalDefaultSpoolupPercentage") * 100)) self.spoolup_value.Bind(wx.lib.intctrl.EVT_INT, self.OnSpoolupChange) panel.SetSizer(mainSizer) panel.Layout() def OnSpoolupChange(self, event): self.engine_settings.set("globalDefaultSpoolupPercentage", self.spoolup_value.GetValue() / 100) def OnCBGlobalForceReloadStateChange(self, event): fitIDs = self.sFit.toggleFactorReload(value=bool(self.cbGlobalForceReload.GetValue())) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=tuple(fitIDs))) def OnCBStrictSkillLevelsChange(self, event): self.engine_settings.set("strictSkillLevels", self.cbStrictSkillLevels.GetValue()) def getImage(self): return BitmapLoader.getBitmap("settings_fitting", "gui") def OnWindowLeave(self, event): # We don't want to do anything when they leave, # but in the future we might. pass PFFittingEnginePref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaEsiPreferences.py ================================================ # noinspection PyPackageRequirements import wx import config import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.preferenceView import PreferenceView from service.esi import Esi from service.settings import EsiSettings # noinspection PyPackageRequirements _t = wx.GetTranslation class PFEsiPref(PreferenceView): def populatePanel(self, panel): self.title = _t("EVE SSO") self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = EsiSettings.getInstance() self.dirtySettings = False dlgWidth = panel.GetParent().GetParent().ClientSize.width mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.stInfo = wx.StaticText(panel, wx.ID_ANY, _t("Please see the pyfa wiki on GitHub for information regarding these options."), wx.DefaultPosition, wx.DefaultSize, 0) self.stInfo.Wrap(dlgWidth - 50) mainSizer.Add(self.stInfo, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.enforceJwtExpiration = wx.CheckBox(panel, wx.ID_ANY, _t("Enforce Token Expiration"), wx.DefaultPosition, wx.DefaultSize, 0) self.enforceJwtExpiration.SetToolTip(wx.ToolTip(_t("This option is a workaround in case you cannot log into EVE SSO " "due to 'Signature has expired' error"))) mainSizer.Add(self.enforceJwtExpiration, 0, wx.ALL | wx.EXPAND, 5) self.ssoServer = wx.CheckBox(panel, wx.ID_ANY, _t("Auto-login (starts local server)"), wx.DefaultPosition, wx.DefaultSize, 0) self.ssoServer.SetToolTip(wx.ToolTip(_t("This allows the EVE SSO to callback to your local pyfa instance and complete the authentication process without manual intervention."))) mainSizer.Add(self.ssoServer, 0, wx.ALL | wx.EXPAND, 5) rbSizer = wx.BoxSizer(wx.HORIZONTAL) self.enforceJwtExpiration.SetValue(self.settings.get("enforceJwtExpiration") or True) self.ssoServer.SetValue(True if self.settings.get("loginMode") == 0 else False) mainSizer.Add(rbSizer, 0, wx.ALL | wx.EXPAND, 0) esiSizer = wx.BoxSizer(wx.HORIZONTAL) self.esiServer = wx.StaticText(panel, wx.ID_ANY, _t("Default SSO Server:"), wx.DefaultPosition, wx.DefaultSize, 0) self.esiServer.Wrap(-1) esiSizer.Add(self.esiServer, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.esiServer.SetToolTip(wx.ToolTip(_t('The source you choose will be used on connection.'))) self.chESIserver = wx.Choice(panel, choices=list(self.settings.keys())) self.chESIserver.SetStringSelection(self.settings.get("server")) esiSizer.Add(self.chESIserver, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 10) mainSizer.Add(esiSizer, 0, wx.TOP | wx.RIGHT, 10) self.chESIserver.Bind(wx.EVT_CHOICE, self.OnServerChange) self.enforceJwtExpiration.Bind(wx.EVT_CHECKBOX, self.OnEnforceChange) self.ssoServer.Bind(wx.EVT_CHECKBOX, self.OnModeChange) panel.SetSizer(mainSizer) panel.Layout() def OnTimeoutChange(self, event): self.settings.set('timeout', event.GetEventObject().GetValue()) event.Skip() def OnModeChange(self, event): self.settings.set('loginMode', 0 if self.ssoServer.GetValue() else 1) event.Skip() def OnEnforceChange(self, event): self.settings.set('enforceJwtExpiration', self.enforceJwtExpiration.GetValue()) event.Skip() def OnServerChange(self, event): # pass source = self.chESIserver.GetString(self.chESIserver.GetSelection()) esiService = Esi.getInstance() # init servers esiService.init(config.supported_servers[source]) self.settings.set("server", source) event.Skip() def getImage(self): return BitmapLoader.getBitmap("eve", "gui") PFEsiPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaGeneralPreferences.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.preferenceView import PreferenceView from service.fit import Fit from service.settings import SettingsProvider, LocaleSettings import eos.config import wx.lib.agw.hyperlink as hl _t = wx.GetTranslation class PFGeneralPref(PreferenceView): def populatePanel(self, panel): self.title = _t("General") self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.dirtySettings = False self.openFitsSettings = SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) self.localeSettings = LocaleSettings.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) helpCursor = wx.Cursor(wx.CURSOR_QUESTION_ARROW) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) langBox = wx.StaticBoxSizer(wx.VERTICAL, panel, _t("Language (requires restart)")) mainSizer.Add(langBox, 0, wx.EXPAND | wx.TOP | wx.RIGHT | wx.BOTTOM, 10) langSizer = wx.BoxSizer(wx.HORIZONTAL) self.langChoices = sorted([langInfo for lang, langInfo in LocaleSettings.supported_languages().items()], key=lambda x: x.Description) pyfaLangsEnabled = bool(self.langChoices) if pyfaLangsEnabled: self.stLangLabel = wx.StaticText(panel, wx.ID_ANY, _t("pyfa:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stLangLabel.Wrap(-1) langSizer.Add(self.stLangLabel, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) def langDisplay(langInfo): progress = self.localeSettings.get_progress(langInfo.CanonicalName) progress_display = (" ({}%)".format(progress['translated_progress']) if progress is not None else "") return langInfo.Description + progress_display self.chLang = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [langDisplay(x) for x in self.langChoices], 0) self.chLang.Bind(wx.EVT_CHOICE, self.onLangSelection) selectedIndex = self.langChoices.index(next((x for x in self.langChoices if x.CanonicalName == self.localeSettings.get('locale')), None)) self.chLang.SetSelection(selectedIndex) langSizer.Add(self.chLang, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) langBox.Add(langSizer) langBox.Add(hl.HyperLinkCtrl(panel, -1, _t("Interested in helping with translations?"), URL="https://github.com/pyfa-org/Pyfa/blob/master/locale/README.md" ), 0, wx.LEFT, 15) else: self.stLangLabel = wx.StaticText(panel, wx.ID_ANY, _t("Pyfa language selection disabled. Please check if .mo files have been generated.\nRefer to locale/README.md for info."), wx.DefaultPosition, wx.DefaultSize, 0) self.stLangLabel.Wrap(-1) langSizer.Add(self.stLangLabel, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) langBox.Add(langSizer) eosLangSizer = wx.BoxSizer(wx.HORIZONTAL) self.stEosLangLabel = wx.StaticText(panel, wx.ID_ANY, _t("EVE Data:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stEosLangLabel.Wrap(-1) eosLangSizer.Add(self.stEosLangLabel, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.eosLangChoices = [(LocaleSettings.defaults['eos_locale'], LocaleSettings.defaults['eos_locale'])] + \ sorted([(wx.Locale.FindLanguageInfo(x).Description, x) for x in eos.config.translation_mapping.keys()], key=lambda x: x[0]) self.chEosLang = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [x[0] for x in self.eosLangChoices], 0) self.chEosLang.Bind(wx.EVT_CHOICE, self.onEosLangSelection) selectedIndex = self.eosLangChoices.index( next((x for x in self.eosLangChoices if x[1] == self.localeSettings.get('eos_locale')), None)) self.chEosLang.SetSelection(selectedIndex) eosLangSizer.Add(self.chEosLang, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) langBox.Add(eosLangSizer) langBox.Add(wx.StaticText(panel, wx.ID_ANY, _t("Auto will use the same language pyfa uses if available, otherwise English"), wx.DefaultPosition, wx.DefaultSize, 0), 0, wx.LEFT, 15) self.cbGlobalChar = wx.CheckBox(panel, wx.ID_ANY, _t("Use global character"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbGlobalChar, 0, wx.ALL | wx.EXPAND, 5) self.cbDefaultCharImplants = wx.CheckBox(panel, wx.ID_ANY, _t("Use character implants by default for new fits"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbDefaultCharImplants, 0, wx.ALL | wx.EXPAND, 5) self.cbGlobalDmgPattern = wx.CheckBox(panel, wx.ID_ANY, _t("Use global damage pattern"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbGlobalDmgPattern, 0, wx.ALL | wx.EXPAND, 5) self.cbCompactSkills = wx.CheckBox(panel, wx.ID_ANY, _t("Compact skills needed tooltip"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbCompactSkills, 0, wx.ALL | wx.EXPAND, 5) self.cbFitColorSlots = wx.CheckBox(panel, wx.ID_ANY, _t("Color fitting view by slot"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbFitColorSlots, 0, wx.ALL | wx.EXPAND, 5) self.cbReopenFits = wx.CheckBox(panel, wx.ID_ANY, _t("Reopen previous fits on startup"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbReopenFits, 0, wx.ALL | wx.EXPAND, 5) self.cbRackSlots = wx.CheckBox(panel, wx.ID_ANY, _t("Separate Racks"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbRackSlots, 0, wx.ALL | wx.EXPAND, 5) labelSizer = wx.BoxSizer(wx.VERTICAL) self.cbRackLabels = wx.CheckBox(panel, wx.ID_ANY, _t("Show Rack Labels"), wx.DefaultPosition, wx.DefaultSize, 0) labelSizer.Add(self.cbRackLabels, 0, wx.ALL | wx.EXPAND, 5) mainSizer.Add(labelSizer, 0, wx.LEFT | wx.EXPAND, 30) self.cbShowTooltip = wx.CheckBox(panel, wx.ID_ANY, _t("Show fitting tab tooltips"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbShowTooltip, 0, wx.ALL | wx.EXPAND, 5) self.cbGaugeAnimation = wx.CheckBox(panel, wx.ID_ANY, _t("Animate gauges"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbGaugeAnimation, 0, wx.ALL | wx.EXPAND, 5) self.cbOpenFitInNew = wx.CheckBox(panel, wx.ID_ANY, _t("Open fittings in a new page by default"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbOpenFitInNew, 0, wx.ALL | wx.EXPAND, 5) self.cbShowShipBrowserTooltip = wx.CheckBox(panel, wx.ID_ANY, _t("Show ship browser tooltip"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbShowShipBrowserTooltip, 0, wx.ALL | wx.EXPAND, 5) self.cbReloadAll = wx.CheckBox(panel, wx.ID_ANY, _t("Change charge in all modules of the same type"), wx.DefaultPosition, wx.DefaultSize, 0) if "wxGTK" not in wx.PlatformInfo: self.cbReloadAll.SetCursor(helpCursor) self.cbReloadAll.SetToolTip(wx.ToolTip( _t('When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge.'))) mainSizer.Add(self.cbReloadAll, 0, wx.ALL | wx.EXPAND, 5) self.cbExpMutants = wx.CheckBox(panel, wx.ID_ANY, _t("Include more information in names of mutated items"), wx.DefaultPosition, wx.DefaultSize, 0) if "wxGTK" not in wx.PlatformInfo: self.cbExpMutants.SetCursor(helpCursor) self.cbExpMutants.SetToolTip(wx.ToolTip( _t('Use short mutaplasmid name and base item name instead of actual item name. Works if EVE data language is set to English.'))) mainSizer.Add(self.cbExpMutants, 0, wx.ALL | wx.EXPAND, 5) self.rbAddLabels = wx.RadioBox(panel, -1, _t("Extra info in Additions panel tab names"), wx.DefaultPosition, wx.DefaultSize, [_t("None"), _t("Quantity of active items"), _t("Quantity of all items")], 1, wx.RA_SPECIFY_COLS) mainSizer.Add(self.rbAddLabels, 0, wx.EXPAND | wx.TOP | wx.RIGHT | wx.BOTTOM, 10) self.rbAddLabels.Bind(wx.EVT_RADIOBOX, self.OnAddLabelsChange) self.sFit = Fit.getInstance() self.cbGlobalChar.SetValue(self.sFit.serviceFittingOptions["useGlobalCharacter"]) self.cbDefaultCharImplants.SetValue(self.sFit.serviceFittingOptions["useCharacterImplantsByDefault"]) self.cbGlobalDmgPattern.SetValue(self.sFit.serviceFittingOptions["useGlobalDamagePattern"]) self.cbFitColorSlots.SetValue(self.sFit.serviceFittingOptions["colorFitBySlot"] or False) self.cbRackSlots.SetValue(self.sFit.serviceFittingOptions["rackSlots"] or False) self.cbRackLabels.SetValue(self.sFit.serviceFittingOptions["rackLabels"] or False) self.cbCompactSkills.SetValue(self.sFit.serviceFittingOptions["compactSkills"] or False) self.cbReopenFits.SetValue(self.openFitsSettings["enabled"]) self.cbShowTooltip.SetValue(self.sFit.serviceFittingOptions["showTooltip"] or False) self.cbGaugeAnimation.SetValue(self.sFit.serviceFittingOptions["enableGaugeAnimation"]) self.cbOpenFitInNew.SetValue(self.sFit.serviceFittingOptions["openFitInNew"]) self.cbShowShipBrowserTooltip.SetValue(self.sFit.serviceFittingOptions["showShipBrowserTooltip"]) self.cbReloadAll.SetValue(self.sFit.serviceFittingOptions["ammoChangeAll"]) self.cbExpMutants.SetValue(self.sFit.serviceFittingOptions["expandedMutantNames"]) self.rbAddLabels.SetSelection(self.sFit.serviceFittingOptions["additionsLabels"]) self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange) self.cbDefaultCharImplants.Bind(wx.EVT_CHECKBOX, self.OnCBDefaultCharImplantsStateChange) self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange) self.cbFitColorSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalColorBySlot) self.cbRackSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackSlots) self.cbRackLabels.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackLabels) self.cbCompactSkills.Bind(wx.EVT_CHECKBOX, self.onCBCompactSkills) self.cbReopenFits.Bind(wx.EVT_CHECKBOX, self.onCBReopenFits) self.cbShowTooltip.Bind(wx.EVT_CHECKBOX, self.onCBShowTooltip) self.cbGaugeAnimation.Bind(wx.EVT_CHECKBOX, self.onCBGaugeAnimation) self.cbOpenFitInNew.Bind(wx.EVT_CHECKBOX, self.onCBOpenFitInNew) self.cbShowShipBrowserTooltip.Bind(wx.EVT_CHECKBOX, self.onCBShowShipBrowserTooltip) self.cbReloadAll.Bind(wx.EVT_CHECKBOX, self.onCBReloadAll) self.cbExpMutants.Bind(wx.EVT_CHECKBOX, self.onCBExpMutants) self.cbRackLabels.Enable(self.sFit.serviceFittingOptions["rackSlots"] or False) panel.SetSizer(mainSizer) panel.Layout() def onLangSelection(self, event): selection = self.chLang.GetSelection() locale = self.langChoices[selection] self.localeSettings.set('locale', locale.CanonicalName) def onEosLangSelection(self, event): selection = self.chEosLang.GetSelection() locale = self.eosLangChoices[selection] self.localeSettings.set('eos_locale', locale[1]) def onCBGlobalColorBySlot(self, event): # todo: maybe create a SettingChanged event that we can fire, and have other things hook into, instead of having the preference panel itself handle the # updating of things related to settings. self.sFit.serviceFittingOptions["colorFitBySlot"] = self.cbFitColorSlots.GetValue() fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) iView = self.mainFrame.marketBrowser.itemView if iView.active: iView.update(iView.active) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def onCBGlobalRackSlots(self, event): self.sFit.serviceFittingOptions["rackSlots"] = self.cbRackSlots.GetValue() self.cbRackLabels.Enable(self.cbRackSlots.GetValue()) fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def onCBGlobalRackLabels(self, event): self.sFit.serviceFittingOptions["rackLabels"] = self.cbRackLabels.GetValue() fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def OnCBGlobalCharStateChange(self, event): self.sFit.serviceFittingOptions["useGlobalCharacter"] = self.cbGlobalChar.GetValue() event.Skip() def OnCBDefaultCharImplantsStateChange(self, event): self.sFit.serviceFittingOptions["useCharacterImplantsByDefault"] = self.cbDefaultCharImplants.GetValue() event.Skip() def OnCBGlobalDmgPatternStateChange(self, event): self.sFit.serviceFittingOptions["useGlobalDamagePattern"] = self.cbGlobalDmgPattern.GetValue() event.Skip() def onCBCompactSkills(self, event): self.sFit.serviceFittingOptions["compactSkills"] = self.cbCompactSkills.GetValue() fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def onCBReopenFits(self, event): self.openFitsSettings["enabled"] = self.cbReopenFits.GetValue() def onCBShowTooltip(self, event): self.sFit.serviceFittingOptions["showTooltip"] = self.cbShowTooltip.GetValue() def onCBGaugeAnimation(self, event): self.sFit.serviceFittingOptions["enableGaugeAnimation"] = self.cbGaugeAnimation.GetValue() def onCBOpenFitInNew(self, event): self.sFit.serviceFittingOptions["openFitInNew"] = self.cbOpenFitInNew.GetValue() def onCBShowShipBrowserTooltip(self, event): self.sFit.serviceFittingOptions["showShipBrowserTooltip"] = self.cbShowShipBrowserTooltip.GetValue() def onCBReloadAll(self, event): self.sFit.serviceFittingOptions["ammoChangeAll"] = self.cbReloadAll.GetValue() def onCBExpMutants(self, event): self.sFit.serviceFittingOptions["expandedMutantNames"] = self.cbExpMutants.GetValue() fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def OnAddLabelsChange(self, event): self.sFit.serviceFittingOptions["additionsLabels"] = event.GetInt() fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def getImage(self): return BitmapLoader.getBitmap("prefs_settings", "gui") PFGeneralPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py ================================================ # noinspection PyPackageRequirements import wx import os from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader import gui.mainFrame from service.settings import HTMLExportSettings import wx.lib.agw.hyperlink _t = wx.GetTranslation class PFHTMLExportPref(PreferenceView): def populatePanel(self, panel): self.title = _t("HTML Export") self.desc = _t("HTML Export (File > Export HTML) allows you to export your entire fitting " "database into an HTML file at the specified location. This file can be " "used to easily open your fits in a web-based fitting program") self.desc4 = _t("Export Fittings in a minimal HTML Version, just containing the fittings links " "without any visual styling") self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.HTMLExportSettings = HTMLExportSettings.getInstance() self.dirtySettings = False dlgWidth = panel.GetParent().GetParent().ClientSize.width mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.stDesc = wx.StaticText(panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0) self.stDesc.Wrap(dlgWidth - 50) mainSizer.Add(self.stDesc, 0, wx.ALL, 5) self.PathLinkCtrl = wx.lib.agw.hyperlink.HyperLinkCtrl(panel, wx.ID_ANY, self.HTMLExportSettings.getPath(), wx.DefaultPosition, wx.DefaultSize, URL='file:///{}'.format(self.HTMLExportSettings.getPath()), ) mainSizer.Add(self.PathLinkCtrl, 0, wx.ALL | wx.EXPAND, 5) self.fileSelectDialog = wx.FileDialog(None, _t("Save Fitting As..."), wildcard=_t("EVE IGB HTML fitting file") + " (*.html)|*.html", style=wx.FD_SAVE) self.fileSelectDialog.SetPath(self.HTMLExportSettings.getPath()) self.fileSelectDialog.SetFilename(os.path.basename(self.HTMLExportSettings.getPath())) self.fileSelectButton = wx.Button(panel, -1, _t("Set export destination"), pos=(0, 0)) self.fileSelectButton.Bind(wx.EVT_BUTTON, self.selectHTMLExportFilePath) mainSizer.Add(self.fileSelectButton, 0, wx.ALL, 5) self.stDesc4 = wx.StaticText(panel, wx.ID_ANY, self.desc4, wx.DefaultPosition, wx.DefaultSize, 0) self.stDesc4.Wrap(dlgWidth - 50) mainSizer.Add(self.stDesc4, 0, wx.ALL, 5) self.exportMinimal = wx.CheckBox(panel, wx.ID_ANY, _t("Enable minimal format"), wx.DefaultPosition, wx.DefaultSize, 0) self.exportMinimal.SetValue(self.HTMLExportSettings.getMinimalEnabled()) self.exportMinimal.Bind(wx.EVT_CHECKBOX, self.OnMinimalEnabledChange) mainSizer.Add(self.exportMinimal, 0, wx.ALL | wx.EXPAND, 5) panel.SetSizer(mainSizer) panel.Layout() def setPathLinkCtrlValues(self, path): self.PathLinkCtrl.SetLabel(self.HTMLExportSettings.getPath()) self.PathLinkCtrl.SetURL('file:///{}'.format(self.HTMLExportSettings.getPath())) self.PathLinkCtrl.SetSize(wx.DefaultSize) self.PathLinkCtrl.Refresh() def selectHTMLExportFilePath(self, event): if self.fileSelectDialog.ShowModal() == wx.ID_OK: self.HTMLExportSettings.setPath(self.fileSelectDialog.GetPath()) self.dirtySettings = True self.setPathLinkCtrlValues(self.HTMLExportSettings.getPath()) def OnMinimalEnabledChange(self, event): self.HTMLExportSettings.setMinimalEnabled(self.exportMinimal.GetValue()) def getImage(self): return BitmapLoader.getBitmap("prefs_html", "gui") PFHTMLExportPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaLoggingPreferences.py ================================================ import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader import config from logbook import Logger pyfalog = Logger(__name__) _t = wx.GetTranslation def OnDumpLogs(event): pyfalog.critical("Dump log button was pressed. Writing all logs to log file.") class PFGeneralPref(PreferenceView): def populatePanel(self, panel): self.title = _t("Logging") self.dirtySettings = False mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.stSubTitle = wx.StaticText(panel, wx.ID_ANY, _t("(Cannot be changed while pyfa is running. Set via command line switches.)"), wx.DefaultPosition, wx.DefaultSize, 0) self.stSubTitle.Wrap(-1) mainSizer.Add(self.stSubTitle, 0, wx.ALL, 3) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) # Database path self.stLogPath = wx.StaticText(panel, wx.ID_ANY, _t("Log file location:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stLogPath.Wrap(-1) mainSizer.Add(self.stLogPath, 0, wx.ALL, 5) self.inputLogPath = wx.TextCtrl(panel, wx.ID_ANY, config.logPath, wx.DefaultPosition, wx.DefaultSize, 0) self.inputLogPath.SetEditable(False) self.inputLogPath.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.inputLogPath, 0, wx.ALL | wx.EXPAND, 5) import requests self.certPath = wx.StaticText(panel, wx.ID_ANY, _t("Cert Path:"), wx.DefaultPosition, wx.DefaultSize, 0) self.certPath.Wrap(-1) mainSizer.Add(self.certPath, 0, wx.ALL, 5) self.certPathCtrl = wx.TextCtrl(panel, wx.ID_ANY, requests.certs.where(), wx.DefaultPosition, wx.DefaultSize, 0) self.certPathCtrl.SetEditable(False) self.certPathCtrl.SetBackgroundColour((200, 200, 200)) mainSizer.Add(self.certPathCtrl, 0, wx.ALL | wx.EXPAND, 5) # Debug Logging self.cbdebugLogging = wx.CheckBox(panel, wx.ID_ANY, _t("Debug Logging Enabled"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbdebugLogging, 0, wx.ALL | wx.EXPAND, 5) self.stDumpLogs = wx.StaticText(panel, wx.ID_ANY, _t("Pressing this button will cause all logs in memory to write to the log file:"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.stDumpLogs, 0, wx.ALL, 5) self.btnDumpLogs = wx.Button(panel, wx.ID_ANY, _t("Dump All Logs"), wx.DefaultPosition, wx.DefaultSize, 0) self.btnDumpLogs.Bind(wx.EVT_BUTTON, OnDumpLogs) mainSizer.Add(self.btnDumpLogs, 0, wx.ALIGN_LEFT, 5) self.cbdebugLogging.SetValue(config.debug) self.cbdebugLogging.Bind(wx.EVT_CHECKBOX, self.onCBdebugLogging) panel.SetSizer(mainSizer) panel.Layout() def onCBdebugLogging(self, event): # We don't want users to be able to actually change this, # so if they try and change it, set it back to the current setting self.cbdebugLogging.SetValue(config.debug) # In case we do, down there road, here's a bit of a start. ''' if self.cbdebugLogging.GetValue() is True: self.cbdebugLogging.SetValue(False) config.Debug = self.cbdebugLogging.GetValue() else: self.cbdebugLogging.SetValue(True) config.Debug = self.cbdebugLogging.GetValue() ''' def getImage(self): return BitmapLoader.getBitmap("settings_log", "gui") PFGeneralPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaMarketPreferences.py ================================================ # noinspection PyPackageRequirements import wx from wx.lib.intctrl import IntCtrl from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader import gui.mainFrame import gui.globalEvents as GE from service.settings import MarketPriceSettings from service.fit import Fit from service.price import Price _t = wx.GetTranslation class PFMarketPref(PreferenceView): def __init__(self): self.priceSettings = MarketPriceSettings.getInstance() def populatePanel(self, panel): self.title = _t("Market & Prices") self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.sFit = Fit.getInstance() helpCursor = wx.Cursor(wx.CURSOR_QUESTION_ARROW) mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, _t("Market && Prices"), wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) delayTimer = wx.BoxSizer(wx.HORIZONTAL) self.stMarketDelay = wx.StaticText(panel, wx.ID_ANY, _t("Market Search Delay (ms):"), wx.DefaultPosition, wx.DefaultSize, 0) self.stMarketDelay.Wrap(-1) if "wxGTK" not in wx.PlatformInfo: self.stMarketDelay.SetCursor(helpCursor) self.stMarketDelay.SetToolTip(wx.ToolTip( _t('The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box.'))) delayTimer.Add(self.stMarketDelay, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.intDelay = IntCtrl(panel, max=1000, limited=True) delayTimer.Add(self.intDelay, 0, wx.ALL, 5) mainSizer.Add(delayTimer, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.intDelay.SetValue(self.sFit.serviceFittingOptions["marketSearchDelay"]) self.intDelay.Bind(wx.lib.intctrl.EVT_INT, self.onMarketDelayChange) self.cbMarketShortcuts = wx.CheckBox(panel, wx.ID_ANY, _t("Show market shortcuts"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbMarketShortcuts, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.cbMarketShortcuts.SetValue(self.sFit.serviceFittingOptions["showMarketShortcuts"] or False) self.cbMarketShortcuts.Bind(wx.EVT_CHECKBOX, self.onCBShowShortcuts) priceSizer = wx.BoxSizer(wx.HORIZONTAL) self.stDefaultSystem = wx.StaticText(panel, wx.ID_ANY, _t("Default Market Prices:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stDefaultSystem.Wrap(-1) priceSizer.Add(self.stDefaultSystem, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) if "wxGTK" not in wx.PlatformInfo: self.stDefaultSystem.SetCursor(helpCursor) self.stDefaultSystem.SetToolTip(wx.ToolTip( _t('The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. ' 'The system you choose will also be tried first, and if no data is available, global price will be used.'))) self.chPriceSource = wx.Choice(panel, choices=sorted(Price.sources.keys())) self.chPriceSystem = wx.Choice(panel, choices=list(Price.systemsList.keys())) priceSizer.Add(self.chPriceSource, 1, wx.ALL | wx.EXPAND, 5) priceSizer.Add(self.chPriceSystem, 1, wx.ALL | wx.EXPAND, 5) mainSizer.Add(priceSizer, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.chPriceSource.SetStringSelection(self.sFit.serviceFittingOptions["priceSource"]) self.chPriceSource.Bind(wx.EVT_CHOICE, self.onPricesSourceSelection) self.chPriceSystem.SetStringSelection(self.sFit.serviceFittingOptions["priceSystem"]) self.chPriceSystem.Bind(wx.EVT_CHOICE, self.onPriceSelection) self.tbTotalPriceBox = wx.StaticBoxSizer(wx.VERTICAL, panel, _t("Total Price Includes")) self.tbTotalPriceDrones = wx.CheckBox(panel, -1, _t("Drones"), wx.DefaultPosition, wx.DefaultSize, 1) self.tbTotalPriceDrones.SetValue(self.priceSettings.get("drones")) self.tbTotalPriceDrones.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceDroneChange) self.tbTotalPriceBox.Add(self.tbTotalPriceDrones, 0, wx.LEFT | wx.RIGHT | wx.TOP, 5) self.tbTotalPriceCargo = wx.CheckBox(panel, -1, _t("Cargo"), wx.DefaultPosition, wx.DefaultSize, 1) self.tbTotalPriceCargo.SetValue(self.priceSettings.get("cargo")) self.tbTotalPriceCargo.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceCargoChange) self.tbTotalPriceBox.Add(self.tbTotalPriceCargo, 0, wx.LEFT | wx.RIGHT, 5) self.tbTotalPriceCharacter = wx.CheckBox(panel, -1, _t("Implants && Boosters"), wx.DefaultPosition, wx.DefaultSize, 1) self.tbTotalPriceCharacter.SetValue(self.priceSettings.get("character")) self.tbTotalPriceCharacter.Bind(wx.EVT_CHECKBOX, self.OnTotalPriceCharacterChange) self.tbTotalPriceBox.Add(self.tbTotalPriceCharacter, 0, wx.LEFT | wx.RIGHT | wx.BOTTOM, 5) mainSizer.Add(self.tbTotalPriceBox, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.rbMarketSearch = wx.RadioBox(panel, -1, _t("Market Search && Recent Items"), wx.DefaultPosition, wx.DefaultSize, [_t("No changes to meta buttons"), _t("Enable all meta buttons for a duration of search / recents"), _t("Enable all meta buttons")], 1, wx.RA_SPECIFY_COLS) self.rbMarketSearch.SetSelection(self.priceSettings.get('marketMGSearchMode')) mainSizer.Add(self.rbMarketSearch, 0, wx.RIGHT | wx.TOP | wx.EXPAND, 10) self.rbMarketSearch.Bind(wx.EVT_RADIOBOX, self.OnMarketSearchChange) self.rbMarketEmpty = wx.RadioBox(panel, -1, _t("Market Group Selection"), wx.DefaultPosition, wx.DefaultSize, [_t("No changes to meta buttons"), _t("Enable all meta buttons")], 1, wx.RA_SPECIFY_COLS) self.rbMarketEmpty.SetSelection(self.priceSettings.get('marketMGMarketSelectMode')) mainSizer.Add(self.rbMarketEmpty, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.rbMarketEmpty.Bind(wx.EVT_RADIOBOX, self.OnMarketGroupSelectionChange) self.rbMarketEmpty = wx.RadioBox(panel, -1, _t("Empty Market View"), wx.DefaultPosition, wx.DefaultSize, [_t("No changes to meta buttons"), _t("Enable leftmost available meta button"), _t("Enable all available meta buttons")], 1, wx.RA_SPECIFY_COLS) self.rbMarketEmpty.SetSelection(self.priceSettings.get('marketMGEmptyMode')) mainSizer.Add(self.rbMarketEmpty, 0, wx.EXPAND | wx.TOP | wx.RIGHT, 10) self.rbMarketEmpty.Bind(wx.EVT_RADIOBOX, self.OnMarketEmptyChange) self.rbMarketJump = wx.RadioBox(panel, -1, _t("Item Market Group Jump"), wx.DefaultPosition, wx.DefaultSize, [_t("No changes to meta buttons"), _t("Enable item's meta button"), _t("Enable item's meta button, disable others"), _t("Enable all meta buttons")], 1, wx.RA_SPECIFY_COLS) self.rbMarketJump.SetSelection(self.priceSettings.get('marketMGJumpMode')) mainSizer.Add(self.rbMarketJump, 0, wx.EXPAND | wx.TOP | wx.RIGHT | wx.BOTTOM, 10) self.rbMarketJump.Bind(wx.EVT_RADIOBOX, self.OnMarketJumpChange) panel.SetSizer(mainSizer) panel.Layout() def onMarketDelayChange(self, event): self.sFit.serviceFittingOptions["marketSearchDelay"] = self.intDelay.GetValue() event.Skip() def onCBShowShortcuts(self, event): self.sFit.serviceFittingOptions["showMarketShortcuts"] = self.cbMarketShortcuts.GetValue() def getImage(self): return BitmapLoader.getBitmap("settings_market", "gui") def onPriceSelection(self, event): system = self.chPriceSystem.GetString(self.chPriceSystem.GetSelection()) self.sFit.serviceFittingOptions["priceSystem"] = system fitID = self.mainFrame.getActiveFit() self.sFit.refreshFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def onPricesSourceSelection(self, event): source = self.chPriceSource.GetString(self.chPriceSource.GetSelection()) self.sFit.serviceFittingOptions["priceSource"] = source def OnTotalPriceDroneChange(self, event): self.priceSettings.set('drones', event.GetInt()) fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def OnTotalPriceCargoChange(self, event): self.priceSettings.set('cargo', event.GetInt()) fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def OnTotalPriceCharacterChange(self, event): self.priceSettings.set('character', event.GetInt()) fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def OnMarketJumpChange(self, event): self.priceSettings.set('marketMGJumpMode', event.GetInt()) def OnMarketEmptyChange(self, event): self.priceSettings.set('marketMGEmptyMode', event.GetInt()) def OnMarketSearchChange(self, event): self.priceSettings.set('marketMGSearchMode', event.GetInt()) def OnMarketGroupSelectionChange(self, event): self.priceSettings.set('marketMGMarketSelectMode', event.GetInt()) PFMarketPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaNetworkPreferences.py ================================================ # noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader import gui.mainFrame from service.settings import NetworkSettings from service.network import Network _t = wx.GetTranslation class PFNetworkPref(PreferenceView): def populatePanel(self, panel): self.title = _t("Network") self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.settings = NetworkSettings.getInstance() self.network = Network.getInstance() self.dirtySettings = False mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.cbEnableNetwork = wx.CheckBox(panel, wx.ID_ANY, _t("Enable Network"), wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cbEnableNetwork, 0, wx.ALL | wx.EXPAND, 5) subSizer = wx.BoxSizer(wx.VERTICAL) self.cbEve = wx.CheckBox(panel, wx.ID_ANY, _t("EVE Servers (API && CREST import)"), wx.DefaultPosition, wx.DefaultSize, 0) subSizer.Add(self.cbEve, 0, wx.ALL | wx.EXPAND, 5) self.cbPricing = wx.CheckBox(panel, wx.ID_ANY, _t("Pricing updates"), wx.DefaultPosition, wx.DefaultSize, 0) subSizer.Add(self.cbPricing, 0, wx.ALL | wx.EXPAND, 5) self.cbPyfaUpdate = wx.CheckBox(panel, wx.ID_ANY, _t("Pyfa Update checks"), wx.DefaultPosition, wx.DefaultSize, 0) subSizer.Add(self.cbPyfaUpdate, 0, wx.ALL | wx.EXPAND, 5) mainSizer.Add(subSizer, 0, wx.LEFT | wx.EXPAND, 30) proxyTitle = wx.StaticText(panel, wx.ID_ANY, _t("Proxy settings"), wx.DefaultPosition, wx.DefaultSize, 0) proxyTitle.Wrap(-1) proxyTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(proxyTitle, 0, wx.ALL, 5) mainSizer.Add(wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 5) self.cbEnableNetwork.SetValue(self.settings.isEnabled(self.network.ENABLED)) self.cbEve.SetValue(self.settings.isEnabled(self.network.EVE)) self.cbPricing.SetValue(self.settings.isEnabled(self.network.PRICES)) self.cbPyfaUpdate.SetValue(self.settings.isEnabled(self.network.UPDATE)) self.cbEnableNetwork.Bind(wx.EVT_CHECKBOX, self.OnCBEnableChange) self.cbEve.Bind(wx.EVT_CHECKBOX, self.OnCBEveChange) self.cbPricing.Bind(wx.EVT_CHECKBOX, self.OnCBPricingChange) self.cbPyfaUpdate.Bind(wx.EVT_CHECKBOX, self.OnCBUpdateChange) self.toggleNetworks(self.cbEnableNetwork.GetValue()) # --------------- # Proxy # --------------- self.nMode = self.settings.getMode() self.nAddr = self.settings.getAddress() self.nPort = self.settings.getPort() self.nType = self.settings.getType() self.nAuth = self.settings.getProxyAuthDetails() # tuple of (login, password) if self.nAuth is None: self.nAuth = ("", "") # we don't want None here, it should be a tuple ptypeSizer = wx.BoxSizer(wx.HORIZONTAL) self.stPType = wx.StaticText(panel, wx.ID_ANY, _t("Mode:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stPType.Wrap(-1) ptypeSizer.Add(self.stPType, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.chProxyTypeChoices = [_t("No proxy"), _t("Auto-detected proxy settings"), _t("Manual proxy settings")] self.chProxyType = wx.Choice(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, self.chProxyTypeChoices, 0) self.chProxyType.SetSelection(self.nMode) ptypeSizer.Add(self.chProxyType, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) mainSizer.Add(ptypeSizer, 0, wx.EXPAND, 5) fgAddrSizer = wx.FlexGridSizer(2, 2, 0, 0) fgAddrSizer.AddGrowableCol(1) fgAddrSizer.SetFlexibleDirection(wx.BOTH) fgAddrSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.stPSetAddr = wx.StaticText(panel, wx.ID_ANY, _t("Addr:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stPSetAddr.Wrap(-1) fgAddrSizer.Add(self.stPSetAddr, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.editProxySettingsAddr = wx.TextCtrl(panel, wx.ID_ANY, self.nAddr, wx.DefaultPosition, wx.DefaultSize, 0) fgAddrSizer.Add(self.editProxySettingsAddr, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5) self.stPSetPort = wx.StaticText(panel, wx.ID_ANY, _t("Port:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stPSetPort.Wrap(-1) fgAddrSizer.Add(self.stPSetPort, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) self.editProxySettingsPort = wx.TextCtrl(panel, wx.ID_ANY, self.nPort, wx.DefaultPosition, wx.DefaultSize, 0) fgAddrSizer.Add(self.editProxySettingsPort, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 5) mainSizer.Add(fgAddrSizer, 0, wx.EXPAND, 5) # proxy auth information: login and pass self.stPSetLogin = wx.StaticText(panel, wx.ID_ANY, _t("Username:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stPSetLogin.Wrap(-1) self.editProxySettingsLogin = wx.TextCtrl(panel, wx.ID_ANY, self.nAuth[0], wx.DefaultPosition, wx.DefaultSize, 0) self.stPSetPassword = wx.StaticText(panel, wx.ID_ANY, _t("Password:"), wx.DefaultPosition, wx.DefaultSize, 0) self.stPSetPassword.Wrap(-1) self.editProxySettingsPassword = wx.TextCtrl(panel, wx.ID_ANY, self.nAuth[1], wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD) pAuthSizer = wx.BoxSizer(wx.HORIZONTAL) pAuthSizer.Add(self.stPSetLogin, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) pAuthSizer.Add(self.editProxySettingsLogin, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) pAuthSizer.Add(self.stPSetPassword, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) pAuthSizer.Add(self.editProxySettingsPassword, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) mainSizer.Add(pAuthSizer, 0, wx.EXPAND, 5) self.stPSAutoDetected = wx.StaticText(panel, wx.ID_ANY, _t("Auto-detected: "), wx.DefaultPosition, wx.DefaultSize, 0) self.stPSAutoDetected.Wrap(-1) mainSizer.Add(self.stPSAutoDetected, 0, wx.ALL, 5) btnSizer = wx.BoxSizer(wx.HORIZONTAL) btnSizer.AddStretchSpacer() self.btnApply = wx.Button(panel, wx.ID_ANY, _t("Apply Proxy Settings"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.btnApply, 0, wx.ALL, 5) mainSizer.Add(btnSizer, 0, wx.EXPAND, 5) proxy = self.settings.autodetect() if proxy is not None: addr, port = proxy txt = addr + ":" + str(port) else: txt = "None" self.stPSAutoDetected.SetLabel(_t("Auto-detected: ") + txt) self.stPSAutoDetected.Disable() self.chProxyType.Bind(wx.EVT_CHOICE, self.OnCHProxyTypeSelect) self.editProxySettingsAddr.Bind(wx.EVT_TEXT, self.OnEditPSAddrText) self.editProxySettingsPort.Bind(wx.EVT_TEXT, self.OnEditPSPortText) self.editProxySettingsLogin.Bind(wx.EVT_TEXT, self.OnEditPSLoginText) self.editProxySettingsPassword.Bind(wx.EVT_TEXT, self.OnEditPSPasswordText) self.btnApply.Bind(wx.EVT_BUTTON, self.OnBtnApply) self.UpdateApplyButtonState() if self.nMode is not NetworkSettings.PROXY_MODE_MANUAL: # == 2 self.ToggleProxySettings(False) else: self.ToggleProxySettings(True) panel.SetSizer(mainSizer) panel.Layout() def toggleNetworks(self, toggle): self.cbEve.Enable(toggle) self.cbPricing.Enable(toggle) self.cbPyfaUpdate.Enable(toggle) def OnCBEnableChange(self, event): self.settings.toggleAccess(self.network.ENABLED, self.cbEnableNetwork.GetValue()) self.toggleNetworks(self.cbEnableNetwork.GetValue()) def OnCBUpdateChange(self, event): self.settings.toggleAccess(self.network.UPDATE, self.cbPyfaUpdate.GetValue()) def OnCBPricingChange(self, event): self.settings.toggleAccess(self.network.PRICES, self.cbPricing.GetValue()) def OnCBEveChange(self, event): self.settings.toggleAccess(self.network.EVE, self.cbEve.GetValue()) def OnEditPSAddrText(self, event): self.nAddr = self.editProxySettingsAddr.GetValue() self.dirtySettings = True self.UpdateApplyButtonState() def OnEditPSPortText(self, event): self.nPort = self.editProxySettingsPort.GetValue() self.dirtySettings = True self.UpdateApplyButtonState() def OnEditPSLoginText(self, event): self.nAuth = (self.editProxySettingsLogin.GetValue(), self.nAuth[1]) self.dirtySettings = True self.UpdateApplyButtonState() def OnEditPSPasswordText(self, event): self.nAuth = (self.nAuth[0], self.editProxySettingsPassword.GetValue()) self.dirtySettings = True self.UpdateApplyButtonState() def OnBtnApply(self, event): self.dirtySettings = False self.UpdateApplyButtonState() self.SaveSettings() def SaveSettings(self): self.settings.setMode(self.nMode) self.settings.setAddress(self.nAddr) self.settings.setPort(self.nPort) self.settings.setType(self.nType) self.settings.setProxyAuthDetails(self.nAuth[0], self.nAuth[1]) def UpdateApplyButtonState(self): if self.dirtySettings: self.btnApply.Enable() else: self.btnApply.Disable() def OnCHProxyTypeSelect(self, event): choice = self.chProxyType.GetSelection() self.nMode = choice self.dirtySettings = True self.UpdateApplyButtonState() if choice is not NetworkSettings.PROXY_MODE_MANUAL: self.ToggleProxySettings(False) else: self.ToggleProxySettings(True) def ToggleProxySettings(self, mode): if mode: self.stPSetAddr.Enable() self.editProxySettingsAddr.Enable() self.stPSetPort.Enable() self.editProxySettingsPort.Enable() self.stPSetLogin.Enable() self.stPSetPassword.Enable() self.editProxySettingsLogin.Enable() self.editProxySettingsPassword.Enable() else: self.stPSetAddr.Disable() self.editProxySettingsAddr.Disable() self.stPSetPort.Disable() self.editProxySettingsPort.Disable() self.stPSetLogin.Disable() self.stPSetPassword.Disable() self.editProxySettingsLogin.Disable() self.editProxySettingsPassword.Disable() def getImage(self): return BitmapLoader.getBitmap("prefs_proxy", "gui") PFNetworkPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaStatViewPreferences.py ================================================ # noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader from service.settings import StatViewSettings _t = wx.GetTranslation class PFStatViewPref(PreferenceView): def __init__(self): self.dirtySettings = False self.settings = StatViewSettings.getInstance() def refreshPanel(self, fit): pass # noinspection PyAttributeOutsideInit def populatePanel(self, panel): self.title = _t("Statistics Panel") mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.stSubTitle = wx.StaticText(panel, wx.ID_ANY, _t("Changes require restart of pyfa to take effect."), wx.DefaultPosition, wx.DefaultSize, 0) self.stSubTitle.Wrap(-1) mainSizer.Add(self.stSubTitle, 0, wx.ALL, 3) # Row 1 self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.ALL, 5) rbSizerRow1 = wx.BoxSizer(wx.HORIZONTAL) self.rbResources = wx.RadioBox(panel, -1, _t("Resources"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbResources.EnableItem(1, False) self.rbResources.SetSelection(self.settings.get('resources')) rbSizerRow1.Add(self.rbResources, 1, wx.TOP | wx.RIGHT, 5) self.rbResources.Bind(wx.EVT_RADIOBOX, self.OnResourcesChange) self.rbResistances = wx.RadioBox(panel, -1, _t("Resistances"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbResistances.EnableItem(1, False) self.rbResistances.SetSelection(self.settings.get('resistances')) rbSizerRow1.Add(self.rbResistances, 1, wx.ALL, 5) self.rbResistances.Bind(wx.EVT_RADIOBOX, self.OnResistancesChange) self.rbRecharge = wx.RadioBox(panel, -1, _t("Shield/Armor Tank"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbRecharge.EnableItem(1, False) self.rbRecharge.SetSelection(self.settings.get('recharge')) rbSizerRow1.Add(self.rbRecharge, 1, wx.ALL, 5) self.rbRecharge.Bind(wx.EVT_RADIOBOX, self.OnRechargeChange) mainSizer.Add(rbSizerRow1, 1, wx.ALL | wx.EXPAND, 0) # Row 2 rbSizerRow2 = wx.BoxSizer(wx.HORIZONTAL) self.rbFirepower = wx.RadioBox(panel, -1, _t("Firepower"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbFirepower.EnableItem(1, False) self.rbFirepower.SetSelection(self.settings.get('firepower')) rbSizerRow2.Add(self.rbFirepower, 1, wx.TOP | wx.RIGHT, 5) self.rbFirepower.Bind(wx.EVT_RADIOBOX, self.OnFirepowerChange) self.rbCapacitor = wx.RadioBox(panel, -1, _t("Capacitor"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbCapacitor.EnableItem(1, False) self.rbCapacitor.SetSelection(self.settings.get('capacitor')) rbSizerRow2.Add(self.rbCapacitor, 1, wx.ALL, 5) self.rbCapacitor.Bind(wx.EVT_RADIOBOX, self.OnCapacitorChange) self.rbMisc = wx.RadioBox(panel, -1, _t("Misc"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable full as we don't have a view for this yet self.rbMisc.EnableItem(2, False) self.rbMisc.SetSelection(self.settings.get('targetingMisc')) rbSizerRow2.Add(self.rbMisc, 1, wx.ALL, 5) self.rbMisc.Bind(wx.EVT_RADIOBOX, self.OnTargetingMiscChange) mainSizer.Add(rbSizerRow2, 1, wx.ALL | wx.EXPAND, 0) # Row 3 rbSizerRow3 = wx.BoxSizer(wx.HORIZONTAL) self.rbPrice = wx.RadioBox(panel, -1, _t("Price"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) self.rbPrice.SetSelection(self.settings.get('price')) rbSizerRow3.Add(self.rbPrice, 1, wx.TOP | wx.RIGHT, 5) self.rbPrice.Bind(wx.EVT_RADIOBOX, self.OnPriceChange) self.rbOutgoing = wx.RadioBox(panel, -1, _t("Remote Reps"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) self.rbOutgoing.SetSelection(self.settings.get('outgoing')) rbSizerRow3.Add(self.rbOutgoing, 1, wx.TOP | wx.RIGHT, 5) self.rbOutgoing.Bind(wx.EVT_RADIOBOX, self.OnOutgoingChange) self.rbBombing = wx.RadioBox(panel, -1, _t("Bombing"), wx.DefaultPosition, wx.DefaultSize, [_t('None'), _t('Minimal'), _t('Full')], 1, wx.RA_SPECIFY_COLS) # Disable minimal as we don't have a view for this yet self.rbBombing.EnableItem(1, False) self.rbBombing.SetSelection(self.settings.get('bombing')) rbSizerRow3.Add(self.rbBombing, 1, wx.TOP | wx.RIGHT, 5) self.rbBombing.Bind(wx.EVT_RADIOBOX, self.OnBombingChange) mainSizer.Add(rbSizerRow3, 1, wx.ALL | wx.EXPAND, 0) panel.SetSizer(mainSizer) panel.Layout() def OnResourcesChange(self, event): self.settings.set('resources', event.GetInt()) def OnResistancesChange(self, event): self.settings.set('resistances', event.GetInt()) def OnRechargeChange(self, event): self.settings.set('recharge', event.GetInt()) def OnFirepowerChange(self, event): self.settings.set('firepower', event.GetInt()) def OnCapacitorChange(self, event): self.settings.set('capacitor', event.GetInt()) def OnTargetingMiscChange(self, event): self.settings.set('targetingMisc', event.GetInt()) def OnPriceChange(self, event): self.settings.set('price', event.GetInt()) def OnOutgoingChange(self, event): self.settings.set('outgoing', event.GetInt()) def OnMiningYieldChange(self, event): self.settings.set('miningyield', event.GetInt()) def OnDroneChange(self, event): self.settings.set('drones', event.GetInt()) def getImage(self): return BitmapLoader.getBitmap("settings_stats", "gui") def OnBombingChange(self, event): self.settings.set('bombing', event.GetInt()) PFStatViewPref.register() ================================================ FILE: gui/builtinPreferenceViews/pyfaUpdatePreferences.py ================================================ # noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader from service.settings import UpdateSettings _t = wx.GetTranslation class PFUpdatePref(PreferenceView): def populatePanel(self, panel): self.title = _t("Updates") self.desc = _t("Pyfa can automatically check and notify you of new releases. " "This feature is toggled in the Network settings. " "Here, you may allow pre-release notifications and view " "suppressed release notifications, if any.") self.UpdateSettings = UpdateSettings.getInstance() self.dirtySettings = False dlgWidth = panel.GetParent().GetParent().ClientSize.width mainSizer = wx.BoxSizer(wx.VERTICAL) self.stTitle = wx.StaticText(panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0) self.stTitle.Wrap(-1) self.stTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) mainSizer.Add(self.stTitle, 0, wx.EXPAND | wx.ALL, 5) self.m_staticline1 = wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.stDesc = wx.StaticText(panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0) self.stDesc.Wrap(dlgWidth - 50) mainSizer.Add(self.stDesc, 0, wx.ALL, 5) self.suppressPrerelease = wx.CheckBox(panel, wx.ID_ANY, _t("Allow pre-release notifications"), wx.DefaultPosition, wx.DefaultSize, 0) self.suppressPrerelease.Bind(wx.EVT_CHECKBOX, self.OnPrereleaseStateChange) self.suppressPrerelease.SetValue(not self.UpdateSettings.get('prerelease')) mainSizer.Add(self.suppressPrerelease, 0, wx.ALL | wx.EXPAND, 5) if self.UpdateSettings.get('version'): self.versionSizer = wx.BoxSizer(wx.VERTICAL) self.versionTitle = wx.StaticText(panel, wx.ID_ANY, _t("Suppressing {0} Notifications").format( self.UpdateSettings.get('version')), wx.DefaultPosition, wx.DefaultSize, 0) self.versionTitle.Wrap(-1) self.versionTitle.SetFont(wx.Font(12, 70, 90, 90, False, wx.EmptyString)) self.versionInfo = _t("There is a release available which you have chosen to suppress. " "You can choose to reset notification suppression for this release, " "or download the new release from GitHub.") self.versionSizer.AddStretchSpacer() self.versionSizer.Add(wx.StaticLine(panel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND, 5) self.versionSizer.AddStretchSpacer() self.versionSizer.Add(self.versionTitle, 0, wx.EXPAND, 5) self.versionDesc = wx.StaticText(panel, wx.ID_ANY, self.versionInfo, wx.DefaultPosition, wx.DefaultSize, 0) self.versionDesc.Wrap(dlgWidth - 50) self.versionSizer.Add(self.versionDesc, 0, wx.ALL, 5) actionSizer = wx.BoxSizer(wx.HORIZONTAL) resetSizer = wx.BoxSizer(wx.VERTICAL) self.downloadButton = wx.Button(panel, wx.ID_ANY, _t("Download"), wx.DefaultPosition, wx.DefaultSize, 0) self.downloadButton.Bind(wx.EVT_BUTTON, self.OnDownload) resetSizer.Add(self.downloadButton, 0, wx.ALL, 5) actionSizer.Add(resetSizer, 1, wx.EXPAND, 5) self.resetButton = wx.Button(panel, wx.ID_ANY, _t("Reset Suppression"), wx.DefaultPosition, wx.DefaultSize, 0) self.resetButton.Bind(wx.EVT_BUTTON, self.ResetSuppression) actionSizer.Add(self.resetButton, 0, wx.ALL, 5) self.versionSizer.Add(actionSizer, 0, wx.EXPAND, 5) mainSizer.Add(self.versionSizer, 0, wx.EXPAND, 5) panel.SetSizer(mainSizer) panel.Layout() def OnPrereleaseStateChange(self, event): self.UpdateSettings.set('prerelease', not self.suppressPrerelease.IsChecked()) def ResetSuppression(self, event): self.UpdateSettings.set('version', None) # Todo: Find a way to hide the entire panel in one go self.versionSizer.Hide(True) self.versionTitle.Hide() self.versionDesc.Hide() self.downloadButton.Hide() self.resetButton.Hide() self.resetButton.Hide() def OnDownload(self, event): wx.LaunchDefaultBrowser('https://github.com/pyfa-org/Pyfa/releases/tag/' + self.UpdateSettings.get('version')) def getImage(self): return BitmapLoader.getBitmap("prefs_update", "gui") PFUpdatePref.register() ================================================ FILE: gui/builtinShipBrowser/__init__.py ================================================ ================================================ FILE: gui/builtinShipBrowser/categoryItem.py ================================================ # coding: utf-8 import wx from logbook import Logger from gui.builtinShipBrowser.sfBrowserItem import SFBrowserItem import gui.utils.color as colorUtils import gui.utils.draw as drawUtils import gui.utils.fonts as fonts from gui.bitmap_loader import BitmapLoader from .events import Stage2Selected pyfalog = Logger(__name__) class CategoryItem(SFBrowserItem): def __init__(self, parent, categoryID, fittingInfo, size=(0, 16)): SFBrowserItem.__init__(self, parent, size=size) if categoryID: self.shipBmp = BitmapLoader.getBitmap("ship_small", "gui") else: self.shipBmp = wx.Bitmap(16, 16) self.dropShadowBitmap = drawUtils.CreateDropShadowBitmap(self.shipBmp, 0.2) self.categoryID = categoryID self.fittingInfo = fittingInfo self.shipBrowser = self.Parent.Parent self.padding = 4 self.fontBig = wx.Font(fonts.BIG, wx.SWISS, wx.NORMAL, wx.NORMAL) self.animTimerId = wx.NewId() self.animTimer = wx.Timer(self, self.animTimerId) self.animStep = 0 self.animPeriod = 10 self.animDuration = 100 self.Bind(wx.EVT_TIMER, self.OnTimer) # ===================================================================== # Disabled - it will be added as an option to Preferences self.animCount = 0 # self.animTimer.Start(self.animPeriod) # ===================================================================== def OnTimer(self, event): step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration) self.animCount = 10 - step self.animStep += self.animPeriod if self.animStep > self.animDuration or self.animCount < 0: self.animCount = 0 self.animTimer.Stop() self.Refresh() def OnKeyUp(self, event): if event.GetKeyCode() in (32, 13): # space and enter self.selectCategory(event) event.Skip() @staticmethod def OUT_QUAD(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d return -c * t * (t - 2) + b def GetType(self): return 1 def selectCategory(self, event): categoryID = self.categoryID wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=False)) def MouseLeftUp(self, event): self.selectCategory(event) def UpdateElementsPos(self, mdc): rect = self.GetRect() self.shipBmpx = self.padding self.shipBmpy = (rect.height - self.shipBmp.GetWidth()) / 2 self.shipBmpx -= self.animCount mdc.SetFont(self.fontBig) categoryName, fittings = self.fittingInfo wtext, htext = mdc.GetTextExtent(categoryName) self.catx = self.shipBmpx + self.shipBmp.GetWidth() + self.padding self.caty = (rect.height - htext) / 2 def DrawItem(self, mdc): # rect = self.GetRect() self.UpdateElementsPos(mdc) windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) textColor = colorUtils.GetSuitable(windowColor, 1) mdc.SetTextForeground(textColor) mdc.DrawBitmap(self.dropShadowBitmap, round(self.shipBmpx + 1), round(self.shipBmpy + 1)) mdc.DrawBitmap(self.shipBmp, round(self.shipBmpx), round(self.shipBmpy), 0) mdc.SetFont(self.fontBig) categoryName, fittings = self.fittingInfo mdc.DrawText(categoryName, round(self.catx), round(self.caty)) # ============================================================================= # Waiting for total #fits impl in eos/service # # mdc.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False)) # # if fittings <1: # fformat = "No fits" # else: # if fittings == 1: # fformat = "%d fit" # else: # fformat = "%d fits" # # if fittings>0: # xtext, ytext = mdc.GetTextExtent(fformat % fittings) # ypos = (rect.height - ytext)/2 # else: # xtext, ytext = mdc.GetTextExtent(fformat) # ypos = (rect.height - ytext)/2 # ============================================================================= ================================================ FILE: gui/builtinShipBrowser/events.py ================================================ # noinspection PyPackageRequirements import wx.lib.newevent FitSelected, EVT_FIT_SELECTED = wx.lib.newevent.NewEvent() BoosterListUpdated, BOOSTER_LIST_UPDATED = wx.lib.newevent.NewEvent() Stage1Selected, EVT_SB_STAGE1_SEL = wx.lib.newevent.NewEvent() Stage2Selected, EVT_SB_STAGE2_SEL = wx.lib.newevent.NewEvent() Stage3Selected, EVT_SB_STAGE3_SEL = wx.lib.newevent.NewEvent() SearchSelected, EVT_SB_SEARCH_SEL = wx.lib.newevent.NewEvent() ImportSelected, EVT_SB_IMPORT_SEL = wx.lib.newevent.NewEvent() ================================================ FILE: gui/builtinShipBrowser/fitItem.py ================================================ # coding: utf-8 import re import time import wx from logbook import Logger import config import gui.builtinShipBrowser.sfBrowserItem as SFItem import gui.fitCommands as cmd import gui.mainFrame import gui.globalEvents as GE import gui.utils.color as colorUtils import gui.utils.draw as drawUtils import gui.utils.fonts as fonts from gui.bitmap_loader import BitmapLoader from gui.builtinShipBrowser.pfBitmapFrame import PFBitmapFrame from service.fit import Fit from .events import BoosterListUpdated, FitSelected, ImportSelected, SearchSelected, Stage3Selected pyfalog = Logger(__name__) _t = wx.GetTranslation class FitItem(SFItem.SFBrowserItem): def __init__(self, parent, fitID=None, shipFittingInfo=("Test", "TestTrait", "cnc's avatar", 0, 0, None), shipID=None, itemData=None, graphicID=None, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(0, 40), style=0): # ===================================================================== # animCount should be 10 if we enable animation in Preferences # ===================================================================== self.animCount = 0 self.selectedDelta = 0 SFItem.SFBrowserItem.__init__(self, parent, size=size) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self._itemData = itemData self.fitID = fitID self.shipID = shipID self.shipBrowser = self.Parent.Parent self.shipBmp = None self.deleted = False if shipID: self.shipBmp = BitmapLoader.getBitmap(str(graphicID), "renders") if not self.shipBmp: self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big", "gui") self.shipFittingInfo = shipFittingInfo self.shipName, self.shipTrait, self.fitName, self.fitBooster, self.timestamp, self.notes = shipFittingInfo if config.debug: self.fitName = '({}) {}'.format(self.fitID, self.fitName) self.shipTrait = re.sub("<.*?>", " ", self.shipTrait) # see GH issue #62 # Disabling this due to change in gang boosts Nov 2016 # if self.fitBooster is None: self.fitBooster = False self.fitBooster = False self.boosterBmp = BitmapLoader.getBitmap("fleet_fc_small", "gui") self.copyBmp = BitmapLoader.getBitmap("fit_add_small", "gui") self.renameBmp = BitmapLoader.getBitmap("fit_rename_small", "gui") self.deleteBmp = BitmapLoader.getBitmap("fit_delete_small", "gui") self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui") self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big", "gui") img = self.shipEffBk.ConvertToImage() img = img.Mirror(False) self.shipEffBkMirrored = wx.Bitmap(img) self.dragTLFBmp = None self.bkBitmap = None self.__setToolTip() self.padding = 4 self.editWidth = 150 self.dragging = False self.dragged = False self.dragMotionTrail = 5 self.dragMotionTrigger = self.dragMotionTrail self.dragWindow = None self.fontBig = wx.Font(fonts.BIG, wx.SWISS, wx.NORMAL, wx.BOLD) self.fontNormal = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL) self.fontSmall = wx.Font(fonts.SMALL, wx.SWISS, wx.NORMAL, wx.NORMAL) self.SetDraggable() self.boosterBtn = self.toolbar.AddButton(self.boosterBmp, "Booster", show=self.fitBooster) self.toolbar.AddButton(self.copyBmp, _t("Copy"), self.copyBtnCB) self.renameBtn = self.toolbar.AddButton(self.renameBmp, _t("Rename"), self.renameBtnCB) self.toolbar.AddButton(self.deleteBmp, _t("Delete"), self.deleteBtnCB) self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s" % self.fitName, wx.DefaultPosition, (self.editWidth, -1), wx.TE_PROCESS_ENTER) if self.shipBrowser.fitIDMustEditName != self.fitID: self.tcFitName.Show(False) else: self.tcFitName.SetFocus() self.tcFitName.SelectAll() self.shipBrowser.fitIDMustEditName = -1 self.renameBtn.SetBitmap(self.acceptBmp) self.tcFitName.Bind(wx.EVT_TEXT_ENTER, self.renameFit) self.tcFitName.Bind(wx.EVT_KILL_FOCUS, self.editLostFocus) self.tcFitName.Bind(wx.EVT_KEY_DOWN, self.editCheckEsc) self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self.OnMouseCaptureLost) self.mainFrame.Bind(GE.FIT_RENAMED, self.OnFitRename) self.animTimerId = wx.NewId() self.animTimer = wx.Timer(self, self.animTimerId) self.animStep = 0 self.animPeriod = 10 self.animDuration = 100 self.maxDelta = 48 self.Bind(wx.EVT_TIMER, self.OnTimer) # ===================================================================== # DISABLED - it will be added as an option in PREFERENCES # if self.shipBrowser.GetActiveStage() != 4 and self.shipBrowser.GetLastStage() !=3: # self.animTimer.Start(self.animPeriod) # else: # self.animCount = 0 # ===================================================================== """ # Remove this bit as the time stuff is non-functional (works... but not exactly sure what it's meant to do) self.selTimerID = wx.NewId() self.selTimer = wx.Timer(self, self.selTimerID) self.selTimer.Start(100) """ self.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu) self.Bind(wx.EVT_MIDDLE_UP, self.OpenNewTab) def __setToolTip(self): sFit = Fit.getInstance() # show no tooltip if no trait available or setting is disabled if self.shipTrait and sFit.serviceFittingOptions["showShipBrowserTooltip"]: notes = "" if self.notes: notes = '─' * 20 + "\nNotes: {}\n".format(self.notes[:197] + '...' if len(self.notes) > 200 else self.notes) self.SetToolTip(wx.ToolTip('{}\n{}{}\n{}'.format(self.shipName, notes, '─' * 20, self.shipTrait))) def OnKeyUp(self, event): if event.GetKeyCode() in (32, 13): # space and enter self.selectFit(event) event.Skip() def OpenNewTab(self, evt): self.selectFit(newTab=True) def OnProjectToFit(self, event): activeFit = self.mainFrame.getActiveFit() if activeFit: sFit = Fit.getInstance() projectedFit = sFit.getFit(self.fitID) command = cmd.GuiAddProjectedFitsCommand(fitID=activeFit, projectedFitIDs=[projectedFit.ID], amount=1) if self.mainFrame.command.Submit(command): self.mainFrame.additionsPane.select("Projected") def OnAddCommandFit(self, event): activeFit = self.mainFrame.getActiveFit() if activeFit: if self.mainFrame.command.Submit(cmd.GuiAddCommandFitsCommand(fitID=activeFit, commandFitIDs=[self.fitID])): self.mainFrame.additionsPane.select("Command") def OnMouseCaptureLost(self, event): """ Destroy drag information (GH issue #479)""" if self.dragging and self.dragged: self.dragging = False self.dragged = False if self.HasCapture(): self.ReleaseMouse() self.dragWindow.Show(False) self.dragWindow = None def OnContextMenu(self, event): """ Handles context menu for fit. Dragging is handled by MouseLeftUp() """ sFit = Fit.getInstance() fit = sFit.getFit(self.mainFrame.getActiveFit()) if not fit: return pos = wx.GetMousePosition() pos = self.ScreenToClient(pos) # Even though we may not select a booster, automatically set this so that the fleet pane knows which fit we're applying self.mainFrame.additionsPane.gangPage.draggedFitID = self.fitID menu = wx.Menu() # toggleItem = menu.Append(wx.ID_ANY, "Booster Fit", kind=wx.ITEM_CHECK) # menu.Check(toggleItem.GetId(), self.fitBooster) # self.Bind(wx.EVT_MENU, self.OnToggleBooster, toggleItem) # if fit and not fit.isStructure: # # If there is an active fit, get menu for setting individual boosters # menu.AppendSeparator() # boosterMenu = self.mainFrame.additionsPane.gangPage.buildBoostermenu() # menu.AppendSubMenu(boosterMenu, 'Set Booster') if fit: newTabItem = menu.Append(wx.ID_ANY, _t("Open in new tab")) self.Bind(wx.EVT_MENU, self.OpenNewTab, newTabItem) projectedItem = menu.Append(wx.ID_ANY, _t("Project onto Active Fit")) self.Bind(wx.EVT_MENU, self.OnProjectToFit, projectedItem) commandItem = menu.Append(wx.ID_ANY, _t("Add Command Booster")) self.Bind(wx.EVT_MENU, self.OnAddCommandFit, commandItem) self.PopupMenu(menu, pos) event.Skip() def GetType(self): return 3 def OnTimer(self, event): # @todo: figure out what exactly this is supposed to accomplish if self.selTimerID == event.GetId(): ctimestamp = time.time() interval = 5 if ctimestamp < self.timestamp + interval: delta = (ctimestamp - self.timestamp) / interval self.selectedDelta = self.CalculateDelta(0x0, self.maxDelta, delta) self.Refresh() else: self.selectedDelta = self.maxDelta self.selTimer.Stop() if self.animTimerId == event.GetId(): step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration) self.animCount = 10 - step self.animStep += self.animPeriod if self.animStep > self.animDuration or self.animCount < 0: self.animCount = 0 self.animTimer.Stop() self.Refresh() @staticmethod def CalculateDelta(start, end, delta): return start + (end - start) * delta @staticmethod def OUT_QUAD(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d return -c * t * (t - 2) + b def editLostFocus(self, event): self.RestoreEditButton() self.Refresh() event.Skip() def editCheckEsc(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.RestoreEditButton() else: event.Skip() def copyBtnCB(self): if self.tcFitName.IsShown(): self.RestoreEditButton() return self.copyFit() def copyFit(self, event=None): sFit = Fit.getInstance() fitID = sFit.copyFit(self.fitID) self.shipBrowser.fitIDMustEditName = fitID wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID)) wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) def renameBtnCB(self): if self.tcFitName.IsShown(): self.RestoreEditButton() self.renameFit() else: self.tcFitName.SetValue(self.fitName) self.tcFitName.Show() self.renameBtn.SetBitmap(self.acceptBmp) self.tcFitName.SetFocus() self.tcFitName.SelectAll() self.Refresh() def renameFit(self, event=None): self.tcFitName.Show(False) self.editWasShown = 0 fitName = self.tcFitName.GetValue() if fitName: self.mainFrame.command.Submit(cmd.GuiRenameFitCommand(self.fitID, fitName)) else: self.tcFitName.SetValue(self.fitName) def OnFitRename(self, event): if event.fitID == self.fitID: fit = Fit.getInstance().getFit(self.fitID) self.fitName = fit.name if self: self.Refresh() event.Skip() def deleteBtnCB(self): if self.tcFitName.IsShown(): self.RestoreEditButton() return # to prevent accidental deletion, give dialog confirmation unless shift is depressed mstate = wx.GetMouseState() if mstate.GetModifiers() == wx.MOD_SHIFT or mstate.MiddleIsDown(): self.deleteFit() else: with wx.MessageDialog( self.GetTopLevelParent(), "Do you really want to delete this fit?", "Confirm Delete", wx.YES | wx.NO | wx.ICON_QUESTION ) as dlg: if dlg.ShowModal() == wx.ID_YES: self.deleteFit() def deleteFit(self, event=None): pyfalog.debug("Deleting ship fit.") if self.deleted: return else: self.deleted = True sFit = Fit.getInstance() # need to delete from import cache before actually deleting fit if self.shipBrowser.GetActiveStage() == 5: for x in self.shipBrowser.lastdata: # remove fit from import cache if x[0] == self.fitID: self.shipBrowser.lastdata.remove(x) break sFit.deleteFit(self.fitID) # Notify other areas that a fit has been deleted wx.PostEvent(self.mainFrame, GE.FitRemoved(fitID=self.fitID)) # todo: would a simple RefreshList() work here instead of posting that a stage has been selected? if self.shipBrowser.GetActiveStage() == 5: wx.PostEvent(self.shipBrowser, ImportSelected(fits=self.shipBrowser.lastdata, recent=self.shipBrowser.recentFits)) elif self.shipBrowser.GetActiveStage() == 4: wx.PostEvent(self.shipBrowser, SearchSelected(text=self.shipBrowser.navpanel.lastSearch, back=True)) else: wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID)) def MouseLeftUp(self, event): if self.dragging and self.dragged: self.OnMouseCaptureLost(event) targetWnd, _ = wx.FindWindowAtPointer() if not targetWnd: return wnd = targetWnd while wnd is not None: handler = getattr(wnd, "handleDrag", None) if handler: handler("fit", self.fitID) break else: wnd = wnd.Parent event.Skip() return if self.dragging: self.dragging = False if self.tcFitName.IsShown(): self.RestoreEditButton() else: activeFitID = self.mainFrame.getActiveFit() if activeFitID != self.fitID: self.selectFit() def MouseLeftDown(self, event): self.dragging = True def MouseMove(self, event): pos = self.ClientToScreen(event.GetPosition()) if self.dragging: if not self.dragged: if self.dragMotionTrigger < 0: if not self.dragTLFBmp: tdc = wx.MemoryDC() bmpWidth = self.toolbarx if self.toolbarx < 200 else 200 self.dragTLFBmp = wx.Bitmap(round(bmpWidth), round(self.GetRect().height)) tdc.SelectObject(self.dragTLFBmp) tdc.SetBrush(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))) tdc.DrawRectangle(0, 0, bmpWidth, self.GetRect().height) self.DrawItem(tdc) tdc.SelectObject(wx.NullBitmap) if not self.HasCapture(): self.CaptureMouse() self.dragWindow = PFBitmapFrame(self, pos, self.dragTLFBmp) self.dragWindow.Show() self.dragged = True self.dragMotionTrigger = self.dragMotionTrail else: self.dragMotionTrigger -= 1 if self.dragWindow: pos.x += 3 pos.y += 3 self.dragWindow.SetPosition(pos) return def selectFit(self, event=None, newTab=False): if newTab: wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID, startup=2)) else: wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fitID)) def RestoreEditButton(self): self.tcFitName.Show(False) self.renameBtn.SetBitmap(self.renameBmp) self.Refresh() def UpdateElementsPos(self, mdc): rect = self.GetRect() self.toolbarx = rect.width - self.toolbar.GetWidth() - self.padding self.toolbary = (rect.height - self.toolbar.GetHeight()) / 2 self.toolbarx += self.animCount self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth()) / 2 self.shipEffy = (rect.height - self.shipEffBk.GetHeight()) / 2 self.shipEffx -= self.animCount self.shipBmpx = self.padding + (rect.height - self.shipBmp.GetWidth()) / 2 self.shipBmpy = (rect.height - self.shipBmp.GetHeight()) / 2 self.shipBmpx -= self.animCount self.textStartx = self.shipEffx + self.shipEffBk.GetWidth() + self.padding self.fitNamey = (rect.height - self.shipBmp.GetHeight()) / 2 mdc.SetFont(self.fontBig) wtext, htext = mdc.GetTextExtent(self.fitName) self.timestampy = self.fitNamey + htext mdc.SetFont(self.fontSmall) wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel) self.thoverx = self.toolbarx - self.padding - wlabel self.thovery = (rect.height - hlabel) / 2 self.thoverw = wlabel def DrawItem(self, mdc): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) textColor = colorUtils.GetSuitable(windowColor, 1) mdc.SetTextForeground(textColor) self.UpdateElementsPos(mdc) self.toolbar.SetPosition((self.toolbarx, self.toolbary)) if self.GetState() & SFItem.SB_ITEM_HIGHLIGHTED: shipEffBk = self.shipEffBkMirrored else: shipEffBk = self.shipEffBk mdc.DrawBitmap(shipEffBk, round(self.shipEffx), round(self.shipEffy), 0) mdc.DrawBitmap(self.shipBmp, round(self.shipBmpx), round(self.shipBmpy), 0) mdc.SetFont(self.fontNormal) fitDate = self.timestamp.strftime("%m/%d/%Y %H:%M") fitLocalDate = fitDate # "%d/%02d/%02d %02d:%02d" % (fitDate[0], fitDate[1], fitDate[2], fitDate[3], fitDate[4]) pfdate = drawUtils.GetPartialText(mdc, fitLocalDate, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw) mdc.DrawText(pfdate, round(self.textStartx), round(self.timestampy)) mdc.SetFont(self.fontSmall) mdc.DrawText(self.toolbar.hoverLabel, round(self.thoverx), round(self.thovery)) mdc.SetFont(self.fontBig) psname = drawUtils.GetPartialText(mdc, self.fitName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw) mdc.DrawText(psname, round(self.textStartx), round(self.fitNamey)) if self.tcFitName.IsShown(): self.AdjustControlSizePos(self.tcFitName, self.textStartx, self.toolbarx - self.editWidth - self.padding) def AdjustControlSizePos(self, editCtl, start, end): fnEditSize = editCtl.GetSize() wSize = self.GetSize() fnEditPosX = end fnEditPosY = (wSize.height - fnEditSize.height) / 2 if fnEditPosX < start: editCtl.SetSize((self.editWidth + fnEditPosX - start, -1)) editCtl.SetPosition((start, fnEditPosY)) else: editCtl.SetSize((self.editWidth, -1)) editCtl.SetPosition((fnEditPosX, fnEditPosY)) def GetState(self): activeFitID = self.mainFrame.getActiveFit() if self.highlighted and not activeFitID == self.fitID: state = SFItem.SB_ITEM_HIGHLIGHTED else: if activeFitID == self.fitID: if self.highlighted: state = SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED else: state = SFItem.SB_ITEM_SELECTED else: state = SFItem.SB_ITEM_NORMAL return state def Refresh(self): activeFit = self.mainFrame.getActiveFit() if activeFit == self.fitID and not self.deleted: sFit = Fit.getInstance() fit = sFit.getFit(activeFit) if fit is not None: # sometimes happens when deleting fits, dunno why. self.timestamp = fit.modifiedCoalesce self.notes = fit.notes self.__setToolTip() SFItem.SFBrowserItem.Refresh(self) def RenderBackground(self): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) # activeFitID = self.mainFrame.getActiveFit() state = self.GetState() sFactor = 0.2 mFactor = None eFactor = 0 if state == SFItem.SB_ITEM_HIGHLIGHTED: mFactor = 0.45 eFactor = 0.30 elif state == SFItem.SB_ITEM_SELECTED | SFItem.SB_ITEM_HIGHLIGHTED: eFactor = 0.3 mFactor = 0.4 elif state == SFItem.SB_ITEM_SELECTED: eFactor = (self.maxDelta - self.selectedDelta) / 100 + 0.25 else: sFactor = 0 if self.bkBitmap: if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight(): return else: del self.bkBitmap self.bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor) self.bkBitmap.state = state self.bkBitmap.sFactor = sFactor self.bkBitmap.eFactor = eFactor self.bkBitmap.mFactor = mFactor ================================================ FILE: gui/builtinShipBrowser/navigationPanel.py ================================================ # coding: utf-8 import wx from logbook import Logger import gui.builtinShipBrowser.sfBrowserItem as SFItem import gui.mainFrame import gui.utils.color as colorUtils import gui.utils.draw as drawUtils import gui.utils.fonts as fonts from gui.bitmap_loader import BitmapLoader from gui.utils.helpers_wxPython import HandleCtrlBackspace from service.fit import Fit from utils.cjk import isStringCjk from .events import FitSelected, SearchSelected, ImportSelected, Stage1Selected, Stage2Selected, Stage3Selected pyfalog = Logger(__name__) _t = wx.GetTranslation class NavigationPanel(SFItem.SFBrowserItem): def __init__(self, parent, size=(-1, 24)): SFItem.SFBrowserItem.__init__(self, parent, size=size) self.rewBmpH = BitmapLoader.getBitmap("frewind_small", "gui") self.forwBmp = BitmapLoader.getBitmap("fforward_small", "gui") self.searchBmpH = BitmapLoader.getBitmap("fsearch_small", "gui") self.newBmpH = BitmapLoader.getBitmap("fit_add_small", "gui") self.resetBmpH = BitmapLoader.getBitmap("freset_small", "gui") self.switchBmpH = BitmapLoader.getBitmap("fit_switch_view_mode_small", "gui") self.recentBmpH = BitmapLoader.getBitmap("frecent_small", "gui") switchImg = BitmapLoader.getImage("fit_switch_view_mode_small", "gui") switchImg = switchImg.AdjustChannels(1, 1, 1, 0.4) self.switchBmpD = wx.Bitmap(switchImg) recentImg = BitmapLoader.getImage("frecent_small", "gui") recentImg = recentImg.AdjustChannels(1, 1, 1, 0.4) self.recentBmpD = wx.Bitmap(recentImg) self.resetBmp = self.AdjustChannels(self.resetBmpH) self.rewBmp = self.AdjustChannels(self.rewBmpH) self.searchBmp = self.AdjustChannels(self.searchBmpH) self.switchBmp = self.AdjustChannels(self.switchBmpH) self.recentBmp = self.AdjustChannels(self.recentBmpH) self.newBmp = self.AdjustChannels(self.newBmpH) self.toolbar.AddButton(self.resetBmp, _t("Ship groups"), clickCallback=self.OnHistoryReset, hoverBitmap=self.resetBmpH) self.toolbar.AddButton(self.rewBmp, _t("Back"), clickCallback=self.OnHistoryBack, hoverBitmap=self.rewBmpH) self.btnNew = self.toolbar.AddButton(self.newBmp, _t("New fitting"), clickCallback=self.OnNewFitting, hoverBitmap=self.newBmpH, show=False) self.btnSwitch = self.toolbar.AddButton(self.switchBmpD, _t("Hide empty ship groups"), clickCallback=self.ToggleEmptyGroupsView, hoverBitmap=self.switchBmpH, show=False) self.btnRecent = self.toolbar.AddButton(self.recentBmpD, _t("Recent Fits"), clickCallback=self.ToggleRecentShips, hoverBitmap=self.recentBmpH, show=True) modifier = "CTRL" if 'wxMac' not in wx.PlatformInfo else "CMD" self.toolbar.AddButton(self.searchBmp, _t("Search fittings") + " ({}+F)".format(modifier), clickCallback=self.ToggleSearchBox, hoverBitmap=self.searchBmpH) self.padding = 4 self.lastSearch = "" self.recentSearches = [] # not used? self.inSearch = False self.fontSmall = wx.Font(fonts.SMALL, wx.SWISS, wx.NORMAL, wx.NORMAL) w, h = size self.BrowserSearchBox = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, (-1, h - 2 if 'wxGTK' in wx.PlatformInfo else -1), (wx.BORDER_NONE if 'wxGTK' in wx.PlatformInfo else 0)) self.BrowserSearchBox.Show(False) # self.BrowserSearchBox.Bind(wx.EVT_TEXT_ENTER, self.OnBrowserSearchBoxEnter) # self.BrowserSearchBox.Bind(wx.EVT_KILL_FOCUS, self.OnBrowserSearchBoxLostFocus) self.BrowserSearchBox.Bind(wx.EVT_KEY_DOWN, self.OnBrowserSearchBoxKeyPress) self.BrowserSearchBox.Bind(wx.EVT_TEXT, self.OnScheduleSearch) self.SetMinSize(size) self.shipBrowser = self.Parent self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.Bind(wx.EVT_SIZE, self.OnResize) def OnScheduleSearch(self, event): search = self.BrowserSearchBox.GetValue() # Make sure we do not count wildcards as search symbol realsearch = search.replace('*', '').replace('?', '') minChars = 1 if isStringCjk(realsearch) else 3 if len(realsearch) >= minChars: self.lastSearch = search wx.PostEvent(self.shipBrowser, SearchSelected(text=search, back=False)) def ToggleSearchBox(self): if self.BrowserSearchBox.IsShown(): self.BrowserSearchBox.Show(False) else: self.BrowserSearchBox.Show(True) self.BrowserSearchBox.ChangeValue("") self.BrowserSearchBox.SetFocus() def OnBrowserSearchBoxEnter(self, event): self.OnBrowserSearchBoxLostFocus(None) def OnBrowserSearchBoxLostFocus(self, event): self.BrowserSearchBox.Show(False) def OnBrowserSearchBoxKeyPress(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.BrowserSearchBox.Show(False) elif keycode == wx.WXK_BACK and modifiers == wx.MOD_CONTROL: HandleCtrlBackspace(self.BrowserSearchBox) else: event.Skip() def OnResize(self, event): self.Refresh() def ToggleRecentShips(self, bool=None, emitEvent=True): # this is so janky. Need to revaluate pretty much entire ship browser. >.< toggle = bool if bool is not None else not self.shipBrowser.recentFits if not toggle: self.shipBrowser.recentFits = False self.btnRecent.label = _t("Recent Fits") self.btnRecent.normalBmp = self.recentBmpD if emitEvent: wx.PostEvent(self.shipBrowser, Stage1Selected()) else: self.shipBrowser.recentFits = True self.btnRecent.label = _t("Hide Recent Fits") self.btnRecent.normalBmp = self.recentBmp if emitEvent: sFit = Fit.getInstance() fits = sFit.getRecentFits() wx.PostEvent(self.shipBrowser, ImportSelected(fits=fits, back=True, recent=True)) def ToggleEmptyGroupsView(self): if self.shipBrowser.filterShipsWithNoFits: self.shipBrowser.filterShipsWithNoFits = False self.btnSwitch.label = _t("Hide empty ship groups") self.btnSwitch.normalBmp = self.switchBmpD else: self.shipBrowser.filterShipsWithNoFits = True self.btnSwitch.label = _t("Show empty ship groups") self.btnSwitch.normalBmp = self.switchBmp stage = self.shipBrowser.GetActiveStage() if stage == 1: wx.PostEvent(self.shipBrowser, Stage1Selected()) elif stage == 2: categoryID = self.shipBrowser.GetStageData(stage) wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True)) def ShowNewFitButton(self, show): self.btnNew.Show(show) self.Refresh() def ShowSwitchEmptyGroupsButton(self, show): self.btnSwitch.Show(show) self.Refresh() def OnNewFitting(self): stage = self.Parent.GetActiveStage() if stage == 3: shipID = self.Parent.GetStageData(stage) shipName = self.Parent.GetStage3ShipName() sFit = Fit.getInstance() fitID = sFit.newFit(shipID, "%s fit" % shipName) self.shipBrowser.fitIDMustEditName = fitID wx.PostEvent(self.Parent, Stage3Selected(shipID=shipID)) wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) def OnHistoryReset(self): self.ToggleRecentShips(False, False) if self.shipBrowser.browseHist: self.shipBrowser.browseHist = [] self.gotoStage(1, 0) def OnHistoryBack(self): self.ToggleRecentShips(False, False) if len(self.shipBrowser.browseHist) > 0: stage, data = self.shipBrowser.browseHist.pop() self.gotoStage(stage, data) @staticmethod def AdjustChannels(bitmap): img = bitmap.ConvertToImage() img = img.AdjustChannels(1.05, 1.05, 1.05, 1) return wx.Bitmap(img) def UpdateElementsPos(self, mdc): rect = self.GetRect() self.toolbarx = self.padding self.toolbary = (rect.height - self.toolbar.GetHeight()) / 2 mdc.SetFont(self.fontSmall) wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel) self.thoverx = self.toolbar.GetWidth() + self.padding self.thovery = (rect.height - hlabel) / 2 self.thoverw = wlabel self.browserBoxX = self.thoverx bEditBoxWidth, bEditBoxHeight = self.BrowserSearchBox.GetSize() self.browserBoxY = (rect.height - bEditBoxHeight) / 2 self.bEditBoxWidth = rect.width - self.browserBoxX - self.padding def DrawItem(self, mdc): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) textColor = colorUtils.GetSuitable(windowColor, 1) sepColor = colorUtils.GetSuitable(windowColor, 0.2) mdc.SetTextForeground(textColor) self.UpdateElementsPos(mdc) self.BrowserSearchBox.SetPosition((self.browserBoxX, self.browserBoxY)) self.BrowserSearchBox.SetSize(wx.Size(self.bEditBoxWidth, -1)) self.toolbar.SetPosition((self.toolbarx, self.toolbary)) mdc.SetFont(self.fontSmall) mdc.DrawText(self.toolbar.hoverLabel, round(self.thoverx), round(self.thovery)) mdc.SetPen(wx.Pen(sepColor, 1)) mdc.DrawLine(0, rect.height - 1, rect.width, rect.height - 1) def RenderBackground(self): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) sFactor = 0.1 shipGroupsFilter = getattr(self.shipBrowser, "filterShipsWithNoFits", None) if shipGroupsFilter: sFactor = 0.15 mFactor = 0.25 else: mFactor = 0.2 eFactor = 0.1 if self.bkBitmap: if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight(): return else: del self.bkBitmap self.bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor, 2) self.bkBitmap.sFactor = sFactor self.bkBitmap.eFactor = eFactor self.bkBitmap.mFactor = mFactor def gotoStage(self, stage, data=None): self.shipBrowser.recentFits = False if stage == 1: wx.PostEvent(self.Parent, Stage1Selected()) elif stage == 2: wx.PostEvent(self.Parent, Stage2Selected(categoryID=data, back=True)) elif stage == 3: wx.PostEvent(self.Parent, Stage3Selected(shipID=data)) elif stage == 4: self.shipBrowser._activeStage = 4 wx.PostEvent(self.Parent, SearchSelected(text=data, back=True)) elif stage == 5: wx.PostEvent(self.Parent, ImportSelected(fits=data)) else: wx.PostEvent(self.Parent, Stage1Selected()) ================================================ FILE: gui/builtinShipBrowser/pfBitmapButton.py ================================================ import wx from wx.lib.buttons import GenBitmapButton class PFGenBitmapButton(GenBitmapButton): def __init__(self, parent, id, bitmap, pos, size, style): GenBitmapButton.__init__(self, parent, id, bitmap, pos, size, style) self.bgcolor = wx.Brush(wx.WHITE) def SetBackgroundColour(self, color): self.bgcolor = wx.Brush(color) def GetBackgroundBrush(self, dc): return self.bgcolor ================================================ FILE: gui/builtinShipBrowser/pfBitmapFrame.py ================================================ import wx class PFBitmapFrame(wx.Frame): def __init__(self, parent, pos, bitmap): super().__init__( parent, id=wx.ID_ANY, title=wx.EmptyString, pos=pos, size=wx.DefaultSize, style=wx.NO_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP) img = bitmap.ConvertToImage() img = img.ConvertToGreyscale() bitmap = wx.Bitmap(img) self.bitmap = bitmap self.SetSize((bitmap.GetWidth(), bitmap.GetHeight())) self.Bind(wx.EVT_PAINT, self.OnWindowPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnWindowEraseBk) self.Bind(wx.EVT_TIMER, self.OnTimer) self.timer = wx.Timer(self, wx.ID_ANY) self.direction = 1 self.transp = 0 self.SetSize((bitmap.GetWidth(), bitmap.GetHeight())) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) self.SetTransparent(0) self.Refresh() def OnTimer(self, event): self.transp += 20 * self.direction if self.transp > 200: self.transp = 200 self.timer.Stop() if self.transp < 0: self.transp = 0 self.timer.Stop() super().Show(False) self.Destroy() return self.SetTransparent(self.transp) def Show(self, showWnd=True): if showWnd: super().Show(showWnd) self.Parent.SetFocus() self.direction = 1 self.timer.Start(5) else: self.direction = -1 self.timer.Start(5) def OnWindowEraseBk(self, event): pass def OnWindowPaint(self, event): # todo: evaluate wx.DragImage, might make this class obsolete, however might also lose our customizations # (like the sexy fade-in animation) rect = self.GetRect() canvas = wx.Bitmap(round(rect.width), round(rect.height)) # todo: convert to context manager after updating to wxPython >v4.0.1 (4.0.1 has a bug, see #1421) # See #1418 for discussion mdc = wx.BufferedPaintDC(self) mdc.SelectObject(canvas) mdc.DrawBitmap(self.bitmap, 0, 0) mdc.SetPen(wx.Pen("#000000", width=1)) mdc.SetBrush(wx.TRANSPARENT_BRUSH) mdc.DrawRectangle(0, 0, round(rect.width), round(rect.height)) ================================================ FILE: gui/builtinShipBrowser/pfListPane.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx class PFListPane(wx.ScrolledWindow): def __init__(self, parent): wx.ScrolledWindow.__init__(self, parent, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) self._wList = [] self._wCount = 0 self.itemsHeight = 1 self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) self.SetVirtualSize((1, 1)) self.SetScrollRate(0, 1) self.Bind(wx.EVT_SCROLLWIN_LINEUP, self.MScrollUp) self.Bind(wx.EVT_SCROLLWIN_LINEDOWN, self.MScrollDown) # self.Bind(wx.EVT_CHILD_FOCUS, self.OnChildFocus) # self.Bind(wx.EVT_LEFT_DOWN, self.ForceFocus) self.SetFocus() # self.Bind(wx.EVT_MOUSE_CAPTURE_CHANGED, self.ForceFocus) self.Bind(wx.EVT_SCROLLWIN_THUMBRELEASE, self.ForceFocus) def ForceFocus(self, event): if self.FindFocus() and self.FindFocus().Parent != self: self.SetFocus() event.Skip() def OnChildFocus(self, event): event.Skip() child = event.GetWindow() self.ScrollChildIntoView(child) def MScrollUp(self, event): posy = self.GetScrollPos(wx.VERTICAL) posy -= self.itemsHeight self.Scroll(0, round(posy)) event.Skip() def MScrollDown(self, event): posy = self.GetScrollPos(wx.VERTICAL) posy += self.itemsHeight self.Scroll(0, round(posy)) event.Skip() def ScrollChildIntoView(self, child): """ Scrolls the panel such that the specified child window is in view. """ sppu_x, sppu_y = self.GetScrollPixelsPerUnit() vs_x, vs_y = self.GetViewStart() cr = child.GetRect() clntsz = self.GetSize() new_vs_x, new_vs_y = -1, -1 # is it before the left edge? if cr.x < 0 < sppu_x: new_vs_x = vs_x + (cr.x / sppu_x) # is it above the top? if cr.y < 0 < sppu_y: new_vs_y = vs_y + (cr.y / sppu_y) # For the right and bottom edges, scroll enough to show the # whole control if possible, but if not just scroll such that # the top/left edges are still visible # is it past the right edge ? if cr.right > clntsz.width and sppu_x > 0: diff = (cr.right - clntsz.width + 1) / sppu_x if cr.x - diff * sppu_x > 0: new_vs_x = vs_x + diff else: new_vs_x = vs_x + (cr.x / sppu_x) # is it below the bottom ? if cr.bottom > clntsz.height and sppu_y > 0: diff = (cr.bottom - clntsz.height + 1) / sppu_y if cr.y - diff * sppu_y > 0: new_vs_y = vs_y + diff else: new_vs_y = vs_y + (cr.y / sppu_y) # if we need to adjust if new_vs_x != -1 or new_vs_y != -1: self.Scroll(round(new_vs_x), round(new_vs_y)) def AddWidget(self, widget): widget.Reparent(self) self._wList.append(widget) self._wCount += 1 def GetWidgetList(self): return self._wList # Override this method if needed ( return False by default if we do not want to scroll to selected widget) def IsWidgetSelectedByContext(self, widget): return False def RefreshList(self, doRefresh=False, doFocus=False): maxy = 0 selected = None for i in range(len(self._wList)): iwidth, iheight = self._wList[i].GetSize() xa, ya = self.CalcScrolledPosition((0, maxy)) self._wList[i].SetPosition((xa, ya)) if self.IsWidgetSelectedByContext(i): selected = self._wList[i] maxy += iheight self.SetVirtualSize((1, maxy)) cwidth, cheight = self.GetVirtualSize() if selected: self.ScrollChildIntoView(selected) # selected.SetFocus() elif doFocus: self.SetFocus() for i in range(len(self._wList)): iwidth, iheight = self._wList[i].GetSize() self._wList[i].SetSize((cwidth, iheight)) if doRefresh is True: self._wList[i].Refresh() self.itemsHeight = iheight # This is needed as under GTK wx does not emit scroll up/scroll down # events, see issue #1909 for more info if 'wxGTK' in wx.PlatformInfo: self.SetScrollRate(0, self.itemsHeight) def RemoveWidget(self, child): child.Destroy() self._wList.remove(child) def RemoveAllChildren(self): for widget in self._wList: widget.Destroy() # this forces the garbage collector to work properly by removing dangling references to objects which are still alive, otherwise widget cannot be gc-ed eventually causing GDI id exhaustion and crash for i in widget.__dict__.keys(): widget.__dict__[i] =None del widget self.Scroll(0, 0) self._wList = [] ================================================ FILE: gui/builtinShipBrowser/pfStaticText.py ================================================ # coding: utf-8 import wx from logbook import Logger pyfalog = Logger(__name__) class PFStaticText(wx.Panel): def __init__(self, parent, label=wx.EmptyString): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=parent.GetSize()) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) mainSizer = wx.BoxSizer(wx.VERTICAL) text = wx.StaticText(self, wx.ID_ANY, label, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE) text.Wrap(-1) mainSizer.Add(text, 1, wx.ALL, 10) self.SetSizer(mainSizer) self.Layout() @staticmethod def GetType(): return -1 ================================================ FILE: gui/builtinShipBrowser/pfWidgetContainer.py ================================================ from gui.builtinShipBrowser.pfListPane import PFListPane import gui.mainFrame import gui.utils.anim as animUtils class PFWidgetsContainer(PFListPane): def __init__(self, parent): PFListPane.__init__(self, parent) self.anim = animUtils.LoadAnimation(self, label="", size=(100, 12)) self.anim.Stop() self.anim.Show(False) def ShowLoading(self, mode=True): if mode: aweight, aheight = self.anim.GetSize() cweight, cheight = self.GetSize() ax = (cweight - aweight) / 2 ay = (cheight - aheight) / 2 self.anim.SetPosition((ax, ay)) self.anim.Show() self.anim.Play() else: self.anim.Stop() self.anim.Show(False) def IsWidgetSelectedByContext(self, widget): mainFrame = gui.mainFrame.MainFrame.getInstance() stage = self.Parent.GetActiveStage() fit = mainFrame.getActiveFit() if stage == 3 or stage == 4: if self._wList[widget].GetType() == 3: if fit == self._wList[widget].fitID: return True return False ================================================ FILE: gui/builtinShipBrowser/raceSelector.py ================================================ # coding: utf-8 import wx from logbook import Logger import gui.utils.anim_effects as animEffects import gui.utils.color as colorUtils import gui.utils.draw as drawUtils from .events import Stage2Selected from gui.bitmap_loader import BitmapLoader pyfalog = Logger(__name__) class RaceSelector(wx.Window): def __init__(self, parent, id=wx.ID_ANY, label="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, layout=wx.VERTICAL, animate=False): wx.Window.__init__(self, parent, id, pos=pos, size=size, style=style) self.animTimerID = wx.NewId() self.animTimer = wx.Timer(self, self.animTimerID) self.animPeriod = 25 self.animDuration = 250 self.animStep = 0 self.maxWidth = 24 self.minWidth = 5 if animate else self.maxWidth self.maxHeight = 24 self.minHeight = 10 if animate else self.maxHeight self.direction = 0 if animate else 1 self.layout = layout self.animate = animate if layout == wx.VERTICAL: self.SetSize(wx.Size(self.minWidth, -1)) self.SetMinSize(wx.Size(self.minWidth, -1)) else: self.SetSize(wx.Size(-1, self.minHeight)) self.SetMinSize(wx.Size(-1, self.minHeight)) self.checkTimerID = wx.NewId() self.checkTimer = wx.Timer(self, self.checkTimerID) self.checkPeriod = 250 self.checkMaximize = True self.shipBrowser = self.Parent self.raceBmps = [] self.raceNames = [] self.hoveredItem = None if layout == wx.VERTICAL: self.buttonsBarPos = (4, 0) else: self.buttonsBarPos = (0, 4) self.buttonsPadding = 4 if layout == wx.VERTICAL: self.bmpArrow = BitmapLoader.getBitmap("down-arrow2", "gui") else: self.bmpArrow = BitmapLoader.getBitmap("up-arrow2", "gui") # Make the bitmaps have the same color as window text sysTextColour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) img = self.bmpArrow.ConvertToImage() if layout == wx.VERTICAL: img = img.Rotate90(False) img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2]) if layout == wx.VERTICAL: img = img.Scale(round(self.minWidth), 8, wx.IMAGE_QUALITY_HIGH) self.bmpArrow = wx.Bitmap(img) self.RebuildRaces(self.shipBrowser.RACE_ORDER) self.Bind(wx.EVT_ENTER_WINDOW, self.OnWindowEnter) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) self.Bind(wx.EVT_TIMER, self.OnTimer) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnBackgroundErase) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_SIZE, self.OnSizeUpdate) self.Layout() self.SetBackgroundStyle(wx.BG_STYLE_PAINT) def OnMouseMove(self, event): mx, my = event.GetPosition() location = self.HitTest(mx, my) if location != self.hoveredItem: self.hoveredItem = location self.Refresh() if location is not None: self.SetCursor(wx.Cursor(wx.CURSOR_HAND)) else: self.SetCursor(wx.Cursor(wx.CURSOR_ARROW)) def OnSizeUpdate(self, event): self.CalcButtonsBarPos() self.Refresh() event.Skip() def CalcButtonsBarPos(self): if self.layout == wx.HORIZONTAL: rect = self.GetRect() width = 0 height = 0 for bmp in self.raceBmps: width += bmp.GetWidth() + self.buttonsPadding height = max(bmp.GetHeight(), height) posx = (rect.width - width) / 2 posy = (rect.height - height) / 2 self.buttonsBarPos = (posx, posy) def OnLeftUp(self, event): mx, my = event.GetPosition() toggle = self.HitTest(mx, my) if toggle is not None: self.Refresh() self.shipBrowser.ToggleRacesFilter(self.raceNames[toggle]) stage = self.shipBrowser.GetActiveStage() if stage == 2: categoryID = self.shipBrowser.GetStageData(stage) wx.PostEvent(self.shipBrowser, Stage2Selected(categoryID=categoryID, back=True)) event.Skip() def HitTest(self, mx, my): x, y = self.buttonsBarPos padding = self.buttonsPadding for bmp in self.raceBmps: if (x < mx < x + bmp.GetWidth()) and (y < my < y + bmp.GetHeight()): return self.raceBmps.index(bmp) if self.layout == wx.VERTICAL: y += bmp.GetHeight() + padding else: x += bmp.GetWidth() + padding return None def RebuildRaces(self, races): self.raceBmps = [] for race in races: if race: self.raceBmps.append(BitmapLoader.getBitmap("race_%s_small" % race, "gui")) self.raceNames = races self.CalcButtonsBarPos() self.Refresh() def OnBackgroundErase(self, event): pass def OnPaint(self, event): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) # bkColor = colorUtils.GetSuitable(windowColor, 0.1) sepColor = colorUtils.GetSuitable(windowColor, 0.2) mdc = wx.AutoBufferedPaintDC(self) bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, 0.1, 0.1, 0.2, 2) mdc.DrawBitmap(bkBitmap, 0, 0, True) x, y = self.buttonsBarPos if self.direction == 1: for raceBmp in self.raceBmps: dropShadow = drawUtils.CreateDropShadowBitmap(raceBmp, 0.2) if self.shipBrowser.GetRaceFilterState(self.raceNames[self.raceBmps.index(raceBmp)]): bmp = raceBmp else: img = raceBmp.ConvertToImage() if self.hoveredItem == self.raceBmps.index(raceBmp): img = img.AdjustChannels(1, 1, 1, 0.7) else: img = img.AdjustChannels(1, 1, 1, 0.4) bmp = wx.Bitmap(img) if self.layout == wx.VERTICAL: mdc.DrawBitmap(dropShadow, round(rect.width - self.buttonsPadding - bmp.GetWidth() + 1), round(y + 1)) mdc.DrawBitmap(bmp, round(rect.width - self.buttonsPadding - bmp.GetWidth()), round(y)) y += raceBmp.GetHeight() + self.buttonsPadding mdc.SetPen(wx.Pen(sepColor, 1)) mdc.DrawLine(rect.width - 1, 0, rect.width - 1, rect.height) else: mdc.DrawBitmap(dropShadow, round(x + 1), round(self.buttonsPadding + 1)) mdc.DrawBitmap(bmp, round(x), round(self.buttonsPadding)) x += raceBmp.GetWidth() + self.buttonsPadding mdc.SetPen(wx.Pen(sepColor, 1)) mdc.DrawLine(0, 0, rect.width, 0) if self.direction < 1: if self.layout == wx.VERTICAL: mdc.DrawBitmap(self.bmpArrow, -2, round((rect.height - self.bmpArrow.GetHeight()) / 2)) else: mdc.SetPen(wx.Pen(sepColor, 1)) mdc.DrawLine(0, 0, rect.width, 0) mdc.DrawBitmap(self.bmpArrow, round((rect.width - self.bmpArrow.GetWidth()) / 2), -2) def OnTimer(self, event): if event.GetId() == self.animTimerID: start = 0 if self.layout == wx.VERTICAL: end = self.maxWidth - self.minWidth else: end = self.maxHeight - self.minHeight step = animEffects.OUT_CIRC(self.animStep, start, end, self.animDuration) self.animStep += self.animPeriod * self.direction self.AdjustSize((self.minWidth if self.layout == wx.VERTICAL else self.minHeight) + step) if self.animStep > self.animDuration or self.animStep < 0: self.animTimer.Stop() self.animStep = self.animDuration if self.direction == 1 else 0 self.Parent.GetBrowserContainer().RefreshList(True) if event.GetId() == self.checkTimerID: if self.checkMaximize: self.direction = 1 else: self.direction = -1 if not self.animTimer.IsRunning(): self.animTimer.Start(self.animPeriod) def AdjustSize(self, delta): self.SetMinSize(wx.Size(delta, -1) if self.layout == wx.VERTICAL else wx.Size(-1, delta)) self.Parent.Layout() self.Refresh() def OnWindowEnter(self, event): if not self.animate: return if not self.checkTimer.IsRunning(): self.checkTimer.Start(self.checkPeriod, wx.TIMER_ONE_SHOT) self.checkMaximize = True event.Skip() def OnWindowLeave(self, event): if self.hoveredItem is not None: self.hoveredItem = None self.SetCursor(wx.Cursor(wx.CURSOR_ARROW)) self.Refresh() if not self.animate: return if not self.checkTimer.IsRunning(): self.checkTimer.Start(self.checkPeriod, wx.TIMER_ONE_SHOT) self.checkMaximize = False event.Skip() ================================================ FILE: gui/builtinShipBrowser/sfBrowserItem.py ================================================ # noinspection PyPackageRequirements import wx import gui.utils.draw as drawUtils import gui.mainFrame SB_ITEM_NORMAL = 0 SB_ITEM_SELECTED = 1 SB_ITEM_HIGHLIGHTED = 2 SB_ITEM_DISABLED = 4 BTN_NORMAL = 1 BTN_PRESSED = 2 BTN_HOVER = 4 BTN_DISABLED = 8 class PFBaseButton: def __init__(self, normalBitmap=wx.NullBitmap, label="", callback=None, hoverBitmap=None, disabledBitmap=None, show=True): self.normalBmp = normalBitmap self.dropShadowOpacity = 0.2 self.dropShadowBmp = drawUtils.CreateDropShadowBitmap(self.normalBmp, self.dropShadowOpacity) self.hoverBmp = hoverBitmap self.disabledBmp = disabledBitmap self.label = label self.show = show self.callback = callback self.state = BTN_NORMAL # state : BTN_STUFF def Show(self, show): self.show = show def Hide(self): self.show = False def IsVisible(self): return self.show def SetCallback(self, callback): self.callback = callback def GetCallback(self): return self.callback def DoCallback(self): if self.callback: self.callback() def SetState(self, state=BTN_NORMAL): self.state = state def GetState(self): return self.state def GetSize(self): w = self.normalBmp.GetWidth() h = self.normalBmp.GetHeight() return w, h def GetBitmap(self): return self.normalBmp def SetBitmap(self, bitmap): self.normalBmp = bitmap self.dropShadowBmp = drawUtils.CreateDropShadowBitmap(self.normalBmp, self.dropShadowOpacity) def GetLabel(self): return self.label def GetHoverBitmap(self): if self.hoverBmp is None: return self.normalBmp return self.hoverBmp def GetDisabledBitmap(self): if self.disabledBmp is None: return self.normalBmp return self.disabledBmp def GetDropShadowBitmap(self): return self.dropShadowBmp class PFToolbar: def __init__(self, parent): self.Parent = parent self.buttons = [] self.toolbarX = 0 self.toolbarY = 0 self.padding = 2 self.hoverLabel = "" def SetPosition(self, pos): self.toolbarX, self.toolbarY = pos def AddButton(self, btnBitmap, label="", clickCallback=None, hoverBitmap=None, disabledBitmap=None, show=True): btn = PFBaseButton(btnBitmap, label, clickCallback, hoverBitmap, disabledBitmap, show) self.buttons.append(btn) return btn def ClearState(self): for button in self.buttons: button.SetState() self.hoverLabel = "" def MouseMove(self, event): doRefresh = False changeCursor = False bx = self.toolbarX self.hoverLabel = "" for button in self.buttons: if not button.IsVisible(): continue state = button.GetState() if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()): changeCursor = True if not state & BTN_HOVER: button.SetState(state | BTN_HOVER) self.hoverLabel = button.GetLabel() self.Parent.SetCursor(wx.Cursor(wx.CURSOR_HAND)) doRefresh = True else: if state & BTN_HOVER: button.SetState(state ^ BTN_HOVER) doRefresh = True bwidth, bheight = button.GetSize() bx += bwidth + self.padding if not changeCursor: self.Parent.SetCursor(wx.Cursor(wx.CURSOR_ARROW)) return doRefresh def MouseClick(self, event): bx = self.toolbarX for button in self.buttons: if not button.IsVisible(): continue state = button.GetState() if state & BTN_PRESSED: button.SetState(state ^ BTN_PRESSED) if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()): return button else: return False bwidth, bheight = button.GetSize() bx += bwidth + self.padding bx = self.toolbarX for button in self.buttons: if not button.IsVisible(): continue state = button.GetState() if self.HitTest((bx, self.toolbarY), event.GetPosition(), button.GetSize()): if event.LeftDown() or event.LeftDClick(): button.SetState(state | BTN_PRESSED) return button elif event.LeftUp(): button.SetState(state | (not BTN_PRESSED)) return button bwidth, bheight = button.GetSize() bx += bwidth + self.padding return None def GetWidth(self): bx = 0 for button in self.buttons: if not button.IsVisible(): continue bwidth, bheight = button.GetSize() bx += bwidth + self.padding return bx def GetHeight(self): height = 0 for button in self.buttons: if not button.IsVisible(): continue bwidth, bheight = button.GetSize() height = max(height, bheight) return height @staticmethod def HitTest(target, position, area): x, y = target px, py = position aX, aY = area if (x < px < x + aX) and (y < py < y + aY): return True return False def Render(self, pdc): bx = self.toolbarX for button in self.buttons: if not button.IsVisible(): continue by = self.toolbarY tbx = bx btnState = button.GetState() bmp = button.GetDisabledBitmap() dropShadowBmp = button.GetDropShadowBitmap() if btnState & BTN_NORMAL: bmp = button.GetBitmap() if btnState & BTN_HOVER: bmp = button.GetHoverBitmap() if btnState & BTN_PRESSED: bmp = button.GetBitmap() by += self.padding / 2 tbx += self.padding / 2 bmpWidth = bmp.GetWidth() pdc.DrawBitmap(dropShadowBmp, round(bx + self.padding / 2), round(self.toolbarY + self.padding / 2)) pdc.DrawBitmap(bmp, round(tbx), round(by)) bx += bmpWidth + self.padding class SFBrowserItem(wx.Window): def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(0, 16), style=0): wx.Window.__init__(self, parent, id, pos, size, style) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) self.highlighted = False self.selected = False self.bkBitmap = None self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.canBeDragged = False self.toolbar = PFToolbar(self) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_KEY_UP, self.OnKeyUp) if "wxMSW" in wx.PlatformInfo: self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDown) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_SET_FOCUS, self.OnFocus) self.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus) def OnFocus(self, evt): self.SetHighlighted(True) self.Refresh() evt.Skip() def OnKillFocus(self, evt): self.SetHighlighted(False) self.Refresh() evt.Skip() def Refresh(self): self.RenderBackground() wx.Window.Refresh(self) def OnPaint(self, event): mdc = wx.AutoBufferedPaintDC(self) self.RenderBackground() mdc.DrawBitmap(self.bkBitmap, 0, 0) self.DrawItem(mdc) self.toolbar.Render(mdc) def DrawItem(self, mdc): pass def OnEraseBackground(self, event): pass def OnKeyUp(self, event): pass def MouseLeftUp(self, event): pass def MouseLeftDown(self, event): pass def MouseMove(self, event): pass def SetDraggable(self, mode=True): self.canBeDragged = mode def OnLeftUp(self, event): if self.mainFrame.supress_left_up: wx.Yield() self.mainFrame.supress_left_up = False return if self.HasCapture(): self.ReleaseMouse() if not self.canBeDragged: mposx, mposy = wx.GetMousePosition() rect = self.GetRect() rect.top = rect.left = 0 cx, cy = self.ScreenToClient((mposx, mposy)) if not rect.Contains((cx, cy)): self.SetHighlighted(False) self.toolbar.ClearState() self.Refresh() return btn = self.toolbar.MouseClick(event) if btn is not None: if btn is not False: if btn.GetState() & BTN_NORMAL: btn.DoCallback() self.Refresh() else: self.Refresh() return self.MouseLeftUp(event) def OnLeftDown(self, event): if not self.HasCapture(): self.CaptureMouse() btn = self.toolbar.MouseClick(event) if btn is not None: if btn.GetState() & BTN_PRESSED: self.Refresh() return self.MouseLeftDown(event) def OnEnterWindow(self, event): self.SetHighlighted(True) self.toolbar.ClearState() self.Refresh() event.Skip() def OnLeaveWindow(self, event): self.SetHighlighted(False) self.toolbar.ClearState() self.Refresh() event.Skip() def OnMotion(self, event): if self.toolbar.MouseMove(event): self.Refresh() self.MouseMove(event) event.Skip() @staticmethod def GetType(): return -1 def SetSelected(self, select=True): self.selected = select def SetHighlighted(self, highlight=True): self.highlighted = highlight def GetState(self): if self.highlighted and not self.selected: state = SB_ITEM_HIGHLIGHTED elif self.selected: if self.highlighted: state = SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED else: state = SB_ITEM_SELECTED else: state = SB_ITEM_NORMAL return state def RenderBackground(self): rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) state = self.GetState() sFactor = 0.2 mFactor = None eFactor = 0 if state == SB_ITEM_HIGHLIGHTED: mFactor = 0.45 eFactor = 0.30 elif state == SB_ITEM_SELECTED | SB_ITEM_HIGHLIGHTED: eFactor = 0.3 elif state == SB_ITEM_SELECTED: eFactor = 0.15 else: sFactor = 0.0 if self.bkBitmap: if self.bkBitmap.eFactor == eFactor and self.bkBitmap.sFactor == sFactor and self.bkBitmap.mFactor == mFactor \ and rect.width == self.bkBitmap.GetWidth() and rect.height == self.bkBitmap.GetHeight(): return else: del self.bkBitmap self.bkBitmap = drawUtils.RenderGradientBar(windowColor, rect.width, rect.height, sFactor, eFactor, mFactor) self.bkBitmap.state = state self.bkBitmap.sFactor = sFactor self.bkBitmap.eFactor = eFactor self.bkBitmap.mFactor = mFactor ================================================ FILE: gui/builtinShipBrowser/shipItem.py ================================================ import re import wx from logbook import Logger import gui.builtinShipBrowser.sfBrowserItem as SFItem import gui.mainFrame import gui.utils.color as colorUtils import gui.utils.draw as drawUtils import gui.utils.fonts as fonts from gui.bitmap_loader import BitmapLoader from gui.contextMenu import ContextMenu from service.fit import Fit from service.market import Market from .events import FitSelected, Stage3Selected pyfalog = Logger(__name__) _t = wx.GetTranslation class ShipItem(SFItem.SFBrowserItem): def __init__(self, parent, shipID=None, shipFittingInfo=("Test", "TestTrait", 2), itemData=None, graphicID=None, id=wx.ID_ANY, pos=wx.DefaultPosition, size=(0, 40), style=0): SFItem.SFBrowserItem.__init__(self, parent, size=size) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self._itemData = itemData self.shipRace = itemData self.shipID = shipID self.fontBig = wx.Font(fonts.BIG, wx.SWISS, wx.NORMAL, wx.BOLD) self.fontNormal = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL) self.fontSmall = wx.Font(fonts.SMALL, wx.SWISS, wx.NORMAL, wx.NORMAL) self.shipBmp = None if graphicID: self.shipBmp = BitmapLoader.getBitmap(str(graphicID), "renders") if not self.shipBmp: self.shipBmp = BitmapLoader.getBitmap("ship_no_image_big", "gui") self.shipFittingInfo = shipFittingInfo self.shipName, self.shipTrait, self.shipFits = shipFittingInfo self.shipTrait = re.sub("<.*?>", " ", self.shipTrait) self.newBmp = BitmapLoader.getBitmap("fit_add_small", "gui") self.acceptBmp = BitmapLoader.getBitmap("faccept_small", "gui") self.shipEffBk = BitmapLoader.getBitmap("fshipbk_big", "gui") img = self.shipEffBk.ConvertToImage() img = img.Mirror(False) self.shipEffBkMirrored = wx.Bitmap(img) self.raceBmp = BitmapLoader.getBitmap("race_%s_small" % self.shipRace, "gui") if not self.raceBmp: self.raceBmp = BitmapLoader.getBitmap("fit_delete_small", "gui") self.raceDropShadowBmp = drawUtils.CreateDropShadowBitmap(self.raceBmp, 0.2) sFit = Fit.getInstance() if self.shipTrait and sFit.serviceFittingOptions["showShipBrowserTooltip"]: self.SetToolTip(wx.ToolTip(self.shipTrait)) self.shipBrowser = self.Parent.Parent self.editWidth = 150 self.padding = 4 self.tcFitName = wx.TextCtrl(self, wx.ID_ANY, "%s fit" % self.shipName, wx.DefaultPosition, (120, -1), wx.TE_PROCESS_ENTER) self.tcFitName.Show(False) self.newBtn = self.toolbar.AddButton(self.newBmp, "New", self.newBtnCB) self.tcFitName.Bind(wx.EVT_TEXT_ENTER, self.createNewFit) self.tcFitName.Bind(wx.EVT_KILL_FOCUS, self.editLostFocus) self.tcFitName.Bind(wx.EVT_KEY_DOWN, self.editCheckEsc) self.animTimerId = wx.NewId() self.animTimer = wx.Timer(self, self.animTimerId) self.animStep = 0 self.animPeriod = 10 self.animDuration = 100 self.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup) self.marketInstance = Market.getInstance() self.baseItem = self.marketInstance.getItem(self.shipID) # ===================================================================== # DISABLED - it will be added as an option in PREFERENCES self.animCount = 0 # if self.shipBrowser.GetActiveStage() != 4 and self.shipBrowser.GetLastStage() !=2: # self.Bind(wx.EVT_TIMER, self.OnTimer) # self.animTimer.Start(self.animPeriod) # else: # self.animCount = 0 # ===================================================================== def OnShowPopup(self, event): pos = event.GetPosition() pos = self.ScreenToClient(pos) contexts = [("baseShip", _t("Ship Basic"))] menu = ContextMenu.getMenu(self, self.baseItem, (self.baseItem,), *contexts) self.PopupMenu(menu, pos) def OnTimer(self, event): step = self.OUT_QUAD(self.animStep, 0, 10, self.animDuration) self.animCount = 10 - step self.animStep += self.animPeriod if self.animStep > self.animDuration or self.animCount < 0: self.animCount = 0 self.animTimer.Stop() self.Refresh() def OnKeyUp(self, event): if event.GetKeyCode() in (32, 13): # space and enter self.selectShip(event) event.Skip() @staticmethod def OUT_QUAD(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d return -c * t * (t - 2) + b def GetType(self): return 2 def selectShip(self, event): if self.tcFitName.IsShown(): self.tcFitName.Show(False) self.newBtn.SetBitmap(self.newBmp) self.Refresh() else: shipName, shipTrait, fittings = self.shipFittingInfo if fittings > 0: wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=True)) else: self.newBtnCB() def MouseLeftUp(self, event): self.selectShip(event) def newBtnCB(self): if self.tcFitName.IsShown(): self.tcFitName.Show(False) self.createNewFit() else: self.tcFitName.SetValue("%s fit" % self.shipName) self.tcFitName.Show() self.tcFitName.SetFocus() self.tcFitName.SelectAll() self.newBtn.SetBitmap(self.acceptBmp) self.Refresh() def editLostFocus(self, event): self.tcFitName.Show(False) self.newBtn.SetBitmap(self.newBmp) self.Refresh() def editCheckEsc(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.tcFitName.Show(False) else: event.Skip() def createNewFit(self, event=None): self.tcFitName.Show(False) sFit = Fit.getInstance() fitID = sFit.newFit(self.shipID, self.tcFitName.GetValue()) wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=self.shipID, back=False)) wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) def UpdateElementsPos(self, mdc): rect = self.GetRect() self.toolbarx = rect.width - self.toolbar.GetWidth() - self.padding self.toolbary = (rect.height - self.toolbar.GetHeight()) / 2 self.toolbarx += self.animCount self.shipEffx = self.padding + (rect.height - self.shipEffBk.GetWidth()) / 2 self.shipEffy = (rect.height - self.shipEffBk.GetHeight()) / 2 self.shipEffx -= self.animCount self.shipBmpx = self.padding + (rect.height - self.shipBmp.GetWidth()) / 2 self.shipBmpy = (rect.height - self.shipBmp.GetHeight()) / 2 self.shipBmpx -= self.animCount self.raceBmpx = self.shipEffx + self.shipEffBk.GetWidth() + self.padding self.raceBmpy = (rect.height - self.raceBmp.GetHeight()) / 2 self.textStartx = self.raceBmpx + self.raceBmp.GetWidth() + self.padding self.shipNamey = (rect.height - self.shipBmp.GetHeight()) / 2 shipName, shipTrait, fittings = self.shipFittingInfo mdc.SetFont(self.fontBig) wtext, htext = mdc.GetTextExtent(shipName) self.fittingsy = self.shipNamey + htext mdc.SetFont(self.fontSmall) wlabel, hlabel = mdc.GetTextExtent(self.toolbar.hoverLabel) self.thoverx = self.toolbarx - self.padding - wlabel self.thovery = (rect.height - hlabel) / 2 self.thoverw = wlabel def DrawItem(self, mdc): # rect = self.GetRect() windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) textColor = colorUtils.GetSuitable(windowColor, 1) mdc.SetTextForeground(textColor) self.UpdateElementsPos(mdc) self.toolbar.SetPosition((self.toolbarx, self.toolbary)) if self.GetState() & SFItem.SB_ITEM_HIGHLIGHTED: shipEffBk = self.shipEffBkMirrored else: shipEffBk = self.shipEffBk mdc.DrawBitmap(shipEffBk, round(self.shipEffx), round(self.shipEffy), 0) mdc.DrawBitmap(self.shipBmp, round(self.shipBmpx), round(self.shipBmpy), 0) mdc.DrawBitmap(self.raceDropShadowBmp, round(self.raceBmpx + 1), round(self.raceBmpy + 1)) mdc.DrawBitmap(self.raceBmp, round(self.raceBmpx), round(self.raceBmpy)) shipName, shipTrait, fittings = self.shipFittingInfo if fittings < 1: fformat = "No fits" elif fittings == 1: fformat = "%d fit" else: fformat = "%d fits" mdc.SetFont(self.fontNormal) mdc.DrawText(fformat % fittings if fittings > 0 else fformat, round(self.textStartx), round(self.fittingsy)) mdc.SetFont(self.fontSmall) mdc.DrawText(self.toolbar.hoverLabel, round(self.thoverx), round(self.thovery)) mdc.SetFont(self.fontBig) psname = drawUtils.GetPartialText(mdc, shipName, self.toolbarx - self.textStartx - self.padding * 2 - self.thoverw) mdc.DrawText(psname, round(self.textStartx), round(self.shipNamey)) if self.tcFitName.IsShown(): self.AdjustControlSizePos(self.tcFitName, self.textStartx, self.toolbarx - self.editWidth - self.padding) def AdjustControlSizePos(self, editCtl, start, end): fnEditSize = editCtl.GetSize() wSize = self.GetSize() fnEditPosX = end fnEditPosY = (wSize.height - fnEditSize.height) / 2 if fnEditPosX < start: editCtl.SetSize((self.editWidth + fnEditPosX - start, -1)) editCtl.SetPosition((start, fnEditPosY)) else: editCtl.SetSize((self.editWidth, -1)) editCtl.SetPosition((fnEditPosX, fnEditPosY)) ================================================ FILE: gui/builtinStatsViews/__init__.py ================================================ __all__ = [ "resourcesViewFull", "resistancesViewFull", "rechargeViewFull", "firepowerViewFull", "capacitorViewFull", "outgoingViewFull", "outgoingViewMinimal", "targetingMiscViewMinimal", "bombingViewFull", "priceViewFull", "priceViewMinimal", ] ================================================ FILE: gui/builtinStatsViews/bombingViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import math import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.statsView import StatsView from eos.const import FittingModuleState from service.market import Market _t = wx.GetTranslation class BombingViewFull(StatsView): name = "bombingViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] self.mainFrame = gui.mainFrame.MainFrame.getInstance() def getHeaderText(self, fit): return _t("Bombing") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel # Display table sizerBombing = wx.FlexGridSizer(7, 5, 0, 0) for i in range(4): sizerBombing.AddGrowableCol(i + 1) contentSizer.Add(sizerBombing, 0, wx.EXPAND, 0) # first row is for icons bitmap = BitmapLoader.getStaticBitmap("skill_big", contentPanel, "gui") tooltip = wx.ToolTip(_t("Covert Ops level")) bitmap.SetToolTip(tooltip) sizerBombing.Add(bitmap, 0, wx.ALIGN_CENTER) toolTipText = { "em": _t("Electron Bomb"), "thermal": _t("Scorch Bomb"), "kinetic": _t("Concussion Bomb"), "explosive": _t("Shrapnel Bomb") } for damageType in ("em", "thermal", "kinetic", "explosive"): bitmap = BitmapLoader.getStaticBitmap("%s_big" % damageType, contentPanel, "gui") tooltip = wx.ToolTip(toolTipText[damageType]) bitmap.SetToolTip(tooltip) sizerBombing.Add(bitmap, 0, wx.ALIGN_CENTER) # the other rows are for each possible level of Covert Ops skill for covertLevel in ("0", "1", "2", "3", "4", "5"): label = wx.StaticText(contentPanel, wx.ID_ANY, "%s" % covertLevel) tooltip = wx.ToolTip(_t("Covert Ops level")) label.SetToolTip(tooltip) sizerBombing.Add(label, 0, wx.ALIGN_CENTER) for damageType in ("em", "thermal", "kinetic", "explosive"): label = wx.StaticText(contentPanel, wx.ID_ANY, "0.0") setattr(self, "labelDamagetypeCovertlevel%s%s" % (damageType.capitalize(), covertLevel), label) sizerBombing.Add(label, 0, wx.ALIGN_CENTER) def refreshPanel(self, fit): # If we did anything interesting, we'd update our labels to reflect the new fit's stats here if fit is None: return mkt = Market.getInstance() emBomb = mkt.getItem(27920) thermalBomb = mkt.getItem(27916) kineticBomb = mkt.getItem(27912) explosiveBomb = mkt.getItem(27918) environementBombDamageModifier = 1.0 # list all environmental effects affecting bomb damage relevantEffects = [ 'Class 6 Red Giant Effects', 'Class 5 Red Giant Effects', 'Class 4 Red Giant Effects', 'Class 3 Red Giant Effects', 'Class 2 Red Giant Effects', 'Class 1 Red Giant Effects', ] for effect in fit.projectedModules: if effect.state == FittingModuleState.ONLINE and effect.fullName in relevantEffects: # note: despite the name, smartbombDamageMultiplier applies to the damage of launched bombs environementBombDamageModifier = environementBombDamageModifier *\ effect.item.attributes['smartbombDamageMultiplier'].value # signature radius of the current fit to calculate the application of bombs shipSigRadius = fit.ship.getModifiedItemAttr('signatureRadius') # get the raw values for all hp layers hullHP = fit.ship.getModifiedItemAttr('hp') armorHP = fit.ship.getModifiedItemAttr('armorHP') shieldHP = fit.ship.getModifiedItemAttr('shieldCapacity') # we calculate the total ehp for pure damage of all types based on raw hp and resonance (resonance= 1-resistance) emEhp = hullHP / fit.ship.getModifiedItemAttr('emDamageResonance') +\ armorHP / fit.ship.getModifiedItemAttr('armorEmDamageResonance') +\ shieldHP / fit.ship.getModifiedItemAttr('shieldEmDamageResonance') thermalEhp = hullHP / fit.ship.getModifiedItemAttr('thermalDamageResonance') +\ armorHP / fit.ship.getModifiedItemAttr('armorThermalDamageResonance') +\ shieldHP / fit.ship.getModifiedItemAttr('shieldThermalDamageResonance') kineticEhp = hullHP / fit.ship.getModifiedItemAttr('kineticDamageResonance') +\ armorHP / fit.ship.getModifiedItemAttr('armorKineticDamageResonance') +\ shieldHP / fit.ship.getModifiedItemAttr('shieldKineticDamageResonance') explosiveEhp = hullHP / fit.ship.getModifiedItemAttr('explosiveDamageResonance') +\ armorHP / fit.ship.getModifiedItemAttr('armorExplosiveDamageResonance') +\ shieldHP / fit.ship.getModifiedItemAttr('shieldExplosiveDamageResonance') # updates the labels for each combination of covert op level and damage type for covertLevel in ("0", "1", "2", "3", "4", "5"): covertOpsBombDamageModifier = 1 + 0.05 * int(covertLevel) for damageType, ehp, bomber, bomb in (("em", emEhp, "Purifier", emBomb), ("thermal", thermalEhp, "Nemesis", thermalBomb), ("kinetic", kineticEhp, "Manticore", kineticBomb), ("explosive", explosiveEhp, "Hound", explosiveBomb)): baseBombDamage = (bomb.attributes['emDamage'].value + bomb.attributes['thermalDamage'].value + bomb.attributes['kineticDamage'].value + bomb.attributes['explosiveDamage'].value) appliedBombDamage = baseBombDamage * covertOpsBombDamageModifier * environementBombDamageModifier * \ (min(bomb.attributes['signatureRadius'].value, shipSigRadius) / bomb.attributes['signatureRadius'].value) label = getattr(self, "labelDamagetypeCovertlevel%s%s" % (damageType.capitalize(), covertLevel)) label.SetLabel("{:.1f}".format(math.ceil((ehp / appliedBombDamage) * 10) / 10)) if covertLevel != "0": label.SetToolTip("Number of %s to kill a %s using a %s " "with Covert Ops level %s" % (bomb.customName, fit.name, bomber, covertLevel)) else: label.SetToolTip("Number of %s to kill a %s with Covert Ops level %s" % (bomb.customName, fit.name, covertLevel)) self.panel.Layout() self.headerPanel.Layout() BombingViewFull.register() ================================================ FILE: gui/builtinStatsViews/capacitorViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundToPrec _t = wx.GetTranslation class CapacitorViewFull(StatsView): name = "capacitorViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent def getHeaderText(self, fit): return _t("Capacitor") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() parent = self.panel = contentPanel self.headerPanel = headerPanel panel = "full" sizerCapacitor = wx.GridSizer(1, 2, 0, 0) contentSizer.Add(sizerCapacitor, 0, wx.EXPAND, 0) # Capacitor capacity and time baseBox = wx.BoxSizer(wx.HORIZONTAL) sizerCapacitor.Add(baseBox, 0, wx.ALIGN_LEFT) bitmap = BitmapLoader.getStaticBitmap("capacitorInfo_big", parent, "gui") tooltip = wx.ToolTip(_t("Capacitor stability")) bitmap.SetToolTip(tooltip) baseBox.Add(bitmap, 0, wx.ALIGN_CENTER) box = wx.BoxSizer(wx.VERTICAL) baseBox.Add(box, 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) box.Add(hbox, 0, wx.ALIGN_LEFT) hbox.Add(wx.StaticText(parent, wx.ID_ANY, _t("Total: ")), 0, wx.ALIGN_LEFT | wx.LEFT, 3) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0") setattr(self, "label%sCapacitorCapacity" % panel.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) hbox.Add(wx.StaticText(parent, wx.ID_ANY, " GJ"), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) box.Add(hbox, 0, wx.ALIGN_LEFT) lbl = wx.StaticText(parent, wx.ID_ANY, _t("Lasts ")) hbox.Add(lbl, 0, wx.ALIGN_LEFT | wx.LEFT, 3) setattr(self, "label%sCapacitorState" % panel.capitalize(), lbl) lbl = wx.StaticText(parent, wx.ID_ANY, _t("0s")) setattr(self, "label%sCapacitorTime" % panel.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) # Capacitor balance baseBox = wx.BoxSizer(wx.HORIZONTAL) sizerCapacitor.Add(baseBox, 0, wx.ALIGN_CENTER_HORIZONTAL) tooltip = wx.ToolTip(_t("Extra stats")) bitmap = BitmapLoader.getStaticBitmap("capacitorRecharge_big", parent, "gui") bitmap.SetToolTip(tooltip) baseBox.Add(bitmap, 0, wx.ALIGN_CENTER) # Delta chargeSizer = wx.BoxSizer(wx.VERTICAL) baseBox.Add(chargeSizer, 0, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, "0 GJ/s") setattr(self, "label%sCapacitorDelta" % panel.capitalize(), lbl) chargeSizer.Add(lbl, 0, wx.ALIGN_CENTER) # Resists lbl = wx.StaticText(parent, wx.ID_ANY, "0%") setattr(self, "label%sCapacitorResist" % panel.capitalize(), lbl) chargeSizer.Add(lbl, 0, wx.ALIGN_CENTER) def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = ( ("label%sCapacitorCapacity", lambda: fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9, False, ''), ("label%sCapacitorDelta", lambda: fit.capDelta, 3, 0, 0, True, ' GJ/s'), ("label%sCapacitorResist", lambda: (1 - fit.ship.getModifiedItemAttr("energyWarfareResistance", 1)) * 100, 3, 0, 0, False, '%'), ) if fit is not None: cap_amount = fit.ship.getModifiedItemAttr("capacitorCapacity") cap_recharge = fit.capRecharge cap_use = fit.capUsed neut_res = fit.ship.getModifiedItemAttr("energyWarfareResistance", 1) else: cap_amount = 0 cap_recharge = 0 cap_use = 0 neut_res = 1 panel = "Full" for labelName, value, prec, lowest, highest, forceSign, unit in stats: label = getattr(self, labelName % panel) value = value() if fit is not None else 0 value = value if value is not None else 0 if isinstance(value, str): label.SetLabel(value) label.SetToolTip(wx.ToolTip(value)) else: label.SetLabel('{}{}'.format(formatAmount(value, prec, lowest, highest, forceSign=forceSign), unit)) label.SetToolTip(wx.ToolTip("%.1f" % value)) if labelName == 'label%sCapacitorDelta' and (cap_recharge or cap_use): lines = [_t('Capacitor delta:'), ' +{} GJ/s'.format(formatAmount(cap_recharge, 3, 0, 3)), ' -{} GJ/s'.format(formatAmount(cap_use, 3, 0, 3))] delta = round(cap_recharge - cap_use, 3) if delta > 0 and 0 < round(neut_res, 4) < 1: lines.append('') lines.append('Effective excessive gain:') lines.append(' +{} GJ/s'.format(formatAmount(delta / neut_res, 3, 0, 3))) label.SetToolTip(wx.ToolTip('\n'.join(lines))) if labelName == 'label%sCapacitorResist': texts = [_t('Neutralizer resistance')] if cap_amount > 0 and 0 < round(neut_res, 4) < 1: texts.append(_t('Effective capacity') + ': {} GJ'.format(formatAmount(cap_amount / neut_res, 3, 0, 9))) label.SetToolTip(wx.ToolTip('\n'.join(texts))) capState = fit.capState if fit is not None else 0 capStable = fit.capStable if fit is not None else False lblNameTime = "label%sCapacitorTime" lblNameState = "label%sCapacitorState" if isinstance(capState, tuple) and len(capState) >= 2: t = ("{0}%-{1}%", capState[0], capState[1]) s = "" else: if capStable: t = "%.1f%%" % capState else: if capState > 60: t = "%dm%ds" % divmod(capState, 60) else: t = "%ds" % capState s = _t("Stable: ") if capStable else _t("Lasts ") getattr(self, lblNameTime % panel).SetLabel(t) getattr(self, lblNameState % panel).SetLabel(s) self.panel.Layout() self.headerPanel.Layout() CapacitorViewFull.register() ================================================ FILE: gui/builtinStatsViews/firepowerViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import eos.config import gui.mainFrame from eos.utils.spoolSupport import SpoolOptions, SpoolType from gui.bitmap_loader import BitmapLoader from gui.statsView import StatsView from gui.utils.numberFormatter import formatAmount, roundToPrec from service.fit import Fit _t = wx.GetTranslation class FirepowerViewFull(StatsView): name = "firepowerViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] def getHeaderText(self, fit): return _t("Firepower") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() parent = self.panel = contentPanel self.headerPanel = headerPanel hsizer = self.headerPanel.Parent.GetHeaderContentSizer() self.stEff = wx.StaticText(self.headerPanel, wx.ID_ANY, "( Effective )") hsizer.Insert(0, self.stEff) panel = "full" sizerFirepower = wx.FlexGridSizer(1, 4, 0, 0) sizerFirepower.AddGrowableCol(1) contentSizer.Add(sizerFirepower, 0, wx.EXPAND, 0) counter = 0 for label, image, attr in ((_t("Weapon"), "turret", "Weapon"), (_t("Drone"), "droneDPS", "Drone")): baseBox = wx.BoxSizer(wx.HORIZONTAL) sizerFirepower.Add(baseBox, 1, wx.ALIGN_LEFT if counter == 0 else wx.ALIGN_CENTER_HORIZONTAL) baseBox.Add(BitmapLoader.getStaticBitmap("%s_big" % image, parent, "gui"), 0, wx.ALIGN_CENTER) box = wx.BoxSizer(wx.VERTICAL) baseBox.Add(box, 0, wx.ALIGN_CENTER) box.Add(wx.StaticText(parent, wx.ID_ANY, label), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) box.Add(hbox, 1, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0 DPS") setattr(self, "label%sDps%s" % (panel.capitalize(), attr), lbl) hbox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) counter += 1 targetSizer = sizerFirepower baseBox = wx.BoxSizer(wx.HORIZONTAL) targetSizer.Add(baseBox, 0, wx.ALIGN_RIGHT) baseBox.Add(BitmapLoader.getStaticBitmap("volley_big", parent, "gui"), 0, wx.ALIGN_CENTER) gridS = wx.GridSizer(2, 2, 0, 0) baseBox.Add(gridS, 0) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0") setattr(self, "label%sVolleyTotal" % panel.capitalize(), lbl) gridS.Add(wx.StaticText(parent, wx.ID_ANY, _t(" Volley: ")), 0, wx.ALL | wx.ALIGN_RIGHT) gridS.Add(lbl, 0, wx.ALIGN_LEFT) self._cachedValues.append(0) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0") setattr(self, "label%sDpsTotal" % panel.capitalize(), lbl) gridS.Add(wx.StaticText(parent, wx.ID_ANY, _t(" DPS: ")), 0, wx.ALL | wx.ALIGN_RIGHT) self._cachedValues.append(0) gridS.Add(lbl, 0, wx.ALIGN_LEFT) image = BitmapLoader.getBitmap("mining_small", "gui") self.miningyield = wx.BitmapButton(contentPanel, -1, image) self.miningyield.SetToolTip(wx.ToolTip(_t("Click to toggle to Mining Yield"))) self.miningyield.Bind(wx.EVT_BUTTON, self.switchToMiningYieldView) sizerFirepower.Add(self.miningyield, 0, wx.ALIGN_LEFT) self._cachedValues.append(0) def switchToMiningYieldView(self, event): # Getting the active fit mainFrame = gui.mainFrame.MainFrame.getInstance() sFit = Fit.getInstance() fit = sFit.getFit(mainFrame.getActiveFit()) # Remove ourselves from statsPane's view list self.parent.views.remove(self) self._cachedValues = [] # And no longer display us self.panel.GetSizer().Clear(True) self.panel.GetSizer().Layout() # Remove effective label hsizer = self.headerPanel.Parent.GetHeaderContentSizer() for i, c in enumerate(hsizer.Children): if c.GetWindow() is self.stEff: hsizer.Remove(i) self.stEff.Destroy() break # Get the new view view = StatsView.getView("miningyieldViewFull")(self.parent) view.populatePanel(self.panel, self.headerPanel) # Populate us in statsPane's view list self.parent.views.append(view) # Get the TogglePanel tp = self.panel.GetParent() tp.SetLabel(view.getHeaderText(fit)) view.refreshPanel(fit) def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here if fit is not None and fit.targetProfile is not None: self.stEff.Show() else: self.stEff.Hide() def hasSpoolUp(preSpool, fullSpool): if preSpool is None or fullSpool is None: return False return roundToPrec(preSpool.total, prec) != roundToPrec(fullSpool.total, prec) def dpsToolTip(normal, preSpool, fullSpool, prec, lowest, highest): if normal is None or preSpool is None or fullSpool is None: return "" hasSpool = hasSpoolUp(preSpool, fullSpool) lines = [] if hasSpool: lines.append(_t("Spool up") + ": {}-{}".format( formatAmount(preSpool.total, prec, lowest, highest), formatAmount(fullSpool.total, prec, lowest, highest))) if getattr(normal, 'total', None): if hasSpool: lines.append("") lines.append(_t("Current") + ": {}".format(formatAmount(normal.total, prec, lowest, highest))) for dmgType in normal.names(includePure=True): val = getattr(normal, dmgType, None) if val: lines.append("{}{}: {}%".format( " " if hasSpool else "", _t(dmgType).capitalize(), formatAmount(val / normal.total * 100, 3, 0, 0))) return "\n".join(lines) defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] stats = ( ( "labelFullDpsWeapon", lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)), lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)), lambda: fit.getWeaponDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)), 3, 0, 0, "{}{} DPS"), ( "labelFullDpsDrone", lambda: fit.getDroneDps(), lambda: fit.getDroneDps(), lambda: fit.getDroneDps(), 3, 0, 0, "{}{} DPS"), ( "labelFullVolleyTotal", lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)), lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)), lambda: fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)), 3, 0, 0, "{}{}"), ( "labelFullDpsTotal", lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)), lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)), lambda: fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)), 3, 0, 0, "{}{}")) counter = 0 for labelName, val, preSpoolVal, fullSpoolVal, prec, lowest, highest, valueFormat in stats: label = getattr(self, labelName) val = val() if fit is not None else None preSpoolVal = preSpoolVal() if fit is not None else None fullSpoolVal = fullSpoolVal() if fit is not None else None if self._cachedValues[counter] != getattr(val, 'total', None): tooltipText = dpsToolTip(val, preSpoolVal, fullSpoolVal, prec, lowest, highest) label.SetLabel(valueFormat.format( formatAmount(0 if val is None else val.total, prec, lowest, highest), "\u02e2" if hasSpoolUp(preSpoolVal, fullSpoolVal) else "")) label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = getattr(val, 'total', None) counter += 1 self.panel.Layout() self.headerPanel.Layout() FirepowerViewFull.register() ================================================ FILE: gui/builtinStatsViews/miningyieldViewFull.py ================================================ # ============================================================================= # Copyright (C) 2014 Alexandros Kosiaris # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.fit import Fit _t = wx.GetTranslation class MiningYieldViewFull(StatsView): name = "miningyieldViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] def getHeaderText(self, fit): return _t("Mining Yield") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() parent = self.panel = contentPanel self.headerPanel = headerPanel panel = "full" sizerMiningYield = wx.FlexGridSizer(1, 4, 0, 0) sizerMiningYield.AddGrowableCol(1) contentSizer.Add(sizerMiningYield, 0, wx.EXPAND, 0) counter = 0 for miningType, image in (("miner", "mining"), ("drone", "drones")): baseBox = wx.BoxSizer(wx.HORIZONTAL) sizerMiningYield.Add(baseBox, 1, wx.ALIGN_LEFT if counter == 0 else wx.ALIGN_CENTER_HORIZONTAL) baseBox.Add(BitmapLoader.getStaticBitmap("%s_big" % image, parent, "gui"), 0, wx.ALIGN_CENTER) box = wx.BoxSizer(wx.VERTICAL) baseBox.Add(box, 0, wx.ALIGN_CENTER) box.Add(wx.StaticText(parent, wx.ID_ANY, _t(miningType).capitalize()), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) box.Add(hbox, 1, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0 m\u00B3/s") setattr(self, "label%sminingyield%s" % (panel.capitalize(), miningType.capitalize()), lbl) hbox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) counter += 1 targetSizer = sizerMiningYield baseBox = wx.BoxSizer(wx.HORIZONTAL) targetSizer.Add(baseBox, 0, wx.ALIGN_LEFT) baseBox.Add(BitmapLoader.getStaticBitmap("cargoBay_big", parent, "gui"), 0, wx.ALIGN_CENTER) box = wx.BoxSizer(wx.VERTICAL) baseBox.Add(box, 0, wx.EXPAND) box.Add(wx.StaticText(parent, wx.ID_ANY, _t("Total")), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) box.Add(hbox, 1, wx.EXPAND) lbl = wx.StaticText(parent, wx.ID_ANY, "0.0 m\u00B3/s") setattr(self, "label%sminingyieldTotal" % panel.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) self._cachedValues.append(0) image = BitmapLoader.getBitmap("turret_small", "gui") firepower = wx.BitmapButton(contentPanel, -1, image) firepower.SetToolTip(wx.ToolTip(_t("Click to toggle to Firepower View"))) firepower.Bind(wx.EVT_BUTTON, self.switchToFirepowerView) sizerMiningYield.Add(firepower, 0, wx.ALIGN_LEFT) self._cachedValues.append(0) def switchToFirepowerView(self, event): # Getting the active fit mainFrame = gui.mainFrame.MainFrame.getInstance() sFit = Fit.getInstance() fit = sFit.getFit(mainFrame.getActiveFit()) # Remove ourselves from statsPane's view list self.parent.views.remove(self) self._cachedValues = [] # And no longer display us self.panel.GetSizer().Clear(True) self.panel.GetSizer().Layout() # Get the new view view = StatsView.getView("firepowerViewFull")(self.parent) view.populatePanel(self.panel, self.headerPanel) # Populate us in statsPane's view list self.parent.views.append(view) # Get the TogglePanel tp = self.panel.GetParent() # Bind the new panel's children to allow context menu access tp.SetLabel(view.getHeaderText(fit)) view.refreshPanel(fit) def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = (("labelFullminingyieldMiner", lambda: fit.minerYield, lambda: fit.minerDrain, 3, 0, 0, "{} m\u00B3/s", None), ("labelFullminingyieldDrone", lambda: fit.droneYield, lambda: fit.droneDrain, 3, 0, 0, "{} m\u00B3/s", None), ("labelFullminingyieldTotal", lambda: fit.totalYield, lambda: fit.totalDrain, 3, 0, 0, "{} m\u00B3/s", None)) def processValue(value): value = value() if fit is not None else 0 value = value if value is not None else 0 return value counter = 0 for labelName, yieldValue, drainValue, prec, lowest, highest, valueFormat, altFormat in stats: label = getattr(self, labelName) yieldValue = processValue(yieldValue) drainValue = processValue(drainValue) if self._cachedValues[counter] != (yieldValue, drainValue): try: efficiency = '{}%'.format(formatAmount(yieldValue / drainValue * 100, 4, 0, 0)) except ZeroDivisionError: efficiency = '0%' yps = formatAmount(yieldValue, prec, lowest, highest) yph = formatAmount(yieldValue * 3600, prec, lowest, highest) dps = formatAmount(drainValue, prec, lowest, highest) dph = formatAmount(drainValue * 3600, prec, lowest, highest) label.SetLabel(valueFormat.format(yps)) tipLines = [] tipLines.append("{} m\u00B3 yield per second ({} m\u00B3 per hour)".format(yps, yph)) tipLines.append("{} m\u00B3 drain per second ({} m\u00B3 per hour)".format(dps, dph)) tipLines.append(f'{efficiency} efficiency') label.SetToolTip(wx.ToolTip('\n'.join(tipLines))) self._cachedValues[counter] = (yieldValue, drainValue) counter += 1 self.panel.Layout() self.headerPanel.Layout() MiningYieldViewFull.register() ================================================ FILE: gui/builtinStatsViews/outgoingViewFull.py ================================================ # =============================================================================== # Copyright (C) 2014 Alexandros Kosiaris # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundToPrec from eos.utils.spoolSupport import SpoolType, SpoolOptions import eos.config _t = wx.GetTranslation stats = [ ( "labelRemoteCapacitor", "Capacitor:", "{}{} GJ/s", "capacitorInfo", _t("Capacitor restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).capacitor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).capacitor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).capacitor, 3, 0, 0), ( "labelRemoteShield", "Shield:", "{}{} HP/s", "shieldActive", _t("Shield restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).shield, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).shield, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).shield, 3, 0, 0), ( "labelRemoteArmor", "Armor:", "{}{} HP/s", "armorActive", _t("Armor restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).armor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).armor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).armor, 3, 0, 0), ( "labelRemoteHull", "Hull:", "{}{} HP/s", "hullActive", _t("Hull restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).hull, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).hull, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).hull, 3, 0, 0)] class OutgoingViewFull(StatsView): name = "outgoingViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] def getHeaderText(self, fit): return _t("Remote Reps") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() parent = self.panel = contentPanel self.headerPanel = headerPanel sizerOutgoing = wx.GridSizer(1, 4, 0, 0) contentSizer.Add(sizerOutgoing, 0, wx.EXPAND, 0) for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: baseBox = wx.BoxSizer(wx.VERTICAL) baseBox.Add(BitmapLoader.getStaticBitmap("%s_big" % image, parent, "gui"), 0, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, valueFormat.format(0, "")) lbl.SetToolTip(wx.ToolTip(tooltip)) setattr(self, labelName, lbl) baseBox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) sizerOutgoing.Add(baseBox, 1, wx.ALIGN_LEFT) def refreshPanel(self, fit): def formatTooltip(text, preSpool, fullSpool, prec, lowest, highest): if roundToPrec(preSpool, prec) == roundToPrec(fullSpool, prec): return False, text else: return True, "{}\nSpool up: {}-{}".format( text, formatAmount(preSpool, prec, lowest, highest), formatAmount(fullSpool, prec, lowest, highest)) defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] counter = 0 for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) val = val(fit, defaultSpoolValue) if fit is not None else 0 preSpoolVal = preSpoolVal(fit) if fit is not None else 0 fullSpoolVal = fullSpoolVal(fit) if fit is not None else 0 if self._cachedValues[counter] != val: hasSpool, tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) label.SetLabel(valueFormat.format( formatAmount(val, prec, lowest, highest), "\u02e2" if hasSpool else "")) label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = val counter += 1 self.panel.Layout() self.headerPanel.Layout() OutgoingViewFull.register() ================================================ FILE: gui/builtinStatsViews/outgoingViewMinimal.py ================================================ # =============================================================================== # Copyright (C) 2014 Alexandros Kosiaris # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.utils.numberFormatter import formatAmount, roundToPrec from eos.utils.spoolSupport import SpoolType, SpoolOptions import eos.config _t = wx.GetTranslation stats = [ ( "labelRemoteCapacitor", "Capacitor:", "{}{} GJ/s", "capacitorInfo", _t("Capacitor restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).capacitor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).capacitor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).capacitor, 3, 0, 0), ( "labelRemoteShield", "Shield:", "{}{} HP/s", "shieldActive", _t("Shield restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).shield, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).shield, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).shield, 3, 0, 0), ( "labelRemoteArmor", "Armor:", "{}{} HP/s", "armorActive", _t("Armor restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).armor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).armor, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).armor, 3, 0, 0), ( "labelRemoteHull", "Hull:", "{}{} HP/s", "hullActive", _t("Hull restored"), lambda fit, spool: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, spool, False)).hull, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 0, True)).hull, lambda fit: fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, 1, True)).hull, 3, 0, 0)] class OutgoingViewMinimal(StatsView): name = "outgoingViewMinimal" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] def getHeaderText(self, fit): return _t("Remote Reps") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() parent = self.panel = contentPanel self.headerPanel = headerPanel sizerOutgoing = wx.GridSizer(1, 4, 0, 0) contentSizer.Add(sizerOutgoing, 0, wx.EXPAND, 0) for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: baseBox = wx.BoxSizer(wx.VERTICAL) baseBox.Add(wx.StaticText(contentPanel, wx.ID_ANY, labelDesc), 0, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, valueFormat.format(0, "")) lbl.SetToolTip(wx.ToolTip(tooltip)) setattr(self, labelName, lbl) baseBox.Add(lbl, 0, wx.ALIGN_CENTER) self._cachedValues.append(0) sizerOutgoing.Add(baseBox, 1, wx.ALIGN_LEFT) def refreshPanel(self, fit): def formatTooltip(text, preSpool, fullSpool, prec, lowest, highest): if roundToPrec(preSpool, prec) == roundToPrec(fullSpool, prec): return False, text else: return True, "{}\nSpool up: {}-{}".format( text, formatAmount(preSpool, prec, lowest, highest), formatAmount(fullSpool, prec, lowest, highest)) defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] counter = 0 for labelName, labelDesc, valueFormat, image, tooltip, val, preSpoolVal, fullSpoolVal, prec, lowest, highest in stats: label = getattr(self, labelName) val = val(fit, defaultSpoolValue) if fit is not None else 0 preSpoolVal = preSpoolVal(fit) if fit is not None else 0 fullSpoolVal = fullSpoolVal(fit) if fit is not None else 0 if self._cachedValues[counter] != val: hasSpool, tooltipText = formatTooltip(tooltip, preSpoolVal, fullSpoolVal, prec, lowest, highest) label.SetLabel(valueFormat.format( formatAmount(val, prec, lowest, highest), "\u02e2" if hasSpool else "")) label.SetToolTip(wx.ToolTip(tooltipText)) self._cachedValues[counter] = val counter += 1 self.panel.Layout() self.headerPanel.Layout() OutgoingViewMinimal.register() ================================================ FILE: gui/builtinStatsViews/priceViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.price import Fit, Price from service.settings import MarketPriceSettings _t = wx.GetTranslation class PriceViewFull(StatsView): name = "priceViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self.settings = MarketPriceSettings.getInstance() def getHeaderText(self, fit): return _t("Price") def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel headerContentSizer = wx.BoxSizer(wx.HORIZONTAL) hsizer = headerPanel.GetSizer() hsizer.Add(headerContentSizer, 0, 0, 0) self.labelEMStatus = wx.StaticText(headerPanel, wx.ID_ANY, "") headerContentSizer.Add(self.labelEMStatus) headerPanel.GetParent().AddToggleItem(self.labelEMStatus) gridPrice = wx.GridSizer(2, 3, 0, 0) contentSizer.Add(gridPrice, 0, wx.EXPAND | wx.ALL, 0) for _type, label in ( ("ship", _t("Ship")), ("fittings", _t("Fittings")), ("character", _t("Character")), ("drones", _t("Drones")), ("cargoBay", _t("Cargo bay")), ("total", _t("Total")) ): if _type in "ship": image = "ship_big" elif _type in ("fittings", "total"): image = "%sPrice_big" % _type else: image = "%s_big" % _type box = wx.BoxSizer(wx.HORIZONTAL) gridPrice.Add(box, 0, wx.ALIGN_TOP) box.Add(BitmapLoader.getStaticBitmap(image, contentPanel, "gui"), 0, wx.ALIGN_CENTER) vbox = wx.BoxSizer(wx.VERTICAL) box.Add(vbox, 1, wx.EXPAND) vbox.Add(wx.StaticText(contentPanel, wx.ID_ANY, label.capitalize()), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) vbox.Add(hbox) lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0.00 ISK") setattr(self, "labelPrice%s" % _type.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) def refreshPanel(self, fit): if fit is not None: self.fit = fit fit_items = set(Fit.fitItemIter(fit)) Price.getInstance().getPrices(fit_items, self.processPrices, fetchTimeout=30) self.labelEMStatus.SetLabel("Updating prices...") self.refreshPanelPrices(fit) self.panel.Layout() def refreshPanelPrices(self, fit=None): ship_price = 0 module_price = 0 drone_price = 0 fighter_price = 0 cargo_price = 0 booster_price = 0 implant_price = 0 if fit: ship_price = fit.ship.item.price.price if fit.modules: for module in fit.modules: if not module.isEmpty: module_price += module.item.price.price if fit.drones: for drone in fit.drones: drone_price += drone.item.price.price * drone.amount if fit.fighters: for fighter in fit.fighters: fighter_price += fighter.item.price.price * fighter.amount if fit.cargo: for cargo in fit.cargo: cargo_price += cargo.item.price.price * cargo.amount if fit.boosters: for booster in fit.boosters: booster_price += booster.item.price.price if fit.appliedImplants: for implant in fit.appliedImplants: implant_price += implant.item.price.price total_price = 0 total_price += ship_price total_price += module_price if self.settings.get("drones"): total_price += drone_price + fighter_price if self.settings.get("cargo"): total_price += cargo_price if self.settings.get("character"): total_price += booster_price + implant_price self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True)) self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(ship_price))) self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(module_price, 3, 3, 9, currency=True)) self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(module_price))) self.labelPriceDrones.SetLabel("%s ISK" % formatAmount(drone_price + fighter_price, 3, 3, 9, currency=True)) self.labelPriceDrones.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(drone_price + fighter_price))) self.labelPriceCargobay.SetLabel("%s ISK" % formatAmount(cargo_price, 3, 3, 9, currency=True)) self.labelPriceCargobay.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(cargo_price))) self.labelPriceCharacter.SetLabel("%s ISK" % formatAmount(booster_price + implant_price, 3, 3, 9, currency=True)) self.labelPriceCharacter.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(booster_price + implant_price))) self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True)) self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(total_price))) def processPrices(self, prices): self.refreshPanelPrices(self.fit) self.labelEMStatus.SetLabel("") self.panel.Layout() PriceViewFull.register() ================================================ FILE: gui/builtinStatsViews/priceViewMinimal.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.price import Fit, Price from service.settings import MarketPriceSettings _t = wx.GetTranslation class PriceViewMinimal(StatsView): name = "priceViewMinimal" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self.settings = MarketPriceSettings.getInstance() def getHeaderText(self, fit): return "Price" def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel headerContentSizer = wx.BoxSizer(wx.HORIZONTAL) hsizer = headerPanel.GetSizer() hsizer.Add(headerContentSizer, 0, 0, 0) self.labelEMStatus = wx.StaticText(headerPanel, wx.ID_ANY, "") headerContentSizer.Add(self.labelEMStatus) headerPanel.GetParent().AddToggleItem(self.labelEMStatus) gridPrice = wx.GridSizer(1, 3, 0, 0) contentSizer.Add(gridPrice, 0, wx.EXPAND | wx.ALL, 0) for _type, label in ( ("ship", _t("Ship")), ("fittings", _t("Fittings")), ("total", _t("Total")) ): image = "%sPrice_big" % _type if _type != "ship" else "ship_big" box = wx.BoxSizer(wx.HORIZONTAL) gridPrice.Add(box, 0, wx.ALIGN_TOP) box.Add(BitmapLoader.getStaticBitmap(image, contentPanel, "gui"), 0, wx.ALIGN_CENTER) vbox = wx.BoxSizer(wx.VERTICAL) box.Add(vbox, 1, wx.EXPAND) vbox.Add(wx.StaticText(contentPanel, wx.ID_ANY, label), 0, wx.ALIGN_LEFT) hbox = wx.BoxSizer(wx.HORIZONTAL) vbox.Add(hbox) lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0.00 ISK") setattr(self, "labelPrice%s" % _type.capitalize(), lbl) hbox.Add(lbl, 0, wx.ALIGN_LEFT) def refreshPanel(self, fit): if fit is not None: self.fit = fit fit_items = set(Fit.fitItemIter(fit)) Price.getInstance().getPrices(fit_items, self.processPrices, fetchTimeout=30) self.labelEMStatus.SetLabel("Updating prices...") self.refreshPanelPrices(fit) self.panel.Layout() def refreshPanelPrices(self, fit=None): ship_price = 0 module_price = 0 drone_price = 0 fighter_price = 0 cargo_price = 0 booster_price = 0 implant_price = 0 if fit: ship_price = fit.ship.item.price.price if fit.modules: for module in fit.modules: if not module.isEmpty: module_price += module.item.price.price if fit.drones: for drone in fit.drones: drone_price += drone.item.price.price * drone.amount if fit.fighters: for fighter in fit.fighters: fighter_price += fighter.item.price.price * fighter.amount if fit.cargo: for cargo in fit.cargo: cargo_price += cargo.item.price.price * cargo.amount if fit.boosters: for booster in fit.boosters: booster_price += booster.item.price.price if fit.appliedImplants: for implant in fit.appliedImplants: implant_price += implant.item.price.price fitting_price = module_price total_price = 0 total_price += ship_price total_price += module_price if self.settings.get("drones"): total_price += drone_price + fighter_price if self.settings.get("cargo"): total_price += cargo_price if self.settings.get("character"): total_price += booster_price + implant_price self.labelPriceShip.SetLabel("%s ISK" % formatAmount(ship_price, 3, 3, 9, currency=True)) self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(ship_price))) self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(fitting_price, 3, 3, 9, currency=True)) self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(fitting_price))) self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(total_price, 3, 3, 9, currency=True)) self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f} ISK'.format(total_price))) def processPrices(self, prices): self.refreshPanelPrices(self.fit) self.labelEMStatus.SetLabel("") self.panel.Layout() PriceViewMinimal.register() ================================================ FILE: gui/builtinStatsViews/rechargeViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.statsView import StatsView from gui.utils.numberFormatter import formatAmount from service.fit import Fit _t = wx.GetTranslation class RechargeViewFull(StatsView): name = "rechargeViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.Bind(GE.EFFECTIVE_HP_TOGGLED, self.toggleEffective) def getHeaderText(self, fit): return _t("Recharge rates") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width @property def effective(self): try: return self.parent.nameViewMap['resistancesViewFull'].showEffective except KeyError: return False def toggleEffective(self, event): event.Skip() sFit = Fit.getInstance() self.refreshPanel(sFit.getFit(self.mainFrame.getActiveFit())) def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel sizerTankStats = wx.FlexGridSizer(3, 5, 0, 0) for i in range(4): sizerTankStats.AddGrowableCol(i + 1) contentSizer.Add(sizerTankStats, 0, wx.EXPAND, 0) # Add an empty label first for correct alignment. sizerTankStats.Add(wx.StaticText(contentPanel, wx.ID_ANY, ""), 0) toolTipText = { "shieldPassive": _t("Passive shield recharge"), "shieldActive": _t("Active shield boost"), "armorActive": _t("Armor repair amount"), "hullActive": _t("Hull repair amount")} for tankType in ("shieldPassive", "shieldActive", "armorActive", "hullActive"): bitmap = BitmapLoader.getStaticBitmap("%s_big" % tankType, contentPanel, "gui") tooltip = wx.ToolTip(toolTipText[tankType]) bitmap.SetToolTip(tooltip) sizerTankStats.Add(bitmap, 0, wx.ALIGN_CENTER) toolTipText = { "reinforced": _t("Reinforced"), "sustained": _t("Sustained")} for stability in ("reinforced", "sustained"): bitmap = BitmapLoader.getStaticBitmap("regen%s_big" % stability.capitalize(), contentPanel, "gui") tooltip = wx.ToolTip(toolTipText[stability]) bitmap.SetToolTip(tooltip) sizerTankStats.Add(bitmap, 0, wx.ALIGN_CENTER) for tankType in ("shieldPassive", "shieldActive", "armorActive", "hullActive"): if stability == "reinforced" and tankType == "shieldPassive": sizerTankStats.Add(wx.StaticText(contentPanel, wx.ID_ANY, "")) continue tankTypeCap = tankType[0].capitalize() + tankType[1:] lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0.0", style=wx.ALIGN_RIGHT) setattr(self, "labelTank%s%s" % (stability.capitalize(), tankTypeCap), lbl) box = wx.BoxSizer(wx.HORIZONTAL) box.Add(lbl, 0, wx.EXPAND) unitlbl = wx.StaticText(contentPanel, wx.ID_ANY, " EHP/s") setattr(self, "unitLabelTank%s%s" % (stability.capitalize(), tankTypeCap), unitlbl) box.Add(unitlbl, 0, wx.EXPAND) sizerTankStats.Add(box, 0, wx.ALIGN_CENTRE) contentPanel.Layout() def refreshPanel(self, fit): # If we did anything interesting, we'd update our labels to reflect the new fit's stats here unit = " EHP/s" if self.effective else " HP/s" for stability in ("reinforced", "sustained"): if stability == "reinforced" and fit is not None: tank = fit.effectiveTank if self.effective else fit.tank elif stability == "sustained" and fit is not None: tank = fit.effectiveSustainableTank if self.effective else fit.sustainableTank else: tank = None for name in ("shield", "armor", "hull"): lbl = getattr(self, "labelTank%s%sActive" % (stability.capitalize(), name.capitalize())) unitlbl = getattr(self, "unitLabelTank%s%sActive" % (stability.capitalize(), name.capitalize())) unitlbl.SetLabel(unit) if tank is not None: amount = tank["{}Repair".format(name)] else: amount = 0 if tank is not None and name == "armor": preSpoolAmount = tank["armorRepairPreSpool"] fullSpoolAmount = tank["armorRepairFullSpool"] if round(preSpoolAmount, 1) != round(fullSpoolAmount, 1): ttText = "Spool up: {:.1f}-{:.1f}".format(preSpoolAmount, fullSpoolAmount) else: ttText = "" else: ttText = "" lbl.SetLabel("{:.1f}{}".format(amount, "\u02e2" if ttText else "")) lbl.SetToolTip(wx.ToolTip(ttText)) unitlbl.SetToolTip(wx.ToolTip(ttText)) if fit is not None: label = getattr(self, "labelTankSustainedShieldPassive") value = fit.effectiveTank["passiveShield"] if self.effective else fit.tank["passiveShield"] label.SetLabel(formatAmount(value, 3, 0, 9)) unitlbl = getattr(self, "unitLabelTankSustainedShieldPassive") unitlbl.SetLabel(unit) else: value = 0 label = getattr(self, "labelTankSustainedShieldPassive") label.SetLabel("0") label.SetToolTip(wx.ToolTip("%.3f" % value)) self.panel.Layout() self.headerPanel.Layout() RechargeViewFull.register() ================================================ FILE: gui/builtinStatsViews/resistancesViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.globalEvents as GE import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.pyfa_gauge import PyGauge from gui.statsView import StatsView from gui.utils import fonts from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation class ResistancesViewFull(StatsView): name = "resistancesViewFull" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] self.showEffective = True self.activeFit = None self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.Bind(GE.EFFECTIVE_HP_TOGGLED, self.ehpSwitch) def getHeaderText(self, fit): return _t("Resistances") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel # Custom header EHP headerContentSizer = self.headerPanel.Parent.GetHeaderContentSizer() self.stEff = wx.StaticText(headerPanel, wx.ID_ANY, "(" + _t("Effective HP: ")) headerContentSizer.Add(self.stEff) headerPanel.GetParent().AddToggleItem(self.stEff) self.labelEhp = wx.StaticText(headerPanel, wx.ID_ANY, "0") headerContentSizer.Add(self.labelEhp, 0) headerPanel.GetParent().AddToggleItem(self.labelEhp) stCls = wx.StaticText(headerPanel, wx.ID_ANY, ")") headerPanel.GetParent().AddToggleItem(stCls) headerContentSizer.Add(stCls) # headerContentSizer.Add(wx.StaticLine(headerPanel, wx.ID_ANY), 1, wx.ALIGN_CENTER) # Display table col = 0 row = 0 sizerResistances = wx.GridBagSizer() contentSizer.Add(sizerResistances, 0, wx.EXPAND, 0) # Add an empty label, then the rest. sizerResistances.Add(wx.StaticText(contentPanel, wx.ID_ANY), wx.GBPosition(row, col), wx.GBSpan(1, 1)) col += 1 toolTipText = { "em": _t("Electromagnetic resistance"), "thermal": _t("Thermal resistance"), "kinetic": _t("Kinetic resistance"), "explosive": _t("Explosive resistance") } for damageType in ("em", "thermal", "kinetic", "explosive"): bitmap = BitmapLoader.getStaticBitmap("%s_big" % damageType, contentPanel, "gui") tooltip = wx.ToolTip(toolTipText[damageType]) bitmap.SetToolTip(tooltip) sizerResistances.Add(bitmap, wx.GBPosition(row, col), wx.GBSpan(1, 1), wx.ALIGN_CENTER) col += 1 self.stEHPs = wx.Button(contentPanel, style=wx.BU_EXACTFIT, label=_t("EHP")) self.stEHPs.SetToolTip(wx.ToolTip(_t("Click to toggle between effective HP and raw HP"))) self.stEHPs.Bind(wx.EVT_BUTTON, self.toggleEHP) for i in range(4): sizerResistances.AddGrowableCol(i + 1) sizerResistances.Add(self.stEHPs, wx.GBPosition(row, col), wx.GBSpan(1, 1), wx.ALIGN_CENTER) col = 0 row += 1 gaugeColours = (((38, 133, 198), (52, 86, 98)), ((198, 38, 38), (83, 65, 67)), ((163, 163, 163), (74, 90, 93)), ((198, 133, 38), (81, 83, 67))) toolTipText = { "shield": _t("Shield resistance"), "armor": _t("Armor resistance"), "hull": _t("Hull resistance"), "damagePattern": _t("Incoming damage pattern") } for tankType in ("shield", "armor", "hull", "separator", "damagePattern"): if tankType != "separator": bitmap = BitmapLoader.getStaticBitmap("%s_big" % tankType, contentPanel, "gui") tooltip = wx.ToolTip(toolTipText[tankType]) bitmap.SetToolTip(tooltip) sizerResistances.Add(bitmap, wx.GBPosition(row, col), wx.GBSpan(1, 1), wx.ALIGN_CENTER) col += 1 else: sizerResistances.Add(wx.StaticLine(contentPanel, wx.ID_ANY), wx.GBPosition(row, col), wx.GBSpan(1, 6), wx.EXPAND | wx.ALIGN_CENTER) row += 1 col = 0 continue currGColour = 0 font = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL, False) for damageType in ("em", "thermal", "kinetic", "explosive"): box = wx.BoxSizer(wx.HORIZONTAL) sizerResistances.Add(box, wx.GBPosition(row, col), wx.GBSpan(1, 1), wx.ALIGN_CENTER) # Fancy gauges addon pgColour = gaugeColours[currGColour] fc = pgColour[0] bc = pgColour[1] currGColour += 1 lbl = PyGauge(contentPanel, font, 100) lbl.SetMinSize((48, 16)) lbl.SetBackgroundColour(wx.Colour(round(bc[0]), round(bc[1]), round(bc[2]))) lbl.SetBarColour(wx.Colour(round(fc[0]), round(fc[1]), round(fc[2]))) lbl.SetBarGradient() lbl.SetFractionDigits(1) setattr(self, "gaugeResistance%s%s" % (tankType.capitalize(), damageType.capitalize()), lbl) box.Add(lbl, 0, wx.ALIGN_CENTER) col += 1 box = wx.BoxSizer(wx.VERTICAL) box.SetMinSize(wx.Size(self.getTextExtentW("WWWWk"), -1)) lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0" if tankType != "damagePattern" else "") box.Add(lbl, 0, wx.ALIGN_CENTER) setattr(self, "labelResistance%sEhp" % tankType.capitalize(), lbl) sizerResistances.Add(box, wx.GBPosition(row, col), wx.GBSpan(1, 1), wx.ALIGN_CENTER) row += 1 col = 0 self.stEHPs.SetToolTip(wx.ToolTip(_t("Click to toggle between effective HP and raw HP"))) def toggleEHP(self, event): wx.PostEvent(self.mainFrame, GE.EffectiveHpToggled(effective=self.stEHPs.GetLabel() == _t("HP"))) def ehpSwitch(self, event): event.Skip() self.showEffective = event.effective fitID = self.mainFrame.getActiveFit() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here if fit is None and not self.showEffective: self.showEffective = True wx.PostEvent(self.mainFrame, GE.EffectiveHpToggled(effective=True)) return self.stEHPs.SetLabel(_t("EHP") if self.showEffective else _t("HP")) self.activeFit = fit.ID if fit is not None else None for tankType in ("shield", "armor", "hull"): for damageType in ("em", "thermal", "kinetic", "explosive"): if fit is not None: resonanceType = tankType if tankType != "hull" else "" resonance = "%s%sDamageResonance" % (resonanceType, damageType.capitalize()) resonance = resonance[0].lower() + resonance[1:] resonance = (1 - fit.ship.getModifiedItemAttr(resonance)) * 100 else: resonance = 0 lbl = getattr(self, "gaugeResistance%s%s" % (tankType.capitalize(), damageType.capitalize())) lbl.SetValue(resonance) ehp = (fit.ehp if self.showEffective else fit.hp) if fit is not None else None total = 0 for tankType, tooltip in (("shield", _t("Shield: ")), ("armor", _t("Armor: ")), ("hull", _t("Hull: "))): lbl = getattr(self, "labelResistance%sEhp" % tankType.capitalize()) if ehp is not None: total += ehp[tankType] rrFactor = fit.ehp[tankType] / fit.hp[tankType] lbl.SetLabel(formatAmount(ehp[tankType], 3, 0, 9)) lbl.SetToolTip( wx.ToolTip(tooltip + "%d\n" % ehp[tankType] + _t("Resist Multiplier: ") + "%.2fx" % rrFactor)) else: lbl.SetLabel("0") self.labelEhp.SetLabel("%s" % formatAmount(total, 3, 0, 9)) if self.showEffective: self.stEff.SetLabel("(" + _t("Effective HP: ")) self.labelEhp.SetToolTip(wx.ToolTip(_t("Effective: %d HP") % total)) else: self.stEff.SetLabel("(" + _t("Raw HP: ")) self.labelEhp.SetToolTip(wx.ToolTip(_t("Raw: %d HP") % total)) damagePattern = fit.damagePattern if fit is not None and self.showEffective else None total = sum((damagePattern.emAmount, damagePattern.thermalAmount, damagePattern.kineticAmount, damagePattern.explosiveAmount)) if damagePattern is not None else 0 for damageType in ("em", "thermal", "kinetic", "explosive"): lbl = getattr(self, "gaugeResistanceDamagepattern%s" % damageType.capitalize()) if damagePattern is not None: lbl.SetValueRange(getattr(damagePattern, "%sAmount" % damageType), total) else: lbl.SetValue(0) self.panel.Layout() self.headerPanel.Layout() ResistancesViewFull.register() ================================================ FILE: gui/builtinStatsViews/resourcesViewFull.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.bitmap_loader import BitmapLoader from gui.pyfa_gauge import PyGauge import gui.mainFrame from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED from gui.utils import fonts from eos.const import FittingHardpoint from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation class ResourcesViewFull(StatsView): name = "resourcesViewFull" contexts = ["drone", "fighter", "cargo"] def __init__(self, parent): StatsView.__init__(self) self.parent = parent self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.additionsPane.notebook.Bind(EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged) def pageChanged(self, event): page = self.mainFrame.additionsPane.getName(event.GetSelection()) if page == "Cargo": self.toggleContext("cargo") elif page == "Fighters": self.toggleContext("fighter") else: self.toggleContext("drone") event.Skip() def toggleContext(self, context): # Apparently you cannot .Hide(True) on a Window, otherwise I would just .Hide(context !== x). # This is a gimpy way to toggle this shit for x in self.contexts: bitmap = getattr(self, "bitmapFull{}Bay".format(x.capitalize())) base = getattr(self, "baseFull{}Bay".format(x.capitalize())) if context == x: bitmap.Show() base.Show(True) else: bitmap.Hide() base.Hide(True) fighter_sizer = getattr(self, "boxSizerFighter") drone_sizer = getattr(self, "boxSizerDrones") if context != "fighter": fighter_sizer.ShowItems(False) drone_sizer.ShowItems(True) else: fighter_sizer.ShowItems(True) drone_sizer.ShowItems(False) self.panel.Layout() self.headerPanel.Layout() def getHeaderText(self, fit): return _t("Resources") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() root = wx.BoxSizer(wx.VERTICAL) contentSizer.Add(root, 0, wx.EXPAND, 0) sizer = wx.BoxSizer(wx.HORIZONTAL) root.Add(sizer, 0, wx.EXPAND) root.Add(wx.StaticLine(contentPanel, wx.ID_ANY, style=wx.HORIZONTAL), 0, wx.EXPAND) sizerResources = wx.BoxSizer(wx.HORIZONTAL) root.Add(sizerResources, 1, wx.EXPAND, 0) parent = self.panel = contentPanel self.headerPanel = headerPanel panel = "full" base = sizerResources sizer.AddStretchSpacer() # Turrets & launcher hardslots display tooltipText = { "turret": _t("Turret hardpoints"), "launcher": _t("Launcher hardpoints"), "drones": _t("Drones active"), "fighter": _t("Fighter squadrons active"), "calibration": _t("Calibration") } for type_ in ("turret", "launcher", "drones", "fighter", "calibration"): box = wx.BoxSizer(wx.HORIZONTAL) bitmap = BitmapLoader.getStaticBitmap("%s_big" % type_, parent, "gui") tooltip = wx.ToolTip(tooltipText[type_]) bitmap.SetToolTip(tooltip) box.Add(bitmap, 0, wx.ALIGN_CENTER) sizer.Add(box, 0, wx.ALIGN_CENTER) suffix = { 'turret': 'Hardpoints', 'launcher': 'Hardpoints', 'drones': 'Active', 'fighter': 'Tubes', 'calibration': 'Points' } lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sUsed%s%s" % (panel.capitalize(), type_.capitalize(), suffix[type_].capitalize()), lbl) box.Add(lbl, 0, wx.ALIGN_CENTER | wx.LEFT, 5) box.Add(wx.StaticText(parent, wx.ID_ANY, "/"), 0, wx.ALIGN_CENTER) lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sTotal%s%s" % (panel.capitalize(), type_.capitalize(), suffix[type_].capitalize()), lbl) box.Add(lbl, 0, wx.ALIGN_CENTER) setattr(self, "boxSizer{}".format(type_.capitalize()), box) # Hack - We add a spacer after each thing, but we are always hiding something. The spacer is stil there. # This way, we only have one space after the drones/fighters if type_ != "drones": sizer.AddStretchSpacer() gauge_font = wx.Font(fonts.NORMAL, wx.SWISS, wx.NORMAL, wx.NORMAL, False) # PG, Cpu & drone stuff tooltipText = { "cpu": _t("CPU"), "pg": _t("PowerGrid"), "droneBay": _t("Drone bay"), "fighterBay": _t("Fighter bay"), "droneBandwidth": _t("Drone bandwidth"), "cargoBay": _t("Cargo bay") } for i, group in enumerate((("cpu", "pg"), ("cargoBay", "droneBay", "fighterBay", "droneBandwidth"))): main = wx.BoxSizer(wx.VERTICAL) base.Add(main, 1, wx.ALIGN_CENTER) for type_ in group: capitalizedType = type_[0].capitalize() + type_[1:] bitmap = BitmapLoader.getStaticBitmap(type_ + "_big", parent, "gui") tooltip = wx.ToolTip(tooltipText[type_]) bitmap.SetToolTip(tooltip) stats = wx.BoxSizer(wx.VERTICAL) absolute = wx.BoxSizer(wx.HORIZONTAL) stats.Add(absolute, 0, wx.EXPAND) b = wx.BoxSizer(wx.HORIZONTAL) main.Add(b, 1, wx.ALIGN_CENTER) b.Add(bitmap, 0, wx.ALIGN_BOTTOM) b.Add(stats, 1, wx.EXPAND) lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sUsed%s" % (panel.capitalize(), capitalizedType), lbl) absolute.Add(lbl, 0, wx.ALIGN_LEFT | wx.LEFT, 3) absolute.Add(wx.StaticText(parent, wx.ID_ANY, "/"), 0, wx.ALIGN_LEFT) lbl = wx.StaticText(parent, wx.ID_ANY, "0") setattr(self, "label%sTotal%s" % (panel.capitalize(), capitalizedType), lbl) absolute.Add(lbl, 0, wx.ALIGN_LEFT) units = {"cpu": " tf", "pg": " MW", "droneBandwidth": " mbit/s", "droneBay": " m\u00B3", "fighterBay": " m\u00B3", "cargoBay": " m\u00B3"} lbl = wx.StaticText(parent, wx.ID_ANY, "%s" % units[type_]) absolute.Add(lbl, 0, wx.ALIGN_LEFT) # Gauges modif. - Darriele gauge = PyGauge(parent, gauge_font, 1) gauge.SetValueRange(0, 0) gauge.SetMinSize((self.getTextExtentW("1.999M/1.99M MW"), 23)) gauge.SetFractionDigits(2) setattr(self, "gauge%s%s" % (panel.capitalize(), capitalizedType), gauge) stats.Add(gauge, 0, wx.ALIGN_CENTER) setattr(self, "base%s%s" % (panel.capitalize(), capitalizedType), b) setattr(self, "bitmap%s%s" % (panel.capitalize(), capitalizedType), bitmap) self.toggleContext("drone") def refreshPanel(self, fit): # If we did anything intresting, we'd update our labels to reflect the new fit's stats here stats = ( ("label%sUsedTurretHardpoints", lambda: fit.getHardpointsUsed(FittingHardpoint.TURRET), 0, 0, 0), ("label%sTotalTurretHardpoints", lambda: fit.ship.getModifiedItemAttr('turretSlotsLeft'), 0, 0, 0), ("label%sUsedLauncherHardpoints", lambda: fit.getHardpointsUsed(FittingHardpoint.MISSILE), 0, 0, 0), ("label%sTotalLauncherHardpoints", lambda: fit.ship.getModifiedItemAttr('launcherSlotsLeft'), 0, 0, 0), ("label%sUsedDronesActive", lambda: fit.activeDrones, 0, 0, 0), ("label%sTotalDronesActive", lambda: fit.extraAttributes["maxActiveDrones"], 0, 0, 0), ("label%sUsedFighterTubes", lambda: fit.fighterTubesUsed, 3, 0, 9), ("label%sTotalFighterTubes", lambda: fit.fighterTubesTotal, 3, 0, 9), ("label%sUsedCalibrationPoints", lambda: fit.calibrationUsed, 0, 0, 0), ("label%sTotalCalibrationPoints", lambda: fit.ship.getModifiedItemAttr('upgradeCapacity'), 0, 0, 0), ("label%sUsedPg", lambda: fit.pgUsed, 4, 0, 9), ("label%sUsedCpu", lambda: fit.cpuUsed, 4, 0, 9), ("label%sTotalPg", lambda: fit.ship.getModifiedItemAttr("powerOutput"), 4, 0, 9), ("label%sTotalCpu", lambda: fit.ship.getModifiedItemAttr("cpuOutput"), 4, 0, 9), ("label%sUsedDroneBay", lambda: fit.droneBayUsed, 3, 0, 9), ("label%sUsedFighterBay", lambda: fit.fighterBayUsed, 3, 0, 9), ("label%sUsedDroneBandwidth", lambda: fit.droneBandwidthUsed, 3, 0, 9), ("label%sTotalDroneBay", lambda: fit.ship.getModifiedItemAttr("droneCapacity"), 3, 0, 9), ("label%sTotalDroneBandwidth", lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), 3, 0, 9), ("label%sTotalFighterBay", lambda: fit.ship.getModifiedItemAttr("fighterCapacity"), 3, 0, 9), ("label%sUsedCargoBay", lambda: fit.cargoBayUsed, 3, 0, 9), ("label%sTotalCargoBay", lambda: fit.ship.getModifiedItemAttr("capacity"), 3, 0, 9), ) panel = "Full" usedTurretHardpoints = 0 labelUTH = "" totalTurretHardpoints = 0 labelTTH = "" usedLauncherHardpoints = 0 labelULH = "" totalLauncherHardPoints = 0 labelTLH = "" usedDronesActive = 0 labelUDA = "" totalDronesActive = 0 labelTDA = "" usedFighterTubes = 0 labelUFT = "" totalFighterTubes = 0 labelTFT = "" usedCalibrationPoints = 0 labelUCP = "" totalCalibrationPoints = 0 labelTCP = "" for labelName, value, prec, lowest, highest in stats: label = getattr(self, labelName % panel) value = value() if fit is not None else 0 value = value if value is not None else 0 if labelName % panel == "label%sUsedTurretHardpoints" % panel: usedTurretHardpoints = value labelUTH = label elif labelName % panel == "label%sTotalTurretHardpoints" % panel: totalTurretHardpoints = value labelTTH = label elif labelName % panel == "label%sUsedLauncherHardpoints" % panel: usedLauncherHardpoints = value labelULH = label elif labelName % panel == "label%sTotalLauncherHardpoints" % panel: totalLauncherHardPoints = value labelTLH = label elif labelName % panel == "label%sUsedDronesActive" % panel: usedDronesActive = value labelUDA = label elif labelName % panel == "label%sTotalDronesActive" % panel: totalDronesActive = value labelTDA = label elif labelName % panel == "label%sUsedFighterTubes" % panel: usedFighterTubes = value labelUFT = label elif labelName % panel == "label%sTotalFighterTubes" % panel: totalFighterTubes = value labelTFT = label elif labelName % panel == "label%sUsedCalibrationPoints" % panel: usedCalibrationPoints = value labelUCP = label elif labelName % panel == "label%sTotalCalibrationPoints" % panel: totalCalibrationPoints = value labelTCP = label if isinstance(value, str): label.SetLabel(value) label.SetToolTip(wx.ToolTip(value)) else: label.SetLabel(formatAmount(value, prec, lowest, highest)) label.SetToolTip(wx.ToolTip("%.1f" % value)) # See issue #1877 label.InvalidateBestSize() colorWarn = wx.Colour(204, 51, 51) colorNormal = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) if usedTurretHardpoints > totalTurretHardpoints: colorT = colorWarn else: colorT = colorNormal if usedLauncherHardpoints > totalLauncherHardPoints: colorL = colorWarn else: colorL = colorNormal if usedDronesActive > totalDronesActive: colorD = colorWarn else: colorD = colorNormal if usedFighterTubes > totalFighterTubes: colorF = colorWarn else: colorF = colorNormal if usedCalibrationPoints > totalCalibrationPoints: colorC = colorWarn else: colorC = colorNormal labelUTH.SetForegroundColour(colorT) labelTTH.SetForegroundColour(colorT) labelULH.SetForegroundColour(colorL) labelTLH.SetForegroundColour(colorL) labelUDA.SetForegroundColour(colorD) labelTDA.SetForegroundColour(colorD) labelUFT.SetForegroundColour(colorF) labelTFT.SetForegroundColour(colorF) labelUCP.SetForegroundColour(colorC) labelTCP.SetForegroundColour(colorC) labelUCP.Refresh() labelTCP.Refresh() if fit is not None: resMax = ( lambda: fit.ship.getModifiedItemAttr("cpuOutput"), lambda: fit.ship.getModifiedItemAttr("powerOutput"), lambda: fit.ship.getModifiedItemAttr("droneCapacity"), lambda: fit.ship.getModifiedItemAttr("fighterCapacity"), lambda: fit.ship.getModifiedItemAttr("droneBandwidth"), lambda: fit.ship.getModifiedItemAttr("capacity"), ) else: resMax = None i = 0 for resourceType in ("cpu", "pg", "droneBay", "fighterBay", "droneBandwidth", "cargoBay"): if fit is not None: capitalizedType = resourceType[0].capitalize() + resourceType[1:] gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) resUsed = getattr(fit, "%sUsed" % resourceType) gauge.SetValueRange(resUsed or 0, resMax[i]() or 0) i += 1 else: capitalizedType = resourceType[0].capitalize() + resourceType[1:] gauge = getattr(self, "gauge%s%s" % (panel, capitalizedType)) gauge.SetValueRange(0, 0) i += 1 self.panel.Layout() self.headerPanel.Layout() ResourcesViewFull.register() ================================================ FILE: gui/builtinStatsViews/targetingMiscViewMinimal.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import OrderedDict # noinspection PyPackageRequirements import wx from gui.statsView import StatsView from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation class TargetingMiscViewMinimal(StatsView): name = "targetingMiscViewMinimal" def __init__(self, parent): StatsView.__init__(self) self.parent = parent self._cachedValues = [] def getHeaderText(self, fit): return _t("Targeting && Misc") def getTextExtentW(self, text): width, height = self.parent.GetTextExtent(text) return width def populatePanel(self, contentPanel, headerPanel): contentSizer = contentPanel.GetSizer() self.panel = contentPanel self.headerPanel = headerPanel gridTargetingMisc = wx.FlexGridSizer(1, 3, 0, 0) contentSizer.Add(gridTargetingMisc, 0, wx.EXPAND | wx.ALL, 0) gridTargetingMisc.AddGrowableCol(0) gridTargetingMisc.AddGrowableCol(2) # Targeting gridTargeting = wx.FlexGridSizer(5, 2, 0, 0) gridTargeting.AddGrowableCol(1) gridTargetingMisc.Add(gridTargeting, 0, wx.ALIGN_LEFT | wx.ALL, 5) labels = ((_t("Targets"), "Targets", ""), (_t("Range"), "Range", "km"), (_t("Scan res."), "ScanRes", "mm"), (_t("Sensor str."), "SensorStr", ""), (_t("Drone range"), "CtrlRange", "km")) for header, labelShort, unit in labels: gridTargeting.Add(wx.StaticText(contentPanel, wx.ID_ANY, "%s: " % header), 0, wx.ALIGN_LEFT) box = wx.BoxSizer(wx.HORIZONTAL) gridTargeting.Add(box, 0, wx.ALIGN_LEFT) lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0 %s" % unit) setattr(self, "label%s" % labelShort, lbl) box.Add(lbl, 0, wx.ALIGN_LEFT) self._cachedValues.append({"main": 0}) # Misc gridTargetingMisc.Add(wx.StaticLine(contentPanel, wx.ID_ANY, style=wx.VERTICAL), 0, wx.EXPAND, 3) gridMisc = wx.FlexGridSizer(5, 2, 0, 0) gridMisc.AddGrowableCol(1) gridTargetingMisc.Add(gridMisc, 0, wx.ALIGN_LEFT | wx.ALL, 5) labels = ((_t("Speed"), "Speed", "m/s"), (_t("Align time"), "AlignTime", "s"), (_t("Signature"), "SigRadius", "m"), (_t("Warp Speed"), "WarpSpeed", "AU/s"), (_t("Cargo"), "Cargo", "m\u00B3")) for header, labelShort, unit in labels: gridMisc.Add(wx.StaticText(contentPanel, wx.ID_ANY, "%s: " % header), 0, wx.ALIGN_LEFT) box = wx.BoxSizer(wx.HORIZONTAL) gridMisc.Add(box, 0, wx.ALIGN_LEFT) lbl = wx.StaticText(contentPanel, wx.ID_ANY, "0 %s" % unit) setattr(self, "labelFull%s" % labelShort, lbl) box.Add(lbl, 0, wx.ALIGN_LEFT) self._cachedValues.append({"main": 0}) def refreshPanel(self, fit): # If we did anything interesting, we'd update our labels to reflect the new fit's stats here sensorValues = { "main": lambda: fit.scanStrength, "jamChance": lambda: fit.jamChance } cargoNamesOrder = OrderedDict(( ("fleetHangarCapacity", _t("Fleet hangar")), ("shipMaintenanceBayCapacity", _t("Maintenance bay")), ("specialColonyResourcesHoldCapacity", _t("Infrastructure hold")), ("specialAmmoHoldCapacity", _t("Ammo hold")), ("specialFuelBayCapacity", _t("Fuel bay")), ("specialShipHoldCapacity", _t("Ship hold")), ("specialSmallShipHoldCapacity", _t("Small ship hold")), ("specialMediumShipHoldCapacity", _t("Medium ship hold")), ("specialLargeShipHoldCapacity", _t("Large ship hold")), ("specialIndustrialShipHoldCapacity", _t("Industrial ship hold")), ("generalMiningHoldCapacity", _t("Mining hold")), ("specialIceHoldCapacity", _t("Ice hold")), ("specialGasHoldCapacity", _t("Gas hold")), ("specialMineralHoldCapacity", _t("Mineral hold")), ("specialMaterialBayCapacity", _t("Material bay")), ("specialSalvageHoldCapacity", _t("Salvage hold")), ("specialCommandCenterHoldCapacity", _t("Command center hold")), ("specialPlanetaryCommoditiesHoldCapacity", _t("Planetary goods hold")), ("specialQuafeHoldCapacity", _t("Quafe hold")), ("specialMobileDepotHoldCapacity", _t("Mobile depot hold")), ("specialExpeditionHoldCapacity", _t("Expedition hold")), )) cargoValues = { "main": lambda: fit.ship.getModifiedItemAttr("capacity"), "fleetHangarCapacity": lambda: fit.ship.getModifiedItemAttr("fleetHangarCapacity"), "specialColonyResourcesHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialColonyResourcesHoldCapacity"), "shipMaintenanceBayCapacity": lambda: fit.ship.getModifiedItemAttr("shipMaintenanceBayCapacity"), "specialAmmoHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialAmmoHoldCapacity"), "specialFuelBayCapacity": lambda: fit.ship.getModifiedItemAttr("specialFuelBayCapacity"), "specialShipHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialShipHoldCapacity"), "specialSmallShipHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialSmallShipHoldCapacity"), "specialMediumShipHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialMediumShipHoldCapacity"), "specialLargeShipHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialLargeShipHoldCapacity"), "specialIndustrialShipHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialIndustrialShipHoldCapacity"), "generalMiningHoldCapacity": lambda: fit.ship.getModifiedItemAttr("generalMiningHoldCapacity"), "specialIceHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialIceHoldCapacity"), "specialGasHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialGasHoldCapacity"), "specialMineralHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialMineralHoldCapacity"), "specialMaterialBayCapacity": lambda: fit.ship.getModifiedItemAttr("specialMaterialBayCapacity"), "specialSalvageHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialSalvageHoldCapacity"), "specialCommandCenterHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialCommandCenterHoldCapacity"), "specialPlanetaryCommoditiesHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialPlanetaryCommoditiesHoldCapacity"), "specialQuafeHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialQuafeHoldCapacity"), "specialMobileDepotHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialMobileDepotHoldCapacity"), "specialExpeditionHoldCapacity": lambda: fit.ship.getModifiedItemAttr("specialExpeditionHoldCapacity"), } stats = (("labelTargets", {"main": lambda: fit.maxTargets}, 3, 0, 0, ""), ("labelRange", {"main": lambda: fit.maxTargetRange / 1000}, 3, 0, 0, "km"), ("labelScanRes", {"main": lambda: fit.ship.getModifiedItemAttr("scanResolution")}, 3, 0, 0, "mm"), ("labelSensorStr", sensorValues, 3, 0, 0, ""), ("labelCtrlRange", {"main": lambda: fit.extraAttributes["droneControlRange"] / 1000}, 3, 0, 0, "km"), ("labelFullSpeed", {"main": lambda: fit.maxSpeed}, 3, 0, 0, "m/s"), ("labelFullAlignTime", {"main": lambda: fit.alignTime}, 3, 0, 0, "s"), ("labelFullSigRadius", {"main": lambda: fit.ship.getModifiedItemAttr("signatureRadius")}, 3, 0, 9, ""), ("labelFullWarpSpeed", {"main": lambda: fit.warpSpeed}, 3, 0, 0, "AU/s"), ("labelFullCargo", cargoValues, 4, 0, 9, "m\u00B3")) counter = 0 RADII = [(_t("Pod"), 25), (_t("Interceptor"), 33), (_t("Frigate"), 38), (_t("Destroyer"), 83), (_t("Cruiser"), 130), (_t("Battlecruiser"), 265), (_t("Battleship"), 420), (_t("Carrier"), 3000)] for labelName, valueDict, prec, lowest, highest, unit in stats: label = getattr(self, labelName) newValues = {} for valueAlias, value in list(valueDict.items()): value = value() if fit is not None else 0 value = value if value is not None else 0 newValues[valueAlias] = value if self._cachedValues[counter] != newValues: mainValue = newValues["main"] otherValues = dict((k, newValues[k]) for k in [k for k in newValues if k != "main"]) if labelName == "labelFullCargo": # Get sum of all cargoholds except for maintenance bay additionalCargo = sum(otherValues.values()) if additionalCargo > 0: label.SetLabel("%s+%s %s" % (formatAmount(mainValue, prec, lowest, highest), formatAmount(additionalCargo, prec, lowest, highest), unit)) else: label.SetLabel("%s %s" % (formatAmount(mainValue, prec, lowest, highest), unit)) elif labelName == "labelSensorStr": ecmChance = otherValues["jamChance"] ecmChance = round(ecmChance, 1) if ecmChance: label.SetLabel("{} ({}%)".format( formatAmount(mainValue, prec, lowest, highest), formatAmount(ecmChance, 3, 0, 0))) else: label.SetLabel("{}".format(formatAmount(mainValue, prec, lowest, highest))) else: label.SetLabel("%s %s" % (formatAmount(mainValue, prec, lowest, highest), unit)) # Tooltip stuff if fit: if labelName == "labelScanRes": lockTime = "%s\n" % _t("Lock Times").center(30) for size, radius in RADII: left = "%.1fs" % fit.calculateLockTime(radius) right = "%s [%d]" % (size, radius) lockTime += "%5s\t%s\n" % (left, right) label.SetToolTip(wx.ToolTip(lockTime)) elif labelName == "labelFullWarpSpeed": maxWarpDistance = _t("Max Warp Distance: %.1f AU") % fit.maxWarpDistance if fit.ship.getModifiedItemAttr("warpScrambleStatus"): warpScrambleStatus = _t("Warp Core Strength: %.1f") % (fit.ship.getModifiedItemAttr("warpScrambleStatus") * -1) else: warpScrambleStatus = _t("Warp Core Strength: %.1f") % 0 label.SetToolTip(wx.ToolTip("%s\n%s" % (maxWarpDistance, warpScrambleStatus))) elif labelName == "labelSensorStr": ecmChance = otherValues["jamChance"] ecmChance = round(ecmChance, 1) if ecmChance > 0: label.SetToolTip(wx.ToolTip(_t("Type: {0}\n").format(_t(fit.scanType)) + # xgettext:no-python-format,python-brace-format _t("{}% chance to be jammed").format(formatAmount(ecmChance, 3, 0, 0)))) else: label.SetToolTip(wx.ToolTip(_t("Type: {}").format(_t(fit.scanType)))) elif labelName == "labelFullAlignTime": alignTime = _t("Align:\t%.3fs") % mainValue mass = _t('Mass:\t{:,.0f}kg').format(fit.ship.getModifiedItemAttr("mass")) agility = _t("Agility:\t%.3fx") % (fit.ship.getModifiedItemAttr("agility") or 0) label.SetToolTip(wx.ToolTip("%s\n%s\n%s" % (alignTime, mass, agility))) elif labelName == "labelFullCargo": tipLines = [_t("Cargohold: ") + "{:,.2f}m\u00B3 / {:,.2f}m\u00B3".format(fit.cargoBayUsed, newValues["main"])] for attrName, tipAlias in list(cargoNamesOrder.items()): if newValues[attrName] > 0: tipLines.append("{}: {:,.2f}m\u00B3".format(tipAlias, newValues[attrName])) label.SetToolTip(wx.ToolTip("\n".join(tipLines))) else: label.SetToolTip(wx.ToolTip("%.1f" % mainValue)) else: label.SetToolTip(wx.ToolTip("")) self._cachedValues[counter] = newValues elif labelName == "labelFullWarpSpeed": if fit: maxWarpDistance = _t("Max Warp Distance: %.1f AU") % fit.maxWarpDistance if fit.ship.getModifiedItemAttr("warpScrambleStatus"): warpScrambleStatus = _t("Warp Core Strength: %.1f") % (fit.ship.getModifiedItemAttr("warpScrambleStatus") * -1) else: warpScrambleStatus = _t("Warp Core Strength: %.1f") % 0 label.SetToolTip(wx.ToolTip("%s\n%s" % (maxWarpDistance, warpScrambleStatus))) else: label.SetToolTip(wx.ToolTip("")) elif labelName == "labelFullCargo": if fit: cachedCargo = self._cachedValues[counter] # if you add stuff to cargo, the capacity doesn't change and thus it is still cached # This assures us that we force refresh of cargo tooltip tipLines = [_t("Cargohold: ") + "{:,.2f}m\u00B3 / {:,.2f}m\u00B3".format(fit.cargoBayUsed, cachedCargo["main"])] for attrName, tipAlias in list(cargoNamesOrder.items()): if cachedCargo[attrName] > 0: tipLines.append("{}: {:,.2f}m\u00B3".format(tipAlias, cachedCargo[attrName])) label.SetToolTip(wx.ToolTip("\n".join(tipLines))) else: label.SetToolTip(wx.ToolTip("")) # forces update of probe size, since this stat is used by both sig radius and sensor str if labelName == "labelFullSigRadius": if fit: label.SetToolTip(wx.ToolTip(_t("Probe Size: %.3f") % (fit.probeSize or 0))) else: label.SetToolTip(wx.ToolTip("")) counter += 1 self.panel.Layout() self.headerPanel.Layout() TargetingMiscViewMinimal.register() ================================================ FILE: gui/builtinViewColumns/__init__.py ================================================ ================================================ FILE: gui/builtinViewColumns/abilities.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.fighter import Fighter from gui.viewColumn import ViewColumn import gui.mainFrame _t = wx.GetTranslation class Abilities(ViewColumn): name = "Fighter Abilities" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.columnText = _t("Active Abilities") self.mask = wx.LIST_MASK_TEXT def getText(self, stuff): if isinstance(stuff, Fighter): active = [x.name for x in stuff.abilities if x.active] if len(active) == 0: return "None" return ", ".join(active) Abilities.register() ================================================ FILE: gui/builtinViewColumns/ammo.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.fighter import Fighter from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader class Ammo(ViewColumn): name = "Ammo" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mask = wx.LIST_MASK_IMAGE self.imageId = fittingView.imageList.GetImageIndex("damagePattern_small", "gui") self.bitmap = BitmapLoader.getBitmap("damagePattern_small", "gui") def getText(self, stuff): if isinstance(stuff, Fighter): # this is an experiment, not sure I like it. But it saves us from duplicating code. col = self.columns['Fighter Abilities'](self.fittingView, {}) text = col.getText(stuff) del col return text if getattr(stuff, "charge", None) is not None: charges = stuff.numCharges if charges > 0: cycles = stuff.numShots if cycles != 0 and charges != cycles: return "%s (%d, %d cycles)" % (stuff.charge.name, charges, cycles) else: return "%s (%d)" % (stuff.charge.name, charges) else: return stuff.charge.name return "" def getImageId(self, mod): return -1 Ammo.register() ================================================ FILE: gui/builtinViewColumns/ammoIcon.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from gui.viewColumn import ViewColumn # noinspection PyPackageRequirements import wx from eos.saveddata.module import Module class AmmoIcon(ViewColumn): name = "Ammo Icon" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.size = 24 self.maxsize = self.size self.mask = wx.LIST_MASK_IMAGE self.columnText = "" def getText(self, mod): return "" def getImageId(self, stuff): if not isinstance(stuff, Module): return -1 if stuff.charge is None: return -1 else: iconFile = stuff.charge.iconID if stuff.charge.iconID else "" if iconFile: return self.fittingView.imageList.GetImageIndex(iconFile, "icons") else: return -1 def getToolTip(self, mod): if isinstance(mod, Module) and mod.charge is not None: return mod.charge.name AmmoIcon.register() ================================================ FILE: gui/builtinViewColumns/attributeDisplay.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from service.attribute import Attribute from service.market import Market class AttributeDisplay(ViewColumn): name = "attr" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) sAttr = Attribute.getInstance() info = sAttr.getAttributeInfo(params["attribute"]) self.info = info if params["showIcon"]: if info.name == "power": iconFile = "pg_small" iconType = "gui" else: iconFile = info.iconID iconType = "icons" if iconFile: self.imageId = fittingView.imageList.GetImageIndex(iconFile, iconType) self.bitmap = BitmapLoader.getBitmap(iconFile, iconType) else: self.imageId = -1 self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name self.mask |= wx.LIST_MASK_IMAGE if params["direct"]: self.direct = True self.view = fittingView originalRefresh = fittingView.refresh sMkt = Market.getInstance() def refresh(stuff): # Hack into our master view and add a callback for ourselves to know when to query self.directInfo = sMkt.directAttrRequest(stuff, info) if stuff else None originalRefresh(stuff) fittingView.refresh = refresh def getText(self, mod): if hasattr(mod, "item"): attr = mod.getModifiedItemAttr(self.info.name, None) else: if self.direct: info = self.directInfo attr = info.get(mod.ID, "") if info else "" else: attr = mod.getAttribute(self.info.name) if not attr: return "" if self.info.name == "volume": if getattr(mod, "amount", 1) != 1: attr = "{} m\u00B3 ({} m\u00B3)".format( formatAmount(attr, 3, 0, 6), formatAmount(attr * mod.amount, 3, 0, 6)) else: attr = "{} m\u00B3".format(formatAmount(attr, 3, 0, 6)) if isinstance(attr, (float, int)): attr = (formatAmount(attr, 3, 0, 3)) return attr def getImageId(self, mod): return -1 def getToolTip(self, stuff): if self.info.name == "cpu": return "CPU" else: return self.info.name.title() @staticmethod def getParameters(): return (("attribute", str, None), ("displayName", bool, False), ("showIcon", bool, True), ("direct", bool, False)) AttributeDisplay.register() ================================================ FILE: gui/builtinViewColumns/attributeDisplayGraph.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from abc import ABCMeta, abstractmethod # noinspection PyPackageRequirements import wx import eos.config from eos.saveddata.fit import Fit from eos.saveddata.targetProfile import TargetProfile from eos.utils.spoolSupport import SpoolOptions, SpoolType from graphs.wrapper import BaseWrapper from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn class GraphColumn(ViewColumn, metaclass=ABCMeta): proportionWidth = 2 stickPrefixToValue = False def __init__(self, fittingView, iconID, formatSpec=(3, 0, 3)): ViewColumn.__init__(self, fittingView) self.imageId = fittingView.imageList.GetImageIndex(iconID, 'icons') self.bitmap = BitmapLoader.getBitmap(iconID, 'icons') self.mask = wx.LIST_MASK_TEXT self.formatSpec = formatSpec @abstractmethod def _getValue(self, fit): raise NotImplementedError def getText(self, stuff): if isinstance(stuff, BaseWrapper): stuff = stuff.item if isinstance(stuff, (Fit, TargetProfile)): val, unit = self._getValue(stuff) if val is None: return '' # Stick to value - 25k GJ if self.stickPrefixToValue: return '{} {}'.format(formatAmount(val, *self.formatSpec), unit) # Stick to unit - 25 km else: return formatAmount(val, *self.formatSpec, unitName=unit) return '' @abstractmethod def _getFitTooltip(self): raise NotImplementedError def getToolTip(self, stuff): if isinstance(stuff, BaseWrapper): stuff = stuff.item if isinstance(stuff, (Fit, TargetProfile)): return self._getFitTooltip() return '' class DpsColumn(GraphColumn): name = 'Dps' def __init__(self, fittingView, params): super().__init__(fittingView, 1432, (3, 0, 0)) def _getValue(self, fit): defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] return fit.getTotalDps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)).total, None def _getFitTooltip(self): return 'Declared DPS' DpsColumn.register() class VolleyColumn(GraphColumn): name = 'Volley' def __init__(self, fittingView, params): super().__init__(fittingView, 1397, (3, 0, 0)) def _getValue(self, fit): defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] return fit.getTotalVolley(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)).total, None def _getFitTooltip(self): return 'Declared volley' VolleyColumn.register() class SpeedColumn(GraphColumn): name = 'Speed' def __init__(self, fittingView, params): super().__init__(fittingView, 1389) def _getValue(self, stuff): if isinstance(stuff, Fit): speed = stuff.ship.getModifiedItemAttr('maxVelocity') elif isinstance(stuff, TargetProfile): speed = stuff.maxVelocity else: speed = 0 return speed, 'm/s' def _getFitTooltip(self): return 'Maximum speed' SpeedColumn.register() class AgilityColumn(GraphColumn): name = 'Agility' def __init__(self, fittingView, params): super().__init__(fittingView, 1401, (3, 0, 0)) def _getValue(self, fit): return fit.alignTime, None def _getFitTooltip(self): return 'Agility factor' AgilityColumn.register() class RadiusColumn(GraphColumn): name = 'Radius' def __init__(self, fittingView, params): super().__init__(fittingView, 3266) def _getValue(self, stuff): if isinstance(stuff, Fit): radius = stuff.ship.getModifiedItemAttr('radius') elif isinstance(stuff, TargetProfile): radius = stuff.radius else: radius = 0 return radius, 'm' def _getFitTooltip(self): return 'Radius' RadiusColumn.register() class SignatureRadiusColumn(GraphColumn): name = 'SigRadius' def __init__(self, fittingView, params): super().__init__(fittingView, 1390) def _getValue(self, stuff): if isinstance(stuff, Fit): sigRadius = stuff.ship.getModifiedItemAttr('signatureRadius') elif isinstance(stuff, TargetProfile): sigRadius = stuff.signatureRadius else: sigRadius = 0 return sigRadius, 'm' def _getFitTooltip(self): return 'Signature radius' SignatureRadiusColumn.register() class FullHpColumn(GraphColumn): name = 'FullHP' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 68) def _getValue(self, stuff): if isinstance(stuff, Fit): full_hp = stuff.hp.get('shield', 0) + stuff.hp.get('armor', 0) + stuff.hp.get('hull', 0) elif isinstance(stuff, TargetProfile): full_hp = stuff.hp else: full_hp = 0 return full_hp, 'hp' def _getFitTooltip(self): return 'Total raw HP' FullHpColumn.register() class ShieldAmountColumn(GraphColumn): name = 'ShieldAmount' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 1384) def _getValue(self, fit): return fit.ship.getModifiedItemAttr('shieldCapacity'), 'HP' def _getFitTooltip(self): return 'Maximum shield amount' ShieldAmountColumn.register() class ShieldTimeColumn(GraphColumn): name = 'ShieldTime' def __init__(self, fittingView, params): super().__init__(fittingView, 1392, (3, 0, 0)) def _getValue(self, fit): return fit.ship.getModifiedItemAttr('shieldRechargeRate') / 1000, 's' def _getFitTooltip(self): return 'Time to regenerate shield from 0% to 98.7%' ShieldTimeColumn.register() class CapAmountColumn(GraphColumn): name = 'CapAmount' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 1668) def _getValue(self, fit): return fit.ship.getModifiedItemAttr('capacitorCapacity'), 'GJ' def _getFitTooltip(self): return 'Maximum capacitor amount' CapAmountColumn.register() class CapTimeColumn(GraphColumn): name = 'CapTime' def __init__(self, fittingView, params): super().__init__(fittingView, 1392, (3, 0, 0)) def _getValue(self, fit): return fit.ship.getModifiedItemAttr('rechargeRate') / 1000, 's' def _getFitTooltip(self): return 'Time to regenerate capacitor from 0% to 98.7%' CapTimeColumn.register() class WarpSpeedColumn(GraphColumn): name = 'WarpSpeed' def __init__(self, fittingView, params): super().__init__(fittingView, 1389, (3, 0, 0)) def _getValue(self, fit): return fit.warpSpeed, 'AU/s' def _getFitTooltip(self): return 'Warp speed' WarpSpeedColumn.register() class WarpDistanceColumn(GraphColumn): name = 'WarpDistance' def __init__(self, fittingView, params): super().__init__(fittingView, 1391, (3, 0, 0)) def _getValue(self, fit): return fit.maxWarpDistance, 'AU' def _getFitTooltip(self): return 'Maximum warp distance' WarpDistanceColumn.register() class ScanResolutionColumn(GraphColumn): name = 'ScanResolution' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 74) def _getValue(self, fit): return fit.ship.getModifiedItemAttr('scanResolution'), 'mm' def _getFitTooltip(self): return 'Scan Resolution' ScanResolutionColumn.register() class ShieldRRColumn(GraphColumn): name = 'ShieldRR' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 1384, (3, 0, 3)) def _getValue(self, fit): defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] return fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)).shield, 'HP/s' def _getFitTooltip(self): return 'Declared shield repair speed' ShieldRRColumn.register() class ArmorRRColumn(GraphColumn): name = 'ArmorRR' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 80, (3, 0, 3)) def _getValue(self, fit): defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] return fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)).armor, 'HP/s' def _getFitTooltip(self): return 'Declared armor repair speed' ArmorRRColumn.register() class HullRRColumn(GraphColumn): name = 'HullRR' stickPrefixToValue = True def __init__(self, fittingView, params): super().__init__(fittingView, 67, (3, 0, 3)) def _getValue(self, fit): defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] return fit.getRemoteReps(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False)).hull, 'HP/s' def _getFitTooltip(self): return 'Declared hull repair speed' HullRRColumn.register() ================================================ FILE: gui/builtinViewColumns/baseIcon.py ================================================ # noinspection PyPackageRequirements import wx from eos.const import FittingSlot from eos.saveddata.drone import Drone from eos.saveddata.fit import Fit from eos.saveddata.implant import Implant from eos.saveddata.module import Module, Rack from eos.saveddata.targetProfile import TargetProfile from graphs.wrapper import BaseWrapper from gui.viewColumn import ViewColumn class BaseIcon(ViewColumn): name = "Base Icon" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.size = 24 self.maxsize = self.size self.mask = wx.LIST_MASK_IMAGE self.columnText = "" self.shipImage = fittingView.imageList.GetImageIndex("ship_small", "gui") def getImageId(self, stuff): if isinstance(stuff, BaseWrapper): stuff = stuff.item if isinstance(stuff, Drone): return -1 elif isinstance(stuff, Fit): return self.shipImage elif isinstance(stuff, Rack): return -1 elif isinstance(stuff, Implant): if stuff.character: # if it has a character as it's parent return self.fittingView.imageList.GetImageIndex("character_small", "gui") else: return self.shipImage elif isinstance(stuff, Module): if stuff.isEmpty: return self.fittingView.imageList.GetImageIndex("slot_%s_small" % FittingSlot(stuff.slot).name.lower(), "gui") else: return self.loadIconFile(stuff.item.iconID or "") elif isinstance(stuff, TargetProfile): return self.fittingView.imageList.GetImageIndex("target_small", "gui") item = getattr(stuff, "item", stuff) return self.loadIconFile(item.iconID) def loadIconFile(self, iconFile): if iconFile: return self.fittingView.imageList.GetImageIndex(iconFile, "icons") else: return -1 BaseIcon.register() ================================================ FILE: gui/builtinViewColumns/baseName.py ================================================ # coding: utf-8 # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from logbook import Logger import gui.mainFrame from eos.const import FittingSlot from eos.saveddata.cargo import Cargo from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit, FitLite from eos.saveddata.implant import Implant from eos.saveddata.module import Module, Rack from eos.saveddata.targetProfile import TargetProfile from graphs.wrapper import BaseWrapper from gui.builtinContextMenus.envEffectAdd import AddEnvironmentEffect from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn from service.fit import Fit as FitSvc from service.market import Market pyfalog = Logger(__name__) _t = wx.GetTranslation class BaseName(ViewColumn): name = "Base Name" proportionWidth = 7 def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.columnText = _t("Name") self.mask = wx.LIST_MASK_TEXT self.projectedView = isinstance(fittingView, gui.builtinAdditionPanes.projectedView.ProjectedView) self.rackTranslations = { FittingSlot.HIGH: _t('High'), FittingSlot.MED: _t('Med'), FittingSlot.LOW: _t('Low'), FittingSlot.SUBSYSTEM: _t('Subsystem'), FittingSlot.RIG: _t('Rig'), FittingSlot.SERVICE: _t('Service') } def getText(self, stuff): if isinstance(stuff, BaseWrapper): stuff = stuff.item if isinstance(stuff, Drone): if FitSvc.getInstance().serviceFittingOptions["expandedMutantNames"]: return "%dx %s" % (stuff.amount, stuff.fullName) else: return "%dx %s" % (stuff.amount, stuff.item.name) elif isinstance(stuff, Fighter): return "%d/%d %s" % \ (stuff.amount, stuff.getModifiedItemAttr("fighterSquadronMaxSize"), stuff.item.name) elif isinstance(stuff, Cargo): if stuff.item.group.name in ("Cargo Container", "Secure Cargo Container", "Audit Log Secure Container", "Freight Container"): capacity = stuff.item.getAttribute('capacity') if capacity: return "{:d}x {} ({} m\u00B3)".format(stuff.amount, stuff.item.name, formatAmount(capacity, 3, 0, 6)) return "{:d}x {}".format(stuff.amount, stuff.item.name) elif isinstance(stuff, Fit): if self.projectedView: # we need a little more information for the projected view fitID = self.mainFrame.getActiveFit() info = stuff.getProjectionInfo(fitID) if info: return "%dx %s (%s)" % (stuff.getProjectionInfo(fitID).amount, stuff.name, stuff.ship.item.name) pyfalog.warning("Projected View trying to display things that aren't there. stuff: {}, info: {}", repr(stuff), info) return "" else: return "%s (%s)" % (stuff.name, stuff.ship.item.name) elif isinstance(stuff, FitLite): return "{} ({})".format(stuff.name, stuff.shipName) elif isinstance(stuff, Rack): if FitSvc.getInstance().serviceFittingOptions["rackLabels"]: if stuff.slot == FittingSlot.MODE: return '─ {} ─'.format(_t('Tactical Mode')) else: return '─ {} ─'.format(_t('{} {} Slot', '{} {} Slots', stuff.num).format(stuff.num, self.rackTranslations.get(stuff.slot, FittingSlot(stuff.slot).name.capitalize()))) else: return "" elif isinstance(stuff, Module): if self.projectedView: # check for projected abyssal name name_check = stuff.item.customName[0:-2] type = AddEnvironmentEffect.abyssal_mapping.get(name_check, None) if type: sMkt = Market.getInstance() type = sMkt.getItem(type) return "{} {}".format(type.name, stuff.item.customName[-1:]) if stuff.isEmpty: return "%s Slot" % FittingSlot(stuff.slot).name.capitalize() else: if FitSvc.getInstance().serviceFittingOptions["expandedMutantNames"]: return stuff.fullName else: return stuff.item.customName elif isinstance(stuff, Implant): return stuff.item.name elif isinstance(stuff, TargetProfile): return stuff.shortName else: item = getattr(stuff, "item", stuff) if FitSvc.getInstance().serviceFittingOptions["showMarketShortcuts"]: marketShortcut = getattr(item, "marketShortcut", None) if marketShortcut: # use unicode subscript to display shortcut value shortcut = chr(marketShortcut + 8320) + " " del item.marketShortcut return shortcut + item.name return item.name BaseName.register() ================================================ FILE: gui/builtinViewColumns/capacitorUse.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.mode import Mode from eos.utils.float import floatUnerr from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn from service.attribute import Attribute from service.fit import Fit regenGroups = ( 'Capacitor Battery', 'Structure Capacitor Battery', 'Capacitor Power Relay', 'Structure Capacitor Power Relay', 'Capacitor Recharger', 'Power Diagnostic System', 'Capacitor Flux Coil', 'Rig Core', 'Shield Power Relay') class CapacitorUse(ViewColumn): name = 'Capacitor Usage' def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mask = wx.LIST_MASK_IMAGE Attribute.getInstance().getAttributeInfo('capacitorNeed') self.imageId = fittingView.imageList.GetImageIndex('capacitorRecharge_small', 'gui') self.bitmap = BitmapLoader.getBitmap('capacitorRecharge_small', 'gui') def getText(self, mod): if isinstance(mod, Mode): return '' fit = Fit.getInstance().getFit(self.fittingView.getActiveFit()) if fit is None: return '' capUse = mod.capUse # Do not show cap diff numbers if mod.item is not None and mod.item.group.name in regenGroups: capRegenDiff = fit.getCapRegenGainFromMod(mod) else: capRegenDiff = 0 capDiff = floatUnerr(capRegenDiff - capUse) if capDiff: return formatAmount(capDiff, 3, 0, 3, forceSign=True) else: return '' def getImageId(self, mod): return -1 def getToolTip(self, mod): if isinstance(mod, Mode): return '' if mod.item is not None and mod.item.group.name in regenGroups: return 'Effect on peak capacitor regeneration' if mod.capUse: return 'Capacitor usage' return '' CapacitorUse.register() ================================================ FILE: gui/builtinViewColumns/dampScanRes.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.fit import Fit from graphs.wrapper import BaseWrapper from gui.bitmap_loader import BitmapLoader from eos.utils.float import floatUnerr from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn class DampScanResColumn(ViewColumn): name = 'Damp ScanRes' def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.imageId = fittingView.imageList.GetImageIndex(74, 'icons') self.bitmap = BitmapLoader.getBitmap(74, 'icons') self.mask = wx.LIST_MASK_IMAGE def getText(self, stuff): if isinstance(stuff, BaseWrapper): stuff = stuff.item mult = 1 if isinstance(stuff, Fit): mult = floatUnerr(stuff.getDampMultScanRes()) if mult == 1: text = '' else: text = '{}%'.format(formatAmount((mult - 1) * 100, 3, 0, 0, forceSign=True)) return text def getImageId(self, stuff): return -1 def getToolTip(self, stuff): return 'Scan resolution dampening' DampScanResColumn.register() ================================================ FILE: gui/builtinViewColumns/droneEhp.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.mainFrame from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from service.attribute import Attribute from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation class DroneEhpColumn(ViewColumn): name = "Drone HP" def __init__(self, fittingView, params=None): self.mainFrame = gui.mainFrame.MainFrame.getInstance() if params is None: params = {"showIcon": True, "displayName": False} ViewColumn.__init__(self, fittingView) sAttr = Attribute.getInstance() info = sAttr.getAttributeInfo("shieldCapacity") self.info = info if params["showIcon"]: iconFile = info.iconID if iconFile: self.imageId = fittingView.imageList.GetImageIndex(iconFile, "icons") self.bitmap = BitmapLoader.getBitmap(iconFile, "icons") else: self.imageId = -1 self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name self.mask |= wx.LIST_MASK_TEXT def getText(self, stuff): if not isinstance(stuff, (Drone, Fighter)): return "" if self.mainFrame.statsPane.nameViewMap["resistancesViewFull"].showEffective: ehp = sum(stuff.ehp.values()) else: ehp = sum(stuff.hp.values()) return formatAmount(ehp, 3, 0, 9) def getImageId(self, mod): return -1 def getParameters(self): return ("displayName", bool, False), ("showIcon", bool, True) def getToolTip(self, stuff): if not isinstance(stuff, (Drone, Fighter)): return "" if self.mainFrame.statsPane.nameViewMap["resistancesViewFull"].showEffective: return _t("Effective HP") else: return _t("HP") DroneEhpColumn.register() ================================================ FILE: gui/builtinViewColumns/droneRegen.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.mainFrame from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount _t = wx.GetTranslation class DroneRegenColumn(ViewColumn): name = "Drone Regen" def __init__(self, fittingView, params=None): self.mainFrame = gui.mainFrame.MainFrame.getInstance() if params is None: params = {"showIcon": True, "displayName": False} ViewColumn.__init__(self, fittingView) if params["showIcon"]: self.imageId = fittingView.imageList.GetImageIndex("shieldPassive_small", "gui") self.bitmap = BitmapLoader.getBitmap("shieldPassive_small", "gui") self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = _("Misc data") self.mask |= wx.LIST_MASK_TEXT def getText(self, stuff): if not isinstance(stuff, (Drone, Fighter)): return "" regen = stuff.calculateShieldRecharge() if ( self.mainFrame.statsPane.nameViewMap["resistancesViewFull"].showEffective and stuff.owner and stuff.owner.damagePattern is not None ): regen = stuff.owner.damagePattern.effectivify(stuff, regen, 'shield') return '{}/s'.format(formatAmount(regen, 3, 0, 9)) def getImageId(self, mod): return -1 def getParameters(self): return ("displayName", bool, False), ("showIcon", bool, True) def getToolTip(self, stuff): if not isinstance(stuff, (Drone, Fighter)): return "" if self.mainFrame.statsPane.nameViewMap["resistancesViewFull"].showEffective: return _t("Effective Shield Regeneration") else: return _t("Shield Regeneration") DroneRegenColumn.register() ================================================ FILE: gui/builtinViewColumns/graphColor.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from graphs.style import BASE_COLORS from graphs.wrapper import SourceWrapper from gui.viewColumn import ViewColumn class GraphColor(ViewColumn): name = 'Graph Color' def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 24 self.maxsize = self.size self.mask = wx.LIST_MASK_TEXT def getImageId(self, stuff): if isinstance(stuff, SourceWrapper): try: colorData = BASE_COLORS[stuff.colorID] except KeyError: return -1 img = self.fittingView.imageList.GetImageIndex(colorData.iconName, 'gui') return img return -1 def getToolTip(self, stuff): if isinstance(stuff, SourceWrapper): return 'Change line color' return '' GraphColor.register() ================================================ FILE: gui/builtinViewColumns/graphLightness.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from graphs.style import LIGHTNESSES from graphs.wrapper import TargetWrapper from gui.viewColumn import ViewColumn class GraphLightness(ViewColumn): name = 'Graph Lightness' def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 24 self.maxsize = self.size self.mask = wx.LIST_MASK_TEXT def getImageId(self, stuff): if isinstance(stuff, TargetWrapper): try: lightnessData = LIGHTNESSES[stuff.lightnessID] except KeyError: return -1 img = self.fittingView.imageList.GetImageIndex(lightnessData.iconName, 'gui') return img return -1 def getToolTip(self, stuff): if isinstance(stuff, TargetWrapper): return 'Change line brightness' return '' GraphLightness.register() ================================================ FILE: gui/builtinViewColumns/graphLineStyle.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from graphs.style import STYLES from graphs.wrapper import TargetWrapper from gui.viewColumn import ViewColumn class GraphLineStyle(ViewColumn): name = 'Graph Line Style' def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 24 self.maxsize = self.size self.mask = wx.LIST_MASK_TEXT def getImageId(self, stuff): if isinstance(stuff, TargetWrapper): try: styleData = STYLES[stuff.lineStyleID] except KeyError: return -1 img = self.fittingView.imageList.GetImageIndex(styleData.iconName, 'gui') return img return -1 def getToolTip(self, stuff): if isinstance(stuff, TargetWrapper): return 'Change line style' return '' GraphLineStyle.register() ================================================ FILE: gui/builtinViewColumns/heat.py ================================================ # ============================================================================= # 2026 Ansbiget Hild Elarik # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import math from gui.bitmap_loader import BitmapLoader from eos.const import FittingModuleState from eos.saveddata.fit import Fit from eos.saveddata.module import Module from gui.viewColumn import ViewColumn from service.fit import Fit import gui.mainFrame class Thermodynamics(): def __init__(self, fit): self.fit = fit self.hgm = fit.ship.getModifiedItemAttr("heatGenerationMultiplier") self.harm = self.calcHeatAbsorbtionRateModifier() self.slotfactor = self.calcSlotFactor() self.simTime = 120 def getSlotPos(self, mod): # get rack position of mod, 0-7 rack = [] for m in self.fit.modules: if m.slot == mod.slot: rack.insert(0, m) for i, m in enumerate(rack): if m == mod: return i def calcHeatAbsorbtionRateModifier(self): harm = [0,0,0,0] # 0 is a dummy slot, align with mod.slot constants, 1=low, 2=med, 3=hi, 4=rig, ... for mod in self.fit.modules: if(mod.state == FittingModuleState.OVERHEATED): harm[mod.slot] += mod.getModifiedItemAttr("heatAbsorbtionRateModifier") return harm """ HANGAR.ShipInfoThermodynamics.prototype.getHARM = function() { var harm = [0,0,0]; var rack = ["hs", "ms", "ls"]; for(var i = 0; i < rack.length; i++) { for(var j = 1; j <= 8; j++) { // if slot and slot is overheated if(this.shipinfo.ship.slots[rack[i]+j] && this.fitwindow.slots[rack[i]+j].find(" .sloticon").hasClass("heat") ) { harm[i] += this.shipinfo.ship.slots[rack[i]+j].heatAbsorbtionRateModifier; } } } return harm; }; """ def calcSlotFactor(self): slots = self.fit.ship.getModifiedItemAttr("hiSlots") + self.fit.ship.getModifiedItemAttr("medSlots") + self.fit.ship.getModifiedItemAttr("lowSlots") empty = self.fit.getSlotsFree(3) + self.fit.getSlotsFree(2) + self.fit.getSlotsFree(1) # FittingSlot.HIGH doesn"t work here? rigslots = self.fit.getNumSlots(4) return (slots - empty) / (slots + rigslots) """ HANGAR.ShipInfoThermodynamics.prototype.getSlotFactor = function() { var slots = 0; var emptyslots = 0; for(var i = 1; i <= 8; i++) { var hs = this.fitwindow.slots["hs"+i]; var ms = this.fitwindow.slots["ms"+i]; var ls = this.fitwindow.slots["ls"+i]; if(hs.hasClass("highslot") ) { slots++; if(!hs.hasClass("occupied") || hs.hasClass("offline") ) { emptyslots++; } } if(ms.hasClass("midslot") ) { slots++; if(!ms.hasClass("occupied") || ms.hasClass("offline") ) { emptyslots++; } } if(ls.hasClass("lowslot") ) { slots++; if(!ls.hasClass("occupied") || ls.hasClass("offline") ) { emptyslots++; } } } return (slots-emptyslots)/(slots + this.shipinfo.ship.data.rigSlots); }; """ def calcDamageProbability(self, mod, t): # get chance the module is damaged when overheated at time t keys = ["", "heatAttenuationLow", "heatAttenuationMed", "heatAttenuationHi"] att = self.fit.ship.getModifiedItemAttr(keys[mod.slot], 0.25) rackheat = 1 - pow(math.e, (-t * self.hgm * self.harm[mod.slot])) slotpos = self.getSlotPos(mod) probs = [] for m in self.fit.modules: if (m == mod): continue if m.slot == mod.slot: if m.state == FittingModuleState.OVERHEATED: i = self.getSlotPos(m) pos = abs(i - slotpos) # get rack distance to other overheated module probs.append(pow(att, pos) * self.slotfactor * rackheat) p = 1 for i in range(0, len(probs)): p *= (1 - probs[i]) selfprob = self.slotfactor * rackheat res = selfprob if p == 1 else 1 - p * (1 - selfprob) return res """ HANGAR.ShipInfoThermodynamics.prototype.getDamageProb = function(slot, t) { var rack = slot[0] == "h" ? "hs" : slot[0] == "m" ? "ms" : "ls"; var harmNdx = rack === "hs" ? 0 : rack === "ms" ? 1 : 2; var att = rack == "hs" ? this.shipinfo.ship.data.heatAttenuationHi : rack == "ms" ? this.shipinfo.ship.data.heatAttenuationMed : this.shipinfo.ship.data.heatAttenuationLow ? this.shipinfo.ship.data.heatAttenuationLow : 0.25; var slotpos = parseInt( slot.substr(2) ); var rackheat = 1 + -Math.pow(Math.E, (-t * this.hgm * this.harm[harmNdx])); var prob = []; for(var i = 1; i <= 8; i++) { if(rack+i == slot) continue; if(this.shipinfo.ship.slots[ rack+i ] && this.shipinfo.ship.slots[ rack+i ].state === "overload"){ var pos = Math.abs(i - slotpos); prob.push( Math.pow(att, pos)*this.slotfactor*rackheat ); } } var p = 1; for(var i = 0; i < prob.length; i++) { p *= (1-prob[i]); } var selfprob = this.slotfactor * rackheat; if(p === 1) { return selfprob; } else { return 1 - p*(1-selfprob); } }; """ def calcBurnCycles(self, mod): # estimates the number of cycles a module will OH before it burns out speed = mod.getModifiedItemAttr("speed") duration = mod.getModifiedItemAttr("duration") inc = speed / 1000 if speed else duration / 1000 t = inc fp = [] # failure probabilities p = lastp = 0 while(t < self.simTime): p = self.calcDamageProbability(mod, t) fp.append(p) if f"{p:.2f}" == f"{lastp:.2f}": break t += inc lastp = p E = 0 # expected wait to failure n = math.ceil(mod.getModifiedItemAttr("hp") / mod.getModifiedItemAttr("heatDamage")) # fault tolerance a = [1] for i in range(n): a.append(0) for t, fp_t in enumerate(fp): E += (t + 1) * fp_t * a[n - 1] for k in range(n - 1, 0, -1): a[k] = (1 - fp_t) * a[k] + fp_t * a[k - 1] a[0] = (1 - fp_t) * a[0] for k in range(n): E += (t + 1 + (n - k) * (1 / fp[t])) * a[k] return math.floor(E) """ HANGAR.ShipInfoThermodynamics.prototype.calcBurnCycles = function(slot) { var fp = []; var p = 0, lastp = 0; var mod = this.shipinfo.ship.slots[slot]; var inc = mod.speed ? mod.speed/1000 : mod.duration/1000; var t = inc; while(t < this.simTime) { p = this.getDamageProb(slot, t); fp.push(p); if(p.toFixed(2) === lastp.toFixed(2)) break; t += inc; lastp = p; } //http://jsfiddle.net/kkspy/86/ var E = 0; var n = Math.ceil(mod.hp / mod.heatDamage); var a = [1]; for(var i = 1; i < n;i++) { a.push(0); } for(var t = 0; t < fp.length; t++) { E += (t+1)*fp[t]*a[n-1]; for(var k = n-1; k > 0; k--) { a[k] = (1-fp[t])*a[k] + fp[t]*a[k-1]; } a[0] = (1-fp[t])*a[0]; } t--; for(var k = 0; k < n; k++) { E += ( t+1 + (n-k)*(1/fp[t]))*a[k]; } return Math.floor(E); }; """ class Heat(ViewColumn): name = "Heat" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.resizable = False self.size = 54 self.maxsize = self.size * 2 self.imageId = fittingView.imageList.GetImageIndex("state_overheated_small", "gui") self.bitmap = BitmapLoader.getBitmap("state_overheated_small", "gui") self.mask = wx.LIST_MASK_IMAGE def getText(self, mod): if not isinstance(mod, Module) or mod.state != FittingModuleState.OVERHEATED: return "" thermo = Thermodynamics(Fit.getInstance().getFit(self.mainFrame.getActiveFit())) burnCycles = thermo.calcBurnCycles(mod) duration = mod.getModifiedItemAttr("duration") / 1000 speed = mod.getModifiedItemAttr("speed") / 1000 cycleTime = duration or speed t = burnCycles * cycleTime s = t % 60 m = (t / 60) % 60 h = (t / 3600) % 24 out = [f"{int(m):02d}", f"{int(s):02d}"] if int(h) > 0: # hours is rarely relevant, only show if it is out.insert(0, f"{int(h):02d}") return ":".join(out) # display as 00:00:00 to vertically align across slot cols consistently def getToolTip(self, mod): if isinstance(mod, Module) and mod.state == FittingModuleState.OVERHEATED: return "Estimated time til burnout" # TODO localize Heat.register() ================================================ FILE: gui/builtinViewColumns/maxRange.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.mode import Mode from service.attribute import Attribute from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount, roundToPrec class MaxRange(ViewColumn): name = "Max Range" def __init__(self, fittingView, params=None): if params is None: params = {"showIcon": True, "displayName": False} ViewColumn.__init__(self, fittingView) sAttr = Attribute.getInstance() info = sAttr.getAttributeInfo("maxRange") self.info = info if params["showIcon"]: iconFile = info.iconID if iconFile: self.imageId = fittingView.imageList.GetImageIndex(iconFile, "icons") self.bitmap = BitmapLoader.getBitmap(iconFile, "icons") else: self.imageId = -1 self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name self.mask |= wx.LIST_MASK_TEXT def getText(self, stuff): if isinstance(stuff, Mode): return "" maxRange = stuff.maxRange if hasattr(stuff, "maxRange") else stuff.getModifiedItemAttr("maxRange", None) falloff = stuff.falloff if falloff and falloff >= 5: falloff = "+%sm" % formatAmount(falloff, 3, 0, 3) else: falloff = "" if maxRange: return "%sm%s" % (formatAmount(maxRange, 3, 0, 3), falloff) else: return "" + falloff def getImageId(self, mod): return -1 def getParameters(self): return ("displayName", bool, False), ("showIcon", bool, True) def getToolTip(self, mod): lines = [] missileRangeData = mod.missileMaxRangeData if hasattr(mod, "missileMaxRangeData") else None if missileRangeData is not None: lines.append('Missile flight range') lowerRange, higherRange, higherChance = missileRangeData if roundToPrec(higherChance, 3) not in (0, 1): lines.append('{}% chance to fly {}m'.format( formatAmount((1 - higherChance) * 100, prec=3, lowest=0, highest=0), formatAmount(lowerRange, prec=3, lowest=0, highest=3))) lines.append('{}% chance to fly {}m'.format( formatAmount(higherChance * 100, prec=3, lowest=0, highest=0), formatAmount(higherRange, prec=3, lowest=0, highest=3))) else: lines.append("Optimal + Falloff") return '\n'.join(lines) MaxRange.register() ================================================ FILE: gui/builtinViewColumns/misc.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from service.fit import Fit from service.market import Market import gui.mainFrame from gui.viewColumn import ViewColumn from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.utils.listFormatter import formatList from eos.utils.float import floatUnerr from eos.utils.spoolSupport import SpoolType, SpoolOptions import eos.config class Miscellanea(ViewColumn): name = "Miscellanea" def __init__(self, fittingView, params=None): if params is None: params = {"showIcon": True, "displayName": False} ViewColumn.__init__(self, fittingView) if params["showIcon"]: self.imageId = fittingView.imageList.GetImageIndex("column_misc", "gui") self.bitmap = BitmapLoader.getBitmap("column_misc", "gui") self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = _("Misc data") self.mask |= wx.LIST_MASK_TEXT self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.fittingView = fittingView def getText(self, stuff): return self.__getData(stuff)[0] def getToolTip(self, mod): return self.__getData(mod)[1] def getImageId(self, mod): return -1 def getParameters(self): return ("displayName", bool, False), ("showIcon", bool, True) def __getData(self, stuff): item = stuff.item if item is None: return "", None itemGroup = item.group.name itemCategory = item.category.name if itemGroup == "Ship Modifiers": return "", None elif itemGroup == "Booster": stuff.getModifiedItemAttr("boosterDuration") text = "{0} min".format(formatAmount(stuff.getModifiedItemAttr("boosterDuration") / 1000 / 60, 3, 0, 3)) return text, "Booster Duration" elif itemGroup in ("Super Weapon", "Structure Doomsday Weapon"): volleyParams = stuff.getVolleyParameters(ignoreState=True) dmg = sum(dt.total for dt in volleyParams.values()) duration = (max(volleyParams) - min(volleyParams)) / 1000 if dmg <= 0: text = "" tooltip = "" elif duration > 0: text = "{} over {}s".format( formatAmount(dmg, 3, 0, 6), formatAmount((duration), 0, 0, 0)) tooltip = "Raw damage done over time" else: text = "{} dmg".format(formatAmount(dmg, 3, 0, 6)) tooltip = "Raw damage done" return text, tooltip elif itemGroup in ("Energy Weapon", "Hybrid Weapon", "Projectile Weapon", "Fighter Drone"): trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") optimalSig = stuff.getModifiedItemAttr("optimalSigRadius") if not trackingSpeed or not optimalSig: return "", None normalizedTracking = trackingSpeed * 40000 / optimalSig text = "{0}".format(formatAmount(normalizedTracking, 3, 0, 3)) tooltip = "Tracking speed" return text, tooltip elif itemGroup == "Combat Drone": text_parts = [] tooltip_parts = [] trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") optimalSig = stuff.getModifiedItemAttr("optimalSigRadius") if trackingSpeed and optimalSig: normalizedTracking = trackingSpeed * 40000 / optimalSig text_parts.append("{0}".format(formatAmount(normalizedTracking, 3, 0, 3))) tooltip_parts.append("Tracking speed") if 'entityEnergyNeutralizerFalloff' in item.effects: neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount") cycleTime = stuff.getModifiedItemAttr("energyNeutralizerDuration") if neutAmount and cycleTime: capPerSec = float(-neutAmount) * 1000 / cycleTime text_parts.append("{0}/s".format(formatAmount(capPerSec, 3, 0, 3))) tooltip_parts.append("Energy neutralization per second") if 'npcEntityWeaponDisruptor' in item.effects: falloffRangeBonus = stuff.getModifiedItemAttr("falloffBonus") optimalRangeBonus = stuff.getModifiedItemAttr("maxRangeBonus") trackingSpeedBonus = stuff.getModifiedItemAttr("trackingSpeedBonus") if falloffRangeBonus or optimalRangeBonus or trackingSpeedBonus: display = 0 for bonus in (falloffRangeBonus, optimalRangeBonus, trackingSpeedBonus): if abs(bonus) > abs(display): display = bonus if display: ttEntries = [] if display == optimalRangeBonus: ttEntries.append("optimal range") if display == falloffRangeBonus: ttEntries.append("falloff range") if display == trackingSpeedBonus: ttEntries.append("tracking speed") text_parts.append("{0}%".format(formatAmount(display, 3, 0, 3), forceSign=True)) tooltip_parts.append("{0} disruption".format(formatList(ttEntries)).capitalize()) if 'entityECMFalloff' in item.effects: grav = stuff.getModifiedItemAttr("scanGravimetricStrengthBonus") ladar = stuff.getModifiedItemAttr("scanLadarStrengthBonus") radar = stuff.getModifiedItemAttr("scanRadarStrengthBonus") magnet = stuff.getModifiedItemAttr("scanMagnetometricStrengthBonus") if grav is not None and ladar is not None and radar is not None and magnet is not None: display = max(grav, ladar, radar, magnet) if not display: return "", None ttEntries = [] if display == grav: ttEntries.append("gravimetric") if display == ladar: ttEntries.append("ladar") if display == magnet: ttEntries.append("magnetometric") if display == radar: ttEntries.append("radar") plu = "" if len(ttEntries) == 1 else "s" text_parts.append("{0}".format(formatAmount(display, 3, 0, 3))) tooltip_parts.append("{0} strength{1}".format(formatList(ttEntries), plu).capitalize()) if 'remoteSensorDampEntity' in item.effects: lockRangeBonus = stuff.getModifiedItemAttr("maxTargetRangeBonus") scanResBonus = stuff.getModifiedItemAttr("scanResolutionBonus") if lockRangeBonus or scanResBonus: display = 0 for bonus in (lockRangeBonus, scanResBonus): if abs(bonus) > abs(display): display = bonus if display: ttEntries = [] if display == lockRangeBonus: ttEntries.append("lock range") if display == scanResBonus: ttEntries.append("scan resolution") text_parts.append("{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True))) tooltip_parts.append("{0} dampening".format(formatList(ttEntries)).capitalize()) if 'remoteWebifierEntity' in item.effects: speedFactor = stuff.getModifiedItemAttr("speedFactor") if speedFactor: text_parts.append("{0}%".format(formatAmount(speedFactor, 3, 0, 3))) tooltip_parts.append("Speed reduction") if 'remoteTargetPaintEntity' in item.effects: sigRadBonus = stuff.getModifiedItemAttr("signatureRadiusBonus") if sigRadBonus: text_parts.append("{0}%".format(formatAmount(sigRadBonus, 3, 0, 3, forceSign=True))) tooltip_parts.append("Signature radius increase") return " | ".join(text_parts), '\n'.join(tooltip_parts) elif itemGroup == "Precursor Weapon": info = [] trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") if trackingSpeed: text = "{0}".format(formatAmount(trackingSpeed, 3, 0, 3)) tooltip = "tracking speed" info.append((text, tooltip)) defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] spoolTime = stuff.getSpoolData(spoolOptions=SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False))[1] if spoolTime: text = "{0}s".format(formatAmount(spoolTime, 3, 0, 3)) tooltip = "spool up time" info.append((text, tooltip)) if not info: return "", None text = ' | '.join(i[0] for i in info) tooltip = ' and '.join(i[1] for i in info).capitalize() return text, tooltip elif itemGroup == "Vorton Projector": cloudSize = stuff.getModifiedItemAttr("aoeCloudSize") aoeVelocity = stuff.getModifiedItemAttr("aoeVelocity") if not cloudSize or not aoeVelocity: return "", None text = "{0}{1} | {2}{3}".format(formatAmount(cloudSize, 3, 0, 3), "m", formatAmount(aoeVelocity, 3, 0, 3), "m/s") tooltip = "Explosion radius and explosion velocity" return text, tooltip elif itemCategory == "Subsystem": slots = ("hi", "med", "low") info = [] for slot in slots: n = int(stuff.getModifiedItemAttr("%sSlotModifier" % slot)) if n > 0: info.append("{0}{1}".format(n, slot[0].upper())) return "+ " + ", ".join(info), "Slot Modifiers" elif ( itemGroup in ("Energy Neutralizer", "Structure Energy Neutralizer") or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOENeut" in item.effects) ): neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount") cycleParams = stuff.getCycleParameters() if cycleParams is None: return "", None cycleTime = cycleParams.averageTime if not neutAmount or not cycleTime: return "", None capPerSec = float(-neutAmount) * 1000 / cycleTime text = "{0}/s".format(formatAmount(capPerSec, 3, 0, 3)) tooltip = "Energy neutralization per second" return text, tooltip elif itemGroup == "Energy Nosferatu": neutAmount = stuff.getModifiedItemAttr("powerTransferAmount") cycleParams = stuff.getCycleParameters() if cycleParams is None: return "", None cycleTime = cycleParams.averageTime if not neutAmount or not cycleTime: return "", None capPerSec = float(-neutAmount) * 1000 / cycleTime text = "{0}/s".format(formatAmount(capPerSec, 3, 0, 3)) tooltip = "Energy neutralization per second" return text, tooltip elif itemGroup in ("Salvager", "Salvage Drone"): chance = stuff.getModifiedItemAttr("accessDifficultyBonus") if not chance: return "", None text = "{0}%".format(formatAmount(chance, 3, 0, 3)) tooltip = "Item retrieval chance" return text, tooltip elif itemGroup == "Data Miners": strength = stuff.getModifiedItemAttr("virusStrength") coherence = stuff.getModifiedItemAttr("virusCoherence") if not strength or not coherence: return "", None text = "{0} | {1}".format(formatAmount(strength, 3, 0, 3), formatAmount(coherence, 3, 0, 3)) tooltip = "Virus strength and coherence" return text, tooltip elif itemGroup == "Damage Control": duration = stuff.getModifiedItemAttr("duration") if not duration: return "", None text = "{0}s".format(formatAmount(duration / 1000, 3, 0, 0)) tooltip = "Assault ability duration" return text, tooltip elif itemGroup in ("Warp Scrambler", "Warp Core Stabilizer", "Structure Warp Scrambler"): scramStr = stuff.getModifiedItemAttr("warpScrambleStrength") if not scramStr: return "", None text = "{0}".format(formatAmount(-scramStr, 3, 0, 3, forceSign=True)) tooltip = "Warp core strength modification" return text, tooltip elif ( itemGroup in ("Stasis Web", "Stasis Grappler", "Stasis Webifying Drone", "Structure Stasis Webifier") or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOEWeb" in item.effects) ): speedFactor = stuff.getModifiedItemAttr("speedFactor") if not speedFactor: return "", None text = "{0}%".format(formatAmount(speedFactor, 3, 0, 3)) tooltip = "Speed reduction" return text, tooltip elif ( itemGroup == "Target Painter" or (itemGroup == "Structure Disruption Battery" and "structureModuleEffectTargetPainter" in item.effects) or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOEPaint" in item.effects) ): sigRadBonus = stuff.getModifiedItemAttr("signatureRadiusBonus") if not sigRadBonus: return "", None text = "{0}%".format(formatAmount(sigRadBonus, 3, 0, 3, forceSign=True)) tooltip = "Signature radius increase" return text, tooltip elif ( itemGroup == "Sensor Dampener" or (itemGroup == "Structure Disruption Battery" and "structureModuleEffectRemoteSensorDampener" in item.effects) or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOEDamp" in item.effects) ): lockRangeBonus = stuff.getModifiedItemAttr("maxTargetRangeBonus") scanResBonus = stuff.getModifiedItemAttr("scanResolutionBonus") if lockRangeBonus is None or scanResBonus is None: return "", None display = 0 for bonus in (lockRangeBonus, scanResBonus): if abs(bonus) > abs(display): display = bonus if not display: return "", None text = "{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True)) ttEntries = [] if display == lockRangeBonus: ttEntries.append("lock range") if display == scanResBonus: ttEntries.append("scan resolution") tooltip = "{0} dampening".format(formatList(ttEntries)).capitalize() return text, tooltip elif ( itemGroup in ("Weapon Disruptor", "Structure Disruption Battery") or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOETrack" in item.effects) ): # Weapon disruption now covers both tracking and guidance (missile) disruptors # First get the attributes for tracking disruptors optimalRangeBonus = stuff.getModifiedItemAttr("maxRangeBonus") falloffRangeBonus = stuff.getModifiedItemAttr("falloffBonus") trackingSpeedBonus = stuff.getModifiedItemAttr("trackingSpeedBonus") trackingDisruptorAttributes = { "optimal range": optimalRangeBonus, "falloff range": falloffRangeBonus, "tracking speed": trackingSpeedBonus} isTrackingDisruptor = any([x is not None and x != 0 for x in list(trackingDisruptorAttributes.values())]) # Then get the attributes for guidance disruptors explosionVelocityBonus = stuff.getModifiedItemAttr("aoeVelocityBonus") explosionRadiusBonus = stuff.getModifiedItemAttr("aoeCloudSizeBonus") flightTimeBonus = stuff.getModifiedItemAttr("explosionDelayBonus") missileVelocityBonus = stuff.getModifiedItemAttr("missileVelocityBonus") guidanceDisruptorAttributes = { "explosion velocity": explosionVelocityBonus, "explosion radius": explosionRadiusBonus, "flight time": flightTimeBonus, "missile velocity": missileVelocityBonus} isGuidanceDisruptor = any([x is not None and x != 0 for x in list(guidanceDisruptorAttributes.values())]) if not isTrackingDisruptor and not isGuidanceDisruptor: return "", None texts = [] ttSegments = [] for status, attributes in ((isTrackingDisruptor, trackingDisruptorAttributes), (isGuidanceDisruptor, guidanceDisruptorAttributes)): if not status: continue display = max(list(attributes.values()), key=lambda x: abs(x)) texts.append("{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True))) ttEntries = [] for attributeName, attributeValue in list(attributes.items()): if abs(attributeValue) == abs(display): ttEntries.append(attributeName) ttSegments.append("{0} disruption".format(formatList(ttEntries)).capitalize()) return ' | '.join(texts), '\n'.join(ttSegments) elif itemGroup in ( "Gyrostabilizer", "Magnetic Field Stabilizer", "Heat Sink", "Ballistic Control System", "Structure Weapon Upgrade", "Entropic Radiation Sink", "Vorton Projector Upgrade" ): attrMap = { "Gyrostabilizer": ("damageMultiplier", "speedMultiplier", "Projectile weapon"), "Magnetic Field Stabilizer": ("damageMultiplier", "speedMultiplier", "Hybrid weapon"), "Heat Sink": ("damageMultiplier", "speedMultiplier", "Energy weapon"), "Ballistic Control System": ("missileDamageMultiplierBonus", "speedMultiplier", "Missile"), "Structure Weapon Upgrade": ("missileDamageMultiplierBonus", "speedMultiplier", "Missile"), "Entropic Radiation Sink": ("damageMultiplier", "speedMultiplier", "Precursor weapon"), "Vorton Projector Upgrade": ("damageMultiplier", "speedMultiplier", "Vorton projector")} dmgAttr, rofAttr, weaponName = attrMap[itemGroup] dmg = stuff.getModifiedItemAttr(dmgAttr) rof = stuff.getModifiedItemAttr(rofAttr) if not dmg or not rof: return "", None texts = [] tooltips = [] cumulative = (dmg / rof - 1) * 100 texts.append("{}%".format(formatAmount(cumulative, 3, 0, 3, forceSign=True))) tooltips.append("{} DPS boost".format(weaponName)) droneDmg = stuff.getModifiedItemAttr("droneDamageBonus") if droneDmg: texts.append("{}%".format(formatAmount(droneDmg, 3, 0, 3, forceSign=True))) tooltips.append("drone DPS boost".format(weaponName)) return ' | '.join(texts), ' and '.join(tooltips) elif itemGroup == "Drone Damage Modules": dmg = stuff.getModifiedItemAttr("droneDamageBonus") if not dmg: return text = "{}%".format(formatAmount(dmg, 3, 0, 3, forceSign=True)) tooltip = "Drone DPS boost" return text, tooltip elif ( itemGroup in ("ECM", "Burst Jammer", "Structure ECM Battery") or (itemGroup in ("Structure Burst Projector", "Burst Projectors") and "doomsdayAOEECM" in item.effects) ): grav = stuff.getModifiedItemAttr("scanGravimetricStrengthBonus") ladar = stuff.getModifiedItemAttr("scanLadarStrengthBonus") radar = stuff.getModifiedItemAttr("scanRadarStrengthBonus") magnet = stuff.getModifiedItemAttr("scanMagnetometricStrengthBonus") displayMax = max(grav, ladar, radar, magnet) displayMin = min(grav, ladar, radar, magnet) if grav is None or ladar is None or radar is None or magnet is None or displayMax is None: return "", None if displayMax == displayMin or displayMin is None: text = "{0}".format( formatAmount(displayMax, 3, 0, 3), ) else: text = "{0} | {1}".format( formatAmount(displayMax, 3, 0, 3), formatAmount(displayMin, 3, 0, 3), ) tooltip = "ECM Jammer Strength:\n{0} Gravimetric | {1} Ladar | {2} Magnetometric | {3} Radar".format( formatAmount(grav, 3, 0, 3), formatAmount(ladar, 3, 0, 3), formatAmount(magnet, 3, 0, 3), formatAmount(radar, 3, 0, 3), ) return text, tooltip elif itemGroup in ("Remote Sensor Booster", "Sensor Booster", "Signal Amplifier", "Structure Signal Amplifier"): textLines = [] tooltipLines = [] scanResBonus = stuff.getModifiedItemAttr("scanResolutionBonus") if scanResBonus: textLines.append("{}%".format(formatAmount(scanResBonus, 3, 0, 3))) tooltipLines.append("{}% scan resolution".format(formatAmount(scanResBonus, 3, 0, 3))) lockRangeBonus = stuff.getModifiedItemAttr("maxTargetRangeBonus") if lockRangeBonus: textLines.append("{}%".format(formatAmount(lockRangeBonus, 3, 0, 3))) tooltipLines.append("{}% lock range".format(formatAmount(lockRangeBonus, 3, 0, 3))) gravBonus = stuff.getModifiedItemAttr("scanGravimetricStrengthPercent") if gravBonus: textLines.append("{}%".format(formatAmount(gravBonus, 3, 0, 3))) tooltipLines.append("{}% sensor strength".format(formatAmount(gravBonus, 3, 0, 3))) if not textLines: return "", None text = " | ".join(textLines) tooltip = "Applied bonuses:\n{}".format(" | ".join(tooltipLines)) return text, tooltip elif itemGroup in ("Projected ECCM", "ECCM", "Sensor Backup Array"): grav = stuff.getModifiedItemAttr("scanGravimetricStrengthPercent") ladar = stuff.getModifiedItemAttr("scanLadarStrengthPercent") radar = stuff.getModifiedItemAttr("scanRadarStrengthPercent") magnet = stuff.getModifiedItemAttr("scanMagnetometricStrengthPercent") if grav is None or ladar is None or radar is None or magnet is None: return "", None display = max(grav, ladar, radar, magnet) if not display: return "", None text = "{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True)) ttEntries = [] if display == grav: ttEntries.append("gravimetric") if display == ladar: ttEntries.append("ladar") if display == magnet: ttEntries.append("magnetometric") if display == radar: ttEntries.append("radar") plu = "" if len(ttEntries) == 1 else "s" tooltip = "{0} strength{1} bonus".format(formatList(ttEntries), plu).capitalize() return text, tooltip elif itemGroup == "Cloaking Device": recalibration = stuff.getModifiedItemAttr("cloakingTargetingDelay") if recalibration is None: return "", None text = "{0}s".format(formatAmount(float(recalibration) / 1000, 3, 0, 3)) tooltip = "Sensor recalibration time" return text, tooltip elif itemGroup == "Remote Armor Repairer": rps = stuff.getRemoteReps(ignoreState=True).armor if not rps: return "", None text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Armor repaired per second" return text, tooltip elif itemGroup == "Mutadaptive Remote Armor Repairer": defaultSpoolValue = eos.config.settings['globalDefaultSpoolupPercentage'] spoolOptDefault = SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, False) spoolOptPre = SpoolOptions(SpoolType.SPOOL_SCALE, 0, True) spoolOptFull = SpoolOptions(SpoolType.SPOOL_SCALE, 1, True) rps = stuff.getRemoteReps(spoolOptions=spoolOptDefault, ignoreState=True).armor rpsPre = stuff.getRemoteReps(spoolOptions=spoolOptPre, ignoreState=True).armor rpsFull = stuff.getRemoteReps(spoolOptions=spoolOptFull, ignoreState=True).armor if not rps: return "", None text = [] tooltip = [] text.append("{}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True))) tooltip.append("Armor repaired per second") spoolTime = stuff.getSpoolData(spoolOptDefault)[1] if spoolTime: text.append("{}s".format(formatAmount(spoolTime, 3, 0, 3))) tooltip.append("spool up time") text = " | ".join(text) tooltip = " and ".join(tooltip) spoolTimePre = stuff.getSpoolData(spoolOptPre)[1] spoolTimeFull = stuff.getSpoolData(spoolOptFull)[1] if spoolTimePre != spoolTimeFull: tooltip = "{}\nSpool up: {}-{} over {}s".format( tooltip, formatAmount(rpsPre, 3, 0, 3), formatAmount(rpsFull, 3, 0, 3), formatAmount(spoolTimeFull - spoolTimePre, 3, 0, 3)) return text, tooltip elif itemGroup == "Remote Shield Booster": rps = stuff.getRemoteReps(ignoreState=True).shield if not rps: return "", None text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Shield transferred per second" return text, tooltip elif itemGroup == "Remote Capacitor Transmitter": rps = stuff.getRemoteReps(ignoreState=True).capacitor if not rps: return "", None text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Energy transferred per second" return text, tooltip elif itemGroup == "Remote Hull Repairer": rps = stuff.getRemoteReps(ignoreState=True).hull if not rps: return "", None text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = "Structure repaired per second" return text, tooltip elif itemGroup == "Gang Coordinator": command = stuff.getModifiedItemAttr("commandBonus") or stuff.getModifiedItemAttr("commandBonusHidden") if not command: return "", None text = "{0}%".format(formatAmount(command, 3, 0, 3, forceSign=True)) tooltip = "Gang bonus strength" return text, tooltip elif itemGroup == "Electronic Warfare Drone": sigRadBonus = stuff.getModifiedItemAttr("signatureRadiusBonus") lockRangeBonus = stuff.getModifiedItemAttr("maxTargetRangeBonus") scanResBonus = stuff.getModifiedItemAttr("scanResolutionBonus") falloffRangeBonus = stuff.getModifiedItemAttr("falloffBonus") optimalRangeBonus = stuff.getModifiedItemAttr("maxRangeBonus") trackingSpeedBonus = stuff.getModifiedItemAttr("trackingSpeedBonus") grav = stuff.getModifiedItemAttr("scanGravimetricStrengthBonus") ladar = stuff.getModifiedItemAttr("scanLadarStrengthBonus") radar = stuff.getModifiedItemAttr("scanRadarStrengthBonus") magnet = stuff.getModifiedItemAttr("scanMagnetometricStrengthBonus") if sigRadBonus: text = "{0}%".format(formatAmount(sigRadBonus, 3, 0, 3, forceSign=True)) tooltip = "Signature radius increase" return text, tooltip if lockRangeBonus or scanResBonus: display = 0 for bonus in (lockRangeBonus, scanResBonus): if abs(bonus) > abs(display): display = bonus if not display: return "", None text = "{0}%".format(formatAmount(display, 3, 0, 3, forceSign=True)) ttEntries = [] if display == lockRangeBonus: ttEntries.append("lock range") if display == scanResBonus: ttEntries.append("scan resolution") tooltip = "{0} dampening".format(formatList(ttEntries)).capitalize() return text, tooltip if falloffRangeBonus or optimalRangeBonus or trackingSpeedBonus: display = 0 for bonus in (falloffRangeBonus, optimalRangeBonus, trackingSpeedBonus): if abs(bonus) > abs(display): display = bonus if not display: return "", None text = "{0}%".format(formatAmount(display, 3, 0, 3), forceSign=True) ttEntries = [] if display == optimalRangeBonus: ttEntries.append("optimal range") if display == falloffRangeBonus: ttEntries.append("falloff range") if display == trackingSpeedBonus: ttEntries.append("tracking speed") tooltip = "{0} disruption".format(formatList(ttEntries)).capitalize() return text, tooltip if grav is not None and ladar is not None and radar is not None and magnet is not None: display = max(grav, ladar, radar, magnet) if not display: return "", None text = "{0}".format(formatAmount(display, 3, 0, 3)) ttEntries = [] if display == grav: ttEntries.append("gravimetric") if display == ladar: ttEntries.append("ladar") if display == magnet: ttEntries.append("magnetometric") if display == radar: ttEntries.append("radar") plu = "" if len(ttEntries) == 1 else "s" tooltip = "{0} strength{1}".format(formatList(ttEntries), plu).capitalize() return text, tooltip else: return "", None elif itemGroup == "Fighter Bomber": optimalSig = stuff.getModifiedItemAttr("optimalSigRadius") if not optimalSig: return "", None text = "{0}m".format(formatAmount(optimalSig, 3, 0, 3)) tooltip = "Optimal signature radius" return text, tooltip elif itemGroup in ("Frequency Mining Laser", "Strip Miner", "Mining Laser", "Gas Cloud Scoops", "Mining Drone", "Gas Cloud Harvesters"): yps = stuff.getMiningYPS(ignoreState=True) if not yps: return "", None yph = yps * 3600 dps = stuff.getMiningDPS(ignoreState=True) dph = dps * 3600 try: efficiency = yps / dps except ZeroDivisionError: efficiency = 0 textParts = [] tipLines = [] textParts.append('{} m\u00B3/s'.format(formatAmount(yps, 3, 0, 3))) tipLines.append("{} m\u00B3 mining yield per second ({} m\u00B3 per hour)".format( formatAmount(yps, 3, 0, 3), formatAmount(yph, 3, 0, 3))) tipLines.append("{} m\u00B3 mining drain per second ({} m\u00B3 per hour)".format( formatAmount(dps, 3, 0, 3), formatAmount(dph, 3, 0, 3))) if floatUnerr(efficiency) != 1: eff_text = '{}%'.format(formatAmount(efficiency * 100, 4, 0, 0)) textParts.append(eff_text) tipLines.append(f"{eff_text} mining efficiency") text = '{}'.format(' | '.join(textParts)) tooltip = '\n'.join(tipLines) return text, tooltip elif itemGroup == "Logistic Drone": rpsData = stuff.getRemoteReps(ignoreState=True) rrType = None rps = None if rpsData.shield: rps = rpsData.shield rrType = 'Shield' elif rpsData.armor: rps = rpsData.armor rrType = 'Armor' elif rpsData.hull: rps = rpsData.hull rrType = 'Hull' if not rrType or not rps: return "", None text = "{}/s".format(formatAmount(rps, 3, 0, 3)) tooltip = "{} HP repaired per second\n{} HP/s per drone".format(rrType, formatAmount(rps / stuff.amount, 3, 0, 3)) return text, tooltip elif itemGroup == "Energy Neutralizer Drone": neutAmount = stuff.getModifiedItemAttr("energyNeutralizerAmount") cycleTime = stuff.getModifiedItemAttr("energyNeutralizerDuration") if not neutAmount or not cycleTime: return "", None capPerSec = float(-neutAmount) * 1000 / cycleTime text = "{0}/s".format(formatAmount(capPerSec, 3, 0, 3)) tooltip = "Energy neutralization per second" return text, tooltip elif itemGroup in ("Micro Jump Drive", "Micro Jump Field Generators", "Capital Mobility Modules"): cycleTime = stuff.getModifiedItemAttr("duration") / 1000 text = "{0}s".format(formatAmount(cycleTime, 3, 0, 3)) tooltip = "Spoolup time" return text, tooltip elif itemGroup in ("Siege Module", "Cynosural Field Generator"): amt = stuff.getModifiedItemAttr("consumptionQuantity") if amt: typeID = stuff.getModifiedItemAttr("consumptionType") item = Market.getInstance().getItem(typeID) text = "{0} units".format(formatAmount(amt, 3, 0, 3)) return text, item.name else: return "", None elif itemGroup in ( "Ancillary Armor Repairer", "Ancillary Shield Booster", "Capacitor Booster", "Ancillary Remote Armor Repairer", "Ancillary Remote Shield Booster", ): if "Armor" in itemGroup or "Shield" in itemGroup: boosted_attribute = "HP" reload_time = stuff.getModifiedItemAttr("reloadTime", 0) / 1000 elif "Capacitor" in itemGroup: boosted_attribute = "Cap" reload_time = 10 else: boosted_attribute = "" reload_time = 0 cycles = max(stuff.numShots, 0) cycleTime = max(stuff.rawCycleTime, 0) # Get HP or boosted amount stuff_hp = max(stuff.hpBeforeReload, 0) armor_hp = stuff.getModifiedItemAttr("armorDamageAmount", 0) capacitor_hp = stuff.getModifiedChargeAttr("capacitorBonus", 0) shield_hp = stuff.getModifiedItemAttr("shieldBonus", 0) hp = max(stuff_hp, armor_hp * cycles, capacitor_hp * cycles, shield_hp * cycles, 0) nonChargedMap = { "Ancillary Remote Armor Repairer": ("armor", "Armor repaired per second"), "Ancillary Remote Shield Booster": ("shield", "Shield transferred per second")} if not cycles and itemGroup in nonChargedMap: rps = stuff.getRemoteReps(ignoreState=True) rps = getattr(rps, nonChargedMap[itemGroup][0]) if not rps: return "", None text = "{0}/s".format(formatAmount(rps, 3, 0, 3, forceSign=True)) tooltip = nonChargedMap[itemGroup][1] return text, tooltip if not hp or not cycleTime or not cycles: return "", None fit = Fit.getInstance().getFit(self.fittingView.getActiveFit()) ehpTotal = fit.ehp hpTotal = fit.hp try: useEhp = self.mainFrame.statsPane.nameViewMap["resistancesViewFull"].showEffective except KeyError: useEhp = False tooltip = "{0} restored over duration using charges (plus reload)".format(boosted_attribute) if useEhp and boosted_attribute == "HP" and "Remote" not in itemGroup: if "Ancillary Armor Repairer" in itemGroup: hpRatio = ehpTotal["armor"] / hpTotal["armor"] else: hpRatio = ehpTotal["shield"] / hpTotal["shield"] tooltip = "E{0}".format(tooltip) else: hpRatio = 1 if "Ancillary" in itemGroup and "Armor" in itemGroup: hpRatio *= stuff.getModifiedItemAttr("chargedArmorDamageMultiplier", 1) ehp = hp * hpRatio duration = cycles * cycleTime / 1000 for number_of_cycles in {5, 10, 25}: tooltip = "{0}\n{1} charges lasts {2} seconds ({3} cycles)".format( tooltip, formatAmount(number_of_cycles * cycles, 3, 0, 3), formatAmount((duration + reload_time) * number_of_cycles, 3, 0, 3), formatAmount(number_of_cycles, 3, 0, 3) ) text = "{0} / {1}s (+{2}s)".format( formatAmount(ehp, 3, 0, 9), formatAmount(duration, 3, 0, 3), formatAmount(reload_time, 3, 0, 3) ) return text, tooltip elif itemGroup == "Armor Resistance Shift Hardener": itemArmorResistanceShiftHardenerEM = (1 - stuff.getModifiedItemAttr("armorEmDamageResonance")) * 100 itemArmorResistanceShiftHardenerTherm = (1 - stuff.getModifiedItemAttr("armorThermalDamageResonance")) * 100 itemArmorResistanceShiftHardenerKin = (1 - stuff.getModifiedItemAttr("armorKineticDamageResonance")) * 100 itemArmorResistanceShiftHardenerExp = (1 - stuff.getModifiedItemAttr("armorExplosiveDamageResonance")) * 100 text = "{0}% | {1}% | {2}% | {3}%".format( formatAmount(itemArmorResistanceShiftHardenerEM, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerTherm, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerKin, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerExp, 3, 0, 3), ) tooltip = "Resistances shifted to damage profile:\n{0}% EM | {1}% Therm | {2}% Kin | {3}% Exp".format( formatAmount(itemArmorResistanceShiftHardenerEM, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerTherm, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerKin, 3, 0, 3), formatAmount(itemArmorResistanceShiftHardenerExp, 3, 0, 3), ) return text, tooltip elif itemGroup in ("Cargo Scanner", "Ship Scanner"): duration = stuff.getModifiedItemAttr("duration") if not duration: return "", None text = "{}s".format(formatAmount(duration / 1000, 3, 0, 0)) tooltip = "Scan duration" return text, tooltip elif itemGroup == "Command Burst": textSections = [] tooltipSections = [] buffMap = {} for seq in (1, 2, 3, 4): buffId = stuff.getModifiedChargeAttr(f'warfareBuff{seq}ID') if not buffId: continue buffValue = stuff.getModifiedItemAttr(f'warfareBuff{seq}Value') buffMap[buffId] = buffValue if buffId == 10: # Shield Burst: Shield Harmonizing: Shield Resistance # minus buff value because ingame shows positive value textSections.append(f"{formatAmount(-buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("shield resistance") elif buffId == 11: # Shield Burst: Active Shielding: Repair Duration/Capacitor textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("shield RR duration & capacictor use") elif buffId == 12: # Shield Burst: Shield Extension: Shield HP textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("shield HP") elif buffId == 13: # Armor Burst: Armor Energizing: Armor Resistance # minus buff value because ingame shows positive value textSections.append(f"{formatAmount(-buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("armor resistance") elif buffId == 14: # Armor Burst: Rapid Repair: Repair Duration/Capacitor textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("armor RR duration & capacitor use") elif buffId == 15: # Armor Burst: Armor Reinforcement: Armor HP textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("armor HP") elif buffId == 16: # Information Burst: Sensor Optimization: Scan Resolution textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("scan resolution") elif buffId == 26: # Information Burst: Sensor Optimization: Targeting Range textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("targeting range") elif buffId == 17: # Information Burst: Electronic Superiority: EWAR Range and Strength textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("electronic warfare modules range & strength") elif buffId == 18: # Information Burst: Electronic Hardening: Sensor Strength textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("sensor strength") elif buffId == 19: # Information Burst: Electronic Hardening: RSD/RWD Resistance textSections.append(f"{formatAmount(-buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("sensor dampener & weapon disruption resistance") elif buffId == 20: # Skirmish Burst: Evasive Maneuvers: Signature Radius textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("signature radius") elif buffId == 60: # Skirmish Burst: Evasive Maneuvers: Agility # minus the buff value because we want Agility as shown ingame, not inertia modifier textSections.append(f"{formatAmount(-buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("agility") elif buffId == 21: # Skirmish Burst: Interdiction Maneuvers: Tackle Range textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("warp disruption & stasis web range") elif buffId == 22: # Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("AB/MWD speed increase") elif buffId == 23: # Mining Burst: Mining Laser Field Enhancement: Mining Range textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("mining module range") elif buffId == 24: # Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("mining module duration & capacitor use") elif buffId == 25: # Mining Burst: Mining Equipment Preservation: Crystal Volatility textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("mining crystal volatility") elif buffId == 2464: # Expedition Burst: Probe Strength textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("scan probe strength") elif buffId == 2465: # Expedition Burst: Directional Scanner, Hacking and Salvager Range textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("dscan, hacking & salvaging range") elif buffId == 2466: # Expedition Burst: Maximum Scan Deviation Modifier textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("scan probe deviation") elif buffId == 2468: # Expedition Burst: Virus Coherence textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}") tooltipSections.append("virus coherence") elif buffId == 2481: # Expedition Burst: Salvager duration bonus textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("salvager cycle time") elif buffId == 2516: # Mining Burst: Mining Crit Chance textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("crit chance") elif buffId == 2517: # Mining Burst: Mining Residue Chance Reduction textSections.append(f"{formatAmount(buffValue, 3, 0, 3, forceSign=True)}%") tooltipSections.append("waste chance") if not textSections: return '', None text = ' | '.join(textSections) tooltip = '{} bonus'.format(' | '.join(tooltipSections)) if tooltip: tooltip = tooltip[0].capitalize() + tooltip[1:] return text, tooltip elif stuff.charge is not None: chargeGroup = stuff.charge.group.name if chargeGroup.endswith("Rocket") or chargeGroup.endswith("Missile") or chargeGroup.endswith("Torpedo"): cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize") aoeVelocity = stuff.getModifiedChargeAttr("aoeVelocity") if not cloudSize or not aoeVelocity: return "", None text = "{0}{1} | {2}{3}".format(formatAmount(cloudSize, 3, 0, 3), "m", formatAmount(aoeVelocity, 3, 0, 3), "m/s") tooltip = "Explosion radius and explosion velocity" return text, tooltip elif chargeGroup in ("Bomb", "Guided Bomb"): cloudSize = stuff.getModifiedChargeAttr("aoeCloudSize") if not cloudSize: return "", None text = "{0}{1}".format(formatAmount(cloudSize, 3, 0, 3), "m") tooltip = "Explosion radius" return text, tooltip elif chargeGroup in ("Scanner Probe",): scanStr = stuff.getModifiedChargeAttr("baseSensorStrength") baseRange = stuff.getModifiedChargeAttr("baseScanRange") if not scanStr or not baseRange: return "", None text = "{}".format(formatAmount(scanStr, 4, 0, 3)) tooltip = "Scan strength at {} AU scan range".format(formatAmount(baseRange, 3, 0, 0)) return text, tooltip elif chargeGroup in ("SCARAB Breacher Pods",): duration = stuff.getModifiedChargeAttr("dotDuration") / 1000 dmgAbs = stuff.getModifiedChargeAttr("dotMaxDamagePerTick") dmgRel = stuff.getModifiedChargeAttr("dotMaxHPPercentagePerTick") text = "{}/{}% over {}s".format( formatAmount(dmgAbs * duration, 3, 0, 6), formatAmount(dmgRel * duration, 3, 0, 6), formatAmount(duration, 0, 0, 0)) fullDmgHp = dmgAbs / (dmgRel / 100) tooltip = ( 'Pure damage inflicted over time, minimum of absolute / relative\n' 'Full DPS from {} target HP').format(formatAmount(fullDmgHp, 3, 0, 6)) return text, tooltip else: return "", None else: return "", None Miscellanea.register() ================================================ FILE: gui/builtinViewColumns/price.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos, Lucas Thode # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.cargo import Cargo from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.module import Module from eos.saveddata.price import PriceStatus from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn from service.price import Price as ServicePrice def formatPrice(stuff, priceObj): textItems = [] if priceObj.price: mult = 1 if isinstance(stuff, (Drone, Fighter, Cargo)): mult = stuff.amount textItems.append(formatAmount(priceObj.price * mult, 3, 3, 9, currency=True)) if priceObj.status in (PriceStatus.fetchFail, PriceStatus.fetchTimeout): textItems.append("(!)") return " ".join(textItems) class Price(ViewColumn): name = "Price" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mask = wx.LIST_MASK_IMAGE self.bitmap = BitmapLoader.getBitmap("totalPrice_small", "gui") self.imageId = fittingView.imageList.GetImageIndex("totalPrice_small", "gui") def getText(self, stuff): if stuff.item is None or stuff.item.group.name == "Ship Modifiers": return "" if hasattr(stuff, "isEmpty"): if stuff.isEmpty: return "" if isinstance(stuff, Module) and stuff.isMutated: return "" priceObj = stuff.item.price if not priceObj.isValid(): return False return formatPrice(stuff, priceObj) def delayedText(self, mod, display, colItem): sPrice = ServicePrice.getInstance() def callback(item): priceObj = item[0] colItem.SetText(formatPrice(mod, priceObj)) display.SetItem(colItem) sPrice.getPrices([mod.item], callback, waitforthread=True) def getImageId(self, mod): return -1 def getToolTip(self, mod): return self.name Price.register() ================================================ FILE: gui/builtinViewColumns/projectionRange.py ================================================ # coding: utf-8 # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from logbook import Logger import gui.mainFrame from eos.saveddata.fit import Fit from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn pyfalog = Logger(__name__) class ProjectionRangeColumn(ViewColumn): name = 'Projection Range' def __init__(self, fittingView, params): super().__init__(fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.imageId = fittingView.imageList.GetImageIndex(1391, "icons") self.bitmap = BitmapLoader.getBitmap(1391, "icons") self.mask = wx.LIST_MASK_IMAGE def getText(self, stuff): if isinstance(stuff, Fit): fitID = self.mainFrame.getActiveFit() info = stuff.getProjectionInfo(fitID) projRange = info.projectionRange else: projRange = getattr(stuff, 'projectionRange', None) if projRange is None: return '' return formatAmount(projRange, 3, 0, 3, unitName='m') def getToolTip(self, mod): return 'Projection Range' ProjectionRangeColumn.register() ================================================ FILE: gui/builtinViewColumns/propertyDisplay.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from gui.viewColumn import ViewColumn from gui.utils.numberFormatter import formatAmount from service.attribute import Attribute class PropertyDisplay(ViewColumn): name = "prop" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) sAttr = Attribute.getInstance() attributeSlave = params["attributeSlave"] or params["property"] # This function can throw an exception if the database isn't sane # We need to do a sanity check before this runs info = sAttr.getAttributeInfo(attributeSlave) self.mask = 0 self.propertyName = params["property"] self.info = info if params["showIcon"]: if info.name == "power": iconFile = "pg_small" iconType = "gui" else: iconFile = info.iconID if info.icon else None iconType = "icons" if iconFile: self.imageId = fittingView.imageList.GetImageIndex(iconFile, iconType) else: self.imageId = -1 else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name def getText(self, stuff): attr = getattr(stuff, self.propertyName, None) if attr: return formatAmount(attr, 3, 0, 3) else: return "" @staticmethod def getParameters(): return (("property", str, None), ("attributeSlave", str, None), ("displayName", bool, False), ("showIcon", bool, True)) PropertyDisplay.register() ================================================ FILE: gui/builtinViewColumns/sideEffects.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.booster import Booster from gui.viewColumn import ViewColumn import gui.mainFrame _t = wx.GetTranslation class SideEffects(ViewColumn): name = "Side Effects" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.columnText = _t("Active Side Effects") self.mask = wx.LIST_MASK_TEXT def getText(self, stuff): if isinstance(stuff, Booster): active = [x.name for x in stuff.sideEffects if x.active] if len(active) == 0: return "None" return ", ".join(active) SideEffects.register() ================================================ FILE: gui/builtinViewColumns/state.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from eos.saveddata.fit import Fit from eos.saveddata.implant import Implant from eos.saveddata.drone import Drone from eos.saveddata.module import Module, Rack from eos.const import FittingModuleState as State_ from gui.viewColumn import ViewColumn import gui.mainFrame class State(ViewColumn): name = "State" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.resizable = False self.size = 16 self.maxsize = self.size self.mask = wx.LIST_MASK_IMAGE def getText(self, mod): return "" def getToolTip(self, mod): if isinstance(mod, Module) and not mod.isEmpty: return State_(mod.state).name.title() def getImageId(self, stuff): generic_active = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.ACTIVE.name.lower(), "gui") generic_inactive = self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.OFFLINE.name.lower(), "gui") if isinstance(stuff, Drone): if stuff.amountActive > 0: return generic_active else: return generic_inactive elif isinstance(stuff, Rack): return -1 elif isinstance(stuff, Module): if stuff.isEmpty: return -1 else: return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_(stuff.state).name.lower(), "gui") elif isinstance(stuff, Fit): fitID = self.mainFrame.getActiveFit() # Can't use isinstance here due to being prevented from importing CommandView. # So we do the next best thing and compare Name of class. if self.fittingView.__class__.__name__ == "CommandView": info = stuff.getCommandInfo(fitID) else: info = stuff.getProjectionInfo(fitID) if info is None: return -1 if info.active: return generic_active return generic_inactive elif isinstance(stuff, Implant) and stuff.character: # if we're showing character implants, show an "online" state, which should not be changed return self.fittingView.imageList.GetImageIndex("state_%s_small" % State_.ONLINE.name.lower(), "gui") else: active = getattr(stuff, "active", None) if active is None: return -1 if active: return generic_active return generic_inactive State.register() ================================================ FILE: gui/builtinViewColumns/targetResists.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from graphs.wrapper import TargetWrapper from gui.bitmap_loader import BitmapLoader from gui.utils.numberFormatter import formatAmount from gui.viewColumn import ViewColumn from service.const import TargetResistMode class TargetResists(ViewColumn): name = 'Target Resists' proportionWidth = 5 def __init__(self, fittingView, params): super().__init__(fittingView) self.imageId = fittingView.imageList.GetImageIndex(1393, 'icons') self.bitmap = BitmapLoader.getBitmap(1393, 'icons') self.mask = wx.LIST_MASK_TEXT def getText(self, stuff): if isinstance(stuff, TargetWrapper): em, therm, kin, explo, layer = stuff.getResists(includeLayer=True) if stuff.isFit: modeSuffixMap = { TargetResistMode.auto: 'auto', TargetResistMode.shield: 'shield', TargetResistMode.armor: 'armor', TargetResistMode.hull: 'hull', TargetResistMode.weightedAverage: 'average'} modeSuffix = modeSuffixMap[stuff.resistMode] if stuff.resistMode == TargetResistMode.auto and layer is not None: modeSuffix = '{} {}'.format(modeSuffix, layer) modeSuffix = ' ({})'.format(modeSuffix) else: modeSuffix = '' return '{}/{}/{}/{}{}'.format( formatAmount(val=em * 100, prec=3, lowest=0, highest=0), formatAmount(val=therm * 100, prec=3, lowest=0, highest=0), formatAmount(val=kin * 100, prec=3, lowest=0, highest=0), formatAmount(val=explo * 100, prec=3, lowest=0, highest=0), modeSuffix) return '' def getToolTip(self, mod): return 'Target resistances\nEM / Thermal / Kinetic / Explosive' TargetResists.register() ================================================ FILE: gui/builtinViews/__init__.py ================================================ __all__ = ["fittingView", "implantEditor"] ================================================ FILE: gui/builtinViews/emptyView.py ================================================ # noinspection PyPackageRequirements import wx import gui.globalEvents as GE from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED import gui.mainFrame class BlankPage(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, size=(0, 0)) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.parent = parent self.parent.Bind(EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=())) def Destroy(self): # todo: This unbind caused fits to not recalc when switching to their tabs; find out why # self.parent.Unbind(EVT_NOTEBOOK_PAGE_CHANGED) wx.Panel.Destroy(self) def pageChanged(self, event): if self.parent.IsActive(self): fitID = None # sFit = Fit.getInstance() # sFit.switchFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() ================================================ FILE: gui/builtinViews/entityEditor.py ================================================ # noinspection PyPackageRequirements import wx from gui.bitmap_loader import BitmapLoader class BaseValidator(wx.Validator): def __init__(self): wx.Validator.__init__(self) def Validate(self, win): raise NotImplementedError() def TransferToWindow(self): return True def TransferFromWindow(self): return True class TextEntryValidatedDialog(wx.TextEntryDialog): def __init__(self, parent, validator=None, *args, **kargs): wx.TextEntryDialog.__init__(self, parent, *args, **kargs) self.parent = parent # See https://github.com/wxWidgets/Phoenix/issues/611 self.txtctrl = self.FindWindowById(3000, self) if validator: self.txtctrl.SetValidator(validator()) class EntityEditor(wx.Panel): """ Entity Editor is a panel that takes some sort of list as a source and populates a drop down with options to add/ rename/clone/delete an entity. Comes with dialogs that take user input. Classes that derive this class must override functions that get the list from the source, what to do when user does an action, and how to validate the input. """ def __init__(self, parent, entityName, selected=None): wx.Panel.__init__(self, parent, id=wx.ID_ANY, style=wx.TAB_TRAVERSAL) self.entityName = entityName self.validator = None self.navSizer = wx.BoxSizer(wx.HORIZONTAL) self.choices = [] self.choices.sort(key=lambda p: p.name) self.entityChoices = wx.Choice(self, choices=[p.name for p in self.choices]) self.navSizer.Add(self.entityChoices, 1, wx.ALL, 5) buttons = (("new", wx.ART_NEW, self.OnNew), ("rename", BitmapLoader.getBitmap("rename", "gui"), self.OnRename), ("copy", wx.ART_COPY, self.OnCopy), ("delete", wx.ART_DELETE, self.OnDelete)) size = None for name, art, func in buttons: bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON) if name != "rename" else art btn = wx.BitmapButton(self, wx.ID_ANY, bitmap) if size is None: size = btn.GetSize() btn.SetMinSize(size) btn.SetMaxSize(size) btn.SetToolTip("{} {}".format(name.capitalize(), self.entityName)) btn.Bind(wx.EVT_BUTTON, func) setattr(self, "btn%s" % name.capitalize(), btn) self.navSizer.Add(btn, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2) self.SetSizer(self.navSizer) self.Layout() self.refreshEntityList(selected=selected) def SetEditorValidator(self, validator=None): """ Sets validator class (not an instance of the class) """ self.validator = validator def getEntitiesFromContext(self): """ Gets list of entities from current context """ raise NotImplementedError() def DoNew(self, name): """Override method to do new entity logic. Must return the new entity""" raise NotImplementedError() def DoCopy(self, entity, name): """Override method to copy entity. Must return the copy""" raise NotImplementedError() def DoRename(self, entity, name): """Override method to rename an entity""" raise NotImplementedError() def DoDelete(self, entity): """Override method to delete entity""" raise NotImplementedError() def OnNew(self, event): with TextEntryValidatedDialog( self, self.validator, "Enter a name for your new {}:".format(self.entityName), "New {}".format(self.entityName) ) as dlg: dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: # using dlg.textctrl.GetValue instead of simply dlg.GetValue because the proper way does not work in wxPython 2.8 new = self.DoNew(dlg.txtctrl.GetValue().strip()) self.refreshEntityList(new) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) else: return False def OnCopy(self, event): with TextEntryValidatedDialog( self, self.validator, "Enter a name for your {} copy:".format(self.entityName), "Copy {}".format(self.entityName) ) as dlg: active = self.getActiveEntity() dlg.SetValue("{} Copy".format(active.name)) dlg.txtctrl.SetInsertionPointEnd() dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: copy = self.DoCopy(active, dlg.txtctrl.GetValue().strip()) self.refreshEntityList(copy) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) def OnRename(self, event): with TextEntryValidatedDialog( self, self.validator, "Enter a new name for your {}:".format(self.entityName), "Rename {}".format(self.entityName) ) as dlg: active = self.getActiveEntity() dlg.SetValue(active.name) dlg.txtctrl.SetInsertionPointEnd() dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: self.DoRename(active, dlg.txtctrl.GetValue().strip()) self.refreshEntityList(active) wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) def OnDelete(self, event): with wx.MessageDialog( self, "Do you really want to delete the {} {}?".format(self.getActiveEntity().name, self.entityName), "Confirm Delete", wx.YES | wx.NO | wx.ICON_QUESTION ) as dlg: dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_YES: self.DoDelete(self.getActiveEntity()) self.refreshEntityList() wx.PostEvent(self.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) def refreshEntityList(self, selected=None): self.choices = self.getEntitiesFromContext() self.entityChoices.Clear() self.entityChoices.AppendItems([p.name for p in self.choices]) if selected: idx = self.choices.index(selected) self.entityChoices.SetSelection(idx) else: self.entityChoices.SetSelection(0) def getActiveEntity(self): if len(self.choices) == 0: return None return self.choices[self.entityChoices.GetSelection()] def setActiveEntity(self, entity): try: idx = self.choices.index(entity) except IndexError: return False self.entityChoices.SetSelection(idx) return True def checkEntitiesExist(self): if len(self.choices) > 0: return True else: return self.enterNewEntity() def enterNewEntity(self): self.Parent.Hide() if self.OnNew(None) is False: return False self.Parent.Show() return True ================================================ FILE: gui/builtinViews/fittingView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import wx.lib.newevent from logbook import Logger import gui.builtinViews.emptyView import gui.display as d import gui.fitCommands as cmd import gui.globalEvents as GE import gui.mainFrame import gui.multiSwitch from eos.saveddata.mode import Mode from eos.saveddata.module import Module, Rack from eos.const import FittingSlot from gui.bitmap_loader import BitmapLoader from gui.builtinMarketBrowser.events import ITEM_SELECTED from gui.builtinShipBrowser.events import EVT_FIT_SELECTED, FitSelected from gui.builtinViewColumns.state import State from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED from gui.contextMenu import ContextMenu from gui.utils.staticHelpers import DragDropHelper from gui.utils.dark import isDark from service.fit import Fit from service.market import Market from config import slotColourMap, slotColourMapDark, errColor, errColorDark from gui.fitCommands.helpers import getSimilarModPositions pyfalog = Logger(__name__) _t = wx.GetTranslation # Tab spawning handler class FitSpawner(gui.multiSwitch.TabSpawner): def __init__(self, multiSwitch): self.multiSwitch = multiSwitch self.mainFrame = mainFrame = gui.mainFrame.MainFrame.getInstance() mainFrame.Bind(EVT_FIT_SELECTED, self.fitSelected) self.multiSwitch.tabs_container.handleDrag = self.handleDrag def fitSelected(self, event): count = -1 # @todo pheonix: _pages is supposed to be private? for index, page in enumerate(self.multiSwitch._pages): if not isinstance(page, gui.builtinViews.emptyView.BlankPage): # Don't try and process it if it's a blank page. try: if page.activeFitID == event.fitID: count += 1 self.multiSwitch.SetSelection(index) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(event.fitID,))) break except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Caught exception in fitSelected") pyfalog.critical(e) if count < 0: startup = getattr(event, "startup", False) # see OpenFitsThread in gui.mainFrame from_import = getattr(event, "from_import", False) # always open imported into a new tab sFit = Fit.getInstance() openFitInNew = sFit.serviceFittingOptions["openFitInNew"] mstate = wx.GetMouseState() modifierKey = mstate.GetModifiers() == wx.MOD_CONTROL if from_import or (not openFitInNew and modifierKey) or startup or (openFitInNew and not modifierKey): self.multiSwitch.AddPage() view = self.multiSwitch.GetSelectedPage() if not isinstance(view, FittingView): view = FittingView(self.multiSwitch) pyfalog.debug("###################### Created new view:" + repr(view)) self.multiSwitch.ReplaceActivePage(view) view.fitSelected(event) def handleDrag(self, type, fitID): if type == "fit": for page in self.multiSwitch._pages: if isinstance(page, FittingView) and page.activeFitID == fitID: index = self.multiSwitch.GetPageIndex(page) self.multiSwitch.SetSelection(index) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) return elif isinstance(page, gui.builtinViews.emptyView.BlankPage): view = FittingView(self.multiSwitch) self.multiSwitch.ReplaceActivePage(view) view.handleDrag(type, fitID) return view = FittingView(self.multiSwitch) self.multiSwitch.AddPage(view) view.handleDrag(type, fitID) FitSpawner.register() # Drag'n'drop handler class FittingViewDrop(wx.DropTarget): def __init__(self, dropFn, *args, **kwargs): super(FittingViewDrop, self).__init__(*args, **kwargs) self.dropFn = dropFn # this is really transferring an EVE itemID self.dropData = wx.TextDataObject() self.SetDataObject(self.dropData) def OnData(self, x, y, t): if self.GetData(): dragged_data = DragDropHelper.data # pyfalog.debug("fittingView: recieved drag: " + self.dropData.GetText()) if dragged_data is None: return t data = dragged_data.split(':') self.dropFn(x, y, data) return t class FittingView(d.Display): DEFAULT_COLS = ["State", "Ammo Icon", "Base Icon", "Base Name", "attr:power", "attr:cpu", "Capacitor Usage", "Max Range", "Miscellanea", "Price", "Ammo", "Heat", ] def __init__(self, parent): d.Display.__init__(self, parent, size=(0, 0), style=wx.BORDER_NONE) self.Show(False) self.parent = parent self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(GE.FIT_RENAMED, self.fitRenamed) self.mainFrame.Bind(GE.FIT_REMOVED, self.fitRemoved) self.mainFrame.Bind(ITEM_SELECTED, self.appendItem) self.font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) self.SetDropTarget(FittingViewDrop(self.handleListDrag)) self.activeFitID = None self.FVsnapshot = None self.itemCount = 0 self.hoveredRow = None self.hoveredColumn = None self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_MIDDLE_DOWN, self.click) self.Bind(wx.EVT_SHOW, self.OnShow) self.Bind(wx.EVT_MOTION, self.OnMouseMove) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.parent.Bind(EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged) pyfalog.debug("------------------ new fitting view -------------------") pyfalog.debug(self) def OnLeaveWindow(self, event): self.SetToolTip(None) self.hoveredRow = None self.hoveredColumn = None event.Skip() def OnMouseMove(self, event): row, _, col = self.HitTestSubItem(event.Position) if row != self.hoveredRow or col != self.hoveredColumn: if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredRow = row self.hoveredColumn = col if row != -1 and row not in self.blanks and col != -1 and col < len(self.DEFAULT_COLS): mod = self.mods[row] tooltip = self.activeColumns[col].getToolTip(mod) if tooltip is not None: self.SetToolTip(tooltip) else: self.SetToolTip(None) else: self.SetToolTip(None) event.Skip() def handleListDrag(self, x, y, data): """ Handles dragging of items from various pyfa displays which support it data is list with two items: data[0] is hard-coded str of originating source data[1] is typeID or index of data we want to manipulate """ if data[0] == "fitting": self.swapItems(x, y, int(data[1])) elif data[0] == "cargo": self.swapCargo(x, y, int(data[1])) elif data[0] == "market": self.addModule(x, y, int(data[1])) def handleDrag(self, type, fitID): # Those are drags coming from pyfa sources, NOT builtin wx drags if type == "fit": wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) def Destroy(self): pyfalog.debug("+++++ Destroy " + repr(self)) d.Display.Destroy(self) def pageChanged(self, event): if self.parent.IsActive(self): fitID = self.getActiveFit() sFit = Fit.getInstance() sFit.switchFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def getActiveFit(self): return self.activeFitID def startDrag(self, event): srcRow = event.GetIndex() if srcRow == -1: return if srcRow in self.blanks: return try: mod = self.mods[srcRow] except IndexError: return if not isinstance(self.mods[srcRow], Module): return if mod.isEmpty: return fit = Fit.getInstance().getFit(self.activeFitID) if mod not in fit.modules: return self.unselectAll() self.Select(srcRow, True) data = wx.TextDataObject() dataStr = "fitting:" + str(fit.modules.index(mod)) data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) DragDropHelper.data = dataStr dropSource.DoDragDrop() def getSelectedMods(self): mods = [] for row in self.getSelectedRows(): try: mod = self.mods[row] except IndexError: continue if mod and not isinstance(mod, Rack): mods.append(mod) return mods def kbEvent(self, event): keycode = event.GetKeyCode() modifiers = event.GetModifiers() if keycode == wx.WXK_ESCAPE and modifiers == wx.MOD_NONE: self.unselectAll() elif keycode == 65 and modifiers == wx.MOD_CONTROL: self.selectAll() elif keycode in (wx.WXK_DELETE, wx.WXK_NUMPAD_DELETE) and modifiers == wx.MOD_NONE: modules = [m for m in self.getSelectedMods() if not m.isEmpty] self.removeModule(modules) event.Skip() def fitRemoved(self, event): """ If fit is removed and active, the page is deleted. We also refresh the fit of the new current page in case delete fit caused change in stats (projected) todo: move this to the notebook, not the page. We don't want the page being responsible for deleting itself """ pyfalog.debug("FittingView::fitRemoved") if not self: event.Skip() return if event.fitID == self.getActiveFit(): pyfalog.debug(" Deleted fit is currently active") self.parent.DeletePage(self.parent.GetPageIndex(self)) try: # Sometimes there is no active page after deletion, hence the try block sFit = Fit.getInstance() # stopgap for #1384 fit = sFit.getFit(self.getActiveFit()) if fit: sFit.refreshFit(self.getActiveFit()) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(self.activeFitID,))) except RuntimeError: pyfalog.warning("Caught dead object") pass event.Skip() def fitRenamed(self, event): if not self: event.Skip() return fitID = event.fitID if fitID == self.getActiveFit(): self.updateTab() event.Skip() def fitSelected(self, event): pyfalog.debug('====== Fit Selected: ' + repr(self) + str(bool(self))) if self.parent.IsActive(self): fitID = event.fitID startup = getattr(event, "startup", False) self.activeFitID = fitID sFit = Fit.getInstance() self.updateTab() if not startup or startup == 2: # see OpenFitsThread in gui.mainFrame self.Show(fitID is not None) self.slotsChanged() sFit.switchFit(fitID) # @todo pheonix: had to disable this as it was causing a crash at the wxWidgets level. Dunno why, investigate wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def updateTab(self): sFit = Fit.getInstance() fit = sFit.getFit(self.getActiveFit(), basic=True) bitmap = BitmapLoader.getImage("race_%s_small" % fit.ship.item.race, "gui") text = "%s: %s" % (fit.ship.item.name, fit.name) pageIndex = self.parent.GetPageIndex(self) if pageIndex is not None: self.parent.SetPageTextIcon(pageIndex, text, bitmap) def appendItem(self, event): """ Adds items that are double clicks from the market browser. We handle both modules and ammo """ if not self: event.Skip() return if self.parent.IsActive(self): itemID = event.itemID fitID = self.activeFitID if fitID is not None: item = Market.getInstance().getItem(itemID, eager='group.category') if item is None: event.Skip() return batchOp = wx.GetMouseState().GetModifiers() == wx.MOD_ALT and getattr(event, 'allowBatch', None) is not False if (item.isModule and not batchOp) or item.isSubsystem: self.mainFrame.command.Submit(cmd.GuiAddLocalModuleCommand(fitID=fitID, itemID=itemID)) elif item.isModule and batchOp: self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand(fitID=fitID, itemID=itemID)) event.Skip() def removeItem(self, event): """Double Left Click - remove module""" if event.GetModifiers() == wx.MOD_CONTROL: return row, _ = self.HitTest(event.Position) if row != -1 and row not in self.blanks and isinstance(self.mods[row], Module): col = self.getColumn(event.Position) if col != self.getColIndex(State): try: mod = self.mods[row] except IndexError: return if not isinstance(mod, Module) or mod.isEmpty: return if event.GetModifiers() == wx.MOD_ALT: fit = Fit.getInstance().getFit(self.activeFitID) positions = getSimilarModPositions(fit.modules, mod) self.mainFrame.command.Submit(cmd.GuiRemoveLocalModuleCommand( fitID=self.activeFitID, positions=positions)) else: self.removeModule(mod) else: if "wxMSW" in wx.PlatformInfo: self.click(event) def removeModule(self, modules): """Removes a list of modules from the fit""" if not isinstance(modules, list): modules = [modules] fit = Fit.getInstance().getFit(self.activeFitID) positions = [] for position, mod in enumerate(fit.modules): if mod in modules: positions.append(position) self.mainFrame.command.Submit(cmd.GuiRemoveLocalModuleCommand( fitID=self.activeFitID, positions=positions)) def addModule(self, x, y, itemID): """Add a module from the market browser (from dragging it)""" fitID = self.mainFrame.getActiveFit() item = Market.getInstance().getItem(itemID) fit = Fit.getInstance().getFit(fitID) dstRow, _ = self.HitTest((x, y)) if dstRow == -1 or dstRow in self.blanks: dstMod = None else: try: dstMod = self.mods[dstRow] except IndexError: dstMod = None if not isinstance(dstMod, Module): dstMod = None if dstMod not in fit.modules: dstMod = None dstPos = fit.modules.index(dstMod) if dstMod is not None else None mstate = wx.GetMouseState() # If we dropping on a module, try to replace, or add if replacement fails if item.isModule and dstMod is not None and not dstMod.isEmpty: positions = getSimilarModPositions(fit.modules, dstMod) if mstate.GetModifiers() == wx.MOD_ALT else [dstPos] command = cmd.GuiReplaceLocalModuleCommand(fitID=fitID, itemID=itemID, positions=positions) if not self.mainFrame.command.Submit(command): if mstate.GetModifiers() == wx.MOD_ALT: self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand(fitID=fitID, itemID=itemID)) else: self.mainFrame.command.Submit(cmd.GuiAddLocalModuleCommand(fitID=fitID, itemID=itemID)) elif item.isModule: if mstate.GetModifiers() == wx.MOD_ALT: self.mainFrame.command.Submit(cmd.GuiFillWithNewLocalModulesCommand(fitID=fitID, itemID=itemID)) elif dstPos is not None: self.mainFrame.command.Submit(cmd.GuiReplaceLocalModuleCommand(fitID=fitID, itemID=itemID, positions=[dstPos])) else: self.mainFrame.command.Submit(cmd.GuiAddLocalModuleCommand(fitID=fitID, itemID=itemID)) elif item.isSubsystem: self.mainFrame.command.Submit(cmd.GuiAddLocalModuleCommand(fitID=fitID, itemID=itemID)) elif item.isCharge: failoverToAll = False positionsAll = list(range(len(fit.modules))) if dstMod is None or dstMod.isEmpty: positions = positionsAll elif mstate.GetModifiers() == wx.MOD_ALT: positions = getSimilarModPositions(fit.modules, dstMod) failoverToAll = True else: positions = [fit.modules.index(dstMod)] if len(positions) > 0: command = cmd.GuiChangeLocalModuleChargesCommand(fitID=fitID, positions=positions, chargeItemID=itemID) if not self.mainFrame.command.Submit(command) and failoverToAll: self.mainFrame.command.Submit(cmd.GuiChangeLocalModuleChargesCommand( fitID=fitID, positions=positionsAll, chargeItemID=itemID)) def swapCargo(self, x, y, cargoItemID): """Swap a module from cargo to fitting window""" dstRow, _ = self.HitTest((x, y)) if dstRow != -1 and dstRow not in self.blanks: mod = self.mods[dstRow] if not isinstance(mod, Module): return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if mod in fit.modules: position = fit.modules.index(mod) self.mainFrame.command.Submit(cmd.GuiCargoToLocalModuleCommand( fitID=fitID, cargoItemID=cargoItemID, modPosition=position, copy=wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL)) def swapItems(self, x, y, srcIdx): """Swap two modules in fitting window""" sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) dstRow, _ = self.HitTest((x, y)) if dstRow != -1 and dstRow not in self.blanks: try: mod1 = fit.modules[srcIdx] mod2 = self.mods[dstRow] except IndexError: return if not isinstance(mod2, Module): return # can't swap modules to different racks if mod1.slot != mod2.slot: return if mod2 not in fit.modules: pyfalog.error("Missing module position for: {0}", str(getattr(mod2, "ID", "Unknown"))) return mod2Position = fit.modules.index(mod2) mstate = wx.GetMouseState() if mstate.GetModifiers() == wx.MOD_CONTROL | wx.MOD_ALT: self.mainFrame.command.Submit(cmd.GuiFillWithClonedLocalModulesCommand( fitID=self.activeFitID, position=srcIdx)) elif mstate.GetModifiers() == wx.MOD_CONTROL and mod2.isEmpty: self.mainFrame.command.Submit(cmd.GuiCloneLocalModuleCommand( fitID=self.activeFitID, srcPosition=srcIdx, dstPosition=mod2Position)) elif mstate.GetModifiers() == wx.MOD_NONE: self.mainFrame.command.Submit(cmd.GuiSwapLocalModulesCommand( fitID=self.activeFitID, position1=srcIdx, position2=mod2Position)) def generateMods(self): """ Generate module list. This also injects dummy modules to visually separate racks. These modules are only known to the display, and not the backend, so it's safe. """ sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) slotOrder = [ FittingSlot.SUBSYSTEM, FittingSlot.HIGH, FittingSlot.MED, FittingSlot.LOW, FittingSlot.RIG, FittingSlot.SERVICE ] if fit is not None: self.mods = [mod for mod in fit.modules if mod is not None] def _get_sort_key(mod): slot = getattr(mod, "slot", None) try: slot_index = slotOrder.index(slot) except ValueError: # During rapid fit switches we may briefly see transient modules # with unresolved slot references; keep UI stable by sorting them last. slot_index = len(slotOrder) return slot_index, getattr(mod, "position", 0) self.mods.sort(key=_get_sort_key) # Blanks is a list of indexes that mark non-module positions (such # as Racks and tactical Modes. This allows us to skip over common # module operations such as swapping, removing, copying, etc. that # would otherwise cause complications self.blanks = [] # preliminary markers where blanks will be inserted if sFit.serviceFittingOptions["rackSlots"]: # flag to know when to add blanks, based on previous slot if sFit.serviceFittingOptions["rackLabels"] or len(self.mods) == 0: slotDivider = None else: slotDivider = self.mods[0].slot # first loop finds where slot dividers must go before modifying self.mods for i, mod in enumerate(self.mods): if mod.slot != slotDivider: slotDivider = mod.slot self.blanks.append((i, slotDivider)) # where and what # second loop modifies self.mods, rewrites self.blanks to represent actual index of blanks for i, (x, slot) in enumerate(self.blanks): self.blanks[i] = x + i # modify blanks with actual index self.mods.insert(x + i, Rack.buildRack(slot, sum(m.slot == slot for m in self.mods))) if fit.mode: # Modes are special snowflakes and need a little manual loving # We basically append the Mode rack and Mode to the modules # while also marking the mode header position in the Blanks list if sFit.serviceFittingOptions["rackSlots"]: self.blanks.append(len(self.mods)) self.mods.append(Rack.buildRack(FittingSlot.MODE, None)) self.mods.append(fit.mode) else: self.mods = None def slotsChanged(self): self.generateMods() self.populate(self.mods) def fitChanged(self, event): event.Skip() if not self: return activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return try: if self.activeFitID is not None and self.activeFitID == activeFitID: self.generateMods() if self.GetItemCount() != len(self.mods): # This only happens when turning on/off slot divisions self.populate(self.mods) self.refresh(self.mods) self.Refresh() self.Show(self.activeFitID is not None and self.activeFitID == activeFitID) except RuntimeError: pyfalog.error("Caught dead object") def spawnMenu(self, event): clickedPos = self.getRowByAbs(event.Position) self.ensureSelection(clickedPos) if self.activeFitID is None or self.getColumn(self.screenToClientFixed(event.Position)) == self.getColIndex(State): return selection = [] for mod in self.getSelectedMods(): # Test if this is a mode, which is a special snowflake of a Module if isinstance(mod, Mode): selection.append(mod) elif not mod.isEmpty: selection.append(mod) fit = Fit.getInstance().getFit(self.activeFitID) mainMod = None if clickedPos != -1: try: mod = self.mods[clickedPos] except IndexError: pass else: if mod is not None and (mod in fit.modules or mod is fit.mode): mainMod = mod sMkt = Market.getInstance() contexts = [] if isinstance(mainMod, Module) and not mainMod.isEmpty: srcContext = "fittingModule" itemContext = sMkt.getCategoryByItem(mainMod.item).displayName fullContext = (srcContext, itemContext) if srcContext not in tuple(fCtx[0] for fCtx in contexts): contexts.append(fullContext) if mainMod.charge is not None: srcContext = "fittingCharge" itemContext = sMkt.getCategoryByItem(mainMod.charge).displayName fullContext = (srcContext, itemContext) if srcContext not in tuple(fCtxt[0] for fCtxt in contexts): contexts.append(fullContext) elif isinstance(mainMod, Mode): srcContext = "fittingMode" itemContext = _t("Tactical Mode") fullContext = (srcContext, itemContext) if srcContext not in tuple(fCtx[0] for fCtx in contexts): contexts.append(fullContext) contexts.append(("fittingShip", _t("Ship") if not fit.isStructure else _t("Citadel"))) menu = ContextMenu.getMenu(self, mainMod, selection, *contexts) self.PopupMenu(menu) def click(self, event): """ Handle click event on modules. This is only useful for the State column. If multiple items are selected, and we have clicked the State column, iterate through the selections and change State """ clickedRow, _, col = self.HitTestSubItem(event.Position) # only do State column and ignore invalid rows if clickedRow != -1 and clickedRow not in self.blanks and col == self.getColIndex(State): selectedRows = [] currentRow = self.GetFirstSelected() while currentRow != -1 and clickedRow not in self.blanks: selectedRows.append(currentRow) currentRow = self.GetNextSelected(currentRow) if clickedRow not in selectedRows: try: selectedMods = [self.mods[clickedRow]] except IndexError: return else: selectedMods = self.getSelectedMods() click = "ctrl" if event.GetModifiers() == wx.MOD_CONTROL or event.middleIsDown else "right" if event.GetButton() == 3 else "left" try: mainMod = self.mods[clickedRow] except IndexError: return if mainMod.isEmpty: return fitID = self.mainFrame.getActiveFit() fit = Fit.getInstance().getFit(fitID) if mainMod not in fit.modules: return mainPosition = fit.modules.index(mainMod) if event.GetModifiers() == wx.MOD_ALT: positions = getSimilarModPositions(fit.modules, mainMod) else: positions = [] for position, mod in enumerate(fit.modules): if mod in selectedMods: positions.append(position) self.mainFrame.command.Submit(cmd.GuiChangeLocalModuleStatesCommand( fitID=fitID, mainPosition=mainPosition, positions=positions, click=click)) # update state tooltip tooltip = self.activeColumns[col].getToolTip(self.mods[clickedRow]) if tooltip: self.SetToolTip(tooltip) else: event.Skip() def slotColour(self, slot): if isDark(): return slotColourMapDark.get(slot) or self.GetBackgroundColour() else: return slotColourMap.get(slot) or self.GetBackgroundColour() def refresh(self, stuff): """ Displays fitting Sends data to d.Display.refresh where the rows and columns are set up, then does a bit of post-processing (colors) """ self.Freeze() d.Display.refresh(self, stuff) sFit = Fit.getInstance() fit = sFit.getFit(self.activeFitID) slotMap = {} # test for too many modules (happens with t3s / CCP change in slot layout) for slot in [e.value for e in FittingSlot]: slotMap[slot] = fit.getSlotsFree(slot) < 0 for i, mod in enumerate(self.mods): self.SetItemBackgroundColour(i, self.GetBackgroundColour()) # only consider changing color if we're dealing with a Module if isinstance(mod, Module): hasRestrictionOverriden = False if not mod.isEmpty: fits = mod.fits(fit, False) hasRestrictionOverriden = getattr(mod, 'restrictionOverridden', None) # If module had broken fitting restrictions but now doesn't, # ensure it is now valid, and remove restrictionOverridden # variable. More in #1519 if not fit.ignoreRestrictions and hasRestrictionOverriden: clean = False if fits: if not mod.hardpoint: clean = True elif fit.getHardpointsFree(mod.hardpoint) >= 0: clean = True if clean: del mod.restrictionOverridden hasRestrictionOverriden = not hasRestrictionOverriden if slotMap[mod.slot] or hasRestrictionOverriden: # Color too many modules as red self.SetItemBackgroundColour(i, errColorDark if isDark() else errColor) elif sFit.serviceFittingOptions["colorFitBySlot"]: # Color by slot it enabled self.SetItemBackgroundColour(i, self.slotColour(mod.slot)) # Set rack face to bold if isinstance(mod, Rack) and \ sFit.serviceFittingOptions["rackSlots"] and \ sFit.serviceFittingOptions["rackLabels"]: self.font.SetWeight(wx.FONTWEIGHT_BOLD) self.SetItemFont(i, self.font) else: self.font.SetWeight(wx.FONTWEIGHT_NORMAL) self.SetItemFont(i, self.font) self.Thaw() self.itemCount = self.GetItemCount() # if 'wxMac' in wx.PlatformInfo: # try: # self.MakeSnapshot() # except Exception as e: # pyfalog.critical("Failed to make snapshot") # pyfalog.critical(e) def OnShow(self, event): if self and not self.IsShown(): try: self.MakeSnapshot() except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Failed to make snapshot") pyfalog.critical(e) event.Skip() def Snapshot(self): return self.FVsnapshot # noinspection PyPropertyAccess def MakeSnapshot(self, maxColumns=1337): if self.FVsnapshot: self.FVsnapshot = None tbmp = wx.Bitmap(16, 16) tdc = wx.MemoryDC() tdc.SelectObject(tbmp) tdc.SetFont(self.font) columnsWidths = [] for i in range(len(self.DEFAULT_COLS)): columnsWidths.append(0) sFit = Fit.getInstance() try: fit = sFit.getFit(self.activeFitID) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Failed to get fit") pyfalog.critical(e) return if fit is None: return slotMap = {} for slot in [e.value for e in FittingSlot]: slotMap[slot] = fit.getSlotsFree(slot) < 0 padding = 2 isize = 16 headerSize = max(isize, tdc.GetTextExtent("W")[0]) + padding * 2 maxRowHeight = isize rows = 0 for st in self.mods: for i, col in enumerate(self.activeColumns): if i > maxColumns: break name = col.getText(st) if not isinstance(name, str): name = "" nx, ny = tdc.GetTextExtent(name) imgId = col.getImageId(st) cw = 0 if imgId != -1: cw += isize + padding if name != "": cw += nx + 4 * padding if imgId == -1 and name == "": cw += isize + padding maxRowHeight = max(ny, maxRowHeight) columnsWidths[i] = max(columnsWidths[i], cw) rows += 1 render = wx.RendererNative.Get() # Fix column widths (use biggest between header or items) for i, col in enumerate(self.activeColumns): if i > maxColumns: break name = col.columnText imgId = col.imageId if not isinstance(name, str): name = "" opts = wx.HeaderButtonParams() if name != "": opts.m_labelText = name if imgId != -1: opts.m_labelBitmap = wx.Bitmap(round(isize), round(isize)) width = render.DrawHeaderButton(self, tdc, (0, 0, 16, 16), sortArrow=wx.HDR_SORT_ICON_NONE, params=opts) columnsWidths[i] = max(columnsWidths[i], width) tdc.SelectObject(wx.NullBitmap) maxWidth = padding * 2 for i in range(len(self.DEFAULT_COLS)): if i > maxColumns: break maxWidth += columnsWidths[i] mdc = wx.MemoryDC() mbmp = wx.Bitmap(round(maxWidth), round(maxRowHeight * rows + padding * 4 + headerSize)) mdc.SelectObject(mbmp) mdc.SetBackground(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW))) mdc.Clear() mdc.SetFont(self.font) mdc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) cx = padding for i, col in enumerate(self.activeColumns): if i > maxColumns: break name = col.columnText imgId = col.imageId if not isinstance(name, str): name = "" opts = wx.HeaderButtonParams() opts.m_labelAlignment = wx.ALIGN_LEFT if name != "": opts.m_labelText = name if imgId != -1: bmp = col.bitmap opts.m_labelBitmap = bmp render.DrawHeaderButton(self, mdc, (cx, padding, columnsWidths[i], headerSize), wx.CONTROL_CURRENT, sortArrow=wx.HDR_SORT_ICON_NONE, params=opts) cx += columnsWidths[i] brush = wx.Brush(wx.Colour(224, 51, 51)) pen = wx.Pen(wx.Colour(224, 51, 51)) mdc.SetPen(pen) mdc.SetBrush(brush) cy = padding * 2 + headerSize for st in self.mods: cx = padding if slotMap[st.slot]: mdc.DrawRectangle(round(cx), round(cy), round(maxWidth - cx), round(maxRowHeight)) for i, col in enumerate(self.activeColumns): if i > maxColumns: break name = col.getText(st) if not isinstance(name, str): name = "" imgId = col.getImageId(st) tcx = cx if imgId != -1: self.imageList.Draw(imgId, mdc, cx, cy, wx.IMAGELIST_DRAW_TRANSPARENT, False) tcx += isize + padding if name != "": nx, ny = mdc.GetTextExtent(name) rect = wx.Rect() rect.top = cy rect.left = cx + 2 * padding rect.width = nx rect.height = maxRowHeight + padding mdc.DrawLabel(name, rect, wx.ALIGN_CENTER_VERTICAL) tcx += nx + padding cx += columnsWidths[i] cy += maxRowHeight mdc.SelectObject(wx.NullBitmap) self.FVsnapshot = mbmp ================================================ FILE: gui/builtinViews/implantEditor.py ================================================ import re # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements from wx.lib.buttons import GenBitmapButton import gui.builtinMarketBrowser.pfSearchBox as SBox import gui.display as d from gui.bitmap_loader import BitmapLoader from gui.marketBrowser import SearchBox from service.market import Market def stripHtml(text): text = re.sub(r'<\s*br\s*/?\s*>', '\n', text) text = re.sub(r'', '', text) return text class BaseImplantEditorView(wx.Panel): def addMarketViewImage(self, iconFile): if iconFile is None: return -1 bitmap = BitmapLoader.getBitmap(iconFile, "icons") if bitmap is None: return -1 else: return self.availableImplantsImageList.Add(bitmap) def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL) self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) pmainSizer = wx.BoxSizer(wx.HORIZONTAL) availableSizer = wx.BoxSizer(wx.VERTICAL) self.searchBox = SearchBox(self) self.itemView = ItemView(self) self.itemView.Hide() availableSizer.Add(self.searchBox, 0, wx.EXPAND) availableSizer.Add(self.itemView, 1, wx.EXPAND) self.availableImplantsTree = wx.TreeCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) root = self.availableRoot = self.availableImplantsTree.AddRoot("Available") self.availableImplantsImageList = wx.ImageList(16, 16) self.availableImplantsTree.SetImageList(self.availableImplantsImageList) availableSizer.Add(self.availableImplantsTree, 1, wx.EXPAND) pmainSizer.Add(availableSizer, 1, wx.ALL | wx.EXPAND, 5) buttonSizer = wx.BoxSizer(wx.VERTICAL) buttonSizer.AddStretchSpacer() self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap("fit_add_small", "gui"), style=wx.BORDER_NONE) buttonSizer.Add(self.btnAdd, 0) self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap("fit_delete_small", "gui"), style=wx.BORDER_NONE) buttonSizer.Add(self.btnRemove, 0) buttonSizer.AddStretchSpacer() pmainSizer.Add(buttonSizer, 0, wx.EXPAND, 0) characterImplantSizer = wx.BoxSizer(wx.VERTICAL) self.pluggedImplantsTree = AvailableImplantsView(self) characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL | wx.EXPAND, 5) pmainSizer.Add(characterImplantSizer, 1, wx.EXPAND, 5) self.SetSizer(pmainSizer) self.hoveredLeftTreeTypeID = None self.hoveredRightListRow = None # Populate the market tree sMkt = Market.getInstance() for mktGrp in sMkt.getImplantTree(): iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(mktGrp)) childId = self.availableImplantsTree.AppendItem(root, mktGrp.name, iconId, data=mktGrp.ID) if sMkt.marketGroupHasTypesCheck(mktGrp) is False: self.availableImplantsTree.AppendItem(childId, "dummy") self.availableImplantsTree.SortChildren(self.availableRoot) # Bind the event to replace dummies by real data self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.itemSelected) self.availableImplantsTree.Bind(wx.EVT_MOTION, self.OnLeftTreeMouseMove) self.availableImplantsTree.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeftTreeMouseLeave) self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemSelected) self.pluggedImplantsTree.Bind(wx.EVT_MOTION, self.OnRightListMouseMove) # Bind add & remove buttons self.btnAdd.Bind(wx.EVT_BUTTON, self.itemSelected) self.btnRemove.Bind(wx.EVT_BUTTON, self.removeItem) # We update with an empty list first to set the initial size for Layout(), then update later with actual # implants for character. This helps with sizing issues. self.pluggedImplantsTree.update([]) self.bindContext() self.Layout() self.update() def bindContext(self): # Binds self.contextChanged to whatever changes the context raise NotImplementedError() def getImplantsFromContext(self): """ Gets list of implants from current context """ raise NotImplementedError() def addImplantToContext(self, item): """ Adds implant to the current context""" raise NotImplementedError() def removeImplantFromContext(self, implant): """ Removes implant from the current context""" raise NotImplementedError() def update(self): """Updates implant list based off the current context""" self.implants = self.getImplantsFromContext()[:] self.implants.sort(key=lambda i: int(i.getModifiedItemAttr("implantness"))) self.pluggedImplantsTree.update(self.implants) def contextChanged(self, event): self.update() event.Skip() def expandLookup(self, event): tree = self.availableImplantsTree sMkt = Market.getInstance() parent = event.Item child, _ = tree.GetFirstChild(parent) text = tree.GetItemText(child) if text == "dummy" or text == "itemdummy": tree.Delete(child) # if the dummy item is a market group, replace with actual market groups if text == "dummy": # Add 'real stoof!' instead currentMktGrp = sMkt.getMarketGroup(tree.GetItemData(parent), eager="children") for childMktGrp in sMkt.getMarketGroupChildren(currentMktGrp): iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(childMktGrp)) childId = tree.AppendItem(parent, childMktGrp.name, iconId, data=childMktGrp.ID) if sMkt.marketGroupHasTypesCheck(childMktGrp) is False: tree.AppendItem(childId, "dummy") else: tree.AppendItem(childId, "itemdummy") # replace dummy with actual items if text == "itemdummy": currentMktGrp = sMkt.getMarketGroup(tree.GetItemData(parent)) items = sMkt.getItemsByMarketGroup(currentMktGrp) for item in items: iconId = self.addMarketViewImage(item.iconID) tree.AppendItem(parent, item.name, iconId, data=item) tree.SortChildren(parent) def itemSelected(self, event): if event.EventObject is self.btnAdd: # janky fix that sets EventObject so that we don't have similar code elsewhere. if self.itemView.IsShown(): event.EventObject = self.itemView else: event.EventObject = self.availableImplantsTree if event.EventObject is self.itemView: curr = event.EventObject.GetFirstSelected() while curr != -1: item = self.itemView.items[curr] self.addImplantToContext(item) curr = event.EventObject.GetNextSelected(curr) else: root = self.availableImplantsTree.GetSelection() if not root.IsOk(): return nchilds = self.availableImplantsTree.GetChildrenCount(root) if nchilds == 0: item = self.availableImplantsTree.GetItemData(root) self.addImplantToContext(item) else: event.Skip() return self.update() def removeItem(self, event): pos = self.pluggedImplantsTree.GetFirstSelected() if pos != -1: self.removeImplantFromContext(self.implants[pos]) self.update() # Due to https://github.com/wxWidgets/Phoenix/issues/1372 we cannot set tooltips on # tree itself; work this around with following two methods, by setting tooltip to # parent window def OnLeftTreeMouseMove(self, event): event.Skip() treeItemId, _ = self.availableImplantsTree.HitTest(event.Position) if not treeItemId: if self.hoveredLeftTreeTypeID is not None: self.hoveredLeftTreeTypeID = None self.SetToolTip(None) return item = self.availableImplantsTree.GetItemData(treeItemId) isImplant = getattr(item, 'isImplant', False) if not isImplant: if self.hoveredLeftTreeTypeID is not None: self.hoveredLeftTreeTypeID = None self.SetToolTip(None) return if self.hoveredLeftTreeTypeID == item.ID: return if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredLeftTreeTypeID = item.ID toolTip = wx.ToolTip(stripHtml(item.description)) toolTip.SetMaxWidth(self.GetSize().Width) self.SetToolTip(toolTip) def OnLeftTreeMouseLeave(self, event): event.Skip() self.SetToolTip(None) def OnRightListMouseMove(self, event): event.Skip() row, _, col = self.pluggedImplantsTree.HitTestSubItem(event.Position) if row != self.hoveredRightListRow: if self.pluggedImplantsTree.ToolTip is not None: self.pluggedImplantsTree.SetToolTip(None) else: self.hoveredRightListRow = row try: implant = self.implants[row] except IndexError: self.pluggedImplantsTree.SetToolTip(None) else: toolTip = wx.ToolTip(stripHtml(implant.item.description)) toolTip.SetMaxWidth(self.pluggedImplantsTree.GetSize().Width) self.pluggedImplantsTree.SetToolTip(toolTip) class AvailableImplantsView(d.Display): DEFAULT_COLS = ["attr:implantness", "Base Name"] def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) self.Bind(wx.EVT_LEFT_DCLICK, parent.removeItem) class ItemView(d.Display): DEFAULT_COLS = ["Base Icon", "Base Name"] def __init__(self, parent): d.Display.__init__(self, parent) self.parent = parent self.searchBox = parent.searchBox self.hoveredRow = None self.items = [] # Bind search actions self.searchBox.Bind(SBox.EVT_TEXT_ENTER, self.scheduleSearch) self.searchBox.Bind(SBox.EVT_SEARCH_BTN, self.scheduleSearch) self.searchBox.Bind(SBox.EVT_CANCEL_BTN, self.clearSearch) self.searchBox.Bind(SBox.EVT_TEXT, self.scheduleSearch) self.Bind(wx.EVT_MOTION, self.OnMouseMove) def clearSearch(self, event=None): if self.IsShown(): self.parent.availableImplantsTree.Show() self.Hide() self.parent.Layout() if event: self.searchBox.Clear() self.items = [] self.update(self.items) def scheduleSearch(self, event=None): sMkt = Market.getInstance() search = self.searchBox.GetLineText(0) # Make sure we do not count wildcards as search symbol realsearch = search.replace('*', '').replace('?', '') # Show nothing if query is too short if len(realsearch) < 3: self.clearSearch() return sMkt.searchItems(search, self.populateSearch, 'implants') def populateSearch(self, itemIDs): if not self.IsShown(): self.parent.availableImplantsTree.Hide() self.Show() self.parent.Layout() items = Market.getItems(itemIDs) items = [i for i in items if i.group.name != 'Booster'] self.items = sorted(list(items), key=lambda i: i.name) self.update(self.items) def OnMouseMove(self, event): event.Skip() row, _, col = self.HitTestSubItem(event.Position) if row != self.hoveredRow: if self.ToolTip is not None: self.SetToolTip(None) else: self.hoveredRow = row try: item = self.items[row] except IndexError: self.SetToolTip(None) else: toolTip = wx.ToolTip(stripHtml(item.description)) toolTip.SetMaxWidth(self.GetSize().Width) self.SetToolTip(toolTip) ================================================ FILE: gui/cachingImageList.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.bitmap_loader import BitmapLoader class CachingImageList(wx.ImageList): def __init__(self, width, height): wx.ImageList.__init__(self, width, height) self.map = {} def GetImageIndex(self, *loaderArgs): id_ = self.map.get(loaderArgs) if id_ is None: bitmap = BitmapLoader.getBitmap(*loaderArgs) if bitmap is None: return -1 id_ = self.map[loaderArgs] = wx.ImageList.Add(self, bitmap) return id_ ================================================ FILE: gui/characterEditor.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re import traceback import roman # noinspection PyPackageRequirements import wx import wx.dataview import wx.lib.agw.hyperlink # noinspection PyPackageRequirements import wx.lib.newevent from logbook import Logger # noinspection PyPackageRequirements from wx.dataview import TreeListCtrl from wx.lib.agw.floatspin import FloatSpin import config import gui.globalEvents as GE from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from gui.builtinViews.entityEditor import BaseValidator, EntityEditor, TextEntryValidatedDialog from gui.builtinViews.implantEditor import BaseImplantEditorView from gui.contextMenu import ContextMenu from gui.utils.clipboard import fromClipboard, toClipboard from service.character import Character from service.esi import Esi from service.esiAccess import APIException from service.fit import Fit from service.market import Market _t = wx.GetTranslation pyfalog = Logger(__name__) def arabicOrRomanToInt(s): m = re.match(r'\d+$', s) if m: i = int(s) else: i = roman.fromRoman(s) return i class CharacterTextValidor(BaseValidator): def __init__(self): BaseValidator.__init__(self) def Clone(self): return CharacterTextValidor() def Validate(self, win): textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() sChar = Character.getInstance() try: if len(text) == 0: raise ValueError(_t("You must supply a name for the Character!")) elif text in [x.name for x in sChar.getCharacterList()]: raise ValueError(_t("Character name already in use, please choose another.")) return True except ValueError as e: pyfalog.error(e) wx.MessageBox("{}".format(e), _t("Error")) textCtrl.SetFocus() return False class CharacterEntityEditor(EntityEditor): def __init__(self, parent): EntityEditor.__init__(self, parent, _t("Character")) self.SetEditorValidator(CharacterTextValidor) def getEntitiesFromContext(self): sChar = Character.getInstance() charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name)) # Do some processing to ensure that we have All 0 and All 5 at the top all5 = sChar.all5() all0 = sChar.all0() charList.remove(all5) charList.remove(all0) charList.insert(0, all5) charList.insert(0, all0) return charList def DoNew(self, name): sChar = Character.getInstance() return sChar.new(name) def DoRename(self, entity, name): sChar = Character.getInstance() if entity.alphaCloneID: trimmed_name = re.sub('[ \\(\u03B1\\)]+$', '', name) sChar.rename(entity, trimmed_name) else: sChar.rename(entity, name) def DoCopy(self, entity, name): sChar = Character.getInstance() copy = sChar.copy(entity) sChar.rename(copy, name) return copy def DoDelete(self, entity): sChar = Character.getInstance() sChar.delete(entity) class CharacterEditor(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Character Editor"), resizeable=True, pos=wx.DefaultPosition, size=wx.Size(950, 650) if "wxGTK" in wx.PlatformInfo else wx.Size(850, 600)) i = wx.Icon(BitmapLoader.getBitmap("character_small", "gui")) self.SetIcon(i) self.mainFrame = parent # self.disableWin = wx.WindowDisabler(self) sFit = Fit.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.entityEditor = CharacterEntityEditor(self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) # Default drop down to current fit's character self.entityEditor.setActiveEntity(sFit.character) self.viewsNBContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.sview = SkillTreeView(self.viewsNBContainer) self.iview = ImplantEditorView(self.viewsNBContainer, self) self.aview = APIView(self.viewsNBContainer) self.viewsNBContainer.AddPage(self.sview, _t("Skills")) self.viewsNBContainer.AddPage(self.iview, _t("Implants")) self.viewsNBContainer.AddPage(self.aview, _t("EVE SSO")) mainSizer.Add(self.viewsNBContainer, 1, wx.EXPAND | wx.ALL, 5) bSizerButtons = wx.BoxSizer(wx.HORIZONTAL) self.btnSaveChar = wx.Button(self, wx.ID_SAVE) self.btnSaveAs = wx.Button(self, wx.ID_SAVEAS) self.btnRevert = wx.Button(self, wx.ID_REVERT_TO_SAVED) self.btnOK = wx.Button(self, wx.ID_OK) bSizerButtons.Add(self.btnSaveChar, 0, wx.ALL, 5) bSizerButtons.Add(self.btnSaveAs, 0, wx.ALL, 5) bSizerButtons.Add(self.btnRevert, 0, wx.ALL, 5) bSizerButtons.AddStretchSpacer() bSizerButtons.Add(self.btnOK, 0, wx.ALL, 5) self.btnSaveChar.Bind(wx.EVT_BUTTON, self.saveChar) self.btnSaveAs.Bind(wx.EVT_BUTTON, self.saveCharAs) self.btnRevert.Bind(wx.EVT_BUTTON, self.revertChar) self.btnOK.Bind(wx.EVT_BUTTON, self.editingFinished) mainSizer.Add(bSizerButtons, 0, wx.EXPAND, 5) self.btnRestrict() self.SetSizer(mainSizer) self.Layout() self.SetMinSize(self.GetSize()) self.Centre(wx.BOTH) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList) self.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged) self.charChanged(None) def btnRestrict(self): char = self.entityEditor.getActiveEntity() # enable/disable character saving stuff self.btnSaveChar.Enable(not char.ro and char.isDirty) self.btnSaveAs.Enable(char.isDirty) self.btnRevert.Enable(char.isDirty) self.sview.importBtn.Enable(not char.ro) def refreshCharacterList(self, event=None): """This is only called when we save a modified character""" active = self.entityEditor.getActiveEntity() self.entityEditor.refreshEntityList(active) self.btnRestrict() if event: event.Skip() def editingFinished(self, event): self.Close() def saveChar(self, event): sChr = Character.getInstance() char = self.entityEditor.getActiveEntity() sChr.saveCharacter(char.ID) wx.PostEvent(self, GE.CharListUpdated()) def saveCharAs(self, event): char = self.entityEditor.getActiveEntity() self.SaveCharacterAs(self, char.ID) wx.PostEvent(self, GE.CharListUpdated()) def revertChar(self, event): sChr = Character.getInstance() char = self.entityEditor.getActiveEntity() sChr.revertCharacter(char.ID) wx.PostEvent(self, GE.CharListUpdated()) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def OnClose(self, event): wx.PostEvent(self.mainFrame, GE.CharListUpdated()) sFit = Fit.getInstance() fitID = self.mainFrame.getActiveFit() if fitID is not None: sFit.clearFit(fitID) wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def restrict(self): self.entityEditor.btnRename.Enable(False) self.entityEditor.btnDelete.Enable(False) def unrestrict(self): self.entityEditor.btnRename.Enable() self.entityEditor.btnDelete.Enable() def charChanged(self, event): char = self.entityEditor.getActiveEntity() if char.name in ("All 0", "All 5"): self.restrict() else: self.unrestrict() self.btnRestrict() if event is not None: event.Skip() @staticmethod def SaveCharacterAs(parent, charID): sChar = Character.getInstance() name = sChar.getCharName(charID) with TextEntryValidatedDialog( parent, CharacterTextValidor, _t("Enter a name for your new Character:"), _t("Save Character As...") ) as dlg: dlg.SetValue(_t("{} Copy").format(name)) dlg.txtctrl.SetInsertionPointEnd() dlg.CenterOnParent() if dlg.ShowModal() == wx.ID_OK: sChar = Character.getInstance() return sChar.saveCharacterAs(charID, dlg.txtctrl.GetValue().strip()) class SkillTreeView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL) self.charEditor = self.Parent.Parent # first parent is Notebook, second is Character Editor self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) pmainSizer = wx.BoxSizer(wx.VERTICAL) hSizer = wx.BoxSizer(wx.HORIZONTAL) self.clonesChoice = wx.Choice(self, wx.ID_ANY, style=0) i = self.clonesChoice.Append("Omega Clone", None) self.clonesChoice.SetSelection(i) hSizer.Add(self.clonesChoice, 5, wx.ALL | wx.EXPAND, 5) self.searchInput = wx.SearchCtrl(self, wx.ID_ANY) hSizer.Add(self.searchInput, 1, wx.ALL | wx.EXPAND, 5) self.searchInput.Bind(wx.EVT_TEXT, self.delaySearch) sChar = Character.getInstance() self.alphaClones = sChar.getAlphaCloneList() char = self.charEditor.entityEditor.getActiveEntity() for clone in self.alphaClones: i = self.clonesChoice.Append(clone.alphaCloneName, clone.ID) if clone.ID == char.alphaCloneID: self.clonesChoice.SetSelection(i) self.clonesChoice.Bind(wx.EVT_CHOICE, self.cloneChanged) self.clonesChoice.SetToolTip( wx.ToolTip(_t("Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels."))) pmainSizer.Add(hSizer, 0, wx.EXPAND | wx.ALL, 5) # Set up timer for skill search self.searchTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.populateSkillTreeSkillSearch, self.searchTimer) tree = self.skillTreeListCtrl = TreeListCtrl(self, wx.ID_ANY, style=wx.dataview.TL_DEFAULT_STYLE) pmainSizer.Add(tree, 1, wx.EXPAND | wx.ALL, 5) self.imageList = wx.ImageList(16, 16) tree.SetImageList(self.imageList) self.skillBookImageId = self.imageList.Add(wx.Icon(BitmapLoader.getBitmap("skill_small", "gui"))) self.skillBookDirtyImageId = self.imageList.Add(wx.Icon(BitmapLoader.getBitmap("skill_small_red", "gui"))) tree.AppendColumn(_t("Skill")) tree.AppendColumn(_t("Level")) # tree.SetMainColumn(0) self.root = tree.GetRootItem() # self.root = tree.AppendItem(root, "Skills") # # tree.SetItemText(self.root, 1, "Levels") # first one doesn't work right in Windows. Second one doesn't work right in GTK. Together, we make sure it works. # Gotta love wx tree.SetColumnWidth(0, 525) tree.SetColumnWidth(1, 100) self.secStatusLabel = _t("Sec Status: {0:.2f}") self.btnSecStatus = wx.Button(self, wx.ID_ANY, self.secStatusLabel.format(char.secStatus or 0.0)) self.btnSecStatus.Bind(wx.EVT_BUTTON, self.onSecStatus) self.populateSkillTree() tree.Bind(wx.dataview.EVT_TREELIST_ITEM_ACTIVATED, self.expand) tree.Bind(wx.dataview.EVT_TREELIST_ITEM_EXPANDING, self.expandLookup) tree.Bind(wx.dataview.EVT_TREELIST_ITEM_CONTEXT_MENU, self.spawnMenu) bSizerButtons = wx.BoxSizer(wx.HORIZONTAL) bSizerButtons.Add(self.btnSecStatus, 0, wx.ALL, 5) bSizerButtons.AddStretchSpacer() importExport = ((_t("Import skills from clipboard"), wx.ART_FILE_OPEN, "import"), (_t("Export skills to clipboard"), wx.ART_FILE_SAVE_AS, "export")) for tooltip, art, attr in importExport: bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON) btn = wx.BitmapButton(self, wx.ID_ANY, bitmap) btn.SetMinSize(btn.GetSize()) btn.SetMaxSize(btn.GetSize()) btn.Layout() setattr(self, "{}Btn".format(attr), btn) btn.Enable(True) btn.SetToolTip(tooltip) bSizerButtons.Add(btn, 0, wx.ALL, 5) btn.Bind(wx.EVT_BUTTON, getattr(self, "{}Skills".format(attr))) pmainSizer.Add(bSizerButtons, 0, wx.EXPAND, 5) # bind the Character selection event self.charEditor.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged) self.charEditor.Bind(GE.CHAR_LIST_UPDATED, self.populateSkillTree) # Context menu stuff self.idUnlearned = wx.NewId() self.levelIds = {} self.idLevels = {} self.levelIds[self.idUnlearned] = _t("Not learned") for level in range(6): id = wx.NewId() self.levelIds[id] = level self.idLevels[level] = id self.revertID = wx.NewId() self.saveID = wx.NewId() self.SetSizer(pmainSizer) # This cuases issues with GTK, see #1866 # self.Layout() # For level keyboard shortcuts self.ChangeLevelEvent, CHANGE_LEVEL_EVENT = wx.lib.newevent.NewEvent() self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Bind(CHANGE_LEVEL_EVENT, self.changeLevel) def kbEvent(self, event): keyLevelMap = { # Regular number keys 48: 0, 49: 1, 50: 2, 51: 3, 52: 4, 53: 5, # Numpad keys wx.WXK_NUMPAD0: 0, wx.WXK_NUMPAD1: 1, wx.WXK_NUMPAD2: 2, wx.WXK_NUMPAD3: 3, wx.WXK_NUMPAD4: 4, wx.WXK_NUMPAD5: 5} keycode = event.GetKeyCode() if keycode in keyLevelMap and event.GetModifiers() == wx.MOD_NONE: level = keyLevelMap[keycode] selection = self.skillTreeListCtrl.GetSelection() if selection: dataType, skillID = self.skillTreeListCtrl.GetItemData(selection) if dataType == 'skill': event = self.ChangeLevelEvent() event.SetId(self.idLevels[level]) wx.PostEvent(self, event) return event.Skip() def importSkills(self, evt): with wx.MessageDialog( self, (_t("Importing skills into this character will set the skill levels as pending. To save the skills " "permanently, please click the Save button at the bottom of the window after importing")), _t("Import Skills"), wx.OK ) as dlg: dlg.ShowModal() text = fromClipboard().strip() if text: sCharacter = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() try: lines = text.splitlines() for l in lines: s = l.strip() skill, level = s.rsplit(None, 1)[0], arabicOrRomanToInt(s.rsplit(None, 1)[1]) skill = char.getSkill(skill) if skill: sCharacter.changeLevel(char.ID, skill.item.ID, level) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.error(e) with wx.MessageDialog(self, _t("There was an error importing skills, please see log file"), _t("Error"), wx.ICON_ERROR) as dlg: dlg.ShowModal() finally: self.charEditor.btnRestrict() self.populateSkillTree() self.charEditor.entityEditor.refreshEntityList(char) def exportSkills(self, evt): char = self.charEditor.entityEditor.getActiveEntity() skills = sorted(char.__class__.getSkillNameMap().keys()) list = "" for s in skills: skill = char.getSkill(s) list += "{} {}\n".format(skill.item.name, skill.level) toClipboard(list) def exportSkillsSuperCondensed(self, evt): char = self.charEditor.entityEditor.getActiveEntity() skills = {} explicit_levels = {} implicit_levels = {} for s in char.__class__.getSkillNameMap().keys(): skill = char.getSkill(s) if skill.level < 1: continue skills[skill.item.ID] = skill explicit_levels[skill.item.ID] = skill.level for skill in skills.values(): for req_skill, level in skill.item.requiredSkills.items(): if req_skill.ID not in implicit_levels or implicit_levels[req_skill.ID] < level: implicit_levels[req_skill.ID] = level condensed = {} for typeID, level in explicit_levels.items(): if typeID not in implicit_levels or implicit_levels[typeID] < level: condensed[skills[typeID].item.name] = level lines = [] for skill in sorted(condensed): lines.append(f'{skill}\t{condensed[skill]}') toClipboard('\n'.join(lines)) def onSecStatus(self, event): sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() with SecStatusDialog(self, char.secStatus or 0.0) as dlg: if dlg.ShowModal() == wx.ID_OK: value = dlg.floatSpin.GetValue() sChar.setSecStatus(char, value) self.btnSecStatus.SetLabel(self.secStatusLabel.format(value)) def delaySearch(self, evt): if self.searchInput.GetValue() == "": self.populateSkillTree() else: self.searchTimer.Stop() self.searchTimer.Start(150, True) # 150ms def cloneChanged(self, event): sChar = Character.getInstance() sChar.setAlphaClone(self.charEditor.entityEditor.getActiveEntity(), event.ClientData) self.populateSkillTree() def charChanged(self, event=None): self.searchInput.SetValue("") char = self.charEditor.entityEditor.getActiveEntity() for i in range(self.clonesChoice.GetCount()): cloneID = self.clonesChoice.GetClientData(i) if char.alphaCloneID == cloneID: self.clonesChoice.SetSelection(i) self.btnSecStatus.SetLabel(self.secStatusLabel.format(char.secStatus or 0.0)) self.populateSkillTree(event) def populateSkillTreeSkillSearch(self, event=None): sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() try: search = self.searchInput.GetLineText(0) except AttributeError: search = self.searchInput.GetValue() root = self.root tree = self.skillTreeListCtrl tree.DeleteAllItems() for id, name in sChar.getSkillsByName(search): iconId = self.skillBookImageId level, dirty = sChar.getSkillLevel(char.ID, id) if dirty: iconId = self.skillBookDirtyImageId childId = tree.AppendItem(root, name, iconId, data=('skill', id)) tree.SetItemText(childId, 1, _t("Level {}").format(int(level)) if isinstance(level, float) else level) def populateSkillTree(self, event=None): sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() dirtyGroups = set([skill.item.group.ID for skill in char.dirtySkills]) if char.name in ("All 0", "All 5"): self.clonesChoice.Disable() self.btnSecStatus.Disable() else: self.clonesChoice.Enable() self.btnSecStatus.Enable() groups = sChar.getSkillGroups() root = self.root tree = self.skillTreeListCtrl tree.DeleteAllItems() for id, name in groups: imageId = self.skillBookImageId if id in dirtyGroups: imageId = self.skillBookDirtyImageId childId = tree.AppendItem(root, name, imageId, data=('group', id)) tree.AppendItem(childId, "dummy") if event: event.Skip() def expand(self, event): root = event.GetItem() tree = self.skillTreeListCtrl if tree.IsExpanded(root): tree.Collapse(root) else: tree.Expand(root) def expandLookup(self, event): root = event.GetItem() tree = self.skillTreeListCtrl child = tree.GetFirstChild(root) if tree.GetItemText(child) == "dummy": tree.DeleteItem(child) # Get the real intrestin' stuff sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() data = tree.GetItemData(root) for id, name in sChar.getSkills(data[1]): iconId = self.skillBookImageId level, dirty = sChar.getSkillLevel(char.ID, id) if dirty: iconId = self.skillBookDirtyImageId childId = tree.AppendItem(root, name, iconId, data=('skill', id)) tree.SetItemText(childId, 1, _t("Level {}").format(int(level)) if isinstance(level, float) else level) def spawnMenu(self, event): item = event.GetItem() itemData = self.skillTreeListCtrl.GetItemData(item) if itemData is None: return self.skillTreeListCtrl.Select(item) thing = self.skillTreeListCtrl.GetFirstChild(item).IsOk() if thing: return id = itemData[1] eveItem = Market.getInstance().getItem(id) srcContext = "skillItem" itemContext = _t("Skill") context = (srcContext, itemContext) menu = ContextMenu.getMenu(self, eveItem, [eveItem], context) char = self.charEditor.entityEditor.getActiveEntity() if char.name not in ("All 0", "All 5"): menu.AppendSeparator() menu.Append(self.idUnlearned, _t("Unlearn")) for level in range(6): menu.Append(self.idLevels[level], _t("Level {}").format(level)) menu.Bind(wx.EVT_MENU, self.changeLevel) self.PopupMenu(menu) def changeLevel(self, event): level = self.levelIds.get(event.Id) sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() if char.name in ("All 0", "All 5"): return selection = self.skillTreeListCtrl.GetSelection() dataType, skillID = self.skillTreeListCtrl.GetItemData(selection) if level is not None: sChar.changeLevel(char.ID, skillID, level, persist=True) elif event.Id == self.revertID: sChar.revertLevel(char.ID, skillID) elif event.Id == self.saveID: sChar.saveSkill(char.ID, skillID) # After saving the skill, we need to update not just the selected skill, but all open skills due to strict skill # level setting. We don't want to refresh tree, as that will lose all expanded categories and users location # within the tree. Thus, we loop through the tree and refresh the info. # @todo: when collapsing branch, remove the data. This will make this loop more performant child = self.skillTreeListCtrl.GetFirstChild(self.root) def _setTreeSkillLevel(treeItem, skillID): lvl, dirty = sChar.getSkillLevel(char.ID, skillID) self.skillTreeListCtrl.SetItemText(treeItem, 1, _t("Level {}").format(int(lvl)) if not isinstance(lvl, str) else lvl) if not dirty: self.skillTreeListCtrl.SetItemImage(treeItem, self.skillBookImageId) while child.IsOk(): # child = Skill category dataType, id = self.skillTreeListCtrl.GetItemData(child) if dataType == 'skill': _setTreeSkillLevel(child, id) else: grand = self.skillTreeListCtrl.GetFirstChild(child) while grand.IsOk(): if self.skillTreeListCtrl.GetItemText(grand) != "dummy": _, skillID = self.skillTreeListCtrl.GetItemData(grand) _setTreeSkillLevel(grand, skillID) grand = self.skillTreeListCtrl.GetNextSibling(grand) child = self.skillTreeListCtrl.GetNextSibling(child) dirtySkills = sChar.getDirtySkills(char.ID) dirtyGroups = set([skill.item.group.ID for skill in dirtySkills]) parentID = self.skillTreeListCtrl.GetItemParent(selection) parent = self.skillTreeListCtrl.GetItemData(parentID) if parent: if parent[1] in dirtyGroups: self.skillTreeListCtrl.SetItemImage(parentID, self.skillBookImageId) event.Skip() class ImplantEditorView(BaseImplantEditorView): def __init__(self, parent, charEditor): BaseImplantEditorView.__init__(self, parent) self.determineEnabled() charEditor.Bind(GE.CHAR_CHANGED, self.contextChanged) self.pluggedImplantsTree.Bind(wx.EVT_CONTEXT_MENU, self.spawnMenu) def bindContext(self): self.Parent.Parent.entityEditor.Bind(wx.EVT_CHOICE, self.contextChanged) def contextChanged(self, event): BaseImplantEditorView.contextChanged(self, event) self.determineEnabled() def getImplantsFromContext(self): sChar = Character.getInstance() char = self.Parent.Parent.entityEditor.getActiveEntity() return sChar.getImplants(char.ID) def addImplantToContext(self, item): sChar = Character.getInstance() char = self.Parent.Parent.entityEditor.getActiveEntity() sChar.addImplant(char.ID, item.ID) def removeImplantFromContext(self, implant): sChar = Character.getInstance() char = self.Parent.Parent.entityEditor.getActiveEntity() sChar.removeImplant(char.ID, implant) def addImplants(self, implants): charEditor = self.Parent.Parent char = charEditor.entityEditor.getActiveEntity() sChar = Character.getInstance() for implant in implants: sChar.addImplant(char.ID, implant.item.ID) wx.PostEvent(charEditor, GE.CharChanged()) def spawnMenu(self, event): context = (("implantEditor",),) menu = ContextMenu.getMenu(self, None, None, *context) if menu: self.PopupMenu(menu) else: pyfalog.debug("ContextMenu.getMenu returned false do not attempt PopupMenu") def determineEnabled(self): char = self.Parent.Parent.entityEditor.getActiveEntity() if char.name in ("All 0", "All 5"): self.Enable(False) else: self.Enable() class APIView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL) self.charEditor = self.Parent.Parent # first parent is Notebook, second is Character Editor self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) pmainSizer = wx.BoxSizer(wx.VERTICAL) hintSizer = wx.BoxSizer(wx.HORIZONTAL) hintSizer.AddStretchSpacer() self.stDisabledTip = wx.StaticText(self, wx.ID_ANY, _t("You cannot link All 0 or All 5 characters to an EVE character.") + "\n" + _t("Please select another character or make a new one."), style=wx.ALIGN_CENTER) self.stDisabledTip.Wrap(-1) hintSizer.Add(self.stDisabledTip, 0, wx.TOP | wx.BOTTOM, 10) self.stDisabledTip.Hide() hintSizer.AddStretchSpacer() pmainSizer.Add(hintSizer, 0, wx.EXPAND, 5) fgSizerInput = wx.FlexGridSizer(1, 3, 0, 0) fgSizerInput.AddGrowableCol(1) fgSizerInput.SetFlexibleDirection(wx.BOTH) fgSizerInput.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) self.m_staticCharText = wx.StaticText(self, wx.ID_ANY, _t("Character:"), wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticCharText.Wrap(-1) fgSizerInput.Add(self.m_staticCharText, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 10) self.charChoice = wx.Choice(self, wx.ID_ANY, style=0) fgSizerInput.Add(self.charChoice, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 10) self.fetchButton = wx.Button(self, wx.ID_ANY, _t("Get Skills"), wx.DefaultPosition, wx.DefaultSize, 0) self.fetchButton.Bind(wx.EVT_BUTTON, self.fetchSkills) fgSizerInput.Add(self.fetchButton, 0, wx.ALL | wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 10) pmainSizer.Add(fgSizerInput, 0, wx.EXPAND, 5) pmainSizer.AddStretchSpacer() self.m_staticline1 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) pmainSizer.Add(self.m_staticline1, 0, wx.EXPAND | wx.ALL, 10) self.noCharactersTip = wx.StaticText(self, wx.ID_ANY, _t("Don't see your EVE character in the list?"), style=wx.ALIGN_CENTER) self.noCharactersTip.Wrap(-1) pmainSizer.Add(self.noCharactersTip, 0, wx.CENTER | wx.TOP | wx.BOTTOM, 0) self.addButton = wx.Button(self, wx.ID_ANY, _t("Log In with EVE SSO"), wx.DefaultPosition, wx.DefaultSize, 0) self.addButton.Bind(wx.EVT_BUTTON, self.addCharacter) pmainSizer.Add(self.addButton, 0, wx.ALL | wx.ALIGN_CENTER, 10) self.charEditor.mainFrame.Bind(GE.EVT_SSO_LOGOUT, self.ssoListChanged) self.charEditor.mainFrame.Bind(GE.EVT_SSO_LOGIN, self.ssoListChanged) self.charEditor.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged) self.charChoice.Bind(wx.EVT_CHOICE, self.ssoCharChanged) self.SetSizer(pmainSizer) self.Layout() try: self.ssoListChanged(None) except (KeyboardInterrupt, SystemExit): raise except: pass def ssoCharChanged(self, event): sChar = Character.getInstance() activeChar = self.charEditor.entityEditor.getActiveEntity() ssoChar = self.getActiveCharacter() sChar.setSsoCharacter(activeChar.ID, ssoChar) self.fetchButton.Enable(ssoChar is not None) event.Skip() def fetchSkills(self, evt): sChar = Character.getInstance() char = self.charEditor.entityEditor.getActiveEntity() sChar.apiFetch(char.ID, APIView.fetchCallback) def addCharacter(self, event): sEsi = Esi.getInstance() sEsi.login() def getActiveCharacter(self): selection = self.charChoice.GetCurrentSelection() return self.charChoice.GetClientData(selection) if selection != -1 else None def ssoListChanged(self, event): if not self: # todo: fix event not unbinding properly return self.charChanged(event) def charChanged(self, event): sChar = Character.getInstance() sEsi = Esi.getInstance() activeChar = self.charEditor.entityEditor.getActiveEntity() if event and event.EventType == GE.EVT_SSO_LOGIN.typeId and hasattr(event, 'character'): # Automatically assign the character that was just logged into sChar.setSsoCharacter(activeChar.ID, event.character.ID) sso = sChar.getSsoCharacter(activeChar.ID) self.fetchButton.Enable(sso is not None) ssoChars = sEsi.getSsoCharacters() self.charChoice.Clear() noneID = self.charChoice.Append(_t("None"), None) for char in ssoChars: currId = self.charChoice.Append(char.characterDisplay, char.ID) if sso is not None and char.ID == sso.ID: self.charChoice.SetSelection(currId) if sso is None: self.charChoice.SetSelection(noneID) # # if chars: # for charName in chars: # self.charChoice.Append(charName) # self.charChoice.SetStringSelection(char) # else: # self.charChoice.Append("No characters...", 0) # self.charChoice.SetSelection(0) # if activeChar.name in ("All 0", "All 5"): self.Enable(False) self.stDisabledTip.Show() self.Layout() else: self.Enable() self.stDisabledTip.Hide() self.Layout() if event is not None: event.Skip() @staticmethod def fetchCallback(e=None): if e: pyfalog.warn("Error fetching skill information for character for __fetchCallback") SkillFetchExceptionHandler(e) else: wx.MessageBox( _t("Successfully fetched skills"), _t("Success"), wx.ICON_INFORMATION | wx.STAY_ON_TOP) class SecStatusDialog(wx.Dialog): def __init__(self, parent, sec): super().__init__(parent, title=_t("Set Security Status"), size=(300, 175), style=wx.DEFAULT_DIALOG_STYLE) self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) bSizer1 = wx.BoxSizer(wx.VERTICAL) self.m_staticText1 = wx.StaticText(self, wx.ID_ANY, _t("Security Status is used in some CONCORD hull calculations"), wx.DefaultPosition, wx.DefaultSize, 0) self.m_staticText1.Wrap(-1) bSizer1.Add(self.m_staticText1, 1, wx.ALL | wx.EXPAND, 5) self.floatSpin = FloatSpin(self, value=sec, min_val=-10.0, max_val=5.0, increment=0.1, digits=2, size=(-1, -1)) bSizer1.Add(self.floatSpin, 0, wx.ALIGN_CENTER | wx.ALL, 5) btnOk = wx.Button(self, wx.ID_OK) bSizer1.Add(btnOk, 0, wx.ALIGN_RIGHT | wx.ALL, 5) self.SetSizer(bSizer1) self.Layout() self.Center(wx.BOTH) class SkillFetchExceptionHandler: def __init__(self, e): from gui.esiFittings import ESIExceptionHandler exc_type, exc_value, exc_trace = e if config.debug: exc_value = ''.join(traceback.format_exception(exc_type, exc_value, exc_trace)) pyfalog.warn(exc_value) try: try: raise exc_value except APIException as ex: pyfalog.error(ex) ESIExceptionHandler(ex) except Exception as ex: pyfalog.error(ex) wx.MessageBox( _t("Error fetching skill information"), _t("Error"), wx.ICON_ERROR | wx.STAY_ON_TOP) ================================================ FILE: gui/characterSelection.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import traceback # noinspection PyPackageRequirements import wx import roman from logbook import Logger import config import gui.globalEvents as GE import gui.mainFrame from gui.bitmap_loader import BitmapLoader from gui.utils.clipboard import toClipboard from service.character import Character from service.fit import Fit _t = wx.GetTranslation pyfalog = Logger(__name__) class CharacterSelection(wx.Panel): def __init__(self, parent): self.mainFrame = gui.mainFrame.MainFrame.getInstance() wx.Panel.__init__(self, parent) mainSizer = wx.BoxSizer(wx.HORIZONTAL) self.SetSizer(mainSizer) mainSizer.Add(wx.StaticText(self, wx.ID_ANY, _t("Character: ")), 0, wx.CENTER | wx.RIGHT | wx.LEFT, 3) # cache current selection to fall back in case we choose to open char editor self.charCache = None self.charChoice = wx.Choice(self) mainSizer.Add(self.charChoice, 1, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 3) self.refreshCharacterList() self.cleanSkills = BitmapLoader.getBitmap("skill_big", "gui") self.redSkills = BitmapLoader.getBitmap("skillRed_big", "gui") self.greenSkills = BitmapLoader.getBitmap("skillGreen_big", "gui") self.refresh = BitmapLoader.getBitmap("refresh", "gui") self.needsSkills = False self.btnRefresh = wx.BitmapButton(self, wx.ID_ANY, self.refresh) size = self.btnRefresh.GetSize() self.btnRefresh.SetMinSize(size) self.btnRefresh.SetMaxSize(size) self.btnRefresh.SetToolTip(_t("Refresh Skills")) self.btnRefresh.Bind(wx.EVT_BUTTON, self.refreshApi) self.btnRefresh.Enable(False) mainSizer.Add(self.btnRefresh, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 2) self.skillReqsStaticBitmap = wx.StaticBitmap(self) self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills) mainSizer.Add(self.skillReqsStaticBitmap, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.LEFT, 3) self.skillReqsStaticBitmap.Bind(wx.EVT_RIGHT_UP, self.OnContextMenu) self.Bind(wx.EVT_CHOICE, self.charChanged) self.mainFrame.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.SetMinSize(wx.Size(25, -1)) self.toggleRefreshButton() self.charChoice.Enable(False) def OnContextMenu(self, event): sFit = Fit.getInstance() fit = sFit.getFit(self.mainFrame.getActiveFit()) if not fit or not self.needsSkills: return pos = wx.GetMousePosition() pos = self.ScreenToClient(pos) menu = wx.Menu() grantItem = menu.Append(wx.ID_ANY, _t("Grant Missing Skills")) self.Bind(wx.EVT_MENU, self.grantMissingSkills, grantItem) exportItem = menu.Append(wx.ID_ANY, _t("Copy Missing Skills")) self.Bind(wx.EVT_MENU, self.exportSkills, exportItem) exportItem = menu.Append(wx.ID_ANY, _t("Copy Missing Skills (condensed)")) self.Bind(wx.EVT_MENU, self.exportSkillsCondensed, exportItem) exportItem = menu.Append(wx.ID_ANY, _t("Copy Missing Skills (EVEMon)")) self.Bind(wx.EVT_MENU, self.exportSkillsEveMon, exportItem) self.PopupMenu(menu, pos) event.Skip() def grantMissingSkills(self, evt): charID = self.getActiveCharacter() sChar = Character.getInstance() skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={}) for index in skillsMap: sChar.changeLevel(charID, skillsMap[index][1], skillsMap[index][0], ifHigher=True) self.refreshCharacterList() def getActiveCharacter(self): selection = self.charChoice.GetCurrentSelection() return self.charChoice.GetClientData(selection) if selection != -1 else None def refreshCharacterList(self, event=None): choice = self.charChoice sChar = Character.getInstance() activeChar = self.getActiveCharacter() choice.Clear() charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name)) picked = False for char in charList: currId = choice.Append(char.name, char.ID) if char.ID == activeChar: choice.SetSelection(currId) self.charChanged(None) picked = True if not picked: charID = sChar.all5ID() self.selectChar(charID) fitID = self.mainFrame.getActiveFit() sFit = Fit.getInstance() sFit.changeChar(fitID, charID) choice.Append("\u2015 " + _t("Open Character Editor") + " \u2015", -1) self.charCache = self.charChoice.GetCurrentSelection() if event is not None: event.Skip() def refreshApi(self, event): self.btnRefresh.Enable(False) sChar = Character.getInstance() sChar.apiFetch(self.getActiveCharacter(), self.refreshAPICallback) def refreshAPICallback(self, e=None): self.btnRefresh.Enable(True) if e is None: self.refreshCharacterList() else: from gui.characterEditor import SkillFetchExceptionHandler pyfalog.warn("Error fetching skill information for character for refreshAPICallback") SkillFetchExceptionHandler(e) def charChanged(self, event): fitID = self.mainFrame.getActiveFit() charID = self.getActiveCharacter() if charID == -1: # revert to previous character self.charChoice.SetSelection(self.charCache) self.mainFrame.OnShowCharacterEditor(event) return self.toggleRefreshButton() sFit = Fit.getInstance() sFit.changeChar(fitID, charID) self.charCache = self.charChoice.GetCurrentSelection() wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) def toggleRefreshButton(self): charID = self.getActiveCharacter() sChar = Character.getInstance() char = sChar.getCharacter(charID) if sChar.getCharName(charID) not in ("All 0", "All 5") and sChar.getSsoCharacter(char.ID) is not None: self.btnRefresh.Enable(True) else: self.btnRefresh.Enable(False) def selectChar(self, charID): choice = self.charChoice numItems = len(choice.GetItems()) for i in range(numItems): id_ = choice.GetClientData(i) if id_ == charID: choice.SetSelection(i) return True return False def fitChanged(self, event): """ When fit is changed, or new fit is selected """ event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return self.charChoice.Enable(activeFitID is not None) choice = self.charChoice sFit = Fit.getInstance() currCharID = choice.GetClientData(choice.GetCurrentSelection()) fit = sFit.getFit(activeFitID) newCharID = fit.character.ID if fit is not None else None if activeFitID is None: self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills) self.skillReqsStaticBitmap.SetToolTip(_t("No active fit")) else: sCharacter = Character.getInstance() self.reqs = sCharacter.checkRequirements(fit) sCharacter.skillReqsDict = {'charname': fit.character.name, 'skills': []} if len(self.reqs) == 0: self.needsSkills = False tip = _t("All skill prerequisites have been met") self.skillReqsStaticBitmap.SetBitmap(self.greenSkills) else: self.needsSkills = True tip = _t("Skills required:") + "\n" condensed = sFit.serviceFittingOptions["compactSkills"] if condensed: dict_ = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={}) for key in sorted(dict_): tip += "%s: %d\n" % (key, dict_[key][0]) else: tip += self._buildSkillsTooltip(self.reqs) self.skillReqsStaticBitmap.SetBitmap(self.redSkills) self.skillReqsStaticBitmap.SetToolTip(tip.strip()) if newCharID is None: sChar = Character.getInstance() self.selectChar(sChar.all5ID()) elif currCharID != newCharID: self.selectChar(newCharID) if not fit.calculated: self.charChanged(None) self.toggleRefreshButton() def exportSkills(self, evt): skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={}) list = "" for key in sorted(skillsMap): list += "%s %d\n" % (key, skillsMap[key][0]) toClipboard(list) def exportSkillsCondensed(self, evt): skillsMap = self._buildSkillsTooltipSuperCondensed(self.reqs, skillsMap={}) list = "" for key in sorted(skillsMap): list += "%s %d\n" % (key, skillsMap[key][0]) toClipboard(list) def exportSkillsEveMon(self, evt): skillsMap = self._buildSkillsTooltipCondensed(self.reqs, skillsMap={}) list = "" for key in sorted(skillsMap): list += "%s %s\n" % (key, roman.toRoman(skillsMap[key][0])) toClipboard(list) def _buildSkillsTooltip(self, reqs, currItem="", tabulationLevel=0): tip = "" sCharacter = Character.getInstance() if tabulationLevel == 0: for item, subReqs in reqs.items(): tip += "%s:\n" % item.name tip += self._buildSkillsTooltip(subReqs, item.name, 1) else: for name, info in reqs.items(): level, ID, more = info sCharacter.skillReqsDict['skills'].append({ 'item': currItem, 'skillID': ID, 'skill': name, 'level': level, 'indent': tabulationLevel, }) tip += "%s%s: %d\n" % (" " * tabulationLevel, name, level) tip += self._buildSkillsTooltip(more, currItem, tabulationLevel + 1) return tip def _buildSkillsTooltipCondensed(self, reqs, currItem="", tabulationLevel=0, skillsMap=None): if skillsMap is None: skillsMap = {} sCharacter = Character.getInstance() if tabulationLevel == 0: for item, subReqs in reqs.items(): skillsMap = self._buildSkillsTooltipCondensed(subReqs, item.name, 1, skillsMap) else: for name, info in reqs.items(): level, ID, more = info sCharacter.skillReqsDict['skills'].append({ 'item': currItem, 'skillID': ID, 'skill': name, 'level': level, 'indent': tabulationLevel, }) if name not in skillsMap: skillsMap[name] = level, ID elif skillsMap[name][0] < level: skillsMap[name] = level, ID skillsMap = self._buildSkillsTooltipCondensed(more, currItem, tabulationLevel + 1, skillsMap) return skillsMap def _buildSkillsTooltipSuperCondensed(self, reqs, currItem="", tabulationLevel=0, skillsMap=None): allReqs = {} implicitReqs = {} def traverseReqs(itemReqs, topLevel=True): for skillName, (skillLevel, skillTypeID, subReqs) in itemReqs.items(): if (skillTypeID, skillName) not in allReqs or allReqs[(skillTypeID, skillName)] < skillLevel: allReqs[(skillTypeID, skillName)] = skillLevel if not topLevel and (skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel): implicitReqs[skillTypeID] = skillLevel traverseReqs(subReqs, topLevel=False) for item, itemReqs in reqs.items(): traverseReqs(itemReqs) newReqs = {} for (skillTypeID, skillName), skillLevel in allReqs.items(): if skillTypeID not in implicitReqs or implicitReqs[skillTypeID] < skillLevel: newReqs[skillName] = skillLevel, skillTypeID return newReqs ================================================ FILE: gui/chrome_tabs.py ================================================ # =============================================================================== # # ToDo: Bug - when selecting close on a tab, sometimes the tab to the right is # selected, most likely due to determination of mouse position # ToDo: Tab Selection seems overly complicated. OnLeftDown finds tab at # position, and then call's CheckTabSelected which calls TabHitTest (when # we are already aware it will return due to FindTabAtPos) # ToDo: Perhaps a better way of finding tabs at position instead of looping # through them and getting their regions. Perhaps some smart trickery with # mouse pos x (all tabs have same width, so we divide x by width to find # tab index?). This will also help with finding close buttons. # ToDo: Fix page preview code (PFNotebookPagePreview) # # =============================================================================== import math from functools import lru_cache import wx import wx.lib.newevent from gui.bitmap_loader import BitmapLoader from gui.utils import color as color_utils, draw, fonts from service.fit import Fit _t = wx.GetTranslation _PageChanging, EVT_NOTEBOOK_PAGE_CHANGING = wx.lib.newevent.NewEvent() _PageChanged, EVT_NOTEBOOK_PAGE_CHANGED = wx.lib.newevent.NewEvent() _PageAdding, EVT_NOTEBOOK_PAGE_ADDING = wx.lib.newevent.NewEvent() _PageClosing, EVT_NOTEBOOK_PAGE_CLOSING = wx.lib.newevent.NewEvent() PageAdded, EVT_NOTEBOOK_PAGE_ADDED = wx.lib.newevent.NewEvent() PageClosed, EVT_NOTEBOOK_PAGE_CLOSED = wx.lib.newevent.NewEvent() class VetoAble: def __init__(self): self.__vetoed = False def Veto(self): self.__vetoed = True def isVetoed(self): return self.__vetoed class NotebookTabChangeEvent: def __init__(self, old, new): self.__old = old self.__new = new def GetOldSelection(self): return self.__old def GetSelection(self): return self.__new OldSelection = property(GetOldSelection) Selection = property(GetSelection) class PageChanging(_PageChanging, NotebookTabChangeEvent, VetoAble): def __init__(self, old, new): _PageChanging.__init__(self) NotebookTabChangeEvent.__init__(self, old, new) VetoAble.__init__(self) class PageChanged(_PageChanged, NotebookTabChangeEvent): def __init__(self, old, new, *args, **kwargs): _PageChanged.__init__(self, *args, **kwargs) NotebookTabChangeEvent.__init__(self, old, new) class PageClosing(_PageClosing, VetoAble): def __init__(self, i): _PageClosing.__init__(self) self.__index = i VetoAble.__init__(self) self.Selection = property(self.GetSelection) def GetSelection(self): return self.__index class PageAdding(_PageAdding, VetoAble): def __init__(self): _PageAdding.__init__(self) VetoAble.__init__(self) class ChromeNotebook(wx.Panel): def __init__(self, parent, can_add=True, tabWidthMode=0): """ Instance of Notebook. Initializes general layout, includes methods for setting current page, replacing pages, any public function for the notebook width modes: - 0: legacy (all tabs have equal width) - 1: all tabs take just enough space to fit text """ super().__init__(parent, wx.ID_ANY, size=(-1, -1)) self._pages = [] self._active_page = None main_sizer = wx.BoxSizer(wx.VERTICAL) tabs_sizer = wx.BoxSizer(wx.VERTICAL) self.tabs_container = _TabsContainer(self, can_add=can_add, tabWidthMode=tabWidthMode) tabs_sizer.Add(self.tabs_container, 0, wx.EXPAND) if 'wxMSW' in wx.PlatformInfo: style = wx.DOUBLE_BORDER else: style = wx.SIMPLE_BORDER back_color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) content_sizer = wx.BoxSizer(wx.VERTICAL) self.page_container = wx.Panel(self, style=style) self.page_container.SetBackgroundColour(back_color) content_sizer.Add(self.page_container, 1, wx.EXPAND, 5) main_sizer.Add(tabs_sizer, 0, wx.EXPAND, 5) main_sizer.Add(content_sizer, 1, wx.EXPAND | wx.BOTTOM, 2) self.SetSizer(main_sizer) self.Bind(wx.EVT_SIZE, self.OnSize) self.Layout() def GetPage(self, i): return self._pages[i] def SetPage(self, i, page): if i >= len(self._pages) or i is None or page is None: return old_page = self._pages[i] self._pages[i] = page if old_page == self._active_page: old_page.Destroy() self._active_page = page else: old_page.Destroy() page.Reparent(self.page_container) if self._active_page == page: self.ShowActive() def GetBorders(self): """Gets border widths to better determine page size in ShowActive()""" bx = wx.SystemSettings.GetMetric(wx.SYS_BORDER_X) by = wx.SystemSettings.GetMetric(wx.SYS_BORDER_Y) if bx < 0: bx = 1 if by < 0: by = 1 return bx, by def ReplaceActivePage(self, page): self.SetPage(self.GetSelection(), page) def GetSelectedPage(self): return self._active_page def GetPageIndex(self, page): return self._pages.index(page) if page in self._pages else None def GetSelection(self): return self.GetPageIndex(self._active_page) def GetCurrentPage(self): return self._active_page def GetPageCount(self): return len(self._pages) def NextPage(self): """Used with keyboard shortcut for next page navigation""" current_page = self.GetSelection() if current_page is None: return if current_page < self.GetPageCount() - 1: self.SetSelection(current_page + 1) new_page = current_page + 1 else: self.SetSelection(0) new_page = 0 wx.PostEvent(self, PageChanged(current_page, new_page)) def PrevPage(self): """Used with keyboard shortcut for previous page navigation""" current_page = self.GetSelection() if current_page is None: return if current_page > 0: self.SetSelection(current_page - 1) new_page = current_page - 1 else: self.SetSelection(self.GetPageCount() - 1) new_page = self.GetPageCount() - 1 wx.PostEvent(self, PageChanged(current_page, new_page)) def AddPage(self, win=None, title=None, image: wx.Image=None, closeable=True): title = title or "Empty Tab" if self._active_page: self._active_page.Hide() if not win: win = wx.Panel(self) win.Reparent(self.page_container) self.page_container.Layout() self._pages.append(win) self.tabs_container.AddTab(title, image, closeable) self._active_page = win self.ShowActive(True) def DisablePage(self, page, toggle): idx = self.GetPageIndex(page) if toggle and page == self._active_page: try: # Set page to the first non-disabled page self.SetSelection(next(i for i, _ in enumerate(self._pages) if not self.tabs_container.tabs[i].disabled)) except StopIteration: self.SetSelection(0) self.tabs_container.DisableTab(idx, toggle) def SetSelection(self, page, focus=True): old_selection = self.GetSelection() if old_selection != page: self._active_page.Hide() self._active_page = self._pages[page] self.tabs_container.SetSelected(page) self.ShowActive() if focus: self._active_page.SetFocus() wx.PostEvent(self, PageChanged(old_selection, page)) def DeletePage(self, n): page = self._pages[n] self._pages.remove(page) page.Destroy() self.tabs_container.DeleteTab(n) selection = self.tabs_container.GetSelected() if selection is not None: self._active_page = self._pages[selection] self.ShowActive() wx.PostEvent(self, PageChanged(-1, selection)) else: self._active_page = None def SwitchPages(self, src, dst): self._pages[src], self._pages[dst] = self._pages[dst], self._pages[src] def ShowActive(self, resize_only=False): """ Sets the size of the page and shows. The sizing logic adjusts for some minor sizing errors (scrollbars going beyond bounds) resize_only if we are not interested in showing the page, only setting the size @todo: is resize_only still needed? Was introduced with 8b8b97 in mid 2011 to fix a resizing bug with blank _pages, cannot reproduce 13Sept2014 """ ww, wh = self.page_container.GetSize() bx, by = self.GetBorders() ww -= bx * 4 wh -= by * 4 self._active_page.SetSize((max(ww, -1), max(wh, -1))) self._active_page.SetPosition((0, 0)) if not resize_only: self._active_page.Show() self.Layout() def IsActive(self, page): return self._active_page == page def SetPageTitle(self, i, text, refresh=True): tab = self.tabs_container.tabs[i] tab.baseText = text if refresh: self.tabs_container.AdjustTabsSize() self.Refresh() def SetPageTitleExtra(self, i, text, refresh=True): tab = self.tabs_container.tabs[i] tab.extraText = text if refresh: self.tabs_container.AdjustTabsSize() self.Refresh() def SetPageIcon(self, i, icon, refresh=True): tab = self.tabs_container.tabs[i] tab.tab_img = icon if refresh: self.tabs_container.AdjustTabsSize() self.Refresh() def SetPageTextIcon(self, i, text=wx.EmptyString, icon=None): self.SetPageTitle(i, text, False) self.SetPageIcon(i, icon, False) self.tabs_container.AdjustTabsSize() self.Refresh() def Refresh(self): self.tabs_container.Refresh() def OnSize(self, event): w, h = self.GetSize() self.tabs_container.SetSize((w, -1)) self.tabs_container.UpdateSize() self.tabs_container.Refresh() self.Layout() if self._active_page: self.ShowActive() event.Skip() class _TabRenderer: def __init__(self, size=(36, 24), text=wx.EmptyString, img: wx.Image=None, closeable=True): # tab left/right zones inclination self.ctab_left = BitmapLoader.getImage("ctableft", "gui") self.ctab_middle = BitmapLoader.getImage("ctabmiddle", "gui") self.ctab_right = BitmapLoader.getImage("ctabright", "gui") self.ctab_close = BitmapLoader.getImage("ctabclose", "gui") self.left_width = self.ctab_left.GetWidth() self.right_width = self.ctab_right.GetWidth() self.middle_width = self.ctab_middle.GetWidth() self.close_btn_width = self.ctab_close.GetWidth() width, height = size self.min_width = self.left_width + self.right_width + self.middle_width self.min_height = self.ctab_middle.GetHeight() # set minimum width and height to what is allotted to images width = max(width, self.min_width) height = max(height, self.min_height) self._disabled = False self.baseText = text self.extraText = '' self.tab_size = (width, height) self.closeable = closeable self.selected = False self.close_btn_hovering = False self.tab_bitmap = None self.tab_back_bitmap = None self.padding = 4 self.font = wx.Font(fonts.NORMAL, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False) self.tab_img = img self.position = (0, 0) # Not used internally for rendering - helper for tab container self.InitTab() @property def disabled(self): return self._disabled @disabled.setter def disabled(self, value): if value == self._disabled: # Avoid unnecessary re-rendering return self._disabled = value self._Render() @property def text(self): return self.baseText + self.extraText def SetPosition(self, position): self.position = position def GetPosition(self): return self.position def GetSize(self): return self.tab_size def SetSize(self, size): width, height = size width = max(width, self.min_width) height = max(height, self.min_height) cur_width, cur_height = self.tab_size if (width == cur_width) and (height == cur_height): return self.tab_size = (width, height) self.InitTab() def SetSelected(self, sel=True): self.selected = sel self.InitTab() def GetSelected(self): return self.selected def IsSelected(self): return self.selected def ShowCloseButtonHovering(self, hover=True): if self.close_btn_hovering != hover: self.close_btn_hovering = hover self._Render() def GetCloseButtonHoverStatus(self): return self.close_btn_hovering def GetTabRegion(self): new_region = self.CopyRegion(self.tab_region) new_region.Subtract(self.close_region) if self.closeable else self.tab_region return new_region def GetCloseButtonRegion(self): return self.CopyRegion(self.close_region) def GetMinSize(self): ebmp = wx.Bitmap(1, 1) mdc = wx.MemoryDC() mdc.SelectObject(ebmp) mdc.SetFont(self.font) textSizeX, textSizeY = mdc.GetTextExtent(self.text) totalSize = self.left_width + self.right_width + textSizeX + self.close_btn_width / 2 + 16 + self.padding * 2 mdc.SelectObject(wx.NullBitmap) return totalSize, self.tab_height def SetTabImage(self, img): self.tab_img = img def CopyRegion(self, region): rect = region.GetBox() newRegion = wx.Region(rect.X, rect.Y, rect.Width, rect.Height) newRegion.Intersect(region) return newRegion def InitTab(self): self.tab_width, self.tab_height = self.tab_size self.content_width = self.tab_width - self.left_width - self.right_width self.tab_region = None self.close_region = None self.InitColors() self.InitBitmaps() self.ComposeTabBack() self.InitTabRegions() self._Render() def InitBitmaps(self): """ Creates bitmap for tab Takes the bitmaps already set and replaces a known color (black) with the needed color, while also considering selected state. Color dependant on platform -- see InitColors(). """ if self.selected: tr, tg, tb, ta = self.selected_color else: tr, tg, tb, ta = self.inactive_color ctab_left = self.ctab_left.Copy() ctab_right = self.ctab_right.Copy() ctab_middle = self.ctab_middle.Copy() ctab_left.Replace(0, 0, 0, tr, tg, tb) ctab_right.Replace(0, 0, 0, tr, tg, tb) ctab_middle.Replace(0, 0, 0, tr, tg, tb) self.ctab_left_bmp = wx.Bitmap(ctab_left) self.ctab_right_bmp = wx.Bitmap(ctab_right) self.ctab_middle_bmp = wx.Bitmap(ctab_middle) self.ctab_close_bmp = wx.Bitmap(self.ctab_close) def ComposeTabBack(self): """ Creates the tab background bitmap based upon calculated dimension values and modified bitmaps via InitBitmaps() """ bk_bmp = wx.Bitmap(round(self.tab_width), round(self.tab_height)) mdc = wx.MemoryDC() mdc.SelectObject(bk_bmp) mdc.Clear() # draw the left bitmap mdc.DrawBitmap(self.ctab_left_bmp, 0, 0) # convert middle bitmap and scale to tab width cm = self.ctab_middle_bmp.ConvertToImage() mimg = cm.Scale(round(self.content_width), round(self.ctab_middle.GetHeight()), wx.IMAGE_QUALITY_NORMAL) mbmp = wx.Bitmap(mimg) # draw middle bitmap, offset by left mdc.DrawBitmap(mbmp, round(self.left_width), 0) # draw right bitmap offset by left + middle mdc.DrawBitmap(self.ctab_right_bmp, round(self.content_width + self.left_width), 0) mdc.SelectObject(wx.NullBitmap) if self.tab_back_bitmap: del self.tab_back_bitmap self.tab_back_bitmap = bk_bmp def InitTabRegions(self): """ Initializes regions for tab, which makes it easier to determine if given coordinates are included in a region """ self.tab_region = wx.Region(self.tab_back_bitmap) self.close_region = wx.Region(self.ctab_close_bmp) x_offset = self.content_width \ + self.left_width \ - self.ctab_close_bmp.GetWidth() / 2 y_offset = (self.tab_height - self.ctab_close_bmp.GetHeight()) / 2 self.close_region.Offset(round(x_offset), round(y_offset)) def InitColors(self): """Determines colors used for tab, based on system settings""" self.tab_color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE) self.inactive_color = color_utils.GetSuitable(self.tab_color, 0.25) self.selected_color = color_utils.GetSuitable(self.tab_color, 0.10) def Render(self): return self.tab_bitmap def _Render(self): """Renders the tab, complete with the icon, text, and close button""" if self.tab_bitmap: del self.tab_bitmap height = self.tab_height canvas = wx.Bitmap(round(self.tab_width), round(self.tab_height), 24) mdc = wx.MemoryDC() mdc.SelectObject(canvas) mdc.Clear() mdc.DrawBitmap(self.tab_back_bitmap, 0, 0, True) # draw the tab icon if self.tab_img: bmp = wx.Bitmap(self.tab_img.ConvertToGreyscale() if self.disabled else self.tab_img) # @todo: is this conditional relevant anymore? if self.content_width > 16: # Draw tab icon mdc.DrawBitmap( bmp, round(self.left_width + self.padding - bmp.GetWidth() / 2), round((height - bmp.GetHeight()) / 2)) # draw close button if self.closeable: if self.close_btn_hovering: cbmp = self.ctab_close_bmp else: cimg = self.ctab_close_bmp.ConvertToImage() cimg = cimg.AdjustChannels(0.7, 0.7, 0.7, 0.3) cbmp = wx.Bitmap(cimg) mdc.DrawBitmap( cbmp, round(self.content_width + self.left_width - cbmp.GetWidth() / 2), round((height - cbmp.GetHeight()) / 2)) mdc.SelectObject(wx.NullBitmap) canvas.SetMaskColour((0x12, 0x23, 0x32)) img = canvas.ConvertToImage() if not img.HasAlpha(): img.InitAlpha() bmp = wx.Bitmap(img) self.tab_bitmap = bmp # We draw the text separately in order to draw it directly on the native DC, rather than a memory one, because # drawing text on a memory DC draws it blurry on HD/Retina screens def DrawText(self, dc): height = self.tab_height dc.SetFont(self.font) if self.tab_img: text_start = self.left_width + self.padding + self.tab_img.GetWidth() / 2 else: text_start = self.left_width maxsize = self.tab_width \ - text_start \ - self.right_width \ - self.padding * 4 color = self.selected_color if self.selected else self.inactive_color dc.SetTextForeground(color_utils.GetSuitable(color, 1)) # draw text (with no ellipses) text = draw.GetPartialText(dc, self.text, maxsize, "") tx, ty = dc.GetTextExtent(text) dc.DrawText(text, round(text_start + self.padding), round(height / 2 - ty / 2)) def __repr__(self): return "_TabRenderer(text={}, disabled={}) at {}".format( self.text, self.disabled, hex(id(self)) ) class _AddRenderer: def __init__(self): """Renders the add tab button""" self.add_img = BitmapLoader.getImage("ctabadd", "gui") self.width = self.add_img.GetWidth() self.height = self.add_img.GetHeight() self.region = None self.tbmp = wx.Bitmap(self.add_img) self.add_bitmap = None self.position = (0, 0) self.highlighted = False self.InitRenderer() def GetPosition(self): return self.position def SetPosition(self, pos): self.position = pos def GetSize(self): return self.width, self.height def GetHeight(self): return self.height def GetWidth(self): return self.width def InitRenderer(self): self.region = self.CreateRegion() self._Render() def CreateRegion(self): region = wx.Region(self.tbmp) return region def CopyRegion(self, region): rect = region.GetBox() new_region = wx.Region(rect.X, rect.Y, rect.Width, rect.Height) new_region.Intersect(region) return new_region def GetRegion(self): return self.CopyRegion(self.region) def Highlight(self, highlight=False): self.highlighted = highlight self._Render() def IsHighlighted(self): return self.highlighted def Render(self): return self.add_bitmap def _Render(self): if self.add_bitmap: del self.add_bitmap alpha = 1 if self.highlighted else 0.3 img = self.add_img.AdjustChannels(1, 1, 1, alpha) bmp = wx.Bitmap(img) self.add_bitmap = bmp class _TabsContainer(wx.Panel): def __init__(self, parent, pos=(50, 0), size=(100, 22), id=wx.ID_ANY, can_add=True, tabWidthMode=0): """ Defines the tab container. Handles functions such as tab selection and dragging, and defines minimum width of tabs (all tabs are of equal width, which is determined via widest tab). Also handles the tab preview, if any. """ super().__init__(parent, id, pos, size) self.tabWidthMode = tabWidthMode self.tabs = [] self.width, self.height = size self.container_height = self.height self.start_drag = False self.dragging = False # amount of overlap of tabs? self.inclination = 7 if can_add: self.reserved = 48 else: self.reserved = self.inclination * 4 # pixel distance to drag before we actually start dragging self.drag_trail = 5 self.dragx = 0 self.dragy = 0 self.dragged_tab = None self.drag_trigger = self.drag_trail self.show_add_button = can_add self.tab_container_width = self.width - self.reserved self.fxBmps = {} self.add_button = _AddRenderer() self.add_bitmap = self.add_button.Render() self.preview_timer = None self.preview_timer_id = wx.ID_ANY self.preview_wnd = None self.preview_bmp = None self.preview_pos = None self.preview_tab = None self.Bind(wx.EVT_TIMER, self.OnTimer) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) self.Bind(wx.EVT_MIDDLE_UP, self.OnMiddleUp) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_SIZE, self.OnSize) self.Bind(wx.EVT_SYS_COLOUR_CHANGED, self.OnSysColourChanged) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) def OnSysColourChanged(self, event): for tab in self.tabs: tab.InitTab() self.Refresh() def OnSize(self, event): self.UpdateSize() event.Skip() def UpdateSize(self): """Update tab sizes based on new tab container size""" width, _ = self.GetSize() if width != self.width: self.width = width self.tab_container_width = self.width - self.reserved self.AdjustTabsSize() def OnLeftDown(self, event): """ Select tab on mouse down and start dragging logic """ mposx, mposy = event.GetPosition() if not self.start_drag: tab = self.FindTabAtPos(mposx, mposy) if tab: self.CheckTabSelected(tab, mposx, mposy) if self.show_add_button: # If we can add tabs, we can drag them. Set flag self.start_drag = True tx, ty = tab.GetPosition() self.dragx = mposx - tx self.dragy = self.container_height - self.height self.Refresh() self.dragged_tab = tab def OnMiddleUp(self, event): mposx, mposy = event.GetPosition() tab = self.FindTabAtPos(mposx, mposy) if tab is None or not tab.closeable: # if not able to close, return False return False index = self.tabs.index(tab) ev = PageClosing(index) wx.PostEvent(self.Parent, ev) if ev.isVetoed(): return False index = self.GetTabIndex(tab) self.Parent.DeletePage(index) wx.PostEvent(self.Parent, PageClosed(index=index)) sel = self.GetSelected() if sel is not None: wx.PostEvent(self.Parent, PageChanged(-1, sel)) def OnMotion(self, event): """ Determines what happens when the mouse moves. This handles primarily dragging (region tab can be dragged) as well as checking if we are over an actionable button. """ mposx, mposy = event.GetPosition() if self.start_drag: if not self.dragging: if self.drag_trigger < 0: self.dragging = True self.drag_trigger = self.drag_trail self.CaptureMouse() else: self.drag_trigger -= 1 if self.dragging: # we wish to keep tab within tab container boundaries. To do # this, we must detect when mouse moves outside of boundaries. # Set hard limits to 0 and the size of tab container. dtx = mposx - self.dragx w, h = self.dragged_tab.GetSize() dtx = max(dtx, 0) if dtx + w > self.tab_container_width + self.inclination * 2: dtx = self.tab_container_width - w + self.inclination * 2 self.dragged_tab.SetPosition((dtx, self.dragy)) # we must modify the surrounding tabs index = self.GetTabIndex(self.dragged_tab) left_tab = self.GetTabAtLeft(index) right_tab = self.GetTabAtRight(index) if left_tab: lw, lh = left_tab.GetSize() lx, ly = left_tab.GetPosition() if lx + lw / 2 - self.inclination * 2 > dtx: self.SwitchTabs(index - 1, index, self.dragged_tab) if right_tab: rw, rh = right_tab.GetSize() rx, ry = right_tab.GetPosition() if rx + rw / 2 + self.inclination * 2 < dtx + w: self.SwitchTabs(index + 1, index, self.dragged_tab) self.UpdateTabsPosition(self.dragged_tab) self.Refresh() return # If we aren't dragging, check for actionable buttons under mouse self.CheckCloseHighlighted(mposx, mposy) self.CheckAddHighlighted(mposx, mposy) self.CheckTabPreview(mposx, mposy) event.Skip() def OnLeftUp(self, event): """Determines what happens when user left clicks (up)""" mposx, mposy = event.GetPosition() if self.start_drag and self.dragging: self.dragging = False self.start_drag = False self.dragged_tab = None self.drag_trigger = self.drag_trail self.UpdateTabsPosition() self.Refresh() if self.HasCapture(): self.ReleaseMouse() return if self.start_drag: self.start_drag = False self.drag_trigger = self.drag_trail # Checks if we selected the add button and, if True, returns if self.CheckAddButton(mposx, mposy): return # If there are no tabs, don't waste time if self.GetTabsCount() == 0: return # Gets selected tab (was set when user down clicked) sel_tab = self.GetSelectedTab() # Check if we selected close button for selected tab if self.CheckTabClose(sel_tab, mposx, mposy): return # Check if we selected close button for all others for tab in self.tabs: if self.CheckTabClose(tab, mposx, mposy): return def DisableTab(self, tab, disabled=True): tb_renderer = self.tabs[tab] tb_renderer.disabled = disabled self.Refresh() def GetSelectedTab(self): for tab in self.tabs: if tab.GetSelected(): return tab return None def GetSelected(self): for tab in self.tabs: if tab.GetSelected(): return self.tabs.index(tab) return None def SetSelected(self, tabIndex): """Set tab as selected given its index""" old_sel_tab = self.GetSelectedTab() old_sel_tab.SetSelected(False) self.tabs[tabIndex].SetSelected(True) self.Refresh() def CheckTabSelected(self, tab, x, y): """ Selects the tab at x, y. If the tab at x, y is already selected, simply return true. Otherwise, perform TabHitTest and set tab at position to selected """ old_sel_tab = self.GetSelectedTab() if old_sel_tab == tab: return True if self.TabHitTest(tab, x, y): if tab.disabled: return tab.SetSelected(True) old_sel_tab.SetSelected(False) ev = PageChanging(self.tabs.index(old_sel_tab), self.tabs.index(tab)) wx.PostEvent(self.Parent, ev) if ev.isVetoed(): return False self.Refresh() sel_tab = self.tabs.index(tab) self.Parent.SetSelection(sel_tab) return True return False def CheckTabClose(self, tab, x, y): """ Determines if close button was selected for the given tab by comparing x and y position with known close button region """ if not tab.closeable: # if not able to close, return False return False region = tab.GetCloseButtonRegion() posx, posy = tab.GetPosition() region.Offset(round(posx), round(posy)) if region.Contains(x, y): index = self.tabs.index(tab) ev = PageClosing(index) wx.PostEvent(self.Parent, ev) if ev.isVetoed(): return False index = self.GetTabIndex(tab) self.Parent.DeletePage(index) wx.PostEvent(self.Parent, PageClosed(index=index)) sel = self.GetSelected() if sel is not None: wx.PostEvent(self.Parent, PageChanged(-1, sel)) return True return False def CheckAddButton(self, x, y): """ Determines if add button was selected by comparing x and y position with add button region """ if not self.show_add_button: # if not able to add, return False return region = self.add_button.GetRegion() ax, ay = self.add_button.GetPosition() region.Offset(round(ax), round(ay)) if region.Contains(x, y): ev = PageAdding() wx.PostEvent(self.Parent, ev) if ev.isVetoed(): return False self.Parent.AddPage() wx.PostEvent(self.Parent, PageAdded()) return True def CheckCloseHighlighted(self, x, y): """ Checks if mouse pos at x, y is over a close button. If so, set the close hovering flag for that tab """ dirty = False for tab in self.tabs: region = tab.GetCloseButtonRegion() posx, posy = tab.GetPosition() region.Offset(round(posx), round(posy)) if region.Contains(x, y): if not tab.GetCloseButtonHoverStatus(): tab.ShowCloseButtonHovering(True) dirty = True else: if tab.GetCloseButtonHoverStatus(): tab.ShowCloseButtonHovering(False) dirty = True if dirty: self.Refresh() break def FindTabAtPos(self, x, y): if self.GetTabsCount() == 0: return None # test current tab first sel_tab = self.GetSelectedTab() if self.TabHitTest(sel_tab, x, y): return sel_tab # test all other tabs next for tab in self.tabs: if self.TabHitTest(tab, x, y): return tab return None def TabHitTest(self, tab, x, y): """ Test if x and y are contained within a tabs region """ tabRegion = tab.GetTabRegion() tabPos = tab.GetPosition() tabPosX, tabPosY = tabPos tabRegion.Offset(round(tabPosX), round(tabPosY)) if tabRegion.Contains(x, y): return True return False def GetTabAtLeft(self, tab_index): return self.tabs[tab_index - 1] if tab_index > 0 else None def GetTabAtRight(self, tab_index): if tab_index < self.GetTabsCount() - 1: return self.tabs[tab_index + 1] else: return None def SwitchTabs(self, src, dst, dragged_tab=None): self.tabs[src], self.tabs[dst] = self.tabs[dst], self.tabs[src] self.UpdateTabsPosition(dragged_tab) self.Parent.SwitchPages(src, dst) self.Refresh() def GetTabIndex(self, tab): return self.tabs.index(tab) def CheckTabPreview(self, mposx, mposy): """ Checks to see if we have a tab preview and sets up the timer for it to display """ sFit = Fit.getInstance() if not sFit.serviceFittingOptions["showTooltip"] or False: return if self.preview_timer: if self.preview_timer.IsRunning(): if self.preview_wnd: self.preview_timer.Stop() return if self.preview_wnd: self.preview_wnd.Show(False) del self.preview_wnd self.preview_wnd = None for tab in self.tabs: if not tab.GetSelected(): if self.TabHitTest(tab, mposx, mposy): try: page = self.Parent.GetPage(self.GetTabIndex(tab)) if hasattr(page, "Snapshot"): if not self.preview_timer: self.preview_timer = wx.Timer( self, self.preview_timer_id) self.preview_tab = tab self.preview_timer.Start(500, True) break except (KeyboardInterrupt, SystemExit): raise except: pass def CheckAddHighlighted(self, x, y): """ Checks to see if x, y are in add button region, and sets the highlight flag """ if not self.show_add_button: return region = self.add_button.GetRegion() ax, ay = self.add_button.GetPosition() region.Offset(round(ax), round(ay)) if region.Contains(x, y): if not self.add_button.IsHighlighted(): self.add_button.Highlight(True) self.Refresh() else: if self.add_button.IsHighlighted(): self.add_button.Highlight(False) self.Refresh() def OnPaint(self, event): mdc = wx.AutoBufferedPaintDC(self) # if 'wxMac' in wx.PlatformInfo: # color = wx.Colour(0, 0, 0) # brush = wx.Brush(color) # # @todo: what needs to be changed with wxPheonix? # from Carbon.Appearance import kThemeBrushDialogBackgroundActive # brush.MacSetTheme(kThemeBrushDialogBackgroundActive) # else: color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE) brush = wx.Brush(color) if "wxGTK" not in wx.PlatformInfo: mdc.SetBackground(brush) mdc.Clear() selected = None if self.show_add_button: ax, ay = self.add_button.GetPosition() mdc.DrawBitmap(self.add_button.Render(), round(ax), round(ay), True) for i in range(len(self.tabs) - 1, -1, -1): tab = self.tabs[i] posx, posy = tab.GetPosition() if not tab.IsSelected(): # drop shadow first mdc.DrawBitmap(self.fxBmps[tab], round(posx), (posy), True) bmp = tab.Render() img = bmp.ConvertToImage() img = img.AdjustChannels(1, 1, 1, 0.85) bmp = wx.Bitmap(img) mdc.DrawBitmap(bmp, round(posx), (posy), True) mdc.SetDeviceOrigin(round(posx), round(posy)) tab.DrawText(mdc) mdc.SetDeviceOrigin(0, 0) else: selected = tab # we draw selected tab separately (instead of in else) so as to not hide # the front bit behind the preceding tab if selected: posx, posy = selected.GetPosition() # drop shadow first mdc.DrawBitmap(self.fxBmps[selected], round(posx), round(posy), True) bmp = selected.Render() if self.dragging: img = bmp.ConvertToImage() img = img.AdjustChannels(1.2, 1.2, 1.2, 0.7) bmp = wx.Bitmap(img) mdc.DrawBitmap(bmp, round(posx), round(posy), True) mdc.SetDeviceOrigin(round(posx), round(posy)) selected.DrawText(mdc) mdc.SetDeviceOrigin(0, 0) def OnErase(self, event): pass def UpdateTabFX(self): """ Updates tab drop shadow bitmap """ self.fxBmps.clear() for tab in self.tabs: tabW, tabH = tab.tab_size self.fxBmps[tab] = self.GetTabFx(tabW, self.height + 1) @lru_cache(maxsize=50) def GetTabFx(self, width, height): renderer = _TabRenderer((width, height)) fx_bmp = renderer.Render() img = fx_bmp.ConvertToImage() if not img.HasAlpha(): img.InitAlpha() img = img.Blur(2) img = img.AdjustChannels(0.3, 0.3, 0.3, 0.35) return wx.Bitmap(img) def AddTab(self, title=wx.EmptyString, img=None, closeable=False): self.ClearTabsSelected() tab_renderer = _TabRenderer((200, self.height), title, img, closeable) tab_renderer.SetSelected(True) self.tabs.append(tab_renderer) self.AdjustTabsSize() self.Refresh() def ClearTabsSelected(self): for tab in self.tabs: tab.SetSelected(False) def DeleteTab(self, tab): tab_renderer = self.tabs[tab] was_selected = tab_renderer.GetSelected() self.tabs.remove(tab_renderer) if tab_renderer: del tab_renderer # determine our new selection if was_selected and self.GetTabsCount() > 0: if tab > self.GetTabsCount() - 1: self.tabs[self.GetTabsCount() - 1].SetSelected(True) else: self.tabs[tab].SetSelected(True) self.AdjustTabsSize() self.Refresh() def GetTabsCount(self): return len(self.tabs) def AdjustTabsSize(self): """ Adjust tab sizes to ensure that they are all consistent and can fit into the tab container. """ if self.tabWidthMode == 1: if self.GetTabsCount() > 0: availableW = self.tab_container_width overlapSavedW = max(0, len(self.tabs)) * self.inclination * 2 tabsGrouped = {} for tab in self.tabs: tabW, _ = tab.GetMinSize() tabsGrouped.setdefault(math.ceil(tabW), []).append(tab) clippedTabs = [] clipW = max(tabsGrouped, default=0) def getUnclippedW(): unclippedW = 0 for w, tabs in tabsGrouped.items(): unclippedW += w * len(tabs) return unclippedW while tabsGrouped: # Check if we're within width limit neededW = 0 for w, tabs in tabsGrouped.items(): neededW += w * len(tabs) if clippedTabs: neededW += clipW * len(clippedTabs) if neededW <= availableW + overlapSavedW: break # If we're not, extract widest tab group and mark it for clipping currentTabs = tabsGrouped.pop(max(tabsGrouped)) clippedTabs.extend(currentTabs) proposedClipWidth = math.floor((availableW + overlapSavedW - getUnclippedW()) / len(clippedTabs)) if not tabsGrouped or proposedClipWidth >= max(tabsGrouped, default=0): clipW = max(0, proposedClipWidth) break else: clipW = max(tabsGrouped) # Assign width for unclipped tabs for w, tabs in tabsGrouped.items(): for tab in tabs: tab.SetSize((w, self.height)) if clippedTabs: # Some width remains to be used due to rounding to integer extraWTotal = availableW + overlapSavedW - getUnclippedW() - clipW * len(clippedTabs) extraWPerTab = math.ceil(extraWTotal / len(clippedTabs)) # Assign width for clipped tabs for tab in clippedTabs: extraW = min(extraWTotal, extraWPerTab) extraWTotal -= extraW tab.SetSize((clipW + extraW, self.height)) else: # first we loop through our tabs and calculate the the largest tab. This # is the size that we will base our calculations off max_width = 100 # Tab should be at least 100 for tab in self.tabs: mw, _ = tab.GetMinSize() # Tab min size includes tab contents max_width = max(mw, max_width) tabWidth = 0 # Divide tab container by number of tabs and add inclination. This will # return the ideal max size for the containers size if self.GetTabsCount() > 0: dx = self.tab_container_width / self.GetTabsCount() + self.inclination * 2 tabWidth = min(dx, max_width) # Apply new size to all tabs for tab in self.tabs: tab.SetSize((tabWidth, self.height)) # update drop shadow based on new sizes self.UpdateTabFX() self.UpdateTabsPosition() def UpdateTabsPosition(self, skip_tab=None): tabsWidth = 0 for tab in self.tabs: tabsWidth += tab.tab_width - self.inclination * 2 pos = tabsWidth selected = None for i in range(len(self.tabs) - 1, -1, -1): tab = self.tabs[i] width = tab.tab_width - self.inclination * 2 pos -= width if not tab.IsSelected(): tab.SetPosition((pos, self.container_height - self.height)) else: selected = tab selpos = pos if selected is not skip_tab: selected.SetPosition((selpos, self.container_height - self.height)) self.add_button.SetPosition((round(tabsWidth) + self.inclination * 2, self.container_height - self.height / 2 - self.add_button.GetHeight() / 3)) def OnLeaveWindow(self, event): if self.start_drag and not self.dragging: self.dragging = False self.start_drag = False self.dragged_tab = None self.drag_trigger = self.drag_trail if self.HasCapture(): self.ReleaseMouse() if self.preview_wnd: self.preview_wnd.Show(False) del self.preview_wnd self.preview_wnd = None event.Skip() def OnTimer(self, event): mposx, mposy = wx.GetMousePosition() cposx, cposy = self.ScreenToClient((mposx, mposy)) if self.FindTabAtPos(cposx, cposy) == self.preview_tab: if not self.preview_tab.GetSelected(): page = self.Parent.GetPage(self.GetTabIndex(self.preview_tab)) if page.Snapshot(): self.preview_wnd = PFNotebookPagePreview( self, (mposx + 3, mposy + 3), page.Snapshot(), self.preview_tab.text) self.preview_wnd.Show() event.Skip() class PFNotebookPagePreview(wx.Frame): def __init__(self, parent, pos, bitmap, title): super().__init__(parent, id=wx.ID_ANY, title=wx.EmptyString, pos=pos, size=wx.DefaultSize, style=wx.NO_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) self.title = title self.bitmap = bitmap self.SetSize((bitmap.GetWidth(), bitmap.GetHeight())) self.Bind(wx.EVT_PAINT, self.OnWindowPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnWindowEraseBk) self.Bind(wx.EVT_TIMER, self.OnTimer) self.timer = wx.Timer(self, wx.ID_ANY) self.timerSleep = None self.timerSleepId = wx.NewId() self.direction = 1 self.padding = 15 self.transp = 0 hfont = wx.Font(fonts.NORMAL, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False) self.SetFont(hfont) tx, ty = self.GetTextExtent(self.title) tx += self.padding * 2 if bitmap.GetWidth() < tx: width = tx else: width = bitmap.GetWidth() self.SetSize((width, bitmap.GetHeight() + 16)) self.SetTransparent(0) self.Refresh() def OnTimer(self, event): self.transp += 20 * self.direction if self.transp > 220: self.transp = 220 self.timer.Stop() if self.transp < 0: self.transp = 0 self.timer.Stop() super().Show(False) self.Destroy() return self.SetTransparent(self.transp) def RaiseParent(self): wnd = self lastwnd = None while wnd is not None: lastwnd = wnd wnd = wnd.Parent if lastwnd: lastwnd.Raise() def Show(self, showWnd=True): if showWnd: super().Show(showWnd) self.RaiseParent() self.direction = 1 self.timer.Start(10) else: self.direction = -1 self.timer.Start(10) def OnWindowEraseBk(self, event): pass def OnWindowPaint(self, event): rect = self.GetRect() canvas = wx.Bitmap(round(rect.width), round(rect.height)) mdc = wx.BufferedPaintDC(self) mdc.SelectObject(canvas) color = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) mdc.SetBackground(wx.Brush(color)) mdc.Clear() font = wx.Font(11, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False) mdc.SetFont(font) x, y = mdc.GetTextExtent(self.title) mdc.SetBrush(wx.Brush(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT))) mdc.DrawRectangle(0, 0, round(rect.width), 16) mdc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW)) mdc.DrawBitmap(self.bitmap, 0, 16) mdc.SetPen(wx.Pen("#000000", width=1)) mdc.SetBrush(wx.TRANSPARENT_BRUSH) mdc.DrawRectangle(0, 16, round(rect.width), round(rect.height - 16)) ================================================ FILE: gui/contextMenu.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from abc import ABCMeta, abstractmethod # noinspection PyPackageRequirements import wx from logbook import Logger from service.settings import ContextMenuSettings pyfalog = Logger(__name__) class ContextMenu(metaclass=ABCMeta): menus = [] _ids = [] # [wx.NewId() for x in xrange(200)] # init with decent amount _idxid = -1 visibilitySetting = None @classmethod def register(cls): pyfalog.debug('registering context menu class {}'.format(cls.__name__)) ContextMenu.menus.append(cls) @classmethod def hasMenu(cls, callingWindow, mainItem, selection, *fullContexts): for i, fullContext in enumerate(fullContexts): srcContext = fullContext[0] for menuHandler in cls.menus: m = menuHandler() if m._baseDisplay(callingWindow, srcContext, mainItem, selection): return True return False @classmethod def getMenu(cls, callingWindow, mainItem, selection, *fullContexts): """ getMenu returns a menu that is used with wx.PopupMenu. callingWindow: window (in wx' sense) which requested menu mainItem: usually, provides item which was clicked. Useful for single- item actions when user has multiple items selected selection: provides a list of what was selected. If only 1 item was selected, it's is a 1-item list or tuple. Can also be None for contexts without selection, such as statsPane or projected view fullContexts: a number of tuples of the following tuple: srcContext - context were menu was spawned, eg: projectedFit, cargoItem, etc itemContext - usually the name of the item's category eg: (('fittingModule', 'Module'), ('fittingShip', 'Ship')) (('marketItemGroup', 'Implant'),) (('fittingShip', 'Ship'),) """ ContextMenu._idxid = -1 debug_start = len(ContextMenu._ids) # Control being pressed forces all hidden menu items to be shown visibilitySettingOverride = wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL cmSettings = ContextMenuSettings.getInstance() rootMenu = wx.Menu() rootMenu.info = {} rootMenu.selection = (selection,) if not hasattr(selection, "__iter__") else selection rootMenu.mainItem = mainItem empty = True for i, fullContext in enumerate(fullContexts): display_amount = 0 srcContext = fullContext[0] try: itemContext = fullContext[1] except IndexError: itemContext = None for menuHandler in cls.menus: # loop through registered menus m = menuHandler() if m.visibilitySetting: visible = visibilitySettingOverride or cmSettings.get(m.visibilitySetting) else: visible = True if visible and m._baseDisplay(callingWindow, srcContext, mainItem, selection): display_amount += 1 texts = m._baseGetText(callingWindow, itemContext, mainItem, selection) if isinstance(texts, str): texts = (texts,) bitmap = m._baseGetBitmap(callingWindow, srcContext, mainItem, selection) multiple = not isinstance(bitmap, wx.Bitmap) for it, text in enumerate(texts): id = ContextMenu.nextID() check = m.isChecked(it) rootItem = wx.MenuItem(rootMenu, id, text, kind=wx.ITEM_NORMAL if check is None else wx.ITEM_CHECK) rootMenu.info[id] = (m, callingWindow, fullContext, it) sub = m._baseGetSubMenu(callingWindow, srcContext, mainItem, selection, rootMenu, it, rootItem) if sub is None: # if there is no sub menu, bind the handler to the rootItem rootMenu.Bind(wx.EVT_MENU, ContextMenu.handler, rootItem) elif sub: # If sub exists and is not False, set submenu. # Sub might return False when we have a mix of # single menu items and submenus (see: damage profile # context menu) # # If there is a submenu, it is expected that the sub # logic take care of it's own bindings, including for # any single root items. No binding is done here # # It is important to remember that when binding sub # menu items, the menu to bind to depends on platform. # Windows should bind to rootMenu, and all other # platforms should bind to sub menu. See existing # implementations for examples. rootItem.SetSubMenu(sub) if bitmap is not None: if multiple: bp = bitmap[it] if bp: rootItem.SetBitmap(bp) else: rootItem.SetBitmap(bitmap) rootMenu.Append(rootItem) if check is not None: rootItem.Check(check) rootItem.Enable(m.enabled) empty = False if display_amount > 0 and i != len(fullContexts) - 1: rootMenu.AppendSeparator() debug_end = len(ContextMenu._ids) if debug_end - debug_start: pyfalog.debug("{} new IDs created for this menu".format(debug_end - debug_start)) return rootMenu if empty is False else None @staticmethod def handler(event): menu = event.EventObject stuff = menu.info.get(event.Id) if stuff is not None: menuHandler, callingWindow, context, i = stuff selection = menu.selection mainItem = menu.mainItem if not hasattr(selection, "__iter__"): selection = (selection,) menuHandler._baseActivate(callingWindow, context, mainItem, selection, i) else: event.Skip() @staticmethod def nextID(): """ Fetches an ID from the pool of IDs allocated to Context Menu. If we don't have enough ID's to fulfill request, create new ID and add it to the pool. See GH Issue #589. Has to be static method to properly handle modifications of primitives from subclasses (_idxid). """ ContextMenu._idxid += 1 if ContextMenu._idxid >= len(ContextMenu._ids): # We don't ahve an ID for this index, create one ContextMenu._ids.append(wx.NewId()) return ContextMenu._ids[ContextMenu._idxid] def isChecked(self, i): """If menu item is toggleable, this should return bool value""" return None @property def enabled(self): """If menu item is enabled. Allows an item to display, but not be selected""" return True @abstractmethod def _baseDisplay(self, callingWindow, context, mainItem, selection): raise NotImplementedError @abstractmethod def _baseGetBitmap(self, callingWindow, context, mainItem, selection): raise NotImplementedError @abstractmethod def _baseGetText(self, callingWindow, context, mainItem, selection): """ getText should be implemented in child classes, and should return either a string that will make up a menu item label or a list of strings which will make numerous menu items. These menu items will be added to the root menu """ raise NotImplementedError @abstractmethod def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): raise NotImplementedError @abstractmethod def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): raise NotImplementedError class ContextMenuUnconditional(ContextMenu, metaclass=ABCMeta): """ Should be used for context menus which do not depend on which item has been clicked and what current selection is. """ @abstractmethod def display(self, callingWindow, context): raise NotImplementedError def getBitmap(self, callingWindow, context): return @abstractmethod def getText(self, callingWindow, context): raise NotImplementedError def getSubMenu(self, callingWindow, context, rootMenu, i, pitem): return def activate(self, callingWindow, fullContext, i): return def _baseDisplay(self, callingWindow, context, mainItem, selection): return self.display(callingWindow, context) def _baseGetBitmap(self, callingWindow, context, mainItem, selection): return self.getBitmap(callingWindow, context) def _baseGetText(self, callingWindow, context, mainItem, selection): return self.getText(callingWindow, context) def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): return self.getSubMenu(callingWindow, context, rootMenu, i, pitem) def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): return self.activate(callingWindow, fullContext, i) class ContextMenuSingle(ContextMenu, metaclass=ABCMeta): """ Should be used for context menus which depend on which item was clicked, but not on selection. """ @abstractmethod def display(self, callingWindow, context, mainItem): raise NotImplementedError def getBitmap(self, callingWindow, context, mainItem): return @abstractmethod def getText(self, callingWindow, context, mainItem): raise NotImplementedError def getSubMenu(self, callingWindow, context, mainItem, rootMenu, i, pitem): return def activate(self, callingWindow, fullContext, mainItem, i): return def _baseDisplay(self, callingWindow, context, mainItem, selection): return self.display(callingWindow, context, mainItem) def _baseGetBitmap(self, callingWindow, context, mainItem, selection): return self.getBitmap(callingWindow, context, mainItem) def _baseGetText(self, callingWindow, context, mainItem, selection): return self.getText(callingWindow, context, mainItem) def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): return self.getSubMenu(callingWindow, context, mainItem, rootMenu, i, pitem) def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): return self.activate(callingWindow, fullContext, mainItem, i) class ContextMenuSelection(ContextMenu, metaclass=ABCMeta): """ Should be used for context menus which depend on which items are selected. Item clicked is used as fallback if no selection provided. """ @abstractmethod def display(self, callingWindow, context, selection): raise NotImplementedError def getBitmap(self, callingWindow, context, selection): return @abstractmethod def getText(self, callingWindow, context, selection): raise NotImplementedError def getSubMenu(self, callingWindow, context, selection, rootMenu, i, pitem): return def activate(self, callingWindow, fullContext, selection, i): return def _baseDisplay(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.display(callingWindow, context, selection) def _baseGetBitmap(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.getBitmap(callingWindow, context, selection) def _baseGetText(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.getText(callingWindow, context, selection) def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): selection = self.__getSelection(selection, mainItem) return self.getSubMenu(callingWindow, context, selection, rootMenu, i, pitem) def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): selection = self.__getSelection(selection, mainItem) return self.activate(callingWindow, fullContext, selection, i) def __getSelection(self, selection, mainItem): if mainItem is not None and mainItem not in selection: selection.append(mainItem) return selection class ContextMenuCombined(ContextMenu, metaclass=ABCMeta): """ Should be used for context menus which depend on both which item has been clicked and which items are selected. """ @abstractmethod def display(self, callingWindow, context, mainItem, selection): raise NotImplementedError def getBitmap(self, callingWindow, context, mainItem, selection): return @abstractmethod def getText(self, callingWindow, context, mainItem, selection): raise NotImplementedError def getSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): return def activate(self, callingWindow, fullContext, mainItem, selection, i): return def _baseDisplay(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.display(callingWindow, context, mainItem, selection) def _baseGetBitmap(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.getBitmap(callingWindow, context, mainItem, selection) def _baseGetText(self, callingWindow, context, mainItem, selection): selection = self.__getSelection(selection, mainItem) return self.getText(callingWindow, context, mainItem, selection) def _baseGetSubMenu(self, callingWindow, context, mainItem, selection, rootMenu, i, pitem): selection = self.__getSelection(selection, mainItem) return self.getSubMenu(callingWindow, context, mainItem, selection, rootMenu, i, pitem) def _baseActivate(self, callingWindow, fullContext, mainItem, selection, i): selection = self.__getSelection(selection, mainItem) return self.activate(callingWindow, fullContext, mainItem, selection, i) def __getSelection(self, selection, mainItem): if mainItem is not None and mainItem not in selection: selection.append(mainItem) return selection import gui.builtinContextMenus ================================================ FILE: gui/copySelectDialog.py ================================================ # ============================================================================= # Copyright (C) 2010 Lucas Thode # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from collections import OrderedDict # noinspection PyPackageRequirements import wx from eos.db import getFit from gui.utils.clipboard import toClipboard from service.const import PortDnaOptions, PortEftOptions, PortMultiBuyOptions from service.port import EfsPort, Port from service.settings import SettingsProvider _t = wx.GetTranslation class CopySelectDialog(wx.Dialog): copyFormatEft = 0 copyFormatXml = 1 copyFormatDna = 2 copyFormatEsi = 3 copyFormatMultiBuy = 4 copyFormatEfs = 5 copyFormatFitStats = 6 def __init__(self, parent): self.MULTIBUY_OPTIONS = ( (PortMultiBuyOptions.LOADED_CHARGES, _t('Loaded Charges'), _t('Export charges loaded into modules'), True), (PortMultiBuyOptions.IMPLANTS, _t('Implants'), _t('Export implants'), False), (PortMultiBuyOptions.BOOSTERS, _t('Boosters'), _t('Export boosters'), False), (PortMultiBuyOptions.CARGO, _t('Cargo'), _t('Export cargo contents'), True), (PortMultiBuyOptions.OPTIMIZE_PRICES, _t('Optimize Prices'), _t('Replace items by cheaper alternatives'), False), ) self.EFT_OPTIONS = ( (PortEftOptions.LOADED_CHARGES, _t('Loaded Charges'), _t('Export charges loaded into modules'), True), (PortEftOptions.MUTATIONS, _t('Mutated Attributes'), _t('Export mutated modules\' stats'), True), (PortEftOptions.IMPLANTS, _t('Implants'), _t('Export implants'), True), (PortEftOptions.BOOSTERS, _t('Boosters'), _t('Export boosters'), True), (PortEftOptions.CARGO, _t('Cargo'), _t('Export cargo hold contents'), True)) self.DNA_OPTIONS = ( (PortDnaOptions.FORMATTING, _t('Formatting Tags'), _t('Include formatting tags to paste fit directly into corp bulletins, MOTD, etc.'), True), ) super().__init__(parent, id=wx.ID_ANY, title=_t("Select a format"), size=(-1, -1), style=wx.DEFAULT_DIALOG_STYLE) self.CopySelectDict = { CopySelectDialog.copyFormatEft: self.exportEft, CopySelectDialog.copyFormatXml: self.exportXml, CopySelectDialog.copyFormatDna: self.exportDna, CopySelectDialog.copyFormatEsi: self.exportEsi, CopySelectDialog.copyFormatMultiBuy: self.exportMultiBuy, CopySelectDialog.copyFormatEfs: self.exportEfs, CopySelectDialog.copyFormatFitStats: self.exportFitStats } self.mainFrame = parent mainSizer = wx.BoxSizer(wx.VERTICAL) self.copyFormats = OrderedDict(( ("EFT", (CopySelectDialog.copyFormatEft, self.EFT_OPTIONS)), ("MultiBuy", (CopySelectDialog.copyFormatMultiBuy, self.MULTIBUY_OPTIONS)), ("ESI", (CopySelectDialog.copyFormatEsi, None)), ("DNA", (CopySelectDialog.copyFormatDna, self.DNA_OPTIONS)), ("EFS", (CopySelectDialog.copyFormatEfs, None)), ("Stats", (CopySelectDialog.copyFormatFitStats, None)), # ("XML", (CopySelectDialog.copyFormatXml, None)), )) defaultFormatOptions = {} for formatId, formatOptions in self.copyFormats.values(): if formatOptions is None: continue defaultFormatOptions[formatId] = {opt[0]: opt[3] for opt in formatOptions} self.settings = SettingsProvider.getInstance().getSettings("pyfaExport", {"format": self.copyFormatEft, "options": defaultFormatOptions}) # Options used to be stored as int (EFT export options only), # overwrite them with new format when needed if isinstance(self.settings["options"], int): self.settings["options"] = defaultFormatOptions self.options = {} initialized = False self.copyFormat = self.copyFormatEft for formatName, formatData in self.copyFormats.items(): formatId, formatOptions = formatData if not initialized: rdo = wx.RadioButton(self, wx.ID_ANY, formatName, style=wx.RB_GROUP) initialized = True else: rdo = wx.RadioButton(self, wx.ID_ANY, formatName) rdo.Bind(wx.EVT_RADIOBUTTON, self.Selected) if self.settings['format'] == formatId: rdo.SetValue(True) self.copyFormat = formatId mainSizer.Add(rdo, 0, wx.EXPAND | wx.ALL, 5) if formatOptions: bsizer = wx.BoxSizer(wx.VERTICAL) self.options[formatId] = {} for optId, optName, optDesc, _ in formatOptions: checkbox = wx.CheckBox(self, -1, optName) if optDesc: checkbox.SetToolTip(wx.ToolTip(optDesc)) self.options[formatId][optId] = checkbox if self.settings['options'].get(formatId, {}).get(optId, defaultFormatOptions.get(formatId, {}).get(optId)): checkbox.SetValue(True) bsizer.Add(checkbox, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 3) mainSizer.Add(bsizer, 0, wx.EXPAND | wx.LEFT, 20) buttonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL) if buttonSizer: mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, 5) self.toggleOptions() self.SetSizer(mainSizer) self.Fit() self.Center() def Validate(self): # Since this dialog is shown through as ShowModal(), # we hook into the Validate function to veto the closing of the dialog until we're ready. # This always returns False, and when we're ready will EndModal() selected = self.GetSelected() options = self.GetOptions() settings = SettingsProvider.getInstance().getSettings("pyfaExport") settings["format"] = selected settings["options"] = options self.waitDialog = None def cb(text): if self.waitDialog: del self.waitDialog toClipboard(text) self.EndModal(wx.ID_OK) export_options = options.get(selected) if selected == CopySelectDialog.copyFormatMultiBuy and export_options.get(PortMultiBuyOptions.OPTIMIZE_PRICES, False): self.waitDialog = wx.BusyInfo("Optimizing Prices", parent=self) self.CopySelectDict[selected](export_options, callback=cb) return False def Selected(self, event): obj = event.GetEventObject() formatName = obj.GetLabel() self.copyFormat = self.copyFormats[formatName][0] self.toggleOptions() self.Fit() def toggleOptions(self): for formatId in self.options: for checkbox in self.options[formatId].values(): checkbox.Enable(self.GetSelected() == formatId) def GetSelected(self): return self.copyFormat def GetOptions(self): options = {} for formatId in self.options: options[formatId] = {optId: ch.IsChecked() for optId, ch in self.options[formatId].items()} return options def exportEft(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportEft(fit, options, callback) def exportDna(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportDna(fit, options, callback) def exportEsi(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportESI(fit, False, False, False, callback) def exportXml(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportXml([fit], None, callback) def exportMultiBuy(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) Port.exportMultiBuy(fit, options, callback) def exportEfs(self, options, callback): fit = getFit(self.mainFrame.getActiveFit()) EfsPort.exportEfs(fit, 0, callback) # noinspection PyUnusedLocal def exportFitStats(self, options, callback): """ Puts fit stats in textual format into the clipboard """ fit = getFit(self.mainFrame.getActiveFit()) Port.exportFitStats(fit, callback) ================================================ FILE: gui/devTools.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import gc import threading import time # noinspection PyPackageRequirements import wx from logbook import Logger import eos.db from gui.auxWindow import AuxiliaryFrame from gui.builtinShipBrowser.events import FitSelected pyfalog = Logger(__name__) class DevTools(AuxiliaryFrame): DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title="Development Tools", resizeable=True, size=wx.Size(400, 320) if "wxGTK" in wx.PlatformInfo else wx.Size(400, 240)) self.mainFrame = parent self.block = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.id_get = wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition) mainSizer.Add(self.id_get, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.idBtn = wx.Button(self, wx.ID_ANY, "Print object", wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.idBtn, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.idBtn.Bind(wx.EVT_BUTTON, self.objects_by_id) self.gcCollect = wx.Button(self, wx.ID_ANY, "GC Collect", wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.gcCollect, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.gcCollect.Bind(wx.EVT_BUTTON, self.gc_collect) self.fitTest = wx.Button(self, wx.ID_ANY, "Test fits", wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.fitTest, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.fitTest.Bind(wx.EVT_BUTTON, self.fit_test) self.cmdPrint = wx.Button(self, wx.ID_ANY, "Command Print", wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.cmdPrint, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.cmdPrint.Bind(wx.EVT_BUTTON, self.cmd_print) self.SetSizer(mainSizer) self.Layout() self.CenterOnParent() self.SetMinSize(self.GetSize()) def objects_by_id(self, evt): input = self.id_get.GetValue() if input.startswith("0x"): input = int(input, 16) print("Finding {} ({})".format(str(input), hex(input))) for obj in gc.get_objects(): if id(obj) == input: print(obj) print(bool(obj)) print(str(len(gc.get_referents(obj))) + " references") break else: print(None) def cmd_print(self, evt): print("=" * 20) for x in self.mainFrame.command.GetCommands(): print("{}{} {}".format("==> " if x == self.mainFrame.command.GetCurrentCommand() else "", x.GetName(), x)) def gc_collect(self, evt): print(gc.collect()) print(gc.get_debug()) print(gc.get_stats()) def fit_test(self, evt): fits = eos.db.getFitList() self.thread = FitTestThread([x.ID for x in fits], self.Parent) self.thread.start() class FitTestThread(threading.Thread): def __init__(self, fitIDs, mainFrame): threading.Thread.__init__(self) self.name = "FitTestThread" self.mainFrame = mainFrame self.stopRunning = False self.fits = fitIDs def stop(self): self.stopRunning = True def run(self): # wait 1 second just in case a lot of modifications get made if self.stopRunning: return for fit in self.fits: time.sleep(1) e = FitSelected(fitID=fit) wx.PostEvent(self.mainFrame, e) ================================================ FILE: gui/display.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import gui.mainFrame from gui.viewColumn import ViewColumn from gui.cachingImageList import CachingImageList class Display(wx.ListCtrl): DEFAULT_COLS = None def __init__(self, parent, size=wx.DefaultSize, style=0): wx.ListCtrl.__init__(self) self.EnableSystemTheme(False) self.Create(parent, size=size, style=wx.LC_REPORT | style) self.imageList = CachingImageList(16, 16) self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) self.activeColumns = [] self.columnsMinWidth = [] self.Bind(wx.EVT_LIST_COL_END_DRAG, self.resizeChecker) self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeSkip) self.mainFrame = gui.mainFrame.MainFrame.getInstance() for i, colName in enumerate(self.DEFAULT_COLS): self.insertColumnBySpec(i, colName) self.imageListBase = self.imageList.ImageCount # Override native HitTestSubItem (doesn't work as it should on GTK) # Source: ObjectListView def HitTestSubItem(self, pt): """ Return a tuple indicating which (item, subItem) the given pt (client coordinates) is over. This uses the built-in version on Windows, and poor mans replacement on other platforms. """ # The buildin version works on Windows if wx.Platform == "__WXMSW__": return wx.ListCtrl.HitTestSubItem(self, pt) (rowIndex, flags) = self.HitTest(pt) # Did the point hit any item? if (flags & wx.LIST_HITTEST_ONITEM) == 0: return -1, 0, -1 # If it did hit an item and we are not in report mode, it must be the primary cell if not self.InReportView(): return rowIndex, wx.LIST_HITTEST_ONITEM, 0 # Find which subitem is hit right = 0 scrolledX = self.GetScrollPos(wx.HORIZONTAL) * wx.SystemSettings.GetMetric(wx.SYS_HSCROLL_Y) + pt.x for i in range(self.GetColumnCount()): left = right right += self.GetColumnWidth(i) if scrolledX < right: if (scrolledX - left) < self.imageList.GetSize(0)[0]: flag = wx.LIST_HITTEST_ONITEMICON else: flag = wx.LIST_HITTEST_ONITEMLABEL return rowIndex, flag, i return rowIndex, 0, -1 # noinspection PyPropertyAccess def addColumn(self, i, col): self.activeColumns.append(col) info = wx.ListItem() info.SetMask(col.mask | wx.LIST_MASK_FORMAT) if col.imageId not in (None, -1): info.SetImage(col.imageId) info.SetText(col.columnText) info.SetWidth(-1) info.SetAlign(wx.LIST_FORMAT_LEFT) self.InsertColumn(i, info) col.resized = False if i == 0 and col.size != wx.LIST_AUTOSIZE_USEHEADER: col.size += 4 self.SetColumnWidth(i, col.size) def appendColumnBySpec(self, colSpec): self.insertColumnBySpec(len(self.activeColumns), colSpec) def insertColumnBySpec(self, i, colSpec): if ":" in colSpec: colSpec, params = colSpec.split(":", 1) params = params.split(",") colClass = ViewColumn.getColumn(colSpec) paramList = colClass.getParameters() paramDict = {} for x, param in enumerate(paramList): name, type, defaultValue = param value = params[x] if len(params) > x else defaultValue value = value if value != "" else defaultValue if type == bool and isinstance(value, str): value = bool(value) if value.lower() != "false" and value != "0" else False paramDict[name] = value col = colClass(self, paramDict) else: col = ViewColumn.getColumn(colSpec)(self, None) self.addColumn(i, col) self.columnsMinWidth.append(self.GetColumnWidth(i)) def removeColumn(self, col): i = self.getColIndex(type(col)) del self.activeColumns[i] del self.columnsMinWidth[i] self.DeleteColumn(i) def getColIndex(self, colClass): for i, col in enumerate(self.activeColumns): if col.__class__ == colClass: return i return None def resizeChecker(self, event): # we veto header cell resize by default till we find a way # to assure a minimal size for the resized header cell column = event.GetColumn() wx.CallAfter(self.checkColumnSize, column) event.Skip() def resizeSkip(self, event): column = event.GetColumn() if column > len(self.activeColumns) - 1: self.SetColumnWidth(column, 0) event.Veto() return # colItem = self.activeColumns[column] if self.activeColumns[column].maxsize != -1: event.Veto() else: event.Skip() def checkColumnSize(self, column): colItem = self.activeColumns[column] if self.GetColumnWidth(column) < self.columnsMinWidth[column]: self.SetColumnWidth(column, self.columnsMinWidth[column]) colItem.resized = True def getLastItem(self, state=wx.LIST_STATE_DONTCARE): lastFound = -1 while True: index = self.GetNextItem(lastFound, wx.LIST_NEXT_ALL, state) if index == -1: break else: lastFound = index return lastFound def unselectAll(self): sel = self.GetFirstSelected() while sel != -1: self.Select(sel, False) sel = self.GetNextSelected(sel) def selectAll(self): for row in range(self.GetItemCount()): self.Select(row, True) def populate(self, stuff): if stuff is not None: listItemCount = self.GetItemCount() stuffItemCount = len(stuff) if listItemCount < stuffItemCount: for i in range(stuffItemCount - listItemCount): self.InsertItem(self.GetItemCount(), "") if listItemCount > stuffItemCount: if listItemCount - stuffItemCount > 20 > stuffItemCount: self.DeleteAllItems() for i in range(stuffItemCount): self.InsertItem(self.GetItemCount(), "") else: for i in range(listItemCount - stuffItemCount): self.DeleteItem(self.getLastItem()) self.Refresh() def refresh(self, stuff): if stuff is None: return item = -1 for id_, st in enumerate(stuff): item = self.GetNextItem(item) for i, col in enumerate(self.activeColumns): colItem = self.GetItem(item, i) oldText = colItem.GetText() oldImageId = colItem.GetImage() oldColour = colItem.GetBackgroundColour() newText = col.getText(st) if newText is False: col.delayedText(st, self, colItem) newText = "\u21bb" newColour = self.columnBackground(colItem, st) newImageId = col.getImageId(st) colItem.SetText(newText) colItem.SetImage(newImageId) colItem.SetBackgroundColour(newColour) mask = 0 if oldText != newText: mask |= wx.LIST_MASK_TEXT colItem.SetText(newText) if oldImageId != newImageId: mask |= wx.LIST_MASK_IMAGE colItem.SetImage(newImageId) if mask: colItem.SetMask(mask) self.SetItem(colItem) else: if newColour != oldColour: self.SetItem(colItem) self.SetItemData(item, id_) for i, col in enumerate(self.activeColumns): if not col.resized: if col.size == wx.LIST_AUTOSIZE_USEHEADER: self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER) headerWidth = self.GetColumnWidth(i) self.SetColumnWidth(i, wx.LIST_AUTOSIZE) baseWidth = self.GetColumnWidth(i) if baseWidth < headerWidth: self.SetColumnWidth(i, headerWidth) else: self.SetColumnWidth(i, col.size) def update(self, stuff): self.populate(stuff) self.refresh(stuff) def getColumn(self, point): row, _, col = self.HitTestSubItem(point) return col def columnBackground(self, colItem, item): return colItem.GetBackgroundColour() def getRowByAbs(self, pointAbs): if pointAbs == wx.Point(-1, -1): return -1 pointRel = self.screenToClientFixed(pointAbs) row, flags = self.HitTest(pointRel) return row def screenToClientFixed(self, ptScreen): """ Wx' ScreenToClient implementation seems to not consider header row height when converting to screen position: https://github.com/wxWidgets/Phoenix/issues/1213 Do it ourselves here. """ if ptScreen == wx.Point(-1, -1): return wx.Point(-1, -1) ptClient = self.GetMainWindow().ScreenToClient(ptScreen) return ptClient def getSelectedRows(self): rows = [] row = self.GetFirstSelected() while row != -1: rows.append(row) row = self.GetNextSelected(row) return rows def getWidthProportion(self): propWidth = sum(c.proportionWidth for c in self.activeColumns) return propWidth def ensureSelection(self, clickedPos): """ On windows with Ctrl is pressed, or on Mac, when right-click on any item happens, the item doesn't get selected. This method ensures that only clicked item is selected. """ if ( 'wxMac' in wx.PlatformInfo or ('wxMSW' in wx.PlatformInfo and wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL) ): if clickedPos != -1: selectedPoss = self.getSelectedRows() if clickedPos not in selectedPoss: self.unselectAll() self.Select(clickedPos) # Change focus only when we manipulate selection focusedPos = self.GetFocusedItem() if clickedPos != focusedPos: self.Focus(clickedPos) ================================================ FILE: gui/errorDialog.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== import datetime import sys import traceback # noinspection PyPackageRequirements import wx from logbook import Logger import config from gui.auxWindow import AuxiliaryFrame from service.prereqsCheck import version_block _t = wx.GetTranslation pyfalog = Logger(__name__) class ErrorHandler: __parent = None __frame = None @classmethod def HandleException(cls, exc_type, exc_value, exc_traceback): with config.logging_setup.threadbound(): # Print the base level traceback t = traceback.format_exception(exc_type, exc_value, exc_traceback) pyfalog.critical("\n\n" + "".join(t)) if cls.__parent is None: app = wx.App(False) cls.__frame = ErrorFrame(None) cls.__frame.addException("".join(t)) cls.__frame.Show() app.MainLoop() sys.exit() else: if not cls.__frame: cls.__frame = ErrorFrame(cls.__parent) cls.__frame.Show() cls.__frame.addException("".join(t)) @classmethod def SetParent(cls, parent): cls.__parent = parent class ErrorFrame(AuxiliaryFrame): def __init__(self, parent=None, error_title=_t('Error!')): super().__init__(parent, id=wx.ID_ANY, title=_t("pyfa error"), pos=wx.DefaultPosition, size=wx.Size(500, 600)) from eos.config import gamedata_version, gamedata_date if gamedata_date: try: time = datetime.datetime.fromtimestamp(int(gamedata_date)).strftime('%Y-%m-%d %H:%M:%S') except TypeError: time = None else: time = None version = "pyfa " + config.getVersion() + '\nEVE Data Version: {} ({})\n\n'.format(gamedata_version, time) # gui.aboutData.versionString desc = _t("pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue.") self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) headSizer = wx.BoxSizer(wx.HORIZONTAL) headingText = wx.StaticText(self, wx.ID_ANY, error_title, wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE) headingText.SetFont(wx.Font(14, 74, 90, 92, False)) headSizer.Add(headingText, 1, wx.ALL, 5) mainSizer.Add(headSizer, 0, wx.EXPAND, 5) mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND | wx.ALL, 5) box = wx.BoxSizer(wx.VERTICAL) mainSizer.Add(box, 0, wx.EXPAND | wx.ALIGN_TOP) descText = wx.StaticText(self, wx.ID_ANY, desc) box.Add(descText, 1, wx.ALL, 5) # github = wx.lib.agw.hyperlink.HyperLinkCtrl(self, wx.ID_ANY, label="Github", URL="https://github.com/pyfa-org/Pyfa/issues") # box.Add(github, 0, wx.ALL, 5) # # eveForums = wx.lib.agw.hyperlink.HyperLinkCtrl(self, wx.ID_ANY, label="EVE Forums", URL="https://forums.eveonline.com/t/27156") # box.Add(eveForums, 0, wx.ALL, 5) # mainSizer.AddSpacer((0, 5), 0, wx.EXPAND, 5) self.errorTextCtrl = wx.TextCtrl(self, wx.ID_ANY, version + version_block.strip(), wx.DefaultPosition, (-1, 400), wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP) self.errorTextCtrl.SetFont(wx.Font(8, wx.FONTFAMILY_TELETYPE, wx.NORMAL, wx.NORMAL)) mainSizer.Add(self.errorTextCtrl, 0, wx.EXPAND | wx.ALL, 5) self.errorTextCtrl.AppendText("\n") self.errorTextCtrl.Layout() self.SetSizer(mainSizer) mainSizer.Layout() self.Layout() self.SetMinSize(self.GetSize()) self.Centre(wx.BOTH) def addException(self, text): self.errorTextCtrl.AppendText("\n{}\n\n{}".format("#" * 20, text)) ================================================ FILE: gui/esiFittings.py ================================================ import json import requests # noinspection PyPackageRequirements import wx from logbook import Logger import config import gui.globalEvents as GE from eos.db import getItem from eos.saveddata.cargo import Cargo import gui.mainFrame from gui.auxWindow import AuxiliaryFrame from gui.display import Display from gui.characterEditor import APIView from service.character import Character from service.esi import Esi from service.esiAccess import APIException from service.fit import Fit from service.port import Port from service.port.esi import ESIExportException from service.settings import EsiSettings _t = wx.GetTranslation pyfalog = Logger(__name__) class EveFittings(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Browse EVE Fittings"), pos=wx.DefaultPosition, size=wx.Size(750, 450), resizeable=True) self.mainFrame = parent mainSizer = wx.BoxSizer(wx.VERTICAL) characterSelectSizer = wx.BoxSizer(wx.HORIZONTAL) self.charChoice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, []) characterSelectSizer.Add(self.charChoice, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.updateCharList() self.fetchBtn = wx.Button(self, wx.ID_ANY, _t("Fetch Fits"), wx.DefaultPosition, wx.DefaultSize, 5) characterSelectSizer.Add(self.fetchBtn, 0, wx.ALL, 5) mainSizer.Add(characterSelectSizer, 0, wx.EXPAND, 5) self.sl = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.sl, 0, wx.EXPAND | wx.ALL, 5) contentSizer = wx.BoxSizer(wx.HORIZONTAL) browserSizer = wx.BoxSizer(wx.VERTICAL) self.fitTree = FittingsTreeView(self) browserSizer.Add(self.fitTree, 1, wx.ALL | wx.EXPAND, 5) browserSizer.SetItemMinSize(0, 200, 0) contentSizer.Add(browserSizer, 0, wx.EXPAND, 0) fitSizer = wx.BoxSizer(wx.VERTICAL) self.fitView = FitView(self) fitSizer.Add(self.fitView, 1, wx.ALL | wx.EXPAND, 5) btnSizer = wx.BoxSizer(wx.HORIZONTAL) self.importBtn = wx.Button(self, wx.ID_ANY, _t("Import to pyfa"), wx.DefaultPosition, wx.DefaultSize, 5) self.deleteBtn = wx.Button(self, wx.ID_ANY, _t("Delete from EVE"), wx.DefaultPosition, wx.DefaultSize, 5) self.deleteAllBtn = wx.Button(self, wx.ID_ANY, _t("Delete all from Eve"), wx.DefaultPosition, wx.DefaultSize, 5) btnSizer.Add(self.importBtn, 1, wx.ALL, 5) btnSizer.Add(self.deleteBtn, 1, wx.ALL, 5) btnSizer.Add(self.deleteAllBtn, 1, wx.ALL, 5) fitSizer.Add(btnSizer, 0, wx.EXPAND) contentSizer.Add(fitSizer, 1, wx.EXPAND, 0) mainSizer.Add(contentSizer, 1, wx.EXPAND, 5) self.fetchBtn.Bind(wx.EVT_BUTTON, self.fetchFittings) self.importBtn.Bind(wx.EVT_BUTTON, self.importFitting) self.deleteBtn.Bind(wx.EVT_BUTTON, self.deleteFitting) self.deleteAllBtn.Bind(wx.EVT_BUTTON, self.deleteAllFittings) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.statusbar = wx.StatusBar(self) self.statusbar.SetFieldsCount() self.SetStatusBar(self.statusbar) self.SetSizer(mainSizer) self.Layout() self.SetMinSize(self.GetSize()) self.Centre(wx.BOTH) def updateCharList(self): sEsi = Esi.getInstance() chars = sEsi.getSsoCharacters() self.charChoice.Clear() for char in chars: self.charChoice.Append(char.characterDisplay, char.ID) if len(chars) > 0: self.charChoice.SetSelection(0) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def getActiveCharacter(self): selection = self.charChoice.GetCurrentSelection() return self.charChoice.GetClientData(selection) if selection not in (None, -1) else None def fetchFittings(self, event): sEsi = Esi.getInstance() waitDialog = wx.BusyInfo(_t("Fetching fits, please wait..."), parent=self) activeChar = self.getActiveCharacter() if activeChar is None: msg = _t("Need at least one ESI character to fetch") pyfalog.warning(msg) self.statusbar.SetStatusText(msg) return try: self.fittings = sEsi.getFittings(activeChar) # self.cacheTime = fittings.get('cached_until') # self.updateCacheStatus(None) # self.cacheTimer.Start(1000) self.fitTree.populateSkillTree(self.fittings) del waitDialog except requests.exceptions.ConnectionError: msg = _t("Connection error, please check your internet connection") pyfalog.error(msg) self.statusbar.SetStatusText(msg) except APIException as ex: # Can't do this in a finally because then it obscures the message dialog del waitDialog # noqa: F821 ESIExceptionHandler(ex) except (KeyboardInterrupt, SystemExit): raise except Exception as ex: del waitDialog # noqa: F821 raise ex def importFitting(self, event): selection = self.fitView.fitSelection if not selection: return data = self.fitTree.fittingsTreeCtrl.GetItemData(selection) sPort = Port.getInstance() import_type, fits = sPort.importFitFromBuffer(data) self.mainFrame._openAfterImport(fits) def deleteFitting(self, event): self.statusbar.SetStatusText("") sEsi = Esi.getInstance() selection = self.fitView.fitSelection if not selection: return data = json.loads(self.fitTree.fittingsTreeCtrl.GetItemData(selection)) with wx.MessageDialog( self, _t("Do you really want to delete {} ({}) from EVE?").format(data['name'], getItem(data['ship_type_id']).name), _t("Confirm Delete"), wx.YES | wx.NO | wx.ICON_QUESTION ) as dlg: if dlg.ShowModal() == wx.ID_YES: activeChar = self.getActiveCharacter() if activeChar is None: return try: try: sEsi.delFitting(activeChar, data['fitting_id']) # repopulate the fitting list self.fitTree.populateSkillTree(self.fittings) self.fitView.update([]) except APIException as ex: pyfalog.error(ex) self.statusbar.SetStatusText("Failed to delete fit: ESI error {} received - {}".format(ex.status_code, ex.response["error"])) try: ESIExceptionHandler(ex) except: # don't need to do anything - we should already have error code in the status pass except requests.exceptions.ConnectionError: msg = _t("Connection error, please check your internet connection") pyfalog.error(msg) self.statusbar.SetStatusText(msg) def deleteAllFittings(self, event): self.statusbar.SetStatusText("") sEsi = Esi.getInstance() activeChar = self.getActiveCharacter() if activeChar is None: return charName = sEsi.getSsoCharacter(activeChar).characterName anyDeleted = False with wx.MessageDialog( self, "Do you really want to delete all fits from %s in EVE?"%(charName), "Confirm Delete", wx.YES | wx.NO | wx.ICON_QUESTION ) as dlg: if dlg.ShowModal() == wx.ID_YES: try: try: for fit in self.fittings: sEsi.delFitting(activeChar, fit['fitting_id']) anyDeleted = True except APIException as ex: pyfalog.error(ex) if anyDeleted: msg = "Some fits were not deleted: ESI error {} received - {}".format(ex.status_code, ex.response["error"]) else: msg = "Failed to delete fits: ESI error {} received - {}".format(ex.status_code, ex.response["error"]) pyfalog.error(msg) self.statusbar.SetStatusText(msg) try: ESIExceptionHandler(ex) except: # don't need to do anything - we should already have error code in the status pass except requests.exceptions.ConnectionError: msg = "Connection error, please check your internet connection" pyfalog.error(msg) self.statusbar.SetStatusText(msg) # repopulate the fitting list self.fitTree.populateSkillTree(self.fittings) self.fitView.update([]) class ESIExceptionHandler: # todo: make this a generate excetpion handler for all calls def __init__(self, ex): # raise ex if ex.response['error'].startswith('Token is not valid') \ or ex.response['error'] == 'invalid_token' \ or ex.response['error'] == 'invalid_grant': # todo: this seems messy, figure out a better response pyfalog.error(ex) with wx.MessageDialog( gui.mainFrame.MainFrame.getInstance(), _t("There was an error validating characters' SSO token. Please try " "logging into the character again to reset the token."), _t("Invalid Token"), wx.OK | wx.ICON_ERROR | wx.CANCEL ) as dlg: dlg.SetOKLabel("Manage ESI Characters") ret = dlg.ShowModal() if ret == wx.ID_OK: SsoCharacterMgmt.openOne(parent=gui.mainFrame.MainFrame.getInstance()) # todo: spawn manage esi characters pass elif ex.response['error'].startswith('Timeout contacting'): pyfalog.error(ex) with wx.MessageDialog( gui.mainFrame.MainFrame.getInstance(), "HTTP %s: %s\n\n" % (ex.status_code, ex.response['error']) + _t("The server took too long to response. Please try again in a moment."), _t("Timeout"), wx.OK | wx.ICON_ERROR ) as dlg: dlg.ShowModal() else: # We don't know how to handle the error, raise it for the global error handler to pick it up raise ex class ExportToEve(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Export fit to EVE"), pos=wx.DefaultPosition, size=wx.Size(400, 175) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 145), resizeable=True) self.mainFrame = parent mainSizer = wx.BoxSizer(wx.VERTICAL) hSizer = wx.BoxSizer(wx.HORIZONTAL) self.charChoice = wx.Choice(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, []) hSizer.Add(self.charChoice, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.updateCharList() self.charChoice.SetSelection(0) self.exportBtn = wx.Button(self, wx.ID_ANY, _t("Export Fit"), wx.DefaultPosition, wx.DefaultSize, 5) hSizer.Add(self.exportBtn, 0, wx.ALL, 5) mainSizer.Add(hSizer, 0, wx.EXPAND, 5) self.exportChargesCb = wx.CheckBox(self, wx.ID_ANY, _t('Export Loaded Charges'), wx.DefaultPosition, wx.DefaultSize, 0) self.exportChargesCb.SetValue(EsiSettings.getInstance().get('exportCharges')) self.exportChargesCb.Bind(wx.EVT_CHECKBOX, self.OnChargeExportChange) mainSizer.Add(self.exportChargesCb, 0, 0, 5) self.exportImplantsCb = wx.CheckBox(self, wx.ID_ANY, _t('Export Implants'), wx.DefaultPosition, wx.DefaultSize, 0) self.exportImplantsCb.SetValue(EsiSettings.getInstance().get('exportImplants')) self.exportImplantsCb.Bind(wx.EVT_CHECKBOX, self.OnImplantsExportChange) mainSizer.Add(self.exportImplantsCb, 0, 0, 5) self.exportBoostersCb = wx.CheckBox(self, wx.ID_ANY, _t('Export Boosters'), wx.DefaultPosition, wx.DefaultSize, 0) self.exportBoostersCb.SetValue(EsiSettings.getInstance().get('exportBoosters')) self.exportBoostersCb.Bind(wx.EVT_CHECKBOX, self.OnBoostersExportChange) mainSizer.Add(self.exportBoostersCb, 0, 0, 5) self.exportBtn.Bind(wx.EVT_BUTTON, self.exportFitting) self.statusbar = wx.StatusBar(self) self.statusbar.SetFieldsCount(2) self.statusbar.SetStatusWidths([100, -1]) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.SetSizer(mainSizer) self.SetStatusBar(self.statusbar) self.Layout() self.SetMinSize(self.GetSize()) self.Center(wx.BOTH) def OnChargeExportChange(self, event): EsiSettings.getInstance().set('exportCharges', self.exportChargesCb.GetValue()) event.Skip() def OnImplantsExportChange(self, event): EsiSettings.getInstance().set('exportImplants', self.exportImplantsCb.GetValue()) event.Skip() def OnBoostersExportChange(self, event): EsiSettings.getInstance().set('exportBoosters', self.exportBoostersCb.GetValue()) event.Skip() def updateCharList(self): sEsi = Esi.getInstance() chars = sEsi.getSsoCharacters() self.charChoice.Clear() for char in chars: self.charChoice.Append(char.characterDisplay, char.ID) if len(chars) > 0: self.charChoice.SetSelection(0) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def getActiveCharacter(self): selection = self.charChoice.GetCurrentSelection() return self.charChoice.GetClientData(selection) if selection not in (None, -1) else None def exportFitting(self, event): sPort = Port.getInstance() fitID = self.mainFrame.getActiveFit() self.statusbar.SetStatusText("", 0) if fitID is None: self.statusbar.SetStatusText(_t("Please select an active fitting in the main window"), 1) return self.statusbar.SetStatusText(_t("Sending request and awaiting response"), 1) sEsi = Esi.getInstance() sFit = Fit.getInstance() exportCharges = self.exportChargesCb.GetValue() exportImplants = self.exportImplantsCb.GetValue() exportBoosters = self.exportBoostersCb.GetValue() try: data = sPort.exportESI(sFit.getFit(fitID), exportCharges, exportImplants, exportBoosters) except ESIExportException as e: msg = str(e) if not msg: msg = _t("Failed to generate export data") pyfalog.warning(msg) self.statusbar.SetStatusText(msg, 1) return activeChar = self.getActiveCharacter() if activeChar is None: msg = _t("Need at least one ESI character to export") pyfalog.warning(msg) self.statusbar.SetStatusText(msg, 1) return try: res = sEsi.postFitting(activeChar, data) res.raise_for_status() self.statusbar.SetStatusText("", 0) self.statusbar.SetStatusText(res.reason, 1) except requests.exceptions.ConnectionError: msg = _t("Connection error, please check your internet connection") pyfalog.error(msg) self.statusbar.SetStatusText(_t("ERROR"), 0) self.statusbar.SetStatusText(msg, 1) except APIException as ex: pyfalog.error(ex) self.statusbar.SetStatusText(_t("ERROR"), 0) self.statusbar.SetStatusText("HTTP {} - {}".format(ex.status_code, ex.response["error"]), 1) try: ESIExceptionHandler(ex) except: # don't need to do anything - we should already get the error in ex.response pass except Exception as ex: self.statusbar.SetStatusText(_t("ERROR"), 0) self.statusbar.SetStatusText("Unknown error", 1) pyfalog.error(ex) class SsoCharacterMgmt(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("SSO Character Management"), pos=wx.DefaultPosition, size=wx.Size(550, 250), resizeable=True) self.mainFrame = parent mainSizer = wx.BoxSizer(wx.HORIZONTAL) self.lcCharacters = wx.ListCtrl(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LC_REPORT) self.lcCharacters.InsertColumn(0, heading=_t('Character')) self.lcCharacters.InsertColumn(1, heading=_t('Character ID')) self.lcCharacters.InsertColumn(2, heading=_t('Server')) self.popCharList() mainSizer.Add(self.lcCharacters, 1, wx.ALL | wx.EXPAND, 5) btnSizer = wx.BoxSizer(wx.VERTICAL) self.addBtn = wx.Button(self, wx.ID_ANY, _t("Add Character"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.addBtn, 0, wx.ALL | wx.EXPAND, 5) self.deleteBtn = wx.Button(self, wx.ID_ANY, _t("Remove Character"), wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.deleteBtn, 0, wx.ALL | wx.EXPAND, 5) mainSizer.Add(btnSizer, 0, wx.EXPAND, 5) self.addBtn.Bind(wx.EVT_BUTTON, self.addChar) self.deleteBtn.Bind(wx.EVT_BUTTON, self.delChar) self.mainFrame.Bind(GE.EVT_SSO_LOGIN, self.ssoLogin) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.SetSizer(mainSizer) self.Layout() self.SetMinSize(self.GetSize()) self.Centre(wx.BOTH) def ssoLogin(self, event): self.popCharList() sChar = Character.getInstance() # Update existing pyfa character, if it doesn't exist - create new char = sChar.getCharacter(event.character.characterName) newChar = False if char is None: char = sChar.new(event.character.characterName) newChar = True char.setSsoCharacter(event.character, config.getClientSecret()) sChar.apiFetch(char.ID, APIView.fetchCallback) wx.PostEvent(self.mainFrame, GE.CharListUpdated()) event.Skip() def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def OnClose(self, event): self.mainFrame.Unbind(GE.EVT_SSO_LOGIN, handler=self.ssoLogin) event.Skip() def popCharList(self): sEsi = Esi.getInstance() chars = sEsi.getSsoCharacters() self.lcCharacters.DeleteAllItems() for index, char in enumerate(chars): self.lcCharacters.InsertItem(index, char.characterName) self.lcCharacters.SetItem(index, 1, str(char.characterID)) self.lcCharacters.SetItemData(index, char.ID) self.lcCharacters.SetItem(index, 2, char.server or "") self.lcCharacters.SetColumnWidth(0, wx.LIST_AUTOSIZE) self.lcCharacters.SetColumnWidth(1, wx.LIST_AUTOSIZE) self.lcCharacters.SetColumnWidth(2, wx.LIST_AUTOSIZE) def addChar(self, event): try: sEsi = Esi.getInstance() sEsi.login() except (KeyboardInterrupt, SystemExit): raise def delChar(self, event): item = self.lcCharacters.GetFirstSelected() if item > -1: charID = self.lcCharacters.GetItemData(item) sEsi = Esi.getInstance() sEsi.delSsoCharacter(charID) self.popCharList() class FittingsTreeView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY) self.parent = parent pmainSizer = wx.BoxSizer(wx.VERTICAL) tree = self.fittingsTreeCtrl = wx.TreeCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) pmainSizer.Add(tree, 1, wx.EXPAND | wx.ALL, 0) self.root = tree.AddRoot("Fits") self.populateSkillTree(None) self.Bind(wx.EVT_TREE_SEL_CHANGED, self.displayFit) self.SetSizer(pmainSizer) self.Layout() def populateSkillTree(self, data): if data is None: return root = self.root tree = self.fittingsTreeCtrl tree.DeleteChildren(root) sEsi = Esi.getInstance() dict = {} fits = data for fit in fits: if fit['fitting_id'] in sEsi.fittings_deleted: continue ship = getItem(fit['ship_type_id']) if ship is None: pyfalog.debug('Cannot find ship type id: {}'.format(fit['ship_type_id'])) continue if ship.name not in dict: dict[ship.name] = [] dict[ship.name].append(fit) for name, fits in dict.items(): shipID = tree.AppendItem(root, name) for fit in fits: fitId = tree.AppendItem(shipID, fit['name']) tree.SetItemData(fitId, json.dumps(fit)) tree.SortChildren(root) def displayFit(self, event): selection = self.fittingsTreeCtrl.GetSelection() data = self.fittingsTreeCtrl.GetItemData(selection) if data is None: event.Skip() return fit = json.loads(data) list = [] for item in fit['items']: try: cargo = Cargo(getItem(item['type_id'])) cargo.amount = item['quantity'] list.append(cargo) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Exception caught in displayFit") pyfalog.critical(e) self.parent.fitView.fitSelection = selection self.parent.fitView.update(list) class FitView(Display): DEFAULT_COLS = ["Base Icon", "Base Name"] def __init__(self, parent): Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) self.fitSelection = None ================================================ FILE: gui/fitBrowserLite.py ================================================ import re # noinspection PyPackageRequirements import wx import gui.display as d from service.fit import Fit _t = wx.GetTranslation def fitSorter(fit): return fit.shipName, fit.name class FitBrowserLiteDialog(wx.Dialog): def __init__(self, parent, title=_t('Add Fits'), excludedFitIDs=()): super().__init__(parent, title=title, style=wx.DEFAULT_DIALOG_STYLE) listWidth = 250 if 'wxGTK' in wx.PlatformInfo else 200 self.sFit = Fit.getInstance() self.allFits = sorted( (f for f in self.sFit.getAllFitsLite() if f.ID not in excludedFitIDs), key=fitSorter) self.SetMinSize((400, 400)) mainSizer = wx.BoxSizer(wx.VERTICAL) searchSizer = wx.BoxSizer(wx.HORIZONTAL) self.searchBox = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) searchSizer.Add(self.searchBox, 1, wx.EXPAND | wx.ALL, 5) mainSizer.Add(searchSizer, 0, wx.EXPAND | wx.ALL, 0) listSizer = wx.BoxSizer(wx.HORIZONTAL) self.fromList = FitListView(self, size=(listWidth, -1)) self.fromList.Bind(wx.EVT_LEFT_DCLICK, self.OnFromListDclick) listSizer.Add(self.fromList, 1, wx.EXPAND | wx.ALL, 5) listButtonSizer = wx.BoxSizer(wx.VERTICAL) listButtonSizer.AddStretchSpacer() addButton = wx.Button(self, wx.ID_ANY, '>>', wx.DefaultPosition, wx.DefaultSize, 0) addButton.Bind(wx.EVT_BUTTON, self.OnButtonAdd) listButtonSizer.Add(addButton, 0, wx.EXPAND | wx.ALL, 5) removeButton = wx.Button(self, wx.ID_ANY, '<<', wx.DefaultPosition, wx.DefaultSize, 0) removeButton.Bind(wx.EVT_BUTTON, self.OnButtonRemove) listButtonSizer.Add(removeButton, 0, wx.EXPAND | wx.ALL, 5) listButtonSizer.AddStretchSpacer() listSizer.Add(listButtonSizer, 0, wx.EXPAND | wx.ALL, 5) self.toList = FitListView(self, size=(listWidth, -1)) self.toList.Bind(wx.EVT_LEFT_DCLICK, self.OnToListDclick) listSizer.Add(self.toList, 1, wx.EXPAND | wx.ALL, 5) mainSizer.Add(listSizer, 1, wx.EXPAND | wx.ALL, 0) buttonSizer = self.CreateButtonSizer(wx.OK | wx.CANCEL) if buttonSizer: mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, 5) self.resetContents() self.inputTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnInputTimer, self.inputTimer) self.searchBox.Bind(event=wx.EVT_TEXT, handler=self.OnSearchChanged) self.SetSizer(mainSizer) self.Layout() self.SetSize(self.GetBestSize()) self.CenterOnParent() self.searchBox.SetFocus() def OnButtonAdd(self, event): event.Skip() fits = self.fromList.GetSelectedFits() if not fits: return self.fromList.removeFits(fits) self.toList.addFits(fits) self.fromList.unselectAll() self.toList.unselectAll() def OnButtonRemove(self, event): event.Skip() fits = self.toList.GetSelectedFits() if not fits: return self.toList.removeFits(fits) self.fromList.addFits(fits) self.fromList.unselectAll() self.toList.unselectAll() def OnSearchChanged(self, event): event.Skip() self.inputTimer.Stop() self.inputTimer.Start(self.sFit.serviceFittingOptions['marketSearchDelay'], True) def OnInputTimer(self, event): event.Skip() searchPattern = self.searchBox.GetValue().strip() if not searchPattern: self.resetContents() else: def isMatch(fit, searchTokens): for token in searchTokens: if ( token not in fit.name.lower() and token not in fit.shipName.lower() and token not in fit.shipNameShort.lower() ): return False return True matches = [] searchTokens = [t.lower() for t in re.split(r'\s+', searchPattern)] for fit in self.allFits: if isMatch(fit, searchTokens): matches.append(fit) self.fromList.updateData(matches) def OnFromListDclick(self, event): event.Skip() row, _ = self.fromList.HitTest(event.Position) if row == -1: return try: fit = self.fromList.fits[row] except IndexError: return self.fromList.removeFits([fit]) self.toList.addFits([fit]) self.fromList.unselectAll() self.toList.unselectAll() def OnToListDclick(self, event): event.Skip() row, _ = self.toList.HitTest(event.Position) if row == -1: return try: fit = self.toList.fits[row] except IndexError: return self.toList.removeFits([fit]) self.fromList.addFits([fit]) self.fromList.unselectAll() self.toList.unselectAll() def resetContents(self): fits = [f for f in self.allFits if f not in self.toList.fits] self.fromList.updateData(fits) def getFitIDsToAdd(self): return [f.ID for f in self.toList.fits] class FitListView(d.Display): DEFAULT_COLS = ['Base Name'] def __init__(self, parent, **kwargs): super().__init__(parent, style=wx.BORDER_NONE, **kwargs) self.fits = [] def updateView(self): self.update(self.fits) def refreshView(self): self.refresh(self.fits) def updateData(self, fits): self.fits = fits self.updateView() def addFits(self, fits): for fit in fits: if fit in self.fits: continue self.fits.append(fit) self.fits.sort(key=fitSorter) self.updateView() def removeFits(self, fits): for fit in fits: if fit not in self.fits: continue self.fits.remove(fit) self.updateView() def GetSelectedFits(self): fits = [] for row in self.getSelectedRows(): try: fit = self.fits[row] except IndexError: continue fits.append(fit) return fits ================================================ FILE: gui/fitCommands/__init__.py ================================================ from .gui.booster.add import GuiAddBoosterCommand from .gui.booster.changeMeta import GuiChangeBoosterMetaCommand from .gui.booster.imprt import GuiImportBoostersCommand from .gui.booster.remove import GuiRemoveBoostersCommand from .gui.booster.sideEffectToggleState import GuiToggleBoosterSideEffectStateCommand from .gui.booster.toggleStates import GuiToggleBoosterStatesCommand from .gui.cargo.add import GuiAddCargoCommand from .gui.cargo.changeAmount import GuiChangeCargosAmountCommand from .gui.cargo.changeMetas import GuiChangeCargoMetasCommand from .gui.cargo.imprt import GuiImportCargosCommand from .gui.cargo.remove import GuiRemoveCargosCommand from .gui.commandFit.add import GuiAddCommandFitsCommand from .gui.commandFit.remove import GuiRemoveCommandFitsCommand from .gui.commandFit.toggleStates import GuiToggleCommandFitStatesCommand from .gui.fitPilotSecurity import GuiChangeFitPilotSecurityCommand from .gui.fitRename import GuiRenameFitCommand from .gui.fitRestrictionToggle import GuiToggleFittingRestrictionsCommand from .gui.fitSystemSecurity import GuiChangeFitSystemSecurityCommand from .gui.implant.add import GuiAddImplantCommand from .gui.implant.changeLocation import GuiChangeImplantLocationCommand from .gui.implant.changeMeta import GuiChangeImplantMetaCommand from .gui.implant.imprt import GuiImportImplantsCommand from .gui.implant.remove import GuiRemoveImplantsCommand from .gui.implant.setAdd import GuiAddImplantSetCommand from .gui.implant.toggleStates import GuiToggleImplantStatesCommand from .gui.itemsRebase import GuiRebaseItemsCommand from .gui.localDrone.add import GuiAddLocalDroneCommand from .gui.localDrone.changeAmount import GuiChangeLocalDroneAmountCommand from .gui.localDrone.changeMetas import GuiChangeLocalDroneMetasCommand from .gui.localDrone.changeMutation import GuiChangeLocalDroneMutationCommand from .gui.localDrone.clone import GuiCloneLocalDroneCommand from .gui.localDrone.imprt import GuiImportLocalDronesCommand from .gui.localDrone.mutatedConvert import GuiConvertMutatedLocalDroneCommand from .gui.localDrone.mutatedImport import GuiImportLocalMutatedDroneCommand from .gui.localDrone.mutatedRevert import GuiRevertMutatedLocalDroneCommand from .gui.localDrone.remove import GuiRemoveLocalDronesCommand from .gui.localDrone.stackSplit import GuiSplitLocalDroneStackCommand from .gui.localDrone.stacksMerge import GuiMergeLocalDroneStacksCommand from .gui.localDrone.toggleStates import GuiToggleLocalDroneStatesCommand from .gui.localFighter.abilityToggleState import GuiToggleLocalFighterAbilityStateCommand from .gui.localFighter.add import GuiAddLocalFighterCommand from .gui.localFighter.changeAmount import GuiChangeLocalFighterAmountCommand from .gui.localFighter.changeMetas import GuiChangeLocalFighterMetasCommand from .gui.localFighter.imprt import GuiImportLocalFightersCommand from .gui.localFighter.remove import GuiRemoveLocalFightersCommand from .gui.localFighter.toggleStates import GuiToggleLocalFighterStatesCommand from .gui.localModule.add import GuiAddLocalModuleCommand from .gui.localModule.changeCharges import GuiChangeLocalModuleChargesCommand from .gui.localModule.changeMetas import GuiChangeLocalModuleMetasCommand from .gui.localModule.changeMutation import GuiChangeLocalModuleMutationCommand from .gui.localModule.changeSpool import GuiChangeLocalModuleSpoolCommand from .gui.localModule.changeStates import GuiChangeLocalModuleStatesCommand from .gui.localModule.clone import GuiCloneLocalModuleCommand from .gui.localModule.fillAdd import GuiFillWithNewLocalModulesCommand from .gui.localModule.fillClone import GuiFillWithClonedLocalModulesCommand from .gui.localModule.mutatedConvert import GuiConvertMutatedLocalModuleCommand from .gui.localModule.mutatedImport import GuiImportLocalMutatedModuleCommand from .gui.localModule.mutatedRevert import GuiRevertMutatedLocalModuleCommand from .gui.localModule.remove import GuiRemoveLocalModuleCommand from .gui.localModule.replace import GuiReplaceLocalModuleCommand from .gui.localModule.swap import GuiSwapLocalModulesCommand from .gui.localModuleCargo.cargoToLocalModule import GuiCargoToLocalModuleCommand from .gui.localModuleCargo.localModuleToCargo import GuiLocalModuleToCargoCommand from .gui.projectedChangeProjectionRange import GuiChangeProjectedItemsProjectionRangeCommand from .gui.projectedChangeStates import GuiChangeProjectedItemStatesCommand from .gui.projectedDrone.add import GuiAddProjectedDroneCommand from .gui.projectedDrone.changeAmount import GuiChangeProjectedDroneAmountCommand from .gui.projectedDrone.changeMetas import GuiChangeProjectedDroneMetasCommand from .gui.projectedFighter.abilityToggleState import GuiToggleProjectedFighterAbilityStateCommand from .gui.projectedFighter.add import GuiAddProjectedFighterCommand from .gui.projectedFighter.changeAmount import GuiChangeProjectedFighterAmountCommand from .gui.projectedFighter.changeMetas import GuiChangeProjectedFighterMetasCommand from .gui.projectedFit.add import GuiAddProjectedFitsCommand from .gui.projectedFit.changeAmount import GuiChangeProjectedFitAmountCommand from .gui.projectedModule.add import GuiAddProjectedModuleCommand from .gui.projectedModule.changeCharges import GuiChangeProjectedModuleChargesCommand from .gui.projectedModule.changeMetas import GuiChangeProjectedModuleMetasCommand from .gui.projectedModule.changeSpool import GuiChangeProjectedModuleSpoolCommand from .gui.projectedRemove import GuiRemoveProjectedItemsCommand from .gui.shipModeChange import GuiChangeShipModeCommand ================================================ FILE: gui/fitCommands/calc/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/booster/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/booster/add.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcAddBoosterCommand(wx.Command): def __init__(self, fitID, boosterInfo, position=None): wx.Command.__init__(self, True, 'Add Booster') self.fitID = fitID self.newBoosterInfo = boosterInfo self.newPosition = position self.oldBoosterInfo = None self.oldPosition = None def Do(self): pyfalog.debug('Doing addition of booster {} to fit {}'.format(self.newBoosterInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) if any(self.newBoosterInfo.itemID == b.itemID for b in fit.boosters): pyfalog.debug('Skipping as such booster is already on the fit') return False newBooster = self.newBoosterInfo.toBooster() if newBooster is None: return False self.oldPosition, self.oldBoosterInfo = fit.boosters.makeRoom(newBooster) if self.newPosition is not None: fit.boosters.insert(self.newPosition, newBooster) if newBooster not in fit.boosters: pyfalog.warning('Failed to insert to list') cmd = CalcAddBoosterCommand( fitID=self.fitID, boosterInfo=self.oldBoosterInfo, position=self.oldPosition) cmd.Do() return False else: fit.boosters.append(newBooster) if newBooster not in fit.boosters: pyfalog.warning('Failed to append to list') cmd = CalcAddBoosterCommand( fitID=self.fitID, boosterInfo=self.oldBoosterInfo, position=self.oldPosition) cmd.Do() return False self.newPosition = fit.boosters.index(newBooster) return True def Undo(self): pyfalog.debug('Undo addition of booster {} to fit {}'.format(self.newBoosterInfo, self.fitID)) if self.oldBoosterInfo is not None and self.oldPosition is not None: cmd = CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=self.oldBoosterInfo, position=self.oldPosition) return cmd.Do() from .remove import CalcRemoveBoosterCommand cmd = CalcRemoveBoosterCommand(fitID=self.fitID, position=self.newPosition) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/booster/remove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import BoosterInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveBoosterCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Remove Booster') self.fitID = fitID self.position = position self.savedBoosterInfo = None def Do(self): pyfalog.debug('Doing removal of booster from position {} on fit {}'.format(self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) booster = fit.boosters[self.position] self.savedBoosterInfo = BoosterInfo.fromBooster(booster) fit.boosters.remove(booster) return True def Undo(self): pyfalog.debug('Undoing removal of booster {} on fit {}'.format(self.savedBoosterInfo, self.fitID)) from .add import CalcAddBoosterCommand cmd = CalcAddBoosterCommand( fitID=self.fitID, boosterInfo=self.savedBoosterInfo, position=self.position) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/booster/sideEffectToggleState.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleBoosterSideEffectStateCommand(wx.Command): def __init__(self, fitID, position, effectID, forceState=None): wx.Command.__init__(self, True, 'Toggle Booster Side Effect State') self.fitID = fitID self.position = position self.effectID = effectID self.forceState = forceState self.savedState = None def Do(self): pyfalog.debug('Doing toggling of booster side effect {} state at position {} for fit {}'.format(self.effectID, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) booster = fit.boosters[self.position] sideEffect = next((se for se in booster.sideEffects if se.effectID == self.effectID), None) if sideEffect is None: pyfalog.warning('Unable to find booster side effect') return False self.savedState = sideEffect.active sideEffect.active = not sideEffect.active if self.forceState is None else self.forceState return True def Undo(self): pyfalog.debug('Undoing toggling of booster side effect {} state at position {} for fit {}'.format(self.effectID, self.position, self.fitID)) cmd = CalcToggleBoosterSideEffectStateCommand(fitID=self.fitID, position=self.position, effectID=self.effectID, forceState=self.savedState) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/booster/toggleStates.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleBoosterStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, forceStates=None): wx.Command.__init__(self, True, 'Toggle Booster States') self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.forceStates = forceStates self.savedStates = None def Do(self): pyfalog.debug('Doing toggling of booster state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) positions = self.positions[:] if self.mainPosition not in positions: positions.append(self.mainPosition) self.savedStates = {p: fit.boosters[p].active for p in positions} if self.forceStates is not None: for position, state in self.forceStates.items(): booster = fit.boosters[position] booster.active = state elif fit.boosters[self.mainPosition].active: for position in positions: booster = fit.boosters[position] if booster.active: booster.active = False else: for position in positions: booster = fit.boosters[position] if not booster.active: booster.active = True return True def Undo(self): pyfalog.debug('Undoing toggling of booster state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) cmd = CalcToggleBoosterStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions, forceStates=self.savedStates) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/cargo/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/cargo/add.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcAddCargoCommand(wx.Command): def __init__(self, fitID, cargoInfo): wx.Command.__init__(self, True, 'Add Cargo') self.fitID = fitID self.cargoInfo = cargoInfo def Do(self): pyfalog.debug('Doing addition of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) cargo = next((c for c in fit.cargo if c.itemID == self.cargoInfo.itemID), None) if cargo is not None: cargo.amount += self.cargoInfo.amount else: cargo = self.cargoInfo.toCargo() fit.cargo.append(cargo) if cargo not in fit.cargo: pyfalog.warning('Failed to append to list') return False return True def Undo(self): pyfalog.debug('Undoing addition of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) from .remove import CalcRemoveCargoCommand cmd = CalcRemoveCargoCommand(fitID=self.fitID, cargoInfo=self.cargoInfo) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/cargo/changeAmount.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import CargoInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeCargoAmountCommand(wx.Command): def __init__(self, fitID, cargoInfo): wx.Command.__init__(self, True, 'Change Cargo Amount') self.fitID = fitID self.cargoInfo = cargoInfo self.savedCargoInfo = None def Do(self): pyfalog.debug('Doing change of cargo {} for fit {}'.format(self.cargoInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) cargo = next((c for c in fit.cargo if c.itemID == self.cargoInfo.itemID), None) if cargo is None: pyfalog.warning('Cannot find cargo item') return False self.savedCargoInfo = CargoInfo.fromCargo(cargo) if self.cargoInfo.amount == self.savedCargoInfo.amount: return False cargo.amount = self.cargoInfo.amount return True def Undo(self): pyfalog.debug('Undoing change of cargo {} for fit {}'.format(self.cargoInfo, self.fitID)) cmd = CalcChangeCargoAmountCommand(fitID=self.fitID, cargoInfo=self.savedCargoInfo) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/cargo/remove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import CargoInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveCargoCommand(wx.Command): def __init__(self, fitID, cargoInfo): wx.Command.__init__(self, True, 'Remove Cargo') self.fitID = fitID self.cargoInfo = cargoInfo self.savedRemovedAmount = None def Do(self): pyfalog.debug('Doing removal of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) cargo = next((x for x in fit.cargo if x.itemID == self.cargoInfo.itemID), None) if cargo is None: return False self.savedRemovedAmount = min(cargo.amount, self.cargoInfo.amount) cargo.amount -= self.savedRemovedAmount if cargo.amount <= 0: fit.cargo.remove(cargo) return True def Undo(self): pyfalog.debug('Undoing removal of cargo {} to fit {}'.format(self.cargoInfo, self.fitID)) from .add import CalcAddCargoCommand cmd = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.cargoInfo.itemID, amount=self.savedRemovedAmount)) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/commandFit/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/commandFit/add.py ================================================ import wx from logbook import Logger import eos.db from service.fit import Fit pyfalog = Logger(__name__) class CalcAddCommandCommand(wx.Command): def __init__(self, fitID, commandFitID, state=None): wx.Command.__init__(self, True, 'Add Command Fit') self.fitID = fitID self.commandFitID = commandFitID self.state = state def Do(self): pyfalog.debug('Doing addition of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) commandFit = sFit.getFit(self.commandFitID) # Command fit could have been deleted if we are redoing if commandFit is None: pyfalog.debug('Command fit is not available') return False # Already commanding this ship if commandFit in fit.commandFits: pyfalog.debug('Command fit had been applied already') return False if commandFit.ID in fit.commandFitDict: pyfalog.debug('Commanding fit is in command dict already') return False fit.commandFitDict[commandFit.ID] = commandFit # This bit is required, see issue #83 eos.db.saveddata_session.flush() eos.db.saveddata_session.refresh(commandFit) if self.state is not None: fitCommandInfo = commandFit.getCommandInfo(self.fitID) if fitCommandInfo is None: pyfalog.warning('Fit command info is not available') self.Undo() return False fitCommandInfo.active = self.state return True def Undo(self): pyfalog.debug('Undoing addition of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) # Can't find the command fit, it must have been deleted. Just skip, as deleted fit # means that someone else just did exactly what we wanted to do commandFit = Fit.getInstance().getFit(self.commandFitID) if commandFit is None: return True from .remove import CalcRemoveCommandFitCommand cmd = CalcRemoveCommandFitCommand(fitID=self.fitID, commandFitID=self.commandFitID) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/commandFit/remove.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveCommandFitCommand(wx.Command): def __init__(self, fitID, commandFitID): wx.Command.__init__(self, True, 'Remove Command Fit') self.fitID = fitID self.commandFitID = commandFitID self.savedState = None def Do(self): pyfalog.debug('Doing removal of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) commandFit = sFit.getFit(self.commandFitID) # Can be removed by the time we're redoing it if commandFit is None: pyfalog.debug('Command fit is not available') return False commandInfo = commandFit.getCommandInfo(self.fitID) if commandInfo is None: pyfalog.warning('Fit command info is not available') return False self.savedState = commandInfo.active if commandFit.ID not in fit.commandFitDict: pyfalog.warning('Unable to find commanding fit in command dict') return False del fit.commandFitDict[commandFit.ID] return True def Undo(self): pyfalog.debug('Undoing removal of command fit {} for fit {}'.format(self.commandFitID, self.fitID)) from .add import CalcAddCommandCommand cmd = CalcAddCommandCommand( fitID=self.fitID, commandFitID=self.commandFitID, state=self.savedState) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/commandFit/toggleStates.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleCommandFitStatesCommand(wx.Command): def __init__(self, fitID, mainCommandFitID, commandFitIDs, forceStates=None): wx.Command.__init__(self, True, 'Toggle Command Fit States') self.fitID = fitID self.mainCommandFitID = mainCommandFitID self.commandFitIDs = commandFitIDs self.forceStates = forceStates self.savedStates = None def Do(self): pyfalog.debug('Doing toggling of command fit {}/{} state for fit {}'.format(self.mainCommandFitID, self.commandFitIDs, self.fitID)) sFit = Fit.getInstance() commandFitIDs = self.commandFitIDs[:] if self.mainCommandFitID not in commandFitIDs: commandFitIDs.append(self.mainCommandFitID) commandInfos = {} for commandFitID in commandFitIDs: commandFit = sFit.getFit(commandFitID) # Command fit could have been deleted if we are redoing if commandFit is None: pyfalog.debug('Command fit is not available') continue commandInfo = commandFit.getCommandInfo(self.fitID) if commandInfo is None: pyfalog.warning('Fit command info is not available') continue commandInfos[commandFitID] = commandInfo if len(commandInfos) == 0: return False self.savedStates = {cfid: ci.active for cfid, ci in commandInfos.items()} mainCommandInfo = commandInfos.get(self.mainCommandFitID) if self.forceStates is not None: for commandFitID, state in self.forceStates.items(): commandInfo = commandInfos.get(commandFitID) if commandInfo is None: continue commandInfo.active = state elif mainCommandInfo is not None and mainCommandInfo.active: for commandInfo in commandInfos.values(): commandInfo.active = False elif mainCommandInfo is not None and not mainCommandInfo.active: for commandInfo in commandInfos.values(): commandInfo.active = True # Bail if we cannot calculate which state to take else: return False return True def Undo(self): pyfalog.debug('Undoing toggling of command fit {}/{} state for fit {}'.format(self.mainCommandFitID, self.commandFitIDs, self.fitID)) cmd = CalcToggleCommandFitStatesCommand( fitID=self.fitID, mainCommandFitID=self.mainCommandFitID, commandFitIDs=self.commandFitIDs, forceStates=self.savedStates) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/drone/localAdd.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo, droneStackLimit from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) class CalcAddLocalDroneCommand(wx.Command): def __init__(self, fitID, droneInfo, forceNewStack=False, ignoreRestrictions=False): wx.Command.__init__(self, True, 'Add Local Drone') self.fitID = fitID self.droneInfo = droneInfo self.forceNewStack = forceNewStack self.ignoreRestrictions = ignoreRestrictions self.savedDroneInfo = None self.savedPosition = None def Do(self): pyfalog.debug('Doing addition of local drone {} to fit {}'.format(self.droneInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) item = Market.getInstance().getItem(self.droneInfo.itemID, eager=("attributes", "group.category")) # If we're not adding any active drones, check if there's an inactive stack # with enough space for new drones and use it if not self.forceNewStack and self.droneInfo.amountActive == 0: maxStack = droneStackLimit(fit, item) for drone in fit.drones.find(item): if ( drone is not None and drone.amountActive == 0 and drone.amount + self.droneInfo.amount <= maxStack ): self.savedDroneInfo = DroneInfo.fromDrone(drone) self.savedPosition = fit.drones.index(drone) drone.amount += self.droneInfo.amount return True # Do new stack otherwise drone = self.droneInfo.toDrone() if drone is None: return False if not self.ignoreRestrictions and not drone.fits(fit): pyfalog.warning('Drone does not fit') return False fit.drones.append(drone) if drone not in fit.drones: pyfalog.warning('Failed to append to list') return False self.savedPosition = fit.drones.index(drone) return True def Undo(self): pyfalog.debug('Undoing addition of local drone {} to fit {}'.format(self.droneInfo, self.fitID)) if self.savedDroneInfo is not None: fit = Fit.getInstance().getFit(self.fitID) drone = fit.drones[self.savedPosition] drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True from .localRemove import CalcRemoveLocalDroneCommand cmd = CalcRemoveLocalDroneCommand( fitID=self.fitID, position=self.savedPosition, amount=self.droneInfo.amount) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/localChangeAmount.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeLocalDroneAmountCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Change Local Drone Amount') self.fitID = fitID self.position = position self.amount = amount self.savedDroneInfo = None def Do(self): pyfalog.debug('Doing change of local drone amount to {} at position {} on fit {}'.format(self.amount, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = fit.drones[self.position] self.savedDroneInfo = DroneInfo.fromDrone(drone) if self.amount == self.savedDroneInfo.amount: return False drone.amount = self.amount if drone.amountActive > 0: difference = self.amount - self.savedDroneInfo.amount drone.amount = self.amount drone.amountActive = max(min(drone.amountActive + difference, drone.amount), 0) return True def Undo(self): pyfalog.debug('Undoing change of local drone quantity to {} at position {} on fit {}'.format(self.amount, self.position, self.fitID)) if self.savedDroneInfo is not None: fit = Fit.getInstance().getFit(self.fitID) drone = fit.drones[self.position] drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True return False ================================================ FILE: gui/fitCommands/calc/drone/localChangeMutation.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeLocalDroneMutationCommand(wx.Command): def __init__(self, fitID, position, mutation, oldMutation=None): wx.Command.__init__(self, True, 'Change Local Drone Mutation') self.fitID = fitID self.position = position self.mutation = mutation self.savedMutation = oldMutation def Do(self): pyfalog.debug('Doing changing of local drone mutation at position {} to {} for fit ID {}'.format( self.position, self.mutation, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) drone = fit.drones[self.position] if not drone.isMutated: return False if self.savedMutation is None: self.savedMutation = {} for mutator in drone.mutators.values(): self.savedMutation[mutator.attrID] = mutator.value if self.mutation == self.savedMutation: return False for mutator in drone.mutators.values(): if mutator.attrID not in self.mutation: continue if mutator.value != self.mutation[mutator.attrID]: mutator.value = self.mutation[mutator.attrID] return True def Undo(self): pyfalog.debug('Undoing changing of local drone mutation at position {} to {} for fit ID {}'.format( self.position, self.mutation, self.fitID)) cmd = CalcChangeLocalDroneMutationCommand( fitID=self.fitID, position=self.position, mutation=self.savedMutation) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/localRemove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveLocalDroneCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Remove Local Drone') self.fitID = fitID self.position = position self.amountToRemove = amount self.savedDroneInfo = None self.removedStack = None def Do(self): pyfalog.debug('Doing removal of {} local drones at position {} from fit {}'.format(self.amountToRemove, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = fit.drones[self.position] self.savedDroneInfo = DroneInfo.fromDrone(drone) drone.amount = max(drone.amount - self.amountToRemove, 0) if drone.amountActive > 0: drone.amountActive = min(drone.amountActive, drone.amount) if drone.amount == 0: fit.drones.remove(drone) self.removedStack = True else: self.removedStack = False return True def Undo(self): pyfalog.debug('Undoing removal of {} local drones at position {} from fit {}'.format(self.amountToRemove, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) if self.removedStack: drone = self.savedDroneInfo.toDrone() if drone is None: return False fit.drones.insert(self.position, drone) if drone not in fit.drones: pyfalog.warning('Failed to insert to list') return False else: drone = fit.drones[self.position] drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True ================================================ FILE: gui/fitCommands/calc/drone/localToggleStates.py ================================================ import wx from logbook import Logger import eos.db from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleLocalDroneStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, forceActiveAmounts=None): wx.Command.__init__(self, True, 'Toggle Local Drone States') self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.forceActiveAmounts = forceActiveAmounts self.savedActiveAmounts = None def Do(self): pyfalog.debug('Doing toggling of local drone state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) positions = self.positions[:] if self.mainPosition not in positions: positions.append(self.mainPosition) self.savedActiveAmounts = {p: fit.drones[p].amountActive for p in positions} if self.forceActiveAmounts is not None: for position, amountActive in self.forceActiveAmounts.items(): drone = fit.drones[position] drone.amountActive = amountActive elif fit.drones[self.mainPosition].amountActive > 0: for position in positions: drone = fit.drones[position] if drone.amountActive > 0: drone.amountActive = 0 else: for position in positions: drone = fit.drones[position] if drone.amountActive == 0: drone.amountActive = drone.amount return True def Undo(self): pyfalog.debug('Undoing toggling of local drone state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) cmd = CalcToggleLocalDroneStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions, forceActiveAmounts=self.savedActiveAmounts) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/projectedAdd.py ================================================ import math import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcAddProjectedDroneCommand(wx.Command): def __init__(self, fitID, droneInfo): wx.Command.__init__(self, True, 'Add Projected Drone') self.fitID = fitID self.droneInfo = droneInfo self.savedDroneInfo = None def Do(self): pyfalog.debug('Doing addition of projected drone {} to fit {}'.format(self.droneInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.droneInfo.itemID), None) # Changing existing stack if drone is not None: self.savedDroneInfo = DroneInfo.fromDrone(drone) # Ignore drone info's active amount parameter if we're adding to existing stack, # and decide based on stack's state drone.amount += self.droneInfo.amount if drone.amountActive > 0: drone.amountActive += self.droneInfo.amount return True # Making new stack drone = self.droneInfo.toDrone() if drone is None: return False if not drone.item.isType('projected'): pyfalog.debug('Drone is not projectable') return False fit.projectedDrones.append(drone) if drone not in fit.projectedDrones: pyfalog.warning('Failed to append to list') return False return True def Undo(self): pyfalog.debug('Undoing addition of projected drone {} to fit {}'.format(self.droneInfo, self.fitID)) # Changing existing stack if self.savedDroneInfo is not None: fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.savedDroneInfo.itemID), None) if drone is None: pyfalog.warning('Unable to find projected drone for modification') return False drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True # Removing previously added stack from .projectedRemove import CalcRemoveProjectedDroneCommand cmd = CalcRemoveProjectedDroneCommand( fitID=self.fitID, itemID=self.droneInfo.itemID, amount=math.inf) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/projectedChangeAmount.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedDroneAmountCommand(wx.Command): def __init__(self, fitID, itemID, amount): wx.Command.__init__(self, True, 'Change Projected Drone Amount') self.fitID = fitID self.itemID = itemID self.amount = amount self.savedDroneInfo = None def Do(self): pyfalog.debug('Doing change of projected drone {} amount to {} on fit {}'.format(self.itemID, self.amount, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.itemID), None) if drone is None: pyfalog.warning('Cannot find projected drone') return False self.savedDroneInfo = DroneInfo.fromDrone(drone) if self.amount == self.savedDroneInfo.amount: return False drone.amount = self.amount if drone.amountActive > 0: difference = self.amount - self.savedDroneInfo.amount drone.amount = self.amount drone.amountActive = max(min(drone.amountActive + difference, drone.amount), 0) return True def Undo(self): pyfalog.debug('Undoing change of projected drone {} amount to {} on fit {}'.format(self.itemID, self.amount, self.fitID)) if self.savedDroneInfo is not None: fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.savedDroneInfo.itemID), None) if drone is None: pyfalog.warning('Cannot find projected drone') return False drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True return False ================================================ FILE: gui/fitCommands/calc/drone/projectedChangeProjectionRange.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedDroneProjectionRangeCommand(wx.Command): def __init__(self, fitID, itemID, projectionRange): wx.Command.__init__(self, True, 'Change Projected Drone Projection Range') self.fitID = fitID self.itemID = itemID self.projectionRange = projectionRange self.savedProjectionRange = None def Do(self): pyfalog.debug('Doing change of projected drone {} projection range to {} on fit {}'.format( self.itemID, self.projectionRange, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.itemID), None) if drone is None: pyfalog.warning('Cannot find projected drone') return False if drone.projectionRange == self.projectionRange: return False self.savedProjectionRange = drone.projectionRange drone.projectionRange = self.projectionRange return True def Undo(self): pyfalog.debug('Undoing change of projected drone {} projection range to {} on fit {}'.format( self.itemID, self.projectionRange, self.fitID)) cmd = CalcChangeProjectedDroneProjectionRangeCommand( fitID=self.fitID, itemID=self.itemID, projectionRange=self.savedProjectionRange) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/projectedChangeState.py ================================================ import wx from logbook import Logger import eos.db from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedDroneStateCommand(wx.Command): def __init__(self, fitID, itemID, state): wx.Command.__init__(self, True, 'Change Projected Drone State') self.fitID = fitID self.itemID = itemID self.state = state self.savedState = None def Do(self): pyfalog.debug('Doing changing of projected drone {} state to {} for fit {}'.format(self.itemID, self.state, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.itemID), None) if drone is None: pyfalog.warning('Unable to find projected drone') return False self.savedState = drone.amountActive > 0 if self.state == self.savedState: return False if self.state: if not drone.canBeApplied(fit): pyfalog.warning('Projected drone cannot be applied') return False drone.amountActive = drone.amount else: drone.amountActive = 0 return True def Undo(self): pyfalog.debug('Undoing changing of projected drone {} state to {} for fit {}'.format(self.itemID, self.state, self.fitID)) cmd = CalcChangeProjectedDroneStateCommand( fitID=self.fitID, itemID=self.itemID, state=self.savedState) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/drone/projectedRemove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import DroneInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveProjectedDroneCommand(wx.Command): def __init__(self, fitID, itemID, amount): wx.Command.__init__(self, True, 'Remove Projected Drone') self.fitID = fitID self.itemID = itemID self.amountToRemove = amount self.savedDroneInfo = None def Do(self): pyfalog.debug('Doing removal of {} projected drones {} from fit {}'.format(self.amountToRemove, self.itemID, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.itemID), None) if drone is None: pyfalog.warning('Unable to find projected drone') return False self.savedDroneInfo = DroneInfo.fromDrone(drone) drone.amount = max(drone.amount - self.amountToRemove, 0) # Remove stack if we have no items remaining if drone.amount == 0: fit.projectedDrones.remove(drone) else: if drone.amountActive > 0: drone.amountActive = min(drone.amountActive, drone.amount) return True def Undo(self): pyfalog.debug('Undoing removal of {} projected drones {} from fit {}'.format(self.amountToRemove, self.itemID, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) # Change stack if we still have it drone = next((pd for pd in fit.projectedDrones if pd.itemID == self.savedDroneInfo.itemID), None) if drone is not None: drone.amount = self.savedDroneInfo.amount drone.amountActive = self.savedDroneInfo.amountActive return True # Make new stack from .projectedAdd import CalcAddProjectedDroneCommand cmd = CalcAddProjectedDroneCommand(fitID=self.fitID, droneInfo=self.savedDroneInfo) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/fighter/abilityToggleStates.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleFighterAbilityStatesCommand(wx.Command): def __init__(self, fitID, projected, mainPosition, positions, effectID, forceStates=None): wx.Command.__init__(self, True, 'Toggle Fighter Ability States') self.fitID = fitID self.projected = projected self.mainPosition = mainPosition self.positions = positions self.effectID = effectID self.forceStates = forceStates self.savedStates = None def Do(self): pyfalog.debug('Doing toggling of fighter ability {} state at position {}/{} for fit {}'.format(self.effectID, self.mainPosition, self.positions, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) container = fit.projectedFighters if self.projected else fit.fighters positions = self.positions[:] if self.mainPosition not in positions: positions.append(self.mainPosition) savedStates = {} for position in positions: fighter = container[position] ability = next((fa for fa in fighter.abilities if fa.effectID == self.effectID), None) if ability is None: continue savedStates[position] = ability.active if len(savedStates) > 0: self.savedStates = savedStates mainFighter = container[self.mainPosition] mainAbility = next((fa for fa in mainFighter.abilities if fa.effectID == self.effectID), None) changes = False if self.forceStates is not None: for position, state in self.forceStates.items(): fighter = container[position] ability = next((fa for fa in fighter.abilities if fa.effectID == self.effectID), None) if ability is None: continue changes = True if ability.active is not state: ability.active = state elif mainAbility is None: pyfalog.warning('Unable to find main fighter ability') return False elif mainAbility.active: for position in positions: fighter = container[position] ability = next((fa for fa in fighter.abilities if fa.effectID == self.effectID), None) if ability is None: continue if ability.active: changes = True ability.active = False else: for position in positions: fighter = container[position] ability = next((fa for fa in fighter.abilities if fa.effectID == self.effectID), None) if ability is None: continue if not ability.active: changes = True ability.active = True return changes def Undo(self): pyfalog.debug('Undoing toggling of fighter ability {} state at position {}/{} for fit {}'.format(self.effectID, self.mainPosition, self.positions, self.fitID)) cmd = CalcToggleFighterAbilityStatesCommand( fitID=self.fitID, projected=self.projected, mainPosition=self.mainPosition, positions=self.positions, effectID=self.effectID, forceStates=self.savedStates) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/changeAmount.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeFighterAmountCommand(wx.Command): def __init__(self, fitID, projected, position, amount): wx.Command.__init__(self, True, 'Change Fighter Amount') self.fitID = fitID self.projected = projected self.position = position self.amount = amount self.savedAmount = None def Do(self): pyfalog.debug('Doing change of fighter amount to {} at position {} on fit {}'.format(self.amount, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) container = fit.projectedFighters if self.projected else fit.fighters fighter = container[self.position] if self.amount == fighter.amount: return False self.savedAmount = fighter.amount if self.amount == -1: fighter.amount = self.amount return True else: fighter.amount = max(min(self.amount, fighter.fighterSquadronMaxSize), 0) return True def Undo(self): pyfalog.debug('Undoing change of fighter amount to {} at position {} on fit {}'.format(self.amount, self.position, self.fitID)) cmd = CalcChangeFighterAmountCommand(fitID=self.fitID, projected=self.projected, position=self.position, amount=self.savedAmount) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/localAdd.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcAddLocalFighterCommand(wx.Command): def __init__(self, fitID, fighterInfo, position=None, ignoreRestrictions=False): wx.Command.__init__(self, True, 'Add Fighter') self.fitID = fitID self.fighterInfo = fighterInfo self.position = position self.ignoreRestrictions = ignoreRestrictions def Do(self): pyfalog.debug('Doing addition of fighter {} to fit {}'.format(self.fighterInfo, self.fitID)) fighter = self.fighterInfo.toFighter() if fighter is None: return False fit = Fit.getInstance().getFit(self.fitID) if not self.ignoreRestrictions and not fighter.fits(fit): pyfalog.warning('Fighter does not fit') return False # If we were not asked to set specific state, figure it out based on available tubes if self.fighterInfo.state is None: typeUsed = fit.getSlotsUsed(fighter.slot) typeTotal = fit.getNumSlots(fighter.slot) if fit.fighterTubesUsed >= fit.fighterTubesTotal or typeUsed >= typeTotal: fighter.active = False else: fighter.active = True if self.position is None: fit.fighters.append(fighter) if fighter not in fit.fighters: pyfalog.warning('Failed to append to list') return False self.position = fit.fighters.index(fighter) else: fit.fighters.insert(self.position, fighter) if fighter not in fit.fighters: pyfalog.warning('Failed to insert to list') return False return True def Undo(self): pyfalog.debug('Undoing addition of fighter {} to fit {}'.format(self.fighterInfo, self.fitID)) from .localRemove import CalcRemoveLocalFighterCommand cmd = CalcRemoveLocalFighterCommand(fitID=self.fitID, position=self.position) cmd.Do() return True ================================================ FILE: gui/fitCommands/calc/fighter/localRemove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import FighterInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveLocalFighterCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Remove Fighter') self.fitID = fitID self.position = position self.savedFighterInfo = None def Do(self): pyfalog.debug('Doing removal of fighter at position {} from fit {}'.format(self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) fighter = fit.fighters[self.position] self.savedFighterInfo = FighterInfo.fromFighter(fighter) fit.fighters.remove(fighter) return True def Undo(self): pyfalog.debug('Undoing removal of fighter at position {} from fit {}'.format(self.position, self.fitID)) from .localAdd import CalcAddLocalFighterCommand cmd = CalcAddLocalFighterCommand( fitID=self.fitID, fighterInfo=self.savedFighterInfo, position=self.position, ignoreRestrictions=True) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/localToggleStates.py ================================================ import wx from logbook import Logger import eos.db from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleLocalFighterStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, forceStates=None): wx.Command.__init__(self, True, 'Toggle Local Fighter States') self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.forceStates = forceStates self.savedStates = None def Do(self): pyfalog.debug('Doing toggling of local fighter state at position {}/{} for fit {}'.format( self.mainPosition, self.positions, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) positions = self.positions[:] if self.mainPosition not in positions: positions.append(self.mainPosition) self.savedStates = {p: fit.fighters[p].active for p in positions} if self.forceStates is not None: for position, state in self.forceStates.items(): fighter = fit.fighters[position] fighter.active = state elif fit.fighters[self.mainPosition].active: for position in positions: fighter = fit.fighters[position] if fighter.active: fighter.active = False else: for position in positions: fighter = fit.fighters[position] if not fighter.active: fighter.active = True return True def Undo(self): pyfalog.debug('Undoing toggling of local fighter state at position {}/{} for fit {}'.format( self.mainPosition, self.positions, self.fitID)) cmd = CalcToggleLocalFighterStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions, forceStates=self.savedStates) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/projectedAdd.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcAddProjectedFighterCommand(wx.Command): def __init__(self, fitID, fighterInfo, position=None): wx.Command.__init__(self, True, 'Add Projected Fighter') self.fitID = fitID self.fighterInfo = fighterInfo self.position = position def Do(self): pyfalog.debug('Doing addition of projected fighter {} onto: {}'.format(self.fighterInfo, self.fitID)) fighter = self.fighterInfo.toFighter() if fighter is None: return False fit = Fit.getInstance().getFit(self.fitID) if self.position is not None: fit.projectedFighters.insert(self.position, fighter) if fighter not in fit.projectedFighters: return False else: fit.projectedFighters.append(fighter) if fighter not in fit.projectedFighters: return False self.position = fit.projectedFighters.index(fighter) return True def Undo(self): pyfalog.debug('Undoing addition of projected fighter {} onto: {}'.format(self.fighterInfo, self.fitID)) from .projectedRemove import CalcRemoveProjectedFighterCommand cmd = CalcRemoveProjectedFighterCommand(fitID=self.fitID, position=self.position) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/projectedChangeProjectionRange.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedFighterProjectionRangeCommand(wx.Command): def __init__(self, fitID, position, projectionRange): wx.Command.__init__(self, True, 'Change Projected Fighter Projection Range') self.fitID = fitID self.position = position self.projectionRange = projectionRange self.savedProjectionRange = None def Do(self): pyfalog.debug('Doing changing of projected fighter projection range to {} at position {} for fit {}'.format( self.projectionRange, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) fighter = fit.projectedFighters[self.position] if fighter.projectionRange == self.projectionRange: return False self.savedProjectionRange = fighter.projectionRange fighter.projectionRange = self.projectionRange return True def Undo(self): pyfalog.debug('Undoing changing of projected fighter projection range to {} at position {} for fit {}'.format( self.projectionRange, self.position, self.fitID)) cmd = CalcChangeProjectedFighterProjectionRangeCommand( fitID=self.fitID, position=self.position, projectionRange=self.savedProjectionRange) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/projectedChangeState.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedFighterStateCommand(wx.Command): def __init__(self, fitID, position, state): wx.Command.__init__(self, True, 'Change Projected Fighter State') self.fitID = fitID self.position = position self.state = state self.savedState = None def Do(self): pyfalog.debug('Doing changing of projected fighter state to {} at position {} for fit {}'.format( self.state, self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) fighter = fit.projectedFighters[self.position] self.savedState = fighter.active if self.state == self.savedState: return False fighter.active = self.state return True def Undo(self): pyfalog.debug('Undoing changing of projected fighter state to {} at position {} for fit {}'.format( self.state, self.position, self.fitID)) cmd = CalcChangeProjectedFighterStateCommand( fitID=self.fitID, position=self.position, state=self.savedState) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fighter/projectedRemove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import FighterInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveProjectedFighterCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Add Projected Fighter') self.fitID = fitID self.position = position self.savedFighterInfo = None def Do(self): pyfalog.debug('Doing removal of projected fighter at position {} from fit {}'.format(self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) fighter = fit.projectedFighters[self.position] self.savedFighterInfo = FighterInfo.fromFighter(fighter) fit.projectedFighters.remove(fighter) return True def Undo(self): pyfalog.debug('Undoing removal of projected fighter at position {} from fit {}'.format(self.position, self.fitID)) from .projectedAdd import CalcAddProjectedFighterCommand cmd = CalcAddProjectedFighterCommand( fitID=self.fitID, fighterInfo=self.savedFighterInfo, position=self.position) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fitPilotSecurity.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeFitPilotSecurityCommand(wx.Command): def __init__(self, fitID, secStatus): wx.Command.__init__(self, True, 'Change Fit Pilot Security') self.fitID = fitID self.secStatus = secStatus self.savedSecStatus = None def Do(self): pyfalog.debug('Doing changing pilot security status of fit {} to {}'.format(self.fitID, self.secStatus)) fit = Fit.getInstance().getFit(self.fitID, basic=True) # Fetching status via getter and then saving 'raw' security status # is intentional, to restore pre-change state properly if fit.pilotSecurity == self.secStatus: return False self.savedSecStatus = fit.pilotSecurity fit.pilotSecurity = self.secStatus return True def Undo(self): pyfalog.debug('Undoing changing pilot security status of fit {} to {}'.format(self.fitID, self.secStatus)) cmd = CalcChangeFitPilotSecurityCommand(fitID=self.fitID, secStatus=self.savedSecStatus) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fitRename.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcFitRenameCommand(wx.Command): def __init__(self, fitID, name): wx.Command.__init__(self, True, 'Rename Fit') self.fitID = fitID self.name = name self.savedName = None def Do(self): pyfalog.debug('Doing renaming of fit {} to {}'.format(self.fitID, self.name)) fit = Fit.getInstance().getFit(self.fitID, basic=True) if fit.name == self.name: return False self.savedName = fit.name fit.name = self.name return True def Undo(self): pyfalog.debug('Undoing renaming of fit {} to {}'.format(self.fitID, self.name)) cmd = CalcFitRenameCommand(fitID=self.fitID, name=self.savedName) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/fitSystemSecurity.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeFitSystemSecurityCommand(wx.Command): def __init__(self, fitID, secStatus): wx.Command.__init__(self, True, 'Change Fit System Security') self.fitID = fitID self.secStatus = secStatus self.savedSecStatus = None def Do(self): pyfalog.debug('Doing changing system security status of fit {} to {}'.format(self.fitID, self.secStatus)) fit = Fit.getInstance().getFit(self.fitID, basic=True) # Fetching status via getter and then saving 'raw' security status # is intentional, to restore pre-change state properly if fit.getSystemSecurity() == self.secStatus: return False self.savedSecStatus = fit.systemSecurity fit.systemSecurity = self.secStatus return True def Undo(self): pyfalog.debug('Undoing changing system security status of fit {} to {}'.format(self.fitID, self.secStatus)) cmd = CalcChangeFitSystemSecurityCommand(fitID=self.fitID, secStatus=self.savedSecStatus) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/implant/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/implant/add.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcAddImplantCommand(wx.Command): def __init__(self, fitID, implantInfo, position=None): wx.Command.__init__(self, True, 'Add Implant') self.fitID = fitID self.newImplantInfo = implantInfo self.newPosition = position self.oldImplantInfo = None self.oldPosition = None def Do(self): pyfalog.debug('Doing addition of implant {} to fit {}'.format(self.newImplantInfo, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) if any(self.newImplantInfo.itemID == i.itemID for i in fit.implants): pyfalog.debug('Skipping as such implant is already on the fit') return False newImplant = self.newImplantInfo.toImplant() if newImplant is None: return False self.oldPosition, self.oldImplantInfo = fit.implants.makeRoom(newImplant) if self.newPosition is not None: fit.implants.insert(self.newPosition, newImplant) if newImplant not in fit.implants: pyfalog.warning('Failed to insert to list') cmd = CalcAddImplantCommand( fitID=self.fitID, implantInfo=self.oldImplantInfo, position=self.oldPosition) cmd.Do() return False else: fit.implants.append(newImplant) if newImplant not in fit.implants: pyfalog.warning('Failed to append to list') cmd = CalcAddImplantCommand( fitID=self.fitID, implantInfo=self.oldImplantInfo, position=self.oldPosition) cmd.Do() return False self.newPosition = fit.implants.index(newImplant) return True def Undo(self): pyfalog.debug('Undo addition of implant {} to fit {}'.format(self.newImplantInfo, self.fitID)) if self.oldImplantInfo is not None and self.oldPosition is not None: cmd = CalcAddImplantCommand( fitID=self.fitID, implantInfo=self.oldImplantInfo, position=self.oldPosition) return cmd.Do() from .remove import CalcRemoveImplantCommand cmd = CalcRemoveImplantCommand(fitID=self.fitID, position=self.newPosition) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/implant/changeLocation.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeImplantLocationCommand(wx.Command): def __init__(self, fitID, source): wx.Command.__init__(self, True, 'Change Implant Location') self.fitID = fitID self.source = source self.savedSource = None def Do(self): pyfalog.debug('Doing changing of implant source to {} for fit {}'.format(self.fitID, self.source)) fit = Fit.getInstance().getFit(self.fitID) self.savedSource = fit.implantSource if self.source == self.savedSource: return False fit.implantSource = self.source return True def Undo(self): cmd = CalcChangeImplantLocationCommand(fitID=self.fitID, source=self.savedSource) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/implant/remove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import ImplantInfo from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveImplantCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Remove Implant') self.fitID = fitID self.position = position self.savedImplantInfo = None def Do(self): pyfalog.debug('Doing removal of implant from position {} on fit {}'.format(self.position, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) implant = fit.implants[self.position] self.savedImplantInfo = ImplantInfo.fromImplant(implant) fit.implants.remove(implant) return True def Undo(self): pyfalog.debug('Undoing removal of implant {} on fit {}'.format(self.savedImplantInfo, self.fitID)) from .add import CalcAddImplantCommand cmd = CalcAddImplantCommand( fitID=self.fitID, implantInfo=self.savedImplantInfo, position=self.position) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/implant/toggleStates.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcToggleImplantStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, forceStates=None): wx.Command.__init__(self, True, 'Toggle Implant States') self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.forceStates = forceStates self.savedStates = None def Do(self): pyfalog.debug('Doing toggling of implant state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) positions = self.positions[:] if self.mainPosition not in positions: positions.append(self.mainPosition) self.savedStates = {p: fit.implants[p].active for p in positions} if self.forceStates is not None: for position, state in self.forceStates.items(): implant = fit.implants[position] implant.active = state elif fit.implants[self.mainPosition].active: for position in positions: implant = fit.implants[position] if implant.active: implant.active = False else: for position in positions: implant = fit.implants[position] if not implant.active: implant.active = True return True def Undo(self): pyfalog.debug('Undoing toggling of implant state at position {}/{} for fit {}'.format(self.mainPosition, self.positions, self.fitID)) cmd = CalcToggleImplantStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions, forceStates=self.savedStates) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/itemRebase.py ================================================ import wx from logbook import Logger from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) class CalcRebaseItemCommand(wx.Command): def __init__(self, fitID, containerName, position, itemID): wx.Command.__init__(self, True, 'Rebase Item') self.fitID = fitID self.containerName = containerName self.position = position self.itemID = itemID self.savedItemID = None def Do(self): pyfalog.debug('Doing rebase of item in {} at position {} to {}'.format(self.containerName, self.position, self.itemID)) fit = Fit.getInstance().getFit(self.fitID) obj = getattr(fit, self.containerName)[self.position] self.savedItemID = getattr(obj.item, 'ID', None) if self.savedItemID is None: pyfalog.warning('Unable to get old item ID') return False newItem = Market.getInstance().getItem(self.itemID) if newItem is None: pyfalog.warning('Unable to fetch new item') return False obj.rebase(newItem) return True def Undo(self): pyfalog.debug('Undoing rebase of item in {} at position {} to {}'.format(self.containerName, self.position, self.itemID)) cmd = CalcRebaseItemCommand( fitID=self.fitID, containerName=self.containerName, position=self.position, itemID=self.savedItemID) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/module/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/module/changeCharges.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) class CalcChangeModuleChargesCommand(wx.Command): def __init__(self, fitID, projected, chargeMap, ignoreRestrictions=False, recalc=True): wx.Command.__init__(self, True, 'Change Module Charges') self.fitID = fitID self.projected = projected self.chargeMap = chargeMap self.ignoreRestriction = ignoreRestrictions self.recalc = recalc self.savedChargeMap = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing change of module charges according to map {} on fit {}'.format(self.chargeMap, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) container = fit.modules if not self.projected else fit.projectedModules changes = False self.savedChargeMap = {} sMkt = Market.getInstance() for position, chargeItemID in self.chargeMap.items(): mod = container[position] if mod.isEmpty: continue if mod.chargeID is None and chargeItemID is None: continue if mod.chargeID == chargeItemID: continue chargeItem = sMkt.getItem(chargeItemID) if chargeItemID is not None else None if chargeItem is not None and not chargeItem.isCharge: continue if not self.ignoreRestriction and not mod.isValidCharge(chargeItem): pyfalog.warning('Invalid charge {} for {}'.format(chargeItem, mod)) continue pyfalog.debug('Setting charge {} for {} on fit {}'.format(chargeItem, mod, self.fitID)) self.savedChargeMap[position] = mod.chargeID changes = True mod.charge = chargeItem if not changes: return False if self.recalc: sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing change of module charges according to map {} on fit {}'.format(self.chargeMap, self.fitID)) cmd = CalcChangeModuleChargesCommand( fitID=self.fitID, projected=self.projected, chargeMap=self.savedChargeMap, ignoreRestrictions=True, recalc=False) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/changeSpool.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeModuleSpoolCommand(wx.Command): def __init__(self, fitID, projected, position, spoolType, spoolAmount): wx.Command.__init__(self, True, 'Change Module Spool') self.fitID = fitID self.projected = projected self.position = position self.spoolType = spoolType self.spoolAmount = spoolAmount self.savedSpoolType = None self.savedSpoolAmount = None def Do(self): pyfalog.debug('Doing change of module spoolup at position {} to {} type {} amount on fit {}'.format(self.position, self.spoolType, self.spoolAmount, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) container = fit.modules if not self.projected else fit.projectedModules mod = container[self.position] if mod.isEmpty: pyfalog.warning('Attempt to change spoolup for empty module') return False self.savedSpoolType = mod.spoolType self.savedSpoolAmount = mod.spoolAmount if self.spoolType == self.savedSpoolType and self.spoolAmount == self.savedSpoolAmount: return False mod.spoolType = self.spoolType mod.spoolAmount = self.spoolAmount return True def Undo(self): pyfalog.debug('Undoing change of module spoolup at position {} to {} type {} amount on fit {}'.format(self.position, self.spoolType, self.spoolAmount, self.fitID)) cmd = CalcChangeModuleSpoolCommand( fitID=self.fitID, projected=self.projected, position=self.position, spoolType=self.savedSpoolType, spoolAmount=self.savedSpoolAmount) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/module/localAdd.py ================================================ import wx from logbook import Logger import eos.db from gui.fitCommands.helpers import restoreCheckedStates, activeStateLimit from service.fit import Fit pyfalog = Logger(__name__) class CalcAddLocalModuleCommand(wx.Command): def __init__(self, fitID, newModInfo): wx.Command.__init__(self, True, 'Add Module') self.fitID = fitID self.newModInfo = newModInfo self.savedPosition = None self.subsystemCmd = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing addition of local module {} to fit {}'.format(self.newModInfo, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) newMod = self.newModInfo.toModule(fallbackState=activeStateLimit(self.newModInfo.itemID)) if newMod is None: return False # If subsystem and we need to replace, run the replace command instead and bypass the rest of this command if newMod.item.category.name == 'Subsystem': for oldMod in fit.modules: if oldMod.getModifiedItemAttr('subSystemSlot') == newMod.getModifiedItemAttr('subSystemSlot') and newMod.slot == oldMod.slot: if oldMod.itemID == self.newModInfo.itemID: return False from .localReplace import CalcReplaceLocalModuleCommand self.subsystemCmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=fit.modules.index(oldMod), newModInfo=self.newModInfo) return self.subsystemCmd.Do() fit.modules.append(newMod) if newMod not in fit.modules: pyfalog.warning('Failed to append to list') return False self.savedPosition = fit.modules.index(newMod) # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) # fits() sometimes relies on recalculated on-item attributes, such as fax cap # booster limitation, so we have to check it after recalculating and remove the # module if the check has failed if not newMod.fits(fit): pyfalog.warning('Module does not fit') self.Undo() return False self.savedStateCheckChanges = sFit.checkStates(fit, newMod) return True def Undo(self): pyfalog.debug('Undoing addition of local module {} to fit {}'.format(self.newModInfo, self.fitID)) # We added a subsystem module, which actually ran the replace command. Run the undo for that guy instead if self.subsystemCmd is not None: return self.subsystemCmd.Undo() if self.savedPosition is None: return False from .localRemove import CalcRemoveLocalModulesCommand cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=[self.savedPosition], recalc=False, clearTail=True) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.subsystemCmd is not None: return self.subsystemCmd.needsGuiRecalc if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/localChangeMutation.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeLocalModuleMutationCommand(wx.Command): def __init__(self, fitID, position, mutation, oldMutation=None): wx.Command.__init__(self, True, 'Change Local Module Mutation') self.fitID = fitID self.position = position self.mutation = mutation self.savedMutation = oldMutation def Do(self): pyfalog.debug('Doing changing of local module mutation at position {} to {} for fit ID {}'.format( self.position, self.mutation, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mod = fit.modules[self.position] if not mod.isMutated: return False if self.savedMutation is None: self.savedMutation = {} for mutator in mod.mutators.values(): self.savedMutation[mutator.attrID] = mutator.value if self.mutation == self.savedMutation: return False for mutator in mod.mutators.values(): if mutator.attrID not in self.mutation: continue if mutator.value != self.mutation[mutator.attrID]: mutator.value = self.mutation[mutator.attrID] return True def Undo(self): pyfalog.debug('Undoing changing of local module mutation at position {} to {} for fit ID {}'.format( self.position, self.mutation, self.fitID)) cmd = CalcChangeLocalModuleMutationCommand( fitID=self.fitID, position=self.position, mutation=self.savedMutation) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/module/localChangeStates.py ================================================ import wx from logbook import Logger from eos.saveddata.module import Module from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeLocalModuleStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, click): wx.Command.__init__(self, True, 'Change Module States') self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.click = click self.savedStates = {} self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing change of local module states at position {}/{} to click {} on fit {}'.format(self.mainPosition, self.positions, self.click, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mainMod = fit.modules[self.mainPosition] if mainMod.isEmpty: return False positions = [pos for pos in self.positions if not fit.modules[pos].isEmpty] if self.mainPosition not in positions: positions.append(self.mainPosition) self.savedStates = {pos: fit.modules[pos].state for pos in positions} changed = False mainProposedState = Module.getProposedState(mainMod, self.click) pyfalog.debug('Attempting to change modules to {}'.format(mainProposedState)) if mainProposedState != mainMod.state: pyfalog.debug('Toggle {} state: {} for fit ID: {}'.format(mainMod, mainProposedState, self.fitID)) mainMod.state = mainProposedState changed = True for position in [pos for pos in positions if pos != self.mainPosition]: mod = fit.modules[position] proposedState = Module.getProposedState(mod, self.click, mainProposedState) if proposedState != mod.state: pyfalog.debug('Toggle {} state: {} for fit ID: {}'.format(mod, proposedState, self.fitID)) mod.state = proposedState changed = True if not changed: return False sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, mainMod) return True def Undo(self): pyfalog.debug('Undoing change of local module states at position {}/{} to click {} on fit {}'.format(self.mainPosition, self.positions, self.click, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) for position, state in self.savedStates.items(): mod = fit.modules[position] pyfalog.debug('Reverting {} to state {} for fit ID {}'.format(mod, state, self.fitID)) mod.state = state restoreCheckedStates(fit, self.savedStateCheckChanges, ignoreModPoss=self.savedStates) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/localClone.py ================================================ import copy import wx from logbook import Logger import eos.db from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcCloneLocalModuleCommand(wx.Command): def __init__(self, fitID, srcPosition, dstPosition): wx.Command.__init__(self, True, 'Clone Local Module') self.fitID = fitID self.srcPosition = srcPosition self.dstPosition = dstPosition self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing cloning of local module from position {} to position {} for fit ID {}'.format(self.srcPosition, self.dstPosition, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) srcMod = fit.modules[self.srcPosition] copyMod = copy.deepcopy(srcMod) if not copyMod.fits(fit): return False if not fit.modules[self.dstPosition].isEmpty: return False fit.modules.replace(self.dstPosition, copyMod) if copyMod not in fit.modules: pyfalog.warning('Failed to replace module') return False # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, copyMod) return True def Undo(self): pyfalog.debug('Undoing cloning of local module from position {} to position {} for fit ID {}'.format(self.srcPosition, self.dstPosition, self.fitID)) from .localRemove import CalcRemoveLocalModulesCommand cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=[self.dstPosition], recalc=False) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/localRemove.py ================================================ import wx from logbook import Logger import eos.db from eos.const import FittingSlot from gui.fitCommands.helpers import ModuleInfo, restoreCheckedStates, restoreRemovedDummies from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveLocalModulesCommand(wx.Command): def __init__(self, fitID, positions, recalc=True, clearTail=False): wx.Command.__init__(self, True, 'Remove Module') self.fitID = fitID self.positions = positions self.recalc = recalc self.clearTail = clearTail self.savedSubInfos = None self.savedModInfos = None self.savedStateCheckChanges = None self.savedTail = None def Do(self): pyfalog.debug('Doing removal of local modules from positions {} on fit {}'.format(self.positions, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) self.savedSubInfos = {} self.savedModInfos = {} for position in self.positions: mod = fit.modules[position] if not mod.isEmpty: if mod.slot == FittingSlot.SUBSYSTEM: self.savedSubInfos[position] = ModuleInfo.fromModule(mod) else: self.savedModInfos[position] = ModuleInfo.fromModule(mod) fit.modules.free(position) if len(self.savedSubInfos) == 0 and len(self.savedModInfos) == 0: return False if self.clearTail: self.savedTail = fit.clearTail() if self.recalc: # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing removal of local modules {} on fit {}'.format(self.savedModInfos, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] from .localReplace import CalcReplaceLocalModuleCommand # Restore subsystems 1st if len(self.savedSubInfos) > 0: for position, modInfo in self.savedSubInfos.items(): cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=position, newModInfo=modInfo, ignoreRestrictions=True, recalc=False) results.append(cmd.Do()) sFit.recalc(fit) for position, modInfo in self.savedModInfos.items(): cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=position, newModInfo=modInfo, ignoreRestrictions=True, recalc=False) results.append(cmd.Do()) if not any(results): return False restoreCheckedStates(fit, self.savedStateCheckChanges) restoreRemovedDummies(fit, self.savedTail) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/localReplace.py ================================================ import wx from logbook import Logger import eos.db from gui.fitCommands.helpers import ModuleInfo, restoreCheckedStates, activeStateLimit from service.fit import Fit pyfalog = Logger(__name__) class CalcReplaceLocalModuleCommand(wx.Command): def __init__(self, fitID, position, newModInfo, unloadInvalidCharges=False, ignoreRestrictions=False, recalc=True): wx.Command.__init__(self, True, 'Replace Module') self.fitID = fitID self.position = position self.newModInfo = newModInfo self.oldModInfo = None self.unloadInvalidCharges = unloadInvalidCharges self.ignoreRestrictions = ignoreRestrictions self.recalc = recalc self.savedStateCheckChanges = None self.unloadedCharge = None def Do(self): pyfalog.debug('Doing replacement of local module at position {} to {} on fit {}'.format(self.position, self.newModInfo, self.fitID)) self.unloadedCharge = False sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) oldMod = fit.modules[self.position] if not oldMod.isEmpty: self.oldModInfo = ModuleInfo.fromModule(oldMod) if self.newModInfo == self.oldModInfo: return False newMod = self.newModInfo.toModule(fallbackState=activeStateLimit(self.newModInfo.itemID)) if newMod is None: return False if newMod.slot != oldMod.slot: return False # Dummy it out in case the next bit fails fit.modules.replace(self.position, newMod) if newMod not in fit.modules: pyfalog.warning('Failed to replace in list') self.Undo() return False if self.recalc: # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, newMod) if not self.ignoreRestrictions and not newMod.fits(fit): pyfalog.warning('Module does not fit') self.Undo() return False if not self.ignoreRestrictions and not newMod.isValidCharge(newMod.charge): if self.unloadInvalidCharges: newMod.charge = None self.unloadedCharge = True else: pyfalog.warning('Invalid charge') self.Undo() return False return True def Undo(self): pyfalog.debug('Undoing replacement of local module at position {} to {} on fit {}'.format(self.position, self.newModInfo, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) # Remove if there was no module if self.oldModInfo is None: from .localRemove import CalcRemoveLocalModulesCommand cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=[self.position], recalc=self.recalc) if not cmd.Do(): return False restoreCheckedStates(fit, self.savedStateCheckChanges) return True # Replace if there was oldMod = self.oldModInfo.toModule() if oldMod is None: return False fit.modules.free(self.position) fit.modules.replace(self.position, oldMod) if oldMod not in fit.modules: pyfalog.warning('Failed to replace in list') self.Do() return False restoreCheckedStates(fit, self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.unloadedCharge: return True if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/localSwap.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcSwapLocalModuleCommand(wx.Command): def __init__(self, fitID, position1, position2): wx.Command.__init__(self, True, 'Swap Modules') self.fitID = fitID self.position1 = position1 self.position2 = position2 def Do(self): pyfalog.debug('Doing swapping between {} and {} for fit {}'.format(self.position1, self.position2, self.fitID)) self.__swap(self.fitID, self.position1, self.position2) return True def Undo(self): self.__swap(self.fitID, self.position2, self.position1) pyfalog.debug('Undoing swapping between {} and {} for fit {}'.format(self.position1, self.position2, self.fitID)) return True def __swap(self, fitID, position1, position2): fit = Fit.getInstance().getFit(fitID) mod1 = fit.modules[position1] mod2 = fit.modules[position2] fit.modules.free(position1) fit.modules.free(position2) fit.modules.replace(position2, mod1) if len(fit.modules) <= position2 or fit.modules[position2] is not mod1: fit.modules.replace(position1, mod1) fit.modules.replace(position2, mod2) return False fit.modules.replace(position1, mod2) if len(fit.modules) <= position1 or fit.modules[position1] is not mod2: fit.modules.free(position2) fit.modules.replace(position1, mod1) fit.modules.replace(position2, mod2) return False return True ================================================ FILE: gui/fitCommands/calc/module/projectedAdd.py ================================================ import wx from logbook import Logger import eos.db from eos.const import FittingModuleState from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcAddProjectedModuleCommand(wx.Command): def __init__(self, fitID, modInfo, position=None, ignoreRestrictions=False, recalc=True): wx.Command.__init__(self, True) self.fitID = fitID self.newModInfo = modInfo self.newPosition = position self.ignoreRestrictions = ignoreRestrictions self.recalc = recalc self.oldModInfo = None self.oldPosition = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID)) newMod = self.newModInfo.toModule(fallbackState=FittingModuleState.ACTIVE) if newMod is None: return False sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) canHaveState = newMod.canHaveState(newMod.state, projectedOnto=fit) if canHaveState is not True: newMod.state = canHaveState if not self.ignoreRestrictions and not newMod.isValidCharge(newMod.charge): newMod.charge = None self.oldPosition, self.oldModInfo = fit.projectedModules.makeRoom(newMod) if self.newPosition is not None: fit.projectedModules.insert(self.newPosition, newMod) if newMod not in fit.projectedModules: return False else: fit.projectedModules.append(newMod) if newMod not in fit.projectedModules: return False self.newPosition = fit.projectedModules.index(newMod) if self.recalc: # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, newMod) return True def Undo(self): pyfalog.debug('Undoing addition of projected module {} onto: {}'.format(self.newModInfo, self.fitID)) if self.oldPosition is not None and self.oldModInfo is not None: cmd = CalcAddProjectedModuleCommand( fitID=self.fitID, modInfo=self.oldModInfo, position=self.oldPosition, ignoreRestrictions=True, recalc=False) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True from .projectedRemove import CalcRemoveProjectedModuleCommand cmd = CalcRemoveProjectedModuleCommand( fitID=self.fitID, position=self.newPosition, recalc=False) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/projectedChangeProjectionRange.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedModuleProjectionRangeCommand(wx.Command): def __init__(self, fitID, position, projectionRange): wx.Command.__init__(self, True) self.fitID = fitID self.position = position self.projectionRange = projectionRange self.savedProjectionRange = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing change of projected module projection range at position {} to range {} on fit {}'.format( self.position, self.projectionRange, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mod = fit.projectedModules[self.position] if mod.projectionRange == self.projectionRange: return False self.savedProjectionRange = mod.projectionRange mod.projectionRange = self.projectionRange sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, mod) return True def Undo(self): pyfalog.debug('Undoing change of projected module projection range at position {} to range {} on fit {}'.format( self.position, self.projectionRange, self.fitID)) cmd = CalcChangeProjectedModuleProjectionRangeCommand( fitID=self.fitID, position=self.position, projectionRange=self.savedProjectionRange) result = cmd.Do() restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return result @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/projectedChangeStates.py ================================================ import wx from logbook import Logger from eos.const import FittingModuleState from eos.saveddata.module import Module from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) STATE_MAP = { 'inactive': FittingModuleState.OFFLINE, 'active': FittingModuleState.ACTIVE, 'overheat': FittingModuleState.OVERHEATED} class CalcChangeProjectedModuleStatesCommand(wx.Command): def __init__(self, fitID, positions, proposedState): wx.Command.__init__(self, True, 'Change Projected Module States') self.fitID = fitID self.positions = positions self.proposedState = STATE_MAP[proposedState] self.savedStates = {} self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing change of projected module state at positions {} to state {} on fit {}'.format( self.positions, self.proposedState, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) self.savedStates = {pos: fit.projectedModules[pos].state for pos in self.positions} changed = False for position in self.positions: mod = fit.projectedModules[position] proposedState = Module.getProposedState(mod, None, self.proposedState) if proposedState != mod.state: pyfalog.debug('Toggle projected {} state: {} for fit ID: {}'.format(mod, proposedState, self.fitID)) mod.state = proposedState changed = True if not changed: return False sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing change of projected module state at positions {} to state {} on fit {}'.format( self.positions, self.proposedState, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) for position, state in self.savedStates.items(): mod = fit.projectedModules[position] pyfalog.debug('Reverting projected {} to state {} for fit ID {}'.format(mod, state, self.fitID)) mod.state = state restoreCheckedStates(fit, self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/module/projectedRemove.py ================================================ import wx from logbook import Logger import eos.db from gui.fitCommands.helpers import ModuleInfo, restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveProjectedModuleCommand(wx.Command): def __init__(self, fitID, position, recalc=True): wx.Command.__init__(self, True) self.fitID = fitID self.position = position self.recalc = recalc self.savedModInfo = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing removal of projected module from position {} on fit {}'.format(self.position, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mod = fit.projectedModules[self.position] self.savedModInfo = ModuleInfo.fromModule(mod) del fit.projectedModules[self.position] if self.recalc: # Need to flush because checkStates sometimes relies on module->fit # relationship via .owner attribute, which is handled by SQLAlchemy eos.db.flush() sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing removal of projected module {} on fit {}'.format(self.savedModInfo, self.fitID)) from .projectedAdd import CalcAddProjectedModuleCommand cmd = CalcAddProjectedModuleCommand( fitID=self.fitID, modInfo=self.savedModInfo, position=self.position, ignoreRestrictions=True, recalc=False) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/projectedFit/__init__.py ================================================ ================================================ FILE: gui/fitCommands/calc/projectedFit/add.py ================================================ import wx from logbook import Logger import eos.db from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcAddProjectedFitCommand(wx.Command): def __init__(self, fitID, projectedFitID, amount, state=None): wx.Command.__init__(self, True, 'Add Projected Fit') self.fitID = fitID self.projectedFitID = projectedFitID self.amount = amount self.state = state self.changeAmountCommand = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing addition of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) projectedFit = sFit.getFit(self.projectedFitID, projected=True) # Projected fit could have been deleted if we are redoing if projectedFit is None: pyfalog.debug('Projected fit is not available') return False # If we already have info about projection - means that fit is already projected # and we just need to increase amount of fits if projectedFit in fit.projectedFits and projectedFit.ID in fit.projectedFitDict: from .changeAmount import CalcChangeProjectedFitAmountCommand self.changeAmountCommand = CalcChangeProjectedFitAmountCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.amount, relative=True) if not self.changeAmountCommand.Do(): return False sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True else: self.changeAmountCommand = None fit.projectedFitDict[projectedFit.ID] = projectedFit # This bit is required, see issue #83 eos.db.saveddata_session.flush() eos.db.saveddata_session.refresh(projectedFit) if self.amount is not None or self.state is not None: projectionInfo = projectedFit.getProjectionInfo(self.fitID) if projectionInfo is None: pyfalog.warning('Fit projection info is not available') self.Undo() return False if self.amount is not None: projectionInfo.amount = self.amount if self.state is not None: projectionInfo.active = self.state sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing addition of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID)) if self.changeAmountCommand is not None: if not self.changeAmountCommand.Undo(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True # Can't find the projected fit, it must have been deleted. Just skip, as deleted fit # means that someone else just did exactly what we wanted to do projectedFit = Fit.getInstance().getFit(self.projectedFitID, projected=True) if projectedFit is not None: from .remove import CalcRemoveProjectedFitCommand cmd = CalcRemoveProjectedFitCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.amount) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/projectedFit/changeAmount.py ================================================ import wx from logbook import Logger from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedFitAmountCommand(wx.Command): def __init__(self, fitID, projectedFitID, amount, relative=False): wx.Command.__init__(self, True, 'Change Projected Fit Amount') self.fitID = fitID self.projectedFitID = projectedFitID self.amount = amount self.relative = relative self.savedAmount = None def Do(self): pyfalog.debug('Doing change of projected fit {} amount to {} for fit {}'.format(self.projectedFitID, self.amount, self.fitID)) projectedFit = Fit.getInstance().getFit(self.projectedFitID, projected=True) # Projected fit could have been deleted if we are redoing if projectedFit is None: pyfalog.debug('Projected fit is not available') return False projectionInfo = projectedFit.getProjectionInfo(self.fitID) if projectionInfo is None: pyfalog.warning('Fit projection info is not available') return False self.savedAmount = projectionInfo.amount if self.relative: amount = projectionInfo.amount + self.amount else: amount = self.amount # Limit to [1, 20] confinedAmount = min(20, max(1, amount)) if confinedAmount == self.savedAmount: return False projectionInfo.amount = confinedAmount return True def Undo(self): pyfalog.debug('Undoing change of projected fit {} amount to {} for fit {}'.format(self.projectedFitID, self.amount, self.fitID)) cmd = CalcChangeProjectedFitAmountCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.savedAmount) return cmd.Do() ================================================ FILE: gui/fitCommands/calc/projectedFit/changeProjectionRange.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedFitProjectionRangeCommand(wx.Command): def __init__(self, fitID, projectedFitID, projectionRange): wx.Command.__init__(self, True, 'Change Projected Fit Projection Range') self.fitID = fitID self.projectedFitID = projectedFitID self.projectionRange = projectionRange self.savedProjectionRange = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing change of projected fit {} range to {} for fit {}'.format(self.projectedFitID, self.projectionRange, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) projectedFit = sFit.getFit(self.projectedFitID, projected=True) # Projected fit could have been deleted if we are redoing if projectedFit is None: pyfalog.debug('Projected fit is not available') return False projectionInfo = projectedFit.getProjectionInfo(self.fitID) if projectionInfo is None: pyfalog.warning('Fit projection info is not available') return False if projectionInfo.projectionRange == self.projectionRange: return False self.savedProjectionRange = projectionInfo.projectionRange projectionInfo.projectionRange = self.projectionRange sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing change of projected fit {} range to {} for fit {}'.format(self.projectedFitID, self.projectionRange, self.fitID)) cmd = CalcChangeProjectedFitProjectionRangeCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, projectionRange=self.savedProjectionRange) result = cmd.Do() restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return result @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/projectedFit/changeState.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcChangeProjectedFitStateCommand(wx.Command): def __init__(self, fitID, projectedFitID, state): wx.Command.__init__(self, True, 'Change Projected Fit State') self.fitID = fitID self.projectedFitID = projectedFitID self.state = state self.savedState = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing changing of projected fit {} state to {} for fit {}'.format( self.projectedFitID, self.state, self.fitID)) sFit = Fit.getInstance() projectedFit = sFit.getFit(self.projectedFitID, projected=True) # Projected fit could have been deleted if we are redoing if projectedFit is None: pyfalog.debug('Projected fit is not available') return False projectionInfo = projectedFit.getProjectionInfo(self.fitID) if projectionInfo is None: pyfalog.warning('Fit projection info is not available') return False self.savedState = projectionInfo.active if self.state == self.savedState: return False projectionInfo.active = self.state fit = sFit.getFit(self.fitID) sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing changing of projected fit {} state to {} for fit {}'.format( self.projectedFitID, self.state, self.fitID)) cmd = CalcChangeProjectedFitStateCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, state=self.savedState) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/projectedFit/remove.py ================================================ import wx from logbook import Logger from gui.fitCommands.helpers import restoreCheckedStates from service.fit import Fit pyfalog = Logger(__name__) class CalcRemoveProjectedFitCommand(wx.Command): def __init__(self, fitID, projectedFitID, amount): wx.Command.__init__(self, True, 'Add Projected Fit') self.fitID = fitID self.projectedFitID = projectedFitID self.amount = amount self.savedState = None self.savedAmount = None self.changeAmountCommand = None self.savedStateCheckChanges = None def Do(self): pyfalog.debug('Doing removal of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID)) sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) projectedFit = sFit.getFit(self.projectedFitID, projected=True) # Can be removed by the time we're redoing it if projectedFit is None: pyfalog.debug('Projected fit is not available') return False projectionInfo = projectedFit.getProjectionInfo(self.fitID) if not projectionInfo: pyfalog.warning('Fit projection info is not available') return False self.savedState = projectionInfo.active self.savedAmount = projectionInfo.amount remainingAmount = projectionInfo.amount - self.amount # Change amount if more than 0 remaining, remove otherwise if remainingAmount > 0: from .changeAmount import CalcChangeProjectedFitAmountCommand self.changeAmountCommand = CalcChangeProjectedFitAmountCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, amount=remainingAmount) if not self.changeAmountCommand.Do(): return False sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True else: self.changeAmountCommand = None if projectedFit.ID not in fit.projectedFitDict: pyfalog.warning('Unable to find projected fit in projected dict') return False del fit.projectedFitDict[projectedFit.ID] sFit.recalc(fit) self.savedStateCheckChanges = sFit.checkStates(fit, None) return True def Undo(self): pyfalog.debug('Undoing removal of projected fit {} for fit {}'.format(self.projectedFitID, self.fitID)) if self.changeAmountCommand is not None: if not self.changeAmountCommand.Undo(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True from .add import CalcAddProjectedFitCommand cmd = CalcAddProjectedFitCommand( fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.savedAmount, state=self.savedState) if not cmd.Do(): return False restoreCheckedStates(Fit.getInstance().getFit(self.fitID), self.savedStateCheckChanges) return True @property def needsGuiRecalc(self): if self.savedStateCheckChanges is None: return True for container in self.savedStateCheckChanges: if len(container) > 0: return True return False ================================================ FILE: gui/fitCommands/calc/shipModeChange.py ================================================ import wx from logbook import Logger from eos.saveddata.mode import Mode from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) class CalcChangeShipModeCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Change Ship Mode') self.fitID = fitID self.itemID = itemID self.savedItemID = None def Do(self): pyfalog.debug('Doing changing ship mode to {} for fit {}'.format(self.itemID, self.fitID)) fit = Fit.getInstance().getFit(self.fitID) self.savedItemID = fit.mode.item.ID item = Market.getInstance().getItem(self.itemID) mode = Mode(item) fit.mode = mode return True def Undo(self): pyfalog.debug('Undoing changing ship mode to {} for fit {}'.format(self.itemID, self.fitID)) cmd = CalcChangeShipModeCommand(self.fitID, self.savedItemID) return cmd.Do() ================================================ FILE: gui/fitCommands/gui/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/booster/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/booster/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.add import CalcAddBoosterCommand from gui.fitCommands.helpers import BoosterInfo, InternalCommandHistory from service.fit import Fit from service.market import Market class GuiAddBoosterCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Booster') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=BoosterInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/booster/changeMeta.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.add import CalcAddBoosterCommand from gui.fitCommands.helpers import BoosterInfo, InternalCommandHistory from service.fit import Fit class GuiChangeBoosterMetaCommand(wx.Command): def __init__(self, fitID, position, newItemID): wx.Command.__init__(self, True, 'Change Booster Meta') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.newItemID = newItemID self.newPosition = None def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) booster = fit.boosters[self.position] if booster.itemID == self.newItemID: return False info = BoosterInfo.fromBooster(booster) info.itemID = self.newItemID cmd = CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=info) success = self.internalHistory.submit(cmd) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() self.newPosition = cmd.newPosition newBooster = fit.boosters[self.newPosition] mainFrame = gui.mainFrame.MainFrame.getInstance() wx.PostEvent(mainFrame, GE.FitChanged(fitIDs=(self.fitID,))) wx.PostEvent(mainFrame, GE.ItemChangedInplace(old=booster, new=newBooster)) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) oldBooster = fit.boosters[self.newPosition] success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() newBooster = fit.boosters[self.position] mainFrame = gui.mainFrame.MainFrame.getInstance() wx.PostEvent(mainFrame, GE.FitChanged(fitIDs=(self.fitID,))) wx.PostEvent(mainFrame, GE.ItemChangedInplace(old=oldBooster, new=newBooster)) return success ================================================ FILE: gui/fitCommands/gui/booster/imprt.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.add import CalcAddBoosterCommand from gui.fitCommands.helpers import BoosterInfo, InternalCommandHistory from service.fit import Fit class GuiImportBoostersCommand(wx.Command): def __init__(self, fitID, boosters): wx.Command.__init__(self, True, 'Import Boosters') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.boosters = set(b[0] for b in boosters) def Do(self): results = [] for itemID in self.boosters: cmd = CalcAddBoosterCommand(fitID=self.fitID, boosterInfo=BoosterInfo(itemID=itemID)) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/booster/remove.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.remove import CalcRemoveBoosterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit from service.market import Market class GuiRemoveBoostersCommand(wx.Command): def __init__(self, fitID, positions): wx.Command.__init__(self, True, 'Remove Boosters') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions def Do(self): sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveBoosterCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) sMkt.storeRecentlyUsed(cmd.savedBoosterInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/booster/sideEffectToggleState.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.sideEffectToggleState import CalcToggleBoosterSideEffectStateCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleBoosterSideEffectStateCommand(wx.Command): def __init__(self, fitID, position, effectID): wx.Command.__init__(self, True, 'Toggle Booster Side Effect State') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.effectID = effectID def Do(self): cmd = CalcToggleBoosterSideEffectStateCommand(fitID=self.fitID, position=self.position, effectID=self.effectID) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/booster/toggleStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.booster.toggleStates import CalcToggleBoosterStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleBoosterStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions): wx.Command.__init__(self, True, 'Toggle Booster States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions def Do(self): cmd = CalcToggleBoosterStatesCommand(fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/cargo/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/cargo/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory from service.market import Market class GuiAddCargoCommand(wx.Command): def __init__(self, fitID, itemID, amount): wx.Command.__init__(self, True, 'Add Cargo') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.amount = amount def Do(self): cmd = CalcAddCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.itemID, amount=self.amount)) success = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/cargo/changeAmount.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.changeAmount import CalcChangeCargoAmountCommand from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory class GuiChangeCargosAmountCommand(wx.Command): def __init__(self, fitID, itemIDs, amount): wx.Command.__init__(self, True, 'Change Cargo Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemIDs = itemIDs self.amount = amount def Do(self): results = [] if self.amount > 0: for itemID in self.itemIDs: cmd = CalcChangeCargoAmountCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=self.amount)) results.append(self.internalHistory.submit(cmd)) else: for itemID in self.itemIDs: cmd = CalcRemoveCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=math.inf)) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/cargo/changeMetas.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory from service.fit import Fit class GuiChangeCargoMetasCommand(wx.Command): def __init__(self, fitID, itemIDs, newItemID): wx.Command.__init__(self, True, 'Change Cargo Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemIDs = itemIDs self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] for itemID in self.itemIDs: if itemID == self.newItemID: continue cargo = next((c for c in fit.cargo if c.itemID == itemID), None) if cargo is None: continue amount = cargo.amount cmdRemove = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=math.inf)) cmdAdd = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.newItemID, amount=amount)) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) success = any(results) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/cargo/imprt.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory class GuiImportCargosCommand(wx.Command): def __init__(self, fitID, cargos): wx.Command.__init__(self, True, 'Import Cargos') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.cargos = {} for itemID, amount, mutation in cargos: if itemID not in self.cargos: self.cargos[itemID] = 0 self.cargos[itemID] += amount def Do(self): results = [] for itemID, amount in self.cargos.items(): cmd = CalcAddCargoCommand(fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=amount)) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/cargo/remove.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory from service.market import Market class GuiRemoveCargosCommand(wx.Command): def __init__(self, fitID, itemIDs): wx.Command.__init__(self, True, 'Remove Cargos') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemIDs = itemIDs def Do(self): sMkt = Market.getInstance() results = [] for itemID in self.itemIDs: cmd = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=itemID, amount=math.inf)) results.append(self.internalHistory.submit(cmd)) sMkt.storeRecentlyUsed(itemID) success = any(results) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/commandFit/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/commandFit/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.commandFit.add import CalcAddCommandCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiAddCommandFitsCommand(wx.Command): def __init__(self, fitID, commandFitIDs): wx.Command.__init__(self, True, 'Add Command Fits') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.commandFitIDs = commandFitIDs def Do(self): results = [] for commandFitID in self.commandFitIDs: cmd = CalcAddCommandCommand(fitID=self.fitID, commandFitID=commandFitID) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/commandFit/remove.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.commandFit.remove import CalcRemoveCommandFitCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiRemoveCommandFitsCommand(wx.Command): def __init__(self, fitID, commandFitIDs): wx.Command.__init__(self, True, 'Remove Command Fits') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.commandFitIDs = commandFitIDs def Do(self): results = [] for commandFitID in self.commandFitIDs: cmd = CalcRemoveCommandFitCommand(fitID=self.fitID, commandFitID=commandFitID) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/commandFit/toggleStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.commandFit.toggleStates import CalcToggleCommandFitStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleCommandFitStatesCommand(wx.Command): def __init__(self, fitID, mainCommandFitID, commandFitIDs): wx.Command.__init__(self, True, 'Toggle Command Fit States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainCommandFitID = mainCommandFitID self.commandFitIDs = commandFitIDs def Do(self): cmd = CalcToggleCommandFitStatesCommand( fitID=self.fitID, mainCommandFitID=self.mainCommandFitID, commandFitIDs=self.commandFitIDs) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/fitPilotSecurity.py ================================================ import wx from service.fit import Fit import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.fitPilotSecurity import CalcChangeFitPilotSecurityCommand class GuiChangeFitPilotSecurityCommand(wx.Command): def __init__(self, fitID, secStatus): wx.Command.__init__(self, True, 'Change Fit Pilot Security') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.secStatus = secStatus def Do(self): cmd = CalcChangeFitPilotSecurityCommand(fitID=self.fitID, secStatus=self.secStatus) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/fitRename.py ================================================ import wx import eos.db import gui.globalEvents as GE import gui.mainFrame from gui.fitCommands.calc.fitRename import CalcFitRenameCommand from gui.fitCommands.helpers import InternalCommandHistory class GuiRenameFitCommand(wx.Command): def __init__(self, fitID, name): wx.Command.__init__(self, True, 'Rename Fit') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.name = name def Do(self): cmd = CalcFitRenameCommand(fitID=self.fitID, name=self.name) success = self.internalHistory.submit(cmd) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitRenamed(fitID=self.fitID)) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitRenamed(fitID=self.fitID)) return success ================================================ FILE: gui/fitCommands/gui/fitRestrictionToggle.py ================================================ import wx from service.fit import Fit import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.module.localRemove import CalcRemoveLocalModulesCommand class GuiToggleFittingRestrictionsCommand(wx.Command): def __init__(self, fitID): wx.Command.__init__(self, True, 'Toggle Fitting Restrictions') self.internalHistory = InternalCommandHistory() self.fitID = fitID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) fit.ignoreRestrictions = not fit.ignoreRestrictions success = True if not fit.ignoreRestrictions: results = [] for position, mod in sorted(enumerate(fit.modules), key=lambda i: i[0], reverse=True): if not mod.isEmpty and not mod.fits(fit, hardpointLimit=False): cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=[position]) results.append(self.internalHistory.submit(cmd)) if len(results) > 0: success = any(results) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) fit.ignoreRestrictions = not fit.ignoreRestrictions success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/fitSystemSecurity.py ================================================ import wx from service.fit import Fit import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.fitSystemSecurity import CalcChangeFitSystemSecurityCommand class GuiChangeFitSystemSecurityCommand(wx.Command): def __init__(self, fitID, secStatus): wx.Command.__init__(self, True, 'Change Fit System Security') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.secStatus = secStatus def Do(self): cmd = CalcChangeFitSystemSecurityCommand(fitID=self.fitID, secStatus=self.secStatus) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/implant/add.py ================================================ import wx import eos.db import gui.mainFrame from eos.const import ImplantLocation from gui import globalEvents as GE from gui.fitCommands.calc.implant.add import CalcAddImplantCommand from gui.fitCommands.calc.implant.changeLocation import CalcChangeImplantLocationCommand from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory from service.fit import Fit from service.market import Market class GuiAddImplantCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Implant') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) if fit.implantSource != ImplantLocation.FIT: cmd = CalcChangeImplantLocationCommand(fitID=self.fitID, source=ImplantLocation.FIT) successSource = self.internalHistory.submit(cmd) else: successSource = False cmd = CalcAddImplantCommand(fitID=self.fitID, implantInfo=ImplantInfo(itemID=self.itemID)) successImplant = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) # Acceptable behavior when we already have passed implant and just switch source, or # when we have source and add implant, but not if we do not change anything success = successSource or successImplant eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/changeLocation.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.implant.changeLocation import CalcChangeImplantLocationCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeImplantLocationCommand(wx.Command): def __init__(self, fitID, source): wx.Command.__init__(self, True, 'Change Implant Location') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.source = source def Do(self): cmd = CalcChangeImplantLocationCommand(fitID=self.fitID, source=self.source) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/changeMeta.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.implant.add import CalcAddImplantCommand from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory from service.fit import Fit class GuiChangeImplantMetaCommand(wx.Command): def __init__(self, fitID, position, newItemID): wx.Command.__init__(self, True, 'Change Implant Meta') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.newItemID = newItemID self.newPosition = None def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) implant = fit.implants[self.position] if implant.itemID == self.newItemID: return False info = ImplantInfo.fromImplant(implant) info.itemID = self.newItemID cmd = CalcAddImplantCommand(fitID=self.fitID, implantInfo=info) success = self.internalHistory.submit(cmd) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() self.newPosition = cmd.newPosition newImplant = fit.implants[self.newPosition] mainFrame = gui.mainFrame.MainFrame.getInstance() wx.PostEvent(mainFrame, GE.FitChanged(fitIDs=(self.fitID,))) wx.PostEvent(mainFrame, GE.ItemChangedInplace(old=implant, new=newImplant)) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) oldImplant = fit.implants[self.newPosition] success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() newImplant = fit.implants[self.position] mainFrame = gui.mainFrame.MainFrame.getInstance() wx.PostEvent(mainFrame, GE.FitChanged(fitIDs=(self.fitID,))) wx.PostEvent(mainFrame, GE.ItemChangedInplace(old=oldImplant, new=newImplant)) return success ================================================ FILE: gui/fitCommands/gui/implant/imprt.py ================================================ import wx import eos.db import gui.mainFrame from eos.const import ImplantLocation from gui import globalEvents as GE from gui.fitCommands.calc.implant.add import CalcAddImplantCommand from gui.fitCommands.calc.implant.changeLocation import CalcChangeImplantLocationCommand from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory from service.fit import Fit class GuiImportImplantsCommand(wx.Command): def __init__(self, fitID, implants): wx.Command.__init__(self, True, 'Import Implants') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.implants = set(i[0] for i in implants) def Do(self): if not self.implants: return False sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) if fit.implantSource != ImplantLocation.FIT: cmd = CalcChangeImplantLocationCommand(fitID=self.fitID, source=ImplantLocation.FIT) successSource = self.internalHistory.submit(cmd) else: successSource = False resultsImplants = [] for itemID in self.implants: cmd = CalcAddImplantCommand(fitID=self.fitID, implantInfo=ImplantInfo(itemID=itemID)) resultsImplants.append(self.internalHistory.submit(cmd)) successImplants = any(resultsImplants) # Acceptable behavior when we already have passed implant and just switch source, or # when we have source and add implant, but not if we do not change anything success = successSource or successImplants eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/remove.py ================================================ import wx from service.fit import Fit import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import InternalCommandHistory from gui.fitCommands.calc.implant.remove import CalcRemoveImplantCommand from service.market import Market class GuiRemoveImplantsCommand(wx.Command): def __init__(self, fitID, positions): wx.Command.__init__(self, True, 'Remove Implants') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions def Do(self): sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveImplantCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) sMkt.storeRecentlyUsed(cmd.savedImplantInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/setAdd.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.implant.add import CalcAddImplantCommand from gui.fitCommands.helpers import ImplantInfo, InternalCommandHistory from service.fit import Fit class GuiAddImplantSetCommand(wx.Command): def __init__(self, fitID, itemIDs): wx.Command.__init__(self, True, 'Add Implant Set') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemIDs = itemIDs def Do(self): results = [] for itemID in self.itemIDs: cmd = CalcAddImplantCommand(fitID=self.fitID, implantInfo=ImplantInfo(itemID=itemID)) results.append(self.internalHistory.submit(cmd)) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) # Some might fail, as we already might have these implants return any(results) def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/implant/toggleStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.implant.toggleStates import CalcToggleImplantStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleImplantStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions): wx.Command.__init__(self, True, 'Toggle Implant States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions def Do(self): cmd = CalcToggleImplantStatesCommand(fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/itemsRebase.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory from service.fit import Fit from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.calc.itemRebase import CalcRebaseItemCommand from gui.fitCommands.calc.module.changeCharges import CalcChangeModuleChargesCommand class GuiRebaseItemsCommand(wx.Command): def __init__(self, fitID, rebaseMap): wx.Command.__init__(self, True, 'Rebase Items') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.rebaseMap = rebaseMap def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) # Here we assume that item attribs do not change and item state will not change for mod in fit.modules: if mod.itemID in self.rebaseMap: cmd = CalcRebaseItemCommand( fitID=self.fitID, containerName='modules', position=fit.modules.index(mod), itemID=self.rebaseMap[mod.itemID]) self.internalHistory.submit(cmd) if mod.chargeID in self.rebaseMap: cmd = CalcChangeModuleChargesCommand( fitID=self.fitID, projected=False, chargeMap={fit.modules.index(mod): self.rebaseMap[mod.chargeID]}, recalc=False) self.internalHistory.submit(cmd) for containerName in ('drones', 'fighters', 'implants', 'boosters'): container = getattr(fit, containerName) for obj in container: if obj.itemID in self.rebaseMap: cmd = CalcRebaseItemCommand( fitID=self.fitID, containerName=containerName, position=container.index(obj), itemID=self.rebaseMap[obj.itemID]) self.internalHistory.submit(cmd) # Need to process cargo separately as we want to merge items when needed, # e.g. FN iron and CN iron into single stack of CN iron for cargo in fit.cargo: if cargo.itemID in self.rebaseMap: amount = cargo.amount cmdRemove = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=cargo.itemID, amount=amount)) cmdAdd = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.rebaseMap[cargo.itemID], amount=amount)) self.internalHistory.submitBatch(cmdRemove, cmdAdd) eos.db.flush() sFit.recalc(fit) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return len(self.internalHistory) > 0 def Undo(self): sFit = Fit.getInstance() success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/localDrone/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit from service.market import Market class GuiAddLocalDroneCommand(wx.Command): def __init__(self, fitID, itemID, amount): wx.Command.__init__(self, True, 'Add Local Drone') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.amount = amount def Do(self): cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=DroneInfo(itemID=self.itemID, amount=self.amount, amountActive=0)) success = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/changeAmount.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localChangeAmount import CalcChangeLocalDroneAmountCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalDroneAmountCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Change Local Drone Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.amount = amount def Do(self): if self.amount > 0: cmd = CalcChangeLocalDroneAmountCommand(fitID=self.fitID, position=self.position, amount=self.amount) else: cmd = CalcRemoveLocalDroneCommand(fitID=self.fitID, position=self.position, amount=math.inf) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/changeMetas.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiChangeLocalDroneMetasCommand(wx.Command): def __init__(self, fitID, positions, newItemID): wx.Command.__init__(self, True, 'Change Local Drone Meta') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] for position in sorted(self.positions, reverse=True): drone = fit.drones[position] if drone.itemID == self.newItemID: continue info = DroneInfo.fromDrone(drone) info.itemID = self.newItemID cmdRemove = CalcRemoveLocalDroneCommand( fitID=self.fitID, position=position, amount=math.inf) cmdAdd = CalcAddLocalDroneCommand( fitID=self.fitID, droneInfo=info, forceNewStack=True, ignoreRestrictions=True) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) success = any(results) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/changeMutation.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localChangeMutation import CalcChangeLocalDroneMutationCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalDroneMutationCommand(wx.Command): def __init__(self, fitID, position, mutation, oldMutation=None): wx.Command.__init__(self, True, 'Change Local Drone Mutation') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.mutation = mutation self.oldMutation = oldMutation def Do(self): cmd = CalcChangeLocalDroneMutationCommand( fitID=self.fitID, position=self.position, mutation=self.mutation, oldMutation=self.oldMutation) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/clone.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiCloneLocalDroneCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Clone Local Drone') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) try: drone = fit.drones[self.position] except IndexError: return False info = DroneInfo.fromDrone(drone) cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=info, forceNewStack=True) success = self.internalHistory.submit(cmd) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/imprt.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiImportLocalDronesCommand(wx.Command): def __init__(self, fitID, drones): wx.Command.__init__(self, True, 'Import Local Drones') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.droneInfos = [] for itemID, amount, mutation in drones: if mutation: mutaplasmid, attrs = mutation self.droneInfos.append(DroneInfo( itemID=mutaplasmid.resultingItem.ID, amount=amount, amountActive=0, baseItemID=itemID, mutaplasmidID=mutaplasmid.ID, mutations=attrs)) else: self.droneInfos.append(DroneInfo(itemID=itemID, amount=amount, amountActive=0)) def Do(self): results = [] for info in self.droneInfos: cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=info, forceNewStack=True) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/mutatedConvert.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiConvertMutatedLocalDroneCommand(wx.Command): def __init__(self, fitID, position, mutaplasmid): wx.Command.__init__(self, True, 'Convert Local Drone to Mutated') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.itemID = mutaplasmid.resultingItem.ID self.mutaplasmidID = mutaplasmid.ID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) try: drone = fit.drones[self.position] except IndexError: return False if drone.isMutated: return False info = DroneInfo( amount=drone.amount, amountActive=drone.amountActive, itemID=self.itemID, baseItemID=drone.item.ID, mutaplasmidID=self.mutaplasmidID, mutations={}) cmdRemove = CalcRemoveLocalDroneCommand( fitID=self.fitID, position=self.position, amount=math.inf) cmdAdd = CalcAddLocalDroneCommand( fitID=self.fitID, droneInfo=info, forceNewStack=True, ignoreRestrictions=True) success = self.internalHistory.submitBatch(cmdRemove, cmdAdd) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/mutatedImport.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.helpers import InternalCommandHistory, DroneInfo from service.fit import Fit class GuiImportLocalMutatedDroneCommand(wx.Command): def __init__(self, fitID, baseItem, mutaplasmid, mutations, amount): wx.Command.__init__(self, True, 'Import Local Mutated Drone') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.newDroneInfo = DroneInfo( amount=amount, amountActive=0, itemID=mutaplasmid.resultingItem.ID, baseItemID=baseItem.ID, mutaplasmidID=mutaplasmid.ID, mutations=mutations) def Do(self): cmd = CalcAddLocalDroneCommand(fitID=self.fitID, droneInfo=self.newDroneInfo, forceNewStack=True) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/mutatedRevert.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiRevertMutatedLocalDroneCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Revert Local Drone from Mutated') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) try: drone = fit.drones[self.position] except IndexError: return False if not drone.isMutated: return False info = DroneInfo( amount=drone.amount, amountActive=drone.amountActive, itemID=drone.baseItemID) cmdRemove = CalcRemoveLocalDroneCommand( fitID=self.fitID, position=self.position, amount=math.inf) cmdAdd = CalcAddLocalDroneCommand( fitID=self.fitID, droneInfo=info, forceNewStack=True, ignoreRestrictions=True) success = self.internalHistory.submitBatch(cmdRemove, cmdAdd) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/remove.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit from service.market import Market class GuiRemoveLocalDronesCommand(wx.Command): def __init__(self, fitID, positions, amount): wx.Command.__init__(self, True, 'Remove Local Drones') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.amount = amount def Do(self): sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveLocalDroneCommand( fitID=self.fitID, position=position, amount=self.amount) results.append(self.internalHistory.submit(cmd)) sMkt.storeRecentlyUsed(cmd.savedDroneInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/stackSplit.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localAdd import CalcAddLocalDroneCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiSplitLocalDroneStackCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Split Local Drone Stack') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.amount = amount def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) drone = fit.drones[self.position] if self.amount >= drone.amount: return False info = DroneInfo.fromDrone(drone) info.amount = self.amount info.amountActive = min(self.amount, info.amountActive) commands = [] commands.append(CalcRemoveLocalDroneCommand( fitID=self.fitID, position=self.position, amount=self.amount)) commands.append(CalcAddLocalDroneCommand( fitID=self.fitID, droneInfo=info, forceNewStack=True, ignoreRestrictions=True)) success = self.internalHistory.submitBatch(*commands) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/stacksMerge.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localChangeAmount import CalcChangeLocalDroneAmountCommand from gui.fitCommands.calc.drone.localRemove import CalcRemoveLocalDroneCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiMergeLocalDroneStacksCommand(wx.Command): def __init__(self, fitID, srcPosition, dstPosition): wx.Command.__init__(self, True, 'Merge Local Drone Stacks') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.srcPosition = srcPosition self.dstPosition = dstPosition def Do(self): if self.srcPosition == self.dstPosition: return False sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) srcDrone = fit.drones[self.srcPosition] dstDrone = fit.drones[self.dstPosition] if srcDrone.itemID != dstDrone.itemID: return False srcAmount = srcDrone.amount commands = [] commands.append(CalcChangeLocalDroneAmountCommand( fitID=self.fitID, position=self.dstPosition, amount=dstDrone.amount + srcAmount)) commands.append(CalcRemoveLocalDroneCommand( fitID=self.fitID, position=self.srcPosition, amount=srcAmount)) success = self.internalHistory.submitBatch(*commands) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localDrone/toggleStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.localToggleStates import CalcToggleLocalDroneStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleLocalDroneStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions): wx.Command.__init__(self, True, 'Toggle Local Drone States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions def Do(self): cmd = CalcToggleLocalDroneStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/localFighter/abilityToggleState.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.abilityToggleStates import CalcToggleFighterAbilityStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleLocalFighterAbilityStateCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, effectID): wx.Command.__init__(self, True, 'Toggle Local Fighter Ability State') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.effectID = effectID def Do(self): cmd = CalcToggleFighterAbilityStatesCommand( fitID=self.fitID, projected=False, mainPosition=self.mainPosition, positions=self.positions, effectID=self.effectID) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localAdd import CalcAddLocalFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit from service.market import Market class GuiAddLocalFighterCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Local Fighter') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcAddLocalFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/changeAmount.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.changeAmount import CalcChangeFighterAmountCommand from gui.fitCommands.calc.fighter.localRemove import CalcRemoveLocalFighterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalFighterAmountCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Change Local Fighter Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.amount = amount def Do(self): if self.amount > 0: cmd = CalcChangeFighterAmountCommand(fitID=self.fitID, projected=False, position=self.position, amount=self.amount) else: cmd = CalcRemoveLocalFighterCommand(fitID=self.fitID, position=self.position) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/changeMetas.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localAdd import CalcAddLocalFighterCommand from gui.fitCommands.calc.fighter.localRemove import CalcRemoveLocalFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit class GuiChangeLocalFighterMetasCommand(wx.Command): def __init__(self, fitID, positions, newItemID): wx.Command.__init__(self, True, 'Change Local Fighter Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] for position in sorted(self.positions, reverse=True): fighter = fit.fighters[position] if fighter.itemID == self.newItemID: continue info = FighterInfo.fromFighter(fighter) info.itemID = self.newItemID cmdRemove = CalcRemoveLocalFighterCommand( fitID=self.fitID, position=position) cmdAdd = CalcAddLocalFighterCommand( fitID=self.fitID, fighterInfo=info, ignoreRestrictions=True) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) success = any(results) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/imprt.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localAdd import CalcAddLocalFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit class GuiImportLocalFightersCommand(wx.Command): def __init__(self, fitID, fighters): wx.Command.__init__(self, True, 'Import Local Fighters') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.fighters = [(i, a) for i, a, m in fighters] def Do(self): results = [] for itemID, amount in self.fighters: cmd = CalcAddLocalFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=itemID, amount=amount, state=False)) results.append(self.internalHistory.submit(cmd)) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/remove.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localRemove import CalcRemoveLocalFighterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit from service.market import Market class GuiRemoveLocalFightersCommand(wx.Command): def __init__(self, fitID, positions): wx.Command.__init__(self, True, 'Remove Local Fighters') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions def Do(self): sMkt = Market.getInstance() results = [] for position in sorted(self.positions, reverse=True): cmd = CalcRemoveLocalFighterCommand(fitID=self.fitID, position=position) results.append(self.internalHistory.submit(cmd)) sMkt.storeRecentlyUsed(cmd.savedFighterInfo.itemID) success = any(results) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localFighter/toggleStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.localToggleStates import CalcToggleLocalFighterStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleLocalFighterStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions): wx.Command.__init__(self, True, 'Toggle Local Fighter States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions def Do(self): cmd = CalcToggleLocalFighterStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/localModule/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit from service.market import Market class GuiAddLocalModuleCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Local Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.savedRemovedDummies = None def Do(self): cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=ModuleInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) Market.getInstance().storeRecentlyUsed(self.itemID) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/changeCharges.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.changeCharges import CalcChangeModuleChargesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalModuleChargesCommand(wx.Command): def __init__(self, fitID, positions, chargeItemID): wx.Command.__init__(self, True, 'Change Local Module Charges') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.chargeItemID = chargeItemID def Do(self): cmd = CalcChangeModuleChargesCommand(fitID=self.fitID, projected=False, chargeMap={p: self.chargeItemID for p in self.positions}) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/changeMetas.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit class GuiChangeLocalModuleMetasCommand(wx.Command): def __init__(self, fitID, positions, newItemID): wx.Command.__init__(self, True, 'Change Local Module Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.newItemID = newItemID self.replacedItemIDs = None self.savedRemovedDummies = None def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) oldModMap = self._getPositionMap(fit) results = [] self.replacedItemIDs = set() lastSuccessfulCmd = None for position in self.positions: module = fit.modules[position] if module.isEmpty: continue if module.itemID == self.newItemID: continue info = ModuleInfo.fromModule(module) info.itemID = self.newItemID cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=position, newModInfo=info, unloadInvalidCharges=True) result = self.internalHistory.submit(cmd) results.append(result) if result: self.replacedItemIDs.add(module.itemID) lastSuccessfulCmd = cmd success = any(results) if lastSuccessfulCmd is not None and lastSuccessfulCmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() newModMap = self._getPositionMap(fit) events = [] if success and self.replacedItemIDs: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.replacedItemIDs)) if success: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.newItemID)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) if success: for position in self.positions: oldMod = oldModMap.get(position) newMod = newModMap.get(position) if oldMod is not newMod: events.append(GE.ItemChangedInplace(old=oldMod, new=newMod)) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) oldModMap = self._getPositionMap(fit) for position in self.positions: oldModMap[position] = fit.modules[position] restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() newModMap = self._getPositionMap(fit) events = [] if success: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.newItemID)) if success and self.replacedItemIDs: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.replacedItemIDs)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) if success: for position in self.positions: oldMod = oldModMap.get(position) newMod = newModMap.get(position) if oldMod is not newMod: events.append(GE.ItemChangedInplace(fitID=self.fitID, old=oldMod, new=newMod)) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success def _getPositionMap(self, fit): positionMap = {} for position in self.positions: positionMap[position] = fit.modules[position] return positionMap ================================================ FILE: gui/fitCommands/gui/localModule/changeMutation.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localChangeMutation import CalcChangeLocalModuleMutationCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalModuleMutationCommand(wx.Command): def __init__(self, fitID, position, mutation, oldMutation=None): wx.Command.__init__(self, True, 'Change Local Module Mutation') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.mutation = mutation self.oldMutation = oldMutation def Do(self): cmd = CalcChangeLocalModuleMutationCommand( fitID=self.fitID, position=self.position, mutation=self.mutation, oldMutation=self.oldMutation) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/changeSpool.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.changeSpool import CalcChangeModuleSpoolCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeLocalModuleSpoolCommand(wx.Command): def __init__(self, fitID, position, spoolType, spoolAmount): wx.Command.__init__(self, True, 'Change Local Module Spool') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.spoolType = spoolType self.spoolAmount = spoolAmount def Do(self): cmd = CalcChangeModuleSpoolCommand( fitID=self.fitID, projected=False, position=self.position, spoolType=self.spoolType, spoolAmount=self.spoolAmount) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/changeStates.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localChangeStates import CalcChangeLocalModuleStatesCommand from gui.fitCommands.helpers import InternalCommandHistory, restoreRemovedDummies from service.fit import Fit class GuiChangeLocalModuleStatesCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, click): wx.Command.__init__(self, True, 'Change Local Module States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.click = click self.savedRemovedDummies = None def Do(self): cmd = CalcChangeLocalModuleStatesCommand( fitID=self.fitID, mainPosition=self.mainPosition, positions=self.positions, click=self.click) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/clone.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localClone import CalcCloneLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, restoreRemovedDummies from service.fit import Fit class GuiCloneLocalModuleCommand(wx.Command): def __init__(self, fitID, srcPosition, dstPosition): wx.Command.__init__(self, True, 'Clone Local Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.srcPosition = srcPosition self.dstPosition = dstPosition self.savedItemID = None self.savedRemovedDummies = None def Do(self): if self.srcPosition == self.dstPosition: return False sFit = Fit.getInstance() cmd = CalcCloneLocalModuleCommand(fitID=self.fitID, srcPosition=self.srcPosition, dstPosition=self.dstPosition) success = self.internalHistory.submit(cmd) fit = sFit.getFit(self.fitID) if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() self.savedItemID = fit.modules[self.srcPosition].itemID if success and self.savedItemID is not None: event = GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.savedItemID) else: event = GE.FitChanged(fitIDs=(self.fitID,)) wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() if success and self.savedItemID is not None: event = GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.savedItemID) else: event = GE.FitChanged(fitIDs=(self.fitID,)) wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success ================================================ FILE: gui/fitCommands/gui/localModule/fillAdd.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit from service.market import Market class GuiFillWithNewLocalModulesCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Fill with New Local Modules') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.savedRemovedDummies = None def Do(self): info = ModuleInfo(itemID=self.itemID) added_modules = 0 while True: cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=info) if not self.internalHistory.submit(cmd): break added_modules += 1 Market.getInstance().storeRecentlyUsed(self.itemID) sFit = Fit.getInstance() # Only last command decides if we need to recalc here or not if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/fillClone.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit class GuiFillWithClonedLocalModulesCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Fill with Cloned Local Modules') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.savedItemID = None self.savedRemovedDummies = None def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) mod = fit.modules[self.position] self.savedItemID = mod.itemID info = ModuleInfo.fromModule(mod) added_modules = 0 while True: cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=info) if not self.internalHistory.submit(cmd): break added_modules += 1 if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() success = added_modules > 0 wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.savedItemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.savedItemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/mutatedConvert.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo from service.fit import Fit class GuiConvertMutatedLocalModuleCommand(wx.Command): def __init__(self, fitID, position, mutaplasmid): wx.Command.__init__(self, True, 'Convert Local Module to Mutated') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.itemID = mutaplasmid.resultingItem.ID self.mutaplasmidID = mutaplasmid.ID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) try: mod = fit.modules[self.position] except IndexError: return False if mod.isEmpty: return False if mod.isMutated: return False cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=self.position, newModInfo=ModuleInfo( itemID=self.itemID, baseItemID=mod.item.ID, mutaplasmidID=self.mutaplasmidID, mutations={}, chargeID=mod.chargeID, state=mod.state, spoolType=mod.spoolType, spoolAmount=mod.spoolAmount)) success = self.internalHistory.submit(cmd) if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/mutatedImport.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit class GuiImportLocalMutatedModuleCommand(wx.Command): def __init__(self, fitID, baseItem, mutaplasmid, mutations): wx.Command.__init__(self, True, 'Import Local Mutated Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.newModInfo = ModuleInfo( itemID=mutaplasmid.resultingItem.ID, baseItemID=baseItem.ID, mutaplasmidID=mutaplasmid.ID, mutations=mutations) self.savedRemovedDummies = None def Do(self): cmd = CalcAddLocalModuleCommand(fitID=self.fitID, newModInfo=self.newModInfo) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.newModInfo.itemID)) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.newModInfo.itemID)) return success ================================================ FILE: gui/fitCommands/gui/localModule/mutatedRevert.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo from service.fit import Fit class GuiRevertMutatedLocalModuleCommand(wx.Command): def __init__(self, fitID, position): wx.Command.__init__(self, True, 'Revert Local Module from Mutated') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) try: mod = fit.modules[self.position] except IndexError: return False if mod.isEmpty: return False if not mod.isMutated: return False cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=self.position, newModInfo=ModuleInfo( itemID=mod.baseItemID, chargeID=mod.chargeID, state=mod.state, spoolType=mod.spoolType, spoolAmount=mod.spoolAmount)) success = self.internalHistory.submit(cmd) if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/remove.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localRemove import CalcRemoveLocalModulesCommand from gui.fitCommands.helpers import InternalCommandHistory, restoreRemovedDummies from service.fit import Fit from service.market import Market class GuiRemoveLocalModuleCommand(wx.Command): def __init__(self, fitID, positions): wx.Command.__init__(self, True, 'Remove Local Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.savedTypeIDs = None self.savedRemovedDummies = None def Do(self): sMkt = Market.getInstance() sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) self.savedTypeIDs = {m.itemID for m in fit.modules if not m.isEmpty} cmd = CalcRemoveLocalModulesCommand(fitID=self.fitID, positions=self.positions) success = self.internalHistory.submit(cmd) for container in (cmd.savedSubInfos, cmd.savedModInfos): for position in sorted(container, reverse=True): modInfo = container[position] sMkt.storeRecentlyUsed(modInfo.itemID) if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.savedTypeIDs) if success and self.savedTypeIDs else GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.savedTypeIDs) if success and self.savedTypeIDs else GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/replace.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit from service.market import Market class GuiReplaceLocalModuleCommand(wx.Command): def __init__(self, fitID, itemID, positions): wx.Command.__init__(self, True, 'Replace Local Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.positions = positions self.savedRemovedDummies = None def Do(self): results = [] needRecalc = None for position in self.positions: cmd = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=position, newModInfo=ModuleInfo(itemID=self.itemID)) results.append(self.internalHistory.submit(cmd)) # Last command decides if we need it or not needRecalc = cmd.needsGuiRecalc success = any(results) Market.getInstance().storeRecentlyUsed(self.itemID) sFit = Fit.getInstance() if needRecalc: eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent( gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.itemID) if success else GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModule/swap.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.localSwap import CalcSwapLocalModuleCommand from gui.fitCommands.helpers import InternalCommandHistory class GuiSwapLocalModulesCommand(wx.Command): def __init__(self, fitID, position1, position2): wx.Command.__init__(self, True, 'Swap Local Modules') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position1 = position1 self.position2 = position2 def Do(self): if self.position1 == self.position2: return False cmd = CalcSwapLocalModuleCommand(fitID=self.fitID, position1=self.position1, position2=self.position2) success = self.internalHistory.submit(cmd) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/localModuleCargo/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/localModuleCargo/cargoToLocalModule.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.calc.module.changeCharges import CalcChangeModuleChargesCommand from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit class GuiCargoToLocalModuleCommand(wx.Command): """ Moves cargo to the fitting window. If target is not empty, take whatever we take off and put into the cargo hold. If we copy, we do the same but do not remove the item from the cargo hold. """ def __init__(self, fitID, cargoItemID, modPosition, copy): wx.Command.__init__(self, True, 'Cargo to Local Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.srcCargoItemID = cargoItemID self.dstModPosition = modPosition self.copy = copy self.removedModItemID = None self.addedModItemID = None self.savedRemovedDummies = None def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) srcCargo = next((c for c in fit.cargo if c.itemID == self.srcCargoItemID), None) if srcCargo is None: return False dstMod = fit.modules[self.dstModPosition] # Moving/copying charge from cargo to fit if srcCargo.item.isCharge and not dstMod.isEmpty: newCargoChargeItemID = dstMod.chargeID newCargoChargeAmount = dstMod.numCharges newModChargeItemID = self.srcCargoItemID newModChargeAmount = dstMod.getNumCharges(srcCargo.item) if newCargoChargeItemID == newModChargeItemID: return False commands = [] if not self.copy: commands.append(CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=newModChargeItemID, amount=newModChargeAmount))) if newCargoChargeItemID is not None: commands.append(CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=newCargoChargeItemID, amount=newCargoChargeAmount))) commands.append(CalcChangeModuleChargesCommand( fitID=self.fitID, projected=False, chargeMap={self.dstModPosition: self.srcCargoItemID})) success = self.internalHistory.submitBatch(*commands) # Moving/copying/replacing module elif srcCargo.item.isModule: dstModItemID = dstMod.itemID dstModSlot = dstMod.slot if self.srcCargoItemID == dstModItemID: return False # To keep all old item properties, copy them over from old module, except for mutations newModInfo = ModuleInfo.fromModule(dstMod, unmutate=True) newModInfo.itemID = self.srcCargoItemID if dstMod.isEmpty: newCargoModItemID = None dstModChargeItemID = None dstModChargeAmount = None else: # We cannot put mutated items to cargo, so use unmutated item ID newCargoModItemID = ModuleInfo.fromModule(dstMod, unmutate=True).itemID dstModChargeItemID = dstMod.chargeID dstModChargeAmount = dstMod.numCharges commands = [] # Keep cargo only in case we were copying if not self.copy: commands.append(CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.srcCargoItemID, amount=1))) # Add item to cargo only if we copied/moved to non-empty slot if newCargoModItemID is not None: commands.append(CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=newCargoModItemID, amount=1))) cmdReplace = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=self.dstModPosition, newModInfo=newModInfo, unloadInvalidCharges=True) commands.append(cmdReplace) # Submit batch now because we need to have updated info on fit to keep going success = self.internalHistory.submitBatch(*commands) newMod = fit.modules[self.dstModPosition] # Bail if drag happened to slot to which module cannot be dragged, will undo later if newMod.slot != dstModSlot: success = False if success: # If we had to unload charge, add it to cargo if cmdReplace.unloadedCharge and dstModChargeItemID is not None: cmdAddCargoCharge = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=dstModChargeItemID, amount=dstModChargeAmount)) success = self.internalHistory.submit(cmdAddCargoCharge) # If we did not unload charge and there still was a charge, see if amount differs and process it elif not cmdReplace.unloadedCharge and dstModChargeItemID is not None: # How many extra charges do we need to take from cargo extraChargeAmount = newMod.numCharges - dstModChargeAmount if extraChargeAmount > 0: cmdRemoveCargoExtraCharge = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=dstModChargeItemID, amount=extraChargeAmount)) # Do not check if operation was successful or not, we're okay if we have no such # charges in cargo self.internalHistory.submit(cmdRemoveCargoExtraCharge) elif extraChargeAmount < 0: cmdAddCargoExtraCharge = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=dstModChargeItemID, amount=abs(extraChargeAmount))) success = self.internalHistory.submit(cmdAddCargoExtraCharge) if success: # Store info to properly send events later self.removedModItemID = dstModItemID self.addedModItemID = self.srcCargoItemID else: self.internalHistory.undoAll() else: return False eos.db.flush() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() events = [] if self.removedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.removedModItemID)) if self.addedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.addedModItemID)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() events = [] if self.addedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.addedModItemID)) if self.removedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.removedModItemID)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success ================================================ FILE: gui/fitCommands/gui/localModuleCargo/localModuleToCargo.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.cargo.add import CalcAddCargoCommand from gui.fitCommands.calc.cargo.remove import CalcRemoveCargoCommand from gui.fitCommands.calc.module.localRemove import CalcRemoveLocalModulesCommand from gui.fitCommands.calc.module.localReplace import CalcReplaceLocalModuleCommand from gui.fitCommands.helpers import CargoInfo, InternalCommandHistory, ModuleInfo, restoreRemovedDummies from service.fit import Fit class GuiLocalModuleToCargoCommand(wx.Command): def __init__(self, fitID, modPosition, cargoItemID, copy): wx.Command.__init__(self, True, 'Local Module to Cargo') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.srcModPosition = modPosition self.dstCargoItemID = cargoItemID self.copy = copy self.removedModItemID = None self.addedModItemID = None self.savedRemovedDummies = None def Do(self): fit = Fit.getInstance().getFit(self.fitID) srcMod = fit.modules[self.srcModPosition] if srcMod.isEmpty: return False srcModItemID = srcMod.itemID dstCargo = next((c for c in fit.cargo if c.itemID == self.dstCargoItemID), None) success = False # Attempt to swap if we're moving our module onto a module in the cargo hold if not self.copy and dstCargo is not None and dstCargo.item.isModule: if srcModItemID == self.dstCargoItemID: return False srcModSlot = srcMod.slot newModInfo = ModuleInfo.fromModule(srcMod, unmutate=True) newModInfo.itemID = self.dstCargoItemID srcModChargeItemID = srcMod.chargeID srcModChargeAmount = srcMod.numCharges commands = [] commands.append(CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=self.dstCargoItemID, amount=1))) commands.append(CalcAddCargoCommand( fitID=self.fitID, # We cannot put mutated items to cargo, so use unmutated item ID cargoInfo=CargoInfo(itemID=ModuleInfo.fromModule(srcMod, unmutate=True).itemID, amount=1))) cmdReplace = CalcReplaceLocalModuleCommand( fitID=self.fitID, position=self.srcModPosition, newModInfo=newModInfo, unloadInvalidCharges=True) commands.append(cmdReplace) # Submit batch now because we need to have updated info on fit to keep going success = self.internalHistory.submitBatch(*commands) if success: newMod = fit.modules[self.srcModPosition] # Process charge changes if module is moved to proper slot if newMod.slot == srcModSlot: # If we had to unload charge, add it to cargo if cmdReplace.unloadedCharge and srcModChargeItemID is not None: cmdAddCargoCharge = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=srcModChargeItemID, amount=srcModChargeAmount)) success = self.internalHistory.submit(cmdAddCargoCharge) # If we did not unload charge and there still was a charge, see if amount differs and process it elif not cmdReplace.unloadedCharge and srcModChargeItemID is not None: # How many extra charges do we need to take from cargo extraChargeAmount = newMod.numCharges - srcModChargeAmount if extraChargeAmount > 0: cmdRemoveCargoExtraCharge = CalcRemoveCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=srcModChargeItemID, amount=extraChargeAmount)) # Do not check if operation was successful or not, we're okay if we have no such # charges in cargo self.internalHistory.submit(cmdRemoveCargoExtraCharge) elif extraChargeAmount < 0: cmdAddCargoExtraCharge = CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=srcModChargeItemID, amount=abs(extraChargeAmount))) success = self.internalHistory.submit(cmdAddCargoExtraCharge) if success: # Store info to properly send events later self.removedModItemID = srcModItemID self.addedModItemID = self.dstCargoItemID # If drag happened to module which cannot be fit into current slot - consider it as failure else: success = False # And in case of any failures, cancel everything to try to do move instead if not success: self.internalHistory.undoAll() # Just dump module and its charges into cargo when copying or moving to cargo if not success: commands = [] commands.append(CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=ModuleInfo.fromModule(srcMod, unmutate=True).itemID, amount=1))) if srcMod.chargeID is not None: commands.append(CalcAddCargoCommand( fitID=self.fitID, cargoInfo=CargoInfo(itemID=srcMod.chargeID, amount=srcMod.numCharges))) if not self.copy: commands.append(CalcRemoveLocalModulesCommand( fitID=self.fitID, positions=[self.srcModPosition])) success = self.internalHistory.submitBatch(*commands) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) self.savedRemovedDummies = sFit.fill(self.fitID) eos.db.commit() events = [] if self.removedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.removedModItemID)) if self.addedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.addedModItemID)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success def Undo(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) restoreRemovedDummies(fit, self.savedRemovedDummies) success = self.internalHistory.undoAll() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() events = [] if self.addedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='moddel', typeID=self.addedModItemID)) if self.removedModItemID is not None: events.append(GE.FitChanged(fitIDs=(self.fitID,), action='modadd', typeID=self.removedModItemID)) if not events: events.append(GE.FitChanged(fitIDs=(self.fitID,))) for event in events: wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), event) return success ================================================ FILE: gui/fitCommands/gui/projectedChangeProjectionRange.py ================================================ import wx import eos.db import gui.mainFrame from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedChangeProjectionRange import CalcChangeProjectedDroneProjectionRangeCommand from gui.fitCommands.calc.fighter.projectedChangeProjectionRange import CalcChangeProjectedFighterProjectionRangeCommand from gui.fitCommands.calc.module.projectedChangeProjectionRange import CalcChangeProjectedModuleProjectionRangeCommand from gui.fitCommands.calc.projectedFit.changeProjectionRange import CalcChangeProjectedFitProjectionRangeCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedItemsProjectionRangeCommand(wx.Command): def __init__(self, fitID, items, projectionRange): wx.Command.__init__(self, True, 'Change Projected Items Projection Range') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.projectionRange = projectionRange self.pModPositions = [] self.pDroneItemIDs = [] self.pFighterPositions = [] self.pFitIDs = [] fit = Fit.getInstance().getFit(fitID) for item in items: if isinstance(item, EosModule): if item in fit.projectedModules and not getattr(item, 'isExclusiveSystemEffect', False): self.pModPositions.append(fit.projectedModules.index(item)) elif isinstance(item, EosDrone): self.pDroneItemIDs.append(item.itemID) elif isinstance(item, EosFighter): if item in fit.projectedFighters: self.pFighterPositions.append(fit.projectedFighters.index(item)) elif isinstance(item, EosFit): self.pFitIDs.append(item.ID) def Do(self): results = [] needRecalc = True for pModPosition in self.pModPositions: cmd = CalcChangeProjectedModuleProjectionRangeCommand( fitID=self.fitID, position=pModPosition, projectionRange=self.projectionRange) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc for pDroneItemID in self.pDroneItemIDs: cmd = CalcChangeProjectedDroneProjectionRangeCommand( fitID=self.fitID, itemID=pDroneItemID, projectionRange=self.projectionRange) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFighterPosition in self.pFighterPositions: cmd = CalcChangeProjectedFighterProjectionRangeCommand( fitID=self.fitID, position=pFighterPosition, projectionRange=self.projectionRange) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFitID in self.pFitIDs: cmd = CalcChangeProjectedFitProjectionRangeCommand( fitID=self.fitID, projectedFitID=pFitID, projectionRange=self.projectionRange) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc success = any(results) sFit = Fit.getInstance() if needRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedChangeStates.py ================================================ import wx import eos.db import gui.mainFrame from eos.const import FittingModuleState from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedChangeState import CalcChangeProjectedDroneStateCommand from gui.fitCommands.calc.fighter.projectedChangeState import CalcChangeProjectedFighterStateCommand from gui.fitCommands.calc.module.projectedChangeStates import CalcChangeProjectedModuleStatesCommand from gui.fitCommands.calc.projectedFit.changeState import CalcChangeProjectedFitStateCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedItemStatesCommand(wx.Command): def __init__(self, fitID, mainItem, items, click): wx.Command.__init__(self, True, 'Change Projected Item States') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.pModPositions = [] self.pDroneItemIDs = [] self.pFighterPositions = [] self.pFitIDs = [] fit = Fit.getInstance().getFit(fitID) for item in items: if isinstance(item, EosModule): if item in fit.projectedModules: self.pModPositions.append(fit.projectedModules.index(item)) elif isinstance(item, EosDrone): self.pDroneItemIDs.append(item.itemID) elif isinstance(item, EosFighter): if item in fit.projectedFighters: self.pFighterPositions.append(fit.projectedFighters.index(item)) elif isinstance(item, EosFit): self.pFitIDs.append(item.ID) self.proposedState = None if click == 'right' and isinstance(mainItem, EosModule): self.proposedState = 'overheat' elif click == 'left': if isinstance(mainItem, EosModule): modProposedState = EosModule.getProposedState(mainItem, click) self.proposedState = 'inactive' if modProposedState == FittingModuleState.OFFLINE else 'active' elif isinstance(mainItem, EosDrone): self.proposedState = 'active' if mainItem.amountActive == 0 else 'inactive' elif isinstance(mainItem, EosFighter): self.proposedState = 'inactive' if mainItem.active else 'active' elif isinstance(mainItem, EosFit): projectionInfo = mainItem.getProjectionInfo(self.fitID) if projectionInfo is not None: self.proposedState = 'inactive' if projectionInfo.active else 'active' def Do(self): if self.proposedState is None: return False results = [] needRecalc = True if self.pModPositions: cmd = CalcChangeProjectedModuleStatesCommand( fitID=self.fitID, positions=self.pModPositions, proposedState=self.proposedState) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc for pDroneItemID in self.pDroneItemIDs: cmd = CalcChangeProjectedDroneStateCommand( fitID=self.fitID, itemID=pDroneItemID, state=False if self.proposedState == 'inactive' else True) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFighterPosition in self.pFighterPositions: cmd = CalcChangeProjectedFighterStateCommand( fitID=self.fitID, position=pFighterPosition, state=False if self.proposedState == 'inactive' else True) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFitID in self.pFitIDs: cmd = CalcChangeProjectedFitStateCommand( fitID=self.fitID, projectedFitID=pFitID, state=False if self.proposedState == 'inactive' else True) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc success = any(results) sFit = Fit.getInstance() if needRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedDrone/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/projectedDrone/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedAdd import CalcAddProjectedDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiAddProjectedDroneCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Projected Drone') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcAddProjectedDroneCommand(fitID=self.fitID, droneInfo=DroneInfo(itemID=self.itemID, amount=1, amountActive=1)) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedDrone/changeAmount.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedChangeAmount import CalcChangeProjectedDroneAmountCommand from gui.fitCommands.calc.drone.projectedRemove import CalcRemoveProjectedDroneCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedDroneAmountCommand(wx.Command): def __init__(self, fitID, itemID, amount): wx.Command.__init__(self, True, 'Change Projected Drone Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID self.amount = amount def Do(self): if self.amount > 0: cmd = CalcChangeProjectedDroneAmountCommand(fitID=self.fitID, itemID=self.itemID, amount=self.amount) else: cmd = CalcRemoveProjectedDroneCommand(fitID=self.fitID, itemID=self.itemID, amount=math.inf) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedDrone/changeMetas.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedAdd import CalcAddProjectedDroneCommand from gui.fitCommands.calc.drone.projectedRemove import CalcRemoveProjectedDroneCommand from gui.fitCommands.helpers import DroneInfo, InternalCommandHistory from service.fit import Fit class GuiChangeProjectedDroneMetasCommand(wx.Command): def __init__(self, fitID, itemIDs, newItemID): wx.Command.__init__(self, True, 'Change Projected Drone Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemIDs = itemIDs self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] for itemID in self.itemIDs: drone = next((pd for pd in fit.projectedDrones if pd.itemID == itemID), None) if drone is None: continue if drone.itemID == self.newItemID: continue info = DroneInfo.fromDrone(drone) info.itemID = self.newItemID cmdRemove = CalcRemoveProjectedDroneCommand(fitID=self.fitID, itemID=itemID, amount=math.inf) cmdAdd = CalcAddProjectedDroneCommand(fitID=self.fitID, droneInfo=info) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) success = any(results) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFighter/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/projectedFighter/abilityToggleState.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.abilityToggleStates import CalcToggleFighterAbilityStatesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiToggleProjectedFighterAbilityStateCommand(wx.Command): def __init__(self, fitID, mainPosition, positions, effectID): wx.Command.__init__(self, True, 'Toggle Projected Fighter Ability State') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.mainPosition = mainPosition self.positions = positions self.effectID = effectID def Do(self): cmd = CalcToggleFighterAbilityStatesCommand( fitID=self.fitID, projected=True, mainPosition=self.mainPosition, positions=self.positions, effectID=self.effectID) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFighter/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.projectedAdd import CalcAddProjectedFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit class GuiAddProjectedFighterCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Projected Fighter') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcAddProjectedFighterCommand(fitID=self.fitID, fighterInfo=FighterInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFighter/changeAmount.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.changeAmount import CalcChangeFighterAmountCommand from gui.fitCommands.calc.fighter.projectedRemove import CalcRemoveProjectedFighterCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedFighterAmountCommand(wx.Command): def __init__(self, fitID, position, amount): wx.Command.__init__(self, True, 'Change Projected Fighter Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.amount = amount def Do(self): if self.amount > 0: cmd = CalcChangeFighterAmountCommand(fitID=self.fitID, projected=True, position=self.position, amount=self.amount) else: cmd = CalcRemoveProjectedFighterCommand(fitID=self.fitID, position=self.position) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFighter/changeMetas.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.fighter.projectedAdd import CalcAddProjectedFighterCommand from gui.fitCommands.calc.fighter.projectedRemove import CalcRemoveProjectedFighterCommand from gui.fitCommands.helpers import FighterInfo, InternalCommandHistory from service.fit import Fit class GuiChangeProjectedFighterMetasCommand(wx.Command): def __init__(self, fitID, positions, newItemID): wx.Command.__init__(self, True, 'Change Projected Fighter Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] for position in sorted(self.positions, reverse=True): fighter = fit.projectedFighters[position] if fighter.itemID == self.newItemID: continue info = FighterInfo.fromFighter(fighter) info.itemID = self.newItemID cmdRemove = CalcRemoveProjectedFighterCommand(fitID=self.fitID, position=position) cmdAdd = CalcAddProjectedFighterCommand(fitID=self.fitID, fighterInfo=info) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) success = any(results) eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFit/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/projectedFit/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.projectedFit.add import CalcAddProjectedFitCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiAddProjectedFitsCommand(wx.Command): def __init__(self, fitID, projectedFitIDs, amount): wx.Command.__init__(self, True, 'Add Projected Fits') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.projectedFitIDs = projectedFitIDs self.amount = amount def Do(self): results = [] for projectedFitID in self.projectedFitIDs: cmd = CalcAddProjectedFitCommand(fitID=self.fitID, projectedFitID=projectedFitID, amount=self.amount) results.append(self.internalHistory.submit(cmd)) success = any(results) sFit = Fit.getInstance() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() sFit = Fit.getInstance() eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedFit/changeAmount.py ================================================ import math import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.projectedFit.changeAmount import CalcChangeProjectedFitAmountCommand from gui.fitCommands.calc.projectedFit.remove import CalcRemoveProjectedFitCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedFitAmountCommand(wx.Command): def __init__(self, fitID, projectedFitID, amount): wx.Command.__init__(self, True, 'Change Projected Fit Amount') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.projectedFitID = projectedFitID self.amount = amount def Do(self): if self.amount > 0: cmd = CalcChangeProjectedFitAmountCommand(fitID=self.fitID, projectedFitID=self.projectedFitID, amount=self.amount) else: cmd = CalcRemoveProjectedFitCommand(fitID=self.fitID, projectedFitID=self.projectedFitID, amount=math.inf) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedModule/__init__.py ================================================ ================================================ FILE: gui/fitCommands/gui/projectedModule/add.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.projectedAdd import CalcAddProjectedModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo from service.fit import Fit class GuiAddProjectedModuleCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Add Projected Module') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcAddProjectedModuleCommand(fitID=self.fitID, modInfo=ModuleInfo(itemID=self.itemID)) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedModule/changeCharges.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.changeCharges import CalcChangeModuleChargesCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedModuleChargesCommand(wx.Command): def __init__(self, fitID, positions, chargeItemID): wx.Command.__init__(self, True, 'Change Projected Module Charges') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.chargeItemID = chargeItemID def Do(self): cmd = CalcChangeModuleChargesCommand(fitID=self.fitID, projected=True, chargeMap={p: self.chargeItemID for p in self.positions}) success = self.internalHistory.submit(cmd) sFit = Fit.getInstance() if cmd.needsGuiRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedModule/changeMetas.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.projectedAdd import CalcAddProjectedModuleCommand from gui.fitCommands.calc.module.projectedRemove import CalcRemoveProjectedModuleCommand from gui.fitCommands.helpers import InternalCommandHistory, ModuleInfo from service.fit import Fit class GuiChangeProjectedModuleMetasCommand(wx.Command): def __init__(self, fitID, positions, newItemID): wx.Command.__init__(self, True, 'Change Projected Module Metas') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.positions = positions self.newItemID = newItemID def Do(self): sFit = Fit.getInstance() fit = sFit.getFit(self.fitID) results = [] needRecalc = None for position in sorted(self.positions, reverse=True): module = fit.projectedModules[position] if module.itemID == self.newItemID: continue info = ModuleInfo.fromModule(module) info.itemID = self.newItemID cmdRemove = CalcRemoveProjectedModuleCommand(fitID=self.fitID, position=position) cmdAdd = CalcAddProjectedModuleCommand(fitID=self.fitID, modInfo=info) results.append(self.internalHistory.submitBatch(cmdRemove, cmdAdd)) # Only last add command counts needRecalc = cmdAdd.needsGuiRecalc success = any(results) if needRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedModule/changeSpool.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.module.changeSpool import CalcChangeModuleSpoolCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeProjectedModuleSpoolCommand(wx.Command): def __init__(self, fitID, position, spoolType, spoolAmount): wx.Command.__init__(self, True, 'Change Projected Module Spool') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.position = position self.spoolType = spoolType self.spoolAmount = spoolAmount def Do(self): cmd = CalcChangeModuleSpoolCommand( fitID=self.fitID, projected=True, position=self.position, spoolType=self.spoolType, spoolAmount=self.spoolAmount) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/projectedRemove.py ================================================ import wx import eos.db import gui.mainFrame from eos.saveddata.drone import Drone as EosDrone from eos.saveddata.fighter import Fighter as EosFighter from eos.saveddata.fit import Fit as EosFit from eos.saveddata.module import Module as EosModule from gui import globalEvents as GE from gui.fitCommands.calc.drone.projectedRemove import CalcRemoveProjectedDroneCommand from gui.fitCommands.calc.fighter.projectedRemove import CalcRemoveProjectedFighterCommand from gui.fitCommands.calc.module.projectedRemove import CalcRemoveProjectedModuleCommand from gui.fitCommands.calc.projectedFit.remove import CalcRemoveProjectedFitCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiRemoveProjectedItemsCommand(wx.Command): def __init__(self, fitID, items, amount): wx.Command.__init__(self, True, 'Remove Projected Items') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.amount = amount self.pModPositions = [] self.pDroneItemIDs = [] self.pFighterPositions = [] self.pFitIDs = [] fit = Fit.getInstance().getFit(fitID) for item in items: if isinstance(item, EosModule): if item in fit.projectedModules: self.pModPositions.append(fit.projectedModules.index(item)) elif isinstance(item, EosDrone): self.pDroneItemIDs.append(item.itemID) elif isinstance(item, EosFighter): if item in fit.projectedFighters: self.pFighterPositions.append(fit.projectedFighters.index(item)) elif isinstance(item, EosFit): self.pFitIDs.append(item.ID) def Do(self): results = [] needRecalc = True for pModPosition in sorted(self.pModPositions, reverse=True): cmd = CalcRemoveProjectedModuleCommand(fitID=self.fitID, position=pModPosition) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc for pDroneItemID in self.pDroneItemIDs: cmd = CalcRemoveProjectedDroneCommand(fitID=self.fitID, itemID=pDroneItemID, amount=self.amount) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFighterPosition in sorted(self.pFighterPositions, reverse=True): cmd = CalcRemoveProjectedFighterCommand(fitID=self.fitID, position=pFighterPosition) results.append(self.internalHistory.submit(cmd)) needRecalc = True for pFitID in self.pFitIDs: cmd = CalcRemoveProjectedFitCommand(fitID=self.fitID, projectedFitID=pFitID, amount=self.amount) results.append(self.internalHistory.submit(cmd)) needRecalc = cmd.needsGuiRecalc success = any(results) sFit = Fit.getInstance() if needRecalc: eos.db.flush() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/gui/shipModeChange.py ================================================ import wx import eos.db import gui.mainFrame from gui import globalEvents as GE from gui.fitCommands.calc.shipModeChange import CalcChangeShipModeCommand from gui.fitCommands.helpers import InternalCommandHistory from service.fit import Fit class GuiChangeShipModeCommand(wx.Command): def __init__(self, fitID, itemID): wx.Command.__init__(self, True, 'Change Ship Mode') self.internalHistory = InternalCommandHistory() self.fitID = fitID self.itemID = itemID def Do(self): cmd = CalcChangeShipModeCommand(fitID=self.fitID, itemID=self.itemID) success = self.internalHistory.submit(cmd) eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success def Undo(self): success = self.internalHistory.undoAll() eos.db.flush() sFit = Fit.getInstance() sFit.recalc(self.fitID) sFit.fill(self.fitID) eos.db.commit() wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitIDs=(self.fitID,))) return success ================================================ FILE: gui/fitCommands/helpers.py ================================================ import math import wx from logbook import Logger import eos.db from eos.const import FittingModuleState from eos.saveddata.booster import Booster from eos.saveddata.cargo import Cargo from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.implant import Implant from eos.saveddata.module import Module from service.market import Market from utils.repr import makeReprStr pyfalog = Logger(__name__) class InternalCommandHistory: def __init__(self): self.__buffer = wx.CommandProcessor() def submit(self, command): return self.__buffer.Submit(command) def submitBatch(self, *commands): for command in commands: if not self.__buffer.Submit(command): # Undo what we already submitted for commandToUndo in reversed(self.__buffer.Commands): if commandToUndo in commands: self.__buffer.Undo() return False return True def undoAll(self): undoneCommands = [] # Undo commands one by one, starting from the last for commandToUndo in reversed(self.__buffer.Commands): if commandToUndo.Undo(): undoneCommands.append(commandToUndo) # If undoing fails, redo already undone commands, starting from the last undone else: for commandToRedo in reversed(undoneCommands): if not commandToRedo.Do(): break self.__buffer.ClearCommands() return False self.__buffer.ClearCommands() return True def __len__(self): return len(self.__buffer.Commands) class ModuleInfo: def __init__( self, itemID, baseItemID=None, mutaplasmidID=None, mutations=None, chargeID=None, state=None, spoolType=None, spoolAmount=None, rahPattern=None): self.itemID = itemID self.baseItemID = baseItemID self.mutaplasmidID = mutaplasmidID self.mutations = mutations self.chargeID = chargeID self.state = state self.spoolType = spoolType self.spoolAmount = spoolAmount self.rahPattern = rahPattern @classmethod def fromModule(cls, mod, unmutate=False): if mod is None: return None if unmutate and mod.isMutated: info = cls( itemID=mod.baseItemID, baseItemID=None, mutaplasmidID=None, mutations={}, chargeID=mod.chargeID, state=mod.state, spoolType=mod.spoolType, spoolAmount=mod.spoolAmount, rahPattern=mod.rahPatternOverride) else: info = cls( itemID=mod.itemID, baseItemID=mod.baseItemID, mutaplasmidID=mod.mutaplasmidID, mutations={m.attrID: m.value for m in mod.mutators.values()}, chargeID=mod.chargeID, state=mod.state, spoolType=mod.spoolType, spoolAmount=mod.spoolAmount, rahPattern=mod.rahPatternOverride) return info def toModule(self, fallbackState=None): mkt = Market.getInstance() item = mkt.getItem(self.itemID, eager=('attributes', 'group.category')) if self.baseItemID and self.mutaplasmidID: baseItem = mkt.getItem(self.baseItemID, eager=('attributes', 'group.category')) mutaplasmid = eos.db.getDynamicItem(self.mutaplasmidID) else: baseItem = None mutaplasmid = None try: mod = Module(item, baseItem=baseItem, mutaplasmid=mutaplasmid) except ValueError: pyfalog.warning('Invalid item: {}'.format(self.itemID)) return None if self.mutations is not None: for attrID, mutator in mod.mutators.items(): if attrID in self.mutations: mutator.value = self.mutations[attrID] if self.spoolType is not None and self.spoolAmount is not None: mod.spoolType = self.spoolType mod.spoolAmount = self.spoolAmount mod.rahPatternOverride = self.rahPattern if self.state is not None: if mod.isValidState(self.state): mod.state = self.state else: mod.state = mod.getMaxState(proposedState=self.state) elif fallbackState is not None: if mod.isValidState(fallbackState): mod.state = fallbackState if self.chargeID is not None: charge = mkt.getItem(self.chargeID, eager=('attributes',)) if charge is None: pyfalog.warning('Cannot set charge {}'.format(self.chargeID)) return None mod.charge = charge return mod def __eq__(self, other): if not isinstance(other, ModuleInfo): return False return all(( self.itemID == other.itemID, self.baseItemID == other.baseItemID, self.mutaplasmidID == other.mutaplasmidID, self.mutations == other.mutations, self.chargeID == other.chargeID, self.state == other.state, self.spoolType == other.spoolType, self.spoolAmount == other.spoolAmount, self.rahPattern == other.rahPattern)) def __repr__(self): return makeReprStr(self, [ 'itemID', 'baseItemID', 'mutaplasmidID', 'mutations', 'chargeID', 'state', 'spoolType', 'spoolAmount', 'rahPattern']) class DroneInfo: def __init__(self, amount, amountActive, itemID, baseItemID=None, mutaplasmidID=None, mutations=None): self.itemID = itemID self.baseItemID = baseItemID self.mutaplasmidID = mutaplasmidID self.mutations = mutations self.amount = amount self.amountActive = amountActive @classmethod def fromDrone(cls, drone): if drone is None: return None info = cls( itemID=drone.itemID, amount=drone.amount, amountActive=drone.amountActive, baseItemID=drone.baseItemID, mutaplasmidID=drone.mutaplasmidID, mutations={m.attrID: m.value for m in drone.mutators.values()}) return info def toDrone(self): mkt = Market.getInstance() item = mkt.getItem(self.itemID, eager=('attributes', 'group.category')) if self.baseItemID and self.mutaplasmidID: baseItem = mkt.getItem(self.baseItemID, eager=('attributes', 'group.category')) mutaplasmid = eos.db.getDynamicItem(self.mutaplasmidID) else: baseItem = None mutaplasmid = None try: drone = Drone(item, baseItem=baseItem, mutaplasmid=mutaplasmid) except ValueError: pyfalog.warning('Invalid item: {}'.format(self.itemID)) return None if self.mutations is not None: for attrID, mutator in drone.mutators.items(): if attrID in self.mutations: mutator.value = self.mutations[attrID] drone.amount = self.amount drone.amountActive = self.amountActive return drone def __repr__(self): return makeReprStr(self, [ 'itemID', 'amount', 'amountActive', 'baseItemID', 'mutaplasmidID', 'mutations']) class FighterInfo: def __init__(self, itemID, amount=None, state=None, abilities=None): self.itemID = itemID self.amount = amount self.state = state self.abilities = abilities @classmethod def fromFighter(cls, fighter): if fighter is None: return None info = cls( itemID=fighter.itemID, amount=fighter.amount, state=fighter.active, abilities={fa.effectID: fa.active for fa in fighter.abilities}) return info def toFighter(self): item = Market.getInstance().getItem(self.itemID, eager=('attributes', 'group.category')) try: fighter = Fighter(item) except ValueError: pyfalog.warning('Invalid item: {}'.format(self.itemID)) return None if self.amount is not None: fighter.amount = self.amount if self.state is not None: fighter.active = self.state if self.abilities is not None: for ability in fighter.abilities: ability.active = self.abilities.get(ability.effectID, ability.active) return fighter def __repr__(self): return makeReprStr(self, ['itemID', 'amount', 'state', 'abilities']) class ImplantInfo: def __init__(self, itemID, state=None): self.itemID = itemID self.state = state @classmethod def fromImplant(cls, implant): if implant is None: return None info = cls( itemID=implant.itemID, state=implant.active) return info def toImplant(self): item = Market.getInstance().getItem(self.itemID, eager=('attributes', 'group.category')) try: implant = Implant(item) except ValueError: pyfalog.warning('Invalid item: {}'.format(self.itemID)) return None if self.state is not None: implant.active = self.state return implant def __repr__(self): return makeReprStr(self, ['itemID', 'state']) class BoosterInfo: def __init__(self, itemID, state=None, sideEffects=None): self.itemID = itemID self.state = state self.sideEffects = sideEffects @classmethod def fromBooster(cls, booster): if booster is None: return None info = cls( itemID=booster.itemID, state=booster.active, sideEffects={se.effectID: se.active for se in booster.sideEffects}) return info def toBooster(self): item = Market.getInstance().getItem(self.itemID, eager=('attributes', 'group.category')) try: booster = Booster(item) except ValueError: pyfalog.warning('Invalid item: {}'.format(self.itemID)) return None if self.state is not None: booster.active = self.state if self.sideEffects is not None: for sideEffect in booster.sideEffects: sideEffect.active = self.sideEffects.get(sideEffect.effectID, sideEffect.active) return booster def __repr__(self): return makeReprStr(self, ['itemID', 'state', 'sideEffects']) class CargoInfo: def __init__(self, itemID, amount): self.itemID = itemID self.amount = amount @classmethod def fromCargo(cls, cargo): if cargo is None: return None info = cls( itemID=cargo.itemID, amount=cargo.amount) return info def toCargo(self): item = Market.getInstance().getItem(self.itemID) cargo = Cargo(item) cargo.amount = self.amount return cargo def __repr__(self): return makeReprStr(self, ['itemID', 'amount']) def activeStateLimit(itemIdentity): item = Market.getInstance().getItem(itemIdentity) if { 'moduleBonusAssaultDamageControl', 'moduleBonusIndustrialInvulnerability', 'microJumpDrive', 'microJumpPortalDrive', 'emergencyHullEnergizer', 'cynosuralGeneration', 'jumpPortalGeneration', 'jumpPortalGenerationBO', 'cloneJumpAccepting', 'cloakingWarpSafe', 'cloakingPrototype', 'cloaking', 'massEntanglerEffect5', 'electronicAttributeModifyOnline', 'targetPassively', 'cargoScan', 'shipScan', 'surveyScan', 'targetSpectrumBreakerBonus', 'interdictionNullifierBonus', 'warpCoreStabilizerActive', 'industrialItemCompression' }.intersection(item.effects): return FittingModuleState.ONLINE return FittingModuleState.ACTIVE def droneStackLimit(fit, itemIdentity): item = Market.getInstance().getItem(itemIdentity) hardLimit = max(5, fit.extraAttributes["maxActiveDrones"]) releaseLimit = fit.getReleaseLimitForDrone(item) limit = min(hardLimit, releaseLimit if releaseLimit > 0 else math.inf) return limit def restoreCheckedStates(fit, stateInfo, ignoreModPoss=()): if stateInfo is None: return changedMods, changedProjMods, changedProjDrones = stateInfo for pos, state in changedMods.items(): if pos in ignoreModPoss: continue fit.modules[pos].state = state for pos, state in changedProjMods.items(): fit.projectedModules[pos].state = state for pos, amountActive in changedProjDrones.items(): fit.projectedDrones[pos].amountActive = amountActive def restoreRemovedDummies(fit, dummyInfo): if dummyInfo is None: return # Need this to properly undo the case when removal of subsystems removes dummy slots for position in sorted(dummyInfo): slot = dummyInfo[position] fit.modules.insert(position, Module.buildEmpty(slot)) def getSimilarModPositions(mods, mainMod): sMkt = Market.getInstance() mainGroupID = getattr(sMkt.getGroupByItem(mainMod.item), 'ID', None) mainMktGroupID = getattr(sMkt.getMarketGroupByItem(mainMod.item), 'ID', None) mainEffects = set(getattr(mainMod.item, 'effects', ())) positions = [] for position, mod in enumerate(mods): if mod.isEmpty: continue # Always include selected module itself if mod is mainMod: positions.append(position) continue if mod.itemID is None: continue # Modules which have the same item ID if mod.itemID == mainMod.itemID: positions.append(position) continue # And modules from the same group and market group too modGroupID = getattr(sMkt.getGroupByItem(mod.item), 'ID', None) modMktGroupID = getattr(sMkt.getMarketGroupByItem(mod.item), 'ID', None) modEffects = set(getattr(mod.item, 'effects', ())) if ( modGroupID is not None and modGroupID == mainGroupID and modMktGroupID is not None and modMktGroupID == mainMktGroupID and modEffects == mainEffects ): positions.append(position) continue return positions def getSimilarFighters(fighters, mainFighter): sMkt = Market.getInstance() mainGroupID = getattr(sMkt.getGroupByItem(mainFighter.item), 'ID', None) mainAbilityIDs = set(a.effectID for a in mainFighter.abilities) similarFighters = [] for fighter in fighters: # Always include selected fighter itself if fighter is mainFighter: similarFighters.append(fighter) continue if fighter.itemID is None: continue # Fighters which have the same item ID if fighter.itemID == mainFighter.itemID: similarFighters.append(fighter) continue # And fighters from the same group and with the same abilities too fighterGroupID = getattr(sMkt.getGroupByItem(fighter.item), 'ID', None) fighterAbilityIDs = set(a.effectID for a in fighter.abilities) if ( fighterGroupID is not None and fighterGroupID == mainGroupID and len(fighterAbilityIDs) > 0 and fighterAbilityIDs == mainAbilityIDs ): similarFighters.append(fighter) continue return similarFighters ================================================ FILE: gui/globalEvents.py ================================================ # noinspection PyPackageRequirements import wx.lib.newevent FitRenamed, FIT_RENAMED = wx.lib.newevent.NewEvent() FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() FitRemoved, FIT_REMOVED = wx.lib.newevent.NewEvent() FitNotesChanged, FIT_NOTES_CHANGED = wx.lib.newevent.NewEvent() CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent() CharChanged, CHAR_CHANGED = wx.lib.newevent.NewEvent() GraphOptionChanged, GRAPH_OPTION_CHANGED = wx.lib.newevent.NewEvent() TargetProfileRenamed, TARGET_PROFILE_RENAMED = wx.lib.newevent.NewEvent() TargetProfileChanged, TARGET_PROFILE_CHANGED = wx.lib.newevent.NewEvent() TargetProfileRemoved, TARGET_PROFILE_REMOVED = wx.lib.newevent.NewEvent() # For events when item is actually replaced under the hood, # but from user's perspective it's supposed to change/mutate ItemChangedInplace, ITEM_CHANGED_INPLACE = wx.lib.newevent.NewEvent() EffectiveHpToggled, EFFECTIVE_HP_TOGGLED = wx.lib.newevent.NewEvent() SsoLoggingIn, EVT_SSO_LOGGING_IN = wx.lib.newevent.NewEvent() SsoLogin, EVT_SSO_LOGIN = wx.lib.newevent.NewEvent() SsoLogout, EVT_SSO_LOGOUT = wx.lib.newevent.NewEvent() ================================================ FILE: gui/itemStats.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import config import gui.mainFrame from eos.saveddata.drone import Drone from eos.saveddata.module import Module from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from gui.builtinItemStatsViews.itemAffectedBy import ItemAffectedBy from gui.builtinItemStatsViews.itemAttributes import ItemParams from gui.builtinItemStatsViews.itemCompare import ItemCompare from gui.builtinItemStatsViews.itemDependants import ItemDependents from gui.builtinItemStatsViews.itemDescription import ItemDescription from gui.builtinItemStatsViews.itemEffects import ItemEffects from gui.builtinItemStatsViews.itemMutator import ItemMutatorPanel from gui.builtinItemStatsViews.itemProperties import ItemProperties from gui.builtinItemStatsViews.itemRequirements import ItemRequirements from gui.builtinItemStatsViews.itemTraits import ItemTraits from service.market import Market _t = wx.GetTranslation class ItemStatsFrame(AuxiliaryFrame): counter = 0 def __init__( self, victim, fullContext=None, pos=wx.DefaultPosition, size=wx.DefaultSize, maximized=False ): super().__init__( parent=gui.mainFrame.MainFrame.getInstance(), id=wx.ID_ANY, title=_t("Item stats"), pos=pos, size=size, resizeable=True) empty = getattr(victim, "isEmpty", False) if empty: self.Close() return srcContext = fullContext[0] try: itmContext = fullContext[1] except IndexError: itmContext = None item = getattr(victim, "item", None) if srcContext.lower() not in ( "projectedcharge", "fittingcharge" ) else getattr(victim, "charge", None) if item is None: sMkt = Market.getInstance() item = sMkt.getItem(victim.ID) victim = None self.context = itmContext if item.iconID is not None: itemImg = BitmapLoader.getBitmap(item.iconID, "icons") if itemImg is not None: self.SetIcon(wx.Icon(itemImg)) self.SetTitle(_t("{context}Stats: {name}{debug_info}").format( context = "{} ".format(itmContext) if itmContext is not None else "", name = item.name, debug_info = " ({item_id})".format(item_id = item.ID) if config.debug else "")) self.SetMinSize((300, 200)) # GTK has huge tab widgets, give it a bit more room if "wxGTK" in wx.PlatformInfo: self.SetSize((640, 600)) else: self.SetSize((550, 500)) # self.SetMaxSize((500, -1)) self.mainSizer = wx.BoxSizer(wx.VERTICAL) self.container = ItemStatsContainer(self, victim, item, itmContext) self.mainSizer.Add(self.container, 1, wx.EXPAND) self.SetSizer(self.mainSizer) self.parentWnd = gui.mainFrame.MainFrame.getInstance() dlgsize = self.GetSize() psize = self.parentWnd.GetSize() ppos = self.parentWnd.GetPosition() ItemStatsFrame.counter += 1 self.dlgOrder = ItemStatsFrame.counter counter = ItemStatsFrame.counter dlgStep = 30 if counter * dlgStep > ppos.x + psize.width - dlgsize.x or counter * dlgStep > ppos.y + psize.height - dlgsize.y: ItemStatsFrame.counter = 1 dlgx = ppos.x + counter * dlgStep dlgy = ppos.y + counter * dlgStep if pos == wx.DefaultPosition: self.SetPosition((dlgx, dlgy)) else: self.SetPosition(pos) if maximized: self.Maximize(True) else: if size != wx.DefaultSize: self.SetSize(size) self.parentWnd.RegisterStatsWindow(self) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Bind(wx.EVT_ACTIVATE, self.OnActivate) def OnActivate(self, event): self.parentWnd.SetActiveStatsWindow(self) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def OnClose(self, event): self.container.OnWindowClose() if self.dlgOrder == ItemStatsFrame.counter: ItemStatsFrame.counter -= 1 self.parentWnd.UnregisterStatsWindow(self) event.Skip() class ItemStatsContainer(wx.Panel): def __init__(self, parent, stuff, item, context=None): wx.Panel.__init__(self, parent) sMkt = Market.getInstance() mainSizer = wx.BoxSizer(wx.VERTICAL) self.nbContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) mainSizer.Add(self.nbContainer, 1, wx.EXPAND | wx.ALL, 2) if item.traits is not None: self.traits = ItemTraits(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.traits, _t("Traits")) if isinstance(stuff, (Module, Drone)) and stuff.isMutated: self.mutator = ItemMutatorPanel(self.nbContainer, stuff) self.nbContainer.AddPage(self.mutator, _t("Mutations")) if item.description: self.desc = ItemDescription(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.desc, _t("Description")) self.params = ItemParams(self.nbContainer, stuff, item, context) self.nbContainer.AddPage(self.params, _t("Attributes")) items = sMkt.getVariationsByItems([item]) if len(items) > 1: self.compare = ItemCompare(self.nbContainer, stuff, item, items, context) self.nbContainer.AddPage(self.compare, _t("Compare")) self.reqs = ItemRequirements(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.reqs, _t("Requirements")) if context == "Skill": self.dependents = ItemDependents(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.dependents, _t("Dependents")) self.effects = ItemEffects(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.effects, _t("Effects")) if stuff is not None: self.affectedby = ItemAffectedBy(self.nbContainer, stuff, item) self.nbContainer.AddPage(self.affectedby, _t("Affected by")) if config.debug: self.properties = ItemProperties(self.nbContainer, stuff, item, context) self.nbContainer.AddPage(self.properties, _t("Properties")) self.nbContainer.Bind(wx.EVT_LEFT_DOWN, self.mouseHit) self.SetSizer(mainSizer) self.Layout() def __del__(self): pass def mouseHit(self, event): tab, _ = self.nbContainer.HitTest(event.Position) if tab != -1: self.nbContainer.SetSelection(tab) def OnWindowClose(self): mutaPanel = getattr(self, 'mutator', None) if mutaPanel is not None: mutaPanel.OnWindowClose() self.params.OnWindowClose() ================================================ FILE: gui/mainFrame.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import datetime import os.path import threading import time import webbrowser from codecs import open from time import gmtime, strftime # noinspection PyPackageRequirements import wx import wx.adv from logbook import Logger # noinspection PyPackageRequirements from wx.lib.inspection import InspectionTool import config import gui.fitCommands as cmd import gui.globalEvents as GE from eos.config import gamedata_date, gamedata_version from eos.modifiedAttributeDict import ModifiedAttributeDict from graphs import GraphFrame from gui.additionsPane import AdditionsPane from gui.bitmap_loader import BitmapLoader from gui.builtinMarketBrowser.events import ItemSelected from gui.builtinShipBrowser.events import FitSelected, ImportSelected, Stage3Selected # noinspection PyUnresolvedReferences from gui.builtinViews import emptyView, entityEditor, fittingView, implantEditor # noqa: F401 from gui.characterEditor import CharacterEditor from gui.characterSelection import CharacterSelection from gui.chrome_tabs import ChromeNotebook from gui.copySelectDialog import CopySelectDialog from gui.devTools import DevTools from gui.esiFittings import EveFittings, ExportToEve, SsoCharacterMgmt from gui.mainMenuBar import MainMenuBar from gui.marketBrowser import MarketBrowser from gui.multiSwitch import MultiSwitch from gui.patternEditor import DmgPatternEditor from gui.preferenceDialog import PreferenceDialog from gui.setEditor import ImplantSetEditor from gui.shipBrowser import ShipBrowser from gui.statsPane import StatsPane from gui.targetProfileEditor import TargetProfileEditor from gui.updateDialog import UpdateDialog from gui.utils.clipboard import fromClipboard from gui.utils.progressHelper import ProgressHelper from service.character import Character from service.esi import Esi from service.fit import Fit from service.port import Port from service.price import Price from service.settings import HTMLExportSettings, SettingsProvider from service.update import Update _t = wx.GetTranslation pyfalog = Logger(__name__) disableOverrideEditor = False try: from gui.propertyEditor import AttributeEditor except ImportError as e: AttributeEditor = None pyfalog.warning("Error loading Attribute Editor: %s.\nAccess to Attribute Editor is disabled." % e.message) disableOverrideEditor = True pyfalog.debug("Done loading mainframe imports") # dummy panel(no paint no erasebk) class PFPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnBkErase) def OnPaint(self, event): event.Skip() def OnBkErase(self, event): pass class OpenFitsThread(threading.Thread): def __init__(self, fits, callback): threading.Thread.__init__(self) self.name = "LoadingOpenFits" self.mainFrame = MainFrame.getInstance() self.callback = callback self.fits = fits self.running = True self.start() def run(self): # `startup` tells FitSpawner that we are loading fits are startup, and # has 3 values: # False = Set as default in FitSpawner itself, never set here # 1 = Create new fit page, but do not calculate page # 2 = Create new page and calculate # We use 1 for all fits except the last one where we use 2 so that we # have correct calculations displayed at startup for fitID in self.fits[:-1]: if self.running: wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID, startup=1)) if self.running: wx.PostEvent(self.mainFrame, FitSelected(fitID=self.fits[-1], startup=2)) wx.CallAfter(self.callback) def stop(self): self.running = False class MainFrame(wx.Frame): __instance = None @classmethod def getInstance(cls): return cls.__instance if cls.__instance is not None else MainFrame() def __init__(self, title="pyfa"): pyfalog.debug("Initialize MainFrame") self.title = title super().__init__(None, wx.ID_ANY, self.title) self.supress_left_up = False MainFrame.__instance = self # Load stored settings (width/height/maximized..) self.LoadMainFrameAttribs() self.disableOverrideEditor = disableOverrideEditor # Fix for msw (have the frame background color match panel color if 'wxMSW' in wx.PlatformInfo: self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) # Load and set the icon for pyfa main window i = wx.Icon(BitmapLoader.getBitmap("pyfa", "gui")) self.SetIcon(i) # Create the layout and windows mainSizer = wx.BoxSizer(wx.HORIZONTAL) self.browser_fitting_split = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE) self.fitting_additions_split = wx.SplitterWindow(self.browser_fitting_split, style=wx.SP_LIVE_UPDATE) mainSizer.Add(self.browser_fitting_split, 1, wx.EXPAND | wx.LEFT, 2) self.fitMultiSwitch = MultiSwitch(self.fitting_additions_split) self.additionsPane = AdditionsPane(self.fitting_additions_split, self) self.notebookBrowsers = ChromeNotebook(self.browser_fitting_split, False) marketImg = BitmapLoader.getImage("market_small", "gui") shipBrowserImg = BitmapLoader.getImage("ship_small", "gui") self.marketBrowser = MarketBrowser(self.notebookBrowsers) self.notebookBrowsers.AddPage(self.marketBrowser, _t("Market"), image=marketImg, closeable=False) self.marketBrowser.splitter.SetSashPosition(self.marketHeight) self.shipBrowser = ShipBrowser(self.notebookBrowsers) self.notebookBrowsers.AddPage(self.shipBrowser, _t("Fittings"), image=shipBrowserImg, closeable=False) self.notebookBrowsers.SetSelection(1) self.browser_fitting_split.SplitVertically(self.notebookBrowsers, self.fitting_additions_split) self.browser_fitting_split.SetMinimumPaneSize(204) self.browser_fitting_split.SetSashPosition(self.browserWidth) self.fitting_additions_split.SplitHorizontally(self.fitMultiSwitch, self.additionsPane, -200) self.fitting_additions_split.SetMinimumPaneSize(200) self.fitting_additions_split.SetSashPosition(self.fittingHeight) self.fitting_additions_split.SetSashGravity(1.0) cstatsSizer = wx.BoxSizer(wx.VERTICAL) self.charSelection = CharacterSelection(self) cstatsSizer.Add(self.charSelection, 0, wx.EXPAND) # @todo pheonix: fix all stats stuff self.statsPane = StatsPane(self) cstatsSizer.Add(self.statsPane, 0, wx.EXPAND) mainSizer.Add(cstatsSizer, 0, wx.EXPAND) self.SetSizer(mainSizer) # Add menu self.addPageId = wx.NewId() self.closePageId = wx.NewId() self.closeAllPagesId = wx.NewId() self.hiddenGraphsId = wx.NewId() self.widgetInspectMenuID = wx.NewId() self.SetMenuBar(MainMenuBar(self)) self.registerMenu() # Internal vars to keep track of other windows self.statsWnds = [] self.activeStatsWnd = None self.Bind(wx.EVT_CLOSE, self.OnClose) # Show ourselves self.Show() self.LoadPreviousOpenFits() # Check for updates self.sUpdate = Update.getInstance() self.sUpdate.CheckUpdate(self.ShowUpdateBox) self.Bind(GE.EVT_SSO_LOGIN, self.onSSOLogin) @property def command(self) -> wx.CommandProcessor: return Fit.getCommandProcessor(self.getActiveFit()) def getCommandForFit(self, fitID) -> wx.CommandProcessor: return Fit.getCommandProcessor(fitID) def ShowUpdateBox(self, release, version): with UpdateDialog(self, release, version) as dlg: dlg.ShowModal() def LoadPreviousOpenFits(self): sFit = Fit.getInstance() self.prevOpenFits = SettingsProvider.getInstance().getSettings("pyfaPrevOpenFits", {"enabled": False, "pyfaOpenFits": []}) fits = self.prevOpenFits['pyfaOpenFits'] # Remove any fits that cause exception when fetching (non-existent fits) for id in fits[:]: try: fit = sFit.getFit(id, basic=True) if fit is None: fits.remove(id) except (KeyboardInterrupt, SystemExit): raise except: fits.remove(id) if not self.prevOpenFits['enabled'] or len(fits) == 0: # add blank page if there are no fits to be loaded self.fitMultiSwitch.AddPage() return self.waitDialog = wx.BusyInfo(_t("Loading previous fits..."), parent=self) OpenFitsThread(fits, self.closeWaitDialog) def _getDisplayData(self): displayData = [] for i in range(wx.Display.GetCount()): display = wx.Display(i) displayData.append(display.GetClientArea()) return displayData def LoadMainFrameAttribs(self): mainFrameDefaultAttribs = { "wnd_display": 0, "wnd_x": 0, "wnd_y": 0, "wnd_width": 1000, "wnd_height": 700, "wnd_maximized": False, "browser_width": 300, "market_height": 0, "fitting_height": -200 } self.mainFrameAttribs = SettingsProvider.getInstance().getSettings( "pyfaMainWindowAttribs", mainFrameDefaultAttribs) wndDisplay = self.mainFrameAttribs["wnd_display"] displayData = self._getDisplayData() try: selectedDisplayData = displayData[wndDisplay] except IndexError: selectedDisplayData = displayData[0] dspX, dspY, dspW, dspH = selectedDisplayData if self.mainFrameAttribs["wnd_maximized"]: wndW = mainFrameDefaultAttribs["wnd_width"] wndH = mainFrameDefaultAttribs["wnd_height"] wndX = min(mainFrameDefaultAttribs["wnd_x"], dspW * 0.75) wndY = min(mainFrameDefaultAttribs["wnd_y"], dspH * 0.75) self.Maximize() else: wndW = self.mainFrameAttribs["wnd_width"] wndH = self.mainFrameAttribs["wnd_height"] wndX = min(self.mainFrameAttribs["wnd_x"], dspW * 0.75) wndY = min(self.mainFrameAttribs["wnd_y"], dspH * 0.75) self.SetPosition((dspX + wndX, dspY + wndY)) self.SetSize((wndW, wndH)) self.SetMinSize((mainFrameDefaultAttribs["wnd_width"], mainFrameDefaultAttribs["wnd_height"])) self.browserWidth = self.mainFrameAttribs["browser_width"] self.marketHeight = self.mainFrameAttribs["market_height"] self.fittingHeight = self.mainFrameAttribs["fitting_height"] def UpdateMainFrameAttribs(self): if self.IsIconized(): return wndGlobalX, wndGlobalY = self.GetPosition() displayData = self._getDisplayData() wndDisplay = 0 wndX = 0 wndY = 0 for i, (sdX, sdY, sdW, sdH) in enumerate(displayData): wndRelX = wndGlobalX - sdX wndRelY = wndGlobalY - sdY if 0 <= wndRelX < sdW and 0 <= wndRelY < sdH: wndDisplay = i wndX = wndRelX wndY = wndRelY break self.mainFrameAttribs["wnd_display"] = wndDisplay self.mainFrameAttribs["wnd_x"] = wndX self.mainFrameAttribs["wnd_y"] = wndY wndW, wndH = self.GetSize() self.mainFrameAttribs["wnd_width"] = wndW self.mainFrameAttribs["wnd_height"] = wndH self.mainFrameAttribs["wnd_maximized"] = self.IsMaximized() self.mainFrameAttribs["browser_width"] = self.notebookBrowsers.GetSize()[0] self.mainFrameAttribs["market_height"] = self.marketBrowser.marketView.GetSize()[1] self.mainFrameAttribs["fitting_height"] = self.fitting_additions_split.GetSashPosition() def SetActiveStatsWindow(self, wnd): self.activeStatsWnd = wnd def GetActiveStatsWindow(self): if self.activeStatsWnd in self.statsWnds: return self.activeStatsWnd if len(self.statsWnds) > 0: return self.statsWnds[len(self.statsWnds) - 1] else: return None def RegisterStatsWindow(self, wnd): self.statsWnds.append(wnd) def UnregisterStatsWindow(self, wnd): self.statsWnds.remove(wnd) def getActiveFit(self): p = self.fitMultiSwitch.GetSelectedPage() m = getattr(p, "getActiveFit", None) return m() if m is not None else None def getActiveView(self): self.fitMultiSwitch.GetSelectedPage() def CloseCurrentPage(self, evt): ms = self.fitMultiSwitch page = ms.GetSelection() if page is not None: ms.DeletePage(page) def CloseAllPages(self, evt): ms = self.fitMultiSwitch for _ in range(ms.GetPageCount()): ms.DeletePage(0) def OnClose(self, event): self.UpdateMainFrameAttribs() # save open fits self.prevOpenFits['pyfaOpenFits'] = [] # clear old list for page in self.fitMultiSwitch._pages: m = getattr(page, "getActiveFit", None) if m is not None: self.prevOpenFits['pyfaOpenFits'].append(m()) # save all teh settingz SettingsProvider.getInstance().saveAll() event.Skip() def ExitApp(self, event): self.Close() event.Skip() def ShowAboutBox(self, evt): info = wx.adv.AboutDialogInfo() info.Name = "pyfa" time = datetime.datetime.fromtimestamp(int(gamedata_date)).strftime('%Y-%m-%d %H:%M:%S') info.Version = config.getVersion() + '\nEVE Data Version: {} ({})'.format(gamedata_version, time) # gui.aboutData.versionString # # try: # import matplotlib # matplotlib_version = matplotlib.__version__ # except: # matplotlib_version = None # # info.Description = wordwrap(gui.aboutData.description + _("\n\nDevelopers:\n\t") + # "\n\t".join(gui.aboutData.developers) + # "\n\nAdditional credits:\n\t" + # "\n\t".join(gui.aboutData.credits) + # "\n\nLicenses:\n\t" + # "\n\t".join(gui.aboutData.licenses) + # "\n\nEVE Data: \t" + gamedata_version + # "\nPython: \t\t" + '{}.{}.{}'.format(v.major, v.minor, v.micro) + # "\nwxPython: \t" + wx.__version__ + # "\nSQLAlchemy: \t" + sqlalchemy.__version__ + # "\nmatplotlib: \t {}".format(matplotlib_version if matplotlib_version else "Not Installed"), # 500, wx.ClientDC(self)) # if "__WXGTK__" in wx.PlatformInfo: # forumUrl = "http://forums.eveonline.com/default.aspx?g=posts&t=466425" # else: # forumUrl = "http://forums.eveonline.com/default.aspx?g=posts&t=466425" # info.WebSite = (forumUrl, "pyfa thread at EVE Online forum") wx.adv.AboutBox(info) def OnShowGraphFrame(self, event): GraphFrame.openOne(self) def OnShowGraphFrameHidden(self, event): GraphFrame.openOne(self, includeHidden=True) def OnShowDevTools(self, event): DevTools.openOne(parent=self) def OnShowCharacterEditor(self, event): CharacterEditor.openOne(parent=self) def OnShowAttrEditor(self, event): AttributeEditor.openOne(parent=self) def OnShowTargetProfileEditor(self, event): TargetProfileEditor.openOne(parent=self) def OnShowDamagePatternEditor(self, event): DmgPatternEditor.openOne(parent=self) def OnShowImplantSetEditor(self, event): ImplantSetEditor.openOne(parent=self) def OnShowExportDialog(self, event): """ Export active fit """ sFit = Fit.getInstance() fit = sFit.getFit(self.getActiveFit()) defaultFile = "%s - %s.xml" % (fit.ship.item.name, fit.name) if fit else None with wx.FileDialog( self, _t("Save Fitting As..."), wildcard=_t("EVE XML fitting files") + " (*.xml)|*.xml", style=wx.FD_SAVE, defaultFile=defaultFile ) as dlg: if dlg.ShowModal() == wx.ID_OK: self.supress_left_up = True format_ = dlg.GetFilterIndex() path = dlg.GetPath() if format_ == 0: output = Port.exportXml([fit], None) if '.' not in os.path.basename(path): path += ".xml" with open(path, "w", encoding="utf-8") as openfile: openfile.write(output) openfile.close() else: pyfalog.warning("oops, invalid fit format %d" % format_) return def OnShowPreferenceDialog(self, event): with PreferenceDialog(self) as dlg: dlg.ShowModal() @staticmethod def goWiki(event): webbrowser.open('https://github.com/pyfa-org/Pyfa/wiki') @staticmethod def goForums(event): webbrowser.open('https://forums.eveonline.com/t/27156') def registerMenu(self): menuBar = self.GetMenuBar() # Quit self.Bind(wx.EVT_MENU, self.ExitApp, id=wx.ID_EXIT) # Widgets Inspector if config.debug: self.Bind(wx.EVT_MENU, self.openWXInspectTool, id=self.widgetInspectMenuID) self.Bind(wx.EVT_MENU, self.OnShowDevTools, id=menuBar.devToolsId) # About self.Bind(wx.EVT_MENU, self.ShowAboutBox, id=wx.ID_ABOUT) # Char editor self.Bind(wx.EVT_MENU, self.OnShowCharacterEditor, id=menuBar.characterEditorId) # Damage pattern editor self.Bind(wx.EVT_MENU, self.OnShowDamagePatternEditor, id=menuBar.damagePatternEditorId) # Target Profile editor self.Bind(wx.EVT_MENU, self.OnShowTargetProfileEditor, id=menuBar.targetProfileEditorId) # Implant Set editor self.Bind(wx.EVT_MENU, self.OnShowImplantSetEditor, id=menuBar.implantSetEditorId) # Import dialog self.Bind(wx.EVT_MENU, self.fileImportDialog, id=wx.ID_OPEN) # Export dialog self.Bind(wx.EVT_MENU, self.OnShowExportDialog, id=wx.ID_SAVEAS) # Import from Clipboard self.Bind(wx.EVT_MENU, self.importFromClipboard, id=wx.ID_PASTE) # Backup fits self.Bind(wx.EVT_MENU, self.backupToXml, id=menuBar.backupFitsId) # Export skills needed self.Bind(wx.EVT_MENU, self.exportSkillsNeeded, id=menuBar.exportSkillsNeededId) # Import character self.Bind(wx.EVT_MENU, self.importCharacter, id=menuBar.importCharacterId) # Export HTML self.Bind(wx.EVT_MENU, self.exportHtml, id=menuBar.exportHtmlId) # Preference dialog self.Bind(wx.EVT_MENU, self.OnShowPreferenceDialog, id=wx.ID_PREFERENCES) # User guide self.Bind(wx.EVT_MENU, self.goWiki, id=menuBar.wikiId) self.Bind(wx.EVT_MENU, lambda evt: MainFrame.getInstance().command.Undo(), id=wx.ID_UNDO) self.Bind(wx.EVT_MENU, lambda evt: MainFrame.getInstance().command.Redo(), id=wx.ID_REDO) # EVE Forums self.Bind(wx.EVT_MENU, self.goForums, id=menuBar.forumId) # Save current character self.Bind(wx.EVT_MENU, self.saveChar, id=menuBar.saveCharId) # Save current character as another character self.Bind(wx.EVT_MENU, self.saveCharAs, id=menuBar.saveCharAsId) # Save current character self.Bind(wx.EVT_MENU, self.revertChar, id=menuBar.revertCharId) # Optimize fit price self.Bind(wx.EVT_MENU, self.optimizeFitPrice, id=menuBar.optimizeFitPrice) # Browse fittings self.Bind(wx.EVT_MENU, self.eveFittings, id=menuBar.eveFittingsId) # Export to EVE self.Bind(wx.EVT_MENU, self.exportToEve, id=menuBar.exportToEveId) # Handle SSO event (login/logout/manage characters, depending on mode and current state) self.Bind(wx.EVT_MENU, self.ssoHandler, id=menuBar.ssoLoginId) # Open attribute editor self.Bind(wx.EVT_MENU, self.OnShowAttrEditor, id=menuBar.attrEditorId) # Toggle Overrides self.Bind(wx.EVT_MENU, self.toggleOverrides, id=menuBar.toggleOverridesId) # Clipboard exports self.Bind(wx.EVT_MENU, self.exportToClipboard, id=wx.ID_COPY) # Fitting Restrictions self.Bind(wx.EVT_MENU, self.toggleIgnoreRestriction, id=menuBar.toggleIgnoreRestrictionID) # Graphs self.Bind(wx.EVT_MENU, self.OnShowGraphFrame, id=menuBar.graphFrameId) self.Bind(wx.EVT_MENU, self.OnShowGraphFrameHidden, id=self.hiddenGraphsId) toggleSearchBoxId = wx.NewId() toggleShipMarketId = wx.NewId() ctabnext = wx.NewId() ctabprev = wx.NewId() # Close Page self.Bind(wx.EVT_MENU, self.CloseCurrentPage, id=self.closePageId) self.Bind(wx.EVT_MENU, self.CloseAllPages, id=self.closeAllPagesId) self.Bind(wx.EVT_MENU, self.HAddPage, id=self.addPageId) self.Bind(wx.EVT_MENU, self.toggleSearchBox, id=toggleSearchBoxId) self.Bind(wx.EVT_MENU, self.toggleShipMarket, id=toggleShipMarketId) self.Bind(wx.EVT_MENU, self.CTabNext, id=ctabnext) self.Bind(wx.EVT_MENU, self.CTabPrev, id=ctabprev) actb = [(wx.ACCEL_CTRL, ord('T'), self.addPageId), (wx.ACCEL_CMD, ord('T'), self.addPageId), (wx.ACCEL_CTRL, ord('F'), toggleSearchBoxId), (wx.ACCEL_CMD, ord('F'), toggleSearchBoxId), (wx.ACCEL_CTRL, ord("W"), self.closePageId), (wx.ACCEL_CTRL, wx.WXK_F4, self.closePageId), (wx.ACCEL_CMD, ord("W"), self.closePageId), (wx.ACCEL_CTRL | wx.ACCEL_ALT, ord("G"), self.hiddenGraphsId), (wx.ACCEL_CMD | wx.ACCEL_ALT, ord("G"), self.hiddenGraphsId), (wx.ACCEL_CTRL | wx.ACCEL_ALT, ord("W"), self.closeAllPagesId), (wx.ACCEL_CTRL | wx.ACCEL_ALT, wx.WXK_F4, self.closeAllPagesId), (wx.ACCEL_CMD | wx.ACCEL_ALT, ord("W"), self.closeAllPagesId), (wx.ACCEL_CTRL, ord(" "), toggleShipMarketId), (wx.ACCEL_CMD, ord(" "), toggleShipMarketId), # Ctrl+(Shift+)Tab (wx.ACCEL_CTRL, wx.WXK_TAB, ctabnext), (wx.ACCEL_CTRL | wx.ACCEL_SHIFT, wx.WXK_TAB, ctabprev), (wx.ACCEL_CMD, wx.WXK_TAB, ctabnext), (wx.ACCEL_CMD | wx.ACCEL_SHIFT, wx.WXK_TAB, ctabprev), # Ctrl+Page(Up/Down) (wx.ACCEL_CTRL, wx.WXK_PAGEDOWN, ctabnext), (wx.ACCEL_CTRL, wx.WXK_PAGEUP, ctabprev), (wx.ACCEL_CMD, wx.WXK_PAGEDOWN, ctabnext), (wx.ACCEL_CMD, wx.WXK_PAGEUP, ctabprev), (wx.ACCEL_CMD | wx.ACCEL_SHIFT, ord("Z"), wx.ID_REDO) ] # Ctrl/Cmd+# for addition pane selection self.additionsSelect = [] for i in range(0, self.additionsPane.notebook.GetPageCount()): self.additionsSelect.append(wx.NewId()) self.Bind(wx.EVT_MENU, self.AdditionsTabSelect, id=self.additionsSelect[i]) actb.append((wx.ACCEL_CMD, i + 49, self.additionsSelect[i])) actb.append((wx.ACCEL_CTRL, i + 49, self.additionsSelect[i])) # Alt+1-9 for market item selection self.itemSelect = [] for i in range(0, 9): self.itemSelect.append(wx.NewId()) self.Bind(wx.EVT_MENU, self.ItemSelect, id=self.itemSelect[i]) actb.append((wx.ACCEL_ALT, i + 49, self.itemSelect[i])) atable = wx.AcceleratorTable(actb) self.SetAcceleratorTable(atable) def toggleIgnoreRestriction(self, event): sFit = Fit.getInstance() fitID = self.getActiveFit() fit = sFit.getFit(fitID) if not fit.ignoreRestrictions: with wx.MessageDialog( self, _t("Are you sure you wish to ignore fitting restrictions for the " "current fit? This could lead to wildly inaccurate results and possible errors."), _t("Confirm"), wx.YES_NO | wx.ICON_QUESTION ) as dlg: result = dlg.ShowModal() == wx.ID_YES else: with wx.MessageDialog( self, _t("Re-enabling fitting restrictions for this fit will also remove any illegal items " "from the fit. Do you want to continue?"), _t("Confirm"), wx.YES_NO | wx.ICON_QUESTION ) as dlg: result = dlg.ShowModal() == wx.ID_YES if result: self.command.Submit(cmd.GuiToggleFittingRestrictionsCommand(fitID=fitID)) def eveFittings(self, event): EveFittings.openOne(parent=self) def onSSOLogin(self, event): menu = self.GetMenuBar() menu.Enable(menu.eveFittingsId, True) menu.Enable(menu.exportToEveId, True) def updateEsiMenus(self, type): menu = self.GetMenuBar() sEsi = Esi.getInstance() menu.SetLabel(menu.ssoLoginId, _t("Manage Characters")) enable = len(sEsi.getSsoCharacters()) == 0 menu.Enable(menu.eveFittingsId, not enable) menu.Enable(menu.exportToEveId, not enable) def ssoHandler(self, event): SsoCharacterMgmt.openOne(parent=self) def exportToEve(self, event): ExportToEve.openOne(parent=self) def toggleOverrides(self, event): ModifiedAttributeDict.overrides_enabled = not ModifiedAttributeDict.overrides_enabled changedFitIDs = Fit.getInstance().processOverrideToggle() wx.PostEvent(self, GE.FitChanged(fitIDs=changedFitIDs)) menu = self.GetMenuBar() menu.SetLabel(menu.toggleOverridesId, _t("&Turn Overrides Off") if ModifiedAttributeDict.overrides_enabled else _t("&Turn Overrides On")) def saveChar(self, event): sChr = Character.getInstance() charID = self.charSelection.getActiveCharacter() sChr.saveCharacter(charID) wx.PostEvent(self, GE.CharListUpdated()) def saveCharAs(self, event): charID = self.charSelection.getActiveCharacter() CharacterEditor.SaveCharacterAs(self, charID) wx.PostEvent(self, GE.CharListUpdated()) def revertChar(self, event): sChr = Character.getInstance() charID = self.charSelection.getActiveCharacter() sChr.revertCharacter(charID) wx.PostEvent(self, GE.CharListUpdated()) def optimizeFitPrice(self, event): fitID = self.getActiveFit() sFit = Fit.getInstance() fit = sFit.getFit(fitID) if fit: def updateFitCb(replacementsCheaper): del self.waitDialog del self.disablerAll rebaseMap = {k.ID: v.ID for k, v in replacementsCheaper.items()} self.command.Submit(cmd.GuiRebaseItemsCommand(fitID=fitID, rebaseMap=rebaseMap)) fitItems = {i for i in Fit.fitItemIter(fit, forceFitImplants=True) if i is not fit.ship.item} self.disablerAll = wx.WindowDisabler() self.waitDialog = wx.BusyInfo(_t("Please Wait..."), parent=self) Price.getInstance().findCheaperReplacements(fitItems, updateFitCb, fetchTimeout=10) def AdditionsTabSelect(self, event): selTab = self.additionsSelect.index(event.GetId()) if selTab <= self.additionsPane.notebook.GetPageCount(): self.additionsPane.notebook.SetSelection(selTab) def ItemSelect(self, event): selItem = self.itemSelect.index(event.GetId()) activeListing = getattr(self.marketBrowser.itemView, 'active', None) if activeListing and selItem < len(activeListing): wx.PostEvent(self, ItemSelected(itemID=self.marketBrowser.itemView.active[selItem].ID, allowBatch=False)) def CTabNext(self, event): self.fitMultiSwitch.NextPage() def CTabPrev(self, event): self.fitMultiSwitch.PrevPage() def HAddPage(self, event): self.fitMultiSwitch.AddPage() def toggleShipMarket(self, event): sel = self.notebookBrowsers.GetSelection() self.notebookBrowsers.SetSelection(0 if sel == 1 else 1) def toggleSearchBox(self, event): sel = self.notebookBrowsers.GetSelection() if sel == 1: self.shipBrowser.navpanel.ToggleSearchBox() else: self.marketBrowser.search.Focus() def importFromClipboard(self, event): clipboard = fromClipboard() activeFit = self.getActiveFit() try: importType, importData = Port().importFitFromBuffer(clipboard, activeFit) if importType == "FittingItem": baseItem, mutaplasmidItem, mutations = importData[0] if mutaplasmidItem: if baseItem.isDrone: self.command.Submit(cmd.GuiImportLocalMutatedDroneCommand( activeFit, baseItem, mutaplasmidItem, mutations, amount=1)) else: self.command.Submit(cmd.GuiImportLocalMutatedModuleCommand( activeFit, baseItem, mutaplasmidItem, mutations)) else: self.command.Submit(cmd.GuiAddLocalModuleCommand(activeFit, baseItem.ID)) return if importType == "AdditionsDrones": if self.command.Submit(cmd.GuiImportLocalDronesCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])): self.additionsPane.select("Drones") return if importType == "AdditionsFighters": if self.command.Submit(cmd.GuiImportLocalFightersCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])): self.additionsPane.select("Fighters") return if importType == "AdditionsImplants": if self.command.Submit(cmd.GuiImportImplantsCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])): self.additionsPane.select("Implants") return if importType == "AdditionsBoosters": if self.command.Submit(cmd.GuiImportBoostersCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])): self.additionsPane.select("Boosters") return if importType == "AdditionsCargo": if self.command.Submit(cmd.GuiImportCargosCommand(activeFit, [(i.ID, a, m) for i, a, m in importData[0]])): self.additionsPane.select("Cargo") return except (KeyboardInterrupt, SystemExit): raise except: pyfalog.error("Attempt to import failed:\n{0}", clipboard) else: self._openAfterImport(importData) def exportToClipboard(self, event): with CopySelectDialog(self) as dlg: dlg.ShowModal() def exportSkillsNeeded(self, event): """ Exports skills needed for active fit and active character """ sCharacter = Character.getInstance() with wx.FileDialog( self, _t("Export Skills Needed As..."), wildcard=("|".join([ _t("EVEMon skills training file") + " (*.emp)|*.emp", _t("EVEMon skills training XML file") + " (*.xml)|*.xml", _t("Text skills training file") + " (*.txt)|*.txt" ])), style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT, ) as dlg: if dlg.ShowModal() == wx.ID_OK: saveFmtInt = dlg.GetFilterIndex() if saveFmtInt == 0: # Per ordering of wildcards above saveFmt = "emp" elif saveFmtInt == 1: saveFmt = "xml" else: saveFmt = "txt" filePath = dlg.GetPath() if '.' not in os.path.basename(filePath): filePath += ".{0}".format(saveFmt) self.waitDialog = wx.BusyInfo(_t("Exporting skills needed..."), parent=self) sCharacter.backupSkills(filePath, saveFmt, self.getActiveFit(), self.closeWaitDialog) def fileImportDialog(self, event): """Handles importing single/multiple EVE XML / EFT cfg fit files""" with wx.FileDialog( self, _t("Open One Or More Fitting Files"), wildcard=("|".join([ _t("EVE XML fitting files") + " (*.xml)|*.xml", _t("EFT text fitting files") + " (*.cfg)|*.cfg", _t("All Files") + "|*" ])), style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE ) as dlg: if dlg.ShowModal() == wx.ID_OK: # set some arbitrary spacing to create width in window progress = ProgressHelper(message=" " * 100, callback=self._openAfterImport) call = (Port.importFitsThreaded, [dlg.GetPaths(), progress], {}) self.handleProgress( title=_t("Importing fits"), style=wx.PD_CAN_ABORT | wx.PD_SMOOTH | wx.PD_APP_MODAL | wx.PD_AUTO_HIDE, call=call, progress=progress, errMsgLbl=_t("Import Error")) def backupToXml(self, event): """ Back up all fits to EVE XML file """ defaultFile = "pyfa-fits-%s.xml" % strftime("%Y%m%d_%H%M%S", gmtime()) with wx.FileDialog( self, _t("Save Backup As..."), wildcard=_t("EVE XML fitting file") + " (*.xml)|*.xml", style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT, defaultFile=defaultFile) as fileDlg: if fileDlg.ShowModal() == wx.ID_OK: filePath = fileDlg.GetPath() if '.' not in os.path.basename(filePath): filePath += ".xml" fitAmount = Fit.getInstance().countAllFits() progress = ProgressHelper( message=_t("Backing up {} fits to: {}").format(fitAmount, filePath), maximum=fitAmount + 1) call = (Port.backupFits, [filePath, progress], {}) self.handleProgress( title=_t("Backup fits"), style=wx.PD_CAN_ABORT | wx.PD_SMOOTH | wx.PD_ELAPSED_TIME | wx.PD_APP_MODAL | wx.PD_AUTO_HIDE, call=call, progress=progress, errMsgLbl=_t("Export Error")) def exportHtml(self, event): from gui.utils.exportHtml import exportHtml sFit = Fit.getInstance() settings = HTMLExportSettings.getInstance() path = settings.getPath() if not os.path.isdir(os.path.dirname(path)): with wx.MessageDialog( self, _t("Invalid Path") + "\n\n" + _t("The following path is invalid or does not exist:") + f"\n{path}\n\n" + _t("Please verify path location pyfa's preferences."), _t("Error"), wx.OK | wx.ICON_ERROR ) as dlg: if dlg.ShowModal() == wx.ID_OK: return progress = ProgressHelper( message=_t("Generating HTML file at: {}").format(path), maximum=sFit.countAllFits() + 1) call = (exportHtml.getInstance().refreshFittingHtml, [True, progress], {}) self.handleProgress( title=_t("Backup fits"), style=wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME, call=call, progress=progress) def handleProgress(self, title, style, call, progress, errMsgLbl=None): extraArgs = {} if progress.maximum is not None: extraArgs['maximum'] = progress.maximum with wx.ProgressDialog( parent=self, title=title, message=progress.message, style=style, **extraArgs ) as dlg: func, args, kwargs = call func(*args, **kwargs) while progress.working: wx.MilliSleep(250) wx.Yield() (progress.dlgWorking, skip) = dlg.Update(progress.current, progress.message) if progress.error and errMsgLbl: with wx.MessageDialog( self, _t("The following error was generated") + f"\n\n{progress.error}\n\n" + _t("Be aware that already processed fits were not saved"), errMsgLbl, wx.OK | wx.ICON_ERROR ) as dlg: dlg.ShowModal() elif progress.callback: progress.callback(*progress.cbArgs) def _openAfterImport(self, fits): if len(fits) > 0: if len(fits) == 1: fit = fits[0] wx.PostEvent(self, FitSelected(fitID=fit.ID, from_import=True)) wx.PostEvent(self.shipBrowser, Stage3Selected(shipID=fit.shipID, back=True)) else: fits.sort(key=lambda _fit: (_fit.ship.item.name, _fit.name)) # Show 100 fits max fits = fits[:100] results = [] for fit in fits: results.append(( fit.ID, fit.name, fit.modifiedCoalesce, fit.ship.item, fit.notes )) wx.PostEvent(self.shipBrowser, ImportSelected(fits=results, back=True)) def importCharacter(self, event): """ Imports character XML file from EVE API """ with wx.FileDialog( self, _t("Open One Or More Character Files"), wildcard="|".join([ _t("EVE API XML character files") + " (*.xml)|*.xml", _t("All Files") + "|*" ]), style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE ) as dlg: if dlg.ShowModal() == wx.ID_OK: self.supress_left_up = True self.waitDialog = wx.BusyInfo(_t("Importing Character..."), parent=self) sCharacter = Character.getInstance() sCharacter.importCharacter(dlg.GetPaths(), self.importCharacterCallback) def importCharacterCallback(self): self.closeWaitDialog() wx.PostEvent(self, GE.CharListUpdated()) def closeWaitDialog(self): del self.waitDialog def openWXInspectTool(self, event): if not InspectionTool().initialized: InspectionTool().Init() # Find a widget to be selected in the tree. Use either the # one under the cursor, if any, or this frame. wnd, _ = wx.FindWindowAtPointer() if not wnd: wnd = self InspectionTool().Show(wnd, True) ================================================ FILE: gui/mainMenuBar.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx import config import graphs from service.character import Character from service.fit import Fit import gui.globalEvents as GE from gui.bitmap_loader import BitmapLoader from logbook import Logger pyfalog = Logger(__name__) _t = wx.GetTranslation class MainMenuBar(wx.MenuBar): def __init__(self, mainFrame): pyfalog.debug("Initialize MainMenuBar") self.characterEditorId = wx.NewId() self.damagePatternEditorId = wx.NewId() self.targetProfileEditorId = wx.NewId() self.implantSetEditorId = wx.NewId() self.graphFrameId = wx.NewId() self.backupFitsId = wx.NewId() self.exportSkillsNeededId = wx.NewId() self.importCharacterId = wx.NewId() self.exportHtmlId = wx.NewId() self.wikiId = wx.NewId() self.forumId = wx.NewId() self.saveCharId = wx.NewId() self.saveCharAsId = wx.NewId() self.revertCharId = wx.NewId() self.eveFittingsId = wx.NewId() self.exportToEveId = wx.NewId() self.ssoLoginId = wx.NewId() self.attrEditorId = wx.NewId() self.toggleOverridesId = wx.NewId() self.toggleIgnoreRestrictionID = wx.NewId() self.devToolsId = wx.NewId() self.optimizeFitPrice = wx.NewId() self.mainFrame = mainFrame wx.MenuBar.__init__(self) # File menu fileMenu = wx.Menu() self.Append(fileMenu, _t("&File")) fileMenu.Append(self.mainFrame.addPageId, _t("&New Tab") + "\tCTRL+T", "Open a new fitting tab") fileMenu.Append(self.mainFrame.closePageId, _t("&Close Tab") + "\tCTRL+W", "Close the current fit") fileMenu.Append(self.mainFrame.closeAllPagesId, _t("&Close All Tabs") + "\tCTRL+ALT+W", "Close all open fits") fileMenu.AppendSeparator() fileMenu.Append(self.backupFitsId, _t("&Backup All Fittings"), _t("Backup all fittings to a XML file")) fileMenu.Append(self.exportHtmlId, _t("Export All Fittings to &HTML"), _t("Export fits to HTML file (set in Preferences)")) fileMenu.AppendSeparator() fileMenu.Append(wx.ID_EXIT) # Fit menu fitMenu = wx.Menu() self.Append(fitMenu, _t("Fi&t")) fitMenu.Append(wx.ID_UNDO, _t("&Undo") + "\tCTRL+Z", _t("Undo the most recent action")) fitMenu.Append(wx.ID_REDO, _t("&Redo") + "\tCTRL+Y", _t("Redo the most recent undone action")) fitMenu.AppendSeparator() fitMenu.Append(wx.ID_COPY, _t("&To Clipboard") + "\tCTRL+C", _t("Export a fit to the clipboard")) fitMenu.Append(wx.ID_PASTE, _t("&From Clipboard") + "\tCTRL+V", _t("Import a fit from the clipboard")) fitMenu.AppendSeparator() fitMenu.Append(wx.ID_OPEN, _t("&Import Fittings") + "\tCTRL+O", _t("Import fittings into pyfa")) fitMenu.Append(wx.ID_SAVEAS, _t("&Export Fitting") + "\tCTRL+S", _t("Export fitting to another format")) fitMenu.AppendSeparator() fitMenu.Append(self.optimizeFitPrice, _t("&Optimize Fit Price") + "\tCTRL+D") graphFrameItem = wx.MenuItem(fitMenu, self.graphFrameId, _t("&Graphs") + "\tCTRL+G") graphFrameItem.SetBitmap(BitmapLoader.getBitmap("graphs_small", "gui")) fitMenu.Append(graphFrameItem) if not graphs.graphFrame_enabled: self.Enable(self.graphFrameId, False) self.ignoreRestrictionItem = fitMenu.Append(self.toggleIgnoreRestrictionID, _t("Disable Fitting Re&strictions")) fitMenu.AppendSeparator() fitMenu.Append(self.eveFittingsId, _t("&Browse ESI Fittings") + "\tCTRL+B") fitMenu.Append(self.exportToEveId, _t("E&xport to ESI") + "\tCTRL+E") self.Enable(self.eveFittingsId, True) self.Enable(self.exportToEveId, True) # Character menu characterMenu = wx.Menu() self.Append(characterMenu, _t("&Character")) characterMenu.Append(self.saveCharId, _t("&Save Character")) characterMenu.Append(self.saveCharAsId, _t("Save Character &As...")) characterMenu.Append(self.revertCharId, _t("&Revert Character")) characterMenu.AppendSeparator() characterMenu.Append(self.importCharacterId, _t("&Import Character File"), _t("Import characters into pyfa from file")) characterMenu.Append(self.exportSkillsNeededId, _t("&Export Skills Needed"), _t("Export skills needed for this fitting")) characterMenu.AppendSeparator() characterMenu.Append(self.ssoLoginId, _t("&Manage ESI Characters")) # Global Menu globalMenu = wx.Menu() if not self.mainFrame.disableOverrideEditor: attrItem = wx.MenuItem(globalMenu, self.attrEditorId, _t("Attribute &Overrides")) attrItem.SetBitmap(BitmapLoader.getBitmap("fit_rename_small", "gui")) globalMenu.Append(attrItem) globalMenu.Append(self.toggleOverridesId, _t("&Turn Overrides On")) globalMenu.AppendSeparator() self.Append(globalMenu, _t("&Global")) preferencesShortCut = "CTRL+," if 'wxMac' in wx.PlatformInfo else "CTRL+P" preferencesItem = wx.MenuItem(globalMenu, wx.ID_PREFERENCES, _t("&Preferences") + "\t" + preferencesShortCut) preferencesItem.SetBitmap(BitmapLoader.getBitmap("preferences_small", "gui")) globalMenu.Append(preferencesItem) # Editors menu editorsMenu = wx.Menu() self.Append(editorsMenu, _t("&Editors")) charEditItem = wx.MenuItem(editorsMenu, self.characterEditorId, _t("&Character Editor") + "\tCTRL+K") charEditItem.SetBitmap(BitmapLoader.getBitmap("character_small", "gui")) editorsMenu.Append(charEditItem) implantSetEditItem = wx.MenuItem(editorsMenu, self.implantSetEditorId, _t("&Implant Set Editor") + "\tCTRL+I") implantSetEditItem.SetBitmap(BitmapLoader.getBitmap("hardwire_small", "gui")) editorsMenu.Append(implantSetEditItem) damagePatternEditItem = wx.MenuItem(editorsMenu, self.damagePatternEditorId, _t("&Damage Pattern Editor")) damagePatternEditItem.SetBitmap(BitmapLoader.getBitmap("damagePattern_small", "gui")) editorsMenu.Append(damagePatternEditItem) targetProfileEditItem = wx.MenuItem(editorsMenu, self.targetProfileEditorId, _t("&Target Profile Editor")) targetProfileEditItem.SetBitmap(BitmapLoader.getBitmap("explosive_small", "gui")) editorsMenu.Append(targetProfileEditItem) # Help menu helpMenu = wx.Menu() self.Append(helpMenu, _t("&Help")) helpMenu.Append(self.wikiId, _t("&Wiki"), _t("Go to wiki on GitHub")) helpMenu.Append(self.forumId, _t("&Forums"), _t("Go to EVE Online Forum thread")) helpMenu.AppendSeparator() helpMenu.Append(wx.ID_ABOUT) if config.debug: helpMenu.Append(self.mainFrame.widgetInspectMenuID, _t("Open Wid&gets Inspect tool"), _t("Open Widgets Inspect tool")) helpMenu.Append(self.devToolsId, _t("Open &Dev Tools"), _t("Dev Tools")) self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(GE.FIT_RENAMED, self.fitRenamed) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return enable = activeFitID is not None self.Enable(wx.ID_SAVEAS, enable) self.Enable(wx.ID_COPY, enable) self.Enable(self.exportSkillsNeededId, enable) self.refreshUndo() sChar = Character.getInstance() charID = self.mainFrame.charSelection.getActiveCharacter() char = sChar.getCharacter(charID) # enable/disable character saving stuff self.Enable(self.saveCharId, not char.ro and char.isDirty) self.Enable(self.saveCharAsId, char.isDirty) self.Enable(self.revertCharId, char.isDirty) self.Enable(self.toggleIgnoreRestrictionID, enable) if activeFitID: sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) if fit.ignoreRestrictions: self.ignoreRestrictionItem.SetItemLabel(_t("Enable Fitting Re&strictions")) else: self.ignoreRestrictionItem.SetItemLabel(_t("Disable Fitting Re&strictions")) def fitRenamed(self, event): self.refreshUndo() event.Skip() def refreshUndo(self): command = self.mainFrame.command self.Enable(wx.ID_UNDO, False) self.Enable(wx.ID_REDO, False) if command.CanUndo(): self.Enable(wx.ID_UNDO, True) if command.CanRedo(): self.Enable(wx.ID_REDO, True) ================================================ FILE: gui/marketBrowser.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.builtinMarketBrowser.searchBox import SearchBox from gui.builtinMarketBrowser.itemView import ItemView from gui.builtinMarketBrowser.metaButton import MetaButton from gui.builtinMarketBrowser.marketTree import MarketTree from service.market import Market from service.settings import MarketPriceSettings from logbook import Logger pyfalog = Logger(__name__) class MarketBrowser(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) pyfalog.debug("Initialize marketBrowser") vbox = wx.BoxSizer(wx.VERTICAL) self.SetSizer(vbox) # Add a search box on top self.search = SearchBox(self) vbox.Add(self.search, 0, wx.EXPAND) self.splitter = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE) vbox.Add(self.splitter, 1, wx.EXPAND) # Grab service stuff and create child objects self.sMkt = Market.getInstance() self.settings = MarketPriceSettings.getInstance() self.__mode = 'normal' self.__normalBtnMap = {} self.marketView = MarketTree(self.splitter, self) self.itemView = ItemView(self.splitter, self) self.splitter.SplitHorizontally(self.marketView, self.itemView) self.splitter.SetMinimumPaneSize(250) # Setup our buttons for metaGroup selection # Same fix as for search box on macs, # need some pixels of extra space or everything clips and is ugly p = wx.Panel(self) box = wx.BoxSizer(wx.HORIZONTAL) p.SetSizer(box) vbox.Add(p, 0, wx.EXPAND) self.metaButtons = [] btn = None for name in list(self.sMkt.META_MAP.keys()): btn = MetaButton(p, wx.ID_ANY, name.capitalize(), style=wx.BU_EXACTFIT) setattr(self, name, btn) box.Add(btn, 1, wx.ALIGN_CENTER) btn.Bind(wx.EVT_TOGGLEBUTTON, self.toggleMetaButton) btn.metaName = name self.metaButtons.append(btn) # Make itemview to set toggles according to list contents self.itemView.setToggles() p.SetMinSize((wx.SIZE_AUTO_WIDTH, btn.GetSize()[1] + 5)) def toggleMetaButton(self, event): """Process clicks on toggle buttons""" clickedBtn = event.EventObject if wx.GetMouseState().GetModifiers() == wx.MOD_CONTROL: activeBtns = [btn for btn in self.metaButtons if btn.GetValue()] if activeBtns: clickedBtn.setUserSelection(clickedBtn.GetValue()) self.itemView.filterItemStore() else: # Do 'nothing' if we're trying to turn last active button off # Keep button in the same state clickedBtn.setUserSelection(True) else: for btn in self.metaButtons: btn.setUserSelection(btn == clickedBtn) self.itemView.filterItemStore() def jump(self, item): self.mode = 'normal' self.marketView.jump(item) setting = self.settings.get('marketMGJumpMode') itemMetaCat = self.sMkt.META_MAP_REVERSE[self.sMkt.getMetaGroupIdByItem(item)] # Enable item meta category if setting == 1: btn = getattr(self, itemMetaCat) if not btn.GetValue(): btn.setUserSelection(True) # Enable item meta category, disable others elif setting == 2: tgtBtn = getattr(self, itemMetaCat) if not tgtBtn.GetValue(): tgtBtn.setUserSelection(True) for btn in self.metaButtons: if btn is tgtBtn: continue if btn.GetValue: btn.setUserSelection(False) # Enable all meta categories elif setting == 3: for btn in self.metaButtons: if not btn.GetValue(): btn.setUserSelection(True) self.itemView.selectionMade('jump') @property def mode(self): return self.__mode @mode.setter def mode(self, newMode): oldMode = self.__mode if newMode == oldMode != 'search': return # Store meta button states when switching from normal if oldMode == 'normal': self.__normalBtnMap.clear() for btn in self.metaButtons: self.__normalBtnMap[btn] = btn.userSelected if newMode == 'search': self.marketView.UnselectAll() setting = self.settings.get('marketMGSearchMode') # We turn on all meta buttons for the duration of search/recents if setting == 1: if newMode in ('search', 'recent', 'charges'): for btn in self.metaButtons: btn.setUserSelection(True) if newMode == 'normal': for btn, state in self.__normalBtnMap.items(): btn.setUserSelection(state) # We turn on all meta buttons permanently if setting == 2: for btn in self.metaButtons: btn.setUserSelection(True) self.__mode = newMode ================================================ FILE: gui/multiSwitch.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from gui.chrome_tabs import ChromeNotebook import gui.builtinViews.emptyView import wx _t = wx.GetTranslation class MultiSwitch(ChromeNotebook): def __init__(self, parent): ChromeNotebook.__init__(self, parent, can_add=True, tabWidthMode=1) # self.AddPage() # now handled by mainFrame self.handlers = handlers = [] for type in TabSpawner.tabTypes: handlers.append(type(self)) def handleDrag(self, type, info): for handler in self.handlers: h = getattr(handler, "handleDrag", None) if h: h(type, info) def AddPage(self, tabWnd=None, tabTitle=None, tabImage=None): tabTitle = tabTitle or _t("Empty Tab") if tabWnd is None: tabWnd = gui.builtinViews.emptyView.BlankPage(self) tabWnd.handleDrag = lambda type, info: self.handleDrag(type, info) ChromeNotebook.AddPage(self, tabWnd, tabTitle, tabImage, True) def DeletePage(self, n, *args, **kwargs): ChromeNotebook.DeletePage(self, n, *args, **kwargs) if self.GetPageCount() == 0: self.AddPage() class TabSpawner: tabTypes = [] @classmethod def register(cls): TabSpawner.tabTypes.append(cls) ================================================ FILE: gui/patternEditor.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from logbook import Logger from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from gui.builtinViews.entityEditor import BaseValidator, EntityEditor from gui.utils.clipboard import fromClipboard, toClipboard from gui.utils.inputs import FloatBox from service.damagePattern import DamagePattern, ImportError from service.fit import Fit pyfalog = Logger(__name__) _t = wx.GetTranslation class DmgPatternNameValidator(BaseValidator): def __init__(self): BaseValidator.__init__(self) def Clone(self): return DmgPatternNameValidator() def Validate(self, win): entityEditor = win.Parent.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError(_t("You must supply a name for your Damage Profile!")) elif text in [x.rawName for x in entityEditor.choices]: raise ValueError(_t("Damage Profile name already in use, please choose another.")) return True except ValueError as e: pyfalog.error(e) wx.MessageBox("{}".format(e), _t("Error")) textCtrl.SetFocus() return False class DmgPatternEntityEditor(EntityEditor): def __init__(self, parent): EntityEditor.__init__(self, parent, _t("Damage Profile")) self.SetEditorValidator(DmgPatternNameValidator) def getEntitiesFromContext(self): sDP = DamagePattern.getInstance() choices = sorted(sDP.getUserDamagePatternList(), key=lambda p: p.rawName) choices = [c for c in choices if c.rawName != "Selected Ammo"] return choices def DoNew(self, name): sDP = DamagePattern.getInstance() return sDP.newPattern(name) def DoRename(self, entity, name): sDP = DamagePattern.getInstance() sDP.renamePattern(entity, name) def DoCopy(self, entity, name): sDP = DamagePattern.getInstance() copy = sDP.copyPattern(entity) sDP.renamePattern(copy, name) return copy def DoDelete(self, entity): sDP = DamagePattern.getInstance() sDP.deletePattern(entity) class DmgPatternEditor(AuxiliaryFrame): DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Damage Pattern Editor"), resizeable=True, # Dropdown list widget is scaled to its longest content line on GTK, adapt to that size=wx.Size(500, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(400, 240)) self.block = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.entityEditor = DmgPatternEntityEditor(self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) self.sl = wx.StaticLine(self) mainSizer.Add(self.sl, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) contentSizer = wx.BoxSizer(wx.VERTICAL) self.embitmap = BitmapLoader.getBitmap("em_big", "gui") self.thermbitmap = BitmapLoader.getBitmap("thermal_big", "gui") self.kinbitmap = BitmapLoader.getBitmap("kinetic_big", "gui") self.expbitmap = BitmapLoader.getBitmap("explosive_big", "gui") dmgeditSizer = wx.FlexGridSizer(2, 6, 0, 2) dmgeditSizer.AddGrowableCol(0) dmgeditSizer.AddGrowableCol(5) dmgeditSizer.SetFlexibleDirection(wx.BOTH) dmgeditSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) width = -1 defSize = wx.Size(width, -1) for i, type_ in enumerate(self.DAMAGE_TYPES): bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % type_, "gui")) if i % 2: style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT | wx.LEFT border = 20 else: style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT border = 5 # set text edit editBox = FloatBox(parent=self, id=wx.ID_ANY, value=0, pos=wx.DefaultPosition, size=defSize) percLabel = wx.StaticText(self, wx.ID_ANY, "0%") setattr(self, "%sEdit" % type_, editBox) setattr(self, "%sPerc" % type_, percLabel) dmgeditSizer.Add(bmp, 0, style, border) dmgeditSizer.Add(editBox, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5) dmgeditSizer.Add(percLabel, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5) editBox.Bind(wx.EVT_TEXT, self.OnFieldChanged) contentSizer.Add(dmgeditSizer, 1, wx.EXPAND | wx.ALL, 5) self.slfooter = wx.StaticLine(self) contentSizer.Add(self.slfooter, 0, wx.EXPAND | wx.TOP, 5) footerSizer = wx.BoxSizer(wx.HORIZONTAL) perSizer = wx.BoxSizer(wx.VERTICAL) self.stNotice = wx.StaticText(self, wx.ID_ANY, "") self.stNotice.Wrap(-1) perSizer.Add(self.stNotice, 0, wx.BOTTOM | wx.TOP | wx.LEFT, 5) footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5) self.totSizer = wx.BoxSizer(wx.VERTICAL) contentSizer.Add(footerSizer, 0, wx.EXPAND, 5) mainSizer.Add(contentSizer, 1, wx.EXPAND, 0) self.SetSizer(mainSizer) importExport = ((_t("Import patterns from clipboard"), wx.ART_FILE_OPEN, "import"), (_t("Export patterns to clipboard"), wx.ART_FILE_SAVE_AS, "export")) for tooltip, art, attr in importExport: bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON) btn = wx.BitmapButton(self, wx.ID_ANY, bitmap) btn.SetMinSize(btn.GetSize()) btn.SetMaxSize(btn.GetSize()) btn.Layout() setattr(self, "{}Btn".format(attr), btn) btn.Enable(True) btn.SetToolTip(tooltip) footerSizer.Add(btn, 0) btn.Bind(wx.EVT_BUTTON, getattr(self, "{}Patterns".format(attr))) if not self.entityEditor.checkEntitiesExist(): self.Close() return self.Layout() bsize = self.GetBestSize() self.SetSize((-1, bsize.height)) self.SetMinSize(self.GetSize()) self.CenterOnParent() self.Bind(wx.EVT_CHOICE, self.patternChanged) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.inputTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnInputTimer, self.inputTimer) self.patternChanged() def OnFieldChanged(self, event=None): if event is not None: event.Skip() self.inputTimer.Stop() self.inputTimer.Start(Fit.getInstance().serviceFittingOptions['marketSearchDelay'], True) def OnInputTimer(self, event): event.Skip() if self.block: return p = self.entityEditor.getActiveEntity() total = sum([(getattr(self, "%sEdit" % attr).GetValueFloat() or 0) for attr in self.DAMAGE_TYPES]) for type_ in self.DAMAGE_TYPES: editBox = getattr(self, "%sEdit" % type_) percLabel = getattr(self, "%sPerc" % type_) setattr(p, "%sAmount" % type_, editBox.GetValueFloat() or 0) percLabel.SetLabel("%.1f%%" % ((editBox.GetValueFloat() or 0) * 100 / total if total > 0 else 0)) self.totSizer.Layout() DamagePattern.getInstance().saveChanges(p) def restrict(self): for type_ in self.DAMAGE_TYPES: editObj = getattr(self, "%sEdit" % type_) editObj.Enable(False) self.entityEditor.btnRename.Enable(False) self.entityEditor.btnDelete.Enable(False) def unrestrict(self): for type_ in self.DAMAGE_TYPES: editObj = getattr(self, "%sEdit" % type_) editObj.Enable() self.entityEditor.btnRename.Enable() self.entityEditor.btnDelete.Enable() def patternChanged(self, event=None): if not self.entityEditor.checkEntitiesExist(): self.Close() return p = self.entityEditor.getActiveEntity() if p is None: return # localization todo: unsure if these names are internal only or also displayed somewhere... if p.rawName == "Uniform" or p.rawName == "Selected Ammo": self.restrict() else: self.unrestrict() self.block = True for field in self.DAMAGE_TYPES: edit = getattr(self, "%sEdit" % field) amount = int(round(getattr(p, "%sAmount" % field))) edit.ChangeValueFloat(amount) self.block = False self.OnFieldChanged() def __del__(self): pass def importPatterns(self, event): text = fromClipboard() if text: sDP = DamagePattern.getInstance() try: sDP.importPatterns(text) self.stNotice.SetLabel(_t("Patterns successfully imported from clipboard")) except ImportError as e: pyfalog.error(e) self.stNotice.SetLabel(str(e)) except (KeyboardInterrupt, SystemExit): raise except Exception as e: msg = _t("Could not import from clipboard: unknown errors") pyfalog.warning(msg) pyfalog.error(e) self.stNotice.SetLabel(msg) finally: self.entityEditor.refreshEntityList() else: self.stNotice.SetLabel(_t("Could not import from clipboard")) def exportPatterns(self, event): sDP = DamagePattern.getInstance() toClipboard(sDP.exportPatterns()) self.stNotice.SetLabel(_t("Patterns exported to clipboard")) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() ================================================ FILE: gui/preferenceDialog.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from gui.preferenceView import PreferenceView from gui.bitmap_loader import BitmapLoader _t = wx.GetTranslation class PreferenceDialog(wx.Dialog): def __init__(self, parent): super().__init__(parent, id=wx.ID_ANY, size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE) self.SetTitle("pyfa - " + _t("Preferences")) i = wx.Icon(BitmapLoader.getBitmap("preferences_small", "gui")) self.SetIcon(i) mainSizer = wx.BoxSizer(wx.VERTICAL) self.listbook = wx.Listbook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LB_DEFAULT) self.listview = self.listbook.GetListView() # self.listview.SetMinSize((500, -1)) # self.listview.SetSize((500, -1)) self.imageList = wx.ImageList(32, 32) self.listbook.AssignImageList(self.imageList) mainSizer.Add(self.listbook, 1, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.LEFT, 5) self.m_staticline2 = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL) mainSizer.Add(self.m_staticline2, 0, wx.EXPAND, 5) btnSizer = wx.BoxSizer(wx.HORIZONTAL) btnSizer.AddStretchSpacer() # localization todo: "OK" button shoudl be a built in thing that is already localized... self.btnOK = wx.Button(self, wx.ID_ANY, "OK", wx.DefaultPosition, wx.DefaultSize, 0) btnSizer.Add(self.btnOK, 0, wx.ALL, 5) mainSizer.Add(btnSizer, 0, wx.EXPAND, 5) self.SetSizer(mainSizer) self.Centre(wx.BOTH) for prefView in PreferenceView.views: page = wx.ScrolledWindow(self.listbook) page.SetScrollRate(15, 15) bmp = prefView.getImage() if bmp: imgID = self.imageList.Add(bmp) else: imgID = -1 prefView.populatePanel(page) self.listbook.AddPage(page, prefView.title, imageId=imgID) bestFit = self.GetBestVirtualSize() width = max(bestFit[0], 800 if "wxGTK" in wx.PlatformInfo else 650) height = max(bestFit[1], 550) self.SetSize(width, height) self.Layout() self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.btnOK.Bind(wx.EVT_BUTTON, self.OnBtnOK) def OnBtnOK(self, event): self.Close() def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() ================================================ FILE: gui/preferenceView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx class PreferenceView: views = [] @classmethod def register(cls): PreferenceView.views.append(cls()) def populatePanel(self, panel): raise NotImplementedError() def refreshPanel(self, fit): raise NotImplementedError() def getImage(self): return wx.NullBitmap # noinspection PyUnresolvedReferences from gui.builtinPreferenceViews import ( # noqa: E402, F401 pyfaGeneralPreferences, pyfaNetworkPreferences, pyfaHTMLExportPreferences, pyfaEsiPreferences, pyfaContextMenuPreferences, pyfaStatViewPreferences, pyfaMarketPreferences, pyfaUpdatePreferences, pyfaEnginePreferences, pyfaDatabasePreferences, pyfaLoggingPreferences ) ================================================ FILE: gui/propertyEditor.py ================================================ import csv # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import wx.propgrid as wxpg from logbook import Logger import gui.builtinMarketBrowser.pfSearchBox as SBox import gui.display as d import gui.globalEvents as GE from eos.db.gamedata.queries import getAttributeInfo, getItem from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from gui.marketBrowser import SearchBox from service.fit import Fit from service.market import Market pyfalog = Logger(__name__) _t = wx.GetTranslation class AttributeEditor(AuxiliaryFrame): def __init__(self, parent): super().__init__( parent, wx.ID_ANY, title=_t("Attribute Editor"), pos=wx.DefaultPosition, size=wx.Size(650, 600), resizeable=True) i = wx.Icon(BitmapLoader.getBitmap("fit_rename_small", "gui")) self.SetIcon(i) self.mainFrame = parent menubar = wx.MenuBar() fileMenu = wx.Menu() fileImport = fileMenu.Append(wx.ID_ANY, _t('Import'), _t('Import overrides')) fileExport = fileMenu.Append(wx.ID_ANY, _t('Export'), _t('Import overrides')) fileClear = fileMenu.Append(wx.ID_ANY, _t('Clear All'), _t('Clear all overrides')) menubar.Append(fileMenu, _t('&File')) self.SetMenuBar(menubar) self.Bind(wx.EVT_MENU, self.OnImport, fileImport) self.Bind(wx.EVT_MENU, self.OnExport, fileExport) self.Bind(wx.EVT_MENU, self.OnClear, fileClear) i = wx.Icon(BitmapLoader.getBitmap("fit_rename_small", "gui")) self.SetIcon(i) self.mainFrame = parent self.panel = panel = wx.Panel(self, wx.ID_ANY) mainSizer = wx.BoxSizer(wx.HORIZONTAL) leftSizer = wx.BoxSizer(wx.VERTICAL) leftPanel = wx.Panel(panel, wx.ID_ANY, style=wx.DOUBLE_BORDER if 'wxMSW' in wx.PlatformInfo else wx.SIMPLE_BORDER) self.searchBox = SearchBox(leftPanel) self.itemView = ItemView(leftPanel) leftSizer.Add(self.searchBox, 0, wx.EXPAND) leftSizer.Add(self.itemView, 1, wx.EXPAND) leftPanel.SetSizer(leftSizer) mainSizer.Add(leftPanel, 1, wx.ALL | wx.EXPAND, 5) rightSizer = wx.BoxSizer(wx.VERTICAL) self.btnRemoveOverrides = wx.Button(panel, wx.ID_ANY, _t("Remove Overides for Item"), wx.DefaultPosition, wx.DefaultSize, 0) self.pg = AttributeGrid(panel) rightSizer.Add(self.pg, 1, wx.ALL | wx.EXPAND, 5) rightSizer.Add(self.btnRemoveOverrides, 0, wx.ALL | wx.EXPAND, 5) self.btnRemoveOverrides.Bind(wx.EVT_BUTTON, self.pg.removeOverrides) self.btnRemoveOverrides.Enable(False) mainSizer.Add(rightSizer, 1, wx.EXPAND) panel.SetSizer(mainSizer) mainSizer.SetSizeHints(panel) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(panel, 1, wx.EXPAND) self.SetSizer(sizer) self.SetAutoLayout(True) self.SetMinSize(self.GetSize()) self.Bind(wx.EVT_CLOSE, self.OnClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def OnClose(self, event): fitID = self.mainFrame.getActiveFit() if fitID is not None: wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=(fitID,))) event.Skip() def OnImport(self, event): with wx.FileDialog( self, _t("Import pyfa override file"), wildcard=_t("pyfa override file") + " (*.csv)|*.csv", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST ) as dlg: if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() with open(path, 'r') as csvfile: spamreader = csv.reader(csvfile) for row in spamreader: if len(row) == 0: # csvwriter seems to added blank lines to the end sometimes continue itemID, attrID, value = row item = getItem(int(itemID)) attr = getAttributeInfo(int(attrID)) item.setOverride(attr, float(value)) self.itemView.updateItems(True) def OnExport(self, event): sMkt = Market.getInstance() items = sMkt.getItemsWithOverrides() defaultFile = "pyfa_overrides.csv" with wx.FileDialog( self, _t("Save Overrides As..."), wildcard=_t("pyfa overrides") + " (*.csv)|*.csv", style=wx.FD_SAVE, defaultFile=defaultFile ) as dlg: if dlg.ShowModal() == wx.ID_OK: path = dlg.GetPath() with open(path, 'w', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) for item in items: for key, override in item.overrides.items(): writer.writerow([item.ID, override.attrID, override.value]) def OnClear(self, event): with wx.MessageDialog( self, _t("Are you sure you want to delete all overrides?"), _t("Confirm Delete"), wx.YES | wx.NO | wx.ICON_EXCLAMATION ) as dlg: if dlg.ShowModal() == wx.ID_YES: sMkt = Market.getInstance() items = sMkt.getItemsWithOverrides() # We can't just delete overrides, as loaded items will still have # them assigned. Deleting them from the database won't propagate # them due to the eve/user database disconnect. We must loop through # all items that have overrides and remove them for item in items: for _, x in list(item.overrides.items()): item.deleteOverride(x.attr) self.itemView.updateItems(True) self.pg.Clear() # This is literally a stripped down version of the market. class ItemView(d.Display): DEFAULT_COLS = ["Base Icon", "Base Name", "attr:power,,,True", "attr:cpu,,,True"] def __init__(self, parent): d.Display.__init__(self, parent) self.activeItems = [] self.searchTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.scheduleSearch, self.searchTimer) self.searchBox = parent.Parent.Parent.searchBox # Bind search actions self.searchBox.Bind(SBox.EVT_TEXT_ENTER, self.scheduleSearch) self.searchBox.Bind(SBox.EVT_SEARCH_BTN, self.scheduleSearch) self.searchBox.Bind(SBox.EVT_CANCEL_BTN, self.clearSearch) self.searchBox.Bind(SBox.EVT_TEXT, self.delaySearch) self.update(Market.getInstance().getItemsWithOverrides()) def clearSearch(self, event=None): if event: self.searchBox.Clear() self.update(Market.getInstance().getItemsWithOverrides()) def updateItems(self, updateDisplay=False): if updateDisplay: self.update(Market.getInstance().getItemsWithOverrides()) def delaySearch(self, evt): sFit = Fit.getInstance() self.searchTimer.Stop() self.searchTimer.Start(sFit.serviceFittingOptions["marketSearchDelay"], True) def scheduleSearch(self, event=None): sMkt = Market.getInstance() search = self.searchBox.GetLineText(0) # Make sure we do not count wildcards as search symbol realsearch = search.replace('*', '').replace('?', '') # Show nothing if query is too short if len(realsearch) < 3: self.clearSearch() return sMkt.searchItems(search, self.populateSearch, 'everything') def itemSort(self, item): sMkt = Market.getInstance() isFittable = item.group.name in sMkt.FIT_GROUPS or item.category.name in sMkt.FIT_CATEGORIES return (not isFittable, *sMkt.itemSort(item)) def populateSearch(self, itemIDs): items = Market.getItems(itemIDs) self.update(items) def populate(self, items): if len(items) > 0: self.unselectAll() items.sort(key=self.itemSort) self.activeItems = items d.Display.populate(self, items) def refresh(self, items): if len(items) > 1: items.sort(key=self.itemSort) d.Display.refresh(self, items) class AttributeGrid(wxpg.PropertyGrid): def __init__(self, parent): wxpg.PropertyGrid.__init__(self, parent, style=wxpg.PG_HIDE_MARGIN | wxpg.PG_HIDE_CATEGORIES | wxpg.PG_BOLD_MODIFIED | wxpg.PG_TOOLTIPS) self.SetExtraStyle(wxpg.PG_EX_HELP_AS_TOOLTIPS) self.item = None self.itemView = parent.Parent.itemView self.btn = parent.Parent.btnRemoveOverrides self.Bind(wxpg.EVT_PG_CHANGED, self.OnPropGridChange) self.Bind(wxpg.EVT_PG_SELECTED, self.OnPropGridSelect) self.Bind(wxpg.EVT_PG_RIGHT_CLICK, self.OnPropGridRightClick) self.itemView.Bind(wx.EVT_LIST_ITEM_SELECTED, self.itemActivated) self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemActivated) def itemActivated(self, event): self.Clear() self.btn.Enable(True) sel = event.EventObject.GetFirstSelected() self.item = item = self.itemView.activeItems[sel] for key in sorted(item.attributes.keys()): override = item.overrides.get(key, None) default = item.attributes[key].value if override and override.value != default: prop = wxpg.FloatProperty(key, value=override.value) prop.SetModifiedStatus(True) else: prop = wxpg.FloatProperty(key, value=default) prop.SetClientData(item.attributes[key]) # set this so that we may access it later prop.SetHelpString("%s\n%s" % (item.attributes[key].displayName or key, _t("Default Value: %0.3f") % default)) self.Append(prop) def removeOverrides(self, event): if self.item is None: return for x in list(self.item.overrides.values()): self.item.deleteOverride(x.attr) self.itemView.updateItems(True) self.ClearModifiedStatus() self.itemView.Select(self.itemView.GetFirstSelected(), on=False) self.Clear() def Clear(self): self.item = None self.btn.Enable(False) wxpg.PropertyGrid.Clear(self) def OnPropGridChange(self, event): p = event.GetProperty() attr = p.GetClientData() if p.GetValue() == attr.value: self.item.deleteOverride(attr) p.SetModifiedStatus(False) else: self.item.setOverride(attr, p.GetValue()) self.itemView.updateItems() pyfalog.debug('{0} changed to "{1}"', p.GetName(), p.GetValueAsString()) def OnPropGridSelect(self, event): pass def OnPropGridRightClick(self, event): pass ================================================ FILE: gui/pyfa_gauge.py ================================================ # =============================================================================== # PyfaGauge is a generic Gauge implementation tailored for pyfa (the Python # Fitting Assistant). It uses the easeOutQuad equation from # caurina.transitions.Tweener to do animations # # ToDo: make SetGradient(from and not dependant on value) # ToDo: fix 0 range (currently resets range to 0.01, but this causes problems if # we really set range at 0.01). Perhaps make it -1 and test percentage as # a negativeor something. # ToDo: possibly devise a way to determine transition percents on init # (currently hardcoded) # # =============================================================================== import copy import wx from gui.utils import anim_effects, color as color_utils, draw _t = wx.GetTranslation class PyGauge(wx.Window): def __init__(self, parent, font, max_range=100, size=(-1, 30), *args, **kargs): super().__init__(parent, size=size, *args, **kargs) self._size = size self._border_colour = wx.BLACK self._bar_colour = None self._bar_gradient = None self._border_padding = 0 self._max_range = max_range self._value = 0 self._fraction_digits = 0 self._timer_id = wx.NewId() self._timer = None self._oldValue = 0 self._anim_duration = 500 self._anim_step = 0 self._period = 20 self._anim_value = 0 self._anim_direction = 0 self.anim_effect = anim_effects.OUT_QUAD # transition colors used based on how full (or overfilled) the gauge is. self.transition_colors = [ (wx.Colour(191, 191, 191), wx.Colour(96, 191, 0)), # < 0-100% (wx.Colour(191, 167, 96), wx.Colour(255, 191, 0)), # < 100-101% (wx.Colour(255, 191, 0), wx.Colour(255, 128, 0)), # < 101-103% (wx.Colour(255, 128, 0), wx.Colour(255, 0, 0)) # < 103-105% ] self.gradient_effect = -35 self._percentage = 0 self._old_percentage = 0 self._show_remaining = False self.font = font self.SetBackgroundColour(wx.Colour(51, 51, 51)) self._tooltip = wx.ToolTip("0.00/100.00") self.SetToolTip(self._tooltip) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_TIMER, self.OnTimer) self.Bind(wx.EVT_ENTER_WINDOW, self.OnWindowEnter) self.Bind(wx.EVT_LEAVE_WINDOW, self.OnWindowLeave) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) def OnEraseBackground(self, event): pass def OnWindowEnter(self, event): self._show_remaining = True self.Refresh() def OnWindowLeave(self, event): self._show_remaining = False self.Refresh() def GetBorderColour(self): return self._border_colour def SetBorderColour(self, colour): self._border_colour = colour def GetBarColour(self): return self._bar_colour def SetBarColour(self, colour): self._bar_colour = colour def SetFractionDigits(self, digits): self._fraction_digits = digits def GetBarGradient(self): if self._bar_gradient is None: return None return self._bar_gradient[0] def SetBarGradient(self, gradient=None): if gradient is None: self._bar_gradient = None else: if not isinstance(gradient, list): self._bar_gradient = [gradient] else: self._bar_gradient = list(gradient) def GetBorderPadding(self): return self._border_padding def SetBorderPadding(self, padding): self._border_padding = padding def GetRange(self): """ Returns the maximum value of the gauge. """ return self._max_range def Animate(self): # sFit = Fit.getInstance() if True: if not self._timer: self._timer = wx.Timer(self, self._timer_id) self._anim_step = 0 self._timer.Start(self._period) else: self._anim_value = self._percentage self.Refresh() def SetRange(self, range, reinit=False, animate=True): """ Sets the range of the gauge. The gauge length is its value as a proportion of the range. """ if self._max_range == range: return # we cannot have a range of zero (laws of physics, etc), so we set it if range <= 0: self._max_range = 0.01 else: self._max_range = range if reinit is False: self._old_percentage = self._percentage self._percentage = (self._value / self._max_range) * 100 else: self._old_percentage = self._percentage self._percentage = 0 self._value = 0 if animate: self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if self._max_range > 0.01 else 0)) def GetValue(self): return self._value def SetValue(self, value, animate=True): """ Sets the current position of the gauge. """ if self._value == value: return self._old_percentage = self._percentage self._value = value if value < 0: self._value = 0 self._percentage = (self._value / self._max_range) * 100 if animate: self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range)) def SetValueRange(self, value, range, reinit=False): """ Set both value and range of the gauge. """ range_ = float(range) if range_ <= 0: self._max_range = 0.01 else: self._max_range = range_ value = float(value) self._value = value if value < 0: self._value = float(0) if reinit is False: self._old_percentage = self._percentage self._percentage = (self._value / self._max_range) * 100 else: self._old_percentage = self._percentage self._percentage = 0 self.Animate() self._tooltip.SetTip("%.2f/%.2f" % (self._value, self._max_range if float(self._max_range) > 0.01 else 0)) def OnPaint(self, event): dc = wx.AutoBufferedPaintDC(self) rect = self.GetClientRect() dc.SetBackground(wx.Brush(self.GetBackgroundColour())) dc.Clear() colour = self.GetBackgroundColour() dc.SetBrush(wx.Brush(colour)) dc.SetPen(wx.Pen(colour)) dc.DrawRectangle(rect) value = self._percentage if self._timer: if self._timer.IsRunning(): value = self._anim_value if self._border_colour: dc.SetPen(wx.Pen(self.GetBorderColour())) dc.DrawRectangle(rect) pad = 1 + self.GetBorderPadding() rect.Deflate(pad, pad) if self.GetBarColour(): # if we have a bar color set, then we will use this colour = self.GetBarColour() dc.SetBrush(wx.Brush(colour)) dc.SetPen(wx.Pen(colour)) # calculate width of bar and draw it if value > 100: w = rect.width else: w = rect.width * (float(value) / 100) r = copy.copy(rect) r.width = round(w) dc.DrawRectangle(r) else: # if bar color is not set, then we use pre-defined transitions # for the colors based on the percentage value # calculate width of bar if value > 100: w = rect.width else: w = rect.width * (float(value) / 100) r = copy.copy(rect) r.width = round(w) # determine transition range number and calculate xv (which is the # progress between the two transition ranges) pv = value if pv <= 100: xv = pv / 100 transition = 0 elif pv <= 101: xv = pv - 100 transition = 1 elif pv <= 103: xv = (pv - 101) / 2 transition = 2 elif pv <= 105: xv = (pv - 103) / 2 transition = 3 else: pv = 106 xv = pv - 100 transition = -1 if transition != -1: start_color, end_color = self.transition_colors[transition] color = color_utils.CalculateTransition(start_color, end_color, xv) else: color = wx.Colour(191, 48, 48) # dark red color_factor = self.gradient_effect / 100 mid_factor = (self.gradient_effect / 2) / 100 if self.gradient_effect > 0: gradient_color = color_utils.Brighten(color, color_factor) gradient_mid = color_utils.Brighten(color, mid_factor) else: gradient_color = color_utils.Darken(color, color_factor * -1) gradient_mid = color_utils.Darken(color, mid_factor * -1) # draw bar gradient_bitmap = draw.DrawGradientBar( r.width, r.height, gradient_mid, color, gradient_color ) if gradient_bitmap is not None: dc.DrawBitmap(gradient_bitmap, round(r.left), round(r.top)) # font stuff begins here dc.SetFont(self.font) # determine shadow position r = copy.copy(rect) r.left += 1 r.top += 1 if self._max_range == 0.01 and self._value > 0: format_ = u'\u221e' # infinity symbol # drop shadow dc.SetTextForeground(wx.Colour(80, 80, 80)) # dark grey dc.DrawLabel(format_, r, wx.ALIGN_CENTER) # text dc.SetTextForeground(wx.WHITE) dc.DrawLabel(format_, rect, wx.ALIGN_CENTER) else: if not self.GetBarColour() and self._show_remaining: # we only do these for gradients with mouse over range_ = self._max_range if self._max_range > 0.01 else 0 value = range_ - self._value if value < 0: format_ = _t("{{0:.{0}f}} over").format(self._fraction_digits) value = -value else: format_ = _t("{{0:.{0}f}} left").format(self._fraction_digits) else: format_ = "{{0:.{0}f}}%".format(str(self._fraction_digits)) # drop shadow dc.SetTextForeground(wx.Colour(80, 80, 80)) dc.DrawLabel(format_.format(value), r, wx.ALIGN_CENTER) # text dc.SetTextForeground(wx.WHITE) dc.DrawLabel(format_.format(value), rect, wx.ALIGN_CENTER) def OnTimer(self, event): old_value = self._old_percentage value = self._percentage start = 0 # -1 = left direction, 1 = right direction direction = 1 if old_value < value else -1 end = direction * (value - old_value) self._anim_direction = direction step = self.anim_effect(self._anim_step, start, end, self._anim_duration) self._anim_step += self._period if self._timer_id == event.GetId(): stop_timer = False if self._anim_step > self._anim_duration: stop_timer = True # add new value to the animation if we haven't reached our goal # otherwise, stop animation if direction == 1: if old_value + step < value: self._anim_value = old_value + step else: stop_timer = True else: if old_value - step > value: self._anim_value = old_value - step else: stop_timer = True if stop_timer: self._timer.Stop() self.Refresh() ================================================ FILE: gui/setEditor.py ================================================ # ============================================================================= # Copyright (C) 2016 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from logbook import Logger from gui.auxWindow import AuxiliaryFrame from gui.builtinViews.entityEditor import BaseValidator, EntityEditor from gui.builtinViews.implantEditor import BaseImplantEditorView from gui.utils.clipboard import fromClipboard, toClipboard from service.implantSet import ImplantSets pyfalog = Logger(__name__) _t = wx.GetTranslation class ImplantTextValidor(BaseValidator): def __init__(self): BaseValidator.__init__(self) def Clone(self): return ImplantTextValidor() def Validate(self, win): entityEditor = win.Parent.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError(_t("You must supply a name for the Implant Set!")) elif text in [x.name for x in entityEditor.choices]: raise ValueError(_t("Implant Set name already in use, please choose another.")) return True except ValueError as e: pyfalog.error(e) wx.MessageBox("{}".format(e), _t("Error")) textCtrl.SetFocus() return False class ImplantSetEntityEditor(EntityEditor): def __init__(self, parent): EntityEditor.__init__(self, parent, _t("Implant Set")) self.SetEditorValidator(ImplantTextValidor) def getEntitiesFromContext(self): sIS = ImplantSets.getInstance() return sorted(sIS.getImplantSetList(), key=lambda c: c.name) def DoNew(self, name): sIS = ImplantSets.getInstance() return sIS.newSet(name) def DoRename(self, entity, name): sIS = ImplantSets.getInstance() sIS.renameSet(entity, name) def DoCopy(self, entity, name): sIS = ImplantSets.getInstance() copy = sIS.copySet(entity) sIS.renameSet(copy, name) return copy def DoDelete(self, entity): sIS = ImplantSets.getInstance() sIS.deleteSet(entity) class ImplantSetEditorView(BaseImplantEditorView): def __init__(self, parent): BaseImplantEditorView.__init__(self, parent) if 'wxMSW' in wx.PlatformInfo: self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)) def bindContext(self): self.Parent.entityEditor.Bind(wx.EVT_CHOICE, self.contextChanged) def getImplantsFromContext(self): sIS = ImplantSets.getInstance() set_ = self.Parent.entityEditor.getActiveEntity() if set_: return sIS.getImplants(set_.ID) return [] def addImplantToContext(self, item): sIS = ImplantSets.getInstance() set_ = self.Parent.entityEditor.getActiveEntity() sIS.addImplants(set_.ID, item.ID) def removeImplantFromContext(self, implant): sIS = ImplantSets.getInstance() set_ = self.Parent.entityEditor.getActiveEntity() sIS.removeImplant(set_.ID, implant) class ImplantSetEditor(AuxiliaryFrame): def __init__(self, parent, dataToAdd=None): super().__init__( parent, id=wx.ID_ANY, title=_t("Implant Set Editor"), resizeable=True, size=wx.Size(950, 500) if "wxGTK" in wx.PlatformInfo else wx.Size(850, 420)) self.block = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.entityEditor = ImplantSetEntityEditor(self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) self.sl = wx.StaticLine(self) mainSizer.Add(self.sl, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) self.iview = ImplantSetEditorView(self) mainSizer.Add(self.iview, 1, wx.ALL | wx.EXPAND, 5) self.slfooter = wx.StaticLine(self) mainSizer.Add(self.slfooter, 0, wx.EXPAND | wx.TOP, 5) footerSizer = wx.BoxSizer(wx.HORIZONTAL) self.stNotice = wx.StaticText(self, wx.ID_ANY, "") self.stNotice.Wrap(-1) footerSizer.Add(self.stNotice, 1, wx.BOTTOM | wx.TOP | wx.LEFT, 5) importExport = ((_t("Import implant sets from clipboard"), wx.ART_FILE_OPEN, "Import"), (_t("Export implant sets to clipboard"), wx.ART_FILE_SAVE_AS, "Export")) for tooltip, art, attr in importExport: bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON) btn = wx.BitmapButton(self, wx.ID_ANY, bitmap) btn.SetMinSize(btn.GetSize()) btn.SetMaxSize(btn.GetSize()) btn.Layout() setattr(self, attr, btn) btn.Enable(True) btn.SetToolTip(tooltip) footerSizer.Add(btn, 0) mainSizer.Add(footerSizer, 0, wx.ALL | wx.EXPAND, 5) self.SetSizer(mainSizer) self.Layout() if dataToAdd: name, implants = dataToAdd newSet = self.entityEditor.DoNew(name) ImplantSets.getInstance().addImplants(newSet.ID, *[i.item.ID for i in implants]) self.entityEditor.refreshEntityList(newSet) wx.PostEvent(self.entityEditor.entityChoices, wx.CommandEvent(wx.wxEVT_COMMAND_CHOICE_SELECTED)) elif not self.entityEditor.checkEntitiesExist(): self.Close() return self.Bind(wx.EVT_CHOICE, self.entityChanged) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.Import.Bind(wx.EVT_BUTTON, self.importPatterns) self.Export.Bind(wx.EVT_BUTTON, self.exportPatterns) self.SetMinSize(self.GetSize()) self.CenterOnParent() def entityChanged(self, event): if not self.entityEditor.checkEntitiesExist(): self.Close() return def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def __del__(self): pass def importPatterns(self, event): """Event fired when import from clipboard button is clicked""" text = fromClipboard() if text: sIS = ImplantSets.getInstance() try: sIS.importSets(text) self.stNotice.SetLabel(_t("Patterns successfully imported from clipboard")) except ImportError as e: pyfalog.error(e) self.stNotice.SetLabel(str(e)) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.error(e) self.stNotice.SetLabel(_t("Could not import from clipboard: unknown errors")) finally: self.entityEditor.refreshEntityList() else: self.stNotice.SetLabel(_t("Could not import from clipboard")) def exportPatterns(self, event): """Event fired when export to clipboard button is clicked""" sIS = ImplantSets.getInstance() toClipboard(sIS.exportSets()) self.stNotice.SetLabel(_t("Sets exported to clipboard")) ================================================ FILE: gui/shipBrowser.py ================================================ # noinspection PyPackageRequirements import wx from logbook import Logger import gui.globalEvents as GE import gui.mainFrame from gui.builtinShipBrowser.categoryItem import CategoryItem from gui.builtinShipBrowser.fitItem import FitItem from gui.builtinShipBrowser.shipItem import ShipItem from service.fit import Fit from service.market import Market from gui.builtinShipBrowser.events import EVT_SB_IMPORT_SEL, EVT_SB_STAGE1_SEL, EVT_SB_STAGE2_SEL, EVT_SB_STAGE3_SEL, EVT_SB_SEARCH_SEL from gui.builtinShipBrowser.pfWidgetContainer import PFWidgetsContainer from gui.builtinShipBrowser.navigationPanel import NavigationPanel from gui.builtinShipBrowser.raceSelector import RaceSelector from gui.builtinShipBrowser.pfStaticText import PFStaticText pyfalog = Logger(__name__) class ShipBrowser(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, style=0) self._lastWidth = 0 self._activeStage = 1 self._lastStage = 0 self.browseHist = [] self.lastStage = (0, 0) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.categoryList = [] self.categoryFitCache = {} self._stage1Data = -1 self._stage2Data = -1 self._stage3Data = -1 self._stage3ShipName = "" self.fitIDMustEditName = -1 self.filterShipsWithNoFits = False self.recentFits = False self.racesFilter = {} self.showRacesFilterInStage2Only = True for race in self.RACE_ORDER: if race: self.racesFilter[race] = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.navpanel = NavigationPanel(self) mainSizer.Add(self.navpanel, 0, wx.EXPAND) self.lpane = PFWidgetsContainer(self) layout = wx.HORIZONTAL self.raceselect = RaceSelector(self, layout=layout, animate=False) container = wx.BoxSizer(wx.VERTICAL if layout == wx.HORIZONTAL else wx.HORIZONTAL) if layout == wx.HORIZONTAL: container.Add(self.lpane, 1, wx.EXPAND) container.Add(self.raceselect, 0, wx.EXPAND) else: container.Add(self.raceselect, 0, wx.EXPAND) container.Add(self.lpane, 1, wx.EXPAND) mainSizer.Add(container, 1, wx.EXPAND) self.SetSizer(mainSizer) self.Layout() self.Show() self.Bind(wx.EVT_SIZE, self.SizeRefreshList) self.Bind(EVT_SB_STAGE2_SEL, self.stage2) self.Bind(EVT_SB_STAGE1_SEL, self.stage1) self.Bind(EVT_SB_STAGE3_SEL, self.stage3) self.Bind(EVT_SB_SEARCH_SEL, self.searchStage) self.Bind(EVT_SB_IMPORT_SEL, self.importStage) self.mainFrame.Bind(GE.FIT_CHANGED, self.RefreshList) self.stage1(None) def GetBrowserContainer(self): return self.lpane def RefreshContent(self): stage = self.GetActiveStage() if stage == 1: return stageData = self.GetStageData(stage) self.navpanel.gotoStage(stage, stageData) def RefreshList(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return stage = self.GetActiveStage() if stage in (3, 4, 5): self.lpane.RefreshList(True) def SizeRefreshList(self, event): self.Layout() self.lpane.Layout() self.lpane.RefreshList(True) event.Skip() def __del__(self): pass def GetActiveStage(self): return self._activeStage def GetLastStage(self): return self._lastStage def GetStageData(self, stage): if stage == 1: return self._stage1Data if stage == 2: return self._stage2Data if stage == 3: return self._stage3Data if stage == 4: return self.navpanel.lastSearch return -1 def GetStage3ShipName(self): return self._stage3ShipName def ToggleRacesFilter(self, race): if self.racesFilter[race]: self.racesFilter[race] = False else: self.racesFilter[race] = True def GetRaceFilterState(self, race): return self.racesFilter[race] def stage1(self, event): self.navpanel.ToggleRecentShips(False, False) self._lastStage = self._activeStage self._activeStage = 1 self.lastdata = 0 self.browseHist = [(1, 0)] self.navpanel.ShowNewFitButton(False) self.navpanel.ShowSwitchEmptyGroupsButton(False) sMkt = Market.getInstance() sFit = Fit.getInstance() self.lpane.ShowLoading(False) self.lpane.Freeze() self.lpane.RemoveAllChildren() pyfalog.debug("Populate ship category list.") if len(self.categoryList) == 0: # set cache of category list self.categoryList = list(sMkt.getShipRoot()) self.categoryList.sort(key=lambda _ship: _ship.displayName) counts = sFit.countAllFitsGroupedByShip() # set map & cache of fittings per category for cat in self.categoryList: itemIDs = [x.ID for x in sMkt.getItemsByGroup(cat)] self.categoryFitCache[cat.ID] = sum([count for shipID, count in counts if shipID in itemIDs]) > 0 for ship in self.categoryList: if self.filterShipsWithNoFits and not self.categoryFitCache[ship.ID]: continue else: self.lpane.AddWidget(CategoryItem(self.lpane, ship.ID, (ship.displayName, 0))) self.navpanel.ShowSwitchEmptyGroupsButton(True) self.lpane.RefreshList() self.lpane.Thaw() self.raceselect.RebuildRaces(self.RACE_ORDER) if self.showRacesFilterInStage2Only: self.raceselect.Show(False) self.Layout() RACE_ORDER = [ "amarr", "caldari", "gallente", "minmatar", "sisters", "ore", "concord", "serpentis", "angel", "blood", "sansha", "guristas", "mordu", "deathless", "jove", "triglavian", "upwell", None ] def raceNameKey(self, ship): return self.RACE_ORDER.index(ship.race), ship.name def stage2Callback(self, data): if self.GetActiveStage() != 2: return self.navpanel.ToggleRecentShips(False, False) categoryID = self._stage2Data ships = list(data[1]) sFit = Fit.getInstance() ships.sort(key=self.raceNameKey) racesList = [] subRacesFilter = {} t_fits = 0 # total number of fits in this category for ship in ships: if ship.race: if ship.race not in racesList: racesList.append(ship.race) for race, state in self.racesFilter.items(): if race in racesList: subRacesFilter[race] = self.racesFilter[race] override = True for race, state in subRacesFilter.items(): if state: override = False break for ship in ships: fits = sFit.countFitsWithShip(ship.ID) t_fits += fits filter_ = subRacesFilter[ship.race] if ship.race else True if override: filter_ = True shipTrait = ship.traits.display if (ship.traits is not None) else "" # empty string if no traits if self.filterShipsWithNoFits: if fits > 0: if filter_: self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race, ship.graphicID)) else: if filter_: self.lpane.AddWidget(ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, fits), ship.race, ship.graphicID)) self.raceselect.RebuildRaces(racesList) # refresh category cache if t_fits == 0: self.categoryFitCache[categoryID] = False else: self.categoryFitCache[categoryID] = True self.lpane.ShowLoading(False) self.lpane.RefreshList() if self.showRacesFilterInStage2Only: self.raceselect.Show(True) self.Layout() def stage2(self, event): # back = event.back # if not back: # self.browseHist.append( (1,0) ) self._lastStage = self._activeStage self._activeStage = 2 categoryID = event.categoryID self.lastdata = categoryID self.lpane.ShowLoading() self.lpane.RemoveAllChildren() sMkt = Market.getInstance() sMkt.getShipListDelayed(categoryID, self.stage2Callback) self._stage2Data = categoryID self.navpanel.ShowNewFitButton(False) self.navpanel.ShowSwitchEmptyGroupsButton(True) @staticmethod def nameKey(info): return info[1] def stage3(self, event): self.navpanel.ToggleRecentShips(False, False) self.lpane.ShowLoading(False) # If back is False, do not append to history. This could be us calling # the stage from previous history, creating / copying fit, etc. # We also have to use conditional for search stage since it's last data # is kept elsewhere if getattr(event, "back", False): if self._activeStage == 4 and self.navpanel.lastSearch != "": self.browseHist.append((4, self.navpanel.lastSearch)) else: self.browseHist.append((self._activeStage, self.lastdata)) shipID = event.shipID self.lastdata = shipID self._lastStage = self._activeStage self._activeStage = 3 sFit = Fit.getInstance() sMkt = Market.getInstance() ship = sMkt.getItem(shipID) categoryID = ship.group.ID self.lpane.Freeze() self.lpane.RemoveAllChildren() fitList = sFit.getFitsWithShip(shipID) if len(fitList) == 0: stage, data = self.browseHist.pop() self.lpane.Thaw() self.navpanel.gotoStage(stage, data) return self.categoryFitCache[categoryID] = True self.navpanel.ShowNewFitButton(True) self.navpanel.ShowSwitchEmptyGroupsButton(False) if self.showRacesFilterInStage2Only: self.raceselect.Show(False) self.Layout() fitList.sort(key=self.nameKey) shipName = ship.name self._stage3ShipName = shipName self._stage3Data = shipID shipTrait = ship.traits.display if (ship.traits is not None) else "" # empty string if no traits for ID, name, booster, timestamp, notes, graphicID in fitList: self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp, notes), shipID, graphicID=graphicID)) self.lpane.RefreshList() self.lpane.Thaw() self.raceselect.RebuildRaces(self.RACE_ORDER) def searchStage(self, event): self.lpane.ShowLoading(False) self.navpanel.ShowNewFitButton(False) self.navpanel.ShowSwitchEmptyGroupsButton(False) if not event.back: if self._activeStage != 4: if len(self.browseHist) > 0: self.browseHist.append((self._activeStage, self.lastdata)) else: self.browseHist.append((1, 0)) self._lastStage = self._activeStage self._activeStage = 4 sMkt = Market.getInstance() sFit = Fit.getInstance() query = event.text self.lpane.Freeze() self.lpane.RemoveAllChildren() if query: ships = sMkt.searchShips(query) fitList = sFit.searchFits(query) for ship in ships: shipTrait = ship.traits.display if (ship.traits is not None) else "" # empty string if no traits self.lpane.AddWidget( ShipItem(self.lpane, ship.ID, (ship.name, shipTrait, len(sFit.getFitsWithShip(ship.ID))), ship.race, ship.graphicID)) for ID, name, shipID, shipName, booster, timestamp, notes in fitList: ship = sMkt.getItem(shipID) if not sMkt.getPublicityByItem(ship): continue shipTrait = ship.traits.display if (ship.traits is not None) else "" # empty string if no traits self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, shipTrait, name, booster, timestamp, notes), shipID, graphicID=ship.graphicID)) if len(ships) == 0 and len(fitList) == 0: self.lpane.AddWidget(PFStaticText(self.lpane, label="No matching results.")) self.lpane.RefreshList(doFocus=False) self.lpane.Thaw() self.raceselect.RebuildRaces(self.RACE_ORDER) if self.showRacesFilterInStage2Only: self.raceselect.Show(False) self.Layout() def importStage(self, event): """ The import stage handles both displaying fits after importing as well as displaying recent fits. todo: need to reconcile these two better into a more uniform function, right now hacked together to get working """ self.lpane.ShowLoading(False) self.navpanel.ShowNewFitButton(False) self.navpanel.ShowSwitchEmptyGroupsButton(False) if getattr(event, "back", False): self.browseHist.append((self._activeStage, self.lastdata)) self._lastStage = self._activeStage self._activeStage = 5 fits = event.fits self.lastdata = fits self.lpane.Freeze() self.lpane.RemoveAllChildren() if fits: for fit in fits: shipItem = fit[3] shipTrait = shipItem.traits.display if (shipItem.traits is not None) else "" self.lpane.AddWidget(FitItem( self.lpane, fit[0], ( shipItem.name, shipTrait, fit[1], False, fit[2], fit[4] ), shipItem.ID, graphicID=shipItem.graphicID )) self.lpane.RefreshList(doFocus=False) self.lpane.Thaw() self.raceselect.RebuildRaces(self.RACE_ORDER) if self.showRacesFilterInStage2Only: self.raceselect.Show(False) self.Layout() ================================================ FILE: gui/ssoLogin.py ================================================ import wx import gui.mainFrame import webbrowser import gui.globalEvents as GE import config import time from service.settings import EsiSettings _t = wx.GetTranslation class SsoLogin(wx.Dialog): def __init__(self, server: config.ApiServer, start_local_server=True): self.mainFrame = gui.mainFrame.MainFrame.getInstance() from service.esi import Esi super().__init__( self.mainFrame, id=wx.ID_ANY, title=_t("SSO Login"), style=wx.DEFAULT_DIALOG_STYLE, size=wx.Size(450, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(400, 240)) bSizer1 = wx.BoxSizer(wx.VERTICAL) if start_local_server: text = wx.StaticText(self, wx.ID_ANY, _t("Waiting for character login through EVE Single Sign-On.")) bSizer1.Add(text, 0, wx.ALL | wx.EXPAND, 10) bSizer1.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.EXPAND, 15) text = wx.StaticText(self, wx.ID_ANY, _t("If auto-login fails, copy and paste the token provided by pyfa.io")) bSizer1.Add(text, 0, wx.ALL | wx.EXPAND, 10) elif server.name == "Serenity": text = wx.StaticText(self, wx.ID_ANY, _t("Please copy and paste the url when your authorization is completed")) bSizer1.Add(text, 0, wx.ALL | wx.EXPAND, 10) else: text = wx.StaticText(self, wx.ID_ANY, _t("Please copy and paste the token provided by pyfa.io")) bSizer1.Add(text, 0, wx.ALL | wx.EXPAND, 10) self.ssoInfoCtrl = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, (-1, -1), style=wx.TE_MULTILINE) self.ssoInfoCtrl.SetFont(wx.Font(8, wx.FONTFAMILY_TELETYPE, wx.NORMAL, wx.NORMAL)) self.ssoInfoCtrl.Layout() self.ssoInfoCtrl.Bind(wx.EVT_TEXT, self.OnTextEnter) bSizer1.Add(self.ssoInfoCtrl, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10) self.Esisettings = EsiSettings.getInstance() bSizer3 = wx.BoxSizer(wx.VERTICAL) bSizer3.Add(wx.StaticLine(self, wx.ID_ANY), 0, wx.BOTTOM | wx.EXPAND, 10) bSizer3.Add(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL), 0, wx.EXPAND) bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.SetSizer(bSizer1) self.Center() self.sEsi = Esi.getInstance() serverAddr = self.sEsi.startServer(0) if start_local_server else None uri = self.sEsi.get_login_uri(serverAddr) if server.name == "Serenity": webbrowser.open(config.SSO_LOGOFF_SERENITY) time.sleep(1) self.okBtn = self.FindWindow(wx.ID_OK) self.okBtn.Enable(False) # Ensure we clean up once they hit the "OK" button self.okBtn.Bind(wx.EVT_BUTTON, self.OnDestroy) webbrowser.open(uri) self.mainFrame.Bind(GE.EVT_SSO_LOGIN, self.OnLogin) # Ensure we clean up if ESC is pressed self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy) def OnTextEnter(self, event): t = event.String.strip() if t == "": self.okBtn.Enable(False) else: self.okBtn.Enable(True) event.Skip() def OnLogin(self, event): # This would normally happen if it was logged in via server auto-login. In this case, the modal is done, we effectively want to cancel out self.EndModal(wx.ID_CANCEL) event.Skip() def OnDestroy(self, event): # Clean up by unbinding some events and stopping the server self.mainFrame.Unbind(GE.EVT_SSO_LOGIN, handler=self.OnLogin) if self: self.Unbind(wx.EVT_WINDOW_DESTROY, handler=self.OnDestroy) self.sEsi.stopServer() event.Skip() ================================================ FILE: gui/statsPane.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx from service.fit import Fit from service.settings import StatViewSettings import gui.mainFrame import gui.builtinStatsViews import gui.globalEvents as GE # import gui.builtinViews.fittingView as fv from gui.statsView import StatsView from gui.contextMenu import ContextMenu from gui.toggle_panel import TogglePanel from logbook import Logger pyfalog = Logger(__name__) class StatsPane(wx.Panel): AVAILIBLE_VIEWS = [ "resources", "resistances", "recharge", "firepower", "outgoing", "capacitor", "targetingMisc", "bombing", "price", ] # Don't have these....yet.... ''' "miningyield", "drones" ] ''' DEFAULT_VIEWS = [] settings = StatViewSettings.getInstance() for aView in AVAILIBLE_VIEWS: if settings.get(aView) == 2: DEFAULT_VIEWS.extend(["%sViewFull" % aView]) pyfalog.debug("Setting full view for: {0}", aView) elif settings.get(aView) == 1: DEFAULT_VIEWS.extend(["%sViewMinimal" % aView]) pyfalog.debug("Setting minimal view for: {0}", aView) elif settings.get(aView) == 0: pyfalog.debug("Setting disabled view for: {0}", aView) else: pyfalog.error("Unknown setting for view: {0}", aView) def fitChanged(self, event): event.Skip() activeFitID = self.mainFrame.getActiveFit() if activeFitID is not None and activeFitID not in event.fitIDs: return sFit = Fit.getInstance() fit = sFit.getFit(activeFitID) for view in self.views: view.refreshPanel(fit) def __init__(self, parent): wx.Panel.__init__(self, parent) # Use 25% smaller fonts if MAC or force font size to 8 for msw/linux if "__WXMAC__" in wx.PlatformInfo: self.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) else: standardFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT) standardFont.SetPointSize(8) self.SetFont(standardFont) mainSizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(mainSizer) self.views = [] self.nameViewMap = {} maxviews = len(self.DEFAULT_VIEWS) i = 0 for viewName in self.DEFAULT_VIEWS: tp = TogglePanel(self) contentPanel = tp.GetContentPanel() contentPanel.viewName = viewName try: view = StatsView.getView(viewName)(self) pyfalog.debug("Load view: {0}", viewName) except KeyError: pyfalog.error("Attempted to load an invalid view: {0}", viewName) self.nameViewMap[viewName] = view self.views.append(view) headerPanel = tp.GetHeaderPanel() view.populatePanel(contentPanel, headerPanel) tp.SetLabel(view.getHeaderText(None)) view.refreshPanel(None) contentPanel.Bind(wx.EVT_CONTEXT_MENU, self.contextHandler(contentPanel, tp)) mainSizer.Add(tp, 0, wx.EXPAND | wx.LEFT, 3) if i < maxviews - 1: mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, style=wx.HORIZONTAL), 0, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, 2) i += 1 tp.OnStateChange(tp.GetBestSize()) width, height = self.GetSize() self.SetMinSize((width + 9, -1)) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) def contextHandler(self, contentPanel, tp): viewName = contentPanel.viewName def handler(event): menu = ContextMenu.getMenu(self, None, None, (viewName,)) if menu is not None: contentPanel.PopupMenu(menu) event.Skip() if ContextMenu.hasMenu(self, None, None, (viewName,)): sizer = tp.GetHeaderContentSizer() sizer.AddStretchSpacer() # Add menu header_menu = wx.StaticText(tp.GetHeaderPanel(), wx.ID_ANY, "\u2630", size=wx.Size((10, -1))) sizer.Add(header_menu , 0, wx.EXPAND | wx.RIGHT, 5) header_menu.Bind(wx.EVT_CONTEXT_MENU, handler) header_menu.Bind(wx.EVT_LEFT_UP, handler) return handler ================================================ FILE: gui/statsView.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= class StatsView: views = {} def __init__(self): pass @classmethod def register(cls): StatsView.views[cls.name] = cls @classmethod def getView(cls, name): return cls.views[name] def populatePanel(self, panel): raise NotImplementedError() def getHeaderText(self, fit): raise NotImplementedError() def refreshPanel(self, fit): raise NotImplementedError() # noinspection PyUnresolvedReferences from gui.builtinStatsViews import ( # noqa: E402, F401 resourcesViewFull, resistancesViewFull, firepowerViewFull, miningyieldViewFull, capacitorViewFull, rechargeViewFull, targetingMiscViewMinimal, bombingViewFull, priceViewFull, priceViewMinimal, outgoingViewFull, outgoingViewMinimal, ) ================================================ FILE: gui/targetProfileEditor.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from collections import OrderedDict # noinspection PyPackageRequirements import wx from logbook import Logger import gui.globalEvents as GE import gui.mainFrame from gui.auxWindow import AuxiliaryFrame from gui.bitmap_loader import BitmapLoader from gui.builtinViews.entityEditor import BaseValidator, EntityEditor from gui.utils.clipboard import fromClipboard, toClipboard from gui.utils.inputs import FloatBox, InputValidator, strToFloat from service.fit import Fit from service.targetProfile import TargetProfile pyfalog = Logger(__name__) _t = wx.GetTranslation class ResistValidator(InputValidator): def _validateWithReason(self, value): if not value: return True, '' value = strToFloat(value) if value is None: return False, _t('Incorrect formatting (decimals only)') if value < 0 or value > 100: return False, _t('Incorrect range (must be 0-100)') return True, '' class TargetProfileNameValidator(BaseValidator): def __init__(self): BaseValidator.__init__(self) def Clone(self): return TargetProfileNameValidator() def Validate(self, win): entityEditor = win.Parent.parent textCtrl = self.GetWindow() text = textCtrl.GetValue().strip() try: if len(text) == 0: raise ValueError(_t("You must supply a name for your Target Profile!")) elif text in [x.rawName for x in entityEditor.choices]: raise ValueError(_t("Target Profile name already in use, please choose another.")) return True except ValueError as e: pyfalog.error(e) wx.MessageBox("{}".format(e), _t("Error")) textCtrl.SetFocus() return False class TargetProfileEntityEditor(EntityEditor): def __init__(self, parent): EntityEditor.__init__(self, parent=parent, entityName=_t("Target Profile")) self.SetEditorValidator(TargetProfileNameValidator) self.mainFrame = gui.mainFrame.MainFrame.getInstance() def getEntitiesFromContext(self): sTR = TargetProfile.getInstance() choices = sorted(sTR.getUserTargetProfileList(), key=lambda p: p.rawName) return choices def DoNew(self, name): sTR = TargetProfile.getInstance() return sTR.newPattern(name) def DoRename(self, entity, name): sTR = TargetProfile.getInstance() sTR.renamePattern(entity, name) wx.PostEvent(self.mainFrame, GE.TargetProfileChanged(profileID=entity.ID)) def DoCopy(self, entity, name): sTR = TargetProfile.getInstance() copy = sTR.copyPattern(entity) sTR.renamePattern(copy, name) return copy def DoDelete(self, entity): sTR = TargetProfile.getInstance() sTR.deletePattern(entity) wx.PostEvent(self.mainFrame, GE.TargetProfileRemoved(profileID=entity.ID)) class TargetProfileEditor(AuxiliaryFrame): DAMAGE_TYPES = OrderedDict([ ("em", _t("EM resistance")), ("thermal", _t("Thermal resistance")), ("kinetic", _t("Kinetic resistance")), ("explosive", _t("Explosive resistance"))]) ATTRIBUTES = OrderedDict([ ('maxVelocity', (_t('Maximum speed'), 'm/s')), ('signatureRadius', (_t('Signature radius\nLeave blank for infinitely big value'), 'm')), ('radius', (_t('Radius\nThe radius of the sphere that represents a ship/drone in space. Affects range calculations.'), 'm')), ('hp', (_t('Total HP\nAffects how much damage breacher pods can do. Leave blank for infinitely big value'), 'hp'))]) def __init__(self, parent): super().__init__( parent, id=wx.ID_ANY, title=_t("Target Profile Editor"), resizeable=True, # Dropdown list widget is scaled to its longest content line on GTK, adapt to that size=wx.Size(630, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(450, 240)) self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.block = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) self.entityEditor = TargetProfileEntityEditor(parent=self) mainSizer.Add(self.entityEditor, 0, wx.ALL | wx.EXPAND, 2) self.sl = wx.StaticLine(self) mainSizer.Add(self.sl, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 5) contentSizer = wx.BoxSizer(wx.VERTICAL) resistEditSizer = wx.BoxSizer(wx.HORIZONTAL) resistEditSizer.AddStretchSpacer() defSize = wx.Size(70, -1) for type_ in self.DAMAGE_TYPES: leftPad = 25 if type_ != list(self.DAMAGE_TYPES)[0] else 0 ttText = self.DAMAGE_TYPES[type_] bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % type_, "gui")) bmp.SetToolTip(wx.ToolTip(ttText)) resistEditSizer.Add(bmp, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, leftPad) # set text edit editBox = FloatBox(parent=self, id=wx.ID_ANY, value=None, pos=wx.DefaultPosition, size=defSize) editBox.SetToolTip(wx.ToolTip(ttText)) self.Bind(event=wx.EVT_TEXT, handler=self.OnFieldChanged, source=editBox) setattr(self, '{}Edit'.format(type_), editBox) resistEditSizer.Add(editBox, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) unit = wx.StaticText(self, wx.ID_ANY, "%", wx.DefaultPosition, wx.DefaultSize, 0) unit.SetToolTip(wx.ToolTip(ttText)) resistEditSizer.Add(unit, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5) resistEditSizer.AddStretchSpacer() contentSizer.Add(resistEditSizer, 1, wx.EXPAND | wx.ALL, 5) miscAttrSizer = wx.BoxSizer(wx.HORIZONTAL) miscAttrSizer.AddStretchSpacer() for attr in self.ATTRIBUTES: leftPad = 25 if attr != list(self.ATTRIBUTES)[0] else 0 ttText, unitText = self.ATTRIBUTES[attr] bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % attr, "gui")) bmp.SetToolTip(wx.ToolTip(ttText)) miscAttrSizer.Add(bmp, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, leftPad) # set text edit editBox = FloatBox(parent=self, id=wx.ID_ANY, value=None, pos=wx.DefaultPosition, size=defSize) editBox.SetToolTip(wx.ToolTip(ttText)) self.Bind(event=wx.EVT_TEXT, handler=self.OnFieldChanged, source=editBox) setattr(self, '{}Edit'.format(attr), editBox) miscAttrSizer.Add(editBox, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 5) unit = wx.StaticText(self, wx.ID_ANY, unitText, wx.DefaultPosition, wx.DefaultSize, 0) unit.SetToolTip(wx.ToolTip(ttText)) miscAttrSizer.Add(unit, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5) miscAttrSizer.AddStretchSpacer() contentSizer.Add(miscAttrSizer, 1, wx.EXPAND | wx.ALL, 5) self.slfooter = wx.StaticLine(self) contentSizer.Add(self.slfooter, 0, wx.EXPAND | wx.TOP, 5) footerSizer = wx.BoxSizer(wx.HORIZONTAL) perSizer = wx.BoxSizer(wx.VERTICAL) self.stNotice = wx.StaticText(self, wx.ID_ANY, "") self.stNotice.Wrap(-1) perSizer.Add(self.stNotice, 0, wx.BOTTOM | wx.TOP | wx.LEFT, 5) footerSizer.Add(perSizer, 1, wx.ALIGN_CENTER_VERTICAL, 5) self.totSizer = wx.BoxSizer(wx.VERTICAL) contentSizer.Add(footerSizer, 0, wx.EXPAND, 5) mainSizer.Add(contentSizer, 1, wx.EXPAND, 0) self.SetSizer(mainSizer) importExport = ((_t("Import profiles from clipboard"), wx.ART_FILE_OPEN, "import"), (_t("Export profiles to clipboard"), wx.ART_FILE_SAVE_AS, "export")) for tooltip, art, attr in importExport: bitmap = wx.ArtProvider.GetBitmap(art, wx.ART_BUTTON) btn = wx.BitmapButton(self, wx.ID_ANY, bitmap) btn.SetMinSize(btn.GetSize()) btn.SetMaxSize(btn.GetSize()) btn.Layout() setattr(self, attr, btn) btn.Enable(True) btn.SetToolTip(tooltip) footerSizer.Add(btn, 0) btn.Bind(wx.EVT_BUTTON, getattr(self, "{}Patterns".format(attr))) if not self.entityEditor.checkEntitiesExist(): self.Close() return self.Layout() bsize = self.GetBestSize() self.SetSize((-1, bsize.height)) self.SetMinSize(self.GetSize()) self.CenterOnParent() self.Bind(wx.EVT_CHOICE, self.patternChanged) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.inputTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnInputTimer, self.inputTimer) self.patternChanged() @classmethod def openOne(cls, parent, selected=None): super().openOne(parent) if selected is not None: cls._instance.selectTargetProfile(selected) def OnFieldChanged(self, event=None): if event is not None: event.Skip() self.inputTimer.Stop() self.inputTimer.Start(Fit.getInstance().serviceFittingOptions['marketSearchDelay'], True) def OnInputTimer(self, event): event.Skip() if self.block: return if self.validateFields(): p = self.entityEditor.getActiveEntity() TargetProfile.getInstance().saveChanges(p) wx.PostEvent(self.mainFrame, GE.TargetProfileChanged(profileID=p.ID)) def validateFields(self): valid = True try: p = self.entityEditor.getActiveEntity() for type_ in self.DAMAGE_TYPES: editBox = getattr(self, "%sEdit" % type_) # Raise exception if value is not valid if not editBox.isValid(): reason = editBox.getInvalidationReason() raise ValueError(reason) value = editBox.GetValueFloat() or 0 setattr(p, "%sAmount" % type_, value / 100) for attr in self.ATTRIBUTES: editBox = getattr(self, "%sEdit" % attr) # Raise exception if value is not valid if not editBox.isValid(): reason = editBox.getInvalidationReason() raise ValueError(reason) value = editBox.GetValueFloat() setattr(p, attr, value) self.stNotice.SetLabel("") self.totSizer.Layout() except ValueError as e: self.stNotice.SetLabel(e.args[0]) valid = False finally: # Refresh for color changes to take effect immediately self.Refresh() return valid def patternChanged(self, event=None): """Event fired when user selects pattern. Can also be called from script""" if not self.entityEditor.checkEntitiesExist(): self.Close() return p = self.entityEditor.getActiveEntity() if p is None: return self.block = True # Set new values for field in self.DAMAGE_TYPES: edit = getattr(self, "%sEdit" % field) amount = getattr(p, "%sAmount" % field) * 100 edit.ChangeValueFloat(amount) for attr in self.ATTRIBUTES: edit = getattr(self, "%sEdit" % attr) amount = getattr(p, attr) if amount == math.inf: edit.ChangeValueFloat(None) else: edit.ChangeValueFloat(amount) self.block = False self.validateFields() def __del__(self): pass def importPatterns(self, event): """Event fired when import from clipboard button is clicked""" text = fromClipboard() if text: sTR = TargetProfile.getInstance() try: sTR.importPatterns(text) self.stNotice.SetLabel(_t("Profiles successfully imported from clipboard")) except ImportError as e: pyfalog.error(e) self.stNotice.SetLabel(str(e)) except (KeyboardInterrupt, SystemExit): raise except Exception as e: msg = _t("Could not import from clipboard:") pyfalog.warning(msg) pyfalog.error(e) self.stNotice.SetLabel(msg) finally: self.entityEditor.refreshEntityList() else: self.stNotice.SetLabel(_t("Could not import from clipboard")) def exportPatterns(self, event): """Event fired when export to clipboard button is clicked""" sTR = TargetProfile.getInstance() toClipboard(sTR.exportPatterns()) self.stNotice.SetLabel(_t("Profiles exported to clipboard")) def kbEvent(self, event): if event.GetKeyCode() == wx.WXK_ESCAPE and event.GetModifiers() == wx.MOD_NONE: self.Close() return event.Skip() def processChanges(self): changedFitIDs = Fit.getInstance().processTargetProfileChange() if changedFitIDs: wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=changedFitIDs)) def selectTargetProfile(self, profile): self.entityEditor.setActiveEntity(profile) self.patternChanged() ================================================ FILE: gui/toggle_panel.py ================================================ # =============================================================================== # TogglePanel is based on PyCollapsiblePane - includes a few improvements # such as adding items to header, lack of button implementation ("GTK # expander" style is implemented with plain text with unicode arrows rather # than drawn geometry), etc. # # When adding TogglePanel to sizer, it is important to ensure the following: # sizer is vertical # set proportion = 0 # # ToDo: Create animations for collapsing / expanding # # =============================================================================== import wx class TogglePanel(wx.Panel): def __init__(self, parent, force_layout=False, *args, **kargs): super().__init__(parent, *args, **kargs) self._toggled = True self.parent = parent self.force_layout = force_layout # Create the main sizer of this panel self.main_sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.main_sizer) # Create the header panel, set sizer, and add to main sizer self.header_panel = wx.Panel(self) header_sizer = wx.BoxSizer(wx.HORIZONTAL) self.header_panel.SetSizer(header_sizer) self.main_sizer.Add(self.header_panel, 0, wx.EXPAND | wx.TOP | wx.BOTTOM | wx.RIGHT, 1) # Add arrow self.header_arrow = wx.StaticText(self.header_panel, wx.ID_ANY, "\u25bc", size=wx.Size((10, -1))) header_sizer.Add(self.header_arrow, 0, wx.RIGHT, 5) # Add header text self.header_label = wx.StaticText(self.header_panel, wx.ID_ANY, "") font = parent.GetFont() font.SetWeight(wx.BOLD) self.header_label.SetFont(font) header_sizer.Add(self.header_label, 0, wx.RIGHT, 5) # Add a sizer for additional header items if we need it self.hcontent_sizer = wx.BoxSizer(wx.HORIZONTAL) header_sizer.Add(self.hcontent_sizer, 1, wx.RIGHT, 5) # Create the content panel, set sizer, and add to main sizer self.content_panel = wx.Panel(self) self.content_sizer = wx.BoxSizer(wx.VERTICAL) self.content_panel.SetSizer(self.content_sizer) self.main_sizer.Add(self.content_panel, 0, wx.EXPAND | wx.RIGHT | wx.LEFT, 5) self.Layout() # Connect Events self.header_label.Bind(wx.EVT_LEFT_UP, self.ToggleContent) self.header_arrow.Bind(wx.EVT_LEFT_UP, self.ToggleContent) self.header_panel.Bind(wx.EVT_LEFT_UP, self.ToggleContent) def __del__(self): pass def AddToggleItem(self, item): item.Bind(wx.EVT_LEFT_UP, self.ToggleContent) def GetHeaderContentSizer(self): return self.hcontent_sizer def GetHeaderPanel(self): return self.header_panel def InsertItemInHeader(self, item): self.hcontent_sizer.Add(item, 0, 0, 0) self.AddToggleItem(item) self.Layout() def AddSizer(self, sizer): self.content_sizer.Add(sizer, 0, wx.EXPAND | wx.ALL, 0) self.Layout() def GetContentPanel(self): return self.content_panel def SetLabel(self, label): self.header_label.SetLabel(label) def IsCollapsed(self): return not self._toggled def IsExpanded(self): return self._toggled def OnStateChange(self, sz): self.SetSize(sz) self.parent.GetSizer().SetSizeHints(self.parent) if not self._toggled: if self.parent.GetSizer(): # we have just set the size hints... sz = self.parent.GetSizer().CalcMin() # use SetClientSize() and not SetSize() otherwise the size for # e.g. a wxFrame with a menubar wouldn't be correctly set self.parent.SetClientSize(sz) else: self.parent.Layout() else: # force our parent to "fit", i.e. expand so that it can honor # our minimal size self.parent.Fit() def ToggleContent(self, event): # self.Freeze() if self._toggled: # If we are expanded, save previous size and collapse by setting # content height to 0 self.content_min_size = self.content_panel.GetSize() self.content_panel.SetMinSize((self.content_min_size[0], 0)) self.header_arrow.SetLabel("\u25b6") else: # If we are collapsed, set content size to previously saved value self.content_panel.SetMinSize(self.content_min_size) self.header_arrow.SetLabel("\u25bc") self._toggled = not self._toggled # self.Thaw() if self.force_layout: self.parent.Layout() else: self.OnStateChange(self.GetBestSize()) ================================================ FILE: gui/updateDialog.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx # noinspection PyPackageRequirements import dateutil.parser from service.settings import UpdateSettings as svc_UpdateSettings import wx.html2 import webbrowser import re import markdown2 _t = wx.GetTranslation # HTML template. We link to a bootstrap cdn for quick and easy css, and include some additional teaks. html_tmpl = """

pyfa {0}

{1}

{2} {3} """ class UpdateDialog(wx.Dialog): def __init__(self, parent, release, version): super().__init__( parent, id=wx.ID_ANY, title="pyfa {}" + _t("Update Available"), pos=wx.DefaultPosition, size=wx.Size(550, 450), style=wx.DEFAULT_DIALOG_STYLE) self.UpdateSettings = svc_UpdateSettings.getInstance() self.releaseInfo = release self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) mainSizer = wx.BoxSizer(wx.VERTICAL) releaseDate = dateutil.parser.parse(self.releaseInfo['published_at']) notesSizer = wx.BoxSizer(wx.HORIZONTAL) self.browser = wx.html2.WebView.New(self) self.browser.Bind(wx.html2.EVT_WEBVIEW_NEWWINDOW, self.OnNewWindow) link_patterns = [ (re.compile(r"#(\d+)", re.I), r"https://github.com/pyfa-org/Pyfa/issues/\1"), (re.compile(r"@(\w+)", re.I), r"https://github.com/\1") ] markdowner = markdown2.Markdown( extras=['cuddled-lists', 'fenced-code-blocks', 'target-blank-links', 'toc', 'link-patterns'], link_patterns=link_patterns) release_markup = markdowner.convert(self.releaseInfo['body']) # run the text through markup again, this time with the hashing pattern. This is required due to bugs in markdown2: # https://github.com/trentm/python-markdown2/issues/287 link_patterns = [ (re.compile("([0-9a-f]{6,40})", re.I), r"https://github.com/pyfa-org/Pyfa/commit/\1"), ] markdowner = markdown2.Markdown( extras=['cuddled-lists', 'fenced-code-blocks', 'target-blank-links', 'toc', 'link-patterns'], link_patterns=link_patterns) # The space here is required, again, due to bug. Again, see https://github.com/trentm/python-markdown2/issues/287 release_markup = markdowner.convert(' ' + release_markup) self.browser.SetPage(html_tmpl.format( self.releaseInfo['tag_name'], releaseDate.strftime('%B %d, %Y'), "

This is a pre-release, be prepared for unstable features

" if version.is_prerelease else "", release_markup ), "") notesSizer.Add(self.browser, 1, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 5) mainSizer.Add(notesSizer, 1, wx.EXPAND, 5) self.supressCheckbox = wx.CheckBox(self, wx.ID_ANY, _t("Don't remind me again for this release"), wx.DefaultPosition, wx.DefaultSize, 0) self.supressCheckbox.Bind(wx.EVT_CHECKBOX, self.SuppressChange) mainSizer.Add(self.supressCheckbox, 0, wx.ALL, 5) mainSizer.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND | wx.ALL, 5) actionSizer = wx.BoxSizer(wx.HORIZONTAL) goSizer = wx.BoxSizer(wx.VERTICAL) self.downloadButton = wx.Button(self, wx.ID_ANY, _t("Download"), wx.DefaultPosition, wx.DefaultSize, 0) self.downloadButton.Bind(wx.EVT_BUTTON, self.OnDownload) goSizer.Add(self.downloadButton, 0, wx.ALL, 5) actionSizer.Add(goSizer, 1, wx.EXPAND, 5) self.closeButton = wx.Button(self, wx.ID_CLOSE) self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose) actionSizer.Add(self.closeButton, 0, wx.ALL, 5) mainSizer.Add(actionSizer, 0, wx.EXPAND, 5) self.SetSizer(mainSizer) self.Layout() # Handle use-case of suppressing a release, then a new version becoming available. # If that new version is not suppressed, the old version will remain in the preferences and # may cause confusion. If this dialog box is popping up for any reason, that mean we can # safely reset this setting self.UpdateSettings.set('version', None) self.Centre(wx.BOTH) def OnClose(self, e): self.Close() def OnNewWindow(self, event): url = event.GetURL() webbrowser.open(url) def SuppressChange(self, e): if self.supressCheckbox.IsChecked(): self.UpdateSettings.set('version', self.releaseInfo['tag_name']) else: self.UpdateSettings.set('version', None) def OnDownload(self, e): wx.LaunchDefaultBrowser('https://github.com/pyfa-org/Pyfa/releases/tag/' + self.releaseInfo['tag_name']) self.OnClose(e) ================================================ FILE: gui/utils/__init__.py ================================================ ================================================ FILE: gui/utils/anim.py ================================================ # noinspection PyPackageRequirements import wx import gui.utils.color as colorUtils class LoadAnimation(wx.Window): def __init__(self, parent, id=wx.ID_ANY, label="", pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): wx.Window.__init__(self, parent, id, pos=pos, size=size, style=style) self.label = label self.animTimerId = wx.NewId() self.animTimer = wx.Timer(self, self.animTimerId) self.animTimerPeriod = 50 self.animCount = 0 self.animDir = 1 self.bars = 10 self.padding = 2 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) self.Bind(wx.EVT_TIMER, self.OnTimer) self.Bind(wx.EVT_PAINT, self.OnPaint) self.animTimer.Start(self.animTimerPeriod) self.SetBackgroundStyle(wx.BG_STYLE_PAINT) def Play(self): if self.animTimer.IsRunning(): self.animTimer.Stop() self.animCount = 0 self.animTimer.Start(self.animTimerPeriod) def Stop(self): if self.animTimer.IsRunning(): self.animTimer.Stop() def OnTimer(self, event): self.animCount += self.animDir if self.animCount >= self.bars: self.animCount = self.bars - 1 self.animDir = -1 if self.animCount < 0: self.animCount = 0 self.animDir = 1 self.Refresh() def OnEraseBackground(self, event): pass def OnPaint(self, event): rect = self.GetClientRect() dc = wx.AutoBufferedPaintDC(self) windowColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOW) dc.SetBackground(wx.Brush(windowColor)) dc.Clear() barColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) shadeColor = colorUtils.GetSuitable(barColor, 0.75) barWidth = rect.width / self.bars barHeight = rect.height - self.padding * 2 x = self.padding for bar in range(self.bars): if bar != self.animCount: dc.SetPen(wx.Pen(shadeColor)) dc.SetBrush(wx.Brush(shadeColor)) bh = barHeight y = self.padding else: barColor = colorUtils.GetSuitable(barColor, float(self.animCount / 2) / 10) dc.SetPen(wx.Pen(barColor)) dc.SetBrush(wx.Brush(barColor)) bh = rect.height y = 0 dc.DrawRectangle(round(x), round(y), round(barWidth), round(bh)) x += barWidth textColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) dc.SetTextForeground(textColor) dc.DrawLabel(self.label, rect, wx.ALIGN_CENTER) class WaitDialog(wx.Dialog): def __init__(self, parent, title="Processing"): super().__init__(parent, id=wx.ID_ANY, title=title, size=(300, 30), style=wx.NO_BORDER) mainSizer = wx.BoxSizer(wx.HORIZONTAL) self.progress = LoadAnimation(self, label=title, size=(300, 30)) mainSizer.Add(self.progress, 1, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 0) self.SetSizer(mainSizer) self.Layout() self.CenterOnParent() ================================================ FILE: gui/utils/anim_effects.py ================================================ import math def OUT_CIRC(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t = t / d - 1 return c * math.sqrt(1 - t * t) + b def OUT_QUART(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t = t / d - 1 return -c * (t * t * t * t - 1) + b def INOUT_CIRC(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t1 = t / (d / 2) if (t / (d / 2)) < 1: return -c / 2 * (math.sqrt(1 - (t / (d / 2)) ** 2) - 1) + b else: return c / 2 * (math.sqrt(1 - (t1 - 2) ** 2) + 1) + b def IN_CUBIC(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d return c * t * t * t + b def OUT_QUAD(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d return -c * t * (t - 2) + b def OUT_BOUNCE(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t /= d if t < (1 / 2.75): return c * (7.5625 * t * t) + b elif t < (2 / 2.75): t -= (1.5 / 2.75) return c * (7.5625 * t * t + .75) + b elif t < (2.5 / 2.75): t -= (2.25 / 2.75) return c * (7.5625 * t * t + .9375) + b else: t -= (2.625 / 2.75) return c * (7.5625 * t * t + .984375) + b def INOUT_EXP(t, b, c, d): t = float(t) b = float(b) c = float(c) d = float(d) t1 = t / (d / 2) if t == 0: return b elif t == d: return b + c elif t1 < 1: return c / 2 * math.pow(2, 10 * (t1 - 1)) + b - c * 0.0005 else: return c / 2 * 1.0005 * (-math.pow(2, -10 * (t1 - 1)) + 2) + b ================================================ FILE: gui/utils/clipboard.py ================================================ # noinspection PyPackageRequirements import wx from logbook import Logger logger = Logger(__name__) def toClipboard(text): """ Copy text to clipboard. Explicitly uses CLIPBOARD selection, not PRIMARY. On X11 systems, wxPython can confuse between PRIMARY and CLIPBOARD selections, causing "already open" errors. This function ensures we always use CLIPBOARD. See: https://discuss.wxpython.org/t/wx-theclipboard-pasting-different-content-on-every-second-paste/35361 """ clipboard = wx.TheClipboard try: # Explicitly use CLIPBOARD selection, not PRIMARY selection # This prevents X11 confusion between the two clipboard types clipboard.UsePrimarySelection(False) if clipboard.Open(): try: data = wx.TextDataObject(text) clipboard.SetData(data) return True finally: clipboard.Close() else: logger.debug("Failed to open clipboard for writing") return False except Exception as e: logger.warning("Error writing to clipboard: {}", e) return False def fromClipboard(): """ Read text from clipboard. Explicitly uses CLIPBOARD selection, not PRIMARY. On X11 systems, wxPython can confuse between PRIMARY and CLIPBOARD selections, causing "already open" errors. This function ensures we always use CLIPBOARD. See: https://discuss.wxpython.org/t/wx-theclipboard-pasting-different-content-on-every-second-paste/35361 """ clipboard = wx.TheClipboard try: # Explicitly use CLIPBOARD selection, not PRIMARY selection # This prevents X11 confusion between the two clipboard types clipboard.UsePrimarySelection(False) if clipboard.Open(): try: data = wx.TextDataObject() if clipboard.GetData(data): return data.GetText() else: logger.debug("Clipboard open but no CLIPBOARD data available") return None finally: clipboard.Close() else: logger.debug("Failed to open clipboard for reading") return None except Exception as e: logger.warning("Error reading from clipboard: {}", e) return None ================================================ FILE: gui/utils/color.py ================================================ # noinspection PyPackageRequirements import wx def Brighten(color, factor): """ Brightens a Color using a factor between 0 and 1""" r, g, b, a = color factor = min(max(factor, 0), 1) r += (255 - r) * factor b += (255 - b) * factor g += (255 - g) * factor return wx.Colour(round(r), round(g), round(b), round(a)) def Darken(color, factor): """ Darkens a Color using a factor between 0 and 1""" r, g, b, a = color factor = min(max(factor, 0), 1) factor = 1 - factor r *= factor g *= factor b *= factor r = min(max(r, 0), 255) b = min(max(b, 0), 255) g = min(max(g, 0), 255) return wx.Colour(round(r), round(g), round(b), round(a)) def _getBrightness(color): """ Calculates brightness of color http://stackoverflow.com/a/596243/788054 """ r, g, b, a = color return 0.299 * r + 0.587 * g + 0.114 * b def GetSuitable(color, factor: [0, 1]): """ Calculates a suitable color based on original color (wx.Colour), its brightness, and a factor (darken/brighten by factor depending on calculated brightness) """ brightness = _getBrightness(color) if brightness > 129: return Darken(color, factor) else: return Brighten(color, factor) def CalculateTransition(s_color, e_color, delta): """ Calculates the color between a given start and end color using a delta value between 0 and 1 """ sR, sG, sB, sA = s_color eR, eG, eB, eA = e_color tR = sR + (eR - sR) * delta tG = sG + (eG - sG) * delta tB = sB + (eB - sB) * delta return wx.Colour(round(tR), round(tG), round(tB), round((sA + eA) / 2)) ================================================ FILE: gui/utils/dark.py ================================================ import wx def isDark(): if 'wxMSW' in wx.PlatformInfo: return False try: return wx.SystemSettings.GetAppearance().IsDark() except (KeyboardInterrupt, SystemExit): raise except: return False ================================================ FILE: gui/utils/draw.py ================================================ # noinspection PyPackageRequirements import wx from . import color def RenderGradientBar(windowColor, width, height, sFactor, eFactor, mFactor=None , fillRatio=2): if sFactor == 0 and eFactor == 0 and mFactor is None: return DrawFilledBitmap(width, height, windowColor) gStart = color.GetSuitable(windowColor, sFactor) if mFactor: gMid = color.GetSuitable(windowColor, mFactor) else: gMid = color.GetSuitable(windowColor, sFactor + (eFactor - sFactor) / 2) gEnd = color.GetSuitable(windowColor, eFactor) return DrawGradientBar(width, height, gStart, gEnd, gMid, fillRatio) def DrawFilledBitmap(width, height, color): canvas = wx.Bitmap(round(width), round(height)) mdc = wx.MemoryDC() mdc.SelectObject(canvas) mdc.SetBackground(wx.Brush(color)) mdc.Clear() mdc.SelectObject(wx.NullBitmap) return canvas def DrawGradientBar(width, height, gStart, gEnd, gMid=None, fillRatio=4): if width == 0 or height == 0: return None canvas = wx.Bitmap(round(width), round(height)) mdc = wx.MemoryDC() mdc.SelectObject(canvas) r = wx.Rect(0, 0, width, height) r.SetHeight(round(height / fillRatio)) if gMid is None: gMid = gStart mdc.GradientFillLinear(r, gStart, gMid, wx.SOUTH) r.SetTop(r.GetHeight()) r.SetHeight(round(height * (fillRatio - 1) / fillRatio + (1 if height % fillRatio != 0 else 0))) mdc.GradientFillLinear(r, gMid, gEnd, wx.SOUTH) mdc.SelectObject(wx.NullBitmap) return canvas def GetPartialText(dc, text , maxWidth, defEllipsis="..."): ellipsis = defEllipsis base_w, h = dc.GetTextExtent(ellipsis) lenText = len(text) drawntext = text w, dummy = dc.GetTextExtent(text) while lenText > 0: if w + base_w <= maxWidth: break w_c, h_c = dc.GetTextExtent(drawntext[-1]) drawntext = drawntext[0:-1] lenText -= 1 w -= w_c while len(ellipsis) > 0 and w + base_w > maxWidth: ellipsis = ellipsis[0:-1] base_w, h = dc.GetTextExtent(ellipsis) if len(text) > lenText: return drawntext + ellipsis else: return text def CreateDropShadowBitmap(bitmap, opacity): img = bitmap.ConvertToImage() img = img.AdjustChannels(0, 0, 0, opacity) return wx.Bitmap(img) ================================================ FILE: gui/utils/exportHtml.py ================================================ import threading import time # noinspection PyPackageRequirements import wx from service.const import PortEftOptions from service.settings import HTMLExportSettings from service.fit import Fit from service.port import Port from service.market import Market from logbook import Logger from eos.db import getFit pyfalog = Logger(__name__) class exportHtml: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = exportHtml() return cls._instance def __init__(self): self.thread = exportHtmlThread() def refreshFittingHtml(self, force=False, progress=None): settings = HTMLExportSettings.getInstance() if force or settings.getEnabled(): self.thread.stop() self.thread = exportHtmlThread(progress) self.thread.start() class exportHtmlThread(threading.Thread): def __init__(self, progress=False): threading.Thread.__init__(self) self.name = "HTMLExport" self.progress = progress self.stopRunning = False def stop(self): self.stopRunning = True def run(self): # wait 1 second just in case a lot of modifications get made time.sleep(1) if self.stopRunning: return sMkt = Market.getInstance() sFit = Fit.getInstance() settings = HTMLExportSettings.getInstance() minimal = settings.getMinimalEnabled() dnaUrl = "https://o.smium.org/loadout/dna/" if minimal: HTML = self.generateMinimalHTML(sMkt, sFit, dnaUrl) else: HTML = self.generateFullHTML(sMkt, sFit, dnaUrl) try: FILE = open(settings.getPath(), "w", encoding='utf-8') FILE.write(HTML) FILE.close() except IOError as ex: pyfalog.warning("Failed to write to " + settings.getPath()) pass except (KeyboardInterrupt, SystemExit): raise except Exception as e: if self.progress: self.progress.error = f'{e}' finally: if self.progress: self.progress.current += 1 self.progress.workerWorking = False def generateFullHTML(self, sMkt, sFit, dnaUrl): """ Generate the complete HTML with styling and javascript """ timestamp = time.localtime(time.time()) localDate = "%d/%02d/%02d %02d:%02d" % (timestamp[0], timestamp[1], timestamp[2], timestamp[3], timestamp[4]) HTML = """ Pyfa Fittings
Last updated: %s ()

Pyfa fits by Group

""" % (time.time(), dnaUrl, localDate) HTML += '
    \n' categoryList = list(sMkt.getShipRoot()) categoryList.sort(key=lambda _ship: _ship.name) count = 0 for group in categoryList: # init market group string to give ships something to attach to HTMLgroup = '' ships = list(sMkt.getShipList(group.ID)) ships.sort(key=lambda _ship: _ship.name) # Keep track of how many ships per group groupFits = 0 for ship in ships: fits = sFit.getFitsWithShip(ship.ID) if len(fits) > 0: groupFits += len(fits) HTMLship = ( '
  • \n' '

    ' + ship.name + ' ' + str( len(fits)) + '

    \n' '
      \n' ) for fit in fits: if self.stopRunning: return try: eftFit = Port.exportEft(getFit(fit[0]), options={ PortEftOptions.IMPLANTS: True, PortEftOptions.MUTATIONS: True, PortEftOptions.LOADED_CHARGES: True, PortEftOptions.BOOSTERS: True, PortEftOptions.CARGO: True}) HTMLfit = ( '
    • \n' '

      ' + fit[1] + '

      \n' '
        \n' ) HTMLfit += '
      • ' + eftFit + '\n                   
      • \n' HTMLfit += '
      \n
    • \n' HTMLship += HTMLfit except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Failed to export line") continue finally: if self.progress: self.progress.current = count count += 1 HTMLgroup += HTMLship + ('
    \n' '
  • \n') if groupFits > 0: # Market group header HTML += ( '
  • \n' '

    ' + group.name + ' ' + str(groupFits) + '

    \n' '
      \n' + HTMLgroup + '
    \n' '
  • ' ) HTML += """

Pyfa fits by Name

""" HTML += '
    \n' categoryList = list(sMkt.getShipRoot()) categoryList.sort(key=lambda _ship: _ship.name) count = 0 for group in categoryList: # init market group string to give ships something to attach to HTMLgroup = '' ships = list(sMkt.getShipList(group.ID)) ships.sort(key=lambda _ship: _ship.name) # Keep track of how many ships per group groupFits = 0 for ship in ships: fits = sFit.getFitsWithShip(ship.ID) if len(fits) > 0: groupFits += len(fits) for fit in fits: if self.stopRunning: return try: eftFit = Port.exportEft(getFit(fit[0]), options={ PortEftOptions.IMPLANTS: True, PortEftOptions.MUTATIONS: True, PortEftOptions.LOADED_CHARGES: True, PortEftOptions.BOOSTERS: True, PortEftOptions.CARGO: True}) HTMLfit = ( '
  • \n' '

    ' + ship.name + " - " + fit[1] + '

    \n' '
      \n' ) HTMLfit += '
    • ' + eftFit + '\n                   
    • \n' HTMLfit += '
    \n
  • \n' HTML += HTMLfit except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Failed to export line") continue finally: if self.progress: self.progress.current = count count += 1 HTML += """
""" return HTML def generateMinimalHTML(self, sMkt, sFit, dnaUrl): """ Generate a minimal HTML version of the fittings, without any javascript or styling""" categoryList = list(sMkt.getShipRoot()) categoryList.sort(key=lambda _ship: _ship.name) count = 0 HTML = '' for group in categoryList: # init market group string to give ships something to attach to ships = list(sMkt.getShipList(group.ID)) ships.sort(key=lambda _ship: _ship.name) ships.sort(key=lambda _ship: _ship.name) for ship in ships: fits = sFit.getFitsWithShip(ship.ID) for fit in fits: if self.stopRunning: return try: dnaFit = Port.exportDna(getFit(fit[0])) HTML += '' \ + ship.name + ': ' + \ fit[1] + '
\n' except (KeyboardInterrupt, SystemExit): raise except: pyfalog.error("Failed to export line") continue finally: if self.progress: self.progress.current = count count += 1 return HTML ================================================ FILE: gui/utils/fonts.py ================================================ """ Font file to handle the differences in font calculations between different wxPython versions """ # noinspection PyPackageRequirements import wx if 'wxMac' in wx.PlatformInfo: sizes = (10, 11, 12) else: sizes = (7, 8, 9) SMALL, NORMAL, BIG = sizes ================================================ FILE: gui/utils/gdi.py ================================================ import gc from ctypes import * from collections import defaultdict import os def gdiReport(desc=''): PH = windll.kernel32.OpenProcess(0x400, 0, os.getpid()) numGdi = windll.user32.GetGuiResources(PH, 0) windll.kernel32.CloseHandle(PH) print (f'{desc}, {numGdi}') last = None def output_memory(): global last d = defaultdict(int) for o in gc.get_objects(): name = type(o).__name__ if name == 'Bitmap': del o d[name] += 1 items = d.items() items = sorted(items,key=lambda x:x[1]) print('------') for key, value in items: if last is not None: if value -last[key] !=0: print(f'{key} {value - last[key]}, {value}') else: print( key, value) last = d ================================================ FILE: gui/utils/helpers_wxPython.py ================================================ import wx def YesNoDialog(question='Are you sure you want to do this?', caption='Yes or no?'): with wx.MessageDialog(None, question, caption, wx.YES_NO | wx.ICON_QUESTION) as dlg: result = dlg.ShowModal() == wx.ID_YES return result def HandleCtrlBackspace(textControl): """ Handles the behavior of Windows ctrl+space deletes everything from the cursor to the left, up to the next whitespace. """ curPos = textControl.GetInsertionPoint() searchText = textControl.GetValue() foundChar = False for startIndex in range(curPos, -1, -1): if startIndex - 1 < 0: break if searchText[startIndex - 1] != " ": foundChar = True elif foundChar: break textControl.Remove(startIndex, curPos) textControl.SetInsertionPoint(startIndex) ================================================ FILE: gui/utils/inputs.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re from abc import ABCMeta, abstractmethod import wx from eos.utils.float import floatUnerr def valToStr(val): if val is None: return '' val = floatUnerr(val) if int(val) == val: val = int(val) return str(val) def strToFloat(val): try: return float(val) except ValueError: return None class InputValidator(metaclass=ABCMeta): def validate(self, value): return self._validateWithReason(value)[0] def getReason(self, value): return self._validateWithReason(value)[1] @abstractmethod def _validateWithReason(self, value): raise NotImplementedError class FloatBox(wx.TextCtrl): def __init__(self, parent, value, id=wx.ID_ANY, style=0, validator=None, **kwargs): # Workaround for #2591 if 'wxMac' in wx.PlatformInfo and 'size' not in kwargs: kwargs['size'] = wx.Size(97, 26) super().__init__(parent=parent, id=id, style=style, **kwargs) self.Bind(wx.EVT_TEXT, self.OnText) self._storedValue = '' self._validator = validator self.ChangeValue(valToStr(value)) def ChangeValue(self, value): self._storedValue = value super().ChangeValue(value) self.updateColor() def ChangeValueFloat(self, value): self.ChangeValue(valToStr(value)) def updateColor(self): if self.isValid(): self.SetForegroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT)) else: self.SetForegroundColour(wx.RED) def isValid(self): if self._validator is None: return True return self._validator.validate(self.GetValue()) def getInvalidationReason(self): if self._validator is None: return None return self._validator.getReason(self.GetValue()) def OnText(self, event): currentValue = self.GetValue() if currentValue == self._storedValue: event.Skip() return if currentValue == '' or re.match(r'^\d*\.?\d*$', currentValue): self._storedValue = currentValue self.updateColor() event.Skip() else: self.ChangeValue(self._storedValue) def GetValueFloat(self): return strToFloat(self.GetValue()) class FloatRangeBox(wx.TextCtrl): def __init__(self, parent, value, id=wx.ID_ANY, style=0, **kwargs): # Workaround for #2591 if 'wxMac' in wx.PlatformInfo and 'size' not in kwargs: kwargs['size'] = wx.Size(97, 26) super().__init__(parent=parent, id=id, style=style, **kwargs) self.Bind(wx.EVT_TEXT, self.OnText) self._storedValue = '' value = [v for v in value if v is not None] if not value: self.ChangeValue('') else: self.ChangeValue('{}-{}'.format(valToStr(min(value)), valToStr(max(value)))) def ChangeValue(self, value): self._storedValue = value super().ChangeValue(value) def OnText(self, event): currentValue = self.GetValue() if currentValue == self._storedValue: event.Skip() return if currentValue == '' or re.match(r'^\d*\.?\d*-?\d*\.?\d*$', currentValue): self._storedValue = currentValue event.Skip() else: self.ChangeValue(self._storedValue) def GetValueRange(self): parts = self.GetValue().split('-') if len(parts) == 1: val = strToFloat(parts[0]) return (val, val) else: return (strToFloat(parts[0]), strToFloat(parts[1])) ================================================ FILE: gui/utils/listFormatter.py ================================================ def formatList(words): """Transforms ("a", "b", "c") into "a, b and c" string""" if not words: return "" if len(words) == 1: return words[0] last = words[-1:][0] beginning = ", ".join(words[:-1]) return "{0} and {1}".format(beginning, last) ================================================ FILE: gui/utils/numberFormatter.py ================================================ import math from eos.utils.round import roundToPrec, roundDec def formatAmount(val, prec=3, lowest=0, highest=0, currency=False, forceSign=False, unitName=None): """ Add suffix to value, transform value to match new suffix and round it. Keyword arguments: val -- value to process prec -- precision of final number (number of significant positions to show) lowest -- lowest order for suffixizing for numbers 0 < |num| < 1 highest -- highest order for suffixizing for numbers |num| > 1 currency -- if currency, billion suffix will be B instead of G forceSign -- if True, positive numbers are signed too unitName -- if specified, will be formatted into a string """ if val is None: return "" if val == math.inf: return "\u221e" if unitName is None else "\u221e {}".format(unitName) # Define suffix maps posSuffixMap = {3: "k", 6: "M", 9: "B" if currency is True else "G"} negSuffixMap = {-6: '\u03bc', -3: "m"} # Define tuple of the map keys # As we're going to go from the biggest order of abs(key), sort # them differently due to one set of values being negative # and other positive posOrders = tuple(sorted(iter(posSuffixMap.keys()), reverse=True)) negOrders = tuple(sorted(iter(negSuffixMap.keys()), reverse=False)) # Find the least abs(key) posLowest = min(posOrders) negHighest = max(negOrders) # By default, mantissa takes just value and no suffix mantissa, suffix = val, "" # Positive suffixes if abs(val) > 1 and highest >= posLowest: # Start from highest possible suffix for key in posOrders: # Find first suitable suffix and check if it's not above highest order if abs(val) >= 10 ** key and key <= highest: mantissa, suffix = val / float(10 ** key), posSuffixMap[key] # Do additional step to eliminate results like 999999 => 1000k # If we're already using our greatest order, we can't do anything useful if posOrders.index(key) == 0: break else: # Get order greater than current prevKey = posOrders[posOrders.index(key) - 1] # Check if the key to which we potentially can change is greater # than our highest boundary if prevKey > highest: # If it is, bail - we already have acceptable results break # Find multiplier to get from one order to another orderDiff = 10 ** (prevKey - key) # If rounded mantissa according to our specifications is greater than # or equal to multiplier if roundToPrec(mantissa, prec) >= orderDiff: # Divide mantissa and use suffix of greater order mantissa, suffix = mantissa / orderDiff, posSuffixMap[prevKey] # Otherwise consider current results as acceptable break # Take numbers between 0 and 1, and matching/below highest possible negative suffix elif abs(val) < 1 and val != 0 and lowest <= negHighest: # Start from lowest possible suffix for key in negOrders: # Get next order try: nextKey = negOrders[negOrders.index(key) + 1] except IndexError: nextKey = 0 # Check if mantissa with next suffix is in range [1, 1000) if abs(val) < 10 ** nextKey and key >= lowest: mantissa, suffix = val / float(10 ** key), negSuffixMap[key] # Do additional step to eliminate results like 0.9999 => 1000m # Check if the key we're potentially switching to is greater than our # upper boundary if nextKey > highest: # If it is, leave loop with results we already have break # Find the multiplier between current and next order orderDiff = 10 ** (nextKey - key) # If rounded mantissa according to our specifications is greater than # or equal to multiplier if roundToPrec(mantissa, prec) >= orderDiff: # Divide mantissa and use suffix of greater order # Use special handling of zero key as it's not on the map mantissa, suffix = mantissa / orderDiff, posSuffixMap[nextKey] if nextKey != 0 else "" # Otherwise consider current results as acceptable break # Round mantissa according to our prec variable mantissa = roundToPrec(mantissa, prec) sign = "+" if forceSign is True and mantissa > 0 else "" # Round mantissa and add suffix if unitName is None: result = "{}{}{}".format(sign, mantissa, suffix) else: result = "{}{} {}{}".format(sign, mantissa, suffix, unitName) return result ================================================ FILE: gui/utils/progressHelper.py ================================================ class ProgressHelper: def __init__(self, message, maximum=None, callback=None): self.message = message self.current = 0 self.maximum = maximum self.workerWorking = True self.dlgWorking = True self.error = None self.callback = callback self.cbArgs = [] @property def working(self): return self.workerWorking and self.dlgWorking and not self.error @property def userCancelled(self): return not self.dlgWorking ================================================ FILE: gui/utils/sorter.py ================================================ """ Taken from https://stackoverflow.com/questions/2669059/how-to-sort-alpha-numeric-set-in-python """ import re def _convert(text): return int(text) if text.isdigit() else text def smartSort(key): return [_convert(c) for c in re.split('([0-9]+)', key)] ================================================ FILE: gui/utils/staticHelpers.py ================================================ class DragDropHelper: data = None def __init__(self): pass ================================================ FILE: gui/viewColumn.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= # noinspection PyPackageRequirements import wx class ViewColumn: """ Abstract class that columns can inherit from. Once the missing methods are correctly implemented, they can be used as columns in a view. """ columns = {} proportionWidth = 1 def __init__(self, fittingView): self.fittingView = fittingView self.columnText = "" self.imageId = -1 self.size = wx.LIST_AUTOSIZE_USEHEADER self.mask = 0 self.maxsize = -1 self.bitmap = wx.NullBitmap @classmethod def register(cls): ViewColumn.columns[cls.name] = cls @classmethod def getColumn(cls, name): return ViewColumn.columns[name] def getRestrictions(self): raise NotImplementedError() def getText(self, mod): return "" def getToolTip(self, mod): return None def getImageId(self, mod): return -1 @staticmethod def getParameters(): return tuple() def delayedText(self, display, colItem): raise NotImplementedError() # noinspection PyUnresolvedReferences from gui.builtinViewColumns import ( # noqa: E402, F401 abilities, ammo, ammoIcon, attributeDisplay, attributeDisplayGraph, baseIcon, baseName, capacitorUse, dampScanRes, droneEhp, droneRegen, graphColor, graphLightness, graphLineStyle, heat, maxRange, misc, price, projectionRange, propertyDisplay, state, sideEffects, targetResists) ================================================ FILE: locale/README.md ================================================ # Pyfa Internationalization (i18n) and Localization (l10n) pyfa provides community-driven translations for a variety of languages. It is important to keep in mind that pyfa translations are not the same as the translations that come from EVE data. These translations are dumped directly from the game, and the pyfa team has no control over them. This includes, but is not limited to: * Market browser * Ship browser * Item names, description, traits, attributes If there is a translation issue in EVE data, you must submit a ticket to CCP instead. ## Getting Involved Translations are done mainly through [Crowdin](https://crowdin.com/project/pyfa). This platform allows translations to be done by anyone without any real need to understand the project's internals. Simply sign up, join the project as a Translator, and start translating! As a general rule of thumb, we consider translations community-driven. The pyfa team isn't going to 1) Maintain individual language packs as a part of general development work, or 2) Delay a release if translations aren't available This is because the pyfa team is only versed in a few languages, at best, and we do not wish to hold up development in the case of not having translations available. ### Proofreader By default, signing up on Crowdin allows you to *suggest* translations. These will still produce a PR on GitHub and can still be included in the project. But, if you wish to adopt a language as a proofreader - someone with the ability to "approve" translations to ensure that they are correct and work well in pyfa - then please get in touch with us and we can set your account on Crowdin as a proofreader. ## `gettext` The following is more for developers or those that wish to understand better the translation system pyfa uses. If you're looking to simply help us translate, please read the Getting Involved section above. ### How it works A quick introduction to GNU `gettext` translations! There is no programming knowledge required to help with most of the translations. Each langauge that we support has a `LC_MESSAGES/lang.po` file, and in this file there are multiple groups of `msgid` and `msgstr`. `msgid` is usually the English version that is displayed in pyfa, whereas `msgstr` would be the translated version. ``` msgid "Click to toggle between effective HP and raw HP" msgstr "点击切换有效HP和原始HP" ``` 90% of translations are as simple as that. The other 10% may require you to take a quick dip into the code to tweak the formatting of the string, assign context prefixs (for translations that may translate differently for the same work due to context), or to even add the annotation to the string that will expose it to the translation engine. If you're not comfortable with that, you can always request it! ### POEdit [Poedit](https://poedit.net/) offers a nice GUI for updating translations. #### To update PO file for existing translation 1. open a existing `locale/ll_CC/LC_MESSAGES/lang.po` 2. *Catalog* -> *Update from POT file* 3. select pre-prepared `lang.pot` file #### To translate and generate MO file edit the translation and hit Save :) ## FAQ Q: I'm running Linux and getting "Cannot set locale to language "English (U.S.)" when trying to run pyfa.
A: pyfa will automatically try to use the en_US local as the default unless otgherwise set. This error can happen when your Linux distribution does not have the en_US locale enabled. The fix for thiss may be distro-speecific, but the process for Debian-based distros is as follows: 1. Edit the file `/etc/locale.gen`, find the line `# en_US.UTF-8 UTF-8`, remove `#` part 2. Run `locale-gen` to generate new locale files Please note that you may have to perform this operation after updating your distro, as the locales may revert. See https://github.com/pyfa-org/Pyfa/issues/2314 for more info Q: The English text isn't in the `.pot`/`.po` file for me to translate
A: This is probably one of two things: 1. Missing annotations in the source code. All text that needs to be translated needs to be wrapped with `_t()` to make it locale-aware 2. Out of date `.po` file. As pyfa development continues, the `.po` file may fall behind. See next question. Q: How do I update the `.po` file for my language?
A: See `Commands` section below for a number of useful commands Q: I run pyfa in Linux but the translations don't work
A: If you're running from source / your own method, this is because the `.mo` files aren't checked into the repo and thus aren't available by default. Running `python3 scripts\compile_lang.py` should compile all language files. If you're running from a package from a third-party repository, YMMV - please contact the maintainer of that package. ## Commands Below is a summary of [GNU gettext](https://www.gnu.org/software/gettext/) manual, adapted for Pyfa i18n workflow. Windows users can get these tools via Git for windows, Msys2 or Cygwin; or just use WSL / WSL2. For Linux and macOS users these tools might be available out-of-box. ### To generate new template for translation: ```console $ find * -name "*.py" | xgettext --from-code=UTF-8 -o locale/lang.pot -d lang -k_t -k_t:1,2,3t -k_t:1,2c,2t -f - -s ``` explanation: * `find * -name "*.py"`: collect all `.py` file path in current folder and all sub-folders, write it to stdout * except those starts with `.`. E.g. `.env`, `.idea`, `.venv`. * can also append `-not -path 'path/to/venv/*` to exclude `path/to/venv` recursively. * `xgettext` ([doc](https://www.gnu.org/software/gettext/manual/gettext.html#Template)): a utility looking for keyword and put string literals in a specific format for human translation * `--from-code=UTF-8`: designates encoding of files * `-o locale/lang.pot`: let `xgettext` write to `locale/lang.pot` * `-d lang`: default language domain is `lang` * `-k_t`: besides default keyword (including `_`, see `info xgettext` for detail), also look for `_t`, where the string literal (`msgid`) will be the first argument of this function call * `-k_t:1,2,3t`: look for `_t`, first arg is `msgid`, second arg is `msgid_plural`, 3 args in total * `-k_t:1,2c,2t`: look for `_t`, first arg is `msgid`, second arg is `msgctxt`, 2 args in total * `-f -`: let `xgettext` to read filenames from stdin, which is connected to `find` stdout * `-s`: sort output according to `msgid` this `locale/lang.pot` is called PO template, which is the source file for Crowdin translation. ### To initialize PO file for new language ```console $ msginit -i locale/lang.pot -l ll_CC -o locale/ll_CC/LC_MESSAGES/lang.po -s ``` explanation: * `-i locale/lang.pot`: input file location * `-l ll_CC`: target locale. `ll` should be a language code, and `CC` should be a country code * `-o locale/ll_CC/LC_MESSAGES/lang.po`: output file * `ll_CC`: same as above * `LC_MESSAGES`: GNU gettext conventional path to search for localized messages * `lang.po`: language domain and file format this `locale/ll_CC/LC_MESSAGES/lang.po` should be checked into VCS, later it will be converted into mechine readable format (`.mo`). ### To update PO file for existing translation ```console $ msgmerge -s locale/ll_CC/LC_MESSAGES/lang.po locale/lang.pot ``` ### To do actual translation just edit the `lang.po` file, either manually or via GUI applications like POEdit ### To generate machine readable MO file For a single locale: ```console $ msgfmt locale/ll_CC/LC_MESSAGES/lang.po -o locale/ll_CC/LC_MESSAGES/lang.mo ``` For all available locales: ```bash for f in locale/*/; do msgfmt $f/LC_MESSAGES/lang.po -o $f/LC_MESSAGES/lang.mo done ``` Since compiling `.po` files is useful to everyone, we also have a script in the repo that can do it without the need for the normal `gettext` tools: `python3 scripts/compile_lang.py` ### To merge 2 or more PO file ```console $ msgcat -s path/to/old.po [path/to/another.po] -o path/to/new.po ``` Note that `msgcat` cannot perform a 3-way merge, it will simply stack translations with same `msgid` on top of each other. If you use `msgcat` to merge multiple PO file, please check and fix the output before commit to Git. ================================================ FILE: locale/en_US/LC_MESSAGES/lang.po ================================================ # English translations for PACKAGE package. # Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # , 2020. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-06-29 20:32-0400\n" "PO-Revision-Date: 2020-06-29 20:35-0400\n" "Last-Translator: \n" "Language-Team: English\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "Black Hole" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "Cataclysmic Variable" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "Effects" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "Electrical" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "Exotic" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "Firestorm" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "Gamma" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "Magnetar" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "Matter" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "Metaliminal" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "Plasma" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "Pulsar" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "Ray" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "Red Giant" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "Sansha Incursion" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "Storm" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "System Effects" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "Triglavian Invasion" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "Wolf Rayet" ================================================ FILE: locale/es_ES/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2022-01-10 12:44\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " DPS: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " Apilar" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " Descarga: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "%d Atributo." msgstr[1] "%d Atributos." #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "Y Copia de seguridad de todos los ajustes" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "Y Ver ajustes ESI" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "Y Personaje" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "Y Editor de personajes" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "Y Cerrar todas las Pestañas" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "Y Cerrar pestaña" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "Y Editor de Patrones de Daños" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "Y Editores" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "Y Exportar Ajuste" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "Y Exportar habilidades necesarias" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "Y Archivo" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "Y Foros" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "Y Desde el portapapeles" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "Y General" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "Y Graficos" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "Y Ayuda" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "Y Configurar editor de implantes" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "Y importar fichero de personaje" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "Y importar accesorios" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "Y Gestionar ESI del personaje" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "Y Nueva pestaña" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "Y Optimizar precio del ajuste" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "Y Preferencias" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "Y Rehacer" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "Y Revertir Personaje" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "Y Guardar personaje" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "Y Editor perfil del objetivo" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "Y Copiar al Portapapeles" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "Y Desactivar los overrides" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "Y Activar los Overrides" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "Y Deshacer" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "Y Wiki" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(No se puede cambiar mientras pyfa se está ejecutando. Establecer mediante interruptores de línea de comandos.)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "0s" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "Habilidades" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "Abisal" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "Clima abisal" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "Activo" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "Habilidades activas" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "Efectos laterales activos" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "Aumento de escudo activo" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "Agregar personaje" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "Añadir error de personaje" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "Añadir potenciador de comando" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "Añadir Ajuste abierto actualmente" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "Añadir Efecto Ambiental" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "Añadir ajuste..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "Añadir ajustes" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "Añadir Perfil de destino" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "Añadir {0} A la Carga (x1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "Añadir {} A la Carga" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "Añadir {} A la bahia de los Drones {}" #: gui/additionsPane.py:45 msgid "Additions" msgstr "Adicionales" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "Adicionales Panel Copiar/Pegar" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "Addr:" #: gui/itemStats.py:196 msgid "Affected by" msgstr "Afectado por" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "Agilidad:\t%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "Tiempo para Alinear" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "Alinear:\t%.3fs" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "Todo" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "Todos los materiales relacionados con EVE-Online son propiedad de CCP hf." #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "Todos los archivos" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "Todos los requisitos previos de habilidad han sido cumplidos" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "Permitir notificaciones de pre-lanzamiento" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "Mostrar siempre Y = 0" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "Amarr (Armadura)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "Amarr (escudo)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "Entidades EDENCOM de Amarr" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "Imperio Amarr" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "Bodega de Armamento" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "Ángel" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "Cartel de Ángel" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "Indicadores animados" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "Anti-materia" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "Aplicar seleccion de implantes" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "Aplicar Mutaplasmio" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "Aplicar elementos proyectados" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "Aplicar ajustes de proxy" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "¿Estás seguro que deseas borrar todos los overrides?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "¿Está seguro de que desea ignorar las restricciones de ajuste para el ajuste actual? Esto podría conducir a resultados imprecisos y posibles errores." #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "Armadura" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "Armadura (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "Cantidad de reparación del Blindaje" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "Resistencia de la Blindaje" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "Blindaje restaurado" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "Blindaje: " #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "Ashimmu (Blood Raiders)" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "Asteriode" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "Atacante" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "Atributo" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "Atributo y overrides" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "Editor de atributos" #: gui/itemStats.py:177 msgid "Attributes" msgstr "Cualidades" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "Automático" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "Auto utilizará el mismo idioma de uso de pyfa si está disponible, de lo contrario Inglés" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "Detectar automáticamente la configuración del proxy" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "Auto-detectar: " #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "Eje X:" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Eje Y:" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "Volver" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "Respaldar {} se ajusta a: {}" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "Copia de seguridad de todos los accesorios en un archivo XML" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "Copia de seguridad de Ajustes" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "Barión" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "Valor base" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "Crucero de Batalla" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "Acorazado" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "Tenga en cuenta que los ajustes ya procesados no se han guardado" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "Bioluminiscente" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "Blood Raiders" #: graphs/style.py:54 msgid "Blue" msgstr "Azúl" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "Bombas" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "Potenciador" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "Potenciadores" #: graphs/style.py:82 msgid "Bright" msgstr "Brillo" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "Navegar por los Ajustes EVE" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "Distancia al Bache" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "Velocidad del bache" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "Quemador" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "CONCORD" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "CPU" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "Ficheros CSV" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "Caldari (Blindaje)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "Caldari (Escudo)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "Entidades EDENCOM Caldari" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "Territorio Caldari" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "Calibración" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "Cantidad de Cap" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "Neutralizacion del Cap por segundo" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "Regeneracion del Cap" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "Capacitador" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "Capacitador delta:" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "Capacitador restaurado" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "Estabilidad del capacitador" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "Plomo carbonizado" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "Carga" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "Artículos de Carga" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "Bahía de Carga" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "Capacidad de carga: " #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "Transportador" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "Cáustico" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "Ruta del certificado:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "Cambiar %s Habilidades" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "Cambiar la cantidad" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "Cambiar habilidades" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "Cambiar la carga en todos los módulos del mismo tipo" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "" #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "" #: gui/characterEditor.py:771 msgid "Character:" msgstr "" #: gui/characterSelection.py:47 msgid "Character: " msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "ContextMenu|ProjectedEffectManipulation|Invasion Triglavian" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "Copiar" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "Copiar todo {}" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "Copiar las habilidades que faltan" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "Copiar Módulo al Portapapeles" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "Copiar Seleccionado {}" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "Copiar y pegar el bloque de texto proporcionado por pyfa.io" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "No se pudo importar desde el portapapeles" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "No se puede importar desde el portapapeles:" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "No se pudo importar desde el portapapeles: errores desconocidos" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "Crucero" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "Cruor (Blood Raiders)" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "Actual" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "Valor Actual" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "Aplicación personalizada" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "Aplicación personalizada" #: graphs/style.py:57 msgid "Cyan" msgstr "Turquesa" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "DPS" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "Editor de Patrones de Daño" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "Perfil de Daño" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "El nombre del perfil de daño ya está en uso, por favor elija otro." #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "Estadísticas de Daño" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "Daño infligido" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "Damps: reducción del rango de bloqueo" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "Daredevil (Serpentis)" #: graphs/style.py:81 msgid "Dark" msgstr "Oscuro" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "Todos los niveles de la materia oscura" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "Punto de guión" #: graphs/style.py:87 msgid "Dashed" msgstr "Discontinua" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "Base de datos" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "Espacio muerto" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "Registro de Depuración Activado" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "Precios de mercado por defecto:" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "Valor predeterminado: %0.3f" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "Defensa" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "Definido en millones de kilogramos" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "Eliminar" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "Eliminar todos los perfiles de patrón de daño" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "Eliminar todos los precios" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "Borrar todos los Perfiles de Objetivo" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "Eliminar todo de Eve" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "Borrar de EVE" #: gui/itemStats.py:189 msgid "Dependents" msgstr "Dependencias" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "Uranio Desplazado" #: gui/itemStats.py:174 msgid "Description" msgstr "Descripciòn" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "Destructor" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "Balizas destructibles" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "Herramientas de desarrollo" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "Desactivar Restricciones de ajuste" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "Desactivado" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "Deshabilitar los menús contextuales puede mejorar la capacidad de respuesta.\n" "Puedes mantener pulsada la tecla {} + clic derecho para mostrar todos los elementos del menú independientemente de estos ajustes." #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "Distancia" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "Distancia entre el atacante y el objetivo, como se ve en la visión general (superficie a superficie)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "Distancia entre el atacante y el objetivo, como se ve en el resumen (superficie a superficie)\n" "Cuando se establece coloca al objetivo que está lejos del atacante\n" "Cuando no se establece, las armas del atacante siempre golpean al objetivo" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "Distancia entre el atacante y el objetivo, como se ve en la visión general (superficie a superficie)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "¿Realmente quieres eliminar {} ({}) del EVE?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "No volver a recordarme por esta versión" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "¿No ves tu personaje EVE en la lista?" #: graphs/style.py:88 msgid "Dotted" msgstr "Punteado" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "Descargar" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "Arrastra un ajuste en esta lista para verlo graficamente" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "Arrastra un cabezal en esta lista para que tu cabezal se grafique contra ella" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "Arrastra un ajuste a esta zona" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "Arrastra un objeto o encaja, o usa el menú de clic derecho para ver los efectos del agujero del gusano" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "Dramiel (Angel)" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "Dread" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "Dread/Subcaps" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "Drifter" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "Entidades Drifter" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "Dron" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "Modo Dron" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "Ancho de banda de dron" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "Bahía de drones" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "Alcance de Dron" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "Drones" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "Drones activos" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "Volcar todos los registros" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "Exportar a ESI" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "ECM: fuerza combinada" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "Ficheros de ajuste de texto EFT" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "EHP" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "EM" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "EM resistencia" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "EMP" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "ERROR" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "Archivos de caracteres XML API EVE" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "Datos EVE:" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "Archivo de ajuste HTML EVE IGB" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "EVE SSO" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "Servidores EVE (API && CREST importar)" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "Archivo de ajuste EVE XML" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "Archivos de ajuste EVE XML" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "Archivo XML de aprendizaje de habilidades EVEMon" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "Archivo XML de aprendizaje de habilidades EVEMon" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "DPS efectivo" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "HP Efectivo: " #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "Capacidad efectiva" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "Daño efectivo infligido" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "Salva efectiva" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "Efectivo: %d HP" #: gui/itemStats.py:192 msgid "Effects" msgstr "Efectos" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "Electrico T0/T1/T2" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "Electrico T3 (Alguna Sala T5)" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "Electrico T4/T5/T6" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "Resistencia electromagnética" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "Bomba de electrón" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "Estadísticas de Guerra Electrónica" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "Vacío" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "Vaciar vista de mercado" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "Vaciar pestaña" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "Habilitar Restricciones de Ajuste" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "Activar red" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "Habilitar todos los botones meta disponibles" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "Activar todos los botones meta" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "Habilitar todos los botones meta durante una duración de búsqueda / recientes" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "Activar el botón meta del elemento" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "Activar el botón meta del elemento, deshabilitar a otros" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "Activar el botón meta disponible a la izquierda" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "Habilitar formato mínimo" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "Habilitado" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "Forzar requerimientos estrictos de nivel de habilidad" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "Introduce un nombre para tu nuevo personaje:" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "Introduzca un nombre para su nuevo Conjunto de Implantes:" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "Enyo" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "Error" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "Error obteniendo información de habilidad" #: gui/errorDialog.py:68 msgid "Error!" msgstr "¡Error!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "Plasma exótico" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "Exótico T0/T1/T2" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "Exotico T3 (Algunas salas T5)" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "Exótico T4/T5/T6" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "Desplegar todos" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "Explosivo" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "Resistencia explosiva" #: gui/propertyEditor.py:39 msgid "Export" msgstr "Respaldar" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "Exportar todos los ajustes a &HTML" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "Error al exportar" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "Exportar Ajuste" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "Exportar Fittings en una versión HTML mínima, sólo contiene los enlaces de accesorios sin ningún estilo visual" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "Exportar estadísticas del artículo" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "Exportar Cargas Cargadas" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "Exportar Habilidades Necesitadas Como..." #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "Exportar un ajuste al portapapelos" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "Exportar potenciadores" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "Exportar contenidos de carga" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "Exportar contenido de contenedor" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "Exportar cargas cargadas en módulos" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "Exportar ajuste a EVE" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "Exportar ajuste al archivo HTML (establecido en Preferencias)" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "Gas Retenido" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "General" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "Generando archivo HTML en: {}" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "Generico" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "Obtener habilidades" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "Porcentaje global por defecto de Spoolup:" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "Ir al hilo del Foro EVE Online" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "Ir al wiki en GitHub" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "Otorgar habilidades perdidas" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "Gráficos" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "Gravimétrico" #: graphs/style.py:53 msgid "Green" msgstr "Verde" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "Guristas" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "PS" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "Exportar HTML" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "HTML Export (Archivo > Exportar HTML) le permite exportar toda su base de datos a un archivo HTML en la ubicación especificada. Este archivo se puede utilizar para abrir fácilmente los ajustes en un programa de ajuste basado en web" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "Halcón" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "Pesado" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "Ocultar ajustes recientes" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "Ocultar grupos de naves vacíos" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "Alto" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "Alta seguridad" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "Casco" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "Casco (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "Cantidad de reparación del Casco" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "Resistencia del Casco" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "Casco restaurado" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "Casco: " #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "Cargas hibridas" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "ID" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "Objetivo ideal" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "Ignorar Rango de control de drones" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "Ignorar rango de bloqueo" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "Ignorar resistencia objetivo" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "Seleccion de Implantes" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "Editor de seleccion de Implante" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "El nombre del Set de Implantes ya está en uso, por favor elija otro." #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "Implantes" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "Implantes Y potenciadores" #: gui/propertyEditor.py:38 msgid "Import" msgstr "Importar" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "Error al importar" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "Importar habilidades" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "Importar un ajuste desde el portapapeles" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "Importar caracteres en pyfa desde el archivo" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "Importar accesorios en pyfa" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "Importar conjuntos de implantes del portapapeles" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "Importar Overrides" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "Importar patrones del portapapeles" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "Importar perfiles del portapapeles" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "Importar archivo de Overrides de pyfa" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "Importar habilidades del portapapeles" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "Importar a pyfa" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "Importando personaje..." #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "Importando Ajustes" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "La importación de habilidades a este personaje establecerá los niveles de habilidad pendientes. Para guardar las habilidades de forma permanente, por favor haga clic en el botón Guardar en la parte inferior de la ventana después de importar" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "Incluye etiquetas de formato para pegar directamente en los boletines del cuerpo, MOTD, etc." #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "Patrón de daño entrante" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "Formato incorrecto (solo decimales)" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "Rango incorrecto (debe ser 0-100)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "Bodega industrial" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "Valor del atributo modificador de inercia de la nave de destino" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "Infierno" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "Infrarrojo" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "Interceptor" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "¿Interesado en ayudar con las traducciones?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "Ruta inválida" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "Ficha no válida" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "Invasion" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "Iridio" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "Hierro" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "Artículo" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "Grupo de salto del articulo de mercado" #: gui/itemStats.py:58 msgid "Item stats" msgstr "Estadisticas del articulo" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "Jaguar" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "Khanid" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "Cinético" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "Resistencia cinética" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "Ladar" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "Idioma (requiere reiniciar)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "Bodega grande" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "Ultimos " #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "Puntos fuertes del lanzador" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "Plomo" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "Menos daño" #: gui/characterEditor.py:343 msgid "Level" msgstr "Nivel" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "Nivel %s" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "Nivel {}" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "Nivel {}" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "Ligero" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "Nave de emision limitada" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "Cargas Cargadas" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "Cargando los ajustes anteriores..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "Servidor local" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "Localizado" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "Tiempo de Bloqueo" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "Tiempos de bloqueos" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "Reducción del rango de bloqueo" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "Tiempo de Bloqueo" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "Inicio de sesión con SSO" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "Ubicación de archivos de log:" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "Iniciar sesión" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "Método de autenticación de inicio de sesión" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "Largo Alcance" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "Bajo" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "Baja seguridad" #: graphs/style.py:56 msgid "Magenta" msgstr "Magenta" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "Magnetométrico" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "Bahía de mantenimiento" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "Administrar personajes" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "Manual" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "Configuración manual del proxy" #: gui/mainFrame.py:180 msgid "Market" msgstr "Mercado" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "Mercado y precios" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "&Mercado y Precios" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "Selección de Grupo de Mercado" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "Búsqueda de mercado y artículos recientes" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "Retardo de búsqueda de mercado (ms):" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "Masa\t{:,.0f}kg" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "Bahía de materiales" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "Distancia máxima de deformación: %.1f UA" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "Velocidad Máxima" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "Med" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "Bodega mediana de nave" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "Meson" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "Tormenta Metaliminal" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "Microondas" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "Bodega de Mineral" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "Mínimo" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "Rendimiento minero" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "Minmatar (Blindaje)" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "Minmatar (Escudo)" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "Entidades EDENCOM Minmatar" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "República Minmatar" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "Miscelaneos" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "Datos Miscelaneos" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "Reducción del rango de vuelo de misiles" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "Misiles" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "Misión" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "Mezclado" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "Mjolnir" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "Movilidad" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "Modo:" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "Módulo" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "Momentum" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "Legión Mordus" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "Más daño" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "Multifrecuencia" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "Multispectral" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "Atributos Mutados" #: gui/itemStats.py:170 msgid "Mutations" msgstr "Mutaciones" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "" #: gui/additionsPane.py:87 msgid "Notes" msgstr "" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "" #: graphs/style.py:55 msgid "Orange" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "Por favor, selecciona otro carácter o crea uno nuevo." #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "Por favor verifique la ubicación de ruta de las preferencias de Pyfa." #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "Parcela con diferentes municiones..." #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "Plutonio" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "Barra" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "Puerto:" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "Red de Energía" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "Preferencias" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "Pulsar este botón hará que todos los registros en memoria escriban en el archivo de registro:" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "Precio" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "Precios actualizados" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "Tamaño de sonda: %.3f" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "Perfiles exportados al portapapeles" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "Perfiles importados correctamente del portapapeles" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "Proyectar sobre Ajustes activos" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "Proyectar en los ajustes" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "Proyectar {0} en Ajustes" #: gui/additionsPane.py:81 msgid "Projected" msgstr "Proyectado" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "Objeto proyectado" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "Munición de proyectil" #: gui/itemStats.py:200 msgid "Properties" msgstr "Atributos" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "Propulsión" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "Proton" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "Configuración de proxy" #: graphs/style.py:58 msgid "Purple" msgstr "Púrpura" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "Clima PvP" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "Pyfa (el Asistente de Fitting Python) es una aplicación independiente de código abierto capaz de crear y simular accesorios para MMORPG EVE-Online con un alto grado de precisión. Pyfa puede ejecutarse en todas las plataformas donde Python y wxWidgets son soportados." #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "Comprobaciones de actualización de Pyfa" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "Pyfa puede comprobarte y notificarte automáticamente de nuevas versiones. Esta característica está activada en la configuración de la red. Aquí, puede permitir notificaciones de pre-lanzamiento y ver notificaciones de liberación suprimidas, si las hay." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "Selección de idioma de Pyfa desactivada. Compruebe si se han generado archivos .mo.\n" "Consulte locale/README.md para obtener información." #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "Bodega quafe" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "Cantidad de artículos activos" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "Cantidad de todos los artículos" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "Radar" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "Radio" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "Radio" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "Estadísticas aleatorias" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "Alcance" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "HP Bruto: " #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "Bruto: %d HP" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "Rehabilitando las restricciones de ajuste para este ajuste también eliminará cualquier objeto ilegal del ajuste. ¿Quieres continuar?" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "Ajustes recientes" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "Artículos usados recientemente" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "Tasas de recarga" #: graphs/style.py:52 msgid "Red" msgstr "Rojo" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "Rehacer la acción deshecha más reciente" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "Actualizar" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "Actualizar Habilidades" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "Reforzado" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "Recargar RRs auxiliares" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "Reparaciones remotas" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "Reparaciones remotas" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "Eliminar personaje" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "Quitar los Overrides del elemento" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "Eliminar {item}{stack}" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "Renombrar" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "Reabrir los ajustes anteriores al inicio" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "Velocidad de reparación" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "Reemplazar artículos por alternativas más baratas" #: gui/itemStats.py:185 msgid "Requirements" msgstr "Requisitos" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "Reiniciar" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "Reiniciar supresión" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "Restablecer predeterminados" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "Modo resistente" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "Multiplicador de resistencia: " #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "Resistencias" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "Recursos" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "Revertir cambios" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "Revertir a {}" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "Rig" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "Rogue Drone" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "Rogue Drone Entidades" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "Rogue Drones" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "Tiempo de ejecución" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "Gestión de caracteres SSO" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "Inicio de sesión SSO" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "Modo SSO" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "Bodega de salvamento" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "Texto del título del ejemplo en inglés" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "Sansha" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "Incursión Sansha" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "Nación Sanshas" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "Guardar copia de seguridad como..." #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "Guardar archivo CSV" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "Guardar personaje y como..." #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "Guardar personaje como..." #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "Guardar Ajuste como..." #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "Guardar sobrescritos como..." #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "Guardar como nuevo conjunto de implantes" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "Escanear res." #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "Bomba Abrasadora" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "Plaga" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "Buscar accesorios" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "Estado de sec: {0:.2f}" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "Estado de seguridad se utiliza en algunos CONCORD" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "Seeker" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "Seleccionar formato" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "Enviando solicitud y esperando respuesta" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "Sensor str." #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "Centinela" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "Estantes separados" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "Serpentis" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "Servicio" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "Establecer estado de seguridad" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "Establecer como patrón de daño" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "Definir destino de exportación" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "Establecer {} como patrón de daño" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "Configurar exportados al portapapeles" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "Establecer un clon alfa no reemplaza las habilidades del personaje, sino que las limita a niveles alfa." #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "Tirador Experto" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "Escudo" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "Escudo (+T2 DCU)" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "Regeneración de escudo" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "Cantidad de escudo" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "Regeneración de escudo" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "Resistencia del escudo" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "Escudo restaurado" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "Tanque de escudo/armadura" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "Escudo: " #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "Nave" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "Nave básica" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "Grupos de naves" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "Bodega de nave" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "Corto Alcance" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "Mostrar etiquetas de estante" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "Mostrar grupos de naves vacíos" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "Mostrar herramientas de pestaña de ajuste" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "Mostrar la leyenda" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "Mostrar accesos directos del mercado" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "Mostrar descripción del navegador de nave" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "Bomba del Shrapnel" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "Efectos laterales" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "Firma" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "Radio de firma\n" "Dejar en blanco para valor infinito grande" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "Aumento del radio de la firma" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "Iconos de seda establecidos por famfamfam.com - Licencia Creative Commons Attribution 2.5" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "Habilidad" #: gui/characterEditor.py:160 msgid "Skills" msgstr "Habilidades" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "Habilidades requeridas:" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "Durmiente" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "Entidades Durmientes" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "Durmientes" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "Bodega de nave pequeña" #: graphs/style.py:86 msgid "Solid" msgstr "Sólido" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "Velocidad" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "Reducción de velocidad" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "Dividir {} Pila" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "Poner arriba en la cola" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "Poner arriba en cola" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "Ciclos de subida en cola" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "" #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "" #: gui/characterEditor.py:901 msgid "Success" msgstr "" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "Resistencia térmica" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "Esta es una acción destructiva que eliminará todos los precios almacenados en caché fuera de la base de datos.\n" "¿Está seguro de que desea hacer esto?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "Esta es una acción destructiva que eliminará todos los precios almacenados en caché fuera de la base de datos.\n" "¿Está seguro de que desea hacer esto?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "Esta es una acción destructiva que eliminará todos los perfiles de destino.\n" "¿Está seguro de que desea hacer esto?" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "Esta opción pasa directamente por EVE SSO, pero requiere más configuración. Use esto si pyfa. o está bloqueado por alguna razón, o si usted no desea ruta de datos throguh pyfa.io." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "Esta opción permite a los usuarios copiar y pegar información de la aplicación web para permitir el acceso a caracteres. Usa esto si tienes problemas con el servidor local." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "Esta opción enlaza las conexiones SSO a través de pyfa.io, lo que le permite iniciar sesión fácilmente sin ninguna configuración." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "Esta opción inicia un servidor web local al que la aplicación web volverá a llamar con información acerca del inicio de sesión de caracteres." #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "Thorium" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "Thukker" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "Tiempo" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "Aleación de titanio" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "Cambiar nombres" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "Alternar vista" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "Alternar modo de visualización" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "Total" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "Precio total incluido" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "Total reparado" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "Total: " #: gui/itemStats.py:166 msgid "Traits" msgstr "Rasgos" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "Triglavian" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "Entidades Triglavianas" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "Invasión Triglaviana" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "Tungsteno" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "Puntos fuertes de la torreta" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "Reducción óptima del alcance de la torreta" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "Tipo" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "Tipo: {0}\n" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "Tipo: {}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "Ultravioleta" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "Deshacer la acción más reciente" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "Uniforme" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "Uniforme (25%)" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "Uniforme (50%)" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "Uniforme (75%)" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "Uniforme (90%)" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "Desaprender" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "Actualización Disponible" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "Actualizaciones" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "Uranio" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "Usar Implantes de Personaje" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "Usar Implantes específicos de Ajuste" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "Usar simulador de capacitador" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "Usar implantes de personajes por defecto para nuevos ajustes" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "Usar personaje global" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "Usar patrón de daño global" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "Nombre de usuario:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "Utilizando ruta ejecutable para la base de datos guardada de ajustes" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "Variaciones" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "Venganza" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "" #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "pyfa.io" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "pyfa:" #: eos/utils/stats.py:123 msgid "th" msgstr "th" #: eos/utils/stats.py:123 msgid "thermal" msgstr "térmico" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "{0} Grupo de Mercado" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "{context}Stats: {name}{debug_info}" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "{{0:.{0}f}} Izda" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "{{0:.{0}f}} sobre" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{} (predeterminado)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "{} Copia" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "{} Estadisticas" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "{} {} Ranuras" msgstr[1] "{} {} Ranuras" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "{}% de probabilidad de ser atrapado" ================================================ FILE: locale/fr_FR/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2022-01-03 22:03\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " DPS : " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " Empiler" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " Frappe \n" "Alpha: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "%d attribut." msgstr[1] "%d attributs." #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "&Sauvegarder toutes les configurations" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "&Parcourir les configurations ESI" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "&Personnage" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "&Editeur de Personnage" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "Fermer tout les onglets" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "Fermer l'onglet" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "&Éditeur de modèles de dégâts" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "Éditeurs" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "&Exporter la configuration" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "&Exporter les compétences requises" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "&Fichier" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "Depuis le presse-papiers" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "Général" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "&Graphiques" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "&Aide" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "&Éditeur de groupe d'implants" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "&Importer un fichier de personnage" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "&Importer des configurations" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "&Gérer les personnages ESI" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "&Nouvel onglet" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "&Optimiser le prix de la configuration" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "&Préférences" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "&Répéter" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "&Rétablir le personnage" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "&Enregistrer le personnage" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "Éditeur de profil de cible" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "Ajouter au presse-papier" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "&Désactiver les surchauffes" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "&Activer les surchauffes" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "&Annuler" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(Ne peut pas être modifié pendant que pyfa est en cours d'exécution. Peut se modifier via les arguments de lancement)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "Capacités" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "Abysses" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "Météo abyssale" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "Activé(e)" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "Ajouter un personnage" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "" #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "" #: gui/additionsPane.py:45 msgid "Additions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "" #: gui/itemStats.py:196 msgid "Affected by" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "Temps d'aligne" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "" #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "" #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "" #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "" #: gui/itemStats.py:177 msgid "Attributes" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "" #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "" #: graphs/style.py:54 msgid "Blue" msgstr "" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "" #: graphs/style.py:82 msgid "Bright" msgstr "" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "Condensateur" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "Changer la quantité" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "Les changements requièrent un redémarrage de pyfa pour prendre effet." #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "" #: gui/characterEditor.py:771 msgid "Character:" msgstr "" #: gui/characterSelection.py:47 msgid "Character: " msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "Copier" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "Tout Copier" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "Copier les compétences manquantes" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "DPS" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "" #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "" #: graphs/style.py:81 msgid "Dark" msgstr "" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "" #: gui/itemStats.py:189 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "" #: gui/itemStats.py:174 msgid "Description" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "" #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "" #: graphs/style.py:88 msgid "Dotted" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "PVE" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "DPS effectifs" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "PV effectifs: " #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "" #: gui/itemStats.py:192 msgid "Effects" msgstr "" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "Vide" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "Erreur" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "" #: gui/errorDialog.py:68 msgid "Error!" msgstr "" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "" #: gui/propertyEditor.py:39 msgid "Export" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "" #: graphs/style.py:53 msgid "Green" msgstr "" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "" #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "" #: gui/propertyEditor.py:38 msgid "Import" msgstr "" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "" #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "Vous voulez aider à traduire ?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "Fer" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:58 msgid "Item stats" msgstr "" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:343 msgid "Level" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "" #: graphs/style.py:56 msgid "Magenta" msgstr "" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "" #: gui/mainFrame.py:180 msgid "Market" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "Divers" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "" #: gui/itemStats.py:170 msgid "Mutations" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "Nom" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "Aucun profil" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "Aucun" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "" #: gui/additionsPane.py:87 msgid "Notes" msgstr "" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "" #: graphs/style.py:55 msgid "Orange" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "" #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "" #: gui/additionsPane.py:81 msgid "Projected" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "" #: gui/itemStats.py:200 msgid "Properties" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "" #: graphs/style.py:58 msgid "Purple" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "" #: graphs/style.py:52 msgid "Red" msgstr "" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "" #: gui/itemStats.py:185 msgid "Requirements" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "" #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "" #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "" #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "" #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "" #: gui/characterEditor.py:160 msgid "Skills" msgstr "" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "" #: graphs/style.py:86 msgid "Solid" msgstr "" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "" #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "" #: gui/characterEditor.py:901 msgid "Success" msgstr "Réussi" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "" #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "" #: gui/itemStats.py:166 msgid "Traits" msgstr "" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "" #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "explosif" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "cinétique" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "" #: eos/utils/stats.py:123 msgid "th" msgstr "" #: eos/utils/stats.py:123 msgid "thermal" msgstr "" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "" msgstr[1] "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "" ================================================ FILE: locale/it_IT/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2021-05-18 17:34\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: it\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr "" #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " Impila" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " Raffica: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "" msgstr[1] "" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "&Backup di Tutti gli Equipaggiamenti" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "&Sfoglia Equipaggiamenti ESI" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "&Personaggio" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "&Editor del Personaggio" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "&Chiudi Tutti le Schede" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "&Chiudi Scheda" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "&Editor Schema dei Danni" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "&Editor" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "&Esporta Equipaggiamenti" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "&Esporta Abilità Necessarie" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "&Forum" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "&Dagli Appunti" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "&Generale" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "&Grafici" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "&Aiuto" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "&Editor Set di Impianti" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "&Importa File del Personaggio" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "&Importa Equipaggiamento" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "&Gestione ESI dei Personaggi" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "&Nuova Scheda" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "&Ottimizza Prezzo Equipaggiamento" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "&Preferenze" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "&Ripristina" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "&Ripristina Personaggio" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "&Salva Personaggio" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "&Editor Caratteristiche Bersaglio" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "&Copia negli Appunti" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "&Disattiva Sovraccarico" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "&Attiva Sovraccarico" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "&Annulla" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(Non può essere cambiato mentre pyfa è in esecuzione. Imposta tramite interfaccia a riga di comando)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "Abilità" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "Abissale" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "Meteo Abissale" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "Attivo" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "Abilità Attive" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "Effetti Collaterali Attivi" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "Attiva Booster dello Scudo" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "Aggiungi Personaggio" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "Errore nell'Aggiunta del Personaggio" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "Aggiungi Booster dei Comandi" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "Aggiungi Equipaggiamento Attualmente Aperto" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "Aggiungi Effetto Ambientale" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "Aggiungi Equipaggiamento..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "Aggiungi Equipaggiamenti" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "Aggiungi {0} alla Stiva(x1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "Aggiungi {} alla Stiva" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "Aggiungi {} al Vano Droni{}" #: gui/additionsPane.py:45 msgid "Additions" msgstr "Aggiunte" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "Pannello Aggiunte Copia/Incolla" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "" #: gui/itemStats.py:196 msgid "Affected by" msgstr "Affetto da" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "Agilità:\t%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "Tempo di allineamento" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "Allineamento:\t%.3fs" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "Tutto" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "Tutti i materiali relativi a EVE-Online sono di proprietà di CCP hf." #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "Tutti i File" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "Tutti i prerequisiti dell'abilità sono stati soddisfatti" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "Consenti notifiche pre-rilascio" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "Mostra sempre Y = 0" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "Amarr (Armatura)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "Amarr (Scudo)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "Vano Munizioni" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "Anima gli indicatori" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "Applica Set Impianti" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "Applica Mutaplasmid" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "Applica Oggetti Progettati" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "Applica Impostazioni Del Proxy" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "Sei sicuro di voler eliminare tutti gli override?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "Sei sicuro di voler ignorare le restrizioni dell'attuale equipaggiamento? Potrebbe portare a risultati molto inaccurati e a possibili errori." #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "Armatura" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "Armatura (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "Quantità di armatura riparata" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "Resistenze dell'armatura" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "Armatura: " #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "Asteroide" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "Aggressore" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "Attributo" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "Attributo &Override" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "Editor Attributi" #: gui/itemStats.py:177 msgid "Attributes" msgstr "Attributi" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "Automatico" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "Impostazioni proxy rilevate automaticamente" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "Rilevato automaticamente: " #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "Asse X:" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Asse Y:" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "Indietro" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "Backup {} equipaggiamenti su: {}" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "Esegui backup di tutti gli equipaggiamenti su un file XML" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "Backup equipaggiamenti" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "Valore Base" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "Sii consapevole che gli equipaggiamenti già processati non sono stati salvati" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "Bioluminescenza" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "" #: graphs/style.py:54 msgid "Blue" msgstr "Blu" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "Bombe" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "Booster" #: graphs/style.py:82 msgid "Bright" msgstr "Luminoso" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "Sfoglia gli Equipaggiamenti di EVE" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "Distanza dell'urto" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "Velocità dell'urto" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "File CSV" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "Caldari (Armatura)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "Caldari (Scudi)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "Calibrazione" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "Quantità di condensatore" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "Condensatore neutralizzato al secondo" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "Condensatore rigenerato" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "Condensatore" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "Stabilità del condensatore" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "Carico" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "Articoli Del Carico" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "Stiva" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "Stiva: " #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "Cambia %s Abilità" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "Cambia Quantità" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "Cambia Abilità" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "Cambia la carica in tutti i moduli dello stesso tipo" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "Cambia {0} Quantità" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "Cambia {} Portata" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "I cambiamenti richiedono il riavvio di pyfa per avere effetto." #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "Personaggio" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "Editor del Personaggio" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "ID del Personaggio" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "Nome del personaggio già in uso, sceglierne un altro." #: gui/characterEditor.py:771 msgid "Character:" msgstr "Personaggio:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "Personaggio: " #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "Carica" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "Sistema di Sicurezza della Citadel" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "Cancella Tutto" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "ID del Client:" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "" #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "Statistiche del Danno" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "Danni inflitti" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "" #: graphs/style.py:81 msgid "Dark" msgstr "" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "Definito in milioni di chilogrammi" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "Elimina" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "Elimina Tutti i Profili degli Schemi dei Danni" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "Elimina Tutti I Prezzi" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "Elimina Tutti i Profili dei Bersagli" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "Elimina da EVE" #: gui/itemStats.py:189 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "" #: gui/itemStats.py:174 msgid "Description" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "Strumenti dello Sviluppatore" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "Disabilitato" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "" #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "Distanza" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "Distanza tra aggressore e bersaglio, come si vede sull'interfaccia (terra-terra)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "Distanza tra aggressore e bersaglio, come si vede sull'interfaccia (terra-terra)\n" "Quando è impostata, piazza il bersaglio a quella distanza dall'aggressore\n" "Quando non è impostata, le armi dell'aggressore colpiscono sempre" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "Distanza tra la nave riparatrice ed il bersaglio, come si vede sull'interfaccia (terra-terra)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "Vuoi veramente eliminare {} ({}) da EVE?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "Non ricordarmi per questa versione" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "Non vedi il tuo personaggio di EVE nella lista?" #: graphs/style.py:88 msgid "Dotted" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "Modalità Drone" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "Larghezza banda del drone" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "Stiva Droni" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "Portata Drone" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "Droni" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "Droni attivi" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "Resistenza EM" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "ERRORE" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "HP Effettivi: " #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "Danni effettivi inflitti" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "Effettivi %d HP" #: gui/itemStats.py:192 msgid "Effects" msgstr "Effetti" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "T3 Elettrico (Alcune Stanze T5)" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "Errore" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "" #: gui/errorDialog.py:68 msgid "Error!" msgstr "Errore!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "Espandi Tutto" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "Esplosivo" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "Resistenza esplosiva" #: gui/propertyEditor.py:39 msgid "Export" msgstr "Esporta" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "Esporta tutti gli equipaggiamenti in &HTML" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "Errore nell' Esportazione" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "Esporta Equipaggiamento" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "Esporta equipaggiamenti in una versione HTML minimale, contenente solo l'equipaggiamento senza alcuno stile visivo" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "Esporta Statistiche Articolo" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "Esporta Cariche Caricate" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "Esporta booster" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "Esporta contenuti del carico" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "Esporta impianti" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "" #: graphs/style.py:53 msgid "Green" msgstr "" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "" #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "Ignora la Portata del Drone" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "" #: gui/propertyEditor.py:38 msgid "Import" msgstr "" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "" #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:58 msgid "Item stats" msgstr "" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:343 msgid "Level" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "" #: graphs/style.py:56 msgid "Magenta" msgstr "" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "" #: gui/mainFrame.py:180 msgid "Market" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "" #: gui/itemStats.py:170 msgid "Mutations" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "" #: gui/additionsPane.py:87 msgid "Notes" msgstr "" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "" #: graphs/style.py:55 msgid "Orange" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "" #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "" #: gui/additionsPane.py:81 msgid "Projected" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "" #: gui/itemStats.py:200 msgid "Properties" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "" #: graphs/style.py:58 msgid "Purple" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "" #: graphs/style.py:52 msgid "Red" msgstr "" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "" #: gui/itemStats.py:185 msgid "Requirements" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "" #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "" #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "" #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "" #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "" #: gui/characterEditor.py:160 msgid "Skills" msgstr "" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "" #: graphs/style.py:86 msgid "Solid" msgstr "" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "Dividi {} Pila" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "Stabile: " #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "Quantità iniziale di condensatore" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "Quantità iniziale di scudo" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "Pannello Statistiche" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "Fissa sull'Aggressore" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "Fissa al Bersaglio" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "Sottosistema" #: gui/characterEditor.py:901 msgid "Success" msgstr "Successo" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "Abilità acquisite con successo" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "Supporto" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "Soppressione di {0} Notifiche" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "Sostenuto" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "Resistenze T1" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "Resistenze T2" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "Modalità Tattica" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "Bersaglio" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "Profilo Bersaglio" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "Editor Profilo Bersaglio" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "Nome del Profilo Bersaglio già in uso, sceglierne un altro." #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "Resistenze Del Bersaglio" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "Distanza percorsa dal bersaglio" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "Fattore di inerzia del bersaglio" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "Massa del bersaglio" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "Resistenze Del Bersaglio" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "Velocità del bersaglio" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "Bersaglio && Varie" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "Bersagli" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "File di testo di addestramento di abilità" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "Il ritardo tra la pressione del pulsante e la ricerca nel mercato. Può aiutare a ridurre il lag quando si digita velocemente nella casella di ricerca del mercato." #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "Si è verificato il seguente errore" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "Il seguente percorso non è valido o non esiste:" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "Si è verificato un errore nel validare il token SSO del personaggio. Riprova ad accedere al personaggio per reimpostare il token." #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "Si è verificato un problema nell'avvio del server localizzato, prova ad impostare il Metodo di Autenticazione dell'Accesso andando su Preferenze-> EVE SSO-> Metodo di Autenticazione dell'Accesso. Se questo non risolve il problema si prega di sottoporre il problema a GitHub." #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "Termico" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "Resistenza Termica" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "Questa è un'azione distruttiva che cancellerà tutti i prezzi salvati nel cache dal database.\n" "Sei sicuro di volerlo fare?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "Questa è un'azione distruttiva che eliminerà tutti i profili di schema dei danni.\n" "Sei sicuro di volerlo fare?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "Questa è un'azione distruttiva che eliminerà tutti i profili dei bersagli.\n" "Sei sicuro di volerlo fare?" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "Questa opzione suggerisce all'utente di copiare e incollare le informazioni per l'accesso al personaggio dall'applicazione web. Usa questo se hai problemi con il server locale." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "Quest'opzione dirige i Login SSO attraverso pyfa.io, permettendoti di accedere facilmente senza alcuna configurazione. In caso di dubbio, usare quest'opzione." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "Quest'opzione avvia un webserver locale al quale la web application riferirà le informazioni sul login del personaggio." #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "Tempo" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "Mostra/Nascondi Nomi" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "Attiva/Disattiva Visualizzazione" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "Attiva/Disattiva modalità anteprima" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "Totale" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "Prezzo Totale Comprende" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "Totale riparato" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "Totale: " #: gui/itemStats.py:166 msgid "Traits" msgstr "Tratti" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "Invasione dei Triglavian" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "Punti d'attacco delle torrette" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "Riduzione della portata ottimale della torretta" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "Tipo" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "Tipo:{0}\n" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "Tipo: {}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "Annulla l'azione più recente" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "Uniforme" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "Uniforme (25%)" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "Uniforme (50%)" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "Uniforme (75%)" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "Uniforme (90%)" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "Disapprendi" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "Aggiornamento Disponibile" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "Aggiorna" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "Usa Impianti del Personaggio" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "Usa Impianti Specifici per l'Equipaggiamento" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "Usa simulatore di condensatore" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "Utilizza gli impianti del personaggio per i nuovi equipaggiamenti automaticamente" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "Utilizza personaggio globale" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "Usa schema di danno globale" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "Nome Utente:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "Utilizzo il Percorso dell'Eseguibile per il Database degli Equipaggiamenti Salvati e le Impostazioni" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "Variazioni" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "Visualizza Dati Grezzi" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "Raffica" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "Spazio-W" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "Aspettando il login del personaggio attraverso EVE Single Sign-On." #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "Forza del Nucleo di Curvatura: %.1f" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "Velocità di Curvatura" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "Tempo di Curvatura" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "Tempo di Curvatura" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "Arma" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "Ragnatela: riduzione della velocità" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "Quando il profilo dei danni è uniforme, imposta Reactive Armor Hardener di conseguenza (vecchio funzionamento)." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "Quando è disabilitato, ricarica le cariche solo nei moduli selezionati. L'azione può essere invertita tenendo premuto Ctrl o Alt mentre si cambiano le cariche." #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "Quando è abilitato, le abilità controlleranno la loro dipendenza da requisiti quando cambiano di livello e ripristineranno le abilità che non soddisfano più i requisiti.\n" "es: Impostare Drones dal livello V a IV ripristinerà l'abilità Heavy Drone Operation, poiché richiede Drones V" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "Quando impostato, utilizza le esatte statistiche del danno dell'attaccante in quel momento\n" "Quando non impostato, utilizza le statistiche del danno dell'attaccante come mostrate nel pannello della finestra principale" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "Quando impostato, utilizza le esatte statistiche RR della navicella in riparazione in quel momento\n" "Quando non impostato, utilizza le statistiche RR della navicella in riparazione come mostrate nel pannello delle statistiche nella finestra principale" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "Giallo" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "Sì" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "Non puoi collegare tutti i 0 o tutti i 5 personaggi ad un personaggio in EVE." #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "Devi fornire un nome per il personaggio!" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "Devi fornire un nome per il Set d'Impianti!" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "Devi fornire un nome per il tuo Profilo dei Danni!" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "Devi fornire un nome per il tuo Profilo del Bersaglio!" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "pyfa Percorso Utente:" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "errore di pyfa" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "pyfa ha sperimentato un problema imprevisto. Il messaggio sottostante contiene informazioni cruciali sulla causa. Si prega di contattare gli sviluppatori con le informazioni fornite attraverso i forum di EVE Online o sottoponendo il problema a GitHub." #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "pyfa è rilasciato sotto GNU GPLv3 - vedi il file incluso con la LICENZA" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "file di sovraccarico di pyfa" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "sovraccarico di pyfa" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "" #: eos/utils/stats.py:123 msgid "th" msgstr "" #: eos/utils/stats.py:123 msgid "thermal" msgstr "" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "{0} Gruppo di Mercato" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "{context}Statistiche:{name}{debug_info}" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "{{0:.{0}f}} mancanti" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "{{0:.{0}f}} in più" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{} (predefinito)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "{} Copia" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "{} Statistiche" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "" msgstr[1] "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "{}% probabilità di essere inceppato" ================================================ FILE: locale/ja_JP/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2022-11-04 22:34\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " DPS: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " スタック" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " 一斉射撃: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "属性 %d" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "すべてのFitをバックアップ" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "ESIでFitを参照" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "キャラクター" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "キャラクター編集" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "すべてのタブを閉じる" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "タブを閉じる" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "ダメージパターンエディター" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "エディター" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "Fitをエクスポート" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "エクスポートスキルが必要です" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "ファイル" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "フォーラム" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "クリップボードから" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "グローバル" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "グラフ" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "ヘルプ" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "インプラントセットエディター" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "キャラクターファイルをインポート" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "Fitをインポート" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "ESIキャラクタ管理" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "新しいタブ" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "最適化価格" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "設定" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "リドゥ" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "キャラクターを元に戻す" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "キャラクターを保存" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "ターゲットプロファイルエディター" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "クリップボードにコピーする" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "オーバーライドをオフにする" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "オーバーライドをオンにする" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "アンドゥ" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "Wiki" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(pyfaが実行中は変更できません。コマンドラインスイッチで設定してください。)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "0秒" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "アビリティ" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "アビサル" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "アビサル環境" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "アクティブ" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "アクティブなアビリティ" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "発動中の効果" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "アクティブシールドブースト" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "キャラクターの追加" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "キャラクターエラーを追加" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "コマンドブースターを追加" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "現在開いているFitを追加" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "環境効果を追加" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "Fitを追加..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "Fitを追加" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "ターゲットプロファイルを追加" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "{0} をカーゴに追加 (x1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "{} をカーゴに追加" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "{} をドローンベイ {} に追加" #: gui/additionsPane.py:45 msgid "Additions" msgstr "追加" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "追加パネルのコピー/貼り付け" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "アドレス" #: gui/itemStats.py:196 msgid "Affected by" msgstr "影響を受けた" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "機敏性:\t%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "軸合わせ時間" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "調整:\t%.3fs" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "すべて" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "すべてのEVE-Online関連資料はCCPの財産です。" #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "すべてのファイル" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "すべてのスキルの必要条件が満たされています" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "プレリリース通知を許可" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "Y = 0 を常に表示" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "アマー(アーマー)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "アマー(シールド)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "Amarr EDENCOM エンティティ" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "アマー帝国" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "弾薬ホールド" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "エンジェル" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "エンジェルカルテル" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "ゲージのアニメーション" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "アンチマター" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "インプラントセットを適用" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "変異プラスミドを適用する" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "計画されたアイテムを適用する" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "Proxy 設定を適用する" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "全ての入力を削除します。よろしいですか?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "現在のフィットに対するフィッティング制限を無視してもよろしいですか?これは大幅に不正確な結果やエラーにつながる可能性があります。" #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "アーマー" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "アーマー (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "アーマー船体回復量" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "アーマーレジスタンス" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "アーマーを復元しました" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "アーマー: " #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "アシッムー(ブラッドレイダー)" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "アステロイド" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "アタッカー" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "属性" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "属性の上書き" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "属性エディター" #: gui/itemStats.py:177 msgid "Attributes" msgstr "属性" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "自動" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "利用可能な場合、自動で同じ言語の pyfa が使用されます。それ以外の場合は英語で使用されます" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "プロキシ設定を自動検出" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "自動検出 " #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "X 軸" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Y 軸" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "戻る" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "フィット {} を{} にバックアップします" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "すべてのフィットをXMLファイルにバックアップする" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "フィットをバックアップします" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "重粒子" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "基本値" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "巡洋戦艦" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "戦艦" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "処理済みのフィットは保存されていないことに注意してください" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "生物発光" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "ブラッドレイダー" #: graphs/style.py:54 msgid "Blue" msgstr "青" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "ボム" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "ブースター" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "ブースター" #: graphs/style.py:82 msgid "Bright" msgstr "ブライト" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "EVEのフィットを見る" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "バンプ距離" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "バンプ速度" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "バーナー" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "コンコルド" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "CPU" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "CSV ファイル" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "カルダリ(アーマー)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "カルダリ(シールド)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "カルダリ EDENCOMエンティティ" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "カルダリ連合" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "キャリブレーション" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "キャパシタ容量" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "キャップが1秒間に中和されます" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "Cap 再生" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "キャパシタ" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "キャパシタのデルタ:" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "キャパシタが復元されました" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "Capacitorの安定性" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "炭化したリード" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "カーゴ" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "貨物アイテム" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "カーゴベイ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "カーゴホールド: " #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "艦載機母艦" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "苛性" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "証明書パス:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "%s スキルを変更" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "量を変更する" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "スキルを変更" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "同じタイプのすべてのモジュールのチャージを変更する" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "変更 {0} 個" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "変更 範囲 {}" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "変更を有効にするには、pyfaの再起動が必要です。" #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "キャラクター" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "キャラクター編集" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "キャラクターID" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "キャラクター名が既に使われています。別の名前を指定してください。" #: gui/characterEditor.py:771 msgid "Character:" msgstr "キャラクター:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "キャラクター: " #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "チャージ" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "シタデル" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "シタデルシステムセキュリティ" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "全てをクリア" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "全てのオーバーライドをクリア" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "クリックして効果HPと元HPを切り替える" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "クリックして火力表示に切り替え" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "クリックしてマイニング効率に切り替える" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "クライアントID:" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "クライアントシークレット:" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "スロットごとの色フィットビュー" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "複合ECM強度" #: gui/additionsPane.py:84 msgid "Command" msgstr "コマンド" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "コマンドフィット" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "コマンドフィット" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "コマンドセンターホールド" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "コンパクトスキルはツールチップが必要です" #: gui/itemStats.py:182 msgid "Compare" msgstr "比較" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "Concord" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "振動ボム" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "確認" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "削除の確認" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "接続エラー: インターネット接続を確認してください。" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "コンテキストメニュー" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "コンテキストメニュー|計画効果操作|ブラックホール" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "コンテキストメニュー|計画効果操作|特殊天体" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "コンテキストメニュー|計画効果操作|効果" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "コンテキストメニュー|計画効果操作|電子系" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "コンテキストメニュー|計画効果操作|エキゾチック" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "コンテキストメニュー|計画効果操作|ファイアストーム" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "コンテキストメニュー|計画効果操作|ガンマ" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "コンテキストメニュー|計画効果操作|マグネター" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "コンテキストメニュー|計画効果操作|マター" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "コンテキストメニュー|計画効果操作|メタリミナル" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "コンテキストメニュー|計画効果操作|プラズマ" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "コンテキストメニュー|計画効果操作|パルサー" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "コンテキストメニュー|計画効果操作|レイ" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "コンテキストメニュー|計画効果操作|レッドジャイアント" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "コンテキストメニュー|計画効果操作|サンシャインカージョン" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "コンテキストメニュー|計画効果操作|ストーム" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "コンテキストメニュー|計画効果操作|システムエフェクト" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "コンテキストメニュー|計画効果操作|トリグラヴィアンの侵略" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "コンテキストメニュー|計画効果操作|ウォルフ・ライエ" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "コピー" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "すべてコピー {}" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "不足しているスキルをコピー" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "モジュールをクリップボードにコピー" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "選択されたものをコピー" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "Pyfaのテキストをコピーして貼り付けます" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "クリップボードからインポートできませんでした" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "クリップボードからインポートできませんでした:" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "クリップボードからインポートできませんでした: 不明なエラー" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "巡洋艦" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "カーソル(ブルッドレイダーズ)" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "現在" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "現在の値" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "カスタムアプリケーション" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "カスタムアプリケーション" #: graphs/style.py:57 msgid "Cyan" msgstr "シアン" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "DPS" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "ダメージパターンエディター" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "ダメージプロファイル" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "ダメージプロファイル名は既に使われています。別の名前を指定してください。" #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "ダメージ状態" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "与えたダメージ:" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "リモートセンサーダンプナー: ロック範囲の減少" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "デアデビル(サーペンティス)" #: graphs/style.py:81 msgid "Dark" msgstr "ダーク" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "ダークマター全段階" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "点線の線" #: graphs/style.py:87 msgid "Dashed" msgstr "点線" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "データベース" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "デッドスペース" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "デバッグログを有効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "デフォルトの市場価格:" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "デフォルト値: %0.3f" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "防御力" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "数百万キログラムで定義" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "削除" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "すべてのダメージパターンプロファイルを削除" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "すべての価格を削除" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "すべてのターゲットプロファイルを削除" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "Eveから全てを削除" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "EVE から削除" #: gui/itemStats.py:189 msgid "Dependents" msgstr " 依存" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "劣化ウラン" #: gui/itemStats.py:174 msgid "Description" msgstr "説明" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "駆逐艦" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "破壊可能なビーコン" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "開発者ツール" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "絞り込みを無効にする" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "無効" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "コンテキストメニューを無効にすると、応答性が向上します。\n" "これらの設定に関係なく、{} キーを押したまま右クリックしてすべてのメニュー項目を表示できます。" #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "距離" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "オーバービュー上での攻撃者とターゲットの間の距離(表面から表面までの距離)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "攻撃者とターゲットの表向きの距離(表面から表面までの距離)\n" "ターベットが攻撃側より離れている場合、攻撃側の攻撃は当たらない" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "表面上のリペア船と対象との距離(表面から表面)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "EVEから{} ({}) を削除してもよろしいですか?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "今後このリリースを通知しない" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "リストにEVEキャラクターが表示されませんか?" #: graphs/style.py:88 msgid "Dotted" msgstr "点線" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "ダウンロード" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "グラフを描くには、このリストにフィットをドラッグしてください" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "グラフを描くには、このリストにフィットをドラッグしてください" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "このエリアにフィットをドラッグしてください" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "アイテムをドラッグ・フィットするか、右クリックでワームホール効果を使用します" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "ドラミエル(天使)" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "攻城艦" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "ドレッド/サブキャップ" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "ドリフター" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "ドリフターエンティティ" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "ドローン" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "ドローンモード" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "ドローン帯域幅" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "ドローンベイ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "ドローン制御範囲" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "ドローン" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "ドローンが有効です" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "すべてのログをダンプ" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "ESIへエクスポート" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "ECM: 組み合わせ強度" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "EFT テキスト・フィッティングファイル" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "EHP" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "EM (ElectroMagnetic Damage/電磁場によるダメージ)" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "EMレジスタンス" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "EMP (electromagnetic pulse/電磁パルス)" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "エラー" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "EVE API XML キャラクタファイル" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "EVEデータ:" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "EVE IGB HTMLフィットファイル" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "EVE SSO(Single Sign On)" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "EVE サーバー (API && CREST import)" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "EVE XML フィットファイル" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "EVE XML フィットファイル" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "EVEMonスキルトレーニング XMLファイル" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "EVEMonスキルトレーニングファイル" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "有効なDPS" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "有効HP: " #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "有効キャパシタ" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "有効ダメージ効果" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "実効ボレー(ダメージ)" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "有効HP %d" #: gui/itemStats.py:192 msgid "Effects" msgstr "効果" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "電気T1/T2/T3" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "電気T3 (一部T5層)" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "電気T4/T5/T6" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "電磁ダメージ耐性" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "電子爆弾" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "電子戦の状態" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "空" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "空の市場 ビュー" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "空のタブ" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "フォット制限を有効にする" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "ネットワークを有効化" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "利用可能なメタボタンをすべて有効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "すべてのメタボタンを有効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "検索・履歴の間、全てのメタボタンを有効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "アイテム・メタボタンを有効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "アイテムのメタボタンを有効にし、他のメタボタンを無効にする" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "一番左のメタボタンを有効にする" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "最小フォーマットを有効にする" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "有効" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "厳格なスキルレベル要件を適用" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "新しいキャラクタ名を入力してください。" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "新しいインプラントセットを入力してください。" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "エンヨ" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "エラー" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "スキル情報の取得中にエラーが発生しました。" #: gui/errorDialog.py:68 msgid "Error!" msgstr "エラー!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "エキゾチックプラズマ" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "エキゾチックT0/T1/T2" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "エキゾチック T3 (一部T5層)" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "エキゾチックT4/T5/T6" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "すべてを展開" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "爆発" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "Expレジスタンス" #: gui/propertyEditor.py:39 msgid "Export" msgstr "エクスポート" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "すべてのフィットをHTMLにエクスポート" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "エクスポートエラー" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "フィットをエクスポート" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "フィットを最小限の HTML バージョンでエクスポートします。視覚的スタイルのないフィッティングリンクを含みます。" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "アイテム状態をエクスポート" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "読み込まれたチャージをエクスポート" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "必要スキルをエクスポート" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "クリップボードにフィットをエクスポート" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "ブースターをエクスポート" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "貨物をエクスポート" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "カーゴホールドをエクスポート" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "モジュールにロードされたチャージをエクスポート" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "フィットをEVEにエクスポート" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "フィットをHTMLにエクスポート (環境設定で設定)" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "別形式でフィットをエクスポート" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "インプラントセットをクリップボードにエクスポート" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "インプラントをエクスポート" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "変更されたモジュール状態をエクスポート" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "パターンをクリップボードにエクスポート" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "プロファイルをクリップボードにエクスポート" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "クリップボードからスキルをエクスポート" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "このフィットに必要なスキルをエクスポート" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "必要なスキルをエクスポートしています..." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "追加パネルのタブ名の追加情報" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "追加の状態" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "リロード係数" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "コンデンサ使用、損傷、およびタンクの計算されたリロード時間" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "エクスポートデータの生成に失敗しました" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "フィットを取得" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "フィットを取得中です。お待ちください..." #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "フィット" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "戦闘機ベイ" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "軽戦闘機隊を有効" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "戦闘機" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "フィラメント" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "モジュールを埋める" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "{0} フィットする" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "モジュールでフィットする" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "火力" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "ファイアストームT0/T1/T2" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "ファイアストームT3 (一部T5層)" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "ファイアストームT4/T5/T6" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "フィット" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "フィットデータベース" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "フィットエンジン" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "フィット" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "フリートハンガー" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "フォーマットタグ" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "周波数クリスタル" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "フリゲート" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "燃料ベイ" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "フル" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "合成" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "ミサイルの後続距離減少" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "ガレンテ(アーマー)" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "ガレンテ(シールド)" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "ガレンテ EDENCOM エンティティ" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "ガレンテ連邦" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "ゲームデータベース:" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "ガンマ" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "ガンマ T0/T1/T2" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "ガンマT3 (一部T5層)" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "ガンマ T4/T5/T6" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "ガス・ホールド" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "一般" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "HTMLファイルを生成中: {}" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "一般" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "スキルを入手する" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "グローバルデフォルト待機率:" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "EVEオンラインフォーラムに移動" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "GitHub の wiki に移動" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "不足しているスキルを付与" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "グラフ" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "重力計" #: graphs/style.py:53 msgid "Green" msgstr "緑" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "ガリスタス" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "HP" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "HTMLエクスポート" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "HTML エクスポート (ファイル > エクスポート HTML) はフィット全部をHTMLファイルにエクスポートすることができます。 このファイルは、ウェブベースのフィッティングプログラムで簡単にフィットを開くために使用できます" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "ホーク" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "重い" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "最近のフィットを隠す" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "空の艦艇グループを非表示" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "高い" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "高セキュリティ" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "船体" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "船体(ハル) (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "船体回復量" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "船体レジスタンス" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "船体を復元" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "船体: " #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "ハイブリッドチャージ" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "ID" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "理想的なターゲット" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "ドローン制御範囲を無視" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "ロック範囲を無視" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "ターゲットレジストを無視" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "インプラントセット" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "インプラントセットエディター" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "インプラントセット名が既に使われています。別の名前を指定してください。" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "インプラント" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "インプラント&ブースター" #: gui/propertyEditor.py:38 msgid "Import" msgstr "インポート" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "インポートエラー" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "スキルのインポート" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "クリップボードからフィットをエクスポート" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "ファイルから pyfaにキャラクターをインポート" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "Pyfaにフィットをインポート" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "クリップボードからインプラントセットをインポート" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "オーバーライドをインポート" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "クリップボードからパターンをインポート" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "クリップボードからプロファイルをインポート" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "Pyfaのオーバーライドファイルをインポート" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "クリップボードからスキルをエクスポート" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "Pyfaにインポート" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "キャラクターをインポート中..." #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "フィットをインポート中" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "このキャラクターにスキルをインポートすると、スキルレベルが保留になります。 スキルを永久に保存するには、インポート後にウィンドウの下部にある保存ボタンをクリックしてください" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "フォーマットタグを含めてフィットをコープ掲示板、MOTD(Message Of The Day)、その他に貼り付ける" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "受け取るダメージパターン" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "フォーマットが正しくありません (小数点のみ)" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "範囲が正しくありません(0-100でなければなりません)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "工業用艦艇ホールド" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "ターゲットの艦艇の慣性修正乗数" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "焦熱地獄" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "赤外線" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "インターセプター" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "翻訳のヘルプに興味がありますか?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "無効なパス" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "無効なトークン" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "侵攻" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "イリジウム" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "鉄" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "アイテム" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "アイテムマーケットグループジャンプ" #: gui/itemStats.py:58 msgid "Item stats" msgstr "アイテムの統計" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "ジャガー" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "クーニッド" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "貫通" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "貫通耐性" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "レーダー" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "言語設定(要再起動)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "大型艦艇ホールド" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "続く " #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "ランチャーハードポイント" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "リード" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "ダメージ軽減" #: gui/characterEditor.py:343 msgid "Level" msgstr "レベル" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "レベル %s" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "レベル {}" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "レベル {}d" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "ライト" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "限定艦艇" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "ロードされたチャージ" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "以前のフィットを読み込んでいます..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "ローカルサーバ" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "ローカライズ" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "ロックオン時間" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "ロックオン時間" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "ロック範囲の減少" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "ロックオン時間" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "EVE SSOでログイン" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "ログファイルの保存場所" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "ロギング" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "認証方法" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "長距離" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "低い" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "ローセキュリティ" #: graphs/style.py:56 msgid "Magenta" msgstr "マゼンタ" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "磁気測定" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "メンテナンスベイ" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "キャラクター管理" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "手動" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "手動でプロキシ設定" #: gui/mainFrame.py:180 msgid "Market" msgstr "マーケット" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "市場価格" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "市場価格" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "マーケットグループの選択" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "マーケット検索&&最近の商品" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "マーケット検索の遅延 (ミリ秒):" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "質量:\t{:,.0f}kg" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "マテリアルベイ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "最大ワープ距離: %.1f AU" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "最高速度" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "中スロット" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "中型船ホールド" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "中間子" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "金属嵐" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "マイクロ波" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "ミネラルホールド" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "最少" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "採掘利率" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "ミンマター(アーマー)" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "ミンマター(シールド)" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "ミンマター EDENCOM エンティティ" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "ミンマター共和国" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "その他" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "その他のデータ" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "ミサイルの後続距離減少" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "ミサイル" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "ミッション" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "混合" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "ミョルニール" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "機動性" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "モード:" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "モジュール" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "惰性" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "モーダス レギオン" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "より多くのダメージ" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "多周波" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "マルチスペクトル" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "変異した属性" #: gui/itemStats.py:170 msgid "Mutations" msgstr "突然変異" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "NPC (Non Player Charator)" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "名前" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "エクスポートするには少なくとも一つのESIキャラクターが必要です" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "取得するには少なくとも1つのESIキャラクターが必要です" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "ネットワーク" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "ニュートライザへの耐性" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "ニュート(ニュートラライザー): キャップ/秒" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "新しい金額 ({}-{})" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "新しい金額" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "新しいインプラントセット" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "新しいフィット" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "いいえ" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "プロファイルがありません" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "有効なフィットがありません" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "メタボタンに変更はありません" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "プロキシなし" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "なし" #: graphs/style.py:80 msgid "Normal" msgstr "通常" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "標準サブキャップ" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "未習得" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "未習得" #: gui/additionsPane.py:87 msgid "Notes" msgstr "ノート" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "新星" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "原子力" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "ヌル セキュリティ" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "開発ツールを開く" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "キャラクター編集を開く" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "新しいタブでフィットを開く" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "1つ以上のキャラクターファイルを開く" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "1つ以上のフィットファイルを開く" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "ウィジェット調査画面を開く" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "ウィジェット調査画面を開く" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "デフォルトでフィットを新しいページで開く" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "フィットブラウザで開く" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "新しいタブで開く" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "最適価格" #: graphs/style.py:55 msgid "Orange" msgstr "オレンジ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "鉱石ホールド" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "その他" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "オーバーマインド" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "パッシブシールドリチャージ" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "パスワード:" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "{} を貼り付け" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "パターンをクリップボードにエクスポートしました" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "パターンをクリップボードからインポートしました" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "フェーズプラズマ弾" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "惑星製品ホールド" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "しばらくお待ちください..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "これらのオプションについては、GitHubのpyfaのwikiをご覧ください。" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "メインウィンドウでアクティブなフィットを選択してください" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "別のキャラクターを選択するか、新しいキャラクターを作成してください。" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "Pyfaのパス設定を確認してください。" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "異なる弾薬を装填" #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "プルトニウム" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "ポッド" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "ポート:" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "パワーグリッド" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "設定" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "このボタンを押すと、メモリ内のすべてのログがログファイルに書き込まれます:" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "価格" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "価格の更新" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "プローブサイズ: %.3f" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "クリップボードにプロファイルをエクスポートしました" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "プロファイルをクリップボードからインポートしました" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "アクティブフィットにプロジェクトを作成" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "フィットにプロジェクトする" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "プロジェクト {0} をフィットに適用する" #: gui/additionsPane.py:81 msgid "Projected" msgstr "プロジェクト" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "計画されたアイテム" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "プロジェクタイル弾" #: gui/itemStats.py:200 msgid "Properties" msgstr "プロパティ" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "推進" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "陽子" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "プロキシ設定" #: graphs/style.py:58 msgid "Purple" msgstr "紫" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "PvP模様" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "Pyfa(Python Fitting Assistant) は、非常に高精度でEVE-Online SciFi(Science Fiction)MMORPG用のフィットを作成・シミュレーションできるオープンソースのスタンドアロンアプリケーションです。 PyfaはPythonとwxWidgetがサポートされているすべてのプラットフォームで動作します。" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "Pyfaアップデートのチェック" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "Pyfaは自動的に新しいリリースを確認し、通知します。この機能はネットワーク設定で変更できます。 同じように、プレリリース通知を許可したり、リリース通知を抑制することもできます。" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "言語の選択が無効です。.moファイルが生成されているかどうかを確認してください。\n" "詳しくはlocale/README.mdを参照してください。" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "クァフェホールド" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "アクティブなアイテムの数量" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "すべてのアイテムの数量" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "レーダー" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "ラジオ" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "半径" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "ランダムなステータス" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "射程範囲" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "元HP: " #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "元: %d HP" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "このフィット制限を再有効にすると、不正なアイテムもフィットから削除されます。続行しますか?" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "最近のフィット" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "最近使用したアイテム" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "リチャージ率" #: graphs/style.py:52 msgid "Red" msgstr "赤" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "直前の動作をやり直す" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "更新" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "スキル更新" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "補強済み" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "補助RRを再読み込み" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "リモートリペア" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "リモートリペア" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "キャラクターを削除する" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "アイテムのオーバーライドを削除" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "{item}{stack} を削除" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "名前を変更" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "起動時に以前のFITを再開する" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "修復速度" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "より安い価格のアイテムで交換する" #: gui/itemStats.py:185 msgid "Requirements" msgstr "必要条件" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "リセット" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "ノイズ抑制" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "デフォルトにリセット" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "レジストモード" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "レジスト倍率: " #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "レジスタンス" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "リソース" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "変更を元に戻す" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "{} に復元" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "リグ" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "ローグ・ドローン" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "ローグ・ドローンエンティティ" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "ローグ・ドローン" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "実行時間" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "SSO キャラクター管理" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "SSO ログイン" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "SSO モード" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "サルベージホールド" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "サンプルタイトルテキスト英語" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "サンシャ国" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "サンシャインカージョン(サンシャ侵攻)" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "サンシャ国" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "バックアップを名前を付けて保存..." #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "CSVファイルを保存" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "名前を付けてキャラクターを保存..." #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "名前を付けてキャラクターを保存..." #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "名前を付けてフィットを保存..." #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "上書き保存..." #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "新規インプラントセットとして保存" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "スキャン解像度" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "スコーチボム" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "スコージ" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "フィットを検索" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "セキュリティステータス: {0:.2f}" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "セキュリティステータスはCONCORD船体の計算で使用されています" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "シーカー(探索者)" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "フォーマットを選択" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "リクエストを送信し、応答を待っています" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "センサー強度" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "センチネル(衛兵)" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "別々のラック" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "サーペンティス" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "サービス" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "セキュリティ ステータスをセット" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "ダメージパターンとして設定" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "エクスポート先を設定" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "ダメージパターンとして {} を設定する" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "クリップボードにコピーしました" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "アルファ クローンを設定しても、キャラクターのスキルは置き換えられませんが、アルファ レベルに制限されます。" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "狙撃技術" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "シールド" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "シールド (+T2 DCU)" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "シールド再生" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "シールド容量" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "シールド再生" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "シールドレジスタンス" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "シールドを復元" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "シールド/アーマータンク" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "シールド: " #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "艦艇" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "基本艦艇" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "艦艇グループ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "艦艇ホールド" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "短距離" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "ラックラベル(棚名)を表示" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "空の艦艇グループを表示" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "フィットタブのツールチップを表示" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "凡例を表示" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "マーケットショートカットを表示" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "艦艇ブラウザのツールチップを表示" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "榴散ボム" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "サイドエフェクト" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "シグネチャ" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "シグネチャ半径\n" "空白にすると無限に大きな値になります" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "シグネチャ半径増加" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "Famfamfam.comによるシルクアイコンセット - Creative Commons Attribution 2.5 License" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "スキル" #: gui/characterEditor.py:160 msgid "Skills" msgstr "スキル" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "必要なスキル:" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "スリーパー" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "スリーパーエンティティ" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "スリーパー" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "小型艦艇ホールド" #: graphs/style.py:86 msgid "Solid" msgstr "ソリッド" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "速度" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "速度減少" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "{} のスタックを分割" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "待機時間" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "待機" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "待機サイクル" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "安定: " #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "標準" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "開始上限額" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "シールド開始量" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "状態パネル" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "攻撃者に近づく" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "ターゲットに近づく" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "サブキャップ" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "サブキャップ/ミサイル0%の待機時間" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "サブキャップ/ミサイル1000%の待機時間" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "サブキャップ/ミサイル50%の待機時間" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "サブシステム" #: gui/characterEditor.py:901 msgid "Success" msgstr "成功" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "スキルの取得に成功しました" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "サキュバス (サンシャ国)" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "サポート" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "{0} 通知を抑制する" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "永続化" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "T1レジスト" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "T2レジスト" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "タレット最適射程減少" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "シグネチャ半径増加" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "戦術モード" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "タロス" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "ターゲット" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "ターゲットプロファイル" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "ターゲットプロファイルエディター" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "ダメージプロファイル名は既に使われています。別の名前を指定してください。" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "ターゲットレジスト" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "ターゲットとの距離" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "ターゲット慣性係数" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "ターゲット質量" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "ターゲットレジスト" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "ターゲットシグネチャ" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "ターゲットシグネチャ半径" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "ターゲット速度" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "ターゲット設定" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "ターゲット" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "テトリオン" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "テキストスキルのトレーニングファイル" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "モジュールでデフォルトで使用するスプールアップ量。モジュールごとに変更できます。" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "キー入力とマーケット検索の間には遅延があります。マーケット検索ボックスを使う事で遅延を軽減できます。" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "次のエラーが発生しました:" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "次のパスが無効または存在しません:" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "選択したソースが最初に試行されますが、優先ソースが失敗した場合は後続のソースが使用されます。 選択したシステムも最初に試され、利用可能なデータがない場合はグローバル価格が使用されます。" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "あなたが抑制することを選択した通知があります。 通知抑制をリセットするか、GitHub から新しいリリースをダウンロードする事で改善できます。" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "スキルのインポートでエラーが発生しました。ログファイルを参照してください。" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "キャラクターの SSO トークンの検証中にエラーが発生しました。再ログインしトークンをリセットしてください。" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "ローカWEBサーバーを起動できませんでした。 「環境設定」→「EVE SS0」→「ログイン認証方法」から「ログイン認証方法」を選択して、ログイン認証方法を手動に設定してください。 問題を解決できない場合は、Github で報告してください" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "熱" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "熱レジスタンス" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "キャッシュされたすべての価格を削除します。\n" "本当に実行しますか?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "全てのダメージパターンプロファイルを削除します。\n" "本当に実行しますか?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "全てのターゲットプロファイルを削除します。\n" "本当に実行しますか?" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "このオプションは EVE SSO を使用しますが、設定が必要です。 何らかの理由でネットワークがブロックされているか、pyfa.ioへの通信が遮断されています。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "このオプションは、ログインを許可するためにWebサイトからコピー&ペーストします。 ローカルサーバーに問題がある場合に使用します。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "このオプションは、EVE SSOに対し簡略化されたログインを実行します。不明な場合はこのオプションを使用してください。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "このオプションは、EVE SSOにログインする場合に正規のOAuth2.0を使用し、ローカルWEBサーバへのコールバックを使用してログインを実行します。" #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "トリウム" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "サッカー部族" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "時間" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "チタン製サボット弾" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "名前の切り替え" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "表示を切り替え" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "表示モードの切り替え" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "合計" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "合計価格" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "修理合計額" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "合計: " #: gui/itemStats.py:166 msgid "Traits" msgstr "特性" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "トリグラヴィアン" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "トリグラヴィアンエンティティ" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "トリグラヴィアンの侵略" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "タングステン" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "タレットハードポイント" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "タレット最適射程減少" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "タイプ" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "タイプ:{0}\n" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "タイプ: {}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "紫外線" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "直前の動作を取り消す" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "均一" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "均一(25%)" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "均一(50%)" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "均一(75%)" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "均一(90%)" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "学習を解除" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "アップデートが利用できます" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "アップデート" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "ウラン" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "キャラクターインプラントを使用" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "フィット固有のインプラントを使用" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "キャパシタシュミレーターを使用" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "新しいフィットにはデフォルトでキャラクターインプラントを使用" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "一般的なキャラクターを使用" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "一般的なダメージパターンを使用" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "ユーザー名:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "データベースと設定を保存するために、実行時パスを使用します" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "バリエーション" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "復讐" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "生データの表示" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "一斉射撃" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "ワームホールスペース" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "EVEシングルサインオンでを待機しています。" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "ワープコア強度: %.1f" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "ワープ速度" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "ワープ時間" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "ワープ時間" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "武装" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "ウェブ: スピードダウン" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "ダメージプロファイルが均一な場合は、リアクティブアーマーハードナーを適用します" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "無効にすると、選択されたモジュールだけにチャージをリロードします。チャージを変更しながら、Ctrl または Alt キーを押し続けることでアクションを元にもどすことができます。" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "有効にすると、レベルが変更されたときにスキルが依存関係の要件をチェックし、要件を満たさなくなったスキルをリセットします。\n" "例: ドローンをレベル V から IV に設定すると、ドローン V が必要なヘビー ドローン オペレーション スキルがリセットされます。" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "設定すると、特定の時間における攻撃者の正確なダメージ統計を使用します\n" "設定されていない場合、メイン ウィンドウの統計パネルに表示される攻撃者のダメージ統計を使用します。" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "設定すると、特定の時点で修理中の船の正確な RR 統計を使用します\n" "設定されていない場合、メイン ウィンドウの統計パネルに表示されるように、船の RR 統計の修復を使用します。" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "ワーム(ガリスタス)" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "ワームホール" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "X線" #: graphs/style.py:59 msgid "Yellow" msgstr "黄色" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "はい" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "すべての0キャラクターまたはすべての5キャラクターをEVEにリンクすることはできません。" #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "キャラクター名を指定してください!" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "インプラントセットの名前を指定してください!" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "ダメージプロファイル名を指定してください!" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "ターゲットプロファイル名を指定してくささい!" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "[T2] オーロラ" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "[T2] バラージ" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "[T2] コンフラグレーション" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "[T2] グリーム" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "[T2] ヘイル" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "[T2] ジャベリン" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "[T2] ミスティック" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "[T2] ヌル" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "[T2] オカルト" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "[T2] クェイク" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "[T2] スコーチ" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "[T2] スパイク" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "[T2] トレマー" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "[T2] ボイド" #: eos/utils/stats.py:123 msgid "em" msgstr "電磁場ダメージ" #: eos/utils/stats.py:123 msgid "exp" msgstr "爆発ダメージ" #: eos/utils/stats.py:123 msgid "explosive" msgstr "爆発" #: eos/utils/stats.py:123 msgid "kin" msgstr "衝撃ダメージ" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "キネティック" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "pyfaユーザーパス:" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "pyfaエラー" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "Pyfa で内部エラーが発生しました。\n" "以下は、重要な内容を含むメッセージです\n" "これがどのように発生しかた、詳細情報を 開発者に連絡してください\n" "EVE Online フォーラムを通じて提供される情報を参照するか、GitHub の問題を報告してください。" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "PyfaはGNU GPLv3の下でリリースされています - 含まれているLICENSEファイルを参照してください" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "pyfaのファイルの上書き" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "pyfaのオーバーライド" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "pyfa.io" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "pyfa:" #: eos/utils/stats.py:123 msgid "th" msgstr "熱ダメージ" #: eos/utils/stats.py:123 msgid "thermal" msgstr "熱力学" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "{0} マーケットグループ" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "{context}状態: {name}{debug_info}" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "{{0:.{0}f}} 残り" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "{{0:.{0}f}} オーバー" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{} (デフォルト)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "{} コピー" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "{} ステータス" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "{} {} スロット" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "{}%の確率で妨害されます" ================================================ FILE: locale/ko_KR/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2021-11-03 23:22\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: ko\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " 초당 피해량: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " 모듈 묶기" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " 알파 샷: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "%d 속성" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "&모든 피팅 백업" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "&ESI 피팅 보기" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "&캐릭터" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "&캐릭터 에디터" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "&모든 탭 닫기" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "&탭 닫기" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "&데미지 패턴 에디터" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "&에디터" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "&피팅 내보내기" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "&필요한 스킬 내보내기" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "&파일" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "&포럼" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "&클립보드에서" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "&글로벌" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "&그래프" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "&도움말" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "&임플란트 세트 에디터" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "&캐릭터 파일 불러오기" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "&피팅 불러오기" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "&ESI 캐릭터 관리" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "&새 탭" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "&피팅 가격 최적화" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "&설정" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "&다시하기" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "&캐릭터 되돌리기" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "&캐릭터 저장" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "타겟 프로필 에디터" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "&클립보드로" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "&오버라이드 끄기" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "&오버라이드 켜기" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "&실행 취소" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "&위키" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(pyfa가 실행중인 동안에는 수정할 수 없습니다. 커맨드 라인 교체를 통해 설정하시기 바랍니다.)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "0초" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "스킬" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "아비살" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "어비셜 환경" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "활성화" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "활성화된 능력" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "활성화된 부작용" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "액티브 실드 부스트" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "캐릭터 추가" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "캐릭터 에러 추가" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "커맨드 부스트 추가" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "현재 열린 핏 추가" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "환경 효과 추가" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "핏 추가..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "여러 핏 추가" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "타겟 프로필 추가" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "{0} 를 카고에 추가 (x1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "{} 를 카고에 추가" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "{} 를 드론 베이에 추가{}" #: gui/additionsPane.py:45 msgid "Additions" msgstr "추가" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "추가 패널 복사/붙여넣기" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "주소:" #: gui/itemStats.py:196 msgid "Affected by" msgstr "다음에서 영향 받음" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "기동성:\t%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "정렬 소요 시간" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "정렬: %.3f 초" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "전체" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "모든 EVE-Online 관련 자료는 CCP hf의 자산입니다." #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "모든 파일" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "모든 스킬 필수조건이 충족되었습니다." #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "시험판 알림 허용" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "항상 Y = 0 표시" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "아마르(장갑)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "아마르(실드)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "아마르 EDENCOM 객체" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "아마르 제국" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "탄약고" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "엔젤" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "엔젤 카르텔" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "게이지 애니메이션" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "반물질탄" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "임플란트 셋 적용" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "뮤타플라스미드 적용" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "예상 항목 적용" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "프록시 설정 적용" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "모든 오버라이드 설정을 지우겠습니까?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "현재 피팅에서 피팅 제한을 무시하시겠습니까? 계산 결과가 부정확해 질 수도 있습니다." #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "장갑" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "장갑 (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "장갑 수리량" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "장갑 저항력" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "장갑 회복" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "장갑: " #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "아쉬무(블러드 레이더)" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "소행성" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "공격자" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "속성" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "속성 재정의" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "속성 에디터" #: gui/itemStats.py:177 msgid "Attributes" msgstr "속성" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "자동" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "자동으로 설정하면 가능할 경우 pyfa의 언어를 이용하고, 아닌 경우 영어를 사용합니다." #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "프록시 자동 설정" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "자동 감지:" #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "X축:" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Y축:" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "돌아가기" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "{} 피팅을 다음에 백업:{}" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "전체 피팅을 XML로 백업" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "피팅 백업" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "바리온" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "기본값" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "배틀크루저" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "배틀쉽" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "이미 처리된 핏들은 저장되지 않았음" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "생물학적 발광" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "블러드 레이더" #: graphs/style.py:54 msgid "Blue" msgstr "블루" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "밤" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "부스터" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "부스터" #: graphs/style.py:82 msgid "Bright" msgstr "밝기" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "이브 피팅 살펴보기" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "범핑 거리" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "범핑 속도" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "버너" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "콩코드" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "CPU" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "CSV 파일" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "칼다리 (아머)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "칼다리 (실드)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "칼다리 EDENCOM 객체" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "칼다리 연합" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "보정" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "캐패시터 용량" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "초당 뉴트량" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "캐패시터 회복량" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "캐패시터" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "캐패시터 변동량:" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "캐패시터 안정" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "캐패시터 안정성" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "탄화납" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "카고" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "카고 아이템" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "화물 저장고" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "화물칸:" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "캐리어" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "인증 경로:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "%s 스킬 변경" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "수량 변경" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "스킬 변경" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "전체 모듈에 같은 종류의 차지로 변경" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "수량 변경 {0}" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "사거리 변경 {}" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "변경 사항을 적용하려면 pyfa를 재시작해야 합니다." #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "캐릭터" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "캐릭터 에디터" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "캐릭터 ID" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "이미 사용중인 사용자 이름입니다. 다른 이름을 사용해주세요." #: gui/characterEditor.py:771 msgid "Character:" msgstr "캐릭터:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "캐릭터: " #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "차지" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "시타델" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "시타델 시스템 시큐리티" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "전체 삭제" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "모든 사용자 정의 속성 지우기" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "이곳을 클릭하여 EHP나 HP를 볼 수 있습니다." #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "클릭하여 공격 정보로 전환" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "클라이언트 ID:" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "클라이언트 비밀 키:" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "슬롯에 색상 적용" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "종합 ECM 강도" #: gui/additionsPane.py:84 msgid "Command" msgstr "명령" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "통제 센터 창고" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "비교" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "콩코드" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "충격폭탄" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "확인" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "삭제 확인" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "연결 오류: 인터넷 연결을 확인해주세요." #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "컨텍스트 메뉴" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "복사" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "모두 복사 {}" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "빠진 스킬 복사" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "모듈을 클립보드로 복사" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "선택 복사 {}" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "클립보드에서 불러올 수 없습니다." #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "클립보드에서 불러올 수 없습니다. :" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "클립보드에서 불러올 수 없습니다. : 알 수 없는 에러" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "크루저" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "크루오어(블러드 레이더)" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "현재" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "현재값" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "사용자 어플리케이션" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "청록" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "DPS" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "데미지 패턴 에디터" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "데미지 프로필" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "데미지 프로필 이름이 사용중입니다. 다른 이름을 선택하세요." #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "데미지 스탯" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "받은 데미지" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "센서 약화: 타겟팅 거리 감소" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "데어데빌(서펜티스)" #: graphs/style.py:81 msgid "Dark" msgstr "암흑" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "암흑물질 모든 티어" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "데이터베이스" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "데드스페이스" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "디버그 로깅 활성화" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "기본 시장 가격:" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "기본값: %0.3f" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "방어" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "삭제" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "모든 데미지 패턴 프로필 삭제" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "모든 가격 삭제" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "모든 타겟 프로필 삭제" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "Eve에서 모두 삭제" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "EVE에서 삭제" #: gui/itemStats.py:189 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "열화 우라늄" #: gui/itemStats.py:174 msgid "Description" msgstr "설명" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "디스트로이어" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "파괴 가능한 신호기" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "개발자 도구" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "피팅 제한 비활성화" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "비활성화됨" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "메뉴를 비활성화하면 반응성을 높일수 있습니다.\n" "{} 키를 누른 상태에서 우클릭을 하면 이 설정에 관계없이 모든 메뉴를 볼수 있습니다." #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "거리" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "공격자와 목표물의 거리가 오버뷰에서 표시됩니다. (표면 대 표면)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "공격자와 목표물의 거리가 오버뷰에서 표시됩니다. (표면 대 표면)\n" "활성화시, 목표물을 공격자로부터 멀리 떨어진곳에 배치합니다.\n" "비활성화시, 공격자의 무기는 무조건 타겟을 타격합니다." #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "로지쉽과 목표물의 거리가 오버뷰에 표시됩니다. (표면 대 표면)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "정말로 EVE에서 {} ({}) 을(를) 지우시겠습니까?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "이 버전에 한해서 더 이상 알리지 않기" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "당신의 EVE Online 캐릭터가 목록에서 보이지 않습니까?" #: graphs/style.py:88 msgid "Dotted" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "다운로드" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "그래프화 하려면 피팅을 이곳에 드래그하세요" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "이곳에 피팅을 드래그하세요" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "드라미엘(엔젤 카르텔)" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "드레드" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "드레드노트/서브캐피탈" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "드리프터" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "드리프터 객체" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "드론" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "드론 모드" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "드론 대역폭" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "드론 격납고" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "드론 통제 거리" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "드론" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "활성화된 드론" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "모든 로그 지우기" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "ESI로 내보내기" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "ECM: 총합 강도" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "EFT 텍스트 피팅 파일" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "실질 내구도" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "EM" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "EM 저항력" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "EMP" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "오류" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "EVE API XML 캐릭터 파일" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "이브 데이터:" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "EVE IGB HTML 피팅 파일" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "EVE SSO" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "이브 XML 피팅 파일" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "이브 XML 피팅 파일들" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "EVEMon 스킬 훈련 XML 파일" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "EVEMon 스킬 훈련 파일" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "유효 DPS" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "유효 HP: " #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "유효 캐퍼시티" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "받은 유효 데미지" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "유효 알파 샷" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "실질 내구도: %d" #: gui/itemStats.py:192 msgid "Effects" msgstr "효과" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "전기폭풍 T0/T1/T2" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "전기폭풍 T3 (일부 T5 포켓 포함)" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "전기폭풍 T4/T5/T6" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "EM 저항력" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "전기폭탄" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "전자전 스탯" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "비어있음" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "빈 탭" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "피팅 제한 활성화" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "네트워크 사용 가능" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "모든 이용 가능한 버튼 활성화" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "모든 메타 버튼 활성화" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "활성화됨" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "새 캐릭터의 이름 입력:" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "새 임플란트 세트의 이름 입력:" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "엔요" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "오류" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "스킬 정보를 불러오는 중 오류 발생" #: gui/errorDialog.py:68 msgid "Error!" msgstr "오류!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "엑조틱 플라즈마" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "엑조틱 T0/T1/T2" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "엑조틱 T3 (일부 T5 포켓 포함)" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "엑조틱 T4/T5/T6" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "모두 펼치기" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "폭발" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "폭발 저항력" #: gui/propertyEditor.py:39 msgid "Export" msgstr "내보내기" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "모든 피팅을 HTML로 내보내기" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "내보내기 오류" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "피팅 내보내기" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "장식 없이 최소한의 HTML로 피팅 내보내기" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "아이템 스탯 내보내기" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "장전된 차지 내보내기" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "필요 스킬 내보내기.." #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "클립보드로 피팅 내보내기" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "부스터 내보내기" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "창고 물품 내보내기" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "창고 내용물 내보내기" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "모듈로 장전된 차지 내보내기" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "EVE 클라이언트로 피팅 내보내기" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "HTML 파일로 피팅 내보내기 (환경 설정에서 설정)" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "다른 포맷으로 피팅 내보내기" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "클립보드로 임플란트 내보내기" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "임플란트 내보내기" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "변이된 모듈 스탯 내보내기" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "클립보드로 패턴 내보내기" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "클립보드로 프로필 내보내기" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "클립보드로 스킬 내보내기" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "클립보드로 이 피팅에 필요한 스킬 내보내기" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "필요한 스킬 내보내기.." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "추가 스탯" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "재장전 시간 적용" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "캐패시터 소모, 데미지, 탱킹에 재장전 시간 적용" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "내보내기 데이터 생성 실패" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "피팅 가져오기" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "피팅을 가져오는 중입니다, 잠시 기다려 주십시오..." #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "핏" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "파이터 격납고" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "파이터 함대 적용" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "파이터" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "필라멘트" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "이 모듈로 채우기" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "{0} 로 채우기" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "이 모듈로 채우기" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "화력" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "화염폭풍 T0/T1/T2" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "화염폭풍 T3 (일부 T5 포켓 포함)" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "화염폭풍 T4/T5/T6" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "피팅" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "피팅 데이터베이스:" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "피팅 엔진" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "피팅" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "함대 격납고" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "프리퀀시 크리스탈" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "프리깃" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "연료 창고" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "유도 방해: 미사일 체공시간 감소" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "갈란테 (장갑)" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "갈란테 (실드)" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "갈란테 EDENCOM 객체" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "갈란테 연합" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "게임 데이터베이스:" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "감마" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "감마 T0/T1/T2" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "감마 T3 (일부 T5 포켓 포함)" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "감마 T4/T5/T6" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "가스 창고" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "일반" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "이 경로에 HTML 파일 생성: {}" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "일반적" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "스킬 불러오기" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "그래프" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "중력장" #: graphs/style.py:53 msgid "Green" msgstr "녹색" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "구리스타스" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "HP" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "HTML로 내보내기" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "호크" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "헤비" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "최근 피팅 숨기기" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "비어있는 함선 그룹 숨기기" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "높은" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "하이섹" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "선체" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "선체 수리량" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "선체 저항" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "선체 회복량" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "선체: " #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "하이브리드 탄약" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "ID" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "이상적인 목표" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "드론 통제거리 무시" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "타겟팅 거리 무시" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "대상 저항력 무시" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "임플란트 세트" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "임플란트 세트 에디터" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "이미 사용중인 이름입니다." #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "임플란트" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "임플란트 && 부스터" #: gui/propertyEditor.py:38 msgid "Import" msgstr "가져오기" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "가져오기 오류" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "스킬 가져오기" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "클립보드에서 피팅 가져오기" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "pyfa로 피팅 불러오기" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "클립보드로 임플란트 불러오기" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "클립보드에서 패턴 불러오기" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "클립보드에서 프로필 불러오기" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "클립보드에서 스킬 불러오기" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "pyfa로 불러오기" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "캐릭터 불러오기.." #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "패팅 불러오기" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "들어오는 피해 분포" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "포맷이 잘못되었습니다. (숫자만 입력 가능합니다.)" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "범위를 벗어났습니다. (0-100 안의 값이여야 합니다.)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "인더스트리얼 함선 창고" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "대상 함선의 관성 계수" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "인페르노" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "인터셉터" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "번역에 도움을 주고 싶으신가요?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "잘못된 경로" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "유효하지 않은 토큰" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "침공" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "이리듐탄" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "강철탄" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "아이템" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:58 msgid "Item stats" msgstr "아이템 스탯" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "재규어" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "카니드" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "키네틱" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "키네틱 저항력" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "라이다" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "언어 (재시작 필요)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "대형 함선 창고" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "런처 슬롯" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "납탄" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:343 msgid "Level" msgstr "레벨" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "%s 레벨" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "레벨 {}" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "레벨 {}d" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "한정판 함선" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "장착된 차지" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "이전 피팅 불러오기.." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "로컬 서버" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "타겟팅 시간" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "EVE SSO를 통해 로그인하기" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "로그 파일 위치:" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "로깅" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "로그인 인증 방법" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "장거리" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "로우 시큐리티" #: graphs/style.py:56 msgid "Magenta" msgstr "" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "함선 정비 격납고" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "캐릭터 관리" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "수동" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "" #: gui/mainFrame.py:180 msgid "Market" msgstr "마켓" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "상점 & 가격" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "상점 && 가격" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "마켓 검색 딜레이(ms):" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "질량: {:,.0f}kg" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "재료 창고" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "최대 워프 거리: %.1f AU" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "최대 속도" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "중형 함소 창고" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "메손" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "메타경계성 폭풍" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "마이크로파" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "정제된 광물 창고" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "최소" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "채광 수익" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "민마타 (장갑)" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "민마타 (실드)" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "민마타 EDENCOM 객체" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "민마타 공화국" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "미사일 체공시간 감소" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "미사일" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "미션" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "혼합" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "묠니르" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "기동성" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "모드:" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "모듈" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "추진력" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "모르두 군단" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "멀티프리퀀시" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "다중스펙트럼" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "변이 속성" #: gui/itemStats.py:170 msgid "Mutations" msgstr "변이" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "NPC" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "이름" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "내보내기 위해서는 적어도 한개의 ESI 캐릭터가 필요합니다" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "가져오기 위해서는 적어도 한개의 ESI 캐릭터가 필요합니다" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "네트워크" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "뉴트럴라이저 저항력" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "뉴트럴라이즈: 초당 캐패시터 뉴트량" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "새 수량({}-{})" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "새 수량:" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "새 임플란트 세트" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "새 피팅" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "ㄴ" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "프로필 없음" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "활성화된 피팅 없음" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "프록시 없음" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "일반 서브캐피탈" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "아직 배우지 않음" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "아직 배우지 않음" #: gui/additionsPane.py:87 msgid "Notes" msgstr "노트" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "노바" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "널 시큐리티" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "개발 도구 열기" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "캐릭터 에디터 열기" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "새 탭에서 피팅 열기" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "하나 혹은 그 이상의 캐릭터 파일 열기" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "하나 혹은 그 이상의 피팅 파일 열기" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "조사 도구 위젯 열기" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "기본 설정으로 새 페이지에서 피팅 열기" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "피팅 브라우저에서 열기" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "새 탭에서 열기" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "가격 최적화" #: graphs/style.py:55 msgid "Orange" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "광물 창고" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "오버마인드" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "패시브 실드 회복" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "비밀번호:" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "붙여넣기 {}" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "패턴이 클립보드에 복사되었습니다" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "클립보드에서 패턴을 성공적으로 가져왔습니다" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "위상 플라즈마" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "행성 자원 창고" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "잠시만 기다려주십시오.." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "이 옵션에 대한 정보를 더 알고싶으시다면 GitHub의 pyfa wiki를 방문해주세요" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "다른 캐릭터를 선택하거나 새롭게 만들어주세요" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "" #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "플루토늄" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "캡슐" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "포트:" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "파워그리드" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "설정" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "이 단추를 누르면 이제부터 모든 로그를 기록합니다." #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "가격" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "가격 업데이트" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "프로브 크기: %.3f" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "프로필을 클립보드에 복사했습니다" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "성공적으로 프로필을 클립보드에서 가져왔습니다" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "" #: gui/additionsPane.py:81 msgid "Projected" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "발사체 탄약" #: gui/itemStats.py:200 msgid "Properties" msgstr "속성" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "추진기" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "양성자" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "프록시 설정" #: graphs/style.py:58 msgid "Purple" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "Pyfa (the Python Fitting Assistant) 는 굉장히 높은 정확도로 피팅을 만들고 시뮬레이션 할수있는 독립적 오픈소스 어플리케이션입니다. Pyfa는 Python과 wxWidget이 있다면 모든 플랫폼에서 동작합니다." #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "Pyfa 업데이트 확인" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "Pyfa는 자동적으로 최신 릴리즈를 체크하여 사용자에게 안내할수있습니다. 이것은 네트워크 설정에서 켜고 끌수 있습니다." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "퀘이프 창고" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "활성화된 아이템 개수" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "모든 아이템 개수" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "레이더" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "라디오파" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "반경" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "무작위 스탯" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "거리" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "실제 HP: " #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "기초: %d HP" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "최근 피팅" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "최근 사용된 아이템" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "재출전 시간" #: graphs/style.py:52 msgid "Red" msgstr "" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "가장 최근의 작업을 취소합니다" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "새로고침" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "스킬 새로고침" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "강화" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "보조 원격 수리기 재탑재" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "원격 수리" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "원격 수리" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "캐릭터 삭제" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "{item}{stack} 삭제" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "이름 변경" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "시작시 이전에 열었던 피팅 다시 열기" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "수리 속도" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "" #: gui/itemStats.py:185 msgid "Requirements" msgstr "요구사항" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "초기화" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "기본값으로 되돌리기" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "저항력 증폭: " #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "저항력" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "자원" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "변경사항 취소" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "{}로 되돌리기" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "리그" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "로그 드론" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "로그 드론 엔티티" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "로그 드론" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "런타임" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "SSO 캐릭터 관리" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "SSO 로그인" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "SSO 모드" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "샐비지 자원 창고" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "산샤" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "산샤 침공" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "산샤 제국" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "새 이름으로 백업 저장" #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "CSV 파일로 저장하기" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "캐릭터 저장하기.." #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "새 이름으로 캐릭터 저장" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "새 이름으로 피팅 저장" #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "새 이름으로 오버라이드 저장" #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "새 임플란트 세트로 저장하기" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "스캔 해상도" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "스코치 폭탄" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "스커지" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "피팅 검색" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "시큐리티 상태: {0:.2f}" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "시큐리티 상태는 CONCORD의 선체량 계산에 사용됩니다." #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "씨커" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "포맷 선택" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "요청을 보내고 응답을 기다리는중" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "센서 강도" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "센티널" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "서펜티스" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "서비스" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "시큐리티 상태 설정" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "데미지 패턴 설정" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "내보내기 경로 설정" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "설정을 클립보드에 내보냈습니다" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "저격모드" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "실드" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "실드 회복" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "실드량" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "실드 회복" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "실드 저항력" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "실드 회복됨" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "실드/장갑 탱킹" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "실드: " #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "함선" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "함선 그룹" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "함선 창고" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "단거리" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "비어있는 함선 그룹 보이기" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "범례 보기" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "세열폭탄" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "부작용" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "시그니처" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "시그니처 반경을 무한하게 하려면 이 칸을 비우세요" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "시그니처 반경 증가" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "스킬" #: gui/characterEditor.py:160 msgid "Skills" msgstr "스킬들" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "필요한 스킬:" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "슬리퍼" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "슬리퍼 객체" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "슬리퍼들" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "소형 ㅎ마선 창고" #: graphs/style.py:86 msgid "Solid" msgstr "고체" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "속도" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "속도 저하" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "{}개로 분할하기" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "안정: " #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "스탠다드" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "서브시스템" #: gui/characterEditor.py:901 msgid "Success" msgstr "성공" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "성공적으로 스킬을 불러왔습니다." #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "서큐버스 (산샤 제국)" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "지원" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "{0}개의 알림 무시중" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "지속됨" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "T1 저항력" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "T2 저항력" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "트래킹 교란: 터렛 최적사거리 감소" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "타겟 지시: 시그니처 반경 증가" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "추진 모드" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "탈로스" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "타겟" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "타겟 프로필" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "타겟 프로필 편집기" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "해당 타겟 프로필 이름은 이미 사용중입니다." #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "대상 저항력" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "타겟 질량" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "타겟 저항력" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "타겟 시그니처" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "타겟 시그니처 크기" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "타겟 속도" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "타겟팅 && 기타" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "타겟" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "테트리온" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "다음 오류가 발생했습니다." #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "다음 경로가 유효하지 않거나 존재하지 않습니다:" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "스킬을 가져오는데 실패했습니다. 로그 파일을 참고해주세요" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "열" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "열 저항력" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "" #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "토륨" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "터커" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "티타늄 사봇" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "합계: " #: gui/itemStats.py:166 msgid "Traits" msgstr "" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "트리글라비안" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "트리글라비안 객체" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "트리글라비안 침공" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "텅스텐" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "터렛 하드포인트" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "터렛 유효사거리 저하" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "타입: {}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "울트라바이올렛" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "가장 최근 작업 취소" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "균등" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "균등 (25%)" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "균등 (50%)" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "균등 (75%)" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "균등 (90%)" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "업데이트 가능" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "우랴늄" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "캐릭터 임플란트 사용" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "피팅에 지정된 임플란트 사용" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "캐패시터 시뮬레이터 사용" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "사용자명:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "일제 사격" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "W-Space" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "워프 코어 강도: %.1f" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "워프 속도" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "워프 시간" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "워프 시간" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "무기" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "웹: 속도 저하" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "웜 (구리스타스)" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "웜홀" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "엑스레이" #: graphs/style.py:59 msgid "Yellow" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "예" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "이브 캐릭터에는 전체 스킬 0 혹은 5 캐릭터를 링크할 수 없습니다." #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "이 캐릭터의 이름을 입력해주세요" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "이 임플란트 세트의 이름을 입력해주세요" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "이 데미지 프로필의 이름을 입력해주세요" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "이 타겟 프로필의 이름을 입력해주세요" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "[T2] 오로라" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "[T2] 배러지" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "[T2] 컨플래그레이션" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "[T2] 글림" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "[T2] 헤일" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "[T2] 자벨린" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "[T2] 미스틱" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "[T2] 널" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "[T2] 오컬트" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "[T2] 퀘이크" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "[T2] 스코치" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "[T2] 스파이크" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "[T2] 트레머" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "[T2] 보이드" #: eos/utils/stats.py:123 msgid "em" msgstr "em" #: eos/utils/stats.py:123 msgid "exp" msgstr "exp" #: eos/utils/stats.py:123 msgid "explosive" msgstr "폭발" #: eos/utils/stats.py:123 msgid "kin" msgstr "kin" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "키네틱" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "pyfa 사용자 경로:" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "pyfa 에러" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "pyfa.io" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "pyfa:" #: eos/utils/stats.py:123 msgid "th" msgstr "th" #: eos/utils/stats.py:123 msgid "thermal" msgstr "열" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "{0} 거래소 그룹" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "{{0:.{0}f}} 남음" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "{{0:.{0}f}} 초과" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{} (기본)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "{} 복사" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "{} 속성" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "{} {} 슬롯" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "{}% 확률로 재밍당함" ================================================ FILE: locale/lang.pot ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-02-27 16:27+0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr "" #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "" msgstr[1] "" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "" #: gui/mainFrame.py:688 gui/mainMenuBar.py:131 msgid "&Turn Overrides On" msgstr "" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "" "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "" #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:190 #: eos/saveddata/targetProfile.py:191 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:193 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 #: eos/saveddata/targetProfile.py:197 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 eos/saveddata/targetProfile.py:233 #: eos/saveddata/targetProfile.py:234 eos/saveddata/targetProfile.py:235 #: eos/saveddata/targetProfile.py:236 eos/saveddata/targetProfile.py:237 #: eos/saveddata/damagePattern.py:104 eos/saveddata/damagePattern.py:105 #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:107 #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:109 #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:111 #: eos/saveddata/damagePattern.py:112 eos/saveddata/damagePattern.py:113 msgid "Abyssal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "" #: gui/esiFittings.py:430 msgid "Add Character" msgstr "" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "" #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:31 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:29 #, python-brace-format msgid "Add {0} to Cargo (x8)" msgstr "" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "" #: gui/additionsPane.py:45 msgid "Additions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "" #: gui/itemStats.py:197 msgid "Affected by" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:231 #, python-format msgid "Agility:\t%.3fx" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #, python-format msgid "Align:\t%.3fs" msgstr "" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:190 #: eos/saveddata/targetProfile.py:197 eos/saveddata/damagePattern.py:104 msgid "All" msgstr "" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "" #: gui/mainFrame.py:843 gui/mainFrame.py:972 msgid "All Files" msgstr "" #: gui/characterSelection.py:236 msgid "All skill prerequisites have been met" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "" #: eos/saveddata/targetProfile.py:103 eos/saveddata/damagePattern.py:152 msgid "Amarr EDENCOM Entities" msgstr "" #: eos/saveddata/targetProfile.py:72 eos/saveddata/damagePattern.py:161 msgid "Amarr Empire" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "" #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:234 #: eos/saveddata/targetProfile.py:237 eos/saveddata/damagePattern.py:105 msgid "Angel" msgstr "" #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 #: eos/saveddata/damagePattern.py:114 eos/saveddata/damagePattern.py:132 msgid "Angel Cartel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "" #: eos/saveddata/damagePattern.py:80 msgid "Antimatter" msgstr "" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "" #: gui/builtinContextMenus/itemMutations.py:36 msgid "Apply Mutaplasmid" msgstr "" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "" #: gui/mainFrame.py:645 msgid "" "Are you sure you wish to ignore fitting restrictions for the current fit? " "This could lead to wildly inaccurate results and possible errors." msgstr "" #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewFull.py:44 #: gui/builtinStatsViews/outgoingViewMinimal.py:43 msgid "Armor restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "" #: eos/saveddata/targetProfile.py:96 eos/saveddata/damagePattern.py:129 msgid "Ashimmu" msgstr "" #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/damagePattern.py:114 eos/saveddata/damagePattern.py:115 #: eos/saveddata/damagePattern.py:116 eos/saveddata/damagePattern.py:117 #: eos/saveddata/damagePattern.py:118 eos/saveddata/damagePattern.py:119 msgid "Asteroid" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:35 msgid "Asteroid Abyssal" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:32 msgid "Asteroid Coherent" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:34 msgid "Asteroid Complex" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:36 msgid "Asteroid Mercoxit" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:31 msgid "Asteroid Simple" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:33 msgid "Asteroid Variegated" msgstr "" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:51 #: gui/builtinItemStatsViews/itemProperties.py:56 msgid "Attribute" msgstr "" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "" #: gui/itemStats.py:178 msgid "Attributes" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "" "Auto will use the same language pyfa uses if available, otherwise English" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Auto-login (starts local server)" msgstr "" #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "" #: gui/mainFrame.py:875 msgid "Backing up {} fits to: {}" msgstr "" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "" #: gui/mainFrame.py:879 gui/mainFrame.py:910 msgid "Backup fits" msgstr "" #: eos/saveddata/targetProfile.py:85 msgid "Bantam" msgstr "" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:54 msgid "Base Value" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:171 msgid "Battlecruiser" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:171 msgid "Battleship" msgstr "" #: gui/mainFrame.py:937 msgid "Be aware that already processed fits were not saved" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "" #: eos/saveddata/damagePattern.py:67 msgid "BlastShot" msgstr "" #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:133 msgid "Blood Raiders" msgstr "" #: graphs/style.py:54 msgid "Blue" msgstr "" #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 msgid "Bombs" msgstr "" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "" #: gui/additionsPane.py:78 gui/copySelectDialog.py:48 #: gui/copySelectDialog.py:56 gui/builtinContextMenus/additionsImport.py:24 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 msgid "Boosters" msgstr "" #: graphs/style.py:82 msgid "Bright" msgstr "" #: gui/esiFittings.py:33 msgid "Browse EVE Fittings" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "" #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 #: eos/saveddata/targetProfile.py:93 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/damagePattern.py:120 eos/saveddata/damagePattern.py:121 #: eos/saveddata/damagePattern.py:122 eos/saveddata/damagePattern.py:123 #: eos/saveddata/damagePattern.py:124 eos/saveddata/damagePattern.py:125 #: eos/saveddata/damagePattern.py:126 eos/saveddata/damagePattern.py:127 #: eos/saveddata/damagePattern.py:128 eos/saveddata/damagePattern.py:129 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 msgid "Burner" msgstr "" #: eos/saveddata/targetProfile.py:87 msgid "Burst" msgstr "" #: eos/saveddata/targetProfile.py:74 eos/saveddata/damagePattern.py:163 msgid "CONCORD" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:129 msgid "CSV files" msgstr "" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "" #: eos/saveddata/targetProfile.py:104 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 msgid "Caldari EDENCOM Entities" msgstr "" #: eos/saveddata/targetProfile.py:73 eos/saveddata/damagePattern.py:162 msgid "Caldari State" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinStatsViews/capacitorViewFull.py:37 msgid "Capacitor" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "" #: gui/builtinStatsViews/outgoingViewFull.py:32 #: gui/builtinStatsViews/outgoingViewMinimal.py:31 msgid "Capacitor restored" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "Carbonized Lead" msgstr "" #: gui/additionsPane.py:72 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinContextMenus/priceOptions.py:47 msgid "Cargo" msgstr "" #: gui/builtinContextMenus/additionsImport.py:21 #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 msgid "Cargo Items" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:234 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:259 msgid "Cargohold: " msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:172 msgid "Carrier" msgstr "" #: eos/gamedata.py:254 msgid "Caustic" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "Change Amount" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:35 msgid "Change Selection Quantity" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:36 #, python-brace-format msgid "Change {0} Quantity" msgstr "" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "" #: gui/esiFittings.py:420 gui/characterEditor.py:91 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Character" msgstr "" #: gui/characterEditor.py:138 msgid "Character Editor" msgstr "" #: gui/esiFittings.py:421 msgid "Character ID" msgstr "" #: gui/characterEditor.py:79 msgid "Character name already in use, please choose another." msgstr "" #: gui/characterEditor.py:775 msgid "Character:" msgstr "" #: gui/characterSelection.py:48 msgid "Character: " msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:61 msgid "Charge" msgstr "" #: gui/builtinViews/fittingView.py:665 msgid "Citadel" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:50 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Command center hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:183 msgid "Compare" msgstr "" #: eos/saveddata/targetProfile.py:199 eos/saveddata/targetProfile.py:202 #: eos/saveddata/targetProfile.py:205 eos/saveddata/targetProfile.py:208 #: eos/saveddata/targetProfile.py:211 eos/saveddata/targetProfile.py:214 #: eos/saveddata/targetProfile.py:217 eos/saveddata/targetProfile.py:220 #: eos/saveddata/targetProfile.py:223 eos/saveddata/targetProfile.py:226 #: eos/saveddata/targetProfile.py:229 eos/saveddata/targetProfile.py:232 #: eos/saveddata/targetProfile.py:235 eos/saveddata/damagePattern.py:106 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:101 msgid "Concussion Bomb" msgstr "" #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 msgid "Condenser Packs" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "" #: gui/esiFittings.py:162 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "" #: gui/esiFittings.py:130 gui/esiFittings.py:183 gui/esiFittings.py:390 msgid "Connection error, please check your internet connection" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemTraits.py:30 #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "" #: gui/characterSelection.py:106 msgid "Copy Missing Skills" msgstr "" #: gui/characterSelection.py:109 msgid "Copy Missing Skills (EVEMon)" msgstr "" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "" #: gui/patternEditor.py:290 gui/setEditor.py:222 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "" #: gui/patternEditor.py:283 gui/setEditor.py:218 msgid "Could not import from clipboard: unknown errors" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:170 msgid "Cruiser" msgstr "" #: eos/saveddata/targetProfile.py:91 eos/saveddata/damagePattern.py:124 msgid "Cruor" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:52 #: gui/builtinItemStatsViews/itemProperties.py:57 msgid "Current Value" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "" #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "" #: eos/saveddata/targetProfile.py:93 eos/saveddata/damagePattern.py:126 msgid "Daredevil" msgstr "" #: graphs/style.py:81 msgid "Dark" msgstr "" #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 msgid "Dark Matter All Tiers" msgstr "" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "" #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/damagePattern.py:132 eos/saveddata/damagePattern.py:133 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:135 #: eos/saveddata/damagePattern.py:136 eos/saveddata/damagePattern.py:137 msgid "Deadspace" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:61 msgid "Default SSO Server:" msgstr "" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "" #: gui/esiFittings.py:67 msgid "Delete all from Eve" msgstr "" #: gui/esiFittings.py:66 msgid "Delete from EVE" msgstr "" #: gui/itemStats.py:190 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:88 msgid "Depleted Uranium" msgstr "" #: gui/itemStats.py:175 msgid "Description" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:170 msgid "Destroyer" msgstr "" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "" "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these " "settings." msgstr "" #: graphs/data/fitRemoteReps/graph.py:50 graphs/data/fitRemoteReps/graph.py:58 #: graphs/data/fitMobility/graph.py:36 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "" #: graphs/data/fitDamageStats/graph.py:66 msgid "" "Distance between the attacker and the target, as seen in overview (surface-" "to-surface)" msgstr "" #: graphs/data/fitDamageStats/graph.py:67 msgid "" "Distance between the attacker and the target, as seen in overview (surface-" "to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "" "Distance between the repairing ship and the target, as seen in overview " "(surface-to-surface)" msgstr "" #: gui/esiFittings.py:161 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "" #: gui/characterEditor.py:793 msgid "Don't see your EVE character in the list?" msgstr "" #: graphs/style.py:88 msgid "Dotted" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/targetProfile.py:99 msgid "Dragonfly" msgstr "" #: eos/saveddata/targetProfile.py:92 eos/saveddata/damagePattern.py:125 msgid "Dramiel" msgstr "" #: eos/saveddata/damagePattern.py:139 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:156 msgid "Dread" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:155 msgid "Dread/Subcaps" msgstr "" #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:195 eos/saveddata/damagePattern.py:107 msgid "Drifter" msgstr "" #: eos/saveddata/targetProfile.py:238 eos/saveddata/damagePattern.py:158 msgid "Drifter Entities" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "" #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:191 eos/saveddata/damagePattern.py:108 #: gui/additionsPane.py:66 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/priceOptions.py:40 msgid "Drones" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "" #: gui/mainFrame.py:842 msgid "EFT text fitting files" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "EM" msgstr "" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "" #: eos/saveddata/damagePattern.py:90 msgid "EMP" msgstr "" #: gui/esiFittings.py:392 gui/esiFittings.py:396 gui/esiFittings.py:404 msgid "ERROR" msgstr "" #: gui/mainFrame.py:971 msgid "EVE API XML character files" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:18 #: gui/characterEditor.py:163 msgid "EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "" #: gui/mainFrame.py:865 msgid "EVE XML fitting file" msgstr "" #: gui/mainFrame.py:466 gui/mainFrame.py:841 msgid "EVE XML fitting files" msgstr "" #: gui/mainFrame.py:813 msgid "EVEMon skills training XML file" msgstr "" #: gui/mainFrame.py:812 msgid "EVEMon skills training file" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "" #: gui/builtinViewColumns/droneEhp.py:82 msgid "Effective HP" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "" #: gui/builtinViewColumns/droneRegen.py:76 msgid "Effective Shield Regeneration" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "" #: gui/itemStats.py:193 msgid "Effects" msgstr "" #: eos/saveddata/targetProfile.py:114 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:116 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:202 #: eos/saveddata/targetProfile.py:203 eos/saveddata/targetProfile.py:204 msgid "Electrical T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 msgid "Electrical T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:128 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:130 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:208 #: eos/saveddata/targetProfile.py:209 eos/saveddata/targetProfile.py:210 msgid "Electrical T4/T5/T6" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "" #: eos/saveddata/damagePattern.py:99 msgid "Electron Bomb" msgstr "" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:72 msgid "Empty" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Enforce Token Expiration" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "" #: gui/characterEditor.py:282 msgid "Enter a name for your new Character:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "" #: eos/saveddata/targetProfile.py:82 eos/saveddata/damagePattern.py:120 msgid "Enyo" msgstr "" #: gui/mainFrame.py:900 gui/patternEditor.py:58 gui/characterEditor.py:84 #: gui/characterEditor.py:465 gui/characterEditor.py:951 gui/setEditor.py:55 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "" #: gui/characterEditor.py:950 msgid "Error fetching skill information" msgstr "" #: gui/errorDialog.py:68 msgid "Error!" msgstr "" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "" #: eos/saveddata/targetProfile.py:156 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:158 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:220 #: eos/saveddata/targetProfile.py:221 eos/saveddata/targetProfile.py:222 msgid "Exotic T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 msgid "Exotic T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:170 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:172 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:226 #: eos/saveddata/targetProfile.py:227 eos/saveddata/targetProfile.py:228 msgid "Exotic T4/T5/T6" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Explosive" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "" #: gui/propertyEditor.py:39 msgid "Export" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "" #: gui/esiFittings.py:298 msgid "Export Boosters" msgstr "" #: gui/mainFrame.py:883 msgid "Export Error" msgstr "" #: gui/esiFittings.py:283 msgid "Export Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "" "Export Fittings in a minimal HTML Version, just containing the fittings " "links without any visual styling" msgstr "" #: gui/esiFittings.py:293 msgid "Export Implants" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:64 msgid "Export Item Stats" msgstr "" #: gui/esiFittings.py:288 msgid "Export Loaded Charges" msgstr "" #: gui/mainFrame.py:810 msgid "Export Skills Needed As..." msgstr "" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "" #: gui/esiFittings.py:270 msgid "Export fit to EVE" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "" #: gui/characterEditor.py:374 msgid "Export skills to clipboard" msgstr "" #: gui/mainFrame.py:832 msgid "Exporting skills needed..." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:160 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "" "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:373 msgid "Failed to generate export data" msgstr "" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:45 msgid "Fetch Fits" msgstr "" #: gui/esiFittings.py:115 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "" #: gui/additionsPane.py:69 gui/builtinContextMenus/additionsImport.py:20 #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 msgid "Fighters" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinStatsViews/firepowerViewFull.py:43 msgid "Firepower" msgstr "" #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:142 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:144 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:214 #: eos/saveddata/targetProfile.py:215 eos/saveddata/targetProfile.py:216 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "" #: gui/mainFrame.py:184 gui/builtinStatsViews/priceViewFull.py:57 #: gui/builtinStatsViews/priceViewMinimal.py:57 msgid "Fittings" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:169 msgid "Frigate" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "" #: eos/saveddata/targetProfile.py:105 eos/saveddata/damagePattern.py:155 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/targetProfile.py:75 eos/saveddata/damagePattern.py:164 msgid "Gallente Federation" msgstr "" #: eos/saveddata/damagePattern.py:68 msgid "GalvaSurge" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:184 eos/saveddata/targetProfile.py:185 #: eos/saveddata/targetProfile.py:186 eos/saveddata/targetProfile.py:187 #: eos/saveddata/targetProfile.py:188 eos/saveddata/targetProfile.py:189 #: eos/saveddata/targetProfile.py:190 eos/saveddata/targetProfile.py:232 #: eos/saveddata/targetProfile.py:233 eos/saveddata/targetProfile.py:234 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:191 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:193 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 #: eos/saveddata/targetProfile.py:197 eos/saveddata/targetProfile.py:235 #: eos/saveddata/targetProfile.py:236 eos/saveddata/targetProfile.py:237 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Gas hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "" #: gui/mainFrame.py:906 msgid "Generating HTML file at: {}" msgstr "" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "" #: gui/characterEditor.py:782 msgid "Get Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:62 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "" #: gui/characterSelection.py:103 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "" #: eos/saveddata/fit.py:428 msgid "Gravimetric" msgstr "" #: graphs/style.py:53 msgid "Green" msgstr "" #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 #: eos/saveddata/damagePattern.py:116 eos/saveddata/damagePattern.py:134 msgid "Guristas" msgstr "" #: gui/builtinViewColumns/droneEhp.py:84 #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "" "HTML Export (File > Export HTML) allows you to export your entire fitting " "database into an HTML file at the specified location. This file can be used " "to easily open your fits in a web-based fitting program" msgstr "" #: eos/saveddata/targetProfile.py:84 eos/saveddata/damagePattern.py:121 msgid "Hawk" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewFull.py:50 #: gui/builtinStatsViews/outgoingViewMinimal.py:49 msgid "Hull restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "" #: eos/saveddata/damagePattern.py:71 eos/saveddata/damagePattern.py:72 #: eos/saveddata/damagePattern.py:73 eos/saveddata/damagePattern.py:74 #: eos/saveddata/damagePattern.py:75 eos/saveddata/damagePattern.py:76 #: eos/saveddata/damagePattern.py:77 eos/saveddata/damagePattern.py:78 #: eos/saveddata/damagePattern.py:79 eos/saveddata/damagePattern.py:80 #: eos/saveddata/damagePattern.py:81 eos/saveddata/damagePattern.py:82 msgid "Hybrid Charges" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Ice hold" msgstr "" #: eos/saveddata/targetProfile.py:301 msgid "Ideal Target" msgstr "" #: gui/ssoLogin.py:28 msgid "If auto-login fails, copy and paste the token provided by pyfa.io" msgstr "" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "" #: gui/additionsPane.py:75 gui/copySelectDialog.py:47 #: gui/copySelectDialog.py:55 gui/characterEditor.py:162 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 msgid "Implants" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 #: gui/builtinContextMenus/priceOptions.py:54 msgid "Implants && Boosters" msgstr "" #: gui/propertyEditor.py:38 msgid "Import" msgstr "" #: gui/mainFrame.py:856 msgid "Import Error" msgstr "" #: gui/characterEditor.py:443 msgid "Import Skills" msgstr "" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "" #: gui/characterEditor.py:373 msgid "Import skills from clipboard" msgstr "" #: gui/esiFittings.py:65 msgid "Import to pyfa" msgstr "" #: gui/mainFrame.py:978 msgid "Importing Character..." msgstr "" #: gui/mainFrame.py:852 msgid "Importing fits" msgstr "" #: gui/characterEditor.py:441 msgid "" "Importing skills into this character will set the skill levels as pending. " "To save the skills permanently, please click the Save button at the bottom " "of the window after importing" msgstr "" #: gui/copySelectDialog.py:59 msgid "" "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Include more information in names of mutated items" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "" #: eos/saveddata/damagePattern.py:96 msgid "Inferno" msgstr "" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: eos/saveddata/targetProfile.py:89 msgid "Inquisitor" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:169 msgid "Interceptor" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "" #: gui/mainFrame.py:896 msgid "Invalid Path" msgstr "" #: gui/esiFittings.py:242 msgid "Invalid Token" msgstr "" #: eos/saveddata/targetProfile.py:102 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:238 #: eos/saveddata/targetProfile.py:239 eos/saveddata/targetProfile.py:240 #: eos/saveddata/damagePattern.py:139 eos/saveddata/damagePattern.py:140 #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/damagePattern.py:157 eos/saveddata/damagePattern.py:158 #: eos/saveddata/damagePattern.py:159 eos/saveddata/damagePattern.py:160 msgid "Invasion" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "Iridium" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "Iron" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:164 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 msgid "Item" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:59 msgid "Item stats" msgstr "" #: eos/saveddata/targetProfile.py:86 eos/saveddata/damagePattern.py:122 msgid "Jaguar" msgstr "" #: eos/saveddata/targetProfile.py:76 eos/saveddata/damagePattern.py:165 msgid "Khanid" msgstr "" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Kinetic" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "" #: eos/saveddata/fit.py:428 msgid "Ladar" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "" #: eos/saveddata/damagePattern.py:76 msgid "Lead" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:107 #: gui/builtinContextMenus/moduleAmmoChange.py:125 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:344 msgid "Level" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "" #: gui/characterEditor.py:537 gui/characterEditor.py:595 #: gui/characterEditor.py:620 gui/characterEditor.py:653 #: gui/builtinItemStatsViews/itemDependants.py:46 msgid "Level {}" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:271 msgid "Limited Issue Ships" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:206 msgid "Lock Times" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:798 msgid "Log In with EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:95 msgid "Long Range" msgstr "" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "" #: graphs/style.py:56 msgid "Magenta" msgstr "" #: eos/saveddata/fit.py:428 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "" #: eos/saveddata/targetProfile.py:100 msgid "Mantis" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "" #: gui/mainFrame.py:180 msgid "Market" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:230 msgid "Mass:\t{:,.0f}kg" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Material bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:213 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:246 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "" #: eos/saveddata/damagePattern.py:65 msgid "MesmerFlux" msgstr "" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Mineral hold" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Mining hold" msgstr "" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "" #: eos/saveddata/targetProfile.py:106 eos/saveddata/damagePattern.py:156 #: eos/saveddata/damagePattern.py:157 msgid "Minmatar EDENCOM Entities" msgstr "" #: eos/saveddata/targetProfile.py:77 eos/saveddata/damagePattern.py:166 msgid "Minmatar Republic" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinContextMenus/moduleAmmoChange.py:42 service/ammo.py:185 msgid "Misc" msgstr "" #: gui/builtinViewColumns/droneRegen.py:52 gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 msgid "Missiles" msgstr "" #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/damagePattern.py:161 #: eos/saveddata/damagePattern.py:162 eos/saveddata/damagePattern.py:163 #: eos/saveddata/damagePattern.py:164 eos/saveddata/damagePattern.py:165 #: eos/saveddata/damagePattern.py:166 eos/saveddata/damagePattern.py:167 #: eos/saveddata/damagePattern.py:168 msgid "Mission" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:29 msgid "Mixed" msgstr "" #: eos/saveddata/damagePattern.py:95 msgid "Mjolnir" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:131 msgid "Mobile depot hold" msgstr "" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:38 msgid "Moon Common" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:41 msgid "Moon Exceptional" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:40 msgid "Moon Rare" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:37 msgid "Moon Ubiquitous" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:39 msgid "Moon Uncommon" msgstr "" #: eos/saveddata/targetProfile.py:78 eos/saveddata/damagePattern.py:167 msgid "Mordus Legion" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:110 #: gui/builtinContextMenus/moduleAmmoChange.py:128 msgid "More Damage" msgstr "" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "" #: eos/saveddata/fit.py:434 msgid "Multispectral" msgstr "" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "" #: gui/itemStats.py:171 msgid "Mutations" msgstr "" #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:93 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:100 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:190 #: eos/saveddata/targetProfile.py:191 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:193 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 #: eos/saveddata/targetProfile.py:197 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 eos/saveddata/targetProfile.py:233 #: eos/saveddata/targetProfile.py:234 eos/saveddata/targetProfile.py:235 #: eos/saveddata/targetProfile.py:236 eos/saveddata/targetProfile.py:237 #: eos/saveddata/targetProfile.py:238 eos/saveddata/targetProfile.py:239 #: eos/saveddata/targetProfile.py:240 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:129 eos/saveddata/damagePattern.py:130 #: eos/saveddata/damagePattern.py:131 eos/saveddata/damagePattern.py:132 #: eos/saveddata/damagePattern.py:133 eos/saveddata/damagePattern.py:134 #: eos/saveddata/damagePattern.py:135 eos/saveddata/damagePattern.py:136 #: eos/saveddata/damagePattern.py:137 eos/saveddata/damagePattern.py:139 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/damagePattern.py:162 eos/saveddata/damagePattern.py:163 #: eos/saveddata/damagePattern.py:164 eos/saveddata/damagePattern.py:165 #: eos/saveddata/damagePattern.py:166 eos/saveddata/damagePattern.py:167 #: eos/saveddata/damagePattern.py:168 eos/saveddata/damagePattern.py:169 #: eos/saveddata/damagePattern.py:170 msgid "NPC" msgstr "" #: gui/builtinViewColumns/baseName.py:55 #: gui/builtinItemStatsViews/itemEffects.py:30 msgid "Name" msgstr "" #: eos/saveddata/targetProfile.py:83 msgid "Navitas" msgstr "" #: gui/esiFittings.py:379 msgid "Need at least one ESI character to export" msgstr "" #: gui/esiFittings.py:118 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:104 msgid "New Amount ({}-{})" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:104 msgid "New Amount:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "" #: gui/characterSelection.py:228 msgid "No active fit" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:161 #: gui/characterEditor.py:864 msgid "None" msgstr "" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:140 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "" #: gui/characterEditor.py:400 service/character.py:322 msgid "Not learned" msgstr "" #: gui/additionsPane.py:87 msgid "Notes" msgstr "" #: eos/saveddata/damagePattern.py:98 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:86 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "" #: gui/characterSelection.py:154 msgid "Open Character Editor" msgstr "" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "" #: gui/mainFrame.py:969 msgid "Open One Or More Character Files" msgstr "" #: gui/mainFrame.py:839 msgid "Open One Or More Fitting Files" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "" #: graphs/style.py:55 msgid "Orange" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 #: eos/saveddata/targetProfile.py:192 eos/saveddata/damagePattern.py:109 msgid "Overmind" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/patternEditor.py:276 gui/setEditor.py:210 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:91 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "" #: gui/ssoLogin.py:35 msgid "Please copy and paste the token provided by pyfa.io" msgstr "" #: gui/ssoLogin.py:31 msgid "Please copy and paste the url when your authorization is completed" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:34 msgid "" "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "" #: gui/esiFittings.py:358 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:762 msgid "Please select another character or make a new one." msgstr "" #: gui/mainFrame.py:899 msgid "Please verify path location pyfa's preferences." msgstr "" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Plutonium" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:169 msgid "Pod" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "" "Pressing this button will cause all logs in memory to write to the log file:" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinItemStatsViews/itemCompare.py:172 msgid "Price" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:270 #, python-format msgid "Probe Size: %.3f" msgstr "" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "" #: gui/additionsPane.py:81 msgid "Projected" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:83 eos/saveddata/damagePattern.py:84 #: eos/saveddata/damagePattern.py:85 eos/saveddata/damagePattern.py:86 #: eos/saveddata/damagePattern.py:87 eos/saveddata/damagePattern.py:88 #: eos/saveddata/damagePattern.py:89 eos/saveddata/damagePattern.py:90 #: eos/saveddata/damagePattern.py:91 eos/saveddata/damagePattern.py:92 #: eos/saveddata/damagePattern.py:93 eos/saveddata/damagePattern.py:94 msgid "Projectile Ammo" msgstr "" #: gui/itemStats.py:201 msgid "Properties" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "" #: eos/saveddata/damagePattern.py:87 msgid "Proton" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "" #: graphs/style.py:58 msgid "Purple" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "" "Pyfa (the Python Fitting Assistant) is an open-source standalone application " "able to create and simulate fittings for EVE-Online SciFi MMORPG with a very " "high degree of accuracy. Pyfa can run on all platforms where Python and " "wxWidgets are supported." msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "" "Pyfa can automatically check and notify you of new releases. This feature is " "toggled in the Network settings. Here, you may allow pre-release " "notifications and view suppressed release notifications, if any." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "" "Pyfa language selection disabled. Please check if .mo files have been " "generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:130 msgid "Quafe hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:161 msgid "Quantity of active items" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:161 msgid "Quantity of all items" msgstr "" #: gui/builtinContextMenus/moduleRahPattern.py:40 msgid "RAH Damage Pattern" msgstr "" #: eos/saveddata/fit.py:428 msgid "Radar" msgstr "" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:53 msgid "Random stats" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "" #: gui/mainFrame.py:652 msgid "" "Re-enabling fitting restrictions for this fit will also remove any illegal " "items from the fit. Do you want to continue?" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "" #: graphs/style.py:52 msgid "Red" msgstr "" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:81 #: gui/builtinItemStatsViews/itemAttributes.py:69 msgid "Refresh" msgstr "" #: gui/characterSelection.py:69 msgid "Refresh Skills" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinStatsViews/outgoingViewMinimal.py:65 msgid "Remote Reps" msgstr "" #: gui/esiFittings.py:433 msgid "Remove Character" msgstr "" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "" #: gui/itemStats.py:186 msgid "Requirements" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:50 msgid "Reset defaults" msgstr "" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinStatsViews/resistancesViewFull.py:47 msgid "Resistances" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinStatsViews/resourcesViewFull.py:84 msgid "Resources" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:56 msgid "Revert changes" msgstr "" #: gui/builtinContextMenus/itemMutations.py:36 msgid "Revert to {}" msgstr "" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "" #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:135 msgid "Rogue Drone" msgstr "" #: eos/saveddata/targetProfile.py:239 eos/saveddata/damagePattern.py:160 msgid "Rogue Drone Entities" msgstr "" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "" #: gui/esiFittings.py:413 msgid "SSO Character Management" msgstr "" #: service/esi.py:126 msgid "SSO Error" msgstr "" #: gui/ssoLogin.py:19 msgid "SSO Login" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Salvage hold" msgstr "" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:233 #: eos/saveddata/targetProfile.py:236 eos/saveddata/damagePattern.py:110 msgid "Sansha" msgstr "" #: eos/saveddata/targetProfile.py:80 eos/saveddata/damagePattern.py:169 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "" #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 #: eos/saveddata/damagePattern.py:118 eos/saveddata/damagePattern.py:136 msgid "Sanshas Nation" msgstr "" #: gui/mainFrame.py:864 msgid "Save Backup As..." msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:128 msgid "Save CSV file" msgstr "" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "" #: gui/characterEditor.py:283 msgid "Save Character As..." msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "" #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "" #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "" #: eos/saveddata/damagePattern.py:100 msgid "Scorch Bomb" msgstr "" #: eos/saveddata/damagePattern.py:97 msgid "Scourge" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "" #: gui/characterEditor.py:357 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "" #: gui/characterEditor.py:916 msgid "Security Status is used in some CONCORD hull calculations" msgstr "" #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:193 eos/saveddata/damagePattern.py:111 msgid "Seeker" msgstr "" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "" #: gui/esiFittings.py:361 msgid "Sending request and awaiting response" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "" #: eos/saveddata/targetProfile.py:97 eos/saveddata/damagePattern.py:131 msgid "Sentinel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:137 msgid "Serpentis" msgstr "" #: gui/esiFittings.py:422 msgid "Server" msgstr "" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "" #: gui/characterEditor.py:909 msgid "Set Security Status" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "" #: gui/characterEditor.py:327 msgid "" "Setting an Alpha clone does not replace the character's skills, but rather " "caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "" #: graphs/data/fitShieldRegen/graph.py:38 #: gui/builtinViewColumns/droneRegen.py:78 msgid "Shield Regeneration" msgstr "" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewFull.py:38 #: gui/builtinStatsViews/outgoingViewMinimal.py:37 msgid "Shield restored" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "" #: gui/builtinViews/fittingView.py:665 #: gui/builtinStatsViews/priceViewFull.py:57 #: gui/builtinStatsViews/priceViewMinimal.py:57 msgid "Ship" msgstr "" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:113 msgid "Short Range" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:102 msgid "Shrapnel Bomb" msgstr "" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "" #: gui/targetProfileEditor.py:125 msgid "" "Signature radius\n" "Leave blank for infinitely big value" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "" #: gui/aboutData.py:33 msgid "" "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:343 gui/characterEditor.py:612 msgid "Skill" msgstr "" #: gui/characterEditor.py:161 msgid "Skills" msgstr "" #: gui/characterSelection.py:240 msgid "Skills required:" msgstr "" #: eos/saveddata/damagePattern.py:66 msgid "SlamBolt" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:196 #: eos/saveddata/damagePattern.py:112 msgid "Sleeper" msgstr "" #: eos/saveddata/targetProfile.py:240 eos/saveddata/damagePattern.py:159 msgid "Sleeper Entities" msgstr "" #: eos/saveddata/damagePattern.py:170 msgid "Sleepers" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "" #: graphs/style.py:86 msgid "Solid" msgstr "" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "" #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:157 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:145 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:151 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:148 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "" #: gui/characterEditor.py:903 msgid "Success" msgstr "" #: gui/characterEditor.py:903 msgid "Successfully fetched skills" msgstr "" #: eos/saveddata/targetProfile.py:94 eos/saveddata/damagePattern.py:127 msgid "Succubus" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: eos/gamedata.py:254 gui/builtinContextMenus/envEffectAdd.py:209 msgid "Tachyon" msgstr "" #: gui/builtinViewColumns/baseName.py:105 gui/builtinViews/fittingView.py:661 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "" #: eos/saveddata/targetProfile.py:98 eos/saveddata/damagePattern.py:130 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "" #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/damagePattern.py:120 eos/saveddata/damagePattern.py:121 #: eos/saveddata/damagePattern.py:122 eos/saveddata/damagePattern.py:123 msgid "Team" msgstr "" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:814 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:66 msgid "" "The amount of spoolup to use by default on module which support it. Can be " "changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "" "The delay between a keystroke and the market search. Can help reduce lag " "when typing fast in the market search box." msgstr "" #: gui/mainFrame.py:935 msgid "The following error was generated" msgstr "" #: gui/mainFrame.py:897 msgid "The following path is invalid or does not exist:" msgstr "" #: gui/esiFittings.py:256 msgid "The server took too long to response. Please try again in a moment." msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "" "The source you choose will be tried first, but subsequent sources will be " "used if the preferred source fails. The system you choose will also be tried " "first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:67 msgid "The source you choose will be used on connection." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "" "There is a release available which you have chosen to suppress. You can " "choose to reset notification suppression for this release, or download the " "new release from GitHub." msgstr "" #: gui/characterEditor.py:465 msgid "There was an error importing skills, please see log file" msgstr "" #: gui/esiFittings.py:240 msgid "" "There was an error validating characters' SSO token. Please try logging into " "the character again to reset the token." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Thermal" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "" "This allows the EVE SSO to callback to your local pyfa instance and complete " "the authentication process without manual intervention." msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "" "This is a destructive action that will delete all cached prices out of the " "database.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "" "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "" "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "" "This option is a workaround in case you cannot log into EVE SSO due to " "'Signature has expired' error" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Thorium" msgstr "" #: eos/saveddata/damagePattern.py:168 msgid "Thukker" msgstr "" #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 graphs/data/fitRemoteReps/graph.py:51 #: graphs/data/fitRemoteReps/graph.py:56 graphs/data/fitMobility/graph.py:33 #: graphs/data/fitMobility/graph.py:41 graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 graphs/data/fitCapacitor/graph.py:34 #: graphs/data/fitCapacitor/graph.py:41 msgid "Time" msgstr "" #: gui/esiFittings.py:257 msgid "Timeout" msgstr "" #: eos/saveddata/damagePattern.py:89 msgid "Titanium Sabot" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:77 msgid "Toggle view mode" msgstr "" #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewMinimal.py:57 msgid "Total" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "" #: gui/itemStats.py:167 msgid "Traits" msgstr "" #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 #: eos/saveddata/targetProfile.py:194 eos/saveddata/damagePattern.py:113 msgid "Triglavian" msgstr "" #: eos/saveddata/targetProfile.py:102 eos/saveddata/damagePattern.py:139 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:149 msgid "Triglavian Entities" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:126 msgid "Triglavian Invasion" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "Tungsten" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:223 #, python-brace-format msgid "Type: {0}\n" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:227 msgid "Type: {}" msgstr "" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "" #: gui/characterEditor.py:618 msgid "Unlearn" msgstr "" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "" #: eos/saveddata/damagePattern.py:78 msgid "Uranium" msgstr "" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:157 msgid "" "Use short mutaplasmid name and base item name instead of actual item name. " "Works if EVE data language is set to English." msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinContextMenus/itemVariationChange.py:49 msgid "Variations" msgstr "" #: eos/saveddata/targetProfile.py:88 eos/saveddata/damagePattern.py:123 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:60 msgid "View Raw Data" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "" #: gui/ssoLogin.py:25 msgid "Waiting for character login through EVE Single Sign-On." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:215 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:217 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:248 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:250 #, python-format msgid "Warp Core Strength: %.1f" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "" "When disabled, reloads charges just in selected modules. Action can be " "reversed by holding Ctrl or Alt key while changing charge." msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "" "When enabled, skills will check their dependencies' requirements when their " "levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation " "skill, as that requires Drones V" msgstr "" #: graphs/data/fitDamageStats/graph.py:69 msgid "" "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main " "window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "" "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main " "window" msgstr "" #: eos/saveddata/targetProfile.py:95 eos/saveddata/damagePattern.py:128 msgid "Worm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "" #: gui/characterEditor.py:761 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "" #: gui/characterEditor.py:77 msgid "You must supply a name for the Character!" msgstr "" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:69 msgid "[T2] ElectroPunch" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:94 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:81 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:71 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:64 msgid "[T2] StrikeSnipe" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "" #: gui/errorDialog.py:82 msgid "" "pyfa has experienced an unexpected issue. Below is a message that contains " "crucial \n" "information about how this was triggered. Please contact the developers with " "the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "" #: eos/utils/stats.py:123 msgid "th" msgstr "" #: eos/utils/stats.py:123 msgid "thermal" msgstr "" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "" #: gui/itemStats.py:88 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "" #: gui/characterEditor.py:285 msgid "{} Copy" msgstr "" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "" #: gui/builtinViewColumns/baseName.py:107 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "" msgstr[1] "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "" ================================================ FILE: locale/ru_RU/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2021-09-11 14:48\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " ДПС: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " Стопка" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " Залп: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "&Сохранить Все Фиты" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "&Просмотр ESI Фитов" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "&Персонаж" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "&Редактор персонажа" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "&Закрыть Все Вкладки" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "&Закрыть вкладку" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "&Редактор Шаблона Урона" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "&Редакторы" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "&Экспорт фитов" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "&Экспорт Необходимых Навыков" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "&Файл" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "&Форумы" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "Из буфера обмена" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "&Общее" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "&Графики" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "&Помощь" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "&Редактор набора имплантов" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "&Импорт Файла Персонажа" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "&Импорт Фитов" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "&Менеджер ESI Персонажей" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "&Новая вкладка" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "&Оптимизировать Цену Фита" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "&Параметры" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "&Повторить" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "&Сохранить Персонажа" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "&Редактор профиля цели" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "&В буфер" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "&Выключить Переопределения" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "&Включить Переопределения" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "&Отменить" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "&Вики" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(Нельзя изменить пока работает pyfa. Настройте через переключатели командной строки)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "0с" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "Способности" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "Бездна" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "Погода бездны" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "Активный" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "Активные способности" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "Активные побочные эффекты" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "Активное восстановление щита" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "Добавить Персонажа" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "Ошибка Добавления Персонажа" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "Добавить Флотовые Бонусы" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "Добавить текущий открытый фит" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "Добавить Эффекты Окружения" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "Добавить Фит..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "Добавить Фиты" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "Добавить {0} в трюм (х1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "Добавить {} в Трюм" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "" #: gui/additionsPane.py:45 msgid "Additions" msgstr "Дополнения" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "Адрес:" #: gui/itemStats.py:196 msgid "Affected by" msgstr "Влияние от" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "Время разгона" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "Разгон:\t%.3fс" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "Все" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "Все связанные с EVE Online материалы являются собственностью CCP hf." #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "Все Файлы" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "Все требования по навыкам выполнены" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "Разрешить пререлизные уведомления" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "Всегда показывать Y = 0" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "Амарр (Броня)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "Амарр (Щит)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "Амаррская Империя" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "Отсек для боеприпасов" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "Картель Ангелов" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "Антиматерия" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "Применить Набор Имплантов" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "Применить Мутаплазмид" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "Применить Настройки Прокси" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "Вы уверены, что хотите удалить все переопределения?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "Вы уверены, что хотите игнорировать ограничения для текущего фита? Это может привести и абсолютно некорректным результатам и возможным ошибкам." #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "Броня" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "Броня (+Т2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "Количество ремонтируемой брони" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "Сопротивление брони" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "Броня восстановлена" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "Броня: " #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "Астероид" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "Атакующий" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "Атрибут" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "Переопределения &Атрибутов" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "Редактор Атрибутов" #: gui/itemStats.py:177 msgid "Attributes" msgstr "Атрибуты" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "Автоматически" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "Автоопределение настроек прокси" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "Автоопределенно: " #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "Ось X:" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Ось Y:" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "Назад" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "Восстановление {} фитов в: {}" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "Резервное копирование всех фитов в XML файл" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "Резервное копирование фитов" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "Базовое Значение" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "Линейный крейсер" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "Линкор" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "Имейте в виду, что уже обработанные фиты не будут сохранены" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "Союз Охотников за Кровью" #: graphs/style.py:54 msgid "Blue" msgstr "Синий" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "Бомбы" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "Боевой стимулятор" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "Боевые стимуляторы" #: graphs/style.py:82 msgid "Bright" msgstr "Ярко" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "Просмотр фитов EVE" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "Расстояние до столкновения" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "КОНКОРД" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "ЦПУ" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "CSV файлы" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "Калдари (Броня)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "Калдари (Щит)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "Государство Калдари" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "Калибровка" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "Накопитель" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "Стабильность накопителя" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "Груз" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "Предметы в Трюме" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "Трюм" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "Трюм: " #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "КАР" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "Путь к сертификату:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "Изменить %s навыков" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "Изменить количество" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "Изменить Навыки" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "Изменить заряды во всех модулях того же типа" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "Изменить количество {0}" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "Изменить дальность {}" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "Изменения требуют перезапуска pyfa для вступления в силу." #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "Персонаж" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "Редактор Персонажа" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "ID Персонажа" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "" #: gui/characterEditor.py:771 msgid "Character:" msgstr "Персонаж:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "Персонаж: " #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "Заряд" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "Цитадель" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "Очистить Всё" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "Очистить все переопределения" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "ID клиента:" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "Цветной режим фита по слотам" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "Отсек для командных центров" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "Сравнить" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "Подтвердить" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "Подтвердить Удаление" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "Ошибка соединения, пожалуйста проверьте Ваше интернет соединение" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "Контекстные меню" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "Копировать" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "Копировать Все {}" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "Копировать Отсутствующие Навыки" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "Копировать Модули в Буфер" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "Копировать выбранное {}" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "Копировать и вставить блок текста предоставленный pyfa.io" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "Не удалось импортировать из буфера" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "Не удалось импортировать из буфера:" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "Не удалось импортировать из буфера: неизвестные ошибки" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "Крейсер" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "Текущее Значение" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "Голубой" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "ДПС" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "Редактор Шаблона Урона" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "Профиль Урона" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "Имя профиля урона уже используется, пожалуйста выберете другое." #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "Параметры Урона" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "Нанесённый урон" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "" #: graphs/style.py:81 msgid "Dark" msgstr "Темный" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "Штрих-пунктир" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "База данных" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "Сохранять отладочную информацию" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "Рыночные Цены По умолчанию:" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "Значение по умолчанию: %0.3f" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "Защитный" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "Определено в миллионах килограмм" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "Удалить" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "Удалить Все Профили Урона" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "Удалить Все Цены" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "Удалить Все Профили Целей" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "Удалить всё из EVE" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "Удалить из EVE" #: gui/itemStats.py:189 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "" #: gui/itemStats.py:174 msgid "Description" msgstr "Описание" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "Эсминец" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "Инструменты Разработчика" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "Отключить Ог&раничения Фита" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "Выкл" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "Отключение контекстных меню может улучшить производительность.\n" "Вы можете зажать кнопку {} + ПКМ для показа всех пунктов меню независимо от этой настройки." #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "Дистанция" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "Дистанция между атакующим и целью, как показано в обзорной панели (поверхность-к-поверхности)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "Дистанция между атакующим и целью, как показано в обзорной панели (поверхность-к-поверхности)\n" "Когда задано, цель помещена на данную дистанцию от атакующего\n" "Когда не установлено, оружие атакующего всегда попадает в цель" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "Дистанция между ремонтирующим кораблём и целью, как показано в обзорной панели (поверхность-к-поверхности)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "Вы действительно хотите удалить {} ({}) из EVE?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "Не напоминать мне снова об этом релизе" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "Не видите вашего персонажа EVE в списке?" #: graphs/style.py:88 msgid "Dotted" msgstr "Пунктир" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "Загрузить" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "Перетащите фит в этот список, чтобы построить график" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "Перетащите фит в этот список, чтобы построить график против него" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "Перетащите фит в эту область" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "Дрон" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "Отсек для дронов" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "Дальность дронов" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "Дроны" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "Активные дроны" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "Дамп Всех Логов" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "Э&кспорт в ESI" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "Файлы текстовых фитов EFT" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "ОШИБКА" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "EVE API XML файлы персонажа" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "EVE IGB HTML файл фита" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "Сервера EVE (API и CREST импорт)" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "EVE XML файл фита" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "EVE XML файлы фитов" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "XML файл изучения навыков EVEMon" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "Файл изучения навыков EVEMon" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "Эффективный ДПС" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "Эффективный залп" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "" #: gui/itemStats.py:192 msgid "Effects" msgstr "Эффекты" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "Пусто" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "Пустая Вкладка" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "Включить Ог&раничения фита" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "Включить Сеть" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "Включить минимальный формат" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "Включена" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "Обеспечить строгие требования к уровням навыков" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "Введите имя для вашего нового Персонажа:" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "Введите имя для вашего нового Набора Имплантов:" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "Ошибка" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "" #: gui/errorDialog.py:68 msgid "Error!" msgstr "Ошибка!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "Развернуть Всё" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "" #: gui/propertyEditor.py:39 msgid "Export" msgstr "Экспорт" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "Экспортировать все фиты в &HTML" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "Ошибка Экспорта" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "Экспорт фита" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "Экспорт фитов в минимальной HTML версии, содержащей только ссылки на ыиты без какого либо визуального оформления" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "Экспорт Параметров Предмета" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "Экспорт Загруженных Зарядов" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "Экспортировать фит в буфер" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "Экспорт бустеров" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "Экспортировать содержимое трюма" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "Экспортировать содержимое трюма" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "Экспорт зарядов загруженных в модули" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "Экспорт фита в EVE" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "Экспорт фитов в HTML файл (задано в Настройках)" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "Экспорт фита в другой формат" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "Экспорт наборов имплантов в буфер" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "Экспорт имплантов" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "Экспорт навыков из буфера" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "Экспорт необходимых для этого фита навыков" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "Экспорт необходимых навыков..." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "Дополнительные параметры" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "Не удалось создать файл экспорта" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "Выгрузить фиты" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "Фи&т" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "Отсек для истребителей" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "Активные отряды истребителей" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "Истребители" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "Нить" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "Заполнить Модулем" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "Заполнить {0}" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "Заполнить модулем" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "Огневая мощь" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "Фит" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "База Данных Фитов:" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "Работа фита" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "Фит" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "Отсек с общим доступом" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "Теги Форматирования" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "Частотные кристаллы" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "Фрегат" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "Отсек для топлива" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "Полный" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "Галленте (Броня)" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "Галленте (Щит)" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "Галлентская Федерация" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "База Данных Игры:" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "Отсек для газа" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "Основное" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "Перейдите к теме на форуме EVE" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "Перейдите к вики на GitHub" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "Графики" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "" #: graphs/style.py:53 msgid "Green" msgstr "Зеленый" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "Организация «Гуристас»" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "Экспорт HTML" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "HTML экспорт (Файл > Экспорт HTML) позволяет экспортировать всю базу данных фитов в HTML файл в заданном расположении. Этот файл может быть использован для простого открытия Ваших фитов в веб-приложениях фитинга" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "Тяжёлые" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "Скрыть Недавние Фиты" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "Скрыть пустые группы кораблей" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "Корпус" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "Корпус (+Т2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "Сопротивляемость корпуса" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "Корпус: " #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "Гибридные заряды" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "Идеальная Цель" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "Набор Имплантов" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "Редактор Набора Имплантов" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "Имя набора имплантов уже используется, пожалуйста выберете другое." #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "Имплантаты" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "Импланты и Бустеры" #: gui/propertyEditor.py:38 msgid "Import" msgstr "Импорт" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "Ошибка Импорта" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "Импорт Навыков" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "Импорт фита из буфера" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "Импорт персонажа в pyfa из файла" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "Импорт фитов в pyfa" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "Импорт наборов имплантов из буфера" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "Импорт переопределений" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "Импорт профилей из буфера" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "Импорт файла переобределений pyfa" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "Импорт навыков из буфера" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "Импорт в pyfa" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "Импортирование Персонажа..." #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "Импортирование фитов" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "Импортирование навыков в этого персонажа временно установит уровни навыков. Для сохранения навыков на постоянной основе, пожалуйста, нажмите кнопку Сохранить внизу этого окна после импорта" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "Включить теги форматирования для вставки фита напрямую в корп. бюллетени, МОТД, и т. д." #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "Неверное форматирование (только десятичные дроби)" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "Отсек для индустриальных кораблей" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "Заинтересованы в помощи с переводами?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "Неверный Путь" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "Неверный Токен" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "Вторжение" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "Предмет" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:58 msgid "Item stats" msgstr "Параметры предмета" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "Ханидское Королевство" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "Язык (требуется перезапуск)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "Хватит на " #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:343 msgid "Level" msgstr "Уровень" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "Уровень %s" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "Уровень {}" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "Уровень {}d" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "Загруженные Заряды" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "Загрузка предыдущих фитов..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "Локальный Сервер" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "Местная" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "Расположение файла логов:" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "" #: graphs/style.py:56 msgid "Magenta" msgstr "Фиолетовый" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "Док-камера" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "Управление Персонажами" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "Ручной" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "Ручные настройки прокси" #: gui/mainFrame.py:180 msgid "Market" msgstr "Рынок" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "Рынок и Цены" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "Рынок и Цены" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "Задержка Поиска по Рынку (мс):" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "Масса:\t{:,.0f}кг" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "Отсек для минералов" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "Максимальная скорость" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "Отсек для средних кораблей" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "Отсек для минералов" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "Минимум" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "Минматар (Броня)" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "Минматар (Щит)" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "Республика Минматар" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "Прочее" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "Прочие данные" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "Ракеты" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "Миссия" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "Подвижность" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "Режим:" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "Модуль" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "Импульс" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "Легион Морду" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "Больше Урона" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "" #: gui/itemStats.py:170 msgid "Mutations" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "Имя" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "Необходим хотя бы один ESI персонаж для экспорта" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "Сеть" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "Новая количество ({}-{})" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "Новое количество:" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "Новый Набор Имплантов" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "Новый фит" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "Нет" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "Нет Профиля" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "Нет активного фита" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "Нет прокси" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "Пусто" #: graphs/style.py:80 msgid "Normal" msgstr "Нормальный" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "Не Изучено" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "Не изучено" #: gui/additionsPane.py:87 msgid "Notes" msgstr "Примечания" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "Открыть &Инструменты Разработчика" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "Открыть Редактор Персонажа" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "Открыть Фит в Новой Вкладке" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "Открыть Один Или Несколько Файлов Персонажей" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "Открыть Один Или Несколько Файлов Фитов" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "Открыть Инструмент Проверки Ви&джетов" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "Открыть Инструмент Проверки Виджетов" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "Открывать фиты в новой вкладке по умолчанию" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "Открыть в браузере фитов" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "Открыть в новой вкладке" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "Оптимизировать Цену" #: graphs/style.py:55 msgid "Orange" msgstr "Оранжевый" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "Отсек для руды" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "Другое" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "Надмозг" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "Пассивная перезарядка щита" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "Пароль:" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "Вставить {}" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "Пожалуйста, подождите..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "Пожалуйста посмотрите pyfa вики на GitHub для информации относительно этих опций." #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "Пожалуйста, выберите активный фит в основном окне" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "Пожалуйста, выберите другого персонажа или создайте нового." #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "Пожалуйста, проверьте путь к настройкам pyfa." #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "Построить с другими патронами..." #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "Капсула" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "Порт:" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "Реактор" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "Параметры" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "Нажатие этой кнопки приведёт к записи всех логов из памяти в файл:" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "Цена" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "Обновления цен" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "Профили экспортированы в буфер" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "Профили успешно импортированы из буфера" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "Спроецировать на Активный Фит" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "Спроецировать на Фит" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "Споецировать {0} на Фит" #: gui/additionsPane.py:81 msgid "Projected" msgstr "Спроецированно" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "" #: gui/itemStats.py:200 msgid "Properties" msgstr "Свойства" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "Скоростной" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "Настройки прокси" #: graphs/style.py:58 msgid "Purple" msgstr "Пурпурный" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "Pyfa (Python Fitting Assistant) это отдельное приложение с открытом исходным кодом, которое может создавать и симулировать фиты для СайФай ММОРПГ EVE Online с высокой степенью точности. Pyfa может работать на всех платформах которые поддерживают Python и wxWidgets." #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "Проверка Обновления Pyfa" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "Pyfa может автоматически проверять и уведомлять о новых версиях. Эта функция может быть включена в Настойках сети. Здесь Вы можете разрешить пререлизные уведомления и просмотреть отключённые уведомления, если таковые имеются." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "Количество активных предметов" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "Количество всех предметов" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "Радиус" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "Случайные параметры" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "Дальность" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "Включение ограничений фита превидёт к удалению любых неподходящих предметов из фита. Вы хотите продолжить?" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "Недавние Фиты" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "Недавно Использованные Предметы" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "Скорость перезарядки" #: graphs/style.py:52 msgid "Red" msgstr "Красный" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "Повтор последнего отменённого действия" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "Обновить" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "Обновить Навыки" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "Удалить Персонажа" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "Удалить Переопределения для Предмета" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "Переименовать" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "Открывать предыдущие фиты при запуске" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "Скорость ремонта" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "Заменить предметы более дешёвой альтернативой" #: gui/itemStats.py:185 msgid "Requirements" msgstr "Требования" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "Сбросить" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "Сбросить заглушённое" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "Восстановить по умолчанию" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "Множитель сопротивления: " #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "Сопротивление урону (резисты)" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "Ресурсы" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "Отменить изменения" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "Тюнинг-модуль" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "Восставшие дрон" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "Восставшие дроны" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "SSO Менеджер Персонажей" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "SSO Логин" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "SSO режим" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "Отсек для сальвага" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "Вторжение Санши" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "Нация Санши" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "Сохранить резервную копию как..." #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "Сохранить CSV файл" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "Сохранить Персонажа &как..." #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "Сохранить Персонажа Как..." #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "Сохранить фит как..." #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "Сохранить Переопределения Как..." #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "Сохраниь как Новый Набор Имплантов" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "Разреш. сканера" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "Поиск фитов" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "Статус Безопасности: {0:.2f}" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "Статус Безопасности используется в некоторых расчётах для корпусов КОНКОРДа" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "Выберите формат" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "Отправка запроса и ожидание ответа" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "Организация «Гуристас»" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "Сервис" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "Установить Статус Безопасности" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "Установить как Профиль Урона" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "Выбрать путь для экспорта" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "Установить {} как Профиль Урона" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "Снайперский" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "Щит" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "Щит (+Т2 DCU)" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "Регенерация Щита" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "Количество щита" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "Реген. щита" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "Сопротивление щита" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "Щит/Броня Танк" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "Щит: " #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "Корабль" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "Группы кораблей" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "Отсек для кораблей" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "Показать легенду" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "Побочные эффекты" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "Сигнатура" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "Радиус сигнатуры\n" "Оставьте пустым для бесконечно большого числа" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "Увеличение радиуса сигнатуры" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "Навык" #: gui/characterEditor.py:160 msgid "Skills" msgstr "Навыки" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "Необходимые навыки:" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "Отсек для малых кораблей" #: graphs/style.py:86 msgid "Solid" msgstr "Сплошной" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "Скорость" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "Снижение скорости" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "Разделить стопку {}" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "Стабильно: " #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "Панель статистики" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "Подсистема" #: gui/characterEditor.py:901 msgid "Success" msgstr "Успешно" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "Заглушено {0} Уведомлений" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "Поддерживаемый" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "Тактический режим" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "Цель" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "Профиль Цели" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "Редактор Профиля Цели" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "Имя профиля цели уже используется, пожалуйста выберете другое." #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "Сопротивления цели" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "Масса цели" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "Сопротивление цели" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "Сигнатура цели" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "Радиус сигнатуры цели" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "Скорость цели" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "Цели" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "Задержка между нажатием кнопки и поиском по рынку. Может помочь снизить лаги при быстром наборе в поле поиска по рынку." #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "Следующий путь неверен или не существует:" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "Выбранный Вами источник будет попробован в первую очередь, но последующие источники будут использованы, если желаемый источник не сработает. Выбранная Вами система также будет испробована в первую очередь, при отсутствии данных будут использованы глобальные цены." #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "Это релиз, который Вы решили заглушить. Вы можете сбросить заглушение уведомления для этого релиза либо загрузить новый релиз с GitHub." #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "Произошла ошибка импорта навыков, пожалуйста, смотрите файл журнала" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "Произошла ошибка проверки SSO токена персонажа. Пожалуйста попробуйте залогиниться за персонажа ещё раз, чтобы сбросить токен." #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "Это действие приведёт к удалению всех кешированных цен из базы данных.\n" "Вы уверены, что хотите продолжить?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "Это действие приведёт к удалению всех профилей урона.\n" "Вы уверены, что хотите продолжить?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "Это действие приведёт к удалению всех профилей цели.\n" "Вы уверены, что хотите продолжить?" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "Эта опция предлагает пользователям копировать и вставлять информацию в веб приложение для возможности логина персонажа. Используйте эту опцию если испытываете проблемы с локальным сервером." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "Эта опция направляет SSO логин через pyfa.io, позволяя Вам проще логиниться без каких либо настроек. Если сомневаетесь, используйте эту опцию." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "Эта опция запускает локальный сервер, к которому будет обращаться веб приложение за информацией о логине персонажа." #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "Племя таккеров" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "Время" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "Итого" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "Итого: " #: gui/itemStats.py:166 msgid "Traits" msgstr "Особенности" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "Сообщество Триглава" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "Вторжение Триглава" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "Точки монтажа орудий" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "Тип" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "Тип: {0}\n" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "Тип: {}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "Отменить последнее действие" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "Забыть" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "Доступно Обновление" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "Обновления" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "Использовать импланты персонажа" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "Использовать импланты персонажа по умолчанию для новых фитов" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "Имя пользователя:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "Использовать каталог запуска для сохраненной Базы Данных Фитов и Настроек" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "Варианты" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "Просмотр Сырых Данных" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "Залп" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "Ожидание логина персонажа через EVE Single Sign-On." #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "Скорость Варпа" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "Время Варпа" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "Время варпа" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "Оружие" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "Когда отключено, перезаряжает заряды только в выбранных модулях. Действие может быть инвертировано зажатием кнопки Ctrl или Alt во время изменения заряда." #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "Если включено навыки будут проверять зависимые требования при изменении их уровня и сбрасывать навыки которые больше не удовлетворяют требованиям.\n" "Например: Изменение навыка Дроны с уровня V на уровень IV сбросит навык Тяжёлые боевые дроны, т.к. он требует Дроны V" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "Червоточина" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "Жёлтый" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "Да" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "Вы не можете привязать All 0 и All 5 персонажей к персонажу EVE." #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "Вы должны указать имя персонажа!" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "Вы должны указать имя для Набора Имплантатов!" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "Вы должны указать имя для вашего Профиля Урона!" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "Вы должны указать имя для вашего Профиля Цели!" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "ошибка pyfa" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "pyfa испытала неожиданную проблему. Ниже находится сообщение, которое содержит критически важную \n" "информацию о том, что её вызвало. Пожалуйста, передайте разработчикам предоставленную \n" "информацию через форумы EVE online или заполните заявку на GitHub." #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "pyfa выпущена по GNU GPLv3 - смотрите прилагаемый файл LICENSE" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "файл переопределений pyfa" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "переопределения pyfa" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "" #: eos/utils/stats.py:123 msgid "th" msgstr "" #: eos/utils/stats.py:123 msgid "thermal" msgstr "" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "{{0:.{0}f}} осталось" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{} (по умолчанию)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "{} Копировать" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "" msgstr[1] "" msgstr[2] "" msgstr[3] "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "" ================================================ FILE: locale/tr_TR/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2021-05-18 17:34\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: tr\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " SHM: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr " Yığın" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr " Yaylım Ateşi: " #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "" msgstr[1] "" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "&Tüm Kurulumları Yedekle" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "&ESI Kurulumlarını Gezin" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "&Karakter" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "&Karakter Düzenleyici" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "&Tüm Pencereleri Kapat" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "&Pencereyi Kapat" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "&Zarar Şablonu Düzenle" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "&Düzenleyici" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "&Kurulumu Dışa Ver" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "&Gerekli Becerileri Dışa Ver" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "&Dosya" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "&Forumlar" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "&Panodan Al" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "&Küresel" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "&Grafikler" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "&Yardım" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "&Implant Seti Düzenleyici" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "&Karakter Dosyasını İçe Aktar" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "&Kurulumları İçe Aktar" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "&ESI Karakterlerini Düzenle" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "&Yeni Pencere" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "&Kurulum Ücretini Optimize Et" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "&Seçenekler" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "&Yinele" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "&Karakteri Geri Al" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "&Karakteri Kaydet" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "&Hedef Şablonu Düzenle" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "&Panoya aktar" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "&Aşırı Yüklemeleri Kapat" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "&Aşırı Yüklemeleri Aç" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "&Geri Al" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(Pyfa çalışırken değiştirilemez. Komut satırı Anahtarlarıyla ayarlayın.)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "Beceriler" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "Abyssal Şartlar" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "Aktif" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "Aktif Beceriler" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "Aktif Yan Etkiler" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "Aktif Kalkan Arttırımı" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "Karakter Ekle" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "Karakter Ekleme Hatası" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "Komuta Arttırımı Ekle" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "Mevcut Açık Kurulumu Ekle" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "Çevresel Etki Ekle" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "Kurulum Ekle..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "Kurulum Ekle" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "Kargoya {0} (x1000) Ekle" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "Kargoya {} Ekle" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "Dron Bölümü {} ekle {}" #: gui/additionsPane.py:45 msgid "Additions" msgstr "Eklemeler" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "Eklemeler Paneli Kopyala/Yapıştır" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "Adres:" #: gui/itemStats.py:196 msgid "Affected by" msgstr "Etkileyen" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "Atiklik:\t%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "Hizalanma süresi" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "Hizalanma:\t%.3fs" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "Tümü" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "Tüm EVE-Online ile ilgili malzemeler CCP hf Aittir." #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "Tüm Dosyalar" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "Tüm Gerekli Beceri eğitimleri tamamlanmış" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "Yeni sürüm bildirimlerine izin ver" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "Her zaman Y = 0 göster" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "Amarr (Zırh)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "Amarr (Kalkan)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "Amarr İmparatorluğu" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "Cephane Alanı" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "İbreleri haraketli yap" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "Implant seti uygula" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "Mutaplasmid Uygula" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "Öngörülen öğeleri uygula" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "Proxy Ayarlarını uygula" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "Tüm Aşırı yüklemeleri silmek istediğinize emin misiniz?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "Mevcut kurulumdaki sınırlamaları göz ardı etmek istediğinize emin misiniz? Bu aşırı tutarsız sonuçlar ve muhtemel hatalar doğurabilir." #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "Zırh" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "Zırh (+T2 DCU)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "Zırh Tamir Miktarı" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "" #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "" #: gui/itemStats.py:177 msgid "Attributes" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "" #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "Tüm Kurulumları bir XML Dosyasına kaydet" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "Kurulumları Yedekle" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "Temel Değer" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "Savaş Kruvazörü" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "Savaş Gemisi" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "Uyarı, mevcut işlem yapılmış Kurulumlar kaydedilmedi" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "Biyoışıldama" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "" #: graphs/style.py:54 msgid "Blue" msgstr "Mavi" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "Bombalar" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "Arttırıcı" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "Arttırıcılar" #: graphs/style.py:82 msgid "Bright" msgstr "Parlak" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "EVE kurulumlarını Gezin" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "Toslama Mesafesi" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "Toslama Hızı" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "CSV dosyaları" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "Caldari (Zırh)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "Caldari (Kalkan)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "Caldari Devleti" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "Kalibrasyon" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "Cap miktarı" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "Saniyede boşaltılan Cap" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "Cap Kazanımı" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "Kapasitör (Cap)" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "Kapasitör Kararlılığı" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "Karbonize Kurşun" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "Kargo" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "Kargo Öğeleri" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "Kargo Bölümü" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "Kargo Alanı: " #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "Taşıyıcı" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "Aşındırıcı" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "Sertifika Yolu:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "%s Becerisini değiştir" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "Miktar Değiştir" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "Becerileri Değiştir" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "Aynı Türdeki tüm modüllerdeki cephaneyi değiştir" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "{0} Miktarı Değiştir" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "{} Menzili değiştir" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "Yapılan değişiklikler Pyfa'nın yeniden başlatılmasını gerektirir." #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "Karakter" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "Karakter Düzenleyici" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "Karakter ID" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "Karakter adı zaten kullanılıyor, lütfen bir başkasını seçin." #: gui/characterEditor.py:771 msgid "Character:" msgstr "Karakter:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "" #: gui/additionsPane.py:84 msgid "Command" msgstr "" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "" #: gui/itemStats.py:182 msgid "Compare" msgstr "" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "" #: graphs/style.py:57 msgid "Cyan" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "Zarar Şablonu Düzenle" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "Zarar Profili" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "Zarar Profil adı zaten kullanılıyor, lütfen bir başkasını seçin." #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "Zarar İstatistikleri" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "" #: graphs/style.py:81 msgid "Dark" msgstr "" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "" #: graphs/style.py:87 msgid "Dashed" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "" #: gui/itemStats.py:189 msgid "Dependents" msgstr "" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "" #: gui/itemStats.py:174 msgid "Description" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "" #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "" #: graphs/style.py:88 msgid "Dotted" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "" #: gui/itemStats.py:192 msgid "Effects" msgstr "" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "" #: gui/errorDialog.py:68 msgid "Error!" msgstr "" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "" #: gui/propertyEditor.py:39 msgid "Export" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "" #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "" #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "" #: graphs/style.py:53 msgid "Green" msgstr "" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "" #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "" #: gui/propertyEditor.py:38 msgid "Import" msgstr "" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "" #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "" #: gui/itemStats.py:58 msgid "Item stats" msgstr "" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "" #: gui/characterEditor.py:343 msgid "Level" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "" #: graphs/style.py:56 msgid "Magenta" msgstr "" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "" #: gui/mainFrame.py:180 msgid "Market" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "" #: gui/itemStats.py:170 msgid "Mutations" msgstr "" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "" #: graphs/style.py:80 msgid "Normal" msgstr "" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "" #: gui/additionsPane.py:87 msgid "Notes" msgstr "" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "" #: graphs/style.py:55 msgid "Orange" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "" #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "" #: gui/additionsPane.py:81 msgid "Projected" msgstr "" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "" #: gui/itemStats.py:200 msgid "Properties" msgstr "" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "" #: graphs/style.py:58 msgid "Purple" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "" #: graphs/style.py:52 msgid "Red" msgstr "" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "" #: gui/itemStats.py:185 msgid "Requirements" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "" #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "" #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "" #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "" #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "" #: gui/characterEditor.py:160 msgid "Skills" msgstr "" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "" #: graphs/style.py:86 msgid "Solid" msgstr "" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "" #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "" #: gui/characterEditor.py:901 msgid "Success" msgstr "" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "" #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "" #: gui/itemStats.py:166 msgid "Traits" msgstr "" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "" #: graphs/style.py:59 msgid "Yellow" msgstr "" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "" #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "" #: eos/utils/stats.py:123 msgid "em" msgstr "" #: eos/utils/stats.py:123 msgid "exp" msgstr "" #: eos/utils/stats.py:123 msgid "explosive" msgstr "" #: eos/utils/stats.py:123 msgid "kin" msgstr "" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "" #: eos/utils/stats.py:123 msgid "th" msgstr "" #: eos/utils/stats.py:123 msgid "thermal" msgstr "" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "" msgstr[1] "" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "" ================================================ FILE: locale/zh_CN/LC_MESSAGES/lang.po ================================================ msgid "" msgstr "" "Project-Id-Version: pyfa\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-10-28 15:28+0300\n" "PO-Revision-Date: 2022-06-13 10:20\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: pyfa\n" "X-Crowdin-Project-ID: 411502\n" "X-Crowdin-Language: zh-CN\n" "X-Crowdin-File: /master/locale/lang.pot\n" "X-Crowdin-File-ID: 68\n" #: gui/builtinStatsViews/firepowerViewFull.py:107 msgid " DPS: " msgstr " 秒伤: " #: gui/builtinContextMenus/itemRemove.py:44 msgid " Stack" msgstr "堆" #: gui/builtinStatsViews/firepowerViewFull.py:100 msgid " Volley: " msgstr "齐射" #: gui/builtinItemStatsViews/itemProperties.py:98 #, python-format msgid "%d attribute." msgid_plural "%d attributes." msgstr[0] "共%d个属性。" #: gui/mainMenuBar.py:73 msgid "&Backup All Fittings" msgstr "备份所有装配(&B)" #: gui/mainMenuBar.py:104 msgid "&Browse ESI Fittings" msgstr "浏览游戏内装配(&B)" #: gui/mainMenuBar.py:111 msgid "&Character" msgstr "角色(&C)" #: gui/mainMenuBar.py:144 msgid "&Character Editor" msgstr "角色编辑器(&C)" #: gui/mainMenuBar.py:70 msgid "&Close All Tabs" msgstr "关闭所有标签页(&C)" #: gui/mainMenuBar.py:69 msgid "&Close Tab" msgstr "关闭标签页(&C)" #: gui/mainMenuBar.py:150 msgid "&Damage Pattern Editor" msgstr "伤害模型编辑器(&D)" #: gui/mainMenuBar.py:143 msgid "&Editors" msgstr "编辑器(&E)" #: gui/mainMenuBar.py:92 msgid "&Export Fitting" msgstr "导出装配(&E)" #: gui/mainMenuBar.py:119 msgid "&Export Skills Needed" msgstr "导出所需技能列表(&E)" #: gui/mainMenuBar.py:66 gui/propertyEditor.py:42 msgid "&File" msgstr "文件(&F)" #: gui/mainMenuBar.py:161 msgid "&Forums" msgstr "论坛(&F)" #: gui/mainMenuBar.py:88 msgid "&From Clipboard" msgstr "从剪贴板导入(&F)" #: gui/mainMenuBar.py:135 msgid "&Global" msgstr "全局设置(&G)" #: gui/mainMenuBar.py:96 msgid "&Graphs" msgstr "图表(&G)" #: gui/mainMenuBar.py:159 msgid "&Help" msgstr "帮助(&H)" #: gui/mainMenuBar.py:147 msgid "&Implant Set Editor" msgstr "植入体配置编辑器(&I)" #: gui/mainMenuBar.py:118 msgid "&Import Character File" msgstr "导入角色文件(&I)" #: gui/mainMenuBar.py:91 msgid "&Import Fittings" msgstr "导入装配(&I)" #: gui/mainMenuBar.py:122 msgid "&Manage ESI Characters" msgstr "管理游戏内角色(&M)" #: gui/mainMenuBar.py:68 msgid "&New Tab" msgstr "新标签页(&N)" #: gui/mainMenuBar.py:95 msgid "&Optimize Fit Price" msgstr "优化装配价格(&O)" #: gui/mainMenuBar.py:137 msgid "&Preferences" msgstr "偏好设置(&P)" #: gui/mainMenuBar.py:84 msgid "&Redo" msgstr "恢复(&R)" #: gui/mainMenuBar.py:115 msgid "&Revert Character" msgstr "还原角色(&R)" #: gui/mainMenuBar.py:113 msgid "&Save Character" msgstr "保存角色(&S)" #: gui/mainMenuBar.py:153 msgid "&Target Profile Editor" msgstr "目标属性编辑器(&T)" #: gui/mainMenuBar.py:87 msgid "&To Clipboard" msgstr "导出到剪贴板(&T)" #: gui/mainFrame.py:688 msgid "&Turn Overrides Off" msgstr "启用自定义属性(&T)" #: gui/mainMenuBar.py:131 gui/mainFrame.py:688 msgid "&Turn Overrides On" msgstr "启用自定义属性(&T)" #: gui/mainMenuBar.py:83 msgid "&Undo" msgstr "撤销(&R)" #: gui/mainMenuBar.py:160 msgid "&Wiki" msgstr "百科(&W)" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:25 #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:29 msgid "(Cannot be changed while pyfa is running. Set via command line switches.)" msgstr "(无法在Pyfa运行时更改。请通过命令行开关设置。)" #: gui/builtinStatsViews/capacitorViewFull.py:81 msgid "0s" msgstr "0秒" #: gui/builtinContextMenus/fighterAbilities.py:33 msgid "Abilities" msgstr "铁骑技能" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Abyssal" msgstr "深渊" #: gui/builtinContextMenus/envEffectAdd.py:123 msgid "Abyssal Weather" msgstr "深渊环境" #: gui/builtinItemStatsViews/itemEffects.py:31 msgid "Active" msgstr "激活" #: gui/builtinViewColumns/abilities.py:37 msgid "Active Abilities" msgstr "铁骑技能" #: gui/builtinViewColumns/sideEffects.py:37 msgid "Active Side Effects" msgstr "副作用" #: gui/builtinStatsViews/rechargeViewFull.py:76 msgid "Active shield boost" msgstr "主动维修" #: gui/esiFittings.py:384 msgid "Add Character" msgstr "添加角色" #: gui/esiFittings.py:217 msgid "Add Character Error" msgstr "添加角色错误" #: gui/builtinShipBrowser/fitItem.py:233 msgid "Add Command Booster" msgstr "添加指挥增效剂" #: gui/builtinContextMenus/fitAddCurrentlyOpen.py:29 msgid "Add Currently Open Fit" msgstr "添加当前装配" #: gui/builtinContextMenus/envEffectAdd.py:56 msgid "Add Environmental Effect" msgstr "添加环境效果" #: gui/builtinContextMenus/fitAddBrowse.py:22 msgid "Add Fit..." msgstr "添加装配..." #: gui/fitBrowserLite.py:17 msgid "Add Fits" msgstr "添加装配" #: gui/builtinContextMenus/targetProfile/adder.py:29 msgid "Add Target Profile" msgstr "添加目标属性" #: gui/builtinContextMenus/cargoAddAmmo.py:28 #, python-brace-format msgid "Add {0} to Cargo (x1000)" msgstr "添加 {0} 到货舱(x1000)" #: gui/builtinContextMenus/cargoAdd.py:33 msgid "Add {} to Cargo" msgstr "添加{}到货舱" #: gui/builtinContextMenus/droneAddStack.py:40 msgid "Add {} to Drone Bay{}" msgstr "添加{}到无人机机库{}" #: gui/additionsPane.py:45 msgid "Additions" msgstr "附加装备" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Additions Panel Copy/Paste" msgstr "附加装备栏复制/粘贴" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:101 msgid "Addr:" msgstr "地址:" #: gui/itemStats.py:196 msgid "Affected by" msgstr "影响因素" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:226 #, python-format msgid "Agility:\t%.3fx" msgstr "灵活性:%.3fx" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:87 msgid "Align time" msgstr "起跳时间" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:224 #, python-format msgid "Align:\t%.3fs" msgstr "起跳时间:%.3fs" #: eos/saveddata/damagePattern.py:95 eos/saveddata/targetProfile.py:105 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:119 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:133 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:147 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:161 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:175 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:189 msgid "All" msgstr "全部" #: gui/aboutData.py:32 msgid "All EVE-Online related materials are property of CCP hf." msgstr "所有 EvE Online 相关材料版权归CCP所有" #: gui/mainFrame.py:838 gui/mainFrame.py:1013 msgid "All Files" msgstr "所有文件" #: gui/characterSelection.py:238 msgid "All skill prerequisites have been met" msgstr "已达到所有技能要求" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:38 msgid "Allow pre-release notifications" msgstr "允许预发布版本更新通知" #: graphs/gui/ctrlPanel.py:75 msgid "Always show Y = 0" msgstr "总是显示Y = 0" #: eos/saveddata/targetProfile.py:53 msgid "Amarr (Armor)" msgstr "艾玛(护甲)" #: eos/saveddata/targetProfile.py:52 msgid "Amarr (Shield)" msgstr "艾玛(护盾)" #: eos/saveddata/damagePattern.py:143 eos/saveddata/targetProfile.py:95 msgid "Amarr EDENCOM Entities" msgstr "艾玛EDENCOM实体" #: eos/saveddata/damagePattern.py:149 eos/saveddata/targetProfile.py:72 msgid "Amarr Empire" msgstr "艾玛帝国" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:115 msgid "Ammo hold" msgstr "弹药仓" #: eos/saveddata/damagePattern.py:96 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:229 msgid "Angel" msgstr "天使" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:123 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:66 msgid "Angel Cartel" msgstr "天使联合企业" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:133 msgid "Animate gauges" msgstr "启用属性进度条动画" #: eos/saveddata/damagePattern.py:71 msgid "Antimatter" msgstr "反物质" #: gui/builtinContextMenus/implantSetApply.py:25 msgid "Apply Implant Set" msgstr "应用植入体配置" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Apply Mutaplasmid" msgstr "使用突变质体" #: gui/builtinContextMenus/graphDmgApplyProjected.py:23 msgid "Apply Projected Items" msgstr "应用远程效果物品" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:144 msgid "Apply Proxy Settings" msgstr "应用代理配置" #: gui/propertyEditor.py:146 msgid "Are you sure you want to delete all overrides?" msgstr "您确定要删除所有自定义属性吗?" #: gui/mainFrame.py:645 msgid "Are you sure you wish to ignore fitting restrictions for the current fit? This could lead to wildly inaccurate results and possible errors." msgstr "您确定要忽略当前装配资源限制吗?这可能导致不准确或错误的结果。" #: eos/saveddata/targetProfile.py:47 msgid "Armor" msgstr "装甲" #: eos/saveddata/targetProfile.py:50 msgid "Armor (+T2 DCU)" msgstr "护甲(+T2损控)" #: gui/builtinStatsViews/rechargeViewFull.py:77 msgid "Armor repair amount" msgstr "装甲修量" #: gui/builtinStatsViews/resistancesViewFull.py:113 msgid "Armor resistance" msgstr "装甲抗性" #: gui/builtinStatsViews/outgoingViewMinimal.py:43 #: gui/builtinStatsViews/outgoingViewFull.py:44 msgid "Armor restored" msgstr "护甲修复量" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Armor: " msgstr "装甲:" #: eos/saveddata/damagePattern.py:120 eos/saveddata/targetProfile.py:90 msgid "Ashimmu (Blood Raiders)" msgstr "阿什姆级(血袭者)" #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 msgid "Asteroid" msgstr "小行星" #: graphs/data/fitDamageStats/graph.py:74 msgid "Attacker" msgstr "攻击者" #: gui/builtinItemStatsViews/itemProperties.py:56 #: gui/builtinItemStatsViews/itemAttributes.py:44 msgid "Attribute" msgstr "属性" #: gui/mainMenuBar.py:128 msgid "Attribute &Overrides" msgstr "自定义属性(&O)" #: gui/propertyEditor.py:28 msgid "Attribute Editor" msgstr "属性编辑器" #: gui/itemStats.py:177 msgid "Attributes" msgstr "属性" #: gui/builtinContextMenus/graphDmgDroneMode.py:43 msgid "Auto" msgstr "自动" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:94 msgid "Auto will use the same language pyfa uses if available, otherwise English" msgstr "当 pyfa 界面语言可用时,“自动”将尝试使用相同的语言;否则使用英语。" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Auto-detected proxy settings" msgstr "自动检测代理设置" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:136 #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:158 msgid "Auto-detected: " msgstr "自动检测结果:" #: graphs/gui/ctrlPanel.py:64 msgid "Axis X:" msgstr "X轴:" #: graphs/gui/ctrlPanel.py:56 msgid "Axis Y:" msgstr "Y轴:" #: gui/builtinShipBrowser/navigationPanel.py:50 msgid "Back" msgstr "返回" #: gui/mainFrame.py:873 msgid "Backing up {} fits to: {}" msgstr "正在备份{}个装配到:{}" #: gui/mainMenuBar.py:73 msgid "Backup all fittings to a XML file" msgstr "备份所有装配到XML文件" #: gui/mainFrame.py:872 gui/mainFrame.py:903 msgid "Backup fits" msgstr "备份装配" #: eos/saveddata/damagePattern.py:59 msgid "Baryon" msgstr "重子" #: gui/builtinItemStatsViews/itemAttributes.py:47 msgid "Base Value" msgstr "基础值" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battlecruiser" msgstr "战巡" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:166 msgid "Battleship" msgstr "战列" #: gui/mainFrame.py:951 msgid "Be aware that already processed fits were not saved" msgstr "请注意已处理的装配未作保存" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Bioluminescence" msgstr "生物荧光" #: eos/saveddata/damagePattern.py:106 eos/saveddata/damagePattern.py:124 #: eos/saveddata/targetProfile.py:61 eos/saveddata/targetProfile.py:67 msgid "Blood Raiders" msgstr "血袭者" #: graphs/style.py:54 msgid "Blue" msgstr "蓝色" #: eos/saveddata/damagePattern.py:90 eos/saveddata/damagePattern.py:91 #: eos/saveddata/damagePattern.py:92 eos/saveddata/damagePattern.py:93 msgid "Bombs" msgstr "炸弹" #: gui/builtinAdditionPanes/boosterView.py:215 msgid "Booster" msgstr "增效剂" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 #: gui/builtinContextMenus/additionsExportAll.py:23 #: gui/builtinContextMenus/additionsExportSelection.py:23 #: gui/builtinContextMenus/additionsImport.py:24 gui/additionsPane.py:78 msgid "Boosters" msgstr "增效剂" #: graphs/style.py:82 msgid "Bright" msgstr "亮色" #: gui/esiFittings.py:32 msgid "Browse EVE Fittings" msgstr "浏览游戏内装配" #: graphs/data/fitMobility/graph.py:39 msgid "Bump distance" msgstr "撞击距离" #: graphs/data/fitMobility/graph.py:38 msgid "Bump speed" msgstr "撞击速度" #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/targetProfile.py:81 eos/saveddata/targetProfile.py:82 #: eos/saveddata/targetProfile.py:83 eos/saveddata/targetProfile.py:84 #: eos/saveddata/targetProfile.py:85 eos/saveddata/targetProfile.py:86 #: eos/saveddata/targetProfile.py:87 eos/saveddata/targetProfile.py:88 #: eos/saveddata/targetProfile.py:89 eos/saveddata/targetProfile.py:90 #: eos/saveddata/targetProfile.py:91 eos/saveddata/targetProfile.py:92 msgid "Burner" msgstr "燃烧者" #: eos/saveddata/damagePattern.py:151 eos/saveddata/targetProfile.py:74 msgid "CONCORD" msgstr "统合部" #: gui/builtinStatsViews/resourcesViewFull.py:153 msgid "CPU" msgstr "CPU" #: gui/builtinItemStatsViews/itemAttributes.py:118 msgid "CSV files" msgstr "逗号分隔符(CSV)文件" #: eos/saveddata/targetProfile.py:55 msgid "Caldari (Armor)" msgstr "加达里(护甲)" #: eos/saveddata/targetProfile.py:54 msgid "Caldari (Shield)" msgstr "加达里(护盾)" #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/targetProfile.py:96 msgid "Caldari EDENCOM Entities" msgstr "加达里EDENCOM实体" #: eos/saveddata/damagePattern.py:150 eos/saveddata/targetProfile.py:73 msgid "Caldari State" msgstr "加达里合众国" #: gui/builtinStatsViews/resourcesViewFull.py:115 msgid "Calibration" msgstr "校准" #: graphs/data/fitCapacitor/graph.py:35 graphs/data/fitCapacitor/graph.py:36 #: graphs/data/fitCapacitor/graph.py:38 graphs/data/fitCapacitor/graph.py:43 msgid "Cap amount" msgstr "电容量" #: graphs/data/fitEwarStats/graph.py:36 msgid "Cap neutralized per second" msgstr "毁电速度" #: graphs/data/fitCapacitor/graph.py:39 msgid "Cap regen" msgstr "电容回充" #: graphs/data/fitCapacitor/graph.py:32 #: gui/builtinStatsViews/capacitorViewFull.py:37 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 msgid "Capacitor" msgstr "电容" #: gui/builtinStatsViews/capacitorViewFull.py:139 msgid "Capacitor delta:" msgstr "电容变化量:" #: gui/builtinStatsViews/outgoingViewMinimal.py:31 #: gui/builtinStatsViews/outgoingViewFull.py:32 msgid "Capacitor restored" msgstr "电容恢复量" #: gui/builtinStatsViews/capacitorViewFull.py:57 msgid "Capacitor stability" msgstr "电容稳定性" #: eos/saveddata/damagePattern.py:76 msgid "Carbonized Lead" msgstr "碳铅弹" #: gui/copySelectDialog.py:49 gui/copySelectDialog.py:57 #: gui/builtinContextMenus/priceOptions.py:47 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:90 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:81 #: gui/additionsPane.py:72 msgid "Cargo" msgstr "货舱" #: gui/builtinContextMenus/additionsExportAll.py:20 #: gui/builtinContextMenus/additionsExportSelection.py:20 #: gui/builtinContextMenus/additionsImport.py:21 msgid "Cargo Items" msgstr "货舱物品" #: gui/builtinStatsViews/resourcesViewFull.py:158 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Cargo bay" msgstr "货舱" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:229 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:254 msgid "Cargohold: " msgstr "货舱:" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:167 msgid "Carrier" msgstr "航母" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Caustic" msgstr "腐蚀" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:47 msgid "Cert Path:" msgstr "证书路径:" #: gui/builtinContextMenus/skillAffectors.py:73 #, python-format msgid "Change %s Skills" msgstr "修改%s技能等级" #: gui/builtinContextMenus/itemAmountChange.py:92 msgid "Change Amount" msgstr "更改数量" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 msgid "Change Skills" msgstr "修改技能等级" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:144 msgid "Change charge in all modules of the same type" msgstr "同时更换所有同类型模块的弹药" #: gui/builtinContextMenus/itemAmountChange.py:34 #, python-brace-format msgid "Change {0} Quantity" msgstr "更改{0}数量" #: gui/builtinContextMenus/itemProjectionRange.py:34 msgid "Change {} Range" msgstr "变更{}半径" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:31 msgid "Changes require restart of pyfa to take effect." msgstr "变更将在重启Pyfa之后生效。" #: gui/esiFittings.py:375 gui/builtinStatsViews/priceViewFull.py:57 #: gui/characterEditor.py:90 msgid "Character" msgstr "角色" #: gui/characterEditor.py:137 msgid "Character Editor" msgstr "角色编辑器" #: gui/esiFittings.py:376 msgid "Character ID" msgstr "角色ID" #: gui/characterEditor.py:78 msgid "Character name already in use, please choose another." msgstr "角色名已占用,请使用其他名称。" #: gui/characterEditor.py:771 msgid "Character:" msgstr "角色:" #: gui/characterSelection.py:47 msgid "Character: " msgstr "角色:" #: gui/builtinContextMenus/moduleAmmoChange.py:48 msgid "Charge" msgstr "弹药" #: gui/builtinViews/fittingView.py:664 msgid "Citadel" msgstr "堡垒" #: gui/builtinContextMenus/fitSystemSecurity.py:37 msgid "Citadel System Security" msgstr "堡垒星系安等" #: gui/propertyEditor.py:40 msgid "Clear All" msgstr "清除所有" #: gui/propertyEditor.py:40 msgid "Clear all overrides" msgstr "清除所有自定义属性" #: gui/builtinStatsViews/resistancesViewFull.py:97 #: gui/builtinStatsViews/resistancesViewFull.py:169 msgid "Click to toggle between effective HP and raw HP" msgstr "点击切换有效HP和原始HP" #: gui/builtinStatsViews/miningyieldViewFull.py:102 msgid "Click to toggle to Firepower View" msgstr "点击切换到火力视图" #: gui/builtinStatsViews/firepowerViewFull.py:115 msgid "Click to toggle to Mining Yield" msgstr "点击切换到矿物产出视图" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:76 msgid "Client ID:" msgstr "客户ID(Client ID):" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:85 msgid "Client Secret:" msgstr "客户密钥(Client Secret):" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:114 msgid "Color fitting view by slot" msgstr "用背景色区分槽位" #: graphs/data/fitEwarStats/graph.py:38 msgid "Combined ECM strength" msgstr "ECM综合强度" #: gui/additionsPane.py:84 msgid "Command" msgstr "指挥效果" #: gui/builtinAdditionPanes/commandView.py:201 msgid "Command Fit" msgstr "指挥装配" #: gui/builtinContextMenus/commandFitAdd.py:51 msgid "Command Fits" msgstr "指挥装配" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:127 msgid "Command center hold" msgstr "指挥中心仓" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:110 msgid "Compact skills needed tooltip" msgstr "简洁技能需求提示" #: gui/itemStats.py:182 msgid "Compare" msgstr "对比" #: eos/saveddata/damagePattern.py:97 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:227 msgid "Concord" msgstr "统合部" #: eos/saveddata/damagePattern.py:92 msgid "Concussion Bomb" msgstr "震荡炸弹" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:98 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:103 #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:108 #: gui/mainFrame.py:647 gui/mainFrame.py:653 msgid "Confirm" msgstr "确认" #: gui/esiFittings.py:160 gui/propertyEditor.py:147 msgid "Confirm Delete" msgstr "删除确认" #: gui/esiFittings.py:129 gui/esiFittings.py:172 gui/esiFittings.py:345 msgid "Connection error, please check your internet connection" msgstr "连接错误,请检查您的网络连接" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:14 msgid "Context Menus" msgstr "右键菜单" #: gui/builtinContextMenus/envEffectAdd.py:117 msgid "ContextMenu|ProjectedEffectManipulation|Black Hole" msgstr "黑洞" #: gui/builtinContextMenus/envEffectAdd.py:118 msgid "ContextMenu|ProjectedEffectManipulation|Cataclysmic Variable" msgstr "激变变星" #: gui/builtinContextMenus/envEffectAdd.py:144 msgid "ContextMenu|ProjectedEffectManipulation|Effects" msgstr "效果光束" #: gui/builtinContextMenus/envEffectAdd.py:106 msgid "ContextMenu|ProjectedEffectManipulation|Electrical" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:107 msgid "ContextMenu|ProjectedEffectManipulation|Exotic" msgstr "异种深渊" #: gui/builtinContextMenus/envEffectAdd.py:115 msgid "ContextMenu|ProjectedEffectManipulation|Firestorm" msgstr "火瀑深渊" #: gui/builtinContextMenus/envEffectAdd.py:108 msgid "ContextMenu|ProjectedEffectManipulation|Gamma" msgstr "伽玛深渊" #: gui/builtinContextMenus/envEffectAdd.py:119 msgid "ContextMenu|ProjectedEffectManipulation|Magnetar" msgstr "磁星" #: gui/builtinContextMenus/envEffectAdd.py:113 msgid "ContextMenu|ProjectedEffectManipulation|Matter" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:111 msgid "ContextMenu|ProjectedEffectManipulation|Metaliminal" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:109 msgid "ContextMenu|ProjectedEffectManipulation|Plasma" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:120 msgid "ContextMenu|ProjectedEffectManipulation|Pulsar" msgstr "脉冲星" #: gui/builtinContextMenus/envEffectAdd.py:114 msgid "ContextMenu|ProjectedEffectManipulation|Ray" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:121 msgid "ContextMenu|ProjectedEffectManipulation|Red Giant" msgstr "红巨星" #: gui/builtinContextMenus/envEffectAdd.py:125 msgid "ContextMenu|ProjectedEffectManipulation|Sansha Incursion" msgstr "萨沙入侵" #: gui/builtinContextMenus/envEffectAdd.py:112 msgid "ContextMenu|ProjectedEffectManipulation|Storm" msgstr "" #: gui/builtinContextMenus/envEffectAdd.py:143 msgid "ContextMenu|ProjectedEffectManipulation|System Effects" msgstr "星系效果" #: gui/builtinContextMenus/envEffectAdd.py:127 msgid "ContextMenu|ProjectedEffectManipulation|Triglavian Invasion" msgstr "三神裔入侵" #: gui/builtinContextMenus/envEffectAdd.py:122 msgid "ContextMenu|ProjectedEffectManipulation|Wolf Rayet" msgstr "沃尔夫-拉叶星" #: gui/builtinItemStatsViews/itemDescription.py:43 #: gui/builtinItemStatsViews/itemTraits.py:25 #: gui/builtinShipBrowser/fitItem.py:107 msgid "Copy" msgstr "复制" #: gui/builtinContextMenus/additionsExportAll.py:39 msgid "Copy All {}" msgstr "复制所有{}" #: gui/characterSelection.py:105 msgid "Copy Missing Skills" msgstr "复制所需技能" #: gui/builtinContextMenus/moduleMutatedExport.py:28 msgid "Copy Module to Clipboard" msgstr "复制模块到剪贴板" #: gui/builtinContextMenus/additionsExportSelection.py:39 msgid "Copy Selected {}" msgstr "拷贝选中的{}" #: gui/ssoLogin.py:20 msgid "Copy and paste the block of text provided by pyfa.io" msgstr "请复制和粘贴pyfa.io提供的字符串" #: gui/setEditor.py:222 gui/patternEditor.py:290 gui/targetProfileEditor.py:366 msgid "Could not import from clipboard" msgstr "无法从剪贴板导入" #: gui/targetProfileEditor.py:359 msgid "Could not import from clipboard:" msgstr "无法从剪贴板导入:" #: gui/setEditor.py:218 gui/patternEditor.py:283 msgid "Could not import from clipboard: unknown errors" msgstr "无法从剪贴板导入:未知错误" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Cruiser" msgstr "巡洋" #: eos/saveddata/damagePattern.py:111 eos/saveddata/targetProfile.py:81 msgid "Cruor (Blood Raiders)" msgstr "凝血级(血袭者)" #: gui/builtinStatsViews/firepowerViewFull.py:175 msgid "Current" msgstr "当前" #: gui/builtinItemStatsViews/itemProperties.py:57 #: gui/builtinItemStatsViews/itemAttributes.py:45 msgid "Current Value" msgstr "当前值" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:63 msgid "Custom Application" msgstr "自定义应用" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "Custom application" msgstr "自定义应用" #: graphs/style.py:57 msgid "Cyan" msgstr "青色" #: graphs/data/fitDamageStats/graph.py:83 msgid "DPS" msgstr "秒伤" #: gui/patternEditor.py:99 msgid "Damage Pattern Editor" msgstr "伤害模型编辑器" #: gui/patternEditor.py:65 msgid "Damage Profile" msgstr "伤害模型" #: gui/patternEditor.py:53 msgid "Damage Profile name already in use, please choose another." msgstr "伤害模型名已占用,请使用其他名称。" #: graphs/data/fitDamageStats/graph.py:56 msgid "Damage Stats" msgstr "伤害属性" #: graphs/data/fitDamageStats/graph.py:85 msgid "Damage inflicted" msgstr "造成伤害量" #: graphs/data/fitEwarStats/graph.py:39 msgid "Damps: lock range reduction" msgstr "感应抑制:锁定半径减少百分比" #: eos/saveddata/damagePattern.py:113 eos/saveddata/targetProfile.py:83 msgid "Daredevil (Serpentis)" msgstr "夜魔侠级(天蛇)" #: graphs/style.py:81 msgid "Dark" msgstr "深色" #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 msgid "Dark Matter All Tiers" msgstr "暗物质全部级别" #: graphs/style.py:89 msgid "Dash-dotted" msgstr "点线式" #: graphs/style.py:87 msgid "Dashed" msgstr "线段式" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:15 msgid "Database" msgstr "数据库" #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 msgid "Deadspace" msgstr "死亡空间" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:56 msgid "Debug Logging Enabled" msgstr "调试日志已开启" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:58 msgid "Default Market Prices:" msgstr "默认价格源:" #: gui/propertyEditor.py:271 #, python-format msgid "Default Value: %0.3f" msgstr "默认值:%0.3f" #: gui/builtinContextMenus/shipModeChange.py:18 msgid "Defense" msgstr "防御" #: graphs/data/fitMobility/graph.py:44 msgid "Defined in millions of kilograms" msgstr "定义为百万千克" #: gui/builtinShipBrowser/fitItem.py:109 msgid "Delete" msgstr "删除" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:79 msgid "Delete All Damage Pattern Profiles" msgstr "删除所有伤害模型配置" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:87 msgid "Delete All Prices" msgstr "删除所有价格缓存数据" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:83 msgid "Delete All Target Profiles" msgstr "删除所有目标属性配置" #: gui/esiFittings.py:66 msgid "Delete all from Eve" msgstr "从 EvE 中删除全部装配" #: gui/esiFittings.py:65 msgid "Delete from EVE" msgstr "删除游戏内装配" #: gui/itemStats.py:189 msgid "Dependents" msgstr "依赖" #: eos/saveddata/damagePattern.py:79 msgid "Depleted Uranium" msgstr "硬钼弹" #: gui/itemStats.py:174 msgid "Description" msgstr "简介" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:165 msgid "Destroyer" msgstr "驱逐" #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Destructible Beacons" msgstr "可破坏信标" #: gui/mainMenuBar.py:167 msgid "Dev Tools" msgstr "开发者工具" #: gui/mainMenuBar.py:101 gui/mainMenuBar.py:202 msgid "Disable Fitting Re&strictions" msgstr "关闭装配资源限制(&S)" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Disabled" msgstr "关闭" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:28 msgid "Disabling context menus can improve responsiveness.\n" "You can hold {} key + right-click to show all menu items regardless of these settings." msgstr "关闭右键菜单可提升响应速度。\n" "如果按住{}键+右键单击,可以无视这些设置显示完整的右键菜单。" #: graphs/data/fitMobility/graph.py:36 graphs/data/fitRemoteReps/graph.py:50 #: graphs/data/fitRemoteReps/graph.py:58 graphs/data/fitWarpTime/graph.py:47 #: graphs/data/fitWarpTime/graph.py:48 graphs/data/fitWarpTime/graph.py:51 #: graphs/data/fitWarpTime/graph.py:52 graphs/data/fitDamageStats/graph.py:58 #: graphs/data/fitDamageStats/graph.py:65 graphs/data/fitEwarStats/graph.py:34 #: graphs/data/fitEwarStats/graph.py:44 msgid "Distance" msgstr "距离" #: graphs/data/fitDamageStats/graph.py:66 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)" msgstr "进攻者与目标间的距离,如总览显示(表面到表面)" #: graphs/data/fitDamageStats/graph.py:67 msgid "Distance between the attacker and the target, as seen in overview (surface-to-surface)\n" "When set, places the target that far away from the attacker\n" "When not set, attacker's weapons always hit the target" msgstr "进攻者与目标间的距离,如总览显示(表面到表面)\n" "设置后,目标处于攻击者指定距离处\n" "未设置时,攻击者的武器总能击中目标" #: graphs/data/fitRemoteReps/graph.py:59 graphs/data/fitRemoteReps/graph.py:60 msgid "Distance between the repairing ship and the target, as seen in overview (surface-to-surface)" msgstr "遥修船与目标间的距离,如总览显示(表面到表面)" #: gui/esiFittings.py:159 msgid "Do you really want to delete {} ({}) from EVE?" msgstr "真的要从游戏内删除 {} ({})吗?" #: gui/updateDialog.py:102 msgid "Don't remind me again for this release" msgstr "不再提示此更新" #: gui/characterEditor.py:789 msgid "Don't see your EVE character in the list?" msgstr "列表中没有你的EvE角色?" #: graphs/style.py:88 msgid "Dotted" msgstr "虚线式" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:71 #: gui/updateDialog.py:113 msgid "Download" msgstr "下载" #: graphs/gui/lists.py:313 msgid "Drag a fit into this list to graph it" msgstr "拖拽装配到这里来绘图" #: graphs/gui/lists.py:370 msgid "Drag a fit into this list to have your fits graphed against it" msgstr "拖拽受害者装配到这里,并用你的装配针对性绘图" #: gui/builtinAdditionPanes/commandView.py:163 msgid "Drag a fit to this area" msgstr "拖拽装配到此处" #: gui/builtinAdditionPanes/projectedView.py:224 msgid "Drag an item or fit, or use right-click menu for wormhole effects" msgstr "拖拽一个物品或装配以启用投射效果,或使用右键菜单选择一个虫洞环境效果" #: eos/saveddata/damagePattern.py:112 eos/saveddata/targetProfile.py:82 msgid "Dramiel (Angel)" msgstr "德拉米尔级(天使)" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:144 #: eos/saveddata/damagePattern.py:147 msgid "Dread" msgstr "无畏" #: eos/saveddata/damagePattern.py:143 eos/saveddata/damagePattern.py:146 msgid "Dread/Subcaps" msgstr "无畏/常规" #: eos/saveddata/damagePattern.py:98 eos/saveddata/targetProfile.py:103 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:117 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:131 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:145 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:159 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:173 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:187 msgid "Drifter" msgstr "流浪者" #: eos/saveddata/damagePattern.py:159 eos/saveddata/targetProfile.py:230 msgid "Drifter Entities" msgstr "流浪者实体" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Drone" msgstr "无人机" #: gui/builtinContextMenus/graphDmgDroneMode.py:26 msgid "Drone Mode" msgstr "无人机模式" #: gui/builtinStatsViews/resourcesViewFull.py:157 msgid "Drone bandwidth" msgstr "无人机带宽" #: gui/builtinStatsViews/resourcesViewFull.py:155 msgid "Drone bay" msgstr "无人机仓库" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:66 msgid "Drone range" msgstr "无人机半径" #: eos/saveddata/damagePattern.py:99 eos/saveddata/targetProfile.py:99 #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:113 #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:127 #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:141 #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:155 #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:169 #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:183 #: gui/builtinContextMenus/priceOptions.py:40 #: gui/builtinContextMenus/additionsExportAll.py:18 #: gui/builtinContextMenus/additionsExportSelection.py:18 #: gui/builtinContextMenus/additionsImport.py:19 #: gui/builtinStatsViews/priceViewFull.py:58 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:77 #: gui/additionsPane.py:66 msgid "Drones" msgstr "无人机" #: gui/builtinStatsViews/resourcesViewFull.py:113 msgid "Drones active" msgstr "激活的无人机" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:62 msgid "Dump All Logs" msgstr "将所有日志写入文件" #: gui/mainMenuBar.py:105 msgid "E&xport to ESI" msgstr "导出到游戏(&X)" #: graphs/data/fitEwarStats/graph.py:38 msgid "ECM: combined strength" msgstr "ECM:综合强度" #: gui/mainFrame.py:837 msgid "EFT text fitting files" msgstr "EFT装配文本文件" #: gui/builtinStatsViews/resistancesViewFull.py:96 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "EHP" msgstr "有效HP" #: eos/saveddata/damagePattern.py:39 #: gui/builtinContextMenus/moduleAmmoChange.py:24 msgid "EM" msgstr "电磁" #: gui/targetProfileEditor.py:119 msgid "EM resistance" msgstr "电磁抗性" #: eos/saveddata/damagePattern.py:81 msgid "EMP" msgstr "电磁脉冲弹" #: gui/esiFittings.py:347 gui/esiFittings.py:351 gui/esiFittings.py:359 msgid "ERROR" msgstr "错误" #: gui/mainFrame.py:1012 msgid "EVE API XML character files" msgstr "EvE API XML角色文件" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:76 msgid "EVE Data:" msgstr "EVE 数据:" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:49 msgid "EVE IGB HTML fitting file" msgstr "EvE IGB 装配HTML网页文件" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:16 #: gui/characterEditor.py:162 msgid "EVE SSO" msgstr "EvE单点登录(SSO)" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:37 msgid "EVE Servers (API && CREST import)" msgstr "连接到EvE服务器(API 和 CREST 导入)" #: gui/mainFrame.py:859 msgid "EVE XML fitting file" msgstr "EvE装配XML文件" #: gui/mainFrame.py:466 gui/mainFrame.py:836 msgid "EVE XML fitting files" msgstr "EvE装配XML文件" #: gui/mainFrame.py:808 msgid "EVEMon skills training XML file" msgstr "EvEMon技能训练XML文件" #: gui/mainFrame.py:807 msgid "EVEMon skills training file" msgstr "EvEMon技能训练文件" #: graphs/data/fitDamageStats/graph.py:83 msgid "Effective DPS" msgstr "有效DPS" #: gui/builtinStatsViews/resistancesViewFull.py:61 #: gui/builtinStatsViews/resistancesViewFull.py:219 msgid "Effective HP: " msgstr "有效HP:" #: gui/builtinStatsViews/capacitorViewFull.py:151 msgid "Effective capacity" msgstr "等效容量" #: graphs/data/fitDamageStats/graph.py:85 msgid "Effective damage inflicted" msgstr "有效伤害量" #: graphs/data/fitDamageStats/graph.py:84 msgid "Effective volley" msgstr "有效齐射伤害" #: gui/builtinStatsViews/resistancesViewFull.py:220 #, python-format msgid "Effective: %d HP" msgstr "有效:%dHP" #: gui/itemStats.py:192 msgid "Effects" msgstr "效果" #: eos/saveddata/targetProfile.py:106 eos/saveddata/targetProfile.py:107 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:109 #: eos/saveddata/targetProfile.py:110 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:112 eos/saveddata/targetProfile.py:194 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:196 msgid "Electrical T0/T1/T2" msgstr "电子深渊 T0/T1/T2" #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 msgid "Electrical T3 (Some T5 Rooms)" msgstr "电子 T3 (含部分T5关卡)" #: eos/saveddata/targetProfile.py:120 eos/saveddata/targetProfile.py:121 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:123 #: eos/saveddata/targetProfile.py:124 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:126 eos/saveddata/targetProfile.py:200 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:202 msgid "Electrical T4/T5/T6" msgstr "电子深渊 T4/T5/T6" #: gui/builtinStatsViews/resistancesViewFull.py:85 msgid "Electromagnetic resistance" msgstr "电磁抗性" #: eos/saveddata/damagePattern.py:90 msgid "Electron Bomb" msgstr "电子炸弹" #: graphs/data/fitEwarStats/graph.py:33 msgid "Electronic Warfare Stats" msgstr "电子战属性" #: gui/builtinContextMenus/moduleAmmoChange.py:59 msgid "Empty" msgstr "空" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:105 msgid "Empty Market View" msgstr "空白搜索结果时" #: gui/multiSwitch.py:41 msgid "Empty Tab" msgstr "空白标签页" #: gui/mainMenuBar.py:200 msgid "Enable Fitting Re&strictions" msgstr "开启装配限制(&S)" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:33 msgid "Enable Network" msgstr "启用网络功能" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable all available meta buttons" msgstr "启用所有可用衍生分类按钮" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:93 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:114 msgid "Enable all meta buttons" msgstr "启用所有衍生分类按钮" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 msgid "Enable all meta buttons for a duration of search / recents" msgstr "一段时间内启用所有衍生分类按钮" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button" msgstr "启用该物品所在衍生分类按钮" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "Enable item's meta button, disable others" msgstr "启用该物品所在衍生分类按钮,禁用其他按钮" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 msgid "Enable leftmost available meta button" msgstr "启用最左侧可用衍生分类按钮" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:61 msgid "Enable minimal format" msgstr "使用极简风格" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:46 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:81 msgid "Enabled" msgstr "打开" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:50 msgid "Enforce strict skill level requirements" msgstr "使用严格的技能等级检查" #: gui/characterEditor.py:281 msgid "Enter a name for your new Character:" msgstr "请为新角色输入一个名称:" #: gui/builtinContextMenus/implantSetSave.py:51 msgid "Enter a name for your new Implant Set:" msgstr "请为新植入体配置输入一个名称:" #: eos/saveddata/damagePattern.py:116 eos/saveddata/targetProfile.py:86 msgid "Enyo" msgstr "恩尤" #: gui/characterSelection.py:174 gui/setEditor.py:55 gui/mainFrame.py:896 #: gui/characterEditor.py:83 gui/characterEditor.py:463 #: gui/characterEditor.py:898 gui/patternEditor.py:58 #: gui/targetProfileEditor.py:78 msgid "Error" msgstr "错误" #: gui/characterSelection.py:173 gui/characterEditor.py:897 msgid "Error fetching skill information" msgstr "无法获取技能信息" #: gui/errorDialog.py:68 msgid "Error!" msgstr "错误!" #: eos/saveddata/damagePattern.py:57 eos/saveddata/damagePattern.py:58 #: eos/saveddata/damagePattern.py:59 eos/saveddata/damagePattern.py:60 #: eos/saveddata/damagePattern.py:61 msgid "Exotic Plasma" msgstr "异种等离子" #: eos/saveddata/targetProfile.py:148 eos/saveddata/targetProfile.py:149 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:151 #: eos/saveddata/targetProfile.py:152 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:154 eos/saveddata/targetProfile.py:212 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:214 msgid "Exotic T0/T1/T2" msgstr "异种深渊 T0/T1/T2" #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 msgid "Exotic T3 (Some T5 Rooms)" msgstr "异种 T3 (含部分T5关卡)" #: eos/saveddata/targetProfile.py:162 eos/saveddata/targetProfile.py:163 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:165 #: eos/saveddata/targetProfile.py:166 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:168 eos/saveddata/targetProfile.py:218 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:220 msgid "Exotic T4/T5/T6" msgstr "异种深渊 T4/T5/T6" #: gui/builtinItemStatsViews/itemAffectedBy.py:67 msgid "Expand All" msgstr "展开所有" #: eos/saveddata/damagePattern.py:42 #: gui/builtinContextMenus/moduleAmmoChange.py:26 msgid "Explosive" msgstr "爆炸" #: gui/builtinStatsViews/resistancesViewFull.py:88 #: gui/targetProfileEditor.py:122 msgid "Explosive resistance" msgstr "爆炸抗性" #: gui/propertyEditor.py:39 msgid "Export" msgstr "导出" #: gui/mainMenuBar.py:74 msgid "Export All Fittings to &HTML" msgstr "导出所有装配到网页" #: gui/mainFrame.py:946 msgid "Export Error" msgstr "导出错误" #: gui/esiFittings.py:258 msgid "Export Fit" msgstr "导出装配" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:23 msgid "Export Fittings in a minimal HTML Version, just containing the fittings links without any visual styling" msgstr "导出装配为极简版网页,仅保留装配链接,不包含样式设计" #: gui/builtinItemStatsViews/itemAttributes.py:57 msgid "Export Item Stats" msgstr "导出物品属性" #: gui/esiFittings.py:263 msgid "Export Loaded Charges" msgstr "导出已装填弹药" #: gui/mainFrame.py:805 msgid "Export Skills Needed As..." msgstr "导出所需技能列表到..." #: gui/mainMenuBar.py:87 msgid "Export a fit to the clipboard" msgstr "导出装配到剪贴板" #: gui/copySelectDialog.py:48 gui/copySelectDialog.py:56 msgid "Export boosters" msgstr "导出增效剂" #: gui/copySelectDialog.py:49 msgid "Export cargo contents" msgstr "导出货舱物品" #: gui/copySelectDialog.py:57 msgid "Export cargo hold contents" msgstr "导出货舱物品信息" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Export charges loaded into modules" msgstr "导出已装填到模块中的弹药信息" #: gui/esiFittings.py:245 msgid "Export fit to EVE" msgstr "导出装配到游戏" #: gui/mainMenuBar.py:74 msgid "Export fits to HTML file (set in Preferences)" msgstr "导出装配到HTML网页文件(通过偏好设置指定)" #: gui/mainMenuBar.py:92 msgid "Export fitting to another format" msgstr "导出装配为其他格式" #: gui/setEditor.py:149 msgid "Export implant sets to clipboard" msgstr "导出植入体配置到剪贴板" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 msgid "Export implants" msgstr "导出植入体" #: gui/copySelectDialog.py:54 msgid "Export mutated modules' stats" msgstr "导出变异模块的属性" #: gui/patternEditor.py:172 msgid "Export patterns to clipboard" msgstr "导出伤害模型到剪贴板" #: gui/targetProfileEditor.py:222 msgid "Export profiles to clipboard" msgstr "导出目标属性到剪贴板" #: gui/characterEditor.py:373 msgid "Export skills from clipboard" msgstr "导出技能列表到剪贴板" #: gui/mainMenuBar.py:119 msgid "Export skills needed for this fitting" msgstr "导出使用本装配所需技能" #: gui/mainFrame.py:827 msgid "Exporting skills needed..." msgstr "正在导出所需技能..." #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:152 msgid "Extra info in Additions panel tab names" msgstr "附加装备标签名显示额外信息" #: gui/builtinStatsViews/capacitorViewFull.py:90 msgid "Extra stats" msgstr "额外状态" #: gui/builtinContextMenus/factorReload.py:26 msgid "Factor in Reload Time" msgstr "考虑换弹时间" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:44 msgid "Factor in reload time when calculating capacitor usage, damage, and tank." msgstr "计算电容用量、伤害、防御时考虑换弹时间。" #: gui/esiFittings.py:328 msgid "Failed to generate export data" msgstr "无法生成导出数据" #: gui/aboutData.py:34 msgid "Fat Cow Icons by fatcow.com - Creative Commons Attribution 3.0 License" msgstr "胖奶牛系列图标来自 fatcow.com - 基于知识共享署名3.0许可使用" #: gui/esiFittings.py:44 msgid "Fetch Fits" msgstr "获取装配" #: gui/esiFittings.py:114 msgid "Fetching fits, please wait..." msgstr "正在获取装配,请稍候..." #: gui/mainMenuBar.py:81 msgid "Fi&t" msgstr "装配(&T)" #: gui/builtinStatsViews/resourcesViewFull.py:156 msgid "Fighter bay" msgstr "铁骑舰载机仓库" #: gui/builtinStatsViews/resourcesViewFull.py:114 msgid "Fighter squadrons active" msgstr "激活的铁骑舰载机中队" #: gui/builtinContextMenus/additionsExportAll.py:19 #: gui/builtinContextMenus/additionsExportSelection.py:19 #: gui/builtinContextMenus/additionsImport.py:20 gui/additionsPane.py:69 msgid "Fighters" msgstr "铁骑舰载机" #: gui/builtinContextMenus/envEffectAdd.py:209 msgid "Filament" msgstr "纤维" #: gui/builtinContextMenus/itemFill.py:32 msgid "Fill With Module" msgstr "用该模块填满空白槽位" #: gui/builtinContextMenus/moduleFill.py:24 #, python-brace-format msgid "Fill With {0}" msgstr "用{0}填满" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:66 msgid "Fill with module" msgstr "用该模块填满空白槽位" #: gui/builtinStatsViews/firepowerViewFull.py:43 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 msgid "Firepower" msgstr "火力" #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 msgid "Firestorm T0/T1/T2" msgstr "火瀑深渊 T0/T1/T2" #: eos/saveddata/targetProfile.py:134 eos/saveddata/targetProfile.py:135 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:137 #: eos/saveddata/targetProfile.py:138 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:140 eos/saveddata/targetProfile.py:206 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:208 msgid "Firestorm T3 (Some T5 Rooms)" msgstr "火瀑 T3 (含部分T5关卡)" #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 msgid "Firestorm T4/T5/T6" msgstr "火瀑深渊 T4/T5/T6" #: graphs/gui/lists.py:306 msgid "Fit" msgstr "装配" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:47 msgid "Fitting Database:" msgstr "装配数据库:" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:27 msgid "Fitting Engine" msgstr "装配引擎" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 gui/mainFrame.py:184 msgid "Fittings" msgstr "装配" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:113 msgid "Fleet hangar" msgstr "舰队机库" #: gui/copySelectDialog.py:59 msgid "Formatting Tags" msgstr "格式化标签" #: eos/saveddata/damagePattern.py:43 eos/saveddata/damagePattern.py:44 #: eos/saveddata/damagePattern.py:45 eos/saveddata/damagePattern.py:46 #: eos/saveddata/damagePattern.py:47 eos/saveddata/damagePattern.py:48 #: eos/saveddata/damagePattern.py:49 eos/saveddata/damagePattern.py:50 #: eos/saveddata/damagePattern.py:51 eos/saveddata/damagePattern.py:52 #: eos/saveddata/damagePattern.py:53 eos/saveddata/damagePattern.py:54 msgid "Frequency Crystals" msgstr "频率晶体" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Frigate" msgstr "护卫" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:116 msgid "Fuel bay" msgstr "燃料仓" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Full" msgstr "完整" #: eos/saveddata/damagePattern.py:83 msgid "Fusion" msgstr "聚变弹" #: graphs/data/fitEwarStats/graph.py:41 msgid "GDs: missile flight range reduction" msgstr "导航抑制:导弹飞行距离减少百分比" #: eos/saveddata/targetProfile.py:57 msgid "Gallente (Armor)" msgstr "盖伦特(护甲)" #: eos/saveddata/targetProfile.py:56 msgid "Gallente (Shield)" msgstr "盖伦特(护盾)" #: eos/saveddata/damagePattern.py:146 eos/saveddata/targetProfile.py:97 msgid "Gallente EDENCOM Entities" msgstr "盖伦特EDENCOM实体" #: eos/saveddata/damagePattern.py:152 eos/saveddata/targetProfile.py:75 msgid "Gallente Federation" msgstr "盖伦特联邦" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:57 msgid "Game Database:" msgstr "游戏数据库:" #: eos/saveddata/damagePattern.py:51 msgid "Gamma" msgstr "伽玛" #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 msgid "Gamma T0/T1/T2" msgstr "伽玛深渊 T0/T1/T2" #: eos/saveddata/targetProfile.py:176 eos/saveddata/targetProfile.py:177 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:179 #: eos/saveddata/targetProfile.py:180 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:182 eos/saveddata/targetProfile.py:224 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:226 msgid "Gamma T3 (Some T5 Rooms)" msgstr "伽玛 T3 (含部分T5关卡)" #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 msgid "Gamma T4/T5/T6" msgstr "伽玛深渊 T4/T5/T6" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:125 msgid "Gas hold" msgstr "气体矿物仓库" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:20 msgid "General" msgstr "通用" #: gui/mainFrame.py:904 msgid "Generating HTML file at: {}" msgstr "正在生成HTML网页到:{}" #: eos/saveddata/damagePattern.py:39 eos/saveddata/damagePattern.py:40 #: eos/saveddata/damagePattern.py:41 eos/saveddata/damagePattern.py:42 msgid "Generic" msgstr "通用" #: gui/characterEditor.py:778 msgid "Get Skills" msgstr "获取技能列表" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:68 msgid "Global Default Spoolup Percentage:" msgstr "全局默认预热百分比:" #: gui/mainMenuBar.py:161 msgid "Go to EVE Online Forum thread" msgstr "转到EvE Online论坛讨论贴" #: gui/mainMenuBar.py:160 msgid "Go to wiki on GitHub" msgstr "转到GitHub上的百科页" #: gui/characterSelection.py:102 msgid "Grant Missing Skills" msgstr "习得所需技能" #: graphs/gui/frame.py:51 msgid "Graphs" msgstr "图表" #: eos/saveddata/fit.py:402 msgid "Gravimetric" msgstr "引力" #: graphs/style.py:53 msgid "Green" msgstr "绿色" #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:125 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:68 msgid "Guristas" msgstr "古斯塔斯" #: gui/builtinStatsViews/resistancesViewFull.py:172 #: gui/builtinStatsViews/resistancesViewFull.py:187 msgid "HP" msgstr "生命值" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:19 msgid "HTML Export" msgstr "HTML导出" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:20 msgid "HTML Export (File > Export HTML) allows you to export your entire fitting database into an HTML file at the specified location. This file can be used to easily open your fits in a web-based fitting program" msgstr "HTML导出(文件>导出到所有装配到网页)可以导出你的所有装配为HTML网页,放在指定路径下。网页版装配应用可以很容易的打开该HTML网页" #: eos/saveddata/damagePattern.py:117 eos/saveddata/targetProfile.py:87 msgid "Hawk" msgstr "战鹰级" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Heavy" msgstr "重型" #: gui/builtinShipBrowser/navigationPanel.py:136 msgid "Hide Recent Fits" msgstr "隐藏最近使用的装配" #: gui/builtinShipBrowser/navigationPanel.py:53 #: gui/builtinShipBrowser/navigationPanel.py:147 msgid "Hide empty ship groups" msgstr "隐藏空的舰船类型" #: gui/builtinViewColumns/baseName.py:59 msgid "High" msgstr "高" #: gui/builtinContextMenus/fitSystemSecurity.py:19 msgid "High Security" msgstr "高安" #: eos/saveddata/targetProfile.py:48 msgid "Hull" msgstr "结构" #: eos/saveddata/targetProfile.py:51 msgid "Hull (+T2 DCU)" msgstr "结构(+T2 损控)" #: gui/builtinStatsViews/rechargeViewFull.py:78 msgid "Hull repair amount" msgstr "结构修量" #: gui/builtinStatsViews/resistancesViewFull.py:114 msgid "Hull resistance" msgstr "结构抗性" #: gui/builtinStatsViews/outgoingViewMinimal.py:49 #: gui/builtinStatsViews/outgoingViewFull.py:50 msgid "Hull restored" msgstr "船体修复量" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Hull: " msgstr "结构:" #: eos/saveddata/damagePattern.py:62 eos/saveddata/damagePattern.py:63 #: eos/saveddata/damagePattern.py:64 eos/saveddata/damagePattern.py:65 #: eos/saveddata/damagePattern.py:66 eos/saveddata/damagePattern.py:67 #: eos/saveddata/damagePattern.py:68 eos/saveddata/damagePattern.py:69 #: eos/saveddata/damagePattern.py:70 eos/saveddata/damagePattern.py:71 #: eos/saveddata/damagePattern.py:72 eos/saveddata/damagePattern.py:73 msgid "Hybrid Charges" msgstr "混合弹药" #: gui/builtinItemStatsViews/itemEffects.py:35 msgid "ID" msgstr "ID" #: eos/saveddata/targetProfile.py:293 msgid "Ideal Target" msgstr "理想目标" #: gui/builtinContextMenus/graphDroneControlRange.py:23 msgid "Ignore Drone Control Range" msgstr "忽略无人机控制半径" #: gui/builtinContextMenus/graphLockRange.py:23 msgid "Ignore Lock Range" msgstr "忽略锁定半径" #: gui/builtinContextMenus/graphDmgIgnoreResists.py:23 msgid "Ignore Target Resists" msgstr "忽略目标抗性" #: gui/setEditor.py:62 msgid "Implant Set" msgstr "植入体配置" #: gui/setEditor.py:122 msgid "Implant Set Editor" msgstr "植入体配置编辑器" #: gui/setEditor.py:50 msgid "Implant Set name already in use, please choose another." msgstr "植入体配置名已使用,请选择其他名称。" #: gui/copySelectDialog.py:47 gui/copySelectDialog.py:55 #: gui/builtinContextMenus/additionsExportAll.py:21 #: gui/builtinContextMenus/additionsExportAll.py:22 #: gui/builtinContextMenus/additionsExportSelection.py:21 #: gui/builtinContextMenus/additionsExportSelection.py:22 #: gui/builtinContextMenus/additionsImport.py:22 #: gui/builtinContextMenus/additionsImport.py:23 gui/characterEditor.py:161 #: gui/additionsPane.py:75 msgid "Implants" msgstr "植入体" #: gui/builtinContextMenus/priceOptions.py:54 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:85 msgid "Implants && Boosters" msgstr "植入体和增效剂" #: gui/propertyEditor.py:38 msgid "Import" msgstr "导入" #: gui/mainFrame.py:946 msgid "Import Error" msgstr "导入错误" #: gui/characterEditor.py:442 msgid "Import Skills" msgstr "导入技能" #: gui/mainMenuBar.py:88 msgid "Import a fit from the clipboard" msgstr "从剪贴板导入装配" #: gui/mainMenuBar.py:118 msgid "Import characters into pyfa from file" msgstr "从文件导入角色信息" #: gui/mainMenuBar.py:91 msgid "Import fittings into pyfa" msgstr "从文件导入装配" #: gui/setEditor.py:148 msgid "Import implant sets from clipboard" msgstr "从剪贴板导入植入体配置" #: gui/propertyEditor.py:38 gui/propertyEditor.py:39 msgid "Import overrides" msgstr "导入自定义属性" #: gui/patternEditor.py:171 msgid "Import patterns from clipboard" msgstr "从剪贴板导入伤害模型" #: gui/targetProfileEditor.py:221 msgid "Import profiles from clipboard" msgstr "从剪贴板导入目标属性" #: gui/propertyEditor.py:107 msgid "Import pyfa override file" msgstr "导入Pyfa属性自定义文件" #: gui/characterEditor.py:372 msgid "Import skills from clipboard" msgstr "从剪贴板导入技能列表" #: gui/esiFittings.py:64 msgid "Import to pyfa" msgstr "导入到Pyfa" #: gui/mainFrame.py:1019 msgid "Importing Character..." msgstr "正在导入角色..." #: gui/mainFrame.py:844 msgid "Importing fits" msgstr "正在导入装配" #: gui/characterEditor.py:440 msgid "Importing skills into this character will set the skill levels as pending. To save the skills permanently, please click the Save button at the bottom of the window after importing" msgstr "导入技能到该角色将设置技能等级为等待状态。若需要永久保存技能,请在导入后点击窗口底部的保存按钮" #: gui/copySelectDialog.py:59 msgid "Include formatting tags to paste fit directly into corp bulletins, MOTD, etc." msgstr "包含适用于直接粘贴装配到聊天频道的格式化标签" #: gui/builtinStatsViews/resistancesViewFull.py:115 msgid "Incoming damage pattern" msgstr "伤害分布" #: gui/targetProfileEditor.py:50 msgid "Incorrect formatting (decimals only)" msgstr "格式无效(仅允许小数)" #: gui/targetProfileEditor.py:52 msgid "Incorrect range (must be 0-100)" msgstr "范围无效(必须是 0-100)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:121 msgid "Industrial ship hold" msgstr "工业舰船仓" #: graphs/data/fitMobility/graph.py:46 msgid "Inertia Modifier attribute value of the target ship" msgstr "目标舰船的惯性修饰属性" #: eos/saveddata/damagePattern.py:87 msgid "Inferno" msgstr "炼狱" #: eos/saveddata/damagePattern.py:47 msgid "Infrared" msgstr "红外" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Interceptor" msgstr "截击" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:65 msgid "Interested in helping with translations?" msgstr "有兴趣参与翻译 pyfa?" #: gui/mainFrame.py:892 msgid "Invalid Path" msgstr "无效路径" #: gui/esiFittings.py:232 msgid "Invalid Token" msgstr "无效登录信息" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:94 eos/saveddata/targetProfile.py:95 #: eos/saveddata/targetProfile.py:96 eos/saveddata/targetProfile.py:97 #: eos/saveddata/targetProfile.py:98 eos/saveddata/targetProfile.py:230 #: eos/saveddata/targetProfile.py:231 eos/saveddata/targetProfile.py:232 msgid "Invasion" msgstr "入侵" #: eos/saveddata/damagePattern.py:66 msgid "Iridium" msgstr "铱质" #: eos/saveddata/damagePattern.py:64 msgid "Iron" msgstr "铁质" #: gui/builtinItemStatsViews/itemCompare.py:147 #: gui/builtinContextMenus/itemRemove.py:43 #: gui/builtinContextMenus/itemStats.py:38 #: gui/builtinContextMenus/itemMarketJump.py:44 #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Item" msgstr "物品" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:112 msgid "Item Market Group Jump" msgstr "切换物品分类时" #: gui/itemStats.py:58 msgid "Item stats" msgstr "物品属性" #: eos/saveddata/damagePattern.py:118 eos/saveddata/targetProfile.py:88 msgid "Jaguar" msgstr "美洲豹" #: eos/saveddata/damagePattern.py:153 eos/saveddata/targetProfile.py:76 msgid "Khanid" msgstr "卡尼迪" #: eos/saveddata/damagePattern.py:41 #: gui/builtinContextMenus/moduleAmmoChange.py:27 msgid "Kinetic" msgstr "动能" #: gui/builtinStatsViews/resistancesViewFull.py:87 #: gui/targetProfileEditor.py:121 msgid "Kinetic resistance" msgstr "动能抗性" #: eos/saveddata/fit.py:402 msgid "Ladar" msgstr "光雷达" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:38 msgid "Language (requires restart)" msgstr "语言 (重启生效)" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:120 msgid "Large ship hold" msgstr "大型舰船仓" #: gui/builtinStatsViews/capacitorViewFull.py:77 #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Lasts " msgstr "可维持" #: gui/builtinStatsViews/resourcesViewFull.py:112 msgid "Launcher hardpoints" msgstr "发射器" #: eos/saveddata/damagePattern.py:67 msgid "Lead" msgstr "铅质" #: gui/builtinContextMenus/moduleAmmoChange.py:94 #: gui/builtinContextMenus/moduleAmmoChange.py:112 msgid "Less Damage" msgstr "更少伤害" #: gui/characterEditor.py:343 msgid "Level" msgstr "技能等级" #: gui/builtinContextMenus/skillAffectors.py:79 #, python-format msgid "Level %s" msgstr "等级%s" #: gui/builtinItemStatsViews/itemDependants.py:46 gui/characterEditor.py:591 #: gui/characterEditor.py:616 gui/characterEditor.py:649 msgid "Level {}" msgstr "等级{}" #: gui/characterEditor.py:532 msgid "Level {}d" msgstr "等级{}d" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Light" msgstr "轻型" #: service/market.py:266 msgid "Limited Issue Ships" msgstr "限量版舰船" #: gui/copySelectDialog.py:46 gui/copySelectDialog.py:53 msgid "Loaded Charges" msgstr "已装填弹药" #: gui/mainFrame.py:271 msgid "Loading previous fits..." msgstr "正在打开之前的装配..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Local Server" msgstr "本地服务器" #: gui/builtinContextMenus/envEffectAdd.py:205 msgid "Localized" msgstr "局部" #: graphs/data/fitLockTime/graph.py:34 msgid "Lock Time" msgstr "锁定时间" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:201 msgid "Lock Times" msgstr "锁定时间" #: graphs/data/fitEwarStats/graph.py:39 msgid "Lock range reduction" msgstr "锁定半径减少百分比" #: graphs/data/fitLockTime/graph.py:36 msgid "Lock time" msgstr "锁定时间" #: gui/characterEditor.py:794 msgid "Log In with EVE SSO" msgstr "通过EVE登录" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:38 msgid "Log file location:" msgstr "日志文件路径:" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:19 msgid "Logging" msgstr "日志" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:38 msgid "Login Authentication Method" msgstr "登录鉴权模式" #: gui/builtinContextMenus/moduleAmmoChange.py:82 msgid "Long Range" msgstr "更长距离" #: gui/builtinViewColumns/baseName.py:61 msgid "Low" msgstr "低" #: gui/builtinContextMenus/fitSystemSecurity.py:20 msgid "Low Security" msgstr "低安" #: graphs/style.py:56 msgid "Magenta" msgstr "粉色" #: eos/saveddata/fit.py:402 msgid "Magnetometric" msgstr "磁力计" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:114 msgid "Maintenance bay" msgstr "维护舱" #: gui/mainFrame.py:671 msgid "Manage Characters" msgstr "管理角色" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:39 msgid "Manual" msgstr "手动" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "Manual proxy settings" msgstr "手动配置代理" #: gui/mainFrame.py:180 msgid "Market" msgstr "市场" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:23 msgid "Market & Prices" msgstr "市场和价格" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:30 msgid "Market && Prices" msgstr "市场和价格" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:99 msgid "Market Group Selection" msgstr "选择物品类别时" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:91 msgid "Market Search && Recent Items" msgstr "搜索和显示最近使用列表时" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:39 msgid "Market Search Delay (ms):" msgstr "市场搜索延迟(毫秒):" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:225 msgid "Mass:\t{:,.0f}kg" msgstr "质量:{:,.0f}kg" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:124 msgid "Material bay" msgstr "物料仓" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:208 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:241 #, python-format msgid "Max Warp Distance: %.1f AU" msgstr "最大跃迁距离:%.1f AU" #: gui/targetProfileEditor.py:124 msgid "Maximum speed" msgstr "亚光速航速" #: gui/builtinViewColumns/baseName.py:60 msgid "Med" msgstr "中" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:119 msgid "Medium ship hold" msgstr "中型舰船仓" #: eos/saveddata/damagePattern.py:58 msgid "Meson" msgstr "介子" #: gui/builtinContextMenus/envEffectAdd.py:105 msgid "Metaliminal Storm" msgstr "" #: eos/saveddata/damagePattern.py:46 msgid "Microwave" msgstr "微波" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:123 msgid "Mineral hold" msgstr "矿物仓" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Minimal" msgstr "简洁" #: gui/builtinStatsViews/miningyieldViewFull.py:39 msgid "Mining Yield" msgstr "矿物产出" #: eos/saveddata/targetProfile.py:59 msgid "Minmatar (Armor)" msgstr "米玛塔尔(护甲)" #: eos/saveddata/targetProfile.py:58 msgid "Minmatar (Shield)" msgstr "米玛塔尔(护盾)" #: eos/saveddata/damagePattern.py:147 eos/saveddata/damagePattern.py:148 #: eos/saveddata/targetProfile.py:98 msgid "Minmatar EDENCOM Entities" msgstr "米玛塔尔EDENCOM实体" #: eos/saveddata/damagePattern.py:154 eos/saveddata/targetProfile.py:77 msgid "Minmatar Republic" msgstr "米玛塔尔共和国" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 msgid "Misc" msgstr "杂项" #: gui/builtinViewColumns/misc.py:50 msgid "Misc data" msgstr "杂项" #: graphs/data/fitEwarStats/graph.py:41 msgid "Missile flight range reduction" msgstr "导弹射程减少百分比" #: eos/saveddata/damagePattern.py:86 eos/saveddata/damagePattern.py:87 #: eos/saveddata/damagePattern.py:88 eos/saveddata/damagePattern.py:89 msgid "Missiles" msgstr "导弹" #: eos/saveddata/damagePattern.py:149 eos/saveddata/damagePattern.py:150 #: eos/saveddata/damagePattern.py:151 eos/saveddata/damagePattern.py:152 #: eos/saveddata/damagePattern.py:153 eos/saveddata/damagePattern.py:154 #: eos/saveddata/damagePattern.py:155 eos/saveddata/damagePattern.py:156 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 msgid "Mission" msgstr "任务" #: gui/builtinContextMenus/moduleAmmoChange.py:28 msgid "Mixed" msgstr "混合" #: eos/saveddata/damagePattern.py:86 msgid "Mjolnir" msgstr "雷神" #: graphs/data/fitMobility/graph.py:32 msgid "Mobility" msgstr "机动性" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:83 msgid "Mode:" msgstr "模式" #: gui/builtinContextMenus/moduleFill.py:24 msgid "Module" msgstr "模块" #: graphs/data/fitMobility/graph.py:37 msgid "Momentum" msgstr "动量" #: eos/saveddata/damagePattern.py:155 eos/saveddata/targetProfile.py:78 msgid "Mordus Legion" msgstr "莫德团" #: gui/builtinContextMenus/moduleAmmoChange.py:97 #: gui/builtinContextMenus/moduleAmmoChange.py:115 msgid "More Damage" msgstr "更多伤害" #: eos/saveddata/damagePattern.py:52 msgid "Multifrequency" msgstr "多频" #: eos/saveddata/fit.py:408 msgid "Multispectral" msgstr "多谱式" #: gui/copySelectDialog.py:54 msgid "Mutated Attributes" msgstr "已变异属性" #: gui/itemStats.py:170 msgid "Mutations" msgstr "变质" #: eos/saveddata/damagePattern.py:95 eos/saveddata/damagePattern.py:96 #: eos/saveddata/damagePattern.py:97 eos/saveddata/damagePattern.py:98 #: eos/saveddata/damagePattern.py:99 eos/saveddata/damagePattern.py:100 #: eos/saveddata/damagePattern.py:101 eos/saveddata/damagePattern.py:102 #: eos/saveddata/damagePattern.py:103 eos/saveddata/damagePattern.py:104 #: eos/saveddata/damagePattern.py:105 eos/saveddata/damagePattern.py:106 #: eos/saveddata/damagePattern.py:107 eos/saveddata/damagePattern.py:108 #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:110 #: eos/saveddata/damagePattern.py:111 eos/saveddata/damagePattern.py:112 #: eos/saveddata/damagePattern.py:113 eos/saveddata/damagePattern.py:114 #: eos/saveddata/damagePattern.py:115 eos/saveddata/damagePattern.py:116 #: eos/saveddata/damagePattern.py:117 eos/saveddata/damagePattern.py:118 #: eos/saveddata/damagePattern.py:119 eos/saveddata/damagePattern.py:120 #: eos/saveddata/damagePattern.py:121 eos/saveddata/damagePattern.py:122 #: eos/saveddata/damagePattern.py:123 eos/saveddata/damagePattern.py:124 #: eos/saveddata/damagePattern.py:125 eos/saveddata/damagePattern.py:126 #: eos/saveddata/damagePattern.py:127 eos/saveddata/damagePattern.py:128 #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/damagePattern.py:143 #: eos/saveddata/damagePattern.py:144 eos/saveddata/damagePattern.py:145 #: eos/saveddata/damagePattern.py:146 eos/saveddata/damagePattern.py:147 #: eos/saveddata/damagePattern.py:148 eos/saveddata/damagePattern.py:149 #: eos/saveddata/damagePattern.py:150 eos/saveddata/damagePattern.py:151 #: eos/saveddata/damagePattern.py:152 eos/saveddata/damagePattern.py:153 #: eos/saveddata/damagePattern.py:154 eos/saveddata/damagePattern.py:155 #: eos/saveddata/damagePattern.py:156 eos/saveddata/damagePattern.py:157 #: eos/saveddata/damagePattern.py:158 eos/saveddata/damagePattern.py:159 #: eos/saveddata/damagePattern.py:160 eos/saveddata/damagePattern.py:161 #: eos/saveddata/targetProfile.py:60 eos/saveddata/targetProfile.py:61 #: eos/saveddata/targetProfile.py:62 eos/saveddata/targetProfile.py:63 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:65 #: eos/saveddata/targetProfile.py:66 eos/saveddata/targetProfile.py:67 #: eos/saveddata/targetProfile.py:68 eos/saveddata/targetProfile.py:69 #: eos/saveddata/targetProfile.py:70 eos/saveddata/targetProfile.py:71 #: eos/saveddata/targetProfile.py:72 eos/saveddata/targetProfile.py:73 #: eos/saveddata/targetProfile.py:74 eos/saveddata/targetProfile.py:75 #: eos/saveddata/targetProfile.py:76 eos/saveddata/targetProfile.py:77 #: eos/saveddata/targetProfile.py:78 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:80 eos/saveddata/targetProfile.py:81 #: eos/saveddata/targetProfile.py:82 eos/saveddata/targetProfile.py:83 #: eos/saveddata/targetProfile.py:84 eos/saveddata/targetProfile.py:85 #: eos/saveddata/targetProfile.py:86 eos/saveddata/targetProfile.py:87 #: eos/saveddata/targetProfile.py:88 eos/saveddata/targetProfile.py:89 #: eos/saveddata/targetProfile.py:90 eos/saveddata/targetProfile.py:91 #: eos/saveddata/targetProfile.py:92 eos/saveddata/targetProfile.py:94 #: eos/saveddata/targetProfile.py:95 eos/saveddata/targetProfile.py:96 #: eos/saveddata/targetProfile.py:97 eos/saveddata/targetProfile.py:98 #: eos/saveddata/targetProfile.py:99 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:101 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:103 eos/saveddata/targetProfile.py:104 #: eos/saveddata/targetProfile.py:105 eos/saveddata/targetProfile.py:106 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:108 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:110 #: eos/saveddata/targetProfile.py:111 eos/saveddata/targetProfile.py:112 #: eos/saveddata/targetProfile.py:113 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:115 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:117 eos/saveddata/targetProfile.py:118 #: eos/saveddata/targetProfile.py:119 eos/saveddata/targetProfile.py:120 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:122 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:124 #: eos/saveddata/targetProfile.py:125 eos/saveddata/targetProfile.py:126 #: eos/saveddata/targetProfile.py:127 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:129 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:131 eos/saveddata/targetProfile.py:132 #: eos/saveddata/targetProfile.py:133 eos/saveddata/targetProfile.py:134 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:136 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:138 #: eos/saveddata/targetProfile.py:139 eos/saveddata/targetProfile.py:140 #: eos/saveddata/targetProfile.py:141 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:143 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:145 eos/saveddata/targetProfile.py:146 #: eos/saveddata/targetProfile.py:147 eos/saveddata/targetProfile.py:148 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:150 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:152 #: eos/saveddata/targetProfile.py:153 eos/saveddata/targetProfile.py:154 #: eos/saveddata/targetProfile.py:155 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:157 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:159 eos/saveddata/targetProfile.py:160 #: eos/saveddata/targetProfile.py:161 eos/saveddata/targetProfile.py:162 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:164 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:166 #: eos/saveddata/targetProfile.py:167 eos/saveddata/targetProfile.py:168 #: eos/saveddata/targetProfile.py:169 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:171 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:173 eos/saveddata/targetProfile.py:174 #: eos/saveddata/targetProfile.py:175 eos/saveddata/targetProfile.py:176 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:178 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:180 #: eos/saveddata/targetProfile.py:181 eos/saveddata/targetProfile.py:182 #: eos/saveddata/targetProfile.py:183 eos/saveddata/targetProfile.py:184 #: eos/saveddata/targetProfile.py:185 eos/saveddata/targetProfile.py:186 #: eos/saveddata/targetProfile.py:187 eos/saveddata/targetProfile.py:188 #: eos/saveddata/targetProfile.py:189 eos/saveddata/targetProfile.py:191 #: eos/saveddata/targetProfile.py:192 eos/saveddata/targetProfile.py:193 #: eos/saveddata/targetProfile.py:194 eos/saveddata/targetProfile.py:195 #: eos/saveddata/targetProfile.py:196 eos/saveddata/targetProfile.py:197 #: eos/saveddata/targetProfile.py:198 eos/saveddata/targetProfile.py:199 #: eos/saveddata/targetProfile.py:200 eos/saveddata/targetProfile.py:201 #: eos/saveddata/targetProfile.py:202 eos/saveddata/targetProfile.py:203 #: eos/saveddata/targetProfile.py:204 eos/saveddata/targetProfile.py:205 #: eos/saveddata/targetProfile.py:206 eos/saveddata/targetProfile.py:207 #: eos/saveddata/targetProfile.py:208 eos/saveddata/targetProfile.py:209 #: eos/saveddata/targetProfile.py:210 eos/saveddata/targetProfile.py:211 #: eos/saveddata/targetProfile.py:212 eos/saveddata/targetProfile.py:213 #: eos/saveddata/targetProfile.py:214 eos/saveddata/targetProfile.py:215 #: eos/saveddata/targetProfile.py:216 eos/saveddata/targetProfile.py:217 #: eos/saveddata/targetProfile.py:218 eos/saveddata/targetProfile.py:219 #: eos/saveddata/targetProfile.py:220 eos/saveddata/targetProfile.py:221 #: eos/saveddata/targetProfile.py:222 eos/saveddata/targetProfile.py:223 #: eos/saveddata/targetProfile.py:224 eos/saveddata/targetProfile.py:225 #: eos/saveddata/targetProfile.py:226 eos/saveddata/targetProfile.py:227 #: eos/saveddata/targetProfile.py:228 eos/saveddata/targetProfile.py:229 #: eos/saveddata/targetProfile.py:230 eos/saveddata/targetProfile.py:231 #: eos/saveddata/targetProfile.py:232 msgid "NPC" msgstr "NPC" #: gui/builtinItemStatsViews/itemEffects.py:30 #: gui/builtinViewColumns/baseName.py:55 msgid "Name" msgstr "名称" #: gui/esiFittings.py:334 msgid "Need at least one ESI character to export" msgstr "请为导出至少选择一个游戏内角色" #: gui/esiFittings.py:117 msgid "Need at least one ESI character to fetch" msgstr "请为获取至少选择一个游戏内角色" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:17 msgid "Network" msgstr "网络" #: gui/builtinStatsViews/capacitorViewFull.py:149 msgid "Neutralizer resistance" msgstr "电容中和器抗性" #: graphs/data/fitEwarStats/graph.py:36 msgid "Neuts: cap per second" msgstr "毁电:毁电速度" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount ({}-{})" msgstr "新数量 ({}-{})" #: gui/builtinContextMenus/itemAmountChange.py:98 msgid "New Amount:" msgstr "新数量:" #: gui/builtinContextMenus/implantSetSave.py:45 msgid "New Implant Set" msgstr "新建植入体配置" #: gui/builtinShipBrowser/navigationPanel.py:51 msgid "New fitting" msgstr "新装配" #: gui/builtinItemStatsViews/itemEffects.py:58 msgid "No" msgstr "否" #: gui/builtinContextMenus/targetProfile/switcher.py:85 msgid "No Profile" msgstr "无伤害模型" #: gui/characterSelection.py:230 msgid "No active fit" msgstr "没有选中的装配" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:92 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:100 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:106 #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:113 msgid "No changes to meta buttons" msgstr "不改变衍生分类按钮" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:87 msgid "No proxy" msgstr "无代理" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:71 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:79 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:87 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 #: gui/characterEditor.py:855 msgid "None" msgstr "无" #: graphs/style.py:80 msgid "Normal" msgstr "常规" #: eos/saveddata/damagePattern.py:131 msgid "Normal Subcaps" msgstr "常规非旗舰" #: gui/builtinContextMenus/skillAffectors.py:77 msgid "Not Learned" msgstr "未学习" #: gui/characterEditor.py:399 service/character.py:322 msgid "Not learned" msgstr "未学习" #: gui/additionsPane.py:87 msgid "Notes" msgstr "备注" #: eos/saveddata/damagePattern.py:89 msgid "Nova" msgstr "星爆" #: eos/saveddata/damagePattern.py:77 msgid "Nuclear" msgstr "核芯弹" #: gui/builtinContextMenus/fitSystemSecurity.py:21 msgid "Null Security" msgstr "零安" #: gui/mainMenuBar.py:167 msgid "Open &Dev Tools" msgstr "打开开发者工具(&D)" #: gui/characterSelection.py:150 msgid "Open Character Editor" msgstr "打开角色编辑器" #: gui/builtinContextMenus/fitOpenNewTab.py:37 msgid "Open Fit in New Tab" msgstr "在新标签页打开装配" #: gui/mainFrame.py:1010 msgid "Open One Or More Character Files" msgstr "打开角色文件" #: gui/mainFrame.py:834 msgid "Open One Or More Fitting Files" msgstr "打开装配文件" #: gui/mainMenuBar.py:166 msgid "Open Wid&gets Inspect tool" msgstr "打开控件检查工具(&G)" #: gui/mainMenuBar.py:166 msgid "Open Widgets Inspect tool" msgstr "打开控件检查工具" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:136 msgid "Open fittings in a new page by default" msgstr "默认在新标签页打开装配" #: gui/builtinContextMenus/shipJump.py:35 msgid "Open in Fitting Browser" msgstr "在装配浏览器中打开" #: gui/builtinShipBrowser/fitItem.py:227 msgid "Open in new tab" msgstr "在新标签页打开" #: gui/copySelectDialog.py:50 msgid "Optimize Prices" msgstr "优化价格" #: graphs/style.py:55 msgid "Orange" msgstr "橘色" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:122 msgid "Ore hold" msgstr "矿石仓" #: eos/saveddata/targetProfile.py:79 eos/saveddata/targetProfile.py:80 msgid "Other" msgstr "其他" #: eos/saveddata/damagePattern.py:100 eos/saveddata/targetProfile.py:100 #: eos/saveddata/targetProfile.py:107 eos/saveddata/targetProfile.py:114 #: eos/saveddata/targetProfile.py:121 eos/saveddata/targetProfile.py:128 #: eos/saveddata/targetProfile.py:135 eos/saveddata/targetProfile.py:142 #: eos/saveddata/targetProfile.py:149 eos/saveddata/targetProfile.py:156 #: eos/saveddata/targetProfile.py:163 eos/saveddata/targetProfile.py:170 #: eos/saveddata/targetProfile.py:177 eos/saveddata/targetProfile.py:184 msgid "Overmind" msgstr "主宰" #: gui/builtinStatsViews/rechargeViewFull.py:75 msgid "Passive shield recharge" msgstr "被动回充" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:125 msgid "Password:" msgstr "密码:" #: gui/builtinContextMenus/additionsImport.py:40 msgid "Paste {}" msgstr "粘贴{}" #: gui/patternEditor.py:295 msgid "Patterns exported to clipboard" msgstr "伤害模型已导出到剪贴板" #: gui/setEditor.py:210 gui/patternEditor.py:276 msgid "Patterns successfully imported from clipboard" msgstr "从剪贴板导入伤害模型成功" #: eos/saveddata/damagePattern.py:82 msgid "Phased Plasma" msgstr "定相等离子弹" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:128 msgid "Planetary goods hold" msgstr "星系物质仓" #: gui/mainFrame.py:721 msgid "Please Wait..." msgstr "请稍候..." #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:32 msgid "Please see the pyfa wiki on GitHub for information regarding these options." msgstr "关于下列选项,详情请参考GitHub上的百科。" #: gui/esiFittings.py:315 msgid "Please select an active fitting in the main window" msgstr "请在主窗口选择一个装配" #: gui/characterEditor.py:758 msgid "Please select another character or make a new one." msgstr "请选择另一角色或创建新角色。" #: gui/mainFrame.py:895 msgid "Please verify path location pyfa's preferences." msgstr "请确认Pyfa偏好保存位置。" #: gui/builtinContextMenus/graphFitAmmoPicker.py:29 msgid "Plot with Different Ammo..." msgstr "使用不同的弹药..." #: eos/saveddata/damagePattern.py:70 msgid "Plutonium" msgstr "锰质" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:164 msgid "Pod" msgstr "逃生舱" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:109 msgid "Port:" msgstr "端口:" #: gui/builtinStatsViews/resourcesViewFull.py:154 msgid "PowerGrid" msgstr "PG" #: gui/preferenceDialog.py:31 msgid "Preferences" msgstr "偏好设置" #: gui/builtinPreferenceViews/pyfaLoggingPreferences.py:59 msgid "Pressing this button will cause all logs in memory to write to the log file:" msgstr "点击此按钮以将所有缓存的日志写入到日志文件:" #: gui/builtinItemStatsViews/itemCompare.py:155 #: gui/builtinStatsViews/priceViewFull.py:40 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:99 msgid "Price" msgstr "价格" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:41 msgid "Pricing updates" msgstr "价格更新" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:265 #, python-format msgid "Probe Size: %.3f" msgstr "探测大小:%.3f" #: gui/targetProfileEditor.py:372 msgid "Profiles exported to clipboard" msgstr "目标属性已导出到剪贴板" #: gui/targetProfileEditor.py:352 msgid "Profiles successfully imported from clipboard" msgstr "已成功从剪贴板导入目标属性" #: gui/builtinShipBrowser/fitItem.py:230 msgid "Project onto Active Fit" msgstr "施加远程效果到当前装配" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:61 msgid "Project onto Fit" msgstr "施加远程效果到装配" #: gui/builtinContextMenus/itemProject.py:34 #, python-brace-format msgid "Project {0} onto Fit" msgstr "施加{0}远程效果到装配" #: gui/additionsPane.py:81 msgid "Projected" msgstr "远程效果" #: gui/builtinAdditionPanes/projectedView.py:304 #: gui/builtinAdditionPanes/projectedView.py:314 #: gui/builtinAdditionPanes/projectedView.py:319 #: gui/builtinAdditionPanes/projectedView.py:324 msgid "Projected Item" msgstr "远程效果物品" #: eos/saveddata/damagePattern.py:74 eos/saveddata/damagePattern.py:75 #: eos/saveddata/damagePattern.py:76 eos/saveddata/damagePattern.py:77 #: eos/saveddata/damagePattern.py:78 eos/saveddata/damagePattern.py:79 #: eos/saveddata/damagePattern.py:80 eos/saveddata/damagePattern.py:81 #: eos/saveddata/damagePattern.py:82 eos/saveddata/damagePattern.py:83 #: eos/saveddata/damagePattern.py:84 eos/saveddata/damagePattern.py:85 msgid "Projectile Ammo" msgstr "射弹弹药" #: gui/itemStats.py:200 msgid "Properties" msgstr "属性" #: gui/builtinContextMenus/shipModeChange.py:19 msgid "Propulsion" msgstr "高速" #: eos/saveddata/damagePattern.py:78 msgid "Proton" msgstr "质子弹" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:49 msgid "Proxy settings" msgstr "代理设置" #: graphs/style.py:58 msgid "Purple" msgstr "紫色" #: gui/builtinContextMenus/envEffectAdd.py:222 msgid "PvP Weather" msgstr "PvP环境" #: gui/aboutData.py:49 msgid "Pyfa (the Python Fitting Assistant) is an open-source standalone application able to create and simulate fittings for EVE-Online SciFi MMORPG with a very high degree of accuracy. Pyfa can run on all platforms where Python and wxWidgets are supported." msgstr "Python装配助手(the Python Fitting Assistant, Pyfa)是一个开源独立应用,可用于为星战前线(EvE Online)创建和模拟非常准确的装配方案。Pyfa可在python和wxWidgets支持的所有平台运行。" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:44 msgid "Pyfa Update checks" msgstr "Pyfa更新检查" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:15 msgid "Pyfa can automatically check and notify you of new releases. This feature is toggled in the Network settings. Here, you may allow pre-release notifications and view suppressed release notifications, if any." msgstr "Pyfa可以自动检查更新并提示。这个功能可在网络设置中开启。在这里你可以开启预发布版本更新通知,并查看未提示的版本更新(如果有的话)。" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:69 msgid "Pyfa language selection disabled. Please check if .mo files have been generated.\n" "Refer to locale/README.md for info." msgstr "Pyfa语言选择已禁用。请检查.mo 文件是否已生成。\n" "请参阅locale/README.md获取信息。" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:129 msgid "Quafe hold" msgstr "酷菲(Quafe)仓" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of active items" msgstr "激活的物品数量" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:153 msgid "Quantity of all items" msgstr "所有物品数量" #: eos/saveddata/fit.py:402 msgid "Radar" msgstr "雷达" #: eos/saveddata/damagePattern.py:45 msgid "Radio" msgstr "射频" #: gui/targetProfileEditor.py:126 msgid "Radius" msgstr "信号半径" #: gui/builtinItemStatsViews/itemMutator.py:54 msgid "Random stats" msgstr "随机化属性" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:63 msgid "Range" msgstr "锁定范围" #: gui/builtinStatsViews/resistancesViewFull.py:222 msgid "Raw HP: " msgstr "原始HP:" #: gui/builtinStatsViews/resistancesViewFull.py:223 #, python-format msgid "Raw: %d HP" msgstr "原始:%dHP" #: gui/mainFrame.py:652 msgid "Re-enabling fitting restrictions for this fit will also remove any illegal items from the fit. Do you want to continue?" msgstr "重新启用装配限制将删除所有无效物品。您要继续吗?" #: gui/builtinShipBrowser/navigationPanel.py:56 #: gui/builtinShipBrowser/navigationPanel.py:129 msgid "Recent Fits" msgstr "最近使用的装配" #: gui/builtinMarketBrowser/marketTree.py:37 msgid "Recently Used Items" msgstr "最近使用的物品" #: gui/builtinStatsViews/rechargeViewFull.py:43 msgid "Recharge rates" msgstr "回充速度" #: graphs/style.py:52 msgid "Red" msgstr "红色" #: gui/mainMenuBar.py:84 msgid "Redo the most recent undone action" msgstr "恢复最近一次撤销的操作" #: gui/builtinItemStatsViews/itemAttributes.py:62 #: gui/builtinItemStatsViews/itemAffectedBy.py:77 #: gui/builtinItemStatsViews/itemCompare.py:79 msgid "Refresh" msgstr "刷新" #: gui/characterSelection.py:68 msgid "Refresh Skills" msgstr "刷新技能" #: gui/builtinStatsViews/rechargeViewFull.py:86 msgid "Reinforced" msgstr "加强回充" #: graphs/data/fitRemoteReps/graph.py:62 msgid "Reload ancillary RRs" msgstr "重新装填辅助遥修装置" #: graphs/data/fitRemoteReps/graph.py:48 msgid "Remote Repairs" msgstr "遥修" #: gui/builtinStatsViews/outgoingViewMinimal.py:65 #: gui/builtinStatsViews/outgoingViewFull.py:66 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:104 msgid "Remote Reps" msgstr "遥修" #: gui/esiFittings.py:387 msgid "Remove Character" msgstr "删除角色" #: gui/propertyEditor.py:71 msgid "Remove Overides for Item" msgstr "删除物品的自定义属性" #: gui/builtinContextMenus/itemRemove.py:42 #, python-brace-format msgid "Remove {item}{stack}" msgstr "移除 {item}{stack}" #: gui/builtinShipBrowser/fitItem.py:108 msgid "Rename" msgstr "重命名" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:118 msgid "Reopen previous fits on startup" msgstr "重新启动时打开之前的装配" #: graphs/data/fitRemoteReps/graph.py:53 msgid "Repair speed" msgstr "修复速度" #: gui/copySelectDialog.py:50 msgid "Replace items by cheaper alternatives" msgstr "使用较便宜的物品替代更贵的物品" #: gui/itemStats.py:185 msgid "Requirements" msgstr "技能需求" #: gui/builtinContextMenus/moduleSpool.py:98 msgid "Reset" msgstr "重置" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:76 msgid "Reset Suppression" msgstr "重置版本更新提示" #: gui/builtinItemStatsViews/itemMutator.py:51 msgid "Reset defaults" msgstr "重置为默认值" #: gui/builtinContextMenus/resistMode.py:41 msgid "Resist Mode" msgstr "抗性模式" #: gui/builtinStatsViews/resistancesViewFull.py:213 msgid "Resist Multiplier: " msgstr "抗性倍率:" #: gui/builtinStatsViews/resistancesViewFull.py:47 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:50 msgid "Resistances" msgstr "抗性" #: gui/builtinStatsViews/resourcesViewFull.py:84 #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:42 msgid "Resources" msgstr "装配资源" #: gui/builtinItemStatsViews/itemMutator.py:57 msgid "Revert changes" msgstr "还原到初始状态" #: gui/builtinContextMenus/moduleMutations.py:33 msgid "Revert to {}" msgstr "还原为{}" #: gui/builtinViewColumns/baseName.py:63 msgid "Rig" msgstr "改装" #: eos/saveddata/damagePattern.py:108 eos/saveddata/damagePattern.py:126 msgid "Rogue Drone" msgstr "自由无人机" #: eos/saveddata/damagePattern.py:160 eos/saveddata/targetProfile.py:231 msgid "Rogue Drone Entities" msgstr "自由无人机实体" #: eos/saveddata/targetProfile.py:63 eos/saveddata/targetProfile.py:69 msgid "Rogue Drones" msgstr "自由无人机" #: gui/builtinItemStatsViews/itemEffects.py:34 msgid "Run Time" msgstr "运行时长" #: gui/esiFittings.py:368 msgid "SSO Character Management" msgstr "游戏内人物管理" #: gui/ssoLogin.py:15 gui/ssoLogin.py:49 msgid "SSO Login" msgstr "通过EVE登录" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:45 msgid "SSO Mode" msgstr "单点登录(SSO)模式" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:126 msgid "Salvage hold" msgstr "打捞件仓" #: locale_test/getTextLocale.py:4 msgid "Sample Title Text English" msgstr "" #: eos/saveddata/damagePattern.py:101 eos/saveddata/targetProfile.py:192 #: eos/saveddata/targetProfile.py:195 eos/saveddata/targetProfile.py:198 #: eos/saveddata/targetProfile.py:201 eos/saveddata/targetProfile.py:204 #: eos/saveddata/targetProfile.py:207 eos/saveddata/targetProfile.py:210 #: eos/saveddata/targetProfile.py:213 eos/saveddata/targetProfile.py:216 #: eos/saveddata/targetProfile.py:219 eos/saveddata/targetProfile.py:222 #: eos/saveddata/targetProfile.py:225 eos/saveddata/targetProfile.py:228 msgid "Sansha" msgstr "萨沙" #: eos/saveddata/damagePattern.py:157 eos/saveddata/targetProfile.py:80 #: gui/builtinContextMenus/envEffectAdd.py:124 msgid "Sansha Incursion" msgstr "萨沙入侵" #: eos/saveddata/damagePattern.py:109 eos/saveddata/damagePattern.py:127 #: eos/saveddata/targetProfile.py:64 eos/saveddata/targetProfile.py:70 msgid "Sanshas Nation" msgstr "萨沙国度" #: gui/mainFrame.py:858 msgid "Save Backup As..." msgstr "保存备份为..." #: gui/builtinItemStatsViews/itemAttributes.py:117 msgid "Save CSV file" msgstr "保存为逗号分隔符(CSV)文件" #: gui/mainMenuBar.py:114 msgid "Save Character &As..." msgstr "保存角色为...(&A)" #: gui/characterEditor.py:282 msgid "Save Character As..." msgstr "保存角色为..." #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:48 #: gui/mainFrame.py:465 msgid "Save Fitting As..." msgstr "保存装配为..." #: gui/propertyEditor.py:130 msgid "Save Overrides As..." msgstr "保存自定义属性为..." #: gui/builtinContextMenus/implantSetSave.py:27 msgid "Save as New Implant Set" msgstr "保存为新的植入体配置" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:64 msgid "Scan res." msgstr "扫描精度" #: eos/saveddata/damagePattern.py:91 msgid "Scorch Bomb" msgstr "灼烧炸弹" #: eos/saveddata/damagePattern.py:88 msgid "Scourge" msgstr "鞭挞" #: gui/builtinShipBrowser/navigationPanel.py:61 msgid "Search fittings" msgstr "搜索装配" #: gui/characterEditor.py:356 #, python-brace-format msgid "Sec Status: {0:.2f}" msgstr "安全等级: {0:.2f}" #: gui/characterEditor.py:914 msgid "Security Status is used in some CONCORD hull calculations" msgstr "安全等级会用于计算统合部船体属性" #: eos/saveddata/damagePattern.py:102 eos/saveddata/targetProfile.py:101 #: eos/saveddata/targetProfile.py:108 eos/saveddata/targetProfile.py:115 #: eos/saveddata/targetProfile.py:122 eos/saveddata/targetProfile.py:129 #: eos/saveddata/targetProfile.py:136 eos/saveddata/targetProfile.py:143 #: eos/saveddata/targetProfile.py:150 eos/saveddata/targetProfile.py:157 #: eos/saveddata/targetProfile.py:164 eos/saveddata/targetProfile.py:171 #: eos/saveddata/targetProfile.py:178 eos/saveddata/targetProfile.py:185 msgid "Seeker" msgstr "探寻者" #: gui/copySelectDialog.py:62 msgid "Select a format" msgstr "选择格式" #: gui/esiFittings.py:318 msgid "Sending request and awaiting response" msgstr "正在发送请求和接收响应" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:65 msgid "Sensor str." msgstr "传感器强度" #: eos/saveddata/damagePattern.py:122 eos/saveddata/targetProfile.py:92 msgid "Sentinel" msgstr "哨兵级" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:122 msgid "Separate Racks" msgstr "分隔不同槽位类型" #: eos/saveddata/damagePattern.py:110 eos/saveddata/damagePattern.py:128 #: eos/saveddata/targetProfile.py:65 eos/saveddata/targetProfile.py:71 msgid "Serpentis" msgstr "天蛇" #: gui/builtinViewColumns/baseName.py:64 msgid "Service" msgstr "服务" #: gui/characterEditor.py:907 msgid "Set Security Status" msgstr "设置安全等级" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:41 msgid "Set as Damage Pattern" msgstr "设置为伤害模型" #: gui/builtinPreferenceViews/pyfaHTMLExportPreferences.py:53 msgid "Set export destination" msgstr "设置导出路径" #: gui/builtinContextMenus/ammoToDmgPattern.py:32 msgid "Set {} as Damage Pattern" msgstr "设置{}为伤害模型" #: gui/setEditor.py:229 msgid "Sets exported to clipboard" msgstr "植入体配置已导出到剪贴板" #: gui/characterEditor.py:326 msgid "Setting an Alpha clone does not replace the character's skills, but rather caps them to Alpha levels." msgstr "设置为阿尔法克隆不会替换角色技能等级,但会设置技能等级上限为阿尔法状态。" #: gui/builtinContextMenus/shipModeChange.py:20 msgid "Sharpshooter" msgstr "狙击" #: eos/saveddata/targetProfile.py:46 msgid "Shield" msgstr "护盾" #: eos/saveddata/targetProfile.py:49 msgid "Shield (+T2 DCU)" msgstr "护盾(+T2损控)" #: graphs/data/fitShieldRegen/graph.py:38 msgid "Shield Regeneration" msgstr "护盾回充" #: graphs/data/fitShieldRegen/graph.py:42 #: graphs/data/fitShieldRegen/graph.py:55 #: graphs/data/fitShieldRegen/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:61 msgid "Shield amount" msgstr "护盾量" #: graphs/data/fitShieldRegen/graph.py:62 msgid "Shield regen" msgstr "护盾回充" #: gui/builtinStatsViews/resistancesViewFull.py:112 msgid "Shield resistance" msgstr "护盾抗性" #: gui/builtinStatsViews/outgoingViewMinimal.py:37 #: gui/builtinStatsViews/outgoingViewFull.py:38 msgid "Shield restored" msgstr "护盾修复量" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:58 msgid "Shield/Armor Tank" msgstr "恢复" #: gui/builtinStatsViews/resistancesViewFull.py:206 msgid "Shield: " msgstr "护盾:" #: gui/builtinViews/fittingView.py:664 #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/priceViewFull.py:57 msgid "Ship" msgstr "船体" #: gui/builtinShipBrowser/shipItem.py:111 msgid "Ship Basic" msgstr "舰船基础" #: gui/builtinShipBrowser/navigationPanel.py:48 msgid "Ship groups" msgstr "舰船类型" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:117 msgid "Ship hold" msgstr "舰船仓" #: gui/builtinContextMenus/moduleAmmoChange.py:100 msgid "Short Range" msgstr "更短距离" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:126 msgid "Show Rack Labels" msgstr "显示槽位类型标签" #: gui/builtinShipBrowser/navigationPanel.py:151 msgid "Show empty ship groups" msgstr "显示空的舰船类型" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:130 msgid "Show fitting tab tooltips" msgstr "装配标签页显示预览" #: graphs/gui/ctrlPanel.py:71 msgid "Show legend" msgstr "显示图例" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:52 msgid "Show market shortcuts" msgstr "显示市场快捷方式" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:140 msgid "Show ship browser tooltip" msgstr "船体列表显示预览" #: eos/saveddata/damagePattern.py:93 msgid "Shrapnel Bomb" msgstr "榴霰炸弹" #: gui/builtinContextMenus/boosterSideEffects.py:34 msgid "Side Effects" msgstr "副作用" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:88 msgid "Signature" msgstr "信号半径" #: gui/targetProfileEditor.py:125 msgid "Signature radius\n" "Leave blank for infinitely big value" msgstr "信号半径\n" "保持为空表示信号半径无限大" #: graphs/data/fitEwarStats/graph.py:42 msgid "Signature radius increase" msgstr "信号半径增加量" #: gui/aboutData.py:33 msgid "Silk Icons Set by famfamfam.com - Creative Commons Attribution 2.5 License" msgstr "技能系列图标来自 famfamfam.com - 基于知识共享署名2.5许可使用" #: gui/characterEditor.py:342 gui/characterEditor.py:608 msgid "Skill" msgstr "技能" #: gui/characterEditor.py:160 msgid "Skills" msgstr "技能列表" #: gui/characterSelection.py:242 msgid "Skills required:" msgstr "所需技能:" #: eos/saveddata/damagePattern.py:103 eos/saveddata/targetProfile.py:79 #: eos/saveddata/targetProfile.py:104 eos/saveddata/targetProfile.py:111 #: eos/saveddata/targetProfile.py:118 eos/saveddata/targetProfile.py:125 #: eos/saveddata/targetProfile.py:132 eos/saveddata/targetProfile.py:139 #: eos/saveddata/targetProfile.py:146 eos/saveddata/targetProfile.py:153 #: eos/saveddata/targetProfile.py:160 eos/saveddata/targetProfile.py:167 #: eos/saveddata/targetProfile.py:174 eos/saveddata/targetProfile.py:181 #: eos/saveddata/targetProfile.py:188 msgid "Sleeper" msgstr "冬眠者" #: eos/saveddata/damagePattern.py:161 eos/saveddata/targetProfile.py:232 msgid "Sleeper Entities" msgstr "冬眠者实体" #: eos/saveddata/damagePattern.py:158 msgid "Sleepers" msgstr "冬眠者" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:118 msgid "Small ship hold" msgstr "小型舰船仓" #: graphs/style.py:86 msgid "Solid" msgstr "实线" #: graphs/data/fitMobility/graph.py:35 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:86 msgid "Speed" msgstr "亚光速航速" #: graphs/data/fitEwarStats/graph.py:37 msgid "Speed reduction" msgstr "速度减缓百分比" #: gui/builtinContextMenus/droneSplitStack.py:29 msgid "Split {} Stack" msgstr "分离" #: gui/builtinStatsViews/firepowerViewFull.py:169 msgid "Spool up" msgstr "" #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:76 msgid "Spoolup" msgstr "预热" #: gui/builtinContextMenus/moduleSpool.py:37 msgid "Spoolup Cycles" msgstr "预热周期" #: gui/builtinStatsViews/capacitorViewFull.py:170 msgid "Stable: " msgstr "稳定:" #: eos/saveddata/damagePattern.py:48 msgid "Standard" msgstr "标准" #: graphs/data/fitCapacitor/graph.py:46 msgid "Starting cap amount" msgstr "初始电容量" #: graphs/data/fitShieldRegen/graph.py:46 msgid "Starting shield amount" msgstr "初始护盾量" #: gui/builtinPreferenceViews/pyfaStatViewPreferences.py:22 msgid "Statistics Panel" msgstr "属性面板" #: gui/builtinContextMenus/graphDmgDroneMode.py:45 msgid "Stick to Attacker" msgstr "紧贴攻击者" #: gui/builtinContextMenus/graphDmgDroneMode.py:44 msgid "Stick to Target" msgstr "紧贴目标" #: eos/saveddata/damagePattern.py:145 eos/saveddata/damagePattern.py:148 msgid "Subcaps" msgstr "非旗舰" #: eos/saveddata/damagePattern.py:136 #, no-python-format msgid "Subcaps w/missiles 0% spool up" msgstr "非旗舰0%预热" #: eos/saveddata/damagePattern.py:142 #, no-python-format msgid "Subcaps w/missiles 100% spool up" msgstr "非旗舰100%预热" #: eos/saveddata/damagePattern.py:139 #, no-python-format msgid "Subcaps w/missiles 50% spool up" msgstr "非旗舰50%预热" #: gui/builtinViewColumns/baseName.py:62 msgid "Subsystem" msgstr "子系统" #: gui/characterEditor.py:901 msgid "Success" msgstr "成功" #: gui/characterEditor.py:901 msgid "Successfully fetched skills" msgstr "成功获取到技能列表" #: eos/saveddata/damagePattern.py:114 eos/saveddata/targetProfile.py:84 msgid "Succubus (Sanshas Nation)" msgstr "魔女级(萨沙)" #: gui/builtinAdditionPanes/fighterView.py:62 msgid "Support" msgstr "支援" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:48 #, python-brace-format msgid "Suppressing {0} Notifications" msgstr "有{0}个未提示的版本更新" #: gui/builtinStatsViews/rechargeViewFull.py:87 msgid "Sustained" msgstr "持续回充" #: eos/saveddata/targetProfile.py:46 eos/saveddata/targetProfile.py:47 #: eos/saveddata/targetProfile.py:48 eos/saveddata/targetProfile.py:49 #: eos/saveddata/targetProfile.py:50 eos/saveddata/targetProfile.py:51 msgid "T1 Resist" msgstr "T1抗性" #: eos/saveddata/targetProfile.py:52 eos/saveddata/targetProfile.py:53 #: eos/saveddata/targetProfile.py:54 eos/saveddata/targetProfile.py:55 #: eos/saveddata/targetProfile.py:56 eos/saveddata/targetProfile.py:57 #: eos/saveddata/targetProfile.py:58 eos/saveddata/targetProfile.py:59 msgid "T2 Resist" msgstr "T2抗性" #: graphs/data/fitEwarStats/graph.py:40 msgid "TDs: turret optimal range reduction" msgstr "追踪抑制:炮台最佳射程百分比" #: graphs/data/fitEwarStats/graph.py:42 msgid "TPs: signature radius increase" msgstr "标记:信号半径增加量" #: gui/builtinViews/fittingView.py:660 gui/builtinViewColumns/baseName.py:102 #: gui/builtinContextMenus/shipModeChange.py:37 msgid "Tactical Mode" msgstr "战术模式" #: eos/saveddata/damagePattern.py:121 eos/saveddata/targetProfile.py:91 msgid "Talos" msgstr "塔洛斯级" #: graphs/data/fitDamageStats/graph.py:75 graphs/gui/lists.py:359 msgid "Target" msgstr "目标" #: gui/targetProfileEditor.py:86 msgid "Target Profile" msgstr "目标属性" #: gui/targetProfileEditor.py:130 msgid "Target Profile Editor" msgstr "目标属性编辑器" #: gui/targetProfileEditor.py:73 msgid "Target Profile name already in use, please choose another." msgstr "目标属性名已使用,请选择其他名称。" #: gui/builtinContextMenus/targetProfile/switcher.py:33 msgid "Target Resists" msgstr "目标抗性" #: graphs/data/fitMobility/graph.py:39 msgid "Target distance traveled" msgstr "目标移动距离" #: graphs/data/fitMobility/graph.py:45 msgid "Target inertia factor" msgstr "目标惯性系数" #: graphs/data/fitMobility/graph.py:43 msgid "Target mass" msgstr "目标质量" #: graphs/data/fitEwarStats/graph.py:45 msgid "Target resistance" msgstr "目标抗性" #: graphs/data/fitLockTime/graph.py:37 graphs/data/fitDamageStats/graph.py:71 msgid "Target signature" msgstr "目标信号半径" #: graphs/data/fitLockTime/graph.py:35 graphs/data/fitDamageStats/graph.py:62 #: graphs/data/fitDamageStats/graph.py:63 msgid "Target signature radius" msgstr "目标信号半径" #: graphs/data/fitMobility/graph.py:38 graphs/data/fitDamageStats/graph.py:60 #: graphs/data/fitDamageStats/graph.py:61 #: graphs/data/fitDamageStats/graph.py:70 msgid "Target speed" msgstr "目标速度" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:40 msgid "Targeting && Misc" msgstr "目标和杂项" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:62 msgid "Targets" msgstr "最大锁定数" #: eos/saveddata/damagePattern.py:60 msgid "Tetryon" msgstr "四重子" #: gui/mainFrame.py:809 msgid "Text skills training file" msgstr "技能列表文本文件" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:72 msgid "The amount of spoolup to use by default on module which support it. Can be changed on a per-module basis" msgstr "默认模块预热量。可以分模块单独设置" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:44 msgid "The delay between a keystroke and the market search. Can help reduce lag when typing fast in the market search box." msgstr "按键与触发市场搜索的延迟。较大的值可以缓解在市场搜索框快速打字造成的卡顿。" #: gui/mainFrame.py:949 msgid "The following error was generated" msgstr "Pyfa 遇到以下错误" #: gui/mainFrame.py:893 msgid "The following path is invalid or does not exist:" msgstr "下述路径无效或不存在:" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:64 msgid "The source you choose will be tried first, but subsequent sources will be used if the preferred source fails. The system you choose will also be tried first, and if no data is available, global price will be used." msgstr "Pyfa将优先使用指定的价格源,但指定价格源不可用时将使用其他价格源。同理,Pyfa将优先使用指定的星系,但星系价格不可用时将使用全局价格。" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:53 msgid "There is a release available which you have chosen to suppress. You can choose to reset notification suppression for this release, or download the new release from GitHub." msgstr "当前有不提示的版本更新。你可以选择重置版本更新提示,或从GitHub下载版本更新。" #: gui/characterEditor.py:463 msgid "There was an error importing skills, please see log file" msgstr "导入技能列表出错,详见日志文件" #: gui/esiFittings.py:230 msgid "There was an error validating characters' SSO token. Please try logging into the character again to reset the token." msgstr "验证EvE角色登录信息出错,请重试登录以刷新信息。" #: gui/esiFittings.py:213 msgid "There was an issue starting up the localized server, try setting Login Authentication Method to Manual by going to Preferences -> EVE SS0 -> Login Authentication Method. If this doesn't fix the problem please file an issue on Github." msgstr "无法启动本地服务器,请尝试转到偏好设置->EVE SSO->登录验证方法并设置为手动模式。如果仍然遇到问题,请在Github填写issue以报告该问题。" #: eos/saveddata/damagePattern.py:40 #: gui/builtinContextMenus/moduleAmmoChange.py:25 msgid "Thermal" msgstr "热能" #: gui/builtinStatsViews/resistancesViewFull.py:86 #: gui/targetProfileEditor.py:120 msgid "Thermal resistance" msgstr "热能抗性" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:107 msgid "This is a destructive action that will delete all cached prices out of the database.\n" "Are you sure you want to do this?" msgstr "本操作将永久删除所有价格缓存数据。\n" "您确定要继续吗?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:97 msgid "This is a destructive action that will delete all damage pattern profiles.\n" "Are you sure you want to do this?" msgstr "本操作将永久删除所有伤害模型配置。\n" "您确定要继续吗?" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:102 msgid "This is a destructive action that will delete all target profiles.\n" "Are you sure you want to do this?" msgstr "本操作将永久删除所有目标属性配置。\n" "您确定要继续吗?" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:49 msgid "This option goes through EVE SSO directly, but requires more configuration. Use this if pyfa.io is blocked for some reason, or if you do not wish to route data throguh pyfa.io." msgstr "本选项将直接发送EvE单点登录请求,但这需要更多配置。如果pyfa.io无法访问,或你不想让pyfa.io处理登录请求,请使用该选项。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:42 msgid "This option prompts users to copy and paste information from the web application to allow for character login. Use this if having issues with the local server." msgstr "本选项将在角色登录时提示您复制和粘贴登录页相关信息。如果本地服务器出现问题,可使用该选项。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:47 msgid "This options routes SSO Logins through pyfa.io, allowing you to easily login without any configuration. When in doubt, use this option." msgstr "本选项将通过pyfa.io处理单点登录(SSO)请求,使你无需配置即可登录到EVE。不清除时可以使用该选项。" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:40 msgid "This options starts a local webserver that the web application will call back to with information about the character login." msgstr "本选项将启动一个本地服务器以接收登录页返回的角色信息。" #: eos/saveddata/damagePattern.py:68 msgid "Thorium" msgstr "钍质" #: eos/saveddata/damagePattern.py:156 msgid "Thukker" msgstr "图克尔" #: graphs/data/fitMobility/graph.py:33 graphs/data/fitMobility/graph.py:41 #: graphs/data/fitCapacitor/graph.py:34 graphs/data/fitCapacitor/graph.py:41 #: graphs/data/fitRemoteReps/graph.py:51 graphs/data/fitRemoteReps/graph.py:56 #: graphs/data/fitShieldRegen/graph.py:40 #: graphs/data/fitShieldRegen/graph.py:54 #: graphs/data/fitDamageStats/graph.py:59 #: graphs/data/fitDamageStats/graph.py:68 msgid "Time" msgstr "时间" #: eos/saveddata/damagePattern.py:80 msgid "Titanium Sabot" msgstr "钛合金萨博弹" #: gui/builtinItemStatsViews/itemAffectedBy.py:70 msgid "Toggle Names" msgstr "切换名称" #: gui/builtinItemStatsViews/itemAffectedBy.py:73 msgid "Toggle View" msgstr "切换视图" #: gui/builtinItemStatsViews/itemCompare.py:75 msgid "Toggle view mode" msgstr "切换显示模式" #: gui/builtinStatsViews/priceViewMinimal.py:57 #: gui/builtinStatsViews/miningyieldViewFull.py:89 #: gui/builtinStatsViews/priceViewFull.py:58 msgid "Total" msgstr "总计" #: gui/builtinPreferenceViews/pyfaMarketPreferences.py:76 msgid "Total Price Includes" msgstr "价格总计包括" #: graphs/data/fitRemoteReps/graph.py:54 msgid "Total repaired" msgstr "修复总量" #: gui/builtinStatsViews/capacitorViewFull.py:67 msgid "Total: " msgstr "总计:" #: gui/itemStats.py:166 msgid "Traits" msgstr "特征" #: eos/saveddata/damagePattern.py:104 eos/saveddata/targetProfile.py:102 #: eos/saveddata/targetProfile.py:109 eos/saveddata/targetProfile.py:116 #: eos/saveddata/targetProfile.py:123 eos/saveddata/targetProfile.py:130 #: eos/saveddata/targetProfile.py:137 eos/saveddata/targetProfile.py:144 #: eos/saveddata/targetProfile.py:151 eos/saveddata/targetProfile.py:158 #: eos/saveddata/targetProfile.py:165 eos/saveddata/targetProfile.py:172 #: eos/saveddata/targetProfile.py:179 eos/saveddata/targetProfile.py:186 msgid "Triglavian" msgstr "三神裔" #: eos/saveddata/damagePattern.py:130 eos/saveddata/damagePattern.py:131 #: eos/saveddata/damagePattern.py:134 eos/saveddata/damagePattern.py:137 #: eos/saveddata/damagePattern.py:140 eos/saveddata/targetProfile.py:94 msgid "Triglavian Entities" msgstr "三神裔实体" #: gui/builtinContextMenus/envEffectAdd.py:126 #: gui/builtinContextMenus/envEffectAdd.py:128 msgid "Triglavian Invasion" msgstr "三神裔入侵" #: eos/saveddata/damagePattern.py:65 msgid "Tungsten" msgstr "钨质" #: gui/builtinStatsViews/resourcesViewFull.py:111 msgid "Turret hardpoints" msgstr "炮台" #: graphs/data/fitEwarStats/graph.py:40 msgid "Turret optimal range reduction" msgstr "炮台最佳射程减少百分比" #: gui/builtinItemStatsViews/itemEffects.py:32 msgid "Type" msgstr "类型" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:218 #, python-brace-format msgid "Type: {0}\n" msgstr "扫描类型:{0}\n" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:222 msgid "Type: {}" msgstr "扫描类型:{}" #: eos/saveddata/damagePattern.py:49 msgid "Ultraviolet" msgstr "紫外" #: gui/mainMenuBar.py:83 msgid "Undo the most recent action" msgstr "撤销最近一次操作" #: eos/saveddata/damagePattern.py:38 msgid "Uniform" msgstr "均匀" #: eos/saveddata/targetProfile.py:42 msgid "Uniform (25%)" msgstr "均匀(25%)" #: eos/saveddata/targetProfile.py:43 msgid "Uniform (50%)" msgstr "均匀(50%)" #: eos/saveddata/targetProfile.py:44 msgid "Uniform (75%)" msgstr "均匀(75%)" #: eos/saveddata/targetProfile.py:45 msgid "Uniform (90%)" msgstr "均匀(90%)" #: gui/characterEditor.py:614 msgid "Unlearn" msgstr "未学习" #: gui/updateDialog.py:54 msgid "Update Available" msgstr "有更新可用" #: gui/builtinPreferenceViews/pyfaUpdatePreferences.py:14 msgid "Updates" msgstr "更新" #: eos/saveddata/damagePattern.py:69 msgid "Uranium" msgstr "钼质" #: gui/builtinAdditionPanes/implantView.py:68 msgid "Use Character Implants" msgstr "使用角色植入体组" #: gui/builtinAdditionPanes/implantView.py:67 msgid "Use Fit-specific Implants" msgstr "使用装配指定的植入体组" #: graphs/data/fitCapacitor/graph.py:48 msgid "Use capacitor simulator" msgstr "使用电容模拟器" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:102 msgid "Use character implants by default for new fits" msgstr "新装配默认使用角色植入体组" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:98 msgid "Use global character" msgstr "使用全局角色" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:106 msgid "Use global damage pattern" msgstr "使用全局伤害分布配置" #: gui/builtinPreferenceViews/pyfaNetworkPreferences.py:121 msgid "Username:" msgstr "用户名:" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:34 msgid "Using Executable Path for Saved Fit Database and Settings" msgstr "使用Pyfa可执行文件路径来保存装配数据库和偏好设置" #: gui/builtinContextMenus/itemVariationChange.py:49 #: gui/builtinPreferenceViews/pyfaContextMenuPreferences.py:51 msgid "Variations" msgstr "变种" #: eos/saveddata/damagePattern.py:119 eos/saveddata/targetProfile.py:89 msgid "Vengeance" msgstr "复仇级" #: gui/builtinItemStatsViews/itemAttributes.py:53 msgid "View Raw Data" msgstr "显示原始数据" #: graphs/data/fitDamageStats/graph.py:84 msgid "Volley" msgstr "齐射伤害" #: gui/builtinContextMenus/fitSystemSecurity.py:22 msgid "W-Space" msgstr "虫洞" #: gui/ssoLogin.py:62 msgid "Waiting for character login through EVE Single Sign-On." msgstr "正在等待角色通过EvE登录。" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:210 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:212 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:243 #: gui/builtinStatsViews/targetingMiscViewMinimal.py:245 #, python-format msgid "Warp Core Strength: %.1f" msgstr "跃迁核心强度:%.1f" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:89 msgid "Warp Speed" msgstr "曲速航速" #: graphs/data/fitWarpTime/graph.py:45 msgid "Warp Time" msgstr "曲速时长" #: graphs/data/fitWarpTime/graph.py:49 msgid "Warp time" msgstr "曲速时长" #: gui/builtinStatsViews/firepowerViewFull.py:67 msgid "Weapon" msgstr "武器" #: graphs/data/fitEwarStats/graph.py:37 msgid "Webs: speed reduction" msgstr "网子:速度减缓百分比" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:61 msgid "When damage profile is Uniform, set Reactive Armor Hardener to match (old behavior)." msgstr "当伤害分布为均匀模式时,重置反应式装甲增强器(旧模式)。" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:149 msgid "When disabled, reloads charges just in selected modules. Action can be reversed by holding Ctrl or Alt key while changing charge." msgstr "关闭该选项时,更换弹药仅更换选中的模块。按住Ctrl或Alt以更换所有同类型武器弹药。" #: gui/builtinPreferenceViews/pyfaEnginePreferences.py:54 msgid "When enabled, skills will check their dependencies' requirements when their levels change and reset skills that no longer meet the requirement.\n" "eg: Setting Drones from level V to IV will reset the Heavy Drone Operation skill, as that requires Drones V" msgstr "启用时,技能级别变化时将检查并移除未达等级要求的相关技能。\n" "例如:将无人机从5级设置为4级将移除重型无人机操作技能,因为该技能要求无人机5级" #: graphs/data/fitDamageStats/graph.py:69 msgid "When set, uses attacker's exact damage stats at a given time\n" "When not set, uses attacker's damage stats as shown in stats panel of main window" msgstr "设置后,使用攻击者特定时间的特定伤害属性\n" "未设置时,使用主窗口属性面板中攻击者伤害属性" #: graphs/data/fitRemoteReps/graph.py:57 msgid "When set, uses repairing ship's exact RR stats at a given time\n" "When not set, uses repairing ship's RR stats as shown in stats panel of main window" msgstr "设置后,使用后勤船特定时间的特定遥修属性\n" "未设置时,使用主窗口属性面板中后勤船的遥修属性" #: eos/saveddata/damagePattern.py:115 eos/saveddata/targetProfile.py:85 msgid "Worm (Guristas)" msgstr "潜龙级(古斯塔斯)" #: gui/builtinContextMenus/envEffectAdd.py:116 msgid "Wormhole" msgstr "虫洞" #: eos/saveddata/damagePattern.py:50 msgid "Xray" msgstr "X射线" #: graphs/style.py:59 msgid "Yellow" msgstr "黄色" #: gui/builtinItemStatsViews/itemEffects.py:56 msgid "Yes" msgstr "是" #: gui/characterEditor.py:757 msgid "You cannot link All 0 or All 5 characters to an EVE character." msgstr "你不能关联全0级或全5级到一个EvE角色。" #: gui/characterEditor.py:76 msgid "You must supply a name for the Character!" msgstr "您必须填写一个角色名!" #: gui/setEditor.py:48 msgid "You must supply a name for the Implant Set!" msgstr "您必须填写一个植入体配置名!" #: gui/patternEditor.py:51 msgid "You must supply a name for your Damage Profile!" msgstr "您必须填写一个伤害模型名!" #: gui/targetProfileEditor.py:71 msgid "You must supply a name for your Target Profile!" msgstr "您必须填写一个目标属性名!" #: eos/saveddata/damagePattern.py:43 msgid "[T2] Aurora" msgstr "[T2] 极光" #: eos/saveddata/damagePattern.py:75 msgid "[T2] Barrage" msgstr "[T2] 雷暴" #: eos/saveddata/damagePattern.py:54 msgid "[T2] Conflagration" msgstr "[T2] 爆燃" #: eos/saveddata/damagePattern.py:53 msgid "[T2] Gleam" msgstr "[T2] 微光" #: eos/saveddata/damagePattern.py:85 msgid "[T2] Hail" msgstr "[T2] 冰雹" #: eos/saveddata/damagePattern.py:72 msgid "[T2] Javelin" msgstr "[T2] 标枪" #: eos/saveddata/damagePattern.py:57 msgid "[T2] Mystic" msgstr "[T2] 奥秘" #: eos/saveddata/damagePattern.py:63 msgid "[T2] Null" msgstr "[T2] 虚空" #: eos/saveddata/damagePattern.py:61 msgid "[T2] Occult" msgstr "[T2] 神秘" #: eos/saveddata/damagePattern.py:84 msgid "[T2] Quake" msgstr "[T2] 地震" #: eos/saveddata/damagePattern.py:44 msgid "[T2] Scorch" msgstr "[T2] 灼烧" #: eos/saveddata/damagePattern.py:62 msgid "[T2] Spike" msgstr "[T2] 钉刺" #: eos/saveddata/damagePattern.py:74 msgid "[T2] Tremor" msgstr "[T2] 战栗" #: eos/saveddata/damagePattern.py:73 msgid "[T2] Void" msgstr "[T2] 涅槃" #: eos/utils/stats.py:123 msgid "em" msgstr "电磁" #: eos/utils/stats.py:123 msgid "exp" msgstr "爆炸" #: eos/utils/stats.py:123 msgid "explosive" msgstr "爆炸" #: eos/utils/stats.py:123 msgid "kin" msgstr "动能" #: eos/utils/stats.py:123 msgid "kinetic" msgstr "动能" #: gui/builtinPreferenceViews/pyfaDatabasePreferences.py:38 msgid "pyfa User Path:" msgstr "pyfa用户数据路径:" #: gui/errorDialog.py:69 msgid "pyfa error" msgstr "Pyfa错误" #: gui/errorDialog.py:76 msgid "pyfa has experienced an unexpected issue. Below is a message that contains crucial \n" "information about how this was triggered. Please contact the developers with the \n" "information provided through the EVE Online forums or file a GitHub issue." msgstr "Pyfa遇到了未知问题。下方文本框显示了该问题如何发生的关键信息。\n" "请通过EvE论坛或GitHub issue联系开发者,并提供下方文本框中的信息。" #: gui/aboutData.py:31 msgid "pyfa is released under GNU GPLv3 - see included LICENSE file" msgstr "pyfa基于GNU通用公共许可证第三版(GPLv3)发布 - 详见应用目录下的LICENSE文件" #: gui/propertyEditor.py:108 msgid "pyfa override file" msgstr "Pyfa属性自定义文件" #: gui/propertyEditor.py:131 msgid "pyfa overrides" msgstr "Pyfa属性自定义文件" #: gui/builtinPreferenceViews/pyfaEsiPreferences.py:46 msgid "pyfa.io" msgstr "pyfa.io" #: gui/builtinPreferenceViews/pyfaGeneralPreferences.py:47 msgid "pyfa:" msgstr "pyfa:" #: eos/utils/stats.py:123 msgid "th" msgstr "热能" #: eos/utils/stats.py:123 msgid "thermal" msgstr "热能" #: gui/builtinContextMenus/itemMarketJump.py:44 #, python-brace-format msgid "{0} Market Group" msgstr "{0}市场分类" #: gui/itemStats.py:87 #, python-brace-format msgid "{context}Stats: {name}{debug_info}" msgstr "{context}属性:{name}{debug_info}" #: gui/pyfa_gauge.py:347 #, python-brace-format msgid "{{0:.{0}f}} left" msgstr "剩余{{0:.{0}f}}" #: gui/pyfa_gauge.py:344 #, python-brace-format msgid "{{0:.{0}f}} over" msgstr "超出{{0:.{0}f}}" #: gui/builtinContextMenus/moduleSpool.py:83 msgid "{} (default)" msgstr "{}(默认值)" #: gui/characterEditor.py:284 msgid "{} Copy" msgstr "复制{}" #: gui/builtinContextMenus/itemStats.py:38 msgid "{} Stats" msgstr "{}属性" #: gui/builtinViewColumns/baseName.py:104 msgid "{} {} Slot" msgid_plural "{} {} Slots" msgstr[0] "{} {} 槽" #: gui/builtinStatsViews/targetingMiscViewMinimal.py:220 #, no-python-format, python-brace-format msgid "{}% chance to be jammed" msgstr "{}%概率丢失目标" ================================================ FILE: locale_test/getTextLocale.py ================================================ import gettext gettext.install('lang', './locale') gettext.translation('lang', './locale', languages=['zh_CH']).install(True) print(_("Sample Title Text English")) ================================================ FILE: pyfa.py ================================================ #!/usr/bin/env python3 # ============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================== import datetime import os import sys from optparse import AmbiguousOptionError, BadOptionError, OptionParser import config from service.prereqsCheck import PreCheckException, PreCheckMessage, version_block, version_precheck from db_update import db_needs_update, update_db # ascii_text = ''' # ++++++++++++++++++++++++++++++++++++++++++++++++++ # # / _| # _ __ _ _ | | # | '_ \ | | | || _|/ _` | # | |_) || |_| || | | (_| | # | .__/ \__, ||_| \__,_| # | | __/ | # |_| |___/ # # You are running a alpha/beta version of pyfa. # # ++++++++++++++++++++++++++++++++++++++++++++++++++ # ''' # # print(ascii_text) class PassThroughOptionParser(OptionParser): """ An unknown option pass-through implementation of OptionParser. OSX passes -psn_0_* argument, which is something that pyfa does not handle. See GH issue #423 """ def _process_args(self, largs, rargs, values): while rargs: try: OptionParser._process_args(self, largs, rargs, values) except (BadOptionError, AmbiguousOptionError) as e: # pyfalog.error("Bad startup option passed.") largs.append(e.opt_str) # Parse command line options usage = "usage: %prog [--root]" parser = PassThroughOptionParser(usage=usage) parser.add_option("-r", "--root", action="store_true", dest="rootsavedata", help="if you want pyfa to store its data in root folder, use this option", default=False) parser.add_option("-d", "--debug", action="store_true", dest="debug", help="Set logger to debug level.", default=False) parser.add_option("-t", "--title", action="store", dest="title", help="Set Window Title", default=None) parser.add_option("-s", "--savepath", action="store", dest="savepath", help="Set the folder for savedata", default=None) parser.add_option("-l", "--logginglevel", action="store", dest="logginglevel", help="Set desired logging level [Critical|Error|Warning|Info|Debug]", default="Error") parser.add_option("-p", "--profile", action="store", dest="profile_path", help="Set location to save profileing.", default=None) parser.add_option("-i", "--language", action="store", dest="language", help="Sets the language for pyfa. Overrides user's saved settings. Format: xx_YY (eg: en_US). If translation doesn't exist, defaults to en_US", default=None) (options, args) = parser.parse_args() if __name__ == "__main__": try: # first and foremost - check required libraries version_precheck() except PreCheckException as ex: # do not pass GO, go directly to jail (and then die =/) PreCheckMessage(str(ex)) sys.exit() # from here, we can assume we have the libraries that we need, including wx import wx from logbook import Logger pyfalog = Logger(__name__) from gui.errorDialog import ErrorHandler # Replace the uncaught exception handler with our own handler. sys.excepthook = ErrorHandler.HandleException if options.rootsavedata is True: config.saveInRoot = True config.debug = options.debug config.loggingLevel = config.LOGLEVEL_MAP.get(options.logginglevel.lower(), config.LOGLEVEL_MAP['error']) config.language = options.language config.defPaths(options.savepath) config.defLogging() with config.logging_setup.threadbound(): pyfalog.info("Starting Pyfa") pyfalog.info(version_block) pyfalog.info("Writing log file to: {0}", config.logPath) if hasattr(sys, 'frozen'): pyfalog.info("Running in a frozen state.") else: pyfalog.info("Running in a thawed state.") if db_needs_update() is True: update_db() # Lets get to the good stuff, shall we? import eos.db import eos.events # todo: move this to eos initialization? # noinspection PyUnresolvedReferences import service.prefetch # noqa: F401 # Make sure the saveddata db exists if not os.path.exists(config.savePath): os.mkdir(config.savePath) eos.db.saveddata_meta.create_all() from gui.app import PyfaApp # set title if it wasn't supplied by argument if options.title is None: options.title = "pyfa %s - Python Fitting Assistant" % (config.getVersion()) pyfa = PyfaApp(False) from gui.mainFrame import MainFrame mf = MainFrame(options.title) ErrorHandler.SetParent(mf) # Start ESI token validation, this helps avoid token expiry try: from service.esi import Esi esi = Esi.getInstance() esi.startTokenValidation() pyfalog.info("ESI token validation started") except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warning(f"failed to start ESI token validation thread:\n{e}") if options.profile_path: profile_path = os.path.join(options.profile_path, 'pyfa-{}.profile'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'))) pyfalog.debug("Starting pyfa with a profiler, saving to {}".format(profile_path)) import cProfile cProfile.run('pyfa.MainLoop()', profile_path) else: pyfa.MainLoop() # When main loop is over, threads have 5 seconds to comply... import threading from utils.timer import CountdownTimer timer = CountdownTimer(1) stoppableThreads = [] for t in threading.enumerate(): if t is not threading.main_thread() and hasattr(t, 'stop'): stoppableThreads.append(t) t.stop() for t in stoppableThreads: t.join(timeout=timer.remainder()) # Nah, just kidding, no way to terminate threads - just try to exit sys.exit() ================================================ FILE: pyfa.spec ================================================ # -*- mode: python -*- import os from itertools import chain import subprocess import requests.certs import platform os_name = platform.system() block_cipher = None added_files = [ ('imgs/gui/*.png', 'imgs/gui'), ('imgs/gui/*.gif', 'imgs/gui'), ('imgs/icons/*.png', 'imgs/icons'), ('imgs/renders/*.png', 'imgs/renders'), ('service/jargon/*.yaml', 'service/jargon'), ('locale', 'locale'), (requests.certs.where(), '.'), # is this needed anymore? ('eve.db', '.'), ('README.md', '.'), ('LICENSE', '.'), ('version.yml', '.'), ] icon = None pathex = [] upx = True debug = False if os_name == 'Windows': added_files.extend([ ('dist_assets/win/pyfa.ico', '.'), ('dist_assets/win/pyfa.exe.manifest', '.'), ]) icon = 'dist_assets/win/pyfa.ico' pathex.extend([ # Need this, see https://github.com/pyinstaller/pyinstaller/issues/1566 # To get this, download and install windows 10 SDK # If not building on Windows 10, this might be optional r'C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86' ]) if os_name == 'Darwin': added_files.extend([ ('dist_assets/win/pyfa.ico', '.'), # osx only ]) icon = 'dist_assets/mac/pyfa.icns' import_these = [ 'numpy.core._dtype_ctypes', # https://github.com/pyinstaller/pyinstaller/issues/3982 'sqlalchemy.ext.baked', # windows build doesn't launch without if when using sqlalchemy 1.3.x 'pkg_resources.py2_warn' # issue 2156 ] # Walk directories that do dynamic importing paths = ('eos/db/migrations', 'service/conversions') for root, folders, files in chain.from_iterable(os.walk(path) for path in paths): for file_ in files: if file_.endswith(".py") and not file_.startswith("_"): mod_name = "{}.{}".format( root.replace("/", "."), file_.split(".py")[0], ) import_these.append(mod_name) a = Analysis(['pyfa.py'], pathex= pathex, binaries=[], datas=added_files, hiddenimports=import_these, hookspath=['dist_assets/pyinstaller_hooks'], runtime_hooks=[], excludes=['Tkinter'], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, exclude_binaries=True, name='pyfa', debug=debug, strip=False, upx=upx, icon= icon, # version='win-version-info.txt', console=False, contents_directory='app', ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=upx, name='pyfa', ) if platform.system() == 'Darwin': info_plist = { 'NSHighResolutionCapable': 'True', 'NSPrincipalClass': 'NSApplication', 'CFBundleName': 'pyfa', 'CFBundleDisplayName': 'pyfa', 'CFBundleIdentifier': 'org.pyfaorg.pyfa', 'CFBundleVersion': '1.2.3', 'CFBundleShortVersionString': '1.2.3', } app = BUNDLE(exe, name='pyfa.app', icon=icon, bundle_identifier=None, info_plist=info_plist ) ================================================ FILE: requirements.txt ================================================ wxPython==4.2.1 logbook==1.7.0.post0 numpy==1.26.2 matplotlib==3.8.2 python-dateutil==2.8.2 requests==2.31.0 sqlalchemy==1.4.50 cryptography==42.0.4 markdown2==2.4.11 packaging==23.2 roman==4.1 beautifulsoup4==4.12.2 pyyaml==6.0.1 python-jose==3.3.0 requests-cache==1.1.1 ================================================ FILE: scripts/__init__.py ================================================ ================================================ FILE: scripts/compile_data.py ================================================ #!/usr/bin/env python """ This script bootstraps Phobos from a supplied path and feeds it information regarding EVE data paths and where to dump data. It then imports some other scripts and uses them to convert the json data into a SQLite database and then compare the new database to the existing one, producing a diff which can then be used to assist in the updating. """ import sys import os import argparse parser = argparse.ArgumentParser() parser.add_argument("-d", "--dump", dest="dump_path", help="Location of Phobos JSON dump directory", required=True) args = parser.parse_args() dump_path = os.path.expanduser(args.dump_path) script_path = os.path.dirname(__file__) def header(text, subtext=None): print() print("* "*30) print(text.center(60)) if subtext: print(subtext.center(60)) print("* "*30) print() ### SQL Convert import jsonToSql db_file = os.path.join(dump_path, "eve.db") header("Converting Data to SQL", db_file) if os.path.isfile(db_file): os.remove(db_file) jsonToSql.main("sqlite:///" + db_file, dump_path) ### Diff generation import itemDiff diff_file = os.path.join(dump_path, "diff.txt") old_db = os.path.join(script_path, "..", "eve.db") header("Generating DIFF", diff_file) old_stdout = sys.stdout sys.stdout = open(diff_file, 'w') itemDiff.main(old=old_db, new=db_file) sys.stdout = old_stdout header("Commiting changes for ", diff_file) from subprocess import call os.chdir(dump_path) call(["git.exe", "add", "."]) call(["git.exe", "commit", "-m", "Commit"]) print("\nAll done.") ================================================ FILE: scripts/compile_lang.py ================================================ import os, glob import msgfmt import sys script_dir = os.path.dirname(os.path.abspath(__file__)) locale_path = os.path.abspath(os.path.join(script_dir, '..', 'locale')) for name in glob.iglob(locale_path + '/**'): if not os.path.isfile(name): path = os.path.join(locale_path, name, 'LC_MESSAGES', 'lang') sys.argv[1:] = [path + '.po'] msgfmt.reset() msgfmt.main() ================================================ FILE: scripts/conversion.py ================================================ # Developed for module tiericide, this script will quickly print out a market # conversion map based on patch notes, as well as database conversion mapping. import argparse import os.path import sqlite3 import sys # Add eos root path to sys.path so we can import ourselves path = os.path.dirname(__file__) sys.path.append(os.path.realpath(os.path.join(path, ".."))) # change to correct conversion rename_phrase = " renamed to " conversion_phrase = " -> " text = """ Veldspar Mining Crystal I -> Simple Asteroid Mining Crystal Type A I Scordite Mining Crystal I -> Simple Asteroid Mining Crystal Type A I Pyroxeres Mining Crystal I -> Simple Asteroid Mining Crystal Type A I Plagioclase Mining Crystal I -> Simple Asteroid Mining Crystal Type A I Veldspar Mining Crystal II -> Simple Asteroid Mining Crystal Type A II Scordite Mining Crystal II -> Simple Asteroid Mining Crystal Type A II Pyroxeres Mining Crystal II -> Simple Asteroid Mining Crystal Type A II Plagioclase Mining Crystal II -> Simple Asteroid Mining Crystal Type A II Omber Mining Crystal I -> Coherent Asteroid Mining Crystal Type A I Kernite Mining Crystal I -> Coherent Asteroid Mining Crystal Type A I Jaspet Mining Crystal I -> Coherent Asteroid Mining Crystal Type A I Hemorphite Mining Crystal I -> Coherent Asteroid Mining Crystal Type A I Hedbergite Mining Crystal I -> Coherent Asteroid Mining Crystal Type A I Omber Mining Crystal II -> Coherent Asteroid Mining Crystal Type A II Jaspet Mining Crystal II -> Coherent Asteroid Mining Crystal Type A II Kernite Mining Crystal II -> Coherent Asteroid Mining Crystal Type A II Hedbergite Mining Crystal II -> Coherent Asteroid Mining Crystal Type A II Hemorphite Mining Crystal II -> Coherent Asteroid Mining Crystal Type A II Gneiss Mining Crystal I -> Variegated Asteroid Mining Crystal Type A I Dark Ochre Mining Crystal I -> Variegated Asteroid Mining Crystal Type A I Crokite Mining Crystal I -> Variegated Asteroid Mining Crystal Type A I Gneiss Mining Crystal II -> Variegated Asteroid Mining Crystal Type A II Dark Ochre Mining Crystal II -> Variegated Asteroid Mining Crystal Type A II Crokite Mining Crystal II -> Variegated Asteroid Mining Crystal Type A II Bistot Mining Crystal I -> Complex Asteroid Mining Crystal Type A I Arkonor Mining Crystal I -> Complex Asteroid Mining Crystal Type A I Spodumain Mining Crystal I -> Complex Asteroid Mining Crystal Type A I Bistot Mining Crystal II -> Complex Asteroid Mining Crystal Type A II Arkonor Mining Crystal II -> Complex Asteroid Mining Crystal Type A II Spodumain Mining Crystal II -> Complex Asteroid Mining Crystal Type A II """ def main(old, new): # Open both databases and get their cursors old_db = sqlite3.connect(os.path.expanduser(old)) old_cursor = old_db.cursor() new_db = sqlite3.connect(os.path.expanduser(new)) new_cursor = new_db.cursor() renames = {} conversions = {} for x in text.splitlines(): x = x.strip() if not x: continue if conversion_phrase in x: c = x.split(conversion_phrase) container = conversions elif rename_phrase in x: c = x.split(rename_phrase) container = renames else: print("Unknown format: {}".format(x)) sys.exit() old_name, new_name = c[0], c[1] old_item, new_item = None, None if "Blueprint" in old_name or "Blueprint" in new_name: print("Blueprint: Skipping this line: %s"%x) continue # gather item info new_cursor.execute('SELECT "typeID" FROM "invtypes" WHERE "typeName" = ?', (new_name,)) for row in new_cursor: new_item = row[0] break old_cursor.execute('SELECT "typeID" FROM "invtypes" WHERE "typeName" = ?', (old_name,)) for row in old_cursor: old_item = row[0] break if not old_item: print("Error finding old item in {} -> {}".format(old_name, new_name)) if not new_item: print("Error finding new item in {} -> {}".format(old_name, new_name)) if not container.get((new_item,new_name), None): container[(new_item,new_name)] = [] container[(new_item,new_name)].append((old_item, old_name)) print(" # Renamed items") for new, old in renames.items(): if len(old) != 1: print("Incorrect length, key: {}, value: {}".format(new, old)) sys.exit() old = old[0] print(" \"{}\": \"{}\",".format(old[1], new[1])) # Convert modules print("\n # Converted items") for new, olds in conversions.items(): for old in olds: print(" \"{}\": \"{}\",".format(old[1], new[1])) print() print() for new, old in conversions.items(): print(" {}: ( # {}".format(new[0], new[1])) for item in old: print(" {}, # {}".format(item[0], item[1])) print(" ),") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-o", "--old", type=str) parser.add_argument("-n", "--new", type=str) args = parser.parse_args() main(args.old, args.new) ================================================ FILE: scripts/dump_crowdin_progress.py ================================================ import requests import os import json import wx import sys key = os.environ.get("CROWDIN_API_KEY", None) if key is None or key == '': # if building from a forked PR, this is normal. Secret veariables are generally unavailable in those circumstances print("CROWDIN_API_KEY env variable not found, cannot fetch translation status.") sys.exit() params = { 'json': '', 'key': key } resp = requests.get('https://api.crowdin.com/api/project/pyfa/status', params=params) data = resp.json() if resp.status_code != 200: print("Error fetching Crowdin progress. Error: {}".format(data['error']['message'])) sys.exit() for x in data: x['code'] = x['code'].replace('-', '_') lang = wx.Locale.FindLanguageInfo(x['code']) if lang is None: print('Cannot find a match for '+x['code']) continue x['canonical_name'] = lang.CanonicalName data = {x['canonical_name']: x for x in data} with open("locale/progress.json", 'w') as file: file.seek(0) file.truncate() json.dump(data, file) ================================================ FILE: scripts/dump_data.py ================================================ #!/usr/bin/env python """ This script bootstraps Phobos from a supplied path and feeds it information regarding EVE data paths and where to dump data. It then imports some other scripts and uses them to convert the json data into a SQLite database and then compare the new database to the existing one, producing a diff which can then be used to assist in the updating. """ import sys import os import json import re import natsort from collections import OrderedDict from itertools import izip_longest try: major = sys.version_info.major minor = sys.version_info.minor except AttributeError: major = sys.version_info[0] minor = sys.version_info[1] if major != 2 or minor < 7: sys.stderr.write('This application requires Python 2.7 to run, but {0}.{1} was used\n'.format(major, minor)) sys.exit() import argparse import os.path parser = argparse.ArgumentParser(description='This script extracts data from EVE client and writes it into JSON files') parser.add_argument( '-e', '--eve', required=True, help='Path to EVE client\'s folder') parser.add_argument( '-p', '--phobos', required=True, help="Location of Phobos") parser.add_argument( '-s', '--server', default='tq', help='Server to pull data from. Default is "tq"', choices=('tq', 'sisi', 'duality', 'thunderdome', 'serenity')) parser.add_argument( '-j', '--json', required=True, help='Output folder for the JSON files') parser.add_argument( '-t', '--translate', default='multi', help='Attempt to translate strings into specified language. Default is "multi"', choices=('de', 'en-us', 'es', 'fr', 'it', 'ja', 'ru', 'zh', 'multi')) args = parser.parse_args() # Expand home directory path_eve = os.path.expanduser(args.eve) path_json = os.path.expanduser(args.json) sys.path.append(os.path.expanduser(args.phobos)) from flow import FlowManager from miner import * from writer import * from util import ResourceBrowser, Translator from writer.base import BaseWriter from writer.json_writer import CustomEncoder class PyfaJsonWriter(BaseWriter): """ Class, which stores fetched data on storage device as JSON files. """ def __init__(self, folder, indent=None, group=None): self.base_folder = folder self.indent = indent self.group = group @staticmethod def __grouper(iterable, n, fillvalue=None): args = [iter(iterable)] * n return izip_longest(fillvalue=fillvalue, *args) def write(self, miner_name, container_name, container_data): # Create folder structure to path, if not created yet folder = os.path.join(self.base_folder, self.__secure_name(miner_name)) if not os.path.exists(folder): os.makedirs(folder, mode=0o755) if type(container_data) == dict: container_data = OrderedDict(natsort.natsorted(container_data.items())) if self.group is None: filepath = os.path.join(folder, u'{}.json'.format(self.__secure_name(container_name))) self.__write_file(container_data, filepath) else: for i, group in enumerate(PyfaJsonWriter.__grouper(container_data, self.group)): filepath = os.path.join(folder, u'{}.{}.json'.format(self.__secure_name(container_name), i)) if type(container_data) in (dict, OrderedDict): data = dict((k, container_data[k]) for k in group if k is not None) else: data = [k for k in group if k is not None] self.__write_file(data, filepath) def __write_file(self, data, filepath): data_str = json.dumps( data, ensure_ascii=False, cls=CustomEncoder, indent=self.indent, # We're handling sorting in customized encoder sort_keys=False) data_bytes = data_str.encode('utf8') with open(filepath, 'wb') as f: f.write(data_bytes) def __secure_name(self, name): """ As we're writing to disk, we should get rid of all filesystem-specific symbols. """ # Prefer safe way - replace any characters besides # alphanumeric and few special characters with # underscore writer_safe_name = re.sub(r'[^\w\-.,() ]', '_', name, flags=re.UNICODE) return writer_safe_name path_eve=path_eve server_alias=args.server language=args.translate path_json=path_json resource_browser = ResourceBrowser(eve_path=path_eve, server_alias=server_alias) pickle_miner = PickleMiner(resbrowser=resource_browser) trans = Translator(pickle_miner=pickle_miner) fsdlite_miner = FsdLiteMiner(resbrowser=resource_browser, translator=trans) fsdbinary_miner = FsdBinaryMiner(resbrowser=resource_browser, translator=trans) miners = [ MetadataMiner(resbrowser=resource_browser), fsdlite_miner, fsdbinary_miner, TraitMiner(fsdlite_miner=fsdlite_miner, fsdbinary_miner=fsdbinary_miner, translator=trans), pickle_miner] writers = [ PyfaJsonWriter(path_json, indent=2, group=5000)] filters = 'dogmaattributes,dogmaeffects,dogmaunits,dynamicitemattributes,marketgroups,metagroups,' \ 'typedogma,requiredskillsfortypes,clonegrades,dbuffcollections,evecategories,evegroups,' \ 'evetypes,traits,metadata' FlowManager(miners, writers).run(filter_string=filters, language=language) ================================================ FILE: scripts/dump_version.py ================================================ """ This script is solely used when generating builds. It generates a version number automatically using git tags as it's basis. Whenever a build is created, run this file beforehand and it should replace the old version number with the new one in VERSION.YML """ import yaml import subprocess import os def rreplace(s, old, new, occurrence): li = s.rsplit(old, occurrence) return new.join(li) with open("version.yml", 'r+') as file: data = yaml.load(file, Loader=yaml.SafeLoader) file.seek(0) file.truncate() # todo: run Version() on the tag to ensure that it's of proper formatting - fail a test if not and prevent building # python's versioning spec doesn't handle the same format git describe outputs, so convert it. label = os.environ["PYFA_VERSION"].split('-') if "PYFA_VERSION" in os.environ else subprocess.check_output(["git", "describe", "--tags"]).strip().decode().split('-') label = '-'.join(label[:-2])+'+'+'-'.join(label[-2:]) if len(label) > 1 else label[0] label = rreplace(label, '+', '-', label.count('+') - 1) print(label) data['version'] = label yaml.dump(data, file, default_flow_style=False) ================================================ FILE: scripts/dynamicattributes.py ================================================ #!/usr/bin/env python2.7 """ This script will generate a dynamicItemAttributes.json file using res files """ import argparse import json import os from shutil import copyfile parser = argparse.ArgumentParser(description='This script updates module icons for pyfa') parser.add_argument('-e', '--eve', required=True, type=str, help='path to eve\'s ') parser.add_argument('-s', '--server', required=False, default='tq', type=str, help='which server to use (defaults to tq)') args = parser.parse_args() LOADER_FILE = 'app:/bin/dynamicItemAttributesLoader.pyd' RES_FILE = 'res:/staticdata/dynamicitemattributes.fsdbinary' binaryfile = os.path.split(RES_FILE)[1] eve_path = os.path.join(args.eve, 'index_{}.txt'.format(args.server)) with open(eve_path, 'r') as f: lines = f.readlines() file_index = {x.split(',')[0]: x.split(',') for x in lines} resfileindex = file_index['app:/resfileindex.txt'] res_cache = os.path.join(args.eve, 'ResFiles') with open(os.path.join(res_cache, resfileindex[1]), 'r') as f: lines = f.readlines() res_index = {x.split(',')[0].lower(): x.split(',') for x in lines} # Need to copy the file to our cuirrent directory attribute_loader_file = os.path.join(res_cache, file_index[LOADER_FILE][1]) to_path = os.path.dirname(os.path.abspath(__file__)) copyfile(attribute_loader_file, os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.split(LOADER_FILE)[1])) # The loader expect it to be the correct filename, so copy trhe file as well dynattribute_file = os.path.join(res_cache, res_index[RES_FILE.lower()][1]) to_path = os.path.dirname(os.path.abspath(__file__)) copyfile(dynattribute_file, os.path.join(os.path.dirname(os.path.abspath(__file__)), binaryfile)) import dynamicItemAttributesLoader attributes = dynamicItemAttributesLoader.load(os.path.join(to_path, binaryfile)) attributes_obj = {} # convert top level to dict attributes = dict(attributes) # This is such a brute force method. todo: recursively generate this by inspecting the objects for k, v in attributes.items(): attributes_obj[k] = { 'attributeIDs': dict(v.attributeIDs), 'inputOutputMapping': list(v.inputOutputMapping) } for i, x in enumerate(v.inputOutputMapping): attributes_obj[k]['inputOutputMapping'][i] = { 'resultingType': x.resultingType, 'applicableTypes': list(x.applicableTypes) } for k2, v2 in v.attributeIDs.items(): attributes_obj[k]['attributeIDs'][k2] = { 'min': v2.min, 'max': v2.max } with open('dynamicattributes.json', 'w') as outfile: json.dump(attributes_obj, outfile) ================================================ FILE: scripts/effectUsedBy.py ================================================ #!/usr/bin/env python3 #====================================================================== # Copyright (C) 2010 Anton Vorobyov # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation, either version 3 of # the License, or (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with eos. If not, see . #====================================================================== """ Go through all effects and fill them with 'used by' comments. There're several big stages: Stage 1. Gather all required data into 'global' dictionaries. We have 2 dictionaries per grouping type, one which lists groups per typeid, and another which lists typeIDs per group. Stage 2. Cycle through each effect. Stage 2.1. Compose similar set of dictionaries like in stage 1, but this time we take into consideration typeIDs affected by effect picked in stage 2. Stage 2.2. Create several lists (1 per grouping type) which will keep IDs of these groups which will describe set of the typeIDs, and start iterating. Each iteration one ID will be appended to any of the lists. Stage 2.2.1. Compose score dictionaries per grouping type, and calculate total score for given grouping type. Stage 2.2.2. Pick grouping type with highest score, find winner group inside grouping type, append its ID to corresponding list created in stage 2.2. If score is less than certain value, stop iterating. If some items are not covered by set of winners from lists, they'll be presented as single items. Stage 2.3. Print results to file if anything has been changed. Grouping types used are: Groups (groupID of an item); Categories (categoryID of groupID of an item); Base types (variations, like they appear on eve's variation tab); Market groups + variations (marketGroupID of an item, plus variations of all items from given market group, excluding items with marketGroupID). Type names (various combinations of words taken from typeName of item). """ import copy import itertools import os.path import re import sqlite3 from optparse import OptionParser script_dir = os.path.dirname(__file__) # Form list of effects for processing effects_path = os.path.join(script_dir, "..", "eos", "effects.py") usage = "usage: %prog --database=DB [--debug=DEBUG]" parser = OptionParser(usage=usage) parser.add_option("-d", "--database", help="path to eve cache data dump in \ sqlite format, default to eve database file included in pyfa (../eve.db)", type="string", default=os.path.join(script_dir, "..", "eve.db")) parser.add_option("-u", "--debug", help="debug level, 0 by default", type="int", default=0) (options, args) = parser.parse_args() # Show debugging prints? # 0 - Don't show debugging stuff and perform actual run # 1 - Show only for first iteration # 2 - Show for all iterations DEBUG_LEVEL = options.debug # Ways to control process: # Adjust grouping type weights (more number - better chance to pick # this grouping type) GROUP_WEIGHT = 1.0 CATEGORY_WEIGHT = 1.0 BASETYPE_WEIGHT = 1.0 MARKETGROUPWITHVARS_WEIGHT = 0.3 TYPENAMECOMBS_WEIGHT = 1.0 # If score drops below this value, remaining items will be listed # without any grouping LOWEST_SCORE = 0.7 # Adjust scoring formulae def calc_innerscore(affected_decribed, affected_undescribed, total, pereffect_totalaffected, weight=1.0): """Inner score calculation formula""" # Percentage of items affected by effect out of total number of # items in this group coverage_total = (affected_decribed + affected_undescribed) / total # Same, but only described/undescribed items are taken coverage_described = affected_decribed / total coverage_undescribed = affected_undescribed / total # Already described items should have less weight coverage_additionalfactor = coverage_undescribed + coverage_described * 0 # If group has just one item - it should have zero score affected_total_factor = affected_decribed + affected_undescribed - 1 innerscore = (coverage_total ** 0.23) * coverage_additionalfactor * \ affected_total_factor * weight return innerscore def calc_outerscore(innerscore_dict, pereffect_totalaffected, weight): """Outer score calculation formula""" # Return just max of the inner scores, including weight factor if float(len(innerscore_dict)): outerscore = innerscore_dict[max(innerscore_dict, key=lambda a: innerscore_dict.get(a))] * weight return outerscore else: return 0.0 def validate_string(s): try: s.encode('ascii') except (KeyboardInterrupt, SystemExit): raise except Exception: return False else: return True # Connect to database and set up cursor db = sqlite3.connect(os.path.expanduser(options.database)) cursor = db.cursor() # Force some of the items to make them published FORCEPUB_TYPES = ("Ibis", "Impairor", "Velator", "Reaper") OVERRIDES_TYPEPUB = 'UPDATE invtypes SET published = 1 WHERE typeName = ?' for typename in FORCEPUB_TYPES: cursor.execute(OVERRIDES_TYPEPUB, (typename,)) # Publish t3 Dessy Modes cursor.execute("UPDATE invtypes SET published = 1 WHERE groupID = ?", (1306,)) # Queries to get raw data QUERY_ALLEFFECTS = 'SELECT effectID, effectName FROM dgmeffects' # Limit categories to Ships (6), Modules (7), Charges (8), Skills (16), # Drones (18), Implants (20), Subsystems (32), and groups to # Effect Beacons (920) # edit - remove the restrictions here - it's a wide open selection of all typeid's # didn't want to muck too much with the code, but wanted to get most of the new stuff # updated correctly - @blitzmann QUERY_PUBLISHEDTYPEIDS = 'SELECT it.typeID FROM invtypes AS it INNER JOIN \ invgroups AS ig ON it.groupID = ig.groupID INNER JOIN invcategories AS ic ON \ ig.categoryID = ic.categoryID' QUERY_TYPEID_GROUPID = 'SELECT groupID FROM invtypes WHERE typeID = ? LIMIT 1' QUERY_GROUPID_CATEGORYID = 'SELECT categoryID FROM invgroups WHERE \ groupID = ? LIMIT 1' QUERY_TYPEID_PARENTTYPEID = 'SELECT variationParentTypeID FROM invtypes WHERE \ typeID = ? LIMIT 1' QUERY_TYPEID_MARKETGROUPID = 'SELECT marketGroupID FROM invtypes WHERE \ typeID = ? LIMIT 1' QUERY_TYPEID_TYPENAME = 'SELECT typeName FROM invtypes WHERE typeID = ? \ LIMIT 1' QUERY_MARKETGROUPID_PARENTGROUPID = 'SELECT parentGroupID FROM \ invmarketgroups WHERE marketGroupID = ? LIMIT 1' QUERY_EFFECTID_TYPEID = 'SELECT typeID FROM dgmtypeeffects WHERE effectID = ?' # Queries for printing QUERY_GROUPID_GROUPNAME = 'SELECT name FROM invgroups WHERE groupID = ? \ LIMIT 1' QUERY_CATEGORYID_CATEGORYNAME = 'SELECT name FROM invcategories \ WHERE categoryID = ? LIMIT 1' QUERY_MARKETGROUPID_MARKETGROUPNAME = 'SELECT marketGroupName FROM \ invmarketgroups WHERE marketGroupID = ? LIMIT 1' # Compose list of effects w/o symbols which eos doesn't take into # consideration, we'll use it to find proper effect IDs from file # names globalmap_effectid_effectnamedb = {} cursor.execute(QUERY_ALLEFFECTS) for row in cursor: effectid = row[0] effectnamedb = row[1] globalmap_effectid_effectnamedb[effectid] = effectnamedb # Stage 1 # Published types set publishedtypes = set() cursor.execute(QUERY_PUBLISHEDTYPEIDS) for row in cursor: publishedtypes.add(row[0]) # Compose group maps # { groupid : set(typeid) } globalmap_groupid_typeid = {} # { typeid : groupid } globalmap_typeid_groupid = {} for typeid in publishedtypes: groupid = 0 cursor.execute(QUERY_TYPEID_GROUPID, (typeid,)) for row in cursor: groupid = row[0] if not groupid in globalmap_groupid_typeid: globalmap_groupid_typeid[groupid] = set() globalmap_groupid_typeid[groupid].add(typeid) globalmap_typeid_groupid[typeid] = groupid # Category maps # { categoryid : set(typeid) } globalmap_categoryid_typeid = {} # { typeid : categoryid } globalmap_typeid_categoryid = {} for typeid in publishedtypes: categoryid = 0 cursor.execute(QUERY_GROUPID_CATEGORYID, (globalmap_typeid_groupid[typeid],)) for row in cursor: categoryid = row[0] if not categoryid in globalmap_categoryid_typeid: globalmap_categoryid_typeid[categoryid] = set() globalmap_categoryid_typeid[categoryid].add(typeid) globalmap_typeid_categoryid[typeid] = categoryid # Base type maps # { basetypeid : set(typeid) } globalmap_basetypeid_typeid = {} # { typeid : basetypeid } globalmap_typeid_basetypeid = {} for typeid in publishedtypes: # Not all typeIDs in the database have baseTypeID, so assign some # default value to it basetypeid = 0 cursor.execute(QUERY_TYPEID_PARENTTYPEID, (typeid,)) for row in cursor: basetypeid = row[0] # If base type is not published or is not set in database, consider # item as variation of self if basetypeid not in publishedtypes: basetypeid = typeid if not basetypeid in globalmap_basetypeid_typeid: globalmap_basetypeid_typeid[basetypeid] = set() globalmap_basetypeid_typeid[basetypeid].add(typeid) globalmap_typeid_basetypeid[typeid] = basetypeid # Market group maps - we won't use these for further processing, but # just as helper for composing other maps # { marketgroupid : set(typeid) } globalmap_marketgroupid_typeid = {} # { typeid : set(marketgroupid) } globalmap_typeid_marketgroupid = {} for typeid in publishedtypes: marketgroupid = 0 cursor.execute(QUERY_TYPEID_MARKETGROUPID, (typeid,)) for row in cursor: marketgroupid = row[0] if not marketgroupid: continue if not marketgroupid in globalmap_marketgroupid_typeid: globalmap_marketgroupid_typeid[marketgroupid] = set() globalmap_marketgroupid_typeid[marketgroupid].add(typeid) # Copy items to all parent market groups INITIALMARKETGROUPIDS = tuple(globalmap_marketgroupid_typeid) for marketgroupid in INITIALMARKETGROUPIDS: # Limit depths for case if database will refer to groups making # the loop cyclingmarketgroupid = marketgroupid for depth in range(20): cursor_parentmarket = db.cursor() cursor_parentmarket.execute(QUERY_MARKETGROUPID_PARENTGROUPID, (cyclingmarketgroupid,)) for row in cursor_parentmarket: cyclingmarketgroupid = row[0] if cyclingmarketgroupid: if not cyclingmarketgroupid in globalmap_marketgroupid_typeid: globalmap_marketgroupid_typeid[cyclingmarketgroupid] = set() globalmap_marketgroupid_typeid[cyclingmarketgroupid].update\ (globalmap_marketgroupid_typeid[marketgroupid]) else: break # Now, make a reverse map for marketgroupid, typeidset in list(globalmap_marketgroupid_typeid.items()): for typeid in typeidset: if not typeid in globalmap_typeid_marketgroupid: globalmap_typeid_marketgroupid[typeid] = set() globalmap_typeid_marketgroupid[typeid].add(marketgroupid) # Combine market groups and variations # { marketgroupid : set(typeidwithvariations) } globalmap_marketgroupid_typeidwithvariations = \ copy.deepcopy(globalmap_marketgroupid_typeid) # { typeidwithvariations : set(marketgroupid) } globalmap_typeidwithvariations_marketgroupid = {} for marketgroupid in globalmap_marketgroupid_typeidwithvariations: typestoadd = set() for typeid in globalmap_marketgroupid_typeidwithvariations[marketgroupid]: if typeid in globalmap_basetypeid_typeid: for variationid in globalmap_basetypeid_typeid[typeid]: # Do not include items which have market group, even if # they're variation if not variationid in globalmap_typeid_marketgroupid: typestoadd.add(variationid) globalmap_marketgroupid_typeidwithvariations[marketgroupid].update\ (typestoadd) # Make reverse map using simple way too for marketgroupid, typeidwithvariationsset in \ list(globalmap_marketgroupid_typeidwithvariations.items()): for typeid in typeidwithvariationsset: if not typeid in globalmap_typeidwithvariations_marketgroupid: globalmap_typeidwithvariations_marketgroupid[typeid] = set() globalmap_typeidwithvariations_marketgroupid[typeid].add(marketgroupid) # Item names map # We need to include category ID to avoid combining items from different # categories (e.g. skills and modules) and length of original name to # assess word coverage of various type name combinations # { ((typenamecomb), categoryid) : set(typeid) } globalmap_typenamecombtuple_typeid = {} # { typeid : (set((typenamecomb)), len(typename)) } globalmap_typeid_typenamecombtuple = {} for typeid in publishedtypes: typename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (typeid,)) for row in cursor: typename = row[0] # Split strings into separate words typenamesplitted = [] # Start from the whole type name remainingstring = typename # We will pick word each iteration iterate = True while iterate: # This regexp helps to split into words with spaces and dashes # between them, for example: CX|-|1, Hardwiring| - |Inherent, # Zainou| |'Snapshot' separatingpattern_general = \ "((?P[^ -]+)(?P[ -]+)(?P([^ -].*)))" # This will help to split names like those used in implants, # for example: ZET||500, EE||8 separatingpattern_series = \ "((?P[A-Za-z]{2,4})(?P[0-9]{1,4}.*))" # Check remainingstring using both criteria matchobject_general = re.match(separatingpattern_general, remainingstring) matchobject_series = re.match(separatingpattern_series, remainingstring) # Now, we need to find which criterion satisfies us usegeneral = False useseries = False # If remaining string meets both criteria if matchobject_general and matchobject_series: # We check which occurs first and pick it shift_general = len(matchobject_general.group("left_part")) shift_series = len(matchobject_series.group("left_part")) if shift_general <= shift_series: usegeneral = True else: useseries = True # If only one criterion is met, just pick it elif matchobject_general: usegeneral = True elif matchobject_series: useseries = True # Now, actually split string into word, separator and remaining # string and append word to list of words of current typename if usegeneral: newword = matchobject_general.group("left_part") separator = matchobject_general.group("separator") remainingstring = matchobject_general.group("right_part") typenamesplitted.append(newword) elif useseries: newword = matchobject_series.group("left_part") separator = "" remainingstring = matchobject_series.group("right_part") typenamesplitted.append(newword) # If we didn't match any regexp, then we see last word - append # it too and stop iterating else: typenamesplitted.append(remainingstring) iterate = False # Iterate through number of words which will be used to compose # combinations for wordnumindex in range(len(typenamesplitted)): # Iterate through all possible combinations for typenamecomb in itertools.combinations(typenamesplitted, wordnumindex + 1): typenamecombtuple = (typenamecomb, globalmap_typeid_categoryid[typeid]) if not typenamecombtuple in globalmap_typenamecombtuple_typeid: globalmap_typenamecombtuple_typeid[typenamecombtuple] = set() globalmap_typenamecombtuple_typeid[typenamecombtuple].add(typeid) if not typeid in globalmap_typeid_typenamecombtuple: globalmap_typeid_typenamecombtuple[typeid] = \ (set(), len(typenamesplitted)) globalmap_typeid_typenamecombtuple[typeid][0].add(typenamecomb) # Stage 2 effectids_eos = set() with open(effects_path) as f: for line in f: m = re.match(r"class Effect(\d+)\(", line) if m: effectid = int(m.group(1)) effectids_eos.add(effectid) # Go through effect definitions for effectid in effectids_eos: # Stage 2.1 # Set of items which are affected by current effect pereffectlist_usedbytypes = set() if effectid not in globalmap_effectid_effectnamedb: print(f"Warning: effect {effectid} is defined in eos but not in database") continue effectnamedb = globalmap_effectid_effectnamedb[effectid] cursor.execute(QUERY_EFFECTID_TYPEID, (effectid,)) for row in cursor: typeid = row[0] if typeid in publishedtypes: pereffectlist_usedbytypes.add(typeid) # Number of items affected by current effect pereffect_totalaffected = len(pereffectlist_usedbytypes) # Compose per-group map of items which are affected by current # effect # { groupid : (set(typeid), describes) } effectmap_groupid_typeid = {} for typeid in pereffectlist_usedbytypes: groupid = globalmap_typeid_groupid[typeid] if not groupid in effectmap_groupid_typeid: effectmap_groupid_typeid[groupid] = [set(), False] effectmap_groupid_typeid[groupid][0].add(typeid) # Now, per-category map of items # { categoryid : (set(typeid), describes) } effectmap_categoryid_typeid = {} for typeid in pereffectlist_usedbytypes: categoryid = globalmap_typeid_categoryid[typeid] if not categoryid in effectmap_categoryid_typeid: effectmap_categoryid_typeid[categoryid] = [set(), False] effectmap_categoryid_typeid[categoryid][0].add(typeid) # Per-base type map of variations # { basetypeid : (set(typeid), describes) } effectmap_basetypeid_typeid = {} for typeid in pereffectlist_usedbytypes: basetypeid = globalmap_typeid_basetypeid[typeid] if not basetypeid in effectmap_basetypeid_typeid: effectmap_basetypeid_typeid[basetypeid] = [set(), False] effectmap_basetypeid_typeid[basetypeid][0].add(typeid) # Per-market group map with item variations # { marketgroupid : (set(typeidwithvariations), describes) } effectmap_marketgroupid_typeidwithvars = {} for typeid in pereffectlist_usedbytypes: if typeid in globalmap_typeid_marketgroupid: marketGroupIDs = globalmap_typeid_marketgroupid[typeid] else: marketGroupIDs = set() for marketgroupid in marketGroupIDs: if not marketgroupid in effectmap_marketgroupid_typeidwithvars: effectmap_marketgroupid_typeidwithvars[marketgroupid] = \ [set(), False] effectmap_marketgroupid_typeidwithvars[marketgroupid][0].add\ (typeid) # Per-type name combination map # { ((typenamecomb), categoryid) : (set(typeid), describes) } effectmap_typenamecombtuple_typeid = {} for typeid in pereffectlist_usedbytypes: typenamecombs = globalmap_typeid_typenamecombtuple[typeid][0] for typenamecomb in typenamecombs: typenamecombtuple = (typenamecomb, globalmap_typeid_categoryid[typeid]) if not typenamecombtuple in effectmap_typenamecombtuple_typeid: effectmap_typenamecombtuple_typeid[typenamecombtuple] = \ [set(), False] effectmap_typenamecombtuple_typeid[typenamecombtuple][0].add\ (typeid) stopdebugprints = False if DEBUG_LEVEL >= 1: print(("\nEffect:", effectnamedb)) print(("Total items affected: {0}".format(pereffect_totalaffected))) # Stage 2.2 # This set holds all ids of already described items effect_describedtypes = set() # These lists contain ids of each grouping type which are used # to describe items from the set above describedbygroup = [] describedbycategory = [] describedbybasetype = [] describedbymarketgroupwithvars = [] describedbytypenamecomb = [] # Each iteration some group is picked which will be used # to describe set of items iterate = True while iterate: # Stage 2.2.1 # Stores scores for each group which describe set of items groupscore = {} for groupid in effectmap_groupid_typeid: # Skip groups which are already used for item # description (have 'describes' flag set to True) describesflag = effectmap_groupid_typeid[groupid][1] if not describesflag: # Items from current group affected by current # effect affectedset = effectmap_groupid_typeid[groupid][0] # Number of affected items from current group; # Already described affected_decribed = len(affectedset.intersection (effect_describedtypes)) # Yet undescribed affected_undescribed = len(affectedset.difference (effect_describedtypes)) # Total number of items from this group (not # necessarily affected by current effect) total = len(globalmap_groupid_typeid[groupid]) # Calculate inner score and push it into score # dictionary for current grouping type groupscore[groupid] = calc_innerscore\ (affected_decribed, affected_undescribed, total, pereffect_totalaffected) # Debug prints for inner data if DEBUG_LEVEL >= 1 and not stopdebugprints: cursor.execute(QUERY_GROUPID_GROUPNAME, (groupid,)) for row in cursor: groupName = row[0] coverage = (affected_decribed + affected_undescribed) / total * 100 # If debug level is 1, print results only for # 1st iteration if DEBUG_LEVEL == 1: printstr = "Group: {0}: {1}/{2} ({3:.3}%, inner \ score: {4:.3})" print((printstr.format(groupName, affected_undescribed, total, coverage, groupscore[groupid]))) # If it's 2, print results for each # iteration, so we need to include number # of already described items if DEBUG_LEVEL == 2: printstr = "Group: {0}: {1}+{2}/{3} ({4:.3}%, \ inner score: {5:.3})" print((printstr.format(groupName, affected_undescribed, affected_decribed, total, coverage, groupscore[groupid]))) # Calculate outer score for this grouping type groupouterscore = calc_outerscore(groupscore, pereffect_totalaffected, GROUP_WEIGHT) # Debug print for outer data if DEBUG_LEVEL >= 1 and not stopdebugprints: printstr = "Groups outer score: {0:.3}" print((printstr.format(groupouterscore))) categoryscore = {} for categoryid in effectmap_categoryid_typeid: describesflag = effectmap_categoryid_typeid[categoryid][1] if not describesflag: affectedset = effectmap_categoryid_typeid[categoryid][0] affected_decribed = len(affectedset.intersection (effect_describedtypes)) affected_undescribed = len(affectedset.difference (effect_describedtypes)) total = len(globalmap_categoryid_typeid[categoryid]) categoryscore[categoryid] = calc_innerscore\ (affected_decribed, affected_undescribed, total, pereffect_totalaffected) if DEBUG_LEVEL >= 1 and not stopdebugprints: cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (categoryid,)) for row in cursor: categoryname = row[0] coverage = (affected_decribed + affected_undescribed) / total * 100 if DEBUG_LEVEL == 1: printstr = "Category: {0}: {1}/{2} ({3:.3}%, \ inner score: {4:.3})" print((printstr.format(categoryname, affected_undescribed, total, coverage, categoryscore[categoryid]))) if DEBUG_LEVEL == 2: printstr = "Category: {0}: {1}+{2}/{3} ({4:.3}%, \ inner score: {5:.3})" print((printstr.format(categoryname, affected_undescribed, affected_decribed, total, coverage, categoryscore[categoryid]))) categoryouterscore = calc_outerscore(categoryscore, pereffect_totalaffected, CATEGORY_WEIGHT) if DEBUG_LEVEL >= 1 and not stopdebugprints: printstr = "Category outer score: {0:.3}" print((printstr.format(categoryouterscore))) basetypescore = {} for basetypeid in effectmap_basetypeid_typeid: describesflag = effectmap_basetypeid_typeid[basetypeid][1] if not describesflag: affectedset = effectmap_basetypeid_typeid[basetypeid][0] affected_decribed = len(affectedset.intersection (effect_describedtypes)) affected_undescribed = len(affectedset.difference (effect_describedtypes)) total = len(globalmap_basetypeid_typeid[basetypeid]) basetypescore[basetypeid] = calc_innerscore\ (affected_decribed, affected_undescribed, total, pereffect_totalaffected) if DEBUG_LEVEL >= 1 and not stopdebugprints: cursor.execute(QUERY_TYPEID_TYPENAME, (basetypeid,)) for row in cursor: basetypename = row[0] coverage = (affected_decribed + affected_undescribed) / total * 100 if DEBUG_LEVEL == 1: printstr = "Base item: {0}: {1}/{2} ({3:.3}%, \ inner score: {4:.3})" print((printstr.format(basetypename, affected_undescribed, total, coverage, basetypescore[basetypeid]))) if DEBUG_LEVEL == 2: printstr = "Base item: {0}: {1}+{2}/{3} ({4:.3}%, \ inner score: {5:.3})" print((printstr.format(basetypename, affected_undescribed, affected_decribed, total, coverage, basetypescore[basetypeid]))) basetypeouterscore = calc_outerscore(basetypescore, pereffect_totalaffected, BASETYPE_WEIGHT) #Print outer data if DEBUG_LEVEL >= 1 and not stopdebugprints: printstr = "Base item outer score: {0:.3}" print((printstr.format(basetypeouterscore))) marketgroupwithvarsscore = {} for marketgroupid in effectmap_marketgroupid_typeidwithvars: describesflag = effectmap_marketgroupid_typeidwithvars\ [marketgroupid][1] if not describesflag: affectedset = effectmap_marketgroupid_typeidwithvars\ [marketgroupid][0] affected_decribed = len(affectedset.intersection (effect_describedtypes)) affected_undescribed = len(affectedset.difference (effect_describedtypes)) total = len(globalmap_marketgroupid_typeidwithvariations [marketgroupid]) marketgroupwithvarsscore[marketgroupid] = calc_innerscore\ (affected_decribed, affected_undescribed, total, pereffect_totalaffected) if DEBUG_LEVEL >= 1 and not stopdebugprints: cursor.execute(QUERY_MARKETGROUPID_MARKETGROUPNAME, (marketgroupid,)) for row in cursor: marketgroupname = row[0] # Prepend market group name with its parents # names prependparentid = marketgroupid #Limit depth in case if market groups form a loop for depth in range(20): cursor_parentmarket = db.cursor() cursor_parentmarket.execute\ (QUERY_MARKETGROUPID_PARENTGROUPID, (prependparentid,)) for row in cursor_parentmarket: prependparentid = row[0] if prependparentid: cursor.execute\ (QUERY_MARKETGROUPID_MARKETGROUPNAME, (prependparentid,)) for row in cursor: marketgroupname = "{0} > {1}".format\ (row[0],marketgroupname) else: break coverage = (affected_decribed + affected_undescribed) / total * 100 if DEBUG_LEVEL == 1: printstr = "Market group with variations: {0}: \ {1}/{2} ({3:.3}%, inner score: {4:.3})" print((printstr.format(marketgroupname, affected_undescribed, total, coverage, marketgroupwithvarsscore[marketgroupid]))) if DEBUG_LEVEL == 2: printstr = "Market group with variations: {0}: \ {1}+{2}/{3} ({4:.3}%, inner score: {5:.3})" print((printstr.format(marketgroupname, affected_undescribed, affected_decribed, total, coverage, marketgroupwithvarsscore[marketgroupid]))) marketgroupwithvarsouterscore = calc_outerscore\ (marketgroupwithvarsscore, pereffect_totalaffected, MARKETGROUPWITHVARS_WEIGHT) if DEBUG_LEVEL >= 1 and not stopdebugprints: printstr = "Market group outer score: {0:.3}" print((printstr.format(marketgroupwithvarsouterscore))) typenamecombscore = {} for typenamecombtuple in effectmap_typenamecombtuple_typeid: describesflag = effectmap_typenamecombtuple_typeid\ [typenamecombtuple][1] if not describesflag: affectedset = effectmap_typenamecombtuple_typeid\ [typenamecombtuple][0] affected_decribed = len(affectedset.intersection (effect_describedtypes)) affected_undescribed = len(affectedset.difference (effect_describedtypes)) total = len(globalmap_typenamecombtuple_typeid [typenamecombtuple]) # Type names are special: wee also need to consider # how certain word combination covers full type # name averagecoverage = 0 itemsnamedlikethis = effectmap_typenamecombtuple_typeid\ [typenamecombtuple][0] for typeid in itemsnamedlikethis: # Add number of words in combination divided by # total number of words from any given item averagecoverage += len(typenamecombtuple[0]) / \ globalmap_typeid_typenamecombtuple[typeid][1] # Then divide by number of items we checked, making # it real average averagecoverage = averagecoverage / len(itemsnamedlikethis) # Pass average coverage as additional balancing # factor with certain weight factor (80%) typenamecombscore[typenamecombtuple] = \ calc_innerscore(affected_decribed, affected_undescribed, total, pereffect_totalaffected, 0.2 + averagecoverage*0.8) if DEBUG_LEVEL >= 1 and not stopdebugprints: typenamecombprintable = " ".join(typenamecombtuple[0]) coverage = (affected_decribed + affected_undescribed) / total * 100 if DEBUG_LEVEL == 1: printstr = "Type name combination: \"{0}\": \ {1}/{2} ({3:.3}%, inner score: {4:.3})" print((printstr.format(typenamecombprintable, affected_undescribed, total, coverage, typenamecombscore[typenamecombtuple]))) if DEBUG_LEVEL == 2: printstr = "Type name combination: \"{0}\": \ {1}+{2}/{3} ({4:.3}%, inner score: {5:.3})" print((printstr.format(typenamecombprintable, affected_undescribed, affected_decribed, total, coverage, typenamecombscore[typenamecombtuple]))) typenamecombouterscore = calc_outerscore(typenamecombscore, pereffect_totalaffected, TYPENAMECOMBS_WEIGHT) if DEBUG_LEVEL >= 1 and not stopdebugprints: printstr = "Type name combination outer score: {0:.3}" print((printstr.format(typenamecombouterscore))) # Don't print anything after 1st iteration at 1st debugging # level if DEBUG_LEVEL == 1: stopdebugprints = True # Stage 2.2.2 # Pick max score from outer scores of all grouping types maxouterscore = max(groupouterscore, categoryouterscore, basetypeouterscore, marketgroupwithvarsouterscore, typenamecombouterscore) # Define lower limit for score, below which there will be # no winners if maxouterscore >= LOWEST_SCORE: # If scores are similar, priorities are: # category > group > name > market group > base type if maxouterscore == categoryouterscore: # Pick ID of category which has highest score among # other categories categorywinner = max(categoryscore, key=categoryscore.get) # Add it to the list of categories which describe # set of items describedbycategory.append(categorywinner) # Add all items described by winning category into # set of described items effect_describedtypes.update\ (globalmap_categoryid_typeid[categorywinner]) # Set 'describes' flag to avoid processing of this # category during following iterations effectmap_categoryid_typeid[categorywinner][1] = True if DEBUG_LEVEL >= 2: printstr = "Category winner: {0}" print((printstr.format(categorywinner))) elif maxouterscore == groupouterscore: groupwinner = max(groupscore, key=groupscore.get) describedbygroup.append(groupwinner) effect_describedtypes.update\ (globalmap_groupid_typeid[groupwinner]) effectmap_groupid_typeid[groupwinner][1] = True if DEBUG_LEVEL >= 2: printstr = "Group winner: {0}" print((printstr.format(groupwinner))) elif maxouterscore == typenamecombouterscore: typenamecombwinner = max(typenamecombscore, key=typenamecombscore.get) describedbytypenamecomb.append(typenamecombwinner) effect_describedtypes.update\ (globalmap_typenamecombtuple_typeid[typenamecombwinner]) effectmap_typenamecombtuple_typeid[typenamecombwinner]\ [1] = True if DEBUG_LEVEL >= 2: printstr = "Named like winner: {0}" print((printstr.format(typenamecombwinner))) elif maxouterscore == marketgroupwithvarsouterscore: marketgroupwithvarswinner = max(marketgroupwithvarsscore, key=marketgroupwithvarsscore.get) describedbymarketgroupwithvars.append\ (marketgroupwithvarswinner) effect_describedtypes.update\ (globalmap_marketgroupid_typeidwithvariations [marketgroupwithvarswinner]) effectmap_marketgroupid_typeidwithvars\ [marketgroupwithvarswinner][1] = True if DEBUG_LEVEL >= 2: printstr = "Market group with variations winner: {0}" print((printstr.format(marketgroupwithvarswinner))) elif maxouterscore == basetypeouterscore: basetypewinner = max(basetypescore, key=basetypescore.get) describedbybasetype.append(basetypewinner) effect_describedtypes.update\ (globalmap_basetypeid_typeid[basetypewinner]) effectmap_basetypeid_typeid[basetypewinner][1] = True if DEBUG_LEVEL >= 2: printstr = "Base item winner: {0}" print((printstr.format(basetypewinner))) # Stop if we have score less than some critical value, # all undescribed items will be provided as plain list else: iterate = False if DEBUG_LEVEL >= 2: print("No winners this iteration") # Also stop if we described all items if pereffectlist_usedbytypes.issubset(effect_describedtypes): iterate = False # Print separator for 2nd debugging level, to separate # debug data of one iteration from another if DEBUG_LEVEL >= 2: print("---") singleitems = set(pereffectlist_usedbytypes).difference\ (effect_describedtypes) if DEBUG_LEVEL >= 1: print("Effect will be described by:") print(("Single item IDs:", singleitems)) print(("Group IDs:", describedbygroup)) print(("Category IDs:", describedbycategory)) print(("Base item IDs:", describedbybasetype)) print(("Market group with variations IDs:", describedbymarketgroupwithvars)) print(("Type name combinations:", describedbytypenamecomb)) # Stage 2.1 # These lists will contain IDs and some metadata in tuples printing_types = [] printing_groups = [] printing_categories = [] printing_basetypes = [] printing_marketgroupswithvars = [] printing_typenamecombtuples = [] # Gather data for printing in the form of tuples, each tuple has # grouping type ID, human-readable name and category name for typeid in singleitems: typename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (typeid,)) for row in cursor: typename = row[0] categoryname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (globalmap_typeid_categoryid[typeid],)) for row in cursor: categoryname = row[0] printing_types.append((typeid, typename, categoryname)) for groupid in describedbygroup: groupName = "" cursor.execute(QUERY_GROUPID_GROUPNAME, (groupid,)) for row in cursor: groupName = row[0] categoryid = 0 cursor.execute(QUERY_GROUPID_CATEGORYID, (groupid,)) for row in cursor: categoryid = row[0] categoryname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (categoryid,)) for row in cursor: categoryname = row[0] printing_groups.append((groupid, groupName, categoryname)) for categoryid in describedbycategory: categoryname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (categoryid,)) for row in cursor: categoryname = row[0] printing_categories.append((categoryid, categoryname)) for basetypeid in describedbybasetype: basetypename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (basetypeid,)) for row in cursor: basetypename = row[0] categoryname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (globalmap_typeid_categoryid[basetypeid],)) for row in cursor: categoryname = row[0] printing_basetypes.append((basetypeid, basetypename, categoryname)) for marketgroupid in describedbymarketgroupwithvars: cursor.execute(QUERY_MARKETGROUPID_MARKETGROUPNAME, (marketgroupid,)) for row in cursor: marketgroupname = row[0] # Prepend market group name with its parents names prependparentid = marketgroupid # Limit depth to avoid looping, as usual for depth in range(20): cursor_parentmarket = db.cursor() cursor_parentmarket.execute(QUERY_MARKETGROUPID_PARENTGROUPID, (prependparentid,)) for row in cursor_parentmarket: prependparentid = row[0] if prependparentid: cursor.execute(QUERY_MARKETGROUPID_MARKETGROUPNAME, (prependparentid,)) for row in cursor: marketgroupname = "{0} > {1}".format(row[0], marketgroupname) else: break printing_marketgroupswithvars.append((marketgroupid, marketgroupname)) for typenamecombtuple in describedbytypenamecomb: typenamecombprint = " ".join(typenamecombtuple[0]) categoryname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (typenamecombtuple[1],)) for row in cursor: categoryname = row[0] printing_typenamecombtuples.append((typenamecombtuple, typenamecombprint, categoryname)) # Use separate list per grouping type to ease grouping type # sorting printing_typelines = [] # Sort by item name first printing_types = sorted(printing_types, key=lambda tuple: tuple[1]) # Then sort by category name printing_types = sorted(printing_types, key=lambda tuple: tuple[2]) for type in printing_types: # Append line for printing to list catname = type[2] typename = type[1] printstr = "{0}: {1}".format(catname, typename) if validate_string(printstr): printing_typelines.append(printstr) # Do the same for groups printing_grouplines = [] printing_groups = sorted(printing_groups, key=lambda tuple: tuple[1]) printing_groups = sorted(printing_groups, key=lambda tuple: tuple[2]) for group in printing_groups: catname = group[2] groupname = group[1] described = len(effectmap_groupid_typeid[group[0]][0]) total = len(globalmap_groupid_typeid[group[0]]) printstr = "{0}s from group: {1} ({2} of {3})".format(catname, groupname, described, total) if validate_string(printstr): printing_grouplines.append(printstr) # Process categories printing_categorylines = [] printing_categories = sorted(printing_categories, key=lambda tuple: tuple[1]) for category in printing_categories: catname = category[1] described = len(effectmap_categoryid_typeid[category[0]][0]) total = len(globalmap_categoryid_typeid[category[0]]) printstr = "Items from category: {0} ({1} of {2})".format(catname, described, total) if validate_string(printstr): printing_categorylines.append(printstr) # Process variations printing_basetypelines = [] printing_basetypes = sorted(printing_basetypes, key=lambda tuple: tuple[1]) printing_basetypes = sorted(printing_basetypes, key=lambda tuple: tuple[2]) for basetype in printing_basetypes: catname = basetype[2].lower() basename = basetype[1] described = len(effectmap_basetypeid_typeid[basetype[0]][0]) total = len(globalmap_basetypeid_typeid[basetype[0]]) printstr = "Variations of {0}: {1} ({2} of {3})".format(catname, basename, described, total) if validate_string(printstr): printing_basetypelines.append(printstr) # Process market groups with variations printing_marketgroupwithvarslines = [] printing_marketgroupswithvars = sorted(printing_marketgroupswithvars, key=lambda tuple: tuple[1]) for marketgroup in printing_marketgroupswithvars: marketgroupname = marketgroup[1] described = len(effectmap_marketgroupid_typeidwithvars [marketgroup[0]][0]) total = len(globalmap_marketgroupid_typeidwithvariations [marketgroup[0]]) printstr = "Items from market group: {0} ({1} of {2})".format(marketgroupname, described, total) if validate_string(printstr): printing_marketgroupwithvarslines.append(printstr) # Process type name combinations printing_typenamecombtuplelines = [] printing_typenamecombtuples = sorted(printing_typenamecombtuples, key=lambda tuple: tuple[1]) printing_typenamecombtuples = sorted(printing_typenamecombtuples, key=lambda tuple: tuple[2]) for typenamecomb in printing_typenamecombtuples: catname = typenamecomb[2] namedlike = typenamecomb[1] described = len(effectmap_typenamecombtuple_typeid [typenamecomb[0]][0]) total = len(globalmap_typenamecombtuple_typeid[typenamecomb[0]]) printstr = "{0}s named like: {1} ({2} of {3})".format(catname, namedlike, described, total) if validate_string(printstr): printing_typenamecombtuplelines.append(printstr) # Compose single list of lines using custom sorting commentlines = printing_categorylines + printing_grouplines + \ printing_typenamecombtuplelines + printing_marketgroupwithvarslines + \ printing_basetypelines + printing_typelines # Prepend list with "used by" if commentlines: commentlines = [f"{effectnamedb}\n\nUsed by:"] + commentlines # If effect isn't used, write it to file and to terminal else: commentlines = ["Not used by any item"] print(f"Warning: effect {effectid} {effectnamedb} is not used by any item") # Prepare docstring docstring_new = "\n".join(commentlines) docstring_new = ['"""'] + docstring_new.splitlines() + ['"""'] docstring_new = [f' {l}' if l else '' for l in docstring_new] # If we're not debugging - write changes to the file if DEBUG_LEVEL == 0: with open(effects_path) as f: data = f.read() lines = data.splitlines() effect_idx = None docstart_idx = None docend_idx = None for lineidx, line in enumerate(lines): if line.startswith(f'class Effect{effectid}('): effect_idx = lineidx docstart_idx = effect_idx + 1 # Remove docstring if it's there if lines[docstart_idx].strip() == '"""': for docidx, docline in enumerate(lines[docstart_idx + 1:], start=docstart_idx + 1): if docline.strip() == '"""': docend_idx = docidx break break if docstart_idx is not None and docend_idx is not None: docstring_old = lines[docstart_idx:docend_idx + 1] if docstring_new == docstring_old: continue else: lines = lines[:docstart_idx] + lines[docend_idx + 1:] lines = lines[:effect_idx + 1] + docstring_new + lines[effect_idx + 1:] if lines[-1].strip(): lines.append('') with open(effects_path, 'w') as f: f.write('\n'.join(lines)) elif DEBUG_LEVEL >= 2: print("Comment to write to file:") print(("\n".join(commentlines))) ================================================ FILE: scripts/findNonMarket.py ================================================ #!/usr/bin/env python3 import copy import os.path import re import sqlite3 script_dir = os.path.dirname(str(__file__, sys.getfilesystemencoding())) # Connect to database and set up cursor db = sqlite3.connect(os.path.join(script_dir, "..", "eve.db")) cursor = db.cursor() # Queries to get raw data QUERY_ALLEFFECTS = 'SELECT effectID, effectName FROM dgmeffects' # Limit categories to # \Modules (7), Charges (8), Drones (18), # Implants (20), Subsystems (32) QUERY_PUBLISHEDTYPEIDS = 'SELECT it.typeID FROM invtypes AS it INNER JOIN \ invgroups AS ig ON it.groupID = ig.groupID INNER JOIN invcategories AS ic ON \ ig.categoryID = ic.categoryID WHERE it.published = 1 AND ic.categoryID IN \ (7, 8, 18, 20, 32)' QUERY_TYPEID_GROUPID = 'SELECT groupID FROM invtypes WHERE typeID = ? LIMIT 1' QUERY_GROUPID_CATEGORYID = 'SELECT categoryID FROM invgroups WHERE \ groupID = ? LIMIT 1' QUERY_TYPEID_PARENTTYPEID = 'SELECT parentTypeID FROM invmetatypes WHERE \ typeID = ? LIMIT 1' QUERY_TYPEID_MARKETGROUPID = 'SELECT marketGroupID FROM invtypes WHERE \ typeID = ? LIMIT 1' QUERY_TYPEID_TYPENAME = 'SELECT typeName FROM invtypes WHERE typeID = ? \ LIMIT 1' QUERY_MARKETGROUPID_PARENTGROUPID = 'SELECT parentGroupID FROM \ invmarketgroups WHERE marketGroupID = ? LIMIT 1' QUERY_EFFECTID_TYPEID = 'SELECT typeID FROM dgmtypeeffects WHERE effectID = ?' # Queries for printing QUERY_GROUPID_GROUPNAME = 'SELECT groupName FROM invgroups WHERE groupID = ? \ LIMIT 1' QUERY_CATEGORYID_CATEGORYNAME = 'SELECT categoryName FROM invcategories \ WHERE categoryID = ? LIMIT 1' QUERY_MARKETGROUPID_MARKETGROUPNAME = 'SELECT marketGroupName FROM \ invmarketgroups WHERE marketGroupID = ? LIMIT 1' QUERY_TYPEID_ATTRIBS = 'SELECT da.attributeName, dta.value FROM dgmattribs AS \ da INNER JOIN dgmtypeattribs AS dta ON dta.attributeID = da.attributeID WHERE \ dta.typeID = ?' QUERY_TYPEID_BASEATTRIBS = 'SELECT volume, mass, capacity FROM invtypes WHERE \ typeID = ?' QUERY_TYPEID_METAGROUPID = 'SELECT metaGroupID FROM invmetatypes WHERE typeID = ?' QUERY_METAGROUPNAME_METAGROUPID = 'SELECT metaGroupName FROM invmetagroups WHERE metaGroupID = ?' # Compose list of effects w/o symbols which eos doesn't take into # consideration, we'll use it to find proper effect IDs from file # names globalmap_effectnameeos_effectid = {} STRIPSPEC = "[^A-Za-z0-9]" cursor.execute(QUERY_ALLEFFECTS) for row in cursor: effectid = row[0] effectnamedb = row[1] effectnameeos = re.sub(STRIPSPEC, "", effectnamedb) # There may be different effects with the same name, so form # sets of IDs if not effectnameeos in globalmap_effectnameeos_effectid: globalmap_effectnameeos_effectid[effectnameeos] = set() globalmap_effectnameeos_effectid[effectnameeos].add(effectid) # Published types set publishedtypes = set() cursor.execute(QUERY_PUBLISHEDTYPEIDS) for row in cursor: publishedtypes.add(row[0]) # Compose group maps # { groupid : set(typeid) } globalmap_groupid_typeid = {} # { typeid : groupid } globalmap_typeid_groupid = {} for typeid in publishedtypes: groupid = 0 cursor.execute(QUERY_TYPEID_GROUPID, (typeid,)) for row in cursor: groupid = row[0] if not groupid in globalmap_groupid_typeid: globalmap_groupid_typeid[groupid] = set() globalmap_groupid_typeid[groupid].add(typeid) globalmap_typeid_groupid[typeid] = groupid # Category maps # { categoryid : set(typeid) } globalmap_categoryid_typeid = {} # { typeid : categoryid } globalmap_typeid_categoryid = {} for typeid in publishedtypes: categoryid = 0 cursor.execute(QUERY_GROUPID_CATEGORYID, (globalmap_typeid_groupid[typeid],)) for row in cursor: categoryid = row[0] if not categoryid in globalmap_categoryid_typeid: globalmap_categoryid_typeid[categoryid] = set() globalmap_categoryid_typeid[categoryid].add(typeid) globalmap_typeid_categoryid[typeid] = categoryid # Base type maps # { basetypeid : set(typeid) } globalmap_basetypeid_typeid = {} # { typeid : basetypeid } globalmap_typeid_basetypeid = {} for typeid in publishedtypes: # Not all typeIDs in the database have baseTypeID, so assign some # default value to it basetypeid = 0 cursor.execute(QUERY_TYPEID_PARENTTYPEID, (typeid,)) for row in cursor: basetypeid = row[0] # If base type is not published or is not set in database, consider # item as variation of self if basetypeid not in publishedtypes: basetypeid = typeid if not basetypeid in globalmap_basetypeid_typeid: globalmap_basetypeid_typeid[basetypeid] = set() globalmap_basetypeid_typeid[basetypeid].add(typeid) globalmap_typeid_basetypeid[typeid] = basetypeid # Market group maps - we won't use these for further processing, but # just as helper for composing other maps # { marketgroupid : set(typeid) } globalmap_marketgroupid_typeid = {} # { typeid : set(marketgroupid) } globalmap_typeid_marketgroupid = {} for typeid in publishedtypes: marketgroupid = 0 cursor.execute(QUERY_TYPEID_MARKETGROUPID, (typeid,)) for row in cursor: marketgroupid = row[0] if not marketgroupid: continue if not marketgroupid in globalmap_marketgroupid_typeid: globalmap_marketgroupid_typeid[marketgroupid] = set() globalmap_marketgroupid_typeid[marketgroupid].add(typeid) # Copy items to all parent market groups INITIALMARKETGROUPIDS = tuple(globalmap_marketgroupid_typeid) for marketgroupid in INITIALMARKETGROUPIDS: # Limit depths for case if database will refer to groups making # the loop cyclingmarketgroupid = marketgroupid for depth in range(20): cursor_parentmarket = db.cursor() cursor_parentmarket.execute(QUERY_MARKETGROUPID_PARENTGROUPID, (cyclingmarketgroupid,)) for row in cursor_parentmarket: cyclingmarketgroupid = row[0] if cyclingmarketgroupid: if not cyclingmarketgroupid in globalmap_marketgroupid_typeid: globalmap_marketgroupid_typeid[cyclingmarketgroupid] = set() globalmap_marketgroupid_typeid[cyclingmarketgroupid].update\ (globalmap_marketgroupid_typeid[marketgroupid]) else: break # Now, make a reverse map for marketgroupid, typeidset in list(globalmap_marketgroupid_typeid.items()): for typeid in typeidset: if not typeid in globalmap_typeid_marketgroupid: globalmap_typeid_marketgroupid[typeid] = set() globalmap_typeid_marketgroupid[typeid].add(marketgroupid) # Combine market groups and variations # { marketgroupid : set(typeidwithvariations) } globalmap_marketgroupid_typeidwithvariations = \ copy.deepcopy(globalmap_marketgroupid_typeid) # { typeidwithvariations : set(marketgroupid) } globalmap_typeidwithvariations_marketgroupid = {} for marketgroupid in globalmap_marketgroupid_typeidwithvariations: typestoadd = set() for typeid in globalmap_marketgroupid_typeidwithvariations[marketgroupid]: if typeid in globalmap_basetypeid_typeid: for variationid in globalmap_basetypeid_typeid[typeid]: # Do not include items which have market group, even if # they're variation if not variationid in globalmap_typeid_marketgroupid: typestoadd.add(variationid) globalmap_marketgroupid_typeidwithvariations[marketgroupid].update\ (typestoadd) # Make reverse map using simple way too for marketgroupid, typeidwithvariationsset in \ list(globalmap_marketgroupid_typeidwithvariations.items()): for typeid in typeidwithvariationsset: if not typeid in globalmap_typeidwithvariations_marketgroupid: globalmap_typeidwithvariations_marketgroupid[typeid] = set() globalmap_typeidwithvariations_marketgroupid[typeid].add(marketgroupid) nonmarket = set() for typeid in publishedtypes: if not typeid in globalmap_typeidwithvariations_marketgroupid: nonmarket.add(typeid) def getItemAttrs(typeid): attrs = {} cursor.execute(QUERY_TYPEID_ATTRIBS, (typeid,)) for row in cursor: attrs[row[0]] = row[1] cursor.execute(QUERY_TYPEID_BASEATTRIBS, (typeid,)) for row in cursor: if row[0] is not None: attrs["volume"] = row[0] if row[1] is not None: attrs["mass"] = row[1] if row[2] is not None: attrs["capacity"] = row[2] return attrs def suggestMktGrp(typeid, mode="grp"): typecat = globalmap_typeid_categoryid[typeid] catname = "" cursor.execute(QUERY_CATEGORYID_CATEGORYNAME, (typecat,)) for row in cursor: catname = row[0] typename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (typeid,)) for row in cursor: typename = row[0] if catname.lower() == "module" and "civilian" in typename.lower(): return 760 attrs = getItemAttrs(typeid) implantness = None boosterness = None cpu = None power = None droneBandwidthUsed = None volume = None if "implantness" in attrs: implantness = attrs["implantness"] if "boosterness" in attrs: boosterness = attrs["boosterness"] if "cpu" in attrs: cpu = attrs["cpu"] if "power" in attrs: power = attrs["power"] if "droneBandwidthUsed" in attrs: droneBandwidthUsed = attrs["droneBandwidthUsed"] if "volume" in attrs: volume = attrs["volume"] if mode == "grp": grp = globalmap_typeid_groupid[typeid] comrades = globalmap_groupid_typeid[grp] elif mode == "cat": cat = globalmap_typeid_categoryid[typeid] comrades = globalmap_categoryid_typeid[cat] mktgrps_w_cos = {} for co in comrades: marketgroupid = 0 cursor.execute(QUERY_TYPEID_MARKETGROUPID, (co,)) for row in cursor: marketgroupid = row[0] if not marketgroupid: continue if not marketgroupid in mktgrps_w_cos: mktgrps_w_cos[marketgroupid] = 0.0 similarity_factor = 1.0 metagrp = 0 cursor.execute(QUERY_TYPEID_METAGROUPID, (co,)) for row in cursor: metagrp = row[0] if not metagrp in (0,1,2,14): similarity_factor *= 0.01 if implantness or boosterness or cpu or power or droneBandwidthUsed or volume: cgrpattrs = getItemAttrs(co) if implantness: if "implantness" in cgrpattrs: if cgrpattrs["implantness"] != implantness: similarity_factor *= 0.1 else: similarity_factor *= 0.01 if boosterness: if "boosterness" in cgrpattrs: if cgrpattrs["boosterness"] != boosterness: similarity_factor *= 0.1 else: similarity_factor *= 0.01 if cpu: if "cpu" in cgrpattrs and cgrpattrs["cpu"]: fct = cpu / cgrpattrs["cpu"] if fct > 1: fct = 1 / fct similarity_factor *= fct else: similarity_factor *= 0.01 if power: if "power" in cgrpattrs and cgrpattrs["power"]: fct = power / cgrpattrs["power"] if fct > 1: fct = 1 / fct similarity_factor *= fct else: similarity_factor *= 0.01 if droneBandwidthUsed: if "droneBandwidthUsed" in cgrpattrs: fct = droneBandwidthUsed / cgrpattrs["droneBandwidthUsed"] if fct > 1: fct = 1 / fct similarity_factor *= fct else: similarity_factor *= 0.01 if volume: if "volume" in cgrpattrs: fct = volume / cgrpattrs["volume"] if fct > 1: fct = 1 / fct similarity_factor *= fct else: similarity_factor *= 0.01 mktgrps_w_cos[marketgroupid] += similarity_factor if mktgrps_w_cos: winner = max(list(mktgrps_w_cos.keys()), key=lambda k: mktgrps_w_cos[k]) else: winner = None return winner def suggestMetaGrp(typeid): typename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (typeid,)) for row in cursor: typename = row[0] faction_affixes = ("Arch Angel", "Domination", "Blood", "Guristas", "Sansha", "Sanshas", "Shadow", "Guardian", "Serpentis", "Caldari", "Imperial", "Gallente", "Federation", "Republic", "Ammatar", "Khanid", "Thukker", "Syndicate", "Sisters", "Legion", "ORE", "Nugoehuvi") deadspace_affixes = ("Gistii", "Gistum", "Gist", "Corpii", "Corpum", "Corpus", "Pithi", "Pithum", "Pith", "Centii", "Centum", "Centus", "Coreli", "Corelum", "Core") storyline_names = {"Akemon", "Michi", "Ogdin", "Pashan", "Shaqil", "Whelan Machorin", "Numon"} officer_names = ("Ahremen", "Brokara", "Brynn", "Chelm", "Cormack", "Draclira", "Estamel", "Gotan", "Hakim", "Kaikka", "Mizuro", "Raysere", "Selynne", "Setele", "Tairei", "Thon", "Tuvan", "Vizan") storyline_pattern_general = "'[A-Za-z ]+'" storyline_pattern_names = "|".join("{0}".format(name) for name in storyline_names) faction_pattern = "({0}) ".format("|".join(faction_affixes)) deadspace_pattern = "({0}) ".format("|".join(deadspace_affixes)) officer_pattern = "({0}) ".format("|".join("{0}'s".format(name) for name in officer_names)) attrs = getItemAttrs(typeid) if attrs.get("metaLevel") is not None: mlvl = attrs["metaLevel"] if mlvl in (0, 1, 2, 3, 4): meta = 1 elif mlvl == 5: meta = 2 elif mlvl in (6, 7): meta = 3 elif mlvl in (8, 9): meta = 4 elif mlvl in (11, 12, 13, 14): if re.search(deadspace_pattern, typename): meta = 6 else: meta = 5 else: meta = 1 elif re.search(officer_pattern, typename): meta = 5 elif re.search(deadspace_pattern, typename): meta = 6 elif re.search(faction_pattern, typename): meta = 4 elif re.search(storyline_pattern_names, typename): meta = 3 elif re.search(storyline_pattern_general, typename) and not "Hardwiring" in typename: meta = 3 else: meta = 1 return meta map_typeid_stuff = {} map_typeid_stuff2 = {} for typeid in nonmarket: typename = "" cursor.execute(QUERY_TYPEID_TYPENAME, (typeid,)) for row in cursor: typename = row[0] grpname = "" cursor.execute(QUERY_GROUPID_GROUPNAME, (globalmap_typeid_groupid[typeid],)) for row in cursor: grpname = row[0] mkt = suggestMktGrp(typeid) if mkt is None: mkt = suggestMktGrp(typeid, mode="cat") meta = suggestMetaGrp(typeid) attrs = getItemAttrs(typeid) if mkt: map_typeid_stuff[typeid] = (mkt, meta) marketgroupname = "" cursor.execute(QUERY_MARKETGROUPID_MARKETGROUPNAME, (mkt,)) for row in cursor: marketgroupname = row[0] # Prepend market group name with its parents names prependparentid = mkt # Limit depth to avoid looping, as usual for depth in range(20): cursor_parentmarket = db.cursor() cursor_parentmarket.execute(QUERY_MARKETGROUPID_PARENTGROUPID, (prependparentid,)) for row in cursor_parentmarket: prependparentid = row[0] if prependparentid: cursor_parentmarket2 = db.cursor() cursor_parentmarket2.execute(QUERY_MARKETGROUPID_MARKETGROUPNAME, (prependparentid,)) for row in cursor_parentmarket2: marketgroupname = "{0} > {1}".format(row[0], marketgroupname) else: break else: marketgroupname = "None" map_typeid_stuff2[typename] = (mkt, marketgroupname) metagroupname = "" cursor.execute(QUERY_METAGROUPNAME_METAGROUPID, (meta,)) for row in cursor: metagroupname = row[0] #print("---\nItem: {0}\nGroup: {1}\nSuggested market group: {2} ({3})\nMeta group: {4}".format(typename, grpname, marketgroupname, mkt, metagroupname)) #print("\n\nmap = {{ {0} }}".format(", ".join("{0}: ({1}, {2})".format(key, map_typeid_stuff[key][0], map_typeid_stuff[key][1]) for key in sorted(map_typeid_stuff)))) print(("---\n{0}".format("\n".join("\"{0}\": {1}, # {2}".format(key, map_typeid_stuff2[key][0], map_typeid_stuff2[key][1]) for key in sorted(map_typeid_stuff2))))) ================================================ FILE: scripts/icons_update.py ================================================ #!/usr/bin/env python2.7 """ This script updates only market/item icons. """ import argparse import json import os import sqlite3 from shutil import copyfile from PIL import Image def get_full_alias(short_alias): full_aliases = { 'tq': 'tranquility', 'sisi': 'singularity'} return full_aliases.get(short_alias, short_alias) parser = argparse.ArgumentParser(description='This script updates module icons for pyfa') parser.add_argument('-e', '--eve', required=True, type=str, help='path to eve\'s shared cache folder') parser.add_argument('-s', '--server', required=False, default='tq', type=str, help='which server to use (defaults to tq)') parser.add_argument('-i', '--icons', required=True, type=str, help='Path to iconids.json extracted by phobos') args = parser.parse_args() script_dir = os.path.dirname(os.path.abspath(__file__)) db_path = os.path.abspath(os.path.join(script_dir, '..', 'eve.db')) icons_dir = os.path.abspath(os.path.join(script_dir, '..', 'imgs', 'icons')) render_dir = os.path.abspath(os.path.join(script_dir, '..', 'imgs', 'renders')) db = sqlite3.connect(db_path) cursor = db.cursor() ICON_SIZE = (16, 16) RENDER_SIZE = (32, 32) with open(args.icons, 'r') as f: icon_json = json.load(f) eve_path = os.path.join(args.eve, 'index_{}.txt'.format(get_full_alias(args.server))) with open(eve_path, 'r') as f: lines = f.readlines() file_index = {x.split(',')[0]: x.split(',') for x in lines} resfileindex = file_index['app:/resfileindex.txt'] res_cache = os.path.join(args.eve, 'ResFiles') with open(os.path.join(res_cache, resfileindex[1]), 'r') as f: lines = f.readlines() res_index = {x.split(',')[0].lower(): x.split(',') for x in lines} # Need to copy the file to our cuirrent directory graphics_loader_file = os.path.join(res_cache, file_index['app:/bin64/graphicIDsLoader.pyd'][1]) to_path = os.path.dirname(os.path.abspath(__file__)) copyfile(graphics_loader_file, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'graphicIDsLoader.pyd')) # The loader expect it to be the correct filename, so copy trhe file as well graphics_file = os.path.join(res_cache, res_index['res:/staticdata/graphicIDs.fsdbinary'.lower()][1]) to_path = os.path.dirname(os.path.abspath(__file__)) copyfile(graphics_file, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'graphicIDs.fsdbinary')) import graphicIDsLoader graphics = graphicIDsLoader.load(os.path.join(to_path, 'graphicIDs.fsdbinary')) graphics_py_ob = {} for x, v in graphics.items(): if hasattr(v, 'iconInfo') and hasattr(v.iconInfo, 'folder'): graphics_py_ob[x] = v.iconInfo.folder # Add children to market group list # {parent: {children}} mkt_tree = {} for row in cursor.execute('select marketGroupID, parentGroupID from invmarketgroups'): parent = row[1] # We have all the root groups in the set we need anyway if not parent: continue child = row[0] children = mkt_tree.setdefault(parent, set()) children.add(child) # Traverse the tree we just composed to add all children for all needed roots def get_children(parent): children = set() for child in mkt_tree.get(parent, ()): children.add(child) children.update(get_children(child)) return children query_items = 'select distinct it.iconID from invtypes as it inner join invgroups as ig on it.groupID = ig.groupID where ig.categoryID != 2118' query_groups = 'select distinct iconID from invgroups' query_cats = 'select distinct iconID from invcategories' query_market = 'select distinct iconID from invmarketgroups' query_attrib = 'select distinct iconID from dgmattribs' query_ships = 'select it.graphicID from invtypes as it inner join invgroups as ig on it.groupID = ig.groupID where ig.categoryID in (6, 65)' needed = set() existing = set() export = {} # Get a list of needed icons based on the items / attributes / etc from the database for query in (query_items, query_groups, query_cats, query_market, query_attrib): for row in cursor.execute(query): fname = row[0] if fname is None: continue needed.add(fname) # Get a list of all the icons we currently have for fname in os.listdir(icons_dir): if not os.path.isfile(os.path.join(icons_dir, fname)): continue fname = os.path.splitext(fname)[0] # Get rid of "icon" prefix as well #fname = re.sub('^icon', '', fname) existing.add(fname) def crop_image(img): w, h = img.size if h == w: return img normal = min(h, w) diff_w = w - normal diff_h = h - normal crop_top = diff_h // 2 crop_bot = diff_h // 2 + diff_h % 2 crop_left = diff_w // 2 crop_right = diff_w // 2 + diff_w % 2 box = (crop_left, crop_top, w - crop_right, h - crop_bot) return img.crop(box) def get_icon_file(res_path, size): """ Get the iconFile field value and find proper icon for it. Return as PIL image object down- scaled for use in pyfa. """ res_path = res_path.lower() res_path = res_path.replace('\\', '/') res_path = res_path.replace('//', '/') #1703 if res_path not in res_index: return None res_icon = res_index[res_path] icon_path = res_icon[1] fullpath = os.path.join(res_cache, icon_path) if not os.path.isfile(fullpath): return None img = Image.open(fullpath) if size > img.size: # if we are requesting a size that is bigger than the source, return None. See #1769 return None img = crop_image(img) img.thumbnail(size, Image.ANTIALIAS) # Strip all additional image info (mostly for ICC color # profiles, see issue #337) img.info.clear() return img toremove = existing.difference(needed) toupdate = existing.intersection(needed) toadd = needed.difference(existing) if toremove: print('Some icons are not used and will be removed:') for fname in sorted(toremove): fullname = '{}.png'.format(fname) fullpath = os.path.join(icons_dir, fullname) os.remove(fullpath) if toupdate: print(('Updating {} icons...'.format(len(toupdate)))) missing = set() for fname in sorted(toupdate): icon = get_icon_file(fname) if icon is None: missing.add(fname) continue fullname = '{}.png'.format(fname) fullpath = os.path.join(icons_dir, fullname) icon.save(fullpath, 'png') if missing: print((' {} icons are missing in export:'.format(len(missing)))) for fname in sorted(missing): print((' {}'.format(fname))) if toadd: print(('Adding {} icons...'.format(len(toadd)))) missing = set() for fname in sorted(toadd): icon = icon_json.get(str(fname), None) if icon is None: print("Can't find iconID {}".format(fname)) continue key = icon['iconFile'].lower() for i in range(2): scale = i+1 icon = get_icon_file(key, tuple([x*scale for x in ICON_SIZE])) if icon is None: missing.add(fname) continue fullname = '{}@{}x.png'.format(fname, scale) fullpath = os.path.join(icons_dir, fullname) icon.save(fullpath, 'png') if missing: print((' {} icons are missing in export:'.format(len(missing)))) for fname in sorted(missing): print((' {}'.format(fname))) print("Doing renders") needed.clear() existing.clear() toremove.clear() for row in cursor.execute(query_ships): needed.add(row[0]) toremove = existing.difference(needed) toupdate = existing.intersection(needed) toadd = needed.difference(existing) if toadd: print(('Adding {} renders...'.format(len(toadd)))) missing = set() for fname in sorted(toadd): try: key = graphics_py_ob[int(fname)] except KeyError: print("Can't find graphicID {}".format(fname)) key = "{}/{}_64.png".format(key, fname) for i in range(2): scale = i+1 icon = get_icon_file(key, tuple([x*scale for x in RENDER_SIZE])) if icon is None: missing.add(fname) continue fullname = '{}@{}x.png'.format(fname, scale) fullpath = os.path.join(render_dir, fullname) icon.save(fullpath, 'png') if missing: print((' {} renders are missing in export:'.format(len(missing)))) for fname in sorted(missing): print((' {}'.format(fname))) ================================================ FILE: scripts/itemDiff.py ================================================ #!/usr/bin/env python3 #=============================================================================== # Copyright (C) 2010-2011 Anton Vorobyov # # This file is part of eos. # # eos is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # eos is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with eos. If not, see . #=============================================================================== """ This script is used to compare two different database versions. It shows removed/changed/new items with list of changed effects, changed attributes and effects which were renamed """ import argparse import os.path import re import sqlite3 script_dir = os.path.dirname(__file__) default_old = os.path.join(script_dir, "..", "eve.db") def main(old, new, groups=True, effects=True, attributes=True, renames=True): # Open both databases and get their cursors old_db = sqlite3.connect(os.path.expanduser(old)) old_cursor = old_db.cursor() new_db = sqlite3.connect(os.path.expanduser(new)) new_cursor = new_db.cursor() # Force some of the items to make them published FORCEPUB_TYPES = ( "% Propulsion Mode", "% Sharpshooter Mode", "% Defense Mode", "% Primary Mode", "% Secondary Mode", "% Tertiary Mode", ) OVERRIDES_TYPEPUB = 'UPDATE invtypes SET published = 1 WHERE typeName like ?' for typename in FORCEPUB_TYPES: old_cursor.execute(OVERRIDES_TYPEPUB, (typename,)) new_cursor.execute(OVERRIDES_TYPEPUB, (typename,)) # Initialization of few things used by both changed/renamed effects list script_dir = os.path.dirname(__file__) effectspath = os.path.join(script_dir, "..", "eos", "effects.py") implemented = set() with open(effectspath) as f: for line in f: for m in re.finditer(r'class Effect(?P\d+)\(BaseEffect\):', line): effectid = int(m.group('eid')) implemented.add(effectid) # Effects' names are used w/o any special symbols by eos stripspec = "[^A-Za-z0-9]" # Method to get data if effect is implemented in eos or not def geteffst(effectid): return effectid in implemented def findrenames(ren_dict, query, strip=False): old_namedata = {} new_namedata = {} for cursor, dictionary in ((old_cursor, old_namedata), (new_cursor, new_namedata)): cursor.execute(query) for row in cursor: id = row[0] name = row[1] if strip is True: name = re.sub(stripspec, "", name) dictionary[id] = name for id in set(old_namedata.keys()).intersection(list(new_namedata.keys())): oldname = old_namedata[id] if old_namedata[id] is not None else 'None' newname = new_namedata[id] if new_namedata[id] is not None else 'None' if oldname != newname: ren_dict[id] = (oldname, newname) return def printrenames(ren_dict, title): if len(ren_dict) > 0: print('\nRenamed ' + title + ':') for id in sorted(ren_dict): couple = ren_dict[id] print((" \"{0}\": \"{1}\",".format(couple[0], couple[1]))) groupcats = {} def getgroupcat(grp): """Get group category from the new db""" if grp in groupcats: cat = groupcats[grp] else: query = 'SELECT categoryID FROM invgroups WHERE groupID = ?' new_cursor.execute(query, (grp,)) cat = 0 for row in new_cursor: cat = row[0] groupcats[grp] = cat return cat itemnames = {} def getitemname(item): """Get item name from the new db""" if item in itemnames: name = itemnames[item] else: query = 'SELECT typeName FROM invtypes WHERE typeID = ?' new_cursor.execute(query, (item,)) name = "" for row in new_cursor: name = row[0] if not name: old_cursor.execute(query, (item,)) for row in old_cursor: name = row[0] itemnames[item] = name return name groupnames = {} def getgroupname(grp): """Get group name from the new db""" if grp in groupnames: name = groupnames[grp] else: query = 'SELECT name FROM invgroups WHERE groupID = ?' new_cursor.execute(query, (grp,)) name = "" for row in new_cursor: name = row[0] if not name: old_cursor.execute(query, (grp,)) for row in old_cursor: name = row[0] groupnames[grp] = name return name effectnames = {} def geteffectname(effect): """Get effect name from the new db""" if effect in effectnames: name = effectnames[effect] else: query = 'SELECT effectName FROM dgmeffects WHERE effectID = ?' new_cursor.execute(query, (effect,)) name = "" for row in new_cursor: name = row[0] if not name: old_cursor.execute(query, (effect,)) for row in old_cursor: name = row[0] effectnames[effect] = name return name attrnames = {} def getattrname(attr): """Get attribute name from the new db""" if attr in attrnames: name = attrnames[attr] else: query = 'SELECT attributeName FROM dgmattribs WHERE attributeID = ?' new_cursor.execute(query, (attr,)) name = "" for row in new_cursor: name = row[0] if not name: old_cursor.execute(query, (attr,)) for row in old_cursor: name = row[0] attrnames[attr] = name return name # State table S = {"unchanged": 0, "removed": 1, "changed": 2, "added": 3 } if effects or attributes or groups: # Format: # Key: item id # Value: [groupID, set(effects), {attribute id : value}] old_itmdata = {} new_itmdata = {} for cursor, dictionary in ((old_cursor, old_itmdata), (new_cursor, new_itmdata)): # Compose list of items we're interested in, filtered by category query = 'SELECT it.typeID, it.groupID FROM invtypes AS it INNER JOIN invgroups AS ig ON it.groupID = ig.groupID INNER JOIN invcategories AS ic ON ig.categoryID = ic.categoryID WHERE it.published = 1 AND ic.name IN ("Ship", "Module", "Charge", "Skill", "Drone", "Implant", "Subsystem", "Structure", "Structure Module", "Fighter")' cursor.execute(query) for row in cursor: itemid = row[0] groupID = row[1] # Initialize container for the data for each item with empty stuff besides groupID dictionary[itemid] = [groupID, set(), {}] # Add items filtered by group query = 'SELECT it.typeID, it.groupID FROM invtypes AS it INNER JOIN invgroups AS ig ON it.groupID = ig.groupID WHERE it.published = 1 AND ig.name IN ("Effect Beacon", "Ship Modifiers", "Mutaplasmids", "MassiveEnvironments", "Abyssal Hazards", "Non-Interactable Object")' cursor.execute(query) for row in cursor: itemid = row[0] groupID = row[1] dictionary[itemid] = [groupID, set(), {}] if effects: # Pull all eff query = 'SELECT it.typeID, de.effectID FROM invtypes AS it INNER JOIN dgmtypeeffects AS dte ON dte.typeID = it.typeID INNER JOIN dgmeffects AS de ON de.effectID = dte.effectID WHERE it.published = 1' cursor.execute(query) for row in cursor: itemid = row[0] effectID = row[1] # Process only items we need if itemid in dictionary: # Add effect to the set effectSet = dictionary[itemid][1] effectSet.add(effectID) if attributes: # Add attribute data for other attributes query = 'SELECT dta.typeID, dta.attributeID, dta.value FROM dgmtypeattribs AS dta' cursor.execute(query) for row in cursor: itemid = row[0] if itemid in dictionary: attrid = row[1] attrval = row[2] attrdict = dictionary[itemid][2] attrdict[attrid] = attrval # Get set of IDs from both dictionaries items_old = set(old_itmdata.keys()) items_new = set(new_itmdata.keys()) # Format: # Key: item state # Value: {item id: ((group state, old group, new group), {effect state: set(effects)}, {attribute state: {attributeID: (old value, new value)}})} global_itmdata = {} # Initialize it for state in S: global_itmdata[S[state]] = {} # Fill all the data for removed items for item in items_old.difference(items_new): # Set item state to removed state = S["removed"] # Set only old group for item oldgroup = old_itmdata[item][0] groupdata = (S["unchanged"], oldgroup, None) # Set old set of effects and mark all as unchanged effectsdata = {S["unchanged"]: set()} if effects: oldeffects = old_itmdata[item][1] effectsdata[S["unchanged"]].update(oldeffects) # Set old set of attributes and mark all as unchanged attrdata = {S["unchanged"]: {}} if attributes: oldattrs = old_itmdata[item][2] for attr in oldattrs: # NULL will mean there's no such attribute in db attrdata[S["unchanged"]][attr] = (oldattrs[attr], "NULL") # Fill global dictionary with data we've got global_itmdata[state][item] = (groupdata, effectsdata, attrdata) # Now, for added items for item in items_new.difference(items_old): # Set item state to added state = S["added"] # Set only new group for item newgroup = new_itmdata[item][0] groupdata = (S["unchanged"], None, newgroup) # Set new set of effects and mark all as unchanged effectsdata = {S["unchanged"]: set()} if effects: neweffects = new_itmdata[item][1] effectsdata[S["unchanged"]].update(neweffects) # Set new set of attributes and mark all as unchanged attrdata = {S["unchanged"]: {}} if attributes: newattrs = new_itmdata[item][2] for attr in newattrs: # NULL will mean there's no such attribute in db attrdata[S["unchanged"]][attr] = ("NULL", newattrs[attr]) # Fill global dictionary with data we've got global_itmdata[state][item] = (groupdata, effectsdata, attrdata) # Now, check all the items which exist in both databases for item in items_old.intersection(items_new): # Set group data for an item oldgroup = old_itmdata[item][0] newgroup = new_itmdata[item][0] # If we're not asked to compare groups, mark them as unchanged anyway groupdata = (S["changed"] if oldgroup != newgroup and groups else S["unchanged"], oldgroup, newgroup) # Fill effects data into appropriate groups effectsdata = {} for state in S: # We do not have changed effects whatsoever if state != "changed": effectsdata[S[state]] = set() if effects: oldeffects = old_itmdata[item][1] neweffects = new_itmdata[item][1] effectsdata[S["unchanged"]].update(oldeffects.intersection(neweffects)) effectsdata[S["removed"]].update(oldeffects.difference(neweffects)) effectsdata[S["added"]].update(neweffects.difference(oldeffects)) # Go through all attributes, filling global data dictionary attrdata = {} for state in S: attrdata[S[state]] = {} if attributes: oldattrs = old_itmdata[item][2] newattrs = new_itmdata[item][2] for attr in set(oldattrs.keys()).union(list(newattrs.keys())): # NULL will mean there's no such attribute in db oldattr = oldattrs.get(attr, "NULL") newattr = newattrs.get(attr, "NULL") attrstate = S["unchanged"] if oldattr == "NULL" and newattr != "NULL": attrstate = S["added"] elif oldattr != "NULL" and newattr == "NULL": attrstate = S["removed"] elif oldattr != newattr: attrstate = S["changed"] attrdata[attrstate][attr] = (oldattr, newattr) # Consider item as unchanged by default and set it to change when we see any changes in sub-items state = S["unchanged"] if state == S["unchanged"] and groupdata[0] != S["unchanged"]: state = S["changed"] if state == S["unchanged"] and (len(effectsdata[S["removed"]]) > 0 or len(effectsdata[S["added"]]) > 0): state = S["changed"] if state == S["unchanged"] and (len(attrdata[S["removed"]]) > 0 or len(attrdata[S["changed"]]) > 0 or len(attrdata[S["added"]]) > 0): state = S["changed"] # Fill global dictionary with data we've got global_itmdata[state][item] = (groupdata, effectsdata, attrdata) # As eos uses names as unique IDs in lot of places, we have to keep track of name changes if renames: ren_effects = {} query = 'SELECT effectID, effectName FROM dgmeffects' findrenames(ren_effects, query, strip = True) ren_attributes = {} query = 'SELECT attributeID, attributeName FROM dgmattribs' findrenames(ren_attributes, query) ren_categories = {} query = 'SELECT categoryID, name FROM invcategories' findrenames(ren_categories, query) ren_groups = {} query = 'SELECT groupID, name FROM invgroups' findrenames(ren_groups, query) ren_marketgroups = {} query = 'SELECT marketGroupID, marketGroupName FROM invmarketgroups' findrenames(ren_marketgroups, query) ren_items = {} query = 'SELECT typeID, typeName FROM invtypes' findrenames(ren_items, query) try: # Get db metadata old_meta = {} new_meta = {} query = 'SELECT field_name, field_value FROM metadata WHERE field_name LIKE "client_build"' old_cursor.execute(query) for row in old_cursor: old_meta[row[0]] = row[1] new_cursor.execute(query) for row in new_cursor: new_meta[row[0]] = row[1] except (KeyboardInterrupt, SystemExit): raise except: pass # Print jobs print(("Comparing databases:\n{0} -> {1}\n".format(old_meta.get("client_build"), new_meta.get("client_build")))) if renames: title = 'effects' printrenames(ren_effects, title) title = 'attributes' printrenames(ren_attributes, title) title = 'categories' printrenames(ren_categories, title) title = 'groups' printrenames(ren_groups, title) title = 'market groups' printrenames(ren_marketgroups, title) title = 'items' printrenames(ren_items, title) print print if effects or attributes or groups: # Print legend only when there're any interesting changes if len(global_itmdata[S["removed"]]) > 0 or len(global_itmdata[S["changed"]]) > 0 or len(global_itmdata[S["added"]]) > 0: genleg = "[+] - new item\n[-] - removed item\n[*] - changed item\n" grpleg = "(x => y) - group changes\n" if groups else "" attreffleg = " [+] - effect or attribute has been added to item\n [-] - effect or attribute has been removed from item\n" if attributes or effects else "" effleg = " [y] - effect is implemented\n [n] - effect is not implemented\n" if effects else "" print(("{0}{1}{2}{3}\nItems:".format(genleg, grpleg, attreffleg, effleg))) # Make sure our states are sorted stateorder = sorted(global_itmdata) TG = {S["unchanged"]: "+", S["changed"]: "*", S["removed"]: "-", S["added"]: "+"} # Cycle through states for itmstate in stateorder: # Skip unchanged items if itmstate == S["unchanged"]: continue items = global_itmdata[itmstate] # Sort by name first itemorder = sorted(items, key=lambda item: getitemname(item)) # Then by group id itemorder = sorted(itemorder, key=lambda item: items[item][0][2] or items[item][0][1]) # Then by category id itemorder = sorted(itemorder, key=lambda item: getgroupcat(items[item][0][2] or items[item][0][1])) for item in itemorder: groupdata = items[item][0] groupstr = " ({0} => {1})".format(getgroupname(groupdata[1]), getgroupname(groupdata[2])) if groupdata[0] == S["changed"] else "" print(("\n[{0}] {1}{2}".format(TG[itmstate], getitemname(item).encode('utf-8'), groupstr))) effdata = items[item][1] for effstate in stateorder: # Skip unchanged effect sets, but always include them for added or removed ships # Also, always skip empty data if (effstate == S["unchanged"] and itmstate not in (S["removed"], S["added"])) or effstate not in effdata: continue effects = effdata[effstate] efforder = sorted(effects, key=lambda eff: geteffectname(eff)) for eff in efforder: # Take tag from item if item was added or removed tag = TG[effstate] if itmstate not in (S["removed"], S["added"]) else TG[itmstate] print((" [{0}|{1}] {2}".format(tag, "y" if geteffst(eff) else "n", geteffectname(eff)))) attrdata = items[item][2] for attrstate in stateorder: # Skip unchanged and empty attribute sets, also skip attributes display for added and removed items if (attrstate == S["unchanged"] and itmstate != S["added"]) or itmstate in (S["removed"], ) or attrstate not in attrdata: continue attrs = attrdata[attrstate] attrorder = sorted(attrs, key=lambda attr: getattrname(attr)) for attr in attrorder: valline = "" if attrs[attr][0] == "NULL" or itmstate == S["added"]: valline = "{0}".format(attrs[attr][1] or 0) elif attrs[attr][1] == "NULL": valline = "{0}".format(attrs[attr][0] or 0) else: valline = "{0} => {1}".format(attrs[attr][0] or 0, attrs[attr][1] or 0) print((" [{0}] {1}: {2}".format(TG[attrstate], getattrname(attr), valline))) if __name__ == "__main__": parser = argparse.ArgumentParser(description="Compare two databases generated from eve dump to find eos-related differences") parser.add_argument("-o", "--old", type=str, help="path to old cache data dump, defaults to current pyfa eve.db", default=default_old) parser.add_argument("-n", "--new", type=str, required=True, help="path to new cache data dump") parser.add_argument("-g", "--nogroups", action="store_false", default=True, dest="groups", help="don't show changed groups") parser.add_argument("-e", "--noeffects", action="store_false", default=True, dest="effects", help="don't show list of changed effects") parser.add_argument("-a", "--noattributes", action="store_false", default=True, dest="attributes", help="don't show list of changed attributes") parser.add_argument("-r", "--norenames", action="store_false", default=True, dest="renames", help="don't show list of renamed data") args = parser.parse_args() main(args.old, args.new, args.groups, args.effects, args.attributes, args.renames) ================================================ FILE: scripts/msgfmt.py ================================================ #! /usr/bin/env python3 # Written by Martin v. Löwis """Generate binary message catalog from textual translation description. This program converts a textual Uniforum-style message catalog (.po file) into a binary GNU catalog (.mo file). This is essentially the same function as the GNU msgfmt program, however, it is a simpler implementation. Usage: msgfmt.py [OPTIONS] filename.po Options: -o file --output-file=file Specify the output file to write to. If omitted, output will go to a file named filename.mo (based off the input file name). -h --help Print this message and exit. -V --version Display version information and exit. """ import os import sys import ast import getopt import struct import array from email.parser import HeaderParser __version__ = "1.1" MESSAGES = {} def usage(code, msg=''): print(__doc__, file=sys.stderr) if msg: print(msg, file=sys.stderr) sys.exit(code) def add(id, str, fuzzy): "Add a non-fuzzy translation to the dictionary." global MESSAGES if not fuzzy and str: MESSAGES[id] = str def generate(): "Return the generated output." global MESSAGES # the keys are sorted in the .mo file keys = sorted(MESSAGES.keys()) offsets = [] ids = strs = b'' for id in keys: # For each string, we need size and file offset. Each string is NUL # terminated; the NUL does not count into the size. offsets.append((len(ids), len(id), len(strs), len(MESSAGES[id]))) ids += id + b'\0' strs += MESSAGES[id] + b'\0' output = '' # The header is 7 32-bit unsigned integers. We don't use hash tables, so # the keys start right after the index tables. # translated string. keystart = 7*4+16*len(keys) # and the values start after the keys valuestart = keystart + len(ids) koffsets = [] voffsets = [] # The string table first has the list of keys, then the list of values. # Each entry has first the size of the string, then the file offset. for o1, l1, o2, l2 in offsets: koffsets += [l1, o1+keystart] voffsets += [l2, o2+valuestart] offsets = koffsets + voffsets output = struct.pack("Iiiiiii", 0x950412de, # Magic 0, # Version len(keys), # # of entries 7*4, # start of key index 7*4+len(keys)*8, # start of value index 0, 0) # size and offset of hash table try: output += array.array("i", offsets).tostring() except AttributeError: output += array.array("i", offsets).tobytes() output += ids output += strs return output def reset(): "Reset module state." global MESSAGES MESSAGES.clear() def make(filename, outfile): ID = 1 STR = 2 # Compute .mo name from .po name and arguments if filename.endswith('.po'): infile = filename else: infile = filename + '.po' if outfile is None: outfile = os.path.splitext(infile)[0] + '.mo' try: lines = open(infile, 'rb').readlines() except IOError as msg: print(msg, file=sys.stderr) sys.exit(1) section = None fuzzy = 0 # Start off assuming Latin-1, so everything decodes without failure, # until we know the exact encoding encoding = 'latin-1' # Parse the catalog lno = 0 for l in lines: l = l.decode(encoding) lno += 1 # If we get a comment line after a msgstr, this is a new entry if l[0] == '#' and section == STR: add(msgid, msgstr, fuzzy) section = None fuzzy = 0 # Record a fuzzy mark if l[:2] == '#,' and 'fuzzy' in l: fuzzy = 1 # Skip comments if l[0] == '#': continue # Now we are in a msgid section, output previous section if l.startswith('msgid') and not l.startswith('msgid_plural'): if section == STR: add(msgid, msgstr, fuzzy) if not msgid: # See whether there is an encoding declaration p = HeaderParser() charset = p.parsestr(msgstr.decode(encoding)).get_content_charset() if charset: encoding = charset section = ID l = l[5:] msgid = msgstr = b'' is_plural = False # This is a message with plural forms elif l.startswith('msgid_plural'): if section != ID: print('msgid_plural not preceded by msgid on %s:%d' % (infile, lno), file=sys.stderr) sys.exit(1) l = l[12:] msgid += b'\0' # separator of singular and plural is_plural = True # Now we are in a msgstr section elif l.startswith('msgstr'): section = STR if l.startswith('msgstr['): if not is_plural: print('plural without msgid_plural on %s:%d' % (infile, lno), file=sys.stderr) sys.exit(1) l = l.split(']', 1)[1] if msgstr: msgstr += b'\0' # Separator of the various plural forms else: if is_plural: print('indexed msgstr required for plural on %s:%d' % (infile, lno), file=sys.stderr) sys.exit(1) l = l[6:] # Skip empty lines l = l.strip() if not l: continue l = ast.literal_eval(l) if section == ID: msgid += l.encode(encoding) elif section == STR: msgstr += l.encode(encoding) else: print('Syntax error on %s:%d' % (infile, lno), \ 'before:', file=sys.stderr) print(l, file=sys.stderr) sys.exit(1) # Add last entry if section == STR: add(msgid, msgstr, fuzzy) # Compute output output = generate() try: open(outfile,"wb").write(output) except IOError as msg: print(msg, file=sys.stderr) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hVo:', ['help', 'version', 'output-file=']) except getopt.error as msg: usage(1, msg) outfile = None # parse options for opt, arg in opts: if opt in ('-h', '--help'): usage(0) elif opt in ('-V', '--version'): print("msgfmt.py", __version__) sys.exit(0) elif opt in ('-o', '--output-file'): outfile = arg # do it if not args: print('No input file given', file=sys.stderr) print("Try `msgfmt --help' for more information.", file=sys.stderr) return for filename in args: make(filename, outfile) if __name__ == '__main__': main() ================================================ FILE: scripts/osx-package.sh ================================================ #!/usr/bin/env bash echo "Pyfa version (ENV):" echo "${PYFA_VERSION}" echo "Pyfa version (YAML):" cat version.yml echo "Building distributive..." python3 -m PyInstaller -y --clean dist_assets/mac/pyfa.spec echo "Compressing distributive..." cd dist zip -r "pyfa-$PYFA_VERSION-mac.zip" pyfa.app md5 -r "pyfa-$PYFA_VERSION-mac.zip" ================================================ FILE: scripts/osx-setup.sh ================================================ #!/usr/bin/env bash echo "Python version:" python3 --version echo "Upgrading pip..." python3 -m pip install --upgrade pip echo "Installing app requirements..." python3 -m pip install -r requirements.txt echo "Installing packaging tools..." python3 -m pip install PyInstaller==6.2.0 ================================================ FILE: scripts/osx-translations.sh ================================================ #!/usr/bin/env bash find locale/ -type f -name "*.po" -exec msgen "{}" -o "{}" \; ================================================ FILE: scripts/renders_update.py ================================================ #!/usr/bin/env python3 """ This script updates ship renders and removes unused ones. """ import argparse import os import re import sqlite3 from PIL import Image parser = argparse.ArgumentParser(description='This script updates ship renders for pyfa') parser.add_argument('-r', '--renders', required=True, type=str, help='path to unpacked Renders folder from CCP\'s image export') args = parser.parse_args() script_dir = os.path.dirname(os.path.abspath(__file__)) db_path = os.path.abspath(os.path.join(script_dir, '..', 'eve.db')) icons_dir = os.path.abspath(os.path.join(script_dir, '..', 'imgs', 'renders')) export_dir = os.path.abspath(os.path.expanduser(args.renders)) db = sqlite3.connect(db_path) cursor = db.cursor() RENDER_SIZE = (32, 32) query_ships = 'select it.typeID from invtypes as it inner join invgroups as ig on it.groupID = ig.groupID where ig.categoryID in (6, 65)' needed = set() existing = set() export = set() for row in cursor.execute(query_ships): needed.add(row[0]) for container, filedir in ( (existing, icons_dir), (export, export_dir) ): for fname in os.listdir(filedir): if not os.path.isfile(os.path.join(filedir, fname)): continue m = re.match(r'^(?P\d+)\.png', fname) if not m: continue container.add(int(m.group('typeid'))) toremove = existing.difference(needed) toupdate = existing.intersection(needed) toadd = needed.difference(existing) def crop_image(img): w, h = img.size if h == w: return img normal = min(h, w) diff_w = w - normal diff_h = h - normal crop_top = diff_h // 2 crop_bot = diff_h // 2 + diff_h % 2 crop_left = diff_w // 2 crop_right = diff_w // 2 + diff_w % 2 box = (crop_left, crop_top, w - crop_right, h - crop_bot) return img.crop(box) def get_render(type_id): fname = '{}.png'.format(type_id) fullpath = os.path.join(export_dir, fname) img = Image.open(fullpath) if img.size != RENDER_SIZE: img = crop_image(img) img.thumbnail(RENDER_SIZE, Image.ANTIALIAS) # Strip all additional image info (mostly for ICC color # profiles, see issue #337) img.info.clear() return img if toremove: print('Some renders are not used and will be removed:') for type_id in sorted(toremove): fullname = '{}.png'.format(type_id) print((' {}'.format(fullname))) fullpath = os.path.join(icons_dir, fullname) os.remove(fullpath) if toupdate: print(('Updating {} renders...'.format(len(toupdate)))) missing = toupdate.difference(export) toupdate.intersection_update(export) for type_id in sorted(toupdate): render = get_render(type_id) fname = '{}.png'.format(type_id) fullpath = os.path.join(icons_dir, fname) render.save(fullpath, 'png') if missing: print((' {} renders are missing in export:'.format(len(missing)))) for type_id in sorted(missing): print((' {}.png'.format(type_id))) if toadd: print(('Adding {} renders...'.format(len(toadd)))) missing = toadd.difference(export) toadd.intersection_update(export) for type_id in sorted(toadd): render = get_render(type_id) fname = '{}.png'.format(type_id) fullpath = os.path.join(icons_dir, fname) render.save(fullpath, 'png') if missing: print((' {} renders are missing in export:'.format(len(missing)))) for type_id in sorted(missing): print((' {}.png'.format(type_id))) ================================================ FILE: service/__init__.py ================================================ ================================================ FILE: service/ammo.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import math from collections import OrderedDict import wx from eos.const import FittingHardpoint from eos.saveddata.module import Module from eos.utils.stats import DmgTypes from service.market import Market _t = wx.GetTranslation class Ammo: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Ammo() return cls.instance @staticmethod def getModuleFlatAmmo(mod): sMkt = Market.getInstance() if mod is None or mod.isEmpty: return set() chargeSet = set() # Do not try to grab it for t3d modes which can also be passed as part of selection if isinstance(mod, Module): for charge in mod.getValidCharges(): if sMkt.getPublicityByItem(charge): chargeSet.add(charge) return chargeSet @classmethod def getModuleStructuredAmmo(cls, mod, ammo=None): chargesFlat = cls.getModuleFlatAmmo(mod) if ammo is None else ammo # Make sure we do not consider mining turrets as combat turrets if mod.hardpoint == FittingHardpoint.TURRET and not mod.getModifiedItemAttr('miningAmount'): def turretSorter(charge): damage = 0 range_ = (mod.item.getAttribute('maxRange')) * \ (charge.getAttribute('weaponRangeMultiplier') or 1) falloff = (mod.item.getAttribute('falloff') or 0) * \ (charge.getAttribute('fallofMultiplier') or 1) for type_ in DmgTypes.names(): d = charge.getAttribute('%sDamage' % type_, default=0) if d > 0: damage += d # Take optimal and falloff as range factor rangeFactor = range_ + falloff return -rangeFactor, charge.typeName.rsplit()[-2:], damage, charge.name all = OrderedDict() sub = [] prevNameBase = None prevRange = None for charge in sorted(chargesFlat, key=turretSorter): if 'civilian' in charge.typeName.lower(): continue currNameBase = ' '.join(charge.typeName.rsplit()[-2:]) currRange = charge.getAttribute('weaponRangeMultiplier') if sub and (currRange != prevRange or currNameBase != prevNameBase): all[sub[0].name] = sub sub = [] sub.append(charge) prevNameBase = currNameBase prevRange = currRange else: if sub: all[sub[0].name] = sub return 'ddTurret', all elif mod.hardpoint == FittingHardpoint.MISSILE and mod.item.name != 'Festival Launcher': def getChargeDamageInfo(charge): # Set up data storage for missile damage stuff damageMap = {} totalDamage = 0 # Fill them with the data about charge for damageType in DmgTypes.names(): currentDamage = charge.getAttribute('{}Damage'.format(damageType)) or 0 damageMap[damageType] = currentDamage totalDamage += currentDamage # Detect type of ammo chargeDamageType = None for damageType in damageMap: # If all damage belongs to certain type purely, set appropriate # ammoType if damageMap[damageType] == totalDamage: chargeDamageType = damageType break # Else consider ammo as mixed damage if chargeDamageType is None: chargeDamageType = 'mixed' return chargeDamageType, totalDamage def missileSorter(charge): # Get charge damage type and total damage chargeDamageType, totalDamage = getChargeDamageInfo(charge) # Find its position in sort list try: position = DmgTypes.names().index(chargeDamageType) # Put charges which have non-standard damage type after charges with # standard damage type except ValueError: position = math.inf return position, totalDamage, charge.name all = OrderedDict() sub = [] prevType = None for charge in sorted(chargesFlat, key=missileSorter): currType = getChargeDamageInfo(charge)[0] if sub and currType != prevType: all[prevType] = sub sub = [] sub.append(charge) prevType = currType else: if sub: all[prevType] = sub return 'ddMissile', all elif mod.item.group.name == 'Frequency Mining Laser': def crystalSorter(charge): if charge.name.endswith(' II'): techLvl = 2 elif charge.name.endswith(' I'): techLvl = 1 else: techLvl = 0 if ' A ' in charge.name: type_ = 'A' elif ' B ' in charge.name: type_ = 'B' elif ' C ' in charge.name: type_ = 'C' else: type_ = '0' return type_, techLvl, charge.name typeMap = { 253: 'a1', 254: 'a2', 255: 'a3', 256: 'a4', 257: 'a5', 258: 'a6', 259: 'r4', 260: 'r8', 261: 'r16', 262: 'r32', 263: 'r64', 859: 'err'} prelim = {} for charge in chargesFlat: oreTypeList = charge.getAttribute('specializationAsteroidTypeList') category = typeMap.get(oreTypeList, _t('Misc')) prelim.setdefault(category, set()).add(charge) final = OrderedDict() for category, charges in prelim.items(): final[category] = sorted(charges, key=crystalSorter) return 'miner', final else: def nameSorter(charge): parts = charge.name.split(" ") return [int(p) if p.isdigit() else p for p in parts] return 'general', {'general': sorted(chargesFlat, key=nameSorter)} ================================================ FILE: service/attribute.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import eos.db class Attribute: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Attribute() return cls.instance @staticmethod def getAttributeInfo(identity): if isinstance(identity, (int, str)): info = eos.db.getAttributeInfo(identity, eager="unit") elif isinstance(identity, (int, float)): id_ = int(identity) info = eos.db.getAttributeInfo(id_, eager="unit") else: info = None return info ================================================ FILE: service/character.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import sys import copy import itertools import json from logbook import Logger import threading from codecs import open from xml.etree import ElementTree from xml.dom import minidom import gzip # noinspection PyPackageRequirements import wx import config import eos.db from service.esi import Esi from eos.saveddata.implant import Implant as es_Implant from eos.saveddata.character import Character as es_Character, Skill from eos.saveddata.module import Module as es_Module from eos.const import FittingSlot as es_Slot from eos.saveddata.fighter import Fighter as es_Fighter pyfalog = Logger(__name__) _t = wx.GetTranslation class CharacterImportThread(threading.Thread): def __init__(self, paths, callback): threading.Thread.__init__(self) self.name = "CharacterImport" self.paths = paths self.callback = callback self.running = True def run(self): paths = self.paths sCharacter = Character.getInstance() all5_character = es_Character("All 5", 5) all_skill_ids = [] for skill in all5_character.skills: # Parse out the skill item IDs to make searching it easier later on all_skill_ids.append(skill.itemID) for path in paths: if not self.running: break try: charFile = open(path, mode='r').read() doc = minidom.parseString(charFile) if doc.documentElement.tagName not in ("SerializableCCPCharacter", "SerializableUriCharacter"): pyfalog.error("Incorrect EVEMon XML sheet") raise RuntimeError("Incorrect EVEMon XML sheet") name = doc.getElementsByTagName("name")[0].firstChild.nodeValue securitystatus = doc.getElementsByTagName("securityStatus")[0].firstChild.nodeValue or 0 skill_els = doc.getElementsByTagName("skill") skills = [] for skill in skill_els: if int(skill.getAttribute("typeID")) in all_skill_ids and (0 <= int(skill.getAttribute("level")) <= 5): skills.append({ "typeID": int(skill.getAttribute("typeID")), "level": int(skill.getAttribute("level")), }) else: pyfalog.error( "Attempted to import unknown skill {0} (ID: {1}) (Level: {2})", skill.getAttribute("name"), skill.getAttribute("typeID"), skill.getAttribute("level"), ) char = sCharacter.new(name + " (EVEMon)") sCharacter.apiUpdateCharSheet(char.ID, skills, securitystatus) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.error("Exception on character import:") pyfalog.error(e) continue wx.CallAfter(self.callback) def stop(self): self.running = False class SkillBackupThread(threading.Thread): def __init__(self, path, saveFmt, activeFit, callback): threading.Thread.__init__(self) self.name = "SkillBackup" self.path = path self.saveFmt = saveFmt self.activeFit = activeFit self.callback = callback self.running = True def run(self): path = self.path sCharacter = Character.getInstance() backupData = None if self.running: if self.saveFmt == "xml" or self.saveFmt == "emp": backupData = sCharacter.exportXml() else: backupData = sCharacter.exportText() if self.running and backupData is not None: if self.saveFmt == "emp": with gzip.open(path, mode='wb') as backupFile: backupFile.write(backupData.encode()) else: with open(path, mode='w', encoding='utf-8') as backupFile: backupFile.write(backupData) wx.CallAfter(self.callback) def stop(self): self.running = False class Character: instance = None skillReqsDict = {} @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Character() return cls.instance def __init__(self): # Simply initializes default characters in case they aren't in the database yet self.all0() self.all5() def exportText(self): data = "Pyfa exported plan for \"" + self.skillReqsDict['charname'] + "\"\n" data += "=" * 79 + "\n" data += "\n" item = "" try: for s in self.skillReqsDict['skills']: if item == "" or not item == s["item"]: item = s["item"] data += "-" * 79 + "\n" data += "Skills required for {}:\n".format(item) data += "{}{}: {}\n".format(" " * s["indent"], s["skill"], int(s["level"])) data += "-" * 79 + "\n" except (KeyboardInterrupt, SystemExit): raise except Exception: pass return data def exportXml(self): root = ElementTree.Element("plan") root.attrib["name"] = "Pyfa exported plan for " + self.skillReqsDict['charname'] root.attrib["revision"] = config.evemonMinVersion sorts = ElementTree.SubElement(root, "sorting") sorts.attrib["criteria"] = "None" sorts.attrib["order"] = "None" sorts.attrib["groupByPriority"] = "false" skillsSeen = set() for s in self.skillReqsDict['skills']: skillKey = str(s["skillID"]) + "::" + s["skill"] + "::" + str(int(s["level"])) if skillKey in skillsSeen: pass # Duplicate skills confuse EVEMon else: skillsSeen.add(skillKey) entry = ElementTree.SubElement(root, "entry") entry.attrib["skillID"] = str(s["skillID"]) entry.attrib["skill"] = s["skill"] entry.attrib["level"] = str(int(s["level"])) entry.attrib["priority"] = "3" entry.attrib["type"] = "Prerequisite" notes = ElementTree.SubElement(entry, "notes") notes.text = entry.attrib["skill"] # tree = ElementTree.ElementTree(root) data = ElementTree.tostring(root, 'utf-8') prettydata = minidom.parseString(data).toprettyxml(indent=" ") return prettydata @staticmethod def backupSkills(path, saveFmt, activeFit, callback): thread = SkillBackupThread(path, saveFmt, activeFit, callback) pyfalog.debug("Starting backup skills thread.") thread.start() @staticmethod def importCharacter(path, callback): thread = CharacterImportThread(path, callback) pyfalog.debug("Starting import character thread.") thread.start() @staticmethod def all0(): return es_Character.getAll0() def all0ID(self): return self.all0().ID @staticmethod def all5(): return es_Character.getAll5() def all5ID(self): return self.all5().ID @staticmethod def getAlphaCloneList(): return eos.db.getAlphaCloneList() @staticmethod def getCharacterList(): return eos.db.getCharacterList() @staticmethod def getCharacter(identity): char = eos.db.getCharacter(identity) return char def saveCharacter(self, charID): """Save edited skills""" if charID == self.all5ID() or charID == self.all0ID(): return char = eos.db.getCharacter(charID) char.saveLevels() @staticmethod def saveCharacterAs(charID, newName): """Save edited skills as a new character""" char = eos.db.getCharacter(charID) newChar = copy.deepcopy(char) newChar.name = newName eos.db.save(newChar) # revert old char char.revertLevels() return newChar.ID @staticmethod def revertCharacter(charID): """Rollback edited skills""" char = eos.db.getCharacter(charID) char.revertLevels() @staticmethod def getSkillGroups(): cat = eos.db.getCategory(16) groups = [] for grp in cat.groups: if grp.published: groups.append((grp.ID, grp.name)) return sorted(groups, key=lambda x: x[1]) @staticmethod def getSkills(groupID): group = eos.db.getGroup(groupID) skills = [] for skill in group.items: if skill.published is True: skills.append((skill.ID, skill.name)) return sorted(skills, key=lambda x: x[1]) @staticmethod def getSkillsByName(text): items = eos.db.searchSkills(text) skills = [] for skill in items: if skill.published is True: skills.append((skill.ID, skill.name)) return sorted(skills, key=lambda x: x[1]) @staticmethod def setAlphaClone(char, cloneID): char.alphaCloneID = cloneID eos.db.commit() @staticmethod def setSecStatus(char, secStatus): char.secStatus = secStatus eos.db.commit() @staticmethod def getSkillDescription(itemID): return eos.db.getItem(itemID).description @staticmethod def getGroupDescription(groupID): return eos.db.getMarketGroup(groupID).description @staticmethod def getSkillLevel(charID, skillID): skill = eos.db.getCharacter(charID).getSkill(skillID) return float(skill.level) if skill.learned else _t("Not learned"), skill.isDirty @staticmethod def getDirtySkills(charID): return eos.db.getCharacter(charID).dirtySkills @staticmethod def getCharName(charID): return eos.db.getCharacter(charID).name @staticmethod def new(name="New Character"): char = es_Character(name) eos.db.save(char) return char @staticmethod def rename(char, newName): if char.name in ("All 0", "All 5"): pyfalog.info("Cannot rename built in characters.") else: char.name = newName eos.db.commit() @staticmethod def copy(char): newChar = copy.deepcopy(char) eos.db.save(newChar) return newChar @staticmethod def delete(char): eos.db.remove(char) @staticmethod def getApiDetails(charID): # todo: fix this (or get rid of?) return "", "", "", [] char = eos.db.getCharacter(charID) if char.chars is not None: chars = json.loads(char.chars) else: chars = None return char.apiID or "", char.apiKey or "", char.defaultChar or "", chars or [] @staticmethod def getSsoCharacter(charID): char = eos.db.getCharacter(charID) sso = char.getSsoCharacter(config.getClientSecret()) return sso @staticmethod def setSsoCharacter(charID, ssoCharID): char = eos.db.getCharacter(charID) if ssoCharID is not None: sso = eos.db.getSsoCharacter(ssoCharID, config.getClientSecret()) char.setSsoCharacter(sso, config.getClientSecret()) else: char.setSsoCharacter(None, config.getClientSecret()) eos.db.commit() def apiFetch(self, charID, callback): thread = UpdateAPIThread(charID, (self.apiFetchCallback, callback)) thread.start() def apiFetchCallback(self, guiCallback, e=None): eos.db.commit() wx.CallAfter(guiCallback, e) @staticmethod def apiUpdateCharSheet(charID, skills, securitystatus): char = eos.db.getCharacter(charID) char.apiUpdateCharSheet(skills, securitystatus) eos.db.commit() @classmethod def changeLevel(cls, charID, skillID, level, persist=False, ifHigher=False): char = eos.db.getCharacter(charID) skill = char.getSkill(skillID) if ifHigher and level < skill.level: return if isinstance(level, str) or level > 5 or level < 0: skill.setLevel(None, persist) eos.db.commit() elif skill.level != level: cls._trainSkillReqs(char, skill, persist) skill.setLevel(level, persist) eos.db.commit() @classmethod def _trainSkillReqs(cls, char, skill, persist): for childSkillItem, neededSkillLevel in skill.item.requiredSkills.items(): childSkill = char.getSkill(childSkillItem.ID) if childSkill.level < neededSkillLevel: childSkill.setLevel(neededSkillLevel, persist) cls._trainSkillReqs(char, childSkill, persist) @staticmethod def revertLevel(charID, skillID): char = eos.db.getCharacter(charID) skill = char.getSkill(skillID) skill.revert() @staticmethod def saveSkill(charID, skillID): char = eos.db.getCharacter(charID) skill = char.getSkill(skillID) skill.saveLevel() @staticmethod def addImplant(charID, itemID): char = eos.db.getCharacter(charID) if char.ro: pyfalog.error("Trying to add implant to read-only character") return implant = es_Implant(eos.db.getItem(itemID)) char.implants.makeRoom(implant) char.implants.append(implant) eos.db.commit() @staticmethod def removeImplant(charID, implant): char = eos.db.getCharacter(charID) char.implants.remove(implant) eos.db.commit() @staticmethod def getImplants(charID): char = eos.db.getCharacter(charID) return char.implants def checkRequirements(self, fit): # toCheck = [] reqs = {} for thing in itertools.chain(fit.modules, fit.drones, fit.fighters, (fit.ship,), fit.appliedImplants, fit.boosters): if isinstance(thing, es_Module) and thing.slot == es_Slot.RIG: continue for attr in ("item", "charge"): if attr == "charge" and isinstance(thing, es_Fighter): # Fighter Bombers are automatically charged with micro bombs. # These have skill requirements attached, but aren't used in EVE. continue subThing = getattr(thing, attr, None) subReqs = {} if subThing is not None: if isinstance(thing, es_Fighter) and attr == "charge": continue self._checkRequirements(fit.character, subThing, subReqs) if subReqs: reqs[subThing] = subReqs return reqs def _checkRequirements(self, char, subThing, reqs): for req, level in subThing.requiredSkills.items(): name = req.name ID = req.ID info = reqs.get(name) currLevel, subs = info if info is not None else 0, {} if level > currLevel and (char is None or char.getSkill(req).level < level): reqs[name] = (level, ID, subs) self._checkRequirements(char, req, subs) return reqs class UpdateAPIThread(threading.Thread): def __init__(self, charID, callback): threading.Thread.__init__(self) self.name = "CheckUpdate" self.callback = callback self.charID = charID self.running = True def run(self): try: char = eos.db.getCharacter(self.charID) sEsi = Esi.getInstance() sChar = Character.getInstance() ssoChar = sChar.getSsoCharacter(char.ID) if not self.running: self.callback[0](self.callback[1]) return resp = sEsi.getSkills(ssoChar.ID) if not self.running: self.callback[0](self.callback[1]) return # todo: check if alpha. if so, pop up a question if they want to apply it as alpha. Use threading events to set the answer? char.clearSkills() for skillRow in resp["skills"]: char.addSkill(Skill(char, skillRow["skill_id"], skillRow["trained_skill_level"])) if not self.running: self.callback[0](self.callback[1]) return resp = sEsi.getSecStatus(ssoChar.ID) char.secStatus = resp['security_status'] self.callback[0](self.callback[1]) except (KeyboardInterrupt, SystemExit): raise except Exception as ex: pyfalog.warn(ex) self.callback[0](self.callback[1], sys.exc_info()) def stop(self): self.running = False ================================================ FILE: service/const.py ================================================ # ============================================================================= # Copyright (C) 2019 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from enum import Enum, IntEnum, unique, auto as autoId @unique class EsiLoginMethod(IntEnum): """ Contains the method of ESI login """ SERVER = 0 MANUAL = 1 @unique class EsiSsoMode(IntEnum): """ Contains the mode of ESI sso mode """ AUTO = 0 CUSTOM = 1 class EsiEndpoints(Enum): """ Contains the endpoint paths for the ESI access """ CHAR = "/v5/characters/{character_id}/" CHAR_SKILLS = "/v4/characters/{character_id}/skills/" CHAR_FITTINGS = "/v2/characters/{character_id}/fittings/" CHAR_DEL_FIT = "/v1/characters/{character_id}/fittings/{fitting_id}/" DYNAMIC_ITEM = "/v1/dogma/dynamic/items/{type_id}/{item_id}/" @unique class PortMultiBuyOptions(IntEnum): """ Contains different types of items for multibuy export """ IMPLANTS = 1 CARGO = 2 LOADED_CHARGES = 3 OPTIMIZE_PRICES = 4 BOOSTERS = 5 @unique class PortEftOptions(IntEnum): """ Contains different options for eft-export """ IMPLANTS = 1 MUTATIONS = 2 LOADED_CHARGES = 3 CARGO = 4 BOOSTERS = 5 @unique class PortEftRigSize(IntEnum): """ Contains different sizes of ship rigs This enum is not actively used, but maybe useful someday. """ SMALL = 1 MEDIUM = 2 LARGE = 3 CAPITAL = 4 @unique class PortDnaOptions(IntEnum): """ Contains different types of items for DNA export """ FORMATTING = 1 @unique class GuiAttrGroup(IntEnum): """ Define the various groups of attributes. This enum is used for GUI functions and getting redefined in /gui/builtinItemStatsViews/attributeGrouping.py """ FITTING = autoId() STRUCTURE = autoId() SHIELD = autoId() ARMOR = autoId() TARGETING = autoId() EWAR_RESISTS = autoId() CAPACITOR = autoId() SHARED_FACILITIES = autoId() FIGHTER_FACILITIES = autoId() ON_DEATH = autoId() JUMP_SYSTEMS = autoId() PROPULSIONS = autoId() FIGHTERS = autoId() SHIP_GROUP = autoId() @unique class GraphDpsDroneMode(IntEnum): auto = 1 followAttacker = 2 followTarget = 3 @unique class GraphCacheCleanupReason(IntEnum): fitChanged = autoId() fitRemoved = autoId() profileChanged = autoId() profileRemoved = autoId() graphSwitched = autoId() inputChanged = autoId() optionChanged = autoId() resistModeChanged = autoId() hpEffectivityChanged = autoId() @unique class TargetResistMode(IntEnum): auto = autoId() shield = autoId() armor = autoId() hull = autoId() weightedAverage = autoId() @unique class GraphColor(IntEnum): red = autoId() green = autoId() blue = autoId() yellow = autoId() cyan = autoId() magenta = autoId() orange = autoId() purple = autoId() @unique class GraphLightness(IntEnum): normal = autoId() dark = autoId() bright = autoId() @unique class GraphLineStyle(IntEnum): solid = autoId() dashed = autoId() dotted = autoId() dashdotted = autoId() ================================================ FILE: service/conversions/__init__.py ================================================ """ This module contains a list of item conversions that need to be done for pyfa. Each file in this module must contain a dictionary named CONVERSIONS in the format of convertFrom: convertTo, with both key and value being a string of the item's name. The name of the file is usually arbitrary unless it's used in logic elsewhere (in which case can be accessed with packs[name]) """ from eos.utils.pyinst_support import iterNamespace # init parent dict all = {} # init container to store the separate conversion packs in case we need them packs = {} for modName in iterNamespace(__name__, __path__): conversionPack = __import__(modName, fromlist="dummy") all.update(conversionPack.CONVERSIONS) modname_tail = modName.rsplit('.', 1)[-1] packs[modname_tail] = conversionPack.CONVERSIONS ================================================ FILE: service/conversions/releaseApr2020.py ================================================ """ Conversion pack for April 2020 release """ CONVERSIONS = { # Renamed items, extracted via diff file "Adaptive Invulnerability Field I": "Adaptive Invulnerability Shield Hardener I", "Gistum C-Type Adaptive Invulnerability Field": "Gistum C-Type Adaptive Invulnerability Shield Hardener", "Adaptive Invulnerability Field II": "Adaptive Invulnerability Shield Hardener II", "Explosive Deflection Field I": "Anti-Explosive Shield Hardener I", "Kinetic Deflection Field I": "Anti-Kinetic Shield Hardener I", "EM Ward Field I": "Anti-EM Shield Hardener I", "Thermal Dissipation Field I": "Anti-Thermal Shield Hardener I", "Explosive Deflection Field II": "Anti-Explosive Shield Hardener II", "Kinetic Deflection Field II": "Anti-Kinetic Shield Hardener II", "EM Ward Field II": "Anti-EM Shield Hardener II", "Thermal Dissipation Field II": "Anti-Thermal Shield Hardener II", "Gistum B-Type Adaptive Invulnerability Field": "Gistum B-Type Adaptive Invulnerability Shield Hardener", "Gistum A-Type Adaptive Invulnerability Field": "Gistum A-Type Adaptive Invulnerability Shield Hardener", "Pithum A-Type Adaptive Invulnerability Field": "Pithum A-Type Adaptive Invulnerability Shield Hardener", "Pithum B-Type Adaptive Invulnerability Field": "Pithum B-Type Adaptive Invulnerability Shield Hardener", "Pithum C-Type Adaptive Invulnerability Field": "Pithum C-Type Adaptive Invulnerability Shield Hardener", "Limited Kinetic Deflection Field I": "Compact Anti-Kinetic Shield Hardener", "Limited 'Anointed' EM Ward Field": "Compact Anti-EM Shield Hardener", "Limited Adaptive Invulnerability Field I": "Compact Adaptive Invulnerability Shield Hardener", "Limited Explosive Deflection Field I": "Compact Anti-Explosive Shield Hardener", "Limited Thermal Dissipation Field I": "Compact Anti-Thermal Shield Hardener", "Dread Guristas EM Ward Field": "Dread Guristas Anti-EM Shield Hardener", "Dread Guristas Thermal Dissipation Field": "Dread Guristas Anti-Thermal Shield Hardener", "Dread Guristas Explosive Deflection Field": "Dread Guristas Anti-Explosive Shield Hardener", "Dread Guristas Kinetic Deflection Field": "Dread Guristas Anti-Kinetic Shield Hardener", "Dread Guristas Adaptive Invulnerability Field": "Dread Guristas Adaptive Invulnerability Shield Hardener", "Domination EM Ward Field": "Domination Anti-EM Shield Hardener", "Domination Thermal Dissipation Field": "Domination Anti-Thermal Shield Hardener", "Domination Explosive Deflection Field": "Domination Anti-Explosive Shield Hardener", "Domination Kinetic Deflection Field": "Domination Anti-Kinetic Shield Hardener", "Domination Adaptive Invulnerability Field": "Domination Adaptive Invulnerability Shield Hardener", "Kaikka's Modified Kinetic Deflection Field": "Kaikka's Modified Anti-Kinetic Shield Hardener", "Thon's Modified Kinetic Deflection Field": "Thon's Modified Anti-Kinetic Shield Hardener", "Vepas's Modified Kinetic Deflection Field": "Vepas's Modified Anti-Kinetic Shield Hardener", "Estamel's Modified Kinetic Deflection Field": "Estamel's Modified Anti-Kinetic Shield Hardener", "Kaikka's Modified EM Ward Field": "Kaikka's Modified Anti-EM Shield Hardener", "Thon's Modified EM Ward Field": "Thon's Modified Anti-EM Shield Hardener", "Vepas's Modified EM Ward Field": "Vepas's Modified Anti-EM Shield Hardener", "Estamel's Modified EM Ward Field": "Estamel's Modified Anti-EM Shield Hardener", "Kaikka's Modified Explosive Deflection Field": "Kaikka's Modified Anti-Explosive Shield Hardener", "Thon's Modified Explosive Deflection Field": "Thon's Modified Anti-Explosive Shield Hardener", "Vepas's Modified Explosive Deflection Field": "Vepas's Modified Anti-Explosive Shield Hardener", "Estamel's Modified Explosive Deflection Field": "Estamel's Modified Anti-Explosive Shield Hardener", "Kaikka's Modified Thermal Dissipation Field": "Kaikka's Modified Anti-Thermal Shield Hardener", "Thon's Modified Thermal Dissipation Field": "Thon's Modified Anti-Thermal Shield Hardener", "Vepas's Modified Thermal Dissipation Field": "Vepas's Modified Anti-Thermal Shield Hardener", "Estamel's Modified Thermal Dissipation Field": "Estamel's Modified Anti-Thermal Shield Hardener", "Kaikka's Modified Adaptive Invulnerability Field": "Kaikka's Modified Adaptive Invulnerability Shield Hardener", "Thon's Modified Adaptive Invulnerability Field": "Thon's Modified Adaptive Invulnerability Shield Hardener", "Vepas's Modified Adaptive Invulnerability Field": "Vepas's Modified Adaptive Invulnerability Shield Hardener", "Estamel's Modified Adaptive Invulnerability Field": "Estamel's Modified Adaptive Invulnerability Shield Hardener", "Caldari Navy Kinetic Deflection Field": "Caldari Navy Anti-Kinetic Shield Hardener", "Caldari Navy Explosive Deflection Field": "Caldari Navy Anti-Explosive Shield Hardener", "Caldari Navy Thermal Dissipation Field": "Caldari Navy Anti-Thermal Shield Hardener", "Caldari Navy Adaptive Invulnerability Field": "Caldari Navy Adaptive Invulnerability Shield Hardener", "Caldari Navy EM Ward Field": "Caldari Navy Anti-EM Shield Hardener", "Gist C-Type Kinetic Deflection Field": "Gist C-Type Anti-Kinetic Shield Hardener", "Pith C-Type Kinetic Deflection Field": "Pith C-Type Anti-Kinetic Shield Hardener", "Gist C-Type Explosive Deflection Field": "Gist C-Type Anti-Explosive Shield Hardener", "Pith C-Type Explosive Deflection Field": "Pith C-Type Anti-Explosive Shield Hardener", "Gist C-Type Thermal Dissipation Field": "Gist C-Type Anti-Thermal Shield Hardener", "Pith C-Type Thermal Dissipation Field": "Pith C-Type Anti-Thermal Shield Hardener", "Gist C-Type EM Ward Field": "Gist C-Type Anti-EM Shield Hardener", "Pith C-Type EM Ward Field": "Pith C-Type Anti-EM Shield Hardener", "Gist B-Type EM Ward Field": "Gist B-Type Anti-EM Shield Hardener", "Pith B-Type EM Ward Field": "Pith B-Type Anti-EM Shield Hardener", "Gist B-Type Thermal Dissipation Field": "Gist B-Type Anti-Thermal Shield Hardener", "Pith B-Type Thermal Dissipation Field": "Pith B-Type Anti-Thermal Shield Hardener", "Gist B-Type Explosive Deflection Field": "Gist B-Type Anti-Explosive Shield Hardener", "Pith B-Type Explosive Deflection Field": "Pith B-Type Anti-Explosive Shield Hardener", "Gist B-Type Kinetic Deflection Field": "Gist B-Type Anti-Kinetic Shield Hardener", "Pith B-Type Kinetic Deflection Field": "Pith B-Type Anti-Kinetic Shield Hardener", "Gist A-Type Kinetic Deflection Field": "Gist A-Type Anti-Kinetic Shield Hardener", "Pith A-Type Kinetic Deflection Field": "Pith A-Type Anti-Kinetic Shield Hardener", "Gist A-Type Explosive Deflection Field": "Gist A-Type Anti-Explosive Shield Hardener", "Pith A-Type Explosive Deflection Field": "Pith A-Type Anti-Explosive Shield Hardener", "Gist A-Type Thermal Dissipation Field": "Gist A-Type Anti-Thermal Shield Hardener", "Pith A-Type Thermal Dissipation Field": "Pith A-Type Anti-Thermal Shield Hardener", "Gist A-Type EM Ward Field": "Gist A-Type Anti-EM Shield Hardener", "Pith A-Type EM Ward Field": "Pith A-Type Anti-EM Shield Hardener", "Gist X-Type EM Ward Field": "Gist X-Type Anti-EM Shield Hardener", "Pith X-Type EM Ward Field": "Pith X-Type Anti-EM Shield Hardener", "Gist X-Type Thermal Dissipation Field": "Gist X-Type Anti-Thermal Shield Hardener", "Pith X-Type Thermal Dissipation Field": "Pith X-Type Anti-Thermal Shield Hardener", "Gist X-Type Explosive Deflection Field": "Gist X-Type Anti-Explosive Shield Hardener", "Pith X-Type Explosive Deflection Field": "Pith X-Type Anti-Explosive Shield Hardener", "Gist X-Type Kinetic Deflection Field": "Gist X-Type Anti-Kinetic Shield Hardener", "Pith X-Type Kinetic Deflection Field": "Pith X-Type Anti-Kinetic Shield Hardener", "'Nugget' Kinetic Deflection Field": "'Nugget' Anti-Kinetic Shield Hardener", "'Desert Heat' Thermal Dissipation Field": "'Desert Heat' Anti-Thermal Shield Hardener", "'Posse' Adaptive Invulnerability Field": "'Posse' Adaptive Invulnerability Shield Hardener", "'Poacher' EM Ward Field": "'Poacher' Anti-EM Shield Hardener", "'Snake Eyes' Explosive Deflection Field": "'Snake Eyes' Anti-Explosive Shield Hardener", "Civilian Thermal Dissipation Field": "Civilian Anti-Thermal Shield Hardener", "Civilian EM Ward Field": "Civilian Anti-EM Shield Hardener", "Civilian Explosive Deflection Field": "Civilian Anti-Explosive Shield Hardener", "Civilian Kinetic Deflection Field": "Civilian Anti-Kinetic Shield Hardener" } ================================================ FILE: service/conversions/releaseApril2016.py ================================================ """ Conversion pack for Citadel release """ CONVERSIONS = { # Renamed items "Capital Inefficient Armor Repair Unit": "CONCORD Capital Armor Repairer", "Capital Neutron Saturation Injector I": "CONCORD Capital Shield Booster", "Limited Mega Ion Siege Blaster I": "CONCORD Ion Siege Blaster", "Dual 1000mm 'Scout' Accelerator Cannon": "CONCORD Dual 1000mm Railgun", "Dual Modal Giga Pulse Laser I": "CONCORD Dual Giga Pulse Laser", "Dual Giga Modal Laser I": "CONCORD Dual Giga Beam Laser", "'Limos' XL Cruise Launcher I": "CONCORD XL Cruise Missile Launcher", "Shock 'Limos' XL Torpedo Bay I": "CONCORD XL Torpedo Launcher", "Quad 3500mm Gallium Cannon": "CONCORD Quad 3500mm Siege Artillery", "6x2500mm Heavy Gallium Repeating Cannon": "CONCORD Hexa 2500mm Repeating Cannon", "Capital Murky Remote Capacitor Transmitter": "CONCORD Capital Remote Capacitor Transmitter", "Ion Siege Blaster Cannon I": "Ion Siege Blaster I", "6x2500mm Repeating Cannon I": "Hexa 2500mm Repeating Cannon I", "Templar": "Templar I", "Dragonfly": "Dragonfly I", "Firbolg": "Firbolg I", "Einherji": "Einherji I", "Gjallarhorn": "'Gjallarhorn' Explosive Doomsday", "Drone Control Unit I": "Fighter Support Unit I", "Judgement": "'Judgment' Electromagnetic Doomsday", "Oblivion": "'Oblivion' Kinetic Doomsday", "Aurora Ominae": "'Aurora Ominae' Thermal Doomsday", "Advanced Drone Interfacing": "Fighter Hangar Management", "Remote ECM Burst I": "ECM Jammer Burst Projector", "Projected Electronic Counter Measures": "Burst Projector Operation", "Cyclops": "Cyclops I", "Fighter Bombers": "Heavy Fighters", "Malleus": "Malleus I", "Tyrfing": "Tyrfing I", "Mantis": "Mantis I", "XL Cruise Launcher I": "XL Cruise Missile Launcher I", "Armor Resistance Phasing": "Resistance Phasing", "Unit D-34343's Modified Drone Control Unit": "Unit D-34343's Modified Fighter Support Unit", "Unit F-435454's Modified Drone Control Unit": "Unit F-435454's Modified Fighter Support Unit", "Unit P-343554's Modified Drone Control Unit": "Unit P-343554's Modified Fighter Support Unit", "Unit W-634's Modified Drone Control Unit": "Unit W-634's Modified Fighter Support Unit", "Heavy Shadow Serpentis Stasis Grappler": "Shadow Serpentis Heavy Stasis Grappler", "Heavy Domination Stasis Grappler": "Domination Heavy Stasis Grappler", } ================================================ FILE: service/conversions/releaseAug2019.py ================================================ """ Conversion pack for August 2019 release """ CONVERSIONS = { # Renamed items 'Gravid 1MN Afterburner MutaPlasmid': 'Gravid 1MN Afterburner Mutaplasmid', 'Low-grade Slave Alpha': 'Low-grade Amulet Alpha', 'Low-grade Slave Beta': 'Low-grade Amulet Beta', 'Low-grade Slave Gamma': 'Low-grade Amulet Gamma', 'Low-grade Slave Delta': 'Low-grade Amulet Delta', 'Low-grade Slave Epsilon': 'Low-grade Amulet Epsilon', 'Low-grade Slave Omega': 'Low-grade Amulet Omega', 'Mid-grade Slave Alpha': 'Mid-grade Amulet Alpha', 'Mid-grade Slave Beta': 'Mid-grade Amulet Beta', 'Mid-grade Slave Gamma': 'Mid-grade Amulet Gamma', 'Mid-grade Slave Delta': 'Mid-grade Amulet Delta', 'Mid-grade Slave Epsilon': 'Mid-grade Amulet Epsilon', 'Mid-grade Slave Omega': 'Mid-grade Amulet Omega', 'High-grade Slave Alpha': 'High-grade Amulet Alpha', 'High-grade Slave Beta': 'High-grade Amulet Beta', 'High-grade Slave Gamma': 'High-grade Amulet Gamma', 'High-grade Slave Delta': 'High-grade Amulet Delta', 'High-grade Slave Epsilon': 'High-grade Amulet Epsilon', 'High-grade Slave Omega': 'High-grade Amulet Omega' } ================================================ FILE: service/conversions/releaseAug2020.py ================================================ """ Conversion pack for August 2020 release """ CONVERSIONS = { # Renamed items, extracted via diff file "Basic Energized EM Membrane": "'Basic' EM Energized Membrane", "Energized EM Membrane I": "EM Energized Membrane I", "Energized EM Membrane II": "EM Energized Membrane II", "Basic Energized Explosive Membrane": "'Basic' Explosive Energized Membrane", "Energized Explosive Membrane I": "Explosive Energized Membrane I", "Energized Explosive Membrane II": "Explosive Energized Membrane II", "Basic Energized Armor Layering Membrane": "'Basic' Layered Energized Membrane", "Energized Armor Layering Membrane I": "Layered Energized Membrane I", "Energized Armor Layering Membrane II": "Layered Energized Membrane II", "Basic Energized Kinetic Membrane": "'Basic' Kinetic Energized Membrane", "Energized Kinetic Membrane I": "Kinetic Energized Membrane I", "Energized Kinetic Membrane II": "Kinetic Energized Membrane II", "Basic Energized Thermal Membrane": "'Basic' Thermal Energized Membrane", "Energized Thermal Membrane I": "Thermal Energized Membrane I", "Energized Thermal Membrane II": "Thermal Energized Membrane II", "Basic Energized Adaptive Nano Membrane": "'Basic' Multispectrum Energized Membrane", "Energized Adaptive Nano Membrane I": "Multispectrum Energized Membrane I", "Energized Adaptive Nano Membrane II": "Multispectrum Energized Membrane II", "Dark Blood Energized Adaptive Nano Membrane": "Dark Blood Multispectrum Energized Membrane", "True Sansha Energized Adaptive Nano Membrane": "True Sansha Multispectrum Energized Membrane", "Shadow Serpentis Energized Adaptive Nano Membrane": "Shadow Serpentis Multispectrum Energized Membrane", "Dark Blood Energized Kinetic Membrane": "Dark Blood Kinetic Energized Membrane", "True Sansha Energized Kinetic Membrane": "True Sansha Kinetic Energized Membrane", "Shadow Serpentis Energized Kinetic Membrane": "Shadow Serpentis Kinetic Energized Membrane", "Dark Blood Energized Explosive Membrane": "Dark Blood Explosive Energized Membrane", "True Sansha Energized Explosive Membrane": "True Sansha Explosive Energized Membrane", "Shadow Serpentis Energized Explosive Membrane": "Shadow Serpentis Explosive Energized Membrane", "Dark Blood Energized EM Membrane": "Dark Blood EM Energized Membrane", "True Sansha Energized EM Membrane": "True Sansha EM Energized Membrane", "Shadow Serpentis Energized EM Membrane": "Shadow Serpentis EM Energized Membrane", "Dark Blood Energized Thermal Membrane": "Dark Blood Thermal Energized Membrane", "True Sansha Energized Thermal Membrane": "True Sansha Thermal Energized Membrane", "Shadow Serpentis Energized Thermal Membrane": "Shadow Serpentis Thermal Energized Membrane", "Brokara's Modified Energized Adaptive Nano Membrane": "Brokara's Modified Multispectrum Energized Membrane", "Tairei's Modified Energized Adaptive Nano Membrane": "Tairei's Modified Multispectrum Energized Membrane", "Selynne's Modified Energized Adaptive Nano Membrane": "Selynne's Modified Multispectrum Energized Membrane", "Raysere's Modified Energized Adaptive Nano Membrane": "Raysere's Modified Multispectrum Energized Membrane", "Vizan's Modified Energized Adaptive Nano Membrane": "Vizan's Modified Multispectrum Energized Membrane", "Ahremen's Modified Energized Adaptive Nano Membrane": "Ahremen's Modified Multispectrum Energized Membrane", "Chelm's Modified Energized Adaptive Nano Membrane": "Chelm's Modified Multispectrum Energized Membrane", "Draclira's Modified Energized Adaptive Nano Membrane": "Draclira's Modified Multispectrum Energized Membrane", "Brokara's Modified Energized Thermal Membrane": "Brokara's Modified Thermal Energized Membrane", "Tairei's Modified Energized Thermal Membrane": "Tairei's Modified Thermal Energized Membrane", "Selynne's Modified Energized Thermal Membrane": "Selynne's Modified Thermal Energized Membrane", "Raysere's Modified Energized Thermal Membrane": "Raysere's Modified Thermal Energized Membrane", "Vizan's Modified Energized Thermal Membrane": "Vizan's Modified Thermal Energized Membrane", "Ahremen's Modified Energized Thermal Membrane": "Ahremen's Modified Thermal Energized Membrane", "Chelm's Modified Energized Thermal Membrane": "Chelm's Modified Thermal Energized Membrane", "Draclira's Modified Energized Thermal Membrane": "Draclira's Modified Thermal Energized Membrane", "Brokara's Modified Energized EM Membrane": "Brokara's Modified EM Energized Membrane", "Tairei's Modified Energized EM Membrane": "Tairei's Modified EM Energized Membrane", "Selynne's Modified Energized EM Membrane": "Selynne's Modified EM Energized Membrane", "Raysere's Modified Energized EM Membrane": "Raysere's Modified EM Energized Membrane", "Vizan's Modified Energized EM Membrane": "Vizan's Modified EM Energized Membrane", "Ahremen's Modified Energized EM Membrane": "Ahremen's Modified EM Energized Membrane", "Chelm's Modified Energized EM Membrane": "Chelm's Modified EM Energized Membrane", "Draclira's Modified Energized EM Membrane": "Draclira's Modified EM Energized Membrane", "Brokara's Modified Energized Explosive Membrane": "Brokara's Modified Explosive Energized Membrane", "Tairei's Modified Energized Explosive Membrane": "Tairei's Modified Explosive Energized Membrane", "Selynne's Modified Energized Explosive Membrane": "Selynne's Modified Explosive Energized Membrane", "Raysere's Modified Energized Explosive Membrane": "Raysere's Modified Explosive Energized Membrane", "Vizan's Modified Energized Explosive Membrane": "Vizan's Modified Explosive Energized Membrane", "Ahremen's Modified Energized Explosive Membrane": "Ahremen's Modified Explosive Energized Membrane", "Chelm's Modified Energized Explosive Membrane": "Chelm's Modified Explosive Energized Membrane", "Draclira's Modified Energized Explosive Membrane": "Draclira's Modified Explosive Energized Membrane", "Brokara's Modified Energized Kinetic Membrane": "Brokara's Modified Kinetic Energized Membrane", "Tairei's Modified Energized Kinetic Membrane": "Tairei's Modified Kinetic Energized Membrane", "Selynne's Modified Energized Kinetic Membrane": "Selynne's Modified Kinetic Energized Membrane", "Raysere's Modified Energized Kinetic Membrane": "Raysere's Modified Kinetic Energized Membrane", "Vizan's Modified Energized Kinetic Membrane": "Vizan's Modified Kinetic Energized Membrane", "Ahremen's Modified Energized Kinetic Membrane": "Ahremen's Modified Kinetic Energized Membrane", "Chelm's Modified Energized Kinetic Membrane": "Chelm's Modified Kinetic Energized Membrane", "Draclira's Modified Energized Kinetic Membrane": "Draclira's Modified Kinetic Energized Membrane", "Brynn's Modified Energized Adaptive Nano Membrane": "Brynn's Modified Multispectrum Energized Membrane", "Tuvan's Modified Energized Adaptive Nano Membrane": "Tuvan's Modified Multispectrum Energized Membrane", "Setele's Modified Energized Adaptive Nano Membrane": "Setele's Modified Multispectrum Energized Membrane", "Cormack's Modified Energized Adaptive Nano Membrane": "Cormack's Modified Multispectrum Energized Membrane", "Brynn's Modified Energized Thermal Membrane": "Brynn's Modified Thermal Energized Membrane", "Tuvan's Modified Energized Thermal Membrane": "Tuvan's Modified Thermal Energized Membrane", "Setele's Modified Energized Thermal Membrane": "Setele's Modified Thermal Energized Membrane", "Cormack's Modified Energized Thermal Membrane": "Cormack's Modified Thermal Energized Membrane", "Brynn's Modified Energized EM Membrane": "Brynn's Modified EM Energized Membrane", "Tuvan's Modified Energized EM Membrane": "Tuvan's Modified EM Energized Membrane", "Setele's Modified Energized EM Membrane": "Setele's Modified EM Energized Membrane", "Cormack's Modified Energized EM Membrane": "Cormack's Modified EM Energized Membrane", "Brynn's Modified Energized Explosive Membrane": "Brynn's Modified Explosive Energized Membrane", "Tuvan's Modified Energized Explosive Membrane": "Tuvan's Modified Explosive Energized Membrane", "Setele's Modified Energized Explosive Membrane": "Setele's Modified Explosive Energized Membrane", "Cormack's Modified Energized Explosive Membrane": "Cormack's Modified Explosive Energized Membrane", "Brynn's Modified Energized Kinetic Membrane": "Brynn's Modified Kinetic Energized Membrane", "Tuvan's Modified Energized Kinetic Membrane": "Tuvan's Modified Kinetic Energized Membrane", "Setele's Modified Energized Kinetic Membrane": "Setele's Modified Kinetic Energized Membrane", "Cormack's Modified Energized Kinetic Membrane": "Cormack's Modified Kinetic Energized Membrane", "Imperial Navy Energized Thermal Membrane": "Imperial Navy Thermal Energized Membrane", "Imperial Navy Energized EM Membrane": "Imperial Navy EM Energized Membrane", "Imperial Navy Energized Explosive Membrane": "Imperial Navy Explosive Energized Membrane", "Imperial Navy Energized Kinetic Membrane": "Imperial Navy Kinetic Energized Membrane", "Imperial Navy Energized Adaptive Nano Membrane": "Imperial Navy Multispectrum Energized Membrane", "Federation Navy Energized Thermal Membrane": "Federation Navy Thermal Energized Membrane", "Federation Navy Energized EM Membrane": "Federation Navy EM Energized Membrane", "Federation Navy Energized Explosive Membrane": "Federation Navy Explosive Energized Membrane", "Federation Navy Energized Kinetic Membrane": "Federation Navy Kinetic Energized Membrane", "Federation Navy Energized Adaptive Nano Membrane": "Federation Navy Multispectrum Energized Membrane", "Prototype Energized Adaptive Nano Membrane I": "Compact Multispectrum Energized Membrane", "Prototype Energized Kinetic Membrane I": "Compact Kinetic Energized Membrane", "Prototype Energized Explosive Membrane I": "Compact Explosive Energized Membrane", "Prototype Energized EM Membrane I": "Compact EM Energized Membrane", "Prototype Energized Armor Layering Membrane I": "Compact Layered Energized Membrane", "Prototype Energized Thermal Membrane I": "Compact Thermal Energized Membrane", "Ammatar Navy Energized Adaptive Nano Membrane": "Ammatar Navy Multispectrum Energized Membrane", "Ammatar Navy Energized Kinetic Membrane": "Ammatar Navy Kinetic Energized Membrane", "Ammatar Navy Energized Explosive Membrane": "Ammatar Navy Explosive Energized Membrane", "Ammatar Navy Energized EM Membrane": "Ammatar Navy EM Energized Membrane", "Ammatar Navy Energized Thermal Membrane": "Ammatar Navy Thermal Energized Membrane", "Corelum C-Type Energized Adaptive Nano Membrane": "Corelum C-Type Multispectrum Energized Membrane", "Corelum C-Type Energized Kinetic Membrane": "Corelum C-Type Kinetic Energized Membrane", "Corelum C-Type Energized Explosive Membrane": "Corelum C-Type Explosive Energized Membrane", "Corelum C-Type Energized EM Membrane": "Corelum C-Type EM Energized Membrane", "Corelum C-Type Energized Thermal Membrane": "Corelum C-Type Thermal Energized Membrane", "Corelum B-Type Energized Adaptive Nano Membrane": "Corelum B-Type Multispectrum Energized Membrane", "Corelum B-Type Energized Kinetic Membrane": "Corelum B-Type Kinetic Energized Membrane", "Corelum B-Type Energized Explosive Membrane": "Corelum B-Type Explosive Energized Membrane", "Corelum B-Type Energized EM Membrane": "Corelum B-Type EM Energized Membrane", "Corelum B-Type Energized Thermal Membrane": "Corelum B-Type Thermal Energized Membrane", "Corelum A-Type Energized Adaptive Nano Membrane": "Corelum A-Type Multispectrum Energized Membrane", "Corelum A-Type Energized Kinetic Membrane": "Corelum A-Type Kinetic Energized Membrane", "Corelum A-Type Energized Explosive Membrane": "Corelum A-Type Explosive Energized Membrane", "Corelum A-Type Energized EM Membrane": "Corelum A-Type EM Energized Membrane", "Corelum A-Type Energized Thermal Membrane": "Corelum A-Type Thermal Energized Membrane", "Corpum C-Type Energized Adaptive Nano Membrane": "Corpum C-Type Multispectrum Energized Membrane", "Centum C-Type Energized Adaptive Nano Membrane": "Centum C-Type Multispectrum Energized Membrane", "Corpum C-Type Energized Kinetic Membrane": "Corpum C-Type Kinetic Energized Membrane", "Centum C-Type Energized Kinetic Membrane": "Centum C-Type Kinetic Energized Membrane", "Corpum C-Type Energized Explosive Membrane": "Corpum C-Type Explosive Energized Membrane", "Centum C-Type Energized Explosive Membrane": "Centum C-Type Explosive Energized Membrane", "Corpum C-Type Energized EM Membrane": "Corpum C-Type EM Energized Membrane", "Centum C-Type Energized EM Membrane": "Centum C-Type EM Energized Membrane", "Corpum C-Type Energized Thermal Membrane": "Corpum C-Type Thermal Energized Membrane", "Centum C-Type Energized Thermal Membrane": "Centum C-Type Thermal Energized Membrane", "Corpum B-Type Energized Adaptive Nano Membrane": "Corpum B-Type Multispectrum Energized Membrane", "Centum B-Type Energized Adaptive Nano Membrane": "Centum B-Type Multispectrum Energized Membrane", "Corpum B-Type Energized Kinetic Membrane": "Corpum B-Type Kinetic Energized Membrane", "Centum B-Type Energized Kinetic Membrane": "Centum B-Type Kinetic Energized Membrane", "Corpum B-Type Energized Explosive Membrane": "Corpum B-Type Explosive Energized Membrane", "Centum B-Type Energized Explosive Membrane": "Centum B-Type Explosive Energized Membrane", "Corpum B-Type Energized Thermal Membrane": "Corpum B-Type Thermal Energized Membrane", "Centum B-Type Energized Thermal Membrane": "Centum B-Type Thermal Energized Membrane", "Corpum A-Type Energized Thermal Membrane": "Corpum A-Type Thermal Energized Membrane", "Centum A-Type Energized Thermal Membrane": "Centum A-Type Thermal Energized Membrane", "Corpum A-Type Energized EM Membrane": "Corpum A-Type EM Energized Membrane", "Centum A-Type Energized EM Membrane": "Centum A-Type EM Energized Membrane", "Corpum A-Type Energized Explosive Membrane": "Corpum A-Type Explosive Energized Membrane", "Centum A-Type Energized Explosive Membrane": "Centum A-Type Explosive Energized Membrane", "Corpum A-Type Energized Kinetic Membrane": "Corpum A-Type Kinetic Energized Membrane", "Centum A-Type Energized Kinetic Membrane": "Centum A-Type Kinetic Energized Membrane", "Corpum A-Type Energized Adaptive Nano Membrane": "Corpum A-Type Multispectrum Energized Membrane", "Centum A-Type Energized Adaptive Nano Membrane": "Centum A-Type Multispectrum Energized Membrane", "Corpum B-Type Energized EM Membrane": "Corpum B-Type EM Energized Membrane", "Centum B-Type Energized EM Membrane": "Centum B-Type EM Energized Membrane", "'Pilfer' Energized Adaptive Nano Membrane I": "'Pilfer' Multispectrum Energized Membrane", "'Moonshine' Energized Thermal Membrane I": "'Moonshine' Thermal Energized Membrane", "'Mafia' Energized Kinetic Membrane I": "'Mafia' Kinetic Energized Membrane", "Khanid Navy Energized Adaptive Nano Membrane": "Khanid Navy Multispectrum Energized Membrane", "Khanid Navy Energized Kinetic Membrane": "Khanid Navy Kinetic Energized Membrane", "Khanid Navy Energized Explosive Membrane": "Khanid Navy Explosive Energized Membrane", "Khanid Navy Energized EM Membrane": "Khanid Navy EM Energized Membrane", "Khanid Navy Energized Thermal Membrane": "Khanid Navy Thermal Energized Membrane", "Large Compact Vorton projector": "Large Compact Vorton Projector", # Converted items "Experimental Energized Adaptive Nano Membrane I": "Compact Multispectrum Energized Membrane", "Limited Energized Adaptive Nano Membrane I": "Compact Multispectrum Energized Membrane", "Upgraded Energized Adaptive Nano Membrane I": "Compact Multispectrum Energized Membrane", "Experimental Energized Armor Layering Membrane I": "Compact Layered Energized Membrane", "Limited Energized Armor Layering Membrane I": "Compact Layered Energized Membrane", "Upgraded Energized Armor Layering Membrane I": "Compact Layered Energized Membrane", "Experimental Energized EM Membrane I": "Compact EM Energized Membrane", "Limited Energized EM Membrane I": "Compact EM Energized Membrane", "Upgraded Energized EM Membrane I": "Compact EM Energized Membrane", "Experimental Energized Explosive Membrane I": "Compact Explosive Energized Membrane", "Limited Energized Explosive Membrane I": "Compact Explosive Energized Membrane", "Upgraded Energized Explosive Membrane I": "Compact Explosive Energized Membrane", "Experimental Energized Kinetic Membrane I": "Compact Kinetic Energized Membrane", "Limited Energized Kinetic Membrane I": "Compact Kinetic Energized Membrane", "Upgraded Energized Kinetic Membrane I": "Compact Kinetic Energized Membrane", "Experimental Energized Thermal Membrane I": "Compact Thermal Energized Membrane", "Limited Energized Thermal Membrane I": "Compact Thermal Energized Membrane", "Upgraded Energized Thermal Membrane I": "Compact Thermal Energized Membrane", } ================================================ FILE: service/conversions/releaseAug2022.py ================================================ """ Conversion pack for August 2022 release """ CONVERSIONS = { # Renamed items "Basic Reactor Control Unit": "'Basic' Reactor Control Unit", "Basic Co-Processor": "'Basic' Co-Processor", } ================================================ FILE: service/conversions/releaseCarnyx.py ================================================ """ Conversion pack for Carnyx Module Tiericide """ CONVERSIONS = { # Renamed items "1MN Microwarpdrive I": "5MN Microwarpdrive I", "1MN Microwarpdrive II": "5MN Microwarpdrive II", "Prototype 100MN Microwarpdrive I": "500MN Cold-Gas Enduring Microwarpdrive", "Experimental 100MN Afterburner I": "100MN Monopropellant Enduring Afterburner", "Upgraded 1MN Microwarpdrive I": "5MN Cold-Gas Enduring Microwarpdrive", "Limited 1MN Microwarpdrive I": "5MN Y-T8 Compact Microwarpdrive", "Experimental 10MN Microwarpdrive I": "50MN Cold-Gas Enduring Microwarpdrive", "Limited 1MN Afterburner I": "1MN Y-S8 Compact Afterburner", "Experimental 1MN Afterburner I": "1MN Monopropellant Enduring Afterburner", "Experimental 10MN Afterburner I": "10MN Monopropellant Enduring Afterburner", "Large Azeotropic Ward Salubrity I": "Large Azeotropic Restrained Shield Extender", "Small Azeotropic Ward Salubrity I": "Small Azeotropic Restrained Shield Extender", "Medium Azeotropic Ward Salubrity I": "Medium Azeotropic Restrained Shield Extender", "Medium F-S9 Regolith Shield Induction": "Medium F-S9 Regolith Compact Shield Extender", "Small F-S9 Regolith Shield Induction": "Small F-S9 Regolith Compact Shield Extender", "Large F-S9 Regolith Shield Induction": "Large F-S9 Regolith Compact Shield Extender", "1600mm Reinforced Steel Plates I": "1600mm Steel Plates I", "100mm Reinforced Steel Plates I": "100mm Steel Plates I", "200mm Reinforced Steel Plates I": "200mm Steel Plates I", "400mm Reinforced Steel Plates I": "400mm Steel Plates I", "800mm Reinforced Steel Plates I": "800mm Steel Plates I", "400mm Reinforced Rolled Tungsten Plates I": "400mm Rolled Tungsten Compact Plates", "400mm Reinforced Crystalline Carbonide Plates I": "400mm Crystalline Carbonide Restrained Plates", "800mm Reinforced Rolled Tungsten Plates I": "800mm Rolled Tungsten Compact Plates", "800mm Reinforced Crystalline Carbonide Plates I": "800mm Crystalline Carbonide Restrained Plates", "1600mm Reinforced Rolled Tungsten Plates I": "1600mm Rolled Tungsten Compact Plates", "1600mm Reinforced Crystalline Carbonide Plates I": "1600mm Crystalline Carbonide Restrained Plates", "100mm Reinforced Rolled Tungsten Plates I": "100mm Rolled Tungsten Compact Plates", "100mm Reinforced Crystalline Carbonide Plates I": "100mm Crystalline Carbonide Restrained Plates", "200mm Reinforced Rolled Tungsten Plates I": "200mm Rolled Tungsten Compact Plates", "200mm Reinforced Crystalline Carbonide Plates I": "200mm Crystalline Carbonide Restrained Plates", "10MN Microwarpdrive I": "50MN Microwarpdrive I", "100MN Microwarpdrive I": "500MN Microwarpdrive I", "10MN Microwarpdrive II": "50MN Microwarpdrive II", "100MN Microwarpdrive II": "500MN Microwarpdrive II", "Domination 100MN Microwarpdrive": "Domination 500MN Microwarpdrive", "Shadow Serpentis 100MN Microwarpdrive": "Shadow Serpentis 500MN Microwarpdrive", "Domination 10MN Microwarpdrive": "Domination 50MN Microwarpdrive", "Shadow Serpentis 10MN Microwarpdrive": "Shadow Serpentis 50MN Microwarpdrive", "Domination 1MN Microwarpdrive": "Domination 5MN Microwarpdrive", "Shadow Serpentis 1MN Microwarpdrive": "Shadow Serpentis 5MN Microwarpdrive", "Mizuro's Modified 100MN Microwarpdrive": "Mizuro's Modified 500MN Microwarpdrive", "Hakim's Modified 100MN Microwarpdrive": "Hakim's Modified 500MN Microwarpdrive", "Gotan's Modified 100MN Microwarpdrive": "Gotan's Modified 500MN Microwarpdrive", "Tobias' Modified 100MN Microwarpdrive": "Tobias' Modified 500MN Microwarpdrive", "Brynn's Modified 100MN Microwarpdrive": "Brynn's Modified 500MN Microwarpdrive", "Tuvan's Modified 100MN Microwarpdrive": "Tuvan's Modified 500MN Microwarpdrive", "Setele's Modified 100MN Microwarpdrive": "Setele's Modified 500MN Microwarpdrive", "Cormack's Modified 100MN Microwarpdrive": "Cormack's Modified 500MN Microwarpdrive", "Republic Fleet 1MN Microwarpdrive": "Republic Fleet 5MN Microwarpdrive", "Republic Fleet 10MN Microwarpdrive": "Republic Fleet 50MN Microwarpdrive", "Republic Fleet 100MN Microwarpdrive": "Republic Fleet 500MN Microwarpdrive", "Federation Navy 1MN Microwarpdrive": "Federation Navy 5MN Microwarpdrive", "Federation Navy 10MN Microwarpdrive": "Federation Navy 50MN Microwarpdrive", "Federation Navy 100MN Microwarpdrive": "Federation Navy 500MN Microwarpdrive", "Coreli C-Type 1MN Microwarpdrive": "Coreli C-Type 5MN Microwarpdrive", "Corelum C-Type 10MN Microwarpdrive": "Corelum C-Type 50MN Microwarpdrive", "Core C-Type 100MN Microwarpdrive": "Core C-Type 500MN Microwarpdrive", "Coreli B-Type 1MN Microwarpdrive": "Coreli B-Type 5MN Microwarpdrive", "Corelum B-Type 10MN Microwarpdrive": "Corelum B-Type 50MN Microwarpdrive", "Core B-Type 100MN Microwarpdrive": "Core B-Type 500MN Microwarpdrive", "Coreli A-Type 1MN Microwarpdrive": "Coreli A-Type 5MN Microwarpdrive", "Corelum A-Type 10MN Microwarpdrive": "Corelum A-Type 50MN Microwarpdrive", "Core A-Type 100MN Microwarpdrive": "Core A-Type 500MN Microwarpdrive", "Core X-Type 100MN Microwarpdrive": "Core X-Type 500MN Microwarpdrive", "Gistii C-Type 1MN Microwarpdrive": "Gistii C-Type 5MN Microwarpdrive", "Gistum C-Type 10MN Microwarpdrive": "Gistum C-Type 50MN Microwarpdrive", "Gist C-Type 100MN Microwarpdrive": "Gist C-Type 500MN Microwarpdrive", "Gistii B-Type 1MN Microwarpdrive": "Gistii B-Type 5MN Microwarpdrive", "Gistum B-Type 10MN Microwarpdrive": "Gistum B-Type 50MN Microwarpdrive", "Gist B-Type 100MN Microwarpdrive": "Gist B-Type 500MN Microwarpdrive", "Gistii A-Type 1MN Microwarpdrive": "Gistii A-Type 5MN Microwarpdrive", "Gistum A-Type 10MN Microwarpdrive": "Gistum A-Type 50MN Microwarpdrive", "Gist A-Type 100MN Microwarpdrive": "Gist A-Type 500MN Microwarpdrive", "Gist X-Type 100MN Microwarpdrive": "Gist X-Type 500MN Microwarpdrive", "100mm Reinforced Steel Plates II": "100mm Steel Plates II", "200mm Reinforced Steel Plates II": "200mm Steel Plates II", "400mm Reinforced Steel Plates II": "400mm Steel Plates II", "800mm Reinforced Steel Plates II": "800mm Steel Plates II", "1600mm Reinforced Steel Plates II": "1600mm Steel Plates II", "Micro 'Trapper' Shield Extender": "Small 'Trapper' Shield Extender", "1MN Analog Booster Rockets": "1MN Analog Booster Afterburner", "10MN Analog Booster Rockets": "10MN Analog Booster Afterburner", "100MN Analog Booster Rockets": "100MN Analog Booster Afterburner", "1MN Digital Booster Rockets": "5MN Digital Booster Microwarpdrive", "10MN Digital Booster Rockets": "50MN Digital Booster Microwarpdrive", "100MN Digital Booster Rockets": "500MN Digital Booster Microwarpdrive", "Civilian Afterburner": "1MN Civilian Afterburner", "'Abatis' 100mm Reinforced Steel Plates I": "'Abatis' 100mm Steel Plates", "'Bailey' 1600mm Reinforced Steel Plates I": "'Bailey' 1600mm Steel Plates", "'Chainmail' 200mm Reinforced Steel Plates I": "'Chainmail' 200mm Steel Plates", "'Bastion' 400mm Reinforced Steel Plates I": "'Bastion' 400mm Steel Plates", "'Citadella' 50mm Reinforced Steel Plates I": "'Citadella' 100mm Steel Plates", "'Barbican' 800mm Reinforced Steel Plates I": "'Barbican' 800mm Steel Plates", "Syndicate 100mm Reinforced Steel Plates": "Syndicate 100mm Steel Plates", "Syndicate 1600mm Reinforced Steel Plates": "Syndicate 1600mm Steel Plates", "Syndicate 200mm Reinforced Steel Plates": "Syndicate 200mm Steel Plates", "Syndicate 400mm Reinforced Steel Plates": "Syndicate 400mm Steel Plates", "Syndicate 800mm Reinforced Steel Plates": "Syndicate 800mm Steel Plates", "Imperial Navy 100mm Reinforced Steel Plates": "Imperial Navy 100mm Steel Plates", "Federation Navy 100mm Reinforced Steel Plates": "Federation Navy 100mm Steel Plates", "Imperial Navy 1600mm Reinforced Steel Plates": "Imperial Navy 1600mm Steel Plates", "Federation Navy 1600mm Reinforced Steel Plates": "Federation Navy 1600mm Steel Plates", "Imperial Navy 200mm Reinforced Steel Plates": "Imperial Navy 200mm Steel Plates", "Federation Navy 200mm Reinforced Steel Plates": "Federation Navy 200mm Steel Plates", "Imperial Navy 400mm Reinforced Steel Plates": "Imperial Navy 400mm Steel Plates", "Federation Navy 400mm Reinforced Steel Plates": "Federation Navy 400mm Steel Plates", "Imperial Navy 800mm Reinforced Steel Plates": "Imperial Navy 800mm Steel Plates", "Federation Navy 800mm Reinforced Steel Plates": "Federation Navy 800mm Steel Plates", "Polarized Small Pulse Laser": "Polarized Small Focused Pulse Laser", # Converted items "Large Subordinate Screen Stabilizer I": "Large F-S9 Regolith Compact Shield Extender", "Large Supplemental Barrier Emitter I": "Large Azeotropic Restrained Shield Extender", "Medium Subordinate Screen Stabilizer I": "Medium F-S9 Regolith Compact Shield Extender", "Medium Supplemental Barrier Emitter I": "Medium Azeotropic Restrained Shield Extender", "Micro Azeotropic Ward Salubrity I": "Small 'Trapper' Shield Extender", "Micro F-S9 Regolith Shield Induction": "Small 'Trapper' Shield Extender", "Micro Shield Extender I": "Small 'Trapper' Shield Extender", "Micro Shield Extender II": "Small 'Trapper' Shield Extender", "Micro Subordinate Screen Stabilizer I": "Small 'Trapper' Shield Extender", "Micro Supplemental Barrier Emitter I": "Small 'Trapper' Shield Extender", "Small Subordinate Screen Stabilizer I": "Small F-S9 Regolith Compact Shield Extender", "Small Supplemental Barrier Emitter I": "Small Azeotropic Restrained Shield Extender", "100mm Reinforced Nanofiber Plates I": "100mm Crystalline Carbonide Restrained Plates", "100mm Reinforced Titanium Plates I": "100mm Rolled Tungsten Compact Plates", "1600mm Reinforced Nanofiber Plates I": "1600mm Crystalline Carbonide Restrained Plates", "1600mm Reinforced Titanium Plates I": "1600mm Rolled Tungsten Compact Plates", "200mm Reinforced Nanofiber Plates I": "200mm Crystalline Carbonide Restrained Plates", "200mm Reinforced Titanium Plates I": "200mm Rolled Tungsten Compact Plates", "400mm Reinforced Nanofiber Plates I": "400mm Crystalline Carbonide Restrained Plates", "400mm Reinforced Titanium Plates I": "400mm Rolled Tungsten Compact Plates", "50mm Reinforced Crystalline Carbonide Plates I": "'Citadella' 100mm Steel Plates", "50mm Reinforced Nanofiber Plates I": "'Citadella' 100mm Steel Plates", "50mm Reinforced Rolled Tungsten Plates I": "'Citadella' 100mm Steel Plates", "50mm Reinforced Steel Plates I": "'Citadella' 100mm Steel Plates", "50mm Reinforced Steel Plates II": "'Citadella' 100mm Steel Plates", "50mm Reinforced Titanium Plates I": "'Citadella' 100mm Steel Plates", "800mm Reinforced Nanofiber Plates I": "800mm Crystalline Carbonide Restrained Plates", "800mm Reinforced Titanium Plates I": "800mm Rolled Tungsten Compact Plates" } ================================================ FILE: service/conversions/releaseDec2021.py ================================================ CONVERSIONS = { # Renamed items "Gas Cloud Harvester I": "Gas Cloud Scoop I", "Gas Cloud Harvester II": "Gas Cloud Scoop II", "'Crop' Gas Cloud Harvester": "'Crop' Gas Cloud Scoop", "'Plow' Gas Cloud Harvester": "'Plow' Gas Cloud Scoop", "Syndicate Gas Cloud Harvester": "Syndicate Gas Cloud Scoop", "Mercoxit Mining Crystal I": "Mercoxit Asteroid Mining Crystal Type A I", "Mercoxit Mining Crystal II": "Mercoxit Asteroid Mining Crystal Type A II", "Ubiquitous Moon Ore Mining Crystal I": "Ubiquitous Moon Mining Crystal Type A I", "Ubiquitous Moon Ore Mining Crystal II": "Ubiquitous Moon Mining Crystal Type A II", "Common Moon Ore Mining Crystal I": "Common Moon Mining Crystal Type A I", "Common Moon Ore Mining Crystal II": "Common Moon Mining Crystal Type A II", "Uncommon Moon Ore Mining Crystal I": "Uncommon Moon Mining Crystal Type A I", "Uncommon Moon Ore Mining Crystal II": "Uncommon Moon Mining Crystal Type A II", "Rare Moon Ore Mining Crystal I": "Rare Moon Mining Crystal Type A I", "Rare Moon Ore Mining Crystal II": "Rare Moon Mining Crystal Type A II", "Exceptional Moon Ore Mining Crystal I": "Exceptional Moon Mining Crystal Type A I", "Exceptional Moon Ore Mining Crystal II": "Exceptional Moon Mining Crystal Type A II", "Industrial Core I": "Capital Industrial Core I", "Industrial Core II": "Capital Industrial Core II", # Converted items "Veldspar Mining Crystal I": "Simple Asteroid Mining Crystal Type A I", "Scordite Mining Crystal I": "Simple Asteroid Mining Crystal Type A I", "Pyroxeres Mining Crystal I": "Simple Asteroid Mining Crystal Type A I", "Plagioclase Mining Crystal I": "Simple Asteroid Mining Crystal Type A I", "Veldspar Mining Crystal II": "Simple Asteroid Mining Crystal Type A II", "Scordite Mining Crystal II": "Simple Asteroid Mining Crystal Type A II", "Pyroxeres Mining Crystal II": "Simple Asteroid Mining Crystal Type A II", "Plagioclase Mining Crystal II": "Simple Asteroid Mining Crystal Type A II", "Omber Mining Crystal I": "Coherent Asteroid Mining Crystal Type A I", "Kernite Mining Crystal I": "Coherent Asteroid Mining Crystal Type A I", "Jaspet Mining Crystal I": "Coherent Asteroid Mining Crystal Type A I", "Hemorphite Mining Crystal I": "Coherent Asteroid Mining Crystal Type A I", "Hedbergite Mining Crystal I": "Coherent Asteroid Mining Crystal Type A I", "Omber Mining Crystal II": "Coherent Asteroid Mining Crystal Type A II", "Jaspet Mining Crystal II": "Coherent Asteroid Mining Crystal Type A II", "Kernite Mining Crystal II": "Coherent Asteroid Mining Crystal Type A II", "Hedbergite Mining Crystal II": "Coherent Asteroid Mining Crystal Type A II", "Hemorphite Mining Crystal II": "Coherent Asteroid Mining Crystal Type A II", "Gneiss Mining Crystal I": "Variegated Asteroid Mining Crystal Type A I", "Dark Ochre Mining Crystal I": "Variegated Asteroid Mining Crystal Type A I", "Crokite Mining Crystal I": "Variegated Asteroid Mining Crystal Type A I", "Gneiss Mining Crystal II": "Variegated Asteroid Mining Crystal Type A II", "Dark Ochre Mining Crystal II": "Variegated Asteroid Mining Crystal Type A II", "Crokite Mining Crystal II": "Variegated Asteroid Mining Crystal Type A II", "Bistot Mining Crystal I": "Complex Asteroid Mining Crystal Type A I", "Arkonor Mining Crystal I": "Complex Asteroid Mining Crystal Type A I", "Spodumain Mining Crystal I": "Complex Asteroid Mining Crystal Type A I", "Bistot Mining Crystal II": "Complex Asteroid Mining Crystal Type A II", "Arkonor Mining Crystal II": "Complex Asteroid Mining Crystal Type A II", "Spodumain Mining Crystal II": "Complex Asteroid Mining Crystal Type A II", } ================================================ FILE: service/conversions/releaseDecember15.py ================================================ """ Conversion pack for December 2015 release (no release name) """ CONVERSIONS = { # Renamed items "Medium 'Gremlin' Power Core Disruptor I": "Medium Gremlin Compact Energy Neutralizer", "Medium Coaxial Remote Armor Repairer": "Medium Coaxial Compact Remote Armor Repairer", "'Distributor' Tracking Disruptor I": "'Distributor' Guidance Disruptor I", "Type-D Power Core Modification: Shield Flux": "Type-D Restrained Shield Flux Coil", "Large Coaxial Remote Armor Repairer": "Large Coaxial Compact Remote Armor Repairer", "Heavy 'Knave' Energy Drain": "Heavy Knave Scoped Energy Nosferatu", "F-392 Baker Nunn Tracking Disruptor I": "Baker Nunn Enduring Tracking Disruptor I", "'Ditch' Medium Energy Neutralizer I": "Medium 'Ditch' Energy Neutralizer", "DDO Photometry Tracking Disruptor I": "DDO Scoped Tracking Disruptor I", "Small S95a Remote Shield Booster": "Small S95a Scoped Remote Shield Booster", "Large S95a Remote Shield Booster": "Large S95a Scoped Remote Shield Booster", "'Abandon' Tracking Disruptor I": "C-IR Compact Guidance Disruptor I", "500W Infectious Power System Malfunction": "Heavy Infectious Scoped Energy Neutralizer", "Heavy 'Gremlin' Power Core Disruptor I": "Heavy Gremlin Compact Energy Neutralizer", "Medium 'Solace' Remote Armor Repairer": "Medium Solace Scoped Remote Armor Repairer", "Small Coaxial Remote Armor Repairer": "Small Coaxial Compact Remote Armor Repairer", "Basic Shield Flux Coil": "'Basic' Shield Flux Coil", "Large I-ax Remote Armor Repairer": "Large I-ax Enduring Remote Armor Repairer", "Basic Shield Power Relay": "'Basic' Shield Power Relay", "Capital Coaxial Remote Armor Repairer": "CONCORD Capital Remote Armor Repairer", "Medium 'Ghoul' Energy Siphon I": "Medium Ghoul Compact Energy Nosferatu", "Medium S95a Remote Shield Booster": "Medium S95a Scoped Remote Shield Booster", "Mark I Generator Refitting: Shield Flux": "Mark I Compact Shield Flux Coil", "Large 'Solace' Remote Armor Repairer": "Large Solace Scoped Remote Armor Repairer", "Large Asymmetric Remote Shield Booster": "Large Asymmetric Enduring Remote Shield Booster", "M51 Iterative Shield Regenerator": "M51 Benefactor Compact Shield Recharger", "Small 'Knave' Energy Drain": "Small Knave Scoped Energy Nosferatu", "Medium Murky Remote Shield Booster": "Medium Murky Compact Remote Shield Booster", "Small Murky Remote Shield Booster": "Small Murky Compact Remote Shield Booster", "Capital Murky Remote Shield Booster": "CONCORD Capital Remote Shield Booster", "'Caltrop' Small Energy Neutralizer I": "Small 'Caltrop' Energy Neutralizer", "Small I-ax Remote Armor Repairer": "Small I-ax Enduring Remote Armor Repairer", "'Vrykolakas' Heavy Nosferatu I": "Heavy 'Vrykolakas' Energy Nosferatu", "Heavy 'Ghoul' Energy Siphon I": "Heavy Ghoul Compact Energy Nosferatu", "Small Asymmetric Remote Shield Booster": "Small Asymmetric Enduring Remote Shield Booster", "Small 'Gremlin' Power Core Disruptor I": "Small Gremlin Compact Energy Neutralizer", "'Strigoi' Medium Nosferatu I": "Medium 'Strigoi' Energy Nosferatu", "'Upir' Small Nosferatu I": "Small 'Upir' Energy Nosferatu", "Balmer Series Tracking Disruptor I": "Balmer Series Compact Tracking Disruptor I", "Small 'Solace' Remote Armor Repairer": "Small Solace Scoped Remote Armor Repairer", "'Moat' Heavy Energy Neutralizer I": "Heavy 'Moat' Energy Neutralizer", "Small 'Ghoul' Energy Siphon I": "Small Ghoul Compact Energy Nosferatu", "5W Infectious Power System Malfunction": "Small Infectious Scoped Energy Neutralizer", "50W Infectious Power System Malfunction": "Medium Infectious Scoped Energy Neutralizer", "Type-D Power Core Modification: Shield Power Relay": "Type-D Restrained Shield Power Relay", "Micro Remote Shield Booster I": "'Micro' Remote Shield Booster", "Medium I-ax Remote Armor Repairer": "Medium I-ax Enduring Remote Armor Repairer", "Medium Asymmetric Remote Shield Booster": "Medium Asymmetric Enduring Remote Shield Booster", "Large Murky Remote Shield Booster": "Large Murky Compact Remote Shield Booster", "Medium 'Knave' Energy Drain": "Medium Knave Scoped Energy Nosferatu", "Mark I Generator Refitting: Shield Power Relay": "Mark I Compact Shield Power Relay", # Converted items "Medium Unstable Power Fluctuator I": "Medium Gremlin Compact Energy Neutralizer", "'Brotherhood' Small Remote Armor Repairer": "'Beatnik' Small Remote Armor Repairer", "Beta Reactor Control: Shield Flux I": "Type-D Restrained Shield Flux Coil", "E500 Prototype Energy Vampire": "Heavy Knave Scoped Energy Nosferatu", "Heavy Rudimentary Energy Destabilizer I": "Heavy Infectious Scoped Energy Neutralizer", "Heavy Unstable Power Fluctuator I": "Heavy Gremlin Compact Energy Neutralizer", "Medium 'Arup' Remote Armor Repairer": "Medium Solace Scoped Remote Armor Repairer", "Alpha Reactor Shield Flux": "'Basic' Shield Flux Coil", "Marked Generator Refitting: Shield Flux": "'Basic' Shield Flux Coil", "Partial Power Plant Manager: Shield Flux": "'Basic' Shield Flux Coil", "Type-E Power Core Modification: Shield Flux": "'Basic' Shield Flux Coil", "Alpha Reactor Shield Power Relay": "'Basic' Shield Power Relay", "Marked Generator Refitting: Shield Power Relay": "'Basic' Shield Power Relay", "Partial Power Plant Manager: Shield Power Relay": "'Basic' Shield Power Relay", "Type-E Power Core Modification: Shield Power Relay": "'Basic' Shield Power Relay", "Small 'Arup' Remote Armor Repairer": "Small Solace Scoped Remote Armor Repairer", "Medium Diminishing Power System Drain I": "Medium Ghoul Compact Energy Nosferatu", "Local Power Plant Manager: Reaction Shield Flux I": "Mark I Compact Shield Flux Coil", "Large 'Arup' Remote Armor Repairer": "Large Solace Scoped Remote Armor Repairer", "Passive Barrier Compensator I": "M51 Benefactor Compact Shield Recharger", "'Benefactor' Ward Reconstructor": "M51 Benefactor Compact Shield Recharger", "Supplemental Screen Generator I": "M51 Benefactor Compact Shield Recharger", "E5 Prototype Energy Vampire": "Small Knave Scoped Energy Nosferatu", "Medium 'Atonement' Remote Shield Booster": "Medium Murky Compact Remote Shield Booster", "Small 'Atonement' Remote Shield Booster": "Small Murky Compact Remote Shield Booster", "Heavy Diminishing Power System Drain I": "Heavy Ghoul Compact Energy Nosferatu", "Small Unstable Power Fluctuator I": "Small Gremlin Compact Energy Neutralizer", "Local Power Plant Manager: Reaction Shield Power Relay I": "Mark I Compact Shield Power Relay", "'Pacifier' Large Remote Armor Repairer": "'Peace' Large Remote Armor Repairer", "Small Diminishing Power System Drain I": "Small Ghoul Compact Energy Nosferatu", "Small Rudimentary Energy Destabilizer I": "Small Infectious Scoped Energy Neutralizer", "Medium Rudimentary Energy Destabilizer I": "Medium Infectious Scoped Energy Neutralizer", "Beta Reactor Control: Shield Power Relay I": "Type-D Restrained Shield Power Relay", "Micro Asymmetric Remote Shield Booster": "'Micro' Remote Shield Booster", "Micro Murky Remote Shield Booster": "'Micro' Remote Shield Booster", "Micro 'Atonement' Remote Shield Booster": "'Micro' Remote Shield Booster", "Micro S95a Remote Shield Booster": "'Micro' Remote Shield Booster", "Large 'Atonement' Remote Shield Booster": "Large Murky Compact Remote Shield Booster", "E50 Prototype Energy Vampire": "Medium Knave Scoped Energy Nosferatu", } ================================================ FILE: service/conversions/releaseEquinox.py ================================================ """ Conversion pack for Equinox release """ CONVERSIONS = { # Renamed items "Imperial Navy Mjolnir Auto-Targeting Cruise Missile I": "Legion Mjolnir Auto-Targeting Cruise Missile", "Caldari Navy Scourge Auto-Targeting Cruise Missile I": "Legion Scourge Auto-Targeting Cruise Missile", "Federation Navy Inferno Auto-Targeting Cruise Missile I": "Legion Inferno Auto-Targeting Cruise Missile", "Republic Fleet Nova Auto-Targeting Cruise Missile I": "Legion Nova Auto-Targeting Cruise Missile", "Imperial Navy Mjolnir Auto-Targeting Heavy Missile I": "Legion Mjolnir Auto-Targeting Heavy Missile", "Caldari Navy Scourge Auto-Targeting Heavy Missile I": "Legion Scourge Auto-Targeting Heavy Missile", "Federation Navy Inferno Auto-Targeting Heavy Missile I": "Legion Inferno Auto-Targeting Heavy Missile", "Republic Fleet Nova Auto-Targeting Heavy Missile I": "Legion Nova Auto-Targeting Heavy Missile", "Imperial Navy Mjolnir Auto-Targeting Light Missile I": "Legion Mjolnir Auto-Targeting Light Missile", "Caldari Navy Scourge Auto-Targeting Light Missile I": "Legion Scourge Auto-Targeting Light Missile", "Federation Navy Inferno Auto-Targeting Light Missile I": "Legion Inferno Auto-Targeting Light Missile", "Republic Fleet Nova Auto-Targeting Light Missile I": "Legion Nova Auto-Targeting Light Missile", } ================================================ FILE: service/conversions/releaseFeb2016.py ================================================ """ Conversion pack for January 2016 (YC118.1) release """ CONVERSIONS = { # Renamed items "Capital Coaxial Remote Armor Repairer Blueprint": "CONCORD Capital Remote Armor Repairer Blueprint", "Capital Murky Remote Shield Booster Blueprint": "CONCORD Capital Remote Shield Booster Blueprint", } ================================================ FILE: service/conversions/releaseFeb2018.py ================================================ """ Conversion pack for ~ Feb 2018 release """ CONVERSIONS = { "Standup AXL Missile Launcher I": "Standup Anticapital Missile Launcher I", "Standup ASML Missile Launcher I": "Standup Multirole Missile Launcher I", "Standup Warp Scrambler I": "Standup Focused Warp Disruptor I", "Standup M-Set Scan Resolution I": "Standup M-Set Enhanced Targeting System I", "Standup M-Set Scan Resolution II": "Standup M-Set Enhanced Targeting System II", "Standup AXL-S Missile": "Standup Super-heavy Torpedo", "Standup AXL-C Missile": "Standup XL Cruise Missile", "Standup ASML-LD Missile": "Standup Cruise Missile", "Standup ASML-MD Missile": "Standup Heavy Missile", "Standup ASML-SD Missile": "Standup Light Missile", "Standup AM Guided Bomb": "Standup Heavy Guided Bomb", "Standup AS Guided Bomb": "Standup Light Guided Bomb", } ================================================ FILE: service/conversions/releaseFeb2020.py ================================================ """ Conversion pack for February 2020 release """ CONVERSIONS = { # Renamed items "Small Asymmetric Remote Capacitor Transmitter": "Small Radiative Scoped Remote Capacitor Transmitter", "Small 'Regard' Remote Capacitor Transmitter": "Small Inductive Compact Remote Capacitor Transmitter", "Medium Asymmetric Remote Capacitor Transmitter": "Medium Radiative Scoped Remote Capacitor Transmitter", "Medium 'Regard' Remote Capacitor Transmitter": "Medium Inductive Compact Remote Capacitor Transmitter", "Large Asymmetric Remote Capacitor Transmitter": "Large Radiative Scoped Remote Capacitor Transmitter", "Large 'Regard' Remote Capacitor Transmitter": "Large Inductive Compact Remote Capacitor Transmitter", # Converted items "Small Partial E95a Remote Capacitor Transmitter": "Small Radiative Scoped Remote Capacitor Transmitter", "Small Murky Remote Capacitor Transmitter": "Small Inductive Compact Remote Capacitor Transmitter", "Medium Partial E95b Remote Capacitor Transmitter": "Medium Radiative Scoped Remote Capacitor Transmitter", "Medium Murky Remote Capacitor Transmitter": "Medium Inductive Compact Remote Capacitor Transmitter", "Large Partial E95c Remote Capacitor Transmitter": "Large Radiative Scoped Remote Capacitor Transmitter", "Large Murky Remote Capacitor Transmitter": "Large Inductive Compact Remote Capacitor Transmitter" } ================================================ FILE: service/conversions/releaseFeb2023.py ================================================ """ Conversion pack for February 2023 release """ CONVERSIONS = { # Renamed items "Restrained Interdiction Nullifier": "Enduring Interdiction Nullifier", "Synthetic Hull Conversion Inertia Stabilizers": "Synthetic Hull Conversion Inertial Stabilizers", "Tobias's Modified Torpedo Launcher": "Tobias' Modified Torpedo Launcher", "Vepas's Modified Torpedo Launcher": "Vepas' Modified Torpedo Launcher", "Vepas's Modified Kinetic Shield Hardener": "Vepas' Modified Kinetic Shield Hardener", "Vepas's Modified EM Shield Hardener": "Vepas' Modified EM Shield Hardener", "Vepas's Modified Explosive Shield Hardener": "Vepas' Modified Explosive Shield Hardener", "Vepas's Modified Thermal Shield Hardener": "Vepas' Modified Thermal Shield Hardener", "Vepas's Modified Multispectrum Shield Hardener": "Vepas' Modified Multispectrum Shield Hardener", } ================================================ FILE: service/conversions/releaseInvasion.py ================================================ """ Conversion pack for Invasion release """ CONVERSIONS = { # Renamed items "Light Veles Entropic Disintegrator": "Veles Light Entropic Disintegrator", "Heavy Veles Entropic Disintegrator": "Veles Heavy Entropic Disintegrator", "Supratidal Veles Entropic Disintegrator": "Veles Supratidal Entropic Disintegrator", } ================================================ FILE: service/conversions/releaseJan2016.py ================================================ """ Conversion pack for January 2016 (YC118.1) release """ CONVERSIONS = { # Renamed items "Micro' Remote Shield Booster": "'Micro' Remote Shield Booster", "C-IR Compact Guidance Disruptor I": "C-IR Compact Guidance Disruptor", "'Distributor' Guidance Disruptor I": "'Distributor' Guidance Disruptor", "'Distributor' Guidance Disruptor I Blueprint": "'Distributor' Guidance Disruptor Blueprint", "Highstroke Scoped Guidance Disruptor I": "Highstroke Scoped Guidance Disruptor", "A-211 Enduring Guidance Disruptor I": "A-211 Enduring Guidance Disruptor", } ================================================ FILE: service/conversions/releaseJan2020.py ================================================ """ Conversion pack for January 2020 release """ CONVERSIONS = { 'Small C5-L Emergency Shield Overload I': 'Small C5-L Compact Shield Booster', 'Small Clarity Ward Booster I': 'Small Clarity Ward Enduring Shield Booster', 'Medium Clarity Ward Booster I': 'Medium Clarity Ward Enduring Shield Booster', 'Medium C5-L Emergency Shield Overload I': 'Medium C5-L Compact Shield Booster', 'Large Clarity Ward Booster I': 'Large Clarity Ward Enduring Shield Booster', 'Large C5-L Emergency Shield Overload I': 'Large C5-L Compact Shield Booster', 'X-Large Clarity Ward Booster I': 'X-Large Clarity Ward Enduring Shield Booster', 'X-Large C5-L Emergency Shield Overload I': 'X-Large C5-L Compact Shield Booster', 'Small I-a Polarized Armor Regenerator': 'Small I-a Enduring Armor Repairer', 'Small \'Accommodation\' Vestment Reconstructer I': 'Small ACM Compact Armor Repairer', 'Medium I-a Polarized Armor Regenerator': 'Medium I-a Enduring Armor Repairer', 'Medium \'Accommodation\' Vestment Reconstructer I': 'Medium ACM Compact Armor Repairer', 'Large I-a Polarized Armor Regenerator': 'Large I-a Enduring Armor Repairer', 'Large \'Accommodation\' Vestment Reconstructer I': 'Large ACM Compact Armor Repairer', # Entries below were removed from DB, but CCP converted them to another item type 'Small Converse Deflection Catalyzer': 'Small Clarity Ward Enduring Shield Booster', 'Small Neutron Saturation Injector I': 'Small C5-L Compact Shield Booster', 'Medium Converse Deflection Catalyzer': 'Medium Clarity Ward Enduring Shield Booster', 'Medium Neutron Saturation Injector I': 'Medium C5-L Compact Shield Booster', 'Large Converse Deflection Catalyzer': 'Large Clarity Ward Enduring Shield Booster', 'Large Neutron Saturation Injector I': 'Large C5-L Compact Shield Booster', 'X-Large Converse Deflection Catalyzer': 'X-Large Clarity Ward Enduring Shield Booster', 'X-Large Neutron Saturation Injector I': 'X-Large C5-L Compact Shield Booster', 'Small Inefficient Armor Repair Unit': 'Small ACM Compact Armor Repairer', 'Small Automated Carapace Restoration': 'Small I-a Enduring Armor Repairer', 'Medium Inefficient Armor Repair Unit': 'Medium ACM Compact Armor Repairer', 'Medium Automated Carapace Restoration': 'Medium I-a Enduring Armor Repairer', 'Medium Nano Armor Repair Unit I': '\'Meditation\' Medium Armor Repairer I', 'Large Inefficient Armor Repair Unit': 'Large ACM Compact Armor Repairer', 'Large Automated Carapace Restoration': 'Large I-a Enduring Armor Repairer', # This item was not mentioned, assuming conversion to storyline 'Large \'Reprieve\' Vestment Reconstructer I': '\'Protest\' Large Armor Repairer I' } ================================================ FILE: service/conversions/releaseJul2020.py ================================================ """ Conversion pack for July 2020 release """ CONVERSIONS = { # Renamed items, extracted via diff file "Basic EM Plating": "'Basic' EM Coating", "EM Plating I": "EM Coating I", "EM Plating II": "EM Coating II", "Basic Explosive Plating": "'Basic' Explosive Coating", "Explosive Plating I": "Explosive Coating I", "Explosive Plating II": "Explosive Coating II", "Basic Layered Plating": "'Basic' Layered Coating", "Layered Plating I": "Layered Coating I", "Layered Plating II": "Layered Coating II", "Basic Kinetic Plating": "'Basic' Kinetic Coating", "Kinetic Plating I": "Kinetic Coating I", "Kinetic Plating II": "Kinetic Coating II", "Basic Thermal Plating": "'Basic' Thermal Coating", "Thermal Plating I": "Thermal Coating I", "Thermal Plating II": "Thermal Coating II", "Basic Adaptive Nano Plating": "'Basic' Multispectrum Coating", "Adaptive Nano Plating I": "Multispectrum Coating I", "Adaptive Nano Plating II": "Multispectrum Coating II", "Domination Adaptive Nano Plating": "Domination Multispectrum Coating", "True Sansha Adaptive Nano Plating": "True Sansha Multispectrum Coating", "Dark Blood Adaptive Nano Plating": "Dark Blood Multispectrum Coating", "Domination Kinetic Plating": "Domination Kinetic Coating", "True Sansha Kinetic Plating": "True Sansha Kinetic Coating", "Dark Blood Kinetic Plating": "Dark Blood Kinetic Coating", "Domination Explosive Plating": "Domination Explosive Coating", "True Sansha Explosive Plating": "True Sansha Explosive Coating", "Dark Blood Explosive Plating": "Dark Blood Explosive Coating", "Domination EM Plating": "Domination EM Coating", "True Sansha EM Plating": "True Sansha EM Coating", "Dark Blood EM Plating": "Dark Blood EM Coating", "Domination Thermal Plating": "Domination Thermal Coating", "True Sansha Thermal Plating": "True Sansha Thermal Coating", "Dark Blood Thermal Plating": "Dark Blood Thermal Coating", "Shadow Serpentis Adaptive Nano Plating": "Shadow Serpentis Multispectrum Coating", "Shadow Serpentis Kinetic Plating": "Shadow Serpentis Kinetic Coating", "Shadow Serpentis Explosive Plating": "Shadow Serpentis Explosive Coating", "Shadow Serpentis EM Plating": "Shadow Serpentis EM Coating", "Shadow Serpentis Thermal Plating": "Shadow Serpentis Thermal Coating", "Mizuro's Modified Adaptive Nano Plating": "Mizuro's Modified Multispectrum Coating", "Gotan's Modified Adaptive Nano Plating": "Gotan's Modified Multispectrum Coating", "Mizuro's Modified Kinetic Plating": "Mizuro's Modified Kinetic Coating", "Gotan's Modified Kinetic Plating": "Gotan's Modified Kinetic Coating", "Mizuro's Modified Explosive Plating": "Mizuro's Modified Explosive Coating", "Gotan's Modified Explosive Plating": "Gotan's Modified Explosive Coating", "Mizuro's Modified EM Plating": "Mizuro's Modified EM Coating", "Gotan's Modified EM Plating": "Gotan's Modified EM Coating", "Mizuro's Modified Thermal Plating": "Mizuro's Modified Thermal Coating", "Gotan's Modified Thermal Plating": "Gotan's Modified Thermal Coating", "Brokara's Modified Adaptive Nano Plating": "Brokara's Modified Multispectrum Coating", "Tairei's Modified Adaptive Nano Plating": "Tairei's Modified Multispectrum Coating", "Selynne's Modified Adaptive Nano Plating": "Selynne's Modified Multispectrum Coating", "Raysere's Modified Adaptive Nano Plating": "Raysere's Modified Multispectrum Coating", "Vizan's Modified Adaptive Nano Plating": "Vizan's Modified Multispectrum Coating", "Ahremen's Modified Adaptive Nano Plating": "Ahremen's Modified Multispectrum Coating", "Chelm's Modified Adaptive Nano Plating": "Chelm's Modified Multispectrum Coating", "Draclira's Modified Adaptive Nano Plating": "Draclira's Modified Multispectrum Coating", "Brokara's Modified Kinetic Plating": "Brokara's Modified Kinetic Coating", "Tairei's Modified Kinetic Plating": "Tairei's Modified Kinetic Coating", "Selynne's Modified Kinetic Plating": "Selynne's Modified Kinetic Coating", "Raysere's Modified Kinetic Plating": "Raysere's Modified Kinetic Coating", "Vizan's Modified Kinetic Plating": "Vizan's Modified Kinetic Coating", "Ahremen's Modified Kinetic Plating": "Ahremen's Modified Kinetic Coating", "Chelm's Modified Kinetic Plating": "Chelm's Modified Kinetic Coating", "Draclira's Modified Kinetic Plating": "Draclira's Modified Kinetic Coating", "Brokara's Modified Explosive Plating": "Brokara's Modified Explosive Coating", "Tairei's Modified Explosive Plating": "Tairei's Modified Explosive Coating", "Selynne's Modified Explosive Plating": "Selynne's Modified Explosive Coating", "Raysere's Modified Explosive Plating": "Raysere's Modified Explosive Coating", "Vizan's Modified Explosive Plating": "Vizan's Modified Explosive Coating", "Ahremen's Modified Explosive Plating": "Ahremen's Modified Explosive Coating", "Chelm's Modified Explosive Plating": "Chelm's Modified Explosive Coating", "Draclira's Modified Explosive Plating": "Draclira's Modified Explosive Coating", "Brokara's Modified EM Plating": "Brokara's Modified EM Coating", "Tairei's Modified EM Plating": "Tairei's Modified EM Coating", "Selynne's Modified EM Plating": "Selynne's Modified EM Coating", "Raysere's Modified EM Plating": "Raysere's Modified EM Coating", "Vizan's Modified EM Plating": "Vizan's Modified EM Coating", "Ahremen's Modified EM Plating": "Ahremen's Modified EM Coating", "Chelm's Modified EM Plating": "Chelm's Modified EM Coating", "Draclira's Modified EM Plating": "Draclira's Modified EM Coating", "Brokara's Modified Thermal Plating": "Brokara's Modified Thermal Coating", "Tairei's Modified Thermal Plating": "Tairei's Modified Thermal Coating", "Selynne's Modified Thermal Plating": "Selynne's Modified Thermal Coating", "Raysere's Modified Thermal Plating": "Raysere's Modified Thermal Coating", "Vizan's Modified Thermal Plating": "Vizan's Modified Thermal Coating", "Ahremen's Modified Thermal Plating": "Ahremen's Modified Thermal Coating", "Chelm's Modified Thermal Plating": "Chelm's Modified Thermal Coating", "Draclira's Modified Thermal Plating": "Draclira's Modified Thermal Coating", "Brynn's Modified Adaptive Nano Plating": "Brynn's Modified Multispectrum Coating", "Tuvan's Modified Adaptive Nano Plating": "Tuvan's Modified Multispectrum Coating", "Setele's Modified Adaptive Nano Plating": "Setele's Modified Multispectrum Coating", "Cormack's Modified Adaptive Nano Plating": "Cormack's Modified Multispectrum Coating", "Brynn's Modified Thermal Plating": "Brynn's Modified Thermal Coating", "Tuvan's Modified Thermal Plating": "Tuvan's Modified Thermal Coating", "Setele's Modified Thermal Plating": "Setele's Modified Thermal Coating", "Cormack's Modified Thermal Plating": "Cormack's Modified Thermal Coating", "Brynn's Modified EM Plating": "Brynn's Modified EM Coating", "Tuvan's Modified EM Plating": "Tuvan's Modified EM Coating", "Setele's Modified EM Plating": "Setele's Modified EM Coating", "Cormack's Modified EM Plating": "Cormack's Modified EM Coating", "Brynn's Modified Explosive Plating": "Brynn's Modified Explosive Coating", "Tuvan's Modified Explosive Plating": "Tuvan's Modified Explosive Coating", "Setele's Modified Explosive Plating": "Setele's Modified Explosive Coating", "Cormack's Modified Explosive Plating": "Cormack's Modified Explosive Coating", "Brynn's Modified Kinetic Plating": "Brynn's Modified Kinetic Coating", "Tuvan's Modified Kinetic Plating": "Tuvan's Modified Kinetic Coating", "Setele's Modified Kinetic Plating": "Setele's Modified Kinetic Coating", "Cormack's Modified Kinetic Plating": "Cormack's Modified Kinetic Coating", "Imperial Navy Thermal Plating": "Imperial Navy Thermal Coating", "Imperial Navy EM Plating": "Imperial Navy EM Coating", "Imperial Navy Explosive Plating": "Imperial Navy Explosive Coating", "Imperial Navy Kinetic Plating": "Imperial Navy Kinetic Coating", "Imperial Navy Adaptive Nano Plating": "Imperial Navy Multispectrum Coating", "Republic Fleet Thermal Plating": "Republic Fleet Thermal Coating", "Republic Fleet EM Plating": "Republic Fleet EM Coating", "Republic Fleet Explosive Plating": "Republic Fleet Explosive Coating", "Republic Fleet Kinetic Plating": "Republic Fleet Kinetic Coating", "Republic Fleet Adaptive Nano Plating": "Republic Fleet Multispectrum Coating", "Upgraded Adaptive Nano Plating I": "Upgraded Multispectrum Coating I", "Upgraded Kinetic Plating I": "Upgraded Kinetic Coating I", "Upgraded Explosive Plating I": "Upgraded Explosive Coating I", "Upgraded EM Plating I": "Upgraded EM Coating I", "Upgraded Thermal Plating I": "Upgraded Thermal Coating I", "Upgraded Layered Plating I": "Upgraded Layered Coating I", "Ammatar Navy Kinetic Plating": "Ammatar Navy Kinetic Coating", "Ammatar Navy Adaptive Nano Plating": "Ammatar Navy Multispectrum Coating", "Ammatar Navy Explosive Plating": "Ammatar Navy Explosive Coating", "Ammatar Navy EM Plating": "Ammatar Navy EM Coating", "Federation Navy Adaptive Nano Plating": "Federation Navy Multispectrum Coating", "Federation Navy Kinetic Plating": "Federation Navy Kinetic Coating", "Federation Navy Explosive Plating": "Federation Navy Explosive Coating", "Federation Navy EM Plating": "Federation Navy EM Coating", "Federation Navy Thermal Plating": "Federation Navy Thermal Coating", "Corpii C-Type Adaptive Nano Plating": "Corpii C-Type Multispectrum Coating", "Centii C-Type Adaptive Nano Plating": "Centii C-Type Multispectrum Coating", "Corpii B-Type Adaptive Nano Plating": "Corpii B-Type Multispectrum Coating", "Centii B-Type Adaptive Nano Plating": "Centii B-Type Multispectrum Coating", "Corpii A-Type Adaptive Nano Plating": "Corpii A-Type Multispectrum Coating", "Centii A-Type Adaptive Nano Plating": "Centii A-Type Multispectrum Coating", "Corpii C-Type Kinetic Plating": "Corpii C-Type Kinetic Coating", "Centii C-Type Kinetic Plating": "Centii C-Type Kinetic Coating", "Corpii C-Type Explosive Plating": "Corpii C-Type Explosive Coating", "Centii C-Type Explosive Plating": "Centii C-Type Explosive Coating", "Corpii C-Type EM Plating": "Corpii C-Type EM Coating", "Centii C-Type EM Plating": "Centii C-Type EM Coating", "Corpii C-Type Thermal Plating": "Corpii C-Type Thermal Coating", "Centii C-Type Thermal Plating": "Centii C-Type Thermal Coating", "Corpii B-Type Thermal Plating": "Corpii B-Type Thermal Coating", "Centii B-Type Thermal Plating": "Centii B-Type Thermal Coating", "Corpii B-Type Kinetic Plating": "Corpii B-Type Kinetic Coating", "Centii B-Type Kinetic Plating": "Centii B-Type Kinetic Coating", "Corpii B-Type Explosive Plating": "Corpii B-Type Explosive Coating", "Centii B-Type Explosive Plating": "Centii B-Type Explosive Coating", "Corpii B-Type EM Plating": "Corpii B-Type EM Coating", "Centii B-Type EM Plating": "Centii B-Type EM Coating", "Corpii A-Type Kinetic Plating": "Corpii A-Type Kinetic Coating", "Centii A-Type Kinetic Plating": "Centii A-Type Kinetic Coating", "Corpii A-Type Explosive Plating": "Corpii A-Type Explosive Coating", "Centii A-Type Explosive Plating": "Centii A-Type Explosive Coating", "Corpii A-Type EM Plating": "Corpii A-Type EM Coating", "Centii A-Type EM Plating": "Centii A-Type EM Coating", "Corpii A-Type Thermal Plating": "Corpii A-Type Thermal Coating", "Centii A-Type Thermal Plating": "Centii A-Type Thermal Coating", "Coreli C-Type Adaptive Nano Plating": "Coreli C-Type Multispectrum Coating", "Coreli C-Type Kinetic Plating": "Coreli C-Type Kinetic Coating", "Coreli C-Type Explosive Plating": "Coreli C-Type Explosive Coating", "Coreli C-Type EM Plating": "Coreli C-Type EM Coating", "Coreli C-Type Thermal Plating": "Coreli C-Type Thermal Coating", "Coreli B-Type Adaptive Nano Plating": "Coreli B-Type Multispectrum Coating", "Coreli B-Type Kinetic Plating": "Coreli B-Type Kinetic Coating", "Coreli B-Type Explosive Plating": "Coreli B-Type Explosive Coating", "Coreli B-Type EM Plating": "Coreli B-Type EM Coating", "Coreli B-Type Thermal Plating": "Coreli B-Type Thermal Coating", "Coreli A-Type Adaptive Nano Plating": "Coreli A-Type Multispectrum Coating", "Coreli A-Type Kinetic Plating": "Coreli A-Type Kinetic Coating", "Coreli A-Type Explosive Plating": "Coreli A-Type Explosive Coating", "Coreli A-Type EM Plating": "Coreli A-Type EM Coating", "Coreli A-Type Thermal Plating": "Coreli A-Type Thermal Coating", "Khanid Navy Adaptive Nano Plating": "Khanid Navy Multispectrum Coating", "Khanid Navy Kinetic Plating": "Khanid Navy Kinetic Coating", "Khanid Navy Explosive Plating": "Khanid Navy Explosive Coating", "Khanid Navy EM Plating": "Khanid Navy EM Coating", "Khanid Navy Thermal Plating": "Khanid Navy Thermal Coating", "Ammatar Navy Thermal Plating": "Ammatar Navy Thermal Coating", "Low-Grade Mimesis Alpha": "Low-grade Mimesis Alpha", "Low-Grade Mimesis Beta": "Low-grade Mimesis Beta", "Low-Grade Mimesis Gamma": "Low-grade Mimesis Gamma", "Low-Grade Mimesis Delta": "Low-grade Mimesis Delta", "Low-Grade Mimesis Epsilon": "Low-grade Mimesis Epsilon", "Low-Grade Mimesis Omega": "Low-grade Mimesis Omega", "Mid-Grade Mimesis Alpha": "Mid-grade Mimesis Alpha", "Mid-Grade Mimesis Beta": "Mid-grade Mimesis Beta", "Mid-Grade Mimesis Gamma": "Mid-grade Mimesis Gamma", "Mid-Grade Mimesis Delta": "Mid-grade Mimesis Delta", "Mid-Grade Mimesis Epsilon": "Mid-grade Mimesis Epsilon", "Mid-Grade Mimesis Omega": "Mid-grade Mimesis Omega", "High-Grade Mimesis Alpha": "High-grade Mimesis Alpha", "High-Grade Mimesis Beta": "High-grade Mimesis Beta", "High-Grade Mimesis Delta": "High-grade Mimesis Delta", "High-Grade Mimesis Epsilon": "High-grade Mimesis Epsilon", "High-Grade Mimesis Gamma": "High-grade Mimesis Gamma", "High-Grade Mimesis Omega": "High-grade Mimesis Omega", # Converted items "Limited Layered Plating I": "Upgraded Layered Coating I", "'Scarab' Layered Plating I": "Upgraded Layered Coating I", "'Grail' Layered Plating I": "Upgraded Layered Coating I", "Limited Adaptive Nano Plating I": "Upgraded Multispectrum Coating I", "'Collateral' Adaptive Nano Plating I": "Upgraded Multispectrum Coating I", "'Refuge' Adaptive Nano Plating I": "Upgraded Multispectrum Coating I", "Limited EM Plating I": "Upgraded EM Coating I", "'Contour' EM Plating I": "Upgraded EM Coating I", "'Spiegel' EM Plating I": "Upgraded EM Coating I", "Limited Explosive Plating I": "Upgraded Explosive Coating I", "Experimental Explosive Plating I": "Upgraded Explosive Coating I", "'Aegis' Explosive Plating I": "Upgraded Explosive Coating I", "Limited Kinetic Plating I": "Upgraded Kinetic Coating I", "Experimental Kinetic Plating I": "Upgraded Kinetic Coating I", "'Element' Kinetic Plating I": "Upgraded Kinetic Coating I", "Limited Thermal Plating I": "Upgraded Thermal Coating I", "Experimental Thermal Plating I": "Upgraded Thermal Coating I", "Prototype Thermal Plating I": "Upgraded Thermal Coating I" } ================================================ FILE: service/conversions/releaseJun2020.py ================================================ """ Conversion pack for June 2020 release """ CONVERSIONS = { # Renamed items, extracted via diff file "Basic EM Ward Amplifier": "'Basic' EM Shield Amplifier", "Basic Thermal Dissipation Amplifier": "'Basic' Thermal Shield Amplifier", "Basic Kinetic Deflection Amplifier": "'Basic' Kinetic Shield Amplifier", "Basic Explosive Deflection Amplifier": "'Basic' Explosive Shield Amplifier", "EM Ward Amplifier I": "EM Shield Amplifier I", "Explosive Deflection Amplifier I": "Explosive Shield Amplifier I", "Explosive Deflection Amplifier II": "Explosive Shield Amplifier II", "Thermal Dissipation Amplifier I": "Thermal Shield Amplifier I", "Thermal Dissipation Amplifier II": "Thermal Shield Amplifier II", "Kinetic Deflection Amplifier I": "Kinetic Shield Amplifier I", "Kinetic Deflection Amplifier II": "Kinetic Shield Amplifier II", "EM Ward Amplifier II": "EM Shield Amplifier II", "Upgraded Explosive Deflection Amplifier I": "Compact Explosive Shield Amplifier", "Upgraded Thermal Dissipation Amplifier I": "Compact Thermal Shield Amplifier", "Upgraded EM Ward Amplifier I": "Compact EM Shield Amplifier", "Upgraded Kinetic Deflection Amplifier I": "Compact Kinetic Shield Amplifier", "Domination Explosive Deflection Amplifier": "Domination Explosive Shield Amplifier", "Dread Guristas Explosive Deflection Amplifier": "Dread Guristas Explosive Shield Amplifier", "Domination Thermal Dissipation Amplifier": "Domination Thermal Shield Amplifier", "Dread Guristas Thermal Dissipation Amplifier": "Dread Guristas Thermal Shield Amplifier", "Domination Kinetic Deflection Amplifier": "Domination Kinetic Shield Amplifier", "Dread Guristas Kinetic Deflection Amplifier": "Dread Guristas Kinetic Shield Amplifier", "Domination EM Ward Amplifier": "Domination EM Shield Amplifier", "Dread Guristas EM Ward Amplifier": "Dread Guristas EM Shield Amplifier", "Hakim's Modified Explosive Deflection Amplifier": "Hakim's Modified Explosive Shield Amplifier", "Tobias' Modified Explosive Deflection Amplifier": "Tobias' Modified Explosive Shield Amplifier", "Hakim's Modified Thermal Dissipation Amplifier": "Hakim's Modified Thermal Shield Amplifier", "Tobias' Modified Thermal Dissipation Amplifier": "Tobias' Modified Thermal Shield Amplifier", "Hakim's Modified Kinetic Deflection Amplifier": "Hakim's Modified Kinetic Shield Amplifier", "Tobias' Modified Kinetic Deflection Amplifier": "Tobias' Modified Kinetic Shield Amplifier", "Hakim's Modified EM Ward Amplifier": "Hakim's Modified EM Shield Amplifier", "Tobias' Modified EM Ward Amplifier": "Tobias' Modified EM Shield Amplifier", "Kaikka's Modified Explosive Deflection Amplifier": "Kaikka's Modified Explosive Shield Amplifier", "Thon's Modified Explosive Deflection Amplifier": "Thon's Modified Explosive Shield Amplifier", "Vepas' Modified Explosive Deflection Amplifier": "Vepas' Modified Explosive Shield Amplifier", "Estamel's Modified Explosive Deflection Amplifier": "Estamel's Modified Explosive Shield Amplifier", "Kaikka's Modified Thermal Dissipation Amplifier": "Kaikka's Modified Thermal Shield Amplifier", "Thon's Modified Thermal Dissipation Amplifier": "Thon's Modified Thermal Shield Amplifier", "Vepas' Modified Thermal Dissipation Amplifier": "Vepas' Modified Thermal Shield Amplifier", "Estamel's Modified Thermal Dissipation Amplifier": "Estamel's Modified Thermal Shield Amplifier", "Kaikka's Modified Kinetic Deflection Amplifier": "Kaikka's Modified Kinetic Shield Amplifier", "Thon's Modified Kinetic Deflection Amplifier": "Thon's Modified Kinetic Shield Amplifier", "Vepas' Modified Kinetic Deflection Amplifier": "Vepas' Modified Kinetic Shield Amplifier", "Estamel's Modified Kinetic Deflection Amplifier": "Estamel's Modified Kinetic Shield Amplifier", "Kaikka's Modified EM Ward Amplifier": "Kaikka's Modified EM Shield Amplifier", "Thon's Modified EM Ward Amplifier": "Thon's Modified EM Shield Amplifier", "Vepas' Modified EM Ward Amplifier": "Vepas' Modified EM Shield Amplifier", "Estamel's Modified EM Ward Amplifier": "Estamel's Modified EM Shield Amplifier", "Caldari Navy EM Ward Amplifier": "Caldari Navy EM Shield Amplifier", "Caldari Navy Kinetic Deflection Amplifier": "Caldari Navy Kinetic Shield Amplifier", "Caldari Navy Thermal Dissipation Amplifier": "Caldari Navy Thermal Shield Amplifier", "Caldari Navy Explosive Deflection Amplifier": "Caldari Navy Explosive Shield Amplifier", "Republic Fleet EM Ward Amplifier": "Republic Fleet EM Shield Amplifier", "Republic Fleet Kinetic Deflection Amplifier": "Republic Fleet Kinetic Shield Amplifier", "Republic Fleet Thermal Dissipation Amplifier": "Republic Fleet Thermal Shield Amplifier", "Republic Fleet Explosive Deflection Amplifier": "Republic Fleet Explosive Shield Amplifier", "Pithum C-Type Explosive Deflection Amplifier": "Pithum C-Type Explosive Shield Amplifier", "Pithum C-Type Thermal Dissipation Amplifier": "Pithum C-Type Thermal Shield Amplifier", "Pithum C-Type Kinetic Deflection Amplifier": "Pithum C-Type Kinetic Shield Amplifier", "Pithum C-Type EM Ward Amplifier": "Pithum C-Type EM Shield Amplifier", "Pithum B-Type Explosive Deflection Amplifier": "Pithum B-Type Explosive Shield Amplifier", "Pithum B-Type Thermal Dissipation Amplifier": "Pithum B-Type Thermal Shield Amplifier", "Pithum B-Type Kinetic Deflection Amplifier": "Pithum B-Type Kinetic Shield Amplifier", "Pithum B-Type EM Ward Amplifier": "Pithum B-Type EM Shield Amplifier", "Pithum A-Type Explosive Deflection Amplifier": "Pithum A-Type Explosive Shield Amplifier", "Pithum A-Type Thermal Dissipation Amplifier": "Pithum A-Type Thermal Shield Amplifier", "Pithum A-Type Kinetic Deflection Amplifier": "Pithum A-Type Kinetic Shield Amplifier", "Pithum A-Type EM Ward Amplifier": "Pithum A-Type EM Shield Amplifier", "Gistum C-Type Explosive Deflection Amplifier": "Gistum C-Type Explosive Shield Amplifier", "Gistum B-Type Explosive Deflection Amplifier": "Gistum B-Type Explosive Shield Amplifier", "Gistum C-Type Thermal Dissipation Amplifier": "Gistum C-Type Thermal Shield Amplifier", "Gistum B-Type Thermal Dissipation Amplifier": "Gistum B-Type Thermal Shield Amplifier", "Gistum C-Type Kinetic Deflection Amplifier": "Gistum C-Type Kinetic Shield Amplifier", "Gistum B-Type Kinetic Deflection Amplifier": "Gistum B-Type Kinetic Shield Amplifier", "Gistum C-Type EM Ward Amplifier": "Gistum C-Type EM Shield Amplifier", "Gistum B-Type EM Ward Amplifier": "Gistum B-Type EM Shield Amplifier", "Gistum A-Type Explosive Deflection Amplifier": "Gistum A-Type Explosive Shield Amplifier", "Gistum A-Type Thermal Dissipation Amplifier": "Gistum A-Type Thermal Shield Amplifier", "Gistum A-Type Kinetic Deflection Amplifier": "Gistum A-Type Kinetic Shield Amplifier", "Gistum A-Type EM Ward Amplifier": "Gistum A-Type EM Shield Amplifier", "'Whiskey' Explosive Deflection Amplifier": "'Whiskey' Explosive Shield Amplifier", "'High Noon' Thermal Dissipation Amplifier": "'High Noon' Thermal Shield Amplifier", "'Cactus' Modified Kinetic Deflection Amplifier": "'Cactus' Modified Kinetic Shield Amplifier", "'Prospector' EM Ward Amplifier": "'Prospector' EM Shield Amplifier", # Converted items "Supplemental EM Ward Amplifier": "'Basic' EM Shield Amplifier", "Supplemental Explosive Deflection Amplifier": "'Basic' Explosive Shield Amplifier", "Supplemental Kinetic Deflection Amplifier": "'Basic' Kinetic Shield Amplifier", "Supplemental Thermal Dissipation Amplifier": "'Basic' Thermal Shield Amplifier", "Dark Blood Tracking Disruptor": "'Investor' Tracking Disruptor I" } ================================================ FILE: service/conversions/releaseMar2016.py ================================================ """ Conversion pack for January 2016 (YC118.1) release """ CONVERSIONS = { # Renamed items "Basic Gyrostabilizer": "'Basic' Gyrostabilizer", "Basic Damage Control": "'Basic' Damage Control", "Micro Capacitor Battery I": "'Micro' Cap Battery", "ECM Burst I": "Burst Jammer I", "Small Capacitor Battery I": "Small Cap Battery I", "Basic Heat Sink": "'Basic' Heat Sink", "ECM - Ion Field Projector I": "Magnetometric ECM I", "Basic Signal Amplifier": "'Basic' Signal Amplifier", "Basic Tracking Enhancer": "'Basic' Tracking Enhancer", "ECM - Spatial Destabilizer I": "Gravimetric ECM I", "ECM - White Noise Generator I": "Radar ECM I", "ECM - Multispectral Jammer I": "Multispectral ECM I", "ECM - Phase Inverter I": "Ladar ECM I", "Medium Capacitor Battery I": "Medium Cap Battery I", "Large Capacitor Battery I": "Large Cap Battery I", "ECM Burst II": "Burst Jammer II", "Guristas Nova Citadel Cruise Missile": "Guristas Nova XL Cruise Missile", "Guristas Scourge Citadel Cruise Missile": "Guristas Scourge XL Cruise Missile", "Guristas Inferno Citadel Cruise Missile": "Guristas Inferno XL Cruise Missile", "Guristas Mjolnir Citadel Cruise Missile": "Guristas Mjolnir XL Cruise Missile", "ECM - Phase Inverter II": "Ladar ECM II", "ECM - Ion Field Projector II": "Magnetometric ECM II", "ECM - Multispectral Jammer II": "Multispectral ECM II", "ECM - Spatial Destabilizer II": "Gravimetric ECM II", "ECM - White Noise Generator II": "Radar ECM II", "Small Capacitor Battery II": "Small Cap Battery II", "Medium Capacitor Battery II": "Medium Cap Battery II", "Large Capacitor Battery II": "Large Cap Battery II", "'Limos' Citadel Cruise Launcher I": "'Limos' XL Cruise Launcher I", "Shock 'Limos' Citadel Torpedo Bay I": "Shock 'Limos' XL Torpedo Bay I", "X5 Prototype Engine Enervator": "X5 Enduring Stasis Webifier", "Fleeting Propulsion Inhibitor I": "Fleeting Compact Stasis Webifier", "Caldari Fuel Block": "Nitrogen Fuel Block", "Minmatar Fuel Block": "Hydrogen Fuel Block", "Amarr Fuel Block": "Helium Fuel Block", "Gallente Fuel Block": "Oxygen Fuel Block", "Small Ld-Acid Capacitor Battery I": "Small Compact Pb-Acid Cap Battery ", "Large Ld-Acid Capacitor Battery I": "Large Compact Pb-Acid Cap Battery", "F-23 Reciprocal Remote Sensor Booster": "F-23 Compact Remote Sensor Booster", "Coadjunct Linked Remote Sensor Booster": "Coadjunct Scoped Remote Sensor Booster", "Linked Remote Sensor Booster": "Linked Enduring Sensor Booster", "Low Frequency Sensor Suppressor I": "LFT Enduring Sensor Dampener", "Kapteyn Sensor Array Inhibitor I": "Kapteyn Compact Sensor Dampener", "Phased Muon Sensor Disruptor I": "Phased Muon Scoped Sensor Dampener", "F-293 Nutation Remote Tracking Computer": "F-293 Scoped Remote Tracking Computer", "Phase Switching Remote Tracking Computer": "P-S Compact Remote Tracking Computer", "Alfven Surface Remote Tracking Computer": "Alfven Enduring Remote Tracking Computer", "'Deluge' ECM Burst I": "Deluge Enduring Burst Jammer", "'Rash' ECM Emission I": "Rash Compact Burst Jammer", "'Cetus' ECM Shockwave I": "Cetus Scoped Burst Jammer", "J5 Prototype Warp Disruptor I": "J5 Enduring Warp Disruptor", "Faint Warp Disruptor I": "Faint Scoped Warp Disruptor", "Initiated Warp Disruptor I": "Initiated Compact Warp Disruptor", "J5b Phased Prototype Warp Scrambler I": "J5b Enduring Warp Scrambler", "Faint Epsilon Warp Scrambler I": "Faint Epsilon Scoped Warp Scrambler", "Initiated Harmonic Warp Scrambler I": "Initiated Compact Warp Scrambler", "Internal Force Field Array I": "IFFA Compact Damage Control", "Extruded Heat Sink I": "Extruded Compact Heat Sink", "Counterbalanced Weapon Mounts I": "Counterbalanced Compact Gyrostabilizer", "Medium Ld-Acid Capacitor Battery I": "Medium Compact Pb-Acid Cap Battery", "Alumel-Wired Sensor Augmentation": "Alumel-Wired Enduring Sensor Booster", "F-90 Positional Sensor Subroutines": "F-90 Compact Sensor Booster", "Optical Tracking Computer I": "Optical Compact Tracking Computer", "F-12 Nonlinear Tracking Processor": "F-12 Enduring Tracking Computer", "F-89 Synchronized Signal Amplifier": "F-89 Compact Signal Amplifier", "Fourier Transform Tracking Program": "Fourier Compact Tracking Enhancer", "Initiated Multispectral ECM I": "Initiated Enduring Multispectral ECM", "Basic Magnetic Field Stabilizer": "'Basic' Magnetic Field Stabilizer", "Magnetic Vortex Stabilizer I": "Vortex Compact Magnetic Field Stabilizer", "Mizuro's Modified Warp Disruptor": "Mizuro's Modified Heavy Warp Disruptor", "Hakim's Modified Warp Disruptor": "Hakim's Modified Heavy Warp Disruptor", "Gotan's Modified Warp Disruptor": "Gotan's Modified Heavy Warp Disruptor", "Tobias' Modified Warp Disruptor": "Tobias' Modified Heavy Warp Disruptor", "Mizuro's Modified Warp Scrambler": "Mizuro's Modified Heavy Warp Scrambler", "Hakim's Modified Warp Scrambler": "Hakim's Modified Heavy Warp Scrambler", "Gotan's Modified Warp Scrambler": "Gotan's Modified Heavy Warp Scrambler", "Tobias' Modified Warp Scrambler": "Tobias' Modified Heavy Warp Scrambler", "Cross-linked Bolt Array I": "Crosslink Compact Ballistic Control System", "Citadel Torpedo Battery": "XL Torpedo Battery", "Mjolnir Citadel Torpedo": "Mjolnir XL Torpedo", "Scourge Citadel Torpedo": "Scourge XL Torpedo", "Inferno Citadel Torpedo": "Inferno XL Torpedo", "Nova Citadel Torpedo": "Nova XL Torpedo", "Peripheral Weapon Navigation Diameter": "Peripheral Compact Target Painter", "Parallel Weapon Navigation Transmitter": "Parallel Enduring Target Painter", "Phased Weapon Navigation Array Generation Extron": "Phased Scoped Target Painter", "Induced Ion Field ECM I": "Morpheus Enduring Magnetometric ECM", "Compulsive Ion Field ECM I": "Aergia Compact Magnetometric ECM", "'Hypnos' Ion Field ECM I": "Hypnos Scoped Magnetometric ECM", "Induced Multispectral ECM I": "Induced Compact Multispectral ECM", "Compulsive Multispectral ECM I": "Compulsive Scoped Multispectral ECM", "Languid Phase Inversion ECM I": "Languid Enduring Ladar ECM", "Halting Phase Inversion ECM I": "Halting Compact Ladar ECM", "Enfeebling Phase Inversion ECM I": "Enfeebling Scoped Ladar ECM", "FZ-3a Disruptive Spatial Destabilizer ECM": "FZ-3a Enduring Gravimetric ECM", "CZ-4 Concussive Spatial Destabilizer ECM": "CZ-4 Compact Gravimetric ECM", "BZ-5 Neutralizing Spatial Destabilizer ECM": "BZ-5 Scoped Gravimetric ECM", "'Gloom' White Noise ECM": "Gloom Enduring Radar ECM", "'Shade' White Noise ECM": "Shade Compact Radar ECM", "'Umbra' White Noise ECM": "Umbra Scoped Radar ECM", "Dread Guristas ECM Multispectral Jammer": "Dread Guristas Multispectral ECM", "Kaikka's Modified ECM Multispectral Jammer": "Kaikka's Modified Multispectral ECM", "Thon's Modified ECM Multispectral Jammer": "Thon's Modified Multispectral ECM", "Vepas' Modified ECM Multispectral Jammer": "Vepas' Modified Multispectral ECM", "Estamel's Modified ECM Multispectral Jammer": "Estamel's Modified Multispectral ECM", "Citadel Torpedo Launcher I": "XL Torpedo Launcher I", "'Marshall' Ion Field Projector": "'Marshall' Magnetometric ECM", "'Gambler' Phase Inverter": "'Gambler' Ladar ECM", "'Plunderer' Spatial Destabilizer": "'Plunderer' Gravimetric ECM", "'Heist' White Noise Generator": "'Heist' Radar ECM", "'Ghost' ECM Burst": "'Ghost' Burst Jammer", "'Full Duplex' Ballistic Targeting System": "'Full Duplex' Ballistic Control System", "'Kindred' Stabilization Actuator I": "'Kindred' Gyrostabilizer", "Process-Interruptive Warp Disruptor": "'Interruptive' Warp Disruptor", "'Inception' Target Painter I": "'Inception' Target Painter", "Citadel Torpedoes": "XL Torpedoes", "'Shady' ECCM - Gravimetric I": "'Shady' Sensor Booster", "'Monopoly' Magnetic Field Stabilizer I": "'Monopoly' Magnetic Field Stabilizer", "'Bootleg' ECCM Projector I": "'Bootleg' Remote Sensor Booster", "'Marketeer' Tracking Computer I": "'Marketeer' Tracking Computer", "'Executive' Remote Sensor Dampener I": "'Executive' Remote Sensor Dampener", "'Radical' Damage Control I": "'Radical' Damage Control", "'Crucible' Small Capacitor Battery I": "'Crucible' Small Cap Battery", "'Censer' Medium Capacitor Battery I": "'Censer' Medium Cap Battery", "'Thurifer' Large Capacitor Battery I": "'Thurifer' Large Cap Battery", "Guristas Citadel Torpedo Battery": "Guristas XL Torpedo Battery", "Dread Guristas Citadel Torpedo Battery": "Dread Guristas XL Torpedo Battery", "Legion ECM Ion Field Projector": "Legion Magnetometric ECM", "Legion ECM Multispectral Jammer": "Legion Multispectral ECM", "Legion ECM Phase Inverter": "Legion Ladar ECM", "Legion ECM Spatial Destabilizer": "Legion Gravimetric ECM", "Legion ECM White Noise Generator": "Legion Radar ECM", "Guristas Nova Citadel Torpedo": "Guristas Nova XL Torpedo", "Guristas Inferno Citadel Torpedo": "Guristas Inferno XL Torpedo", "Guristas Scourge Citadel Torpedo": "Guristas Scourge XL Torpedo", "Guristas Mjolnir Citadel Torpedo": "Guristas Mjolnir XL Torpedo", "Citadel Cruise Missiles": "XL Cruise Missiles", "Scourge Citadel Cruise Missile": "Scourge XL Cruise Missile", "Nova Citadel Cruise Missile": "Nova XL Cruise Missile", "Inferno Citadel Cruise Missile": "Inferno XL Cruise Missile", "Mjolnir Citadel Cruise Missile": "Mjolnir XL Cruise Missile", "Citadel Cruise Launcher I": "XL Cruise Launcher I", # Converted items "Muon Coil Bolt Array I": "Crosslink Compact Ballistic Control System", "Multiphasic Bolt Array I": "Crosslink Compact Ballistic Control System", "'Pandemonium' Ballistic Enhancement": "Crosslink Compact Ballistic Control System", "Piercing ECCM Emitter I": "Coadjunct Scoped Remote Sensor Booster", "1Z-3 Subversive ECM Eruption": "Cetus Scoped Burst Jammer", "ECCM - Radar I": "Sensor Booster I", "ECCM - Ladar I": "Sensor Booster I", "ECCM - Magnetometric I": "Sensor Booster I", "ECCM - Gravimetric I": "Sensor Booster I", "ECCM - Omni I": "Sensor Booster I", "Beta-Nought Tracking Mode": "'Basic' Tracking Enhancer", "Azimuth Descalloping Tracking Enhancer": "'Basic' Tracking Enhancer", "F-AQ Delay-Line Scan Tracking Subroutines": "'Basic' Tracking Enhancer", "Beam Parallax Tracking Program": "'Basic' Tracking Enhancer", "GLFF Containment Field": "'Basic' Damage Control", "Interior Force Field Array": "'Basic' Damage Control", "F84 Local Damage System": "'Basic' Damage Control", "Systematic Damage Control": "'Basic' Damage Control", "'Boss' Remote Sensor Booster": "'Bootleg' Remote Sensor Booster", "'Entrepreneur' Remote Sensor Booster": "'Bootleg' Remote Sensor Booster", "Fleeting Progressive Warp Scrambler I": "Faint Epsilon Scoped Warp Scrambler", "ECCM Projector I": "Remote Sensor Booster I", "Sigma-Nought Tracking Mode I": "Fourier Compact Tracking Enhancer", "Auto-Gain Control Tracking Enhancer I": "Fourier Compact Tracking Enhancer", "F-aQ Phase Code Tracking Subroutines": "Fourier Compact Tracking Enhancer", "Monophonic Stabilization Actuator I": "'Kindred' Gyrostabilizer", "Initiated Ion Field ECM I": "Hypnos Scoped Magnetometric ECM", "Insulated Stabilizer Array": "'Basic' Magnetic Field Stabilizer", "Linear Flux Stabilizer": "'Basic' Magnetic Field Stabilizer", "Gauss Field Balancer": "'Basic' Magnetic Field Stabilizer", "Magnetic Vortex Stabilizer": "'Basic' Magnetic Field Stabilizer", "'Capitalist' Magnetic Field Stabilizer I": "'Monopoly' Magnetic Field Stabilizer", "Emergency Damage Control I": "IFFA Compact Damage Control", "F85 Peripheral Damage System I": "IFFA Compact Damage Control", "Pseudoelectron Containment Field I": "IFFA Compact Damage Control", "Micro Ld-Acid Capacitor Battery I": "'Micro' Cap Battery", "Micro Ohm Capacitor Reserve I": "'Micro' Cap Battery", "Micro F-4a Ld-Sulfate Capacitor Charge Unit": "'Micro' Cap Battery", "Micro Peroxide Capacitor Power Cell": "'Micro' Cap Battery", "Micro Capacitor Battery II": "'Micro' Cap Battery", "Lateral Gyrostabilizer": "'Basic' Gyrostabilizer", "F-M2 Weapon Inertial Suspensor": "'Basic' Gyrostabilizer", "Hydraulic Stabilization Actuator": "'Basic' Gyrostabilizer", "Stabilized Weapon Mounts": "'Basic' Gyrostabilizer", "'Hypnos' Multispectral ECM I": "Compulsive Scoped Multispectral ECM", "Fleeting Warp Disruptor I": "Faint Scoped Warp Disruptor", "'Mangonel' Heat Sink I": "'Trebuchet' Heat Sink I", "Heat Exhaust System": "'Basic' Heat Sink", "C3S Convection Thermal Radiator": "'Basic' Heat Sink", "'Boreas' Coolant System": "'Basic' Heat Sink", "Stamped Heat Sink": "'Basic' Heat Sink", "Extra Radar ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Extra Ladar ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Extra Gravimetric ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Extra Magnetometric ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Gravimetric Positional ECCM Sensor System I": "F-90 Compact Sensor Booster", "Radar Positional ECCM Sensor System I": "F-90 Compact Sensor Booster", "Omni Positional ECCM Sensor System I": "F-90 Compact Sensor Booster", "Ladar Positional ECCM Sensor System I": "F-90 Compact Sensor Booster", "Magnetometric Positional ECCM Sensor System I": "F-90 Compact Sensor Booster", "Conjunctive Radar ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Conjunctive Ladar ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Conjunctive Gravimetric ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Conjunctive Magnetometric ECCM Scanning Array I": "F-90 Compact Sensor Booster", "Supplemental Scanning CPU I": "F-90 Compact Sensor Booster", "'Gonzo' Damage Control I": "'Radical' Damage Control", "'Penumbra' White Noise ECM": "Umbra Scoped Radar ECM", "ECCM - Omni II": "Sensor Booster II", "ECCM - Gravimetric II": "Sensor Booster II", "ECCM - Ladar II": "Sensor Booster II", "ECCM - Magnetometric II": "Sensor Booster II", "ECCM - Radar II": "Sensor Booster II", "Scattering ECCM Projector I": "Linked Enduring Sensor Booster", "Gravimetric Backup Array I": "Signal Amplifier I", "Ladar Backup Array I": "Signal Amplifier I", "Magnetometric Backup Array I": "Signal Amplifier I", "Multi Sensor Backup Array I": "Signal Amplifier I", "RADAR Backup Array I": "Signal Amplifier I", "Large Ohm Capacitor Reserve I": "Large Compact Pb-Acid Cap Battery", "Large F-4a Ld-Sulfate Capacitor Charge Unit": "Large Compact Pb-Acid Cap Battery", "Large Peroxide Capacitor Power Cell": "Large Compact Pb-Acid Cap Battery", "ECCM Projector II": "Remote Sensor Booster II", "Cross-Lateral Gyrostabilizer I": "Counterbalanced Compact Gyrostabilizer", "F-M3 Munition Inertial Suspensor": "Counterbalanced Compact Gyrostabilizer", "Pneumatic Stabilization Actuator I": "Counterbalanced Compact Gyrostabilizer", "'Langour' Drive Disruptor I": "X5 Enduring Stasis Webifier", "Patterned Stasis Web I": "Fleeting Compact Stasis Webifier", "'Tycoon' Remote Tracking Computer": "'Enterprise' Remote Tracking Computer", "'Economist' Tracking Computer I": "'Marketeer' Tracking Computer", "Gravimetric Backup Array II": "Signal Amplifier II", "Ladar Backup Array II": "Signal Amplifier II", "Magnetometric Backup Array II": "Signal Amplifier II", "Multi Sensor Backup Array II": "Signal Amplifier II", "RADAR Backup Array II": "Signal Amplifier II", "Faint Phase Inversion ECM I": "Enfeebling Scoped Ladar ECM", "'Prayer' Remote Tracking Computer": "P-S Compact Remote Tracking Computer", "Partial Weapon Navigation": "Phased Scoped Target Painter", "Basic RADAR Backup Array": "'Basic' Signal Amplifier", "Basic Ladar Backup Array": "'Basic' Signal Amplifier", "Basic Gravimetric Backup Array": "'Basic' Signal Amplifier", "Basic Magnetometric Backup Array": "'Basic' Signal Amplifier", "Basic Multi Sensor Backup Array": "'Basic' Signal Amplifier", "Emergency Magnetometric Scanners": "'Basic' Signal Amplifier", "Emergency Multi-Frequency Scanners": "'Basic' Signal Amplifier", "Emergency RADAR Scanners": "'Basic' Signal Amplifier", "Emergency Ladar Scanners": "'Basic' Signal Amplifier", "Emergency Gravimetric Scanners": "'Basic' Signal Amplifier", "Sealed RADAR Backup Cluster": "'Basic' Signal Amplifier", "Sealed Magnetometric Backup Cluster": "'Basic' Signal Amplifier", "Sealed Multi-Frequency Backup Cluster": "'Basic' Signal Amplifier", "Sealed Ladar Backup Cluster": "'Basic' Signal Amplifier", "Sealed Gravimetric Backup Cluster": "'Basic' Signal Amplifier", "Surplus RADAR Reserve Array": "'Basic' Signal Amplifier", "F-42 Reiterative RADAR Backup Sensors": "'Basic' Signal Amplifier", "Surplus Magnetometric Reserve Array": "'Basic' Signal Amplifier", "F-42 Reiterative Magnetometric Backup Sensors": "'Basic' Signal Amplifier", "Surplus Multi-Frequency Reserve Array": "'Basic' Signal Amplifier", "F-42 Reiterative Multi-Frequency Backup Sensors": "'Basic' Signal Amplifier", "Surplus Ladar Reserve Array": "'Basic' Signal Amplifier", "F-42 Reiterative Ladar Backup Sensors": "'Basic' Signal Amplifier", "Surplus Gravimetric Reserve Array": "'Basic' Signal Amplifier", "F-42 Reiterative Gravimetric Backup Sensors": "'Basic' Signal Amplifier", "Amplitude Signal Enhancer": "'Basic' Signal Amplifier", "'Acolyth' Signal Booster": "'Basic' Signal Amplifier", "Type-E Discriminative Signal Augmentation": "'Basic' Signal Amplifier", "F-90 Positional Signal Amplifier": "'Basic' Signal Amplifier", "Gravimetric Firewall": "'Firewall' Signal Amplifier", "Ladar Firewall": "'Firewall' Signal Amplifier", "Magnetometric Firewall": "'Firewall' Signal Amplifier", "Multi Sensor Firewall": "'Firewall' Signal Amplifier", "RADAR Firewall": "'Firewall' Signal Amplifier", "'Pacifier' Large Remote Armor Repairer": "'Peace' Large Remote Armor Repairer", "Monopulse Tracking Mechanism I": "F-12 Enduring Tracking Computer", "Alumel Radar ECCM Sensor Array I": "Alumel-Wired Enduring Sensor Booster", "Alumel Ladar ECCM Sensor Array I": "Alumel-Wired Enduring Sensor Booster", "Alumel Gravimetric ECCM Sensor Array I": "Alumel-Wired Enduring Sensor Booster", "Alumel Omni ECCM Sensor Array I": "Alumel-Wired Enduring Sensor Booster", "Alumel Magnetometric ECCM Sensor Array I": "Alumel-Wired Enduring Sensor Booster", "Supplemental Ladar ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Supplemental Gravimetric ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Supplemental Omni ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Supplemental Radar ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Supplemental Magnetometric ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Incremental Radar ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Incremental Ladar ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Incremental Gravimetric ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Incremental Magnetometric ECCM Scanning Array I": "Alumel-Wired Enduring Sensor Booster", "Prototype ECCM Radar Sensor Cluster": "Alumel-Wired Enduring Sensor Booster", "Prototype ECCM Ladar Sensor Cluster": "Alumel-Wired Enduring Sensor Booster", "Prototype ECCM Gravimetric Sensor Cluster": "Alumel-Wired Enduring Sensor Booster", "Prototype ECCM Omni Sensor Cluster": "Alumel-Wired Enduring Sensor Booster", "Prototype ECCM Magnetometric Sensor Cluster": "Alumel-Wired Enduring Sensor Booster", "Prototype Sensor Booster": "Alumel-Wired Enduring Sensor Booster", "Thermal Exhaust System I": "Extruded Compact Heat Sink", "C4S Coiled Circuit Thermal Radiator": "Extruded Compact Heat Sink", "'Skadi' Coolant System I": "Extruded Compact Heat Sink", "'Forger' ECCM - Magnetometric I": "'Shady' Sensor Booster", "Insulated Stabilizer Array I": "Vortex Compact Magnetic Field Stabilizer", "Linear Flux Stabilizer I": "Vortex Compact Magnetic Field Stabilizer", "Gauss Field Balancer I": "Vortex Compact Magnetic Field Stabilizer", "'Broker' Remote Sensor Dampener I": "'Executive' Remote Sensor Dampener", "'Orion' Tracking CPU I": "Optical Compact Tracking Computer", "Spot Pulsing ECCM I": "F-23 Compact Remote Sensor Booster", "Phased Muon ECCM Caster I": "F-23 Compact Remote Sensor Booster", "Connected Remote Sensor Booster": "F-23 Compact Remote Sensor Booster", "Small Ohm Capacitor Reserve I": "Small Compact Pb-Acid Cap Battery", "Small F-4a Ld-Sulfate Capacitor Charge Unit": "Small Compact Pb-Acid Cap Battery", "Small Peroxide Capacitor Power Cell": "Small Compact Pb-Acid Cap Battery", "FZ-3 Subversive Spatial Destabilizer ECM": "BZ-5 Scoped Gravimetric ECM", "Medium Ohm Capacitor Reserve I": "Medium Compact Pb-Acid Cap Battery", "Medium F-4a Ld-Sulfate Capacitor Charge Unit": "Medium Compact Pb-Acid Cap Battery", "Medium Peroxide Capacitor Power Cell": "Medium Compact Pb-Acid Cap Battery", "Ballistic 'Purge' Targeting System I": "'Full Duplex' Ballistic Control System", "Protected Gravimetric Backup Cluster I": "F-89 Compact Signal Amplifier", "Protected Ladar Backup Cluster I": "F-89 Compact Signal Amplifier", "Protected Magnetometric Backup Cluster I": "F-89 Compact Signal Amplifier", "Protected Multi-Frequency Backup Cluster I": "F-89 Compact Signal Amplifier", "Protected RADAR Backup Cluster I": "F-89 Compact Signal Amplifier", "Reserve Gravimetric Scanners": "F-89 Compact Signal Amplifier", "Reserve Ladar Scanners": "F-89 Compact Signal Amplifier", "Reserve Magnetometric Scanners": "F-89 Compact Signal Amplifier", "Reserve Multi-Frequency Scanners": "F-89 Compact Signal Amplifier", "Reserve RADAR Scanners": "F-89 Compact Signal Amplifier", "Secure Gravimetric Backup Cluster I": "F-89 Compact Signal Amplifier", "Secure Ladar Backup Cluster I": "F-89 Compact Signal Amplifier", "Secure Magnetometric Backup Cluster I": "F-89 Compact Signal Amplifier", "Secure Radar Backup Cluster I": "F-89 Compact Signal Amplifier", "F-43 Repetitive Gravimetric Backup Sensors": "F-89 Compact Signal Amplifier", "F-43 Repetitive Ladar Backup Sensors": "F-89 Compact Signal Amplifier", "F-43 Repetitive Magnetometric Backup Sensors": "F-89 Compact Signal Amplifier", "F-43 Repetitive Multi-Frequency Backup Sensors": "F-89 Compact Signal Amplifier", "F-43 Repetitive RADAR Backup Sensors": "F-89 Compact Signal Amplifier", "Shielded Gravimetric Backup Cluster I": "F-89 Compact Signal Amplifier", "Shielded Ladar Backup Cluster I": "F-89 Compact Signal Amplifier", "Shielded Magnetometric Backup Cluster I": "F-89 Compact Signal Amplifier", "Shielded Radar Backup Cluster I": "F-89 Compact Signal Amplifier", "Surrogate Gravimetric Reserve Array I": "F-89 Compact Signal Amplifier", "Surrogate Ladar Reserve Array I": "F-89 Compact Signal Amplifier", "Surrogate Magnetometric Reserve Array I": "F-89 Compact Signal Amplifier", "Surrogate Multi-Frequency Reserve Array I": "F-89 Compact Signal Amplifier", "Surrogate RADAR Reserve Array I": "F-89 Compact Signal Amplifier", "Warded Gravimetric Backup Cluster I": "F-89 Compact Signal Amplifier", "Warded Ladar Backup Cluster I": "F-89 Compact Signal Amplifier", "Warded Magnetometric Backup Cluster I": "F-89 Compact Signal Amplifier", "Warded Radar Backup Cluster I": "F-89 Compact Signal Amplifier", "'Mendicant' Signal Booster I": "F-89 Compact Signal Amplifier", "Wavelength Signal Enhancer I": "F-89 Compact Signal Amplifier", "Type-D Attenuation Signal Augmentation": "F-89 Compact Signal Amplifier", "Indirect Scanning Dampening Unit I": "Phased Muon Scoped Sensor Dampener", } ================================================ FILE: service/conversions/releaseMar2020.py ================================================ """ Conversion pack for March 2020 release """ CONVERSIONS = { # Renamed items "Micro Electrochemical Capacitor Booster I": "'Seed' Micro Capacitor Booster I", "Small Electrochemical Capacitor Booster I": "Small F-RX Compact Capacitor Booster", "Medium Electrochemical Capacitor Booster I": "Medium F-RX Compact Capacitor Booster", "Heavy Electrochemical Capacitor Booster I": "Heavy F-RX Compact Capacitor Booster", # Converted items "Micro Brief Capacitor Overcharge I": "'Seed' Micro Capacitor Booster I", "Micro Tapered Capacitor Infusion I": "'Seed' Micro Capacitor Booster I", "Micro F-RX Prototype Capacitor Boost": "'Seed' Micro Capacitor Booster I", "Micro Capacitor Booster I": "'Seed' Micro Capacitor Booster I", "Micro Capacitor Booster II": "'Seed' Micro Capacitor Booster I", "Ammatar Navy Micro Capacitor Booster": "'Seed' Micro Capacitor Booster I", "Dark Blood Micro Capacitor Booster": "'Seed' Micro Capacitor Booster I", "True Sansha Micro Capacitor Booster": "'Seed' Micro Capacitor Booster I", "Imperial Navy Micro Capacitor Booster": "'Seed' Micro Capacitor Booster I", "Small Brief Capacitor Overcharge I": "Small F-RX Compact Capacitor Booster", "Small Tapered Capacitor Infusion I": "Small F-RX Compact Capacitor Booster", "Small F-RX Prototype Capacitor Boost": "Small F-RX Compact Capacitor Booster", "Medium Brief Capacitor Overcharge I": "Medium F-RX Compact Capacitor Booster", "Medium Tapered Capacitor Infusion I": "Medium F-RX Compact Capacitor Booster", "Medium F-RX Prototype Capacitor Boost": "Medium F-RX Compact Capacitor Booster", "Heavy Brief Capacitor Overcharge I": "Heavy F-RX Compact Capacitor Booster", "Heavy Tapered Capacitor Infusion I": "Heavy F-RX Compact Capacitor Booster", "Heavy F-RX Prototype Capacitor Boost": "Heavy F-RX Compact Capacitor Booster" } ================================================ FILE: service/conversions/releaseMay2020.py ================================================ """ Conversion pack for May 2020 release """ CONVERSIONS = { # Renamed items, extracted via diff file "Adaptive Invulnerability Shield Hardener I": "Multispectrum Shield Hardener I", "Gistum C-Type Adaptive Invulnerability Shield Hardener": "Gistum C-Type Multispectrum Shield Hardener", "Adaptive Invulnerability Shield Hardener II": "Multispectrum Shield Hardener II", "Anti-Explosive Shield Hardener I": "Explosive Shield Hardener I", "Anti-Kinetic Shield Hardener I": "Kinetic Shield Hardener I", "Anti-EM Shield Hardener I": "EM Shield Hardener I", "Anti-Thermal Shield Hardener I": "Thermal Shield Hardener I", "Anti-Explosive Shield Hardener II": "Explosive Shield Hardener II", "Anti-Kinetic Shield Hardener II": "Kinetic Shield Hardener II", "Anti-EM Shield Hardener II": "EM Shield Hardener II", "Anti-Thermal Shield Hardener II": "Thermal Shield Hardener II", "Gistum B-Type Adaptive Invulnerability Shield Hardener": "Gistum B-Type Multispectrum Shield Hardener", "Gistum A-Type Adaptive Invulnerability Shield Hardener": "Gistum A-Type Multispectrum Shield Hardener", "Pithum A-Type Adaptive Invulnerability Shield Hardener": "Pithum A-Type Multispectrum Shield Hardener", "Pithum B-Type Adaptive Invulnerability Shield Hardener": "Pithum B-Type Multispectrum Shield Hardener", "Pithum C-Type Adaptive Invulnerability Shield Hardener": "Pithum C-Type Multispectrum Shield Hardener", "Compact Anti-Kinetic Shield Hardener": "Compact Kinetic Shield Hardener", "Compact Anti-EM Shield Hardener": "Compact EM Shield Hardener", "Compact Adaptive Invulnerability Shield Hardener": "Compact Multispectrum Shield Hardener", "Compact Anti-Explosive Shield Hardener": "Compact Explosive Shield Hardener", "Compact Anti-Thermal Shield Hardener": "Compact Thermal Shield Hardener", "Armor Thermal Hardener I": "Thermal Armor Hardener I", "Armor EM Hardener I": "EM Armor Hardener I", "Armor Explosive Hardener I": "Explosive Armor Hardener I", "Armor Kinetic Hardener I": "Kinetic Armor Hardener I", "Armor EM Hardener II": "EM Armor Hardener II", "Armor Kinetic Hardener II": "Kinetic Armor Hardener II", "Armor Explosive Hardener II": "Explosive Armor Hardener II", "Armor Thermal Hardener II": "Thermal Armor Hardener II", "Dread Guristas Anti-EM Shield Hardener": "Dread Guristas EM Shield Hardener", "Dread Guristas Anti-Thermal Shield Hardener": "Dread Guristas Thermal Shield Hardener", "Dread Guristas Anti-Explosive Shield Hardener": "Dread Guristas Explosive Shield Hardener", "Dread Guristas Anti-Kinetic Shield Hardener": "Dread Guristas Kinetic Shield Hardener", "Dread Guristas Adaptive Invulnerability Shield Hardener": "Dread Guristas Multispectrum Shield Hardener", "True Sansha Armor EM Hardener": "True Sansha EM Armor Hardener", "Dark Blood Armor EM Hardener": "Dark Blood EM Armor Hardener", "True Sansha Armor Explosive Hardener": "True Sansha Explosive Armor Hardener", "Dark Blood Armor Explosive Hardener": "Dark Blood Explosive Armor Hardener", "True Sansha Armor Kinetic Hardener": "True Sansha Kinetic Armor Hardener", "Dark Blood Armor Kinetic Hardener": "Dark Blood Kinetic Armor Hardener", "True Sansha Armor Thermal Hardener": "True Sansha Thermal Armor Hardener", "Dark Blood Armor Thermal Hardener": "Dark Blood Thermal Armor Hardener", "Domination Armor EM Hardener": "Domination EM Armor Hardener", "Domination Armor Explosive Hardener": "Domination Explosive Armor Hardener", "Domination Armor Kinetic Hardener": "Domination Kinetic Armor Hardener", "Domination Armor Thermal Hardener": "Domination Thermal Armor Hardener", "Domination Anti-EM Shield Hardener": "Domination EM Shield Hardener", "Domination Anti-Thermal Shield Hardener": "Domination Thermal Shield Hardener", "Domination Anti-Explosive Shield Hardener": "Domination Explosive Shield Hardener", "Domination Anti-Kinetic Shield Hardener": "Domination Kinetic Shield Hardener", "Domination Adaptive Invulnerability Shield Hardener": "Domination Multispectrum Shield Hardener", "Shadow Serpentis Armor EM Hardener": "Shadow Serpentis EM Armor Hardener", "Shadow Serpentis Armor Explosive Hardener": "Shadow Serpentis Explosive Armor Hardener", "Shadow Serpentis Armor Kinetic Hardener": "Shadow Serpentis Kinetic Armor Hardener", "Shadow Serpentis Armor Thermal Hardener": "Shadow Serpentis Thermal Armor Hardener", "Kaikka's Modified Anti-Kinetic Shield Hardener": "Kaikka's Modified Kinetic Shield Hardener", "Thon's Modified Anti-Kinetic Shield Hardener": "Thon's Modified Kinetic Shield Hardener", "Vepas's Modified Anti-Kinetic Shield Hardener": "Vepas's Modified Kinetic Shield Hardener", "Estamel's Modified Anti-Kinetic Shield Hardener": "Estamel's Modified Kinetic Shield Hardener", "Kaikka's Modified Anti-EM Shield Hardener": "Kaikka's Modified EM Shield Hardener", "Thon's Modified Anti-EM Shield Hardener": "Thon's Modified EM Shield Hardener", "Vepas's Modified Anti-EM Shield Hardener": "Vepas's Modified EM Shield Hardener", "Estamel's Modified Anti-EM Shield Hardener": "Estamel's Modified EM Shield Hardener", "Kaikka's Modified Anti-Explosive Shield Hardener": "Kaikka's Modified Explosive Shield Hardener", "Thon's Modified Anti-Explosive Shield Hardener": "Thon's Modified Explosive Shield Hardener", "Vepas's Modified Anti-Explosive Shield Hardener": "Vepas's Modified Explosive Shield Hardener", "Estamel's Modified Anti-Explosive Shield Hardener": "Estamel's Modified Explosive Shield Hardener", "Kaikka's Modified Anti-Thermal Shield Hardener": "Kaikka's Modified Thermal Shield Hardener", "Thon's Modified Anti-Thermal Shield Hardener": "Thon's Modified Thermal Shield Hardener", "Vepas's Modified Anti-Thermal Shield Hardener": "Vepas's Modified Thermal Shield Hardener", "Estamel's Modified Anti-Thermal Shield Hardener": "Estamel's Modified Thermal Shield Hardener", "Kaikka's Modified Adaptive Invulnerability Shield Hardener": "Kaikka's Modified Multispectrum Shield Hardener", "Thon's Modified Adaptive Invulnerability Shield Hardener": "Thon's Modified Multispectrum Shield Hardener", "Vepas's Modified Adaptive Invulnerability Shield Hardener": "Vepas's Modified Multispectrum Shield Hardener", "Estamel's Modified Adaptive Invulnerability Shield Hardener": "Estamel's Modified Multispectrum Shield Hardener", "Brokara's Modified Armor EM Hardener": "Brokara's Modified EM Armor Hardener", "Tairei's Modified Armor EM Hardener": "Tairei's Modified EM Armor Hardener", "Selynne's Modified Armor EM Hardener": "Selynne's Modified EM Armor Hardener", "Raysere's Modified Armor EM Hardener": "Raysere's Modified EM Armor Hardener", "Vizan's Modified Armor EM Hardener": "Vizan's Modified EM Armor Hardener", "Ahremen's Modified Armor EM Hardener": "Ahremen's Modified EM Armor Hardener", "Chelm's Modified Armor EM Hardener": "Chelm's Modified EM Armor Hardener", "Draclira's Modified Armor EM Hardener": "Draclira's Modified EM Armor Hardener", "Brokara's Modified Armor Thermal Hardener": "Brokara's Modified Thermal Armor Hardener", "Tairei's Modified Armor Thermal Hardener": "Tairei's Modified Thermal Armor Hardener", "Selynne's Modified Armor Thermal Hardener": "Selynne's Modified Thermal Armor Hardener", "Raysere's Modified Armor Thermal Hardener": "Raysere's Modified Thermal Armor Hardener", "Vizan's Modified Armor Thermal Hardener": "Vizan's Modified Thermal Armor Hardener", "Ahremen's Modified Armor Thermal Hardener": "Ahremen's Modified Thermal Armor Hardener", "Chelm's Modified Armor Thermal Hardener": "Chelm's Modified Thermal Armor Hardener", "Draclira's Modified Armor Thermal Hardener": "Draclira's Modified Thermal Armor Hardener", "Brokara's Modified Armor Kinetic Hardener": "Brokara's Modified Kinetic Armor Hardener", "Tairei's Modified Armor Kinetic Hardener": "Tairei's Modified Kinetic Armor Hardener", "Selynne's Modified Armor Kinetic Hardener": "Selynne's Modified Kinetic Armor Hardener", "Raysere's Modified Armor Kinetic Hardener": "Raysere's Modified Kinetic Armor Hardener", "Vizan's Modified Armor Kinetic Hardener": "Vizan's Modified Kinetic Armor Hardener", "Ahremen's Modified Armor Kinetic Hardener": "Ahremen's Modified Kinetic Armor Hardener", "Chelm's Modified Armor Kinetic Hardener": "Chelm's Modified Kinetic Armor Hardener", "Draclira's Modified Armor Kinetic Hardener": "Draclira's Modified Kinetic Armor Hardener", "Brokara's Modified Armor Explosive Hardener": "Brokara's Modified Explosive Armor Hardener", "Tairei's Modified Armor Explosive Hardener": "Tairei's Modified Explosive Armor Hardener", "Selynne's Modified Armor Explosive Hardener": "Selynne's Modified Explosive Armor Hardener", "Raysere's Modified Armor Explosive Hardener": "Raysere's Modified Explosive Armor Hardener", "Vizan's Modified Armor Explosive Hardener": "Vizan's Modified Explosive Armor Hardener", "Ahremen's Modified Armor Explosive Hardener": "Ahremen's Modified Explosive Armor Hardener", "Chelm's Modified Armor Explosive Hardener": "Chelm's Modified Explosive Armor Hardener", "Draclira's Modified Armor Explosive Hardener": "Draclira's Modified Explosive Armor Hardener", "Brynn's Modified Armor EM Hardener": "Brynn's Modified EM Armor Hardener", "Tuvan's Modified Armor EM Hardener": "Tuvan's Modified EM Armor Hardener", "Setele's Modified Armor EM Hardener": "Setele's Modified EM Armor Hardener", "Cormack's Modified Armor EM Hardener": "Cormack's Modified EM Armor Hardener", "Brynn's Modified Armor Thermal Hardener": "Brynn's Modified Thermal Armor Hardener", "Tuvan's Modified Armor Thermal Hardener": "Tuvan's Modified Thermal Armor Hardener", "Setele's Modified Armor Thermal Hardener": "Setele's Modified Thermal Armor Hardener", "Cormack's Modified Armor Thermal Hardener": "Cormack's Modified Thermal Armor Hardener", "Brynn's Modified Armor Kinetic Hardener": "Brynn's Modified Kinetic Armor Hardener", "Tuvan's Modified Armor Kinetic Hardener": "Tuvan's Modified Kinetic Armor Hardener", "Setele's Modified Armor Kinetic Hardener": "Setele's Modified Kinetic Armor Hardener", "Cormack's Modified Armor Kinetic Hardener": "Cormack's Modified Kinetic Armor Hardener", "Brynn's Modified Armor Explosive Hardener": "Brynn's Modified Explosive Armor Hardener", "Tuvan's Modified Armor Explosive Hardener": "Tuvan's Modified Explosive Armor Hardener", "Setele's Modified Armor Explosive Hardener": "Setele's Modified Explosive Armor Hardener", "Cormack's Modified Armor Explosive Hardener": "Cormack's Modified Explosive Armor Hardener", "Imperial Navy Armor Thermal Hardener": "Imperial Navy Thermal Armor Hardener", "Imperial Navy Armor Kinetic Hardener": "Imperial Navy Kinetic Armor Hardener", "Imperial Navy Armor Explosive Hardener": "Imperial Navy Explosive Armor Hardener", "Imperial Navy Armor EM Hardener": "Imperial Navy EM Armor Hardener", "Republic Fleet Armor Thermal Hardener": "Republic Fleet Thermal Armor Hardener", "Republic Fleet Armor Kinetic Hardener": "Republic Fleet Kinetic Armor Hardener", "Republic Fleet Armor Explosive Hardener": "Republic Fleet Explosive Armor Hardener", "Republic Fleet Armor EM Hardener": "Republic Fleet EM Armor Hardener", "Experimental Armor EM Hardener I": "Experimental Enduring EM Armor Hardener I", "Prototype Armor EM Hardener I": "Prototype Compact EM Armor Hardener I", "Experimental Armor Explosive Hardener I": "Experimental Enduring Explosive Armor Hardener I", "Prototype Armor Explosive Hardener I": "Prototype Compact Explosive Armor Hardener I", "Experimental Armor Kinetic Hardener I": "Experimental Enduring Kinetic Armor Hardener I", "Prototype Armor Kinetic Hardener I": "Prototype Compact Kinetic Armor Hardener I", "Experimental Armor Thermal Hardener I": "Experimental Enduring Thermal Armor Hardener I", "Prototype Armor Thermal Hardener I": "Prototype Compact Thermal Armor Hardener I", "Caldari Navy Anti-Kinetic Shield Hardener": "Caldari Navy Kinetic Shield Hardener", "Caldari Navy Anti-Explosive Shield Hardener": "Caldari Navy Explosive Shield Hardener", "Caldari Navy Anti-Thermal Shield Hardener": "Caldari Navy Thermal Shield Hardener", "Caldari Navy Adaptive Invulnerability Shield Hardener": "Caldari Navy Multispectrum Shield Hardener", "Caldari Navy Anti-EM Shield Hardener": "Caldari Navy EM Shield Hardener", "Ammatar Navy Armor EM Hardener": "Ammatar Navy EM Armor Hardener", "Ammatar Navy Armor Explosive Hardener": "Ammatar Navy Explosive Armor Hardener", "Ammatar Navy Armor Kinetic Hardener": "Ammatar Navy Kinetic Armor Hardener", "Ammatar Navy Armor Thermal Hardener": "Ammatar Navy Thermal Armor Hardener", "Federation Navy Armor EM Hardener": "Federation Navy EM Armor Hardener", "Federation Navy Armor Explosive Hardener": "Federation Navy Explosive Armor Hardener", "Federation Navy Armor Kinetic Hardener": "Federation Navy Kinetic Armor Hardener", "Federation Navy Armor Thermal Hardener": "Federation Navy Thermal Armor Hardener", "Corpus C-Type Armor EM Hardener": "Corpus C-Type EM Armor Hardener", "Centus C-Type Armor EM Hardener": "Centus C-Type EM Armor Hardener", "Corpus C-Type Armor Explosive Hardener": "Corpus C-Type Explosive Armor Hardener", "Centus C-Type Armor Explosive Hardener": "Centus C-Type Explosive Armor Hardener", "Corpus C-Type Armor Kinetic Hardener": "Corpus C-Type Kinetic Armor Hardener", "Centus C-Type Armor Kinetic Hardener": "Centus C-Type Kinetic Armor Hardener", "Corpus C-Type Armor Thermal Hardener": "Corpus C-Type Thermal Armor Hardener", "Centus C-Type Armor Thermal Hardener": "Centus C-Type Thermal Armor Hardener", "Corpus B-Type Armor EM Hardener": "Corpus B-Type EM Armor Hardener", "Centus B-Type Armor EM Hardener": "Centus B-Type EM Armor Hardener", "Corpus B-Type Armor Explosive Hardener": "Corpus B-Type Explosive Armor Hardener", "Centus B-Type Armor Explosive Hardener": "Centus B-Type Explosive Armor Hardener", "Corpus B-Type Armor Kinetic Hardener": "Corpus B-Type Kinetic Armor Hardener", "Centus B-Type Armor Kinetic Hardener": "Centus B-Type Kinetic Armor Hardener", "Corpus B-Type Armor Thermal Hardener": "Corpus B-Type Thermal Armor Hardener", "Centus B-Type Armor Thermal Hardener": "Centus B-Type Thermal Armor Hardener", "Corpus A-Type Armor Thermal Hardener": "Corpus A-Type Thermal Armor Hardener", "Centus A-Type Armor Thermal Hardener": "Centus A-Type Thermal Armor Hardener", "Corpus A-Type Armor Kinetic Hardener": "Corpus A-Type Kinetic Armor Hardener", "Centus A-Type Armor Kinetic Hardener": "Centus A-Type Kinetic Armor Hardener", "Corpus A-Type Armor Explosive Hardener": "Corpus A-Type Explosive Armor Hardener", "Centus A-Type Armor Explosive Hardener": "Centus A-Type Explosive Armor Hardener", "Corpus A-Type Armor EM Hardener": "Corpus A-Type EM Armor Hardener", "Centus A-Type Armor EM Hardener": "Centus A-Type EM Armor Hardener", "Corpus X-Type Armor EM Hardener": "Corpus X-Type EM Armor Hardener", "Centus X-Type Armor EM Hardener": "Centus X-Type EM Armor Hardener", "Corpus X-Type Armor Explosive Hardener": "Corpus X-Type Explosive Armor Hardener", "Centus X-Type Armor Explosive Hardener": "Centus X-Type Explosive Armor Hardener", "Corpus X-Type Armor Kinetic Hardener": "Corpus X-Type Kinetic Armor Hardener", "Centus X-Type Armor Kinetic Hardener": "Centus X-Type Kinetic Armor Hardener", "Corpus X-Type Armor Thermal Hardener": "Corpus X-Type Thermal Armor Hardener", "Centus X-Type Armor Thermal Hardener": "Centus X-Type Thermal Armor Hardener", "Core C-Type Armor EM Hardener": "Core C-Type EM Armor Hardener", "Core C-Type Armor Explosive Hardener": "Core C-Type Explosive Armor Hardener", "Core C-Type Armor Kinetic Hardener": "Core C-Type Kinetic Armor Hardener", "Core C-Type Armor Thermal Hardener": "Core C-Type Thermal Armor Hardener", "Core B-Type Armor EM Hardener": "Core B-Type EM Armor Hardener", "Core B-Type Armor Explosive Hardener": "Core B-Type Explosive Armor Hardener", "Core B-Type Armor Kinetic Hardener": "Core B-Type Kinetic Armor Hardener", "Core B-Type Armor Thermal Hardener": "Core B-Type Thermal Armor Hardener", "Core A-Type Armor EM Hardener": "Core A-Type EM Armor Hardener", "Core A-Type Armor Explosive Hardener": "Core A-Type Explosive Armor Hardener", "Core A-Type Armor Kinetic Hardener": "Core A-Type Kinetic Armor Hardener", "Core A-Type Armor Thermal Hardener": "Core A-Type Thermal Armor Hardener", "Core X-Type Armor EM Hardener": "Core X-Type EM Armor Hardener", "Core X-Type Armor Explosive Hardener": "Core X-Type Explosive Armor Hardener", "Core X-Type Armor Kinetic Hardener": "Core X-Type Kinetic Armor Hardener", "Core X-Type Armor Thermal Hardener": "Core X-Type Thermal Armor Hardener", "Gist C-Type Anti-Kinetic Shield Hardener": "Gist C-Type Kinetic Shield Hardener", "Pith C-Type Anti-Kinetic Shield Hardener": "Pith C-Type Kinetic Shield Hardener", "Gist C-Type Anti-Explosive Shield Hardener": "Gist C-Type Explosive Shield Hardener", "Pith C-Type Anti-Explosive Shield Hardener": "Pith C-Type Explosive Shield Hardener", "Gist C-Type Anti-Thermal Shield Hardener": "Gist C-Type Thermal Shield Hardener", "Pith C-Type Anti-Thermal Shield Hardener": "Pith C-Type Thermal Shield Hardener", "Gist C-Type Anti-EM Shield Hardener": "Gist C-Type EM Shield Hardener", "Pith C-Type Anti-EM Shield Hardener": "Pith C-Type EM Shield Hardener", "Gist B-Type Anti-EM Shield Hardener": "Gist B-Type EM Shield Hardener", "Pith B-Type Anti-EM Shield Hardener": "Pith B-Type EM Shield Hardener", "Gist B-Type Anti-Thermal Shield Hardener": "Gist B-Type Thermal Shield Hardener", "Pith B-Type Anti-Thermal Shield Hardener": "Pith B-Type Thermal Shield Hardener", "Gist B-Type Anti-Explosive Shield Hardener": "Gist B-Type Explosive Shield Hardener", "Pith B-Type Anti-Explosive Shield Hardener": "Pith B-Type Explosive Shield Hardener", "Gist B-Type Anti-Kinetic Shield Hardener": "Gist B-Type Kinetic Shield Hardener", "Pith B-Type Anti-Kinetic Shield Hardener": "Pith B-Type Kinetic Shield Hardener", "Gist A-Type Anti-Kinetic Shield Hardener": "Gist A-Type Kinetic Shield Hardener", "Pith A-Type Anti-Kinetic Shield Hardener": "Pith A-Type Kinetic Shield Hardener", "Gist A-Type Anti-Explosive Shield Hardener": "Gist A-Type Explosive Shield Hardener", "Pith A-Type Anti-Explosive Shield Hardener": "Pith A-Type Explosive Shield Hardener", "Gist A-Type Anti-Thermal Shield Hardener": "Gist A-Type Thermal Shield Hardener", "Pith A-Type Anti-Thermal Shield Hardener": "Pith A-Type Thermal Shield Hardener", "Gist A-Type Anti-EM Shield Hardener": "Gist A-Type EM Shield Hardener", "Pith A-Type Anti-EM Shield Hardener": "Pith A-Type EM Shield Hardener", "Gist X-Type Anti-EM Shield Hardener": "Gist X-Type EM Shield Hardener", "Pith X-Type Anti-EM Shield Hardener": "Pith X-Type EM Shield Hardener", "Gist X-Type Anti-Thermal Shield Hardener": "Gist X-Type Thermal Shield Hardener", "Pith X-Type Anti-Thermal Shield Hardener": "Pith X-Type Thermal Shield Hardener", "Gist X-Type Anti-Explosive Shield Hardener": "Gist X-Type Explosive Shield Hardener", "Pith X-Type Anti-Explosive Shield Hardener": "Pith X-Type Explosive Shield Hardener", "Gist X-Type Anti-Kinetic Shield Hardener": "Gist X-Type Kinetic Shield Hardener", "Pith X-Type Anti-Kinetic Shield Hardener": "Pith X-Type Kinetic Shield Hardener", "'Nugget' Anti-Kinetic Shield Hardener": "'Nugget' Kinetic Shield Hardener", "'Desert Heat' Anti-Thermal Shield Hardener": "'Desert Heat' Thermal Shield Hardener", "'Posse' Adaptive Invulnerability Shield Hardener": "'Posse' Multispectrum Shield Hardener", "'Poacher' Anti-EM Shield Hardener": "'Poacher' EM Shield Hardener", "'Snake Eyes' Anti-Explosive Shield Hardener": "'Snake Eyes' Explosive Shield Hardener", "Large Anti-EM Pump I": "Large EM Armor Reinforcer I", "Large Anti-Explosive Pump I": "Large Explosive Armor Reinforcer I", "Large Anti-Kinetic Pump I": "Large Kinetic Armor Reinforcer I", "Large Anti-Thermal Pump I": "Large Thermal Armor Reinforcer I", "Large Anti-EM Screen Reinforcer I": "Large EM Shield Reinforcer I", "Large Anti-Explosive Screen Reinforcer I": "Large Explosive Shield Reinforcer I", "Large Anti-Kinetic Screen Reinforcer I": "Large Kinetic Shield Reinforcer I", "Large Anti-Thermal Screen Reinforcer I": "Large Thermal Shield Reinforcer I", "Large Anti-EM Pump II": "Large EM Armor Reinforcer II", "Large Anti-Explosive Pump II": "Large Explosive Armor Reinforcer II", "Large Anti-Kinetic Pump II": "Large Kinetic Armor Reinforcer II", "Large Anti-Thermal Pump II": "Large Thermal Armor Reinforcer II", "Large Anti-EM Screen Reinforcer II": "Large EM Shield Reinforcer II", "Large Anti-Explosive Screen Reinforcer II": "Large Explosive Shield Reinforcer II", "Large Anti-Kinetic Screen Reinforcer II": "Large Kinetic Shield Reinforcer II", "Large Anti-Thermal Screen Reinforcer II": "Large Thermal Shield Reinforcer II", "Khanid Navy Armor EM Hardener": "Khanid Navy EM Armor Hardener", "Khanid Navy Armor Explosive Hardener": "Khanid Navy Explosive Armor Hardener", "Khanid Navy Armor Kinetic Hardener": "Khanid Navy Kinetic Armor Hardener", "Khanid Navy Armor Thermal Hardener": "Khanid Navy Thermal Armor Hardener", "Civilian Anti-Thermal Shield Hardener": "Civilian Thermal Shield Hardener", "Civilian Anti-EM Shield Hardener": "Civilian EM Shield Hardener", "Civilian Anti-Explosive Shield Hardener": "Civilian Explosive Shield Hardener", "Civilian Anti-Kinetic Shield Hardener": "Civilian Kinetic Shield Hardener", "Small Anti-EM Pump I": "Small EM Armor Reinforcer I", "Medium Anti-EM Pump I": "Medium EM Armor Reinforcer I", "Capital Anti-EM Pump I": "Capital EM Armor Reinforcer I", "Small Anti-EM Pump II": "Small EM Armor Reinforcer II", "Medium Anti-EM Pump II": "Medium EM Armor Reinforcer II", "Capital Anti-EM Pump II": "Capital EM Armor Reinforcer II", "Small Anti-Explosive Pump I": "Small Explosive Armor Reinforcer I", "Medium Anti-Explosive Pump I": "Medium Explosive Armor Reinforcer I", "Capital Anti-Explosive Pump I": "Capital Explosive Armor Reinforcer I", "Small Anti-Explosive Pump II": "Small Explosive Armor Reinforcer II", "Medium Anti-Explosive Pump II": "Medium Explosive Armor Reinforcer II", "Capital Anti-Explosive Pump II": "Capital Explosive Armor Reinforcer II", "Small Anti-Kinetic Pump I": "Small Kinetic Armor Reinforcer I", "Medium Anti-Kinetic Pump I": "Medium Kinetic Armor Reinforcer I", "Capital Anti-Kinetic Pump I": "Capital Kinetic Armor Reinforcer I", "Small Anti-Kinetic Pump II": "Small Kinetic Armor Reinforcer II", "Medium Anti-Kinetic Pump II": "Medium Kinetic Armor Reinforcer II", "Capital Anti-Kinetic Pump II": "Capital Kinetic Armor Reinforcer II", "Small Anti-Thermal Pump I": "Small Thermal Armor Reinforcer I", "Medium Anti-Thermal Pump I": "Medium Thermal Armor Reinforcer I", "Capital Anti-Thermal Pump I": "Capital Thermal Armor Reinforcer I", "Small Anti-Thermal Pump II": "Small Thermal Armor Reinforcer II", "Medium Anti-Thermal Pump II": "Medium Thermal Armor Reinforcer II", "Capital Anti-Thermal Pump II": "Capital Thermal Armor Reinforcer II", "Small Anti-EM Screen Reinforcer I": "Small EM Shield Reinforcer I", "Medium Anti-EM Screen Reinforcer I": "Medium EM Shield Reinforcer I", "Capital Anti-EM Screen Reinforcer I": "Capital EM Shield Reinforcer I", "Small Anti-EM Screen Reinforcer II": "Small EM Shield Reinforcer II", "Medium Anti-EM Screen Reinforcer II": "Medium EM Shield Reinforcer II", "Capital Anti-EM Screen Reinforcer II": "Capital EM Shield Reinforcer II", "Small Anti-Explosive Screen Reinforcer I": "Small Explosive Shield Reinforcer I", "Medium Anti-Explosive Screen Reinforcer I": "Medium Explosive Shield Reinforcer I", "Capital Anti-Explosive Screen Reinforcer I": "Capital Explosive Shield Reinforcer I", "Small Anti-Explosive Screen Reinforcer II": "Small Explosive Shield Reinforcer II", "Medium Anti-Explosive Screen Reinforcer II": "Medium Explosive Shield Reinforcer II", "Capital Anti-Explosive Screen Reinforcer II": "Capital Explosive Shield Reinforcer II", "Small Anti-Kinetic Screen Reinforcer I": "Small Kinetic Shield Reinforcer I", "Medium Anti-Kinetic Screen Reinforcer I": "Medium Kinetic Shield Reinforcer I", "Capital Anti-Kinetic Screen Reinforcer I": "Capital Kinetic Shield Reinforcer I", "Small Anti-Kinetic Screen Reinforcer II": "Small Kinetic Shield Reinforcer II", "Medium Anti-Kinetic Screen Reinforcer II": "Medium Kinetic Shield Reinforcer II", "Capital Anti-Kinetic Screen Reinforcer II": "Capital Kinetic Shield Reinforcer II", "Small Anti-Thermal Screen Reinforcer I": "Small Thermal Shield Reinforcer I", "Medium Anti-Thermal Screen Reinforcer I": "Medium Thermal Shield Reinforcer I", "Capital Anti-Thermal Screen Reinforcer I": "Capital Thermal Shield Reinforcer I", "Small Anti-Thermal Screen Reinforcer II": "Small Thermal Shield Reinforcer II", "Medium Anti-Thermal Screen Reinforcer II": "Medium Thermal Shield Reinforcer II", "Capital Anti-Thermal Screen Reinforcer II": "Capital Thermal Shield Reinforcer II", "Enduring Adaptive Invulnerability Shield Hardener": "Enduring Multispectrum Shield Hardener", "Enduring Anti-EM Shield Hardener": "Enduring EM Shield Hardener", "Enduring Anti-Explosive Shield Hardener": "Enduring Explosive Shield Hardener", "Enduring Anti-Kinetic Shield Hardener": "Enduring Kinetic Shield Hardener", "Enduring Anti-Thermal Shield Hardener": "Enduring Thermal Shield Hardener", # Converted items "Upgraded Armor EM Hardener I": "Experimental Enduring EM Armor Hardener I", "Upgraded Armor Explosive Hardener I": "Experimental Enduring Explosive Armor Hardener I", "Upgraded Armor Kinetic Hardener I": "Experimental Enduring Kinetic Armor Hardener I", "Upgraded Armor Thermal Hardener I": "Experimental Enduring Thermal Armor Hardener I", "Limited Armor EM Hardener I": "Prototype Compact EM Armor Hardener I", "Limited Armor Explosive Hardener I": "Prototype Compact Explosive Armor Hardener I", "Limited Armor Kinetic Hardener I": "Prototype Compact Kinetic Armor Hardener I", "Limited Armor Thermal Hardener I": "Prototype Compact Thermal Armor Hardener I", } ================================================ FILE: service/conversions/releaseNov2016.py ================================================ """ Conversion pack for Ascension release """ CONVERSIONS = { # Renamed items "Armored Warfare Mindlink": "Armored Command Mindlink", "Siege Warfare Mindlink": "Shield Command Mindlink", "Information Warfare Mindlink": "Information Command Mindlink", "Skirmish Warfare Mindlink": "Skirmish Command Mindlink", "Imperial Navy Warfare Mindlink": "Imperial Navy Command Mindlink", "Federation Navy Warfare Mindlink": "Federation Navy Command Mindlink", "Republic Fleet Warfare Mindlink": "Republic Fleet Command Mindlink", "Caldari Navy Warfare Mindlink": "Caldari Navy Command Mindlink", "Excavator Drone": "'Excavator' Mining Drone" } ================================================ FILE: service/conversions/releaseNov2025.py ================================================ CONVERSIONS = { "Survey Scanner I": "Mining Survey Chipset I", "Survey Scanner II": "Mining Survey Chipset II", "ML-3 Scoped Survey Scanner": "ML-3 Compact Mining Survey Chipset", "Gatling Afocal Maser I": "Gatling Afocal Laser I", "Dual Afocal Pulse Maser I": "Dual Afocal Pulse Laser I", "Dual Afocal Light Maser I": "Dual Afocal Light Laser I", "Small Focused Afocal Pulse Maser I": "Small Focused Afocal Pulse Laser I", "Small Focused Afocal Maser I": "Small Focused Afocal Laser I", "Quad Afocal Light Maser I": "Quad Afocal Light Laser I", "Focused Afocal Pulse Maser I": "Focused Afocal Pulse Laser I", "Focused Afocal Medium Maser I": "Focused Afocal Medium Laser I", "Heavy Afocal Pulse Maser I": "Heavy Afocal Pulse Laser I", "Heavy Afocal Maser I": "Heavy Afocal Laser I", "Dual Heavy Afocal Pulse Maser I": "Dual Heavy Afocal Pulse Laser I", "Dual Afocal Heavy Maser I": "Dual Afocal Heavy Laser I", "Mega Afocal Pulse Maser I": "Mega Afocal Pulse Laser I", "Mega Afocal Maser I": "Mega Afocal Laser I", "Tachyon Afocal Maser I": "Tachyon Afocal Laser I", } ================================================ FILE: service/conversions/releaseOceanus.py ================================================ """ Conversion pack for Oceanus Module Tiericide """ CONVERSIONS = { "Basic Capacitor Flux Coil": "'Basic' Capacitor Flux Coil", "Basic LADAR Backup Array": "Basic Ladar Backup Array", "LADAR Backup Array I": "Ladar Backup Array I", "LADAR Backup Array II": "Ladar Backup Array II", "'Regard' Remote Capacitor Transmitter": "Small 'Regard' Remote Capacitor Transmitter", "Prototype Freight Sensors": "Enduring Cargo Scanner", "PL-0 Shipment Probe": "Scoped Cargo Scanner", "Reserve LADAR Scanners": "Reserve Ladar Scanners", "Emergency LADAR Scanners": "Emergency Ladar Scanners", "Protected LADAR Backup Cluster I": "Protected Ladar Backup Cluster I", "Sealed LADAR Backup Cluster": "Sealed Ladar Backup Cluster", "Surrogate LADAR Reserve Array I": "Surrogate Ladar Reserve Array I", "F-43 Repetitive LADAR Backup Sensors": "F-43 Repetitive Ladar Backup Sensors", "Surplus LADAR Reserve Array": "Surplus Ladar Reserve Array", "F-42 Reiterative LADAR Backup Sensors": "F-42 Reiterative Ladar Backup Sensors", "Rudimentary Ship Scanner I": "Compact Ship Scanner", "Residual Survey Scanner I": "Scoped Survey Scanner", "Upgraded 'Malkuth' Light Missile Launcher": "Compact Light Missile Launcher", "Limited 'Limos' Light Missile Launcher": "Ample Light Missile Launcher", "Beta Reactor Control: Capacitor Flux I": "Compact Capacitor Flux Coil", "Type-D Power Core Modification: Capacitor Flux": "Restrained Capacitor Flux Coil", "Type-D Power Core Modification: Reaction Control": "Compact Reactor Control Unit", "LADAR Firewall": "Ladar Firewall", "Interior Type-E Cargo Identifier": "Scoped Cargo Scanner", "Ta3 Perfunctory Vessel Probe": "Compact Ship Scanner", "Speculative Ship Identifier I": "Compact Ship Scanner", "Practical Type-E Ship Probe": "Compact Ship Scanner", "ML-3 Amphilotite Mining Probe": "Scoped Survey Scanner", "Rock-Scanning Sensor Array I": "Scoped Survey Scanner", "'Dactyl' Type-E Asteroid Analyzer": "Scoped Survey Scanner", "Partial Power Plant Manager: Capacitor Flux": "'Basic' Capacitor Flux Coil", "Alpha Reactor Control: Capacitor Flux": "'Basic' Capacitor Flux Coil", "Type-E Power Core Modification: Capacitor Flux": "'Basic' Capacitor Flux Coil", "Marked Generator Refitting: Capacitor Flux": "'Basic' Capacitor Flux Coil", "Local Power Plant Manager: Capacitor Flux I": "Restrained Capacitor Flux Coil", "Mark I Generator Refitting: Capacitor Flux": "Compact Capacitor Flux Coil", "Nanoelectrical Co-Processor": "Basic Co-Processor", "Nanomechanical CPU Enhancer": "Basic Co-Processor", "Quantum Co-Processor": "Basic Co-Processor", "Photonic CPU Enhancer": "Basic Co-Processor", "Nanomechanical CPU Enhancer I": "Upgraded Co-Processor", "Quantum Co-Processor I": "Upgraded Co-Processor", "Photonic CPU Enhancer I": "Upgraded Co-Processor", "Partial Power Plant Manager: Reaction Control": "Basic Reactor Control Unit", "Alpha Reactor Control: Reaction Control": "Basic Reactor Control Unit", "Marked Generator Refitting: Reaction Control": "Basic Reactor Control Unit", "Local Power Plant Manager: Reaction Control I is now": "Compact Reactor Control Unit", "Mark I Generator Refitting: Reaction Control": "Compact Reactor Control Unit", "Beta Reactor Control: Reaction Control I": "Compact Reactor Control Unit", "Micro B88 Core Augmentation": "Compact Micro Auxiliary Power Core", "Micro K-Exhaust Core Augmentation": "Compact Micro Auxiliary Power Core", "Micro 'Vigor' Core Augmentation": "Navy Micro Auxiliary Power Core", "Prototype 'Arbalest' Light Missile Launcher": "Compact Light Missile Launcher", "Experimental TE-2100 Light Missile Launcher": "Ample Light Missile Launcher" } ================================================ FILE: service/conversions/releaseOct2020.py ================================================ """ Conversion pack for October 2020 release """ CONVERSIONS = { # Renamed items "'Hypnos' Signal Distortion Amplifier I": "Hypnos Compact Signal Distortion Amplifier I", # Converted items "Initiated Signal Distortion Amplifier I": "Hypnos Compact Signal Distortion Amplifier I", "Induced Signal Distortion Amplifier I": "Hypnos Compact Signal Distortion Amplifier I", "Compulsive Signal Distortion Amplifier I": "Hypnos Compact Signal Distortion Amplifier I", } ================================================ FILE: service/conversions/releaseOct2021.py ================================================ """ Conversion pack for October 2021 release """ CONVERSIONS = { # Renamed items "Quafe Zero": "Quafe Zero Classic", "Exigent Sentry Drone Navigation Mutaplasmid": "Exigent Sentry Drone Precision Mutaplasmid", } ================================================ FILE: service/conversions/releaseParallax.py ================================================ """ Conversion pack for Parallax renames """ CONVERSIONS = { # Renamed items "Basic Thermic Plating": "Basic Thermal Plating", "Thermic Plating I": "Thermal Plating I", "Thermic Plating II": "Thermal Plating II", "Basic Thermic Dissipation Amplifier": "Basic Thermal Dissipation Amplifier", "Thermic Dissipation Field I": "Thermal Dissipation Field I", "Thermic Dissipation Field II": "Thermal Dissipation Field II", "Thermic Dissipation Amplifier I": "Thermal Dissipation Amplifier I", "Thermic Dissipation Amplifier II": "Thermal Dissipation Amplifier II", "Supplemental Thermic Dissipation Amplifier": "Supplemental Thermal Dissipation Amplifier", "Upgraded Thermic Dissipation Amplifier I": "Upgraded Thermal Dissipation Amplifier I", "Limited Thermic Dissipation Field I": "Limited Thermal Dissipation Field I", "Basic Energized Thermic Membrane": "Basic Energized Thermal Membrane", "Energized Thermic Membrane I": "Energized Thermal Membrane I", "Energized Thermic Membrane II": "Energized Thermal Membrane II", "Armor Thermic Hardener I": "Armor Thermal Hardener I", "Thermic Shield Compensation": "Thermal Shield Compensation", "Armor Thermic Hardener II": "Armor Thermal Hardener II", "Dread Guristas Thermic Dissipation Field": "Dread Guristas Thermal Dissipation Field", "True Sansha Armor Thermic Hardener": "True Sansha Armor Thermal Hardener", "Dark Blood Armor Thermic Hardener": "Dark Blood Armor Thermal Hardener", "Domination Armor Thermic Hardener": "Domination Armor Thermal Hardener", "Domination Thermic Dissipation Field": "Domination Thermal Dissipation Field", "Domination Thermic Plating": "Domination Thermal Plating", "True Sansha Thermic Plating": "True Sansha Thermal Plating", "Dark Blood Thermic Plating": "Dark Blood Thermal Plating", "Domination Thermic Dissipation Amplifier": "Domination Thermal Dissipation Amplifier", "Dread Guristas Thermic Dissipation Amplifier": "Dread Guristas Thermal Dissipation Amplifier", "Shadow Serpentis Thermic Plating": "Shadow Serpentis Thermal Plating", "Shadow Serpentis Armor Thermic Hardener": "Shadow Serpentis Armor Thermal Hardener", "Dark Blood Energized Thermic Membrane": "Dark Blood Energized Thermal Membrane", "True Sansha Energized Thermic Membrane": "True Sansha Energized Thermal Membrane", "Shadow Serpentis Energized Thermic Membrane": "Shadow Serpentis Energized Thermal Membrane", "Mizuro's Modified Thermic Plating": "Mizuro's Modified Thermal Plating", "Gotan's Modified Thermic Plating": "Gotan's Modified Thermal Plating", "Hakim's Modified Thermic Dissipation Amplifier": "Hakim's Modified Thermal Dissipation Amplifier", "Tobias' Modified Thermic Dissipation Amplifier": "Tobias' Modified Thermal Dissipation Amplifier", "Kaikka's Modified Thermic Dissipation Amplifier": "Kaikka's Modified Thermal Dissipation Amplifier", "Thon's Modified Thermic Dissipation Amplifier": "Thon's Modified Thermal Dissipation Amplifier", "Vepas' Modified Thermic Dissipation Amplifier": "Vepas' Modified Thermal Dissipation Amplifier", "Estamel's Modified Thermic Dissipation Amplifier": "Estamel's Modified Thermal Dissipation Amplifier", "Kaikka's Modified Thermic Dissipation Field": "Kaikka's Modified Thermal Dissipation Field", "Thon's Modified Thermic Dissipation Field": "Thon's Modified Thermal Dissipation Field", "Vepas's Modified Thermic Dissipation Field": "Vepas's Modified Thermal Dissipation Field", "Estamel's Modified Thermic Dissipation Field": "Estamel's Modified Thermal Dissipation Field", "Brokara's Modified Thermic Plating": "Brokara's Modified Thermal Plating", "Tairei's Modified Thermic Plating": "Tairei's Modified Thermal Plating", "Selynne's Modified Thermic Plating": "Selynne's Modified Thermal Plating", "Raysere's Modified Thermic Plating": "Raysere's Modified Thermal Plating", "Vizan's Modified Thermic Plating": "Vizan's Modified Thermal Plating", "Ahremen's Modified Thermic Plating": "Ahremen's Modified Thermal Plating", "Chelm's Modified Thermic Plating": "Chelm's Modified Thermal Plating", "Draclira's Modified Thermic Plating": "Draclira's Modified Thermal Plating", "Brokara's Modified Energized Thermic Membrane": "Brokara's Modified Energized Thermal Membrane", "Tairei's Modified Energized Thermic Membrane": "Tairei's Modified Energized Thermal Membrane", "Selynne's Modified Energized Thermic Membrane": "Selynne's Modified Energized Thermal Membrane", "Raysere's Modified Energized Thermic Membrane": "Raysere's Modified Energized Thermal Membrane", "Vizan's Modified Energized Thermic Membrane": "Vizan's Modified Energized Thermal Membrane", "Ahremen's Modified Energized Thermic Membrane": "Ahremen's Modified Energized Thermal Membrane", "Chelm's Modified Energized Thermic Membrane": "Chelm's Modified Energized Thermal Membrane", "Draclira's Modified Energized Thermic Membrane": "Draclira's Modified Energized Thermal Membrane", "Brokara's Modified Armor Thermic Hardener": "Brokara's Modified Armor Thermal Hardener", "Tairei's Modified Armor Thermic Hardener": "Tairei's Modified Armor Thermal Hardener", "Selynne's Modified Armor Thermic Hardener": "Selynne's Modified Armor Thermal Hardener", "Raysere's Modified Armor Thermic Hardener": "Raysere's Modified Armor Thermal Hardener", "Vizan's Modified Armor Thermic Hardener": "Vizan's Modified Armor Thermal Hardener", "Ahremen's Modified Armor Thermic Hardener": "Ahremen's Modified Armor Thermal Hardener", "Chelm's Modified Armor Thermic Hardener": "Chelm's Modified Armor Thermal Hardener", "Draclira's Modified Armor Thermic Hardener": "Draclira's Modified Armor Thermal Hardener", "Brynn's Modified Thermic Plating": "Brynn's Modified Thermal Plating", "Tuvan's Modified Thermic Plating": "Tuvan's Modified Thermal Plating", "Setele's Modified Thermic Plating": "Setele's Modified Thermal Plating", "Cormack's Modified Thermic Plating": "Cormack's Modified Thermal Plating", "Brynn's Modified Energized Thermic Membrane": "Brynn's Modified Energized Thermal Membrane", "Tuvan's Modified Energized Thermic Membrane": "Tuvan's Modified Energized Thermal Membrane", "Setele's Modified Energized Thermic Membrane": "Setele's Modified Energized Thermal Membrane", "Cormack's Modified Energized Thermic Membrane": "Cormack's Modified Energized Thermal Membrane", "Brynn's Modified Armor Thermic Hardener": "Brynn's Modified Armor Thermal Hardener", "Tuvan's Modified Armor Thermic Hardener": "Tuvan's Modified Armor Thermal Hardener", "Setele's Modified Armor Thermic Hardener": "Setele's Modified Armor Thermal Hardener", "Cormack's Modified Armor Thermic Hardener": "Cormack's Modified Armor Thermal Hardener", "Shaqil's Modified Energized Thermic Membrane": "Shaqil's Modified Energized Thermal Membrane", "Imperial Navy Thermic Plating": "Imperial Navy Thermal Plating", "Republic Fleet Thermic Plating": "Republic Fleet Thermal Plating", "Imperial Navy Armor Thermic Hardener": "Imperial Navy Armor Thermal Hardener", "Republic Fleet Armor Thermic Hardener": "Republic Fleet Armor Thermal Hardener", "Imperial Navy Energized Thermic Membrane": "Imperial Navy Energized Thermal Membrane", "Federation Navy Energized Thermic Membrane": "Federation Navy Energized Thermal Membrane", "Caldari Navy Thermic Dissipation Amplifier": "Caldari Navy Thermal Dissipation Amplifier", "Republic Fleet Thermic Dissipation Amplifier": "Republic Fleet Thermal Dissipation Amplifier", "Upgraded Thermic Plating I": "Upgraded Thermal Plating I", "Limited Thermic Plating I": "Limited Thermal Plating I", "Experimental Thermic Plating I": "Experimental Thermal Plating I", "Prototype Thermic Plating I": "Prototype Thermal Plating I", "Upgraded Armor Thermic Hardener I": "Upgraded Armor Thermal Hardener I", "Limited Armor Thermic Hardener I": "Limited Armor Thermal Hardener I", "Experimental Armor Thermic Hardener I": "Experimental Armor Thermal Hardener I", "Prototype Armor Thermic Hardener I": "Prototype Armor Thermal Hardener I", "Upgraded Energized Thermic Membrane I": "Upgraded Energized Thermal Membrane I", "Limited Energized Thermic Membrane I": "Limited Energized Thermal Membrane I", "Experimental Energized Thermic Membrane I": "Experimental Energized Thermal Membrane I", "Prototype Energized Thermic Membrane I": "Prototype Energized Thermal Membrane I", "Caldari Navy Thermic Dissipation Field": "Caldari Navy Thermal Dissipation Field", "Ammatar Navy Armor Thermic Hardener": "Ammatar Navy Armor Thermal Hardener", "Ammatar Navy Energized Thermic Membrane": "Ammatar Navy Energized Thermal Membrane", "Federation Navy Thermic Plating": "Federation Navy Thermal Plating", "Federation Navy Armor Thermic Hardener": "Federation Navy Armor Thermal Hardener", "Corpii C-Type Thermic Plating": "Corpii C-Type Thermal Plating", "Centii C-Type Thermic Plating": "Centii C-Type Thermal Plating", "Corpii B-Type Thermic Plating": "Corpii B-Type Thermal Plating", "Centii B-Type Thermic Plating": "Centii B-Type Thermal Plating", "Corpii A-Type Thermic Plating": "Corpii A-Type Thermal Plating", "Centii A-Type Thermic Plating": "Centii A-Type Thermal Plating", "Coreli C-Type Thermic Plating": "Coreli C-Type Thermal Plating", "Coreli B-Type Thermic Plating": "Coreli B-Type Thermal Plating", "Coreli A-Type Thermic Plating": "Coreli A-Type Thermal Plating", "Corelum C-Type Energized Thermic Membrane": "Corelum C-Type Energized Thermal Membrane", "Corelum B-Type Energized Thermic Membrane": "Corelum B-Type Energized Thermal Membrane", "Corelum A-Type Energized Thermic Membrane": "Corelum A-Type Energized Thermal Membrane", "Corpum C-Type Energized Thermic Membrane": "Corpum C-Type Energized Thermal Membrane", "Centum C-Type Energized Thermic Membrane": "Centum C-Type Energized Thermal Membrane", "Corpum B-Type Energized Thermic Membrane": "Corpum B-Type Energized Thermal Membrane", "Centum B-Type Energized Thermic Membrane": "Centum B-Type Energized Thermal Membrane", "Corpum A-Type Energized Thermic Membrane": "Corpum A-Type Energized Thermal Membrane", "Centum A-Type Energized Thermic Membrane": "Centum A-Type Energized Thermal Membrane", "Corpus C-Type Armor Thermic Hardener": "Corpus C-Type Armor Thermal Hardener", "Centus C-Type Armor Thermic Hardener": "Centus C-Type Armor Thermal Hardener", "Corpus B-Type Armor Thermic Hardener": "Corpus B-Type Armor Thermal Hardener", "Centus B-Type Armor Thermic Hardener": "Centus B-Type Armor Thermal Hardener", "Corpus A-Type Armor Thermic Hardener": "Corpus A-Type Armor Thermal Hardener", "Centus A-Type Armor Thermic Hardener": "Centus A-Type Armor Thermal Hardener", "Corpus X-Type Armor Thermic Hardener": "Corpus X-Type Armor Thermal Hardener", "Centus X-Type Armor Thermic Hardener": "Centus X-Type Armor Thermal Hardener", "Core C-Type Armor Thermic Hardener": "Core C-Type Armor Thermal Hardener", "Core B-Type Armor Thermic Hardener": "Core B-Type Armor Thermal Hardener", "Core A-Type Armor Thermic Hardener": "Core A-Type Armor Thermal Hardener", "Core X-Type Armor Thermic Hardener": "Core X-Type Armor Thermal Hardener", "Pithum C-Type Thermic Dissipation Amplifier": "Pithum C-Type Thermal Dissipation Amplifier", "Pithum B-Type Thermic Dissipation Amplifier": "Pithum B-Type Thermal Dissipation Amplifier", "Pithum A-Type Thermic Dissipation Amplifier": "Pithum A-Type Thermal Dissipation Amplifier", "Gistum C-Type Thermic Dissipation Amplifier": "Gistum C-Type Thermal Dissipation Amplifier", "Gistum B-Type Thermic Dissipation Amplifier": "Gistum B-Type Thermal Dissipation Amplifier", "Gistum A-Type Thermic Dissipation Amplifier": "Gistum A-Type Thermal Dissipation Amplifier", "Gist C-Type Thermic Dissipation Field": "Gist C-Type Thermal Dissipation Field", "Pith C-Type Thermic Dissipation Field": "Pith C-Type Thermal Dissipation Field", "Gist B-Type Thermic Dissipation Field": "Gist B-Type Thermal Dissipation Field", "Pith B-Type Thermic Dissipation Field": "Pith B-Type Thermal Dissipation Field", "Gist A-Type Thermic Dissipation Field": "Gist A-Type Thermal Dissipation Field", "Pith A-Type Thermic Dissipation Field": "Pith A-Type Thermal Dissipation Field", "Gist X-Type Thermic Dissipation Field": "Gist X-Type Thermal Dissipation Field", "Pith X-Type Thermic Dissipation Field": "Pith X-Type Thermal Dissipation Field", "'High Noon' Thermic Dissipation Amplifier": "'High Noon' Thermal Dissipation Amplifier", "'Desert Heat' Thermic Dissipation Field": "'Desert Heat' Thermal Dissipation Field", "Thermic Armor Compensation": "Thermal Armor Compensation", "'Moonshine' Energized Thermic Membrane I": "'Moonshine' Energized Thermal Membrane I", "Large Anti-Thermic Pump I": "Large Anti-Thermal Pump I", "Large Anti-Thermic Pump II": "Large Anti-Thermal Pump II", "Khanid Navy Armor Thermic Hardener": "Khanid Navy Armor Thermal Hardener", "Khanid Navy Energized Thermic Membrane": "Khanid Navy Energized Thermal Membrane", "Khanid Navy Thermic Plating": "Khanid Navy Thermal Plating", "Civilian Thermic Dissipation Field": "Civilian Thermal Dissipation Field", "Small Anti-Thermic Pump I": "Small Anti-Thermal Pump I", "Medium Anti-Thermic Pump I": "Medium Anti-Thermal Pump I", "Capital Anti-Thermic Pump I": "Capital Anti-Thermal Pump I", "Small Anti-Thermic Pump II": "Small Anti-Thermal Pump II", "Medium Anti-Thermic Pump II": "Medium Anti-Thermal Pump II", "Capital Anti-Thermic Pump II": "Capital Anti-Thermal Pump II", "Ammatar Navy Thermic Plating": "Ammatar Navy Thermal Plating", } ================================================ FILE: service/conversions/releaseProteus.py ================================================ """ Conversion pack for Proteus Module Tiericide """ CONVERSIONS = { # Renamed items "Basic Capacitor Recharger": "'Basic' Capacitor Recharger", "Basic Capacitor Power Relay": "'Basic' Capacitor Power Relay", "Basic Overdrive Injector System": "'Basic' Overdrive Injector System", "Basic Reinforced Bulkheads": "'Basic' Reinforced Bulkheads", "Basic Nanofiber Internal Structure": "'Basic' Nanofiber Internal Structure", "Basic Expanded Cargohold": "'Basic' Expanded Cargohold", "Basic Inertia Stabilizers": "'Basic' Inertial Stabilizers", "Inertia Stabilizers I": "Inertial Stabilizers I", "Inertia Stabilizers II": "Inertial Stabilizers II", "Basic Power Diagnostic System": "'Basic' Power Diagnostic System", "Eutectic Capacitor Charge Array": "Eutectic Compact Cap Recharger", "Cu Vapor Particle Bore Stream I": "Particle Bore Compact Mining Laser", "Type-D Altered SS Expanded Cargo": "Type-D Restrained Expanded Cargo", "Type-D Altered SS Inertial Stabilizers": "Type-D Restrained Inertial Stabilizers", "Type-D Altered SS Nanofiber Structure": "Type-D Restrained Nanofiber Structure", "Type-D Altered SS Overdrive Injector": "Type-D Restrained Overdrive Injector", "Type-D Altered SS Reinforced Bulkheads": "Type-D Restrained Reinforced Bulkheads", "Mark I Modified SS Reinforced Bulkheads": "Mark I Compact Reinforced Bulkheads", "Type-D Power Core Modification: Capacitor Power Relay": "Type-D Restrained Capacitor Power Relay", "Mark I Generator Refitting: Capacitor Power Relay": "Mark I Compact Capacitor Power Relay", "Mark I Generator Refitting: Diagnostic System": "Mark I Compact Power Diagnostic System", "Synthetic Hull Conversion Overdrive Injector I": "Synthetic Hull Conversion Overdrive Injector", "Synthetic Hull Conversion Reinforced Bulkheads I": "Synthetic Hull Conversion Reinforced Bulkheads", "Synthetic Hull Conversion Inertia Stabilizers I": "Synthetic Hull Conversion Inertia Stabilizers", "Synthetic Hull Conversion Nanofiber Structure I": "Synthetic Hull Conversion Nanofiber Structure", "Elara Mining Laser Upgrade": "Elara Restrained Mining Laser Upgrade", "Carpo Mining Laser Upgrade": "'Carpo' Mining Laser Upgrade", "Aoede Mining Laser Upgrade": "'Aoede' Mining Laser Upgrade", "Frigoris Ice Harvester Upgrade": "Frigoris Restrained Ice Harvester Upgrade", "Anguis Ice Harvester Upgrade": "'Anguis' Ice Harvester Upgrade", "Ingenii Ice Harvester Upgrade": "'Ingenii' Ice Harvester Upgrade", "Limited Expanded 'Archiver' Cargo I": "Limited Expanded 'Archiver' Cargo", "EP-S Gaussian Excavation Pulse": "EP-S Gaussian Scoped Mining Laser", # Converted items "Alpha Reactor Control: Diagnostic System": "'Basic' Power Diagnostic System", "Marked Generator Refitting: Diagnostic System": "'Basic' Power Diagnostic System", "Partial Power Plant Manager: Diagnostic System": "'Basic' Power Diagnostic System", "Type-E Power Core Modification: Diagnostic System": "'Basic' Power Diagnostic System", "Type-E Power Core Modification: Reaction Control": "'Basic' Power Diagnostic System", "Local Hull Conversion Reinforced Bulkheads I": "Type-D Restrained Reinforced Bulkheads", "Beta Hull Mod Reinforced Bulkheads": "Mark I Compact Reinforced Bulkheads", "Beta Hull Mod Inertial Stabilizers": "Type-D Restrained Inertial Stabilizers", "Local Hull Conversion Inertial Stabilizers I": "Type-D Restrained Inertial Stabilizers", "Mark I Modified SS Inertial Stabilizers": "Type-D Restrained Inertial Stabilizers", "Marked Modified SS Inertial Stabilizers": "Type-D Restrained Inertial Stabilizers", "Beta Reactor Control: Diagnostic System I": "Mark I Compact Power Diagnostic System", "Local Power Plant Manager: Diagnostic System I": "Mark I Compact Power Diagnostic System", "Type-D Power Core Modification: Diagnostic System": "Mark I Compact Power Diagnostic System", "Alpha Hull Mod Expanded Cargo": "'Basic' Expanded Cargohold", "Marked Modified SS Expanded Cargo": "'Basic' Expanded Cargohold", "Partial Hull Conversion Expanded Cargo": "'Basic' Expanded Cargohold", "Type-E Altered SS Expanded Cargo": "'Basic' Expanded Cargohold", "AGM Capacitor Charge Array": "'Basic' Capacitor Recharger", "F-a10 Buffer Capacitor Regenerator": "'Basic' Capacitor Recharger", "Industrial Capacitor Recharger": "'Basic' Capacitor Recharger", "Secondary Parallel Link-Capacitor": "'Basic' Capacitor Recharger", "Beta Reactor Control: Capacitor Power Relay I": "Mark I Compact Capacitor Power Relay", "Alpha Hull Mod Overdrive Injector": "'Basic' Overdrive Injector System", "Marked Modified SS Overdrive Injector": "'Basic' Overdrive Injector System", "Partial Hull Conversion Overdrive Injector": "'Basic' Overdrive Injector System", "Type-E Altered SS Overdrive Injector": "'Basic' Overdrive Injector System", "Erin Mining Laser Upgrade": "Elara Restrained Mining Laser Upgrade", "Alpha Hull Mod Reinforced Bulkheads": "'Basic' Reinforced Bulkheads", "Marked Modified SS Reinforced Bulkheads": "'Basic' Reinforced Bulkheads", "Partial Hull Conversion Reinforced Bulkheads": "'Basic' Reinforced Bulkheads", "Type-E Altered SS Reinforced Bulkheads": "'Basic' Reinforced Bulkheads", "Alpha Hull Mod Nanofiber Structure": "'Basic' Nanofiber Internal Structure", "Marked Modified SS Nanofiber Structure": "'Basic' Nanofiber Internal Structure", "Partial Hull Conversion Nanofiber Structure": "'Basic' Nanofiber Internal Structure", "Type-E Altered SS Nanofiber Structure": "'Basic' Nanofiber Internal Structure", "Crisium Ice Harvester Upgrade": "Frigoris Restrained Ice Harvester Upgrade", "Beta Hull Mod Nanofiber Structure": "Type-D Restrained Nanofiber Structure", "Local Hull Conversion Nanofiber Structure I": "Type-D Restrained Nanofiber Structure", "Mark I Modified SS Nanofiber Structure": "Type-D Restrained Nanofiber Structure", "Local Power Plant Manager: Capacity Power Relay I": "Type-D Restrained Capacitor Power Relay", "EP-R Argon Ion Basic Excavation Pulse": "Single Diode Basic Mining Laser", "Rubin Basic Particle Bore Stream": "Single Diode Basic Mining Laser", "Xenon Basic Drilling Beam": "Single Diode Basic Mining Laser", "Barton Reactor Capacitor Recharger I": "Eutectic Compact Cap Recharger", "F-b10 Nominal Capacitor Regenerator": "Eutectic Compact Cap Recharger", "Fixed Parallel Link-Capacitor I": "Eutectic Compact Cap Recharger", "Beta Hull Mod Expanded Cargo": "Type-D Restrained Expanded Cargo", "Local Hull Conversion Expanded Cargo I": "Type-D Restrained Expanded Cargo", "Mark I Modified SS Expanded Cargo": "Type-D Restrained Expanded Cargo", "Dual Diode Mining Laser I": "EP-S Gaussian Scoped Mining Laser", "Alpha Hull Mod Inertial Stabilizers": "'Basic' Inertial Stabilizers", "Partial Hull Conversion Inertial Stabilizers": "'Basic' Inertial Stabilizers", "Type-E Altered SS Inertial Stabilizers": "'Basic' Inertial Stabilizers", "Alpha Reactor Control: Capacitor Power Relay": "'Basic' Capacitor Power Relay", "Marked Generator Refitting: Capacitor Power Relay": "'Basic' Capacitor Power Relay", "Partial Power Plant Manager: Capacity Power Relay": "'Basic' Capacitor Power Relay", "Type-E Power Core Modification: Capacitor Power Relay": "'Basic' Capacitor Power Relay", "XeCl Drilling Beam I": "Particle Bore Compact Mining Laser", "Beta Hull Mod Overdrive Injector": "Type-D Restrained Overdrive Injector", "Local Hull Conversion Overdrive Injector I": "Type-D Restrained Overdrive Injector", "Mark I Modified SS Overdrive Injector": "Type-D Restrained Overdrive Injector", } ================================================ FILE: service/conversions/releaseSep2020.py ================================================ """ Conversion pack for September 2020 release """ CONVERSIONS = { # Renamed items "'Stalwart' Particle Field Magnifier": "Stalwart Restrained Shield Boost Amplifier", "'Copasetic' Particle Field Acceleration": "Copasetic Compact Shield Boost Amplifier", # Converted items "5a Prototype Shield Support I": "Stalwart Restrained Shield Boost Amplifier", "Ionic Field Accelerator I": "Copasetic Compact Shield Boost Amplifier" } ================================================ FILE: service/conversions/releaseSep2023.py ================================================ """ Actually renamed somewhere during summer, but updated only in september """ CONVERSIONS = { # Renamed items "‘Atgeir’ Explosive Disruptive Lance": "'Atgeir' Explosive Disruptive Lance", "‘Steel Yari’ Kinetic Disruptive Lance": "'Steel Yari' Kinetic Disruptive Lance", "‘Sarissa’ Thermal Disruptive Lance": "'Sarissa' Thermal Disruptive Lance", } ================================================ FILE: service/conversions/releaseSep2024.py ================================================ CONVERSIONS = { # Renamed items "Large Rudimentary Concussion Bomb I": "'Concussion' Compact Large Graviton Smartbomb", "Small Rudimentary Concussion Bomb I": "'Concussion' Compact Small Graviton Smartbomb", "Large 'Vehemence' Shockwave Charge": "'Vehemence' Compact Large EMP Smartbomb", "Small 'Vehemence' Shockwave Charge": "'Vehemence' Compact Small EMP Smartbomb", "Medium Rudimentary Concussion Bomb I": "'Concussion' Compact Medium Graviton Smartbomb", "Medium 'Vehemence' Shockwave Charge": "'Vehemence' Compact Medium EMP Smartbomb", "Small 'Notos' Explosive Charge I": "'Notos' Compact Small Proton Smartbomb", "Medium 'Notos' Explosive Charge I": "'Notos' Compact Medium Proton Smartbomb", "Large 'Notos' Explosive Charge I": "'Notos' Compact Large Proton Smartbomb", "Small YF-12a Smartbomb": "'YF-12a' Compact Small Plasma Smartbomb", "Medium YF-12a Smartbomb": "'YF-12a' Compact Medium Plasma Smartbomb", "Large YF-12a Smartbomb": "'YF-12a' Compact Large Plasma Smartbomb", "Small Degenerative Concussion Bomb I": "'Degenerative' Small Proton Smartbomb", "Small Degenerative Concussion Bomb I Blueprint": "'Degenerative' Small Proton Smartbomb Blueprint", "Medium Degenerative Concussion Bomb I": "'Dwindling' Medium Proton Smartbomb", "Medium Degenerative Concussion Bomb I Blueprint": "'Dwindling' Medium Proton Smartbomb Blueprint", "Large Degenerative Concussion Bomb I": "'Regressive' Large Proton Smartbomb", "Large Degenerative Concussion Bomb I Blueprint": "'Regressive' Large Proton Smartbomb Blueprint", "'Pike' Small EMP Smartbomb I": "'Pike' Small EMP Smartbomb", "'Lance' Medium EMP Smartbomb I": "'Lance' Medium EMP Smartbomb", "'Warhammer' Large EMP Smartbomb I": "'Warhammer' Large EMP Smartbomb", } ================================================ FILE: service/conversions/releaseSep2025.py ================================================ CONVERSIONS = { "'Cactus' Modified Kinetic Shield Amplifier": "'Cactus' Kinetic Shield Amplifier", "Consortium Vorton Tuning system": "Consortium Vorton Tuning System", } ================================================ FILE: service/conversions/releaseTiamat.py ================================================ """ Conversion pack for Tiamat Module Tiericide """ CONVERSIONS = { "Enduring Cargo Scanner": "Type-E Enduring Cargo Scanner", "Scoped Cargo Scanner": "PL-0 Scoped Cargo Scanner", "Compact Ship Scanner": "Ta3 Compact Ship Scanner", "Scoped Survey Scanner": "ML-3 Scoped Survey Scanner", "Compact Light Missile Launcher": "Arbalest Compact Light Missile Launcher", "Ample Light Missile Launcher": "TE-2100 Ample Light Missile Launcher", "Compact Capacitor Flux Coil": "Mark I Compact Capacitor Flux Coil", "Restrained Capacitor Flux Coil": "Type-D Restrained Capacitor Flux Coil", "Compact Reactor Control Unit": "Mark I Compact Reactor Control Unit", "Upgraded Co-Processor": "Photonic Upgraded Co-Processor", "Compact Micro Auxiliary Power Core": "Vigor Compact Micro Auxiliary Power Core" } ================================================ FILE: service/conversions/skinnedShips.py ================================================ """ Conversion pack for skinned ships to their base hull. Unlike other conversion packs, the name of this file is important as it is used in service.market to flag as unpublished See GH issue #67 on why this is needed """ CONVERSIONS = { "Miasmos Amastris Edition": "Miasmos Quafe Ultra Edition", "Miasmos Quafe Ultramarine Edition": "Miasmos Quafe Ultra Edition", "Rattlesnake Victory Edition": "Rattlesnake", "Aliastra Catalyst": "Catalyst", "Inner Zone Shipping Catalyst": "Catalyst", "Intaki Syndicate Catalyst": "Catalyst", "InterBus Catalyst": "Catalyst", "Quafe Catalyst": "Catalyst", "Inner Zone Shipping Imicus": "Imicus", "Nefantar Thrasher": "Thrasher", "Sarum Magnate": "Magnate", "Tash-Murkon Magnate": "Magnate", "Sukuuvestaa Heron": "Heron", "Vherokior Probe": "Probe", } ================================================ FILE: service/conversions/trigDread.py ================================================ """ In October 2019 we released triglavian dread preview builds, we had custom names for ship itself and its gun. Here we make sure that legacy names are converted into proper ones. """ CONVERSIONS = { 'Triglavian Dreadnought': 'Zirnitra', 'PLACEHOLDER TRIG DREAD': 'Zirnitra', 'XL Entropic Disintegrator': 'Ultratidal Entropic Disintegrator I', 'PLACEHOLDER TRIG XL WEAPON': 'Ultratidal Entropic Disintegrator I' } ================================================ FILE: service/crudeTests.py ================================================ ================================================ FILE: service/damagePattern.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import copy import eos.db from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern class ImportError(Exception): pass class DamagePattern: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = DamagePattern() return cls.instance @staticmethod def getUserDamagePatternList(): return eos.db.getDamagePatternList() @staticmethod def getBuiltinDamagePatternList(): return es_DamagePattern.getBuiltinList() @staticmethod def getDamagePattern(name): return eos.db.getDamagePattern(name) @staticmethod def newPattern(name): p = es_DamagePattern(0, 0, 0, 0) p.rawName = name eos.db.save(p) return p @staticmethod def renamePattern(p, newName): p.rawName = newName eos.db.save(p) @staticmethod def deletePattern(p): eos.db.remove(p) @staticmethod def copyPattern(p): newP = copy.deepcopy(p) eos.db.save(newP) return newP @staticmethod def saveChanges(p): eos.db.save(p) def importPatterns(self, text): imports, num = es_DamagePattern.importPatterns(text) lenImports = len(imports) if lenImports == 0: raise ImportError("No patterns found for import") if lenImports != num: raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports)) def exportPatterns(self): patterns = self.getUserDamagePatternList() for i in range(len(patterns) - 1, -1, -1): if patterns[i].name in ("Uniform", "Selected Ammo"): del patterns[i] patterns.sort(key=lambda p: p.fullName) return es_DamagePattern.exportPatterns(*patterns) ================================================ FILE: service/esi.py ================================================ # noinspection PyPackageRequirements import wx from logbook import Logger import threading import time import base64 import json import config import re import eos.db from service.const import EsiLoginMethod, EsiSsoMode from eos.saveddata.ssocharacter import SsoCharacter from service.esiAccess import APIException, GenericSsoError import gui.globalEvents as GE from gui.ssoLogin import SsoLogin from service.server import StoppableHTTPServer, AuthHandler from service.settings import EsiSettings from service.esiAccess import EsiAccess import gui.mainFrame from requests import Session pyfalog = Logger(__name__) _t = wx.GetTranslation class EsiTokenValidationThread(threading.Thread): def __init__(self, callback=None): threading.Thread.__init__(self) self.name = "EsiTokenValidation" self.callback = callback self.running = True def run(self): with config.logging_setup.threadbound(): try: esi = Esi.getInstance() chars = esi.getSsoCharacters() for char in chars: if not self.running: return if char.is_token_expired(): pyfalog.info(f"Token expired for {char.characterName}, attempting refresh") try: esi.refresh(char) eos.db.save(char) pyfalog.info(f"Successfully refreshed token for {char.characterName}") except Exception as e: pyfalog.error(f"Failed to refresh token for {char.characterName}: {e}") else: pyfalog.debug(f"Token valid for {char.characterName}") except Exception as e: pyfalog.error(f"Error validating ESI tokens: {e}") finally: if self.callback: wx.CallAfter(self.callback) def stop(self): self.running = False class Esi(EsiAccess): _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = Esi() return cls._instance def __init__(self): self.settings = EsiSettings.getInstance() super().__init__() # these will be set when needed self.httpd = None self.state = None self.ssoTimer = None self.implicitCharacter = None # until I can get around to making proper caching and modifications to said cache, storee deleted fittings here # so that we can easily hide them in the fitting browser self.fittings_deleted = set() # need these here to post events import gui.mainFrame # put this here to avoid loop self.mainFrame = gui.mainFrame.MainFrame.getInstance() def delSsoCharacter(self, id): char = eos.db.getSsoCharacter(id, config.getClientSecret()) # There is an issue in which the SSO character is not removed from any linked characters - a reference to the # sso character remains even though the SSO character is deleted which should have deleted the link. This is a # work around until we can figure out why. Manually delete SSOCharacter from all of it's characters for x in char.characters: x._Character__ssoCharacters.remove(char) eos.db.remove(char) wx.PostEvent(self.mainFrame, GE.SsoLogout(charID=id)) def getSsoCharacters(self): chars = eos.db.getSsoCharacters(config.getClientSecret()) return chars def getSsoCharacter(self, id, server=None): char = eos.db.getSsoCharacter(id, config.getClientSecret(), server) eos.db.commit() return char def getSkills(self, id): char = self.getSsoCharacter(id) resp = super().getSkills(char) return resp.json() def getSecStatus(self, id): char = self.getSsoCharacter(id) resp = super().getSecStatus(char) return resp.json() def getFittings(self, id): char = self.getSsoCharacter(id) resp = super().getFittings(char) return resp.json() def postFitting(self, id, json_str): # @todo: new fitting ID can be recovered from resp.data, char = self.getSsoCharacter(id) resp = super().postFitting(char, json_str) return resp def delFitting(self, id, fittingID): char = self.getSsoCharacter(id) super().delFitting(char, fittingID) self.fittings_deleted.add(fittingID) def login(self): start_server = self.settings.get('loginMode') == EsiLoginMethod.SERVER and self.server_base.supports_auto_login with gui.ssoLogin.SsoLogin(self.server_base, start_server) as dlg: if dlg.ShowModal() == wx.ID_OK: from gui.esiFittings import ESIExceptionHandler try: if self.server_name == "Serenity": s = re.search(r'(?<=code=)[a-zA-Z0-9\-_]*', dlg.ssoInfoCtrl.Value.strip()) if s: # skip state verification and go directly through the auth code processing self.handleLogin(s.group(0)) else: pass # todo: throw error else: self.handleServerRequest(json.loads(base64.b64decode(dlg.ssoInfoCtrl.Value.strip()))) except GenericSsoError as ex: pyfalog.error(ex) with wx.MessageDialog( self.mainFrame, str(ex), _t("SSO Error"), wx.OK | wx.ICON_ERROR ) as dlg: dlg.ShowModal() except APIException as ex: pyfalog.error(ex) ESIExceptionHandler(ex) pass def stopServer(self): pyfalog.debug("Stopping Server") if self.httpd: self.httpd.stop() self.httpd = None def startServer(self, port): # todo: break this out into two functions: starting the server, and getting the URI pyfalog.debug("Starting server") # we need this to ensure that the previous get_request finishes, and then the socket will close if self.httpd: self.stopServer() time.sleep(1) self.httpd = StoppableHTTPServer(('localhost', port), AuthHandler) port = self.httpd.socket.getsockname()[1] self.serverThread = threading.Thread(target=self.httpd.serve, args=(self.handleServerRequest,)) self.serverThread.name = "SsoCallbackServer" self.serverThread.daemon = True self.serverThread.start() return 'http://localhost:{}'.format(port) def handleLogin(self, code): auth_response, data = self.auth(code) currentCharacter = self.getSsoCharacter(data['name'], self.server_base.name) sub_split = data["sub"].split(":") if len(sub_split) != 3: raise GenericSsoError("JWT sub does not contain the expected data. Contents: %s" % data["sub"]) cid = sub_split[-1] if currentCharacter is None: currentCharacter = SsoCharacter(cid, data['name'], config.getClientSecret(), self.server_base.name) Esi.update_token(currentCharacter, auth_response) eos.db.save(currentCharacter) wx.PostEvent(self.mainFrame, GE.SsoLogin(character=currentCharacter)) # get (endpoint, char, data?) def handleServerRequest(self, message): if not message: raise GenericSsoError("Could not parse out querystring parameters.") try: state_enc = message['state'] state = json.loads(base64.b64decode(state_enc))['state'] except Exception: raise GenericSsoError("There was a problem decoding state parameter.") if state != self.state: pyfalog.warn("OAUTH state mismatch") raise GenericSsoError("OAUTH State Mismatch.") pyfalog.debug("Handling SSO login with: {0}", message) self.handleLogin(message['code']) def startTokenValidation(self): pyfalog.debug("Starting ESI token validation thread") tokenValidationThread = EsiTokenValidationThread() tokenValidationThread.daemon = True tokenValidationThread.start() ================================================ FILE: service/esiAccess.py ================================================ # noinspection PyPackageRequirements from collections import namedtuple import requests from logbook import Logger import uuid import time import config import base64 import secrets import hashlib import json from jose import jwt from jose.exceptions import ExpiredSignatureError, JWTError, JWTClaimsError import os import datetime from service.const import EsiSsoMode, EsiEndpoints from service.settings import EsiSettings, NetworkSettings from datetime import timedelta from requests_cache import CachedSession from requests import Session from urllib.parse import urlencode pyfalog = Logger(__name__) scopes = [ 'esi-skills.read_skills.v1', 'esi-fittings.read_fittings.v1', 'esi-fittings.write_fittings.v1' ] class GenericSsoError(Exception): """ Exception used for generic SSO errors that aren't directly related to an API call """ pass class APIException(Exception): """ Exception for API related errors """ def __init__(self, url, code, json_response): self.url = url self.status_code = code self.response = json_response super(APIException, self).__init__(str(self)) def __str__(self): if 'error_description' in self.response: return 'HTTP Error %s: %s' % (self.status_code, self.response['error_description']) elif 'message' in self.response: return 'HTTP Error %s: %s' % (self.status_code, self.response['message']) return 'HTTP Error %s' % self.status_code class EsiAccess: server_meta = {} def __init__(self): self.settings = EsiSettings.getInstance() self.default_server_name = self.settings.get('server') self.default_server_base = config.supported_servers[self.default_server_name] # session request stuff self._session = Session() self._basicHeaders = { 'Accept': 'application/json', 'User-Agent': ( 'pyfa v{}'.format(config.version) ) } self._session.headers.update(self._basicHeaders) self._session.proxies = NetworkSettings.getInstance().getProxySettingsInRequestsFormat() self.mem_cached_session = {} # Set up cached session. This is only used for SSO meta data for now, but can be expanded to actually handle # various ESI caching (using ETag, for example) in the future self.cached_session = CachedSession( os.path.join(config.savePath, config.ESI_CACHE), backend="sqlite", cache_control=True, # Use Cache-Control headers for expiration, if available expire_after=timedelta(days=1), # Otherwise expire responses after one day stale_if_error=True, # In case of request errors, use stale cache data if possible ) self.cached_session.headers.update(self._basicHeaders) self.cached_session.proxies = NetworkSettings.getInstance().getProxySettingsInRequestsFormat() self.init(self.default_server_base) def init(self, server_base): self.server_base: config.ApiServer = server_base self.server_name = self.server_base.name try: meta_call = self.cached_session.get("https://%s/.well-known/oauth-authorization-server" % self.server_base.sso) except: # The http data of expire_after in evepc.163.com is -1 meta_call = requests.get("https://%s/.well-known/oauth-authorization-server" % self.server_base.sso) meta_call.raise_for_status() self.server_meta = meta_call.json() try: jwks_call = self.cached_session.get(self.server_meta["jwks_uri"]) except: jwks_call = requests.get(self.server_meta["jwks_uri"]) jwks_call.raise_for_status() self.jwks = jwks_call.json() @property def sso_url(self): return 'https://%s/v2' % self.server_base.sso @property def esi_url(self): return 'https://%s' % self.server_base.esi @property def oauth_authorize(self): return self.server_meta["authorization_endpoint"] @property def oauth_token(self): return self.server_meta["token_endpoint"] @property def client_id(self): return self.settings.get('clientID') or self.server_base.client_id @staticmethod def update_token(char, tokenResponse): """ helper function to update token data from SSO response """ char.accessToken = tokenResponse['access_token'] char.accessTokenExpires = datetime.datetime.fromtimestamp(time.time() + tokenResponse['expires_in']) if 'refresh_token' in tokenResponse: char.refreshToken = config.cipher.encrypt(tokenResponse['refresh_token'].encode()) def get_login_uri(self, redirect=None): self.state = str(uuid.uuid4()) # Generate the PKCE code challenge self.code_verifier = base64.urlsafe_b64encode(secrets.token_bytes(32)) m = hashlib.sha256() m.update(self.code_verifier) d = m.digest() code_challenge = base64.urlsafe_b64encode(d).decode().replace("=", "") state_arg = { 'mode': self.settings.get('loginMode'), 'redirect': redirect, 'state': self.state } if(self.server_name=="Serenity"): args = { 'response_type': 'code', 'redirect_uri': self.server_base.callback, 'client_id': self.client_id, 'scope': ' '.join(scopes), 'state': 'hilltech', 'device_id': 'eims' } else: args = { 'response_type': 'code', 'redirect_uri': self.server_base.callback, 'client_id': self.client_id, 'scope': ' '.join(scopes), 'code_challenge': code_challenge, 'code_challenge_method': 'S256', 'state': base64.b64encode(bytes(json.dumps(state_arg), 'utf-8')) } return '%s?%s' % ( self.oauth_authorize, urlencode(args) ) def get_oauth_header(self, token): """ Return the Bearer Authorization header required in oauth calls :return: a dict with the authorization header """ return {'Authorization': 'Bearer %s' % token} def auth(self, code): values = { 'grant_type': 'authorization_code', 'code': code, 'client_id': self.client_id, "code_verifier": self.code_verifier } res = self.token_call(values) json_res = res.json() decoded_jwt = self.validate_eve_jwt(json_res['access_token']) return json_res, decoded_jwt def refresh(self, ssoChar): # todo: properly handle invalid refresh token values = { "grant_type": "refresh_token", "refresh_token": config.cipher.decrypt(ssoChar.refreshToken).decode(), "client_id": self.client_id, } res = self.token_call(values) json_res = res.json() self.update_token(ssoChar, json_res) return json_res def token_call(self, values): headers = { "Content-Type": "application/x-www-form-urlencoded", "Host": self.server_base.sso, } res = self._session.post( self.server_meta["token_endpoint"], data=values, headers=headers, ) if res.status_code != 200: raise APIException( self.server_meta["token_endpoint"], res.status_code, res.json() ) return res def validate_eve_jwt(self, jwt_token): """Validate a JWT token retrieved from the EVE SSO. Ignores the `aud` claim in token due to avoid unexpected breaking changes to ESI. Args: jwt_token: A JWT token originating from the EVE SSO Returns dict: The contents of the validated JWT token if there are no validation errors """ try: jwk_sets = self.jwks["keys"] except KeyError as e: raise GenericSsoError("Something went wrong when retrieving the JWK set. The returned " "payload did not have the expected key {}. \nPayload returned " "from the SSO looks like: {}".format(e, self.jwks)) jwk_set = next((item for item in jwk_sets if item["alg"] == "RS256")) try: return jwt.decode( jwt_token, jwk_set, algorithms=jwk_set["alg"], issuer=[self.server_base.sso, "https://%s" % self.server_base.sso], # ignore "aud" claim: https://tweetfleet.slack.com/archives/C30KX8UUX/p1648495011905969 options={"verify_aud": False, "verify_exp": self.settings.get("enforceJwtExpiration")} ) except ExpiredSignatureError as e: raise GenericSsoError("The JWT token has expired: {}".format(str(e))) except JWTError as e: raise GenericSsoError("The JWT signature was invalid: {}".format(str(e))) except JWTClaimsError as e: raise GenericSsoError("The issuer claim was not from login.eveonline.com or " "https://login.eveonline.com: {}".format(str(e))) def _before_request(self, ssoChar): if ssoChar: self.init(config.supported_servers[ssoChar.server]) else: self.init(self.default_server_base) self._session.headers.clear() self._session.headers.update(self._basicHeaders) if ssoChar is None: return if ssoChar.is_token_expired(): pyfalog.info("Refreshing token for {}".format(ssoChar.characterName)) self.refresh(ssoChar) if ssoChar.accessToken is not None: self._session.headers.update(self.get_oauth_header(ssoChar.accessToken)) def _after_request(self, resp): if "warning" in resp.headers: pyfalog.warn("{} - {}".format(resp.headers["warning"], resp.url)) if resp.status_code >= 400: raise APIException( resp.url, resp.status_code, resp.json() ) return resp def get(self, ssoChar, endpoint, **kwargs): self._before_request(ssoChar) endpoint = endpoint.format(**kwargs) return self._after_request(self._session.get("{}{}?datasource={}".format(self.esi_url, endpoint, self.server_name.lower()))) def post(self, ssoChar, endpoint, json, **kwargs): self._before_request(ssoChar) endpoint = endpoint.format(**kwargs) return self._after_request(self._session.post("{}{}?datasource={}".format(self.esi_url, endpoint, self.server_name.lower()), data=json)) def delete(self, ssoChar, endpoint, **kwargs): self._before_request(ssoChar) endpoint = endpoint.format(**kwargs) return self._after_request(self._session.delete("{}{}?datasource={}".format(self.esi_url, endpoint, self.server_name.lower()))) # todo: move these off to another class which extends this one. This class should only handle the low level # authentication and def getDynamicItem(self, typeID, itemID): return self.get(None, EsiEndpoints.DYNAMIC_ITEM.value, type_id=typeID, item_id=itemID) def getSkills(self, char): return self.get(char, EsiEndpoints.CHAR_SKILLS.value, character_id=char.characterID) def getSecStatus(self, char): return self.get(char, EsiEndpoints.CHAR.value, character_id=char.characterID) def getFittings(self, char): return self.get(char, EsiEndpoints.CHAR_FITTINGS.value, character_id=char.characterID) def postFitting(self, char, json_str): # @todo: new fitting ID can be recovered from resp.data, return self.post(char, EsiEndpoints.CHAR_FITTINGS.value, json_str, character_id=char.characterID) def delFitting(self, char, fittingID): return self.delete(char, EsiEndpoints.CHAR_DEL_FIT.value, character_id=char.characterID, fitting_id=fittingID) ================================================ FILE: service/eveapi.py ================================================ ================================================ FILE: service/fit.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== import copy import datetime from time import time from weakref import WeakSet import wx from logbook import Logger import eos.db from eos.const import FittingModuleState, ImplantLocation from eos.saveddata.character import Character as saveddata_Character from eos.saveddata.citadel import Citadel as es_Citadel from eos.saveddata.damagePattern import DamagePattern as es_DamagePattern from eos.saveddata.fit import Fit as FitType from eos.saveddata.ship import Ship as es_Ship from service.character import Character from service.damagePattern import DamagePattern from service.settings import SettingsProvider pyfalog = Logger(__name__) class DeferRecalc: def __init__(self, fitID): self.fitID = fitID self.sFit = Fit.getInstance() def __enter__(self): self._recalc = self.sFit.recalc self.sFit.recalc = lambda x: pyfalog.debug('Deferred Recalc') def __exit__(self, *args): self.sFit.recalc = self._recalc self.sFit.recalc(self.fitID) class Fit: instance = None processors = {} @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Fit() return cls.instance def __init__(self): pyfalog.debug("Initialize Fit class") self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform") self.targetProfile = None self.character = saveddata_Character.getAll5() self.booster = False self._loadedFits = WeakSet() serviceFittingDefaultOptions = { "useGlobalCharacter": False, "useCharacterImplantsByDefault": True, "useGlobalDamagePattern": False, "defaultCharacter": self.character.ID, "useGlobalForceReload": False, "colorFitBySlot": False, "rackSlots": True, "rackLabels": True, "compactSkills": True, "showTooltip": True, "showMarketShortcuts": False, "enableGaugeAnimation": True, "openFitInNew": False, "priceSystem": "Jita", "priceSource": "fuzzwork market", "showShipBrowserTooltip": True, "marketSearchDelay": 250, "ammoChangeAll": False, "additionsLabels": 1, "expandedMutantNames": False, } self.serviceFittingOptions = SettingsProvider.getInstance().getSettings( "pyfaServiceFittingOptions", serviceFittingDefaultOptions) @staticmethod def getAllFits(): pyfalog.debug("Fetching all fits") fits = eos.db.getFitList() return fits @staticmethod def getAllFitsLite(): fits = eos.db.getFitListLite() shipMap = {f.shipID: None for f in fits} for shipID in shipMap: ship = eos.db.getItem(shipID) if ship is not None: shipMap[shipID] = (ship.name, ship.getShortName()) fitsToPurge = set() for fit in fits: try: fit.shipName, fit.shipNameShort = shipMap[fit.shipID] except (KeyError, TypeError): fitsToPurge.add(fit) for fit in fitsToPurge: fits.remove(fit) return fits @staticmethod def getFitsWithShip(shipID): """ Lists fits of shipID, used with shipBrowser """ pyfalog.debug("Fetching all fits for ship ID: {0}", shipID) fits = eos.db.getFitsWithShip(shipID) names = [] for fit in fits: names.append((fit.ID, fit.name, fit.booster, fit.modified or fit.created or datetime.datetime.fromtimestamp(fit.timestamp), fit.notes, fit.ship.item.graphicID)) return names @staticmethod def getRecentFits(): """ Fetches recently modified fits, used with shipBrowser """ pyfalog.debug("Fetching recent fits") fits = eos.db.getRecentFits() returnInfo = [] for fit in fits: item = eos.db.getItem(fit[1]) returnInfo.append((fit[0], fit[2], fit[3] or fit[4] or datetime.datetime.fromtimestamp(fit[5]), item, fit[6])) # ID name timestamps item notes return returnInfo @staticmethod def getFitsWithModules(typeIDs): """ Lists fits flagged as booster """ pyfalog.debug('Getting fits with modules') fits = eos.db.getFitsWithModules(typeIDs) return fits @staticmethod def countAllFits(): pyfalog.debug("Getting count of all fits.") return eos.db.countAllFits() @staticmethod def countAllFitsGroupedByShip(): count = eos.db.countFitGroupedByShip() return count @staticmethod def countFitsWithShip(stuff): pyfalog.debug("Getting count of all fits for: {0}", stuff) count = eos.db.countFitsWithShip(stuff) return count @staticmethod def getModule(fitID, pos): fit = eos.db.getFit(fitID) return fit.modules[pos] def newFit(self, shipID, name=None): pyfalog.debug("Creating new fit for ID: {0}", shipID) try: ship = es_Ship(eos.db.getItem(shipID)) except ValueError: ship = es_Citadel(eos.db.getItem(shipID)) fit = FitType(ship) fit.name = name if name is not None else "New %s" % fit.ship.item.name fit.damagePattern = self.pattern fit.targetProfile = self.targetProfile fit.character = self.character fit.booster = self.booster useCharImplants = self.serviceFittingOptions["useCharacterImplantsByDefault"] fit.implantLocation = ImplantLocation.CHARACTER if useCharImplants else ImplantLocation.FIT eos.db.save(fit) self.recalc(fit) self.fill(fit) return fit.ID @staticmethod def deleteFit(fitID): fit = eos.db.getFit(fitID) pyfalog.debug("Fit::deleteFit - Deleting fit: {}", fit) # refresh any fits this fit is projected onto. Otherwise, if we have # already loaded those fits, they will not reflect the changes # A note on refreshFits: we collect the target fits in a set because # if a target fit has the same fit for both projected and command, # it will be refreshed first during the projected loop and throw an # error during the command loop refreshFits = set() for projection in list(fit.projectedOnto.values()): if projection.victim_fit and projection.victim_fit != fit and projection.victim_fit in eos.db.saveddata_session: # GH issue #359 refreshFits.add(projection.victim_fit) for booster in list(fit.boostedOnto.values()): if booster.boosted_fit and booster.boosted_fit != fit and booster.boosted_fit in eos.db.saveddata_session: # GH issue #359 refreshFits.add(booster.boosted_fit) eos.db.remove(fit) if fitID in Fit.processors: del Fit.processors[fitID] pyfalog.debug(" Need to refresh {} fits: {}", len(refreshFits), refreshFits) for fit in refreshFits: eos.db.saveddata_session.refresh(fit) eos.db.saveddata_session.commit() @classmethod def getCommandProcessor(cls, fitID): if fitID not in cls.processors: cls.processors[fitID] = wx.CommandProcessor(maxCommands=100) return cls.processors[fitID] @staticmethod def copyFit(fitID): pyfalog.debug("Creating copy of fit ID: {0}", fitID) fit = eos.db.getFit(fitID) newFit = copy.deepcopy(fit) eos.db.save(newFit) return newFit.ID @staticmethod def clearFit(fitID): pyfalog.debug("Clearing fit for fit ID: {0}", fitID) if fitID is None: return None fit = eos.db.getFit(fitID) fit.clear() return fit @staticmethod def editNotes(fitID, notes): fit = eos.db.getFit(fitID) if fit: fit.notes = notes eos.db.commit() def toggleFactorReload(self, value=None): self.serviceFittingOptions['useGlobalForceReload'] = value if value is not None else not self.serviceFittingOptions['useGlobalForceReload'] fitIDs = set() for fit in set(self._loadedFits): if fit is None: continue if fit.calculated: fit.factorReload = self.serviceFittingOptions['useGlobalForceReload'] fit.clearFactorReloadDependentData() fitIDs.add(fit.ID) return fitIDs def processOverrideToggle(self): fitIDs = set() for fit in set(self._loadedFits): if fit is None: continue if fit.calculated: self.recalc(fit) fitIDs.add(fit.ID) return fitIDs def processTargetProfileChange(self): fitIDs = set() for fit in set(self._loadedFits): if fit is None: continue if not fit.targetProfile: continue if fit.calculated: self.recalc(fit) fitIDs.add(fit.ID) return fitIDs def switchFit(self, fitID): pyfalog.debug("Switching fit to fit ID: {0}", fitID) if fitID is None: return None fit = eos.db.getFit(fitID) if self.serviceFittingOptions["useGlobalCharacter"]: if fit.character != self.character: fit.calculated = False fit.character = self.character if self.serviceFittingOptions["useGlobalDamagePattern"]: if fit.damagePattern != self.pattern: fit.calculated = False fit.damagePattern = self.pattern eos.db.commit() if not fit.calculated: self.recalc(fit) self.fill(fit) def getFit(self, fitID, projected=False, basic=False): """ Gets fit from database Projected is a recursion flag that is set to reduce recursions into projected fits Basic is a flag to simply return the fit without any other processing """ # pyfalog.debug("Getting fit for fit ID: {0}", fitID) if fitID is None: return None fit = eos.db.getFit(fitID) if fit is None: return None self._loadedFits.add(fit) if basic: return fit inited = getattr(fit, "inited", None) if inited is None or inited is False: if not projected: for fitP in fit.projectedFits: self.getFit(fitP.ID, projected=True) self.recalc(fit) self.fill(fit) # this will loop through modules and set their restriction flag (set in m.fit()) if fit.ignoreRestrictions: for mod in fit.modules: if not mod.isEmpty: mod.fits(fit) # Check that the states of all modules are valid self.checkStates(fit, None) eos.db.commit() fit.inited = True return fit @staticmethod def searchFits(name): pyfalog.debug("Searching for fit: {0}", name) results = eos.db.searchFits(name) fits = [] for fit in sorted(results, key=lambda f: (f.ship.item.group.name, f.ship.item.name, f.name)): fits.append(( fit.ID, fit.name, fit.ship.item.ID, fit.ship.item.name, fit.booster, fit.modifiedCoalesce, fit.notes)) return fits def changeMutatedValuePrelim(self, mutator, value): pyfalog.debug("Changing mutated value for {} / {}: {} => {}".format(mutator.item, mutator.item.mutaplasmid, mutator.value, value)) if mutator.value != value: mutator.value = value eos.db.flush() return mutator.value def changeChar(self, fitID, charID): pyfalog.debug("Changing character ({0}) for fit ID: {1}", charID, fitID) if fitID is None or charID is None: if charID is not None: self.character = Character.getInstance().all5() return fit = eos.db.getFit(fitID) fit.character = self.character = eos.db.getCharacter(charID) self.recalc(fit) self.fill(fit) @staticmethod def getTargetProfile(fitID): pyfalog.debug("Get target profile for fit ID: {0}", fitID) if fitID is None: return fit = eos.db.getFit(fitID) return fit.targetProfile def setTargetProfile(self, fitID, pattern): pyfalog.debug("Set target resist for fit ID: {0}", fitID) if fitID is None: return fit = eos.db.getFit(fitID) fit.targetProfile = pattern eos.db.commit() self.recalc(fit) @staticmethod def getDamagePattern(fitID): pyfalog.debug("Get damage pattern for fit ID: {0}", fitID) if fitID is None: return fit = eos.db.getFit(fitID) return fit.damagePattern def setDamagePattern(self, fitID, pattern): pyfalog.debug("Set damage pattern for fit ID: {0}", fitID) if fitID is None: return fit = eos.db.getFit(fitID) fit.damagePattern = self.pattern = pattern eos.db.commit() self.recalc(fit) def setAsPattern(self, fitID, ammo): pyfalog.debug("Set as pattern for fit ID: {0}", fitID) if fitID is None: return sDP = DamagePattern.getInstance() dp = sDP.getDamagePattern("Selected Ammo") if dp is None: dp = es_DamagePattern() dp.rawName = "Selected Ammo" fit = eos.db.getFit(fitID) for attr in ("em", "thermal", "kinetic", "explosive"): setattr(dp, "%sAmount" % attr, ammo.getAttribute("%sDamage" % attr) or 0) fit.damagePattern = dp self.recalc(fit) def setRahPattern(self, fitID, module, pattern): pyfalog.debug("Set as pattern for fit ID: {0}", fitID) if fitID is None: return module.rahPatternOverride = pattern fit = eos.db.getFit(fitID) self.recalc(fit) def checkStates(self, fit, base): pyfalog.debug("Check states for fit ID: {0}", fit) changedMods = {} changedProjMods = {} changedProjDrones = {} for pos, mod in enumerate(fit.modules): if mod is not base: # fix for #529, where a module may be in incorrect state after CCP changes mechanics of module canHaveState = mod.canHaveState(mod.state) if canHaveState is not True: changedMods[pos] = mod.state mod.state = canHaveState elif not mod.isValidState(mod.state): changedMods[pos] = mod.state mod.state = FittingModuleState.ONLINE for pos, mod in enumerate(fit.projectedModules): # fix for #529, where a module may be in incorrect state after CCP changes mechanics of module canHaveState = mod.canHaveState(mod.state, fit) if canHaveState is not True: changedProjMods[pos] = mod.state mod.state = canHaveState elif not mod.isValidState(mod.state): changedProjMods[pos] = mod.state mod.state = FittingModuleState.OFFLINE for pos, drone in enumerate(fit.projectedDrones): if drone.amountActive > 0 and not drone.canBeApplied(fit): changedProjDrones[pos] = drone.amountActive drone.amountActive = 0 return changedMods, changedProjMods, changedProjDrones @classmethod def fitObjectIter(cls, fit, forceFitImplants=False): yield fit.ship for mod in fit.modules: if not mod.isEmpty: yield mod implants = fit.implants if forceFitImplants else fit.appliedImplants for container in (fit.drones, fit.fighters, implants, fit.boosters, fit.cargo): for obj in container: yield obj @classmethod def fitItemIter(cls, fit, forceFitImplants=False): for fitobj in cls.fitObjectIter(fit, forceFitImplants): yield fitobj.item charge = getattr(fitobj, 'charge', None) if charge: yield charge def refreshFit(self, fitID): pyfalog.debug("Refresh fit for fit ID: {0}", fitID) if fitID is None: return None fit = eos.db.getFit(fitID) eos.db.commit() self.recalc(fit) self.fill(fit) def recalc(self, fit): if isinstance(fit, int): fit = self.getFit(fit) start_time = time() pyfalog.info("=" * 10 + "recalc: {0}" + "=" * 10, fit.name) fit.factorReload = self.serviceFittingOptions["useGlobalForceReload"] fit.clear() fit.calculateModifiedAttributes() pyfalog.info("=" * 10 + "recalc time: " + str(time() - start_time) + "=" * 10) def fill(self, fit): if isinstance(fit, int): fit = self.getFit(fit) return fit.fill() ================================================ FILE: service/implantSet.py ================================================ # ============================================================================= # Copyright (C) 2016 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import copy import eos.db from service.market import Market from eos.saveddata.implant import Implant as es_Implant from eos.saveddata.implantSet import ImplantSet as es_ImplantSet class ImportError(Exception): pass class ImplantSets: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = ImplantSets() return cls.instance @staticmethod def getImplantSetList(): return eos.db.getImplantSetList(None) @staticmethod def getImplantSet(name): return eos.db.getImplantSet(name) @staticmethod def getImplants(setID): return eos.db.getImplantSet(setID).implants @staticmethod def addImplants(setID, *itemIDs): implant_set = eos.db.getImplantSet(setID) for itemID in itemIDs: implant = es_Implant(eos.db.getItem(itemID)) implant_set.implants.makeRoom(implant) implant_set.implants.append(implant) eos.db.commit() @staticmethod def removeImplant(setID, implant): eos.db.getImplantSet(setID).implants.remove(implant) eos.db.commit() @staticmethod def newSet(name): implant_set = es_ImplantSet() implant_set.name = name eos.db.save(implant_set) return implant_set @staticmethod def renameSet(implant_set, newName): implant_set.name = newName eos.db.save(implant_set) @staticmethod def deleteSet(implant_set): eos.db.remove(implant_set) @staticmethod def copySet(implant_set): newS = copy.deepcopy(implant_set) eos.db.save(newS) return newS @staticmethod def saveChanges(implant_set): eos.db.save(implant_set) def importSets(self, text): sMkt = Market.getInstance() lines = text.splitlines() newSets = [] errors = 0 current = None lookup = {} for i, line in enumerate(lines): line = line.strip() try: if line == '' or line[0] == "#": # comments / empty string continue if line[:1] == "[" and line[-1:] == "]": current = es_ImplantSet(line[1:-1]) newSets.append(current) else: item = sMkt.getItem(line) current.implants.append(es_Implant(item)) except (KeyboardInterrupt, SystemExit): raise except: errors += 1 continue for implant_set in self.getImplantSetList(): lookup[implant_set.name] = implant_set for implant_set in newSets: if implant_set.name in lookup: match = lookup[implant_set.name] for implant in implant_set.implants: match.implants.append(es_Implant(implant.item)) else: eos.db.save(implant_set) eos.db.commit() lenImports = len(newSets) if lenImports == 0: raise ImportError("No patterns found for import") if errors > 0: raise ImportError("%d sets imported from clipboard; %d errors" % (lenImports, errors)) def exportSets(self): patterns = self.getImplantSetList() patterns.sort(key=lambda p: p.name) return es_ImplantSet.exportSets(*patterns) ================================================ FILE: service/jargon/__init__.py ================================================ # ============================================================================= # Copyright (C) 2018 Filip Sufitchi # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from .jargon import Jargon from .loader import JargonLoader ================================================ FILE: service/jargon/defaults.yaml ================================================ # Default jargon definitions # Generic acronyms t1: - 't1' - ' I$' t2: - 't2' - ' II$' 1: - '1' - ' I$' 2: - '2' - ' II$' 3: - '3' - ' III$' 4: - '4' - ' IV$' mk: - 'mk' - 'mark' std: - 'std' - 'standard' scan: - 'scan' - 'probe launcher' scanner: - 'scanner' - 'probe launcher' # Sizes sml: - 'sml' - 'small' hvy: - 'hvy' - 'heavy' lrg: - 'lrg' - 'large' xl: - 'xl' - 'x-large' # British vs american language fixes armour: - 'armour' - 'armor' neutraliser: # Copied entry from "Neutralization" section - 'neutraliser' - 'neutralizer' - 'neutralization' - 'ev-\d00' stabiliser: - 'stabiliser' - 'stabilizer' energised: - 'energised' - 'energized' economiser: - 'economiser' - 'economizer' # Damage types em: - 'em' - 'mjolnir (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'electromagnetic' # Used in doomsday names - 'electron bomb' # Used in bomb names therm: - 'therm' - 'inferno (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'plasma smartbomb' # Used in smartbomb names - 'scorch bomb' # Used in bomb names thermal: - 'thermal' - 'inferno (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'plasma smartbomb' # Used in smartbomb names - 'scorch bomb' # Used in bomb names kin: - 'kin' - 'scourge (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'concussion bomb' # Used in bomb and smartbomb names kinet: - 'kinet' - 'scourge (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'concussion bomb' # Used in bomb and smartbomb names kinetic: - 'kinetic' - 'scourge (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'concussion bomb' # Used in bomb and smartbomb names exp: - 'exp' - 'nova (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'proton smartbomb' # Used in smartbomb names - 'shrapnel bomb' # Used in bomb names expl: - 'expl' - 'nova (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'proton smartbomb' # Used in smartbomb names - 'shrapnel bomb' # Used in bomb names explo: - 'explo' - 'nova (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'proton smartbomb' # Used in smartbomb names - 'shrapnel bomb' # Used in bomb names explosive: - 'explosive' - 'nova (.+ )?(missile|rocket|torpedo)' # Used in missile names - 'proton smartbomb' # Used in smartbomb names - 'shrapnel bomb' # Used in bomb names # Races cn: - '(^| )cn' # Checking only beginning of a word to remove unwanted spam - 'caldari navy' rf: - '(^| )rf' # Checking only beginning of a word to remove unwanted spam - 'republic fleet' in: - '(^| )in' # Checking only beginning of a word to remove unwanted spam - 'imperial navy' fn: - '(^| )fn' # Checking only beginning of a word to remove unwanted spam - 'federation navy' ts: - '(^| )ts' # Checking only beginning of a word to remove unwanted spam - 'true sansha' - 'titanium sabot' db: - '(^| )db' # Checking only beginning of a word to remove unwanted spam - 'dark blood' dg: - '(^| )dg' # Checking only beginning of a word to remove unwanted spam - 'dread guristas' ss: - '(^| )ss' # Checking only beginning of a word to remove unwanted spam - 'shadow serpentis' # Weapons ac: - 'ac' - 'autocannon' arty: - 'arty' - 'artillery' ml: - 'ml' - 'missile (launcher|bay)' rl: - 'rl' - 'rocket (launcher|bay)' lml: - 'lml' - '(?. # ============================================================================= class Jargon: def __init__(self, rawdata: dict): self._rawdata = rawdata # copy the data to lowercase keys, ignore blank keys self._data = {str(k).lower(): v for k, v in rawdata.items() if k} def get(self, term: str) -> str: return self._data.get(term.lower()) def get_rawdata(self) -> dict: return self._rawdata def apply(self, query_words): parts = [] for word in query_words: replacements = self.get(word) if replacements: parts.append('({})'.format('|'.join(replacements))) else: parts.append(word) return parts ================================================ FILE: service/jargon/loader.py ================================================ # ============================================================================= # Copyright (C) 2018 Filip Sufitchi # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import os import config import yaml from .jargon import Jargon from .resources import DEFAULT_DATA, DEFAULT_HEADER USER_JARGON_PATH = os.path.join(config.savePath, 'user_jargon.yaml') if config.savePath is not None else None class JargonLoader: def __init__(self): self._user_jargon_mtime = 0 # type: int self._jargon = None # type: Jargon def get_jargon(self) -> Jargon: if self._is_stale(): self._load_jargon() return self._jargon def _is_stale(self): return (not self._jargon or not self._user_jargon_mtime or self.jargon_mtime != self._get_user_jargon_mtime()) def _load_jargon(self): jargondata = yaml.load(DEFAULT_DATA, Loader=yaml.SafeLoader) if USER_JARGON_PATH is not None and os.path.isfile(USER_JARGON_PATH): with open(USER_JARGON_PATH) as f: userdata = yaml.load(f, Loader=yaml.SafeLoader) if userdata: jargondata.update(userdata) self.jargon_mtime = self._get_user_jargon_mtime() self._jargon = Jargon(jargondata) def _get_user_jargon_mtime(self) -> int: if USER_JARGON_PATH is None or not os.path.isfile(USER_JARGON_PATH): return 0 return os.stat(USER_JARGON_PATH).st_mtime @staticmethod def init_user_jargon(jargon_path): if not os.path.exists(jargon_path): with open(jargon_path, 'w') as f: f.write(DEFAULT_HEADER) f.write('\n\n') _instance = None @staticmethod def instance(): if not JargonLoader._instance: JargonLoader._instance = JargonLoader() return JargonLoader._instance if USER_JARGON_PATH is not None: JargonLoader.init_user_jargon(USER_JARGON_PATH) ================================================ FILE: service/jargon/resources.py ================================================ # ============================================================================= # Copyright (C) 2018 Filip Sufitchi # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from importlib.resources import files PACKAGE_NAME = __name__.rsplit(".", maxsplit=1)[0] DEFAULT_DATA = files(PACKAGE_NAME).joinpath('defaults.yaml').open('r', encoding='utf8').read() DEFAULT_HEADER = files(PACKAGE_NAME).joinpath('header.yaml').open('r', encoding='utf8').read() ================================================ FILE: service/market.py ================================================ # =============================================================================== # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # =============================================================================== import queue import re import threading from collections import OrderedDict from itertools import chain # noinspection PyPackageRequirements import wx from logbook import Logger from sqlalchemy.sql import or_ import config import eos.db from eos.gamedata import Category as types_Category, Group as types_Group, Item as types_Item, MarketGroup as types_MarketGroup, \ MetaGroup as types_MetaGroup from service import conversions from service.jargon import JargonLoader from service.settings import SettingsProvider from utils.cjk import isStringCjk pyfalog = Logger(__name__) _t = wx.GetTranslation # Event which tells threads dependent on Market that it's initialized mktRdy = threading.Event() class RegexTokenizationError(Exception): pass class ShipBrowserWorkerThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) pyfalog.debug("Initialize ShipBrowserWorkerThread.") self.name = "ShipBrowser" self.running = True def run(self): self.queue = queue.Queue() self.cache = {} # Wait for full market initialization (otherwise there's high risky # this thread will attempt to init Market which is already being inited) mktRdy.wait(5) self.processRequests() def processRequests(self): queue = self.queue cache = self.cache sMkt = Market.getInstance() while True: if not self.running: break try: id_, callback = queue.get() set_ = cache.get(id_) if set_ is None: set_ = sMkt.getShipList(id_) cache[id_] = set_ wx.CallAfter(callback, (id_, set_)) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Callback failed.") pyfalog.critical(e) finally: try: queue.task_done() except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Queue task done failed.") pyfalog.critical(e) def stop(self): self.running = False class SearchWorkerThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.name = "SearchWorker" self.jargonLoader = JargonLoader.instance() # load the jargon while in an out-of-thread context, to spot any problems while in the main thread self.jargonLoader.get_jargon() self.jargonLoader.get_jargon().apply('test string'.split()) self.running = True def run(self): self.cv = threading.Condition() self.searchRequest = None self.processSearches() def processSearches(self): cv = self.cv while True: if not self.running: break cv.acquire() while self.searchRequest is None: cv.wait() request, callback, filterName = self.searchRequest self.searchRequest = None cv.release() sMkt = Market.getInstance() if filterName == 'market': # Rely on category data provided by eos as we don't hardcode them much in service filters = [or_( types_Category.name.in_(sMkt.SEARCH_CATEGORIES), types_Group.name.in_(sMkt.SEARCH_GROUPS))] # Used in implant editor elif filterName == 'implants': filters = [types_Category.name == 'Implant'] # Actually not everything, just market search + ships elif filterName == 'everything': filters = [ or_( types_Category.name.in_(sMkt.FIT_CATEGORIES), types_Group.name.in_(sMkt.FIT_GROUPS)), or_( types_Category.name.in_(sMkt.SEARCH_CATEGORIES), types_Group.name.in_(sMkt.SEARCH_GROUPS))] else: filters = [None] if request.strip().lower().startswith('re:'): requestTokens = self._prepareRequestRegex(request[3:]) else: requestTokens = self._prepareRequestNormal(request) requestTokens = self.jargonLoader.get_jargon().apply(requestTokens) all_results = set() joinedTokens = ' '.join(requestTokens) if ( (isStringCjk(joinedTokens) and len(joinedTokens) >= config.minItemSearchLengthCjk) or len(joinedTokens) >= config.minItemSearchLength ): for filter_ in filters: filtered_results = eos.db.searchItemsRegex( requestTokens, where=filter_, join=(types_Item.group, types_Group.category), eager=("group.category", "metaGroup")) all_results.update(filtered_results) item_IDs = set() # Return only published items, consult with Market service this time for item in all_results: if sMkt.getPublicityByItem(item): item_IDs.add(item.ID) wx.CallAfter(callback, sorted(item_IDs)) def scheduleSearch(self, text, callback, filterName=None): self.cv.acquire() self.searchRequest = (text, callback, filterName) self.cv.notify() self.cv.release() def stop(self): self.running = False def _prepareRequestNormal(self, request): # Escape regexp-specific symbols, and un-escape whitespaces request = re.escape(request) request = re.sub(r'\\(?P\s+)', r'\g', request) # Imitate wildcard search request = re.sub(r'\\\*', r'\\w*', request) request = re.sub(r'\\\?', r'\\w?', request) tokens = request.split() return tokens def _prepareRequestRegex(self, request): roundLvl = 0 squareLvl = 0 nextEscaped = False tokens = [] currentToken = '' def verifyErrors(): if squareLvl not in (0, 1): raise RegexTokenizationError('Square braces level is {}'.format(squareLvl)) if roundLvl < 0: raise RegexTokenizationError('Round braces level is {}'.format(roundLvl)) try: for char in request: thisEscaped = nextEscaped nextEscaped = False if thisEscaped: currentToken += char elif char == '\\': currentToken += char nextEscaped = True elif char == '[': currentToken += char squareLvl += 1 elif char == ']': currentToken += char squareLvl -= 1 elif char == '(' and squareLvl == 0: currentToken += char roundLvl += 1 elif char == ')' and squareLvl == 0: currentToken += char roundLvl -= 1 elif char.isspace() and roundLvl == squareLvl == 0: if currentToken: tokens.append(currentToken) currentToken = '' else: currentToken += char verifyErrors() else: if currentToken: tokens.append(currentToken) # Treat request as normal string if regex tokenization fails except RegexTokenizationError: tokens = self._prepareRequestNormal(request) return tokens class Market: instance = None def __init__(self): # Init recently used module storage serviceMarketRecentlyUsedModules = {"pyfaMarketRecentlyUsedModules": []} self.serviceMarketRecentlyUsedModules = SettingsProvider.getInstance().getSettings( "pyfaMarketRecentlyUsedModules", serviceMarketRecentlyUsedModules) # Thread which handles search self.searchWorkerThread = SearchWorkerThread() self.searchWorkerThread.daemon = True self.searchWorkerThread.start() # Ship browser helper thread self.shipBrowserWorkerThread = ShipBrowserWorkerThread() self.shipBrowserWorkerThread.daemon = True self.shipBrowserWorkerThread.start() # Items' group overrides self.customGroups = set() # Limited edition ships self.les_grp = types_Group() self.les_grp.ID = -1 self.les_grp.name = "Limited Issue Ships" self.les_grp.displayName = _t("Limited Issue Ships") self.les_grp.published = True ships = self.getCategory("Ship") self.les_grp.category = ships self.les_grp.categoryID = ships.ID self.les_grp.description = "" self.les_grp.icon = None self.ITEMS_FORCEGROUP = { "Capsule" : self.getGroup("Shuttle"), "Opux Luxury Yacht" : self.les_grp, # One of those is wedding present at CCP fanfest, another was hijacked from ISD guy during an event "Silver Magnate" : self.les_grp, # Amarr Championship prize "Gold Magnate" : self.les_grp, # Amarr Championship prize "Armageddon Imperial Issue" : self.les_grp, # Amarr Championship prize "Apocalypse Imperial Issue" : self.les_grp, # Amarr Championship prize "Guardian-Vexor" : self.les_grp, # Illegal rewards for the Gallente Frontier Tour Lines event arc "Megathron Federate Issue" : self.les_grp, # Reward during Crielere event "Raven State Issue" : self.les_grp, # AT4 prize "Tempest Tribal Issue" : self.les_grp, # AT4 prize "Apotheosis" : self.les_grp, # 5th EVE anniversary present "Zephyr" : self.les_grp, # 2010 new year gift "Primae" : self.les_grp, # Promotion of planetary interaction "Council Diplomatic Shuttle" : self.les_grp, # CSM X celebration "Freki" : self.les_grp, # AT7 prize "Mimir" : self.les_grp, # AT7 prize "Utu" : self.les_grp, # AT8 prize "Adrestia" : self.les_grp, # AT8 prize "Echelon" : self.les_grp, # 2011 new year gift "Malice" : self.les_grp, # AT9 prize "Vangel" : self.les_grp, # AT9 prize "Cambion" : self.les_grp, # AT10 prize "Etana" : self.les_grp, # AT10 prize "Chremoas" : self.les_grp, # AT11 prize :( "Moracha" : self.les_grp, # AT11 prize "Stratios Emergency Responder": self.les_grp, # Issued for Somer Blink lottery "Miasmos Quafe Ultra Edition" : self.les_grp, # Gift to people who purchased FF HD stream "InterBus Shuttle" : self.les_grp, "Leopard" : self.les_grp, # 2013 new year gift "Whiptail" : self.les_grp, # AT12 prize "Chameleon" : self.les_grp, # AT12 prize "Victorieux Luxury Yacht" : self.les_grp, # Worlds Collide prize \o/ chinese getting owned "Imp" : self.les_grp, # AT13 prize "Fiend" : self.les_grp, # AT13 prize "Caedes" : self.les_grp, # AT14 prize "Rabisu" : self.les_grp, # AT14 prize "Victor" : self.les_grp, # AT15 prize "Virtuoso" : self.les_grp, # AT15 prize "Hydra" : self.les_grp, # AT16 prize "Tiamat" : self.les_grp, # AT16 prize "Raiju" : self.les_grp, # AT17 prize "Laelaps" : self.les_grp, # AT17 prize "Boobook" : self.les_grp, # 19th EVE anniversary gift "Geri" : self.les_grp, # AT18 prize "Bestla" : self.les_grp, # AT18 prize "Metamorphosis" : self.les_grp, # Seems to be anniversary gift "Shapash" : self.les_grp, # AT19 prize "Cybele" : self.les_grp, # AT19 prize "Sidewinder" : self.les_grp, # AT20 prize "Cobra" : self.les_grp, # AT20 prize "Python" : self.les_grp, # AT20 prize "Skua" : self.les_grp, # AT21 prize "Anhinga" : self.les_grp, # AT21 prize } self.ITEMS_FORCEGROUP_R = self.__makeRevDict(self.ITEMS_FORCEGROUP) for grp, itemNames in self.ITEMS_FORCEGROUP_R.items(): grp.addItems = list(self.getItem(i) for i in itemNames) self.customGroups.add(self.les_grp) # List of items which are forcibly published or hidden self.ITEMS_FORCEPUBLISHED = { "Data Subverter I" : False, # Not used in EVE, probably will appear with Dust link "QA Cross Protocol Analyzer" : False, # QA modules used by CCP internally "QA Damage Module" : False, "QA ECCM" : False, "QA Immunity Module" : False, "QA Multiship Module - 10 Players" : False, "QA Multiship Module - 20 Players" : False, "QA Multiship Module - 40 Players" : False, "QA Multiship Module - 5 Players" : False, "QA Remote Armor Repair System - 5 Players": False, "QA Shield Transporter - 5 Players" : False, "Goru's Shuttle" : False, "Guristas Shuttle" : False, "Mobile Decoy Unit" : False, # Seems to be left over test mod for deployables "Tournament Micro Jump Unit" : False, # Normally seen only on tournament arenas } # do not publish ships that we convert for name in conversions.packs['skinnedShips']: self.ITEMS_FORCEPUBLISHED[name] = False if config.debug: # Publish Tactical Dessy Modes if in debug # Cannot use GROUPS_FORCEPUBLISHED as this does not force items # within group to be published, but rather for the group itself # to show up on ship list group = self.getGroup("Ship Modifiers", eager="items") for item in group.items: self.ITEMS_FORCEPUBLISHED[item.name] = True # List of groups which are forcibly published self.GROUPS_FORCEPUBLISHED = { "Prototype Exploration Ship": False } # We moved the only ship from this group to other group anyway # Dictionary of items with forced meta groups, uses following format: # Item name: (metagroup name, parent type name) self.ITEMS_FORCEDMETAGROUP = { "'Habitat' Miner I": ("Storyline", "Miner I"), "'Wild' Miner I": ("Storyline", "Miner I"), "Khanid Navy Torpedo Launcher": ("Faction", "Torpedo Launcher I"), "Dread Guristas Standup Variable Spectrum ECM": ("Structure Faction", "Standup Variable Spectrum ECM I"), "Dark Blood Standup Heavy Energy Neutralizer": ("Structure Faction", "Standup Heavy Energy Neutralizer I")} # Parent type name: set(item names) self.ITEMS_FORCEDMETAGROUP_R = {} for item, value in list(self.ITEMS_FORCEDMETAGROUP.items()): parent = value[1] if parent not in self.ITEMS_FORCEDMETAGROUP_R: self.ITEMS_FORCEDMETAGROUP_R[parent] = set() self.ITEMS_FORCEDMETAGROUP_R[parent].add(item) # Dictionary of items with forced market group (service assumes they have no # market group assigned in db, otherwise they'll appear in both original and forced groups) self.ITEMS_FORCEDMARKETGROUP = { "Advanced Cerebral Accelerator" : 2487, # Implants & Boosters > Booster > Cerebral Accelerators "Civilian Hobgoblin" : 837, # Drones > Combat Drones > Light Scout Drones "Civilian Light Missile Launcher" : 640, # Ship Equipment > Turrets & Launchers > Missile Launchers > Light Missile Launchers "Civilian Scourge Light Missile" : 920, # Ammunition & Charges > Missiles > Light Missiles > Standard Light Missiles "Civilian Small Remote Armor Repairer" : 1059, # Ship Equipment > Hull & Armor > Remote Armor Repairers > Small "Civilian Small Remote Shield Booster" : 603, # Ship Equipment > Shield > Remote Shield Boosters > Small "Hardwiring - Zainou 'Sharpshooter' ZMX10" : 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Hardwiring - Zainou 'Sharpshooter' ZMX100" : 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Hardwiring - Zainou 'Sharpshooter' ZMX1000": 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Hardwiring - Zainou 'Sharpshooter' ZMX11" : 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Hardwiring - Zainou 'Sharpshooter' ZMX110" : 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Hardwiring - Zainou 'Sharpshooter' ZMX1100": 1493, # Implants & Boosters > Implants > Skill Hardwiring > Missile Implants > Implant Slot 06 "Prototype Cerebral Accelerator" : 2487, # Implants & Boosters > Booster > Cerebral Accelerators "Prototype Iris Probe Launcher" : 712, # Ship Equipment > Scanning Equipment > Scan Probe Launchers "Standard Cerebral Accelerator" : 2487, # Implants & Boosters > Booster > Cerebral Accelerators } self.ITEMS_FORCEDMARKETGROUP_R = self.__makeRevDict(self.ITEMS_FORCEDMARKETGROUP) self.FORCEDMARKETGROUP = { 685: False, # Ship Equipment > Electronic Warfare > ECCM 681: False, # Ship Equipment > Electronic Warfare > Sensor Backup Arrays 1639: False, # Ship Equipment > Fleet Assistance > Command Processors 2527: True, # Ship Equipment > Hull & Armor > Mutadaptive Remote Armor Repairers - has hasTypes set to 1 while actually having no types } # Misc definitions # 0 is for items w/o meta group self.META_MAP = OrderedDict([("faction", frozenset((4, 3, 52))), ("complex", frozenset((6,))), ("officer", frozenset((5,)))]) nonNormalMetas = set(chain(*self.META_MAP.values())) self.META_MAP["normal"] = frozenset((0, *(mg.ID for mg in eos.db.getMetaGroups() if mg.ID not in nonNormalMetas))) self.META_MAP.move_to_end("normal", last=False) self.META_MAP_REVERSE = {sv: k for k, v in self.META_MAP.items() for sv in v} self.META_MAP_REVERSE_GROUPED = {} i = 0 for mgids in self.META_MAP.values(): for mgid in mgids: self.META_MAP_REVERSE_GROUPED[mgid] = i i += 1 self.META_MAP_REVERSE_INDICES = self.__makeReverseMetaMapIndices() self.SEARCH_CATEGORIES = ( "Drone", "Module", "Subsystem", "Charge", "Implant", "Deployable", "Fighter", "Structure", "Structure Module", ) self.SEARCH_GROUPS = ( "Ice Product", "Cargo Container", "Secure Cargo Container", "Audit Log Secure Container", "Freight Container", "Jump Filaments", "Triglavian Space Filaments" ) self.ROOT_MARKET_GROUPS = (9, # Ship Equipment 1111, # Rigs 157, # Drones 11, # Ammunition & Charges 1112, # Subsystems 24, # Implants & Boosters 404, # Deployable Structures 2202, # Structure Equipment 2203, # Structure Modifications 2456 # Filaments ) self.SHOWN_MARKET_GROUPS = eos.db.getMarketTreeNodeIds(self.ROOT_MARKET_GROUPS) self.FIT_CATEGORIES = ['Ship'] self.FIT_GROUPS = ['Citadel', 'Engineering Complex', 'Refinery'] # Tell other threads that Market is at their service mktRdy.set() @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Market() return cls.instance @staticmethod def __makeRevDict(orig): """Creates reverse dictionary""" rev = {} for item, value in list(orig.items()): if value not in rev: rev[value] = set() rev[value].add(item) return rev def __makeReverseMetaMapIndices(self): revmap = {} i = 0 for mgids in self.META_MAP.values(): for mgid in mgids: revmap[mgid] = i i += 1 return revmap @staticmethod def getItem(identity, *args, **kwargs): """Get item by its ID or name""" try: if isinstance(identity, types_Item): item = identity elif isinstance(identity, int): item = eos.db.getItem(identity, *args, **kwargs) elif isinstance(identity, str): # We normally lookup with string when we are using import/export # features. Check against overrides identity = conversions.all.get(identity, identity) item = eos.db.getItem(identity, *args, **kwargs) elif isinstance(identity, float): id_ = int(identity) item = eos.db.getItem(id_, *args, **kwargs) else: raise TypeError("Need Item object, integer, float or string as argument") except (KeyboardInterrupt, SystemExit): raise except: pyfalog.error("Could not get item: {0}", identity) raise return item @staticmethod def getItems(itemIDs, eager=None): items = eos.db.getItems(itemIDs, eager=eager) return items def getGroup(self, identity, *args, **kwargs): """Get group by its ID or name""" if isinstance(identity, types_Group): return identity elif isinstance(identity, (int, float, str)): if isinstance(identity, float): identity = int(identity) # Check custom groups for cgrp in self.customGroups: # During first comparison we need exact int, not float for matching if cgrp.ID == identity or cgrp.name == identity: # Return first match return cgrp # Return eos group if everything else returned nothing return eos.db.getGroup(identity, *args, **kwargs) else: raise TypeError("Need Group object, integer, float or string as argument") @staticmethod def getCategory(identity, *args, **kwargs): """Get category by its ID or name""" if isinstance(identity, types_Category): category = identity elif isinstance(identity, (int, str)): category = eos.db.getCategory(identity, *args, **kwargs) elif isinstance(identity, float): id_ = int(identity) category = eos.db.getCategory(id_, *args, **kwargs) else: raise TypeError("Need Category object, integer, float or string as argument") return category @staticmethod def getMetaGroup(identity, *args, **kwargs): """Get meta group by its ID or name""" if isinstance(identity, types_MetaGroup): metaGroup = identity elif isinstance(identity, (int, str)): metaGroup = eos.db.getMetaGroup(identity, *args, **kwargs) elif isinstance(identity, float): id_ = int(identity) metaGroup = eos.db.getMetaGroup(id_, *args, **kwargs) else: raise TypeError("Need MetaGroup object, integer, float or string as argument") return metaGroup @staticmethod def getMarketGroup(identity, *args, **kwargs): """Get market group by its ID""" if isinstance(identity, types_MarketGroup): marketGroup = identity elif isinstance(identity, (int, float)): id_ = int(identity) marketGroup = eos.db.getMarketGroup(id_, *args, **kwargs) else: raise TypeError("Need MarketGroup object, integer or float as argument") return marketGroup def getGroupByItem(self, item): """Get group by item""" if item.typeName in self.ITEMS_FORCEGROUP: group = self.ITEMS_FORCEGROUP[item.typeName] else: group = item.group return group def getCategoryByItem(self, item): """Get category by item""" grp = self.getGroupByItem(item) cat = grp.category return cat def getMetaGroupByItem(self, item): """Get meta group by item""" # Check if item is in forced metagroup map if item.name in self.ITEMS_FORCEDMETAGROUP: metaGroupName = self.ITEMS_FORCEDMETAGROUP[item.name][0] metaGroup = eos.db.getMetaGroup(metaGroupName) # If no forced meta group is provided, try to use item's # meta group if any else: metaGroup = item.metaGroup return metaGroup def getMetaGroupIdByItem(self, item, fallback=0): """Get meta group ID by item""" id_ = getattr(self.getMetaGroupByItem(item), "ID", fallback) return id_ def getMarketGroupByItem(self, item, parentcheck=True): """Get market group by item, its ID or name""" # Check if we force market group for given item if item.name in self.ITEMS_FORCEDMARKETGROUP: mgid = self.ITEMS_FORCEDMARKETGROUP[item.name] if mgid in self.SHOWN_MARKET_GROUPS: return self.getMarketGroup(mgid) else: return None # Check if item itself has market group elif item.marketGroupID: if item.marketGroupID in self.SHOWN_MARKET_GROUPS: return item.marketGroup else: return None elif parentcheck: # If item doesn't have marketgroup, check if it has parent # item and use its market group parent = self.getParentItemByItem(item, selfparent=False) if parent and parent.marketGroupID in self.SHOWN_MARKET_GROUPS: return parent.marketGroup else: return None else: return None def getParentItemByItem(self, item, selfparent=True): """Get parent item by item""" parent = None if item.name in self.ITEMS_FORCEDMETAGROUP: parentName = self.ITEMS_FORCEDMETAGROUP[item.name][1] parent = self.getItem(parentName) if parent is None: parent = item.varParent # Consider self as parent if item has no parent in database if parent is None and selfparent is True: parent = item return parent def getVariationsByItems(self, items, alreadyparent=False): """Get item variations by item, its ID or name""" # Set for IDs of parent items parents = set() # Set-container for variables variations = set() variations_limiter = set() # if item belongs to these categories, use their group to find "variations" categories = ['Drone', 'Fighter', 'Implant'] for item in items: if item.category.ID == 20 and item.group.ID != 303: # Implants not Boosters implant_remove_list = set() implant_remove_list.add("Low-Grade ") implant_remove_list.add("Low-grade ") implant_remove_list.add("Mid-Grade ") implant_remove_list.add("Mid-grade ") implant_remove_list.add("High-Grade ") implant_remove_list.add("High-grade ") implant_remove_list.add("Limited ") implant_remove_list.add(" - Advanced") implant_remove_list.add(" - Basic") implant_remove_list.add(" - Elite") implant_remove_list.add(" - Improved") implant_remove_list.add(" - Standard") for implant_prefix in ("-6", "-7", "-8", "-9", "-10"): for i in range(50): implant_remove_list.add(implant_prefix + str("%02d" % i)) for text_to_remove in implant_remove_list: if text_to_remove in item.name: variations_limiter.add(item.name.replace(text_to_remove, "")) # Get parent item if alreadyparent is False: parent = self.getParentItemByItem(item) else: parent = item # Combine both in the same set parents.add(parent) # Check for overrides and add them if any if parent.name in self.ITEMS_FORCEDMETAGROUP_R: for _item in self.ITEMS_FORCEDMETAGROUP_R[parent.name]: i = self.getItem(_item) if i: variations.add(i) # Add all parents to variations set variations.update(parents) # Add all variations of parents to the set parentids = tuple(item.ID for item in parents) groupids = tuple(item.group.ID for item in parents if item.category.name in categories) variations_list = eos.db.getVariations(parentids, groupids) if variations_limiter: for limit in variations_limiter: trimmed_variations_list = [variation_item for variation_item in variations_list if limit in variation_item.name] if trimmed_variations_list: variations_list = trimmed_variations_list # If the items are boosters then filter variations to only include boosters for the same slot. BOOSTER_GROUP_ID = 303 if all(map(lambda i: i.group.ID == BOOSTER_GROUP_ID, items)) and len(items) > 0: # 'boosterness' is the database's attribute name for Booster Slot reqSlot = next(items.__iter__()).getAttribute('boosterness') # If the item and it's variation both have a marketGroupID it should match for the variation to be considered valid. marketGroupID = [next(filter(None, map(lambda i: i.marketGroupID, items)), None), None] matchSlotAndMktGrpID = lambda v: v.getAttribute('boosterness') == reqSlot and v.marketGroupID in marketGroupID variations_list = list(filter(matchSlotAndMktGrpID, variations_list)) variations.update(variations_list) return variations def getGroupsByCategory(self, cat): """Get groups from given category""" groups = set([grp for grp in cat.groups if self.getPublicityByGroup(grp)]) return groups @staticmethod def getMarketGroupChildren(mg): """Get the children marketGroups of marketGroup.""" children = set() for child in mg.children: children.add(child) return children def getItemsByGroup(self, group): """Get items assigned to group""" # Return only public items; also, filter out items # which were forcibly set to other groups groupItems = set(group.items) if hasattr(group, 'addItems'): groupItems.update(group.addItems) items = set([ item for item in groupItems if self.getPublicityByItem(item) and self.getGroupByItem(item) == group]) return items def getItemsByMarketGroup(self, mg, vars_=True): """Get items in the given market group""" result = set() # Get items from eos market group baseitms = set(mg.items) # Add hardcoded items to set if mg.ID in self.ITEMS_FORCEDMARKETGROUP_R: forceditms = set(self.getItem(itmn) for itmn in self.ITEMS_FORCEDMARKETGROUP_R[mg.ID]) baseitms.update(forceditms) if vars_: parents = set() for item in baseitms: # Add one of the base market group items to result result.add(item) parent = self.getParentItemByItem(item, selfparent=False) # If item has no parent, it's base item (or at least should be) if parent is None: parents.add(item) # Fetch variations only for parent items variations = self.getVariationsByItems(parents, alreadyparent=True) for variation in variations: # Exclude items with their own explicitly defined market groups if self.getMarketGroupByItem(variation, parentcheck=False) is None: result.add(variation) else: result = baseitms # Get rid of unpublished items result = set([item_ for item_ in result if self.getPublicityByItem(item_)]) return result def marketGroupHasTypesCheck(self, mg): """If market group has any items, return true""" if mg and mg.ID in self.ITEMS_FORCEDMARKETGROUP_R: # This shouldn't occur normally but makes errors more mild when ITEMS_FORCEDMARKETGROUP is outdated. if len(mg.children) > 0 and len(mg.items) == 0: pyfalog.error(("Market group \"{0}\" contains no items and has children. " "ITEMS_FORCEDMARKETGROUP is likely outdated and will need to be " "updated for {1} to display correctly.").format(mg, self.ITEMS_FORCEDMARKETGROUP_R[mg.ID])) return False return True elif len(mg.items) > 0 and len(mg.children) == 0: return True else: return False def marketGroupValidityCheck(self, mg): """Check market group validity""" # The only known case when group can be invalid is # when it's declared to have types, but it doesn't contain anything if mg.ID in self.FORCEDMARKETGROUP: return self.FORCEDMARKETGROUP[mg.ID] if mg.hasTypes and not self.marketGroupHasTypesCheck(mg): return False else: return True def getIconByMarketGroup(self, mg): """Return icon associated to marketgroup""" if mg.iconID: return mg.iconID else: while mg and not mg.hasTypes: mg = mg.parent if not mg: return "" elif self.marketGroupHasTypesCheck(mg): # Do not request variations to make process faster # Pick random item and use its icon items = self.getItemsByMarketGroup(mg, vars_=False) try: item = items.pop() except KeyError: return "" return item.iconID if getattr(item, "icon", None) else "" elif self.getMarketGroupChildren(mg) > 0: kids = self.getMarketGroupChildren(mg) mktGroups = self.getIconByMarketGroup(kids) size = len(mktGroups) return mktGroups.pop() if size > 0 else "" else: return "" def getPublicityByItem(self, item): """Return if an item is published""" if item.typeName in self.ITEMS_FORCEPUBLISHED: pub = self.ITEMS_FORCEPUBLISHED[item.typeName] else: pub = item.published return pub def getPublicityByGroup(self, group): """Return if an group is published""" if group.name in self.GROUPS_FORCEPUBLISHED: pub = self.GROUPS_FORCEPUBLISHED[group.name] else: pub = group.published return pub def getMarketRoot(self): """ Get the root of the market tree. Returns a list, where each element is a tuple containing: the ID, the name and the icon of the group """ root = set() for id_ in self.ROOT_MARKET_GROUPS: mg = self.getMarketGroup(id_) root.add(mg) return root def getShipRoot(self): cat1 = self.getCategory("Ship") cat2 = self.getCategory("Structure") root = set(self.getGroupsByCategory(cat1) | self.getGroupsByCategory(cat2)) return root def getShipList(self, grpid): """Get ships for given group id""" grp = self.getGroup(grpid, eager=("items", "items.group", "items.marketGroup")) ships = self.getItemsByGroup(grp) return ships def getShipListDelayed(self, id_, callback): """Background version of getShipList""" self.shipBrowserWorkerThread.queue.put((id_, callback)) def searchShips(self, name): """Find ships according to given text pattern""" filter_ = types_Category.name.in_(["Ship", "Structure"]) results = eos.db.searchItems(name, where=filter_, join=(types_Item.group, types_Group.category), eager=("group.category", "metaGroup")) ships = set() for item in results: if self.getPublicityByItem(item): ships.add(item) return ships def searchItems(self, name, callback, filterName=None): """Find items according to given text pattern""" self.searchWorkerThread.scheduleSearch(name, callback, filterName) @staticmethod def getItemsWithOverrides(): overrides = eos.db.getAllOverrides() items = set() for x in overrides: if x.item is None: eos.db.saveddata_session.delete(x) eos.db.commit() else: items.add(x.item) return list(items) @staticmethod def directAttrRequest(items, attribs): try: itemIDs = tuple([i.ID for i in items]) except TypeError: itemIDs = (items.ID,) try: attrIDs = tuple([i.ID for i in attribs]) except TypeError: attrIDs = (attribs.ID,) info = {} for itemID, typeID, val in eos.db.directAttributeRequest(itemIDs, attrIDs): info[itemID] = val return info def getImplantTree(self): """Return implant market group children""" img = self.getMarketGroup(27) return self.getMarketGroupChildren(img) def filterItemsByMeta(self, items, metas): """Filter items by meta lvl""" filtered = [item for item in items if self.getMetaGroupIdByItem(item) in metas] return filtered def getReplacements(self, identity): item = self.getItem(identity) # We already store needed type IDs in database replTypeIDs = {int(i) for i in item.replacements.split(",") if i} if item.replacements is not None else {} if not replTypeIDs: return () # As replacements were generated without keeping track which items were published, # filter them out here items = [] for typeID in replTypeIDs: item = self.getItem(typeID) if not item: continue if self.getPublicityByItem(item): items.append(item) return items def getRecentlyUsed(self): recentlyUsedItems = [] for itemID in self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"]: item = self.getItem(itemID) if item is None: self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"].remove(itemID) recentlyUsedItems.append(item) return recentlyUsedItems def storeRecentlyUsed(self, itemID): recentlyUsedModules = self.serviceMarketRecentlyUsedModules["pyfaMarketRecentlyUsedModules"] while itemID in recentlyUsedModules: recentlyUsedModules.remove(itemID) item = self.getItem(itemID) if item.isAbyssal: return while len(recentlyUsedModules) >= 20: recentlyUsedModules.pop(-1) recentlyUsedModules.insert(0, itemID) def itemSort(self, item, reverseMktGrp=False): catname = self.getCategoryByItem(item).name try: mktgrpid = self.getMarketGroupByItem(item).ID except AttributeError: mktgrpid = -1 pyfalog.warning("unable to find market group for {}".format(item.typeName)) if reverseMktGrp: mktgrpid = -mktgrpid parentname = self.getParentItemByItem(item).name # Get position of market group metagrpid = self.getMetaGroupIdByItem(item) metatab = self.META_MAP_REVERSE_GROUPED.get(metagrpid) metalvl = item.metaLevel or 0 return catname, mktgrpid, parentname, metatab, metalvl, item.name def printAllItems(self): items = set() def handleMg(marketGroup, path=()): marketGroup = self.getMarketGroup(marketGroup, eager=("items", "items.metaGroup", "children")) path = path + (marketGroup.name,) print(' > '.join(path)) for item in self.getItemsByMarketGroup(marketGroup): items.add(item.ID) for mgc in self.getMarketGroupChildren(marketGroup): handleMg(mgc, path=path) for mg in self.ROOT_MARKET_GROUPS: handleMg(mg) print(sorted(items)) ================================================ FILE: service/marketSources/__init__.py ================================================ __all__ = ['evetycoon', 'evemarketdata', 'fuzzwork', 'cevemarket'] ================================================ FILE: service/marketSources/cevemarket.py ================================================ # ============================================================================= # Copyright (C) 2020 Copy Liu # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from xml.dom import minidom from logbook import Logger from eos.saveddata.price import PriceStatus from service.network import Network from service.price import Price pyfalog = Logger(__name__) class CEveMarketBase: @staticmethod def fetchPrices(priceMap, fetchTimeout, system=None, serenity=False): params = {'typeid': {typeID for typeID in priceMap}} if system is not None: params['usesystem'] = system baseurl = 'https://www.ceve-market.org/api/marketstat' if serenity else 'https://www.ceve-market.org/tqapi/marketstat' network = Network.getInstance() data = network.get(url=baseurl, type=network.PRICES, params=params, timeout=fetchTimeout) xml = minidom.parseString(data.text) types = xml.getElementsByTagName('marketstat').item(0).getElementsByTagName('type') # Cycle through all types we've got from request for type_ in types: # Get data out of each typeID details tree typeID = int(type_.getAttribute('id')) sell = type_.getElementsByTagName('sell').item(0) # If price data wasn't there, skip the item try: percprice = float(sell.getElementsByTagName('percentile').item(0).firstChild.data) except (TypeError, ValueError): pyfalog.warning('Failed to get price for: {0}', type_) continue if percprice == 0 and system is not None: continue priceMap[typeID].update(PriceStatus.fetchSuccess, percprice) del priceMap[typeID] class CEveMarketTq(CEveMarketBase): name = 'ceve-market.org (Tranquility)' group = 'tranquility' def __init__(self, priceMap, system, fetchTimeout): # Try selected system first self.fetchPrices(priceMap, max(2 * fetchTimeout / 3, 2), system, serenity=False) # If price was not available - try globally if priceMap: self.fetchPrices(priceMap, max(fetchTimeout / 3, 2), serenity=False) class CEveMarketCn(CEveMarketBase): name = 'ceve-market.org (Serenity)' group = 'serenity' def __init__(self, priceMap, system, fetchTimeout): # Try selected system first self.fetchPrices(priceMap, max(2 * fetchTimeout / 3, 2), system, serenity=True) # If price was not available - try globally if priceMap: self.fetchPrices(priceMap, max(fetchTimeout / 3, 2), serenity=True) Price.register(CEveMarketCn) Price.register(CEveMarketTq) ================================================ FILE: service/marketSources/evemarketdata.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from xml.dom import minidom from logbook import Logger from eos.saveddata.price import PriceStatus from service.network import Network from service.price import Price pyfalog = Logger(__name__) class EveMarketData: name = 'eve-marketdata.com' group = 'tranquility' def __init__(self, priceMap, system, fetchTimeout): # Try selected system first self.fetchPrices(priceMap, max(2 * fetchTimeout / 3, 2), system) # If price was not available - try globally if priceMap: self.fetchPrices(priceMap, max(fetchTimeout / 3, 2)) @staticmethod def fetchPrices(priceMap, fetchTimeout, system=None): params = {'type_ids': ','.join(str(typeID) for typeID in priceMap)} if system is not None: params['system_id'] = system baseurl = 'https://eve-marketdata.com/api/item_prices.xml' network = Network.getInstance() data = network.get(url=baseurl, type=network.PRICES, params=params, timeout=fetchTimeout) xml = minidom.parseString(data.text) types = xml.getElementsByTagName('eve').item(0).getElementsByTagName('price') # Cycle through all types we've got from request for type_ in types: # Get data out of each typeID details tree typeID = int(type_.getAttribute('id')) try: price = float(type_.firstChild.data) except (TypeError, ValueError): pyfalog.warning('Failed to get price for: {0}', type_) continue # eve-marketdata returns 0 if price data doesn't even exist for the item if price == 0: continue priceMap[typeID].update(PriceStatus.fetchSuccess, price) del priceMap[typeID] # Price.register(EveMarketData) ================================================ FILE: service/marketSources/evetycoon.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from logbook import Logger from eos.saveddata.price import PriceStatus from service.network import Network from service.price import Price pyfalog = Logger(__name__) locations = { 30000142: (10000002, 60003760), # Jita 4-4 CNAP 30002187: (10000043, 60008494), # Amarr VIII 30002659: (10000032, 60011866), # Dodixie 30002510: (10000030, 60004588), # Rens 30002053: (10000042, 60005686)} # Hek class EveTycoon: name = 'evetycoon' group = 'tranquility' def __init__(self, priceMap, system, fetchTimeout): # Try selected system first self.fetchPrices(priceMap, max(2 * fetchTimeout / 3, 2), system) @staticmethod def fetchPrices(priceMap, fetchTimeout, system=None): # Default to jita when system is not found regionID, stationID = locations.get(system, locations[30000142]) baseurl = 'https://evetycoon.com/api/v1/market/stats' network = Network.getInstance() # Cycle through all types we've got from request for typeID in tuple(priceMap): url = f'{baseurl}/{regionID}/{typeID}' resp = network.get(url=url, params={'locationId': stationID}, type=network.PRICES, timeout=fetchTimeout) if resp.status_code != 200: continue price = resp.json()['sellAvgFivePercent'] # Price is 0 - no data if price == 0: continue priceMap[typeID].update(PriceStatus.fetchSuccess, price) del priceMap[typeID] Price.register(EveTycoon) ================================================ FILE: service/marketSources/fuzzwork.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from logbook import Logger from eos.saveddata.price import PriceStatus from service.network import Network from service.price import Price pyfalog = Logger(__name__) locations = { None: {}, # Universe 30000142: {'station': 60003760}, # Jita 4-4 CNAP 30002187: {'station': 60008494}, # Amarr VIII 30002659: {'station': 60011866}, # Dodixie 30002510: {'station': 60004588}, # Rens 30002053: {'station': 60005686}} # Hek class FuzzworkMarket: name = 'fuzzwork market' group = 'tranquility' def __init__(self, priceMap, system, fetchTimeout): # Try selected system first self.fetchPrices(priceMap, max(2 * fetchTimeout / 3, 2), system) # If price was not available - try globally if priceMap: self.fetchPrices(priceMap, max(fetchTimeout / 3, 2)) @staticmethod def fetchPrices(priceMap, fetchTimeout, system=None): params = {'types': ','.join(str(typeID) for typeID in priceMap)} for k, v in locations.get(system, {}).items(): params[k] = v baseurl = 'https://market.fuzzwork.co.uk/aggregates/' network = Network.getInstance() resp = network.get(url=baseurl, type=network.PRICES, params=params, timeout=fetchTimeout) data = resp.json() # Cycle through all types we've got from request for typeID, typeData in data.items(): try: typeID = int(typeID) price = float(typeData['sell']['percentile']) except (KeyError, TypeError): continue # Fuzzworks returns 0 when there's no data for item if price == 0: continue if typeID not in priceMap: continue priceMap[typeID].update(PriceStatus.fetchSuccess, price) del priceMap[typeID] Price.register(FuzzworkMarket) ================================================ FILE: service/network.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import requests import socket from logbook import Logger import config from service.settings import NetworkSettings pyfalog = Logger(__name__) # network timeout, otherwise pyfa hangs for a long while if no internet connection timeout = 3 socket.setdefaulttimeout(timeout) class Error(Exception): def __init__(self, msg=None): self.message = msg class RequestError(Exception): pass class AuthenticationError(Exception): pass class ServerError(Exception): pass class TimeoutError(Exception): pass class Network: # Request constants - every request must supply this, as it is checked if # enabled or not via settings ENABLED = 1 EVE = 2 # Mostly API, but also covers CREST requests. update: might be useless these days, this Network class needs to be reviewed PRICES = 4 UPDATE = 8 _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = Network() return cls._instance def get(self, url, type, **kwargs): self.__networkAccessCheck(type) headers = self.__getHeaders() proxies = self.__getProxies() try: resp = requests.get(url, headers=headers, proxies=proxies, **kwargs) resp.raise_for_status() return resp except requests.exceptions.HTTPError as error: pyfalog.warning('HTTPError:') pyfalog.warning(error) if error.response.status_code == 404: raise RequestError() elif error.response.status_code == 403: raise AuthenticationError() elif error.response.status_code >= 500: raise ServerError() raise Error(error) except requests.exceptions.Timeout: raise TimeoutError() except (KeyboardInterrupt, SystemExit): raise except Exception as error: raise Error(error) def post(self, url, type, jsonData, **kwargs): self.__networkAccessCheck(type) headers = self.__getHeaders() proxies = self.__getProxies() try: resp = requests.post(url, json=jsonData, headers=headers, proxies=proxies, **kwargs) resp.raise_for_status() return resp except requests.exceptions.HTTPError as error: pyfalog.warning('HTTPError:') pyfalog.warning(error) if error.response.status_code == 404: raise RequestError() elif error.response.status_code == 403: raise AuthenticationError() elif error.response.status_code >= 500: raise ServerError() raise Error(error) except requests.exceptions.Timeout: raise TimeoutError() except (KeyboardInterrupt, SystemExit): raise except Exception as error: raise Error(error) def __networkAccessCheck(self, type): # Make sure request is enabled access = NetworkSettings.getInstance().getAccess() if not self.ENABLED & access or not type & access: pyfalog.warning('Access not enabled - please enable in Preferences > Network') raise Error('Access not enabled - please enable in Preferences > Network') def __getHeaders(self): versionString = '{0}'.format(config.version) return {'User-Agent': 'pyfa {0} (python-requests {1})'.format(versionString, requests.__version__)} def __getProxies(self): # python-requests supports setting proxy for request as parameter to get() / post() # in a form like: proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080' } # or with HTTP Basic auth support: proxies = {'http': 'http://user:pass@10.10.1.10:3128/'} # then you do: requests.get('http://example.org', proxies=proxies) return NetworkSettings.getInstance().getProxySettingsInRequestsFormat() ================================================ FILE: service/port/__init__.py ================================================ from .efs import EfsPort from .port import Port ================================================ FILE: service/port/dna.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re from collections import OrderedDict from logbook import Logger from eos.const import FittingModuleState, FittingSlot from eos.saveddata.cargo import Cargo from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit from eos.saveddata.module import Module from eos.saveddata.ship import Ship from gui.fitCommands.helpers import activeStateLimit from service.const import PortDnaOptions from service.fit import Fit as svcFit from service.market import Market pyfalog = Logger(__name__) def importDna(string, fitName=None): sMkt = Market.getInstance() ids = list(map(int, re.findall(r'\d+', string))) for id_ in ids: try: try: Ship(sMkt.getItem(id_)) except ValueError: Citadel(sMkt.getItem(id_)) string = string[string.index(str(id_)):] break except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Exception caught in importDna") pass string = string[:string.index("::") + 2] info = string.split(":") return processImportInfo(info, fitName, ";") def importDnaAlt(string, fitName=None): sMkt = Market.getInstance() ids = list(map(int, re.findall(r'\d+', string))) for id_ in ids: try: try: Ship(sMkt.getItem(id_)) except ValueError: Citadel(sMkt.getItem(id_)) string = string[string.index(str(id_)):] break except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Exception caught in importDna") pass info = string.split(":") return processImportInfo(info, fitName, "*") def processImportInfo(info, fitName, amountSeparator): sMkt = Market.getInstance() f = Fit() try: try: f.ship = Ship(sMkt.getItem(int(info[0]))) except ValueError: f.ship = Citadel(sMkt.getItem(int(info[0]))) if fitName is None: f.name = "{0} - DNA Imported".format(f.ship.item.name) else: f.name = fitName except UnicodeEncodeError: def logtransform(s_): if len(s_) > 10: return s_[:10] + "..." return s_ pyfalog.exception("Couldn't import ship data {0}", [logtransform(s) for s in info]) return None moduleList = [] for itemInfo in info[1:]: if itemInfo: if amountSeparator in itemInfo: itemID, amount = itemInfo.split(amountSeparator) else: itemID = itemInfo amount = 1 item = sMkt.getItem(int(itemID), eager="group.category") if item.category.name == "Drone": d = Drone(item) d.amount = int(amount) f.drones.append(d) elif item.category.name == "Fighter": ft = Fighter(item) ft.amount = int(amount) if ft.amount <= ft.fighterSquadronMaxSize else ft.fighterSquadronMaxSize if ft.fits(f): f.fighters.append(ft) elif item.category.name == "Charge": c = Cargo(item) c.amount = int(amount) f.cargo.append(c) else: for i in range(int(amount)): try: m = Module(item) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Exception caught in importDna") continue # Add subsystems before modules to make sure T3 cruisers have subsystems installed if item.category.name == "Subsystem": if m.fits(f): f.modules.append(m) else: m.owner = f if m.isValidState(FittingModuleState.ACTIVE): m.state = activeStateLimit(m.item) moduleList.append(m) # Recalc to get slot numbers correct for T3 cruisers sFit = svcFit.getInstance() sFit.recalc(f) sFit.fill(f) for module in moduleList: if module.fits(f): module.owner = f if module.isValidState(FittingModuleState.ACTIVE): module.state = activeStateLimit(module.item) f.modules.append(module) return f def exportDna(fit, options, callback): dna = str(fit.shipID) subsystems = [] # EVE cares which order you put these in mods = OrderedDict() charges = OrderedDict() for mod in fit.modules: if not mod.isEmpty: if mod.slot == FittingSlot.SUBSYSTEM: subsystems.append(mod) continue if mod.itemID not in mods: mods[mod.itemID] = 0 mods[mod.itemID] += 1 if mod.charge: if mod.chargeID not in charges: charges[mod.chargeID] = 0 # `or 1` because some charges (ie scripts) are without qty charges[mod.chargeID] += mod.numCharges or 1 for subsystem in sorted(subsystems, key=lambda mod_: mod_.getModifiedItemAttr("subSystemSlot")): dna += ":{0};1".format(subsystem.itemID) for mod in mods: dna += ":{0};{1}".format(mod, mods[mod]) for drone in fit.drones: dna += ":{0};{1}".format(drone.itemID, drone.amount) for fighter in fit.fighters: dna += ":{0};{1}".format(fighter.itemID, fighter.amount) for cargo in fit.cargo: # DNA format is a simple/dumb format. As CCP uses the slot information of the item itself # without designating slots in the DNA standard, we need to make sure we only include # charges in the DNA export. If modules were included, the EVE Client will interpret these # as being "Fitted" to whatever slot they are for, and it causes an corruption error in the # client when trying to save the fit if cargo.item.category.name == "Charge": if cargo.item.ID not in charges: charges[cargo.item.ID] = 0 charges[cargo.item.ID] += cargo.amount for charge in charges: dna += ":{0};{1}".format(charge, charges[charge]) text = dna + "::" if options[PortDnaOptions.FORMATTING]: text = '{}'.format(text, fit.name) if callback: callback(text) else: return text ================================================ FILE: service/port/efs.py ================================================ import json from math import log from numbers import Number from logbook import Logger import eos.db from config import getVersion from service.fit import Fit from service.market import Market from eos.const import FittingModuleState, FittingHardpoint, FittingSlot from service.const import PortEftRigSize from eos.saveddata.module import Module from eos.saveddata.drone import Drone from eos.effectHandlerHelpers import HandledList from eos.db import gamedata_session, getCategory, getAttributeInfo, getGroup from eos.gamedata import Attribute, Effect, Group, Item, ItemEffect from eos.utils.spoolSupport import SpoolType, SpoolOptions from gui.fitCommands.calc.module.localAdd import CalcAddLocalModuleCommand from gui.fitCommands.calc.module.localRemove import CalcRemoveLocalModulesCommand from gui.fitCommands.calc.module.changeCharges import CalcChangeModuleChargesCommand from gui.fitCommands.helpers import ModuleInfo pyfalog = Logger(__name__) pyfaVersion = getVersion() class EfsPort: wepTestSet = {} version = 0.06 @staticmethod def attrDirectMap(values, target, source): for val in values: target[val] = source.getModifiedItemAttr(val) @staticmethod def getT2MwdSpeed(fit, sFit): fitID = fit.ID propID = None shipHasMedSlots = fit.ship.getModifiedItemAttr("medSlots") > 0 shipPower = fit.ship.getModifiedItemAttr("powerOutput") # Monitors have a 99% reduction to prop mod power requirements if fit.ship.typeName == "Monitor": shipPower *= 100 rigSize = fit.ship.getModifiedItemAttr("rigSize") if not shipHasMedSlots: return None filterVal = Item.groupID == getGroup("Propulsion Module").ID propMods = gamedata_session.query(Item).options().filter(filterVal).all() mapPropData = lambda propName: \ next(map(lambda propMod: {"id": propMod.typeID, "powerReq": propMod.attributes["power"].value}, (filter(lambda mod: mod.typeName == propName, propMods)))) mwd5mn = mapPropData("5MN Microwarpdrive II") mwd50mn = mapPropData("50MN Microwarpdrive II") mwd500mn = mapPropData("500MN Microwarpdrive II") mwd50000mn = mapPropData("50000MN Microwarpdrive II") if rigSize == PortEftRigSize.SMALL or rigSize is None: propID = mwd5mn["id"] if shipPower > mwd5mn["powerReq"] else None elif rigSize == PortEftRigSize.MEDIUM: propID = mwd50mn["id"] if shipPower > mwd50mn["powerReq"] else mwd5mn["id"] elif rigSize == PortEftRigSize.LARGE: propID = mwd500mn["id"] if shipPower > mwd500mn["powerReq"] else mwd50mn["id"] elif rigSize == PortEftRigSize.CAPITAL: propID = mwd50000mn["id"] if shipPower > mwd50000mn["powerReq"] else mwd500mn["id"] if propID is None: return None cmd = CalcAddLocalModuleCommand(fitID, ModuleInfo(itemID=propID)) cmd.Do() if cmd.needsGuiRecalc: sFit.recalc(fit) fit = eos.db.getFit(fitID) mwdPropSpeed = fit.maxSpeed mwdPosition = list(filter(lambda mod: mod.item and mod.item.ID == propID, fit.modules))[0].position cmd = CalcRemoveLocalModulesCommand(fitID, [mwdPosition]) cmd.Do() if cmd.needsGuiRecalc: sFit.recalc(fit) fit = eos.db.getFit(fitID) return mwdPropSpeed @staticmethod def getPropData(fit, sFit): propMods = filter(lambda mod: mod.item and mod.item.group.name == "Propulsion Module", fit.modules) activePropWBloomFilter = lambda mod: mod.state > 0 and "signatureRadiusBonus" in mod.item.attributes propWithBloom = next(filter(activePropWBloomFilter, propMods), None) if propWithBloom is not None: oldPropState = propWithBloom.state propWithBloom.state = FittingModuleState.ONLINE sFit.recalc(fit) sp = fit.maxSpeed sig = fit.ship.getModifiedItemAttr("signatureRadius") propWithBloom.state = oldPropState sFit.recalc(fit) return {"usingMWD": True, "unpropedSpeed": sp, "unpropedSig": sig} return { "usingMWD": False, "unpropedSpeed": fit.maxSpeed, "unpropedSig": fit.ship.getModifiedItemAttr("signatureRadius") } @staticmethod def getModsInGroups(fit, modGroupNames): matchingMods = list(filter(lambda mod: mod.item and mod.item.group.name in modGroupNames, fit.modules)) # Sort mods to prevent the order needlessly changing as pyfa updates. matchingMods.sort(key=lambda mod: mod.item.ID) matchingMods.sort(key=lambda mod: mod.item.group.ID) return matchingMods # Note this also includes data for any cap boosters as they "repair" cap. @staticmethod def getRepairData(fit, sFit): modGroupNames = [ "Shield Booster", "Armor Repair Unit", "Ancillary Shield Booster", "Ancillary Armor Repairer", "Hull Repair Unit", "Capacitor Booster", ] repairMods = EfsPort.getModsInGroups(fit, modGroupNames) repairs = []; for mod in repairMods: stats = {} EfsPort.attrDirectMap(["duration", "capacitorNeed"], stats, mod) if mod.item.group.name in ["Armor Repair Unit", "Ancillary Armor Repairer"]: stats["type"] = "Armor Repairer" EfsPort.attrDirectMap(["armorDamageAmount"], stats, mod) if mod.item.group.name == "Ancillary Armor Repairer": stats["numShots"] = mod.numShots EfsPort.attrDirectMap(["reloadTime", "chargedArmorDamageMultiplier"], stats, mod) elif mod.item.group.name in ["Shield Booster", "Ancillary Shield Booster"]: stats["type"] = "Shield Booster" EfsPort.attrDirectMap(["shieldBonus"], stats, mod) if mod.item.group.name == "Ancillary Shield Booster": stats["numShots"] = mod.numShots EfsPort.attrDirectMap(["reloadTime"], stats, mod) c = mod.charge if c: sFit.recalc(fit) CalcChangeModuleChargesCommand( fit.ID, projected=False, chargeMap={mod.position: None}, recalc=False).Do() sFit.recalc(fit) stats["unloadedCapacitorNeed"] = mod.getModifiedItemAttr("capacitorNeed") CalcChangeModuleChargesCommand( fit.ID, projected=False, chargeMap={mod.position: c.typeID}, recalc=False).Do() sFit.recalc(fit) elif mod.item.group.name == "Capacitor Booster": # The capacitorNeed is negative, which provides the boost. stats["type"] = "Capacitor Booster" stats["numShots"] = mod.numShots EfsPort.attrDirectMap(["reloadTime"], stats, mod) repairs.append(stats) return repairs @staticmethod def getOutgoingProjectionData(fit): # This is a subset of module groups capable of projection and a superset of those currently used by efs modGroupNames = [ "Remote Shield Booster", "Warp Scrambler", "Stasis Web", "Remote Capacitor Transmitter", "Energy Nosferatu", "Energy Neutralizer", "Burst Jammer", "ECM", "Sensor Dampener", "Weapon Disruptor", "Remote Armor Repairer", "Target Painter", "Remote Hull Repairer", "Burst Projectors", "Warp Disrupt Field Generator", "Armor Resistance Shift Hardener", "Micro Jump Drive", "Ship Modifiers", "Stasis Grappler", "Ancillary Remote Shield Booster", "Ancillary Remote Armor Repairer", "Titan Phenomena Generator", "Non-Repeating Hardeners", "Mutadaptive Remote Armor Repairer" ] projectedMods = EfsPort.getModsInGroups(fit, modGroupNames) projections = [] for mod in projectedMods: maxRangeDefault = 0 falloffDefault = 0 stats = {} if mod.item.group.name in ["Stasis Web", "Stasis Grappler"]: stats["type"] = "Stasis Web" stats["optimal"] = mod.getModifiedItemAttr("maxRange") EfsPort.attrDirectMap(["duration", "speedFactor"], stats, mod) elif mod.item.group.name == "Weapon Disruptor": stats["type"] = "Weapon Disruptor" stats["optimal"] = mod.getModifiedItemAttr("maxRange") stats["falloff"] = mod.getModifiedItemAttr("falloffEffectiveness") EfsPort.attrDirectMap([ "trackingSpeedBonus", "maxRangeBonus", "falloffBonus", "aoeCloudSizeBonus", "aoeVelocityBonus", "missileVelocityBonus", "explosionDelayBonus" ], stats, mod) elif mod.item.group.name == "Energy Nosferatu": stats["type"] = "Energy Nosferatu" EfsPort.attrDirectMap(["powerTransferAmount", "energyNeutralizerSignatureResolution"], stats, mod) elif mod.item.group.name == "Energy Neutralizer": stats["type"] = "Energy Neutralizer" EfsPort.attrDirectMap([ "energyNeutralizerSignatureResolution", "entityCapacitorLevelModifierSmall", "entityCapacitorLevelModifierMedium", "entityCapacitorLevelModifierLarge", "energyNeutralizerAmount" ], stats, mod) elif mod.item.group.name in ["Remote Shield Booster", "Ancillary Remote Shield Booster"]: stats["type"] = "Remote Shield Booster" EfsPort.attrDirectMap(["shieldBonus"], stats, mod) elif mod.item.group.name in [ "Remote Armor Repairer", "Ancillary Remote Armor Repairer", "Mutadaptive Remote Armor Repairer" ]: stats["type"] = "Remote Armor Repairer" EfsPort.attrDirectMap(["armorDamageAmount"], stats, mod) elif mod.item.group.name in ["Remote Capacitor Transmitter"]: stats["type"] = "Remote Capacitor Transmitter" EfsPort.attrDirectMap(["powerTransferAmount"], stats, mod) elif mod.item.group.name == "Warp Scrambler": stats["type"] = "Warp Scrambler" EfsPort.attrDirectMap(["activationBlockedStrenght", "warpScrambleStrength"], stats, mod) elif mod.item.group.name == "Warp Disrupt Field Generator": maxRangeDefault = mod.getModifiedItemAttr("warpScrambleRange") stats["type"] = "Warp Scrambler" EfsPort.attrDirectMap(["activationBlockedStrenght", "warpScrambleStrength"], stats, mod) if maxRangeDefault >= 30000: # We want this to be 0 for disruption scripts as we have no other way to tell scrams from points. stats["activationBlockedStrenght"] = 0 elif mod.item.group.name == "Target Painter": stats["type"] = "Target Painter" EfsPort.attrDirectMap(["signatureRadiusBonus"], stats, mod) elif mod.item.group.name == "Sensor Dampener": stats["type"] = "Sensor Dampener" EfsPort.attrDirectMap(["maxTargetRangeBonus", "scanResolutionBonus"], stats, mod) elif mod.item.group.name == "ECM": stats["type"] = "ECM" EfsPort.attrDirectMap([ "scanGravimetricStrengthBonus", "scanMagnetometricStrengthBonus", "scanRadarStrengthBonus", "scanLadarStrengthBonus", ], stats, mod) elif mod.item.group.name == "Burst Jammer": stats["type"] = "Burst Jammer" maxRangeDefault = mod.getModifiedItemAttr("ecmBurstRange") EfsPort.attrDirectMap([ "scanGravimetricStrengthBonus", "scanMagnetometricStrengthBonus", "scanRadarStrengthBonus", "scanLadarStrengthBonus", ], stats, mod) elif mod.item.group.name == "Micro Jump Drive": stats["type"] = "Micro Jump Drive" EfsPort.attrDirectMap(["moduleReactivationDelay"], stats, mod) else: pyfalog.error("Projected module {0} lacks efs export implementation".format(mod.item.typeName)) if mod.getModifiedItemAttr("maxRange", None) is None: pyfalog.error("Projected module {0} has no maxRange".format(mod.item.typeName)) # Burst jammer maxRange is 0 if the value is retrieved using mod.getModifiedItemAttr("maxRange") # Despite it is correct, it still pulls 0.0. stats["optimal"] = mod.getModifiedItemAttr("maxRange", maxRangeDefault) if mod.item.group.name != "Burst Jammer" else mod.maxRange stats["falloff"] = mod.getModifiedItemAttr("falloffEffectiveness", falloffDefault) EfsPort.attrDirectMap(["duration", "capacitorNeed"], stats, mod) projections.append(stats) return projections # Note that unless padTypeIDs is True all 0s will be removed from modTypeIDs in the return. # They always are added initially for the sake of brevity, as this option may not be retained long term. @staticmethod def getModuleInfo(fit, padTypeIDs=False): moduleNames = [] modTypeIDs = [] moduleNameSets = {FittingSlot.LOW: [], FittingSlot.MED: [], FittingSlot.HIGH: [], FittingSlot.RIG: [], FittingSlot.SUBSYSTEM: []} modTypeIDSets = {FittingSlot.LOW: [], FittingSlot.MED: [], FittingSlot.HIGH: [], FittingSlot.RIG: [], FittingSlot.SUBSYSTEM: []} for mod in fit.modules: try: if mod.item is not None: if mod.charge is not None: modTypeIDSets[mod.slot].append([mod.item.typeID, mod.charge.typeID]) moduleNameSets[mod.slot].append(mod.item.typeName + ": " + mod.charge.typeName) else: modTypeIDSets[mod.slot].append(mod.item.typeID) moduleNameSets[mod.slot].append(mod.item.typeName) else: modTypeIDSets[mod.slot].append(0) moduleNameSets[mod.slot].append("Empty Slot") except (KeyboardInterrupt, SystemExit): raise except: pyfalog.error("Could not find name for module {0}".format(vars(mod))) for modInfo in [ ["High Slots:"], moduleNameSets[FittingSlot.HIGH], ["", "Med Slots:"], moduleNameSets[FittingSlot.MED], ["", "Low Slots:"], moduleNameSets[FittingSlot.LOW], ["", "Rig Slots:"], moduleNameSets[FittingSlot.RIG] ]: moduleNames.extend(modInfo) if len(moduleNameSets[FittingSlot.SUBSYSTEM]) > 0: moduleNames.extend(["", "Subsystems:"]) moduleNames.extend(moduleNameSets[FittingSlot.SUBSYSTEM]) for slotType in [FittingSlot.HIGH, FittingSlot.MED, FittingSlot.LOW, FittingSlot.RIG, FittingSlot.SUBSYSTEM]: if slotType is not FittingSlot.SUBSYSTEM or len(modTypeIDSets[slotType]) > 0: modTypeIDs.extend([0, 0] if slotType is not FittingSlot.HIGH else [0]) modTypeIDs.extend(modTypeIDSets[slotType]) droneNames = [] droneIDs = [] fighterNames = [] fighterIDs = [] for drone in fit.drones: if drone.amountActive > 0: droneIDs.append(drone.item.typeID) droneNames.append("%s x%s" % (drone.item.typeName, drone.amount)) for fighter in fit.fighters: if fighter.amount > 0: fighterIDs.append(fighter.item.typeID) fighterNames.append("%s x%s" % (fighter.item.typeName, fighter.amount)) if len(droneNames) > 0: modTypeIDs.extend([0, 0]) modTypeIDs.extend(droneIDs) moduleNames.extend(["", "Drones:"]) moduleNames.extend(droneNames) if len(fighterNames) > 0: modTypeIDs.extend([0, 0]) modTypeIDs.extend(fighterIDs) moduleNames.extend(["", "Fighters:"]) moduleNames.extend(fighterNames) if len(fit.implants) > 0: modTypeIDs.extend([0, 0]) moduleNames.extend(["", "Implants:"]) for implant in fit.implants: modTypeIDs.append(implant.item.typeID) moduleNames.append(implant.item.typeName) if len(fit.boosters) > 0: modTypeIDs.extend([0, 0]) moduleNames.extend(["", "Boosters:"]) for booster in fit.boosters: modTypeIDs.append(booster.item.typeID) moduleNames.append(booster.item.typeName) if len(fit.commandFits) > 0: modTypeIDs.extend([0, 0]) moduleNames.extend(["", "Command Fits:"]) for commandFit in fit.commandFits: modTypeIDs.append(commandFit.ship.item.typeID) moduleNames.append(commandFit.name) if len(fit.projectedModules) > 0: modTypeIDs.extend([0, 0]) moduleNames.extend(["", "Projected Modules:"]) for mod in fit.projectedModules: modTypeIDs.append(mod.item.typeID) moduleNames.append(mod.item.typeName) if fit.character.name != "All 5": modTypeIDs.extend([0, 0, 0]) moduleNames.extend(["", "Character:"]) moduleNames.append(fit.character.name) if padTypeIDs is not True: modTypeIDsUnpadded = [mod for mod in modTypeIDs if mod != 0] modTypeIDs = modTypeIDsUnpadded return {"moduleNames": moduleNames, "modTypeIDs": modTypeIDs} @staticmethod def getFighterAbilityData(fighterAttr, fighter, baseRef): baseRefDam = baseRef + "Damage" abilityName = "RegularAttack" if baseRef == "fighterAbilityAttackMissile" else "MissileAttack" rangeSuffix = "RangeOptimal" if baseRef == "fighterAbilityAttackMissile" else "Range" reductionRef = baseRef if baseRef == "fighterAbilityAttackMissile" else baseRefDam damageReductionFactor = log(fighterAttr(reductionRef + "ReductionFactor")) / log(fighterAttr(reductionRef + "ReductionSensitivity")) damTypes = ["EM", "Therm", "Exp", "Kin"] abBaseDamage = sum(map(lambda damType: fighterAttr(baseRefDam + damType), damTypes)) abDamage = abBaseDamage * fighterAttr(baseRefDam + "Multiplier") return { "name": abilityName, "volley": abDamage * fighter.amount, "explosionRadius": fighterAttr(baseRef + "ExplosionRadius"), "explosionVelocity": fighterAttr(baseRef + "ExplosionVelocity"), "optimal": fighterAttr(baseRef + rangeSuffix), "damageReductionFactor": damageReductionFactor, "rof": fighterAttr(baseRef + "Duration"), } @staticmethod def getWeaponSystemData(fit): weaponSystems = [] groups = {} # Export at maximum spool for consistency, spoolup data is exported anyway. defaultSpoolValue = 1 spoolOptions = SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, True) for mod in fit.modules: if mod.getDps(spoolOptions=spoolOptions).total > 0: # Group weapon + ammo combinations that occur more than once keystr = str(mod.itemID) + "-" + str(mod.chargeID) if keystr in groups: groups[keystr][1] += 1 else: groups[keystr] = [mod, 1] for wepGroup in groups.values(): stats = wepGroup[0] n = wepGroup[1] tracking = 0 optimalSigRadius = 0 maxVelocity = 0 explosionDelay = 0 damageReductionFactor = 0 explosionRadius = 0 explosionVelocity = 0 aoeFieldRange = 0 typeing = 'None' if stats.charge: name = stats.item.typeName + ", " + stats.charge.typeName else: name = stats.item.typeName if stats.hardpoint == FittingHardpoint.TURRET: tracking = stats.getModifiedItemAttr("trackingSpeed") optimalSigRadius = stats.getModifiedItemAttr('optimalSigRadius') typeing = "Turret" # Bombs share most attributes with missiles despite not needing the hardpoint elif stats.hardpoint == FittingHardpoint.MISSILE or "Bomb Launcher" in stats.item.typeName: maxVelocity = stats.getModifiedChargeAttr("maxVelocity") explosionDelay = stats.getModifiedChargeAttr("explosionDelay") damageReductionFactor = stats.getModifiedChargeAttr("aoeDamageReductionFactor") explosionRadius = stats.getModifiedChargeAttr("aoeCloudSize") explosionVelocity = stats.getModifiedChargeAttr("aoeVelocity") typeing = "Missile" # AoE DDs can be treated like missiles with a damageReductionFactor of 0 elif stats.item.group.name == 'Super Weapon' and stats.maxRange: explosionRadius = stats.getModifiedItemAttr("signatureRadius") typeing = "Missile" elif stats.hardpoint == FittingHardpoint.NONE: aoeFieldRange = stats.getModifiedItemAttr("empFieldRange") # This also covers non-bomb weapons with dps values and no hardpoints, most notably targeted doomsdays. typeing = "SmartBomb" # Targeted DDs are the only non drone/fighter weapon without an explicit max range if stats.item.group.name == 'Super Weapon' and stats.maxRange is None: maxRange = 300000 else: maxRange = stats.maxRange dps = stats.getDps(spoolOptions=spoolOptions) dps_spread_dict = {'em': dps.em, 'therm': dps.thermal, 'kin': dps.kinetic, 'exp': dps.explosive, 'pure': dps.pure} dps_spread_dict.update((x, y*n) for x, y in dps_spread_dict.items()) statDict = { "dps": stats.getDps(spoolOptions=spoolOptions).total * n, "capUse": stats.capUse * n, "falloff": stats.falloff, "type": typeing, "name": name, "optimal": maxRange, "numCharges": stats.numCharges, "numShots": stats.numShots, "reloadTime": stats.reloadTime, "cycleTime": stats.getCycleParameters().averageTime, "volley": stats.getVolley(spoolOptions=spoolOptions).total * n, "tracking": tracking, "maxVelocity": maxVelocity, "explosionDelay": explosionDelay, "damageReductionFactor": damageReductionFactor, "explosionRadius": explosionRadius, "explosionVelocity": explosionVelocity, "aoeFieldRange": aoeFieldRange, "damageMultiplierBonusMax": stats.getModifiedItemAttr("damageMultiplierBonusMax"), "damageMultiplierBonusPerCycle": stats.getModifiedItemAttr("damageMultiplierBonusPerCycle"), "dps_spread": dps_spread_dict, "optimalSigRadius": optimalSigRadius } weaponSystems.append(statDict) for drone in fit.drones: if drone.getDps().total > 0 and drone.amountActive > 0: droneAttr = drone.getModifiedItemAttr # Drones are using the old tracking formula for trackingSpeed. This updates it to match turrets. newTracking = droneAttr("trackingSpeed") / (droneAttr("optimalSigRadius") / 40000) statDict = { "dps": drone.getDps().total, "cycleTime": drone.getCycleParameters().averageTime, "type": "Drone", "optimal": drone.maxRange, "name": drone.item.typeName, "falloff": drone.falloff, "maxSpeed": droneAttr("maxVelocity"), "tracking": newTracking, "volley": drone.getVolley().total } weaponSystems.append(statDict) for fighter in fit.fighters: if fighter.getDps().total > 0 and fighter.amount > 0: fighterAttr = fighter.getModifiedItemAttr abilities = [] if "fighterAbilityAttackMissileDamageEM" in fighter.item.attributes.keys(): baseRef = "fighterAbilityAttackMissile" ability = EfsPort.getFighterAbilityData(fighterAttr, fighter, baseRef) abilities.append(ability) if "fighterAbilityMissilesDamageEM" in fighter.item.attributes.keys(): baseRef = "fighterAbilityMissiles" ability = EfsPort.getFighterAbilityData(fighterAttr, fighter, baseRef) abilities.append(ability) statDict = { "dps": fighter.getDps().total, "type": "Fighter", "name": fighter.item.typeName, "maxSpeed": fighterAttr("maxVelocity"), "abilities": abilities, "ehp": fighterAttr("shieldCapacity") / 0.8875 * fighter.amount, "volley": fighter.getVolley().total, "signatureRadius": fighterAttr("signatureRadius") } weaponSystems.append(statDict) return weaponSystems @staticmethod def getTestSet(setType): def getT2ItemsWhere(additionalFilter, mustBeOffensive=False, category="Module"): # Used to obtain a smaller subset of items while still containing examples of each group. T2_META_LEVEL = 5 categoryID = getCategory(category).categoryID result = gamedata_session.query(Item).join(ItemEffect, Group, Attribute).\ filter( additionalFilter, Item.metaLevel == T2_META_LEVEL, Group.categoryID == categoryID, ).all() if mustBeOffensive: result = filter(lambda t: t.offensive is True, result) return list(result) def getChargeType(item, setType): if setType == "turret": return str(item.attributes["chargeGroup1"].value) + "-" + str(item.attributes["chargeSize"].value) return str(item.attributes["chargeGroup1"].value) if setType in EfsPort.wepTestSet.keys(): return EfsPort.wepTestSet[setType] else: EfsPort.wepTestSet[setType] = [] modSet = EfsPort.wepTestSet[setType] if setType == "drone": ilist = getT2ItemsWhere(True, True, "Drone") for item in ilist: drone = Drone(item) drone.amount = 1 drone.amountActive = 1 drone.itemModifiedAttributes.parent = drone modSet.append(drone) return modSet turretFittedEffectID = gamedata_session.query(Effect).filter(Effect.name == "turretFitted").first().effectID launcherFittedEffectID = gamedata_session.query(Effect).filter(Effect.name == "launcherFitted").first().effectID if setType == "launcher": effectFilter = ItemEffect.effectID == launcherFittedEffectID reqOff = False else: effectFilter = ItemEffect.effectID == turretFittedEffectID reqOff = True ilist = getT2ItemsWhere(effectFilter, reqOff) previousChargeTypes = [] # Get modules from item list for item in ilist: chargeType = getChargeType(item, setType) # Only add turrets if we don"t already have one with the same size and ammo type. if setType == "launcher" or chargeType not in previousChargeTypes: previousChargeTypes.append(chargeType) mod = Module(item) modSet.append(mod) sMkt = Market.getInstance() # Due to typed missile damage bonuses we"ll need to add extra launchers to cover all four types. additionalLaunchers = [] for mod in modSet: clist = list(gamedata_session.query(Item).options(). filter(Item.groupID == mod.getModifiedItemAttr("chargeGroup1")).all()) mods = [mod] charges = [clist[0]] if setType == "launcher": # We don"t want variations of missiles we already have prevCharges = list(sMkt.getVariationsByItems(charges)) testCharges = [] for charge in clist: if charge not in prevCharges: testCharges.append(charge) prevCharges += sMkt.getVariationsByItems([charge]) for c in testCharges: charges.append(c) additionalLauncher = Module(mod.item) mods.append(additionalLauncher) for i in range(len(mods)): mods[i].charge = charges[i] mods[i].reloadForce = True mods[i].state = 2 if setType == "launcher" and i > 0: additionalLaunchers.append(mods[i]) modSet += additionalLaunchers return modSet @staticmethod def getWeaponBonusMultipliers(fit): def sumDamage(attr): totalDamage = 0 for damageType in ["emDamage", "thermalDamage", "kineticDamage", "explosiveDamage"]: if attr(damageType) is not None: totalDamage += attr(damageType) return totalDamage def getCurrentMultipliers(tf): fitMultipliers = {} getDroneMulti = lambda d: sumDamage(d.getModifiedItemAttr) * d.getModifiedItemAttr("damageMultiplier") fitMultipliers["drones"] = list(map(getDroneMulti, tf.drones)) getFitTurrets = lambda f: filter(lambda mod: mod.hardpoint == FittingHardpoint.TURRET, f.modules) getTurretMulti = lambda mod: mod.getModifiedItemAttr("damageMultiplier") / mod.getCycleParameters().averageTime fitMultipliers["turrets"] = list(map(getTurretMulti, getFitTurrets(tf))) getFitLaunchers = lambda f: filter(lambda mod: mod.hardpoint == FittingHardpoint.MISSILE, f.modules) getLauncherMulti = lambda mod: sumDamage(mod.getModifiedChargeAttr) / mod.getCycleParameters().averageTime fitMultipliers["launchers"] = list(map(getLauncherMulti, getFitLaunchers(tf))) return fitMultipliers multipliers = {"turret": 1, "launcher": 1, "droneBandwidth": 1} drones = EfsPort.getTestSet("drone") launchers = EfsPort.getTestSet("launcher") turrets = EfsPort.getTestSet("turret") for weaponTypeSet in [turrets, launchers, drones]: for mod in weaponTypeSet: mod.owner = fit turrets = list(filter(lambda mod: mod.getModifiedItemAttr("damageMultiplier"), turrets)) launchers = list(filter(lambda mod: sumDamage(mod.getModifiedChargeAttr), launchers)) # Since the effect modules are fairly opaque a mock test fit is used to test the impact of traits. # standin class used to prevent . notation causing issues when used as an arg class standin: pass tf = standin() tf.modules = HandledList(turrets + launchers) tf.character = fit.character tf.ship = fit.ship tf.drones = HandledList(drones) tf.fighters = HandledList([]) tf.boosters = HandledList([]) tf.extraAttributes = fit.extraAttributes tf.mode = fit.mode preTraitMultipliers = getCurrentMultipliers(tf) for effect in fit.ship.item.effects.values(): if effect.isImplemented: effect.handler(tf, tf.ship, [], None, effect=effect) # Factor in mode effects for T3 Destroyers if fit.mode is not None: for effect in fit.mode.item.effects.values(): if effect.isImplemented: effect.handler(tf, fit.mode, [], None, effect=effect) if fit.ship.item.groupID == getGroup("Strategic Cruiser").ID: subSystems = list(filter(lambda mod: mod.slot == FittingSlot.SUBSYSTEM and mod.item, fit.modules)) for sub in subSystems: for effect in sub.item.effects.values(): if effect.isImplemented: effect.handler(tf, sub, [], None, effect=effect) postTraitMultipliers = getCurrentMultipliers(tf) getMaxRatio = lambda dictA, dictB, key: max(map(lambda a, b: b / a, dictA[key], dictB[key])) multipliers["turret"] = round(getMaxRatio(preTraitMultipliers, postTraitMultipliers, "turrets"), 6) multipliers["launcher"] = round(getMaxRatio(preTraitMultipliers, postTraitMultipliers, "launchers"), 6) multipliers["droneBandwidth"] = round(getMaxRatio(preTraitMultipliers, postTraitMultipliers, "drones"), 6) Fit.getInstance().recalc(fit) return multipliers @staticmethod def getShipSize(groupID): # Size groupings are somewhat arbitrary but allow for a more manageable number of top level groupings in a tree structure. frigateGroupNames = ["Frigate", "Shuttle", "Corvette", "Assault Frigate", "Covert Ops", "Interceptor", "Stealth Bomber", "Electronic Attack Ship", "Expedition Frigate", "Logistics Frigate"] destroyerGroupNames = ["Destroyer", "Interdictor", "Tactical Destroyer", "Command Destroyer"] cruiserGroupNames = ["Cruiser", "Heavy Assault Cruiser", "Logistics", "Force Recon Ship", "Heavy Interdiction Cruiser", "Combat Recon Ship", "Strategic Cruiser"] bcGroupNames = ["Combat Battlecruiser", "Command Ship", "Attack Battlecruiser"] bsGroupNames = ["Battleship", "Elite Battleship", "Black Ops", "Marauder"] capitalGroupNames = ["Titan", "Dreadnought", "Freighter", "Carrier", "Supercarrier", "Capital Industrial Ship", "Jump Freighter", "Force Auxiliary"] indyGroupNames = ["Hauler", "Deep Space Transport", "Blockade Runner", "Mining Barge", "Exhumer", "Industrial Command Ship"] miscGroupNames = ["Capsule", "Prototype Exploration Ship"] shipSizes = [ {"name": "Frigate", "groupIDs": map(lambda s: getGroup(s).ID, frigateGroupNames)}, {"name": "Destroyer", "groupIDs": map(lambda s: getGroup(s).ID, destroyerGroupNames)}, {"name": "Cruiser", "groupIDs": map(lambda s: getGroup(s).ID, cruiserGroupNames)}, {"name": "Battlecruiser", "groupIDs": map(lambda s: getGroup(s).ID, bcGroupNames)}, {"name": "Battleship", "groupIDs": map(lambda s: getGroup(s).ID, bsGroupNames)}, {"name": "Capital", "groupIDs": map(lambda s: getGroup(s).ID, capitalGroupNames)}, {"name": "Industrial", "groupIDs": map(lambda s: getGroup(s).ID, indyGroupNames)}, {"name": "Misc", "groupIDs": map(lambda s: getGroup(s).ID, miscGroupNames)} ] for size in shipSizes: if groupID in size["groupIDs"]: return size["name"] sizeNotFoundMsg = "ShipSize not found for groupID: " + str(groupID) return sizeNotFoundMsg @staticmethod def exportEfs(fit, typeNotFitFlag, callback): sFit = Fit.getInstance() includeShipTypeData = typeNotFitFlag > 0 if includeShipTypeData: fitName = fit.name else: fitName = fit.ship.name + ": " + fit.name pyfalog.info("Creating Eve Fleet Simulator data for: " + fit.name) fitModAttr = fit.ship.getModifiedItemAttr propData = EfsPort.getPropData(fit, sFit) mwdPropSpeed = fit.maxSpeed if includeShipTypeData: mwdPropSpeed = EfsPort.getT2MwdSpeed(fit, sFit) projections = EfsPort.getOutgoingProjectionData(fit) modInfo = EfsPort.getModuleInfo(fit) moduleNames = modInfo["moduleNames"] modTypeIDs = modInfo["modTypeIDs"] weaponSystems = EfsPort.getWeaponSystemData(fit) turretSlots = fitModAttr("turretSlotsLeft") if fitModAttr("turretSlotsLeft") is not None else 0 launcherSlots = fitModAttr("launcherSlotsLeft") if fitModAttr("launcherSlotsLeft") is not None else 0 droneBandwidth = fitModAttr("droneBandwidth") if fitModAttr("droneBandwidth") is not None else 0 weaponBonusMultipliers = EfsPort.getWeaponBonusMultipliers(fit) effectiveTurretSlots = round(turretSlots * weaponBonusMultipliers["turret"], 2) effectiveLauncherSlots = round(launcherSlots * weaponBonusMultipliers["launcher"], 2) effectiveDroneBandwidth = round(droneBandwidth * weaponBonusMultipliers["droneBandwidth"], 2) # Assume a T2 siege module for dreads if fit.ship.item.group.name == "Dreadnought": effectiveTurretSlots *= 9.4 effectiveLauncherSlots *= 15 hullResonance = { "exp": fitModAttr("explosiveDamageResonance"), "kin": fitModAttr("kineticDamageResonance"), "therm": fitModAttr("thermalDamageResonance"), "em": fitModAttr("emDamageResonance") } armorResonance = { "exp": fitModAttr("armorExplosiveDamageResonance"), "kin": fitModAttr("armorKineticDamageResonance"), "therm": fitModAttr("armorThermalDamageResonance"), "em": fitModAttr("armorEmDamageResonance") } shieldResonance = { "exp": fitModAttr("shieldExplosiveDamageResonance"), "kin": fitModAttr("shieldKineticDamageResonance"), "therm": fitModAttr("shieldThermalDamageResonance"), "em": fitModAttr("shieldEmDamageResonance") } resonance = {"hull": hullResonance, "armor": armorResonance, "shield": shieldResonance} shipSize = EfsPort.getShipSize(fit.ship.item.groupID) # Export at maximum spool for consistency, spoolup data is exported anyway. defaultSpoolValue = 1 spoolOptions = SpoolOptions(SpoolType.SPOOL_SCALE, defaultSpoolValue, True) cargoIDs = [] for cargo in fit.cargo: cargoIDs.append(cargo.itemID) repairs = EfsPort.getRepairData(fit, sFit) def roundNumbers(data, digits): if isinstance(data, str): return if isinstance(data, dict): for key in data: if isinstance(data[key], Number): data[key] = round(data[key], digits) else: roundNumbers(data[key], digits) if isinstance(data, list) or isinstance(data, tuple): for val in data: roundNumbers(val, digits) if isinstance(data, Number): rounded = round(data, digits) if data != rounded: pyfalog.error("Error rounding numbers for EFS export, export may be inconsistent." "This suggests the format has been broken somewhere.") return try: dataDict = { "name": fitName, "ehp": fit.ehp, "droneDPS": fit.getDroneDps().total, "droneVolley": fit.getDroneVolley().total, "hp": fit.hp, "maxTargets": fit.maxTargets, "maxSpeed": fit.maxSpeed, "weaponVolley": fit.getWeaponVolley(spoolOptions=spoolOptions).total, "totalVolley": fit.getTotalVolley(spoolOptions=spoolOptions).total, "maxTargetRange": fit.maxTargetRange, "scanStrength": fit.scanStrength, "weaponDPS": fit.getWeaponDps(spoolOptions=spoolOptions).total, "alignTime": fit.alignTime, "signatureRadius": fitModAttr("signatureRadius"), "weapons": weaponSystems, "scanRes": fitModAttr("scanResolution"), "capUsed": fit.capUsed, "capRecharge": fit.capRecharge, "capacitorCapacity": fitModAttr("capacitorCapacity"), "rechargeRate": fitModAttr("rechargeRate"), "rigSlots": fitModAttr("rigSlots"), "lowSlots": fitModAttr("lowSlots"), "midSlots": fitModAttr("medSlots"), "highSlots": fitModAttr("hiSlots"), "turretSlots": fitModAttr("turretSlotsLeft"), "launcherSlots": fitModAttr("launcherSlotsLeft"), "powerOutput": fitModAttr("powerOutput"), "cpuOutput": fitModAttr("cpuOutput"), "rigSize": fitModAttr("rigSize"), "effectiveTurrets": effectiveTurretSlots, "effectiveLaunchers": effectiveLauncherSlots, "effectiveDroneBandwidth": effectiveDroneBandwidth, "resonance": resonance, "typeID": fit.shipID, "groupID": fit.ship.item.groupID, "shipSize": shipSize, "droneControlRange": fitModAttr("droneControlRange"), "mass": fitModAttr("mass"), "shieldrechargetime": fitModAttr("shieldRechargeRate"), 'shipinertia': fitModAttr("agility"), "energyWarfareResistance": fitModAttr("energyWarfareResistance"), "unpropedSpeed": propData["unpropedSpeed"], "unpropedSig": propData["unpropedSig"], "usingMWD": propData["usingMWD"], "mwdPropSpeed": mwdPropSpeed, "projections": projections, "repairs": repairs, "modTypeIDs": modTypeIDs, "moduleNames": moduleNames, "cargoItemIDs": cargoIDs, "pyfaVersion": pyfaVersion, "efsExportVersion": EfsPort.version } # Recursively round any numbers in dicts to 6 decimal places. # This prevents meaningless rounding errors from changing the output whenever pyfa changes. roundNumbers(dataDict, 6) except TypeError as e: pyfalog.error("Error parsing fit:" + str(fit)) pyfalog.error(e) dataDict = {"name": fitName + "Fit could not be correctly parsed"} export = json.dumps(dataDict, skipkeys=True) if callback: callback(export) else: return export ================================================ FILE: service/port/eft.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re from logbook import Logger from eos.const import FittingModuleState, FittingSlot from eos.db.gamedata.queries import getDynamicItem from eos.saveddata.booster import Booster from eos.saveddata.cargo import Cargo from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit from eos.saveddata.implant import Implant from eos.saveddata.module import Module from eos.saveddata.ship import Ship from gui.fitCommands.helpers import activeStateLimit from service.const import PortEftOptions from service.fit import Fit as svcFit from service.market import Market from service.port.muta import parseMutant, renderMutant from service.port.shared import fetchItem pyfalog = Logger(__name__) MODULE_CATS = ('Module', 'Subsystem', 'Structure Module') SLOT_ORDER = (FittingSlot.LOW, FittingSlot.MED, FittingSlot.HIGH, FittingSlot.RIG, FittingSlot.SUBSYSTEM, FittingSlot.SERVICE) OFFLINE_SUFFIX = '/offline' NAME_CHARS = r'[^,/\[\]]' # Characters which are allowed to be used in name class MutationExportData: def __init__(self): self.reference = 1 self.mutants = {} def formatMutants(self): mutationLines = [] if self.mutants: for mutantReference in sorted(self.mutants): mutant = self.mutants[mutantReference] mutationLines.append(renderMutant(mutant, firstPrefix='[{}] '.format(mutantReference), prefix=' ')) return '\n'.join(mutationLines) def exportEft(fit, options, callback): mutaData = MutationExportData() # EFT formatted export is split in several sections, each section is # separated from another using 2 blank lines. Sections might have several # sub-sections, which are separated by 1 blank line sections = [] header = '[{}, {}]'.format(fit.ship.item.typeName, fit.name) # Section 1: modules, rigs, subsystems, services moduleExport = exportModules(fit.modules, options, mutaData=mutaData) if moduleExport: sections.append(moduleExport) # Section 2: drones, fighters minionSection = [] droneExport = exportDrones( fit.drones, exportMutants=options[PortEftOptions.MUTATIONS], mutaData=mutaData, standAlone=False) if droneExport: minionSection.append(droneExport) fighterExport = exportFighters(fit.fighters) if fighterExport: minionSection.append(fighterExport) if minionSection: sections.append('\n\n'.join(minionSection)) # Section 3: implants, boosters charSection = [] if options[PortEftOptions.IMPLANTS]: implantExport = exportImplants(fit.implants) if implantExport: charSection.append(implantExport) if options[PortEftOptions.BOOSTERS]: boosterExport = exportBoosters(fit.boosters) if boosterExport: charSection.append(boosterExport) if charSection: sections.append('\n\n'.join(charSection)) # Section 4: cargo if options[PortEftOptions.CARGO]: cargoExport = exportCargo(fit.cargo) if cargoExport: sections.append(cargoExport) # Section 5: mutated items' details if options[PortEftOptions.MUTATIONS]: mutationExport = mutaData.formatMutants() if mutationExport: sections.append(mutationExport) text = '{}\n\n{}'.format(header, '\n\n\n'.join(sections)) if callback: callback(text) else: return text def exportModules(modules, options, mutaData=None): if mutaData is None: mutaData = MutationExportData() modsBySlotType = {} for module in modules: modsBySlotType.setdefault(module.slot, []).append(module) modSection = [] for slotType in SLOT_ORDER: rackLines = [] rackModules = modsBySlotType.get(slotType, ()) for module in rackModules: if module.item: # if module was mutated, use base item name for export if module.isMutated: modName = module.baseItem.typeName else: modName = module.item.typeName if module.isMutated and options[PortEftOptions.MUTATIONS]: mutaData.mutants[mutaData.reference] = module mutationSuffix = ' [{}]'.format(mutaData.reference) mutaData.reference += 1 else: mutationSuffix = '' modOfflineSuffix = ' {}'.format(OFFLINE_SUFFIX) if module.state == FittingModuleState.OFFLINE else '' if module.charge and options[PortEftOptions.LOADED_CHARGES]: rackLines.append('{}, {}{}{}'.format( modName, module.charge.typeName, modOfflineSuffix, mutationSuffix)) else: rackLines.append('{}{}{}'.format(modName, modOfflineSuffix, mutationSuffix)) else: rackLines.append('[Empty {} slot]'.format( FittingSlot(slotType).name.capitalize() if slotType is not None else '')) if rackLines: modSection.append('\n'.join(rackLines)) return '\n\n'.join(modSection) def exportDrones(drones, exportMutants=True, mutaData=None, standAlone=True): # Same as in drone additions panel DRONE_ORDER = ('Light Scout Drones', 'Medium Scout Drones', 'Heavy Attack Drones', 'Sentry Drones', 'Combat Utility Drones', 'Electronic Warfare Drones', 'Logistic Drones', 'Mining Drones', 'Salvage Drones') def getDroneName(drone): if drone.isMutated: return drone.baseItem.typeName return drone.item.typeName def droneSorter(drone): if drone.isMutated: item = drone.baseItem else: item = drone.item groupName = Market.getInstance().getMarketGroupByItem(item).marketGroupName return (DRONE_ORDER.index(groupName), drone.isMutated, drone.fullName) if mutaData is None: mutaData = MutationExportData() sections = [] droneLines = [] for drone in sorted(drones, key=droneSorter): if drone.isMutated and exportMutants: mutaData.mutants[mutaData.reference] = drone mutationSuffix = ' [{}]'.format(mutaData.reference) mutaData.reference += 1 else: mutationSuffix = '' droneLines.append('{} x{}{}'.format(getDroneName(drone), drone.amount, mutationSuffix)) if droneLines: sections.append('\n'.join(droneLines)) if exportMutants and mutaData.mutants and standAlone: sections.append(mutaData.formatMutants()) return '\n\n\n'.join(sections) def exportFighters(fighters): # Same as in drone additions panel FIGHTER_ORDER = ( 'Light Fighter', 'Structure Light Fighter', 'Heavy Fighter', 'Structure Heavy Fighter', 'Support Fighter', 'Structure Support Fighter') def fighterSorter(fighter): groupName = Market.getInstance().getGroupByItem(fighter.item).name return (FIGHTER_ORDER.index(groupName), fighter.item.typeName) fighterLines = [] for fighter in sorted(fighters, key=fighterSorter): fighterLines.append('{} x{}'.format(fighter.item.typeName, fighter.amount)) return '\n'.join(fighterLines) def exportImplants(implants): implantLines = [] for implant in sorted(implants, key=lambda i: i.slot or 0): implantLines.append(implant.item.typeName) return '\n'.join(implantLines) def exportBoosters(boosters): boosterLines = [] for booster in sorted(boosters, key=lambda b: b.slot or 0): boosterLines.append(booster.item.typeName) return '\n'.join(boosterLines) def exportCargo(cargos): cargoLines = [] for cargo in sorted(cargos, key=lambda c: (c.item.group.category.name, c.item.group.name, c.item.typeName)): cargoLines.append('{} x{}'.format(cargo.item.typeName, cargo.amount)) return '\n'.join(cargoLines) def importEft(lines): lines = _importPrepare(lines) try: fit = _importCreateFit(lines) except EftImportError: return aFit = AbstractFit() aFit.mutations = importGetMutationData(lines) stubPattern = r'^\[.+?\]$' modulePattern = r'^(?P{0}+?)(,\s*(?P{0}+?))?(?P\s*/(OFFLINE|offline))?(\s*\[(?P\d+?)\])?$'.format(NAME_CHARS) droneCargoPattern = r'^(?P{}+?) x(?P\d+?)(\s*\[(?P\d+?)\])?$'.format(NAME_CHARS) sections = [] for section in _importSectionIter(lines): for line in section.lines: # Stub line if re.match(stubPattern, line): section.itemSpecs.append(None) continue # Items with quantity specifier m = re.match(droneCargoPattern, line) if m: try: itemSpec = MultiItemSpec(m.group('typeName')) # Items which cannot be fetched are considered as stubs except EftImportError: section.itemSpecs.append(None) else: itemSpec.amount = int(m.group('amount')) section.itemSpecs.append(itemSpec) if m.group('mutation'): itemSpec.mutationIdx = int(m.group('mutation')) continue # All other items m = re.match(modulePattern, line) if m: try: itemSpec = RegularItemSpec(m.group('typeName'), chargeName=m.group('chargeName')) # Items which cannot be fetched are considered as stubs except EftImportError: section.itemSpecs.append(None) else: if m.group('offline'): itemSpec.offline = True if m.group('mutation'): itemSpec.mutationIdx = int(m.group('mutation')) section.itemSpecs.append(itemSpec) continue _clearTail(section.itemSpecs) sections.append(section) hasDroneBay = any(s.isDroneBay for s in sections) hasFighterBay = any(s.isFighterBay for s in sections) for section in sections: if section.isModuleRack: aFit.addModules(section.itemSpecs) elif section.isImplantRack: for itemSpec in section.itemSpecs: aFit.addImplant(itemSpec) elif section.isDroneBay: for itemSpec in section.itemSpecs: aFit.addDrone(itemSpec) elif section.isFighterBay: for itemSpec in section.itemSpecs: aFit.addFighter(itemSpec) elif section.isCargoHold: for itemSpec in section.itemSpecs: aFit.addCargo(itemSpec) # Mix between different kinds of item specs (can happen when some # blank lines are removed) else: for itemSpec in section.itemSpecs: if itemSpec is None: continue if itemSpec.isModule: aFit.addModule(itemSpec) elif itemSpec.isImplant: aFit.addImplant(itemSpec) elif itemSpec.isDrone and not hasDroneBay: aFit.addDrone(itemSpec) elif itemSpec.isFighter and not hasFighterBay: aFit.addFighter(itemSpec) elif itemSpec.isCargo: aFit.addCargo(itemSpec) # Subsystems first because they modify slot amount for i, m in enumerate(aFit.subsystems): if m is None: dummy = Module.buildEmpty(aFit.getSlotByContainer(aFit.subsystems)) dummy.owner = fit fit.modules.replaceRackPosition(i, dummy) elif m.fits(fit): m.owner = fit fit.modules.replaceRackPosition(i, m) sFit = svcFit.getInstance() sFit.recalc(fit) sFit.fill(fit) # Other stuff for modRack in ( aFit.rigs, aFit.services, aFit.modulesHigh, aFit.modulesMed, aFit.modulesLow, ): for i, m in enumerate(modRack): if m is None: dummy = Module.buildEmpty(aFit.getSlotByContainer(modRack)) dummy.owner = fit fit.modules.replaceRackPosition(i, dummy) elif m.fits(fit): m.owner = fit if not m.isValidState(m.state): pyfalog.warning('service.port.eft.importEft: module {} cannot have state {}', m, m.state) fit.modules.replaceRackPosition(i, m) for implant in aFit.implants: fit.implants.append(implant) for booster in aFit.boosters: fit.boosters.append(booster) for drone in aFit.drones: fit.drones.append(drone) for fighter in aFit.fighters: fit.fighters.append(fighter) for cargo in aFit.cargo.values(): fit.cargo.append(cargo) return fit def importEftCfg(shipname, lines, progress): """Handle import from EFT config store file""" # Check if we have such ship in database, bail if we don't sMkt = Market.getInstance() try: sMkt.getItem(shipname) except (KeyboardInterrupt, SystemExit): raise except: return [] # empty list is expected fits = [] # List for fits fitIndices = [] # List for starting line numbers for each fit for line in lines: # Detect fit header if line[:1] == "[" and line[-1:] == "]": # Line index where current fit starts startPos = lines.index(line) fitIndices.append(startPos) for i, startPos in enumerate(fitIndices): if progress and progress.userCancelled: return [] # End position is last file line if we're trying to get it for last fit, # or start position of next fit minus 1 endPos = len(lines) if i == len(fitIndices) - 1 else fitIndices[i + 1] # Finally, get lines for current fitting fitLines = lines[startPos:endPos] try: # Create fit object fitobj = Fit() # Strip square brackets and pull out a fit name fitobj.name = fitLines[0][1:-1] # Assign ship to fitting try: fitobj.ship = Ship(sMkt.getItem(shipname)) except ValueError: fitobj.ship = Citadel(sMkt.getItem(shipname)) moduleList = [] for x in range(1, len(fitLines)): line = fitLines[x] if not line: continue # Parse line into some data we will need misc = re.match(r"(Drones|Implant|Booster)_(Active|Inactive)=(.+)", line) cargo = re.match(r"Cargohold=(.+)", line) # 2017/03/27 NOTE: store description from EFT description = re.match(r"Description=(.+)", line) if misc: entityType = misc.group(1) entityState = misc.group(2) entityData = misc.group(3) if entityType == "Drones": droneData = re.match(r"(.+),([0-9]+)", entityData) # Get drone name and attempt to detect drone number droneName = droneData.group(1) if droneData else entityData droneAmount = int(droneData.group(2)) if droneData else 1 # Bail if we can't get item or it's not from drone category try: droneItem = sMkt.getItem(droneName, eager="group.category") except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") continue if droneItem.category.name == "Drone": # Add drone to the fitting d = Drone(droneItem) d.amount = droneAmount if entityState == "Active": d.amountActive = droneAmount elif entityState == "Inactive": d.amountActive = 0 fitobj.drones.append(d) elif droneItem.category.name == "Fighter": # EFT saves fighter as drones ft = Fighter(droneItem) ft.amount = int(droneAmount) if ft.amount <= ft.fighterSquadronMaxSize else ft.fighterSquadronMaxSize fitobj.fighters.append(ft) else: continue elif entityType == "Implant": # Bail if we can't get item or it's not from implant category try: implantItem = sMkt.getItem(entityData, eager="group.category") except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") continue if implantItem.category.name != "Implant": continue # Add implant to the fitting imp = Implant(implantItem) if entityState == "Active": imp.active = True elif entityState == "Inactive": imp.active = False fitobj.implants.append(imp) elif entityType == "Booster": # Bail if we can't get item or it's not from implant category try: boosterItem = sMkt.getItem(entityData, eager="group.category") except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") continue # All boosters have implant category if boosterItem.category.name != "Implant": continue # Add booster to the fitting b = Booster(boosterItem) if entityState == "Active": b.active = True elif entityState == "Inactive": b.active = False fitobj.boosters.append(b) # If we don't have any prefixes, then it's a module elif cargo: cargoData = re.match(r"(.+),([0-9]+)", cargo.group(1)) cargoName = cargoData.group(1) if cargoData else cargo.group(1) cargoAmount = int(cargoData.group(2)) if cargoData else 1 # Bail if we can't get item try: item = sMkt.getItem(cargoName) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") continue # Add Cargo to the fitting c = Cargo(item) c.amount = cargoAmount fitobj.cargo.append(c) # 2017/03/27 NOTE: store description from EFT elif description: fitobj.notes = description.group(1).replace("|", "\n") else: withCharge = re.match(r"(.+),(.+)", line) modName = withCharge.group(1) if withCharge else line chargeName = withCharge.group(2) if withCharge else None # If we can't get module item, skip it try: modItem = sMkt.getItem(modName) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") continue # Create module m = Module(modItem) # Add subsystems before modules to make sure T3 cruisers have subsystems installed if modItem.category.name == "Subsystem": if m.fits(fitobj): fitobj.modules.append(m) else: m.owner = fitobj # Activate mod if it is activable if m.isValidState(FittingModuleState.ACTIVE): m.state = activeStateLimit(m.item) # Add charge to mod if applicable, on any errors just don't add anything if chargeName: try: chargeItem = sMkt.getItem(chargeName, eager="group.category") if chargeItem.category.name == "Charge": m.charge = chargeItem except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Cannot get item.") pass # Append module to fit moduleList.append(m) # Recalc to get slot numbers correct for T3 cruisers sFit = svcFit.getInstance() sFit.recalc(fitobj) sFit.fill(fitobj) for module in moduleList: if module.fits(fitobj): fitobj.modules.append(module) # Append fit to list of fits fits.append(fitobj) if progress: progress.message = "%s:\n%s" % (fitobj.ship.name, fitobj.name) except (KeyboardInterrupt, SystemExit): raise # Skip fit silently if we get an exception except Exception as e: pyfalog.error("Caught exception on fit.") pyfalog.error(e) pass return fits def _importPrepare(lines): for i in range(len(lines)): lines[i] = lines[i].strip() while lines and not lines[0]: del lines[0] while lines and not lines[-1]: del lines[-1] return lines mutantHeaderPattern = re.compile(r'^\[(?P\d+)\](?P.*)') def importGetMutationData(lines): # Format: {ref: [lines]} mutaLinesMap = {} currentMutaRef = None currentMutaLines = [] consumedIndices = set() def completeMutaLines(): if currentMutaRef is not None and currentMutaLines: mutaLinesMap[currentMutaRef] = currentMutaLines for i, line in enumerate(lines): m = mutantHeaderPattern.match(line) # Start and reset at header line if m: completeMutaLines() currentMutaRef = int(m.group('ref')) currentMutaLines = [] currentMutaLines.append(m.group('tail')) consumedIndices.add(i) # Reset at blank line elif not line: completeMutaLines() currentMutaRef = None currentMutaLines = [] elif currentMutaRef is not None: currentMutaLines.append(line) consumedIndices.add(i) else: completeMutaLines() # Clear mutant info from source for i in sorted(consumedIndices, reverse=True): del lines[i] # Run parsing data = {} for ref, mutaLines in mutaLinesMap.items(): _, mutaType, mutaAttrs = parseMutant(mutaLines) data[ref] = (mutaType, mutaAttrs) return data def _importSectionIter(lines): section = Section() for line in lines: if not line: if section.lines: yield section section = Section() else: section.lines.append(line) if section.lines: yield section def _importCreateFit(lines): """Create fit and set top-level entity (ship or citadel).""" fit = Fit() header = lines.pop(0) m = re.match(r'\[(?P[^,]+),\s*(?P.+)\]', header) if not m: pyfalog.warning('service.port.eft.importEft: corrupted fit header') raise EftImportError shipType = m.group('shipType').strip() fitName = m.group('fitName').strip() try: ship = fetchItem(shipType) try: fit.ship = Ship(ship) except ValueError: fit.ship = Citadel(ship) fit.name = fitName except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning('service.port.eft.importEft: exception caught when parsing header') raise EftImportError return fit def _clearTail(lst): while lst and lst[-1] is None: del lst[-1] class EftImportError(Exception): """Exception class emitted and consumed by EFT importer internally.""" ... class Section: def __init__(self): self.lines = [] self.itemSpecs = [] self.__itemDataCats = None @property def itemDataCats(self): if self.__itemDataCats is None: cats = set() for itemSpec in self.itemSpecs: if itemSpec is None: continue cats.add(itemSpec.item.category.name) self.__itemDataCats = tuple(sorted(cats)) return self.__itemDataCats @property def isModuleRack(self): return all(i is None or i.isModule for i in self.itemSpecs) @property def isImplantRack(self): return all(i is not None and i.isImplant for i in self.itemSpecs) @property def isDroneBay(self): return all(i is not None and i.isDrone for i in self.itemSpecs) @property def isFighterBay(self): return all(i is not None and i.isFighter for i in self.itemSpecs) @property def isCargoHold(self): return ( all(i is not None and i.isCargo for i in self.itemSpecs) and not self.isDroneBay and not self.isFighterBay) class BaseItemSpec: def __init__(self, typeName): item = fetchItem(typeName, eagerCat=True) if item is None: raise EftImportError self.typeName = typeName self.item = item @property def isModule(self): return False @property def isImplant(self): return False @property def isDrone(self): return False @property def isFighter(self): return False @property def isCargo(self): return False class RegularItemSpec(BaseItemSpec): def __init__(self, typeName, chargeName=None): super().__init__(typeName) self.charge = self.__fetchCharge(chargeName) self.offline = False self.mutationIdx = None def __fetchCharge(self, chargeName): if chargeName: charge = fetchItem(chargeName, eagerCat=True) if not charge or charge.category.name != 'Charge': charge = None else: charge = None return charge @property def isModule(self): return self.item.category.name in MODULE_CATS @property def isImplant(self): return ( self.item.category.name == 'Implant' and ( 'implantness' in self.item.attributes or 'boosterness' in self.item.attributes)) class MultiItemSpec(BaseItemSpec): def __init__(self, typeName): super().__init__(typeName) self.amount = 0 self.mutationIdx = None @property def isDrone(self): return self.item.category.name == 'Drone' @property def isFighter(self): return self.item.category.name == 'Fighter' @property def isCargo(self): return True class AbstractFit: def __init__(self): # Modules self.modulesHigh = [] self.modulesMed = [] self.modulesLow = [] self.rigs = [] self.subsystems = [] self.services = [] # Non-modules self.implants = [] self.boosters = [] self.drones = [] self.fighters = [] self.cargo = {} # Format: {item: Cargo} # Other stuff self.mutations = {} # Format: {reference: (mutaplamid item, {attr ID: attr value})} @property def __slotContainerMap(self): return { FittingSlot.HIGH: self.modulesHigh, FittingSlot.MED: self.modulesMed, FittingSlot.LOW: self.modulesLow, FittingSlot.RIG: self.rigs, FittingSlot.SUBSYSTEM: self.subsystems, FittingSlot.SERVICE: self.services} def getContainerBySlot(self, slotType): return self.__slotContainerMap.get(slotType) def getSlotByContainer(self, container): slotType = None for k, v in self.__slotContainerMap.items(): if v is container: slotType = k break return slotType def addModules(self, itemSpecs): modules = [] slotTypes = set() for itemSpec in itemSpecs: if itemSpec is None: modules.append(None) continue m = self.__makeModule(itemSpec) if m is None: modules.append(None) continue modules.append(m) slotTypes.add(m.slot) _clearTail(modules) # If all the modules have same slot type, put them to appropriate # container with stubs if len(slotTypes) == 1: slotType = tuple(slotTypes)[0] self.getContainerBySlot(slotType).extend(modules) # Otherwise, put just modules else: for m in modules: if m is None: continue self.getContainerBySlot(m.slot).append(m) def addModule(self, itemSpec): if itemSpec is None: return m = self.__makeModule(itemSpec) if m is not None: self.getContainerBySlot(m.slot).append(m) def __makeModule(self, itemSpec): # Mutate item if needed m = None if itemSpec.mutationIdx in self.mutations: mutaItem, mutaAttrs = self.mutations[itemSpec.mutationIdx] mutaplasmid = getDynamicItem(mutaItem.ID) if mutaplasmid: try: m = Module(mutaplasmid.resultingItem, itemSpec.item, mutaplasmid) except ValueError: pass else: for attrID, mutator in m.mutators.items(): if attrID in mutaAttrs: mutator.value = mutaAttrs[attrID] # If we still don't have item (item is not mutated or we # failed to construct mutated item), try to make regular item if m is None: try: m = Module(itemSpec.item) except ValueError: return None if itemSpec.charge is not None and m.isValidCharge(itemSpec.charge): m.charge = itemSpec.charge if itemSpec.offline and m.isValidState(FittingModuleState.OFFLINE): m.state = FittingModuleState.OFFLINE elif m.isValidState(FittingModuleState.ACTIVE): m.state = activeStateLimit(m.item) return m def addImplant(self, itemSpec): if itemSpec is None: return if 'implantness' in itemSpec.item.attributes: self.implants.append(Implant(itemSpec.item)) elif 'boosterness' in itemSpec.item.attributes: self.boosters.append(Booster(itemSpec.item)) else: pyfalog.error('Failed to import implant: {}', itemSpec.typeName) def addDrone(self, itemSpec): if itemSpec is None: return drone = None if itemSpec.mutationIdx in self.mutations: mutaItem, mutaAttrs = self.mutations[itemSpec.mutationIdx] mutaplasmid = getDynamicItem(mutaItem.ID) if mutaplasmid: try: drone = Drone(mutaplasmid.resultingItem, itemSpec.item, mutaplasmid) except ValueError: pass else: for attrID, mutator in drone.mutators.items(): if attrID in mutaAttrs: mutator.value = mutaAttrs[attrID] if drone is None: try: drone = Drone(itemSpec.item) except ValueError: return drone.amount = itemSpec.amount if drone.isMutated: self.drones.append(drone) else: for fitDrone in self.drones: if fitDrone.item.ID == itemSpec.item.ID: fitDrone.amount += drone.amount break else: self.drones.append(drone) def addFighter(self, itemSpec): if itemSpec is None: return fighter = Fighter(itemSpec.item) fighter.amount = itemSpec.amount self.fighters.append(fighter) def addCargo(self, itemSpec): if itemSpec is None: return if itemSpec.item not in self.cargo: self.cargo[itemSpec.item] = Cargo(itemSpec.item) self.cargo[itemSpec.item].amount += itemSpec.amount def lineIter(text): """Iterate over non-blank lines.""" for line in text.splitlines(): line = line.strip() if line: yield line def parseAdditions(text, mutaData=None): items = [] sMkt = Market.getInstance() pattern = r'^(?P{}+?)( x(?P\d+?))?(\s*\[(?P\d+?)\])?$'.format(NAME_CHARS) for line in lineIter(text): m = re.match(pattern, line) if not m: continue item = sMkt.getItem(m.group('typeName')) if item is None: continue amount = m.group('amount') amount = 1 if amount is None else int(amount) mutaRef = int(m.group('mutaref')) if m.group('mutaref') else None if mutaRef and mutaData and mutaRef in mutaData: mutation = mutaData[mutaRef] else: mutation = None items.append((item, amount, mutation)) return items def isValidDroneImport(text): lines = list(lineIter(text)) mutaData = importGetMutationData(lines) text = '\n'.join(lines) pattern = r'x\d+(\s*\[\d+\])?$' for line in lineIter(text): if not re.search(pattern, line): return False, () itemData = parseAdditions(text, mutaData=mutaData) if not itemData: return False, () for item, amount, mutation in itemData: if not item.isDrone: return False, () return True, itemData def isValidFighterImport(text): pattern = r'x\d+$' for line in lineIter(text): if not re.search(pattern, line): return False, () itemData = parseAdditions(text) if not itemData: return False, () for item, amount, mutation in itemData: if not item.isFighter: return False, () return True, itemData def isValidCargoImport(text): pattern = r'x\d+$' for line in lineIter(text): if not re.search(pattern, line): return False, () itemData = parseAdditions(text) if not itemData: return False, () for item, amount, mutation in itemData: if item.isAbyssal: return False, () return True, itemData def isValidImplantImport(text): pattern = r'x\d+$' for line in lineIter(text): if re.search(pattern, line): return False, () itemData = parseAdditions(text) if not itemData: return False, () for item, amount, mutation in itemData: if not item.isImplant: return False, () return True, itemData def isValidBoosterImport(text): pattern = r'x\d+$' for line in lineIter(text): if re.search(pattern, line): return False, () itemData = parseAdditions(text) if not itemData: return False, () for item, amount, mutation in itemData: if not item.isBooster: return False, () return True, itemData ================================================ FILE: service/port/esi.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import json from collections import defaultdict from logbook import Logger from eos.const import FittingModuleState, FittingSlot from eos.saveddata.cargo import Cargo from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit from eos.saveddata.module import Module from eos.saveddata.ship import Ship from gui.fitCommands.helpers import activeStateLimit from service.fit import Fit as svcFit from service.market import Market class ESIExportException(Exception): pass pyfalog = Logger(__name__) INV_FLAGS = { FittingSlot.LOW: 11, FittingSlot.MED: 19, FittingSlot.HIGH: 27, FittingSlot.RIG: 92, FittingSlot.SUBSYSTEM: 125, FittingSlot.SERVICE: 164 } INV_FLAG_CARGOBAY = 5 INV_FLAG_DRONEBAY = 87 INV_FLAG_FIGHTER = 158 def exportESI(ofit, exportCharges, exportImplants, exportBoosters, callback): # A few notes: # max fit name length is 50 characters # Most keys are created simply because they are required, but bogus data is okay nested_dict = lambda: defaultdict(nested_dict) fit = nested_dict() sFit = svcFit.getInstance() # max length is 50 characters name = ofit.name[:47] + '...' if len(ofit.name) > 50 else ofit.name fit['name'] = name fit['ship_type_id'] = ofit.ship.item.ID # 2017/03/29 NOTE: "<" or "<" is Ignored # fit['description'] = "" % ofit.ID fit['description'] = "" if ofit.notes is None else ofit.notes[:397] + '...' if len(ofit.notes) > 400 else ofit.notes fit['items'] = [] slotNum = {} charges = {} for module in ofit.modules: if module.isEmpty: continue item = nested_dict() slot = module.slot if slot == FittingSlot.SUBSYSTEM: # Order of subsystem matters based on this attr. See GH issue #130 slot = int(module.getModifiedItemAttr("subSystemSlot")) item['flag'] = slot else: if slot not in slotNum: slotNum[slot] = INV_FLAGS[slot] item['flag'] = slotNum[slot] slotNum[slot] += 1 item['quantity'] = 1 item['type_id'] = module.item.ID fit['items'].append(item) if module.charge and exportCharges: if module.chargeID not in charges: charges[module.chargeID] = 0 # `or 1` because some charges (ie scripts) are without qty charges[module.chargeID] += module.numCharges or 1 for cargo in ofit.cargo: item = nested_dict() item['flag'] = INV_FLAG_CARGOBAY item['quantity'] = cargo.amount item['type_id'] = cargo.item.ID fit['items'].append(item) for chargeID, amount in list(charges.items()): item = nested_dict() item['flag'] = INV_FLAG_CARGOBAY item['quantity'] = amount item['type_id'] = chargeID fit['items'].append(item) for drone in ofit.drones: item = nested_dict() item['flag'] = INV_FLAG_DRONEBAY item['quantity'] = drone.amount item['type_id'] = drone.item.ID fit['items'].append(item) for fighter in ofit.fighters: item = nested_dict() item['flag'] = INV_FLAG_FIGHTER item['quantity'] = fighter.amount item['type_id'] = fighter.item.ID fit['items'].append(item) if exportImplants: for implant in ofit.implants: item = nested_dict() item['flag'] = INV_FLAG_CARGOBAY item['quantity'] = 1 item['type_id'] = implant.item.ID fit['items'].append(item) if exportBoosters: for booster in ofit.boosters: item = nested_dict() item['flag'] = INV_FLAG_CARGOBAY item['quantity'] = 1 item['type_id'] = booster.item.ID fit['items'].append(item) if len(fit['items']) == 0: raise ESIExportException("Cannot export fitting: module list cannot be empty.") text = json.dumps(fit) if callback: callback(text) else: return text def importESI(string): sMkt = Market.getInstance() fitobj = Fit() refobj = json.loads(string) items = refobj['items'] # "<" and ">" is replace to "<", ">" by EVE client fitobj.name = refobj['name'] # 2017/03/29: read description fitobj.notes = refobj['description'] try: ship = refobj['ship_type_id'] try: fitobj.ship = Ship(sMkt.getItem(ship)) except ValueError: fitobj.ship = Citadel(sMkt.getItem(ship)) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Caught exception in importESI") return None items.sort(key=lambda k: k['flag']) moduleList = [] for module in items: try: item = sMkt.getItem(module['type_id'], eager="group.category") if not item.published: continue if module['flag'] == INV_FLAG_DRONEBAY: d = Drone(item) d.amount = module['quantity'] fitobj.drones.append(d) elif module['flag'] == INV_FLAG_CARGOBAY: c = Cargo(item) c.amount = module['quantity'] fitobj.cargo.append(c) elif module['flag'] == INV_FLAG_FIGHTER: fighter = Fighter(item) fitobj.fighters.append(fighter) else: try: m = Module(item) # When item can't be added to any slot (unknown item or just charge), ignore it except ValueError: pyfalog.debug("Item can't be added to any slot (unknown item or just charge)") continue # Add subsystems before modules to make sure T3 cruisers have subsystems installed if item.category.name == "Subsystem": if m.fits(fitobj): fitobj.modules.append(m) else: if m.isValidState(FittingModuleState.ACTIVE): m.state = activeStateLimit(m.item) moduleList.append(m) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning("Could not process module.") continue # Recalc to get slot numbers correct for T3 cruisers sFit = svcFit.getInstance() sFit.recalc(fitobj) sFit.fill(fitobj) for module in moduleList: if module.fits(fitobj): fitobj.modules.append(module) return fitobj ================================================ FILE: service/port/multibuy.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from service.const import PortMultiBuyOptions from service.price import Price as sPrc def exportMultiBuy(fit, options, callback): itemAmounts = {} for module in fit.modules: if module.item: # Mutated items are of no use for multibuy if module.isMutated: continue _addItem(itemAmounts, module.item) if module.charge and options[PortMultiBuyOptions.LOADED_CHARGES]: _addItem(itemAmounts, module.charge, module.numCharges) for drone in fit.drones: _addItem(itemAmounts, drone.item, drone.amount) for fighter in fit.fighters: _addItem(itemAmounts, fighter.item, fighter.amount) if options[PortMultiBuyOptions.CARGO]: for cargo in fit.cargo: _addItem(itemAmounts, cargo.item, cargo.amount) if options[PortMultiBuyOptions.IMPLANTS]: for implant in fit.implants: _addItem(itemAmounts, implant.item) if options[PortMultiBuyOptions.BOOSTERS]: for booster in fit.boosters: _addItem(itemAmounts, booster.item) if options[PortMultiBuyOptions.OPTIMIZE_PRICES]: def formatCheaperExportCb(replacementsCheaper): updatedAmounts = {} for item, itemAmount in itemAmounts.items(): _addItem(updatedAmounts, replacementsCheaper.get(item, item), itemAmount) string = _prepareString(fit.ship.item, updatedAmounts) callback(string) priceSvc = sPrc.getInstance() priceSvc.findCheaperReplacements(itemAmounts, formatCheaperExportCb) else: string = _prepareString(fit.ship.item, itemAmounts) if callback: callback(string) else: return string def _addItem(container, item, quantity=1): if item not in container: container[item] = 0 container[item] += quantity def _prepareString(shipItem, itemAmounts): exportLines = [] exportLines.append(shipItem.typeName) for item in sorted(itemAmounts, key=lambda i: (i.group.category.name, i.group.name, i.name)): count = itemAmounts[item] if count == 1: exportLines.append(item.typeName) else: exportLines.append('{} x{}'.format(item.typeName, count)) return "\n".join(exportLines) ================================================ FILE: service/port/muta.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re from eos.db.gamedata.queries import getAttributeInfo, getDynamicItem from eos.utils.float import floatUnerr from service.port.shared import fetchItem from service.esiAccess import EsiAccess def renderMutant(mutant, firstPrefix='', prefix=''): exportLines = [] exportLines.append('{}{}'.format(firstPrefix, mutant.baseItem.name)) exportLines.append('{}{}'.format(prefix, mutant.mutaplasmid.item.name)) exportLines.append('{}{}'.format(prefix, renderMutantAttrs(mutant))) return '\n'.join(exportLines) def renderMutantAttrs(mutant): mutatedAttrs = {} for attrID, mutator in mutant.mutators.items(): attrName = getAttributeInfo(attrID).name mutatedAttrs[attrName] = mutator.value return ', '.join( '{} {}'.format(a, floatUnerr(mutatedAttrs[a])) for a in sorted(mutatedAttrs)) def parseMutant(lines): # Fetch base item type try: baseItemName = lines[0] except IndexError: return None baseItem = fetchItem(baseItemName.strip()) if baseItem is None: return None, None, {} # Fetch mutaplasmid item type and actual item try: mutaplasmidName = lines[1] except IndexError: return baseItem, None, {} mutaplasmidItem = fetchItem(mutaplasmidName.strip()) if mutaplasmidItem is None: return baseItem, None, {} mutaplasmidItem = getDynamicItem(mutaplasmidItem.ID) # Process mutated attribute values try: mutationsLine = lines[2] except IndexError: return baseItem, mutaplasmidItem, {} mutations = parseMutantAttrs(mutationsLine) return baseItem, mutaplasmidItem, mutations def parseMutantAttrs(line): mutations = {} pairs = [p.strip() for p in line.split(',')] for pair in pairs: try: attrName, value = pair.split(' ') except ValueError: continue try: value = float(value) except (ValueError, TypeError): continue attrInfo = getAttributeInfo(attrName.strip()) if attrInfo is None: continue mutations[attrInfo.ID] = value return mutations def parseDynamicItemString(text): m = re.search(r'\d+)//(?P\d+)>.+', text) if m: typeID = int(m.group('typeid')) itemID = int(m.group('itemid')) return typeID, itemID return None def fetchDynamicItem(dynamicItemData): typeID, itemID = dynamicItemData esiData = EsiAccess().getDynamicItem(typeID, itemID).json() baseItemID = esiData['source_type_id'] mutaplasmidID = esiData['mutator_type_id'] attrs = {i['attribute_id']: i['value'] for i in esiData['dogma_attributes']} baseItem = fetchItem(baseItemID) mutaplasmid = getDynamicItem(mutaplasmidID) return baseItem, mutaplasmid, attrs ================================================ FILE: service/port/port.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re import os import threading import xml.dom import xml.parsers.expat from codecs import open from bs4 import UnicodeDammit from logbook import Logger from eos import db from eos.const import ImplantLocation from service.fit import Fit as svcFit from service.port.dna import exportDna, importDna, importDnaAlt from service.port.eft import ( exportEft, importEft, importEftCfg, isValidDroneImport, isValidFighterImport, isValidCargoImport, isValidImplantImport, isValidBoosterImport) from service.port.esi import exportESI, importESI from service.port.multibuy import exportMultiBuy from service.port.shipstats import exportFitStats from service.port.xml import importXml, exportXml from service.port.muta import parseMutant, parseDynamicItemString, fetchDynamicItem pyfalog = Logger(__name__) # 2017/04/05 NOTE: simple validation, for xml file RE_XML_START = r'<\?xml\s+version="1.0"[^<>]*\?>' class Port: """Service which houses all import/export format functions""" instance = None __tag_replace_flag = True @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Port() return cls.instance @classmethod def set_tag_replace(cls, b): cls.__tag_replace_flag = b @classmethod def is_tag_replace(cls): # might there is a person who wants to hold tags. # (item link in EVE client etc. When importing again to EVE) return cls.__tag_replace_flag @staticmethod def backupFits(path, progress): pyfalog.debug("Starting backup fits thread.") def backupFitsWorkerFunc(path, progress): try: backedUpFits = Port.exportXml(svcFit.getInstance().getAllFits(), progress) if backedUpFits: progress.message = f'writing {path}' backupFile = open(path, "w", encoding="utf-8") backupFile.write(backedUpFits) backupFile.close() except (KeyboardInterrupt, SystemExit): raise except Exception as e: progress.error = f'{e}' finally: progress.current += 1 progress.workerWorking = False threading.Thread( target=backupFitsWorkerFunc, args=(path, progress) ).start() @staticmethod def importFitsThreaded(paths, progress): """ :param paths: fits data file path list. :rtype: None """ pyfalog.debug("Starting import fits thread.") def importFitsFromFileWorkerFunc(paths, progress): Port.importFitFromFiles(paths, progress) threading.Thread( target=importFitsFromFileWorkerFunc, args=(paths, progress) ).start() @staticmethod def importFitFromFiles(paths, progress=None): """ Imports fits from file(s). First processes all provided paths and stores assembled fits into a list. This allows us to call back to the GUI as fits are processed as well as when fits are being saved. returns """ sFit = svcFit.getInstance() fit_list = [] try: for path in paths: if progress: if progress and progress.userCancelled: progress.workerWorking = False return False, "Cancelled by user" msg = "Processing file:\n%s" % path progress.message = msg pyfalog.debug(msg) with open(path, "rb") as file_: srcString = file_.read() dammit = UnicodeDammit(srcString) srcString = dammit.unicode_markup if len(srcString) == 0: # ignore blank files pyfalog.debug("File is blank.") continue try: importType, makesNewFits, fitsImport = Port.importAuto(srcString, path, progress=progress) fit_list += fitsImport except xml.parsers.expat.ExpatError: pyfalog.warning("Malformed XML in:\n{0}", path) msg = "Malformed XML in %s" % path if progress: progress.error = msg progress.workerWorking = False return False, msg numFits = len(fit_list) for idx, fit in enumerate(fit_list): if progress and progress.userCancelled: progress.workerWorking = False return False, "Cancelled by user" # Set some more fit attributes and save fit.character = sFit.character fit.damagePattern = sFit.pattern fit.targetProfile = sFit.targetProfile if len(fit.implants) > 0: fit.implantLocation = ImplantLocation.FIT else: useCharImplants = sFit.serviceFittingOptions["useCharacterImplantsByDefault"] fit.implantLocation = ImplantLocation.CHARACTER if useCharImplants else ImplantLocation.FIT db.save(fit) # IDs.append(fit.ID) if progress: pyfalog.debug("Processing complete, saving fits to database: {0}/{1}", idx + 1, numFits) progress.message = "Processing complete, saving fits to database\n(%d/%d) %s" % (idx + 1, numFits, fit.ship.name) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Unknown exception processing: {0}", paths) pyfalog.critical(e) if progress: progress.error = f'{e}' progress.workerWorking = False return False, "Unknown error while processing {}\n\n Error: {} {}".format( paths, type(e).__name__, getattr(e, 'message', '')) if progress: progress.cbArgs.append(fit_list[:]) progress.workerWorking = False return True, fit_list @staticmethod def importFitFromBuffer(bufferStr, activeFit=None): # type: (str, object) -> object # TODO: catch the exception? # activeFit is reserved?, bufferStr is unicode? (assume only clipboard string? sFit = svcFit.getInstance() importType, makesNewFits, importData = Port.importAuto(bufferStr, activeFit=activeFit) if makesNewFits: for fit in importData: fit.character = sFit.character fit.damagePattern = sFit.pattern fit.targetProfile = sFit.targetProfile if len(fit.implants) > 0: fit.implantLocation = ImplantLocation.FIT else: useCharImplants = sFit.serviceFittingOptions["useCharacterImplantsByDefault"] fit.implantLocation = ImplantLocation.CHARACTER if useCharImplants else ImplantLocation.FIT db.save(fit) return importType, importData @classmethod def importAuto(cls, string, path=None, activeFit=None, progress=None): lines = string.splitlines() # Get first line and strip space symbols of it to avoid possible detection errors firstLine = '' for line in lines: line = line.strip() if line: firstLine = line break # If XML-style start of tag encountered, detect as XML if re.search(RE_XML_START, firstLine): return "XML", True, cls.importXml(string, progress) # If JSON-style start, parse as CREST/JSON if firstLine[0] == '{': return "JSON", True, (cls.importESI(string),) # If we've got source file name which is used to describe ship name # and first line contains something like [setup name], detect as eft config file if re.match(r"^\s*\[.*\]", firstLine) and path is not None: filename = os.path.split(path)[1] shipName = filename.rsplit('.')[0] return "EFT Config", True, cls.importEftCfg(shipName, lines, progress) # If no file is specified and there's comma between brackets, # consider that we have [ship, setup name] and detect like eft export format if re.match(r"^\s*\[.*,.*\]", firstLine): return "EFT", True, (cls.importEft(lines),) # Check if string is in DNA format dnaPattern = r"\d+(:\d+(;\d+))*::" if re.match(dnaPattern, firstLine): return "DNA", True, (cls.importDna(string),) dnaChatPattern = r"{})>(?P[^<>]+)".format(dnaPattern) m = re.search(dnaChatPattern, firstLine) if m: return "DNA", True, (cls.importDna(m.group("dna"), fitName=m.group("fitName")),) m = re.search(r"DNA:(?P\d+(:\d+(\*\d+)?)*)", firstLine) if m: return "DNA", True, (cls.importDnaAlt(m.group("dna")),) if activeFit is not None: # Try to import mutated item from network dynData = parseDynamicItemString(string) if dynData is not None: itemData = fetchDynamicItem(dynData) if itemData is not None: baseItem, mutaplasmidItem, mutations = itemData return "FittingItem", False, ((baseItem, mutaplasmidItem, mutations),) # Try to import mutated module try: baseItem, mutaplasmidItem, mutations = parseMutant(lines) except (KeyboardInterrupt, SystemExit): raise except: pass else: if baseItem is not None: return "FittingItem", False, ((baseItem, mutaplasmidItem, mutations),) # Try to import into one of additions panels isDrone, droneData = isValidDroneImport(string) if isDrone: return "AdditionsDrones", False, (droneData,) isFighter, fighterData = isValidFighterImport(string) if isFighter: return "AdditionsFighters", False, (fighterData,) isImplant, implantData = isValidImplantImport(string) if isImplant: return "AdditionsImplants", False, (implantData,) isBooster, boosterData = isValidBoosterImport(string) if isBooster: return "AdditionsBoosters", False, (boosterData,) isCargo, cargoData = isValidCargoImport(string) if isCargo: return "AdditionsCargo", False, (cargoData,) # EFT-related methods @staticmethod def importEft(lines): return importEft(lines) @staticmethod def importEftCfg(shipname, lines, progress=None): return importEftCfg(shipname, lines, progress) @classmethod def exportEft(cls, fit, options, callback=None): return exportEft(fit, options, callback=callback) # DNA-related methods @staticmethod def importDna(string, fitName=None): return importDna(string, fitName=fitName) @staticmethod def importDnaAlt(string, fitName=None): return importDnaAlt(string, fitName=fitName) @staticmethod def exportDna(fit, options, callback=None): return exportDna(fit, options, callback=callback) # ESI-related methods @staticmethod def importESI(string): return importESI(string) @staticmethod def exportESI(fit, exportCharges, exportImplants, exportBoosters, callback=None): return exportESI(fit, exportCharges, exportImplants, exportBoosters, callback=callback) # XML-related methods @staticmethod def importXml(text, progress=None): return importXml(text, progress) @staticmethod def exportXml(fits, progress=None, callback=None): return exportXml(fits, progress, callback=callback) # Multibuy-related methods @staticmethod def exportMultiBuy(fit, options, callback=None): return exportMultiBuy(fit, options, callback=callback) @staticmethod def exportFitStats(fit, callback=None): return exportFitStats(fit, callback=callback) ================================================ FILE: service/port/shared.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= from logbook import Logger from service.market import Market pyfalog = Logger(__name__) def fetchItem(typeName, eagerCat=False): sMkt = Market.getInstance() eager = 'group.category' if eagerCat else None try: item = sMkt.getItem(typeName, eager=eager) except (KeyboardInterrupt, SystemExit): raise except: pyfalog.warning('service.port.shared: unable to fetch item "{}"'.format(typeName)) return None if item is None: return None if sMkt.getPublicityByItem(item): return item else: return None ================================================ FILE: service/port/shipstats.py ================================================ from functools import reduce from eos.saveddata.damagePattern import DamagePattern from eos.utils.stats import RRTypes, DmgTypes from gui.utils.numberFormatter import formatAmount tankTypes = RRTypes.names() damageTypes = DmgTypes.names() damagePatterns = [DamagePattern.oneType(damageType) for damageType in damageTypes] damageTypeResonanceNames = [damageType.capitalize() + "DamageResonance" for damageType in damageTypes] resonanceNames = {tankTypes[0]: [tankTypes[0] + s for s in damageTypeResonanceNames], tankTypes[1]: [tankTypes[1] + s for s in damageTypeResonanceNames], tankTypes[2]: [s[0].lower() + s[1:] for s in damageTypeResonanceNames]} def firepowerSection(fit): """ Returns the text of the firepower section""" totalDps = fit.getTotalDps().total weaponDps = fit.getWeaponDps().total droneDps = fit.getDroneDps().total totalVolley = fit.getTotalVolley().total firepower = [totalDps, weaponDps, droneDps, totalVolley] firepowerStr = [formatAmount(dps, 3, 0, 0) for dps in firepower] # showWeaponAndDroneDps = (weaponDps > 0) and (droneDps > 0) if sum(firepower) == 0: return "" return "DPS: {} (".format(firepowerStr[0]) + \ ("Weapon: {}, Drone: {}, ".format(*firepowerStr[1:3])) + \ ("Volley: {})\n".format(firepowerStr[3])) def tankSection(fit): """ Returns the text of the tank section""" ehp = [fit.ehp[tank] for tank in tankTypes] if fit.ehp is not None else [0, 0, 0] ehp.append(sum(ehp)) ehpStr = [formatAmount(ehpVal, 3, 0, 9) for ehpVal in ehp] resists = {tankType: [1 - fit.ship.getModifiedItemAttr(s) for s in resonanceNames[tankType]] for tankType in tankTypes} ehpAgainstDamageType = [sum(pattern.calculateEhp(fit.ship).values()) for pattern in damagePatterns] ehpAgainstDamageTypeStr = [formatAmount(ehpVal, 3, 0, 9) for ehpVal in ehpAgainstDamageType] # not used for now. maybe will be improved later # def formattedOutput(): # return \ # " {:>7} {:>7} {:>7} {:>7} {:>7}\n".format("TOTAL", "EM", "THERM", "KIN", "EXP") + \ # "EHP {:>7} {:>7} {:>7} {:>7} {:>7}\n".format(ehpStr[3], *ehpAgainstDamageTypeStr) + \ # "Shield {:>7} {:>7.0%} {:>7.0%} {:>7.0%} {:>7.0%}\n".format(ehpStr[0], *resists["shield"]) + \ # "Armor {:>7} {:>7.0%} {:>7.0%} {:>7.0%} {:>7.0%}\n".format(ehpStr[1], *resists["armor"]) + \ # "Hull {:>7} {:>7.0%} {:>7.0%} {:>7.0%} {:>7.0%}\n".format(ehpStr[2], *resists["hull"]) def generalOutput(): rowNames = ["EHP"] rowNames.extend(RRTypes.names(postProcessor=lambda v: v.capitalize())) colNames = DmgTypes.names(short=True, postProcessor=lambda v: " " + v.capitalize()) colNames[0] = colNames[0][1::] outputScheme = [] for index, rowName in enumerate(rowNames): row = rowName + ": {:>} (" subsValue = " {:.0%}," if index > 0 else " {:>}," row += ''.join([(colName + ":" + subsValue) for colName in colNames]) row = row[:-1:] + ")\n" outputScheme.append(row) return \ outputScheme[0].format(ehpStr[3], *ehpAgainstDamageTypeStr) + \ outputScheme[1].format(ehpStr[0], *resists["shield"]) + \ outputScheme[2].format(ehpStr[1], *resists["armor"]) + \ outputScheme[3].format(ehpStr[2], *resists["hull"]) # return \ # "EHP: {:>} (Em: {:>}, Th: {:>}, Kin: {:>}, Exp: {:>})\n".format(ehpStr[3], *ehpAgainstDamageTypeStr) + \ # "Shield: {:>} (Em: {:.0%}, Th: {:.0%}, Kin: {:.0%}, Exp: {:.0%})\n".format(ehpStr[0], *resists["shield"]) + \ # "Armor: {:>} (Em: {:.0%}, Th: {:.0%}, Kin: {:.0%}, Exp: {:.0%})\n".format(ehpStr[1], *resists["armor"]) + \ # "Hull: {:>} (Em: {:.0%}, Th: {:.0%}, Kin: {:.0%}, Exp: {:.0%})\n".format(ehpStr[2], *resists["hull"]) return generalOutput() def _addFormattedColumn(value, name, header, linesList, repStr): if value: header += "{:>7} ".format(name) linesList = [line + "{:>7} ".format(rep) for line, rep in zip(linesList, repStr)] return header, linesList def repsSection(fit): """ Returns the text of the repairs section""" selfRep = [fit.effectiveTank[tankType + "Repair"] for tankType in tankTypes] sustainRep = [fit.effectiveSustainableTank[tankType + "Repair"] for tankType in tankTypes] remoteRepObj = fit.getRemoteReps() remoteRep = [remoteRepObj.shield, remoteRepObj.armor, remoteRepObj.hull] shieldRegen = [fit.effectiveSustainableTank["passiveShield"], 0, 0] shieldRechargeModuleMultipliers = [module.item.attributes["shieldRechargeRateMultiplier"].value for module in fit.modules if module.item and "shieldRechargeRateMultiplier" in module.item.attributes] shieldRechargeMultiplierByModules = reduce(lambda x, y: x * y, shieldRechargeModuleMultipliers, 1) if shieldRechargeMultiplierByModules >= 0.9: # If the total affect of modules on the shield recharge is negative or insignificant, we don't care about it shieldRegen[0] = 0 totalRep = list(zip(selfRep, remoteRep, shieldRegen)) totalRep = list(map(sum, totalRep)) selfRep.append(sum(selfRep)) sustainRep.append(sum(sustainRep)) remoteRep.append(sum(remoteRep)) shieldRegen.append(sum(shieldRegen)) totalRep.append(sum(totalRep)) totalSelfRep = selfRep[-1] totalRemoteRep = remoteRep[-1] totalShieldRegen = shieldRegen[-1] text = "" if sum(totalRep) > 0: # Most commonly, there are no reps at all; then we skip this section singleTypeRep = None singleTypeRepName = None if totalRemoteRep == 0 and totalShieldRegen == 0: # Only self rep singleTypeRep = selfRep[:-1] singleTypeRepName = "Self" if totalSelfRep == 0 and totalShieldRegen == 0: # Only remote rep singleTypeRep = remoteRep[:-1] singleTypeRepName = "Remote" if totalSelfRep == 0 and totalRemoteRep == 0: # Only shield regen singleTypeRep = shieldRegen[:-1] singleTypeRepName = "Regen" if singleTypeRep and sum( x > 0 for x in singleTypeRep) == 1: # Only one type of reps and only one tank type is repaired index = next(i for i, v in enumerate(singleTypeRep) if v > 0) if singleTypeRepName == "Regen": text += "Shield regeneration: {} EHP/s".format(formatAmount(singleTypeRep[index], 3, 0, 9)) else: text += "{} {} repair: {} EHP/s".format(singleTypeRepName, tankTypes[index], formatAmount(singleTypeRep[index], 3, 0, 9)) if (singleTypeRepName == "Self") and (sustainRep[index] != singleTypeRep[index]): text += " (Sustained: {} EHP/s)".format(formatAmount(sustainRep[index], 3, 0, 9)) text += "\n" else: # Otherwise show a table selfRepStr = [formatAmount(rep, 3, 0, 9) for rep in selfRep] sustainRepStr = [formatAmount(rep, 3, 0, 9) for rep in sustainRep] remoteRepStr = [formatAmount(rep, 3, 0, 9) for rep in remoteRep] shieldRegenStr = [formatAmount(rep, 3, 0, 9) if rep != 0 else "" for rep in shieldRegen] totalRepStr = [formatAmount(rep, 3, 0, 9) for rep in totalRep] lines = RRTypes.names(postProcessor=lambda v: v.capitalize()) lines.append("Total") lines = ["{:<8}".format(line) for line in lines] showSelfRepColumn = totalSelfRep > 0 showSustainRepColumn = sustainRep != selfRep showRemoteRepColumn = totalRemoteRep > 0 showShieldRegenColumn = totalShieldRegen > 0 header = "REPS " header, lines = _addFormattedColumn( (showSelfRepColumn + showSustainRepColumn + showRemoteRepColumn + showShieldRegenColumn > 1), "TOTAL", header, lines, totalRepStr) header, lines = _addFormattedColumn(showSelfRepColumn, "SELF", header, lines, selfRepStr) header, lines = _addFormattedColumn(showSustainRepColumn, "SUST", header, lines, sustainRepStr) header, lines = _addFormattedColumn(showRemoteRepColumn, "REMOTE", header, lines, remoteRepStr) header, lines = _addFormattedColumn(showShieldRegenColumn, "REGEN", header, lines, shieldRegenStr) text += header + "\n" repsByTank = zip(totalRep, selfRep, sustainRep, remoteRep, shieldRegen) for line in lines: reps = next(repsByTank) if sum(reps) > 0: text += line + "\n" return text def miscSection(fit): text = "" text += "Speed: {} m/s\n".format(formatAmount(fit.maxSpeed, 3, 0, 0)) text += "Signature: {} m\n".format(formatAmount(fit.ship.getModifiedItemAttr("signatureRadius"), 3, 0, 9)) text += "Capacitor: {} GJ".format(formatAmount(fit.ship.getModifiedItemAttr("capacitorCapacity"), 3, 0, 9)) capState = fit.capState if fit.capStable: text += " (Stable at {0:.0f}%)".format(capState) else: text += " (Lasts {})".format("%ds" % capState if capState <= 60 else "%dm%ds" % divmod(capState, 60)) text += "\n" text += "Targeting range: {} km\n".format(formatAmount(fit.maxTargetRange / 1000, 3, 0, 0)) text += "Scan resolution: {0:.0f} mm\n".format(fit.ship.getModifiedItemAttr("scanResolution")) text += "Sensor strength: {}\n".format(formatAmount(fit.scanStrength, 3, 0, 0)) return text def exportFitStats(fit, callback): """ Returns the text of the stats export of the given fit """ sections = filter(None, (firepowerSection(fit), # Prune empty sections tankSection(fit), repsSection(fit), miscSection(fit))) text = "{} ({})\n".format(fit.name, fit.ship.item.typeName) + "\n" text += "\n".join(sections) if callback: callback(text) else: return text ================================================ FILE: service/port/xml.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import re import xml.dom import xml.parsers.expat from logbook import Logger from eos.const import FittingModuleState, FittingSlot from eos.db import getDynamicItem from eos.saveddata.cargo import Cargo from eos.saveddata.citadel import Citadel from eos.saveddata.drone import Drone from eos.saveddata.fighter import Fighter from eos.saveddata.fit import Fit from eos.saveddata.module import Module from eos.saveddata.ship import Ship from gui.fitCommands.helpers import activeStateLimit from service.fit import Fit as svcFit from service.market import Market from service.port.muta import renderMutantAttrs, parseMutantAttrs from service.port.shared import fetchItem from utils.strfunctions import replace_ltgt, sequential_rep pyfalog = Logger(__name__) # -- 170327 Ignored description -- RE_LTGT = "&(lt|gt);" L_MARK = "<localized hint="" # <localized hint="([^"]+)">([^\*]+)\*<\/localized> LOCALIZED_PATTERN = re.compile(r'([^\*]+)\*') class ExtractingError(Exception): pass def _extract_match(t): m = LOCALIZED_PATTERN.match(t) if m is None: raise ExtractingError # hint attribute, text content return m.group(1), m.group(2) def _resolve_ship(fitting, sMkt, b_localized): # type: (xml.dom.minidom.Element, service.market.Market, bool) -> eos.saveddata.fit.Fit """ NOTE: Since it is meaningless unless a correct ship object can be constructed, process flow changed """ # ------ Confirm ship # Maelstrom shipType = fitting.getElementsByTagName("shipType").item(0).getAttribute("value") anything = None if b_localized: try: # expect an official name, emergency cache shipType, anything = _extract_match(shipType) except ExtractingError: pass limit = 2 ship = None while True: must_retry = False try: try: ship = Ship(sMkt.getItem(shipType)) except ValueError: ship = Citadel(sMkt.getItem(shipType)) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warning("Caught exception on _resolve_ship") pyfalog.error(e) limit -= 1 if limit == 0: break shipType = anything must_retry = True if not must_retry: break if ship is None: raise Exception("cannot resolve ship type.") fitobj = Fit(ship=ship) # ------ Confirm fit name anything = fitting.getAttribute("name") # 2017/03/29 NOTE: # if fit name contained "<" or ">" then reprace to named html entity by EVE client # if re.search(RE_LTGT, anything): if "<" in anything or ">" in anything: anything = replace_ltgt(anything) fitobj.name = anything return fitobj def _resolve_module(hardware, sMkt, b_localized): # type: (xml.dom.minidom.Element, service.market.Market, bool) -> eos.saveddata.module.Module moduleName = hardware.getAttribute("base_type") or hardware.getAttribute("type") emergency = None if b_localized: try: # expect an official name, emergency cache moduleName, emergency = _extract_match(moduleName) except ExtractingError: pass item = None limit = 2 while True: must_retry = False try: item = sMkt.getItem(moduleName, eager="group.category") except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warning("Caught exception on _resolve_module") pyfalog.error(e) limit -= 1 if limit == 0: break moduleName = emergency must_retry = True if not must_retry: break mutaplasmidName = hardware.getAttribute("mutaplasmid") mutaplasmidItem = fetchItem(mutaplasmidName) if mutaplasmidName else None mutatedAttrsText = hardware.getAttribute("mutated_attrs") mutatedAttrs = parseMutantAttrs(mutatedAttrsText) if mutatedAttrsText else None return item, mutaplasmidItem, mutatedAttrs def importXml(text, progress): from .port import Port sMkt = Market.getInstance() doc = xml.dom.minidom.parseString(text) # NOTE: # When L_MARK is included at this point, # Decided to be localized data b_localized = L_MARK in text fittings = doc.getElementsByTagName("fittings").item(0) fittings = fittings.getElementsByTagName("fitting") fit_list = [] failed = 0 for fitting in fittings: if progress and progress.userCancelled: return [] try: fitobj = _resolve_ship(fitting, sMkt, b_localized) except (KeyboardInterrupt, SystemExit): raise except: failed += 1 continue # -- 170327 Ignored description -- # read description from exported xml. (EVE client, EFT) description = fitting.getElementsByTagName("description").item(0).getAttribute("value") if description is None: description = "" elif len(description): # convert
to "\n" and remove html tags. if Port.is_tag_replace(): description = replace_ltgt( sequential_rep(description, r"<(br|BR)>", "\n", r"<[^<>]+>", "") ) fitobj.notes = description hardwares = fitting.getElementsByTagName("hardware") moduleList = [] for hardware in hardwares: try: item, mutaItem, mutaAttrs = _resolve_module(hardware, sMkt, b_localized) if not item or not item.published: continue if item.category.name == "Drone": d = None if mutaItem: mutaplasmid = getDynamicItem(mutaItem.ID) if mutaplasmid: try: d = Drone(mutaplasmid.resultingItem, item, mutaplasmid) except ValueError: pass else: for attrID, mutator in d.mutators.items(): if attrID in mutaAttrs: mutator.value = mutaAttrs[attrID] if d is None: d = Drone(item) d.amount = int(hardware.getAttribute("qty")) fitobj.drones.append(d) elif item.category.name == "Fighter": ft = Fighter(item) ft.amount = int(hardware.getAttribute("qty")) if ft.amount <= ft.fighterSquadronMaxSize else ft.fighterSquadronMaxSize fitobj.fighters.append(ft) elif hardware.getAttribute("slot").lower() == "cargo": # although the eve client only support charges in cargo, third-party programs # may support items or "refits" in cargo. Support these by blindly adding all # cargo, not just charges c = Cargo(item) c.amount = int(hardware.getAttribute("qty")) fitobj.cargo.append(c) else: m = None try: if mutaItem: mutaplasmid = getDynamicItem(mutaItem.ID) if mutaplasmid: try: m = Module(mutaplasmid.resultingItem, item, mutaplasmid) except ValueError: pass else: for attrID, mutator in m.mutators.items(): if attrID in mutaAttrs: mutator.value = mutaAttrs[attrID] if m is None: m = Module(item) # When item can't be added to any slot (unknown item or just charge), ignore it except ValueError: pyfalog.warning("item can't be added to any slot (unknown item or just charge), ignore it") continue # Add subsystems before modules to make sure T3 cruisers have subsystems installed if item.category.name == "Subsystem": if m.fits(fitobj): m.owner = fitobj fitobj.modules.append(m) else: if m.isValidState(FittingModuleState.ACTIVE): m.state = activeStateLimit(m.item) moduleList.append(m) except KeyboardInterrupt: pyfalog.warning("Keyboard Interrupt") continue # Recalc to get slot numbers correct for T3 cruisers sFit = svcFit.getInstance() sFit.recalc(fitobj) sFit.fill(fitobj) for module in moduleList: if module.fits(fitobj): module.owner = fitobj fitobj.modules.append(module) fit_list.append(fitobj) if progress: progress.message = "Processing %s\n%s" % (fitobj.ship.name, fitobj.name) return fit_list def exportXml(fits, progress, callback): doc = xml.dom.minidom.Document() fittings = doc.createElement("fittings") # fit count fit_count = len(fits) fittings.setAttribute("count", "%s" % fit_count) doc.appendChild(fittings) def addMutantAttributes(node, mutant): node.setAttribute("base_type", mutant.baseItem.name) node.setAttribute("mutaplasmid", mutant.mutaplasmid.item.name) node.setAttribute("mutated_attrs", renderMutantAttrs(mutant)) for i, fit in enumerate(fits): if progress: if progress.userCancelled: return None processedFits = i + 1 progress.current = processedFits progress.message = "converting to xml (%s/%s) %s" % (processedFits, fit_count, fit.ship.name) try: fitting = doc.createElement("fitting") fitting.setAttribute("name", fit.name) fittings.appendChild(fitting) description = doc.createElement("description") # -- 170327 Ignored description -- try: notes = fit.notes # unicode if notes: notes = notes[:397] + '...' if len(notes) > 400 else notes description.setAttribute( "value", re.sub("(\r|\n|\r\n)+", "
", notes) if notes is not None else "" ) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warning("read description is failed, msg=%s\n" % e.args) fitting.appendChild(description) shipType = doc.createElement("shipType") shipType.setAttribute("value", fit.ship.name) fitting.appendChild(shipType) charges = {} slotNum = {} for module in fit.modules: if module.isEmpty: continue slot = module.slot if slot == FittingSlot.SUBSYSTEM: # Order of subsystem matters based on this attr. See GH issue #130 slotId = module.getModifiedItemAttr("subSystemSlot") - 125 else: if slot not in slotNum: slotNum[slot] = 0 slotId = slotNum[slot] slotNum[slot] += 1 hardware = doc.createElement("hardware") hardware.setAttribute("type", module.item.name) slotName = FittingSlot(slot).name.lower() slotName = slotName if slotName != "high" else "hi" hardware.setAttribute("slot", "%s slot %d" % (slotName, slotId)) if module.isMutated: addMutantAttributes(hardware, module) fitting.appendChild(hardware) if module.charge: if module.charge.name not in charges: charges[module.charge.name] = 0 # `or 1` because some charges (ie scripts) are without qty charges[module.charge.name] += module.numCharges or 1 for drone in fit.drones: hardware = doc.createElement("hardware") hardware.setAttribute("qty", "%d" % drone.amount) hardware.setAttribute("slot", "drone bay") hardware.setAttribute("type", drone.item.name) if drone.isMutated: addMutantAttributes(hardware, drone) fitting.appendChild(hardware) for fighter in fit.fighters: hardware = doc.createElement("hardware") hardware.setAttribute("qty", "%d" % fighter.amount) hardware.setAttribute("slot", "fighter bay") hardware.setAttribute("type", fighter.item.name) fitting.appendChild(hardware) for cargo in fit.cargo: if cargo.item.name not in charges: charges[cargo.item.name] = 0 charges[cargo.item.name] += cargo.amount for name, qty in list(charges.items()): hardware = doc.createElement("hardware") hardware.setAttribute("qty", "%d" % qty) hardware.setAttribute("slot", "cargo") hardware.setAttribute("type", name) fitting.appendChild(hardware) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.error("Failed on fitID: %d, message: %s" % e.message) continue text = doc.toprettyxml() if callback: callback(text) else: return text ================================================ FILE: service/precalcImplantSet.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import eos.db from eos.db.saveddata.implant import Implant from service.market import Market class PrecalcedImplantSets: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = PrecalcedImplantSets() return cls.instance @staticmethod def getImplantSets(): return eos.db.getAllImplantSets() @staticmethod def getStructuredSets(): structured = {} for implantSet in PrecalcedImplantSets.getImplantSets(): structured.setdefault(implantSet.setName, {})[implantSet.gradeName] = implantSet.implants return structured @staticmethod def stringToImplants(string): sMkt = Market.getInstance() implants = [] for typeID in (int(tid) for tid in string.split(',')): item = sMkt.getItem(typeID) if item is None: continue try: implant = Implant(item) except ValueError: continue implants.append(implant) return implants ================================================ FILE: service/prefetch.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import os import config from eos import db from eos.db import migration from eos.db.saveddata.databaseRepair import DatabaseCleanup from logbook import Logger pyfalog = Logger(__name__) # Make sure the saveddata db exists if config.savePath and not os.path.exists(config.savePath): os.mkdir(config.savePath) if config.saveDB and os.path.isfile(config.saveDB): # If database exists, run migration after init'd database pyfalog.debug("Run database migration.") db.saveddata_meta.create_all() migration.update(db.saveddata_engine) # Finds and fixes database corruption issues. pyfalog.debug("Starting database validation.") database_cleanup_instance = DatabaseCleanup() database_cleanup_instance.OrphanedCharacterSkills(db.saveddata_engine) database_cleanup_instance.OrphanedFitCharacterIDs(db.saveddata_engine) database_cleanup_instance.OrphanedFitDamagePatterns(db.saveddata_engine) database_cleanup_instance.NullDamagePatternNames(db.saveddata_engine) database_cleanup_instance.NullTargetResistNames(db.saveddata_engine) database_cleanup_instance.OrphanedFitIDItemID(db.saveddata_engine) database_cleanup_instance.NullDamageTargetPatternValues(db.saveddata_engine) database_cleanup_instance.DuplicateSelectedAmmoName(db.saveddata_engine) pyfalog.debug("Completed database validation.") else: # If database does not exist, do not worry about migration. Simply # create and set version pyfalog.debug("Existing database not found, creating new database.") db.saveddata_meta.create_all() db.saveddata_engine.execute('PRAGMA user_version = {}'.format(migration.getAppVersion())) ================================================ FILE: service/prereqsCheck.py ================================================ import platform import re import sys version_block = '' class PreCheckException(Exception): pass class PreCheckMessage: def __init__(self, msg): # wx may not be installed, in which case print to console. For all other prechecks, should pop up a MessageDialog try: import wx app = wx.App(False) wx.MessageBox(msg, 'Error', wx.ICON_ERROR | wx.STAY_ON_TOP) app.MainLoop() except (KeyboardInterrupt, SystemExit): raise except: pass finally: print(msg) def version_precheck(): global version_block version_block += "\nOS version: {}".format(platform.platform()) version_block += "\nPython version: {}".format(sys.version) if sys.version_info < (3, 6): msg = "pyfa requires python 3.6" raise PreCheckException(msg) try: # the way that the version string is imported in wx is odd, causing us to have to split out the imports like this. :( from wx.__version__ import VERSION, VERSION_STRING if VERSION[0] < 4: raise Exception() if VERSION[3] != '': if VERSION[3][0] == 'b' and int(VERSION[3][-1]) < 2: raise Exception() import wx version_block += "\nwxPython version: {} ({})".format(VERSION_STRING, wx.wxWidgets_version) except (KeyboardInterrupt, SystemExit): raise except: msg = "pyfa requires wxPython v4.0.0b2+. You can download wxPython from https://wxpython.org/pages/downloads/" raise PreCheckException(msg) try: import sqlalchemy saMatch = re.match(r"([0-9]+).([0-9]+).([0-9]+)(([b\.])([0-9]+))?", sqlalchemy.__version__) version_block += "\nSQLAlchemy version: {}".format(sqlalchemy.__version__) if (int(saMatch.group(1)), int(saMatch.group(2)), int(saMatch.group(3))) < (1, 0, 5): raise Exception() except (KeyboardInterrupt, SystemExit): raise except: msg = "pyfa requires SQLAlchemy v1.0.5+. You can download SQLAlchemy from https://www.sqlalchemy.org/download.html" raise PreCheckException(msg) try: import logbook logVersion = logbook.__version__.split('.') version_block += "\nLogbook version: {}".format(logbook.__version__) if int(logVersion[0]) < 1: raise Exception() except (KeyboardInterrupt, SystemExit): raise except: raise PreCheckException("pyfa requires Logbook version 1.0.0+. You can download Logbook from https://pypi.python.org/pypi/Logbook") try: import requests version_block += "\nRequests version: {}".format(requests.__version__) except (KeyboardInterrupt, SystemExit): raise except: msg = "pyfa requires the requests module. You can download requests from https://pypi.python.org/pypi/requests" raise PreCheckException(msg) try: import dateutil version_block += "\nDateutil version: {}".format(dateutil.__version__) except (KeyboardInterrupt, SystemExit): raise except: msg = "pyfa requires the python-dateutil module. You can download python-dateutil form https://pypi.python.org/pypi/python-dateutil" raise PreCheckException(msg) ================================================ FILE: service/price.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import queue import threading import timeit from itertools import chain import math import wx from logbook import Logger from eos import db from eos.saveddata.price import PriceStatus from service.fit import Fit from service.market import Market from service.network import TimeoutError pyfalog = Logger(__name__) class Price: instance = None systemsList = { "Jita": 30000142, "Amarr": 30002187, "Dodixie": 30002659, "Rens": 30002510, "Hek": 30002053 } sources = {} def __init__(self): # Start price fetcher self.priceWorkerThread = PriceWorkerThread() self.priceWorkerThread.daemon = True self.priceWorkerThread.start() @classmethod def register(cls, source): cls.sources[source.name] = source @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Price() return cls.instance @classmethod def fetchPrices(cls, prices, fetchTimeout, validityOverride): """Fetch all prices passed to this method""" # Dictionary for our price objects priceMap = {} # Check all provided price objects, and add those we want to update to # dictionary for price in prices: if not price.isValid(validityOverride): priceMap[price.typeID] = price if not priceMap: return # Compose list of items we're going to request for typeID in tuple(priceMap): # Get item object item = db.getItem(typeID) # We're not going to request items only with market group, as our current market # sources do not provide any data for items not on the market if item is None: continue if not item.marketGroupID: priceMap[typeID].update(PriceStatus.notSupported) del priceMap[typeID] continue if not priceMap: return sFit = Fit.getInstance() if len(cls.sources.keys()) == 0: pyfalog.warn('No price source can be found') return # attempt to find user's selected price source, otherwise get first one sourceAll = list(cls.sources.keys()) sourcePrimary = sFit.serviceFittingOptions["priceSource"] if sFit.serviceFittingOptions["priceSource"] in sourceAll else sourceAll[0] # When we have picked primary source, make sure to include only sources from the same group to avoid fetching # tranquility data for serenity or vice versa sourceAll = list(n for n, s in cls.sources.items() if s.group == cls.sources[sourcePrimary].group) # Format: {source name: timeout weight} sources = {sourcePrimary: len(sourceAll)} for source in sourceAll: if source == sourcePrimary: continue sources[source] = min(sources.values()) - 1 # Record timeouts as it will affect our final decision timedOutSources = {} remainingTime = fetchTimeout for source in sorted(sources, key=sources.get, reverse=True): timeBefore = timeit.default_timer() pyfalog.info('Trying {}'.format(source)) timedOutSources[source] = False # Time we allocate for a source depends on source weight and remaining time sourceFetchTimeout = remainingTime * sources[source] / sum(sources.values()) try: sourceCls = cls.sources.get(source) sourceCls(priceMap, cls.systemsList[sFit.serviceFittingOptions["priceSystem"]], sourceFetchTimeout) except TimeoutError: pyfalog.warning("Price fetch timeout for source {}".format(source)) timedOutSources[source] = True except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.warn('Failed to fetch prices from price source {}: {}'.format(source, e)) # Sources remove price map items as they fetch info, if none remain then we're done if not priceMap: break timeAfter = timeit.default_timer() # Remove source so it doesn't affect time weights of sources we're going to use next del sources[source] remainingTime -= timeAfter - timeBefore # No time remaining (should not happen) - mark remaining sources as timeout if remainingTime <= 0: for source in sources: timedOutSources[source] = True break # If we get to this point, then we've failed to get price with all our sources # If all sources failed due to timeouts, set one status if all(to is True for to in timedOutSources.values()): for typeID in priceMap.keys(): priceMap[typeID].update(PriceStatus.fetchTimeout) # If some sources failed due to any other reason, then it's definitely not network # timeout and we just set another status else: for typeID in priceMap.keys(): priceMap[typeID].update(PriceStatus.fetchFail) def getPriceNow(self, objitem): """Get price for provided typeID""" sMkt = Market.getInstance() item = sMkt.getItem(objitem) return item.price.price def getPrices(self, objitems, callback, fetchTimeout=30, waitforthread=False, validityOverride=None): """Get prices for multiple typeIDs""" requests = [] sMkt = Market.getInstance() for objitem in objitems: item = sMkt.getItem(objitem) requests.append(item.price) def cb(): try: callback(requests) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Execution of callback from getPrices failed.") pyfalog.critical(e) db.commit() if waitforthread: self.priceWorkerThread.setToWait(requests, cb) else: self.priceWorkerThread.trigger(requests, cb, fetchTimeout, validityOverride) def clearPriceCache(self): pyfalog.debug("Clearing Prices") db.clearPrices() def findCheaperReplacements(self, items, callback, fetchTimeout=10): sMkt = Market.getInstance() replacementsAll = {} # All possible item replacements for item in items: if item in replacementsAll: continue itemRepls = sMkt.getReplacements(item) if itemRepls: replacementsAll[item] = itemRepls itemsToFetch = {i for i in chain(replacementsAll.keys(), *replacementsAll.values())} def makeCheapMapCb(requests): # Decide what we are going to replace replacementsCheaper = {} # Items which should be replaced for replacee, replacers in replacementsAll.items(): replacer = min(replacers, key=lambda i: i.price.price or math.inf) if (replacer.price.price or math.inf) < (replacee.price.price or math.inf): replacementsCheaper[replacee] = replacer try: callback(replacementsCheaper) except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.critical("Execution of callback from findCheaperReplacements failed.") pyfalog.critical(e) # Prices older than 2 hours have to be refetched validityOverride = 2 * 60 * 60 self.getPrices(itemsToFetch, makeCheapMapCb, fetchTimeout=fetchTimeout, validityOverride=validityOverride) class PriceWorkerThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.name = "PriceWorker" self.queue = queue.Queue() self.wait = {} self.running = True pyfalog.debug("Initialize PriceWorkerThread.") def run(self): queue = self.queue while True: if not self.running: break # Grab our data callback, requests, fetchTimeout, validityOverride = queue.get() # Grab prices, this is the time-consuming part if len(requests) > 0: Price.fetchPrices(requests, fetchTimeout, validityOverride) wx.CallAfter(callback) queue.task_done() # After we fetch prices, go through the list of waiting items and call their callbacks for price in requests: callbacks = self.wait.pop(price.typeID, None) if callbacks: for callback in callbacks: wx.CallAfter(callback) def trigger(self, prices, callbacks, fetchTimeout, validityOverride): self.queue.put((callbacks, prices, fetchTimeout, validityOverride)) def setToWait(self, prices, callback): for price in prices: callbacks = self.wait.setdefault(price.typeID, []) callbacks.append(callback) def stop(self): self.running = False # Import market sources only to initialize price source modules, they register on their own from service.marketSources import evemarketdata, fuzzwork, cevemarket, evetycoon # noqa: E402 ================================================ FILE: service/pycrest/eve.py ================================================ ================================================ FILE: service/server.py ================================================ import http.server import urllib.parse import socket import threading from logbook import Logger import socketserver import json import traceback from service.esiAccess import APIException, GenericSsoError pyfalog = Logger(__name__) # https://github.com/fuzzysteve/CREST-Market-Downloader/ class AuthHandler(http.server.BaseHTTPRequestHandler): def do_OPTIONS(self): self.send_response(200) self.send_header('Access-Control-Allow-Origin', '*') self.end_headers() def do_GET(self): if self.path == "/favicon.ico": return parsed_path = urllib.parse.urlparse(self.path) parts = {k: ";".join(v) for k, v in urllib.parse.parse_qs(parsed_path.query).items()} is_success = False try: self.server.callback(parts) pyfalog.info("Successfully logged into EVE.") is_success = True self.send_response(200) self.send_header('Access-Control-Allow-Origin', '*') self.end_headers() except (KeyboardInterrupt, SystemExit): raise except (GenericSsoError, APIException) as ex: pyfalog.error("Error logging into EVE") pyfalog.error(ex) self.send_response(400) self.send_header('Access-Control-Allow-Origin', '*') self.end_headers() self.wfile.write(str.encode(str(ex))) except Exception as ex: pyfalog.error("Error logging into EVE") pyfalog.error(ex) self.send_response(500) self.send_header('Access-Control-Allow-Origin', '*') self.end_headers() self.wfile.write(str.encode(str(''.join(traceback.format_tb(ex.__traceback__))))) # send error if is_success: self.server.stop() def log_message(self, format, *args): return # http://code.activestate.com/recipes/425210-simple-stoppable-server-using-socket-timeout/ class StoppableHTTPServer(socketserver.TCPServer): def server_bind(self): # Can't use HTTPServer due to reliance on socket.getfqdn() which seems to be bugged. # See https://github.com/pyfa-org/Pyfa/issues/1560#issuecomment-390095101 socketserver.TCPServer.server_bind(self) host, port = self.server_address[:2] self.server_name = host self.server_port = port # self.settings = CRESTSettings.getInstance() self.socket.settimeout(1) self.run = True def get_request(self): while self.run: try: sock, addr = self.socket.accept() sock.settimeout(None) return sock, addr except socket.timeout: pyfalog.warning("Server timed out waiting for connection") pass def stop(self): pyfalog.warning("Setting pyfa server to stop.") self.run = False def serve(self, callback=None): self.callback = callback while self.run: try: self.handle_request() except TypeError: pyfalog.debug("Caught exception in serve") pass self.server_close() if __name__ == "__main__": httpd = StoppableHTTPServer(('', 6461), AuthHandler) t = threading.Thread(target=httpd.serve) input("Press to stop server\n") httpd.stop() ================================================ FILE: service/settings.py ================================================ # ============================================================================= # Copyright (C) 2010 Diego Duclos # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import pickle import os.path import urllib.request import urllib.error import urllib.parse import json from collections import namedtuple import wx from logbook import Logger import config import eos.config from service.const import GraphDpsDroneMode pyfalog = Logger(__name__) class SettingsProvider: if config.savePath: BASE_PATH = os.path.join(config.savePath, 'settings') settings = {} _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = SettingsProvider() return cls._instance def __init__(self): if hasattr(self, 'BASE_PATH'): if not os.path.exists(self.BASE_PATH): os.mkdir(self.BASE_PATH) def getSettings(self, area, defaults=None): # type: (basestring, dict) -> service.Settings # NOTE: needed to change for tests # TODO: Write to memory with mmap -> https://docs.python.org/2/library/mmap.html settings_obj = self.settings.get(area) if settings_obj is None: # and hasattr(self, 'BASE_PATH'): canonical_path = os.path.join(self.BASE_PATH, area) if hasattr(self, 'BASE_PATH') else "" if not os.path.exists(canonical_path): # path string or empty string. info = {} if defaults: info.update(defaults) else: try: with open(canonical_path, "rb") as f: info = pickle.load(f) for item in defaults: if item not in info: info[item] = defaults[item] except (KeyboardInterrupt, SystemExit): raise except: info = {} info.update(defaults) self.settings[area] = settings_obj = Settings(canonical_path, info) return settings_obj def saveAll(self): for settings in self.settings.values(): settings.save() class Settings: def __init__(self, location, info): # type: (basestring, dict) -> None # path string or empty string. self.location = location self.info = info # def save(self): # f = open(self.location, "wb") # cPickle.dump(self.info, f, cPickle.HIGHEST_PROTOCOL) def save(self): # NOTE: needed to change for tests if self.location is None or not self.location: return # NOTE: with + open -> file handle auto close with open(self.location, "wb") as f: pickle.dump(self.info, f, pickle.HIGHEST_PROTOCOL) def __getitem__(self, k): try: return self.info[k] except KeyError as e: pyfalog.warning("Failed to get setting for '{0}'. Exception: {1}", k, e) return None def __setitem__(self, k, v): self.info[k] = v def __iter__(self): return self.info.__iter__() def iterkeys(self): return iter(self.info.keys()) def itervalues(self): return iter(self.info.values()) def iteritems(self): return iter(self.info.items()) def keys(self): return list(self.info.keys()) def values(self): return list(self.info.values()) def items(self): return list(self.info.items()) class NetworkSettings: _instance = None # constants for serviceNetworkDefaultSettings["mode"] parameter PROXY_MODE_NONE = 0 # 0 - No proxy PROXY_MODE_AUTODETECT = 1 # 1 - Auto-detected proxy settings PROXY_MODE_MANUAL = 2 # 2 - Manual proxy settings @classmethod def getInstance(cls): if cls._instance is None: cls._instance = NetworkSettings() return cls._instance def __init__(self): serviceNetworkDefaultSettings = { "mode" : self.PROXY_MODE_AUTODETECT, "type" : "https", "address" : "", "port" : "", "access" : 15, "login" : None, "password": None } self.serviceNetworkSettings = SettingsProvider.getInstance().getSettings( "pyfaServiceNetworkSettings", serviceNetworkDefaultSettings) def isEnabled(self, type): if type & self.serviceNetworkSettings["access"]: return True return False def toggleAccess(self, type, toggle=True): bitfield = self.serviceNetworkSettings["access"] if toggle: # Turn bit on self.serviceNetworkSettings["access"] = type | bitfield else: # Turn bit off self.serviceNetworkSettings["access"] = ~type & bitfield def getMode(self): return self.serviceNetworkSettings["mode"] def getAddress(self): return self.serviceNetworkSettings["address"] def getPort(self): return self.serviceNetworkSettings["port"] def getType(self): return self.serviceNetworkSettings["type"] def getAccess(self): return self.serviceNetworkSettings["access"] def setMode(self, mode): self.serviceNetworkSettings["mode"] = mode def setAddress(self, addr): self.serviceNetworkSettings["address"] = addr def setPort(self, port): self.serviceNetworkSettings["port"] = port def setType(self, type): self.serviceNetworkSettings["type"] = type def setAccess(self, access): self.serviceNetworkSettings["access"] = access @staticmethod def autodetect(): proxy = None proxydict = urllib.request.ProxyHandler().proxies validPrefixes = ("http", "https") for prefix in validPrefixes: if prefix not in proxydict: continue proxyline = proxydict[prefix] proto_pos = proxyline.find('://') if proto_pos != -1: proxyline = proxyline[proto_pos+3:] # sometimes proxyline contains "user:password@" section before proxy address # remove it if present, so later split by ":" works if '@' in proxyline: userPass, proxyline = proxyline.split("@") # TODO: do something with user/password? proxAddr, proxPort = proxyline.split(":") proxPort = int(proxPort.rstrip("/")) proxy = (proxAddr, proxPort) break return proxy def getProxySettings(self): if self.getMode() == self.PROXY_MODE_NONE: return None if self.getMode() == self.PROXY_MODE_AUTODETECT: return self.autodetect() if self.getMode() == self.PROXY_MODE_MANUAL: return self.getAddress(), int(self.getPort()) def getProxyAuthDetails(self): if self.getMode() == self.PROXY_MODE_NONE: return None if (self.serviceNetworkSettings["login"] is None) or (self.serviceNetworkSettings["password"] is None): return None # in all other cases, return tuple of (login, password) return self.serviceNetworkSettings["login"], self.serviceNetworkSettings["password"] def setProxyAuthDetails(self, login, password): if (login is None) or (password is None): self.serviceNetworkSettings["login"] = None self.serviceNetworkSettings["password"] = None return if login == "": # empty login unsets proxy auth info self.serviceNetworkSettings["login"] = None self.serviceNetworkSettings["password"] = None return self.serviceNetworkSettings["login"] = login self.serviceNetworkSettings["password"] = password def getProxySettingsInRequestsFormat(self) -> dict: proxies = {} proxy_settings = self.getProxySettings() if proxy_settings is not None: # form proxy address in format "http://host:port proxy_host_port = '{}:{}'.format(proxy_settings[0], proxy_settings[1]) proxy_auth_details = self.getProxyAuthDetails() user_pass = '' if proxy_auth_details is not None: # construct prefix in form "user:password@" user_pass = '{}:{}@'.format(proxy_auth_details[0], proxy_auth_details[1]) proxies = { 'http': 'http://' + user_pass + proxy_host_port, 'https': 'http://' + user_pass + proxy_host_port } return proxies class HTMLExportSettings: """ Settings used by the HTML export feature. """ _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = HTMLExportSettings() return cls._instance def __init__(self): serviceHTMLExportDefaultSettings = { "path" : config.savePath + os.sep + 'pyfaFits.html', "minimal": False } self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings( "pyfaServiceHTMLExportSettings", serviceHTMLExportDefaultSettings ) def getMinimalEnabled(self): return self.serviceHTMLExportSettings["minimal"] def setMinimalEnabled(self, minimal): self.serviceHTMLExportSettings["minimal"] = minimal def getPath(self): return self.serviceHTMLExportSettings["path"] def setPath(self, path): self.serviceHTMLExportSettings["path"] = path class UpdateSettings: """ Settings used by update notification """ _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = UpdateSettings() return cls._instance def __init__(self): # Settings # Updates are completely suppressed via network settings # prerelease - If True, suppress prerelease notifications # version - Set to release tag that user does not want notifications for serviceUpdateDefaultSettings = {"prerelease": True, 'version': None} self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings( "pyfaServiceUpdateSettings", serviceUpdateDefaultSettings ) def get(self, type): return self.serviceUpdateSettings[type] def set(self, type, value): self.serviceUpdateSettings[type] = value class EsiSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = EsiSettings() return cls._instance def __init__(self): # SSO Mode: # 0 - pyfa.io # 1 - custom application # LoginMode: # 0 - Server Start Up # 1 - User copy and paste data from website to pyfa defaults = { "ssoMode": 0, "loginMode": 0, "clientID": "", "clientSecret": "", "timeout": 60, "server": "Tranquility", "exportCharges": True, "exportImplants": True, "exportBoosters": True, "enforceJwtExpiration": True } self.settings = SettingsProvider.getInstance().getSettings( "pyfaServiceEsiSettings", defaults ) def get(self, type): return self.settings[type] def set(self, type, value): self.settings[type] = value def keys(self): return config.supported_servers.keys() class StatViewSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = StatViewSettings() return cls._instance def __init__(self): # mode # 0 - Do not show # 1 - Minimal/Text Only View # 2 - Full View serviceStatViewDefaultSettings = { "resources" : 2, "resistances" : 2, "recharge" : 2, "firepower" : 2, "capacitor" : 2, "targetingMisc": 1, "price" : 2, "miningyield" : 2, "drones" : 2, "outgoing" : 2, "bombing" : 0, } self.serviceStatViewDefaultSettings = SettingsProvider.getInstance().getSettings("pyfaServiceStatViewSettings", serviceStatViewDefaultSettings) def get(self, type): return self.serviceStatViewDefaultSettings[type] def set(self, type, value): self.serviceStatViewDefaultSettings[type] = value class MarketPriceSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = MarketPriceSettings() return cls._instance def __init__(self): # mode # 0 - Do not add to total # 1 - Add to total PriceMenuDefaultSettings = { "drones" : 1, "cargo" : 1, "character" : 0, "marketMGJumpMode": 0, "marketMGEmptyMode": 1, "marketMGSearchMode": 0, "marketMGMarketSelectMode": 0 } self.PriceMenuDefaultSettings = SettingsProvider.getInstance().getSettings("pyfaPriceMenuSettings", PriceMenuDefaultSettings) def get(self, type): return self.PriceMenuDefaultSettings[type] def set(self, type, value): self.PriceMenuDefaultSettings[type] = value class ContextMenuSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = ContextMenuSettings() return cls._instance def __init__(self): # mode # 0 - Do not show # 1 - Show ContextMenuDefaultSettings = { "ammoPattern" : 1, "changeAffectingSkills" : 1, "metaSwap" : 1, "project" : 1, "moduleFill" : 1, "spoolup" : 1, "additionsCopyPaste" : 1, "cargoFill" : 1, } self.ContextMenuDefaultSettings = SettingsProvider.getInstance().getSettings("pyfaContextMenuSettings", ContextMenuDefaultSettings) def get(self, type): return self.ContextMenuDefaultSettings[type] def set(self, type, value): self.ContextMenuDefaultSettings[type] = value class EOSSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = EOSSettings() return cls._instance def __init__(self): self.EOSSettings = SettingsProvider.getInstance().getSettings("pyfaEOSSettings", eos.config.settings) def get(self, type): return self.EOSSettings[type] def set(self, type, value): self.EOSSettings[type] = value class GraphSettings: _instance = None @classmethod def getInstance(cls): if cls._instance is None: cls._instance = GraphSettings() return cls._instance def __init__(self): defaults = { 'mobileDroneMode': GraphDpsDroneMode.auto, 'ignoreDCR': False, 'ignoreResists': True, 'ignoreLockRange': True, 'applyProjected': True} self.settings = SettingsProvider.getInstance().getSettings('graphSettings', defaults) def get(self, type): return self.settings[type] def set(self, type, value): self.settings[type] = value class LocaleSettings: _instance = None DEFAULT = "en_US" defaults = { 'locale': DEFAULT, 'eos_locale': 'Auto' # flag for "Default" which is the same as the locale or, if not available, English } def __init__(self): self.settings = SettingsProvider.getInstance().getSettings('localeSettings', self.defaults) try: with open(os.path.join(config.pyfaPath, 'locale', 'progress.json'), "r") as f: self.progress_data = json.load(f) except FileNotFoundError: self.progress_data = {} @classmethod def getInstance(cls): if cls._instance is None: cls._instance = LocaleSettings() return cls._instance def get_progress(self, lang): if not self.progress_data: return None if lang == self.defaults['locale']: return None return self.progress_data.get(lang) @classmethod def supported_languages(cls): """Requires the application to be initialized, otherwise wx.Translation isn't set.""" pyfalog.info(f'using "{config.CATALOG}" to fetch languages, relatively base path "{os.getcwd()}"') return {x: wx.Locale.FindLanguageInfo(x) for x in wx.Translations.Get().GetAvailableTranslations(config.CATALOG)} def get(self, key): """gets the raw value fo the setting""" return self.settings[key] def get_eos_locale(self): """gets the effective value of the setting""" val = self.settings['eos_locale'] return val if val != self.defaults['eos_locale'] else self.settings['locale'].split("_")[0] def set(self, key, value): if key == 'locale' and value not in self.supported_languages(): self.settings[key] = self.DEFAULT self.settings[key] = value ================================================ FILE: service/targetProfile.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import copy from eos import db from eos.saveddata.targetProfile import TargetProfile as es_TargetProfile class ImportError(Exception): pass class TargetProfile: instance = None @classmethod def getInstance(cls): if cls.instance is None: cls.instance = TargetProfile() return cls.instance @staticmethod def getUserTargetProfileList(): return db.getTargetProfileList() @staticmethod def getBuiltinTargetProfileList(): return es_TargetProfile.getBuiltinList() @staticmethod def newPattern(name): p = es_TargetProfile() p.rawName = name db.save(p) return p @staticmethod def renamePattern(p, newName): p.rawName = newName db.save(p) @staticmethod def deletePattern(p): db.remove(p) @staticmethod def copyPattern(p): newP = copy.deepcopy(p) db.save(newP) return newP @staticmethod def saveChanges(p): db.save(p) def importPatterns(self, text): imports, num = es_TargetProfile.importPatterns(text) lenImports = len(imports) if lenImports == 0: raise ImportError("No patterns found for import") if lenImports != num: raise ImportError("%d patterns imported from clipboard; %d had errors" % (num, num - lenImports)) def exportPatterns(self): patterns = self.getUserTargetProfileList() patterns.sort(key=lambda p: p.fullName) return es_TargetProfile.exportPatterns(*patterns) ================================================ FILE: service/update.py ================================================ # ============================================================================= # Copyright (C) 2014 Ryan Holmes # # This file is part of pyfa. # # pyfa is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # pyfa is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with pyfa. If not, see . # ============================================================================= import calendar import threading # noinspection PyPackageRequirements import dateutil.parser # noinspection PyPackageRequirements import wx from logbook import Logger from packaging.version import Version import config from service.network import Network from service.settings import UpdateSettings pyfalog = Logger(__name__) class CheckUpdateThread(threading.Thread): def __init__(self, callback): threading.Thread.__init__(self) self.name = "CheckUpdate" self.callback = callback self.settings = UpdateSettings.getInstance() self.network = Network.getInstance() self.running = True def run(self): network = Network.getInstance() try: try: response = network.get( url='https://www.pyfa.io/update_check?pyfa_version={}&client_hash={}'.format(config.version, config.getClientSecret()), type=network.UPDATE, timeout=5) except (KeyboardInterrupt, SystemExit): raise except Exception as e: response = network.get( url='https://api.github.com/repos/pyfa-org/Pyfa/releases', type=network.UPDATE, timeout=5) jsonResponse = response.json() jsonResponse.sort( key=lambda x: calendar.timegm(dateutil.parser.parse(x['published_at']).utctimetuple()), reverse=True ) for release in jsonResponse[:5]: rVersion = Version(release['tag_name']) cVersion = Version(config.version) # Suppress pre releases if we're not already on a pre-release (if we are, we want to know about new ones) if not cVersion.is_prerelease and rVersion.is_prerelease and self.settings.get('prerelease'): continue # Handle use-case of updating to suppressed version if self.settings.get('version') == 'v' + config.version: self.settings.set('version', None) # Suppress version if release['tag_name'] == self.settings.get('version'): break if rVersion > cVersion: wx.CallAfter(self.callback, release, rVersion) break except (KeyboardInterrupt, SystemExit): raise except Exception as e: pyfalog.error("Caught exception in run") pyfalog.error(e) pass @staticmethod def versiontuple(v): return tuple(map(int, (v.split(".")))) def stop(self): self.running = False class Update: instance = None @staticmethod def CheckUpdate(callback): thread = CheckUpdateThread(callback) pyfalog.debug("Starting Check Update Thread.") thread.start() @classmethod def getInstance(cls): if cls.instance is None: cls.instance = Update() return cls.instance ================================================ FILE: staticdata/fsd_built/categories.0.json ================================================ { "0": { "categoryID": 0, "categoryName_de": "#System", "categoryName_en-us": "#System", "categoryName_es": "#System", "categoryName_fr": "#Système", "categoryName_it": "#System", "categoryName_ja": "#システム", "categoryName_ko": "#항성계", "categoryName_ru": "#Система", "categoryName_zh": "#星系", "categoryNameID": 63539, "published": 0 }, "1": { "categoryID": 1, "categoryName_de": "Besitzer", "categoryName_en-us": "Owner", "categoryName_es": "Propietario", "categoryName_fr": "Propriétaire", "categoryName_it": "Owner", "categoryName_ja": "所有者", "categoryName_ko": "소유자", "categoryName_ru": "Владелец", "categoryName_zh": "拥有者", "categoryNameID": 63540, "published": 0 }, "2": { "categoryID": 2, "categoryName_de": "Interstellar", "categoryName_en-us": "Celestial", "categoryName_es": "Celestial", "categoryName_fr": "Céleste", "categoryName_it": "Celestial", "categoryName_ja": "セレスチャル", "categoryName_ko": "천체", "categoryName_ru": "Небесное тело", "categoryName_zh": "天体", "categoryNameID": 63541, "published": 1 }, "3": { "categoryID": 3, "categoryName_de": "Station", "categoryName_en-us": "Station", "categoryName_es": "Estación", "categoryName_fr": "Station", "categoryName_it": "Station", "categoryName_ja": "ステーション", "categoryName_ko": "정거장", "categoryName_ru": "Станция", "categoryName_zh": "空间站", "categoryNameID": 63542, "published": 0 }, "4": { "categoryID": 4, "categoryName_de": "Material", "categoryName_en-us": "Material", "categoryName_es": "Material", "categoryName_fr": "Matériau", "categoryName_it": "Material", "categoryName_ja": "資源", "categoryName_ko": "자원", "categoryName_ru": "Материал", "categoryName_zh": "材料", "categoryNameID": 63543, "iconID": 22, "published": 1 }, "5": { "categoryID": 5, "categoryName_de": "Zubehör", "categoryName_en-us": "Accessories", "categoryName_es": "Accesorios", "categoryName_fr": "Accessoires", "categoryName_it": "Accessories", "categoryName_ja": "アクセサリー", "categoryName_ko": "악세서리", "categoryName_ru": "Вспомогательные предметы", "categoryName_zh": "附件", "categoryNameID": 63560, "iconID": 33, "published": 1 }, "6": { "categoryID": 6, "categoryName_de": "Schiff", "categoryName_en-us": "Ship", "categoryName_es": "Nave", "categoryName_fr": "Vaisseau", "categoryName_it": "Ship", "categoryName_ja": "艦船", "categoryName_ko": "함선", "categoryName_ru": "Корабль", "categoryName_zh": "舰船", "categoryNameID": 63544, "published": 1 }, "7": { "categoryID": 7, "categoryName_de": "Modul", "categoryName_en-us": "Module", "categoryName_es": "Módulo", "categoryName_fr": "Module", "categoryName_it": "Module", "categoryName_ja": "モジュール", "categoryName_ko": "모듈", "categoryName_ru": "Модуль", "categoryName_zh": "装备", "categoryNameID": 63545, "iconID": 67, "published": 1 }, "8": { "categoryID": 8, "categoryName_de": "Ladung", "categoryName_en-us": "Charge", "categoryName_es": "Carga", "categoryName_fr": "Charge", "categoryName_it": "Charge", "categoryName_ja": "チャージ", "categoryName_ko": "차지", "categoryName_ru": "Заряд", "categoryName_zh": "弹药", "categoryNameID": 63546, "published": 1 }, "9": { "categoryID": 9, "categoryName_de": "Blueprint", "categoryName_en-us": "Blueprint", "categoryName_es": "Plano", "categoryName_fr": "Plan de construction", "categoryName_it": "Blueprint", "categoryName_ja": "ブループリント", "categoryName_ko": "블루프린트", "categoryName_ru": "Чертеж", "categoryName_zh": "蓝图", "categoryNameID": 63547, "iconID": 21, "published": 1 }, "10": { "categoryID": 10, "categoryName_de": "Handel", "categoryName_en-us": "Trading", "categoryName_es": "Comercio", "categoryName_fr": "Commerce", "categoryName_it": "Trading", "categoryName_ja": "トレード", "categoryName_ko": "거래", "categoryName_ru": "Торговля", "categoryName_zh": "贸易", "categoryNameID": 63548, "published": 0 }, "11": { "categoryID": 11, "categoryName_de": "Einheit", "categoryName_en-us": "Entity", "categoryName_es": "Entidad", "categoryName_fr": "Entité", "categoryName_it": "Entity", "categoryName_ja": "エンティティ", "categoryName_ko": "객체", "categoryName_ru": "Объект", "categoryName_zh": "空间实体", "categoryNameID": 63549, "published": 0 }, "14": { "categoryID": 14, "categoryName_de": "Bonus", "categoryName_en-us": "Bonus", "categoryName_es": "Bonificación", "categoryName_fr": "Bonus", "categoryName_it": "Bonus", "categoryName_ja": "ボーナス", "categoryName_ko": "보너스", "categoryName_ru": "Бонус", "categoryName_zh": "加成", "categoryNameID": 63550, "iconID": 0, "published": 0 }, "16": { "categoryID": 16, "categoryName_de": "Skill", "categoryName_en-us": "Skill", "categoryName_es": "Habilidad", "categoryName_fr": "Compétence", "categoryName_it": "Skill", "categoryName_ja": "スキル", "categoryName_ko": "스킬", "categoryName_ru": "Навык", "categoryName_zh": "技能", "categoryNameID": 63551, "iconID": 33, "published": 1 }, "17": { "categoryID": 17, "categoryName_de": "Bedarfsartikel", "categoryName_en-us": "Commodity", "categoryName_es": "Mercancía", "categoryName_fr": "Marchandise", "categoryName_it": "Commodity", "categoryName_ja": "商品", "categoryName_ko": "물품", "categoryName_ru": "Товар", "categoryName_zh": "常用物品", "categoryNameID": 63552, "iconID": 0, "published": 1 }, "18": { "categoryID": 18, "categoryName_de": "Drohne", "categoryName_en-us": "Drone", "categoryName_es": "Dron", "categoryName_fr": "Drone", "categoryName_it": "Drone", "categoryName_ja": "ドローン", "categoryName_ko": "드론", "categoryName_ru": "Дрон", "categoryName_zh": "无人机", "categoryNameID": 63553, "iconID": 0, "published": 1, "sofBuildClass": "ship" }, "20": { "categoryID": 20, "categoryName_de": "Implantat", "categoryName_en-us": "Implant", "categoryName_es": "Implante", "categoryName_fr": "Implant", "categoryName_it": "Implant", "categoryName_ja": "インプラント", "categoryName_ko": "임플란트", "categoryName_ru": "Имплантат", "categoryName_zh": "植入体", "categoryNameID": 63554, "iconID": 0, "published": 1 }, "22": { "categoryID": 22, "categoryName_de": "Einsetzbar", "categoryName_en-us": "Deployable", "categoryName_es": "Desplegable", "categoryName_fr": "Déployable", "categoryName_it": "Deployable", "categoryName_ja": "配置型ユニット", "categoryName_ko": "전개형 구조물", "categoryName_ru": "Сбрасываемые предметы", "categoryName_zh": "可部署物品", "categoryNameID": 63555, "iconID": 0, "published": 1 }, "23": { "categoryID": 23, "categoryName_de": "Sternenbasis", "categoryName_en-us": "Starbase", "categoryName_es": "Base estelar", "categoryName_fr": "Base stellaire", "categoryName_it": "Starbase", "categoryName_ja": "スターベース", "categoryName_ko": "스타베이스", "categoryName_ru": "ПОСы", "categoryName_zh": "母星", "categoryNameID": 63556, "iconID": 0, "published": 1 }, "24": { "categoryID": 24, "categoryName_de": "Reaktion", "categoryName_en-us": "Reaction", "categoryName_es": "Reacción", "categoryName_fr": "Réaction", "categoryName_it": "Reaction", "categoryName_ja": "化学反応", "categoryName_ko": "합성", "categoryName_ru": "Реакция", "categoryName_zh": "化学反应", "categoryNameID": 63557, "iconID": 0, "published": 1 }, "25": { "categoryID": 25, "categoryName_de": "Asteroid", "categoryName_en-us": "Asteroid", "categoryName_es": "Asteroide", "categoryName_fr": "Astéroïde", "categoryName_it": "Asteroid", "categoryName_ja": "アステロイド", "categoryName_ko": "소행성", "categoryName_ru": "Астероид", "categoryName_zh": "小行星", "categoryNameID": 63558, "published": 1 }, "26": { "categoryID": 26, "categoryName_de": "WeltRaum", "categoryName_en-us": "WorldSpace", "categoryName_es": "WorldSpace", "categoryName_fr": "Espace planétaire", "categoryName_it": "WorldSpace", "categoryName_ja": "ワールドスペース", "categoryName_ko": "월드스페이스", "categoryName_ru": "WorldSpace", "categoryName_zh": "内部空间", "categoryNameID": 63568, "published": 0 }, "29": { "categoryID": 29, "categoryName_de": "Kurzbeschreibung", "categoryName_en-us": "Abstract", "categoryName_es": "Resumen", "categoryName_fr": "Résumé", "categoryName_it": "Abstract", "categoryName_ja": "アブストラクト", "categoryName_ko": "개요", "categoryName_ru": "Общее", "categoryName_zh": "抽象", "categoryNameID": 63559, "published": 0 }, "30": { "categoryID": 30, "categoryName_de": "Bekleidung", "categoryName_en-us": "Apparel", "categoryName_es": "Indumentaria", "categoryName_fr": "Équipement", "categoryName_it": "Apparel", "categoryName_ja": "アパレル", "categoryName_ko": "의류", "categoryName_ru": "Одежда", "categoryName_zh": "服饰", "categoryNameID": 63572, "published": 1 }, "32": { "categoryID": 32, "categoryName_de": "Untersystem", "categoryName_en-us": "Subsystem", "categoryName_es": "Subsistema", "categoryName_fr": "Sous-système", "categoryName_it": "Subsystem", "categoryName_ja": "サブシステム", "categoryName_ko": "서브시스템", "categoryName_ru": "Подсистема", "categoryName_zh": "子系统", "categoryNameID": 63562, "published": 1 }, "34": { "categoryID": 34, "categoryName_de": "Alte Reliquien", "categoryName_en-us": "Ancient Relics", "categoryName_es": "Reliquias antiguas", "categoryName_fr": "Reliques antiques", "categoryName_it": "Ancient Relics", "categoryName_ja": "古代の遺物", "categoryName_ko": "고대 유물", "categoryName_ru": "Древние устройства", "categoryName_zh": "古文物", "categoryNameID": 63561, "published": 1 }, "35": { "categoryID": 35, "categoryName_de": "Entzifferer", "categoryName_en-us": "Decryptors", "categoryName_es": "Desencriptadores", "categoryName_fr": "Décrypteurs", "categoryName_it": "Decryptors", "categoryName_ja": "解読器", "categoryName_ko": "해독기", "categoryName_ru": "Файлы данных", "categoryName_zh": "解码器", "categoryNameID": 63563, "published": 1 }, "39": { "categoryID": 39, "categoryName_de": "Infrastruktur-Upgrades", "categoryName_en-us": "Infrastructure Upgrades", "categoryName_es": "Mejoras de infraestructuras", "categoryName_fr": "Améliorations d'infrastructure", "categoryName_it": "Infrastructure Upgrades", "categoryName_ja": "領域施設強化", "categoryName_ko": "인프라 업그레이드", "categoryName_ru": "Расширения инфраструктуры", "categoryName_zh": "基础设施升级件", "categoryNameID": 63565, "published": 1 }, "40": { "categoryID": 40, "categoryName_de": "Souveränitätsstrukturen", "categoryName_en-us": "Sovereignty Structures", "categoryName_es": "Estructuras de soberanía", "categoryName_fr": "Structures de souveraineté", "categoryName_it": "Sovereignty Structures", "categoryName_ja": "領有権管理設備", "categoryName_ko": "소버린티 구조물", "categoryName_ru": "Модули воздействия на право владения", "categoryName_zh": "主权设施", "categoryNameID": 63564, "published": 1 }, "41": { "categoryID": 41, "categoryName_de": "Planetare Industrie", "categoryName_en-us": "Planetary Industry", "categoryName_es": "Industria planetaria", "categoryName_fr": "Industrie planétaire", "categoryName_it": "Planetary Industry", "categoryName_ja": "惑星インダストリー", "categoryName_ko": "행성 개발", "categoryName_ru": "Планетарная промышленность", "categoryName_zh": "行星工业", "categoryNameID": 63569, "published": 1 }, "42": { "categoryID": 42, "categoryName_de": "Planetarische Ressourcen", "categoryName_en-us": "Planetary Resources", "categoryName_es": "Recursos planetarios", "categoryName_fr": "Ressources planétaires", "categoryName_it": "Planetary Resources", "categoryName_ja": "惑星資源", "categoryName_ko": "행성 자원", "categoryName_ru": "Планетарные ресурсы", "categoryName_zh": "行星资源", "categoryNameID": 63566, "published": 1 }, "43": { "categoryID": 43, "categoryName_de": "Planetarische Güter", "categoryName_en-us": "Planetary Commodities", "categoryName_es": "Mercancías planetarias", "categoryName_fr": "Marchandises planétaires", "categoryName_it": "Planetary Commodities", "categoryName_ja": "惑星商品", "categoryName_ko": "행성 생산품", "categoryName_ru": "Планетарные товары", "categoryName_zh": "行星商品", "categoryNameID": 63567, "published": 1 }, "46": { "categoryID": 46, "categoryName_de": "Orbitale", "categoryName_en-us": "Orbitals", "categoryName_es": "Orbitales", "categoryName_fr": "Orbitaux", "categoryName_it": "Orbitals", "categoryName_ja": "軌道施設", "categoryName_ko": "궤도 시설", "categoryName_ru": "Орбитальные станции", "categoryName_zh": "轨道类", "categoryNameID": 63570, "published": 1 }, "49": { "categoryID": 49, "categoryName_de": "Platzierbares", "categoryName_en-us": "Placeables", "categoryName_es": "Objetos colocables", "categoryName_fr": "Éléments", "categoryName_it": "Placeables", "categoryName_ja": "配置可能", "categoryName_ko": "배치물", "categoryName_ru": "Декорации", "categoryName_zh": "可放置物品", "categoryNameID": 63571, "published": 0 }, "53": { "categoryID": 53, "categoryName_de": "Effekte", "categoryName_en-us": "Effects", "categoryName_es": "Efectos", "categoryName_fr": "Effets", "categoryName_it": "Effects", "categoryName_ja": "効果", "categoryName_ko": "효과", "categoryName_ru": "Спецэффекты", "categoryName_zh": "效果", "categoryNameID": 63573, "published": 0 }, "54": { "categoryID": 54, "categoryName_de": "Beleuchtung", "categoryName_en-us": "Lights", "categoryName_es": "Luces", "categoryName_fr": "Lumières", "categoryName_it": "Lights", "categoryName_ja": "ライト", "categoryName_ko": "조명", "categoryName_ru": "Освещение", "categoryName_zh": "灯光", "categoryNameID": 63574, "published": 0 }, "59": { "categoryID": 59, "categoryName_de": "Zellen", "categoryName_en-us": "Cells", "categoryName_es": "Celdas", "categoryName_fr": "Cellules", "categoryName_it": "Cells", "categoryName_ja": "セル", "categoryName_ko": "세포", "categoryName_ru": "Клетки", "categoryName_zh": "单元", "categoryNameID": 235965, "published": 0 }, "63": { "categoryID": 63, "categoryName_de": "Sonderversionen", "categoryName_en-us": "Special Edition Assets", "categoryName_es": "Artículos de edición especial", "categoryName_fr": "Actifs édition spéciale", "categoryName_it": "Special Edition Assets", "categoryName_ja": "特別版資産", "categoryName_ko": "스페셜 에디션 아이템", "categoryName_ru": "Предметы из особых изданий", "categoryName_zh": "特别版用品", "categoryNameID": 285070, "published": 1 }, "65": { "categoryID": 65, "categoryName_de": "Struktur", "categoryName_en-us": "Structure", "categoryName_es": "Estructura", "categoryName_fr": "Structure", "categoryName_it": "Structure", "categoryName_ja": "ストラクチャ", "categoryName_ko": "구조물", "categoryName_ru": "Сооружения", "categoryName_zh": "建筑", "categoryNameID": 308338, "published": 1 }, "66": { "categoryID": 66, "categoryName_de": "Strukturmodul", "categoryName_en-us": "Structure Module", "categoryName_es": "Módulo de estructura", "categoryName_fr": "Module de structure", "categoryName_it": "Structure Module", "categoryName_ja": "ストラクチャモジュール", "categoryName_ko": "구조물 모듈", "categoryName_ru": "Блоки сооружений", "categoryName_zh": "建筑装备", "categoryNameID": 308340, "published": 1 }, "87": { "categoryID": 87, "categoryName_de": "Jäger", "categoryName_en-us": "Fighter", "categoryName_es": "Caza", "categoryName_fr": "Combattant", "categoryName_it": "Fighter", "categoryName_ja": "戦闘機", "categoryName_ko": "파이터", "categoryName_ru": "Истребители", "categoryName_zh": "铁骑舰载机", "categoryNameID": 510368, "published": 1 }, "91": { "categoryID": 91, "categoryName_de": "SKINs", "categoryName_en-us": "SKINs", "categoryName_es": "SKIN", "categoryName_fr": "SKINS", "categoryName_it": "SKINs", "categoryName_ja": "SKIN", "categoryName_ko": "SKIN", "categoryName_ru": "Окраски", "categoryName_zh": "涂装", "categoryNameID": 531338, "published": 1 }, "2100": { "categoryID": 2100, "categoryName_de": "Expertensysteme", "categoryName_en-us": "Expert Systems", "categoryName_es": "Sistemas expertos", "categoryName_fr": "Systèmes experts", "categoryName_it": "Expert Systems", "categoryName_ja": "エキスパートシステム", "categoryName_ko": "전문가 시스템", "categoryName_ru": "Экспертные системы", "categoryName_zh": "专家系统", "categoryNameID": 573416, "published": 1 }, "2107": { "categoryID": 2107, "categoryName_de": "Bergbau", "categoryName_en-us": "Mining", "categoryName_es": "Minería", "categoryName_fr": "Extraction", "categoryName_it": "Mining", "categoryName_ja": "採掘", "categoryName_ko": "채굴", "categoryName_ru": "Бурение", "categoryName_zh": "采矿", "categoryNameID": 587126, "published": 0 }, "2118": { "categoryID": 2118, "categoryName_de": "Anpassung", "categoryName_en-us": "Personalization", "categoryName_es": "Personalización", "categoryName_fr": "Personnalisation", "categoryName_it": "Personalization", "categoryName_ja": "カスタマイズ", "categoryName_ko": "개인화", "categoryName_ru": "Персонализация", "categoryName_zh": "个性化定制", "categoryNameID": 631766, "published": 1 }, "2143": { "categoryID": 2143, "categoryName_de": "Kolonie-Ressourcen", "categoryName_en-us": "Colony Resources", "categoryName_es": "Recursos de la colonia", "categoryName_fr": "Ressources de colonie", "categoryName_it": "Colony Resources", "categoryName_ja": "コロニーのリソース", "categoryName_ko": "콜로니 자원", "categoryName_ru": "Ресурсы колоний", "categoryName_zh": "殖民地资源", "categoryNameID": 709447, "iconID": 24296, "published": 1 }, "2152": { "categoryID": 2152, "categoryName_de": "QA- und Dev-Gruppen", "categoryName_en-us": "QA and Dev Groups", "categoryName_es": "Control de calidad y grupos de desarrolladores", "categoryName_fr": "Groupes QA et Dev", "categoryName_it": "QA and Dev Groups", "categoryName_ja": "QAと開発者グループ", "categoryName_ko": "QA and Dev Groups", "categoryName_ru": "Группы разработки и КК", "categoryName_zh": "质量保证和开发团队", "categoryNameID": 1025580, "published": 0 }, "350001": { "categoryID": 350001, "categoryName_de": "Infanterie", "categoryName_en-us": "Infantry", "categoryName_es": "Infantería", "categoryName_fr": "Infanterie", "categoryName_it": "Infantry", "categoryName_ja": "歩兵", "categoryName_ko": "보병", "categoryName_ru": "Пехотное", "categoryName_zh": "Infantry", "categoryNameID": 267649, "published": 0 } } ================================================ FILE: staticdata/fsd_built/dogmaattributes.0.json ================================================ { "2": { "attributeID": 2, "categoryID": 9, "dataType": 0, "defaultValue": 0.0, "description": "Boolean to store status of online effect", "displayWhenZero": 0, "highIsGood": 1, "name": "isOnline", "published": 0, "stackable": 1 }, "3": { "attributeID": 3, "categoryID": 7, "dataType": 1, "defaultValue": 0.0, "description": "current structure damage dealt to module", "displayName_de": "Gegenstandsschaden", "displayName_en-us": "Item Damage", "displayName_es": "Daño de objeto", "displayName_fr": "Objet endommagé", "displayName_it": "Item Damage", "displayName_ja": "アイテムダメージ", "displayName_ko": "아이템 손상도", "displayName_ru": "Повреждение предмета", "displayName_zh": "物品损坏", "displayNameID": 233070, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1386, "name": "damage", "published": 1, "stackable": 1, "tooltipDescription_de": "Modulschaden", "tooltipDescription_en-us": "Module Damage", "tooltipDescription_es": "Daño del módulo", "tooltipDescription_fr": "Détérioration du module", "tooltipDescription_it": "Module Damage", "tooltipDescription_ja": "モジュールへのダメージ", "tooltipDescription_ko": "모듈 피해량", "tooltipDescription_ru": "Повреждение модулей", "tooltipDescription_zh": "装备损耗", "tooltipDescriptionID": 317928, "tooltipTitleID": 317927, "unitID": 113 }, "4": { "attributeID": 4, "categoryID": 4, "dataType": 9, "defaultValue": 0.0, "description": "Integer that describes the types mass", "displayName_de": "Masse", "displayName_en-us": "Mass", "displayName_es": "Masa", "displayName_fr": "Masse", "displayName_it": "Mass", "displayName_ja": "質量", "displayName_ko": "질량", "displayName_ru": "Масса", "displayName_zh": "质量", "displayNameID": 233287, "displayWhenZero": 0, "highIsGood": 1, "iconID": 76, "name": "mass", "published": 1, "stackable": 0, "tooltipDescription_de": "Bei aufsteigender Masse werden Beschleunigung und Wendegeschwindigkeit negativ beeinflusst", "tooltipDescription_en-us": "Affects acceleration and turning speed negatively as the mass increases", "tooltipDescription_es": "Afecta negativamente a la aceleración y a la velocidad de giro conforme aumenta la masa.", "tooltipDescription_fr": "Diminue l'accélération et la vitesse dans les virages lorsque la masse augmente.", "tooltipDescription_it": "Affects acceleration and turning speed negatively as the mass increases", "tooltipDescription_ja": "数値が増えると加速/旋回速度が鈍ります", "tooltipDescription_ko": "질량이 증가할수록 가속도 및 방향 전환 속도가 감소합니다.", "tooltipDescription_ru": "Увеличение этой характеристики ухудшает приёмистость и маневренность корабля", "tooltipDescription_zh": "质量越大,加速和转向就越慢", "tooltipDescriptionID": 295375, "tooltipTitleID": 295374, "unitID": 2 }, "6": { "attributeID": 6, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "The amount of charge used from the capacitor for a module activation.", "displayName_de": "Aktivierungskosten", "displayName_en-us": "Activation Cost", "displayName_es": "Coste de activación", "displayName_fr": "Coût énergétique d'activation", "displayName_it": "Activation Cost", "displayName_ja": "起動コスト", "displayName_ko": "활성화 비용", "displayName_ru": "Потребление энергии (за цикл)", "displayName_zh": "启用耗电量", "displayNameID": 233007, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1400, "name": "capacitorNeed", "published": 1, "stackable": 1, "unitID": 114 }, "8": { "attributeID": 8, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "tbd", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "minRange", "published": 0, "stackable": 1 }, "9": { "attributeID": 9, "categoryID": 4, "dataType": 4, "defaultValue": 0.0, "description": "The maximum hitpoints of an object.", "displayName_de": "HP der Struktur", "displayName_en-us": "Structure Hitpoints", "displayName_es": "Vida estructura", "displayName_fr": "PV de la structure", "displayName_it": "Structure Hitpoints", "displayName_ja": "ストラクチャのヒットポイント", "displayName_ko": "내구도", "displayName_ru": "Запас прочности корпуса", "displayName_zh": "结构值", "displayNameID": 233553, "displayWhenZero": 0, "highIsGood": 1, "iconID": 67, "name": "hp", "published": 1, "stackable": 1, "tooltipDescription_de": "Die HP der Struktur regeneriert sich nicht von alleine, kann aber von Modulen oder Stationsdiensten repariert werden", "tooltipDescription_en-us": "Structure hitpoints do not regenerate naturally but can be repaired by modules or station services", "tooltipDescription_es": "Los puntos de vida de la estructura no se regeneran automáticamente, sino mediante módulos o servicios de la estación.", "tooltipDescription_fr": "Les PV de la structure ne se régénèrent pas automatiquement, mais peuvent être réparés par des modules ou des stations.", "tooltipDescription_it": "Structure hitpoints do not regenerate naturally but can be repaired by modules or station services", "tooltipDescription_ja": "自動的には回復せず、モジュールやステーションサービスで修復されます", "tooltipDescription_ko": "내구도는 자동으로 재생되지 않으며 모듈이나 정거장 서비스를 이용해 수리할 수 있습니다.", "tooltipDescription_ru": "Запас прочности корпуса не восстанавливается естественным образом, но его можно восстановить с помощью модулей или станционных служб", "tooltipDescription_zh": "结构不会自动恢复,不过可以用装备或空间站维修服务进行修理", "tooltipDescriptionID": 295348, "tooltipTitleID": 295347, "unitID": 113 }, "11": { "attributeID": 11, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "power output of power core", "displayName_de": "Stromnetzleistung", "displayName_en-us": "Powergrid Output", "displayName_es": "Rendimiento sistema potencia", "displayName_fr": "Puissance du réseau d'alimentation", "displayName_it": "Powergrid Output", "displayName_ja": "パワーグリッド出力", "displayName_ko": "파워그리드", "displayName_ru": "Мощность реактора", "displayName_zh": "能量栅格输出", "displayNameID": 233410, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "powerOutput", "published": 1, "stackable": 1, "unitID": 107 }, "12": { "attributeID": 12, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "The number of low power slots on the ship.", "displayName_de": "Low Slots", "displayName_en-us": "Low Slots", "displayName_es": "Ranuras inferiores", "displayName_fr": "Emplacements basse puissance", "displayName_it": "Low Slots", "displayName_ja": "ローパワースロット", "displayName_ko": "로우 슬롯", "displayName_ru": "Разъемы малой мощности", "displayName_zh": "低能量槽", "displayNameID": 233279, "displayWhenZero": 0, "highIsGood": 1, "iconID": 295, "name": "lowSlots", "published": 1, "stackable": 1, "unitID": 122 }, "13": { "attributeID": 13, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "tbd", "displayName_de": "Medium Slots", "displayName_en-us": "Medium Slots", "displayName_es": "Ranuras medias", "displayName_fr": "Emplacements intermédiaires", "displayName_it": "Medium Slots", "displayName_ja": "ミディアムスロット", "displayName_ko": "미디움 슬롯", "displayName_ru": "Разъёмы средней мощности", "displayName_zh": "中能量槽", "displayNameID": 233423, "displayWhenZero": 0, "highIsGood": 1, "iconID": 294, "name": "medSlots", "published": 1, "stackable": 1, "unitID": 122 }, "14": { "attributeID": 14, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "tbd", "displayName_de": "High Slots", "displayName_en-us": "High Slots", "displayName_es": "Ranuras superiores", "displayName_fr": "Emplacements haute puissance", "displayName_it": "High Slots", "displayName_ja": "ハイパワースロット", "displayName_ko": "하이 슬롯", "displayName_ru": "Разъёмы большой мощности", "displayName_zh": "高能量槽", "displayNameID": 233229, "displayWhenZero": 0, "highIsGood": 1, "iconID": 293, "name": "hiSlots", "published": 1, "stackable": 1, "unitID": 122 }, "15": { "attributeID": 15, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Current load of power core", "displayName_de": "Energielast", "displayName_en-us": "Power Load", "displayName_es": "Potencia de carga", "displayName_fr": "Facteur de charge", "displayName_it": "Power Load", "displayName_ja": "パワー負荷", "displayName_ko": "전력 사용량", "displayName_ru": "Нагрузка", "displayName_zh": "能量负荷", "displayNameID": 233414, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "powerLoad", "published": 1, "stackable": 1, "unitID": 107 }, "18": { "attributeID": 18, "categoryID": 9, "chargeRechargeTimeID": 55, "dataType": 6, "defaultValue": 0.0, "description": "charge of module", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1668, "maxAttributeID": 482, "name": "charge", "published": 0, "stackable": 1, "unitID": 114 }, "19": { "attributeID": 19, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "tbd", "displayWhenZero": 0, "highIsGood": 1, "name": "powerToSpeed", "published": 0, "stackable": 1 }, "20": { "attributeID": 20, "categoryID": 28, "dataType": 5, "defaultValue": 1.0, "description": "Factor by which topspeed increases.", "displayName_de": "Höchstgeschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 233195, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "minAttributeID": 2266, "name": "speedFactor", "published": 1, "stackable": 0, "unitID": 124 }, "21": { "attributeID": 21, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "tbd instance param", "displayWhenZero": 0, "highIsGood": 1, "name": "warpFactor", "published": 0, "stackable": 1 }, "29": { "attributeID": 29, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "tbd", "displayWhenZero": 0, "highIsGood": 1, "name": "warpInhibitor", "published": 0, "stackable": 1 }, "30": { "attributeID": 30, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "current power need", "displayName_de": "Stromnetzbedarf", "displayName_en-us": "Powergrid Usage", "displayName_es": "Uso del sistema de potencia", "displayName_fr": "Utilisation du réseau d'alimentation", "displayName_it": "Powergrid Usage", "displayName_ja": "パワーグリッドの使用量", "displayName_ko": "파워그리드 사용량", "displayName_ru": "Использование энергосети", "displayName_zh": "能量栅格占用", "displayNameID": 233579, "displayWhenZero": 0, "highIsGood": 0, "iconID": 70, "name": "power", "published": 1, "stackable": 1, "unitID": 107 }, "31": { "attributeID": 31, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The number of hit points this module can take ", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "maxArmor", "published": 0, "stackable": 1 }, "32": { "attributeID": 32, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The number of hit points when this module goes offline ", "displayWhenZero": 0, "highIsGood": 1, "name": "breakPoint", "published": 0, "stackable": 1 }, "37": { "attributeID": 37, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "Maximum velocity of ship", "displayName_de": "Maximalgeschwindigkeit", "displayName_en-us": "Maximum Velocity", "displayName_es": "Velocidad máxima", "displayName_fr": "Vitesse maximale", "displayName_it": "Maximum Velocity", "displayName_ja": "最高速度", "displayName_ko": "최대 속도", "displayName_ru": "Максимальная скорость", "displayName_zh": "最大速度", "displayNameID": 233424, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "maxAttributeID": 2033, "name": "maxVelocity", "published": 1, "stackable": 0, "tooltipDescription_de": "Die maximale Geschwindigkeit, die dieses Schiff ohne Warpantrieb erreichen kann", "tooltipDescription_en-us": "The maximum velocity that can be achieved in subwarp flight", "tooltipDescription_es": "La velocidad máxima en vuelos de subwarp.", "tooltipDescription_fr": "La vitesse maximale pouvant être atteinte en sous-warp.", "tooltipDescription_it": "The maximum velocity that can be achieved in subwarp flight", "tooltipDescription_ja": "サブワープ航行時に到達できる最高速度です", "tooltipDescription_ko": "서브워프 비행시 낼 수 있는 최대 속도입니다.", "tooltipDescription_ru": "Максимальная скорость, достижимая вне варп-режима", "tooltipDescription_zh": "在非跃迁状态下能达到的最大飞行速度", "tooltipDescriptionID": 309803, "tooltipTitleID": 309802, "unitID": 11 }, "38": { "attributeID": 38, "categoryID": 4, "dataType": 9, "defaultValue": 0.0, "description": "The cargo space allowed", "displayName_de": "Kapazität", "displayName_en-us": "Capacity", "displayName_es": "Capacidad", "displayName_fr": "Capacité", "displayName_it": "Capacity", "displayName_ja": "容量", "displayName_ko": "적재량", "displayName_ru": "Вместимость грузового отсека", "displayName_zh": "容量", "displayNameID": 233010, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "capacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen an Gegenständen, das im Frachtraum transportiert werden kann", "tooltipDescription_en-us": "The maximum volume of items that can be carried in the cargo hold", "tooltipDescription_es": "El volumen máximo de objetos que pueden transportarse en la bodega.", "tooltipDescription_fr": "Volume d'objets maximum pouvant être transportés dans la soute de chargement.", "tooltipDescription_it": "The maximum volume of items that can be carried in the cargo hold", "tooltipDescription_ja": "カーゴホールドに積んで運搬できる体積量です", "tooltipDescription_ko": "화물실의 총 적재량입니다.", "tooltipDescription_ru": "Объём, максимально допустимый к размещению в грузовом отсеке", "tooltipDescription_zh": "货柜舱能够装载的最大体积", "tooltipDescriptionID": 295381, "tooltipTitleID": 295380, "unitID": 9 }, "39": { "attributeID": 39, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The damage this weapon deals", "displayName_de": "Schadensreparaturbonus", "displayName_en-us": "Damage Repaired Bonus", "displayName_es": "Bonificación de daño reparado", "displayName_fr": "Bonus de dégâts réparés", "displayName_it": "Damage Repaired Bonus", "displayName_ja": "ダメージリペアボーナス", "displayName_ko": "수리 보너스", "displayName_ru": "Влияние на ремонтируемый запас прочности", "displayName_zh": "已维修损伤加成", "displayNameID": 233073, "displayWhenZero": 0, "highIsGood": 1, "name": "damageHP", "published": 1, "stackable": 1, "unitID": 105 }, "47": { "attributeID": 47, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "The number of slots this module requires. Only used for launchers, bays and turrets.", "displayWhenZero": 0, "highIsGood": 1, "name": "slots", "published": 0, "stackable": 1 }, "48": { "attributeID": 48, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "CPU output of ship", "displayName_de": "CPU-Leistung", "displayName_en-us": "CPU Output", "displayName_es": "Rendimiento CPU", "displayName_fr": "Puissance CPU", "displayName_it": "CPU Output", "displayName_ja": "CPU 出力", "displayName_ko": "CPU", "displayName_ru": "Мощность ЦПУ", "displayName_zh": "CPU输出", "displayNameID": 233054, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1405, "name": "cpuOutput", "published": 1, "stackable": 1, "unitID": 106 }, "49": { "attributeID": 49, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "CPU load of ship", "displayName_de": "CPU-Auslastung", "displayName_en-us": "CPU Load", "displayName_es": "Carga de la CPU", "displayName_fr": "Charge CPU", "displayName_it": "CPU Load", "displayName_ja": "CPU 負荷", "displayName_ko": "CPU 사용량", "displayName_ru": "Нагрузка на ЦПУ", "displayName_zh": "CPU载荷", "displayNameID": 233431, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1405, "name": "cpuLoad", "published": 1, "stackable": 1, "unitID": 106 }, "50": { "attributeID": 50, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "CPU need of module", "displayName_de": "CPU-Auslastung", "displayName_en-us": "CPU usage", "displayName_es": "Uso de la CPU", "displayName_fr": "Utilisation CPU", "displayName_it": "CPU usage", "displayName_ja": "CPUの使用量", "displayName_ko": "CPU 사용량", "displayName_ru": "Загрузка ЦПУ", "displayName_zh": "CPU使用量", "displayNameID": 233049, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1405, "name": "cpu", "published": 1, "stackable": 1, "unitID": 106 }, "51": { "attributeID": 51, "categoryID": 29, "dataType": 4, "defaultValue": 0.0, "description": "Time in milliseconds between possible activations", "displayName_de": "Feuerrate", "displayName_en-us": "Rate of fire", "displayName_es": "Cadencia de tiro", "displayName_fr": "Cadence de tir", "displayName_it": "Rate of fire", "displayName_ja": "発射間隔", "displayName_ko": "연사속도", "displayName_ru": "Цикл выстрела", "displayName_zh": "射击速度", "displayNameID": 233201, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "speed", "published": 1, "stackable": 0, "unitID": 101 }, "52": { "attributeID": 52, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Substracted before damage application.", "displayWhenZero": 0, "highIsGood": 1, "name": "damageResistance", "published": 0, "stackable": 1 }, "54": { "attributeID": 54, "categoryID": 29, "dataType": 4, "defaultValue": 0.0, "description": "Distance below which range does not affect the to-hit equation.", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 233316, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxRange", "published": 1, "stackable": 0, "unitID": 1 }, "55": { "attributeID": 55, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Amount of time taken to fully recharge the capacitor.", "displayName_de": "Wiederaufladezeit des Energiespeichers", "displayName_en-us": "Capacitor Recharge time", "displayName_es": "Tiempo carga condensador", "displayName_fr": "Temps de recharge du capaciteur", "displayName_it": "Capacitor Recharge time", "displayName_ja": "キャパシタリチャージ時間", "displayName_ko": "캐패시터 충전 시간", "displayName_ru": "Время восстановления заряда", "displayName_zh": "电容回充时间", "displayNameID": 233357, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "rechargeRate", "published": 1, "stackable": 1, "tooltipDescription_de": "Benötigte Zeit um den Energiespeicher wieder voll aufzuladen", "tooltipDescription_en-us": "Amount of time taken to fully recharge the capacitor", "tooltipDescription_es": "Cantidad de tiempo necesaria para cargar por completo el condensador.", "tooltipDescription_fr": "Temps nécessaire à la recharge totale du capaciteur.", "tooltipDescription_it": "Amount of time taken to fully recharge the capacitor", "tooltipDescription_ja": "キャパシタのフル充電にかかる時間です", "tooltipDescription_ko": "캐패시터를 전부 충전하기까지 걸리는 시간입니다.", "tooltipDescription_ru": "Количество времени, требуемое для полной перезарядки бортового накопителя", "tooltipDescription_zh": "电容恢复至最大值所需要的时间", "tooltipDescriptionID": 295217, "tooltipTitleID": 295216, "unitID": 101 }, "56": { "attributeID": 56, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "Number of charges consumed per activation", "displayName_de": "Laderate je Zyklus", "displayName_en-us": "Charges Per Cycle", "displayName_es": "Cargas por ciclo", "displayName_fr": "Charges par cycle", "displayName_it": "Charges Per Cycle", "displayName_ja": "サイクルあたりチャージ", "displayName_ko": "주기당 충전량", "displayName_ru": "Зарядов за цикл", "displayName_zh": "单次消耗量", "displayNameID": 233609, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeRate", "published": 1, "stackable": 1 }, "61": { "attributeID": 61, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "GroupID of module targeted by this weapon", "displayWhenZero": 0, "highIsGood": 1, "name": "targetModule", "published": 0, "stackable": 1 }, "63": { "attributeID": 63, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Something to do with accuracy.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "accuracyBonus", "published": 0, "stackable": 1 }, "64": { "attributeID": 64, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "Damage multiplier.", "displayName_de": "Schadensmodifikator", "displayName_en-us": "Damage Modifier", "displayName_es": "Modificador de daño", "displayName_fr": "Modificateur de dommages", "displayName_it": "Damage Modifier", "displayName_ja": "ダメージ修正乗数", "displayName_ko": "피해량 보정치", "displayName_ru": "Модификатор урона", "displayName_zh": "伤害量调整", "displayNameID": 233074, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "damageMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "65": { "attributeID": 65, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "HP bonus to armor.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorBonus", "published": 0, "stackable": 1 }, "66": { "attributeID": 66, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to duration.", "displayName_de": "Laufzeitbonus", "displayName_en-us": "Duration Bonus", "displayName_es": "Bonificación de duración", "displayName_fr": "Bonus de durée", "displayName_it": "Duration Bonus", "displayName_ja": "起動時間ボーナス", "displayName_ko": "지속시간 보너스", "displayName_ru": "Влияние на длительность", "displayName_zh": "单次运转时间加成", "displayNameID": 233137, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "67": { "attributeID": 67, "categoryID": 5, "dataType": 4, "defaultValue": 0.0, "description": "Extra batteries to add capacitor.", "displayName_de": "Energiespeicherbonus", "displayName_en-us": "Capacitor Bonus", "displayName_es": "Bonificación de condensador", "displayName_fr": "Bonus de capaciteur", "displayName_it": "Capacitor Bonus", "displayName_ja": "キャパシタボーナス", "displayName_ko": "캐패시터 보너스", "displayName_ru": "Влияние на запас энергии", "displayName_zh": "电容加成", "displayNameID": 233003, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "capacitorBonus", "published": 1, "stackable": 1, "unitID": 114 }, "68": { "attributeID": 68, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to shield.", "displayName_de": "Schildbonus", "displayName_en-us": "Shield Bonus", "displayName_es": "Bonificación de escudo", "displayName_fr": "Bonus de bouclier", "displayName_it": "Shield Bonus", "displayName_ja": "シールドボーナス", "displayName_ko": "실드 보너스", "displayName_ru": "Эффективность накачки щита", "displayName_zh": "护盾加成", "displayNameID": 232934, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldBonus", "published": 1, "stackable": 0, "unitID": 113 }, "69": { "attributeID": 69, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to rate/conversion ratio.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "rateBonus", "published": 0, "stackable": 1 }, "70": { "attributeID": 70, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "The agility of the object.", "displayName_de": "Trägheitsmodifikator", "displayName_en-us": "Inertia Modifier", "displayName_es": "Modificador de inercia", "displayName_fr": "Modificateur d'inertie", "displayName_it": "Inertia Modifier", "displayName_ja": "慣性修正乗数", "displayName_ko": "관성 계수", "displayName_ru": "Влияние инертности конструкции", "displayName_zh": "惯性调整", "displayNameID": 233606, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1401, "name": "agility", "published": 1, "stackable": 0, "tooltipDescription_de": "Bei abnehmenden Wert werden Beschleunigung und Wendegeschwindigkeit positiv beeinflusst", "tooltipDescription_en-us": "Affects acceleration and turning speed positively as the value decreases", "tooltipDescription_es": "Afecta positivamente a la aceleración y a la velocidad de giro conforme se reduce el valor.", "tooltipDescription_fr": "Augmente l'accélération et la vitesse dans les virages lorsque cette valeur diminue.", "tooltipDescription_it": "Affects acceleration and turning speed positively as the value decreases", "tooltipDescription_ja": "数値が減少すると加速・回転スピードに影響します", "tooltipDescription_ko": "수치가 낮을수록 가속도 및 방향 전환 속도가 증가합니다.", "tooltipDescription_ru": "Уменьшение этой характеристики повышает приёмистость и маневренность корабля", "tooltipDescription_zh": "该数值越小,加速和转向就越快", "tooltipDescriptionID": 296181, "tooltipTitleID": 296180, "unitID": 104 }, "72": { "attributeID": 72, "categoryID": 2, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to capacity (shield at least).", "displayName_de": "HP-Bonus für Schilde", "displayName_en-us": "Shield Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del escudo", "displayName_fr": "Bonus de PV du bouclier", "displayName_it": "Shield Hitpoint Bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드 내구도 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 233011, "displayWhenZero": 0, "highIsGood": 1, "iconID": 69, "name": "capacityBonus", "published": 1, "stackable": 1, "unitID": 113 }, "73": { "attributeID": 73, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Length of activation time.", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai / Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "起動(待機)時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 233136, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "duration", "published": 1, "stackable": 1, "unitID": 101 }, "75": { "attributeID": 75, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "DO NOT MESS WITH. How many hp are in one capacity unit", "displayWhenZero": 0, "highIsGood": 1, "name": "hpToCapacity", "published": 0, "stackable": 1 }, "76": { "attributeID": 76, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Maximum range at which the scanner can lock a target.", "displayName_de": "Max. Zielaufschaltungsreichweite", "displayName_en-us": "Maximum Targeting Range", "displayName_es": "Distancia-objetivo máxima", "displayName_fr": "Portée maximale du système de ciblage", "displayName_it": "Maximum Targeting Range", "displayName_ja": "最大ターゲット範囲", "displayName_ko": "최대 타겟팅 거리", "displayName_ru": "Максимальная дальность захвата целей", "displayName_zh": "锁定范围上限", "displayNameID": 233329, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "maxAttributeID": 797, "name": "maxTargetRange", "published": 1, "stackable": 0, "tooltipDescription_de": "Die maximale Reichweite, in der Ziele aufgeschaltet und erfasst gehalten werden können", "tooltipDescription_en-us": "The maximum range at which it is possible to acquire and hold target locks", "tooltipDescription_es": "El alcance máximo en el que es posible adquirir y mantener objetivos fijados.", "tooltipDescription_fr": "La portée maximale à laquelle il est possible d'acquérir et de maintenir le verrouillage de cible.", "tooltipDescription_it": "The maximum range at which it is possible to acquire and hold target locks", "tooltipDescription_ja": "ターゲットを捕捉・ロックできる最大範囲です", "tooltipDescription_ko": "타겟을 확보하고 조준 완료할 수 있는 최대 거리입니다.", "tooltipDescription_ru": "Максимальная дальность действия бортовых систем обнаружения целей", "tooltipDescription_zh": "能够锁定目标的最大范围", "tooltipDescriptionID": 295342, "tooltipTitleID": 295341, "unitID": 1 }, "77": { "attributeID": 77, "categoryID": 51, "dataType": 4, "defaultValue": 0.0, "description": "How much ore gets mined", "displayName_de": "Bergbauertrag", "displayName_en-us": "Mining amount", "displayName_es": "Cantidad extraída", "displayName_fr": "Minerai extrait", "displayName_it": "Mining amount", "displayName_ja": "採掘量", "displayName_ko": "채굴 총량", "displayName_ru": "Объем добычи (за цикл)", "displayName_zh": "开采量", "displayNameID": 233349, "displayWhenZero": 0, "highIsGood": 1, "iconID": 22, "name": "miningAmount", "published": 1, "stackable": 1, "unitID": 9 }, "79": { "attributeID": 79, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "scanning speed in milliseconds", "displayWhenZero": 0, "highIsGood": 0, "iconID": 74, "name": "scanSpeed", "published": 0, "stackable": 0, "unitID": 101 }, "80": { "attributeID": 80, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Amount to increase the maximum speed by.", "displayName_de": "Geschwindigkeitsbonus", "displayName_en-us": "Speed Bonus", "displayName_es": "Bonificación de velocidad", "displayName_fr": "Bonus de vitesse", "displayName_it": "Speed Bonus", "displayName_ja": "速度ボーナス", "displayName_ko": "속도 보너스", "displayName_ru": "Влияние на скорость", "displayName_zh": "速度加成", "displayNameID": 233200, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "speedBonus", "published": 1, "stackable": 1, "unitID": 11 }, "81": { "attributeID": 81, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Factor to modify the hp by.", "displayWhenZero": 0, "highIsGood": 1, "name": "hpFactor", "published": 0, "stackable": 1 }, "82": { "attributeID": 82, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Modifier for the maximum structural strength.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureBonus", "published": 0, "stackable": 1 }, "83": { "attributeID": 83, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "An amount to modify the structural damage by.", "displayName_de": "Reparierte HP der Struktur", "displayName_en-us": "Structure Hitpoints Repaired", "displayName_es": "Puntos de vida de la estructura recuperados", "displayName_fr": "PV de la structure réparés", "displayName_it": "Structure Hitpoints Repaired", "displayName_ja": "ストラクチャHP修復", "displayName_ko": "내구도 수리량", "displayName_ru": "Ремонтируемый запас прочности корпуса", "displayName_zh": "结构值修复量", "displayNameID": 233487, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "structureDamageAmount", "published": 1, "stackable": 1, "unitID": 113 }, "84": { "attributeID": 84, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "An amount to modify the armor damage by.", "displayName_de": "Reparierte HP der Panzerung", "displayName_en-us": "Armor Hitpoints Repaired", "displayName_es": "Puntos de vida del blindaje reparados", "displayName_fr": "PV du blindage réparés", "displayName_it": "Armor Hitpoints Repaired", "displayName_ja": "アーマーHP修復", "displayName_ko": "장갑 내구도 수리", "displayName_ru": "Количество ремонтируемых единиц прочности брони", "displayName_zh": "装甲值维修量", "displayNameID": 232960, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "armorDamageAmount", "published": 1, "stackable": 0, "unitID": 113 }, "87": { "attributeID": 87, "categoryID": 2, "dataType": 4, "defaultValue": 0.0, "description": "Maximum range for use of a shield transfer.", "displayName_de": "Schildtransferreichweite", "displayName_en-us": "shield Transfer Range", "displayName_es": "Alcance de transferencia del escudo", "displayName_fr": "Portée de transfert du bouclier", "displayName_it": "shield Transfer Range", "displayName_ja": "シールド転送可能範囲", "displayName_ko": "실드 전송 사거리", "displayName_ru": "Дальность дистанционной накачки щитов", "displayName_zh": "护盾传输范围", "displayNameID": 232969, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "shieldTransferRange", "published": 1, "stackable": 1, "unitID": 1 }, "88": { "attributeID": 88, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Amount to drain from shield.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldDrainAmount", "published": 0, "stackable": 1 }, "89": { "attributeID": 89, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum range shield can be drained at.", "displayWhenZero": 0, "highIsGood": 1, "name": "shieldDrainRange", "published": 0, "stackable": 1 }, "90": { "attributeID": 90, "categoryID": 22, "dataType": 5, "defaultValue": 0.0, "description": "Amount of power to transfer.", "displayName_de": "Energietransfermenge", "displayName_en-us": "Energy transfer amount", "displayName_es": "Cantidad de transferencia energética", "displayName_fr": "Quantité d'énergie transférée", "displayName_it": "Energy transfer amount", "displayName_ja": "エネルギー転送量", "displayName_ko": "에너지 전송 총량", "displayName_ru": "Объём переданной энергии", "displayName_zh": "能量转移量", "displayNameID": 233405, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1033, "name": "powerTransferAmount", "published": 1, "stackable": 1, "unitID": 120 }, "91": { "attributeID": 91, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Maximum range to transfer power from.", "displayName_de": "Transferreichweite", "displayName_en-us": "Transfer range", "displayName_es": "Alcance de transferencia", "displayName_fr": "Portée de transfert", "displayName_it": "Transfer range", "displayName_ja": "転送可能範囲", "displayName_ko": "이송 사거리", "displayName_ru": "Дальность дистанционной накачки щитов", "displayName_zh": "传输范围", "displayNameID": 233398, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "powerTransferRange", "published": 1, "stackable": 1, "unitID": 1 }, "92": { "attributeID": 92, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The strength of the kinetic dampening field. If high may nullify projectiles.", "displayWhenZero": 0, "highIsGood": 1, "name": "kineticDampeningFieldStrength", "published": 0, "stackable": 1 }, "93": { "attributeID": 93, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Amount to adjust a kinetic dampening field by.", "displayWhenZero": 0, "highIsGood": 1, "name": "kineticDampeningFieldBonus", "published": 0, "stackable": 1 }, "95": { "attributeID": 95, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The strength of the energy reflection field. If high may reflect energy at shooter.", "displayWhenZero": 0, "highIsGood": 1, "name": "energyReflectionStrength", "published": 0, "stackable": 1 }, "96": { "attributeID": 96, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Amount to adjust a energy reflection strength by.", "displayWhenZero": 0, "highIsGood": 1, "name": "energyReflectionBonus", "published": 0, "stackable": 1 }, "97": { "attributeID": 97, "categoryID": 22, "dataType": 4, "defaultValue": 0.0, "description": "An amount to modify the power of the target by.", "displayName_de": "Neutralisierungsmenge", "displayName_en-us": "Neutralization Amount", "displayName_es": "Cantidad de neutralización", "displayName_fr": "Quantité de neutralisation", "displayName_it": "Neutralization Amount", "displayName_ja": "無効化量", "displayName_ko": "뉴트럴라이저 수치", "displayName_ru": "Нейтрализуемый запас энергии", "displayName_zh": "能量中和值", "displayNameID": 233155, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "energyNeutralizerAmount", "published": 1, "stackable": 1, "unitID": 114 }, "98": { "attributeID": 98, "categoryID": 22, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range of Energy Neutralizer", "displayName_de": "Neutralisierung - Optimale Reichweite", "displayName_en-us": "Neutralization Optimal Range", "displayName_es": "Alcance óptimo de neutralización", "displayName_fr": "Portée optimale de neutralisation", "displayName_it": "Neutralization Optimal Range", "displayName_ja": "ニュートライザーの最適射程距離", "displayName_ko": "뉴트럴라이제이션 최적사거리", "displayName_ru": "Оптимальная дальность нейтрализации", "displayName_zh": "最大能量中和范围", "displayNameID": 233157, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "energyNeutralizerRangeOptimal", "published": 1, "stackable": 1, "unitID": 1 }, "99": { "attributeID": 99, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Range of broadcasted EMP field.", "displayName_de": "Radius der Wirkungsreichweite", "displayName_en-us": "Area of effect radius", "displayName_es": "Radio de acción", "displayName_fr": "Rayon de la zone d'effet", "displayName_it": "Area of effect radius", "displayName_ja": "有効範囲半径", "displayName_ko": "유효 범위 반경", "displayName_ru": "Радиус зоны действия", "displayName_zh": "效果范围", "displayNameID": 233154, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "empFieldRange", "published": 1, "stackable": 1, "unitID": 1 }, "101": { "attributeID": 101, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "The number of remaining unused launcher slots.", "displayName_de": "Montageplätze für Werfer", "displayName_en-us": "Launcher Hardpoints", "displayName_es": "Puntos montaje lanzador", "displayName_fr": "Points de fixation pour lanceur", "displayName_it": "Launcher Hardpoints", "displayName_ja": "ランチャーハードポイント", "displayName_ko": "런처 슬롯", "displayName_ru": "Точки монтажа пусковых установок", "displayName_zh": "发射器安装数", "displayNameID": 233626, "displayWhenZero": 0, "highIsGood": 1, "iconID": 168, "name": "launcherSlotsLeft", "published": 1, "stackable": 1, "tooltipDescription_de": "Diese Montageplätze schränken die Anzahl an ausrüstbaren Lenkwaffenwerfer-Modulen ein", "tooltipDescription_en-us": "These hardpoints limit the number of missile launcher modules that can be fitted", "tooltipDescription_es": "Estos puntos de montaje limitan el número de módulos lanzamisiles que se pueden equipar.", "tooltipDescription_fr": "Ces points de fixation limitent le nombre de modules de lance-missiles pouvant être équipés.", "tooltipDescription_it": "These hardpoints limit the number of missile launcher modules that can be fitted", "tooltipDescription_ja": "ミサイルランチャーモジュールの装備可能な数を示します", "tooltipDescription_ko": "미사일 런처를 장착할 수 있는 최대 개수입니다.", "tooltipDescription_ru": "Точки монтажа данного типа ограничивают количество пусковых установок, которыми может быть оснащён корабль", "tooltipDescription_zh": "这个数字决定了舰船能够装配导弹发射器的数量", "tooltipDescriptionID": 295263, "tooltipTitleID": 295262, "unitID": 141 }, "102": { "attributeID": 102, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "Remaining number of unused turret slots on the ship.", "displayName_de": "Montageplätze für Geschütztürme", "displayName_en-us": "Turret Hardpoints", "displayName_es": "Puntos montaje torreta", "displayName_fr": "Points de fixation de tourelle", "displayName_it": "Turret Hardpoints", "displayName_ja": "タレットハードポイント", "displayName_ko": "터렛 슬롯", "displayName_ru": "Точки монтажа орудийных установок", "displayName_zh": "炮台安装数", "displayNameID": 233638, "displayWhenZero": 0, "highIsGood": 1, "iconID": 387, "name": "turretSlotsLeft", "published": 1, "stackable": 1, "tooltipDescription_de": "Diese Montageplätze schränken die Anzahl an ausrüstbaren Waffen- und Bergbautürmen ein", "tooltipDescription_en-us": "These hardpoints limit the number of gunnery and mining turrets that can be fitted", "tooltipDescription_es": "Estos puntos de montaje limitan el número de torretas artilleras y mineras que se pueden equipar.", "tooltipDescription_fr": "Ces points de fixation limitent le nombre de tourelles d'armement et d'extraction minière pouvant être équipées.", "tooltipDescription_it": "These hardpoints limit the number of gunnery and mining turrets that can be fitted", "tooltipDescription_ja": "ガンナリーおよび採掘タレットの装備可能な数を示します", "tooltipDescription_ko": "터렛 및 채굴 레이저를 장착할 수 있는 최대 개수입니다.", "tooltipDescription_ru": "Точки монтажа данного типа ограничивают количество орудий и буровых лазеров, которыми может быть оснащён корабль", "tooltipDescription_zh": "这个数字决定了舰船能够装配炮台和采矿激光器的数量", "tooltipDescriptionID": 295261, "tooltipTitleID": 295260, "unitID": 141 }, "103": { "attributeID": 103, "categoryID": 27, "dataType": 4, "defaultValue": 0.0, "description": "Maximum range objects can be warp scrambled from.", "displayName_de": "Warpstörungsreichweite", "displayName_en-us": "Warp Disruption Range", "displayName_es": "Alcance de disrupción de warp", "displayName_fr": "Portée de perturbation de warp", "displayName_it": "Warp Disruption Range", "displayName_ja": "ワープ妨害範囲", "displayName_ko": "워프 디스럽션 사거리", "displayName_ru": "Дальность постановки варп-помех", "displayName_zh": "跃迁干扰距离", "displayNameID": 233140, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "warpScrambleRange", "published": 1, "stackable": 1, "unitID": 1 }, "104": { "attributeID": 104, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Warp ability of a ship. If greater than zero than the ship cannot warp.", "displayName_de": "Warp-Störungsstatus", "displayName_en-us": "Warp Scramble Status", "displayName_es": "Estado de distorsión de warp", "displayName_fr": "Statut de l'inhibition de warp", "displayName_it": "Warp Scramble Status", "displayName_ja": "ワープスクランブルステータス", "displayName_ko": "워프 스크램블 수치", "displayName_ru": "Снижение входящих варп-помех", "displayName_zh": "跃迁干扰状态", "displayNameID": 233138, "displayWhenZero": 0, "highIsGood": 1, "name": "warpScrambleStatus", "published": 1, "stackable": 1 }, "105": { "attributeID": 105, "categoryID": 27, "dataType": 4, "defaultValue": 0.0, "description": "Amount to modify ships warp scramble status by.", "displayName_de": "Warp-Störungsstärke", "displayName_en-us": "Warp Scramble Strength", "displayName_es": "Intensidad de distorsión de warp", "displayName_fr": "Force de l'inhibition de warp", "displayName_it": "Warp Scramble Strength", "displayName_ja": "ワープスクランブル強度", "displayName_ko": "워프 스크램블 강도", "displayName_ru": "Мощность глушения варп-двигателей", "displayName_zh": "跃迁干扰强度", "displayNameID": 233133, "displayWhenZero": 0, "highIsGood": 1, "iconID": 111, "name": "warpScrambleStrength", "published": 1, "stackable": 1 }, "106": { "attributeID": 106, "categoryID": 10, "dataType": 4, "defaultValue": 0.0, "description": "The remaining amount of unused drone bay slots on the ship.", "displayName_de": "Drohnenhangar-Montageplätze", "displayName_en-us": "Drone Bay Hardpoints", "displayName_es": "Punto de montaje de muelle de drones", "displayName_fr": "Points de fixation du hangar à drones", "displayName_it": "Drone Bay Hardpoints", "displayName_ja": "ドローンベイハードポイント", "displayName_ko": "드론 격납고 슬롯", "displayName_ru": "Точки монтажа дронов", "displayName_zh": "无人机挂舱安装座", "displayNameID": 233104, "displayWhenZero": 0, "highIsGood": 1, "iconID": 138, "name": "droneBaySlotsLeft", "published": 1, "stackable": 1 }, "107": { "attributeID": 107, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Range in meters of explosion effect area.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "explosionRange", "published": 0, "stackable": 1, "unitID": 1 }, "108": { "attributeID": 108, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "the range in meters for an object to trigger detonation of missile. (own ship excluded)", "displayWhenZero": 0, "highIsGood": 1, "name": "detonationRange", "published": 0, "stackable": 1, "unitID": 1 }, "109": { "attributeID": 109, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "damage multiplier vs. kinetic damagers.", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Kinetikschaden", "displayName_en-us": "Structure Kinetic Damage Resistance", "displayName_es": "Resistencia cinética estructuras", "displayName_fr": "Résistance de la structure aux dégâts cinétiques", "displayName_it": "Structure Kinetic Damage Resistance", "displayName_ja": "ストラクチャキネティックダメージレジスタンス", "displayName_ko": "선체 키네틱 저항력", "displayName_ru": "Сопротивляемость корпуса кинетическому урону", "displayName_zh": "结构动能伤害抗性", "displayNameID": 233273, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "maxAttributeID": 2770, "name": "kineticDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "110": { "attributeID": 110, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "damage multiplier vs. thermal.", "displayName_de": "Resistenz der Struktur gegen Thermalschaden", "displayName_en-us": "Structure Thermal Damage Resistance", "displayName_es": "Resistencia térmica estructuras", "displayName_fr": "Résistance de la structure aux dégâts thermiques", "displayName_it": "Structure Thermal Damage Resistance", "displayName_ja": "ストラクチャサーマルダメージレジスタンス", "displayName_ko": "선체 열 저항력", "displayName_ru": "Сопротивляемость корпуса термическому урону", "displayName_zh": "结构热能伤害抗性", "displayNameID": 233171, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "maxAttributeID": 2769, "name": "thermalDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "111": { "attributeID": 111, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "damage multiplier vs. explosive damagers.", "displayName_de": "Resistenz der Struktur gegen Explosionsschaden", "displayName_en-us": "Structure Explosive Damage Resistance", "displayName_es": "Resistencia explosiva estructuras", "displayName_fr": "Résistance de la structure aux dégâts explosifs", "displayName_it": "Structure Explosive Damage Resistance", "displayName_ja": "ストラクチャエクスプローシブダメージレジスタンス", "displayName_ko": "선체 폭발 저항력", "displayName_ru": "Сопротивляемость корпуса фугасному урону", "displayName_zh": "结构爆炸伤害抗性", "displayNameID": 233176, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "maxAttributeID": 2771, "name": "explosiveDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "112": { "attributeID": 112, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Percentage of energy damage that is absorbed as available power.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "energyDamageAbsorptionFactor", "published": 0, "stackable": 1 }, "113": { "attributeID": 113, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Electro magnetic damage multiplier for shield and armor. Represented as \"% Resistance\" in the UI.", "displayName_de": "Widerstandsfähigkeit der Struktur gegen EM-Schaden", "displayName_en-us": "Structure EM Damage Resistance", "displayName_es": "Resistencia electrom. estructuras", "displayName_fr": "Résistance de la structure aux dégâts électromagnétiques", "displayName_it": "Structure EM Damage Resistance", "displayName_ja": "ストラクチャEMダメージレジスタンス", "displayName_ko": "선체 EM 저항력", "displayName_ru": "Сопротивляемость корпуса ЭМ-урону", "displayName_zh": "结构电磁伤害抗性", "displayNameID": 233151, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "maxAttributeID": 2768, "name": "emDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "114": { "attributeID": 114, "categoryID": 29, "chargeRechargeTimeID": 113, "dataType": 8, "defaultValue": 0.0, "description": "EM damage done.", "displayName_de": "EM-Schaden", "displayName_en-us": "EM damage", "displayName_es": "Daño electromagnético", "displayName_fr": "Dégâts EM", "displayName_it": "EM damage", "displayName_ja": "EM ダメージ", "displayName_ko": "EM 피해량", "displayName_ru": "ЭМ-урон", "displayName_zh": "电磁伤害", "displayNameID": 233149, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "emDamage", "published": 1, "stackable": 1, "unitID": 113 }, "116": { "attributeID": 116, "categoryID": 29, "chargeRechargeTimeID": 111, "dataType": 8, "defaultValue": 0.0, "description": "Explosive damage done.", "displayName_de": "Explosivschaden", "displayName_en-us": "Explosive damage", "displayName_es": "Daño explosivo", "displayName_fr": "Dégâts explosifs", "displayName_it": "Explosive damage", "displayName_ja": "エクスプローシブダメージ", "displayName_ko": "폭발 피해", "displayName_ru": "Фугасный урон", "displayName_zh": "爆炸伤害", "displayNameID": 233174, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "explosiveDamage", "published": 1, "stackable": 1, "unitID": 113 }, "117": { "attributeID": 117, "categoryID": 29, "chargeRechargeTimeID": 109, "dataType": 8, "defaultValue": 0.0, "description": "Kinetic damage done.", "displayName_de": "Kinetikschaden", "displayName_en-us": "Kinetic damage", "displayName_es": "Daño cinético", "displayName_fr": "Dégâts cinétiques", "displayName_it": "Kinetic damage", "displayName_ja": "キネティックダメージ", "displayName_ko": "키네틱 피해량", "displayName_ru": "Кинетический урон", "displayName_zh": "动能伤害", "displayNameID": 233271, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "kineticDamage", "published": 1, "stackable": 1, "unitID": 113 }, "118": { "attributeID": 118, "categoryID": 29, "chargeRechargeTimeID": 110, "dataType": 8, "defaultValue": 0.0, "description": "Thermal damage done.", "displayName_de": "Thermalschaden", "displayName_en-us": "Thermal damage", "displayName_es": "Daño térmico", "displayName_fr": "Dégâts thermiques", "displayName_it": "Thermal damage", "displayName_ja": "サーマルダメージ", "displayName_ko": "열 피해량", "displayName_ru": "Термический урон", "displayName_zh": "热能伤害", "displayNameID": 233178, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "thermalDamage", "published": 1, "stackable": 1, "unitID": 113 }, "120": { "attributeID": 120, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier of range the relevant weapon.", "displayName_de": "Reichweitenbonus", "displayName_en-us": "Range bonus", "displayName_es": "Bonificación de alcance", "displayName_fr": "Bonus de portée", "displayName_it": "Range bonus", "displayName_ja": "範囲ボーナス", "displayName_ko": "사거리 보너스", "displayName_ru": "Влияние на дальность", "displayName_zh": "范围加成", "displayNameID": 232987, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "weaponRangeMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "121": { "attributeID": 121, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to output of power core.", "displayName_de": "Energieleistung-Bonus", "displayName_en-us": "Power Output Bonus", "displayName_es": "Bonificación de potencia de salida", "displayName_fr": "Bonus de puissance énergétique", "displayName_it": "Power Output Bonus", "displayName_ja": "パワーグリッドボーナス", "displayName_ko": "전력 출력 보너스", "displayName_ru": "Влияние на мощность", "displayName_zh": "能量输出加成", "displayNameID": 233409, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "powerOutputBonus", "published": 1, "stackable": 1, "unitID": 107 }, "122": { "attributeID": 122, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Chance of piercing the armor.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorPiercingChance", "published": 0, "stackable": 1 }, "123": { "attributeID": 123, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Chance of piercing the shield.", "displayWhenZero": 0, "highIsGood": 1, "name": "shieldPiercingChance", "published": 0, "stackable": 1 }, "124": { "attributeID": 124, "categoryID": 9, "dataType": 7, "defaultValue": 0.0, "description": "The main color of a ship type.", "displayWhenZero": 0, "highIsGood": 1, "name": "mainColor", "published": 0, "stackable": 1 }, "125": { "attributeID": 125, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Maximum range that something can be ship scanned from.", "displayName_de": "Schiff-Scan-Reichweite", "displayName_en-us": "Ship scanning range", "displayName_es": "Alcance del escaneo de naves", "displayName_fr": "Portée du balayage du vaisseau", "displayName_it": "Ship scanning range", "displayName_ja": "シップスキャン範囲", "displayName_ko": "함선 스캔 사거리", "displayName_ru": "Дальность досмотра оснастки", "displayName_zh": "舰船扫描范围", "displayNameID": 233223, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "shipScanRange", "published": 1, "stackable": 1, "unitID": 1 }, "126": { "attributeID": 126, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Maximum range the cargo of a ship can be scanned from.", "displayName_de": "Frachtscan-Reichweite", "displayName_en-us": "Cargoscan range", "displayName_es": "Alcance de escaneo de carga", "displayName_fr": "Portée du scanner de marchandise", "displayName_it": "Cargoscan range", "displayName_ja": "カーゴスキャン範囲", "displayName_ko": "화물 스캔 사거리", "displayName_ru": "Дальность досмотра грузов", "displayName_zh": "货柜扫描范围", "displayNameID": 233015, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "cargoScanRange", "published": 1, "stackable": 1, "unitID": 1 }, "127": { "attributeID": 127, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "A temporary attribute for projectile/hybrid weapons to indicate which charges they have loaded when created in newbie ships ala ammo.", "displayWhenZero": 0, "highIsGood": 1, "name": "ammoLoaded", "published": 0, "stackable": 1 }, "128": { "attributeID": 128, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The size of the charges that can fit in the turret/whatever.", "displayName_de": "Ladungsgröße", "displayName_en-us": "Charge size", "displayName_es": "Tamaño de carga", "displayName_fr": "Taille de la charge", "displayName_it": "Charge size", "displayName_ja": "チャージサイズ", "displayName_ko": "탄약 크기", "displayName_ru": "Размер заряда", "displayName_zh": "弹药尺寸", "displayNameID": 233021, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1666, "name": "chargeSize", "published": 1, "stackable": 1, "unitID": 117 }, "129": { "attributeID": 129, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Specifies the maximum numbers of passengers that the ship can have", "displayWhenZero": 0, "highIsGood": 1, "iconID": 413, "name": "maxPassengers", "published": 0, "stackable": 1 }, "130": { "attributeID": 130, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multipler to adjust the thermal damage resonance of an object.", "displayName_de": "Bonus auf Thermalschadensresistenz", "displayName_en-us": "Thermal Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños térmicos", "displayName_fr": "Bonus de résistance aux dégâts thermiques", "displayName_it": "Thermal Damage Resistance Bonus", "displayName_ja": "サーマルダメージレジスタンスボーナス", "displayName_ko": "열 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость термическому урону", "displayName_zh": "热能伤害抗性加成", "displayNameID": 233170, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "thermalDamageResonanceMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "131": { "attributeID": 131, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the kinetic damage resonance of something.", "displayName_de": "Bonus auf Kinetikschadensresistenz", "displayName_en-us": "Kinetic Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños cinéticos", "displayName_fr": "Bonus de résistance aux dégâts cinétiques", "displayName_it": "Kinetic Damage Resistance Bonus", "displayName_ja": "キネティックダメージレジスタンスボーナス", "displayName_ko": "키네틱 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость кинетическому урону", "displayName_zh": "动能伤害抗性加成", "displayNameID": 233274, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "kineticDamageResonanceMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "132": { "attributeID": 132, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the explosive damage resistance of something.", "displayName_de": "Bonus auf Explosionsschadensresistenz", "displayName_en-us": "Explosive Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños explosivos", "displayName_fr": "Bonus de résistance aux dégâts explosifs", "displayName_it": "Explosive Damage Resistance Bonus", "displayName_ja": "エクスプローシブダメージレジスタンスボーナス", "displayName_ko": "폭발 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость фугасному урону", "displayName_zh": "爆炸伤害抗性加成", "displayNameID": 233177, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "explosiveDamageResonanceMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "133": { "attributeID": 133, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the EM damage resonance of something.", "displayName_de": "Bonus auf EM-Schadensresistenz", "displayName_en-us": "EM Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños electromagnéticos", "displayName_fr": "Bonus de résistance aux dégâts électromagnétiques", "displayName_it": "EM Damage Resistance Bonus", "displayName_ja": "EMダメージレジスタンスボーナス", "displayName_ko": "EM 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость ЭМ-урону", "displayName_zh": "电磁伤害抗性加成", "displayNameID": 233152, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "emDamageResonanceMultiplier", "published": 1, "stackable": 0, "unitID": 111 }, "134": { "attributeID": 134, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to a recharge rate time.", "displayName_de": "Schild-Laderatenbonus", "displayName_en-us": "Shield recharge rate bonus", "displayName_es": "Bonificación de velocidad de carga del escudo", "displayName_fr": "Bonus de vitesse de recharge du bouclier", "displayName_it": "Shield recharge rate bonus", "displayName_ja": "シールド自動回復効率ボーナス", "displayName_ko": "실드 충전률 보너스", "displayName_ru": "Влияние на скорость регенерации щитов", "displayName_zh": "护盾回充速率加成", "displayNameID": 232972, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "shieldRechargeRateMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "135": { "attributeID": 135, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The size of the module, 1 = small, 2 = medium, 3 = large. Used for turrets and projectile weapons but will work for any module that defines it.", "displayWhenZero": 0, "highIsGood": 1, "name": "moduleSize", "published": 0, "stackable": 1 }, "136": { "attributeID": 136, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "This number is deducted from the %chance of the seeping to armor, to slow seep of damage through shield.", "displayWhenZero": 0, "highIsGood": 1, "name": "uniformity", "published": 0, "stackable": 1 }, "137": { "attributeID": 137, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)使用タイプ", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 233275, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "launcherGroup", "published": 1, "stackable": 1, "unitID": 115 }, "138": { "attributeID": 138, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- amount to the EM damage done.", "displayName_de": "Bonus auf EM-Schaden", "displayName_en-us": "EM Damage Bonus", "displayName_es": "Bonificación de daño electromagnético", "displayName_fr": "Bonus de dégâts électromagnétiques", "displayName_it": "EM Damage Bonus", "displayName_ja": "EMダメージボーナス", "displayName_ko": "EM 피해량 보너스", "displayName_ru": "Влияние на урон (за счёт ЭМ-составляющей)", "displayName_zh": "电磁伤害加成", "displayNameID": 233150, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "emDamageBonus", "published": 1, "stackable": 1, "unitID": 113 }, "139": { "attributeID": 139, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- amount to the explosive damage done.", "displayName_de": "Bonus auf Explosionsschaden", "displayName_en-us": "Explosive Damage Bonus", "displayName_es": "Bonificación de daño explosivo", "displayName_fr": "Bonus de dégâts explosifs", "displayName_it": "Explosive Damage Bonus", "displayName_ja": "エクスプローシブダメージボーナス", "displayName_ko": "폭발 피해 보너스", "displayName_ru": "Влияние на фугасный урон", "displayName_zh": "爆炸伤害加成", "displayNameID": 233175, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "explosiveDamageBonus", "published": 1, "stackable": 1, "unitID": 113 }, "140": { "attributeID": 140, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- amount to the kinetic damage done.", "displayName_de": "Bonus auf Kinetikschaden", "displayName_en-us": "Kinetic Damage Bonus", "displayName_es": "Bonificación de daño cinético", "displayName_fr": "Bonus de dégâts cinétiques", "displayName_it": "Kinetic Damage Bonus", "displayName_ja": "キネティックダメージボーナス", "displayName_ko": "키네틱 피해량 보너스", "displayName_ru": "Влияние на урон (за счёт кинетической составляющей)", "displayName_zh": "动能伤害加成", "displayNameID": 233272, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "kineticDamageBonus", "published": 1, "stackable": 1, "unitID": 113 }, "141": { "attributeID": 141, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the thermal damage done.", "displayName_de": "Bonus auf Thermalschaden", "displayName_en-us": "Thermal Damage Bonus", "displayName_es": "Bonificación de daño térmico", "displayName_fr": "Bonus de dégâts thermiques", "displayName_it": "Thermal Damage Bonus", "displayName_ja": "サーマルダメージボーナス", "displayName_ko": "열 피해량 보너스", "displayName_ru": "Повышение термического урона", "displayName_zh": "热能伤害加成", "displayNameID": 233181, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "thermalDamageBonus", "published": 1, "stackable": 1, "unitID": 113 }, "142": { "attributeID": 142, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Range that an ECM burst has an effect within.", "displayName_de": "ECM-Impulsradius", "displayName_en-us": "ECM Burst Radius", "displayName_es": "Radio de ráfaga ECM", "displayName_fr": "Rayon salve CME", "displayName_it": "ECM Burst Radius", "displayName_ja": "ECM バースト半径", "displayName_ko": "ECM 버스트 반경", "displayName_ru": "Радиус импульса глушения захвата целей", "displayName_zh": "ECM脉冲半径", "displayNameID": 233143, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "ecmBurstRange", "published": 1, "stackable": 1, "unitID": 1 }, "143": { "attributeID": 143, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Range of the automated targeting systems hostile targeting area.", "displayName_de": "Aufschaltungsreichweite", "displayName_en-us": "Targeting range", "displayName_es": "Distancia-objetivo", "displayName_fr": "Portée du système de ciblage", "displayName_it": "Targeting range", "displayName_ja": "ターゲット範囲", "displayName_ko": "타겟팅 사거리", "displayName_ru": "Дальность захвата целей", "displayName_zh": "锁定范围", "displayNameID": 233185, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "targetHostileRange", "published": 1, "stackable": 1, "unitID": 1 }, "144": { "attributeID": 144, "categoryID": 5, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the capacitors recharge rate.", "displayName_de": "Bonus auf Aufladerate des Energiespeichers", "displayName_en-us": "Capacitor recharge rate bonus", "displayName_es": "Bonif. de ritmo de carga del condensador", "displayName_fr": "Bonus de vitesse de recharge du capaciteur", "displayName_it": "Capacitor recharge rate bonus", "displayName_ja": "キャパシタ充電速度ボーナス", "displayName_ko": "캐패시터 충전율 보너스", "displayName_ru": "Влияние на скорость регенерации накопителя", "displayName_zh": "电容回充速度加成", "displayNameID": 233009, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1400, "name": "capacitorRechargeRateMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "145": { "attributeID": 145, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multipier to power core output.", "displayName_de": "Stromnetzbonus", "displayName_en-us": "Powergrid bonus", "displayName_es": "Bonificación de sistema de potencia", "displayName_fr": "Bonus de réseau d'alimentation", "displayName_it": "Powergrid bonus", "displayName_ja": "パワーグリッドボーナス", "displayName_ko": "파워그리드 보너스", "displayName_ru": "Влияние на мощность реактора", "displayName_zh": "能量输出加成", "displayNameID": 233408, "displayWhenZero": 0, "highIsGood": 1, "iconID": 70, "name": "powerOutputMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "146": { "attributeID": 146, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the capacity of a shield.", "displayName_de": "HP-Bonus für Schilde", "displayName_en-us": "Shield Hitpoint Bonus", "displayName_es": "Bonificación de PV del escudo", "displayName_fr": "Bonus de PV du bouclier", "displayName_it": "Shield Hitpoint Bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드 내구도 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 232945, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldCapacityMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "147": { "attributeID": 147, "categoryID": 5, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Bonus auf Energiespeicherkapazität", "displayName_en-us": "Capacitor Capacity Bonus", "displayName_es": "Bonif. de capacidad del condensador", "displayName_fr": "Bonus de charge de capaciteur", "displayName_it": "Capacitor Capacity Bonus", "displayName_ja": "キャパシタ容量ボーナス", "displayName_ko": "캐패시터 용량 보너스", "displayName_ru": "Влияние на запас энергии", "displayName_zh": "电容容量加成", "displayNameID": 233006, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "capacitorCapacityMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "148": { "attributeID": 148, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the HP of a ships armor module.", "displayName_de": "HP-Bonus für Panzerung", "displayName_en-us": "Armor Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor Hitpoint Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 232967, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorHPMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "149": { "attributeID": 149, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the amount of cargo capacity for a ship.", "displayName_de": "Frachtraumbonus", "displayName_en-us": "Cargo capacity bonus", "displayName_es": "Bonificación de capacidad de carga", "displayName_fr": "Bonus de capacité de la soute", "displayName_it": "Cargo capacity bonus", "displayName_ja": "カーゴ容量ボーナス", "displayName_ko": "화물 적재량 보너스", "displayName_ru": "Повышение объёма грузового отсека", "displayName_zh": "货柜容量加成", "displayNameID": 233014, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "cargoCapacityMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "150": { "attributeID": 150, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the ships structural HP.", "displayName_de": "HP-Bonus für Struktur", "displayName_en-us": "Structure Hitpoint Bonus", "displayName_es": "Bonificación de puntos de vida de estructura", "displayName_fr": "Bonus de PV de la structure", "displayName_it": "Structure Hitpoint Bonus", "displayName_ja": "ストラクチャHPボーナス", "displayName_ko": "구조물 내구도 보너스", "displayName_ru": "Влияние на запас прочности корпуса", "displayName_zh": "结构值加成", "displayNameID": 233189, "displayWhenZero": 0, "highIsGood": 1, "iconID": 67, "name": "structureHPMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "151": { "attributeID": 151, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to the agility for a ship.", "displayName_de": "Trägheitsmodifikator", "displayName_en-us": "Inertia Modifier", "displayName_es": "Modificador de inercia", "displayName_fr": "Modificateur d'inertie", "displayName_it": "Inertia Modifier", "displayName_ja": "慣性乗数", "displayName_ko": "관성 계수", "displayName_ru": "Влияние инертности конструкции", "displayName_zh": "惯性调整系数", "displayNameID": 232949, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1401, "name": "agilityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "152": { "attributeID": 152, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- a number to the max passengers.", "displayName_de": "Maximaler Passagierbonus", "displayName_en-us": "Maximum Passengers Bonus", "displayName_es": "Bonificación máxima de pasajeros", "displayName_fr": "Bonus de passagers maximum", "displayName_it": "Maximum Passengers Bonus", "displayName_ja": "最大乗客数ボーナス", "displayName_ko": "최대 승객 보너스", "displayName_ru": "Максимальное количество пассажиров", "displayName_zh": "乘客数上限加成", "displayNameID": 233314, "displayWhenZero": 0, "highIsGood": 1, "name": "maxPassengersBonus", "published": 1, "stackable": 1 }, "153": { "attributeID": 153, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "The power cost to warp per one kg per AU (floats do not have the resolution for meters).", "displayWhenZero": 0, "highIsGood": 1, "name": "warpCapacitorNeed", "published": 0, "stackable": 1 }, "154": { "attributeID": 154, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The distance at which to react when relevant objects come within range.", "displayName_de": "Aktivierungsentfernung", "displayName_en-us": "Activation proximity", "displayName_es": "Proximidad de activación", "displayName_fr": "Proximité d'activation", "displayName_it": "Activation proximity", "displayName_ja": "動作可能距離範囲", "displayName_ko": "활성화 근접도", "displayName_ru": "Дистанция включения", "displayName_zh": "作用范围", "displayNameID": 233369, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "proximityRange", "published": 1, "stackable": 1, "unitID": 1 }, "156": { "attributeID": 156, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "The hull damage proportion at which an entity becomes incapacitated.", "displayWhenZero": 0, "highIsGood": 1, "name": "incapacitationRatio", "published": 0, "stackable": 1 }, "157": { "attributeID": 157, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "The range at which this thing does it thing.", "displayWhenZero": 0, "highIsGood": 1, "name": "orbitRange", "published": 0, "stackable": 1 }, "158": { "attributeID": 158, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "distance from maximum range at which accuracy has fallen by half", "displayName_de": "Präzisionsabfall", "displayName_en-us": "Accuracy falloff", "displayName_es": "Alcance efectivo de precisión", "displayName_fr": "Distance de perte de précision", "displayName_it": "Accuracy falloff", "displayName_ja": "精度低下", "displayName_ko": "명중률 유효사거리", "displayName_ru": "Добавочная дальность", "displayName_zh": "失准范围", "displayNameID": 233554, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "falloff", "published": 1, "stackable": 0, "unitID": 1 }, "160": { "attributeID": 160, "categoryID": 29, "dataType": 5, "defaultValue": 0.0, "description": "Weapon accuracy", "displayName_de": "Geschützturmnachführung", "displayName_en-us": "Turret Tracking", "displayName_es": "Rastreo de torreta", "displayName_fr": "Suivi des tourelles", "displayName_it": "Turret Tracking", "displayName_ja": "タレット追跡", "displayName_ko": "터렛 트래킹", "displayName_ru": "Скорость наводки орудий", "displayName_zh": "炮台跟踪速度", "displayNameID": 232935, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "trackingSpeed", "published": 1, "stackable": 0, "tooltipDescription_de": "Höhere Werte verbessern die Genauigkeiten gegenüber kleinen und schnellen Zielen", "tooltipDescription_en-us": "Higher values improve accuracy against small and fast targets", "tooltipDescription_es": "Cuanto más alto sea el valor, mayor será la precisión contra objetivos pequeños y rápidos.", "tooltipDescription_fr": "Des valeurs plus élevées améliorent la précision contre les petites cibles plus rapides.", "tooltipDescription_it": "Higher values improve accuracy against small and fast targets", "tooltipDescription_ja": "この値が高いと小型で機動力の高いターゲットに対する精度が向上する", "tooltipDescription_ko": "값이 높을수록 작고 빠른 목표물을 더 잘 맞힙니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к повышению точности стрельбы по малым и быстрым целям", "tooltipDescription_zh": "值越高,对小型和快速目标的命中率越高", "tooltipDescriptionID": 315539, "tooltipTitleID": 315538 }, "161": { "attributeID": 161, "categoryID": 4, "dataType": 9, "defaultValue": 0.0, "description": "Volume of things in cubic meters", "displayName_de": "Volumen", "displayName_en-us": "Volume", "displayName_es": "Volumen", "displayName_fr": "Volume", "displayName_it": "Volume", "displayName_ja": "体積", "displayName_ko": "부피", "displayName_ru": "Занимаемый объём", "displayName_zh": "体积", "displayNameID": 233026, "displayWhenZero": 0, "highIsGood": 1, "iconID": 67, "name": "volume", "published": 1, "stackable": 1, "tooltipDescription_de": "Den Platz, den dieses Objekt einnimmt, wenn es in einem Frachtraum oder Container platziert wird", "tooltipDescription_en-us": "The space this object takes up when placed in a bay or container", "tooltipDescription_es": "Espacio que ocupa este objeto cuando se coloca en una bodega o un contenedor.", "tooltipDescription_fr": "L'espace occupé par cet objet dans une baie ou un conteneur.", "tooltipDescription_it": "The space this object takes up when placed in a bay or container", "tooltipDescription_ja": "ベイやコンテナに積んだとき空間に占める量です", "tooltipDescription_ko": "격납고 또는 컨테이너에 넣었을 때 차지하는 부피입니다.", "tooltipDescription_ru": "Объём, занимаемый этим объектом в отсеке или контейнере", "tooltipDescription_zh": "该物体被放置在船舱或货柜中时占用的空间", "tooltipDescriptionID": 295379, "tooltipTitleID": 295378, "unitID": 9 }, "162": { "attributeID": 162, "categoryID": 9, "dataType": 9, "defaultValue": 0.0, "description": "Radius of an object in meters", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "radius", "published": 0, "stackable": 1 }, "163": { "attributeID": 163, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Where you want an effect to finish instantly.", "displayWhenZero": 0, "highIsGood": 1, "name": "dummyDuration", "published": 0, "stackable": 1 }, "164": { "attributeID": 164, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The charisma of a character.", "displayName_de": "Ausstrahlung", "displayName_en-us": "Charisma", "displayName_es": "Carisma", "displayName_fr": "Charisme", "displayName_it": "Charisma", "displayName_ja": "カリスマ", "displayName_ko": "카리스마", "displayName_ru": "«Харизма»", "displayName_zh": "魅力", "displayNameID": 233022, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1378, "name": "charisma", "published": 1, "stackable": 1, "unitID": 120 }, "165": { "attributeID": 165, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The intelligence of a character.", "displayName_de": "Intelligenz", "displayName_en-us": "Intelligence", "displayName_es": "Inteligencia", "displayName_fr": "Intelligence", "displayName_it": "Intelligence", "displayName_ja": "知性", "displayName_ko": "지능", "displayName_ru": "«Интеллект»", "displayName_zh": "智力", "displayNameID": 233262, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1380, "name": "intelligence", "published": 1, "stackable": 1, "unitID": 120 }, "166": { "attributeID": 166, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The memory of a character.", "displayName_de": "Gedächtnis", "displayName_en-us": "Memory", "displayName_es": "Memoria", "displayName_fr": "Mémoire", "displayName_it": "Memory", "displayName_ja": "記憶力", "displayName_ko": "기억력", "displayName_ru": "«Память»", "displayName_zh": "记忆", "displayNameID": 233342, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1381, "name": "memory", "published": 1, "stackable": 1, "unitID": 120 }, "167": { "attributeID": 167, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The perception of a character.", "displayName_de": "Auffassungsgabe", "displayName_en-us": "Perception", "displayName_es": "Percepción", "displayName_fr": "Perception", "displayName_it": "Perception", "displayName_ja": "知覚", "displayName_ko": "지각력", "displayName_ru": "«Восприятие»", "displayName_zh": "感知", "displayNameID": 233402, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1382, "name": "perception", "published": 1, "stackable": 1, "unitID": 120 }, "168": { "attributeID": 168, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The willpower of a character.", "displayName_de": "Willenskraft", "displayName_en-us": "Willpower", "displayName_es": "Voluntad", "displayName_fr": "Volonté", "displayName_it": "Willpower", "displayName_ja": "精神力", "displayName_ko": "정신력", "displayName_ru": "«Сила воли»", "displayName_zh": "毅力", "displayNameID": 232983, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1379, "name": "willpower", "published": 1, "stackable": 1, "unitID": 120 }, "169": { "attributeID": 169, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier to the agility of an object.", "displayName_de": "Trägheitsmodifikator", "displayName_en-us": "Inertia Modifier", "displayName_es": "Modificador de inercia", "displayName_fr": "Modificateur d'inertie", "displayName_it": "Inertia Modifier", "displayName_ja": "慣性修正乗数", "displayName_ko": "관성 계수", "displayName_ru": "Влияние инертности конструкции", "displayName_zh": "惯性调整", "displayNameID": 233510, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1401, "name": "agilityMultiplier", "published": 1, "stackable": 1, "unitID": 121 }, "170": { "attributeID": 170, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to the charisma of a character specified by the player in character creation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1378, "name": "customCharismaBonus", "published": 0, "stackable": 1 }, "171": { "attributeID": 171, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to the willpower of a character specified by the player in character creation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1379, "name": "customWillpowerBonus", "published": 0, "stackable": 1 }, "172": { "attributeID": 172, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to the perception of a character specified by the player in character creation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1382, "name": "customPerceptionBonus", "published": 0, "stackable": 1 }, "173": { "attributeID": 173, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to the memory of a character specified by the player in character creation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1381, "name": "customMemoryBonus", "published": 0, "stackable": 1 }, "174": { "attributeID": 174, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to the intelligence of a character specified by the player in character creation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1380, "name": "customIntelligenceBonus", "published": 0, "stackable": 1 }, "175": { "attributeID": 175, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the charisma of a character.", "displayName_de": "Ausstrahlung-Modifikator", "displayName_en-us": "Charisma Modifier", "displayName_es": "Modificador de carisma", "displayName_fr": "Modificateur de charisme", "displayName_it": "Charisma Modifier", "displayName_ja": "カリスマ修正乗数", "displayName_ko": "카리스마 보정치", "displayName_ru": "Модификатор характеристики «Харизма»", "displayName_zh": "魅力调整", "displayNameID": 233023, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1378, "name": "charismaBonus", "published": 1, "stackable": 1, "unitID": 120 }, "176": { "attributeID": 176, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the intelligence of a character.", "displayName_de": "Intelligenz-Modifikator", "displayName_en-us": "Intelligence Modifier", "displayName_es": "Modificador de inteligencia", "displayName_fr": "Modificateur d'intelligence", "displayName_it": "Intelligence Modifier", "displayName_ja": "知性修正乗数", "displayName_ko": "지능 보정치", "displayName_ru": "Модификатор характеристики «Интеллект»", "displayName_zh": "智力调整", "displayNameID": 233263, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1380, "name": "intelligenceBonus", "published": 1, "stackable": 1, "unitID": 120 }, "177": { "attributeID": 177, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the memory of a character.", "displayName_de": "Gedächtnismodifikator", "displayName_en-us": "Memory Modifier", "displayName_es": "Modificador de memoria", "displayName_fr": "Modificateur de mémoire", "displayName_it": "Memory Modifier", "displayName_ja": "メモリー修正乗数", "displayName_ko": "기억력 보정치", "displayName_ru": "Модификатор характеристики «Память»", "displayName_zh": "记忆调整", "displayNameID": 233343, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1381, "name": "memoryBonus", "published": 1, "stackable": 1, "unitID": 120 }, "178": { "attributeID": 178, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the perception of a character.", "displayName_de": "Auffassungsgabe-Modifikator", "displayName_en-us": "Perception Modifier", "displayName_es": "Modificador de percepción", "displayName_fr": "Modificateur de perception", "displayName_it": "Perception Modifier", "displayName_ja": "知覚修正乗数", "displayName_ko": "지각력 보정치", "displayName_ru": "Модификатор характеристики «Восприятие»", "displayName_zh": "感知调整", "displayNameID": 233403, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1382, "name": "perceptionBonus", "published": 1, "stackable": 1, "unitID": 120 }, "179": { "attributeID": 179, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- bonus to the willpower of a character.", "displayName_de": "Willenskraft-Modifikator", "displayName_en-us": "Willpower Modifier", "displayName_es": "Modificador de voluntad", "displayName_fr": "Modificateur de volonté", "displayName_it": "Willpower Modifier", "displayName_ja": "精神力修正乗数", "displayName_ko": "정신력 보정치", "displayName_ru": "Модификатор характеристики «Сила воли»", "displayName_zh": "毅力调整", "displayNameID": 232981, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1379, "name": "willpowerBonus", "published": 1, "stackable": 1, "unitID": 120 }, "180": { "attributeID": 180, "categoryID": 7, "dataType": 10, "defaultValue": 0.0, "description": "Only refers to another dogma attribute.", "displayName_de": "Primäres Attribut", "displayName_en-us": "Primary attribute", "displayName_es": "Atributo principal", "displayName_fr": "Attribut principal", "displayName_it": "Primary attribute", "displayName_ja": "第1次属性", "displayName_ko": "1차 특성", "displayName_ru": "Первичная характеристика", "displayName_zh": "主属性", "displayNameID": 233396, "displayWhenZero": 0, "highIsGood": 1, "name": "primaryAttribute", "published": 1, "stackable": 1, "unitID": 119 }, "181": { "attributeID": 181, "categoryID": 7, "dataType": 10, "defaultValue": 0.0, "description": "Only refers to another dogma attribute.", "displayName_de": "Sekundäres Attribut", "displayName_en-us": "Secondary attribute", "displayName_es": "Atributo secundario", "displayName_fr": "Attribut secondaire", "displayName_it": "Secondary attribute", "displayName_ja": "第2次属性", "displayName_ko": "2차 특성", "displayName_ru": "Вторичная характеристика", "displayName_zh": "副属性", "displayNameID": 233240, "displayWhenZero": 0, "highIsGood": 1, "name": "secondaryAttribute", "published": 1, "stackable": 1, "unitID": 119 }, "182": { "attributeID": 182, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Primärer Skill benötigt", "displayName_en-us": "Primary Skill required", "displayName_es": "Habilidad principal necesaria", "displayName_fr": "Compétence principale requise", "displayName_it": "Primary Skill required", "displayName_ja": "第一必須スキル", "displayName_ko": "1차 스킬 필요", "displayName_ru": "Требуемый первичный навык", "displayName_zh": "主技能需求", "displayNameID": 232927, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "requiredSkill1", "published": 1, "stackable": 1, "unitID": 116 }, "183": { "attributeID": 183, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Sekundärer Skill benötigt", "displayName_en-us": "Secondary Skill required", "displayName_es": "Habilidad secundaria necesaria", "displayName_fr": "Compétence secondaire requise", "displayName_it": "Secondary Skill required", "displayName_ja": "第二必須スキル", "displayName_ko": "2차 스킬 필요", "displayName_ru": "Требуемый вторичный навык", "displayName_zh": "副技能需求", "displayNameID": 232928, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "requiredSkill2", "published": 1, "stackable": 1, "unitID": 116 }, "184": { "attributeID": 184, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Tertiärer Skill benötigt", "displayName_en-us": "Tertiary Skill required", "displayName_es": "Habilidad terciaria necesaria", "displayName_fr": "Compétence tertiaire requise", "displayName_it": "Tertiary Skill required", "displayName_ja": "第三必須スキル", "displayName_ko": "3차 스킬 필요", "displayName_ru": "Требуемый третичный навык", "displayName_zh": "三级技能需求", "displayNameID": 232929, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "requiredSkill3", "published": 1, "stackable": 1, "unitID": 116 }, "185": { "attributeID": 185, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The number of attribute points needed to be accrued to learn this skill.", "displayWhenZero": 0, "highIsGood": 1, "name": "attributePoints", "published": 0, "stackable": 1 }, "186": { "attributeID": 186, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier to the warping power cost.", "displayWhenZero": 0, "highIsGood": 1, "name": "warpCapacitorNeedMultiplier", "published": 0, "stackable": 1 }, "187": { "attributeID": 187, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to adjust the cost of repairs.", "displayWhenZero": 0, "highIsGood": 1, "name": "repairCostMultiplier", "published": 0, "stackable": 1 }, "188": { "attributeID": 188, "categoryID": 36, "dataType": 5, "defaultValue": 0.0, "description": "Chance of being able to resist a cargo scan.", "displayName_de": "Widerstand gegen Fracht-Scans", "displayName_en-us": "Cargo Scan Resistance", "displayName_es": "Resistencia al escaneo de carga", "displayName_fr": "Résistance au scan de la cargaison", "displayName_it": "Cargo Scan Resistance", "displayName_ja": "カーゴスキャンレジスタンス", "displayName_ko": "화물 스캔 저항", "displayName_ru": "Экранирование грузового отсека", "displayName_zh": "货柜扫描抗性", "displayNameID": 600128, "displayWhenZero": 0, "highIsGood": 1, "iconID": 106, "name": "cargoScanResistance", "published": 1, "stackable": 1, "unitID": 127 }, "189": { "attributeID": 189, "dataType": 1, "defaultValue": 0.0, "description": "On a targeted module, module can only be activated against a target from this type list.", "displayWhenZero": 0, "highIsGood": 1, "name": "targetFilterTypelistID", "published": 0, "stackable": 1 }, "190": { "attributeID": 190, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The maximum number of members that a CEO can manage within their corporation.", "displayWhenZero": 0, "highIsGood": 1, "name": "corporationMemberLimit", "published": 0, "stackable": 1 }, "191": { "attributeID": 191, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "+/- modifier to the number of members that a CEO can manage within their corporation.", "displayName_de": "Corporation-Mitgliedsbonus", "displayName_en-us": "corporation Member Bonus", "displayName_es": "Bonificación de miembro de la corporación", "displayName_fr": "Bonus de membre de corporation", "displayName_it": "corporation Member Bonus", "displayName_ja": "コーポレーションメンバーボーナス", "displayName_ko": "코퍼레이션 회원 보너스", "displayName_ru": "Влияние на количество представителей корпорации", "displayName_zh": "军团成员加成", "displayNameID": 233612, "displayWhenZero": 0, "highIsGood": 1, "name": "corporationMemberBonus", "published": 1, "stackable": 1, "unitID": 139 }, "192": { "attributeID": 192, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Maximum number of locked targets that the character or their ships electronics can handle at any given time. Both have individual limits which apply separately.", "displayName_de": "Maximal erfassbare Ziele", "displayName_en-us": "Maximum Locked Targets", "displayName_es": "Objetivos fijados máximos", "displayName_fr": "Cibles verrouillées maximum", "displayName_it": "Maximum Locked Targets", "displayName_ja": "最大ターゲットロック数", "displayName_ko": "최대 타겟 수", "displayName_ru": "Максимальное количество захваченных целей", "displayName_zh": "目标锁定数上限加成", "displayNameID": 233309, "displayWhenZero": 0, "highIsGood": 1, "iconID": 109, "name": "maxLockedTargets", "published": 1, "stackable": 1, "tooltipDescription_de": "Die maximale Anzahl an Zielen, die gleichzeitig aufgeschaltet werden können", "tooltipDescription_en-us": "The maximum number of targets that can be locked simultaneously", "tooltipDescription_es": "N.º máx. de objetivos que se pueden fijar a la vez", "tooltipDescription_fr": "Le nombre maximum de cibles pouvant être verrouillées simultanément.", "tooltipDescription_it": "The maximum number of targets that can be locked simultaneously", "tooltipDescription_ja": "同時にロックできるターゲットの最大数です", "tooltipDescription_ko": "동시에 고정할 수 있는 최대 타겟 수입니다.", "tooltipDescription_ru": "Максимальное число целей, одновременно сопровождаемых кораблём", "tooltipDescription_zh": "可以同时锁定的目标数量上限", "tooltipDescriptionID": 295324, "tooltipTitleID": 295323 }, "193": { "attributeID": 193, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "The maximum number of their targets that the character can attack at a given time.", "displayWhenZero": 0, "highIsGood": 1, "name": "maxAttackTargets", "published": 0, "stackable": 1 }, "194": { "attributeID": 194, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The resistance to target jamming.", "displayWhenZero": 0, "highIsGood": 1, "name": "jammingResistance", "published": 0, "stackable": 1 }, "195": { "attributeID": 195, "categoryID": 31, "dataType": 9, "defaultValue": 0.0, "description": "The race ID of the type.", "displayWhenZero": 0, "highIsGood": 1, "name": "raceID", "published": 0, "stackable": 1 }, "196": { "attributeID": 196, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The maximum amount of manufacture slots that can be used at a time.", "displayWhenZero": 0, "highIsGood": 1, "name": "manufactureSlotLimit", "published": 0, "stackable": 1 }, "197": { "attributeID": 197, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distance from thing to survey.", "displayName_de": "Vermessungsscanreichweite", "displayName_en-us": "Survey Scan Range", "displayName_es": "Alcance del escaneo de prospección", "displayName_fr": "Portée du balayage d'inspection", "displayName_it": "Survey Scan Range", "displayName_ja": "サーベイスキャン範囲", "displayName_ko": "조사 스캔 거리", "displayName_ru": "Дистанция сбора данных", "displayName_zh": "测量扫描范围", "displayNameID": 233066, "displayWhenZero": 0, "highIsGood": 1, "name": "surveyScanRange", "published": 1, "stackable": 1, "unitID": 1 }, "202": { "attributeID": 202, "categoryID": 1, "dataType": 5, "defaultValue": 1.0, "description": "Factor to adjust module cpu need by.", "displayName_de": "CPU-Leistungsbonus", "displayName_en-us": "CPU Output bonus", "displayName_es": "Bonificación de rendimiento de la CPU", "displayName_fr": "Bonus de puissance CPU", "displayName_it": "CPU Output bonus", "displayName_ja": "CPU 出力ボーナス", "displayName_ko": "CPU 출력 보너스", "displayName_ru": "Повышение мощности ЦПУ", "displayName_zh": "CPU输出加成", "displayNameID": 233051, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1405, "name": "cpuMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "203": { "attributeID": 203, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "Factor to scale mining laser durations by.", "displayWhenZero": 0, "highIsGood": 1, "name": "miningDurationMultiplier", "published": 0, "stackable": 1 }, "204": { "attributeID": 204, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Typically scales the firing speed of a weapon. Reducing speed means faster, strangely..", "displayName_de": "Feuerraten-Bonus", "displayName_en-us": "Rate of Fire Bonus", "displayName_es": "Bonificación a la cadencia de tiro", "displayName_fr": "Bonus de cadence de tir", "displayName_it": "Rate of Fire Bonus", "displayName_ja": "発射間隔ボーナス", "displayName_ko": "연사속도 보너스", "displayName_ru": "Уменьшение цикла выстрела", "displayName_zh": "射击速度加成", "displayNameID": 233192, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1389, "name": "speedMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "205": { "attributeID": 205, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the accuracy of some targeted weapon.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "accuracyMultiplier", "published": 0, "stackable": 1 }, "207": { "attributeID": 207, "categoryID": 51, "dataType": 5, "defaultValue": 1.0, "description": "The factor by which the amount mined by a mining laser is scaled.", "displayName_de": "Bergbauertrag-Multiplikator", "displayName_en-us": "Mining Amount Multiplier", "displayName_es": "Multiplicador de cantidad extraída", "displayName_fr": "Multiplicateur de minerai extrait", "displayName_it": "Mining Amount Multiplier", "displayName_ja": "採掘量乗数", "displayName_ko": "채굴 총량 배수", "displayName_ru": "Коэффициент объёма добычи", "displayName_zh": "开采量倍增系数", "displayNameID": 233352, "displayWhenZero": 0, "highIsGood": 1, "name": "miningAmountMultiplier", "published": 0, "stackable": 0 }, "208": { "attributeID": 208, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Radar strength.", "displayName_de": "RADAR-Sensorstärke", "displayName_en-us": "RADAR Sensor Strength", "displayName_es": "Intensidad sensor radar", "displayName_fr": "Puissance de détection radar", "displayName_it": "RADAR Sensor Strength", "displayName_ja": "電波センサー強度", "displayName_ko": "레이더 센서 강도", "displayName_ru": "Эффективность радарной системы", "displayName_zh": "雷达感应强度", "displayNameID": 233420, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2031, "name": "scanRadarStrength", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein höherer Wert reduziert die Chance von ECM gestört zu werden und hilft der Erfassung von Sonden zu entgehen", "tooltipDescription_en-us": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_es": "Los valores altos reducen las posibilidades de perturbación por parte de las ECM y de detección por parte de las sondas.", "tooltipDescription_fr": "Les grandes valeurs réduisent les chances de brouillage par les CME et permettent d'éviter la détection par les sondes.", "tooltipDescription_it": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_ja": "数値が大きいほどECMに妨害されにくくなり、プローブに探知されにくくなります", "tooltipDescription_ko": "값이 클수록 ECM에 재밍될 확률이 감소하며 프로브의 탐지를 보다 잘 피할 수 있습니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к увеличению вероятности продолжения работы систем сопровождения целей под воздействием помех, а также к затруднению определения точных координат оснащённого ими объекта при помощи разведзондов", "tooltipDescription_zh": "该数值越大,被电子干扰的几率越低,还有利于规避敌方探针扫描", "tooltipDescriptionID": 295233, "tooltipTitleID": 295231, "unitID": 120 }, "209": { "attributeID": 209, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Ladar strength.", "displayName_de": "Ladar-Sensorstärke", "displayName_en-us": "Ladar Sensor Strength", "displayName_es": "Intensidad sensor lidar", "displayName_fr": "Puissance de détection ladar", "displayName_it": "Ladar Sensor Strength", "displayName_ja": "光学センサー強度", "displayName_ko": "라이다 센서 강도", "displayName_ru": "Эффективность ладарной системы", "displayName_zh": "光雷达感应强度", "displayNameID": 233419, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2030, "name": "scanLadarStrength", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein höherer Wert reduziert die Chance von ECM gestört zu werden und hilft der Erfassung von Sonden zu entgehen", "tooltipDescription_en-us": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_es": "Los valores altos reducen las posibilidades de perturbación por parte de las ECM y de detección por parte de las sondas.", "tooltipDescription_fr": "Les grandes valeurs réduisent les chances de brouillage par les CME et permettent d'éviter la détection par les sondes.", "tooltipDescription_it": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_ja": "数値が大きいほどECMに妨害されにくくなり、プローブに探知されにくくなります", "tooltipDescription_ko": "값이 클수록 ECM에 재밍될 확률이 감소하며 프로브의 탐지를 보다 잘 피할 수 있습니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к увеличению вероятности продолжения работы систем сопровождения целей под воздействием помех, а также к затруднению определения точных координат оснащённого ими объекта при помощи разведзондов", "tooltipDescription_zh": "该数值越大,被电子干扰的几率越低,还有利于规避敌方探针扫描", "tooltipDescriptionID": 295229, "tooltipTitleID": 295228, "unitID": 120 }, "210": { "attributeID": 210, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Magnetometric strength.", "displayName_de": "Magnetometrische Sensorstärke", "displayName_en-us": "Magnetometric Sensor Strength", "displayName_es": "Intensidad sensor magnetométrico", "displayName_fr": "Puissance de détection magnétométrique", "displayName_it": "Magnetometric Sensor Strength", "displayName_ja": "磁気センサー強度", "displayName_ko": "자기장 센서 강도", "displayName_ru": "Эффективность магнитометрической системы", "displayName_zh": "磁力感应强度", "displayNameID": 233421, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2029, "name": "scanMagnetometricStrength", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein höherer Wert reduziert die Chance von ECM gestört zu werden und hilft der Erfassung von Sonden zu entgehen", "tooltipDescription_en-us": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_es": "Los valores altos reducen las posibilidades de perturbación por parte de las ECM y de detección por parte de las sondas.", "tooltipDescription_fr": "Les grandes valeurs réduisent les chances de brouillage par les CME et permettent d'éviter la détection par les sondes.", "tooltipDescription_it": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_ja": "数値が大きいほどECMに妨害されにくくなり、プローブに探知されにくくなります", "tooltipDescription_ko": "값이 클수록 ECM에 재밍될 확률이 감소하며 프로브의 탐지를 보다 잘 피할 수 있습니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к увеличению вероятности продолжения работы систем сопровождения целей под воздействием помех, а также к затруднению определения точных координат оснащённого ими объекта при помощи разведзондов", "tooltipDescription_zh": "该数值越大,被电子干扰的几率越低,还有利于规避敌方探针扫描", "tooltipDescriptionID": 295227, "tooltipTitleID": 295226, "unitID": 120 }, "211": { "attributeID": 211, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Gravimetric strength.", "displayName_de": "Gravimetrische Sensorstärke", "displayName_en-us": "Gravimetric Sensor Strength", "displayName_es": "Intensidad sensor gravimétrico", "displayName_fr": "Puissance de détection gravimétrique", "displayName_it": "Gravimetric Sensor Strength", "displayName_ja": "重力センサー強度", "displayName_ko": "중력장 센서 강도", "displayName_ru": "Эффективность гравиметрической системы", "displayName_zh": "引力感应强度", "displayNameID": 233422, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2028, "name": "scanGravimetricStrength", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein höherer Wert reduziert die Chance von ECM gestört zu werden und hilft der Erfassung von Sonden zu entgehen", "tooltipDescription_en-us": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_es": "Los valores altos reducen las posibilidades de perturbación por parte de las ECM y de detección por parte de las sondas.", "tooltipDescription_fr": "Les grandes valeurs réduisent les chances de brouillage par les CME et permettent d'éviter la détection par les sondes.", "tooltipDescription_it": "Larger values reduce the chance of being jammed by ECM and assist in avoiding detection by probes", "tooltipDescription_ja": "数値が大きいほどECMに妨害されにくくなり、プローブに探知されにくくなります", "tooltipDescription_ko": "값이 클수록 ECM에 재밍될 확률이 감소하며 프로브의 탐지를 보다 잘 피할 수 있습니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к увеличению вероятности продолжения работы систем сопровождения целей под воздействием помех, а также к затруднению определения точных координат оснащённого ими объекта при помощи разведзондов", "tooltipDescription_zh": "该数值越大,被电子干扰的几率越低,还有利于规避敌方探针扫描", "tooltipDescriptionID": 295225, "tooltipTitleID": 295224, "unitID": 120 }, "212": { "attributeID": 212, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "The characters missile use efficiency, scales the damage missiles do.", "displayName_de": "Raketenschaden-Bonus", "displayName_en-us": "Missile Damage Bonus", "displayName_es": "Bonificación de daño de misiles", "displayName_fr": "Bonus de dégât des missiles", "displayName_it": "Missile Damage Bonus", "displayName_ja": "ミサイルダメージボーナス", "displayName_ko": "미사일 피해 보너스", "displayName_ru": "Влияние на урон БЧ ракет", "displayName_zh": "导弹伤害加成", "displayNameID": 233359, "displayWhenZero": 0, "highIsGood": 1, "name": "missileDamageMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "213": { "attributeID": 213, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "description": "Additional percentage to the characters missile damage multiplier.", "displayName_de": "Raketenschaden-Bonus", "displayName_en-us": "Missile Damage Bonus", "displayName_es": "Bonificación de daño de misiles", "displayName_fr": "Bonus de dégâts des missiles", "displayName_it": "Missile Damage Bonus", "displayName_ja": "ミサイルダメージボーナス", "displayName_ko": "미사일 피해 보너스", "displayName_ru": "Влияние на урон БЧ ракет", "displayName_zh": "导弹伤害加成", "displayNameID": 233360, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "missileDamageMultiplierBonus", "published": 1, "stackable": 1, "unitID": 109 }, "216": { "attributeID": 216, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Scales the capacitor need for fitted modules.", "displayName_de": "Energiespeicher-Verbrauchsmultiplikator", "displayName_en-us": "Capacitor Need Multiplier", "displayName_es": "Mult. de necesidad del condensador", "displayName_fr": "Multiplicateur des besoins énergétiques du capaciteur", "displayName_it": "Capacitor Need Multiplier", "displayName_ja": "キャパシタ消費乗数", "displayName_ko": "캐패시터 요구량 조정", "displayName_ru": "Снижение потребления энергии", "displayName_zh": "电容需求倍增系数", "displayNameID": 233008, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "capacitorNeedMultiplier", "published": 1, "stackable": 1, "unitID": 105 }, "217": { "attributeID": 217, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "The graphicID of the propulsion system.", "displayWhenZero": 0, "highIsGood": 1, "name": "propulsionGraphicID", "published": 0, "stackable": 1 }, "218": { "attributeID": 218, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes a character to research a blueprint.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "blueprintResearchTimeMultiplier", "published": 0, "stackable": 1 }, "219": { "attributeID": 219, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to manufacture something.", "displayWhenZero": 0, "highIsGood": 1, "name": "manufactureTimeMultiplier", "published": 0, "stackable": 1 }, "220": { "attributeID": 220, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to research a blueprint.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "blueprintResearchTimeMultiplierBonus", "published": 0, "stackable": 1 }, "221": { "attributeID": 221, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes a character to manufacture a blueprint.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "blueprintManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "222": { "attributeID": 222, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to manufacture from a blueprint.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "blueprintManufactureTimeMultiplierBonus", "published": 0, "stackable": 1 }, "223": { "attributeID": 223, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to train skills with Charisma as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "charismaSkillTrainingTimeMultiplier", "published": 0, "stackable": 1 }, "224": { "attributeID": 224, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to train skills with Intelligence as the primary attribute. ", "displayWhenZero": 0, "highIsGood": 1, "name": "intelligenceSkillTrainingTimeMultiplier", "published": 0, "stackable": 1 }, "225": { "attributeID": 225, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to train skills with Memory as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "memorySkillTrainingTimeMultiplier", "published": 0, "stackable": 1 }, "226": { "attributeID": 226, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to train skills with Perception as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "perceptionSkillTrainingTimeMultiplier", "published": 0, "stackable": 1 }, "227": { "attributeID": 227, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to train skills with Willpower as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "willpowerSkillTrainingTimeMultiplier", "published": 0, "stackable": 1 }, "228": { "attributeID": 228, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to train skills with Charisma as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "charismaSkillTrainingTimeMultiplierBonus", "published": 0, "stackable": 1 }, "229": { "attributeID": 229, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to train skills with Intelligence as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "intelligenceSkillTrainingTimeMultiplierBonus", "published": 0, "stackable": 1 }, "230": { "attributeID": 230, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to train skills with Memory as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "memorySkillTrainingTimeMultiplierBonus", "published": 0, "stackable": 1 }, "231": { "attributeID": 231, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to train skills with Perception as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "perceptionSkillTrainingTimeMultiplierBonus", "published": 0, "stackable": 1 }, "232": { "attributeID": 232, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus or penalty to the percentage time it takes to train skills with Willpower as the primary attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "willpowerSkillTrainingTimeMultiplierBonus", "published": 0, "stackable": 1 }, "235": { "attributeID": 235, "categoryID": 37, "dataType": 4, "defaultValue": 0.0, "description": "Additional amount of locked targets that can be handled.", "displayName_de": "Bonus für maximal aufgeschaltete Ziele", "displayName_en-us": "Maximum Locked Targets Bonus", "displayName_es": "Bonificación de objetivos fijados máx.", "displayName_fr": "Bonus de cibles verrouillées maximum", "displayName_it": "Maximum Locked Targets Bonus", "displayName_ja": "最大ターゲットロック数ボーナス", "displayName_ko": "최대 타겟 수 보너스", "displayName_ru": "Влияние на макс. количество захваченных целей", "displayName_zh": "目标锁定数上限加成", "displayNameID": 233631, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxLockedTargetsBonus", "published": 1, "stackable": 1, "unitID": 139 }, "236": { "attributeID": 236, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Additional amount of attack targets that can be handled.", "displayWhenZero": 0, "highIsGood": 1, "name": "maxAttackTargetsBonus", "published": 0, "stackable": 1, "unitID": 139 }, "237": { "attributeID": 237, "categoryID": 24, "dataType": 5, "defaultValue": 1.0, "description": "Scales the max target range of a ships electronics.", "displayName_de": "Zielaufschaltungsreichweite-Bonus", "displayName_en-us": "Targeting Range Bonus", "displayName_es": "Bonificación de distancia-objetivo", "displayName_fr": "Bonus de portée de visée", "displayName_it": "Targeting Range Bonus", "displayName_ja": "ターゲット範囲ボーナス", "displayName_ko": "타겟팅 거리 사보너스", "displayName_ru": "Влияние на дальность захвата целей", "displayName_zh": "锁定范围加成", "displayNameID": 233333, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxTargetRangeMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "238": { "attributeID": 238, "categoryID": 25, "dataType": 5, "defaultValue": 0.0, "description": "+/- modifier to the gravimetric strength of an electronic system.", "displayName_de": "Gravimetrische ECM-Zielstörsenderstärke", "displayName_en-us": "Gravimetric ECM Jammer Strength", "displayName_es": "Intensidad del perturbador ECM gravimétrico", "displayName_fr": "Puissance gravimétrique CME", "displayName_it": "Gravimetric ECM Jammer Strength", "displayName_ja": "重力ECMジャマー強度", "displayName_ko": "중력장 ECM 재머 강도", "displayName_ru": "Сила действия помех на гравиметрические системы", "displayName_zh": "引力ECM干扰强度", "displayNameID": 233255, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3226, "name": "scanGravimetricStrengthBonus", "published": 1, "stackable": 0 }, "239": { "attributeID": 239, "categoryID": 25, "dataType": 5, "defaultValue": 0.0, "description": "+/- modifier to the ladar strength of an electronic system.", "displayName_de": "Ladar-ECM-Zielstörsenderstärke", "displayName_en-us": "Ladar ECM Jammer Strength", "displayName_es": "Intensidad del perturbador ECM lidar", "displayName_fr": "Puissance de détection ladar CME", "displayName_it": "Ladar ECM Jammer Strength", "displayName_ja": "対光レーダーECMジャマーの強度", "displayName_ko": "라이다 ECM 재머 강도", "displayName_ru": "Сила действия помех на ладарные системы", "displayName_zh": "光雷达ECM干扰强度", "displayNameID": 233249, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3228, "name": "scanLadarStrengthBonus", "published": 1, "stackable": 0 }, "240": { "attributeID": 240, "categoryID": 25, "dataType": 5, "defaultValue": 0.0, "description": "+/- modifier to the magnetometric strength of an electronic system.", "displayName_de": "Magnetometrische ECM-Zielstörsenderstärke", "displayName_en-us": "Magnetometric ECM Jammer Strength", "displayName_es": "Intensidad del perturbador ECM magnetométrico", "displayName_fr": "Puissance magnétométrique CME", "displayName_it": "Magnetometric ECM Jammer Strength", "displayName_ja": "磁気ECMジャマーの強度", "displayName_ko": "자기 ECM 재머 강도", "displayName_ru": "Сила действия помех на магнитометрические системы", "displayName_zh": "磁力ECM干扰强度", "displayNameID": 233252, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3227, "name": "scanMagnetometricStrengthBonus", "published": 1, "stackable": 0 }, "241": { "attributeID": 241, "categoryID": 25, "dataType": 5, "defaultValue": 0.0, "description": "+/- modifier to the radar strength of an electronic system.", "displayName_de": "RADAR-ECM-Zielstörsenderstärke", "displayName_en-us": "RADAR ECM Jammer Strength", "displayName_es": "Intensidad del perturbador ECM del radar", "displayName_fr": "Puissance de détection radar CME", "displayName_it": "RADAR ECM Jammer Strength", "displayName_ja": "対レーダーECMジャマーの強度", "displayName_ko": "레이더 ECM 재머 강도", "displayName_ru": "Сила действия помех на радарные системы", "displayName_zh": "雷达ECM干扰强度", "displayNameID": 233248, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3229, "name": "scanRadarStrengthBonus", "published": 1, "stackable": 0 }, "242": { "attributeID": 242, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time it takes to lock a target.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 104, "name": "scanSpeedMultiplier", "published": 0, "stackable": 1, "unitID": 111 }, "243": { "attributeID": 243, "categoryID": 26, "dataType": 5, "defaultValue": 1.0, "description": "Scales the range at which something can reach.", "displayName_de": "Maximaler Reichweitenmultiplikator", "displayName_en-us": "Maximum Range Multiplier", "displayName_es": "Multiplicador de alcance máximo", "displayName_fr": "Multiplicateur de portée maximum", "displayName_it": "Maximum Range Multiplier", "displayName_ja": "最大範囲乗数", "displayName_ko": "최대 사거리 배수", "displayName_ru": "Коэффициент максимальной дальности", "displayName_zh": "最大范围倍增系数", "displayNameID": 233320, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxRangeMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "244": { "attributeID": 244, "categoryID": 26, "dataType": 5, "defaultValue": 1.0, "description": "Scale the tracking speed of a weapon.", "displayName_de": "Nachführungsgeschwindigkeit-Multiplikator", "displayName_en-us": "Tracking Speed Multiplier", "displayName_es": "Multiplicador de velocidad de rastreo", "displayName_fr": "Multiplicateur de vitesse de poursuite", "displayName_it": "Tracking Speed Multiplier", "displayName_ja": "追跡速度乗数", "displayName_ko": "트래킹 속도 배수", "displayName_ru": "Множитель скорости наводки", "displayName_zh": "跟踪速度倍增系数", "displayNameID": 233163, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "trackingSpeedMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "245": { "attributeID": 245, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "Graphic ID of the turrets for drone type ships.", "displayWhenZero": 0, "highIsGood": 1, "name": "gfxTurretID", "published": 0, "stackable": 1 }, "246": { "attributeID": 246, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "Graphic ID of the boosters for drone type ships.", "displayWhenZero": 0, "highIsGood": 1, "name": "gfxBoosterID", "published": 0, "stackable": 1 }, "247": { "attributeID": 247, "categoryID": 6, "dataType": 4, "defaultValue": 15000.0, "description": "The distance from a target an entity starts using its weapons.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "entityAttackRange", "published": 0, "stackable": 1 }, "248": { "attributeID": 248, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "The minimum value of any given unit of loot dropped by this entity. Not the minimum value of all the loot, but of any given item dropped.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityLootValueMin", "published": 0, "stackable": 1 }, "249": { "attributeID": 249, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "The maximum value of any loot dropped by this entity. Thats for each unit of any given item of loot, not for the total value of all items of loot dropped.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityLootValueMax", "published": 0, "stackable": 1 }, "250": { "attributeID": 250, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "Deprecated. The minimum number of pieces of loot dropped by this entity.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityLootCountMin", "published": 0, "stackable": 1 }, "251": { "attributeID": 251, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "The maximum number of pieces of loot dropped by this entity.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityLootCountMax", "published": 0, "stackable": 1 }, "252": { "attributeID": 252, "categoryID": 32, "dataType": 5, "defaultValue": 0.0, "description": "How much security status is modified by for killing this entity. Depending on the entity, this may be a positive or negative amount.\r\nValue is a % movement of the character's current security towards the upper/lower limit.", "displayName_de": "Sicherheitsstatus-Abschussanzahl", "displayName_en-us": "Security Status Kill Amount", "displayName_es": "Cantidad de estado de seguridad por asesinato", "displayName_fr": "Statut de sécurité après destruction", "displayName_it": "Security Status Kill Amount", "displayName_ja": "破壊時セキュリティーステータス変動量", "displayName_ko": "처치 시 시큐리티 수치 증가", "displayName_ru": "Повышение СС за уничтожение", "displayName_zh": "安全等级击毁数量", "displayNameID": 233166, "displayWhenZero": 0, "highIsGood": 1, "name": "entitySecurityStatusKillBonus", "published": 1, "stackable": 1, "unitID": 109 }, "253": { "attributeID": 253, "categoryID": 32, "dataType": 5, "defaultValue": 0.0, "description": "The amount of security status lost of aggressing agaisnt this entity first.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySecurityStatusAggressionBonus", "published": 0, "stackable": 1 }, "254": { "attributeID": 254, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "Minimum loot count that an entity can take from the NPC corp loot resource", "displayWhenZero": 0, "highIsGood": 1, "name": "minLootCount", "published": 0, "stackable": 1 }, "256": { "attributeID": 256, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum loot count that an entity can take from the NPC corp loot resource", "displayWhenZero": 0, "highIsGood": 1, "name": "maxLootCount", "published": 0, "stackable": 1 }, "257": { "attributeID": 257, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "The range in m that the entity follows it's target.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityFollowRange", "published": 0, "stackable": 1 }, "258": { "attributeID": 258, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Minimum value of each resource the entity is able to take as loot.", "displayWhenZero": 0, "highIsGood": 1, "name": "minLootValue", "published": 0, "stackable": 1 }, "259": { "attributeID": 259, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum value of each resource the entity is able to take as loot.", "displayWhenZero": 0, "highIsGood": 1, "name": "maxLootValue", "published": 0, "stackable": 1 }, "260": { "attributeID": 260, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The range in m when the entity starts attacking it's target.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "attackRange", "published": 0, "stackable": 1 }, "261": { "attributeID": 261, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "How much the security status changes when this entity is killed.", "displayWhenZero": 0, "highIsGood": 1, "name": "killStatusModifier", "published": 0, "stackable": 1 }, "262": { "attributeID": 262, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "How much the security status changes when this entity is attacked.", "displayWhenZero": 0, "highIsGood": 1, "name": "attackStatusModifier", "published": 0, "stackable": 1 }, "263": { "attributeID": 263, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Amount of maximum shield HP on the item.", "displayName_de": "Schildkapazität", "displayName_en-us": "Shield Capacity", "displayName_es": "Capacidad del escudo", "displayName_fr": "Capacité du bouclier", "displayName_it": "Shield Capacity", "displayName_ja": "シールド容量", "displayName_ko": "실드량", "displayName_ru": "Запас прочности щитов", "displayName_zh": "护盾容量", "displayNameID": 232968, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Die HP der Schilde laden sich mit der Zeit wieder auf und können durch den Einsatz von Modulen schneller regeneriert werden", "tooltipDescription_en-us": "Shield hitpoints recharge over time and can be recovered more quickly with the use of modules", "tooltipDescription_es": "Los puntos de vida del escudo se recargan con el tiempo y se pueden recuperar más rápido utilizando módulos.", "tooltipDescription_fr": "Les PV du bouclier se rechargent avec le temps, un processus qui peut être encore amélioré grâce à l'utilisation de modules.", "tooltipDescription_it": "Shield hitpoints recharge over time and can be recovered more quickly with the use of modules", "tooltipDescription_ja": "時間経過で再充電し、モジュールを使用すればさらに素早く回復します", "tooltipDescription_ko": "실드 내구도는 시간이 지나면 충전되며 모듈을 사용하면 더 빨리 회복됩니다.", "tooltipDescription_ru": "Запас прочности силового поля восстанавливается со временем; с помощью модулей его можно восстановить быстрее", "tooltipDescription_zh": "护盾会随时间自动恢复,使用装备还可以使恢复速度加快", "tooltipDescriptionID": 295211, "tooltipTitleID": 295210, "unitID": 113 }, "264": { "attributeID": 264, "categoryID": 9, "chargeRechargeTimeID": 479, "dataType": 6, "defaultValue": 0.0, "description": "DO NOT MESS WITH. Helper attribute for entities, stands in for the shield charge.\r\nThe amount of starting shield capacity of the NPC.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "maxAttributeID": 263, "name": "shieldCharge", "published": 0, "stackable": 1 }, "265": { "attributeID": 265, "categoryID": 3, "dataType": 4, "defaultValue": 0.0, "description": "The number of hit points on the entities armor.", "displayName_de": "Panzerung-HP", "displayName_en-us": "Armor Hitpoints", "displayName_es": "Vida blindaje", "displayName_fr": "PV du blindage", "displayName_it": "Armor Hitpoints", "displayName_ja": "アーマーヒットポイント", "displayName_ko": "장갑 내구도", "displayName_ru": "Запас прочности брони", "displayName_zh": "装甲值", "displayNameID": 232963, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorHP", "published": 1, "stackable": 1, "tooltipDescription_de": "Die HP der Panzerung regeneriert sich nicht von alleine, kann aber von Modulen oder Stationsdiensten repariert werden", "tooltipDescription_en-us": "Armor hitpoints do not regenerate naturally but can be repaired by modules or station services", "tooltipDescription_es": "Los puntos de vida del blindaje no se regeneran automáticamente, sino mediante módulos o servicios de la estación.", "tooltipDescription_fr": "Les PV du blindage ne se régénèrent pas automatiquement, mais peuvent être réparés par des modules ou des stations.", "tooltipDescription_it": "Armor hitpoints do not regenerate naturally but can be repaired by modules or station services", "tooltipDescription_ja": "自動的には回復せず、モジュールやステーションサービスで修復されます", "tooltipDescription_ko": "장갑 내구도는 자동으로 재생되지 않으며 모듈이나 정거장 서비스를 이용해 수리할 수 있습니다.", "tooltipDescription_ru": "Запас прочности брони не восстанавливается естественным образом, но его можно восстановить с помощью модулей или станционных служб", "tooltipDescription_zh": "装甲不会自动恢复,不过可以用装备或空间站维修服务进行修理", "tooltipDescriptionID": 295209, "tooltipTitleID": 295208, "unitID": 113 }, "266": { "attributeID": 266, "categoryID": 9, "dataType": 1, "defaultValue": 0.0, "description": "DO NOT MESS WITH. The amount of damage done to the entities armor hit points. Starting armor damage.", "displayName_de": "Panzerungsschaden", "displayName_en-us": "Armor Damage", "displayName_es": "Daño de blindaje", "displayName_fr": "Dégâts de blindage", "displayName_it": "Armor Damage", "displayName_ja": "アーマーダメージ", "displayName_ko": "장갑 피해량", "displayName_ru": "Урон, наносимый броне", "displayName_zh": "装甲损伤", "displayNameID": 232959, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "armorDamage", "published": 1, "stackable": 1 }, "267": { "attributeID": 267, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies EM damage taken by Armor. ", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen EM-Schaden", "displayName_en-us": "Armor EM Damage Resistance", "displayName_es": "Resistencia electrom. blindaje", "displayName_fr": "Résistance du blindage aux dégâts EM", "displayName_it": "Armor EM Damage Resistance", "displayName_ja": "アーマーEMダメージレジスタンス", "displayName_ko": "장갑 EM 저항력", "displayName_ru": "Сопротивляемость брони ЭМ-урону", "displayName_zh": "装甲电磁伤害抗性", "displayNameID": 233501, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "maxAttributeID": 1527, "name": "armorEmDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "268": { "attributeID": 268, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies EXPLOSIVE damage taken by Armor. ", "displayName_de": "Panzerung-Explosivschadensresistenz", "displayName_en-us": "Armor Explosive Damage Resistance", "displayName_es": "Resistencia explosiva blindaje", "displayName_fr": "Résistance du blindage aux dégâts explosifs", "displayName_it": "Armor Explosive Damage Resistance", "displayName_ja": "アーマーエクスプローシブダメージレジスタンス", "displayName_ko": "장갑 폭발 저항력", "displayName_ru": "Сопротивляемость брони фугасному урону", "displayName_zh": "装甲爆炸伤害抗性", "displayNameID": 233502, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "maxAttributeID": 1527, "name": "armorExplosiveDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "269": { "attributeID": 269, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies KINETIC damage taken by Armor. ", "displayName_de": "Kinetikschadensresistenz der Panzerung", "displayName_en-us": "Armor Kinetic Damage Resistance", "displayName_es": "Resistencia cinética blindaje", "displayName_fr": "Résistance du blindage aux dégâts cinétiques", "displayName_it": "Armor Kinetic Damage Resistance", "displayName_ja": "アーマーキネティックダメージレジスタンス", "displayName_ko": "장갑 키네틱 저항력", "displayName_ru": "Сопротивляемость брони кинетическому урону", "displayName_zh": "装甲动能伤害抗性", "displayNameID": 233503, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "maxAttributeID": 1527, "name": "armorKineticDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "270": { "attributeID": 270, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies THERMAL damage taken by Armor. ", "displayName_de": "Thermalschadensresistenz der Panzerung", "displayName_en-us": "Armor Thermal Damage Resistance", "displayName_es": "Resistencia térmica blindaje", "displayName_fr": "Résistance du blindage aux dégâts thermiques", "displayName_it": "Armor Thermal Damage Resistance", "displayName_ja": "アーマーサーマルダメージレジスタンス", "displayName_ko": "장갑 열 저항력", "displayName_ru": "Сопротивляемость брони термическому урону", "displayName_zh": "装甲热能伤害抗性", "displayNameID": 233504, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "maxAttributeID": 1527, "name": "armorThermalDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "271": { "attributeID": 271, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies EM damage taken by shield", "displayName_de": "Widerstandsfähigkeit der Schilde gegen EM-Schaden", "displayName_en-us": "Shield EM Damage Resistance", "displayName_es": "Resistencia al daño electromagnético del escudo", "displayName_fr": "Résistance du bouclier aux dégâts EM", "displayName_it": "Shield EM Damage Resistance", "displayName_ja": "シールドEMダメージレジスタンス", "displayName_ko": "실드 EM 저항력", "displayName_ru": "Сопротивляемость щитов ЭМ-урону", "displayName_zh": "护盾电磁伤害抗性", "displayNameID": 233505, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "maxAttributeID": 1528, "name": "shieldEmDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "272": { "attributeID": 272, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies EXPLOSIVE damage taken by Armor. ", "displayName_de": "Explosivschadensresistenz der Schilde", "displayName_en-us": "Shield Explosive Damage Resistance", "displayName_es": "Resistencia explosiva escudo", "displayName_fr": "Résistance du bouclier aux dégâts explosifs", "displayName_it": "Shield Explosive Damage Resistance", "displayName_ja": "シールドエクスプローシブダメージレジスタンス", "displayName_ko": "실드 폭발 저항력", "displayName_ru": "Сопротивляемость щитов фугасному урону", "displayName_zh": "护盾爆炸伤害抗性", "displayNameID": 233506, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "maxAttributeID": 1528, "name": "shieldExplosiveDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "273": { "attributeID": 273, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies KINETIC damage taken by Armor. ", "displayName_de": "Kinetikschadensresistenz der Schilde", "displayName_en-us": "Shield Kinetic Damage Resistance", "displayName_es": "Resistencia al daño cinético del escudo", "displayName_fr": "Résistance du bouclier aux dégâts cinétiques", "displayName_it": "Shield Kinetic Damage Resistance", "displayName_ja": "シールドキネティックダメージレジスタンス", "displayName_ko": "실드 키네틱 저항력", "displayName_ru": "Сопротивляемость щитов кинетическому урону", "displayName_zh": "护盾动能伤害抗性", "displayNameID": 233507, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "maxAttributeID": 1528, "name": "shieldKineticDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "274": { "attributeID": 274, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies THERMAL damage taken by Shield. ", "displayName_de": "Thermalschadensresistenz der Schilde", "displayName_en-us": "Shield Thermal Damage Resistance", "displayName_es": "Resistencia al daño térmico del escudo", "displayName_fr": "Résistance du bouclier aux dégâts thermiques", "displayName_it": "Shield Thermal Damage Resistance", "displayName_ja": "シールドサーマルダメージレジスタンス", "displayName_ko": "실드 열 저항력", "displayName_ru": "Сопротивляемость щитов термическому урону", "displayName_zh": "护盾热能伤害抗性", "displayNameID": 233508, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "maxAttributeID": 1528, "name": "shieldThermalDamageResonance", "published": 1, "stackable": 0, "unitID": 108 }, "275": { "attributeID": 275, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This attribute is a multiplier to the number of skill points required to train. Skill points required to train a skill = 250 * skillTimeConstant * sqrt(32)^(skillLevel - 1)", "displayName_de": "Trainingszeit-Multiplikator", "displayName_en-us": "Training time multiplier", "displayName_es": "Multiplicador de tiempo de desarrollo", "displayName_fr": "Multiplicateur du temps de formation", "displayName_it": "Training time multiplier", "displayName_ja": "トレーニング時間乗数", "displayName_ko": "훈련시간 배수", "displayName_ru": "Множитель", "displayName_zh": "训练时间倍增系数", "displayNameID": 233205, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "skillTimeConstant", "published": 1, "stackable": 1, "unitID": 104 }, "276": { "attributeID": 276, "categoryID": 7, "dataType": 1, "defaultValue": 0.0, "description": "Total accumulated points for skill", "displayName_de": "Skillpunkte", "displayName_en-us": "Skill Points", "displayName_es": "Puntos de habilidad", "displayName_fr": "Points de compétence", "displayName_it": "Skill Points", "displayName_ja": "スキルポイント", "displayName_ko": "스킬 포인트", "displayName_ru": "Синхропакеты", "displayName_zh": "技能点", "displayNameID": 233210, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "skillPoints", "published": 1, "stackable": 1 }, "277": { "attributeID": 277, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 1", "displayWhenZero": 0, "highIsGood": 1, "name": "requiredSkill1Level", "published": 0, "stackable": 1 }, "278": { "attributeID": 278, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 2", "displayWhenZero": 0, "highIsGood": 1, "name": "requiredSkill2Level", "published": 0, "stackable": 1 }, "279": { "attributeID": 279, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 3", "displayWhenZero": 0, "highIsGood": 1, "name": "requiredSkill3Level", "published": 0, "stackable": 1 }, "280": { "attributeID": 280, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Level of skill", "displayName_de": "Level", "displayName_en-us": "Level", "displayName_es": "Nivel", "displayName_fr": "Niveau", "displayName_it": "Level", "displayName_ja": "レベル", "displayName_ko": "레벨", "displayName_ru": "Уровень", "displayName_zh": "等级", "displayNameID": 233212, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "skillLevel", "published": 1, "stackable": 1 }, "281": { "attributeID": 281, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of milliseconds before the object explodes.", "displayName_de": "Maximale Flugzeit", "displayName_en-us": "Maximum Flight Time", "displayName_es": "Tiempo de vuelo máximo", "displayName_fr": "Temps de vol maximum", "displayName_it": "Maximum Flight Time", "displayName_ja": "最大航行時間", "displayName_ko": "최대 비행 시간", "displayName_ru": "Максимальный запас полётного времени", "displayName_zh": "最长飞行时间", "displayNameID": 233173, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "explosionDelay", "published": 1, "stackable": 0, "unitID": 101 }, "282": { "attributeID": 282, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier to the amount of charge storage space in a launcher.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "launcherCapacityMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "283": { "attributeID": 283, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "This defines the total capacity of drones allowed in the drone bay of the ship", "displayName_de": "Drohnenkapazität", "displayName_en-us": "Drone Capacity", "displayName_es": "Capacidad drones", "displayName_fr": "Capacité du hangar à drones", "displayName_it": "Drone Capacity", "displayName_ja": "ドローン収容量", "displayName_ko": "드론 적재량", "displayName_ru": "Объём отсека для дронов", "displayName_zh": "无人机容量", "displayNameID": 233107, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1084, "name": "droneCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Drohnenhangar transportiert werden kann", "tooltipDescription_en-us": "The maximum volume that can be carried in the drone bay", "tooltipDescription_es": "El volumen máximo que puede transportarse en el muelle de drones.", "tooltipDescription_fr": "Volume maximum pouvant être transporté dans le hangar à drones.", "tooltipDescription_it": "The maximum volume that can be carried in the drone bay", "tooltipDescription_ja": "ドローンベイで運搬できる最大容量です", "tooltipDescription_ko": "드론 격납고의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём дронов, единовременно находящихся в отсеке для дронов на корабле", "tooltipDescription_zh": "无人机挂舱所能装载的最大无人机容量", "tooltipDescriptionID": 295326, "tooltipTitleID": 295325, "unitID": 9 }, "284": { "attributeID": 284, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Indicates whether the modules ranged effects exlude members of the users gang.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "excludeGangMembers", "published": 0, "stackable": 1 }, "285": { "attributeID": 285, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Indicates whether the modules ranged effects exlude members of the users corporation.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "excludeCorporationMembers", "published": 0, "stackable": 1 }, "286": { "attributeID": 286, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Indicates whether the modules ranged effects exclude ships hostile to the user.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "excludeHostiles", "published": 0, "stackable": 1 }, "287": { "attributeID": 287, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, kDmgBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "kDmgBonus", "published": 0, "stackable": 1 }, "288": { "attributeID": 288, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, shipCPUBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipCPUBonus", "published": 0, "stackable": 1 }, "289": { "attributeID": 289, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, turretDamageBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "turretDamageBonus", "published": 0, "stackable": 1 }, "290": { "attributeID": 290, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, skillTurretDmgBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "skillTurretDmgBonus", "published": 0, "stackable": 1 }, "291": { "attributeID": 291, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, CpuskillBonus", "displayName_de": "CPU-Skillbonus:", "displayName_en-us": "CPU Skill Bonus", "displayName_es": "Bonificación de habilidad de la CPU", "displayName_fr": "Bonus de compétence CPU", "displayName_it": "CPU Skill Bonus", "displayName_ja": "CPUスキルボーナス", "displayName_ko": "CPU 스킬 보너스", "displayName_ru": "Влияние навыка на мощность ЦПУ", "displayName_zh": "CPU技能加成", "displayNameID": 233061, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuskillBonus", "published": 1, "stackable": 1 }, "292": { "attributeID": 292, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, damageMultiplierBonus", "displayName_de": "Schadensmultiplikatorbonus", "displayName_en-us": "Damage Multiplier Bonus", "displayName_es": "Bonificación de multiplicador de daño", "displayName_fr": "Bonus de multiplicateur de dégâts", "displayName_it": "Damage Multiplier Bonus", "displayName_ja": "ダメージ乗数ボーナス", "displayName_ko": "피해량 배수 보너스", "displayName_ru": "Влияние на модификатор урона", "displayName_zh": "伤害倍增系数加成", "displayNameID": 233075, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "damageMultiplierBonus", "published": 1, "stackable": 1, "unitID": 105 }, "293": { "attributeID": 293, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, rofBonus", "displayName_de": "Feuerraten-Bonus", "displayName_en-us": "Rate Of Fire Bonus", "displayName_es": "Bonificación de cadencia de tiro", "displayName_fr": "Bonus de cadence de tir", "displayName_it": "Rate Of Fire Bonus", "displayName_ja": "発射間隔ボーナス", "displayName_ko": "연사속도 보너스", "displayName_ru": "Влияние на цикл выстрела", "displayName_zh": "射击速度加成", "displayNameID": 233283, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "rofBonus", "published": 1, "stackable": 1, "unitID": 105 }, "294": { "attributeID": 294, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, rangeSkillBonus", "displayName_de": "Modifikator für optimale Reichweite", "displayName_en-us": "Optimal Range Modifier", "displayName_es": "Modificador de alcance óptimo", "displayName_fr": "Modificateur de portée optimale", "displayName_it": "Optimal Range Modifier", "displayName_ja": "最適射程距離修正乗数", "displayName_ko": "최적사거리 보정치", "displayName_ru": "Модификатор оптимальной дальности", "displayName_zh": "最佳射程调整", "displayNameID": 233643, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "rangeSkillBonus", "published": 1, "stackable": 1, "unitID": 121 }, "295": { "attributeID": 295, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, abPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "abPowerBonus", "published": 0, "stackable": 1 }, "296": { "attributeID": 296, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, acPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "acPowerBonus", "published": 0, "stackable": 1 }, "297": { "attributeID": 297, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, afPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "afPowerBonus", "published": 0, "stackable": 1 }, "298": { "attributeID": 298, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, atPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "atPowerBonus", "published": 0, "stackable": 1 }, "299": { "attributeID": 299, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cbTRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cbTRangeBonus", "published": 0, "stackable": 1 }, "300": { "attributeID": 300, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, ccTRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ccTRangeBonus", "published": 0, "stackable": 1 }, "301": { "attributeID": 301, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cfTRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cfTRangeBonus", "published": 0, "stackable": 1 }, "302": { "attributeID": 302, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, ciTRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ciTRangeBonus", "published": 0, "stackable": 1 }, "303": { "attributeID": 303, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, aiPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "aiPowerBonus", "published": 0, "stackable": 1 }, "304": { "attributeID": 304, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, ctTRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ctTRangeBonus", "published": 0, "stackable": 1 }, "305": { "attributeID": 305, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, gbCpuBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gbCpuBonus", "published": 0, "stackable": 1 }, "306": { "attributeID": 306, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Autogenerated skill attribute, mMaxVelocityBonus", "displayName_de": "Max. Geschwindigkeitsmodifikator", "displayName_en-us": "Maximum Velocity Modifier", "displayName_es": "Modificador de velocidad máxima", "displayName_fr": "Modificateur de vitesse maximale", "displayName_it": "Maximum Velocity Modifier", "displayName_ja": "最高速度修正", "displayName_ko": "최대 속도 보정치", "displayName_ru": "Коэффициент скорости полного хода", "displayName_zh": "最大速度调整系数", "displayNameID": 233340, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "maxVelocityModifier", "published": 1, "stackable": 1, "unitID": 109 }, "307": { "attributeID": 307, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, scannerDurationBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "scannerDurationBonus", "published": 0, "stackable": 1 }, "308": { "attributeID": 308, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, scanspeedBonus", "displayName_de": "Scan-Geschwindigkeit-Bonus", "displayName_en-us": "Scan Speed Bonus", "displayName_es": "Bonificación de velocidad de escaneo", "displayName_fr": "Bonus de vitesse de balayage", "displayName_it": "Scan Speed Bonus", "displayName_ja": "スキャン速度ボーナス", "displayName_ko": "스캔 속도 보너스", "displayName_ru": "Бонус к скорости поиска", "displayName_zh": "扫描速度加成", "displayNameID": 232978, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanspeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "309": { "attributeID": 309, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Max Targeting Range", "displayName_de": "Maximaler Zielerfassungsreichweite-Bonus", "displayName_en-us": "Maximum Targeting Range Bonus", "displayName_es": "Bonificación de distancia-objetivo máxima", "displayName_fr": "Bonus de portée maximale du système de ciblage", "displayName_it": "Maximum Targeting Range Bonus", "displayName_ja": "最大ターゲット範囲ボーナス", "displayName_ko": "최대 타겟팅 거리 보너스", "displayName_ru": "Влияние на максимальную дальность захвата целей", "displayName_zh": "最大锁定范围加成", "displayNameID": 233330, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxTargetRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "310": { "attributeID": 310, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cpuNeedBonus", "displayName_de": "CPU-Bedarfsbonus", "displayName_en-us": "CPU Need Bonus", "displayName_es": "Bonificación de necesidad de la CPU", "displayName_fr": "Bonus de charge CPU", "displayName_it": "CPU Need Bonus", "displayName_ja": "CPU使用量ボーナス", "displayName_ko": "CPU 요구량 보너스", "displayName_ru": "Влияние на потребление мощности ЦПУ", "displayName_zh": "CPU需求加成", "displayNameID": 233052, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "311": { "attributeID": 311, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, maxTarget Bonus", "displayName_de": "Maximaler Zielerfassung-Bonus", "displayName_en-us": "Maximum Target Bonus", "displayName_es": "Bonificación de objetivos máximos", "displayName_fr": "Bonus de cibles maximum", "displayName_it": "Maximum Target Bonus", "displayName_ja": "最大ターゲット数ボーナス", "displayName_ko": "최대 타겟 보너스", "displayName_ru": "Влияние на количество целей", "displayName_zh": "锁定上限加成", "displayNameID": 233632, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxTargetBonus", "published": 1, "stackable": 1, "unitID": 139 }, "312": { "attributeID": 312, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, DurationBonus", "displayName_de": "Laufzeitbonus", "displayName_en-us": "Duration Bonus", "displayName_es": "Bonificación de duración", "displayName_fr": "Bonus de durée", "displayName_it": "Duration Bonus", "displayName_ja": "起動時間ボーナス", "displayName_ko": "지속시간 보너스", "displayName_ru": "Влияние на время цикла", "displayName_zh": "单次运转时间加成", "displayNameID": 233142, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationSkillBonus", "published": 1, "stackable": 1, "unitID": 121 }, "313": { "attributeID": 313, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, PowerOutputBonus", "displayName_de": "Energieleistung-Bonus", "displayName_en-us": "Power Output Bonus", "displayName_es": "Bonificación de potencia de salida", "displayName_fr": "Bonus de puissance énergétique", "displayName_it": "Power Output Bonus", "displayName_ja": "パワーグリッドボーナス", "displayName_ko": "전력 출력 보너스", "displayName_ru": "Влияние на мощность", "displayName_zh": "能量输出加成", "displayNameID": 233411, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "powerEngineeringOutputBonus", "published": 1, "stackable": 1, "unitID": 105 }, "314": { "attributeID": 314, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, CapRechargeBonus", "displayName_de": "Verringerung der Aufladezeit des Energiespeichers", "displayName_en-us": "Cap Recharge Time Reduction", "displayName_es": "Reducción del tiempo de carga del condensador", "displayName_fr": "Réduction du temps de recharge du capaciteur", "displayName_it": "Cap Recharge Time Reduction", "displayName_ja": "キャパシタリチャージ時間短縮", "displayName_ko": "Cap 재충전 시간 감소", "displayName_ru": "Уменьшение времени регенерации накопителя", "displayName_zh": "电容回充时间缩减", "displayNameID": 233525, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "capRechargeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "315": { "attributeID": 315, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, velocityBonus", "displayName_de": "Geschwindigkeitsmodifikator", "displayName_en-us": "Velocity Modifier", "displayName_es": "Modificador de velocidad", "displayName_fr": "Modificateur de vitesse", "displayName_it": "Velocity Modifier", "displayName_ja": "速度修正乗数", "displayName_ko": "속도 보정치", "displayName_ru": "Модификатор скорости", "displayName_zh": "速度调整", "displayNameID": 233426, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "velocityBonus", "published": 1, "stackable": 1, "unitID": 121 }, "316": { "attributeID": 316, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, corpMemberBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "corpMemberBonus", "published": 0, "stackable": 1 }, "317": { "attributeID": 317, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, capNeedBonus", "displayName_de": "Energiespeicher-Verbrauchsbonus", "displayName_en-us": "Capacitor Need Bonus", "displayName_es": "Bonif. de necesidad del condensador", "displayName_fr": "Bonus de besoins énergétiques du capaciteur", "displayName_it": "Capacitor Need Bonus", "displayName_ja": "キャパシタ消費ボーナス", "displayName_ko": "캐패시터 요구량 보너스", "displayName_ru": "Влияние на расход энергии", "displayName_zh": "电容需求加成", "displayNameID": 233012, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "capNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "318": { "attributeID": 318, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, speedFBonus", "displayName_de": "Geschwindigkeitsbonus", "displayName_en-us": "Speed Bonus", "displayName_es": "Bonificación de velocidad", "displayName_fr": "Bonus de vitesse", "displayName_it": "Speed Bonus", "displayName_ja": "速度ボーナス", "displayName_ko": "속도 보너스", "displayName_ru": "Влияние на скорость", "displayName_zh": "速度加成", "displayNameID": 233526, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "speedFBonus", "published": 1, "stackable": 1, "unitID": 105 }, "319": { "attributeID": 319, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, warpCapacitorNeedBonus", "displayName_de": "Warp-Energiespeicherbedarf-Bonus", "displayName_en-us": "Warp Capacitor Need Bonus", "displayName_es": "Bonif. de necesidad del condensador de warp", "displayName_fr": "Bonus des besoins énergétiques du capaciteur pour le warp", "displayName_it": "Warp Capacitor Need Bonus", "displayName_ja": "ワープキャパシタ消費ボーナス", "displayName_ko": "워프 캐패시터 요구량 보너스", "displayName_ru": "Влияние на потребление энергии варп-двигателем", "displayName_zh": "跃迁电容需求加成", "displayNameID": 233050, "displayWhenZero": 0, "highIsGood": 1, "name": "warpCapacitorNeedBonus", "published": 1, "stackable": 1, "unitID": 124 }, "320": { "attributeID": 320, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, powerUseBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "powerUseBonus", "published": 0, "stackable": 1 }, "321": { "attributeID": 321, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Stoßfeuerrate", "displayName_en-us": "Burst Rate Of Fire", "displayName_es": "Cadencia de tiro de ráfaga", "displayName_fr": "Cadence de tir des salves", "displayName_it": "Burst Rate Of Fire", "displayName_ja": "バースト発射間隔", "displayName_ko": "버스트 연사속도", "displayName_ru": "Цикл выстрела для очередей", "displayName_zh": "射击猝发速率", "displayNameID": 232999, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "burstSpeed", "published": 1, "stackable": 1, "unitID": 3 }, "322": { "attributeID": 322, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Geschwindigkeitsschub-Änderung", "displayName_en-us": "Burst Speed Mutator", "displayName_es": "Mutador de velocidad de ráfaga", "displayName_fr": "Modificateur de vitesse des salves", "displayName_it": "Burst Speed Mutator", "displayName_ja": "バースト速度変異値", "displayName_ko": "버스트 속도 변동 수치", "displayName_ru": "Модификатор скорости стрельбы", "displayName_zh": "猝发速率增变量", "displayNameID": 233000, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "burstSpeedMutator", "published": 1, "stackable": 1 }, "323": { "attributeID": 323, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, PowerNeedBonus", "displayName_de": "Energieverbrauch-Bonus", "displayName_en-us": "Power Need Bonus", "displayName_es": "Bonificación de necesidad de potencia", "displayName_fr": "Bonus d'utilisation d'énergie", "displayName_it": "Power Need Bonus", "displayName_ja": "必要エネルギー量ボーナス", "displayName_ko": "전력 요구량 보너스", "displayName_ru": "Влияние на требования к мощности реактора", "displayName_zh": "能量需求加成", "displayNameID": 233415, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "powerNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "324": { "attributeID": 324, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barrageDmgMutator", "published": 0, "stackable": 1 }, "325": { "attributeID": 325, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barrageFalloffMutator", "published": 0, "stackable": 1 }, "326": { "attributeID": 326, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barrageDmgMultiplier", "published": 0, "stackable": 1 }, "327": { "attributeID": 327, "categoryID": 4, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, hullHpBonus", "displayName_de": "HP-Bonus", "displayName_en-us": "Hitpoint Bonus", "displayName_es": "Bonificación de puntos de vida", "displayName_fr": "Bonus de PV", "displayName_it": "Hitpoint Bonus", "displayName_ja": "HPボーナス", "displayName_ko": "내구도 보너스", "displayName_ru": "Влияние на запас прочности", "displayName_zh": "HP加成", "displayNameID": 233511, "displayWhenZero": 0, "highIsGood": 1, "iconID": 67, "name": "hullHpBonus", "published": 1, "stackable": 1, "unitID": 105 }, "328": { "attributeID": 328, "categoryID": 9, "dataType": 4, "defaultValue": 75.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barrageFalloff", "published": 0, "stackable": 1 }, "329": { "attributeID": 329, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, GangRofBonus", "displayName_de": "Feuerraten-Bonus für Flotten", "displayName_en-us": "Fleet Rate of Fire Bonus", "displayName_es": "Bonificación de cadencia de tiro de la flota", "displayName_fr": "Bonus de cadence de tir de la flotte", "displayName_it": "Fleet Rate of Fire Bonus", "displayName_ja": "フリート発射間隔ボーナス", "displayName_ko": "함대 연사속도 보너스", "displayName_ru": "Влияние на цикл выстрела кораблей во флоте", "displayName_zh": "舰队射击速度加成", "displayNameID": 233211, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gangRofBonus", "published": 1, "stackable": 1 }, "330": { "attributeID": 330, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Duration of booster, after this duration the booster is destroyed", "displayName_de": "Booster-Dauer", "displayName_en-us": "Booster Duration", "displayName_es": "Duración del potenciador", "displayName_fr": "Durée du booster", "displayName_it": "Booster Duration", "displayName_ja": "ブースター持続時間", "displayName_ko": "부스터 지속시간", "displayName_ru": "Срок действия", "displayName_zh": "增效剂时效", "displayNameID": 233547, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "boosterDuration", "published": 1, "stackable": 1, "unitID": 101 }, "331": { "attributeID": 331, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Whether an item is an implant or not", "displayName_de": "Implantat Slot", "displayName_en-us": "Implant Slot", "displayName_es": "Ranura de implante", "displayName_fr": "Emplacement d'implant", "displayName_it": "Implant Slot", "displayName_ja": "インプラントスロット", "displayName_ko": "임플란트 슬롯", "displayName_ru": "Разъём для имплантов", "displayName_zh": "植入体槽位", "displayNameID": 233622, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2224, "name": "implantness", "published": 1, "stackable": 1, "unitID": 136 }, "332": { "attributeID": 332, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "burstDmg", "published": 0, "stackable": 1 }, "333": { "attributeID": 333, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "burstDmgMutator", "published": 0, "stackable": 1 }, "334": { "attributeID": 334, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, shipPowerBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipPowerBonus", "published": 0, "stackable": 1 }, "335": { "attributeID": 335, "categoryID": 3, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, armorHpBonus", "displayName_de": "HP-Bonus für Panzerung", "displayName_en-us": "Armor Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor Hitpoint Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 232964, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorHpBonus", "published": 1, "stackable": 1, "unitID": 105 }, "336": { "attributeID": 336, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, uniformityBonus", "displayName_de": "Einheitlichkeitsbonus", "displayName_en-us": "Uniformity Bonus", "displayName_es": "Bonificación de uniformidad", "displayName_fr": "Bonus d'uniformité", "displayName_it": "Uniformity Bonus", "displayName_ja": "ユニフォーミティボーナス", "displayName_ko": "일치 보너스", "displayName_ru": "Бонус цельности", "displayName_zh": "一致性加成", "displayNameID": 233147, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "uniformityBonus", "published": 1, "stackable": 1, "unitID": 104 }, "337": { "attributeID": 337, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, shieldCapacityBonus", "displayName_de": "Schildkapazitätsbonus", "displayName_en-us": "Shield Capacity Bonus", "displayName_es": "Bonificación de capacidad del escudo", "displayName_fr": "Bonus de capacité du bouclier", "displayName_it": "Shield Capacity Bonus", "displayName_ja": "シールド容量ボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾容量加成", "displayNameID": 232970, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldCapacityBonus", "published": 1, "stackable": 1, "unitID": 121 }, "338": { "attributeID": 338, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, rechargeratebonus", "displayName_de": "Aufladerate-Bonus", "displayName_en-us": "Recharge Rate Bonus", "displayName_es": "Bonificación de velocidad de carga", "displayName_fr": "Bonus de vitesse de recharge", "displayName_it": "Recharge Rate Bonus", "displayName_ja": "リチャージレートボーナス", "displayName_ko": "충전율 보너스", "displayName_ru": "Влияние на скорость регенерации", "displayName_zh": "回充速率加成", "displayNameID": 233578, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "rechargeratebonus", "published": 1, "stackable": 1, "unitID": 105 }, "349": { "attributeID": 349, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, falloffBonus", "displayName_de": "Reduktionsbonus", "displayName_en-us": "Falloff Bonus", "displayName_es": "Bonificación de alcance efectivo", "displayName_fr": "Bonus de distance de perte", "displayName_it": "Falloff Bonus", "displayName_ja": "精度低下ボーナス", "displayName_ko": "유효사거리 보너스", "displayName_ru": "Влияние на добавочную дальность", "displayName_zh": "失准范围加成", "displayNameID": 233180, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "falloffBonus", "published": 1, "stackable": 1, "unitID": 105 }, "350": { "attributeID": 350, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, skillTrainingTimeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "skillTrainingTimeBonus", "published": 0, "stackable": 1 }, "351": { "attributeID": 351, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, maxRangeBonus", "displayName_de": "Optimale Reichweite-Bonus", "displayName_en-us": "Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo", "displayName_fr": "Bonus de portée optimale", "displayName_it": "Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス", "displayName_ko": "최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность", "displayName_zh": "最佳射程加成", "displayNameID": 233317, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "352": { "attributeID": 352, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The maximum amount of drones that a character can control at a given time.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxActiveDrones", "published": 0, "stackable": 1 }, "353": { "attributeID": 353, "categoryID": 10, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, maxActiveDroneBonus", "displayName_de": "Maximal aktiver Drohnen-Bonus", "displayName_en-us": "Maximum Active Drone Bonus", "displayName_es": "Bonificación de drones activos máximos", "displayName_fr": "Bonus au nombre maximum de drones actifs", "displayName_it": "Maximum Active Drone Bonus", "displayName_ja": "最大稼動ドローン数ボーナス", "displayName_ko": "최대 활성화 드론 보너스", "displayName_ru": "Влияние на максимальное количество контролируемых дронов", "displayName_zh": "可控无人机数上限加成", "displayNameID": 233294, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxActiveDroneBonus", "published": 1, "stackable": 1 }, "354": { "attributeID": 354, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, maxDroneBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxDroneBonus", "published": 0, "stackable": 1 }, "355": { "attributeID": 355, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Percentage of pay from agent ", "displayName_de": "Verhandlungsmultiplikator", "displayName_en-us": "Negotiation Multiplier", "displayName_es": "Multiplicador de negociación", "displayName_fr": "Multiplicateur de négociation", "displayName_it": "Negotiation Multiplier", "displayName_ja": "交渉乗数", "displayName_ko": "협상 배수", "displayName_ru": "Влияние на переговоры", "displayName_zh": "谈判技巧倍增系数", "displayNameID": 233377, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "negotiationPercentage", "published": 1, "stackable": 1 }, "356": { "attributeID": 356, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Effective Standing towards Hostile NPC", "displayName_de": "Diplomatiebonus", "displayName_en-us": "Diplomacy Bonus", "displayName_es": "Bonificación de diplomacia", "displayName_fr": "Bonus de diplomatie", "displayName_it": "Diplomacy Bonus", "displayName_ja": "交渉術ボーナス", "displayName_ko": "외교 보너스", "displayName_ru": "Влияние дипломатии", "displayName_zh": "外交学加成", "displayNameID": 233079, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "diplomacyBonus", "published": 1, "stackable": 1 }, "359": { "attributeID": 359, "categoryID": 7, "dataType": 5, "defaultValue": 100.0, "description": "a percentage multiplyer to sec status recovery", "displayName_de": "Fast Talk-Prozentsatz", "displayName_en-us": "Fast Talk Percentage", "displayName_es": "Porcentaje de conversación rápida", "displayName_fr": "Pourcentage de persuasion", "displayName_it": "Fast Talk Percentage", "displayName_ja": "高速会話パーセンテージ", "displayName_ko": "화술 배율", "displayName_ru": "Процент от навыка «Отношения с представителями закона»", "displayName_zh": "高级沟通技巧增变系数", "displayNameID": 233184, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fastTalkPercentage", "published": 1, "stackable": 1 }, "360": { "attributeID": 360, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to standing towards Friendly npcs", "displayName_de": "Beziehungsbonus", "displayName_en-us": "Connections Bonus", "displayName_es": "Bonificación de conexiones", "displayName_fr": "Bonus de relations", "displayName_it": "Connections Bonus", "displayName_ja": "コネクションボーナス", "displayName_ko": "커넥션 보너스", "displayName_ru": "Влияние отношений", "displayName_zh": "关系加成", "displayNameID": 233032, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "connectionsBonus", "published": 1, "stackable": 1 }, "361": { "attributeID": 361, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "a bonus to standing towards npc with negativa security status", "displayName_de": "Kriminelle Verbindungen-Bonus", "displayName_en-us": "Criminal Connections Bonus", "displayName_es": "Bonificación de conexiones criminales", "displayName_fr": "Bonus de relations criminelles", "displayName_it": "Criminal Connections Bonus", "displayName_ja": "犯罪コネクションボーナス", "displayName_ko": "범죄 커넥션 보너스", "displayName_ru": "Влияние отношений с криминалитетом", "displayName_zh": "犯罪关系加成", "displayNameID": 233063, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "criminalConnectionsBonus", "published": 1, "stackable": 1 }, "362": { "attributeID": 362, "categoryID": 7, "dataType": 5, "defaultValue": 100.0, "description": "Bonus To standing gain towards non CONCORD npcs ", "displayName_de": "Sozial-Bonus", "displayName_en-us": "Social Bonus", "displayName_es": "Bonificación social", "displayName_fr": "Bonus social", "displayName_it": "Social Bonus", "displayName_ja": "ソーシャルボーナス", "displayName_ko": "사회 커넥션 보너스", "displayName_ru": "Влияние навыка «Развитие деловых отношений»", "displayName_zh": "社会学加成", "displayNameID": 233203, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "socialBonus", "published": 1, "stackable": 1, "unitID": 105 }, "363": { "attributeID": 363, "categoryID": 9, "dataType": 4, "defaultValue": 100.0, "description": "Production time multiplier when manufacturing amarr tech ", "displayName_de": "Amarr Tech", "displayName_en-us": "Amarr Tech", "displayName_es": "Tecnología amarriana", "displayName_fr": "Technologie amarr", "displayName_it": "Amarr Tech", "displayName_ja": "アマー技術", "displayName_ko": "아마르 기술", "displayName_ru": "Амаррская технология", "displayName_zh": "艾玛科技", "displayNameID": 232951, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "amarrTechTimePercent", "published": 1, "stackable": 1 }, "364": { "attributeID": 364, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Production time multiplier when manufacturing Minmatar tech ", "displayName_de": "Minmatar Tech", "displayName_en-us": "Minmatar Tech", "displayName_es": "Tecnología minmatariana", "displayName_fr": "Technologie minmatar", "displayName_it": "Minmatar Tech", "displayName_ja": "ミンマターテクノロジー", "displayName_ko": "민마타 기술", "displayName_ru": "Минматарская технология", "displayName_zh": "米玛塔尔科技", "displayNameID": 233355, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "minmatarTechTimePercent", "published": 1, "stackable": 1 }, "365": { "attributeID": 365, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Production time multiplier when manufacturing Gallente tech ", "displayName_de": "Gallente Tech", "displayName_en-us": "Gallente Tech", "displayName_es": "Tecnología gallente", "displayName_fr": "Technologie gallente", "displayName_it": "Gallente Tech", "displayName_ja": "ガレンテテック", "displayName_ko": "갈란테 기술", "displayName_ru": "Галлентская технология", "displayName_zh": "盖伦特科技", "displayNameID": 233209, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gallenteTechTimePercent", "published": 1, "stackable": 1 }, "366": { "attributeID": 366, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Production time multiplier when manufacturing caldari tech ", "displayName_de": "Caldari Tech", "displayName_en-us": "Caldari Tech", "displayName_es": "Tecnología caldari", "displayName_fr": "Technologie caldari", "displayName_it": "Caldari Tech", "displayName_ja": "カルダリテクノロジー", "displayName_ko": "칼다리 기술", "displayName_ru": "Калдарская технология", "displayName_zh": "加达里科技", "displayNameID": 233001, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "caldariTechTimePercent", "published": 1, "stackable": 1 }, "367": { "attributeID": 367, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Production time percentage", "displayName_de": "Produktionszeit in Prozent", "displayName_en-us": "Production Time Percentage", "displayName_es": "Porcentaje de tiempo de producción", "displayName_fr": "Pourcentage de temps de production", "displayName_it": "Production Time Percentage", "displayName_ja": "製造時間パーセント", "displayName_ko": "소요 시간 백분율", "displayName_ru": "Процент длительности производственных работ", "displayName_zh": "生产时间百分比", "displayNameID": 233387, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "productionTimePercent", "published": 1, "stackable": 1 }, "368": { "attributeID": 368, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Refining speed percentage", "displayName_de": "Veredelungszeit in Prozent", "displayName_en-us": "Refining Time Percentage", "displayName_es": "Porcentaje de tiempo de refinado", "displayName_fr": "Pourcentage de temps de raffinage", "displayName_it": "Refining Time Percentage", "displayName_ja": "精錬時間パーセント", "displayName_ko": "정제 시간 백분율", "displayName_ru": "Влияние на длительность переработки", "displayName_zh": "精炼时间百分比", "displayNameID": 233336, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningTimePercentage", "published": 1, "stackable": 1 }, "369": { "attributeID": 369, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Manufacturing cost multiplyer", "displayName_de": "Produktionskosten-Multiplikator", "displayName_en-us": "Manufacture Cost Multiplier", "displayName_es": "Multiplicador de coste de fabricación", "displayName_fr": "Multiplicateur de coût de production", "displayName_it": "Manufacture Cost Multiplier", "displayName_ja": "製造コスト乗数", "displayName_ko": "생산 비용 배수", "displayName_ru": "Влияние на стоимость производственных работ", "displayName_zh": "制造消耗倍增系数", "displayNameID": 233281, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "manufactureCostMultiplier", "published": 1, "stackable": 1 }, "370": { "attributeID": 370, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, amarrTechMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "amarrTechMutator", "published": 0, "stackable": 1 }, "371": { "attributeID": 371, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, caldariTechMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "caldariTechMutator", "published": 0, "stackable": 1 }, "372": { "attributeID": 372, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, gallenteTechMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gallenteTechMutator", "published": 0, "stackable": 1 }, "373": { "attributeID": 373, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, productionTimeMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "productionTimeMutator", "published": 0, "stackable": 1 }, "374": { "attributeID": 374, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, minmatarTechMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "minmatarTechMutator", "published": 0, "stackable": 1 }, "375": { "attributeID": 375, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, productionCostMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "productionCostMutator", "published": 0, "stackable": 1 }, "376": { "attributeID": 376, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Refining time Multiplier", "displayName_de": "Raffinierzeit-Multiplikator", "displayName_en-us": "Refining time Multiplier", "displayName_es": "Multiplicador de tiempo de refinado", "displayName_fr": "Multiplicateur de temps de raffinage", "displayName_it": "Refining time Multiplier", "displayName_ja": "精錬時間乗数", "displayName_ko": "정제 시간 배수", "displayName_ru": "Коэффициент времени переработки", "displayName_zh": "精炼时间倍增系数", "displayNameID": 233338, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningTimePercent", "published": 1, "stackable": 1 }, "377": { "attributeID": 377, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, refiningTimeMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningTimeMutator", "published": 0, "stackable": 1 }, "378": { "attributeID": 378, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Refining yield percentage", "displayName_de": "Raffinierertrag-Prozentsatz", "displayName_en-us": "Refining Yield percentage", "displayName_es": "Porcentaje de rendimiento de refinado", "displayName_fr": "Refining Yield percentage", "displayName_it": "Refining Yield percentage", "displayName_ja": "精錬による収穫量(%)", "displayName_ko": "정제 처리 백분율", "displayName_ru": "Коэффициент выработки", "displayName_zh": "精炼产量百分比", "displayNameID": 233335, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningYieldPercentage", "published": 1, "stackable": 1, "unitID": 105 }, "379": { "attributeID": 379, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, refiningYieldMutator", "displayName_de": "Raffinierertrag-Änderung", "displayName_en-us": "Refining Yield Mutator", "displayName_es": "Mutador de rendimiento de refinado", "displayName_fr": "Modificateur de rendement du raffinage", "displayName_it": "Refining Yield Mutator", "displayName_ja": "精錬量変異値", "displayName_ko": "정제량 변동 수치", "displayName_ru": "Модификатор выработки", "displayName_zh": "提炼产量增变系数", "displayNameID": 233250, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningYieldMutator", "published": 1, "stackable": 1, "unitID": 105 }, "380": { "attributeID": 380, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Max active factories that a player can operate ", "displayName_de": "Maximal aktive Fabriken", "displayName_en-us": "Maximum Active Factory", "displayName_es": "Máximo de fábrica activa", "displayName_fr": "Usine active maximum", "displayName_it": "Maximum Active Factory", "displayName_ja": "最大工場稼動数", "displayName_ko": "최대 공장 수", "displayName_ru": "Максимальное количество работающих заводов", "displayName_zh": "活跃工厂数上限", "displayNameID": 233297, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxActiveFactory", "published": 1, "stackable": 1 }, "383": { "attributeID": 383, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Max active factories", "displayName_de": "Maximal aktive Fabriken", "displayName_en-us": "Maximum Active Factories", "displayName_es": "Máximo de fábricas activas", "displayName_fr": "Usines actives maximum", "displayName_it": "Maximum Active Factories", "displayName_ja": "最大工場稼動数", "displayName_ko": "최대 공장 수", "displayName_ru": "Максимальное количество работающих заводов", "displayName_zh": "活跃工厂数上限", "displayNameID": 233296, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxActiveFactories", "published": 1, "stackable": 1 }, "384": { "attributeID": 384, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The max numbers of scientists that can work on CSO's research project.", "displayName_de": "Maximale Forschungsgruppengröße", "displayName_en-us": "Maximum Research Gang Size", "displayName_es": "Tamaño máximo de equipo de investigación", "displayName_fr": "Taille maximale du gang de recherche", "displayName_it": "Maximum Research Gang Size", "displayName_ja": "最大研究ギャングサイズ", "displayName_ko": "최대 연구 인원 수", "displayName_ru": "Максимальный размер исследовательской группы", "displayName_zh": "研究团队规模上限", "displayNameID": 233322, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxResearchGangSize", "published": 1, "stackable": 1 }, "385": { "attributeID": 385, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Research speed ", "displayName_de": "Produktionszeit-Forschungsgeschwindigkeit", "displayName_en-us": "Production time research speed", "displayName_es": "Velocidad de investigación de tiempo de producción", "displayName_fr": "Vitesse de recherche dans le domaine de la production", "displayName_it": "Production time research speed", "displayName_ja": "生産時間研究速度", "displayName_ko": "소요시간 연구 속도", "displayName_ru": "Скорость ведения проектов повышения скорости производства", "displayName_zh": "生产时间研究速度", "displayNameID": 233286, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "manufacturingTimeResearchSpeed", "published": 1, "stackable": 1 }, "386": { "attributeID": 386, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Research cost percent", "displayName_de": "Forschungskosten in Prozent", "displayName_en-us": "Research Cost Percentage", "displayName_es": "Porcentaje de coste de investigación", "displayName_fr": "Pourcentage du coût de recherche", "displayName_it": "Research Cost Percentage", "displayName_ja": "研究コストパーセント", "displayName_ko": "연구 비용 백분율", "displayName_ru": "Влияние на стоимость научно-исследовательских работ", "displayName_zh": "研究花费百分比", "displayNameID": 233295, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "researchCostPercent", "published": 1, "stackable": 1 }, "387": { "attributeID": 387, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Blueprint copying speed", "displayName_de": "Blueprint-Kopiergeschwindigkeit", "displayName_en-us": "Blueprint copying speed", "displayName_es": "Velocidad de copia de plano", "displayName_fr": "Vitesse de copie du plan de construction", "displayName_it": "Blueprint copying speed", "displayName_ja": "ブループリントのコピー時間", "displayName_ko": "블루프린트 복제 속도", "displayName_ru": "Скорость копирования чертежей", "displayName_zh": "蓝图复制速度", "displayNameID": 233045, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "copySpeedPercent", "published": 1, "stackable": 1 }, "388": { "attributeID": 388, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "The % of Frigate assembly cost a player has to pay to assemble a frigate", "displayName_de": "Fregatten-Konstruktionskosten", "displayName_en-us": "Frigate construction cost", "displayName_es": "Coste de construcción de fragatas", "displayName_fr": "Coût de construction de frégate", "displayName_it": "Frigate construction cost", "displayName_ja": "フリゲート建造コスト", "displayName_ko": "프리깃 건설 비용", "displayName_ru": "Стоимость строительства фрегата", "displayName_zh": "护卫舰建造花费", "displayNameID": 233206, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "frigateConstructionCost", "published": 1, "stackable": 1 }, "389": { "attributeID": 389, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The % of cruiser assembly cost a player has to pay to assemble a cruiser", "displayName_de": "Kreuzer-Konstruktionskosten", "displayName_en-us": "Cruiser construction cost", "displayName_es": "Coste de construcción de cruceros", "displayName_fr": "Coût de construction de croiseur", "displayName_it": "Cruiser construction cost", "displayName_ja": "巡洋艦建造コスト", "displayName_ko": "크루저 건설 비용", "displayName_ru": "Стоимость строительства крейсера", "displayName_zh": "巡洋舰建造花费", "displayNameID": 233065, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cruiserConstructionCost", "published": 1, "stackable": 1 }, "392": { "attributeID": 392, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The % of industrial assembly cost a player has to pay to assemble a industrial", "displayName_de": "Industrial-Konstruktionskosten", "displayName_en-us": "Industrial construction cost", "displayName_es": "Coste de construcción industrial", "displayName_fr": "Coût de construction industrielle", "displayName_it": "Industrial construction cost", "displayName_ja": "輸送艦建造コスト", "displayName_ko": "산업 건설 비용", "displayName_ru": "Стоимость производства грузового корабля", "displayName_zh": "工业舰建造花费", "displayNameID": 233260, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "industrialConstructionCost", "published": 1, "stackable": 1 }, "393": { "attributeID": 393, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The % of battleship assembly cost a player has to pay to assemble a battleship", "displayName_de": "Schlachtschiff-Konstruktionskosten", "displayName_en-us": "Battleship construction cost", "displayName_es": "Coste de construcción de acorazados", "displayName_fr": "Coût de construction de cuirassé", "displayName_it": "Battleship construction cost", "displayName_ja": "戦艦建造コスト", "displayName_ko": "배틀쉽 건설 비용", "displayName_ru": "Стоимость строительства линкора", "displayName_zh": "战列舰建造花费", "displayNameID": 232976, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "battleshipConstructionCost", "published": 1, "stackable": 1 }, "394": { "attributeID": 394, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Titan construction time", "displayName_de": "Titan-Konstruktionszeit", "displayName_en-us": "Titan construction time", "displayName_es": "Tiempo de construcción de titanes", "displayName_fr": "Temps de construction de titan", "displayName_it": "Titan construction time", "displayName_ja": "タイタン建造時間", "displayName_ko": "타이탄 건설 시간", "displayName_ru": "Время строительства титана", "displayName_zh": "泰坦建造时间", "displayNameID": 233168, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "titanConstructionTime", "published": 1, "stackable": 1 }, "395": { "attributeID": 395, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Station construction time", "displayName_de": "Stationsbauzeit", "displayName_en-us": "Station construction time", "displayName_es": "Tiempo de construcción de estaciones", "displayName_fr": "Temps de construction de station", "displayName_it": "Station construction time", "displayName_ja": "ステーション建造時間", "displayName_ko": "정거장 건설 시간", "displayName_ru": "Время строительства станции", "displayName_zh": "空间站建造时间", "displayNameID": 233190, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "stationConstructionTime", "published": 1, "stackable": 1 }, "396": { "attributeID": 396, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Repair cost percent", "displayName_de": "Reparaturkosten in Prozent", "displayName_en-us": "Repair Cost Percentage", "displayName_es": "Porcentaje de coste de reparación", "displayName_fr": "Pourcentage du coût de réparation", "displayName_it": "Repair Cost Percentage", "displayName_ja": "リペアコストパーセント", "displayName_ko": "수리 비용 백분율", "displayName_ru": "Влияние на стоимость ремонта", "displayName_zh": "维修消耗百分比", "displayNameID": 233327, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "repairCostPercent", "published": 1, "stackable": 1 }, "397": { "attributeID": 397, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Chance of making a research breakthrough when researching a higher tech level of a blueprint", "displayName_de": "Durchbruch in Prozent", "displayName_en-us": "Breakthrough Percentage", "displayName_es": "Porcentaje de avances", "displayName_fr": "Pourcentage d'avancée", "displayName_it": "Breakthrough Percentage", "displayName_ja": "ブレークスルーパーセント", "displayName_ko": "연구 돌파 확률", "displayName_ru": "Влияние на шанс прорыва", "displayName_zh": "成就突破比例", "displayNameID": 233291, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reverseEngineeringChance", "published": 1, "stackable": 1 }, "398": { "attributeID": 398, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "speed bonus when researching blueprint mineral need", "displayName_de": "Mineralbedarfsforschungsgeschwindigkeit", "displayName_en-us": "Mineral need research speed", "displayName_es": "Velocidad de investigación de requisitos de minerales", "displayName_fr": "Vitesse de recherche de besoin en minerai", "displayName_it": "Mineral need research speed", "displayName_ja": "無機物必要量研究速度", "displayName_ko": "미네랄 요구량 연구 속도", "displayName_ru": "Скорость ведения проектов повышения материалоэффективности производства", "displayName_zh": "矿物需求研究速度", "displayNameID": 233348, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "mineralNeedResearchSpeed", "published": 1, "stackable": 1 }, "399": { "attributeID": 399, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Chance of upgrading a module to next tech level ", "displayName_de": "Chance auf Prototypentwicklung", "displayName_en-us": "Prototyping Chance", "displayName_es": "Probabilidad de prototipo", "displayName_fr": "Chance de prototype", "displayName_it": "Prototyping Chance", "displayName_ja": "プロトタイプチャンス", "displayName_ko": "업그레이드 확률", "displayName_ru": "Вероятность создания образца", "displayName_zh": "原型几率", "displayNameID": 233134, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "duplicatingChance", "published": 1, "stackable": 1, "unitID": 105 }, "400": { "attributeID": 400, "categoryID": 9, "dataType": 4, "defaultValue": 100.0, "description": "Missiles velocity multiplier", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileStandardVelocityPecent", "published": 0, "stackable": 1 }, "401": { "attributeID": 401, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Damage Bonus for Cruise Missiles", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cruiseMissileVelocityPercent", "published": 0, "stackable": 1 }, "402": { "attributeID": 402, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Heavy missile speed percent", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "heavyMissileSpeedPercent", "published": 0, "stackable": 1 }, "403": { "attributeID": 403, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Rocket Dmg Percent", "displayName_de": "Raketenschaden in Prozent", "displayName_en-us": "Rocket Damage Percentage", "displayName_es": "Porcentaje de daños de cohetes", "displayName_fr": "Pourcentage de dégâts causés par les roquettes", "displayName_it": "Rocket Damage Percentage", "displayName_ja": "ロケットダメージパーセント", "displayName_ko": "로켓 피해 백분율", "displayName_ru": "Процент урона лёгких штурмовых ракет", "displayName_zh": "火箭伤害百分比", "displayNameID": 233285, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "rocketDmgPercent", "published": 1, "stackable": 1, "unitID": 105 }, "404": { "attributeID": 404, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Torpedo velocity percent", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "torpedoVelocityPercent", "published": 0, "stackable": 1 }, "405": { "attributeID": 405, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Defender velocity percent", "displayName_de": "Prozent der Abfangraketengeschwindigkeit", "displayName_en-us": "Defender Velocity Percentage", "displayName_es": "Porcentaje de velocidad del defensor", "displayName_fr": "Pourcentage de vitesse du défenseur", "displayName_it": "Defender Velocity Percentage", "displayName_ja": "ディフェンダー速度パーセント", "displayName_ko": "디펜더 속도 %", "displayName_ru": "Процент скорости противоракет", "displayName_zh": "反弹道导弹速度百分比", "displayNameID": 233078, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "defenderVelocityPercent", "published": 1, "stackable": 1, "unitID": 105 }, "406": { "attributeID": 406, "categoryID": 9, "dataType": 5, "defaultValue": 100.0, "description": "Missile FOF velocity percent", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileFOFVelocityPercent", "published": 0, "stackable": 1 }, "407": { "attributeID": 407, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Max research gang size bonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "researchGangSizeBonus", "published": 0, "stackable": 1 }, "408": { "attributeID": 408, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, battleshipConstructionTimeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "battleshipConstructionTimeBonus", "published": 0, "stackable": 1 }, "409": { "attributeID": 409, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cruiserConstructionTimeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cruiserConstructionTimeBonus", "published": 0, "stackable": 1 }, "410": { "attributeID": 410, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, frigateConstructionTimeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "frigateConstructionTimeBonus", "published": 0, "stackable": 1 }, "411": { "attributeID": 411, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, industrialConstructionTimeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "industrialConstructionTimeBonus", "published": 0, "stackable": 1 }, "412": { "attributeID": 412, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, connectionBonusMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "connectionBonusMutator", "published": 0, "stackable": 1 }, "413": { "attributeID": 413, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, criminalConnectionsMutator", "displayName_de": "Veränderung krimineller Verbindungen", "displayName_en-us": "Criminal Connections Mutator", "displayName_es": "Mutador de conexiones criminales", "displayName_fr": "Modificateur de relations criminelles", "displayName_it": "Criminal Connections Mutator", "displayName_ja": "犯罪コネクション変異値", "displayName_ko": "범죄 커넥션 변동 수치", "displayName_ru": "Модификатор отношений с криминалитетом", "displayName_zh": "犯罪关系增变量", "displayNameID": 233064, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "criminalConnectionsMutator", "published": 1, "stackable": 1 }, "414": { "attributeID": 414, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, diplomacyMutator", "displayName_de": "Diplomatie-Änderung", "displayName_en-us": "Diplomacy Mutator", "displayName_es": "Mutador de diplomacia", "displayName_fr": "Modificateur de diplomatie", "displayName_it": "Diplomacy Mutator", "displayName_ja": "交渉術変異値", "displayName_ko": "외교 변동 수치", "displayName_ru": "Модификатор дипломатии", "displayName_zh": "外交学增变系数", "displayNameID": 233080, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "diplomacyMutator", "published": 1, "stackable": 1 }, "415": { "attributeID": 415, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, fastTalkMutator", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fastTalkMutator", "published": 0, "stackable": 1 }, "416": { "attributeID": 416, "categoryID": 17, "dataType": 4, "defaultValue": 500.0, "description": "The distance at which the entity orbits, follows.. and more.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityFlyRange", "published": 0, "stackable": 1 }, "417": { "attributeID": 417, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Max non race corporationMembers", "displayName_de": "Maximale Corporation-Mitglieder anderer Völker", "displayName_en-us": "Maximum Non-Race Corporation Members", "displayName_es": "Máximo de miembros de la corporación sin raza", "displayName_fr": "Membres de race différente maximum dans la corporation", "displayName_it": "Maximum Non-Race Corporation Members", "displayName_ja": "最大非種族コーポレーションメンバー", "displayName_ko": "코퍼레이션 회원 최대수", "displayName_ru": "Максимальное число пилотов корпорации, имеющих гражданство иной сверхдержавы", "displayName_zh": "非同族军团成员上限", "displayNameID": 233311, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxNonRaceCorporationMembers", "published": 1, "stackable": 1 }, "418": { "attributeID": 418, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, nonRaceCorporationMembersBonus", "displayName_de": "Bonus auf Corporation-Mitglieder anderer Völker", "displayName_en-us": "Non-Race Corporation Members Bonus", "displayName_es": "Bonificación de miembros de la corporación sin raza", "displayName_fr": "Bonus de membres de race différente dans la corporation", "displayName_it": "Non-Race Corporation Members Bonus", "displayName_ja": "非種族コーポレーションメンバーボーナス", "displayName_ko": "코퍼레이션 회원 보너스", "displayName_ru": "Влияние на число членов корпорации, имеющих гражданство иной сверхдержавы", "displayName_zh": "非同族军团成员加成", "displayNameID": 233378, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "nonRaceCorporationMembersBonus", "published": 1, "stackable": 1, "unitID": 105 }, "419": { "attributeID": 419, "categoryID": 7, "dataType": 4, "defaultValue": 10000.0, "description": "Amount of skill points saved by clone", "displayName_de": "Gesicherte Skill-Punkte", "displayName_en-us": "Skill Points Saved", "displayName_es": "Puntos de habilidad guardados", "displayName_fr": "Points de compétences sauvés", "displayName_it": "Skill Points Saved", "displayName_ja": "保存スキルポイント", "displayName_ko": "보유 스킬 포인트", "displayName_ru": "Сохранямые СП", "displayName_zh": "保留技能点数", "displayNameID": 233207, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "skillPointsSaved", "published": 1, "stackable": 1 }, "420": { "attributeID": 420, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, trackingBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "trackingBonus", "published": 0, "stackable": 1, "unitID": 121 }, "421": { "attributeID": 421, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, shieldRechargerateBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shieldRechargerateBonus", "published": 0, "stackable": 1 }, "422": { "attributeID": 422, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "Authoring has been moved to FSD\r\nTech level of an item", "displayName_de": "Tech-Level", "displayName_en-us": "Tech Level", "displayName_es": "Nivel de tecnología", "displayName_fr": "Niveau technologique", "displayName_it": "Tech Level", "displayName_ja": "テックレベル", "displayName_ko": "테크 레벨", "displayName_ru": "Техуровень", "displayName_zh": "科技等级", "displayNameID": 233636, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1446, "name": "techLevel", "published": 1, "stackable": 1, "unitID": 140 }, "423": { "attributeID": 423, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityDroneCount", "published": 0, "stackable": 1 }, "424": { "attributeID": 424, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cpu OutputBonus", "displayName_de": "CPU Leistungsbonus", "displayName_en-us": "CPU Output Bonus", "displayName_es": "Bonificación de rendimiento de la CPU", "displayName_fr": "Bonus de puissance du CPU", "displayName_it": "CPU Output Bonus", "displayName_ja": "CPU出力ボーナス", "displayName_ko": "CPU 출력 보너스", "displayName_ru": "Повышение мощности ЦПУ", "displayName_zh": "CPU输出加成", "displayNameID": 233056, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuOutputBonus2", "published": 1, "stackable": 1, "unitID": 105 }, "425": { "attributeID": 425, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cpuOutputBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuOutputBonus", "published": 0, "stackable": 1 }, "426": { "attributeID": 426, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Drohnenschaden in Prozent", "displayName_en-us": "Drone Damage Percentage", "displayName_es": "Porcentaje de daños de drones", "displayName_fr": "Pourcentage de dégâts causés par les drones", "displayName_it": "Drone Damage Percentage", "displayName_ja": "ドローンダメージパーセント", "displayName_ko": "드론 피해 백분율", "displayName_ru": "Процент урона дронов", "displayName_zh": "无人机伤害百分比", "displayNameID": 233228, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "heavyDroneDamagePercent", "published": 1, "stackable": 1, "unitID": 109 }, "427": { "attributeID": 427, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, heavyDroneDamageBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "heavyDroneDamageBonus", "published": 0, "stackable": 1 }, "428": { "attributeID": 428, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Mining drone speed percent", "displayName_de": "Geschwindigkeitsbonus von Bergbaudrohnen", "displayName_en-us": "Mining Drone Speed Bonus", "displayName_es": "Bonificación de velocidad de drones mineros", "displayName_fr": "Bonus de vitesse des drones d'extraction", "displayName_it": "Mining Drone Speed Bonus", "displayName_ja": "採掘ドローン速度ボーナス", "displayName_ko": "채굴 드론 속도 보너스", "displayName_ru": "Влияние на скорость буровых дронов", "displayName_zh": "采矿无人机速度加成", "displayNameID": 233353, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "miningDroneAmountPercent", "published": 1, "stackable": 1 }, "429": { "attributeID": 429, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, miningDroneSpeedBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "miningDroneSpeedBonus", "published": 0, "stackable": 1 }, "430": { "attributeID": 430, "categoryID": 9, "dataType": 4, "defaultValue": 100.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scoutDroneVelocityPercent", "published": 0, "stackable": 1 }, "431": { "attributeID": 431, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, scoutDroneVelocityBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scoutDroneVelocityBonus", "published": 0, "stackable": 1 }, "432": { "attributeID": 432, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, defenderVelocityBonus", "displayName_de": "Drohnengeschwindigkeitsbonus", "displayName_en-us": "Drone Velocity Bonus", "displayName_es": "Bonificación de velocidad de drones", "displayName_fr": "Bonus de vitesse des drones", "displayName_it": "Drone Velocity Bonus", "displayName_ja": "ドローン速度ボーナス", "displayName_ko": "드론 속도 보너스", "displayName_ru": "Влияние на скорость дронов", "displayName_zh": "无人机速度加成", "displayNameID": 233077, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "defenderVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "433": { "attributeID": 433, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, heavyMissileDamageBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "heavyMissileDamageBonus", "published": 0, "stackable": 1 }, "434": { "attributeID": 434, "categoryID": 51, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, miningAmountBonus", "displayName_de": "Bergbauertrag-Bonus", "displayName_en-us": "Mining Amount Bonus", "displayName_es": "Bonificación por cantidad extraída", "displayName_fr": "Bonus de minerai extrait", "displayName_it": "Mining Amount Bonus", "displayName_ja": "採掘量ボーナス", "displayName_ko": "채굴 총량 보너스", "displayName_ru": "Влияние на объём добычи", "displayName_zh": "开采量加成", "displayNameID": 233350, "displayWhenZero": 0, "highIsGood": 1, "name": "miningAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "435": { "attributeID": 435, "categoryID": 7, "dataType": 4, "defaultValue": 3.0, "description": "", "displayName_de": "Max. aktive Kommando-Relais", "displayName_en-us": "Maximum Active Command Relays", "displayName_es": "Máx. de relés de mando activos", "displayName_fr": "Relais de commandement actifs max.", "displayName_it": "Maximum Active Command Relays", "displayName_ja": "コマンドリレー最大稼働数", "displayName_ko": "최대 지휘통신소 수", "displayName_ru": "Максимальное количество активных командных ретрансляторов", "displayName_zh": "最大活动指挥中继量", "displayNameID": 233628, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxGangModules", "published": 1, "stackable": 1, "unitID": 139 }, "436": { "attributeID": 436, "categoryID": 9, "dataType": 4, "defaultValue": 100.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "standingIncreasePercent", "published": 0, "stackable": 1, "unitID": 105 }, "437": { "attributeID": 437, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, NegotiationBonus", "displayName_de": "Verhandlungsbonus", "displayName_en-us": "Negotiation Bonus", "displayName_es": "Bonificación de negociación", "displayName_fr": "Bonus de négociation", "displayName_it": "Negotiation Bonus", "displayName_ja": "交渉ボーナス", "displayName_ko": "협상 보너스", "displayName_ru": "Влияние навыка", "displayName_zh": "谈判技巧加成", "displayNameID": 233584, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "negotiationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "438": { "attributeID": 438, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, socialMutator", "displayName_de": "Sozial-Änderung", "displayName_en-us": "Social Mutator", "displayName_es": "Mutador social", "displayName_fr": "Modificateur social", "displayName_it": "Social Mutator", "displayName_ja": "ソーシャル変異値", "displayName_ko": "사회 커넥션 변동 수치", "displayName_ru": "Модификатор деловых отношений", "displayName_zh": "社会学增变系数", "displayNameID": 233202, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "socialMutator", "published": 0, "stackable": 1, "unitID": 105 }, "439": { "attributeID": 439, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, targetingSpeedBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "targetingSpeedBonus", "published": 0, "stackable": 1 }, "440": { "attributeID": 440, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, manufacturingTimeBonus", "displayName_de": "Produktionszeitbonus", "displayName_en-us": "Manufacturing Time Bonus", "displayName_es": "Bonificación de tiempo de fabricación", "displayName_fr": "Bonus de temps de production", "displayName_it": "Manufacturing Time Bonus", "displayName_ja": "製造時間ボーナス", "displayName_ko": "제조 시간 보너스", "displayName_ru": "Влияние на скорость производства", "displayName_zh": "制造时间加成", "displayNameID": 233284, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "manufacturingTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "441": { "attributeID": 441, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, TurretSpeeBonus", "displayName_de": "Feuerraten-Bonus", "displayName_en-us": "Rate of Fire Bonus", "displayName_es": "Bonificación de cadencia de tiro", "displayName_fr": "Bonus de cadence de tir", "displayName_it": "Rate of Fire Bonus", "displayName_ja": "発射間隔ボーナス", "displayName_ko": "연사속도 보너스", "displayName_ru": "Влияние на цикл выстрела", "displayName_zh": "射击速度加成", "displayNameID": 233156, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "turretSpeeBonus", "published": 1, "stackable": 1, "unitID": 121 }, "442": { "attributeID": 442, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "skill discount when selling to npc corps", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barterDiscount", "published": 0, "stackable": 1 }, "443": { "attributeID": 443, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "price bonus when selling to npc corps\r\n", "displayName_de": "Handelsprämie", "displayName_en-us": "Trade premium", "displayName_es": "Comercio prémium", "displayName_fr": "Commission sur transaction", "displayName_it": "Trade premium", "displayName_ja": "トレードプレミアム", "displayName_ko": "거래 보너스", "displayName_ru": "Бонус к торговле", "displayName_zh": "交换奖品", "displayNameID": 233161, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "tradePremium", "published": 1, "stackable": 1 }, "444": { "attributeID": 444, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Chance of being caught selling contraband on market. ", "displayName_de": "Chance auf erfolgreiches Schmuggeln", "displayName_en-us": "Contraband fencing chance", "displayName_es": "Probabilidad de tráfico de contrabando", "displayName_fr": "Chance de passage en contrebande", "displayName_it": "Contraband fencing chance", "displayName_ja": "密輸品探知回避率", "displayName_ko": "밀수품 판매 적발 확률", "displayName_ru": "Шанс провезти контрабанду", "displayName_zh": "违禁物侦获几率", "displayNameID": 233036, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "contrabandFencingChance", "published": 1, "stackable": 1, "unitID": 105 }, "445": { "attributeID": 445, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Chance of being caught Transporting contraband. ", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "smugglingChance", "published": 0, "stackable": 1 }, "446": { "attributeID": 446, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, tradePremiumBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "tradePremiumBonus", "published": 0, "stackable": 1 }, "447": { "attributeID": 447, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, smugglingChanceBonus", "displayName_de": "Schmuggelchance-Bonus", "displayName_en-us": "Smuggling Chance Bonus", "displayName_es": "Bonificación de probabilidad de contrabando", "displayName_fr": "Bonus de chance de contrebande", "displayName_it": "Smuggling Chance Bonus", "displayName_ja": "密輸成功率ボーナス", "displayName_ko": "밀수확률 보너스", "displayName_ru": "Влияние на шанс успешного провоза контрабанды", "displayName_zh": "非法贩售几率加成", "displayNameID": 233204, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1196, "name": "smugglingChanceBonus", "published": 0, "stackable": 1, "unitID": 105 }, "448": { "attributeID": 448, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, fencingChanceBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fencingChanceBonus", "published": 0, "stackable": 1 }, "449": { "attributeID": 449, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, BarterDiscountBonus", "displayName_de": "Nachlassbonus für Tauschhandel", "displayName_en-us": "Barter Discount Bonus", "displayName_es": "Bonificación de descuento de trueques", "displayName_fr": "Bonus de réduction du troc", "displayName_it": "Barter Discount Bonus", "displayName_ja": "バーター割引ボーナス", "displayName_ko": "거래 할인 보너스", "displayName_ru": "Скидка при обмене", "displayName_zh": "交易折扣加成", "displayNameID": 232973, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "barterDiscountBonus", "published": 1, "stackable": 1 }, "450": { "attributeID": 450, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, manufacturingSlotBonus", "displayName_de": "Produktionsslotbonus", "displayName_en-us": "Manufacturing Slot Bonus", "displayName_es": "Bonificación de ranura de fabricación", "displayName_fr": "Bonus de créneau de production", "displayName_it": "Manufacturing Slot Bonus", "displayName_ja": "製造スロットボーナス", "displayName_ko": "제조 슬롯 보너스", "displayName_ru": "Влияние на количество производственных линий", "displayName_zh": "制造槽位加成", "displayNameID": 233627, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "manufacturingSlotBonus", "published": 1, "stackable": 1, "unitID": 139 }, "451": { "attributeID": 451, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, manufactureCostBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "manufactureCostBonus", "published": 0, "stackable": 1, "unitID": 105 }, "452": { "attributeID": 452, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, CopySpeedBonus", "displayName_de": "Kopiergeschwindigkeitsbonus", "displayName_en-us": "Copy Speed Bonus", "displayName_es": "Bonificación de velocidad al copiar", "displayName_fr": "Bonus de vitesse de copie", "displayName_it": "Copy Speed Bonus", "displayName_ja": "コピー速度ボーナス", "displayName_ko": "복제 속도 보너스", "displayName_ru": "Снижение расхода времени на копирование", "displayName_zh": "复制速度加成", "displayNameID": 233044, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "copySpeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "453": { "attributeID": 453, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, blueprintmanufactureTimeBonus", "displayName_de": "Blueprint-Produktionszeitbonus", "displayName_en-us": "Blueprint Manufacture Time Bonus", "displayName_es": "Bonificación de tiempo de fabricación de planos", "displayName_fr": "Bonus de temps de fabrication de plan de construction", "displayName_it": "Blueprint Manufacture Time Bonus", "displayName_ja": "ブループリント製造時間ボーナス", "displayName_ko": "블루프린트 제작 시간 보너스", "displayName_ru": "Влияние на время производства по чертежу", "displayName_zh": "蓝图制造时间加成", "displayNameID": 232980, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "blueprintmanufactureTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "454": { "attributeID": 454, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "mutaton", "published": 0, "stackable": 1 }, "455": { "attributeID": 455, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, learningBonus", "displayName_de": "Bildungsbonus", "displayName_en-us": "Learning Bonus", "displayName_es": "Bonificación de aprendizaje", "displayName_fr": "Bonus de formation", "displayName_it": "Learning Bonus", "displayName_ja": "学習ボーナス", "displayName_ko": "학습 보너스", "displayName_ru": "Влияние навыков группы «Обучение»", "displayName_zh": "能力学加成", "displayNameID": 233278, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "learningBonus", "published": 1, "stackable": 1, "unitID": 105 }, "456": { "attributeID": 456, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityEquipmentMin", "published": 0, "stackable": 1 }, "457": { "attributeID": 457, "categoryID": 19, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityEquipmentMax", "published": 0, "stackable": 1 }, "458": { "attributeID": 458, "categoryID": 10, "dataType": 4, "defaultValue": 20000.0, "description": "", "displayName_de": "Maximale Kontrollreichweite für Drohnen", "displayName_en-us": "Maximum Drone Control Distance", "displayName_es": "Distancia de control máx. de drones", "displayName_fr": "Distance maximale de contrôle des drones", "displayName_it": "Maximum Drone Control Distance", "displayName_ja": "ドローン制御最大距離", "displayName_ko": "최대 드론 통제 거리", "displayName_ru": "Максимальная дистанция управления дронами", "displayName_zh": "无人机最大控制距离", "displayNameID": 233109, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneControlDistance", "published": 1, "stackable": 1, "unitID": 1 }, "459": { "attributeID": 459, "categoryID": 10, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, droneRangeBonus", "displayName_de": "Drohnenkontrollreichweite-Bonus", "displayName_en-us": "Drone Control Range Bonus", "displayName_es": "Bonificación de alcance de control de drones", "displayName_fr": "Bonus de portée de contrôle des drones", "displayName_it": "Drone Control Range Bonus", "displayName_ja": "ドローン制御範囲ボーナス", "displayName_ko": "드론 통제 사거리 보너스", "displayName_ru": "Влияние на дальность управления дронами", "displayName_zh": "无人机控制范围加成", "displayNameID": 233115, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneRangeBonus", "published": 1, "stackable": 1, "unitID": 1 }, "460": { "attributeID": 460, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für spezielle Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 233239, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMF", "published": 0, "stackable": 1, "unitID": 105 }, "461": { "attributeID": 461, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, specialAbilityBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "specialAbilityBonus", "published": 0, "stackable": 1 }, "462": { "attributeID": 462, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGF", "published": 0, "stackable": 1 }, "463": { "attributeID": 463, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCF", "published": 0, "stackable": 1 }, "464": { "attributeID": 464, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAF", "published": 0, "stackable": 1 }, "465": { "attributeID": 465, "categoryID": 19, "dataType": 4, "defaultValue": 1.0, "description": "The maximum drops of same group (example: entity can only drop 1 of group: energy laser)", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityEquipmentGroupMax", "published": 0, "stackable": 1 }, "466": { "attributeID": 466, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "The chance of an entity attacking the same person as its group members. Scales delay in joining in on fights too.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityReactionFactor", "published": 0, "stackable": 1 }, "467": { "attributeID": 467, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "", "displayName_de": "Maximal aktive Labore", "displayName_en-us": "Maximum Active Laboratories", "displayName_es": "Máximo de laboratorios activos", "displayName_fr": "Laboratoires actifs maximum", "displayName_it": "Maximum Active Laboratories", "displayName_ja": "最大研究所稼動数", "displayName_ko": "최대 연구실 수", "displayName_ru": "Максимальное количество работающих лабораторий", "displayName_zh": "活跃实验室数上限", "displayNameID": 233307, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxLaborotorySlots", "published": 1, "stackable": 1 }, "468": { "attributeID": 468, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, mineralNeedResearchBonus", "displayName_de": "Mineralbedarfsforschung-Bonus", "displayName_en-us": "Mineral Need Research Bonus", "displayName_es": "Bonificación de investigación de requisitos de minerales", "displayName_fr": "Bonus de recherche du besoin de minerai", "displayName_it": "Mineral Need Research Bonus", "displayName_ja": "無機物必要量研究ボーナス", "displayName_ko": "미네랄 요구량 연구 보너스", "displayName_ru": "Влияние на скорость ведения проектов повышения материалоэффективности производства", "displayName_zh": "矿物需求研究加成", "displayNameID": 233347, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "mineralNeedResearchBonus", "published": 1, "stackable": 1, "unitID": 105 }, "469": { "attributeID": 469, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityBluePrintDropChance", "published": 0, "stackable": 1 }, "470": { "attributeID": 470, "categoryID": 9, "dataType": 4, "defaultValue": 600000.0, "description": "The number of milliseconds before the container replenishes the loot inside itself. There is a constant that will be automatically override this value if set to anything lower than 60 seconds.", "displayWhenZero": 0, "highIsGood": 1, "name": "lootRespawnTime", "published": 0, "stackable": 1, "unitID": 101 }, "471": { "attributeID": 471, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, laboratorySlotsBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "laboratorySlotsBonus", "published": 0, "stackable": 1 }, "472": { "attributeID": 472, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The type of station this platform can be used to build.", "displayWhenZero": 0, "highIsGood": 1, "name": "stationTypeID", "published": 1, "stackable": 1, "unitID": 116 }, "473": { "attributeID": 473, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, prototypingBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "prototypingBonus", "published": 0, "stackable": 1 }, "474": { "attributeID": 474, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, inventionBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "inventionBonus", "published": 0, "stackable": 1 }, "475": { "attributeID": 475, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Minimum attack delay time for entity.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityAttackDelayMin", "published": 0, "stackable": 1 }, "476": { "attributeID": 476, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Maximum attack delay time for entity.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityAttackDelayMax", "published": 0, "stackable": 1 }, "478": { "attributeID": 478, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAC", "published": 0, "stackable": 1 }, "479": { "attributeID": 479, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Amount of time taken to fully recharge the shield.", "displayName_de": "Schildladezeit", "displayName_en-us": "Shield recharge time", "displayName_es": "Tiempo carga escudo", "displayName_fr": "Temps de recharge du bouclier", "displayName_it": "Shield recharge time", "displayName_ja": "シールドリチャージ時間", "displayName_ko": "실드 충전 시간", "displayName_ru": "Влияние на время регенерации щитов", "displayName_zh": "护盾回充时间", "displayNameID": 232971, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "shieldRechargeRate", "published": 1, "stackable": 1, "tooltipDescription_de": "Benötigte Zeit, um die Schilde wieder voll aufzuladen", "tooltipDescription_en-us": "Amount of time taken to fully recharge the shield", "tooltipDescription_es": "Cantidad de tiempo necesaria para cargar por completo el escudo.", "tooltipDescription_fr": "Temps nécessaire à la recharge totale du bouclier.", "tooltipDescription_it": "Amount of time taken to fully recharge the shield", "tooltipDescription_ja": "シールドのフル充電にかかる時間です", "tooltipDescription_ko": "실드를 전부 충전하기까지 걸리는 시간입니다.", "tooltipDescription_ru": "Количество времени, требуемое для полной перезарядки силового поля", "tooltipDescription_zh": "护盾恢复至最大值所需要的时间", "tooltipDescriptionID": 295213, "tooltipTitleID": 295212, "unitID": 101 }, "480": { "attributeID": 480, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxEffectiveRange", "published": 0, "stackable": 1, "unitID": 1 }, "481": { "attributeID": 481, "categoryID": 32, "dataType": 4, "defaultValue": 0.0, "description": "Reward for destroying this entity.", "displayName_de": "Kopfgeld", "displayName_en-us": "Bounty", "displayName_es": "Recompensa", "displayName_fr": "Prime", "displayName_it": "Bounty", "displayName_ja": "懸賞金", "displayName_ko": "현상금", "displayName_ru": "Награда за голову", "displayName_zh": "赏金", "displayNameID": 233164, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityKillBounty", "published": 1, "stackable": 1 }, "482": { "attributeID": 482, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Capacitor capacity", "displayName_de": "Energiespeichergröße", "displayName_en-us": "Capacitor Capacity", "displayName_es": "Capacidad condensador", "displayName_fr": "Charge de capaciteur", "displayName_it": "Capacitor Capacity", "displayName_ja": "キャパシタ容量", "displayName_ko": "캐패시터 용량", "displayName_ru": "Ёмкость накопителя", "displayName_zh": "电容容量", "displayNameID": 233004, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1668, "name": "capacitorCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Die maximale Energie des Energiespeichers", "tooltipDescription_en-us": "The maximum energy stored in the capacitor", "tooltipDescription_es": "La energía máxima almacenada en el condensador.", "tooltipDescription_fr": "La quantité d'énergie maximale stockée dans le capaciteur.", "tooltipDescription_it": "The maximum energy stored in the capacitor", "tooltipDescription_ja": "キャパシタに貯められる最大エネルギー量です", "tooltipDescription_ko": "캐패시터 최대 용량입니다.", "tooltipDescription_ru": "Предельный заряд бортового накопителя", "tooltipDescription_zh": "电容器的最大容量", "tooltipDescriptionID": 295334, "tooltipTitleID": 295333, "unitID": 114 }, "484": { "attributeID": 484, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "DO NOT MESS WITH This number is deducted from the %chance of the seeping to armor, to slow seep of damage through shield.", "displayWhenZero": 0, "highIsGood": 1, "name": "shieldUniformity", "published": 0, "stackable": 1 }, "485": { "attributeID": 485, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonus2AF", "published": 0, "stackable": 1 }, "486": { "attributeID": 486, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGC", "published": 0, "stackable": 1 }, "487": { "attributeID": 487, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCC", "published": 0, "stackable": 1 }, "488": { "attributeID": 488, "categoryID": 9, "dataType": 4, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipVelocityBonusMC", "published": 0, "stackable": 1 }, "489": { "attributeID": 489, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMC", "published": 0, "stackable": 1 }, "490": { "attributeID": 490, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMB", "published": 0, "stackable": 1 }, "491": { "attributeID": 491, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCB", "published": 0, "stackable": 1 }, "492": { "attributeID": 492, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAB", "published": 0, "stackable": 1 }, "493": { "attributeID": 493, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMI", "published": 0, "stackable": 1 }, "494": { "attributeID": 494, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAI", "published": 0, "stackable": 1 }, "495": { "attributeID": 495, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCI", "published": 0, "stackable": 1 }, "496": { "attributeID": 496, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGI", "published": 0, "stackable": 1 }, "497": { "attributeID": 497, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "description": "% chance of entity to shoot defender at incoming missile", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityDefenderChance", "published": 0, "stackable": 1 }, "499": { "attributeID": 499, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneCapacityBonus", "published": 0, "stackable": 1 }, "500": { "attributeID": 500, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGB", "published": 0, "stackable": 1 }, "501": { "attributeID": 501, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonus2CB", "published": 0, "stackable": 1 }, "502": { "attributeID": 502, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "Minimum number of drones the convoy can have for protection.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityConvoyDroneMin", "published": 0, "stackable": 1 }, "503": { "attributeID": 503, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "Maximum number of convoy drones a convoy can have for proetcion.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityConvoyDroneMax", "published": 0, "stackable": 1 }, "504": { "attributeID": 504, "categoryID": 27, "dataType": 5, "defaultValue": 0.0, "description": "Chance of entity warp scrambling it's target.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityWarpScrambleChance", "published": 0, "stackable": 1 }, "505": { "attributeID": 505, "categoryID": 27, "dataType": 5, "defaultValue": 8000.0, "description": "", "displayName_de": "Laufzeit", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "起動時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "单次运转时间", "displayNameID": 233144, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "warpScrambleDuration", "published": 1, "stackable": 1, "unitID": 3 }, "506": { "attributeID": 506, "categoryID": 30, "dataType": 5, "defaultValue": 20000.0, "description": "Cycle time for a missile launch, in milliseconds.", "displayName_de": "Feuerrate", "displayName_en-us": "Rate of fire", "displayName_es": "Cadencia de tiro", "displayName_fr": "Cadence de tir", "displayName_it": "Rate of fire", "displayName_ja": "発射間隔", "displayName_ko": "연사속도", "displayName_ru": "Цикл выстрела", "displayName_zh": "射击速度", "displayNameID": 233548, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileLaunchDuration", "published": 1, "stackable": 1, "unitID": 101 }, "507": { "attributeID": 507, "categoryID": 30, "dataType": 11, "defaultValue": 0.0, "description": "The type of missiles the entity launches.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityMissileTypeID", "published": 0, "stackable": 1, "unitID": 116 }, "508": { "attributeID": 508, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "The speed that entities fly at when not chasing a target.", "displayName_de": "Umkreisungsgeschwindigkeit", "displayName_en-us": "Orbit Velocity", "displayName_es": "Velocidad de órbita", "displayName_fr": "Vitesse d'orbite", "displayName_it": "Orbit Velocity", "displayName_ja": "旋回速度", "displayName_ko": "선회 속도", "displayName_ru": "Скорость движения по орбите", "displayName_zh": "环绕速度", "displayNameID": 233158, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityCruiseSpeed", "published": 1, "stackable": 1, "unitID": 10 }, "509": { "attributeID": 509, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Distance from maximum range at which accuracy has fallen by half.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cargoScanFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "510": { "attributeID": 510, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Distance from maximum range at which accuracy has fallen by half.", "displayName_de": "Schiffsscan-Präzisionsabfall", "displayName_en-us": "Ship Scan Falloff", "displayName_es": "Alcance efectivo del escaneo de naves", "displayName_fr": "Distance de perte du balayage du vaisseau", "displayName_it": "Ship Scan Falloff", "displayName_ja": "シップスキャン精度低下", "displayName_ko": "함선 스캔 유효사거리", "displayName_ru": "Добавочная дальность досмотра оснастки", "displayName_zh": "舰船扫描失准范围", "displayNameID": 233224, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipScanFalloff", "published": 1, "stackable": 1, "unitID": 1 }, "511": { "attributeID": 511, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Chance of being able to resist a ship scan.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipScanResistance", "published": 0, "stackable": 1, "unitID": 121 }, "512": { "attributeID": 512, "categoryID": 28, "dataType": 5, "defaultValue": 0.0, "description": "Chance that an entity will use a Stasis Web on a target.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "modifyTargetSpeedChance", "published": 0, "stackable": 1 }, "513": { "attributeID": 513, "categoryID": 28, "dataType": 5, "defaultValue": 5000.0, "description": "Duration of entities Stasis Web ", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "modifyTargetSpeedDuration", "published": 0, "stackable": 1, "unitID": 3 }, "514": { "attributeID": 514, "categoryID": 28, "dataType": 4, "defaultValue": 20000.0, "description": "Range of entities Stasis Web", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "modifyTargetSpeedRange", "published": 0, "stackable": 1, "unitID": 1 }, "515": { "attributeID": 515, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "modifyTargetSpeedCapacitorNeed", "published": 0, "stackable": 1 }, "516": { "attributeID": 516, "categoryID": 9, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigter Chassis-Typ", "displayName_en-us": "Required chassis Type", "displayName_es": "Tipo de chasis necesario", "displayName_fr": "Type de châssis requis", "displayName_it": "Required chassis Type", "displayName_ja": "必須シャーシタイプ", "displayName_ko": "필요 섀시 분류", "displayName_ru": "Требуемый тип шасси", "displayName_zh": "所需炮座类别", "displayNameID": 233024, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "chassisType", "published": 1, "stackable": 1, "unitID": 116 }, "517": { "attributeID": 517, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Präzisionsabfallmodifikator", "displayName_en-us": "Falloff Modifier", "displayName_es": "Modificador de alcance efectivo", "displayName_fr": "Modificateur de distance de perte", "displayName_it": "Falloff Modifier", "displayName_ja": "精度低下修正乗数", "displayName_ko": "유효사거리 보정치", "displayName_ru": "Модификатор добавочной дальности", "displayName_zh": "失准范围调整", "displayNameID": 233183, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fallofMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "518": { "attributeID": 518, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMB2", "published": 0, "stackable": 1 }, "519": { "attributeID": 519, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "The percentage of capacitor capacity required to engage cloaking.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakingCapacitorNeedRatio", "published": 0, "stackable": 1 }, "522": { "attributeID": 522, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "%chance of new asteroid releasing damage cloud each mining turn.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "damageCloudChance", "published": 0, "stackable": 1 }, "524": { "attributeID": 524, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "DO NOT MESS WITH", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "armorUniformity", "published": 0, "stackable": 1 }, "525": { "attributeID": 525, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "DO NOT MESS WITH", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureUniformity", "published": 0, "stackable": 1 }, "526": { "attributeID": 526, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Forschung-Skill benötigt", "displayName_en-us": "Research Skill Required", "displayName_es": "Habilidad de investigación necesaria", "displayName_fr": "Compétence de recherche requise", "displayName_it": "Research Skill Required", "displayName_ja": "必須研究スキル", "displayName_ko": "연구 스킬 필요", "displayName_ru": "Требуемый навык для исследований", "displayName_zh": "需要研究技能", "displayNameID": 233301, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqResearchSkill", "published": 1, "stackable": 1 }, "527": { "attributeID": 527, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigter Produktion-Skill", "displayName_en-us": "Required Manufacturing Skill", "displayName_es": "Habilidad de fabricación necesaria", "displayName_fr": "Compétence de production requise", "displayName_it": "Required Manufacturing Skill", "displayName_ja": "必須製造スキル", "displayName_ko": "필요 제조 스킬", "displayName_ru": "Требуемый навык для производства", "displayName_zh": "所需制造技能", "displayNameID": 233305, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqManufacturingSkill", "published": 1, "stackable": 1 }, "528": { "attributeID": 528, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigter Produktionsskill-Level", "displayName_en-us": "Required Manufacturing Skill Level", "displayName_es": "Nivel de habilidad de fabricación necesario", "displayName_fr": "Niveau de compétence de production requis", "displayName_it": "Required Manufacturing Skill Level", "displayName_ja": "必須製造スキルレベル", "displayName_ko": "필요 제조 스킬 레벨", "displayName_ru": "Требуемая степень освоения навыка производства", "displayName_zh": "所需制造技能等级", "displayNameID": 233304, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqManufacturingSkillLevel", "published": 1, "stackable": 1 }, "529": { "attributeID": 529, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigtes Forschung-Skill-Level", "displayName_en-us": "Required Research Skill Level", "displayName_es": "Nivel de habilidad de investigación necesario", "displayName_fr": "Niveau de compétence de recherche requis", "displayName_it": "Required Research Skill Level", "displayName_ja": "必須研究スキルレベル", "displayName_ko": "필요 연구 스킬 레벨", "displayName_ru": "Требуемая степень навыка для исследований", "displayName_zh": "所需研究技能等级", "displayNameID": 233299, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqResearchSkillLevel", "published": 1, "stackable": 1 }, "530": { "attributeID": 530, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigtes Produktionswerkzeug", "displayName_en-us": "Required Manufacturing Tool", "displayName_es": "Herramienta de fabricación necesaria", "displayName_fr": "Outil de production requis", "displayName_it": "Required Manufacturing Tool", "displayName_ja": "必須製造ツール", "displayName_ko": "필요 생산 도구", "displayName_ru": "Необходимые инструменты для производства", "displayName_zh": "所需制造工具", "displayNameID": 233122, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqManufacturingTool", "published": 1, "stackable": 1 }, "531": { "attributeID": 531, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigtes Forschungswerkzeug", "displayName_en-us": "Required Research Tool", "displayName_es": "Herramienta de investigación necesaria", "displayName_fr": "Outil de recherche requis", "displayName_it": "Required Research Tool", "displayName_ja": "必須研究ツール", "displayName_ko": "필요 연구 도구", "displayName_ru": "Необходимые инструменты для исследований", "displayName_zh": "所需研究工具", "displayNameID": 233298, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqResearchTool", "published": 1, "stackable": 1 }, "532": { "attributeID": 532, "categoryID": 9, "dataType": 11, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqResearchComponent", "published": 0, "stackable": 1 }, "534": { "attributeID": 534, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Produktionsbonus", "displayName_en-us": "Manufacturer Bonus", "displayName_es": "Bonificación de fabricante", "displayName_fr": "Bonus de producteur", "displayName_it": "Manufacturer Bonus", "displayName_ja": "製造者ボーナス", "displayName_ko": "생산자 보너스", "displayName_ru": "Влияние производителя", "displayName_zh": "制造者加成", "displayNameID": 233282, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "Manufacturer_ID", "published": 1, "stackable": 1 }, "535": { "attributeID": 535, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikationstyp", "displayName_en-us": "Modification Type", "displayName_es": "Tipo de modificación", "displayName_fr": "Type de modification", "displayName_it": "Modification Type", "displayName_ja": "修正タイプ", "displayName_ko": "개조 유형", "displayName_ru": "Тип модификации", "displayName_zh": "修正类别", "displayNameID": 233261, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "installedMod", "published": 1, "stackable": 1 }, "536": { "attributeID": 536, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqResearchComponetAmount", "published": 0, "stackable": 1 }, "537": { "attributeID": 537, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Primäre Produktionskomponente A", "displayName_en-us": "Primary Manufacture Componet A", "displayName_es": "Componente A de fabricación primaria", "displayName_fr": "Élément de production principal A", "displayName_it": "Primary Manufacture Componet A", "displayName_ja": "第一製造コンポーネント A", "displayName_ko": "1차 제작 구성품 A", "displayName_ru": "Первичный производственный компонент А", "displayName_zh": "主要制造组件A", "displayNameID": 233110, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqManufacturingComponent1Amount", "published": 1, "stackable": 1 }, "538": { "attributeID": 538, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Sekundäre Produktionskomponente", "displayName_en-us": "Secondary Manufacture Component", "displayName_es": "Componente de fabricación secundaria", "displayName_fr": "Composant de production secondaire", "displayName_it": "Secondary Manufacture Component", "displayName_ja": "二次製造コンポーネント", "displayName_ko": "2차 제작 구성품", "displayName_ru": "Вторичный производственный компонент", "displayName_zh": "次级制造组件", "displayNameID": 233111, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reqManufacturingComponent2Amount", "published": 1, "stackable": 1 }, "542": { "attributeID": 542, "categoryID": 33, "dataType": 4, "defaultValue": 0.0, "description": "A relative strength that indicates how powerful this NPC entity is in combat.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityStrength", "published": 0, "stackable": 1 }, "543": { "attributeID": 543, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, damageCloudChanceReduction", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "damageCloudChanceReduction", "published": 0, "stackable": 1 }, "544": { "attributeID": 544, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The amount of time before applications of the cloud's effect.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloudEffectDelay", "published": 0, "stackable": 1, "unitID": 101 }, "545": { "attributeID": 545, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Number of milliseconds a temporary cloud hangs around.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloudDuration", "published": 0, "stackable": 1, "unitID": 101 }, "546": { "attributeID": 546, "categoryID": 9, "dataType": 11, "defaultValue": 0.0, "description": "The type of damage cloud generated by the asteroid.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "damageCloudType", "published": 0, "stackable": 1, "unitID": 116 }, "547": { "attributeID": 547, "categoryID": 37, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, missileVelocityBonus ", "displayName_de": "Raketengeschwindigkeit-Bonus", "displayName_en-us": "Missile Velocity Bonus", "displayName_es": "Bonificación de velocidad de misiles", "displayName_fr": "Bonus de vitesse des missiles", "displayName_it": "Missile Velocity Bonus", "displayName_ja": "ミサイル速度ボーナス", "displayName_ko": "미사일 속도 보너스", "displayName_ru": "Влияние на скорость полёта ракет", "displayName_zh": "导弹速度加成", "displayNameID": 233366, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "548": { "attributeID": 548, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildverstärkungsbonus", "displayName_en-us": "Shield Boost Bonus", "displayName_es": "Bonificación de potenciador de escudo", "displayName_fr": "Bonus de booster de bouclier", "displayName_it": "Shield Boost Bonus", "displayName_ja": "シールドブーストボーナス", "displayName_ko": "실드 부스트 보너스", "displayName_ru": "Повышение эффективности накачки щитов", "displayName_zh": "护盾回充加成", "displayNameID": 232955, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2104, "name": "shieldBoostMultiplier", "published": 1, "stackable": 1, "unitID": 121 }, "549": { "attributeID": 549, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Energiebonus", "displayName_en-us": "Power Bonus", "displayName_es": "Bonificación de potencia", "displayName_fr": "Bonus de puissance", "displayName_it": "Power Bonus", "displayName_ja": "パワーボーナス", "displayName_ko": "전력 보너스", "displayName_ru": "Влияние на мощность", "displayName_zh": "能量加成", "displayNameID": 233412, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "powerIncrease", "published": 1, "stackable": 1, "unitID": 107 }, "550": { "attributeID": 550, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, resistanceBonus", "displayName_de": "Resistenzbonus", "displayName_en-us": "Resistance Bonus", "displayName_es": "Bonificación de resistencia", "displayName_fr": "Bonus de résistance", "displayName_it": "Resistance Bonus", "displayName_ja": "レジスタンスボーナス", "displayName_ko": "저항력 보너스", "displayName_ru": "Влияние на сопротивляемость", "displayName_zh": "抗性加成", "displayNameID": 233130, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resistanceBonus", "published": 1, "stackable": 1, "unitID": 121 }, "551": { "attributeID": 551, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "rocketVelocityPercent", "published": 0, "stackable": 1 }, "552": { "attributeID": 552, "categoryID": 6, "dataType": 5, "defaultValue": 100.0, "description": "Signature Radius is used for turret tracking and scanning.", "displayName_de": "Signaturradius", "displayName_en-us": "Signature Radius", "displayName_es": "Radio señal", "displayName_fr": "Rayon de signature", "displayName_it": "Signature Radius", "displayName_ja": "シグネチャ半径", "displayName_ko": "시그니처 반경", "displayName_ru": "Радиус сигнатуры", "displayName_zh": "信号半径", "displayNameID": 233417, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "signatureRadius", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein geringerer Wert erhöht die benötigte Zeit, um dieses Ziel zu erfassen und hilft gegnerischer Feuerkraft und der Erfassung durch Sonden zu entgehen", "tooltipDescription_en-us": "Smaller values increase the time to lock onto this target, and assist it in evading enemy firepower or detection by probes", "tooltipDescription_es": "Los valores más bajos aumentan el tiempo necesario para fijar este objetivo y ayudan a evitar la detección de sondas y la potencia de fuego enemiga.", "tooltipDescription_fr": "Les petites valeurs augmentent le temps nécessaire pour verrouiller cette cible, et permettent d'éviter la détection par les sondes et les vaisseaux ennemis.", "tooltipDescription_it": "Smaller values increase the time to lock onto this target, and assist it in evading enemy firepower or detection by probes", "tooltipDescription_ja": "数値が小さいほどこの艦船をターゲットするのにかかる時間が長くなり、敵の火器やプローブにより探知されにくくなります", "tooltipDescription_ko": "수치가 낮을수록 타겟팅 소요시간이 증가하며 프로브 탐지 및 적 공격을 수월하게 회피할 수 있습니다.", "tooltipDescription_ru": "Уменьшение этой характеристики приводит к уменьшению скорости внесения корабля в чужие списки сопровождаемых целей, а также к затруднению определения точных координат корабля при помощи разведзондов, и к уменьшению поражающего действия вооружения противника", "tooltipDescription_zh": "该数值越小,锁定此目标所需的时间就越长,还有利于规避敌方探针扫描及火力打击", "tooltipDescriptionID": 295350, "tooltipTitleID": 295349, "unitID": 1 }, "553": { "attributeID": 553, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, maxGangSizeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxGangSizeBonus", "published": 0, "stackable": 1 }, "554": { "attributeID": 554, "categoryID": 21, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, signatureRadiusBonus", "displayName_de": "Signaturradius-Modifikator", "displayName_en-us": "Signature Radius Modifier", "displayName_es": "Modificador de radio de la señal", "displayName_fr": "Modificateur de rayon de signature", "displayName_it": "Signature Radius Modifier", "displayName_ja": "シグネチャ半径乗数", "displayName_ko": "시그니처 반경 보정치", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径修正值", "displayNameID": 233219, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "signatureRadiusBonus", "published": 1, "stackable": 1, "unitID": 124 }, "555": { "attributeID": 555, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cloakVelocityBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakVelocityBonus", "published": 0, "stackable": 1, "unitID": 105 }, "556": { "attributeID": 556, "categoryID": 7, "dataType": 4, "defaultValue": 60000.0, "description": "How long it takes to anchor or unanchor this object.", "displayName_de": "Verankerungsverzögerung", "displayName_en-us": "Anchoring Delay", "displayName_es": "Demora de anclaje", "displayName_fr": "Délai d'ancrage", "displayName_it": "Anchoring Delay", "displayName_ja": "係留遅延", "displayName_ko": "위치 고정 소모 시간", "displayName_ru": "Время анкеровки", "displayName_zh": "锚定耗时", "displayNameID": 232952, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "anchoringDelay", "published": 1, "stackable": 1, "unitID": 101 }, "557": { "attributeID": 557, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, max flightTimeBonus", "displayName_de": "Flugzeitbonus", "displayName_en-us": "Flight Time Bonus", "displayName_es": "Bonificación de tiempo de vuelo", "displayName_fr": "Bonus de temps de vol", "displayName_it": "Flight Time Bonus", "displayName_ja": "飛行時間ボーナス", "displayName_ko": "비행 시간 보너스", "displayName_ru": "Влияние на полётное время", "displayName_zh": "飞行时间加成", "displayNameID": 233303, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxFlightTimeBonus", "published": 1, "stackable": 1, "unitID": 121 }, "558": { "attributeID": 558, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, explosionRangeBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "explosionRangeBonus", "published": 0, "stackable": 1 }, "559": { "attributeID": 559, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Inertia is a basic multiplier of agility and the mass of the ship, it determines how fast the ship can accelerate and how fast it can fly when orbiting.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1401, "name": "Inertia", "published": 0, "stackable": 1, "unitID": 2 }, "560": { "attributeID": 560, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "The time targeting systems take to recalibrate after cloaking.", "displayName_de": "Neukalibrierungszeit des Sensors", "displayName_en-us": "Sensor Recalibration Time", "displayName_es": "Tiempo de recalibración del sensor", "displayName_fr": "Temps de recalibrage des capteurs", "displayName_it": "Sensor Recalibration Time", "displayName_ja": "センサー再キャリブレーション時間", "displayName_ko": "센서 재교정 시간", "displayName_ru": "Время перекалибровки сенсоров", "displayName_zh": "感应器复校时间", "displayNameID": 233549, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "cloakingTargetingDelay", "published": 1, "stackable": 1, "unitID": 101 }, "561": { "attributeID": 561, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "skill bonus attribute2 for gallente battleship", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGB2", "published": 0, "stackable": 1 }, "562": { "attributeID": 562, "categoryID": 32, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityFactionLoss", "published": 0, "stackable": 1 }, "563": { "attributeID": 563, "categoryID": 32, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySecurityMaxGain", "published": 0, "stackable": 1 }, "564": { "attributeID": 564, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "The resolution that the vessel can target other objects at.", "displayName_de": "Scanauflösung", "displayName_en-us": "Scan Resolution", "displayName_es": "Resolución escaneo", "displayName_fr": "Résolution du balayage", "displayName_it": "Scan Resolution", "displayName_ja": "スキャン分解能", "displayName_ko": "스캔 정밀도", "displayName_ru": "Разрешающая способность системы захвата целей", "displayName_zh": "扫描分辨率", "displayNameID": 233418, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "scanResolution", "published": 1, "stackable": 0, "tooltipDescription_de": "Ein höherer Wert erhöht die Geschwindigkeit der Zielerfassung", "tooltipDescription_en-us": "Larger values increase target locking speed", "tooltipDescription_es": "Cuanto más alto sea el valor, más rápido se fijarán los objetivos.", "tooltipDescription_fr": "Les grandes valeurs augmentent la vitesse de verrouillage de la cible.", "tooltipDescription_it": "Larger values increase target locking speed", "tooltipDescription_ja": "数値が大きいほどターゲットロック速度が上がります", "tooltipDescription_ko": "값이 클수록 타겟 고정 속도가 빨라집니다.", "tooltipDescription_ru": "Увеличение этой характеристики приводит к увеличению скорости работы системы обнаружения и сопровождения целей", "tooltipDescription_zh": "该数值越大,锁定目标的速度越快", "tooltipDescriptionID": 295223, "tooltipTitleID": 295222, "unitID": 102 }, "565": { "attributeID": 565, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Improves the targeting time of ships by boosting the Scan Resolution.", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на скорость захвата целей", "displayName_zh": "扫描分辨率加成", "displayNameID": 233245, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "scanResolutionMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "566": { "attributeID": 566, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bonus for scan resolution", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на скорость захвата целей", "displayName_zh": "扫描分辨率加成", "displayNameID": 232979, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "scanResolutionBonus", "published": 1, "stackable": 0, "unitID": 105 }, "567": { "attributeID": 567, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Used to divide with mass to give a factor for speed boost modules", "displayName_de": "Schub", "displayName_en-us": "Thrust", "displayName_es": "Impulso", "displayName_fr": "Poussée", "displayName_it": "Thrust", "displayName_ja": "推進力", "displayName_ko": "출력", "displayName_ru": "Тяга", "displayName_zh": "推力", "displayNameID": 233198, "displayWhenZero": 0, "highIsGood": 1, "iconID": 96, "name": "speedBoostFactor", "published": 1, "stackable": 1, "unitID": 125 }, "568": { "attributeID": 568, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusInterceptor", "published": 0, "stackable": 1 }, "569": { "attributeID": 569, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCovertOps1", "published": 0, "stackable": 1 }, "570": { "attributeID": 570, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBombers", "published": 0, "stackable": 1 }, "571": { "attributeID": 571, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusGunships", "published": 0, "stackable": 1 }, "573": { "attributeID": 573, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusdestroyers", "published": 0, "stackable": 1 }, "575": { "attributeID": 575, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBattlecruiser", "published": 0, "stackable": 1 }, "579": { "attributeID": 579, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "testForEggert", "published": 0, "stackable": 1 }, "580": { "attributeID": 580, "categoryID": 17, "dataType": 4, "defaultValue": 5000.0, "description": "The maximum amount of time stalled before entity chase speed kicks in.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityChaseMaxDelay", "published": 0, "stackable": 1 }, "581": { "attributeID": 581, "categoryID": 17, "dataType": 5, "defaultValue": 1.0, "description": "Chance that the max delay is waited before chase is engaged.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityChaseMaxDelayChance", "published": 0, "stackable": 1 }, "582": { "attributeID": 582, "categoryID": 17, "dataType": 4, "defaultValue": 5000.0, "description": "The maximum amount of time chase is ever engaged for.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityChaseMaxDuration", "published": 0, "stackable": 1, "unitID": 101 }, "583": { "attributeID": 583, "categoryID": 17, "dataType": 5, "defaultValue": 1.0, "description": "The chance of engaging chase for the maximum duration.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityChaseMaxDurationChance", "published": 0, "stackable": 1 }, "584": { "attributeID": 584, "categoryID": 9, "dataType": 4, "defaultValue": 100000.0, "description": "The maximum distance an entity of this type can be led from its point of placement.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityMaxWanderRange", "published": 0, "stackable": 1, "unitID": 1 }, "585": { "attributeID": 585, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAB2", "published": 0, "stackable": 1 }, "586": { "attributeID": 586, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGF2", "published": 0, "stackable": 1 }, "587": { "attributeID": 587, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMF2", "published": 0, "stackable": 1 }, "588": { "attributeID": 588, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCF2", "published": 0, "stackable": 1 }, "589": { "attributeID": 589, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Whether a station type is player ownable.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isPlayerOwnable", "published": 0, "stackable": 1 }, "590": { "attributeID": 590, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gestaltBonus1", "published": 0, "stackable": 1 }, "591": { "attributeID": 591, "categoryID": 10, "dataType": 4, "defaultValue": 0.0, "description": "Increases max velocity of all drone types.", "displayName_de": "Drohnengeschwindigkeitsbonus", "displayName_en-us": "Drone Velocity Bonus", "displayName_es": "Bonificación de velocidad de drones", "displayName_fr": "Bonus de vitesse des drones", "displayName_it": "Drone Velocity Bonus", "displayName_ja": "ドローン速度ボーナス", "displayName_ko": "드론 속도 보너스", "displayName_ru": "Влияние на скорость дронов", "displayName_zh": "无人机速度加成", "displayNameID": 233114, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneMaxVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "592": { "attributeID": 592, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cloakCapacitorBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakCapacitorBonus", "published": 0, "stackable": 1 }, "594": { "attributeID": 594, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cloakCapacitor Bonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "Die", "published": 0, "stackable": 1 }, "595": { "attributeID": 595, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "capBoostMultipler", "published": 0, "stackable": 1 }, "596": { "attributeID": 596, "categoryID": 37, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, explosionDelayBonus", "displayName_de": "Flugzeitbonus", "displayName_en-us": "Flight Time Bonus", "displayName_es": "Bonificación de tiempo de vuelo", "displayName_fr": "Bonus de temps de vol", "displayName_it": "Flight Time Bonus", "displayName_ja": "航行時間にボーナス", "displayName_ko": "비행 시간 보너스", "displayName_ru": "Влияние на полётное время", "displayName_zh": "飞行时间加成", "displayNameID": 309768, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "explosionDelayBonus", "published": 1, "stackable": 1, "unitID": 121 }, "597": { "attributeID": 597, "categoryID": 9, "dataType": 4, "defaultValue": 10.0, "description": "bonus for escort class frigates", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusEscorts", "published": 0, "stackable": 1 }, "598": { "attributeID": 598, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCB3", "published": 0, "stackable": 1 }, "600": { "attributeID": 600, "categoryID": 17, "dataType": 5, "defaultValue": 3.0, "description": "", "displayName_de": "Warpgeschwindigkeitsmultiplikator", "displayName_en-us": "Warp Speed Multiplier", "displayName_es": "Multiplicador de velocidad de warp", "displayName_fr": "Multiplicateur de vitesse de warp", "displayName_it": "Warp Speed Multiplier", "displayName_ja": "ワープ速度乗数", "displayName_ko": "워프 속도 배수", "displayName_ru": "Модификатор скорости движения в варп-режиме", "displayName_zh": "跃迁速度倍增系数", "displayNameID": 232977, "displayWhenZero": 0, "highIsGood": 1, "name": "warpSpeedMultiplier", "published": 0, "stackable": 0, "unitID": 104 }, "601": { "attributeID": 601, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, warpSpeedBonus", "displayName_de": "Warp-Geschwindigkeitsbonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Bonificación de velocidad de warp", "displayName_fr": "Bonus de vitesse de warp", "displayName_it": "Warp Speed Bonus", "displayName_ja": "ワープ速度ボーナス", "displayName_ko": "워프 속도 보너스", "displayName_ru": "Влияние на скорость хода в варп-режиме", "displayName_zh": "跃迁速度加成", "displayNameID": 233048, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpSpeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "602": { "attributeID": 602, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)使用タイプ", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 233276, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "launcherGroup2", "published": 1, "stackable": 1, "unitID": 115 }, "603": { "attributeID": 603, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)使用タイプ", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 233277, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "launcherGroup3", "published": 1, "stackable": 1, "unitID": 115 }, "604": { "attributeID": 604, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of charge this launcher can be loaded with.", "displayName_de": "Benutzt mit (Ladungsgruppe)", "displayName_en-us": "Used with (Charge Group)", "displayName_es": "Se usa con (grupo de carga)", "displayName_fr": "Utilisé avec (groupe de charge)", "displayName_it": "Used with (Charge Group)", "displayName_ja": "(チャージグループ)使用タイプ", "displayName_ko": "(차지) 사용", "displayName_ru": "Используется с (группой зарядов)", "displayName_zh": "配套使用(弹药类别)", "displayNameID": 233016, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeGroup1", "published": 1, "stackable": 1, "unitID": 115 }, "605": { "attributeID": 605, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of charge this launcher can be loaded with.", "displayName_de": "Benutzt mit (Ladungsgruppe)", "displayName_en-us": "Used with (Charge Group)", "displayName_es": "Se usa con (grupo de carga)", "displayName_fr": "Utilisé avec (groupe de charge)", "displayName_it": "Used with (Charge Group)", "displayName_ja": "(チャージグループ)使用タイプ", "displayName_ko": "(차지) 사용", "displayName_ru": "Используется с (группой зарядов)", "displayName_zh": "配套使用(弹药类别)", "displayNameID": 233017, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeGroup2", "published": 1, "stackable": 1, "unitID": 115 }, "606": { "attributeID": 606, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of charge this launcher can be loaded with.", "displayName_de": "Benutzt mit (Ladungsgruppe)", "displayName_en-us": "Used with (Charge Group)", "displayName_es": "Se usa con (grupo de carga)", "displayName_fr": "Utilisé avec (groupe de charge)", "displayName_it": "Used with (Charge Group)", "displayName_ja": "(チャージグループ)使用タイプ", "displayName_ko": "(차지) 사용", "displayName_ru": "Используется с (группой зарядов)", "displayName_zh": "配套使用(弹药类别)", "displayNameID": 233018, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeGroup3", "published": 1, "stackable": 1, "unitID": 115 }, "608": { "attributeID": 608, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Geschützturm-Energiebedarf", "displayName_en-us": "Turret Power Need", "displayName_es": "Potencia de torreta necesaria", "displayName_fr": "Consommation de la tourelle", "displayName_it": "Turret Power Need", "displayName_ja": "タレット必要エネルギー量", "displayName_ko": "터렛 전력 요구량", "displayName_ru": "Изменение нагрузки орудий на реактор", "displayName_zh": "炮塔能量需求", "displayNameID": 233413, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "powerNeedMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "609": { "attributeID": 609, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of charge this launcher can be loaded with.", "displayName_de": "Benutzt mit (Ladungsgruppe)", "displayName_en-us": "Used with (Charge Group)", "displayName_es": "Se usa con (grupo de carga)", "displayName_fr": "Utilisé avec (groupe de charge)", "displayName_it": "Used with (Charge Group)", "displayName_ja": "(チャージグループ)使用タイプ", "displayName_ko": "(차지) 사용", "displayName_ru": "Используется с (группой зарядов)", "displayName_zh": "配套使用(弹药类别)", "displayNameID": 233019, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeGroup4", "published": 1, "stackable": 1, "unitID": 115 }, "610": { "attributeID": 610, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of charge this launcher can be loaded with.", "displayName_de": "Benutzt mit (Ladungsgruppe)", "displayName_en-us": "Used with (Charge Group)", "displayName_es": "Se usa con (grupo de carga)", "displayName_fr": "Utilisé avec (groupe de charge)", "displayName_it": "Used with (Charge Group)", "displayName_ja": "(チャージグループ)使用タイプ", "displayName_ko": "(차지) 사용", "displayName_ru": "Используется с (группой зарядов)", "displayName_zh": "配套使用(弹药类别)", "displayNameID": 233020, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "chargeGroup5", "published": 1, "stackable": 1, "unitID": 115 }, "611": { "attributeID": 611, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Laufzeitbonus", "displayName_en-us": "Duration Bonus", "displayName_es": "Bonificación de duración", "displayName_fr": "Bonus de durée", "displayName_it": "Duration Bonus", "displayName_ja": "起動時間ボーナス", "displayName_ko": "지속시간 보너스", "displayName_ru": "Влияние на время цикла", "displayName_zh": "单次运转时间加成", "displayNameID": 233141, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "durationMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "612": { "attributeID": 612, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Just for the UI to display base damage on shield.", "displayName_de": "Schaden auf Basisschild", "displayName_en-us": "Base Shield Damage", "displayName_es": "Daño básico del escudo", "displayName_fr": "Dégâts de bouclier de base", "displayName_it": "Base Shield Damage", "displayName_ja": "基本シールドダメージ", "displayName_ko": "기본 실드 피해량", "displayName_ru": "Базовый урон, наносимый щитам", "displayName_zh": "护盾伤害基数", "displayNameID": 232975, "displayWhenZero": 0, "highIsGood": 1, "iconID": 69, "name": "baseShieldDamage", "published": 1, "stackable": 1 }, "613": { "attributeID": 613, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Just for the UI to display base damage on armor.", "displayName_de": "Schaden der Grundpanzerung", "displayName_en-us": "Base Armor Damage", "displayName_es": "Daño básico del blindaje", "displayName_fr": "Dégâts de blindage de base", "displayName_it": "Base Armor Damage", "displayName_ja": "基本アーマーダメージ", "displayName_ko": "기본 장갑 피해량", "displayName_ru": "Базовый урон, наносимый броне", "displayName_zh": "装甲伤害基数", "displayNameID": 232974, "displayWhenZero": 0, "highIsGood": 1, "iconID": 68, "name": "baseArmorDamage", "published": 1, "stackable": 1 }, "614": { "attributeID": 614, "categoryID": 4, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, cargoCapacityBonus", "displayName_de": "Frachtraumbonus", "displayName_en-us": "Cargo Capacity Bonus", "displayName_es": "Bonificación de capacidad de carga", "displayName_fr": "Bonus de capacité de la soute", "displayName_it": "Cargo Capacity Bonus", "displayName_ja": "カーゴ容量ボーナス", "displayName_ko": "화물 적재량 보너스", "displayName_ru": "Повышение объёма грузового отсека", "displayName_zh": "货柜容量加成", "displayNameID": 233013, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "cargoCapacityBonus", "published": 1, "stackable": 1, "unitID": 121 }, "616": { "attributeID": 616, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildverstärkungsabzug", "displayName_en-us": "Shield Booster Penalty", "displayName_es": "Penalización de potenciador de escudo", "displayName_fr": "Pénalité de booster de bouclier", "displayName_it": "Shield Booster Penalty", "displayName_ja": "シールドブースターペナルティ", "displayName_ko": "실드 부스터 페널티", "displayName_ru": "Штраф к накачке щитов", "displayName_zh": "护盾回充惩罚", "displayNameID": 232994, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterShieldBoostAmountPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "619": { "attributeID": 619, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Skill bonus for cloaking targeting delay.", "displayName_de": "Tarnungszielaufschaltungsverzögerung-Bonus", "displayName_en-us": "Cloaking Targeting Delay Bonus", "displayName_es": "Bonificación de demora de adquisición de objetivos durante camuflaje", "displayName_fr": "Bonus de délai de ciblage en mode furtif", "displayName_it": "Cloaking Targeting Delay Bonus", "displayName_ja": "ターゲット捕捉遅延遮蔽ボーナス", "displayName_ko": "클로킹 타겟팅 지연 보너스", "displayName_ru": "Влияние на задержку включения захвата целей при демаскировке", "displayName_zh": "隐形锁定延迟加成", "displayNameID": 233025, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakingTargetingDelayBonus", "published": 1, "stackable": 1, "unitID": 105 }, "620": { "attributeID": 620, "categoryID": 29, "dataType": 5, "defaultValue": 1000.0, "description": "Prefered target signature. The base signature radius at which the turret's tracking speed is rated. ", "displayName_de": "Signaturauflösung", "displayName_en-us": "Signature Resolution", "displayName_es": "Resolución de señal", "displayName_fr": "Résolution de la signature", "displayName_it": "Signature Resolution", "displayName_ja": "シグネチャ分解能", "displayName_ko": "탄착 범위", "displayName_ru": "Разрешающая способность при захвате целей", "displayName_zh": "信号分辨率", "displayNameID": 233385, "displayWhenZero": 0, "highIsGood": 1, "name": "optimalSigRadius", "published": 0, "stackable": 1, "unitID": 1 }, "621": { "attributeID": 621, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "Rated target transverse velocity at optimal range.", "displayName_de": "Nachführungsgeschwindigkeit bei optimaler Reichweite", "displayName_en-us": "Tracking Speed at Optimal Range", "displayName_es": "Velocidad de rastreo en alcance óptimo", "displayName_fr": "Vitesse de poursuite en portée optimale", "displayName_it": "Tracking Speed at Optimal Range", "displayName_ja": "最適射程距離における追跡速度", "displayName_ko": "최적사거리에서의 트래킹 속도", "displayName_ru": "Скорость наводки на оптимальной дальности", "displayName_zh": "最佳距离内的跟踪速度", "displayNameID": 233072, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "trackingSpeedAtOptimal", "published": 1, "stackable": 1, "unitID": 10 }, "622": { "attributeID": 622, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Determines the maximum weight of a ship that, ships that are to heavy get denied of service by this attribute", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "massLimit", "published": 0, "stackable": 1, "unitID": 2 }, "623": { "attributeID": 623, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "hot-fix for not allowing warpable cloaking modules on anything but covert-ops frigs", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakingSlotsLeftSuper", "published": 0, "stackable": 1 }, "624": { "attributeID": 624, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, WarpSBonus", "displayName_de": "Warp-Geschwindigkeitsbonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Bonificación de velocidad de warp", "displayName_fr": "Bonus de vitesse de warp", "displayName_it": "Warp Speed Bonus", "displayName_ja": "ワープ速度ボーナス", "displayName_ko": "워프 속도 보너스", "displayName_ru": "Влияние на скорость хода в варп-режиме", "displayName_zh": "跃迁速度加成", "displayNameID": 233139, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "WarpSBonus", "published": 1, "stackable": 1, "unitID": 105 }, "625": { "attributeID": 625, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Flat Bonus To NPC Bountys", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bountyBonus", "published": 0, "stackable": 1 }, "626": { "attributeID": 626, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Npc Bounty Multiplier", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bountyMultiplier", "published": 0, "stackable": 1 }, "627": { "attributeID": 627, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, bountySkillBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bountySkillBonus", "published": 0, "stackable": 1 }, "628": { "attributeID": 628, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, bountySkillMultiplyer", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bountySkillMultiplyer", "published": 0, "stackable": 1 }, "629": { "attributeID": 629, "categoryID": 9, "dataType": 12, "defaultValue": 0.0, "description": "The cargo group that can be loaded into this container", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cargoGroup", "published": 0, "stackable": 1 }, "630": { "attributeID": 630, "categoryID": 3, "dataType": 4, "defaultValue": 0.0, "description": "Duration between armor repair actions for entities.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDuration", "published": 0, "stackable": 1 }, "631": { "attributeID": 631, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Amount of armor repaired per cycle for entities.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairAmount", "published": 0, "stackable": 1 }, "632": { "attributeID": 632, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "interceptorGF", "published": 0, "stackable": 1 }, "633": { "attributeID": 633, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Authoring has been moved to FSD\r\nThe ranking of the module within its tech level", "displayName_de": "Meta-Level", "displayName_en-us": "Meta Level", "displayName_es": "Metanivel", "displayName_fr": "Niveau méta", "displayName_it": "Meta Level", "displayName_ja": "メタレベル", "displayName_ko": "메타 레벨", "displayName_ru": "Метауровень", "displayName_zh": "衍生等级", "displayNameID": 233633, "displayWhenZero": 1, "highIsGood": 1, "iconID": 1446, "name": "metaLevelOld", "published": 1, "stackable": 1, "unitID": 140 }, "634": { "attributeID": 634, "categoryID": 9, "dataType": 5, "defaultValue": 3.0, "description": "Maximum \"Thrust angle\" for an object in Radians, 0 to pi (3.14).", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "newAgility", "published": 0, "stackable": 1 }, "635": { "attributeID": 635, "categoryID": 9, "dataType": 5, "defaultValue": 3.0, "description": "Maximum turn angle of a ship in Radians, 0 to pi (3.14).", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "turnAngle", "published": 0, "stackable": 1 }, "636": { "attributeID": 636, "categoryID": 2, "dataType": 4, "defaultValue": 10000.0, "description": "How long between repeats.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDuration", "published": 0, "stackable": 1 }, "637": { "attributeID": 637, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "How much the shield is boosted each duration.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostAmount", "published": 0, "stackable": 1 }, "638": { "attributeID": 638, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Chance that an entity will delay employing armor repair.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChance", "published": 0, "stackable": 1 }, "639": { "attributeID": 639, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "The chance an entity will delay repeating use of its shield boosting effect if it has one.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChance", "published": 0, "stackable": 1 }, "640": { "attributeID": 640, "categoryID": 32, "dataType": 5, "defaultValue": 1.0, "description": "The chance an entity will respawn into his group if destroyed.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityGroupRespawnChance", "published": 0, "stackable": 1 }, "643": { "attributeID": 643, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Delay after launch until a missile will do damage on impact.", "displayName_de": "Bewaffnungszeit", "displayName_en-us": "Arming Time", "displayName_es": "Tiempo de colocación", "displayName_fr": "Temps d'armement", "displayName_it": "Arming Time", "displayName_ja": "準備時間", "displayName_ko": "타격 시간", "displayName_ru": "Время приведения в готовность", "displayName_zh": "待发状态启动时间", "displayNameID": 232958, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "armingTime", "published": 1, "stackable": 1, "unitID": 3 }, "644": { "attributeID": 644, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Determines wether a missile launches aligned with the ship (0) or directly at the target (1).", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "aimedLaunch", "published": 0, "stackable": 1 }, "645": { "attributeID": 645, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier for the missile's speed.", "displayName_de": "Raketengeschwindigkeit-Bonus", "displayName_en-us": "Missile Velocity Bonus", "displayName_es": "Bonificación de velocidad de misiles", "displayName_fr": "Bonus de vitesse des missiles", "displayName_it": "Missile Velocity Bonus", "displayName_ja": "ミサイル速度ボーナス", "displayName_ko": "미사일 속도 보너스", "displayName_ru": "Влияние на скорость полёта ракет", "displayName_zh": "导弹速度加成", "displayNameID": 233364, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityVelocityMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "646": { "attributeID": 646, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier for the missile's flight time.", "displayName_de": "Raketenflugzeit-Bonus", "displayName_en-us": "Missile Flight Time Bonus", "displayName_es": "Bonificación de tiempo de vuelo de misiles", "displayName_fr": "Bonus de temps de vol de missile", "displayName_it": "Missile Flight Time Bonus", "displayName_ja": "ミサイル飛行時間ボーナス", "displayName_ko": "미사일 비행 시간 보너스", "displayName_ru": "Влияние на полётное время ракет", "displayName_zh": "导弹飞行时间加成", "displayNameID": 233363, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityFlightTimeMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "647": { "attributeID": 647, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityArmingTimeMultiplier", "published": 0, "stackable": 1 }, "648": { "attributeID": 648, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildabstimmung-Bonus", "displayName_en-us": "Shield tuneup bonus", "displayName_es": "Bonificación de ajuste del escudo", "displayName_fr": "Bonus d'amélioration de bouclier", "displayName_it": "Shield tuneup bonus", "displayName_ja": "シールドチューンアップボーナス", "displayName_ko": "실드 튠업 보너스", "displayName_ru": "Влияние на доводку щита", "displayName_zh": "护盾调整加成", "displayNameID": 232937, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shieldTUNEBonus", "published": 1, "stackable": 1, "unitID": 113 }, "649": { "attributeID": 649, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cloakingCpuNeedBonus", "published": 0, "stackable": 1 }, "650": { "attributeID": 650, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The distance that structures have to be from a control tower in order to work with it.", "displayName_de": "Max. Strukturdistanz", "displayName_en-us": "Maximum Structure Distance", "displayName_es": "Distancia máxima de estructura", "displayName_fr": "Distance maximum de la structure", "displayName_it": "Maximum Structure Distance", "displayName_ja": "最大建造物距離", "displayName_ko": "최대 구조물 거리", "displayName_ru": "Максимальное расстояние до башни управления", "displayName_zh": "最大结构间距", "displayNameID": 233328, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxStructureDistance", "published": 1, "stackable": 1, "unitID": 1 }, "651": { "attributeID": 651, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Range of broadcasted decloaking field.", "displayName_de": "Wirkungsreichweite", "displayName_en-us": "Area of effect", "displayName_es": "Radio de acción", "displayName_fr": "Zone d'effet", "displayName_it": "Area of effect", "displayName_ja": "有効範囲", "displayName_ko": "유효 범위", "displayName_ru": "Зона действия", "displayName_zh": "效果范围", "displayNameID": 233076, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "decloakFieldRange", "published": 1, "stackable": 1, "unitID": 1 }, "652": { "attributeID": 652, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Signaturabzug", "displayName_en-us": "Signature Penalty", "displayName_es": "Penalización de señal", "displayName_fr": "Pénalité de signature", "displayName_it": "Signature Penalty", "displayName_ja": "シグネチャペナルティ", "displayName_ko": "시그니처 반경 페널티", "displayName_ru": "Штраф к радиусу сигнатуры", "displayName_zh": "信号强度惩罚", "displayNameID": 233216, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "signatureRadiusMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "653": { "attributeID": 653, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Velocity of the damage cloud created on impact.", "displayName_de": "Explosionsgeschwindigkeit", "displayName_en-us": "Explosion Velocity", "displayName_es": "Velocidad de explosión", "displayName_fr": "Vitesse d'explosion", "displayName_it": "Explosion Velocity", "displayName_ja": "爆発速度", "displayName_ko": "폭발속도", "displayName_ru": "Скорость взрыва", "displayName_zh": "爆炸速度", "displayNameID": 233562, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "aoeVelocity", "published": 1, "stackable": 0, "unitID": 10 }, "654": { "attributeID": 654, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Size of the damage cloud caused by impact.", "displayName_de": "Explosionsradius", "displayName_en-us": "Explosion Radius", "displayName_es": "Radio de explosión", "displayName_fr": "Rayon d'explosion", "displayName_it": "Explosion Radius", "displayName_ja": "爆発半径", "displayName_ko": "폭발반경", "displayName_ru": "Сигнатура взрыва", "displayName_zh": "爆炸半径", "displayNameID": 232953, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "aoeCloudSize", "published": 1, "stackable": 0, "unitID": 1 }, "655": { "attributeID": 655, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "aoeFalloff", "published": 0, "stackable": 1 }, "656": { "attributeID": 656, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAC2", "published": 0, "stackable": 1 }, "657": { "attributeID": 657, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCC2", "published": 0, "stackable": 1 }, "658": { "attributeID": 658, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGC2", "published": 0, "stackable": 1 }, "659": { "attributeID": 659, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMC2", "published": 0, "stackable": 1 }, "660": { "attributeID": 660, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The amount of kinetic damage that might be inflicted on collision.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "impactDamage", "published": 0, "stackable": 1, "unitID": 113 }, "661": { "attributeID": 661, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Deprecated.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxDirectionalVelocity", "published": 0, "stackable": 1 }, "662": { "attributeID": 662, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Deprecated.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "minTargetVelDmgMultiplier", "published": 0, "stackable": 1 }, "663": { "attributeID": 663, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "minMissileVelDmgMultiplier", "published": 0, "stackable": 1 }, "664": { "attributeID": 664, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "A multiplier used for the missile impact damage calculations.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxMissileVelocity", "published": 0, "stackable": 1 }, "665": { "attributeID": 665, "categoryID": 17, "dataType": 4, "defaultValue": 2500.0, "description": "The distance outside of which the entity activates their MWD equivalent.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityChaseMaxDistance", "published": 0, "stackable": 1, "unitID": 1 }, "666": { "attributeID": 666, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "This module only fits on specific ship groups. This is one of them.", "displayName_de": "Eingeschränkter Schiffstyp", "displayName_en-us": "Restricted Ship Type", "displayName_es": "Tipo de nave restringida", "displayName_fr": "Type de vaisseau limité", "displayName_it": "Restricted Ship Type", "displayName_ja": "制限船種", "displayName_ko": "제한된 함선 유형", "displayName_ru": "Ограничение по типу кораблей", "displayName_zh": "受限船型", "displayNameID": 233371, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moduleShipGroup2", "published": 1, "stackable": 1, "unitID": 115 }, "667": { "attributeID": 667, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "This module only fits on specific ship groups. This is one of them.", "displayName_de": "Eingeschränkter Schiffstyp", "displayName_en-us": "Restricted Ship Type", "displayName_es": "Tipo de nave restringida", "displayName_fr": "Type de vaisseau limité", "displayName_it": "Restricted Ship Type", "displayName_ja": "制限船種", "displayName_ko": "제한된 함선 유형", "displayName_ru": "Ограничение по типу кораблей", "displayName_zh": "受限船型", "displayNameID": 233373, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moduleShipGroup3", "published": 1, "stackable": 1, "unitID": 115 }, "668": { "attributeID": 668, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "This module only fits on specific ship groups. This is one of them.", "displayName_de": "Eingeschränkter Schiffstyp", "displayName_en-us": "Restricted Ship Type", "displayName_es": "Tipo de nave restringida", "displayName_fr": "Type de vaisseau limité", "displayName_it": "Restricted Ship Type", "displayName_ja": "制限船種", "displayName_ko": "제한된 함선 유형", "displayName_ru": "Ограничение по типу кораблей", "displayName_zh": "受限船型", "displayNameID": 233370, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moduleShipGroup1", "published": 1, "stackable": 1, "unitID": 115 }, "669": { "attributeID": 669, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Amount of time that has to be waited after the deactivation of this module until it can be reactivated.", "displayName_de": "Verzögerung für erneute Aktivierung", "displayName_en-us": "Reactivation Delay", "displayName_es": "Demora de reactivación", "displayName_fr": "Délai de réactivation", "displayName_it": "Reactivation Delay", "displayName_ja": "リアクション遅延", "displayName_ko": "재활성화 준비 시간", "displayName_ru": "Задержка повторного включения", "displayName_zh": "重启延迟", "displayNameID": 233368, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "moduleReactivationDelay", "published": 1, "stackable": 1, "unitID": 101 }, "670": { "attributeID": 670, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Wirkungsreichweite", "displayName_en-us": "Area Of Effect Bonus", "displayName_es": "Bonificación de radio de acción", "displayName_fr": "Bonus de zone d'effet", "displayName_it": "Area Of Effect Bonus", "displayName_ja": "有効範囲ボーナス", "displayName_ko": "유효 범위 보너스", "displayName_ru": "Повышение радиуса действия объёмного эффекта", "displayName_zh": "效果范围加成", "displayNameID": 232957, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "areaOfEffectBonus", "published": 1, "stackable": 1, "unitID": 105 }, "672": { "attributeID": 672, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Umkreisungsgeschwindigkeit-Bonus", "displayName_en-us": "Orbit Velocity Bonus", "displayName_es": "Bonificación de velocidad de órbita", "displayName_fr": "Bonus de vitesse en orbite", "displayName_it": "Orbit Velocity Bonus", "displayName_ja": "旋回速度ボーナス", "displayName_ko": "선회 속도 보너스", "displayName_ru": "Влияние на скорость движения по орбите", "displayName_zh": "环绕速度加成", "displayNameID": 233159, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityCruiseSpeedMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "673": { "attributeID": 673, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusGunship1", "published": 0, "stackable": 1 }, "675": { "attributeID": 675, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusGunship2", "published": 0, "stackable": 1 }, "676": { "attributeID": 676, "categoryID": 7, "dataType": 4, "defaultValue": 60000.0, "description": "How long it takes to unanchor this object.", "displayName_de": "Entankerungsverzögerung", "displayName_en-us": "Unanchoring Delay", "displayName_es": "Demora de desanclaje", "displayName_fr": "Délai de détachement", "displayName_it": "Unanchoring Delay", "displayName_ja": "係留解除遅延", "displayName_ko": "위치 고정 해제 시간", "displayName_ru": "Время снятия с якоря", "displayName_zh": "解锚耗时", "displayNameID": 233153, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "unanchoringDelay", "published": 1, "stackable": 1, "unitID": 101 }, "677": { "attributeID": 677, "categoryID": 7, "dataType": 4, "defaultValue": 60000.0, "description": "How long it takes to bring this object online.", "displayName_de": "Einschaltverzögerung", "displayName_en-us": "Onlining Delay", "displayName_es": "Demora de conexión", "displayName_fr": "Délai de mise en ligne", "displayName_it": "Onlining Delay", "displayName_ja": "オンライン化遅延", "displayName_ko": "온라인 준비 시간", "displayName_ru": "Время включения", "displayName_zh": "上线耗时", "displayNameID": 233380, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "onliningDelay", "published": 1, "stackable": 1, "unitID": 101 }, "678": { "attributeID": 678, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "first bonus for support cruisers", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusLogistics1", "published": 0, "stackable": 1 }, "679": { "attributeID": 679, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "second bonus for support cruisers", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusLogistics2", "published": 0, "stackable": 1 }, "680": { "attributeID": 680, "categoryID": 2, "dataType": 4, "defaultValue": 0.0, "description": "Radius of the force shield that this structure generates.", "displayName_de": "Schildradius", "displayName_en-us": "Shield Radius", "displayName_es": "Radio del escudo", "displayName_fr": "Rayon du bouclier", "displayName_it": "Shield Radius", "displayName_ja": "シールド半径", "displayName_ko": "실드 반경", "displayName_ru": "Радиус силового поля", "displayName_zh": "护盾半径", "displayNameID": 232940, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shieldRadius", "published": 1, "stackable": 1, "unitID": 1 }, "681": { "attributeID": 681, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "A type allowed to be placed in this container.", "displayName_de": "Gelagerter Typ 1", "displayName_en-us": "Stored Type 1", "displayName_es": "Stored Type 1", "displayName_fr": "Type stocké 1", "displayName_it": "Stored Type 1", "displayName_ja": "格納タイプ 1", "displayName_ko": "보관 분류 1", "displayName_ru": "Тип хранения 1", "displayName_zh": "贮藏种类1", "displayNameID": 233057, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerType1", "published": 1, "stackable": 1, "unitID": 116 }, "682": { "attributeID": 682, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "A type allowed to be placed in this container.", "displayName_de": "Gelagerter Typ 2", "displayName_en-us": "Stored Type 2", "displayName_es": "Tipo de almacenaje 2", "displayName_fr": "Type stocké 2", "displayName_it": "Stored Type 2", "displayName_ja": "格納タイプ 2", "displayName_ko": "보관 분류 2", "displayName_ru": "Тип хранения 2", "displayName_zh": "贮藏种类1", "displayNameID": 233055, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerType2", "published": 1, "stackable": 1, "unitID": 116 }, "683": { "attributeID": 683, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "A type allowed to be placed in this container.", "displayName_de": "Gelagerter Typ 3", "displayName_en-us": "Stored Type 3", "displayName_es": "Tipo de almacenaje 3", "displayName_fr": "Type stocké 3", "displayName_it": "Stored Type 3", "displayName_ja": "格納タイプ 3", "displayName_ko": "보관 분류 3", "displayName_ru": "Тип хранения 3", "displayName_zh": "贮藏种类3", "displayNameID": 233053, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerType3", "published": 1, "stackable": 1, "unitID": 116 }, "684": { "attributeID": 684, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of storage type 1 that can be fitted inside this structure.", "displayName_de": "Lagerkapazität 1", "displayName_en-us": "Storage Capacity 1", "displayName_es": "Capacidad de almacenamiento 1", "displayName_fr": "Capacité de stockage 1", "displayName_it": "Storage Capacity 1", "displayName_ja": "ストレージ容量 1", "displayName_ko": "구조물 적재량 1", "displayName_ru": "Емкость хранилища 1", "displayName_zh": "储藏容量1", "displayNameID": 233062, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerCapacity1", "published": 1, "stackable": 1, "unitID": 9 }, "685": { "attributeID": 685, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of storage type 2 that can be fitted inside this structure.", "displayName_de": "Lagerkapazität 2", "displayName_en-us": "Storage Capacity 2", "displayName_es": "Capacidad de almacenamiento 2", "displayName_fr": "Capacité de stockage 2", "displayName_it": "Storage Capacity 2", "displayName_ja": "ストレージ容量 2", "displayName_ko": "구조물 적재량 2", "displayName_ru": "Емкость хранилища 2", "displayName_zh": "储藏容量2", "displayNameID": 233060, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerCapacity2", "published": 1, "stackable": 1, "unitID": 9 }, "686": { "attributeID": 686, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of storage type 3 that can be fitted inside this structure.", "displayName_de": "Lagerkapazität 3", "displayName_en-us": "Storage Capacity 3", "displayName_es": "Capacidad de almacenamiento 3", "displayName_fr": "Capacité de stockage 3", "displayName_it": "Storage Capacity 3", "displayName_ja": "ストレージ容量 3", "displayName_ko": "구조물 적재량 3", "displayName_ru": "Емкость хранилища 3", "displayName_zh": "储藏容量3", "displayNameID": 233059, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "typeContainerCapacity3", "published": 1, "stackable": 1, "unitID": 9 }, "687": { "attributeID": 687, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The number of units of a resource consumed per minute of operation.", "displayName_de": "Betriebsverbrauchsrate", "displayName_en-us": "Operation Consumption Rate", "displayName_es": "Tasa de consumo operativa", "displayName_fr": "Taux de consommation en activité", "displayName_it": "Operation Consumption Rate", "displayName_ja": "オペレーション消費率", "displayName_ko": "작동 소모율", "displayName_ru": "Темп рабочего потребления", "displayName_zh": "运转消耗率", "displayNameID": 233383, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "operationConsumptionRate", "published": 1, "stackable": 1 }, "688": { "attributeID": 688, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The number of units of a resource consumed per minute of reinforced mode.", "displayName_de": "Verstärkte Verbrauchsrate", "displayName_en-us": "Reinforced Consumption Rate", "displayName_es": "Tasa de consumo reforzado", "displayName_fr": "Taux de consommation renforcé", "displayName_it": "Reinforced Consumption Rate", "displayName_ja": "強化消費率", "displayName_ko": "강화 소모율", "displayName_ru": "Скорость расхода в режиме неуязвимости", "displayName_zh": "增强状态消耗率", "displayNameID": 233332, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reinforcedConsumptionRate", "published": 1, "stackable": 1 }, "689": { "attributeID": 689, "categoryID": 9, "dataType": 4, "defaultValue": 2391.0, "description": "The graphicID used for the structure when it is in package form.", "displayWhenZero": 0, "highIsGood": 1, "name": "packageGraphicID", "published": 0, "stackable": 1 }, "690": { "attributeID": 690, "categoryID": 9, "dataType": 5, "defaultValue": 250.0, "description": "The radius of the structure when it is in package form.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "packageRadius", "published": 0, "stackable": 1 }, "691": { "attributeID": 691, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The amount of time after attacking a target that an entity will wait before switching to a new one.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "targetSwitchDelay", "published": 0, "stackable": 1, "unitID": 101 }, "692": { "attributeID": 692, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusHeavyGunship1", "published": 0, "stackable": 1 }, "693": { "attributeID": 693, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusHeavyGunship2", "published": 0, "stackable": 1 }, "694": { "attributeID": 694, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Typ", "displayName_en-us": "Reinforced Mode Type", "displayName_es": "Tipo de modo reforzado", "displayName_fr": "Type de mode renforcé", "displayName_it": "Reinforced Mode Type", "displayName_ja": "リインフォースモードタイプ", "displayName_ko": "강화 모드 분류", "displayName_ru": "Тип в режиме неуязвимости", "displayName_zh": "增强模式类别", "displayNameID": 233106, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced1Type", "published": 1, "stackable": 1, "unitID": 116 }, "695": { "attributeID": 695, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Typ", "displayName_en-us": "Reinforced Mode Type", "displayName_es": "Tipo de modo reforzado", "displayName_fr": "Type de mode renforcé", "displayName_it": "Reinforced Mode Type", "displayName_ja": "リインフォースモードタイプ", "displayName_ko": "강화 모드 분류", "displayName_ru": "Тип в режиме неуязвимости", "displayName_zh": "增强模式类别", "displayNameID": 233112, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced2Type", "published": 1, "stackable": 1, "unitID": 116 }, "696": { "attributeID": 696, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Typ", "displayName_en-us": "Reinforced Mode Type", "displayName_es": "Tipo de modo reforzado", "displayName_fr": "Type de mode renforcé", "displayName_it": "Reinforced Mode Type", "displayName_ja": "リインフォースモードタイプ", "displayName_ko": "강화 모드 분류", "displayName_ru": "Тип в режиме неуязвимости", "displayName_zh": "增强模式类别", "displayNameID": 233116, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced3Type", "published": 1, "stackable": 1, "unitID": 116 }, "697": { "attributeID": 697, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Typ", "displayName_en-us": "Reinforced Mode Type", "displayName_es": "Tipo de modo reforzado", "displayName_fr": "Type de mode renforcé", "displayName_it": "Reinforced Mode Type", "displayName_ja": "リインフォースモードタイプ", "displayName_ko": "강화 모드 분류", "displayName_ru": "Тип в режиме неуязвимости", "displayName_zh": "增强模式类别", "displayNameID": 233119, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced4Type", "published": 1, "stackable": 1, "unitID": 116 }, "698": { "attributeID": 698, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Typ", "displayName_en-us": "Reinforced Mode Type", "displayName_es": "Tipo de modo reforzado", "displayName_fr": "Type de mode renforcé", "displayName_it": "Reinforced Mode Type", "displayName_ja": "リインフォースモードタイプ", "displayName_ko": "강화 모드 분류", "displayName_ru": "Тип в режиме неуязвимости", "displayName_zh": "增强模式类别", "displayNameID": 233121, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced5Type", "published": 1, "stackable": 1, "unitID": 116 }, "699": { "attributeID": 699, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Anzahl", "displayName_en-us": "Reinforced Mode Quantity", "displayName_es": "Cantidad de modo reforzado", "displayName_fr": "Quantité de mode renforcé", "displayName_it": "Reinforced Mode Quantity", "displayName_ja": "リインフォースモード数量", "displayName_ko": "강화 모드 수량", "displayName_ru": "Количество в режиме неуязвимости", "displayName_zh": "增强模式数量", "displayNameID": 233105, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced1Quantity", "published": 1, "stackable": 1, "unitID": 9 }, "700": { "attributeID": 700, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Anzahl", "displayName_en-us": "Reinforced Mode Quantity", "displayName_es": "Cantidad de modo reforzado", "displayName_fr": "Quantité de mode renforcé", "displayName_it": "Reinforced Mode Quantity", "displayName_ja": "リインフォースモード数量", "displayName_ko": "강화 모드 수량", "displayName_ru": "Количество в режиме неуязвимости", "displayName_zh": "增强模式数量", "displayNameID": 233108, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced2Quantity", "published": 1, "stackable": 1, "unitID": 9 }, "701": { "attributeID": 701, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Anzahl", "displayName_en-us": "Reinforced Mode Quantity", "displayName_es": "Cantidad de modo reforzado", "displayName_fr": "Quantité de mode renforcé", "displayName_it": "Reinforced Mode Quantity", "displayName_ja": "リインフォースモード数量", "displayName_ko": "강화 모드 수량", "displayName_ru": "Количество в режиме неуязвимости", "displayName_zh": "增强模式数量", "displayNameID": 233113, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced3Quantity", "published": 1, "stackable": 1, "unitID": 9 }, "703": { "attributeID": 703, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Anzahl", "displayName_en-us": "Reinforced Mode Quantity", "displayName_es": "Cantidad de modo reforzado", "displayName_fr": "Quantité de mode renforcé", "displayName_it": "Reinforced Mode Quantity", "displayName_ja": "リインフォースモード数量", "displayName_ko": "강화 모드 수량", "displayName_ru": "Количество в режиме неуязвимости", "displayName_zh": "增强模式数量", "displayNameID": 233118, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced4Quantity", "published": 1, "stackable": 1, "unitID": 9 }, "704": { "attributeID": 704, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Reinforcement Modus-Anzahl", "displayName_en-us": "Reinforced Mode Quantity", "displayName_es": "Cantidad de modo reforzado", "displayName_fr": "Quantité de mode renforcé", "displayName_it": "Reinforced Mode Quantity", "displayName_ja": "リインフォースモード数量", "displayName_ko": "강화 모드 수량", "displayName_ru": "Количество в режиме неуязвимости", "displayName_zh": "增强模式数量", "displayNameID": 233120, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceReinforced5Quantity", "published": 1, "stackable": 1, "unitID": 9 }, "705": { "attributeID": 705, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Onlinemodus-Typ", "displayName_en-us": "Online Mode Type", "displayName_es": "Online Mode Type", "displayName_fr": "Type de mode de connexion", "displayName_it": "Online Mode Type", "displayName_ja": "オンラインモードタイプ", "displayName_ko": "온라인 모드 종류", "displayName_ru": "Тип во включенном режиме", "displayName_zh": "上线模式", "displayNameID": 233098, "displayWhenZero": 0, "highIsGood": 1, "name": "resourceOnline1Type", "published": 1, "stackable": 1, "unitID": 116 }, "706": { "attributeID": 706, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Onlinemodus-Typ", "displayName_en-us": "Online Mode Type", "displayName_es": "Online Mode Type", "displayName_fr": "Type de mode de connexion", "displayName_it": "Online Mode Type", "displayName_ja": "オンラインモードタイプ", "displayName_ko": "온라인 모드 종류", "displayName_ru": "Тип во включенном режиме", "displayName_zh": "上线模式", "displayNameID": 233100, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceOnline2Type", "published": 1, "stackable": 1, "unitID": 116 }, "707": { "attributeID": 707, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Onlinemodus-Typ", "displayName_en-us": "Online Mode Type", "displayName_es": "Tipo de modo en línea", "displayName_fr": "Type de mode de connexion", "displayName_it": "Online Mode Type", "displayName_ja": "オンラインモードタイプ", "displayName_ko": "온라인 모드 종류", "displayName_ru": "Тип во включенном режиме", "displayName_zh": "上线模式", "displayNameID": 233101, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceOnline3Type", "published": 1, "stackable": 1, "unitID": 116 }, "708": { "attributeID": 708, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Onlinemodus-Typ", "displayName_en-us": "Online Mode Type", "displayName_es": "Online Mode Type", "displayName_fr": "Type de mode de connexion", "displayName_it": "Online Mode Type", "displayName_ja": "オンラインモードタイプ", "displayName_ko": "온라인 모드 종류", "displayName_ru": "Тип во включенном режиме", "displayName_zh": "上线模式", "displayNameID": 233103, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "resourceOnline4Type", "published": 1, "stackable": 1 }, "709": { "attributeID": 709, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The type of material harvested.", "displayName_de": "Abgebauter Typ", "displayName_en-us": "Harvested Type", "displayName_es": "Tipo recolectado", "displayName_fr": "Type récolté", "displayName_it": "Harvested Type", "displayName_ja": "採掘タイプ", "displayName_ko": "수확물 분류", "displayName_ru": "Тип ресурса", "displayName_zh": "采集类别", "displayNameID": 233215, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "harvesterType", "published": 1, "stackable": 1, "unitID": 116 }, "710": { "attributeID": 710, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The quality of the material harvested.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "harvesterQuality", "published": 0, "stackable": 1 }, "711": { "attributeID": 711, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "How many meters from the standard warp-in distance a moon can be anchored from.", "displayName_de": "Mond-Verankerungsdistanz", "displayName_en-us": "Moon Anchor Distance", "displayName_es": "Distancia de anclaje a luna", "displayName_fr": "Distance d'ancrage de lune", "displayName_it": "Moon Anchor Distance", "displayName_ja": "衛星係留距離", "displayName_ko": "위성 정박 거리", "displayName_ru": "Расстояние анкеровки от луны", "displayName_zh": "卫星锚定距离", "displayNameID": 233374, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moonAnchorDistance", "published": 1, "stackable": 1, "unitID": 1 }, "712": { "attributeID": 712, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "How much a charge used by this object is damaged each time the object operates.", "displayName_de": "Durch Ladung verursachter Schaden", "displayName_en-us": "Charge Usage Damage", "displayName_es": "Daño de uso de carga", "displayName_fr": "Dégâts d'utilisation des charges", "displayName_it": "Charge Usage Damage", "displayName_ja": "チャージ消費ダメージ", "displayName_ko": "차지 손상도", "displayName_ru": "Повреждения зарядам", "displayName_zh": "弹药损耗", "displayNameID": 233146, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "usageDamagePercent", "published": 1, "stackable": 1, "unitID": 105 }, "713": { "attributeID": 713, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The type of resource needed to be consumed for each activation cycle of this structure.", "displayName_de": "Verbrauchstyp", "displayName_en-us": "Consumption Type", "displayName_es": "Tipo de consumo", "displayName_fr": "Type de consommation", "displayName_it": "Consumption Type", "displayName_ja": "消費タイプ", "displayName_ko": "사용 연료", "displayName_ru": "Тип потребляемого топлива", "displayName_zh": "消耗类型", "displayNameID": 233034, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "consumptionType", "published": 1, "stackable": 1, "unitID": 116 }, "714": { "attributeID": 714, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of the given resource type needed to be consumed for each activation cycle of this structure.", "displayName_de": "Verbrauchsmenge", "displayName_en-us": "Consumption Quantity", "displayName_es": "Cantidad de consumo", "displayName_fr": "Quantité consommée", "displayName_it": "Consumption Quantity", "displayName_ja": "消費量", "displayName_ko": "소모량", "displayName_ru": "Количество потребления", "displayName_zh": "消耗量", "displayNameID": 233610, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "consumptionQuantity", "published": 1, "stackable": 1, "unitID": 138 }, "715": { "attributeID": 715, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The maximum distance at which the object can be used.", "displayName_de": "Max. Bedienungsentfernung", "displayName_en-us": "Maximum Operational Distance", "displayName_es": "Distancia máxima de funcionamiento", "displayName_fr": "Distance opérationnelle maximale", "displayName_it": "Maximum Operational Distance", "displayName_ja": "最大オペレーション範囲", "displayName_ko": "최대 작동 거리", "displayName_ru": "Максимальная рабочая дистанция", "displayName_zh": "最大操控范围", "displayNameID": 233312, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxOperationalDistance", "published": 1, "stackable": 1, "unitID": 1 }, "716": { "attributeID": 716, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The maximum number of users that can be present within the operational range of the structure for it to be capable of operation.", "displayName_de": "Max. gleichzeitige Nutzer", "displayName_en-us": "Maximum Concurrent Operational Users", "displayName_es": "Máximo de usuarios operativos simultáneos", "displayName_fr": "Nombre max d'utilisateurs opérationnels simultanés", "displayName_it": "Maximum Concurrent Operational Users", "displayName_ja": "最大同時使用ユーザー数", "displayName_ko": "최대 동시 작동 유저 수", "displayName_ru": "Максимальное количество одновременно работающих пользователей", "displayName_zh": "同时使用用户数上限", "displayNameID": 233313, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxOperationalUsers", "published": 1, "stackable": 1 }, "717": { "attributeID": 717, "categoryID": 7, "dataType": 5, "defaultValue": 0.5, "description": "The factor by which the structure modifies the using pilot's refining yield rate.", "displayName_de": "Raffinierertrag-Multiplikator", "displayName_en-us": "Refining Yield Multiplier", "displayName_es": "Multiplicador de rendimiento de refinado", "displayName_fr": "Multiplicateur de rendement de raffinage", "displayName_it": "Refining Yield Multiplier", "displayName_ja": "精錬量乗数", "displayName_ko": "정제 처리 배수", "displayName_ru": "Коэффициент выработки", "displayName_zh": "提炼产量系数", "displayNameID": 233341, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningYieldMultiplier", "published": 1, "stackable": 1, "unitID": 127 }, "719": { "attributeID": 719, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of time that is taken to refine the ore into the end product. The structure is busy for the length of this process.", "displayName_de": "Betriebsdauer", "displayName_en-us": "Operational Duration", "displayName_es": "Duración operativa", "displayName_fr": "Durée opérationnelle", "displayName_it": "Operational Duration", "displayName_ja": "オペレーション期間", "displayName_ko": "작동 지속시간", "displayName_ru": "Длительность работы", "displayName_zh": "运转持续时间", "displayNameID": 233382, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "operationalDuration", "published": 1, "stackable": 1, "unitID": 101 }, "720": { "attributeID": 720, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "The capacity of the refinery container.", "displayName_de": "Raffineriekapazität", "displayName_en-us": "Refinery Capacity", "displayName_es": "Capacidad de refinería", "displayName_fr": "Capacité de raffinage", "displayName_it": "Refinery Capacity", "displayName_ja": "精錬所容量", "displayName_ko": "정제소 적재량", "displayName_ru": "Ёмкость перерабатывающего модуля", "displayName_zh": "精炼能力", "displayNameID": 233351, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refineryCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "721": { "attributeID": 721, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "The factor by which the character can effect the amount of time that the Refining Delay takes.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "refiningDelayMultiplier", "published": 0, "stackable": 1 }, "722": { "attributeID": 722, "categoryID": 7, "dataType": 4, "defaultValue": 10000.0, "description": "The interval for fuel consumption of a control tower", "displayName_de": "Starbase-Kontrollturm-Zeitraum", "displayName_en-us": "Starbase Control Tower Period", "displayName_es": "Periodo de torre de control de la base estelar", "displayName_fr": "Période de tour de contrôle de base stellaire", "displayName_it": "Starbase Control Tower Period", "displayName_ja": "スターベースコントロールタワー周期", "displayName_ko": "스타베이스 관제타워 시간", "displayName_ru": "Продолжительность цикла энергопотребления", "displayName_zh": "母星控制塔周期", "displayNameID": 233407, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "posControlTowerPeriod", "published": 1, "stackable": 1, "unitID": 101 }, "723": { "attributeID": 723, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "The chance that the customs official has of detecting contraband on board a scanned vessel", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "contrabandDetectionChance", "published": 0, "stackable": 1 }, "724": { "attributeID": 724, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "A modifier to the chance of contraband detection success of police who scan the pilot's vessel.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "contrabandDetectionResistance", "published": 0, "stackable": 1 }, "725": { "attributeID": 725, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "The chance that a passer by will be chosen as a target of a scan for contraband.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "contrabandScanChance", "published": 0, "stackable": 1 }, "726": { "attributeID": 726, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "", "displayName_de": "Mond-Bergbauertrag", "displayName_en-us": "Moon Mining Amount", "displayName_es": "Cantidad extraída lunar", "displayName_fr": "Quantité d'extraction lunaire", "displayName_it": "Moon Mining Amount", "displayName_ja": "衛星採掘量", "displayName_ko": "위성 채굴 총량", "displayName_ru": "Объем лунной добычи", "displayName_zh": "卫星开采量", "displayNameID": 233430, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moonMiningAmount", "published": 1, "stackable": 1, "unitID": 9 }, "727": { "attributeID": 727, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "destroyerROFpenality", "published": 0, "stackable": 1 }, "728": { "attributeID": 728, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerLaserDamageBonus", "published": 0, "stackable": 1, "unitID": 105 }, "729": { "attributeID": 729, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusMD1", "published": 0, "stackable": 1 }, "732": { "attributeID": 732, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusD1", "published": 0, "stackable": 1 }, "733": { "attributeID": 733, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusD2", "published": 0, "stackable": 1 }, "734": { "attributeID": 734, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCD1", "published": 0, "stackable": 1 }, "735": { "attributeID": 735, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCD2", "published": 0, "stackable": 1 }, "738": { "attributeID": 738, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGD1", "published": 0, "stackable": 1 }, "739": { "attributeID": 739, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGD2", "published": 0, "stackable": 1 }, "740": { "attributeID": 740, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusMD2", "published": 0, "stackable": 1 }, "741": { "attributeID": 741, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusBC1", "published": 0, "stackable": 1 }, "742": { "attributeID": 742, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusBC2", "published": 0, "stackable": 1 }, "743": { "attributeID": 743, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCBC1", "published": 0, "stackable": 1 }, "745": { "attributeID": 745, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCBC2", "published": 0, "stackable": 1 }, "746": { "attributeID": 746, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGBC2", "published": 0, "stackable": 1 }, "747": { "attributeID": 747, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGBC1", "published": 0, "stackable": 1 }, "748": { "attributeID": 748, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusMBC1", "published": 0, "stackable": 1 }, "749": { "attributeID": 749, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusMBC2", "published": 0, "stackable": 1 }, "750": { "attributeID": 750, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerLaserOptimalBonus", "published": 0, "stackable": 1, "unitID": 105 }, "751": { "attributeID": 751, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Hybridposten-Optimum-Bonus", "displayName_en-us": "Hybrid Sentry Optimal Bonus", "displayName_es": "Bonificación de alcance óptimo de centinelas híbridos", "displayName_fr": "Bonus optimal de sentinelle hybride", "displayName_it": "Hybrid Sentry Optimal Bonus", "displayName_ja": "ハイブリッドセントリー最適射程距離ボーナス", "displayName_ko": "하이브리드 센트리 최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность гибридных стационарных орудий", "displayName_zh": "混合岗哨炮最佳射程加成", "displayNameID": 233038, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerHybridOptimalBonus", "published": 1, "stackable": 1, "unitID": 105 }, "752": { "attributeID": 752, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerProjectileOptimalBonus", "published": 0, "stackable": 1, "unitID": 105 }, "753": { "attributeID": 753, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerProjectileFallOffBonus", "published": 0, "stackable": 1, "unitID": 105 }, "754": { "attributeID": 754, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerProjectileROFBonus", "published": 0, "stackable": 1, "unitID": 105 }, "755": { "attributeID": 755, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerMissileROFBonus", "published": 0, "stackable": 1, "unitID": 105 }, "756": { "attributeID": 756, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerMoonHarvesterCPUBonus", "published": 0, "stackable": 1, "unitID": 105 }, "757": { "attributeID": 757, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerSiloCapacityBonus", "published": 0, "stackable": 1, "unitID": 105 }, "758": { "attributeID": 758, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "destroyers attribute 1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusDF1", "published": 0, "stackable": 1 }, "759": { "attributeID": 759, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "destroyer attribute 2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusDF2", "published": 0, "stackable": 1 }, "760": { "attributeID": 760, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Laserposten-Umgebung-Bonus", "displayName_en-us": "Laser Sentry Proximity Bonus", "displayName_es": "Bonificación de proximidad de centinelas láser", "displayName_fr": "Bonus de proximité de sentinelle laser", "displayName_it": "Laser Sentry Proximity Bonus", "displayName_ja": "レーザーセントリー近接ボーナス", "displayName_ko": "레이저 센트리 근접 보너스", "displayName_ru": "Влияние на дистанцию включения лазерных стационарных орудий", "displayName_zh": "激光岗哨炮激活范围加成", "displayNameID": 233040, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerLaserProximityRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "761": { "attributeID": 761, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Projektil-Sentry-Umgebung-Bonus", "displayName_en-us": "Projectile Sentry Proximity Bonus", "displayName_es": "Bonificación de proximidad de centinela de proyectiles", "displayName_fr": "Bonus de proximité de sentinelle à projectiles", "displayName_it": "Projectile Sentry Proximity Bonus", "displayName_ja": "プロジェクタイルセントリー近接ボーナス", "displayName_ko": "발사체 센트리 근접 보너스", "displayName_ru": "Влияние на дистанцию включения баллистических стационарных орудий", "displayName_zh": "射弹岗哨炮激活范围加成", "displayNameID": 233042, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerProjectileProximityRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "762": { "attributeID": 762, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Hybridposten-Umgebung-Bonus", "displayName_en-us": "Hybrid Sentry Proximity Bonus", "displayName_es": "Bonificación de proximidad de centinelas híbridos", "displayName_fr": "Bonus de proximité de sentinelle hybride", "displayName_it": "Hybrid Sentry Proximity Bonus", "displayName_ja": "ハイブリッドセントリー近接ボーナス", "displayName_ko": "하이브리드 센트리 근접 보너스", "displayName_ru": "Влияние на дистанцию включения гибридных стационарных орудий", "displayName_zh": "混合岗哨炮激活范围加成", "displayNameID": 233039, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerHybridProximityRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "763": { "attributeID": 763, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum modules of same group that can be activated at same time, 0 = no limit, 1 = 1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxGroupActive", "published": 0, "stackable": 1 }, "764": { "attributeID": 764, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Zielstördauer-Bonus", "displayName_en-us": "Target Jamming Duration Bonus", "displayName_es": "Bonificación de duración de perturbación de objetivos", "displayName_fr": "Bonus de durée de brouillage de la cible", "displayName_it": "Target Jamming Duration Bonus", "displayName_ja": "ターゲットジャミング持続時間ボーナス", "displayName_ko": "타겟 재밍 지속시간 보너스", "displayName_ru": "Влияние на время цикла модулей глушения захвата целей", "displayName_zh": "目标干扰持续时间加成", "displayNameID": 233037, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerEwRofBonus", "published": 1, "stackable": 1, "unitID": 105 }, "765": { "attributeID": 765, "categoryID": 7, "dataType": 5, "defaultValue": 10.0, "description": "Effective range of scanner in multiples of AUs", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanRange", "published": 0, "stackable": 1 }, "766": { "attributeID": 766, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerHybridDamageBonus", "published": 0, "stackable": 1, "unitID": 105 }, "767": { "attributeID": 767, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Tracking Speed Bonus", "displayName_de": "Nachführungsgeschwindigkeit-Bonus", "displayName_en-us": "Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo", "displayName_fr": "Bonus de vitesse de poursuite", "displayName_it": "Tracking Speed Bonus", "displayName_ja": "追跡速度ボーナス", "displayName_ko": "트래킹 속도 보너스", "displayName_ru": "Влияние на скорость наводки", "displayName_zh": "跟踪速度加成", "displayNameID": 233167, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "trackingSpeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "769": { "attributeID": 769, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Optimale Reichweite-Bonus", "displayName_en-us": "Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo", "displayName_fr": "Bonus de portée optimale", "displayName_it": "Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス", "displayName_ko": "최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность", "displayName_zh": "最佳射程加成", "displayNameID": 233318, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxRangeBonus2", "published": 1, "stackable": 1, "unitID": 105 }, "770": { "attributeID": 770, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Bonus attribute to entity Target Switch Delay", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerEwTargetSwitchDelayBonus", "published": 0, "stackable": 1, "unitID": 105 }, "771": { "attributeID": 771, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ammoCapacity", "published": 0, "stackable": 1 }, "772": { "attributeID": 772, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityFlyRangeFactor", "published": 0, "stackable": 1 }, "773": { "attributeID": 773, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "ORE mining barge bonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORE1", "published": 0, "stackable": 1 }, "774": { "attributeID": 774, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "ORE Mining barge bonus 2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORE2", "published": 0, "stackable": 1 }, "775": { "attributeID": 775, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "funky stuff for mining barges", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "miningCPUNeedBonus", "published": 0, "stackable": 1 }, "776": { "attributeID": 776, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Velocity %bonus for given missile group for missile batteries.", "displayName_de": "Raketengeschwindigkeit-Bonus", "displayName_en-us": "Missile Velocity Bonus", "displayName_es": "Bonificación de velocidad de misiles", "displayName_fr": "Bonus de vitesse des missiles", "displayName_it": "Missile Velocity Bonus", "displayName_ja": "ミサイル速度ボーナス", "displayName_ko": "미사일 속도 보너스", "displayName_ru": "Влияние на скорость полёта ракет", "displayName_zh": "导弹速度加成", "displayNameID": 233186, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureMissileVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "777": { "attributeID": 777, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage %bonus for given missile group for missile batteries.", "displayName_de": "Raketenschaden-Bonus", "displayName_en-us": "Missile Damage Bonus", "displayName_es": "Bonificación de daño de misiles", "displayName_fr": "Bonus de dégât des missiles", "displayName_it": "Missile Damage Bonus", "displayName_ja": "ミサイルダメージボーナス", "displayName_ko": "미사일 피해 보너스", "displayName_ru": "Влияние на урон БЧ ракет", "displayName_zh": "导弹伤害加成", "displayNameID": 233188, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureMissileDamageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "778": { "attributeID": 778, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Exploision Delay (range) bonus for missile batteries", "displayName_de": "Raketenexplosionsverzögerung-Bonus", "displayName_en-us": "Missile Explosion Delay Bonus", "displayName_es": "Bonificación de demora de explosión de misiles", "displayName_fr": "Bonus de délai d'explosion des missiles", "displayName_it": "Missile Explosion Delay Bonus", "displayName_ja": "ミサイル爆発遅延ボーナス", "displayName_ko": "미사일 폭발 지연 보너스", "displayName_ru": "Влияние на задержку взрыва ракет", "displayName_zh": "导弹爆炸延迟加成", "displayNameID": 233187, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureMissileExplosionDelayBonus", "published": 1, "stackable": 1, "unitID": 105 }, "779": { "attributeID": 779, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "For charges, hidden attribute used by sentry guns to modify target pick range.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityFlyRangeMultiplier", "published": 0, "stackable": 1 }, "780": { "attributeID": 780, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Zyklusdauerbonus", "displayName_en-us": "Cycle Time bonus", "displayName_es": "Bonificación de tiempo de ciclo", "displayName_fr": "Bonus de temps de cycle", "displayName_it": "Cycle Time bonus", "displayName_ja": "サイクル時間ボーナス", "displayName_ko": "사이클 시간 보너스", "displayName_ru": "Влияние на время цикла", "displayName_zh": "循环时间加成", "displayNameID": 233230, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "iceHarvestCycleBonus", "published": 1, "stackable": 1, "unitID": 105 }, "781": { "attributeID": 781, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "The group at which the mining crystal is tuned to mine.", "displayName_de": "Asteroiden-Spezialisierungsgruppe", "displayName_en-us": "Asteroid Specialization Group", "displayName_es": "Grupo de especialización asteroidal", "displayName_fr": "Groupe de spécialisation en astéroïdes", "displayName_it": "Asteroid Specialization Group", "displayName_ja": "アステロイド専門グループ", "displayName_ko": "특화 광석", "displayName_ru": "Группа специализации на астероидах", "displayName_zh": "专精矿种", "displayNameID": 233440, "displayWhenZero": 0, "highIsGood": 1, "name": "specializationAsteroidGroup", "published": 1, "stackable": 1, "unitID": 115 }, "782": { "attributeID": 782, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "The amount the yield is modified when mining the asteroid group this crystal is tuned for.", "displayName_de": "Ertragsmodifikator für Asteroiden-Spezialisierung", "displayName_en-us": "Asteroid Specialization Yield Modifier", "displayName_es": "Modificador de rendimiento por especialización asteroidal", "displayName_fr": "Modificateur de rendement de la spécialisation en astéroïdes", "displayName_it": "Asteroid Specialization Yield Modifier", "displayName_ja": "アステロイド専門採掘量修正乗数", "displayName_ko": "특화 광석 채굴량 배수", "displayName_ru": "Модификатор выработки для специализованности", "displayName_zh": "专精矿种产量调整", "displayNameID": 233439, "displayWhenZero": 0, "highIsGood": 1, "name": "specializationAsteroidYieldMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "783": { "attributeID": 783, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The chance of damage to the crystal each time it is used.", "displayName_de": "Flüchtigkeit", "displayName_en-us": "Volatility", "displayName_es": "Volatilidad", "displayName_fr": "Volatilité", "displayName_it": "Volatility", "displayName_ja": "不安定性", "displayName_ko": "손상 확률", "displayName_ru": "Хрупкость", "displayName_zh": "挥发度", "displayNameID": 233067, "displayWhenZero": 0, "highIsGood": 1, "name": "crystalVolatilityChance", "published": 1, "stackable": 1, "tooltipDescription_de": "Die Wahrscheinlichkeit bei jedem Einsatz des Gegenstands, dass er abgenutzt wird und Schaden nimmt", "tooltipDescription_en-us": "The probability of the item wearing down and taking damage every time it's used", "tooltipDescription_es": "La probabilidad de que el objeto se desgaste y sufra daños cada vez que se usa.", "tooltipDescription_fr": "La probabilité que l'objet s'use et subisse des dégâts à chaque utilisation", "tooltipDescription_it": "The probability of the item wearing down and taking damage every time it's used", "tooltipDescription_ja": "使用する度にアイテムが劣化してダメージを受ける確率", "tooltipDescription_ko": "아이템을 사용했을 때 아이템이 손상될 확률 및 받는 피해량", "tooltipDescription_ru": "Вероятность износа предмета и его повреждения при каждом использовании", "tooltipDescription_zh": "该物品每次使用时存在的磨损和受损可能性", "tooltipDescriptionID": 707114, "unitID": 127 }, "784": { "attributeID": 784, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The amount of damage done if the crystal is damaged in the process of using it.", "displayName_de": "Flüchtigkeitsschaden", "displayName_en-us": "Volatility Damage", "displayName_es": "Daño de volatilidad", "displayName_fr": "Dégâts de volatilité", "displayName_it": "Volatility Damage", "displayName_ja": "不安定性ダメージ", "displayName_ko": "손상도", "displayName_ru": "Повреждения при использовании", "displayName_zh": "挥发损耗", "displayNameID": 233068, "displayWhenZero": 0, "highIsGood": 1, "name": "crystalVolatilityDamage", "published": 1, "stackable": 1, "tooltipDescription_de": "Die Menge an Schaden, die der Gegenstand bei jedem Einsatz nehmen kann", "tooltipDescription_en-us": "The amount of damage the item may take on each use", "tooltipDescription_es": "La cantidad de daño que el objeto puede soportar en cada uso.", "tooltipDescription_fr": "La quantité de dégâts que l'objet peut subir à chaque utilisation", "tooltipDescription_it": "The amount of damage the item may take on each use", "tooltipDescription_ja": "使用時にアイテムが受ける可能性があるダメージ量", "tooltipDescription_ko": "아이템을 사용했을 때 받을 수 있는 최대 피해량", "tooltipDescription_ru": "Показатель урона предмета при каждом использовании", "tooltipDescription_zh": "该物品每次使用时可能承受的损坏程度", "tooltipDescriptionID": 707115, "unitID": 113 }, "785": { "attributeID": 785, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The capacitor charge required to disengage this crystal from the unit it is installed in.", "displayName_de": "Zu hohe Energiespeicher-Kosten", "displayName_en-us": "Unfitting Capacitor Cost", "displayName_es": "Coste de desequipar condensador", "displayName_fr": "Coût de démontage du capaciteur", "displayName_it": "Unfitting Capacitor Cost", "displayName_ja": "キャパシタ装備解除コスト", "displayName_ko": "피팅해제 캐패시터 소모량", "displayName_ru": "Расход энергии на снятие", "displayName_zh": "卸载电容消耗", "displayNameID": 233148, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "unfitCapCost", "published": 1, "stackable": 1, "unitID": 114 }, "786": { "attributeID": 786, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Whether this tool causes damage to crystals with each use of them.", "displayName_de": "Kristalle nehmen Schaden", "displayName_en-us": "Crystals Take Damage", "displayName_es": "Los cristales reciben daño.", "displayName_fr": "Les cristaux subissent des dégâts", "displayName_it": "Crystals Take Damage", "displayName_ja": "クリスタル損耗", "displayName_ko": "크리스탈 피해량", "displayName_ru": "Кристаллы получают повреждения", "displayName_zh": "晶体损耗", "displayNameID": 233613, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "crystalsGetDamaged", "published": 1, "stackable": 1, "unitID": 137 }, "787": { "attributeID": 787, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Minimum scanning error", "displayName_de": "Minimale Scan-Abweichung", "displayName_en-us": "Minimum Scan Deviation", "displayName_es": "Desviación mínima del escaneo", "displayName_fr": "Déviation minimum du balayage", "displayName_it": "Minimum Scan Deviation", "displayName_ja": "最小スキャン誤差", "displayName_ko": "최소 스캔 오차", "displayName_ru": "Минимальное отклонение при поиске объектов", "displayName_zh": "扫描偏差下限", "displayNameID": 233356, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "minScanDeviation", "published": 1, "stackable": 1, "unitID": 1 }, "788": { "attributeID": 788, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Maximum scan error", "displayName_de": "Max. Scan-Abweichung", "displayName_en-us": "Maximum Scan Deviation", "displayName_es": "Desviación máxima del escaneo", "displayName_fr": "Déviation maximum du balayage", "displayName_it": "Maximum Scan Deviation", "displayName_ja": "最大スキャン誤差", "displayName_ko": "스캔 최대 오차", "displayName_ru": "Максимальное отклонение при поиске зондами", "displayName_zh": "扫描偏差上限", "displayNameID": 233324, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxScanDeviation", "published": 1, "stackable": 1, "unitID": 1 }, "789": { "attributeID": 789, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Spezialkristall-Bergbauertrag", "displayName_en-us": "Specialty Crystal Mining Amount", "displayName_es": "Cantidad extraída con cristal especializado", "displayName_fr": "Rendement d'extraction du cristal spécialisé", "displayName_it": "Specialty Crystal Mining Amount", "displayName_ja": "クリスタル特化採掘量", "displayName_ko": "특수 크리스탈 채굴 총량", "displayName_ru": "Объем добычи при использовании специальных кристаллов", "displayName_zh": "专精晶体开采量", "displayNameID": 233428, "displayWhenZero": 0, "highIsGood": 1, "name": "specialtyMiningAmount", "published": 0, "stackable": 1, "unitID": 9 }, "790": { "attributeID": 790, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The skill required to reprocess this ore type.", "displayName_de": "Aufbereitung-Skill", "displayName_en-us": "Reprocessing Skill", "displayName_es": "Habilidad de reprocesamiento", "displayName_fr": "Compétence de retraitement", "displayName_it": "Reprocessing Skill", "displayName_ja": "再処理スキル", "displayName_ko": "재처리 스킬", "displayName_ru": "Навык переработки", "displayName_zh": "回收再生技能", "displayNameID": 233344, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reprocessingSkillType", "published": 1, "stackable": 1, "unitID": 116 }, "791": { "attributeID": 791, "categoryID": 7, "dataType": 4, "defaultValue": 3.0, "description": "Number of probes needed for an analyzis", "displayName_de": "Sonden für Analyse", "displayName_en-us": "Probes to Analyze", "displayName_es": "Sondas para analizar", "displayName_fr": "Sondes à analyser", "displayName_it": "Probes to Analyze", "displayName_ja": "解析プローブ", "displayName_ko": "분석용 프로브", "displayName_ru": "Зонды для анализа", "displayName_zh": "分析探针", "displayNameID": 233280, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanAnalyzeCount", "published": 1, "stackable": 1 }, "792": { "attributeID": 792, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerMissileVelocityBonus", "published": 0, "stackable": 1, "unitID": 105 }, "793": { "attributeID": 793, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Fixed Role Bonus on a ship.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusRole7", "published": 0, "stackable": 1 }, "794": { "attributeID": 794, "categoryID": 9, "dataType": 4, "defaultValue": 3.0, "description": "Number of probes to analyze", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "probesInGroup", "published": 0, "stackable": 1 }, "795": { "attributeID": 795, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusABC1", "published": 0, "stackable": 1 }, "796": { "attributeID": 796, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Attribute for adding mass to a ship via an afterburner or MWD.", "displayName_de": "Vergrößerung der Masse", "displayName_en-us": "Mass Addition", "displayName_es": "Incorporación de masa", "displayName_fr": "Ajout de masse", "displayName_it": "Mass Addition", "displayName_ja": "質量加算", "displayName_ko": "질량 추가", "displayName_ru": "Увеличение массы", "displayName_zh": "质量增加值", "displayNameID": 233289, "displayWhenZero": 0, "highIsGood": 0, "iconID": 76, "name": "massAddition", "published": 1, "stackable": 1, "unitID": 2 }, "797": { "attributeID": 797, "categoryID": 6, "dataType": 5, "defaultValue": 300000.0, "description": "The maximum possible target range.", "displayName_de": "Theoretische max. Aufschaltreichweite", "displayName_en-us": "Theoretical Maximum Targeting Range", "displayName_es": "Distancia-objetivo máxima teórica", "displayName_fr": "Portée théorique maximale du système de ciblage", "displayName_it": "Theoretical Maximum Targeting Range", "displayName_ja": "最大ターゲット範囲(理論値)", "displayName_ko": "이론상 최대 타겟팅 거리", "displayName_ru": "Теоретическая максимальная дальность захвата целей", "displayName_zh": "锁定范围理论上限值", "displayNameID": 233574, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maximumRangeCap", "published": 0, "stackable": 1, "unitID": 1 }, "798": { "attributeID": 798, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "0: white (default)\r\n1: red (hostile NPC)\r\n2: blue (Neutral NPC)", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityBracketColour", "published": 0, "stackable": 1 }, "799": { "attributeID": 799, "categoryID": 7, "dataType": 5, "defaultValue": 2.0, "description": "", "displayName_de": "Talisman-Set-Bonus", "displayName_en-us": "Talisman Set Bonus", "displayName_es": "Bonificación de conjunto Talisman", "displayName_fr": "Bonus de l'ensemble Talisman", "displayName_it": "Talisman Set Bonus", "displayName_ja": "タリスマンセットボーナス", "displayName_ko": "탈리스만 세트 보너스", "displayName_ru": "Влияние комплекта «Талисман»", "displayName_zh": "护符套件加成", "displayNameID": 233233, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetBloodraider", "published": 1, "stackable": 1, "unitID": 104 }, "800": { "attributeID": 800, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, contrabandDetectionChanceBonus", "displayName_de": "Schmuggelwarenerkennung-Modifikator", "displayName_en-us": "Contraband Detection Modifier", "displayName_es": "Modificador de detección de contrabando", "displayName_fr": "Modificateur de détection de contrebande", "displayName_it": "Contraband Detection Modifier", "displayName_ja": "密輸品探知修正乗数", "displayName_ko": "밀수품 탐지 보정치", "displayName_ru": "Модификатор обнаружения контрабанды", "displayName_zh": "违禁物侦测几率调整", "displayNameID": 233035, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "contrabandDetectionChanceBonus", "published": 1, "stackable": 1, "unitID": 127 }, "801": { "attributeID": 801, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Modules with this attribute set to 1 can not be used in deadspace. Modules with this attribute set to 2 can not be used in deadspace even where \"disableModuleBlocking\" is selected", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "deadspaceUnsafe", "published": 0, "stackable": 1 }, "802": { "attributeID": 802, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schlangen-Set-Bonus", "displayName_en-us": "Snake Set Bonus", "displayName_es": "Bonificación de conjunto Snake", "displayName_fr": "Bonus de l'ensemble Snake", "displayName_it": "Snake Set Bonus", "displayName_ja": "スネークセットボーナス", "displayName_ko": "스네이크 세트 보너스", "displayName_ru": "Влияние комплекта «Снейк»", "displayName_zh": "蝰蛇套件加成", "displayNameID": 233238, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetSerpentis", "published": 1, "stackable": 1, "unitID": 104 }, "803": { "attributeID": 803, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Asklepian-Setbonus", "displayName_en-us": "Asklepian Set Bonus", "displayName_es": "Bonificación de conjunto Asklepian", "displayName_fr": "Bonus d'ensemble Asklepian", "displayName_it": "Asklepian Set Bonus", "displayName_ja": "アスクレピアンセットボーナス", "displayName_ko": "아스클레피안 세트 보너스", "displayName_ru": "Влияние комплекта «Асклепий»", "displayName_zh": "阿斯克雷套件加成", "displayNameID": 312550, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetSerpentis2", "published": 1, "stackable": 1, "unitID": 104 }, "804": { "attributeID": 804, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusInterceptor2", "published": 0, "stackable": 1 }, "805": { "attributeID": 805, "categoryID": 7, "dataType": 1, "defaultValue": 0.0, "description": "Quantity contained.", "displayName_de": "Menge", "displayName_en-us": "Quantity", "displayName_es": "Cantidad", "displayName_fr": "Quantité", "displayName_it": "Quantity", "displayName_ja": "数量", "displayName_ko": "수량", "displayName_ru": "Количество", "displayName_zh": "数量", "displayNameID": 233367, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "quantity", "published": 1, "stackable": 1 }, "806": { "attributeID": 806, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, repairBonus", "displayName_de": "Reparaturbonus", "displayName_en-us": "Repair Bonus", "displayName_es": "Bonificación de reparación", "displayName_fr": "Bonus de réparation", "displayName_it": "Repair Bonus", "displayName_ja": "リペアボーナス", "displayName_ko": "수리 보너스", "displayName_ru": "Влияние на эффективность ремонта", "displayName_zh": "维修加成", "displayNameID": 233346, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1446, "name": "repairBonus", "published": 1, "stackable": 1, "unitID": 105 }, "807": { "attributeID": 807, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusIndustrial1", "published": 0, "stackable": 1 }, "808": { "attributeID": 808, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusIndustrial2", "published": 0, "stackable": 1 }, "809": { "attributeID": 809, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAI2", "published": 0, "stackable": 1 }, "811": { "attributeID": 811, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusCI2", "published": 0, "stackable": 1 }, "813": { "attributeID": 813, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusGI2", "published": 0, "stackable": 1 }, "814": { "attributeID": 814, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusMI2", "published": 0, "stackable": 1 }, "815": { "attributeID": 815, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Amarr Propulsion Attack Strength for Warp Scramblers etc.", "displayName_de": "Fusionsstärke", "displayName_en-us": "Fusion Strength", "displayName_es": "Intensidad de fusión", "displayName_fr": "Puissance de la fusion", "displayName_it": "Fusion Strength", "displayName_ja": "フュージョン強度", "displayName_ko": "융합 강도", "displayName_ru": "Сила воздействия на термоядерные двигатели", "displayName_zh": "聚变强度", "displayNameID": 233379, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "propulsionFusionStrengthBonus", "published": 1, "stackable": 1, "unitID": 120 }, "816": { "attributeID": 816, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Caldari Propulsion Attack Strength for Warp Scramblers etc.", "displayName_de": "Ionenstärke", "displayName_en-us": "Ion Strength", "displayName_es": "Intensidad iónica", "displayName_fr": "Puissance de l'ion", "displayName_it": "Ion Strength", "displayName_ja": "イオン強度", "displayName_ko": "이온 강도", "displayName_ru": "Мощность ионной двигательной установки", "displayName_zh": "离子强度", "displayNameID": 233376, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "propulsionIonStrengthBonus", "published": 1, "stackable": 1, "unitID": 120 }, "817": { "attributeID": 817, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Gallente Propulsion Attack Strength for Warp Scramblers etc.", "displayName_de": "Magnetpulsstärke", "displayName_en-us": "Magpulse Strength", "displayName_es": "Intensidad del pulso electromagnético", "displayName_fr": "Puissance du Magpulse", "displayName_it": "Magpulse Strength", "displayName_ja": "マグパルス強度", "displayName_ko": "자기파 강도", "displayName_ru": "Сила воздействия на магнитоимпульсные двигатели", "displayName_zh": "磁脉冲强度", "displayNameID": 233375, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "propulsionMagpulseStrengthBonus", "published": 1, "stackable": 1, "unitID": 120 }, "818": { "attributeID": 818, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Minmatar Propulsion Attack Strength for Warp Scramblers etc.", "displayName_de": "Plasma-Stärke", "displayName_en-us": "Plasma Strength", "displayName_es": "Intensidad plasmática", "displayName_fr": "Puissance du plasma", "displayName_it": "Plasma Strength", "displayName_ja": "プラズマ強度", "displayName_ko": "플라즈마 강도", "displayName_ru": "Сила воздействия на плазменные двигатели", "displayName_zh": "等离子强度", "displayNameID": 233372, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "propulsionPlasmaStrengthBonus", "published": 1, "stackable": 1, "unitID": 120 }, "823": { "attributeID": 823, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Effect for smartbombs, used to hit missiles only.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hitsMissilesOnly", "published": 0, "stackable": 1 }, "828": { "attributeID": 828, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Skill attribute for increasing strength of EW modules.", "displayName_de": "EW-Stärkenmodifikator", "displayName_en-us": "EW Strength Modifier", "displayName_es": "Modificador de potencia de GE", "displayName_fr": "Modificateur de puissance de guerre électronique", "displayName_it": "EW Strength Modifier", "displayName_ja": "EW 強度修正乗数", "displayName_ko": "전자전 보정치", "displayName_ru": "Модификатор мощности средств РЭБ", "displayName_zh": "电子战强度调整", "displayNameID": 233243, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanSkillEwStrengthBonus", "published": 1, "stackable": 0, "unitID": 105 }, "829": { "attributeID": 829, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Skill attribute for increasing strength of Propulsion modules.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "propulsionSkillPropulsionStrengthBonus", "published": 0, "stackable": 1 }, "830": { "attributeID": 830, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "Bonus used on Unique Loot in level 10 Angel cartel Deadspace Complexes.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bonusComplexAngel10", "published": 0, "stackable": 1 }, "831": { "attributeID": 831, "categoryID": 25, "dataType": 4, "defaultValue": 0.0, "description": "Used for target jam effects to reduce max locked targets of victem to a negative value to ensure the victem looses its targets, use extreme value", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ewTargetJam", "published": 0, "stackable": 1 }, "832": { "attributeID": 832, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Skill attribute for increasing effectiveness on Target Painters", "displayName_de": "Zielmarkierungsbonus", "displayName_en-us": "Target Painting Bonus", "displayName_es": "Bonificación de revelación de objetivos", "displayName_fr": "Bonus de marquage de cible", "displayName_it": "Target Painting Bonus", "displayName_ja": "ターゲットペインティングボーナス", "displayName_ko": "타겟 지시 보너스", "displayName_ru": "Влияние на подсветку цели", "displayName_zh": "目标标记加成", "displayNameID": 233242, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanSkillTargetPaintStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "833": { "attributeID": 833, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Kommando-Bonus", "displayName_en-us": "Command Bonus", "displayName_es": "Bonificación de mando", "displayName_fr": "Bonus de commandement", "displayName_it": "Command Bonus", "displayName_ja": "コマンドボーナス", "displayName_ko": "지휘 보너스", "displayName_ru": "Мощность эффекта координации", "displayName_zh": "指挥加成", "displayNameID": 233027, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonus", "published": 1, "stackable": 1, "unitID": 121 }, "834": { "attributeID": 834, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "wingCommandBonus", "published": 0, "stackable": 1 }, "837": { "attributeID": 837, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used for stealth bombers to decrease power need on cruise launchers.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "stealthBomberLauncherPower", "published": 0, "stackable": 1 }, "838": { "attributeID": 838, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Kristall-Set-Bonus", "displayName_en-us": "Crystal Set Bonus", "displayName_es": "Bonificación de conjunto Crystal", "displayName_fr": "Bonus de l'ensemble Crystal", "displayName_it": "Crystal Set Bonus", "displayName_ja": "クリスタルセットボーナス", "displayName_ko": "크리스탈 세트 보너스", "displayName_ru": "Влияние комплекта «Кристалл»", "displayName_zh": "水晶套件加成", "displayNameID": 233234, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetGuristas", "published": 1, "stackable": 1, "unitID": 104 }, "839": { "attributeID": 839, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCovertOps2", "published": 0, "stackable": 1 }, "840": { "attributeID": 840, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "agentID to use when initiating NPC communications with this type.", "displayName_de": "Agenten-ID", "displayName_en-us": "Agent ID", "displayName_es": "ID del agente", "displayName_fr": "Identité de l'agent", "displayName_it": "Agent ID", "displayName_ja": "エージェント ID", "displayName_ko": "에이전트 ID", "displayName_ru": "ID агента", "displayName_zh": "代理人ID", "displayNameID": 232948, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "agentID", "published": 1, "stackable": 1 }, "841": { "attributeID": 841, "categoryID": 9, "dataType": 4, "defaultValue": 100000.0, "description": "The range of the agent's communication sphere", "displayName_de": "Agenten Komm.-Reichweite", "displayName_en-us": "Agent Comm Range", "displayName_es": "Alcance de la comunicación con el agente", "displayName_fr": "Portée de comm de l'agent", "displayName_it": "Agent Comm Range", "displayName_ja": "エージェント通信範囲", "displayName_ko": "에이전트 통신 거리", "displayName_ru": "Дистанция выхода агента на связь", "displayName_zh": "代理人通讯范围", "displayNameID": 232947, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "agentCommRange", "published": 1, "stackable": 1, "unitID": 1 }, "842": { "attributeID": 842, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Reaktionstyp 1", "displayName_en-us": "Reaction Type 1", "displayName_es": "Reacción de tipo 1", "displayName_fr": "Type de réaction 1", "displayName_it": "Reaction Type 1", "displayName_ja": "リアクションタイプ 1", "displayName_ko": "분자 반응식 유형 1", "displayName_ru": "Тип реакции 1", "displayName_zh": "反应种类 1", "displayNameID": 233365, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reactionGroup1", "published": 1, "stackable": 1, "unitID": 115 }, "843": { "attributeID": 843, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Reaktionstyp 2", "displayName_en-us": "Reaction Type 2", "displayName_es": "Reacción de tipo 2", "displayName_fr": "Type de réaction 2", "displayName_it": "Reaction Type 2", "displayName_ja": "リアクションタイプ 2", "displayName_ko": "분자 반응식 유형 2", "displayName_ru": "Тип реакции 2", "displayName_zh": "反应种类 2", "displayNameID": 233358, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reactionGroup2", "published": 1, "stackable": 1, "unitID": 115 }, "844": { "attributeID": 844, "categoryID": 9, "dataType": 4, "defaultValue": 5000.0, "description": "If the player comes within this range of this agent-in-space, an automatic communication window popup will occur.", "displayName_de": "Reichweite für automatisches Agenten-Popup", "displayName_en-us": "Agent Auto Popup Range", "displayName_es": "Alcance del mensaje emergente automático del agente", "displayName_fr": "Agent Auto Popup Range", "displayName_it": "Agent Auto Popup Range", "displayName_ja": "エージェント自動出現範囲", "displayName_ko": "에이전트 자동 통신 사거리", "displayName_ru": "Дистанция вывода сообщения агента", "displayName_zh": "代理人自动弹出范围", "displayNameID": 232946, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "agentAutoPopupRange", "published": 1, "stackable": 1, "unitID": 1 }, "845": { "attributeID": 845, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Hidden Attribute for tech 2 launcher damage bonus.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hiddenLauncherDamageBonus", "published": 0, "stackable": 1 }, "846": { "attributeID": 846, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Scan-Stärke-Bonus", "displayName_en-us": "Scan Strength Bonus", "displayName_es": "Bonificación de intensidad del escaneo", "displayName_fr": "Bonus de puissance du balayage", "displayName_it": "Scan Strength Bonus", "displayName_ja": "スキャン強度ボーナス", "displayName_ko": "스캔 강도 보너스", "displayName_ru": "Влияние на чувствительность зондов", "displayName_zh": "扫描强度加成", "displayNameID": 233241, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "847": { "attributeID": 847, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Increases velocity of missile explosion", "displayName_de": "Explosionsgeschwindigkeit-Bonus", "displayName_en-us": "Explosion Velocity Bonus", "displayName_es": "Bonificación de velocidad de explosión", "displayName_fr": "Bonus de vitesse d'explosion", "displayName_it": "Explosion Velocity Bonus", "displayName_ja": "爆発速度ボーナス", "displayName_ko": "폭발 속도 보너스", "displayName_ru": "Повышение скорости взрыва", "displayName_zh": "爆炸速度加成", "displayNameID": 232956, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "aoeVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "848": { "attributeID": 848, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Booster attribute to explosion radius of missiles vs. signature radius.", "displayName_de": "Explosionsradius-Bonus", "displayName_en-us": "Explosion Radius Bonus", "displayName_es": "Bonificación de radio de explosión", "displayName_fr": "Bonus de rayon d'explosion", "displayName_it": "Explosion Radius Bonus", "displayName_ja": "爆発半径ボーナス", "displayName_ko": "폭발 반경 보너스", "displayName_ru": "Снижение сигнатуры взрыва", "displayName_zh": "爆炸半径加成", "displayNameID": 232954, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "aoeCloudSizeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "849": { "attributeID": 849, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Can use cargo in space or not, 0 = no, 1 = yes", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canUseCargoInSpace", "published": 0, "stackable": 1 }, "850": { "attributeID": 850, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, relayCPUBonus", "displayName_de": "Geschwaderkommando-Bonus", "displayName_en-us": "Squadron Command Bonus", "displayName_es": "Bonificación de mando de escuadrón", "displayName_fr": "Bonus de commandement d'escadron", "displayName_it": "Squadron Command Bonus", "displayName_ja": "分隊司令部ボーナス", "displayName_ko": "편대 지휘 보너스", "displayName_ru": "Влияние на эффект координации эскадрильи", "displayName_zh": "中队指挥加成", "displayNameID": 233191, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "squadronCommandBonus", "published": 1, "stackable": 1, "unitID": 121 }, "851": { "attributeID": 851, "categoryID": 2, "dataType": 4, "defaultValue": 0.0, "description": "Bonus to capacitor need for shield boosters.", "displayName_de": "Energiespeicher-Verbrauchsbonus", "displayName_en-us": "Capacitor Need Bonus", "displayName_es": "Bonificación de necesidad del condensador", "displayName_fr": "Bonus de besoins énergétiques du capaciteur", "displayName_it": "Capacitor Need Bonus", "displayName_ja": "キャパシタ消費ボーナス", "displayName_ko": "캐패시터 요구량 보너스", "displayName_ru": "Влияние на расход энергии", "displayName_zh": "电容需求加成", "displayNameID": 232944, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shieldBoostCapacitorBonus", "published": 1, "stackable": 1, "unitID": 124 }, "852": { "attributeID": 852, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "siegeModeWarpStatus", "published": 0, "stackable": 1 }, "853": { "attributeID": 853, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Attribute on ship to make advanced command affect only ships that we want.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "advancedAgility", "published": 0, "stackable": 1 }, "854": { "attributeID": 854, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "If this module is in use and this attribute is 1, then assistance modules cannot be used on the ship.", "displayName_de": "Verbietet Unterstützung", "displayName_en-us": "Disallows Assistance", "displayName_es": "Deshabilita la ayuda", "displayName_fr": "Interdit l'assistance", "displayName_it": "Disallows Assistance", "displayName_ja": "アシスタントを却下", "displayName_ko": "지원 불허", "displayName_ru": "Запрещено получение внешней поддержки", "displayName_zh": "不允许援助", "displayNameID": 261773, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowAssistance", "published": 1, "stackable": 1, "unitID": 137 }, "855": { "attributeID": 855, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "Activating this module results in the temporary loss of all targets currently held or being locked.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "activationTargetLoss", "published": 0, "stackable": 1 }, "857": { "attributeID": 857, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "aoeFalloffBonus", "published": 0, "stackable": 1, "unitID": 105 }, "858": { "attributeID": 858, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "Affects the signature radius of the target in missile impact calculations.", "displayName_de": "Explosionsradius-Bonus", "displayName_en-us": "Explosion Radius Bonus", "displayName_es": "Bonificación de radio de explosión", "displayName_fr": "Bonus de rayon d'explosion", "displayName_it": "Explosion Radius Bonus", "displayName_ja": "爆発半径ボーナス", "displayName_ko": "폭발 반경 보너스", "displayName_ru": "Влияние на сигнатуру взрыва", "displayName_zh": "爆炸半径加成", "displayNameID": 233361, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityAoeCloudSizeMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "859": { "attributeID": 859, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "Affects the velocity of the target in missile impact calculations.", "displayName_de": "Explosionsgeschwindigkeit-Bonus", "displayName_en-us": "Explosion Velocity Bonus", "displayName_es": "Bonificación de velocidad de explosión", "displayName_fr": "Bonus de vitesse d'explosion", "displayName_it": "Explosion Velocity Bonus", "displayName_ja": "爆発速度ボーナス", "displayName_ko": "폭발 속도 보너스", "displayName_ru": "Влияние на скорость взрыва", "displayName_zh": "爆炸速度加成", "displayNameID": 233362, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityAoeVelocityMultiplier", "published": 1, "stackable": 1, "unitID": 109 }, "860": { "attributeID": 860, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileEntityAoeFalloffMultiplier", "published": 0, "stackable": 1 }, "861": { "attributeID": 861, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "1 = ship can use jump drive", "displayName_de": "Eingebauter Sprungantrieb", "displayName_en-us": "Onboard Jump Drive", "displayName_es": "Motor de salto integrado", "displayName_fr": "Propulseur hyperspatial embarqué", "displayName_it": "Onboard Jump Drive", "displayName_ja": "オンボードジャンプドライブ", "displayName_ko": "함내탑재형 점프 드라이브", "displayName_ru": "Оснащён гипердвигателем", "displayName_zh": "舰载跳跃引擎", "displayNameID": 233608, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canJump", "published": 0, "stackable": 1, "unitID": 137 }, "862": { "attributeID": 862, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "The weighting given to this type and its chance of being picked for a grouping.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "usageWeighting", "published": 0, "stackable": 1 }, "863": { "attributeID": 863, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Halo-Set-Bonus", "displayName_en-us": "Halo Set Bonus", "displayName_es": "Bonificación de conjunto Halo", "displayName_fr": "Bonus de l'ensemble Halo", "displayName_it": "Halo Set Bonus", "displayName_ja": "ハロセットボーナス", "displayName_ko": "헤일로 세트 보너스", "displayName_ru": "Влияние комплекта «Гало»", "displayName_zh": "圣光套件加成", "displayNameID": 233232, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetHalo", "published": 1, "stackable": 1, "unitID": 104 }, "864": { "attributeID": 864, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Amulettsetbonus", "displayName_en-us": "Amulet Set Bonus", "displayName_es": "Bonificación de conjunto de amuletos", "displayName_fr": "Bonus de l'ensemble Amulette", "displayName_it": "Amulet Set Bonus", "displayName_ja": "アミュレットセットボーナス", "displayName_ko": "아뮬렛 세트 보너스", "displayName_ru": "Бонус комплекта «Амулет»", "displayName_zh": "辟邪套件加成", "displayNameID": 318138, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetAmulet", "published": 1, "stackable": 1, "unitID": 104 }, "865": { "attributeID": 865, "categoryID": 9, "dataType": 4, "defaultValue": 100000.0, "description": "How many meters from the standard warp-in distance a planet can be anchored from.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "planetAnchorDistance", "published": 0, "stackable": 1, "unitID": 1 }, "866": { "attributeID": 866, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Type that is used for consumption from cargo hold when activating jump drive operation.", "displayName_de": "Treibstoffbedarf des Sprungantriebs", "displayName_en-us": "Jump Drive Fuel Need", "displayName_es": "Necesidad de combustible para el motor de salto", "displayName_fr": "Type de carburant utilisé par le propulseur hyperspatial", "displayName_it": "Jump Drive Fuel Need", "displayName_ja": "ジャンプドライブ必要燃料", "displayName_ko": "점프 드라이브 연료 요구량", "displayName_ru": "Потребление топлива гипердвигателем", "displayName_zh": "跳跃引擎燃料需求", "displayNameID": 233268, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpDriveConsumptionType", "published": 1, "stackable": 1, "tooltipDescription_de": "Die Treibstoffart die für den Sprungantrieb benötigt wird", "tooltipDescription_en-us": "The type of fuel required to use the jump drive", "tooltipDescription_es": "Tipo de combustible necesario para usar el motor de salto.", "tooltipDescription_fr": "Type de carburant nécessaire pour utiliser le propulseur hyperspatial.", "tooltipDescription_it": "The type of fuel required to use the jump drive", "tooltipDescription_ja": "ジャンプドライブを使用するのに必要な燃料タイプです", "tooltipDescription_ko": "점프 드라이브를 사용할 때 필요한 연료 종류입니다.", "tooltipDescription_ru": "Тип топлива, расходуемого при работе бортового гипердвигателя", "tooltipDescription_zh": "使用跳跃引擎所需的燃料种类", "tooltipDescriptionID": 295338, "tooltipTitleID": 295337, "unitID": 116 }, "867": { "attributeID": 867, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Range in light years the ship can maximum jump to.", "displayName_de": "Max. Sprungreichweite", "displayName_en-us": "Maximum Jump Range", "displayName_es": "Alcance máximo de salto", "displayName_fr": "Portée de saut maximum", "displayName_it": "Maximum Jump Range", "displayName_ja": "最大ジャンプ距離", "displayName_ko": "최대 점프 거리", "displayName_ru": "Максимальная дистанция гиперперехода", "displayName_zh": "最大跳跃范围", "displayNameID": 233269, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "jumpDriveRange", "published": 1, "stackable": 1, "tooltipDescription_de": "Die maximale Distanz in Lichtjahren, die mit dem Sprungantrieb zurückgelegt werden kann", "tooltipDescription_en-us": "Maximum distance in light years that can be travelled using the jump drive", "tooltipDescription_es": "Distancia máx. en años luz que se puede viajar con el motor de salto.", "tooltipDescription_fr": "Distance maximale en années-lumière pouvant être parcourue en utilisant le propulseur hyperspatial.", "tooltipDescription_it": "Maximum distance in light years that can be travelled using the jump drive", "tooltipDescription_ja": "ジャンプドライブで航行できる最大距離を光年で表示します", "tooltipDescription_ko": "점프 드라이브를 사용하여 여행할 수 있는 광년 단위 최대 거리입니다.", "tooltipDescription_ru": "Максимальная дистанция гиперперехода с помощью бортового двигателя, измеряемая в световых годах", "tooltipDescription_zh": "使用跳跃引擎能达到的最大距离,以光年为单位", "tooltipDescriptionID": 295340, "tooltipTitleID": 295339, "unitID": 126 }, "868": { "attributeID": 868, "categoryID": 7, "dataType": 5, "defaultValue": 2000.0, "description": "Number of units it consumes per light year.", "displayName_de": "Verbrauchswert des Sprungantriebs", "displayName_en-us": "Jump Drive Consumption Amount", "displayName_es": "Consumo de motor de salto", "displayName_fr": "Quantité consommée par le propulseur hyperspatial", "displayName_it": "Jump Drive Consumption Amount", "displayName_ja": "ジャンプドライブ消費量", "displayName_ko": "점프 드라이브 소모량", "displayName_ru": "Расход топлива при гиперпереходе", "displayName_zh": "跳跃引擎燃料消耗量", "displayNameID": 233624, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "jumpDriveConsumptionAmount", "published": 1, "stackable": 0, "tooltipDescription_de": "Treibstoffverbrauch pro Lichtjahr, wenn der Sprungantrieb aktiviert ist", "tooltipDescription_en-us": "The amount of fuel consumed per light year when the jump drive is activated", "tooltipDescription_es": "Consumo de combustible por año luz al activar el motor de salto.", "tooltipDescription_fr": "La quantité de carburant consommé par année-lumière lorsque le propulseur interstellaire est activé", "tooltipDescription_it": "The amount of fuel consumed per light year when the jump drive is activated", "tooltipDescription_ja": "ジャンプドライブ起動時に消費される光年あたりの燃料量", "tooltipDescription_ko": "함선이 점프 드라이브를 작동할 때 1광년마다 소비하는 연료량입니다.", "tooltipDescription_ru": "Количество топлива, потребляемое гипердвигателем за каждый световой год пути", "tooltipDescription_zh": "启动跳跃引擎后每跳跃一光年所消耗的燃料数量", "tooltipDescriptionID": 318051, "tooltipTitleID": 318050, "unitID": 138 }, "869": { "attributeID": 869, "categoryID": 9, "dataType": 4, "defaultValue": 300000.0, "description": "The amount of time before the ship actually jumps.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpDriveDuration", "published": 0, "stackable": 1 }, "870": { "attributeID": 870, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Jump range bonus for jump drive operation.", "displayName_de": "Sprungantriebreichweite-Bonus", "displayName_en-us": "Jump Drive Range Bonus", "displayName_es": "Bonificación de alcance del motor de salto", "displayName_fr": "Bonus de portée du propulseur hyperspatial", "displayName_it": "Jump Drive Range Bonus", "displayName_ja": "ジャンプドライブ距離ボーナス", "displayName_ko": "점프 드라이브 사거리 보너스", "displayName_ru": "Влияние на дистанцию гиперперехода", "displayName_zh": "跳跃引擎范围加成", "displayNameID": 233270, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpDriveRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "871": { "attributeID": 871, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Skill bonus attribute that decreases the duration before iniating a jump.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpDriveDurationBonus", "published": 0, "stackable": 1, "unitID": 105 }, "872": { "attributeID": 872, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "If this module is in use and this attribute is 1, then offensive modules cannot be used on the ship if they apply modifiers for the duration of their effect. If this is put on a ship or NPC with value of 1, then the ship or NPC are immune to offensive modifiers (target jamming, tracking disruption etc.)", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowOffensiveModifiers", "published": 0, "stackable": 1 }, "874": { "attributeID": 874, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "advancedCapitalAgility", "published": 0, "stackable": 1 }, "884": { "attributeID": 884, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Gedankenverknüpfungsbonus", "displayName_en-us": "Mindlink Bonus", "displayName_es": "Bonificación de neuroenlace", "displayName_fr": "Bonus de lien neural", "displayName_it": "Mindlink Bonus", "displayName_ja": "マインドリンクボーナス", "displayName_ko": "마인드링크 보너스", "displayName_ru": "Влияние импланта координации флота", "displayName_zh": "思维网络加成", "displayNameID": 233345, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "mindlinkBonus", "published": 1, "stackable": 1, "unitID": 105 }, "885": { "attributeID": 885, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Verbrauchsquantitäts-Bonus", "displayName_en-us": "Consumption Quantity Bonus", "displayName_es": "Bonificación de cantidad de consumo", "displayName_fr": "Bonus de quantité consommée", "displayName_it": "Consumption Quantity Bonus", "displayName_ja": "消費量ボーナス", "displayName_ko": "소모량 보너스", "displayName_ru": "Уменьшение количества расходуемого топлива", "displayName_zh": "消耗量加成", "displayNameID": 233611, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "consumptionQuantityBonus", "published": 1, "stackable": 1, "unitID": 138 }, "886": { "attributeID": 886, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusA1", "published": 0, "stackable": 1 }, "887": { "attributeID": 887, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusA2", "published": 0, "stackable": 1 }, "888": { "attributeID": 888, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusC1", "published": 0, "stackable": 1 }, "889": { "attributeID": 889, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusC2", "published": 0, "stackable": 1 }, "890": { "attributeID": 890, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusG2", "published": 0, "stackable": 1 }, "891": { "attributeID": 891, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusG1", "published": 0, "stackable": 1 }, "892": { "attributeID": 892, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusM1", "published": 0, "stackable": 1 }, "893": { "attributeID": 893, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "freighterBonusM2", "published": 0, "stackable": 1 }, "894": { "attributeID": 894, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Testing for fuels for speed boosters.", "displayName_de": "Geschwindigkeitserhöhung-Bonus", "displayName_en-us": "Speed Boost Bonus", "displayName_es": "Bonificación de potenciador de velocidad", "displayName_fr": "Bonus d'amplification de vitesse", "displayName_it": "Speed Boost Bonus", "displayName_ja": "スピードブーストボーナス", "displayName_ko": "속도 부스트 보너스", "displayName_ru": "Влияние на ускорение", "displayName_zh": "速度提升加成", "displayNameID": 233199, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "speedBoostBonus", "published": 1, "stackable": 1, "unitID": 105 }, "895": { "attributeID": 895, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus attribute for armor repair amount.", "displayName_de": "Panzerungsreparatur-Bonus", "displayName_en-us": "Armor Repair Bonus", "displayName_es": "Bonificación de reparación del blindaje", "displayName_fr": "Bonus de réparation du blindage", "displayName_it": "Armor Repair Bonus", "displayName_ja": "アーマーリペアボーナス", "displayName_ko": "장갑 수리 보너스", "displayName_ru": "Влияние на эффективность ремонта брони", "displayName_zh": "装甲维修加成", "displayNameID": 232961, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "armorDamageAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "896": { "attributeID": 896, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Panzerungsreparaturdauer-Bonus", "displayName_en-us": "Armor Repair Duration Bonus", "displayName_es": "Bonificación de duración de reparación del blindaje", "displayName_fr": "Bonus de durée de réparation du blindage", "displayName_it": "Armor Repair Duration Bonus", "displayName_ja": "アーマーリペア時間ボーナス", "displayName_ko": "장갑 수리 지속시간 보너스", "displayName_ru": "Влияние на время цикла ремонта брони", "displayName_zh": "装甲维修周期加成", "displayNameID": 232962, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "armorDamageDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "897": { "attributeID": 897, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildverstärkungsdauer-Bonus", "displayName_en-us": "Shield Boost Duration Bonus", "displayName_es": "Bonificación de duración del potenciador de escudo", "displayName_fr": "Bonus de durée de booster de bouclier", "displayName_it": "Shield Boost Duration Bonus", "displayName_ja": "シールドブースト起動時間ボーナス", "displayName_ko": "실드 부스트 지속시간 보너스", "displayName_ru": "Влияние на время цикла накачки щита", "displayName_zh": "护盾回充持续时间加成", "displayNameID": 232936, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "shieldBonusDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "898": { "attributeID": 898, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Minimum capacitor need for jump drive operation from full capacitor in modifier%.", "displayName_de": "Energiespeicherbedarf des Sprungantriebs", "displayName_en-us": "Jump Drive Capacitor Need", "displayName_es": "Necesidad del condensador para el motor de salto", "displayName_fr": "Besoins énergétiques du capaciteur pour le propulseur hyperspatial", "displayName_it": "Jump Drive Capacitor Need", "displayName_ja": "ジャンプドライブキャパシタ消費", "displayName_ko": "점프 드라이브 캐패시터 요구량", "displayName_ru": "Потребление энергии гипердвигателем", "displayName_zh": "跳跃引擎电容需求", "displayNameID": 233266, "displayWhenZero": 0, "highIsGood": 0, "iconID": 90, "name": "jumpDriveCapacitorNeed", "published": 1, "stackable": 1, "tooltipDescription_de": "Der Prozentanteil des Energiespeichers der verbraucht wird, wenn der Sprungantrieb aktiviert wird", "tooltipDescription_en-us": "The percentage of total capacitor consumed when the jump drive is activated", "tooltipDescription_es": "El porcentaje del consumo total del condensador al activar el motor de salto.", "tooltipDescription_fr": "Pourcentage du capaciteur utilisé lorsque le propulseur hyperspatial est activé.", "tooltipDescription_it": "The percentage of total capacitor consumed when the jump drive is activated", "tooltipDescription_ja": "ジャンプドライブ起動時に消費されるキャパシタ総量の割合です", "tooltipDescription_ko": "함선이 점프 드라이브를 작동할 때 소비하는 총 캐패시터 퍼센트입니다.", "tooltipDescription_ru": "Процент от общего запаса энергии в бортовом накопителе, расходуемый при включении гипердвигателя", "tooltipDescription_zh": "启动跳跃引擎时所消耗的电容总量百分比", "tooltipDescriptionID": 295346, "tooltipTitleID": 295345, "unitID": 127 }, "899": { "attributeID": 899, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Energiespeicherbedarf des Sprungantriebs", "displayName_en-us": "Jump Drive Capacitor Need Bonus", "displayName_es": "Bonificación de necesidad del condensador para el motor de salto", "displayName_fr": "Bonus des besoins énergétiques du capaciteur pour le propulseur hyperspatial", "displayName_it": "Jump Drive Capacitor Need Bonus", "displayName_ja": "ジャンプドライブキャパシタ消費ボーナス", "displayName_ko": "점프 드라이브 캐패시터 요구량 보너스", "displayName_ru": "Влияние на потребление энергии гипердвигателем", "displayName_zh": "跳跃引擎电容需求加成", "displayNameID": 233267, "displayWhenZero": 0, "highIsGood": 1, "iconID": 90, "name": "jumpDriveCapacitorNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "901": { "attributeID": 901, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The difficulty in opening this object.", "displayName_de": "Zugriffsschwierigkeit", "displayName_en-us": "Access Difficulty", "displayName_es": "Dificultad de acceso", "displayName_fr": "Difficulté d'accès", "displayName_it": "Access Difficulty", "displayName_ja": "アクセス難度", "displayName_ko": "잠금 해제 난이도", "displayName_ru": "Сложность доступа", "displayName_zh": "获取难度", "displayNameID": 232938, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "accessDifficulty", "published": 1, "stackable": 1 }, "902": { "attributeID": 902, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to chance of opening a container.", "displayName_de": "Zugriffsschwierigkeitsbonus", "displayName_en-us": "Access Difficulty Bonus", "displayName_es": "Bonificación de dificultad de acceso", "displayName_fr": "Bonus de difficulté d'accès", "displayName_it": "Access Difficulty Bonus", "displayName_ja": "アクセス難度ボーナス", "displayName_ko": "잠금 해제 보너스", "displayName_ru": "Влияние на шанс доступа", "displayName_zh": "获取成功率", "displayNameID": 232939, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "accessDifficultyBonus", "published": 1, "stackable": 1, "unitID": 121 }, "903": { "attributeID": 903, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Whether a spawn container should refill itself when there are no guards assigned to it.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "spawnWithoutGuardsToo", "published": 0, "stackable": 1 }, "904": { "attributeID": 904, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warcruiserCPUBonus", "published": 0, "stackable": 1 }, "905": { "attributeID": 905, "categoryID": 9, "dataType": 4, "defaultValue": 10.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "tacklerBonus", "published": 0, "stackable": 1 }, "906": { "attributeID": 906, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Signifies that this module if activated, will prevent ejection from the ship it is fitted to and extend the log out ship removal timer.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowEarlyDeactivation", "published": 0, "stackable": 1 }, "907": { "attributeID": 907, "categoryID": 40, "dataType": 3, "defaultValue": 0.0, "description": "Indicates whether a ship type has a ship maintenance bay.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hasShipMaintenanceBay", "published": 0, "stackable": 1 }, "908": { "attributeID": 908, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "The capacity of the hangar in a ship.", "displayName_de": "Kapazität des Schiffwartungshangars", "displayName_en-us": "Ship Maintenance Bay Capacity", "displayName_es": "Capacidad de la plataforma de mantenimiento de naves", "displayName_fr": "Capacité de la plateforme de maintenance du vaisseau", "displayName_it": "Ship Maintenance Bay Capacity", "displayName_ja": "船舶修理場容量", "displayName_ko": "함선 정비 격납고 적재량", "displayName_ru": "Объём док-камеры", "displayName_zh": "舰船维护舱容量", "displayNameID": 233225, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "shipMaintenanceBayCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "909": { "attributeID": 909, "categoryID": 9, "dataType": 12, "defaultValue": 0.0, "description": "Which group of modules that this ship limits the number of concurrent activations of.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxShipGroupActiveID", "published": 0, "stackable": 1 }, "910": { "attributeID": 910, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of modules belonging to the same group that can be active at the same time.", "displayName_de": "Maximal aktive Gruppe", "displayName_en-us": "Maximum Group Active", "displayName_es": "Maximum Group Active", "displayName_fr": "Groupes actifs maximum", "displayName_it": "Maximum Group Active", "displayName_ja": "最大稼動グループ数", "displayName_ko": "최대 그룹 수", "displayName_ru": "Максимальное количество включенных модулей этой группы", "displayName_zh": "活跃组数上限", "displayNameID": 233326, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxShipGroupActive", "published": 1, "stackable": 1 }, "911": { "attributeID": 911, "categoryID": 40, "dataType": 3, "defaultValue": 0.0, "description": "Whether this ship has fleet hangars.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hasFleetHangars", "published": 0, "stackable": 1 }, "912": { "attributeID": 912, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "The capacity of the fleet hangar.", "displayName_de": "Kapazität des Flottenhangars", "displayName_en-us": "Fleet Hangar Capacity", "displayName_es": "Capacidad del hangar de la flota", "displayName_fr": "Capacité de hangar de flotte", "displayName_it": "Fleet Hangar Capacity", "displayName_ja": "フリートハンガー容量", "displayName_ko": "함대 격납고 적재량", "displayName_ru": "Объём отсека с общим доступом", "displayName_zh": "舰队机库容量", "displayNameID": 233046, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "fleetHangarCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "913": { "attributeID": 913, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "gallenteNavyBonus", "published": 0, "stackable": 1 }, "915": { "attributeID": 915, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "caldariNavyBonus", "published": 0, "stackable": 1 }, "917": { "attributeID": 917, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "amarrNavyBonus", "published": 0, "stackable": 1 }, "919": { "attributeID": 919, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "republicFleetBonus", "published": 0, "stackable": 1 }, "921": { "attributeID": 921, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "oreCompression", "published": 0, "stackable": 1 }, "924": { "attributeID": 924, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBarge1", "published": 0, "stackable": 1 }, "925": { "attributeID": 925, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBarge2", "published": 0, "stackable": 1 }, "926": { "attributeID": 926, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "ORE Mining Barge bonus 3", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORE3", "published": 0, "stackable": 1 }, "927": { "attributeID": 927, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "CPU Penalty Reduction", "displayName_de": "Reduktion des CPU-Nachteils", "displayName_en-us": "CPU Penalty Reduction", "displayName_es": "Reducción de penalización de CPU", "displayName_fr": "Réduction de pénalité du CPU", "displayName_it": "CPU Penalty Reduction", "displayName_ja": "CPUペナルティの軽減", "displayName_ko": "CPU 페널티 감소", "displayName_ru": "Снижение влияния на потребление мощности ЦП", "displayName_zh": "CPU惩罚降低", "displayNameID": 317701, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1405, "name": "miningUpgradeCPUReductionBonus", "published": 1, "stackable": 1, "unitID": 105 }, "928": { "attributeID": 928, "categoryID": 25, "dataType": 5, "defaultValue": 1.0, "description": "Target Jam multiplier on max locked targets for NPCs", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetJam", "published": 0, "stackable": 1 }, "929": { "attributeID": 929, "categoryID": 25, "dataType": 4, "defaultValue": 30000.0, "description": "Duration of NPC effect", "displayName_de": "ECM-Aktivierungszeit/dauer", "displayName_en-us": "ECM Activation time / duration", "displayName_es": "Duración/tiempo de activación de las ECM", "displayName_fr": "Délai/Durée d'activation CME", "displayName_it": "ECM Activation time / duration", "displayName_ja": "ECM起動時間", "displayName_ko": "ECM 활성화 시간 / 지속시간", "displayName_ru": "Время цикла модулей глушения захвата целей", "displayName_zh": "ECM启动时间/运转周期", "displayNameID": 312483, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ECMDuration", "published": 1, "stackable": 1, "unitID": 101 }, "930": { "attributeID": 930, "categoryID": 25, "dataType": 5, "defaultValue": 0.0, "description": "Chance of NPC effect to be activated each duration", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ECMEntityChance", "published": 0, "stackable": 1 }, "931": { "attributeID": 931, "categoryID": 22, "dataType": 5, "defaultValue": 0.0, "description": "Chance of NPC effect to be activated each duration", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "energyNeutralizerEntityChance", "published": 0, "stackable": 1 }, "932": { "attributeID": 932, "categoryID": 24, "dataType": 5, "defaultValue": 0.0, "description": "Chance of NPC effect to be activated each duration", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySensorDampenDurationChance", "published": 0, "stackable": 1 }, "933": { "attributeID": 933, "categoryID": 26, "dataType": 5, "defaultValue": 0.0, "description": "Chance of NPC effect to be activated each duration", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "npcTrackingDisruptorActivationChance", "published": 0, "stackable": 1 }, "935": { "attributeID": 935, "categoryID": 21, "dataType": 5, "defaultValue": 0.0, "description": "Chance of NPC effect to be activated each duration", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetPaintDurationChance", "published": 0, "stackable": 1 }, "936": { "attributeID": 936, "categoryID": 25, "dataType": 4, "defaultValue": 0.0, "description": "Max Range for NPC Target Jam", "displayName_de": "Optimale ECM-Reichweite", "displayName_en-us": "ECM Optimal Range", "displayName_es": "Alcance óptimo de las ECM", "displayName_fr": "Portée optimale de neutralisation CME", "displayName_it": "ECM Optimal Range", "displayName_ja": "ECM最適射程距離", "displayName_ko": "ECM 최적사거리", "displayName_ru": "Оптимальная дальность глушения захвата целей", "displayName_zh": "ECM最佳射程", "displayNameID": 312484, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "ECMRangeOptimal", "published": 1, "stackable": 1, "unitID": 1 }, "937": { "attributeID": 937, "categoryID": 22, "dataType": 4, "defaultValue": 0.0, "description": "Range for NPC capacitor drain", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityCapacitorDrainMaxRange", "published": 0, "stackable": 1 }, "938": { "attributeID": 938, "categoryID": 24, "dataType": 4, "defaultValue": 0.0, "description": "Range from target for when the NPC activates the effect", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySensorDampenMaxRange", "published": 0, "stackable": 1 }, "940": { "attributeID": 940, "categoryID": 26, "dataType": 4, "defaultValue": 0.0, "description": "Max range from for NPC tracking disrupt", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTrackingDisruptMaxRange", "published": 0, "stackable": 1 }, "941": { "attributeID": 941, "categoryID": 21, "dataType": 4, "defaultValue": 0.0, "description": "Max Range for NPC Target Paint", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetPaintMaxRange", "published": 0, "stackable": 1 }, "942": { "attributeID": 942, "categoryID": 22, "dataType": 4, "defaultValue": 30000.0, "description": "Duration of NPC Energy Neutralizer effect", "displayName_de": "Neutralisierungsdauer", "displayName_en-us": "Neutralization Duration", "displayName_es": "Duración de neutralización", "displayName_fr": "Durée de neutralisation", "displayName_it": "Neutralization Duration", "displayName_ja": "無効化持続時間", "displayName_ko": "뉴트럴라이제이션 지속시간", "displayName_ru": "Время цикла нейтрализации", "displayName_zh": "中和持续时间", "displayNameID": 312361, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "energyNeutralizerDuration", "published": 1, "stackable": 1, "unitID": 101 }, "943": { "attributeID": 943, "categoryID": 24, "dataType": 4, "defaultValue": 30000.0, "description": "Duration of NPC effect", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySensorDampenDuration", "published": 0, "stackable": 1 }, "944": { "attributeID": 944, "categoryID": 26, "dataType": 4, "defaultValue": 30000.0, "description": "Duration of NPC effect", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTrackingDisruptDuration", "published": 0, "stackable": 1 }, "945": { "attributeID": 945, "categoryID": 21, "dataType": 4, "defaultValue": 30000.0, "description": "Duration of NPC effect", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetPaintDuration", "published": 0, "stackable": 1 }, "946": { "attributeID": 946, "categoryID": 22, "dataType": 4, "defaultValue": 0.0, "description": "Amount of capacitor drained by NPC from target", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityCapacitorDrainAmount", "published": 0, "stackable": 1 }, "947": { "attributeID": 947, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier on max target range and scan resolution of target ship done by NPC", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySensorDampenMultiplier", "published": 0, "stackable": 1 }, "948": { "attributeID": 948, "categoryID": 26, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier on tracking speed and optimal range of player turrets done by NPC", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTrackingDisruptMultiplier", "published": 0, "stackable": 1 }, "949": { "attributeID": 949, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier on signature radius of player ship done by NPC", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetPaintMultiplier", "published": 0, "stackable": 1 }, "950": { "attributeID": 950, "categoryID": 24, "dataType": 4, "defaultValue": 0.0, "description": "Fall Off for NPC sensor dampen", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entitySensorDampenFallOff", "published": 0, "stackable": 1 }, "951": { "attributeID": 951, "categoryID": 26, "dataType": 4, "defaultValue": 0.0, "description": "Fall Off for NPC Tracking Disrupt", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTrackingDisruptFallOff", "published": 0, "stackable": 1 }, "952": { "attributeID": 952, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Fall Off for NPC Capacitor Drain", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityCapacitorFallOff", "published": 0, "stackable": 1 }, "953": { "attributeID": 953, "categoryID": 25, "dataType": 4, "defaultValue": 0.0, "description": "Fall Off for NPC Target Jam", "displayName_de": "ECM-Präzisionsabfall-Reichweite", "displayName_en-us": "ECM Falloff Range", "displayName_es": "Alcance efectivo de las ECM", "displayName_fr": "Portée optimale de déperdition CME", "displayName_it": "ECM Falloff Range", "displayName_ja": "ECM精度低下範囲", "displayName_ko": "ECM 유효사거리", "displayName_ru": "Добавочная дальность глушения захвата целей", "displayName_zh": "ECM失准范围", "displayNameID": 312485, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "ECMRangeFalloff", "published": 1, "stackable": 1, "unitID": 1 }, "954": { "attributeID": 954, "categoryID": 21, "dataType": 4, "defaultValue": 0.0, "description": "Fall Off for NPC Target Paint", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityTargetPaintFallOff", "published": 0, "stackable": 1 }, "955": { "attributeID": 955, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isCaldariNavy", "published": 0, "stackable": 1 }, "956": { "attributeID": 956, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "damageModifierMultiplierBonus", "published": 0, "stackable": 1 }, "957": { "attributeID": 957, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cNavyModOncNavyShip", "published": 0, "stackable": 1 }, "958": { "attributeID": 958, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, hardeningBonus", "displayName_de": "Härtungsbonus", "displayName_en-us": "Hardening Bonus", "displayName_es": "Bonificación de endurecimiento", "displayName_fr": "Bonus de renforcement", "displayName_it": "Hardening Bonus", "displayName_ja": "ハードニングボーナス", "displayName_ko": "강화 보너스", "displayName_ru": "Влияние на эффективность", "displayName_zh": "抗性加成", "displayNameID": 233214, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hardeningBonus", "published": 1, "stackable": 1, "unitID": 105 }, "959": { "attributeID": 959, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostLargeDelayChance", "published": 0, "stackable": 1 }, "960": { "attributeID": 960, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "caldariNavyBonusMultiplier2", "published": 0, "stackable": 1 }, "961": { "attributeID": 961, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "caldarNavyBonus2", "published": 0, "stackable": 1 }, "962": { "attributeID": 962, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusReconShip1", "published": 0, "stackable": 1 }, "963": { "attributeID": 963, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusReconShip2", "published": 0, "stackable": 1 }, "964": { "attributeID": 964, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "passiveEmDamageResonanceMultiplier", "published": 0, "stackable": 0, "unitID": 111 }, "965": { "attributeID": 965, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "passiveThermalDamageResonanceMultiplier", "published": 0, "stackable": 0, "unitID": 111 }, "966": { "attributeID": 966, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "passiveKineticDamageResonanceMultiplier", "published": 0, "stackable": 0, "unitID": 111 }, "967": { "attributeID": 967, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "passiveExplosiveDamageResonanceMultiplier", "published": 0, "stackable": 0, "unitID": 111 }, "968": { "attributeID": 968, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Used for Probes.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hasStasisWeb", "published": 0, "stackable": 1 }, "969": { "attributeID": 969, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "activeEmDamageResonance", "published": 0, "stackable": 0, "unitID": 111 }, "970": { "attributeID": 970, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "activeThermalDamageResonance", "published": 0, "stackable": 0, "unitID": 111 }, "971": { "attributeID": 971, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "activeKineticDamageResonance", "published": 0, "stackable": 0, "unitID": 111 }, "972": { "attributeID": 972, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "activeExplosiveDamageResonance", "published": 0, "stackable": 0, "unitID": 111 }, "973": { "attributeID": 973, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature radius bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus de rayon de signature", "displayName_it": "Signature radius bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Повышение радиуса сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 233217, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "signatureRadiusBonusPercent", "published": 1, "stackable": 0, "unitID": 105 }, "974": { "attributeID": 974, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen EM-Schaden", "displayName_en-us": "Structure EM Damage Resistance", "displayName_es": "Resistencia al daño electromagnético de estructura", "displayName_fr": "Résistance de la structure aux dégâts électromagnétiques", "displayName_it": "Structure EM Damage Resistance", "displayName_ja": "ストラクチャEMダメージレジスタンス", "displayName_ko": "선체 EM 저항력", "displayName_ru": "Сопротивляемость корпуса ЭМ-урону", "displayName_zh": "结构电磁伤害抗性", "displayNameID": 233497, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "maxAttributeID": 1529, "name": "hullEmDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "975": { "attributeID": 975, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Explosionsschaden", "displayName_en-us": "Structure Explosive Damage Resistance", "displayName_es": "Resistencia al daño explosivo de estructura", "displayName_fr": "Résistance de la structure aux dégâts explosifs", "displayName_it": "Structure Explosive Damage Resistance", "displayName_ja": "ストラクチャエクスプローシブダメージレジスタンス", "displayName_ko": "선체 폭발 저항력", "displayName_ru": "Сопротивляемость корпуса фугасному урону", "displayName_zh": "结构爆炸伤害抗性", "displayNameID": 233498, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "maxAttributeID": 1529, "name": "hullExplosiveDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "976": { "attributeID": 976, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Kinetikschaden", "displayName_en-us": "Structure Kinetic Damage Resistance", "displayName_es": "Resistencia al daño cinético de estructura", "displayName_fr": "Résistance de la structure aux dégâts cinétiques", "displayName_it": "Structure Kinetic Damage Resistance", "displayName_ja": "ストラクチャキネティックダメージレジスタンス", "displayName_ko": "선체 키네틱 저항력", "displayName_ru": "Сопротивляемость корпуса кинетическому урону", "displayName_zh": "结构动能伤害抗性", "displayNameID": 233499, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "maxAttributeID": 1529, "name": "hullKineticDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "977": { "attributeID": 977, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Thermalschaden", "displayName_en-us": "Structure Thermal Damage Resistance", "displayName_es": "Resistencia al daño térmico de estructura", "displayName_fr": "Résistance de la structure aux dégâts thermiques", "displayName_it": "Structure Thermal Damage Resistance", "displayName_ja": "ストラクチャサーマルダメージレジスタンス", "displayName_ko": "선체 열 저항력", "displayName_ru": "Сопротивляемость корпуса термическому урону", "displayName_zh": "结构热能伤害抗性", "displayNameID": 233500, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "maxAttributeID": 1529, "name": "hullThermalDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "978": { "attributeID": 978, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum modules of same group that can be onlined at same time, 0 = no limit, 1 = 1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxGroupOnline", "published": 0, "stackable": 1 }, "979": { "attributeID": 979, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The maximum amount of jump clones that the character may have in existence or ship may have stored.", "displayName_de": "Maximale Anzahl der Sprungklone", "displayName_en-us": "Maximum Jump Clones", "displayName_es": "Clones de salto máximos", "displayName_fr": "Nombre max. de clones hyperspatiaux", "displayName_it": "Maximum Jump Clones", "displayName_ja": "最大ジャンプクローン数", "displayName_ko": "최대 점프 클론 수", "displayName_ru": "Максимальное количество джамп-клонов", "displayName_zh": "远距克隆体数上限", "displayNameID": 233434, "displayWhenZero": 0, "highIsGood": 1, "iconID": 34, "name": "maxJumpClones", "published": 1, "stackable": 1 }, "980": { "attributeID": 980, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "The number of clone jump slots that the ship offers.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hasCloneJumpSlots", "published": 0, "stackable": 1 }, "981": { "attributeID": 981, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "If this module is active and the ship supports it, the ship can serve as a destination for clone jumps.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "allowsCloneJumpsWhenActive", "published": 0, "stackable": 1 }, "982": { "attributeID": 982, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Defines whether a ship has the functionality to allow it to receive clone jumps and host jump clones.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canReceiveCloneJumps", "published": 0, "stackable": 1 }, "983": { "attributeID": 983, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Signaturradius-Modifizierer", "displayName_en-us": "Signature Radius Modifier", "displayName_es": "Modificador de radio de la señal", "displayName_fr": "Multiplicateur de rayon de signature", "displayName_it": "Signature Radius Modifier", "displayName_ja": "シグネチャ半径乗数", "displayName_ko": "시그니처 반경 보정치", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径修正值", "displayNameID": 233220, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "signatureRadiusAdd", "published": 1, "stackable": 1, "unitID": 1 }, "984": { "attributeID": 984, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf EM-Schadensresistenz", "displayName_en-us": "EM Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños electromagnéticos", "displayName_fr": "Bonus de résistance aux dégâts électromagnétiques", "displayName_it": "EM Damage Resistance Bonus", "displayName_ja": "EMダメージレジスタンスボーナス。", "displayName_ko": "EM 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость ЭМ-урону", "displayName_zh": "电磁伤害抗性加成", "displayNameID": 233124, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "emDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 124 }, "985": { "attributeID": 985, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Explosionsschadensresistenz", "displayName_en-us": "Explosive Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños explosivos", "displayName_fr": "Bonus de résistance aux dégâts explosifs", "displayName_it": "Explosive Damage Resistance Bonus", "displayName_ja": "エクスプローシブダメージレジスタンスボーナス", "displayName_ko": "폭발 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость фугасному урону", "displayName_zh": "爆炸伤害抗性加成", "displayNameID": 233125, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "explosiveDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 124 }, "986": { "attributeID": 986, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Kinetikschadensresistenz", "displayName_en-us": "Kinetic Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños cinéticos", "displayName_fr": "Bonus de résistance aux dégâts cinétiques", "displayName_it": "Kinetic Damage Resistance Bonus", "displayName_ja": "キネティックダメージレジスタンスボーナス", "displayName_ko": "키네틱 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость кинетическому урону", "displayName_zh": "动能伤害抗性加成", "displayNameID": 233126, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "kineticDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 105 }, "987": { "attributeID": 987, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Thermalschadensresistenz", "displayName_en-us": "Thermal Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños térmicos", "displayName_fr": "Bonus de résistance aux dégâts thermiques", "displayName_it": "Thermal Damage Resistance Bonus", "displayName_ja": "サーマルダメージレジスタンスボーナス", "displayName_ko": "열 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость термическому урону", "displayName_zh": "热能伤害抗性加成", "displayNameID": 233179, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "thermalDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 124 }, "988": { "attributeID": 988, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hardeningbonus2", "published": 0, "stackable": 1 }, "989": { "attributeID": 989, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "volumePostPercent", "published": 0, "stackable": 1 }, "990": { "attributeID": 990, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "activeEmResistanceBonus", "published": 0, "stackable": 1 }, "991": { "attributeID": 991, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "activeExplosiveResistanceBonus", "published": 0, "stackable": 1 }, "992": { "attributeID": 992, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "activeThermicResistanceBonus", "published": 0, "stackable": 1 }, "993": { "attributeID": 993, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "activeKineticResistanceBonus", "published": 0, "stackable": 1 }, "994": { "attributeID": 994, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Passiver Bonus auf EM-Schadensresistenz", "displayName_en-us": "Passive EM Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños electromagnéticos pasivos", "displayName_fr": "Bonus de résistance aux dégâts électromagnétiques passifs", "displayName_it": "Passive EM Damage Resistance Bonus", "displayName_ja": "パッシブEMダメージレジスタンスボーナス", "displayName_ko": "패시브 EM 저항력 보너스", "displayName_ru": "Влияние на пассивную сопротивляемость ЭМ-урону", "displayName_zh": "被动电磁伤害抗性加成", "displayNameID": 233123, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "passiveEmDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 105 }, "995": { "attributeID": 995, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Passiver Bonus auf Explosionsschadensresistenz", "displayName_en-us": "Passive Explosive Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños explosivos pasivos", "displayName_fr": "Bonus de résistance aux dégâts explosifs passifs", "displayName_it": "Passive Explosive Damage Resistance Bonus", "displayName_ja": "パッシブエクスプローシブダメージレジスタンスボーナス", "displayName_ko": "패시브 폭발 저항력 보너스", "displayName_ru": "Влияние на пассивную сопротивляемость фугасному урону", "displayName_zh": "被动爆炸伤害抗性加成", "displayNameID": 233127, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "passiveExplosiveDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 105 }, "996": { "attributeID": 996, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Passiver Bonus auf Kinetikschadensresistenz", "displayName_en-us": "Passive Kinetic Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños cinéticos pasivos", "displayName_fr": "Bonus de résistance aux dégâts cinétiques passifs", "displayName_it": "Passive Kinetic Damage Resistance Bonus", "displayName_ja": "パッシブキネティックダメージレジスタンスボーナス", "displayName_ko": "패시브 키네틱 저항력 보너스", "displayName_ru": "Влияние на пассивную сопротивляемость кинетическому урону", "displayName_zh": "被动动能伤害抗性加成", "displayNameID": 233128, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "passiveKineticDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 105 }, "997": { "attributeID": 997, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Passiver Bonus auf Thermalschadensresistenz", "displayName_en-us": "Passive Thermal Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños térmicos pasivos", "displayName_fr": "Bonus de résistance aux dégâts thermiques passifs", "displayName_it": "Passive Thermal Damage Resistance Bonus", "displayName_ja": "パッシブサーマルダメージレジスタンスボーナス", "displayName_ko": "패시브 열 저항력 보너스", "displayName_ru": "Влияние на пассивную сопротивляемость термическому урону", "displayName_zh": "被动热能伤害抗性加成", "displayNameID": 233129, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "passiveThermicDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 105 }, "998": { "attributeID": 998, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Can have research and manufacturing functionality", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isRAMcompatible", "published": 0, "stackable": 1 }, "999": { "attributeID": 999, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCommandShips2", "published": 0, "stackable": 1 }, "1000": { "attributeID": 1000, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCommandShips1", "published": 0, "stackable": 1 }, "1001": { "attributeID": 1001, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier used to calculate amount of quantity used for jumping via portals based on mass of ship.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpPortalConsumptionMassFactor", "published": 0, "stackable": 1 }, "1002": { "attributeID": 1002, "categoryID": 9, "dataType": 4, "defaultValue": 300000.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpPortalDuration", "published": 0, "stackable": 1, "unitID": 101 }, "1003": { "attributeID": 1003, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCommandShip1DONOTUSE", "published": 0, "stackable": 1 }, "1004": { "attributeID": 1004, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusCommandShip2DONOTUSE", "published": 0, "stackable": 1 }, "1005": { "attributeID": 1005, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Sprungportalaktivierungsgebühr", "displayName_en-us": "Jump portal activation cost", "displayName_es": "Coste de activación del portal de salto", "displayName_fr": "Coût d'activation du portail hyperspatial", "displayName_it": "Jump portal activation cost", "displayName_ja": "ジャンプポータル起動コスト", "displayName_ko": "점프 포탈 활성화 비용", "displayName_ru": "Энергия на открытие гиперпортала", "displayName_zh": "跳跃通道激活消耗", "displayNameID": 233427, "displayWhenZero": 0, "highIsGood": 1, "iconID": 90, "name": "jumpPortalCapacitorNeed", "published": 1, "stackable": 1, "unitID": 114 }, "1006": { "attributeID": 1006, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceSmall", "published": 0, "stackable": 1 }, "1007": { "attributeID": 1007, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceMedium", "published": 0, "stackable": 1 }, "1008": { "attributeID": 1008, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceLarge", "published": 0, "stackable": 1 }, "1009": { "attributeID": 1009, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceSmall", "published": 0, "stackable": 1 }, "1010": { "attributeID": 1010, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceMedium", "published": 0, "stackable": 1 }, "1011": { "attributeID": 1011, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceLarge", "published": 0, "stackable": 1 }, "1012": { "attributeID": 1012, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusInterdictors1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusInterdictors1", "published": 0, "stackable": 1 }, "1013": { "attributeID": 1013, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusInterdictors2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusInterdictors2", "published": 0, "stackable": 1 }, "1014": { "attributeID": 1014, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If set, this module cannot be activated and made to autorepeat.", "displayName_de": "Kann nicht automatisch wiederholt werden", "displayName_en-us": "Cannot Auto Repeat", "displayName_es": "No se puede repetir automáticamente.", "displayName_fr": "Impossible de répéter automatiquement", "displayName_it": "Cannot Auto Repeat", "displayName_ja": "オートリピート不可", "displayName_ko": "자동 반복 불가", "displayName_ru": "Автоповтор недоступен", "displayName_zh": "无法自动重复", "displayNameID": 233618, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowRepeatingActivation", "published": 1, "stackable": 1, "unitID": 137 }, "1015": { "attributeID": 1015, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceSmallMultiplier", "published": 0, "stackable": 1 }, "1016": { "attributeID": 1016, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceMediumMultiplier", "published": 0, "stackable": 1 }, "1017": { "attributeID": 1017, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityShieldBoostDelayChanceLargeMultiplier", "published": 0, "stackable": 1 }, "1018": { "attributeID": 1018, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceSmallMultiplier", "published": 0, "stackable": 1 }, "1019": { "attributeID": 1019, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceMediumMultiplier", "published": 0, "stackable": 1 }, "1020": { "attributeID": 1020, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityArmorRepairDelayChanceLargeMultiplier", "published": 0, "stackable": 1 }, "1021": { "attributeID": 1021, "categoryID": 9, "dataType": 5, "defaultValue": 15000.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyMaxRange", "published": 0, "stackable": 1 }, "1022": { "attributeID": 1022, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyFactor", "published": 0, "stackable": 1 }, "1023": { "attributeID": 1023, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyFactorMultiplier", "published": 0, "stackable": 1 }, "1024": { "attributeID": 1024, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyMaxRangeMultiplier", "published": 0, "stackable": 1 }, "1025": { "attributeID": 1025, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyFactorPercentage", "published": 0, "stackable": 1 }, "1026": { "attributeID": 1026, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpAccuracyMaxRangePercentage", "published": 0, "stackable": 1 }, "1027": { "attributeID": 1027, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Gravimetrische Stärke", "displayName_en-us": "Gravimetric Strength", "displayName_es": "Fuerza gravimétrica", "displayName_fr": "Puissance gravimétrique", "displayName_it": "Gravimetric Strength", "displayName_ja": "重力強度", "displayName_ko": "중력장 강도", "displayName_ru": "Эффективность гравиметрических систем", "displayName_zh": "引力强度", "displayNameID": 233254, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2028, "name": "scanGravimetricStrengthPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1028": { "attributeID": 1028, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "LADAR-Stärke", "displayName_en-us": "Ladar Strength", "displayName_es": "Potencia lidar", "displayName_fr": "Puissance ladar", "displayName_it": "Ladar Strength", "displayName_ja": "光学強度", "displayName_ko": "라이다 강도", "displayName_ru": "Эффективность ладарных систем", "displayName_zh": "光雷达强度", "displayNameID": 233253, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2030, "name": "scanLadarStrengthPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1029": { "attributeID": 1029, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Magnetometrische Stärke", "displayName_en-us": "Magnetometric Strength", "displayName_es": "Fuerza magnetométrica", "displayName_fr": "Puissance magnétométrique", "displayName_it": "Magnetometric Strength", "displayName_ja": "磁力測定強度", "displayName_ko": "자기 강도", "displayName_ru": "Эффективность магнитометрических систем", "displayName_zh": "磁力强度", "displayNameID": 233251, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2029, "name": "scanMagnetometricStrengthPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1030": { "attributeID": 1030, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Radarstärke", "displayName_en-us": "Radar Strength", "displayName_es": "Potencia del radar", "displayName_fr": "Puissance radar", "displayName_it": "Radar Strength", "displayName_ja": "電波強度", "displayName_ko": "레이더 강도", "displayName_ru": "Эффективность радарных систем", "displayName_zh": "雷达强度", "displayNameID": 233247, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2031, "name": "scanRadarStrengthPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1031": { "attributeID": 1031, "categoryID": 7, "dataType": 3, "defaultValue": 1.0, "description": "numeric classification for tower size\r\n", "displayName_de": "Kontrollturmgröße", "displayName_en-us": "Control Tower Size", "displayName_es": "Tamaño de torre de control", "displayName_fr": "Taille de la tour de contrôle", "displayName_it": "Control Tower Size", "displayName_ja": "コントロールタワーサイズ", "displayName_ko": "관제타워 크기", "displayName_ru": "Размер башни управления", "displayName_zh": "控制塔尺寸", "displayNameID": 233043, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerSize", "published": 1, "stackable": 1, "unitID": 117 }, "1032": { "attributeID": 1032, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "The maximum security level at which the structure can be anchored. Used as a non-functional display attribute on some deployables.", "displayName_de": "Beschränkt auf max. Sicherheitsstatus von", "displayName_en-us": "Restricted To Security Level Of At Most", "displayName_es": "Restringido a nivel de seguridad de como máximo", "displayName_fr": "Limité au niveau de sécurité le plus élevé", "displayName_it": "Restricted To Security Level Of At Most", "displayName_ja": "セキュリティレベル上限設定", "displayName_ko": "최대 보안 수준으로 제한됨", "displayName_ru": "Степень соответствия нормам КОНКОРДа не более", "displayName_zh": "仅限于安全等级不超过", "displayNameID": 233512, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "anchoringSecurityLevelMax", "published": 1, "stackable": 1 }, "1033": { "attributeID": 1033, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Whether the structure requires the anchorers alliance to hold sovereignty in the system for it to be anchorable. Only enforced if the security level is 0.4 or less.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "anchoringRequiresSovereignty", "published": 0, "stackable": 1 }, "1034": { "attributeID": 1034, "categoryID": 37, "dataType": 5, "defaultValue": 30000.0, "description": "", "displayName_de": "Verzögerung bei Reaktivierung des Tarnmoduls", "displayName_en-us": "Cloak Reactivation Delay", "displayName_es": "Demora de reactivación del camuflaje", "displayName_fr": "Délai de réactivation du camouflage", "displayName_it": "Cloak Reactivation Delay", "displayName_ja": "クロークリアクティベーション遅延", "displayName_ko": "클로킹 재활성화 준비 시간", "displayName_ru": "Задержка повторного включения систем маскировки", "displayName_zh": "隐身再入延迟", "displayNameID": 233518, "displayWhenZero": 0, "highIsGood": 1, "name": "covertOpsAndReconOpsCloakModuleDelay", "published": 1, "stackable": 0, "unitID": 101 }, "1035": { "attributeID": 1035, "categoryID": 9, "dataType": 5, "defaultValue": 20000.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "covertOpsStealthBomberTargettingDelay", "published": 0, "stackable": 1, "unitID": 101 }, "1045": { "attributeID": 1045, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The maximum speed that the tractor beam draws objects closer at.", "displayName_de": "Maximale Traktorgeschwindigkeit", "displayName_en-us": "Maximum Tractor Velocity", "displayName_es": "Velocidad máx. del tractor", "displayName_fr": "Vitesse de tractage maximale", "displayName_it": "Maximum Tractor Velocity", "displayName_ja": "最高トラクター速度", "displayName_ko": "트랙터 최대 속도", "displayName_ru": "Скорость перемещения грузов", "displayName_zh": "最大牵引速度", "displayNameID": 233337, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "maxTractorVelocity", "published": 1, "stackable": 1, "unitID": 10 }, "1047": { "attributeID": 1047, "categoryID": 9, "dataType": 3, "defaultValue": 1.0, "description": "If set to 1 then this skill can not be trained on accounts that are marked as Alpha Clone. Any other value (although you should probably use 0) will result in all accounts being able to train this skill.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canNotBeTrainedOnTrial", "published": 0, "stackable": 1 }, "1048": { "attributeID": 1048, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowOffensiveModifierBonus", "published": 0, "stackable": 1 }, "1073": { "attributeID": 1073, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Erlaubte Anzahl von Sprung-Klonen", "displayName_en-us": "Number of Jump Clones Allowed", "displayName_es": "N.º de clones de salto permitidos", "displayName_fr": "Nombre de clones hyperspatiaux autorisés", "displayName_it": "Number of Jump Clones Allowed", "displayName_ja": "ジャンプクローン保持可能数", "displayName_ko": "허용된 점프 클론 수", "displayName_ru": "Допустимое количество джамп-клонов", "displayName_zh": "远距克隆数量上限", "displayNameID": 233630, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxJumpClonesBonus", "published": 1, "stackable": 1, "unitID": 121 }, "1074": { "attributeID": 1074, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "If set on a charge or module type, will prevent it from being activated in empire space.", "displayName_de": "Im imperialen Raum gesperrt", "displayName_en-us": "Banned in Empire Space", "displayName_es": "Prohibido en el espacio imperial", "displayName_fr": "Interdit dans l'espace de l'empire", "displayName_it": "Banned in Empire Space", "displayName_ja": "帝国領域で使用禁止", "displayName_ko": "하이 시큐리티 사용 금지", "displayName_ru": "Запрещена активация в системах с положительной СС", "displayName_zh": "帝国区禁用", "displayNameID": 233640, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowInEmpireSpace", "published": 1, "stackable": 1, "unitID": 137 }, "1075": { "attributeID": 1075, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "If present on a type which is used like a missile, signifies that it should never do damage (whether it has any to do or not).", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "missileNeverDoesDamage", "published": 0, "stackable": 1 }, "1076": { "attributeID": 1076, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Geschwindigkeitsmodifikator", "displayName_en-us": "Velocity Modifier", "displayName_es": "Modificador de velocidad", "displayName_fr": "Modificateur de vitesse", "displayName_it": "Velocity Modifier", "displayName_ja": "速度修正乗数", "displayName_ko": "속도 보정치", "displayName_ru": "Модификатор скорости", "displayName_zh": "速度调整", "displayNameID": 233231, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "implantBonusVelocity", "published": 1, "stackable": 1, "unitID": 121 }, "1077": { "attributeID": 1077, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Drohnenmodule", "displayName_en-us": "Drone Modules", "displayName_es": "Módulos de drones", "displayName_fr": "Modules de drone", "displayName_it": "Drone Modules", "displayName_ja": "ドローンモジュール", "displayName_ko": "드론 모듈", "displayName_ru": "Системы дронов", "displayName_zh": "无人机装备", "displayNameID": 233300, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxDCUModules", "published": 1, "stackable": 1 }, "1079": { "attributeID": 1079, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Autogenerated skill attribute, CapacitorCapacityBonus", "displayName_de": "Energiespeicher-Modifikator", "displayName_en-us": "Capacitor Modifier", "displayName_es": "Modificador de condensador", "displayName_fr": "Modificateur de capaciteur", "displayName_it": "Capacitor Modifier", "displayName_ja": "キャパシタ修正乗数", "displayName_ko": "캐패시터 보정치", "displayName_ru": "Модификатор емкости накопителя", "displayName_zh": "电容量调整", "displayNameID": 233005, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "capacitorCapacityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1080": { "attributeID": 1080, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuPenaltySuperWeapon", "published": 0, "stackable": 1 }, "1081": { "attributeID": 1081, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cpuBonusSuperWeapon", "published": 0, "stackable": 1 }, "1082": { "attributeID": 1082, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "CPU-Abzug", "displayName_en-us": "Cpu Penalty", "displayName_es": "Penalización de la CPU", "displayName_fr": "Pénalité CPU", "displayName_it": "Cpu Penalty", "displayName_ja": "CPU ペナルティ", "displayName_ko": "CPU 페널티", "displayName_ru": "Снижение мощности ЦПУ", "displayName_zh": "CPU惩罚", "displayNameID": 233058, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "cpuPenaltyPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1083": { "attributeID": 1083, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "HP-Bonus für Panzerung", "displayName_en-us": "Armor Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor Hitpoint Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 232965, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorHpBonus2", "published": 1, "stackable": 1, "unitID": 121 }, "1084": { "attributeID": 1084, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Geschwindigkeitsmodifikator", "displayName_en-us": "Velocity Modifier", "displayName_es": "Modificador de velocidad", "displayName_fr": "Modificateur de vitesse", "displayName_it": "Velocity Modifier", "displayName_ja": "速度修正乗数", "displayName_ko": "속도 보정치", "displayName_ru": "Модификатор скорости", "displayName_zh": "速度调整", "displayNameID": 233145, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "velocityBonus2", "published": 1, "stackable": 1, "unitID": 121 }, "1085": { "attributeID": 1085, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Module consumption mechanic uses fuel cargo. Ships that have this with value of 1 can have fuel cargo. Need fuelCargoCapacity set as well.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "hasFuelCargo", "published": 0, "stackable": 1 }, "1086": { "attributeID": 1086, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Used for ships that are supposed to be able to use fuel.", "displayName_de": "Frachtraumgröße für Treibstoff", "displayName_en-us": "Fuel Cargo Capacity", "displayName_es": "Capacidad de carga de combustible", "displayName_fr": "Capacité du conteneur carburant", "displayName_it": "Fuel Cargo Capacity", "displayName_ja": "燃料カーゴ容量", "displayName_ko": "연료 적재량", "displayName_ru": "Ёмкость топливного отсека", "displayName_zh": "燃料舱容量", "displayNameID": 233208, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fuelCargoCapacity", "published": 1, "stackable": 1 }, "1087": { "attributeID": 1087, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Whether an item is a booster or not.", "displayName_de": "Booster-Slot", "displayName_en-us": "Booster Slot", "displayName_es": "Ranura de potenciador", "displayName_fr": "Emplacement de booster", "displayName_it": "Booster Slot", "displayName_ja": "ブースタースロット", "displayName_ko": "부스터 슬롯", "displayName_ru": "Разъём боевых стимуляторов", "displayName_zh": "增效剂槽位", "displayNameID": 233607, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterness", "published": 1, "stackable": 1, "unitID": 136 }, "1088": { "attributeID": 1088, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Internally set expiry time for objects which expire, so that the client knows when.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "expiryTime", "published": 0, "stackable": 1 }, "1089": { "attributeID": 1089, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Chance auf Nebeneffekt", "displayName_en-us": "Chance of Side Effect", "displayName_es": "Probabilidad de efecto secundario", "displayName_fr": "Chance d'effet secondaire", "displayName_it": "Chance of Side Effect", "displayName_ja": "副作用発生率", "displayName_ko": "부작용 발생 확률", "displayName_ru": "Шанс побочного эффекта", "displayName_zh": "副作用几率", "displayNameID": 233519, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterEffectChance1", "published": 1, "stackable": 1, "unitID": 127 }, "1090": { "attributeID": 1090, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterEffectChance2", "published": 0, "stackable": 1, "unitID": 127 }, "1091": { "attributeID": 1091, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterEffectChance3", "published": 0, "stackable": 1, "unitID": 127 }, "1092": { "attributeID": 1092, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterEffectChance4", "published": 0, "stackable": 1, "unitID": 127 }, "1093": { "attributeID": 1093, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterEffectChance5", "published": 0, "stackable": 1, "unitID": 127 }, "1094": { "attributeID": 1094, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Energiespeichergröße", "displayName_en-us": "Capacitor Capacity Bonus", "displayName_es": "Bonificación de capacidad del condensador", "displayName_fr": "Bonus de charge de capaciteur", "displayName_it": "Capacitor Capacity Bonus", "displayName_ja": "キャパシタ容量ボーナス", "displayName_ko": "캐패시터 용량 보너스", "displayName_ru": "Влияние на запас энергии", "displayName_zh": "电容容量加成", "displayNameID": 233085, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayCapacitorCapacityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1095": { "attributeID": 1095, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildverstärkungsbonus", "displayName_en-us": "Shield Boost Bonus", "displayName_es": "Bonificación de potenciador de escudo", "displayName_fr": "Bonus de booster de bouclier", "displayName_it": "Shield Boost Bonus", "displayName_ja": "シールドブーストボーナス", "displayName_ko": "실드 부스트 보너스", "displayName_ru": "Влияние на эффективность накачки щитов", "displayName_zh": "护盾回充加成", "displayNameID": 233091, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayShieldBoostMultiplier", "published": 1, "stackable": 1, "unitID": 105 }, "1096": { "attributeID": 1096, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildkapazitätsbonus", "displayName_en-us": "Shield Capacity Bonus", "displayName_es": "Bonificación de capacidad del escudo", "displayName_fr": "Bonus de capacité du bouclier", "displayName_it": "Shield Capacity Bonus", "displayName_ja": "シールド容量ボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾容量加成", "displayNameID": 233092, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayShieldCapacityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1097": { "attributeID": 1097, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsgeschwindigkeit", "displayName_en-us": "Explosion Velocity", "displayName_es": "Velocidad de explosión", "displayName_fr": "Vitesse d'explosion", "displayName_it": "Explosion Velocity", "displayName_ja": "爆発速度", "displayName_ko": "폭발속도", "displayName_ru": "Скорость взрыва", "displayName_zh": "爆炸速度", "displayNameID": 233082, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayAoeVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1098": { "attributeID": 1098, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Optimale Reichweite-Bonus", "displayName_en-us": "Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo", "displayName_fr": "Bonus de portée optimale", "displayName_it": "Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス", "displayName_ko": "최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность", "displayName_zh": "最佳射程加成", "displayNameID": 233090, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayRangeSkillBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1099": { "attributeID": 1099, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Nebeneffektabzug", "displayName_en-us": "Side Effect Penalty", "displayName_es": "Penalización de efecto secundario", "displayName_fr": "Pénalité d'effet secondaire", "displayName_it": "Side Effect Penalty", "displayName_ja": "副作用ペナルティ", "displayName_ko": "부작용 페널티", "displayName_ru": "Штраф к силе побочного эффекта", "displayName_zh": "副作用惩罚", "displayNameID": 232986, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttribute1", "published": 1, "stackable": 1, "unitID": 105 }, "1100": { "attributeID": 1100, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttribute2", "published": 0, "stackable": 1 }, "1101": { "attributeID": 1101, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttribute3", "published": 0, "stackable": 1 }, "1102": { "attributeID": 1102, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttribute4", "published": 0, "stackable": 1 }, "1103": { "attributeID": 1103, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttribute5", "published": 0, "stackable": 1 }, "1104": { "attributeID": 1104, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Geschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 233088, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayMaxVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1105": { "attributeID": 1105, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "HP-Nachteil der Panzerung", "displayName_en-us": "Armor Hitpoint Penalty", "displayName_es": "Penalización de puntos de vida del blindaje", "displayName_fr": "Pénalité de PV du blindage", "displayName_it": "Armor Hitpoint Penalty", "displayName_ja": "アーマーHPペナルティ", "displayName_ko": "장갑 내구도 페널티", "displayName_ru": "Сокращение запаса прочности брони", "displayName_zh": "装甲值惩罚", "displayNameID": 233084, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayArmorHpBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1106": { "attributeID": 1106, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Max. Geschwindigkeitsbonus für Lenkwaffen", "displayName_en-us": "Missile Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima del misil", "displayName_fr": "Bonus de vitesse maximale des missiles", "displayName_it": "Missile Maximum Velocity Bonus", "displayName_ja": "ミサイル最高速度ボーナス", "displayName_ko": "미사일 최대 속도 보너스", "displayName_ru": "Влияние на скорость полёта ракет", "displayName_zh": "导弹最大速度加成", "displayNameID": 233089, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayMissileMaxVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1107": { "attributeID": 1107, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Panzerungsreparatur-Bonus", "displayName_en-us": "Armor Repaired Bonus", "displayName_es": "Bonificación de blindaje reparado", "displayName_fr": "Bonus de blindage réparé", "displayName_it": "Armor Repaired Bonus", "displayName_ja": "アーマーリペアボーナス", "displayName_ko": "장갑 수리 보너스", "displayName_ru": "Влияние на эффективность ремонта брони", "displayName_zh": "已维修装甲量加成", "displayNameID": 233083, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayArmorDamageAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1108": { "attributeID": 1108, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktionsbonus", "displayName_en-us": "falloff bonus", "displayName_es": "bonificación de alcance efectivo", "displayName_fr": "Bonus de distance de perte", "displayName_it": "falloff bonus", "displayName_ja": "精度低下ボーナス", "displayName_ko": "유효사거리 보너스", "displayName_ru": "Влияние на добавочную дальность", "displayName_zh": "失准范围加成", "displayNameID": 233086, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayFalloffModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1109": { "attributeID": 1109, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Nachführungsgeschwindigkeit-Bonus", "displayName_en-us": "Tracking Speed bonus", "displayName_es": "Bonificación de velocidad de rastreo", "displayName_fr": "Bonus de vitesse de poursuite", "displayName_it": "Tracking Speed bonus", "displayName_ja": "追跡速度ボーナス", "displayName_ko": "트래킹 속도 보너스", "displayName_ru": "Влияние на скорость наводки", "displayName_zh": "跟踪速度加成", "displayNameID": 233093, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayTrackingSpeedModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1110": { "attributeID": 1110, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsradius-Bonus", "displayName_en-us": "Explosion Radius Bonus", "displayName_es": "Bonificación de radio de explosión", "displayName_fr": "Bonus de rayon d'explosion", "displayName_it": "Explosion Radius Bonus", "displayName_ja": "爆発半径ボーナス", "displayName_ko": "폭발 반경 보너스", "displayName_ru": "Влияние на сигнатуру взрыва", "displayName_zh": "爆炸半径加成", "displayNameID": 233081, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayAoeCloudsizeModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1111": { "attributeID": 1111, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Optimale Reichweite-Bonus", "displayName_en-us": "Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo", "displayName_fr": "Bonus de portée optimale", "displayName_it": "Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス", "displayName_ko": "최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность", "displayName_zh": "最佳射程加成", "displayNameID": 233087, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "displayMaxRangeModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1112": { "attributeID": 1112, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Modifies base chance of successful invention", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "inventionPropabilityMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "1113": { "attributeID": 1113, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Modifies the mineral efficiency of invented BPCs", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "inventionMEModifier", "published": 0, "stackable": 1, "unitID": 120 }, "1114": { "attributeID": 1114, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Modifies the time efficiency of invented BPCs", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "inventionTEModifier", "published": 0, "stackable": 1 }, "1115": { "attributeID": 1115, "categoryID": 9, "dataType": 12, "defaultValue": 0.0, "description": "Used to show usable decryptors when starting reverse engineering based on data interface", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "decryptorID", "published": 0, "stackable": 1 }, "1116": { "attributeID": 1116, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The strength of the probe.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanProbeStrength", "published": 1, "stackable": 1 }, "1117": { "attributeID": 1117, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthSignatures", "published": 1, "stackable": 1 }, "1118": { "attributeID": 1118, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthDronesProbes", "published": 1, "stackable": 1 }, "1119": { "attributeID": 1119, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthScrap", "published": 1, "stackable": 1 }, "1120": { "attributeID": 1120, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthShips", "published": 1, "stackable": 1 }, "1121": { "attributeID": 1121, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanStrengthStructures", "published": 1, "stackable": 1 }, "1122": { "attributeID": 1122, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Max groups that a character can scan for with probes. Default is 0 and max groups will be 5 with a single skill adding 1 per skill level.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxScanGroups", "published": 0, "stackable": 1 }, "1123": { "attributeID": 1123, "categoryID": 7, "dataType": 4, "defaultValue": 60000.0, "description": "How long this probe has to scan until it can obtain results.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanDuration", "published": 1, "stackable": 1, "unitID": 101 }, "1124": { "attributeID": 1124, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Modifies the max runs in a blueprint created through invention", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "inventionMaxRunModifier", "published": 0, "stackable": 1 }, "1125": { "attributeID": 1125, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Negativ-Nebeneffekt-Chance-Bonus", "displayName_en-us": "Negative Side Effect Chance Bonus", "displayName_es": "Bonificación de probabilidad de efecto secundario negativo", "displayName_fr": "Bonus de risque d'effet secondaire négatif", "displayName_it": "Negative Side Effect Chance Bonus", "displayName_ja": "副作用発生率ボーナス", "displayName_ko": "불리한 부작용 확률 보너스", "displayName_ru": "Снижение шанса появления побочного эффекта", "displayName_zh": "副作用发生机率加成", "displayNameID": 232990, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterChanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1126": { "attributeID": 1126, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Nebeneffekt-Modifikator", "displayName_en-us": "Side effect Modifier", "displayName_es": "Modificador de efecto secundario", "displayName_fr": "Modificateur d'effet secondaire", "displayName_it": "Side effect Modifier", "displayName_ja": "副作用修正乗数", "displayName_ko": "부작용 보정치", "displayName_ru": "Модификатор побочного эффекта", "displayName_zh": "副作用调整", "displayNameID": 232988, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAttributeModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1127": { "attributeID": 1127, "categoryID": 9, "dataType": 11, "defaultValue": 0.0, "description": "Links blueprints to the data interface required to reverse engineer it", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "interfaceID", "published": 0, "stackable": 1 }, "1128": { "attributeID": 1128, "categoryID": 9, "dataType": 11, "defaultValue": 0.0, "description": "Datacore required to reverse engineer this blueprint", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "datacore1ID", "published": 0, "stackable": 1 }, "1129": { "attributeID": 1129, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Datacore required to reverse engineer this blueprint", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "datacore2ID", "published": 1, "stackable": 1 }, "1130": { "attributeID": 1130, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "ECM-Stärkebonus", "displayName_en-us": "ECM Strength Bonus", "displayName_es": "Bonificación de intensidad de contramedidas electrónicas", "displayName_fr": "Bonus de puissance CME", "displayName_it": "ECM Strength Bonus", "displayName_ja": "ECM 強度ボーナス", "displayName_ko": "ECM 강도 보너스", "displayName_ru": "Увеличение мощности глушения захвата целей", "displayName_zh": "ECM强度加成", "displayNameID": 233645, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "ecmStrengthBonusPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1131": { "attributeID": 1131, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Massenmodifikator", "displayName_en-us": "Mass Modifier", "displayName_es": "Modificador de masa", "displayName_fr": "Modificateur de masse", "displayName_it": "Mass Modifier", "displayName_ja": "マスモディファイア", "displayName_ko": "질량 보정치", "displayName_ru": "Степень изменения массы", "displayName_zh": "质量调整", "displayNameID": 233290, "displayWhenZero": 0, "highIsGood": 1, "iconID": 76, "name": "massBonusPercentage", "published": 1, "stackable": 1, "unitID": 105 }, "1132": { "attributeID": 1132, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Attribute on ships used for ship upgrades", "displayName_de": "Kalibrierung", "displayName_en-us": "Calibration", "displayName_es": "Calibración", "displayName_fr": "Étalonnage", "displayName_it": "Calibration", "displayName_ja": "キャリブレーション", "displayName_ko": "교정치", "displayName_ru": "Калибровка", "displayName_zh": "校准值", "displayNameID": 233132, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2887, "name": "upgradeCapacity", "published": 1, "stackable": 1, "unitID": 120 }, "1133": { "attributeID": 1133, "categoryID": 17, "dataType": 5, "defaultValue": 6.0, "description": "Used to increase signature radius of entity when it activates Max Velocity. Used to fake MWD sig radius increase.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "entityMaxVelocitySignatureRadiusMultiplier", "published": 0, "stackable": 1 }, "1134": { "attributeID": 1134, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxTargetRangeMultiplierSet", "published": 0, "stackable": 1 }, "1135": { "attributeID": 1135, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanResolutionMultiplierSet", "published": 0, "stackable": 1 }, "1136": { "attributeID": 1136, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Helper attribute for distribution dungeons.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanAllStrength", "published": 0, "stackable": 1, "unitID": 120 }, "1137": { "attributeID": 1137, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "The number of rig slots on the ship.", "displayName_de": "Modifikationsslots", "displayName_en-us": "Rig Slots", "displayName_es": "Ranuras de complementos", "displayName_fr": "Emplacements d'optimisation", "displayName_it": "Rig Slots", "displayName_ja": "リグスロット", "displayName_ko": "리그 슬롯", "displayName_ru": "Разъёмы для модификаторов", "displayName_zh": "改装件安装座", "displayNameID": 233288, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3266, "name": "rigSlots", "published": 0, "stackable": 1, "unitID": 122 }, "1138": { "attributeID": 1138, "categoryID": 7, "dataType": 5, "defaultValue": 10.0, "description": "used on rigs", "displayName_de": "Nachteil", "displayName_en-us": "Drawback", "displayName_es": "Desventaja", "displayName_fr": "Inconvénient", "displayName_it": "Drawback", "displayName_ja": "副作用", "displayName_ko": "부작용", "displayName_ru": "Штраф", "displayName_zh": "缺陷", "displayNameID": 233094, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2887, "name": "drawback", "published": 1, "stackable": 1, "unitID": 105 }, "1139": { "attributeID": 1139, "categoryID": 7, "dataType": 5, "defaultValue": 10.0, "description": "", "displayName_de": "Verringerung des Ausrüstungsnachteils", "displayName_en-us": "Rig Drawback Reduction", "displayName_es": "Reducción de desventaja del complemento", "displayName_fr": "Réduction des inconvénients de modification", "displayName_it": "Rig Drawback Reduction", "displayName_ja": "リグ副作用緩和", "displayName_ko": "리그 부작용 감소", "displayName_ru": "Снижение штрафа от модификаторов", "displayName_zh": "改装件缺陷减少值", "displayNameID": 233095, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "rigDrawbackBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1141": { "attributeID": 1141, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Panzerung-HP-Abzug", "displayName_en-us": "Armor Hitpoint Penalty", "displayName_es": "Penalización de puntos de vida de blindaje", "displayName_fr": "Pénalité de PV du blindage", "displayName_it": "Armor Hitpoint Penalty", "displayName_ja": "アーマーヒットポイントペナルティ", "displayName_ko": "장갑 내구도 페널티", "displayName_ru": "Сокращение запаса прочности брони", "displayName_zh": "装甲值惩罚", "displayNameID": 232985, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterArmorHPPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1142": { "attributeID": 1142, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Abzug für Panzerungsreparatur", "displayName_en-us": "Armor Repair Amount Penalty", "displayName_es": "Penalización de cantidad de reparación de blindaje", "displayName_fr": "Pénalité de montant de réparation de blindage", "displayName_it": "Armor Repair Amount Penalty", "displayName_ja": "アーマーリペア量ペナルティ", "displayName_ko": "장갑 수리량 페널티", "displayName_ru": "Штраф к эффективности ремонта брони", "displayName_zh": "装甲维修量惩罚", "displayNameID": 233433, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterArmorRepairAmountPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1143": { "attributeID": 1143, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildkapazitätsabzug", "displayName_en-us": "Shield Capacity Penalty", "displayName_es": "Penalización de capacidad de escudo", "displayName_fr": "Pénalité de capacité du bouclier", "displayName_it": "Shield Capacity Penalty", "displayName_ja": "シールド容量ペナルティ", "displayName_ko": "실드량 페널티", "displayName_ru": "Штраф к запасу прочности щитов", "displayName_zh": "护盾容量惩罚", "displayNameID": 232995, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterShieldCapacityPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1144": { "attributeID": 1144, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Geschützturm-Reichweitenoptimum Abzug", "displayName_en-us": "Turret Optimal Range Penalty", "displayName_es": "Penalización de alcance óptimo de torreta", "displayName_fr": "Pénalité de portée optimale des tourelles", "displayName_it": "Turret Optimal Range Penalty", "displayName_ja": "タレット最適射程距離ペナルティ", "displayName_ko": "터렛 최적사거리 페널티", "displayName_ru": "Штраф к оптимальной дальности орудий", "displayName_zh": "炮塔最佳射程惩罚", "displayNameID": 232997, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterTurretOptimalRangePenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1145": { "attributeID": 1145, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "", "displayName_de": "Geschützturm-Nachführung-Abzug", "displayName_en-us": "Turret Tracking Penalty", "displayName_es": "Penalización de rastreo de torreta", "displayName_fr": "Pénalité de poursuite des tourelles", "displayName_it": "Turret Tracking Penalty", "displayName_ja": "タレット追跡ペナルティ", "displayName_ko": "터렛 트래킹 페널티", "displayName_ru": "Штраф к скорости наводки орудий", "displayName_zh": "炮塔跟踪速度惩罚", "displayNameID": 232998, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterTurretTrackingPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1146": { "attributeID": 1146, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Geschützturm-Präzisionsabfall", "displayName_en-us": "Turret Falloff Penalty", "displayName_es": "Penalización de alcance efectivo de torreta", "displayName_fr": "Pénalité de distance de perte des tourelles", "displayName_it": "Turret Falloff Penalty", "displayName_ja": "タレット精度低下ペナルティ", "displayName_ko": "터렛 유효사거리 페널티", "displayName_ru": "Штраф к добавочной дальности орудий", "displayName_zh": "炮塔失准范围惩罚", "displayNameID": 232996, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterTurretFalloffPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1147": { "attributeID": 1147, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsgeschwindigkeit-Abzug", "displayName_en-us": "Explosion Velocity Penalty", "displayName_es": "Penalización de velocidad de explosión", "displayName_fr": "Pénalité de vitesse d'explosion", "displayName_it": "Explosion Velocity Penalty", "displayName_ja": "爆発速度ペナルティ", "displayName_ko": "폭발속도 페널티", "displayName_ru": "Штраф к скорости взрыва", "displayName_zh": "爆炸速度惩罚", "displayNameID": 232984, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterAOEVelocityPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1148": { "attributeID": 1148, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Raketengeschwindigkeit-Abzug", "displayName_en-us": "Missile Velocity Penalty", "displayName_es": "Penalización de velocidad de misiles", "displayName_fr": "Pénalité de vitesse des missiles", "displayName_it": "Missile Velocity Penalty", "displayName_ja": "ミサイル速度ペナルティ", "displayName_ko": "미사일 속도 페널티", "displayName_ru": "Штраф к скорости ракет", "displayName_zh": "导弹速度惩罚", "displayNameID": 232993, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterMissileVelocityPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1149": { "attributeID": 1149, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Abzug für Lenkwaffenexplosionsradius", "displayName_en-us": "Missile Explosion Radius Penalty", "displayName_es": "Penalización de radio de explosión de misiles", "displayName_fr": "Pénalité de rayon d'explosion des missiles", "displayName_it": "Missile Explosion Radius Penalty", "displayName_ja": "ミサイル爆発半径ペナルティ", "displayName_ko": "미사일 폭발반경 페널티", "displayName_ru": "Штраф к сигнатуре взрыва ракет", "displayName_zh": "导弹爆炸半径惩罚", "displayNameID": 232992, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterMissileAOECloudPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1150": { "attributeID": 1150, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "", "displayName_de": "Energiespeichergrößen-Abzug", "displayName_en-us": "Capacitor Capacity Penalty", "displayName_es": "Penalización de capacidad del condensador", "displayName_fr": "Pénalité de charge de capaciteur", "displayName_it": "Capacitor Capacity Penalty", "displayName_ja": "キャパシタ容量ペナルティ", "displayName_ko": "캐패시터 용량 페널티", "displayName_ru": "Штраф к ёмкости накопителя", "displayName_zh": "电容容量惩罚", "displayNameID": 232989, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterCapacitorCapacityPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1151": { "attributeID": 1151, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Geschwindigkeitsabzug", "displayName_en-us": "Velocity Penalty", "displayName_es": "Penalización de velocidad", "displayName_fr": "Pénalité de vitesse", "displayName_it": "Velocity Penalty", "displayName_ja": "速度ペナルティ", "displayName_ko": "속도 페널티", "displayName_ru": "Штраф к скорости", "displayName_zh": "速度惩罚", "displayNameID": 232991, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "boosterMaxVelocityPenalty", "published": 1, "stackable": 1, "unitID": 105 }, "1152": { "attributeID": 1152, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "How much the upgrades installed on this ship are using of its upgrade capacity.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "upgradeLoad", "published": 0, "stackable": 1 }, "1153": { "attributeID": 1153, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "How much of the upgrade capacity is used when this is fitted to a ship.", "displayName_de": "Kalibrierungskosten", "displayName_en-us": "Calibration cost", "displayName_es": "Coste de calibración", "displayName_fr": "Coût d'étalonnage", "displayName_it": "Calibration cost", "displayName_ja": "キャリブレーションコスト", "displayName_ko": "교정 비용", "displayName_ru": "Стоимость калибровки", "displayName_zh": "校准值消耗", "displayNameID": 233432, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2887, "name": "upgradeCost", "published": 1, "stackable": 1 }, "1154": { "attributeID": 1154, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "How many rigs can by fitted to this ship.", "displayName_de": "Modifikationsslots", "displayName_en-us": "Rig Slots", "displayName_es": "Ranuras complementos", "displayName_fr": "Emplacements d'optimisation", "displayName_it": "Rig Slots", "displayName_ja": "アップグレードハードポイント", "displayName_ko": "리그 슬롯", "displayName_ru": "Разъёмы для надстроек", "displayName_zh": "改装件槽位", "displayNameID": 233639, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3266, "name": "upgradeSlotsLeft", "published": 1, "stackable": 1, "unitID": 122 }, "1155": { "attributeID": 1155, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "How much the datacore costs in RPs when being bought from research agents (not used anymore)", "displayName_de": "RP-Kosten", "displayName_en-us": "RP Cost", "displayName_es": "Coste de PI", "displayName_fr": "Coût en PR", "displayName_it": "RP Cost", "displayName_ja": "RP コスト", "displayName_ko": "RP 비용", "displayName_ru": "Стоимость в баллах исследований", "displayName_zh": "研究点数消耗", "displayNameID": 233293, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "researchPointCost", "published": 1, "stackable": 1, "unitID": 120 }, "1156": { "attributeID": 1156, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Max. Scan-Abweichungsmodifikator", "displayName_en-us": "Maximum Scan Deviation Modifier", "displayName_es": "Modificador de desviación máxima del escaneo", "displayName_fr": "Modificateur de déviation max du balayage", "displayName_it": "Maximum Scan Deviation Modifier", "displayName_ja": "最大スキャン誤差修正乗数", "displayName_ko": "최대 스캔 오차 보정치", "displayName_ru": "Влияние на максимальное отклонение при поиске зондами", "displayName_zh": "扫描偏差上限调整", "displayNameID": 233325, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxScanDeviationModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1157": { "attributeID": 1157, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonus2", "published": 0, "stackable": 1 }, "1158": { "attributeID": 1158, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Attribute to disallow targetting.", "displayName_de": "Nicht aufschaltbar", "displayName_en-us": "Untargetable", "displayName_es": "Inalcanzable", "displayName_fr": "Ciblage impossible", "displayName_it": "Untargetable", "displayName_ja": "ターゲット不能", "displayName_ko": "타겟팅 불가", "displayName_ru": "Не может быть целью", "displayName_zh": "无法锁定", "displayNameID": 233047, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "untargetable", "published": 0, "stackable": 1, "unitID": 137 }, "1159": { "attributeID": 1159, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "HP-Bonus für Panzerung", "displayName_en-us": "Armor Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor Hitpoint Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 232966, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1383, "name": "armorHPBonusAdd", "published": 1, "stackable": 1, "unitID": 113 }, "1160": { "attributeID": 1160, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Zugriffsschwierigkeitsbonus-Modifikator", "displayName_en-us": "Access Difficulty Bonus Modifier", "displayName_es": "Modificador de bonificación de la dificultad de acceso", "displayName_fr": "Modificateur de bonus de difficulté d'accès", "displayName_it": "Access Difficulty Bonus Modifier", "displayName_ja": "アクセス難度ボーナス修正乗数", "displayName_ko": "잠금 해제 보너스 보정치", "displayName_ru": "Модификатор влияния на сложность доступа", "displayName_zh": "获取成功率调整", "displayNameID": 232941, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "accessDifficultyBonusModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1161": { "attributeID": 1161, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Used for the scan frequency probe to give results on scan strength types instead of location. 0 = false, 1 = true", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanFrequencyResult", "published": 0, "stackable": 1 }, "1162": { "attributeID": 1162, "categoryID": 9, "dataType": 4, "defaultValue": 7200000.0, "description": "The amount of milliseconds before the wreck dissapears. Note: this only applies to NPC wrecks or empty player wrecks.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "explosionDelayWreck", "published": 0, "stackable": 1 }, "1163": { "attributeID": 1163, "categoryID": 9, "dataType": 4, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canCloak", "published": 0, "stackable": 1 }, "1164": { "attributeID": 1164, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Afterburner and Microwarpdrive Max Velocity Bonus", "displayName_de": "Bonus auf die Höchstgeschwindigkeit von Nachbrennern und Mikrowarpantrieben", "displayName_en-us": "Afterburner and Microwarpdrive Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima del posquemador y el motor de microwarp", "displayName_fr": "Bonus de vitesse maximale du propulseur de microwarp et du système de post-combustion", "displayName_it": "Afterburner and Microwarpdrive Maximum Velocity Bonus", "displayName_ja": "アフターバーナー/マイクロワープドライブ最高速度ボーナス", "displayName_ko": "애프터버너 및 마이크로 워프 드라이브 최대 속도 보너스", "displayName_ru": "Влияние на скорость форсажных ускорителей и микроварп-ускорителей", "displayName_zh": "加力燃烧器和微型跃迁推进器最大速度加成", "displayNameID": 233194, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "speedFactorBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1165": { "attributeID": 1165, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Minimum distance where a starbase structure can be anchored at from the control tower shield extremity in meters.", "displayName_de": "Minimale Verankerungsentfernung vom Starbase-Schild", "displayName_en-us": "Minimum Anchoring Distance From Starbase Shield", "displayName_es": "Distancia mín. de anclaje desde escudo de base estelar", "displayName_fr": "Distance minimum d'ancrage depuis le bouclier de la base stellaire", "displayName_it": "Minimum Anchoring Distance From Starbase Shield", "displayName_ja": "スターベースシールドからの最小係留距離", "displayName_ko": "(스타베이스 실드 기준)위치 고정 최소 거리", "displayName_ru": "Минимальная дистанция анкеровки от силового поля", "displayName_zh": "锚定离母星护盾最短距离", "displayNameID": 233041, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "controlTowerMinimumDistance", "published": 1, "stackable": 1, "unitID": 1 }, "1167": { "attributeID": 1167, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If a starbase structure has this attribute = 1 then it can be controlled by owners with infrastructure tactical officer skill and corp role.", "displayName_de": "Vom Spieler kontrollierbar", "displayName_en-us": "Player Controllable", "displayName_es": "Controlable por el jugador", "displayName_fr": "Contrôlable par le joueur", "displayName_it": "Player Controllable", "displayName_ja": "プレイヤー操作可", "displayName_ko": "조작가능 플레이어", "displayName_ru": "Управляется игроком", "displayName_zh": "玩家可控", "displayNameID": 233634, "displayWhenZero": 0, "highIsGood": 1, "iconID": 413, "name": "posPlayerControlStructure", "published": 1, "stackable": 1, "unitID": 137 }, "1168": { "attributeID": 1168, "categoryID": 9, "dataType": 0, "defaultValue": 0.0, "description": "Whether an object is incapacitated or not. Boolean.", "displayWhenZero": 0, "highIsGood": 1, "name": "isIncapacitated", "published": 0, "stackable": 1 }, "1169": { "attributeID": 1169, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Sensor strength all types", "displayName_de": "Allgemeine Sensorstärke", "displayName_en-us": "Generic Sensor Strength", "displayName_es": "Intensidad de los sensores genéricos", "displayName_fr": "Puissance de détection standard", "displayName_it": "Generic Sensor Strength", "displayName_ja": "標準センサー強度", "displayName_ko": "일반 센서 강도", "displayName_ru": "Мощность общих сенсоров", "displayName_zh": "通用感应器强度", "displayNameID": 233256, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanGenericStrength", "published": 1, "stackable": 0, "unitID": 120 }, "1170": { "attributeID": 1170, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Amount of armor healed by structure repair effects", "displayName_de": "Panzerungsreparaturmenge", "displayName_en-us": "Armor Repair Amount", "displayName_es": "Cantidad de reparación del blindaje", "displayName_fr": "Niveau de réparation du blindage", "displayName_it": "Armor Repair Amount", "displayName_ja": "アーマーリペア量", "displayName_ko": "장갑 수리량", "displayName_ru": "Эффективность ремонта брони", "displayName_zh": "装甲维修量", "displayNameID": 233071, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureArmorRepairAmount", "published": 1, "stackable": 1 }, "1171": { "attributeID": 1171, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Amount of shield healed by structure repair effects", "displayName_de": "Schildreparaturmenge", "displayName_en-us": "Shield Repair Amount", "displayName_es": "Cantidad de reparación del escudo", "displayName_fr": "Niveau de réparation du bouclier", "displayName_it": "Shield Repair Amount", "displayName_ja": "シールドリペア量", "displayName_ko": "실드 회복량", "displayName_ru": "Эффективность накачки щитов", "displayName_zh": "护盾修复量", "displayNameID": 233069, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureShieldRepairAmount", "published": 1, "stackable": 1 }, "1172": { "attributeID": 1172, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Value modified by remote starbase structure repair effects (should be 0 unless the structure repairs itself)", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureArmorBoostValue", "published": 0, "stackable": 1 }, "1173": { "attributeID": 1173, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Value modified by remote starbase structure repair effects (should be 0 unless the structure repairs itself)", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "structureShieldBoostValue", "published": 0, "stackable": 1 }, "1174": { "attributeID": 1174, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "How many starbase structures a character control.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "posStructureControlAmount", "published": 1, "stackable": 1 }, "1175": { "attributeID": 1175, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatHi", "published": 1, "stackable": 1 }, "1176": { "attributeID": 1176, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatMed", "published": 1, "stackable": 1 }, "1177": { "attributeID": 1177, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatLow", "published": 1, "stackable": 1 }, "1178": { "attributeID": 1178, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatCapacityHi", "published": 0, "stackable": 1 }, "1179": { "attributeID": 1179, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatDissipationRateHi", "published": 0, "stackable": 1 }, "1180": { "attributeID": 1180, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAbsorbtionRateModifier", "published": 0, "stackable": 1 }, "1181": { "attributeID": 1181, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Überladedauer-Modifikator", "displayName_en-us": "Overload Duration Modifier", "displayName_es": "Modificador de duración de sobrecarga", "displayName_fr": "Modificateur de durée de surcharge", "displayName_it": "Overload Duration Modifier", "displayName_ja": "オーバーロード持続時間修正乗数", "displayName_ko": "과부하 지속시간 조정장치", "displayName_ru": "Влияние перегрузки на время цикла", "displayName_zh": "超载持续时间调整", "displayNameID": 233390, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1182": { "attributeID": 1182, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAbsorbtionRateHi", "published": 0, "stackable": 1 }, "1183": { "attributeID": 1183, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAbsorbtionRateMed", "published": 0, "stackable": 1 }, "1184": { "attributeID": 1184, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAbsorbtionRateLow", "published": 0, "stackable": 1 }, "1185": { "attributeID": 1185, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Whether the structure requires the onliner's alliance to hold sovereignty in the system for it to be onlineable.", "displayName_de": "Benötigtes Souveränitätslevel", "displayName_en-us": "Required Sovereignty Level", "displayName_es": "Nivel de soberanía necesario", "displayName_fr": "Niveau de souveraineté requis", "displayName_it": "Required Sovereignty Level", "displayName_ja": "必須領有権レベル", "displayName_ko": "필요 소버린티 레벨", "displayName_ru": "Требуемый уровень суверенитета", "displayName_zh": "所需主权等级", "displayNameID": 233381, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "onliningRequiresSovereigntyLevel", "published": 1, "stackable": 1 }, "1190": { "attributeID": 1190, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus attribute for capacitor need of EW and propulsion jamming.", "displayName_de": "EW-Energiespeicherbedarf-Bonus", "displayName_en-us": "EW Capacitor Need Bonus", "displayName_es": "Bonificación de necesidad del condensador de GE", "displayName_fr": "Bonus des besoins énergétiques du capaciteur de GE", "displayName_it": "EW Capacitor Need Bonus", "displayName_ja": "EW キャパシタ消費ボーナス", "displayName_ko": "전자전 캐패시터 요구치 보너스", "displayName_ru": "Повышение потребление энергии средствами РЭБ", "displayName_zh": "电子战设备电容需求加成", "displayNameID": 233172, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "ewCapacitorNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1191": { "attributeID": 1191, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikator der maximal aktiven Drohnen", "displayName_en-us": "Maximum Active Drone Modifier", "displayName_es": "Máximo de modificadores de drones activos", "displayName_fr": "Modificateur de drones actifs maximum", "displayName_it": "Maximum Active Drone Modifier", "displayName_ja": "最大稼動ドローン乗数", "displayName_ko": "최대 드론 보정치", "displayName_ru": "Влияние на максимальное количество контролируемых дронов", "displayName_zh": "可控无人机数上限调整系数", "displayNameID": 233302, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxDronePercentageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1192": { "attributeID": 1192, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus for CPU requirement of Triage Modules.", "displayName_de": "CPU-Bedarf-Bonus für Triage", "displayName_en-us": "Triage CPU Need Bonus", "displayName_es": "Bonificación de necesidad de la CPU de triaje", "displayName_fr": "Bonus d'utilisation du CPU pour le triage", "displayName_it": "Triage CPU Need Bonus", "displayName_ja": "トリアージCPU必要量ボーナス", "displayName_ko": "트리아지 CPU 요구치 보너스", "displayName_ru": "Влияние на потребность реконфигураторов ремонтного профиля в мощностях ЦПУ.", "displayName_zh": "会战型紧急修复增强设备CPU需求加成", "displayNameID": 233160, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "triageCpuNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1193": { "attributeID": 1193, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to duration of modules requiring projected ECM.", "displayName_de": "Bonus auf die Wirkungsdauer des Pulsgenerators", "displayName_en-us": "Burst Projector Duration Bonus", "displayName_es": "Bonificación de duración del proyector de estallido", "displayName_fr": "de bonus à la durée du projecteur à salves", "displayName_it": "Burst Projector Duration Bonus", "displayName_ja": "バーストプロジェクターの持続時間ボーナス", "displayName_ko": "버스트 프로젝터 지속시간 보너스", "displayName_ru": "Влияние на длительность проецируемых объёмных помех", "displayName_zh": "脉冲波投射器运转周期加成", "displayNameID": 233384, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "projECMDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1194": { "attributeID": 1194, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus for CPU requirement of projected electronic counter measures.", "displayName_de": "CPU-Bedarf-Bonus für projektierte ECM-Systeme", "displayName_en-us": "Projected ECM CPU Need Bonus", "displayName_es": "Bonificación por necesidad de la CPU en ECM proyectadas", "displayName_fr": "Bonus d'utilisation du CPU pour les CME projetées", "displayName_it": "Projected ECM CPU Need Bonus", "displayName_ja": "プロジェクタイル ECM CPU 必要量ボーナス", "displayName_ko": "강화 ECM CPU 요구량 보너스", "displayName_ru": "Влияние на потребление вычислительной мощности проекторами подавления захвата целей", "displayName_zh": "投射型ECM装备CPU需求加成", "displayNameID": 233386, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "projECMCpuNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1195": { "attributeID": 1195, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "How many structures in this group can be anchored for the same alliance per solar system. 0 means there is no limit.", "displayName_de": "Maximale Ankermenge pro Sonnensystem", "displayName_en-us": "Maximum Anchoring Amount per Solar System", "displayName_es": "Cantidad máxima de anclajes por sistema solar", "displayName_fr": "Ancrages maximum par système solaire", "displayName_it": "Maximum Anchoring Amount per Solar System", "displayName_ja": "ソーラーシステムごとの最大係留量", "displayName_ko": "항성계 당 최대 설치량", "displayName_ru": "Макс. количество развёрнутых сооружений этого типа в системе", "displayName_zh": "每星系锚定数上限", "displayNameID": 233406, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "posAnchoredPerSolarSystemAmount", "published": 1, "stackable": 1 }, "1196": { "attributeID": 1196, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatDissipationRateMed", "published": 0, "stackable": 1 }, "1198": { "attributeID": 1198, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatDissipationRateLow", "published": 0, "stackable": 1 }, "1199": { "attributeID": 1199, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatCapacityMed", "published": 0, "stackable": 1 }, "1200": { "attributeID": 1200, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatCapacityLow", "published": 0, "stackable": 1 }, "1205": { "attributeID": 1205, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Feuerrate-Überlade-Bonus", "displayName_en-us": "Overload rate of fire bonus", "displayName_es": "Bonificación de cadencia de tiro de sobrecarga", "displayName_fr": "Bonus de cadence de tir en surcharge", "displayName_it": "Overload rate of fire bonus", "displayName_ja": "オーバーロード発射間隔ボーナス", "displayName_ko": "과부하 시 연사속도 보너스", "displayName_ru": "Влияние перегрузки на скорострельность", "displayName_zh": "超载射击速度加成", "displayNameID": 233394, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1386, "name": "overloadRofBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1206": { "attributeID": 1206, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Überladedauer-Bonus", "displayName_en-us": "Overload duration bonus", "displayName_es": "Bonificación de duración de sobrecarga", "displayName_fr": "Bonus de durée de surcharge", "displayName_it": "Overload duration bonus", "displayName_ja": "オーバーロード起動時間ボーナス", "displayName_ko": "과부하 시 지속시간 보너스", "displayName_ru": "Влияние перегрузки на время цикла", "displayName_zh": "超载持续时间加成", "displayNameID": 233395, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1386, "name": "overloadSelfDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1207": { "attributeID": 1207, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isGlobal", "published": 0, "stackable": 1 }, "1208": { "attributeID": 1208, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Härtung-Überlade-Bonus", "displayName_en-us": "Overload hardening bonus", "displayName_es": "Bonificación de endurecimiento de sobrecarga", "displayName_fr": "Bonus de renforcement de surcharge", "displayName_it": "Overload hardening bonus", "displayName_ja": "オーバーロードハードニングボーナス", "displayName_ko": "과부하 시 강화 보너스", "displayName_ru": "Влияние на усиление от перегрузки", "displayName_zh": "超载增强器加成", "displayNameID": 233131, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadHardeningBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1209": { "attributeID": 1209, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier to CPU need of modules requireing Bomb Deployment", "displayName_de": "CPU-Bonus bei Bombeneinsatz", "displayName_en-us": "Bomb Deployment CPU Bonus", "displayName_es": "Bonificación de CPU de despliegue de bombas", "displayName_fr": "Bonus CPU de déploiement de bombe", "displayName_it": "Bomb Deployment CPU Bonus", "displayName_ja": "ボムディプロイメント CPU ボーナス", "displayName_ko": "폭탄 CPU 보너스", "displayName_ru": "Влияние на потребность бомбомётов в мощностях ЦПУ", "displayName_zh": "炸弹投放CPU加成", "displayNameID": 232982, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "bombDeploymentCpuNeedMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1210": { "attributeID": 1210, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schaden-Überlade-Bonus", "displayName_en-us": "Overload damage bonus", "displayName_es": "Bonificación de daño de sobrecarga", "displayName_fr": "Bonus de dégâts de surcharge", "displayName_it": "Overload damage bonus", "displayName_ja": "オーバーロードダメージボーナス", "displayName_ko": "과부하 시 피해량 보너스", "displayName_ru": "Влияние перегрузки на урон", "displayName_zh": "超载伤害加成", "displayNameID": 233389, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadDamageModifier", "published": 1, "stackable": 1, "unitID": 105 }, "1211": { "attributeID": 1211, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Hitzeschaden", "displayName_en-us": "Heat Damage", "displayName_es": "Daño por calor", "displayName_fr": "Dégâts thermiques", "displayName_it": "Heat Damage", "displayName_ja": "ヒートダメージ", "displayName_ko": "과부하 피해", "displayName_ru": "Повреждения от перегрузки", "displayName_zh": "超载损耗", "displayNameID": 233226, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1386, "name": "heatDamage", "published": 1, "stackable": 1, "tooltipDescription_de": "Der Schaden, den das Modul an sich selbst verursacht, wenn es durch Überlastung überhitzt", "tooltipDescription_en-us": "The damage the module does to itself when it overheats due to Overloading", "tooltipDescription_es": "El daño que el módulo se hace a sí mismo cuando se sobrecalienta debido a una sobrecarga.", "tooltipDescription_fr": "Les dégâts que le module s'inflige à lui-même lorsqu'il surchauffe en raison d'une surcharge", "tooltipDescription_it": "The damage the module does to itself when it overheats due to Overloading", "tooltipDescription_ja": "オーバーロードによってオーバーヒートした際にモジュールが受けるダメージ", "tooltipDescription_ko": "모듈이 과부하로 받는 자체 피해량", "tooltipDescription_ru": "Показатель повреждения модуля при перегреве в режиме перегрузки", "tooltipDescription_zh": "装备因过载导致过热时产生的自损", "tooltipDescriptionID": 707110, "tooltipTitleID": 707111, "unitID": 113 }, "1212": { "attributeID": 1212, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigtes Thermodynamik-Level", "displayName_en-us": "Required Thermodynamics Level", "displayName_es": "Nivel de Termodinámica necesario", "displayName_fr": "Niveau thermodynamique requis", "displayName_it": "Required Thermodynamics Level", "displayName_ja": "必須熱力学レベル", "displayName_ko": "열역학 요구 레벨", "displayName_ru": "Необходимый уровень навыка «Термодинамика»", "displayName_zh": "所需热力学等级", "displayNameID": 233635, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "requiredThermoDynamicsSkill", "published": 1, "stackable": 1, "unitID": 140 }, "1213": { "attributeID": 1213, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Hitzeschaden-Abzug", "displayName_en-us": "Heat damage penalty", "displayName_es": "Penalización de daño por calor", "displayName_fr": "Pénalité de dégâts thermiques", "displayName_it": "Heat damage penalty", "displayName_ja": "ヒートダメージペナルティ", "displayName_ko": "과부하 피해 페널티", "displayName_ru": "Штраф к повреждениям от перегрузки", "displayName_zh": "超载伤害惩罚", "displayNameID": 233227, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "heatDamageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1214": { "attributeID": 1214, "categoryID": 7, "dataType": 5, "defaultValue": 15000.0, "description": "The maximum distance from the control tower, at which structures can be controlled.", "displayName_de": "Maximale Kontrollreichweite", "displayName_en-us": "Maximum Control Distance", "displayName_es": "Distancia de control máxima", "displayName_fr": "Distance de contrôle maximale", "displayName_it": "Maximum Control Distance", "displayName_ja": "最大コントロールレンジ", "displayName_ko": "최대 통제 거리", "displayName_ru": "Максимальная дальность управления", "displayName_zh": "最大控制距离", "displayNameID": 233435, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "posStructureControlDistanceMax", "published": 1, "stackable": 1, "unitID": 1 }, "1216": { "attributeID": 1216, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Reduction of CPU need of shield transporters.", "displayName_de": "CPU-Bedarf-Bonus für Schildtransport", "displayName_en-us": "Shield Transport CPU Need Bonus", "displayName_es": "Bonificación de necesidad de la CPU de transporte del escudo", "displayName_fr": "Bonus d'utilisation du CPU pour le transport de bouclier", "displayName_it": "Shield Transport CPU Need Bonus", "displayName_ja": "シールドトランスポートCPU消費ボーナス", "displayName_ko": "실드 전송기 CPU 요구량 보너스", "displayName_ru": "Влияние на потребность установок дистанционной накачки щитов в мощностях ЦПУ", "displayName_zh": "护盾转移装备CPU需求加成", "displayNameID": 232943, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shieldTransportCpuNeedBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1218": { "attributeID": 1218, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Reduction of power grid needs of energy transfer arrays", "displayName_de": "Energiebedarf der Energieübertragungsanlage", "displayName_en-us": "Energy Transfer Array Power Need", "displayName_es": "Requisitos de potencia de matriz de transferencia energética", "displayName_fr": "Consommation du module de transfert d'énergie", "displayName_it": "Energy Transfer Array Power Need", "displayName_ja": "エネルギートランスファーアレイ必要エネルギー量", "displayName_ko": "에너지 전송 시설 전력 요구량", "displayName_ru": "Требования к мощности реактора для модулей передачи энергии", "displayName_zh": "能量转移阵列能量需求", "displayNameID": 233400, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "powerTransferPowerNeedBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1219": { "attributeID": 1219, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to drone armor repair amount", "displayName_de": "Drohnenpanzerungsschadensmenge-Bonus", "displayName_en-us": "Drone Armor Damage Amount Bonus", "displayName_es": "Bonificación de cantidad de daño del blindaje de dron", "displayName_fr": "Bonus de dégâts au blindage des drones", "displayName_it": "Drone Armor Damage Amount Bonus", "displayName_ja": "ドローンアーマーダメージ量ボーナス", "displayName_ko": "드론 장갑 피해량 보너스", "displayName_ru": "Влияние на урон орудий дронов по броне", "displayName_zh": "无人机装甲伤害加成", "displayNameID": 233096, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneArmorDamageAmountBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1220": { "attributeID": 1220, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to drone shield transport amount", "displayName_de": "Bonus auf Schildtransportmenge von Drohnen", "displayName_en-us": "Drone Shield Transport Amount Bonus", "displayName_es": "Bonificación de cantidad de transporte de escudo de drones", "displayName_fr": "Bonus de quantité de transport de boucliers de drone", "displayName_it": "Drone Shield Transport Amount Bonus", "displayName_ja": "ドローンシールドトランスポート転送量ボーナス", "displayName_ko": "드론 실드 전송량 보너스", "displayName_ru": "Влияние на эффективность накачки щитов дронами", "displayName_zh": "无人机护盾传输量加成", "displayNameID": 233117, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneShieldBonusBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1221": { "attributeID": 1221, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Delay in seconds; until you can jump again.", "displayName_de": "Sprungverzögerungsdauer", "displayName_en-us": "Jump Delay Duration", "displayName_es": "Duración de demora de salto", "displayName_fr": "Durée du délai de saut", "displayName_it": "Jump Delay Duration", "displayName_ja": "ジャンプ遅延時間", "displayName_ko": "점프 재사용 대기시간", "displayName_ru": "Длительность задержки гиперперехода", "displayName_zh": "跳跃延迟时间", "displayNameID": 233265, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "jumpDelayDuration", "published": 1, "stackable": 1, "unitID": 123 }, "1222": { "attributeID": 1222, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Überlade-Bonus für optimale Reichweite", "displayName_en-us": "Overload optimal range bonus", "displayName_es": "Bonificación de alcance óptimo de sobrecarga", "displayName_fr": "Bonus de portée optimale de surcharge", "displayName_it": "Overload optimal range bonus", "displayName_ja": "オーバーロード最適射程距離ボーナス", "displayName_ko": "과부하 시 최적사거리 보너스", "displayName_ru": "Влияние перегрузки на оптимальную дальность", "displayName_zh": "超载最佳射程加成", "displayNameID": 233393, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1223": { "attributeID": 1223, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Überladungs-Geschwindigkeits-Bonus", "displayName_en-us": "Overload Speed Bonus", "displayName_es": "Bonificación de velocidad de sobrecarga", "displayName_fr": "Bonus de vitesse de surcharge", "displayName_it": "Overload Speed Bonus", "displayName_ja": "オーバーロード速度ボーナス", "displayName_ko": "과부하 시 속도 보너스", "displayName_ru": "Влияние перегрузки на скорость", "displayName_zh": "超载速度加成", "displayNameID": 233399, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadSpeedFactorBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1224": { "attributeID": 1224, "categoryID": 52, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatGenerationMultiplier", "published": 0, "stackable": 1 }, "1225": { "attributeID": 1225, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "ECM-Überlade-Bonus", "displayName_en-us": "Overload ECM Bonus", "displayName_es": "Bonificación de sobrecarga de ECM", "displayName_fr": "Bonus de surcharge CME", "displayName_it": "Overload ECM Bonus", "displayName_ja": "オーバーロード ECM ボーナス", "displayName_ko": "과부하 시 ECM 보너스", "displayName_ru": "Влияние перегрузки на силу глушения захвата целей", "displayName_zh": "超载ECM加成", "displayNameID": 233392, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadECMStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1226": { "attributeID": 1226, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "ECCM-Überlade-Bonus", "displayName_en-us": "Overload ECCM Bonus", "displayName_es": "Bonificación de sobrecarga de ECCM", "displayName_fr": "Bonus de surcharge CCME", "displayName_it": "Overload ECCM Bonus", "displayName_ja": "オーバーロード ECCM ボーナス", "displayName_ko": "과부하 시 ECCM 보너스", "displayName_ru": "Влияние перегрузки на силу защиты от РЭБ", "displayName_zh": "超载ECCM加成", "displayNameID": 233391, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadECCMStrenghtBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1227": { "attributeID": 1227, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to signatureRadiusBonus", "displayName_de": "Modifikation des Bonus auf den Signatur-Radius", "displayName_en-us": "Modification of Signature Radius Bonus", "displayName_es": "Modificación de bonificación de radio de la señal", "displayName_fr": "Bonus de modification de rayon de signature", "displayName_it": "Modification of Signature Radius Bonus", "displayName_ja": "シグネチャ半径ボーナス修正値", "displayName_ko": "시그니처 반경 보너스 조정", "displayName_ru": "Снижение штрафа к радиусу сигнатуры", "displayName_zh": "信号半径加成修正", "displayNameID": 233218, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "signatureRadiusBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1228": { "attributeID": 1228, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier affecting signatureRadiusMultiplier", "displayName_de": "Signaturradius-Multiplikator", "displayName_en-us": "Signature Radius Multiplier", "displayName_es": "Multiplicador de radio de la señal", "displayName_fr": "Multiplicateur de rayon de signature", "displayName_it": "Signature Radius Multiplier", "displayName_ja": "シグネチャ半径修正乗数", "displayName_ko": "시그니처 반경 배수", "displayName_ru": "Множитель радиуса сигнатуры", "displayName_zh": "信号半径倍增系数", "displayNameID": 233213, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "signatureRadiusMultiplierMultiplier", "published": 1, "stackable": 1, "unitID": 105 }, "1229": { "attributeID": 1229, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Hitzeschaden-Modifikator", "displayName_en-us": "Heat damage modifier", "displayName_es": "Modificador de daño por calor", "displayName_fr": "Modificateur de dégâts thermiques", "displayName_it": "Heat damage modifier", "displayName_ja": "ヒートダメージ修正乗数", "displayName_ko": "열 피해량 보정치", "displayName_ru": "Множитель повреждений от перегрузки", "displayName_zh": "超载伤害量调整", "displayNameID": 233169, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "thermodynamicsHeatDamage", "published": 1, "stackable": 1, "unitID": 105 }, "1230": { "attributeID": 1230, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reparatur-Überlade-Bonus", "displayName_en-us": "Overload Repair Bonus", "displayName_es": "Bonificación de reparación de sobrecarga", "displayName_fr": "Bonus de réparation de surcharge", "displayName_it": "Overload Repair Bonus", "displayName_ja": "オーバーロードリペアボーナス", "displayName_ko": "과부하 시 수리 보너스", "displayName_ru": "Влияние перегрузки на эффективность ремонтных систем", "displayName_zh": "超载维修加成", "displayNameID": 233388, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadArmorDamageAmount", "published": 1, "stackable": 1, "unitID": 105 }, "1231": { "attributeID": 1231, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schildbooster-Überlade-Bonus", "displayName_en-us": "Overload Shield Boost Bonus", "displayName_es": "Bonificación de potenciador de escudo de sobrecarga", "displayName_fr": "Bonus de booster de bouclier en surcharge", "displayName_it": "Overload Shield Boost Bonus", "displayName_ja": "オーバーロードシールドブーストボーナス", "displayName_ko": "과부하 시 실드 부스트 보너스", "displayName_ru": "Влияние перегрузки на накачку щитов", "displayName_zh": "超载护盾回充加成", "displayNameID": 233397, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadShieldBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1233": { "attributeID": 1233, "categoryID": 4, "dataType": 5, "defaultValue": 10000.0, "description": "Secondary cargo space allowed, meant to supplement capacity. This is currently used exclusively for Strontium storage on starbases.", "displayName_de": "Strontium Bay", "displayName_en-us": "Strontium Bay", "displayName_es": "Plataforma de estroncio", "displayName_fr": "Baie de strontium", "displayName_it": "Strontium Bay", "displayName_ja": "ストロンチウムベイ", "displayName_ko": "스트론튬 창고", "displayName_ru": "Отсек для стронция", "displayName_zh": "锶储藏库", "displayNameID": 233425, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "capacitySecondary", "published": 1, "stackable": 1, "unitID": 9 }, "1234": { "attributeID": 1234, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Survey Scanner Range Bonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "surveyScannerRangeBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1235": { "attributeID": 1235, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Cargo Scanner Range Bonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "cargoScannerRangeBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1236": { "attributeID": 1236, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "commandBonusEffective", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusEffective", "published": 0, "stackable": 1, "unitID": 105 }, "1237": { "attributeID": 1237, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "commandBonusAdd", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusAdd", "published": 1, "stackable": 1 }, "1238": { "attributeID": 1238, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "commandBonusEffectiveAdd", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusEffectiveAdd", "published": 0, "stackable": 1 }, "1239": { "attributeID": 1239, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "shipBonusORECapital1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORECapital1", "published": 0, "stackable": 1 }, "1240": { "attributeID": 1240, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "shipBonusORECapital2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORECapital2", "published": 0, "stackable": 1 }, "1243": { "attributeID": 1243, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "shipBonusORECapital3", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORECapital3", "published": 0, "stackable": 1 }, "1244": { "attributeID": 1244, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "shipBonusORECapital4", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusORECapital4", "published": 0, "stackable": 1 }, "1245": { "attributeID": 1245, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Stops the module from being activated if the ship is aligning to warp.", "displayName_de": "Aktivierung beim Warpen nicht zulassen", "displayName_en-us": "Disallow Activation In Warp", "displayName_es": "Desautorizar activación en warp", "displayName_fr": "Interdire l'activation en warp", "displayName_it": "Disallow Activation In Warp", "displayName_ja": "ワープ時起動不可", "displayName_ko": "워프 중 활성화 금지", "displayName_ru": "Запрещено включение в варп-режиме", "displayName_zh": "跃迁中无法激活", "displayNameID": 233617, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowActivateOnWarp", "published": 1, "stackable": 1, "unitID": 137 }, "1246": { "attributeID": 1246, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusHeavyInterdictors1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusHeavyInterdictors1", "published": 0, "stackable": 1 }, "1247": { "attributeID": 1247, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusHeavyInterdictors2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusHeavyInterdictors2", "published": 0, "stackable": 1 }, "1249": { "attributeID": 1249, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusElectronicAttackShip1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusElectronicAttackShip1", "published": 0, "stackable": 1 }, "1250": { "attributeID": 1250, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusElectronicAttackShip2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusElectronicAttackShip2", "published": 0, "stackable": 1 }, "1251": { "attributeID": 1251, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Security Clearance Level", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "securityClearance", "published": 1, "stackable": 1 }, "1252": { "attributeID": 1252, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verwendet geheime Technologie", "displayName_en-us": "Uses Covert Cynosural Field Technology", "displayName_es": "Usa tecnología encubierta de campo cinosural.", "displayName_fr": "Utilise une technologie furtive", "displayName_it": "Uses Covert Cynosural Field Technology", "displayName_ja": "コバート技術を使用", "displayName_ko": "코버트 기술 사용", "displayName_ru": "Используется диверсионная маскировка", "displayName_zh": "使用隐秘诱导力场科技", "displayNameID": 233623, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isCovert", "published": 1, "stackable": 1, "unitID": 137 }, "1253": { "attributeID": 1253, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "jumpHarmonics", "published": 0, "stackable": 1 }, "1254": { "attributeID": 1254, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Kann keine Sprungtore benutzen", "displayName_en-us": "Cannot Use Stargates", "displayName_es": "No puede usar portales estelares.", "displayName_fr": "Utilisation des portails stellaires impossible", "displayName_it": "Cannot Use Stargates", "displayName_ja": "スターゲートの使用不可", "displayName_ko": "스타게이트 사용 불가", "displayName_ru": "Не в состоянии пройти через гиперворота", "displayName_zh": "不能使用星门", "displayNameID": 233002, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "canNotUseStargates", "published": 0, "stackable": 1 }, "1255": { "attributeID": 1255, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "droneDamageBonus", "displayName_de": "Drohnenschadensbonus", "displayName_en-us": "Drone Damage Bonus", "displayName_es": "Bonificación de daño de dron", "displayName_fr": "Bonus aux dégâts causés par les drones", "displayName_it": "Drone Damage Bonus", "displayName_ja": "ドローンダメージボーナス", "displayName_ko": "드론 피해 보너스", "displayName_ru": "Влияние на урон дронов", "displayName_zh": "无人机伤害加成", "displayNameID": 278712, "displayWhenZero": 0, "highIsGood": 1, "iconID": 10934, "name": "droneDamageBonus", "published": 1, "stackable": 0, "unitID": 105 }, "1256": { "attributeID": 1256, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "droneHPBonus", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneHPBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1257": { "attributeID": 1257, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusBlackOps1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBlackOps1", "published": 0, "stackable": 1 }, "1258": { "attributeID": 1258, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusBlackOps2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusBlackOps2", "published": 0, "stackable": 1 }, "1259": { "attributeID": 1259, "categoryID": 52, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Hitzedämpfung", "displayName_en-us": "Heat Attenuation", "displayName_es": "Atenuación del calor", "displayName_fr": "Atténuation de la chaleur", "displayName_it": "Heat Attenuation", "displayName_ja": "熱減少", "displayName_ko": "열 감쇠", "displayName_ru": "Рассеяние тепла", "displayName_zh": "热量发散", "displayNameID": 233221, "displayWhenZero": 0, "highIsGood": 1, "name": "heatAttenuationHi", "published": 0, "stackable": 1 }, "1261": { "attributeID": 1261, "categoryID": 52, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAttenuationMed", "published": 0, "stackable": 1 }, "1262": { "attributeID": 1262, "categoryID": 52, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "heatAttenuationLow", "published": 0, "stackable": 1 }, "1263": { "attributeID": 1263, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "towerHPOnlineMutator", "published": 1, "stackable": 1, "unitID": 127 }, "1264": { "attributeID": 1264, "categoryID": 9, "dataType": 5, "defaultValue": 10.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "brokenRepairCostMultiplier", "published": 0, "stackable": 1 }, "1265": { "attributeID": 1265, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusViolators1", "published": 0, "stackable": 1 }, "1266": { "attributeID": 1266, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusViolators2", "published": 0, "stackable": 1 }, "1267": { "attributeID": 1267, "categoryID": 7, "dataType": 5, "defaultValue": 10.0, "description": "dictates how many hitpoints you can repair per minute", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moduleRepairRate", "published": 1, "stackable": 1 }, "1268": { "attributeID": 1268, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusViolatorsRole1", "published": 0, "stackable": 1 }, "1269": { "attributeID": 1269, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusViolatorsRole2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusViolatorsRole2", "published": 0, "stackable": 1 }, "1270": { "attributeID": 1270, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Afterburner and Microwarpdrive Thrust Bonus", "displayName_de": "Schub-Bonus für Microwarpdrive- und Afterburner-Module", "displayName_en-us": "Afterburner and Microwarpdrive Thrust Bonus", "displayName_es": "Bonificación de impulso del posquemador y el motor de microwarp", "displayName_fr": "Bonus de poussée d'unité de post-combustion et de propulseur de microwarp", "displayName_it": "Afterburner and Microwarpdrive Thrust Bonus", "displayName_ja": "アフターバーナー / マイクロワープドライブ推進力ボーナス", "displayName_ko": "애프터버너 및 마이크로 워프 드라이브 출력 보너스", "displayName_ru": "Влияние на тягу форсажных ускорителей и микроварп-ускорителей", "displayName_zh": "加力燃烧器和微型跃迁推进器推力加成", "displayNameID": 233197, "displayWhenZero": 0, "highIsGood": 1, "iconID": 96, "name": "speedBoostFactorBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1271": { "attributeID": 1271, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Drohnen-Bandbreite", "displayName_en-us": "Drone Bandwidth", "displayName_es": "Ancho banda drones", "displayName_fr": "Bande passante drone", "displayName_it": "Drone Bandwidth", "displayName_ja": "ドローン帯域幅", "displayName_ko": "드론 대역폭", "displayName_ru": "Пропускная способность канала телеуправления", "displayName_zh": "无人机带宽", "displayNameID": 233097, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "droneBandwidth", "published": 1, "stackable": 1, "tooltipDescription_de": "Schränkt die Anzahl und Größe der Drohnen ein, gleichzeitig kontrolliert werden können", "tooltipDescription_en-us": "Limits the number and size of drones that can be controlled simultaneously", "tooltipDescription_es": "Limita el número y el tamaño de los drones que se pueden controlar simultáneamente.", "tooltipDescription_fr": "Limite le nombre et la taille des drones pouvant être contrôlés simultanément.", "tooltipDescription_it": "Limits the number and size of drones that can be controlled simultaneously", "tooltipDescription_ja": "同時に制御できるドローンの数とサイズです", "tooltipDescription_ko": "동시에 조종할 수 있는 드론의 숫자와 크기가 제한됩니다.", "tooltipDescription_ru": "Ограничивает количество и размер дронов, которыми может единовременно управлять пилот корабля", "tooltipDescription_zh": "带宽决定了能同时控制的无人机数量及尺寸", "tooltipDescriptionID": 295312, "tooltipTitleID": 295311, "unitID": 128 }, "1272": { "attributeID": 1272, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Benötigte Bandbreite", "displayName_en-us": "Bandwidth Needed", "displayName_es": "Ancho de banda necesario", "displayName_fr": "Bande passante requise", "displayName_it": "Bandwidth Needed", "displayName_ja": "帯域幅が必要", "displayName_ko": "필요 대역폭", "displayName_ru": "Требуемая пропускная способность", "displayName_zh": "带宽需求", "displayNameID": 233102, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "droneBandwidthUsed", "published": 1, "stackable": 1, "unitID": 128 }, "1273": { "attributeID": 1273, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneBandwidthLoad", "published": 1, "stackable": 1 }, "1274": { "attributeID": 1274, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bergbau-Unterstützungsbonus", "displayName_en-us": "Assisted Mining Bonus", "displayName_es": "Bonificación de extracción asistida", "displayName_fr": "Bonus d'extraction assistée", "displayName_it": "Assisted Mining Bonus", "displayName_ja": "支援付き採掘ボーナス", "displayName_ko": "채굴 보조 보너스", "displayName_ru": "Влияние поддержки добычи", "displayName_zh": "协助采矿加成", "displayNameID": 233354, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "miningTargetMultiplier", "published": 1, "stackable": 1, "unitID": 111 }, "1275": { "attributeID": 1275, "categoryID": 10, "dataType": 3, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneIsAgressive", "published": 1, "stackable": 1 }, "1276": { "attributeID": 1276, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "nonBrokenModuleRepairCostMultiplier", "published": 0, "stackable": 1 }, "1277": { "attributeID": 1277, "categoryID": 7, "dataType": 5, "defaultValue": 0.5, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBrokenModuleRepairCostMultiplier", "published": 1, "stackable": 1 }, "1278": { "attributeID": 1278, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneIsChaotic", "published": 0, "stackable": 1 }, "1279": { "attributeID": 1279, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusViolatorsRole3", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusViolatorsRole3", "published": 0, "stackable": 1 }, "1280": { "attributeID": 1280, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusInterceptorRole", "published": 0, "stackable": 1 }, "1281": { "attributeID": 1281, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "Just for the UI to display the ship warp speed.", "displayName_de": "Warpgeschwindigkeit", "displayName_en-us": "Ship Warp Speed", "displayName_es": "Velocidad warp", "displayName_fr": "Vitesse de warp du vaisseau", "displayName_it": "Ship Warp Speed", "displayName_ja": "シップワープ速度", "displayName_ko": "함선 워프 속도", "displayName_ru": "Скорость хода в варп-режиме", "displayName_zh": "舰船跃迁速度", "displayNameID": 233486, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3759, "name": "baseWarpSpeed", "published": 1, "stackable": 1, "tooltipDescription_de": "Die Maximalgeschwindigkeit, die im Warp erreicht werden kann", "tooltipDescription_en-us": "The maximum speed that can be reached in warp", "tooltipDescription_es": "La velocidad máxima que se puede alcanzar en warp.", "tooltipDescription_fr": "La vitesse maximale pouvant être atteinte en warp.", "tooltipDescription_it": "The maximum speed that can be reached in warp", "tooltipDescription_ja": "ワープ時に到達できる最高速度です", "tooltipDescription_ko": "워프 시 최대 속도입니다.", "tooltipDescription_ru": "Максимальная скорость, достижимая в варп-режиме", "tooltipDescription_zh": "跃迁时的最大速度", "tooltipDescriptionID": 295336, "tooltipTitleID": 295335, "unitID": 144 }, "1282": { "attributeID": 1282, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Nomad set bonus attribute", "displayName_de": "Nomad Set-Bonus", "displayName_en-us": "Nomad Set Bonus", "displayName_es": "Bonificación de conjunto Nomad", "displayName_fr": "Bonus de l'ensemble Nomad", "displayName_it": "Nomad Set Bonus", "displayName_ja": "ノマッドセットボーナス", "displayName_ko": "노마드 세트 보너스", "displayName_ru": "Влияние комплекта «Номад»", "displayName_zh": "游牧者套件加成", "displayNameID": 233259, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetThukker", "published": 1, "stackable": 1, "unitID": 104 }, "1283": { "attributeID": 1283, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fightersAttackAndFollow", "published": 1, "stackable": 1 }, "1284": { "attributeID": 1284, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Virtue set bonus attribute", "displayName_de": "Virtue Set-Bonus", "displayName_en-us": "Virtue Set Bonus", "displayName_es": "Bonificación de conjunto Virtue", "displayName_fr": "Bonus de l'ensemble Virtue", "displayName_it": "Virtue Set Bonus", "displayName_ja": "バーチュセットボーナス", "displayName_ko": "버츄 세트 보너스", "displayName_ru": "Влияние комплекта «Вёрчу»", "displayName_zh": "美德套件加成", "displayNameID": 233257, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetSisters", "published": 1, "stackable": 1, "unitID": 104 }, "1285": { "attributeID": 1285, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Quaternary-Skill benötigt", "displayName_en-us": "Quaternary Skill required", "displayName_es": "Habilidad cuaternaria necesaria", "displayName_fr": "Compétence quaternaire requise", "displayName_it": "Quaternary Skill required", "displayName_ja": "第四必須スキル", "displayName_ko": "4차 스킬 필요", "displayName_ru": "Требуемый четвертичный навык", "displayName_zh": "四级技能需求", "displayNameID": 232930, "displayWhenZero": 0, "highIsGood": 1, "iconID": 33, "name": "requiredSkill4", "published": 1, "stackable": 1, "unitID": 116 }, "1286": { "attributeID": 1286, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 4", "displayName_de": "Benötigter Skill 5 Level", "displayName_en-us": "Level 5 required", "displayName_es": "Nivel 5 necesario", "displayName_fr": "compNiv5Requise", "displayName_it": "Level 5 required", "displayName_ja": "第五必須スキルレベル", "displayName_ko": "레벨 5 요구", "displayName_ru": "Необходимые навыки 5 уровня", "displayName_zh": "所需技能等级", "displayNameID": 232931, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "requiredSkill4Level", "published": 0, "stackable": 1 }, "1287": { "attributeID": 1287, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 5", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "requiredSkill5Level", "published": 0, "stackable": 1 }, "1288": { "attributeID": 1288, "categoryID": 8, "dataType": 4, "defaultValue": 0.0, "description": "Required skill level for skill 6", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "requiredSkill6Level", "published": 0, "stackable": 1 }, "1289": { "attributeID": 1289, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Quinary-Skill benötigt", "displayName_en-us": "Quinary Skill required", "displayName_es": "Habilidad quinaria necesaria", "displayName_fr": "Compétence quinaire requise", "displayName_it": "Quinary Skill required", "displayName_ja": "第五必須スキル", "displayName_ko": "5차 스킬 필요", "displayName_ru": "Требуемый пятеричный навык", "displayName_zh": "五级技能需求", "displayNameID": 232932, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "requiredSkill5", "published": 1, "stackable": 1, "unitID": 116 }, "1290": { "attributeID": 1290, "categoryID": 8, "dataType": 11, "defaultValue": 0.0, "description": "The type ID of the skill that is required.", "displayName_de": "Senary-Skill benötigt", "displayName_en-us": "Senary Skill required", "displayName_es": "Habilidad senaria necesaria", "displayName_fr": "Compétence sénaire requise", "displayName_it": "Senary Skill required", "displayName_ja": "第六必須スキル", "displayName_ko": "6차 스킬 필요", "displayName_ru": "Требуемый шестеричный навык", "displayName_zh": "六级技能需求", "displayNameID": 232933, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "requiredSkill6", "published": 1, "stackable": 1, "unitID": 116 }, "1291": { "attributeID": 1291, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Edge set bonus attribute", "displayName_de": "Edge Set-Bonus", "displayName_en-us": "Edge Set Bonus", "displayName_es": "Bonificación de conjunto Edge", "displayName_fr": "Bonus de l'ensemble Edge", "displayName_it": "Edge Set Bonus", "displayName_ja": "エッジセットボーナス", "displayName_ko": "엣지 세트 보너스", "displayName_ru": "Влияние комплекта «Эдж»", "displayName_zh": "强势套件加成", "displayNameID": 233258, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetSyndicate", "published": 1, "stackable": 1, "unitID": 104 }, "1292": { "attributeID": 1292, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Harvest set bonus attribute", "displayName_de": "Harvest Set-Bonus", "displayName_en-us": "Harvest Set Bonus", "displayName_es": "Bonificación de conjunto Harvest", "displayName_fr": "Bonus de l'ensemble Harvest", "displayName_it": "Harvest Set Bonus", "displayName_ja": "ハーベストセットボーナス", "displayName_ko": "하베스트 세트 보너스", "displayName_ru": "Влияние комплекта «Харвест»", "displayName_zh": "采集套件加成", "displayNameID": 233236, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetORE", "published": 1, "stackable": 1, "unitID": 104 }, "1293": { "attributeID": 1293, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Centurion set bonus attribute", "displayName_de": "Centurion Set-Bonus", "displayName_en-us": "Centurion Set Bonus", "displayName_es": "Bonificación de conjunto Centurion", "displayName_fr": "Bonus de l'ensemble Centurion", "displayName_it": "Centurion Set Bonus", "displayName_ja": "センチュリオンセットボーナス", "displayName_ko": "센츄리온 세트 보너스", "displayName_ru": "Влияние комплекта «Центурион»", "displayName_zh": "百夫长套件加成", "displayNameID": 233235, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetMordus", "published": 1, "stackable": 1, "unitID": 104 }, "1294": { "attributeID": 1294, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf den Verbrauch von Nanite-Reparaturpaste", "displayName_en-us": "Nanite Repair Paste Consumption Bonus", "displayName_es": "Bonificación de consumo de fluido reparador de nanobots", "displayName_fr": "Bonus d'utilisation des nanites de réparation", "displayName_it": "Nanite Repair Paste Consumption Bonus", "displayName_ja": "ナノマシンリペアペイスト使用ボーナス", "displayName_ko": "나노기기 수리용액 소모량 보너스", "displayName_ru": "Влияние на расход ремонтной нанопасты", "displayName_zh": "纳米体修复粘合剂消耗加成", "displayNameID": 233563, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBrokenRepairCostMultiplierBonus", "published": 1, "stackable": 1, "unitID": 121 }, "1295": { "attributeID": 1295, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Leistung von Repair-Modulen", "displayName_en-us": "Module Repair Rate Bonus", "displayName_es": "Bonificación de índice de reparación de los módulos", "displayName_fr": "Bonus de fréquence de réparation du module", "displayName_it": "Module Repair Rate Bonus", "displayName_ja": "モジュールリペア速度ボーナス", "displayName_ko": "모듈 수리율 보너스", "displayName_ru": "Влияние на скорость ремонта модулей", "displayName_zh": "装备维修速率加成", "displayNameID": 233429, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "moduleRepairRateBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1296": { "attributeID": 1296, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verbrauchsquantitäts-Bonus", "displayName_en-us": "Consumption Quantity Bonus", "displayName_es": "Bonificación de cantidad de consumo", "displayName_fr": "Bonus de quantité consommée", "displayName_it": "Consumption Quantity Bonus", "displayName_ja": "消費量ボーナス", "displayName_ko": "소모량 보너스", "displayName_ru": "Уменьшение количества расходуемого топлива", "displayName_zh": "消耗量加成", "displayNameID": 233033, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "consumptionQuantityBonusPercentage", "published": 1, "stackable": 1, "unitID": 105 }, "1297": { "attributeID": 1297, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneFocusFire", "published": 1, "stackable": 1 }, "1298": { "attributeID": 1298, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann nur eingebaut werden", "displayName_en-us": "Can only be fitted to", "displayName_es": "Solo se puede equipar en", "displayName_fr": "Montage uniquement possible sur", "displayName_it": "Can only be fitted to", "displayName_ja": "装着可能対象:", "displayName_ko": "피팅 가능한 대상", "displayName_ru": "Можно оснастить только:", "displayName_zh": "只能装配在", "displayNameID": 233514, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup01", "published": 1, "stackable": 1, "unitID": 115 }, "1299": { "attributeID": 1299, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233515, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup02", "published": 1, "stackable": 1, "unitID": 115 }, "1300": { "attributeID": 1300, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233516, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup03", "published": 1, "stackable": 1, "unitID": 115 }, "1301": { "attributeID": 1301, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233517, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup04", "published": 1, "stackable": 1, "unitID": 115 }, "1302": { "attributeID": 1302, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann nur eingebaut werden", "displayName_en-us": "Can only be fitted to", "displayName_es": "Solo se puede equipar en", "displayName_fr": "Montage uniquement possible sur", "displayName_it": "Can only be fitted to", "displayName_ja": "装着可能対象:", "displayName_ko": "피팅 가능한 대상", "displayName_ru": "Можно оснастить только:", "displayName_zh": "只能装配在", "displayNameID": 233521, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType1", "published": 1, "stackable": 1, "unitID": 116 }, "1303": { "attributeID": 1303, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233522, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType2", "published": 1, "stackable": 1, "unitID": 116 }, "1304": { "attributeID": 1304, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233523, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType3", "published": 1, "stackable": 1, "unitID": 116 }, "1305": { "attributeID": 1305, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 233524, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType4", "published": 1, "stackable": 1, "unitID": 116 }, "1306": { "attributeID": 1306, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Additive bonus to maxRangeMultiplier", "displayName_de": "Maximaler Reichweitenmultiplikator-Bonus", "displayName_en-us": "Maximum Range Multiplier Bonus", "displayName_es": "Bonificación de multiplicador de alcance máximo", "displayName_fr": "Bonus de multiplicateur de portée maximum", "displayName_it": "Maximum Range Multiplier Bonus", "displayName_ja": "最大範囲乗数ボーナス", "displayName_ko": "최대 사거리 배수 보너스", "displayName_ru": "Влияние на коэффициент максимальной дальности", "displayName_zh": "最大范围倍增系数加成", "displayNameID": 233321, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxRangeMultiplierBonusAdditive", "published": 1, "stackable": 1, "unitID": 104 }, "1307": { "attributeID": 1307, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Additive bonus to trackingSpeedMultiplier", "displayName_de": "Multiplikator-Bonus der Nachführgeschwindigkeit", "displayName_en-us": "Tracking Speed Multiplier Bonus", "displayName_es": "Bonificación de multiplicador de velocidad de rastreo", "displayName_fr": "Bonus de multiplicateur de vitesse de poursuite", "displayName_it": "Tracking Speed Multiplier Bonus", "displayName_ja": "追跡速度乗数ボーナス", "displayName_ko": "트래킹 속도 배수 보너스", "displayName_ru": "Влияние на множитель скорости наводки", "displayName_zh": "跟踪速度倍增系数加成", "displayNameID": 233162, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "trackingSpeedMultiplierBonusAdditive", "published": 1, "stackable": 1, "unitID": 104 }, "1308": { "attributeID": 1308, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Additive bonus to maxTargetRangeMultiplier", "displayName_de": "Maximaler Zielerfassungsreichweite-Bonus", "displayName_en-us": "Maximum Targeting Range Bonus", "displayName_es": "Bonificación de distancia-objetivo máx.", "displayName_fr": "Bonus de portée maximale du système de ciblage", "displayName_it": "Maximum Targeting Range Bonus", "displayName_ja": "最大ターゲット範囲ボーナス", "displayName_ko": "최대 타겟팅 거리 보너스", "displayName_ru": "Влияние на максимальную дальность обнаружения целей", "displayName_zh": "最大锁定范围加成", "displayNameID": 233334, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxTargetRangeMultiplierBonusAdditive", "published": 1, "stackable": 1, "unitID": 104 }, "1309": { "attributeID": 1309, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Additive bonus to scanResolutionMultiplier", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на скорость захвата целей", "displayName_zh": "扫描分辨率加成", "displayNameID": 233244, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "scanResolutionMultiplierBonusAdditive", "published": 1, "stackable": 1, "unitID": 104 }, "1310": { "attributeID": 1310, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "commandBonusHidden", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusHidden", "published": 0, "stackable": 1, "unitID": 105 }, "1311": { "attributeID": 1311, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusJumpFreighter1", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusJumpFreighter1", "published": 0, "stackable": 1 }, "1312": { "attributeID": 1312, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusJumpFreighter2", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusJumpFreighter2", "published": 0, "stackable": 1 }, "1313": { "attributeID": 1313, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to maxTargetRangeBonus", "displayName_de": "Modifikation des max. Zielerfassungsreichweite-Bonus", "displayName_en-us": "Modification of Maximum Targeting Range Bonus", "displayName_es": "Modificación de bonificación de distancia-objetivo máxima", "displayName_fr": "Modification du bonus de portée maximale du système de ciblage", "displayName_it": "Modification of Maximum Targeting Range Bonus", "displayName_ja": "最大ターゲット範囲ボーナス乗数", "displayName_ko": "최대 타겟팅 거리 보너스 조정", "displayName_ru": "Изменение влияния на максимальную дальность захвата целей", "displayName_zh": "最大锁定范围加成修正", "displayNameID": 233331, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxTargetRangeBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1314": { "attributeID": 1314, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to scanResolutionBonus", "displayName_de": "Modifikation des Bonus auf die Scanauflösung", "displayName_en-us": "Modification of Scan Resolution Bonus", "displayName_es": "Modificación de bonificación de resolución de escaneo", "displayName_fr": "Bonus de modification de résolution de scan", "displayName_it": "Modification of Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス修正値", "displayName_ko": "스캔 정밀도 보너스 조정", "displayName_ru": "Модификатор влияния на скорость захвата целей", "displayName_zh": "扫描分辨率加成修正", "displayNameID": 233246, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "scanResolutionBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1315": { "attributeID": 1315, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to maxRangeBonus", "displayName_de": "Modifikation des Bonus auf die optimale Reichweite", "displayName_en-us": "Modification of Optimal Range Bonus", "displayName_es": "Modificación de bonificación de alcance óptimo", "displayName_fr": "Bonus de modification de portée optimale", "displayName_it": "Modification of Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス修正値", "displayName_ko": "최적사거리 보너스 조정", "displayName_ru": "Модификатор влияния на оптимальную дальность", "displayName_zh": "最佳射程加成修正", "displayNameID": 233319, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxRangeBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1316": { "attributeID": 1316, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to trackingSpeedBonus", "displayName_de": "Modifikation des Bonus auf die Nachführgeschwindigkeit", "displayName_en-us": "Modification of Tracking Speed Bonus", "displayName_es": "Modificación de bonificación de velocidad de rastreo", "displayName_fr": "Bonus de modification de vitesse de poursuite", "displayName_it": "Modification of Tracking Speed Bonus", "displayName_ja": "追跡速度ボーナス修正値", "displayName_ko": "트래킹 속도 보너스 조정", "displayName_ru": "Модификатор влияния на скорость наводки", "displayName_zh": "跟踪速度加成修正", "displayNameID": 233165, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "trackingSpeedBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1317": { "attributeID": 1317, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "maxRangeHidden", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxRangeHidden", "published": 0, "stackable": 1, "unitID": 1 }, "1318": { "attributeID": 1318, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "warpScrambleStrengthHidden", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "warpScrambleStrengthHidden", "published": 0, "stackable": 1 }, "1319": { "attributeID": 1319, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "capacitorNeedHidden", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "capacitorNeedHidden", "published": 0, "stackable": 1 }, "1320": { "attributeID": 1320, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "ECM Command-Bonus", "displayName_en-us": "ECM Command Bonus", "displayName_es": "Bonificación de mando de ECM", "displayName_fr": "Bonus de commandement CME", "displayName_it": "ECM Command Bonus", "displayName_ja": "ECM コマンドボーナス", "displayName_ko": "ECM 지휘 보너스", "displayName_ru": "Эффект координации: влияние на эффективность глушения захвата целей", "displayName_zh": "ECM指挥加成", "displayNameID": 233028, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusECM", "published": 1, "stackable": 1, "unitID": 105 }, "1321": { "attributeID": 1321, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Remote Sensor Dampening Command Bonus", "displayName_de": "Remote Sensor Dampening Command-Bonus", "displayName_en-us": "Remote Sensor Dampening Command Bonus", "displayName_es": "Bonificación de mando de atenuación de sensores remotos", "displayName_fr": "Bonus de commandement d'atténuation de détection à distance", "displayName_it": "Remote Sensor Dampening Command Bonus", "displayName_ja": "リモートセンサーダンパー向けコマンドボーナス", "displayName_ko": "원격 센서 댐프너 지휘 보너스", "displayName_ru": "Эффект координации: влияние на эффективность подавления захвата целей", "displayName_zh": "远距感应抑阻指挥加成", "displayNameID": 233029, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusRSD", "published": 1, "stackable": 1, "unitID": 105 }, "1322": { "attributeID": 1322, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Tracking Disruption Command Bonus", "displayName_de": "Tracking Disruption Command-Bonus", "displayName_en-us": "Tracking Disruption Command Bonus", "displayName_es": "Bonificación de mando de disrupción de rastreo", "displayName_fr": "Bonus de commandement de perturbation de poursuite", "displayName_it": "Tracking Disruption Command Bonus", "displayName_ja": "追跡妨害器用コマンドボーナス", "displayName_ko": "트래킹 디스럽션 지휘 보너스", "displayName_ru": "Эффект координации: влияние на эффективность помех системам наводки", "displayName_zh": "索敌扰断指挥加成", "displayNameID": 233030, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusTD", "published": 1, "stackable": 1, "unitID": 105 }, "1323": { "attributeID": 1323, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Target Painting Command Bonus", "displayName_de": "Target Painting Command-Bonus", "displayName_en-us": "Target Painting Command Bonus", "displayName_es": "Bonificación de mando de revelación de objetivos", "displayName_fr": "Bonus de commandement de marquage de cible", "displayName_it": "Target Painting Command Bonus", "displayName_ja": "ターゲットペインティング用コマンドボーナス", "displayName_ko": "타겟 페인터 지휘 보너스", "displayName_ru": "Эффект координации: влияние на эффективность подсветки целей", "displayName_zh": "目标标记指挥加成", "displayNameID": 233031, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "commandBonusTP", "published": 1, "stackable": 1, "unitID": 105 }, "1324": { "attributeID": 1324, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to massBonusPercentage", "displayName_de": "Modifikation der Verringerung der Masse", "displayName_en-us": "Modification of Mass Reduction", "displayName_es": "Modificación de reducción de masa", "displayName_fr": "Modification de réduction de masse", "displayName_it": "Modification of Mass Reduction", "displayName_ja": "質量低下修正値", "displayName_ko": "질량 감소 조정", "displayName_ru": "Модификатор уменьшения массы", "displayName_zh": "质量减少量修正", "displayNameID": 233292, "displayWhenZero": 0, "highIsGood": 1, "iconID": 76, "name": "massBonusPercentageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1325": { "attributeID": 1325, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Modification of Afterburner and Microwarpdrive Thrust Bonus", "displayName_de": "Modifikation des Schub-Bonus für MIcrowarpdrive- und Afterburner-Module.", "displayName_en-us": "Modification of Afterburner and Microwarpdrive Thrust Bonus", "displayName_es": "Mod. de bonificación del impulso de posquemador y motor de microwarp", "displayName_fr": "Bonus de modification de poussée de post-combustion et de propulseur de microwarp", "displayName_it": "Modification of Afterburner and Microwarpdrive Thrust Bonus", "displayName_ja": "アフターバーナー/マイクロワープドライブ推進力ボーナス修正値", "displayName_ko": "애프터버너 및 마이크로 워프 드라이브 출력 보너스 조정", "displayName_ru": "Изменение влияния на тягу форсажных ускорителей и микроварп-ускорителей", "displayName_zh": "加力燃烧器和微型跃迁推进器推力加成修正", "displayNameID": 233196, "displayWhenZero": 0, "highIsGood": 1, "iconID": 96, "name": "speedBoostFactorBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1326": { "attributeID": 1326, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Modification of Afterburner and Microwarpdrive Max Velocity Bonus", "displayName_de": "Modifikation des Höchstgeschwindigkeitsbonus für Nachbrenner und Mikrowarpantriebe", "displayName_en-us": "Modification of Afterburner and Microwarpdrive Maximum Velocity Bonus", "displayName_es": "Modificación de bonificación de velocidad máxima del posquemador y el motor de microwarp", "displayName_fr": "Modification du bonus de vitesse maximale du propulseur de microwarp et du système de post-combustion", "displayName_it": "Modification of Afterburner and Microwarpdrive Maximum Velocity Bonus", "displayName_ja": "アフターバーナー/マイクロワープドライブ最高速度ボーナスの修正値", "displayName_ko": "애프터버너 및 마이크로 워프 드라이브 최대 속도 보너스 조정", "displayName_ru": "Изменение влияния на скорость форсажных ускорителей и микроварп-ускорителей", "displayName_zh": "加力燃烧器和微型跃迁推进器最大速度加成修正", "displayNameID": 233193, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "speedFactorBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1327": { "attributeID": 1327, "categoryID": 27, "dataType": 5, "defaultValue": 0.0, "description": "Warp Scramble Range Bonus", "displayName_de": "Bonus auf die Reichweite von Warpunterbrechern", "displayName_en-us": "Warp Scrambler Range Bonus", "displayName_es": "Bonificación de alcance de distorsionador de warp", "displayName_fr": "Bonus de portée de l'inhibiteur de warp", "displayName_it": "Warp Scrambler Range Bonus", "displayName_ja": "ワープスクランブル範囲ボーナス", "displayName_ko": "워프 스크램블 사거리 보너스", "displayName_ru": "Влияние на дальность действия варп-глушителя", "displayName_zh": "跃迁扰频器范围加成", "displayNameID": 233135, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "warpScrambleRangeBonus", "published": 1, "stackable": 1, "unitID": 121 }, "1328": { "attributeID": 1328, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier on droneBandwidth. The default value should be 0 to ensure that CONCORD NPCs can set the bandwidth of a target ship to 0.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "droneBandwidthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1329": { "attributeID": 1329, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Drone Bandwidth Bonus (additive)", "displayName_de": "Drohnen-Bandbreitenbonus", "displayName_en-us": "Drone Bandwidth Bonus", "displayName_es": "Bonificación de ancho de banda de drones", "displayName_fr": "Bonus de bande passante de drone", "displayName_it": "Drone Bandwidth Bonus", "displayName_ja": "ドローン帯域幅ボーナス", "displayName_ko": "드론 대역폭 보너스", "displayName_ru": "Влияние на пропускную способность канала телеуправления", "displayName_zh": "无人机带宽加成", "displayNameID": 233099, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "droneBandwidthBonusAdd", "published": 1, "stackable": 1, "unitID": 128 }, "1330": { "attributeID": 1330, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isHacking", "published": 0, "stackable": 1 }, "1331": { "attributeID": 1331, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "isArcheology", "published": 0, "stackable": 1 }, "1332": { "attributeID": 1332, "categoryID": 7, "dataType": 5, "defaultValue": 1399.0, "description": "", "displayName_de": "Modifikation des Präzisionsabfall-Bonus", "displayName_en-us": "Modification of Falloff Bonus", "displayName_es": "Modificación de bonificación de alcance efectivo", "displayName_fr": "Modification de bonus de distance de perte", "displayName_it": "Modification of Falloff Bonus", "displayName_ja": "精度低下ボーナス修正値", "displayName_ko": "유효사거리 보너스 조정", "displayName_ru": "Модификатор влияния на добавочную дальность", "displayName_zh": "失准范围加成修正", "displayNameID": 233182, "displayWhenZero": 0, "highIsGood": 1, "name": "falloffBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1333": { "attributeID": 1333, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "maxVelocityLimited", "published": 0, "stackable": 1 }, "1334": { "attributeID": 1334, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Geschwindigkeitsbegrenzung", "displayName_en-us": "Maximum Velocity Limitation", "displayName_es": "Limitación de velocidad máxima", "displayName_fr": "Limitation de vitesse maximale", "displayName_it": "Maximum Velocity Limitation", "displayName_ja": "最高速度リミット", "displayName_ko": "최대 속도 제한", "displayName_ru": "Ограничение скорости полного хода / скорости полёта", "displayName_zh": "最大速度限制", "displayNameID": 233339, "displayWhenZero": 0, "highIsGood": 1, "name": "maxVelocityActivationLimit", "published": 1, "stackable": 1, "unitID": 10 }, "1335": { "attributeID": 1335, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "defenderRaceID", "published": 1, "stackable": 1 }, "1336": { "attributeID": 1336, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The remaining number of unused clone vats on the ship that are available for installation of jump clones.", "displayName_de": "Unbenutzte Klonbehälter", "displayName_en-us": "Unused Clone Vats", "displayName_es": "Contenedores de clonación sin usar", "displayName_fr": "Cuves de clone non utilisées", "displayName_it": "Unused Clone Vats", "displayName_ja": "未使用のクローンバット", "displayName_ko": "미사용 점프 클론 격납고", "displayName_ru": "Свободные баки с клонами", "displayName_zh": "未使用克隆舱", "displayNameID": 233264, "displayWhenZero": 0, "highIsGood": 1, "iconID": 34, "name": "jumpClonesLeft", "published": 0, "stackable": 1 }, "1337": { "attributeID": 1337, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "captureProximityRange", "published": 0, "stackable": 1 }, "1339": { "attributeID": 1339, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "factionDefenderID", "published": 0, "stackable": 1 }, "1340": { "attributeID": 1340, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "factionOffenderID", "published": 0, "stackable": 1 }, "1341": { "attributeID": 1341, "categoryID": 33, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "factionID", "published": 0, "stackable": 1 }, "1349": { "attributeID": 1349, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Used for blocking activation of modules", "displayWhenZero": 0, "highIsGood": 1, "name": "activationBlocked", "published": 0, "stackable": 1 }, "1350": { "attributeID": 1350, "categoryID": 27, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "activationBlockedStrenght", "published": 0, "stackable": 1 }, "1351": { "attributeID": 1351, "categoryID": 4, "dataType": 11, "defaultValue": 0.0, "description": "cargo typeID allowed in structures", "displayName_de": "Erlaubter Frachttyp", "displayName_en-us": "Allowed Cargo Type", "displayName_es": "Tipo de carga permitido", "displayName_fr": "Type de marchandise autorisé", "displayName_it": "Allowed Cargo Type", "displayName_ja": "使用できるカーゴタイプ", "displayName_ko": "허가된 화물 유형", "displayName_ru": "Допустимый тип грузов", "displayName_zh": "允许物品类型", "displayNameID": 233436, "displayWhenZero": 0, "highIsGood": 1, "name": "posCargobayAcceptType", "published": 1, "stackable": 1, "unitID": 116 }, "1352": { "attributeID": 1352, "categoryID": 4, "dataType": 12, "defaultValue": 0.0, "description": "cargo bay container group ID", "displayName_de": "Erlaubte Frachtgruppe", "displayName_en-us": "Allowed Cargo Group", "displayName_es": "Grupo de carga permitido", "displayName_fr": "Groupe de marchandises autorisé", "displayName_it": "Allowed Cargo Group", "displayName_ja": "使用できるカーゴグループ", "displayName_ko": "허가된 화물 그룹", "displayName_ru": "Допустимая группа грузов", "displayName_zh": "允许物品组", "displayNameID": 233437, "displayWhenZero": 0, "highIsGood": 1, "name": "posCargobayAcceptGroup", "published": 1, "stackable": 1, "unitID": 115 }, "1353": { "attributeID": 1353, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Missile Damage Modifier. Smaller is better (Don't use less than 0.5)", "displayWhenZero": 0, "highIsGood": 1, "name": "aoeDamageReductionFactor", "published": 0, "stackable": 1 }, "1354": { "attributeID": 1354, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "aoeDamageReductionSensitivity", "published": 0, "stackable": 1 }, "1355": { "attributeID": 1355, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "bonus to range of tractor beams", "displayName_de": "Reichweitenbonus für Traktorstrahl", "displayName_en-us": "Tractor Beam Range Bonus", "displayName_es": "Bonificación de alcance del rayo tractor", "displayName_fr": "Bonus de portée du rayon de tractage", "displayName_it": "Tractor Beam Range Bonus", "displayName_ja": "トラクタービーム範囲ボーナス", "displayName_ko": "트랙터 빔 사거리 보너스", "displayName_ru": "Влияние на дальность действия гравизахвата", "displayName_zh": "牵引光束范围加成", "displayNameID": 233438, "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusTractorBeamRange", "published": 0, "stackable": 1, "unitID": 105 }, "1356": { "attributeID": 1356, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusICS1", "published": 0, "stackable": 1, "unitID": 105 }, "1357": { "attributeID": 1357, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusTractorBeamVelocity", "published": 0, "stackable": 1, "unitID": 105 }, "1358": { "attributeID": 1358, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusICS2", "published": 0, "stackable": 1, "unitID": 105 }, "1359": { "attributeID": 1359, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusSurveyScannerRange", "published": 0, "stackable": 1, "unitID": 105 }, "1360": { "attributeID": 1360, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusHPExtender1", "published": 0, "stackable": 1, "unitID": 105 }, "1361": { "attributeID": 1361, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteIndustrialCovertCloakBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1366": { "attributeID": 1366, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 3756, "name": "subSystemSlot", "published": 0, "stackable": 1 }, "1367": { "attributeID": 1367, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Subsystem-Slots", "displayName_en-us": "Subsystem Slots", "displayName_es": "Ranuras de subsistema", "displayName_fr": "Emplacements sous-système", "displayName_it": "Subsystem Slots", "displayName_ja": "サブシステムスロット", "displayName_ko": "서브시스템 슬롯", "displayName_ru": "Разъёмы подсистем", "displayName_zh": "子系统槽位", "displayNameID": 233509, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3756, "name": "maxSubSystems", "published": 0, "stackable": 1 }, "1368": { "attributeID": 1368, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Geschützturm-Montageplatz-Modifikator", "displayName_en-us": "Turret Hardpoint Modifier", "displayName_es": "Modificador de punto de montaje de torreta", "displayName_fr": "Modificateur de point de fixation de tourelle", "displayName_it": "Turret Hardpoint Modifier", "displayName_ja": "タレットハードポイントモディファイヤー", "displayName_ko": "터렛 하드포인트 보정치", "displayName_ru": "Влияние на количество точек монтажа орудийных установок", "displayName_zh": "炮塔安装数调整", "displayNameID": 233637, "displayWhenZero": 0, "highIsGood": 1, "iconID": 361, "name": "turretHardPointModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1369": { "attributeID": 1369, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Werfer-Montageplatz-Modifikator", "displayName_en-us": "Launcher Hardpoint Modifier", "displayName_es": "Modificador de punto de montaje de lanzador", "displayName_fr": "Modificateur de point de fixation pour lanceur", "displayName_it": "Launcher Hardpoint Modifier", "displayName_ja": "ランチャーハードポイントモディファイヤー", "displayName_ko": "런처 하드포인트 보정치", "displayName_ru": "Влияние на количество точек монтажа пусковых установок", "displayName_zh": "发射器安装数调整", "displayNameID": 233625, "displayWhenZero": 0, "highIsGood": 1, "iconID": 169, "name": "launcherHardPointModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1370": { "attributeID": 1370, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is the lowest scan range value in AUs for probes under the revised probing system", "displayName_de": "Basis-Scanreichweite", "displayName_en-us": "Base Scan Range", "displayName_es": "Alcance de escaneo base", "displayName_fr": "Portée de base du balayage", "displayName_it": "Base Scan Range", "displayName_ja": "基本スキャン範囲", "displayName_ko": "기본 스캔 사거리", "displayName_ru": "Базовая дальность поиска", "displayName_zh": "扫描范围基数", "displayNameID": 233597, "displayWhenZero": 0, "highIsGood": 1, "name": "baseScanRange", "published": 1, "stackable": 1, "unitID": 135 }, "1371": { "attributeID": 1371, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "This is the highest sensor strength in points for probes under the revised probing system", "displayName_de": "Basis-Sensorstärke", "displayName_en-us": "Base Sensor Strength", "displayName_es": "Intensidad del sensor base", "displayName_fr": "Puissance de détection de base", "displayName_it": "Base Sensor Strength", "displayName_ja": "基本センサー強度", "displayName_ko": "센서 강도", "displayName_ru": "Базовая эффективность сенсорных систем", "displayName_zh": "扫描强度基数", "displayNameID": 233442, "displayWhenZero": 0, "highIsGood": 1, "name": "baseSensorStrength", "published": 1, "stackable": 0, "unitID": 120 }, "1372": { "attributeID": 1372, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is the lowest maximum scan deviation in AU for probes under the revised probing system", "displayName_de": "Maximale Basis-Abweichung", "displayName_en-us": "Base Maximum Deviation", "displayName_es": "Desviación máx. base", "displayName_fr": "Déviation de base maximum", "displayName_it": "Base Maximum Deviation", "displayName_ja": "基本最大誤差", "displayName_ko": "기본 최대 오차", "displayName_ru": "Базовый предел отклонения", "displayName_zh": "最大偏离基数", "displayNameID": 233598, "displayWhenZero": 0, "highIsGood": 0, "name": "baseMaxScanDeviation", "published": 1, "stackable": 0, "unitID": 135 }, "1373": { "attributeID": 1373, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is the multiplier/divisor for probe range increases and associated values under the revised probing system", "displayName_de": "Vergrößerungsfaktor Scanreichweite", "displayName_en-us": "Scan Range Increment Factor", "displayName_es": "Factor de incremento del alcance de escaneo", "displayName_fr": "Facteur d'augmentation de portée du balayage", "displayName_it": "Scan Range Increment Factor", "displayName_ja": "スキャン範囲増加乗数", "displayName_ko": "스캔 사거리 영향 요인", "displayName_ru": "Шаг дальности поиска разведзондами", "displayName_zh": "扫描范围增加比例", "displayNameID": 233441, "displayWhenZero": 0, "highIsGood": 1, "name": "rangeFactor", "published": 1, "stackable": 1, "unitID": 104 }, "1374": { "attributeID": 1374, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "High Slot-Modifikator", "displayName_en-us": "High Slot Modifier", "displayName_es": "Modificador de ranura superior", "displayName_fr": "Modificateur d'emplacement supérieur", "displayName_it": "High Slot Modifier", "displayName_ja": "ハイスロット乗数", "displayName_ko": "하이 슬롯 보정치", "displayName_ru": "Влияние на количество разъёмов большой мощности", "displayName_zh": "高槽数调整", "displayNameID": 233619, "displayWhenZero": 0, "highIsGood": 1, "iconID": 293, "name": "hiSlotModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1375": { "attributeID": 1375, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Medium Slot-Modifikator", "displayName_en-us": "Medium Slot Modifier", "displayName_es": "Modificador de ranura media", "displayName_fr": "Modificateur d'emplacement intermédiaire", "displayName_it": "Medium Slot Modifier", "displayName_ja": "ミディアムスロット乗数", "displayName_ko": "미드 슬롯 보정치", "displayName_ru": "Влияние на количество разъёмов средней мощности", "displayName_zh": "中槽数调整", "displayNameID": 233621, "displayWhenZero": 0, "highIsGood": 1, "iconID": 294, "name": "medSlotModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1376": { "attributeID": 1376, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Low-Slot-Modifikator", "displayName_en-us": "Low Slot Modifier", "displayName_es": "Modificador de ranura inferior", "displayName_fr": "Modificateur d'emplacement inférieur", "displayName_it": "Low Slot Modifier", "displayName_ja": "ロースロットモディファイヤー", "displayName_ko": "로우 슬롯 보정치", "displayName_ru": "Влияние на количество разъёмов малой мощности", "displayName_zh": "低槽数调整", "displayNameID": 233620, "displayWhenZero": 0, "highIsGood": 1, "iconID": 295, "name": "lowSlotModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1377": { "attributeID": 1377, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "CPU output of ship", "displayName_de": "CPU-Leistung", "displayName_en-us": "CPU Output", "displayName_es": "Rendimiento de la CPU", "displayName_fr": "Puissance CPU", "displayName_it": "CPU Output", "displayName_ja": "CPU 出力", "displayName_ko": "CPU 출력", "displayName_ru": "Мощность ЦПУ", "displayName_zh": "CPU输出", "displayNameID": 233443, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1405, "name": "cpuOutputAdd", "published": 1, "stackable": 1, "unitID": 106 }, "1378": { "attributeID": 1378, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "power output of power core", "displayName_de": "Stromnetzleistung", "displayName_en-us": "powergrid Output", "displayName_es": "Rendimiento del sistema de potencia", "displayName_fr": "Puissance réseau d'alimentation", "displayName_it": "powergrid Output", "displayName_ja": "パワーグリッド出力", "displayName_ko": "파워그리드 출력", "displayName_ru": "Мощность реактора", "displayName_zh": "能量栅格输出量", "displayNameID": 233444, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "powerOutputAdd", "published": 1, "stackable": 1, "unitID": 107 }, "1379": { "attributeID": 1379, "categoryID": 4, "dataType": 4, "defaultValue": 0.0, "description": "Maximum velocity of ship", "displayName_de": "Maximalgeschwindigkeit", "displayName_en-us": "Maximum Velocity", "displayName_es": "Velocidad máxima", "displayName_fr": "Vitesse maximale", "displayName_it": "Maximum Velocity", "displayName_ja": "最高速度", "displayName_ko": "최대 속도", "displayName_ru": "Максимальная скорость", "displayName_zh": "最大速度", "displayNameID": 233445, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "maxVelocityAdd", "published": 1, "stackable": 0, "unitID": 11 }, "1380": { "attributeID": 1380, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Auf Schiffstyp festgelegt", "displayName_en-us": "Restricted to Ship Type", "displayName_es": "Restringido al tipo de nave", "displayName_fr": "Limité au type de vaisseau", "displayName_it": "Restricted to Ship Type", "displayName_ja": "船の制限", "displayName_ko": "함선 유형으로 제한", "displayName_ru": "Ограничено типом корабля", "displayName_zh": "受限于船型", "displayNameID": 233496, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "fitsToShipType", "published": 1, "stackable": 1, "unitID": 116 }, "1381": { "attributeID": 1381, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Target System Class for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystemClass", "published": 0, "stackable": 1 }, "1382": { "attributeID": 1382, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The maximum amount of time a wormhole will stay open", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeMaxStableTime", "published": 0, "stackable": 1, "unitID": 3 }, "1383": { "attributeID": 1383, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The maximum amount of mass a wormhole can transit before collapsing", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeMaxStableMass", "published": 0, "stackable": 1, "unitID": 2 }, "1384": { "attributeID": 1384, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The amount of mass a wormhole regenerates per cycle", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeMassRegeneration", "published": 0, "stackable": 1, "unitID": 2 }, "1385": { "attributeID": 1385, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The maximum amount of mass that can transit a wormhole in one go", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeMaxJumpMass", "published": 0, "stackable": 1, "unitID": 2 }, "1386": { "attributeID": 1386, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 1 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion1", "published": 0, "stackable": 1 }, "1387": { "attributeID": 1387, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 2 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion2", "published": 0, "stackable": 1 }, "1388": { "attributeID": 1388, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 3 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion3", "published": 0, "stackable": 1 }, "1389": { "attributeID": 1389, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 4 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion4", "published": 0, "stackable": 1 }, "1390": { "attributeID": 1390, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 5 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion5", "published": 0, "stackable": 1 }, "1391": { "attributeID": 1391, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 6 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion6", "published": 0, "stackable": 1 }, "1392": { "attributeID": 1392, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 7 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion7", "published": 0, "stackable": 1 }, "1393": { "attributeID": 1393, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 8 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion8", "published": 0, "stackable": 1 }, "1394": { "attributeID": 1394, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target region 9 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetRegion9", "published": 0, "stackable": 1 }, "1395": { "attributeID": 1395, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Specific target constellation 1 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation1", "published": 0, "stackable": 1 }, "1396": { "attributeID": 1396, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 2 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation2", "published": 0, "stackable": 1 }, "1397": { "attributeID": 1397, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 3 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation3", "published": 0, "stackable": 1 }, "1398": { "attributeID": 1398, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 4 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation4", "published": 0, "stackable": 1 }, "1399": { "attributeID": 1399, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 5 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation5", "published": 0, "stackable": 1 }, "1400": { "attributeID": 1400, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 6 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation6", "published": 0, "stackable": 1 }, "1401": { "attributeID": 1401, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 7 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation7", "published": 0, "stackable": 1 }, "1402": { "attributeID": 1402, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 8 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation8", "published": 0, "stackable": 1 }, "1403": { "attributeID": 1403, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target constellation 9 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetConstellation9", "published": 0, "stackable": 1 }, "1404": { "attributeID": 1404, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 1 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem1", "published": 0, "stackable": 1 }, "1405": { "attributeID": 1405, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 2 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem2", "published": 0, "stackable": 1 }, "1406": { "attributeID": 1406, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 3 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem3", "published": 0, "stackable": 1 }, "1407": { "attributeID": 1407, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 4 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem4", "published": 0, "stackable": 1 }, "1408": { "attributeID": 1408, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 5 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem5", "published": 0, "stackable": 1 }, "1409": { "attributeID": 1409, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 6 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem6", "published": 0, "stackable": 1 }, "1410": { "attributeID": 1410, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 7 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem7", "published": 0, "stackable": 1 }, "1411": { "attributeID": 1411, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 8 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem8", "published": 0, "stackable": 1 }, "1412": { "attributeID": 1412, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Specific target system 9 for wormholes", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetSystem9", "published": 0, "stackable": 1 }, "1413": { "attributeID": 1413, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If this is 1 then the probe can scan for ships, otherwise it can't.", "displayWhenZero": 0, "highIsGood": 1, "name": "probeCanScanShips", "published": 0, "stackable": 1 }, "1414": { "attributeID": 1414, "categoryID": 12, "dataType": 4, "defaultValue": 0.0, "description": "The evasive maneuver level of the type. this will control what types of evasive maneuvers a NPC ship will use.", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ShouldUseEvasiveManeuver", "published": 0, "stackable": 1 }, "1416": { "attributeID": 1416, "categoryID": 12, "dataType": 5, "defaultValue": 60000.0, "description": "This controls the time that must pass between one target switch and another!", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_TargetSwitchTimer", "published": 0, "stackable": 1, "unitID": 101 }, "1417": { "attributeID": 1417, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "color", "published": 0, "stackable": 1 }, "1418": { "attributeID": 1418, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Panzerung-EM-Schadensresistenz", "displayName_en-us": "Armor Em Damage Resistance", "displayName_es": "Resistencia del blindaje a daños electromagnéticos", "displayName_fr": "Résistance du blindage aux dégâts EM", "displayName_it": "Armor Em Damage Resistance", "displayName_ja": "アーマー EM ダメージレジスタンス", "displayName_ko": "장갑 EM 저항력", "displayName_ru": "Сопротивляемость брони ЭМ-урону", "displayName_zh": "装甲电磁伤害抗性", "displayNameID": 233488, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "passiveArmorEmDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1419": { "attributeID": 1419, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen Thermalschaden", "displayName_en-us": "Armor Thermal Damage Resistance", "displayName_es": "Resistencia al daño térmico del blindaje", "displayName_fr": "Résistance thermique du blindage", "displayName_it": "Armor Thermal Damage Resistance", "displayName_ja": "アーマーサーマルダメージレジスタンス", "displayName_ko": "장갑 열 저항력", "displayName_ru": "Сопротивляемость брони термическому урону", "displayName_zh": "装甲热能伤害抗性", "displayNameID": 233491, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "passiveArmorThermalDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1420": { "attributeID": 1420, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Kinetikschadensresistenz der Panzerung", "displayName_en-us": "Armor Kinetic Damage Resistance", "displayName_es": "Resistencia al daño cinético del blindaje", "displayName_fr": "Résistance du blindage aux dégâts cinétiques", "displayName_it": "Armor Kinetic Damage Resistance", "displayName_ja": "アーマーキネティックダメージレジスタンス", "displayName_ko": "장갑 키네틱 저항력", "displayName_ru": "Сопротивляемость брони кинетическому урону", "displayName_zh": "装甲动能伤害抗性", "displayNameID": 233490, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "passiveArmorKineticDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1421": { "attributeID": 1421, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Panzerung-Explosivschadensresistenz", "displayName_en-us": "Armor Explosive Damage Resistance", "displayName_es": "Resistencia del blindaje a daños explosivos", "displayName_fr": "Résistance du blindage aux dégâts explosifs", "displayName_it": "Armor Explosive Damage Resistance", "displayName_ja": "アーマーエクスプローシブダメージレジスタンス", "displayName_ko": "장갑 폭발 저항력", "displayName_ru": "Сопротивляемость брони фугасному урону", "displayName_zh": "装甲爆炸伤害抗性", "displayNameID": 233489, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "passiveArmorExplosiveDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1422": { "attributeID": 1422, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosivschadensresistenz der Schilde", "displayName_en-us": "Shield Explosive Damage Resistance", "displayName_es": "Resistencia al daño explosivo del escudo", "displayName_fr": "Résistance du bouclier aux dégâts explosifs", "displayName_it": "Shield Explosive Damage Resistance", "displayName_ja": "シールドエクスプローシブダメージレジスタンス", "displayName_ko": "실드 폭발 저항력", "displayName_ru": "Сопротивляемость щитов фугасному урону", "displayName_zh": "护盾爆炸伤害抗性", "displayNameID": 233493, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "passiveShieldExplosiveDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1423": { "attributeID": 1423, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "EM-Schadensresistenz der Schilde", "displayName_en-us": "Shield Em Damage Resistance", "displayName_es": "Resistencia al daño electromagnético del escudo", "displayName_fr": "Résistance du bouclier aux dégâts EM", "displayName_it": "Shield Em Damage Resistance", "displayName_ja": "シールド EM ダメージレジスタンス", "displayName_ko": "실드 EM 저항력", "displayName_ru": "Сопротивляемость щитов ЭМ-урону", "displayName_zh": "护盾电磁伤害抗性", "displayNameID": 233492, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "passiveShieldEmDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1424": { "attributeID": 1424, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Kinetikschadensresistenz der Schilde", "displayName_en-us": "Shield Kinetic Damage Resistance", "displayName_es": "Resistencia al daño cinético del escudo", "displayName_fr": "Résistance du bouclier aux dégâts cinétiques", "displayName_it": "Shield Kinetic Damage Resistance", "displayName_ja": "シールドキネティックダメージレジスタンス", "displayName_ko": "실드 키네틱 저항력", "displayName_ru": "Сопротивляемость щитов кинетическому урону", "displayName_zh": "护盾动能伤害抗性", "displayNameID": 233494, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "passiveShieldKineticDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1425": { "attributeID": 1425, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Thermalschadensresistenz der Schilde", "displayName_en-us": "Shield Thermal Damage Resistance", "displayName_es": "Resistencia al daño térmico del escudo", "displayName_fr": "Résistance du bouclier aux dégâts thermiques", "displayName_it": "Shield Thermal Damage Resistance", "displayName_ja": "シールドサーマルダメージレジスタンス", "displayName_ko": "실드 열 저항력", "displayName_ru": "Сопротивляемость щитов термическому урону", "displayName_zh": "护盾热能伤害抗性", "displayNameID": 233495, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "passiveShieldThermalDamageResonance", "published": 1, "stackable": 1, "unitID": 108 }, "1426": { "attributeID": 1426, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen EM-Schaden", "displayName_en-us": "Structure EM Damage Resistance", "displayName_es": "Resistencia de estructuras a daños electromagnéticos", "displayName_fr": "Résistance de la structure aux dégâts électromagnétiques", "displayName_it": "Structure EM Damage Resistance", "displayName_ja": "ストラクチャEMダメージレジスタンス", "displayName_ko": "선체 EM 저항력", "displayName_ru": "Сопротивляемость корпуса ЭМ-урону", "displayName_zh": "结构电磁伤害抗性", "displayNameID": 233446, "displayWhenZero": 0, "highIsGood": 1, "name": "passiveHullEmDamageResonance", "published": 1, "stackable": 1, "unitID": 127 }, "1427": { "attributeID": 1427, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Explosionsschaden", "displayName_en-us": "Structure Explosive Damage Resistance", "displayName_es": "Resistencia de estructuras a daños explosivos", "displayName_fr": "Résistance de la structure aux dégâts explosifs", "displayName_it": "Structure Explosive Damage Resistance", "displayName_ja": "ストラクチャエクスプローシブダメージレジスタンス", "displayName_ko": "선체 폭발 저항력", "displayName_ru": "Сопротивляемость корпуса фугасному урону", "displayName_zh": "结构爆炸伤害抗性", "displayNameID": 233447, "displayWhenZero": 0, "highIsGood": 1, "name": "passiveHullExplosiveDamageResonance", "published": 1, "stackable": 1, "unitID": 127 }, "1428": { "attributeID": 1428, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Kinetikschaden", "displayName_en-us": "Structure Kinetic Damage Resistance", "displayName_es": "Resistencia de estructuras a daños cinéticos", "displayName_fr": "Résistance de la structure aux dégâts cinétiques", "displayName_it": "Structure Kinetic Damage Resistance", "displayName_ja": "ストラクチャキネティックダメージレジスタンス", "displayName_ko": "선체 키네틱 저항력", "displayName_ru": "Сопротивляемость корпуса кинетическому урону", "displayName_zh": "结构动能伤害抗性", "displayNameID": 233448, "displayWhenZero": 0, "highIsGood": 1, "name": "passiveHullKineticDamageResonance", "published": 1, "stackable": 1, "unitID": 127 }, "1429": { "attributeID": 1429, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Widerstandsfähigkeit der Struktur gegen Thermalschaden", "displayName_en-us": "Structure Thermal Damage Resistance", "displayName_es": "Resistencia de estructuras a daños térmicos", "displayName_fr": "Résistance de la structure aux dégâts thermiques", "displayName_it": "Structure Thermal Damage Resistance", "displayName_ja": "ストラクチャサーマルダメージレジスタンス", "displayName_ko": "선체 열 저항력", "displayName_ru": "Сопротивляемость корпуса термическому урону", "displayName_zh": "结构热能伤害抗性", "displayNameID": 233449, "displayWhenZero": 0, "highIsGood": 1, "name": "passiveHullThermalDamageResonance", "published": 1, "stackable": 1, "unitID": 127 }, "1430": { "attributeID": 1430, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "lightColor", "published": 0, "stackable": 1 }, "1431": { "attributeID": 1431, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrCore", "published": 0, "stackable": 1 }, "1432": { "attributeID": 1432, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrElectronic", "published": 0, "stackable": 1 }, "1433": { "attributeID": 1433, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrDefensive", "published": 0, "stackable": 1 }, "1434": { "attributeID": 1434, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrOffensive", "published": 0, "stackable": 1 }, "1435": { "attributeID": 1435, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrPropulsion", "published": 0, "stackable": 1 }, "1436": { "attributeID": 1436, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteCore", "published": 0, "stackable": 1 }, "1437": { "attributeID": 1437, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteElectronic", "published": 0, "stackable": 1 }, "1438": { "attributeID": 1438, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteDefensive", "published": 0, "stackable": 1 }, "1439": { "attributeID": 1439, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteOffensive", "published": 0, "stackable": 1 }, "1440": { "attributeID": 1440, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallentePropulsion", "published": 0, "stackable": 1 }, "1441": { "attributeID": 1441, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariCore", "published": 0, "stackable": 1 }, "1442": { "attributeID": 1442, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariElectronic", "published": 0, "stackable": 1 }, "1443": { "attributeID": 1443, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariDefensive", "published": 0, "stackable": 1 }, "1444": { "attributeID": 1444, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariOffensive", "published": 0, "stackable": 1 }, "1445": { "attributeID": 1445, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariPropulsion", "published": 0, "stackable": 1 }, "1446": { "attributeID": 1446, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarCore", "published": 0, "stackable": 1 }, "1447": { "attributeID": 1447, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarElectronic", "published": 0, "stackable": 1 }, "1448": { "attributeID": 1448, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarDefensive", "published": 0, "stackable": 1 }, "1449": { "attributeID": 1449, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarOffensive", "published": 0, "stackable": 1 }, "1450": { "attributeID": 1450, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarPropulsion", "published": 0, "stackable": 1 }, "1451": { "attributeID": 1451, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "This sets the priority for assisting this npc with remote-reps. NPCs with a higher value will be assisted before NPCs with a lower priority.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcAssistancePriority", "published": 0, "stackable": 1 }, "1453": { "attributeID": 1453, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "the chance of the NPC remote reapiring it's comrads.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteArmorRepairChance", "published": 0, "stackable": 1, "unitID": 105 }, "1454": { "attributeID": 1454, "categoryID": 20, "dataType": 5, "defaultValue": 10000.0, "description": "How long NPC take to remote repair ther comerad in MS.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteArmorRepairDuration", "published": 0, "stackable": 1, "unitID": 101 }, "1455": { "attributeID": 1455, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "the amount of armor that is repaired per cycle to each target", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteArmorRepairAmount", "published": 0, "stackable": 1 }, "1456": { "attributeID": 1456, "categoryID": 20, "dataType": 5, "defaultValue": 0.25, "description": "How damaged does a teammate's armor need to be before it will be repaired.\r\n0.1 means: Must be below 90% armor to get repairs\r\n0.9 means: Must be below 10% armor to get repairs", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteArmorRepairThreshold", "published": 0, "stackable": 1, "unitID": 105 }, "1457": { "attributeID": 1457, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "This is the distribution ID of the target wormhole distribution", "displayWhenZero": 0, "highIsGood": 1, "name": "wormholeTargetDistribution", "published": 0, "stackable": 1 }, "1458": { "attributeID": 1458, "categoryID": 20, "dataType": 5, "defaultValue": 20000.0, "description": "Duration of shield boost effect", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteShieldBoostDuration", "published": 0, "stackable": 1, "unitID": 101 }, "1459": { "attributeID": 1459, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "Chance of the remote shield boosting effect being used", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteShieldBoostChance", "published": 0, "stackable": 1, "unitID": 109 }, "1460": { "attributeID": 1460, "categoryID": 20, "dataType": 4, "defaultValue": 50.0, "description": "How many shields points does the activation of the effect bestow upon the target", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteShieldBoostAmount", "published": 0, "stackable": 1, "unitID": 120 }, "1462": { "attributeID": 1462, "categoryID": 20, "dataType": 5, "defaultValue": 0.75, "description": "How damaged does a teammates shield need to be before it'll be repaired.\r\n0.1 means: Must be below 90% shields to get repairs\r\n0.9 means: Must be below 10% shields to get repairs", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteShieldBoostThreshold", "published": 0, "stackable": 1, "unitID": 109 }, "1464": { "attributeID": 1464, "categoryID": 20, "dataType": 4, "defaultValue": 5000.0, "description": "Maximum distance to a friendly NPC so that remote repairs may be performed on it.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcAssistanceRange", "published": 0, "stackable": 0, "unitID": 1 }, "1465": { "attributeID": 1465, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "EM damage resistance bonus for armor", "displayName_de": "Panzerung-EM-Resistenzbonus", "displayName_en-us": "Armor EM resistance bonus", "displayName_es": "Bonificación de resistencia electromagnética del blindaje", "displayName_fr": "Bonus de résistance EM du blindage", "displayName_it": "Armor EM resistance bonus", "displayName_ja": "アーマー EM レジスタンスボーナス", "displayName_ko": "장갑 EM 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони ЭМ-урону", "displayName_zh": "装甲电磁抗性加成", "displayNameID": 233450, "displayWhenZero": 0, "highIsGood": 1, "name": "armorEmDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "1466": { "attributeID": 1466, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Kinetic damage resistance bonus for armor", "displayName_de": "Panzerung-Kinetikresistenz-Bonus", "displayName_en-us": "Armor kinetic resistance bonus", "displayName_es": "Bonificación de resistencia cinética del blindaje", "displayName_fr": "Bonus de résistance cinétique du blindage", "displayName_it": "Armor kinetic resistance bonus", "displayName_ja": "アーマーキネティックレジスタンスボーナス", "displayName_ko": "장갑 키네틱 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони кинетическому урону", "displayName_zh": "装甲动能抗性加成", "displayNameID": 233451, "displayWhenZero": 0, "highIsGood": 1, "name": "armorKineticDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "1467": { "attributeID": 1467, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Thermal damage resistance bonus for armor", "displayName_de": "Panzerung-Thermalresistenz-Bonus", "displayName_en-us": "Armor thermal resistance bonus", "displayName_es": "Bonificación de resistencia térmica del blindaje", "displayName_fr": "Bonus de résistance thermique du blindage", "displayName_it": "Armor thermal resistance bonus", "displayName_ja": "アーマーサーマルレジスタンスボーナス", "displayName_ko": "장갑 열 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони термическому урону", "displayName_zh": "装甲热能抗性加成", "displayNameID": 233452, "displayWhenZero": 0, "highIsGood": 1, "name": "armorThermalDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "1468": { "attributeID": 1468, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Explosive damage resistance bonus for armor", "displayName_de": "Panzerung-Explosivresistenz-Bonus", "displayName_en-us": "Armor explosive resistance bonus", "displayName_es": "Bonificación de resistencia explosiva del blindaje", "displayName_fr": "Bonus de résistance explosive du blindage", "displayName_it": "Armor explosive resistance bonus", "displayName_ja": "アーマーエクスプローシブレジスタンスボーナス", "displayName_ko": "장갑 폭발 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони фугасному урону", "displayName_zh": "装甲爆炸抗性加成", "displayNameID": 233453, "displayWhenZero": 0, "highIsGood": 1, "name": "armorExplosiveDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "1469": { "attributeID": 1469, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Velocity multiplier for missiles", "displayName_de": "Raketengeschwindigkeits-Multiplikator", "displayName_en-us": "Missile velocity multiplier", "displayName_es": "Multiplicador de velocidad de misiles", "displayName_fr": "Multiplicateur de vitesse des missiles", "displayName_it": "Missile velocity multiplier", "displayName_ja": "ミサイル速度乗数", "displayName_ko": "미사일 속도 배수", "displayName_ru": "Множитель скорости ракет", "displayName_zh": "导弹速度倍增系数", "displayNameID": 233454, "displayWhenZero": 0, "highIsGood": 1, "name": "missileVelocityMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1470": { "attributeID": 1470, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "Maximum velocity multiplier", "displayName_de": "Max. Geschwindigkeits-Multiplikator", "displayName_en-us": "Maximum velocity multiplier", "displayName_es": "Multiplicador de velocidad máxima", "displayName_fr": "Multiplicateur de vitesse maximale", "displayName_it": "Maximum velocity multiplier", "displayName_ja": "最高速度乗数", "displayName_ko": "최대 속도 배수", "displayName_ru": "Множитель максимальной скорости", "displayName_zh": "最大速率倍增系数", "displayNameID": 233455, "displayWhenZero": 0, "highIsGood": 1, "name": "maxVelocityMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "1471": { "attributeID": 1471, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Mass multiplier", "displayName_de": "Masse-Multiplikator", "displayName_en-us": "Mass multiplier", "displayName_es": "Multiplicador de masa", "displayName_fr": "Multiplicateur de masse", "displayName_it": "Mass multiplier", "displayName_ja": "質量乗数", "displayName_ko": "질량 배수", "displayName_ru": "Множитель массы", "displayName_zh": "质量倍增系数", "displayNameID": 233456, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "siegeMassMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1472": { "attributeID": 1472, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Drone control range multiplier", "displayName_de": "Kontrollreichweite-Multiplikator", "displayName_en-us": "Control range multiplier", "displayName_es": "Multiplicador de alcance de control", "displayName_fr": "Multiplicateur de portée de contrôle", "displayName_it": "Control range multiplier", "displayName_ja": "制御範囲乗数", "displayName_ko": "통제 거리 배수", "displayName_ru": "Множитель дальности управления", "displayName_zh": "控制距离倍增系数", "displayNameID": 233457, "displayWhenZero": 0, "highIsGood": 1, "name": "droneRangeMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1473": { "attributeID": 1473, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Grav ECM strength multiplier", "displayName_de": "Gravimetrische-Stärke-Multiplikator", "displayName_en-us": "Gravimetric strength multiplier", "displayName_es": "Multiplicador de fuerza gravimétrica", "displayName_fr": "Multiplicateur de puissance gravimétrique", "displayName_it": "Gravimetric strength multiplier", "displayName_ja": "重力強度乗数", "displayName_ko": "중력장 강도 배수", "displayName_ru": "Множитель мощности гравиметрического сигнала", "displayName_zh": "引力强度倍增系数", "displayNameID": 233458, "displayWhenZero": 0, "highIsGood": 1, "name": "scanGravimetricStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1474": { "attributeID": 1474, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Ladar ECM strength multiplier", "displayName_de": "LADAR-Stärke-Multiplikator", "displayName_en-us": "Ladar strength multiplier", "displayName_es": "Multiplicador de potencia lidar", "displayName_fr": "Multiplicateur de puissance ladar", "displayName_it": "Ladar strength multiplier", "displayName_ja": "光学強度乗数", "displayName_ko": "라이다 강도 배수", "displayName_ru": "Множитель мощности ладарного сигнала", "displayName_zh": "光雷达强度倍增系数", "displayNameID": 233459, "displayWhenZero": 0, "highIsGood": 1, "name": "scanLadarStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1475": { "attributeID": 1475, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Magnetometric ECM strength multiplier", "displayName_de": "Magnetometrische-Stärke-Multiplikator", "displayName_en-us": "Magnetometric strength multiplier", "displayName_es": "Multiplicador de fuerza magnetométrica", "displayName_fr": "Multiplicateur de puissance magnométrique", "displayName_it": "Magnetometric strength multiplier", "displayName_ja": "磁力測定強度乗数", "displayName_ko": "자기 강도 배수", "displayName_ru": "Множитель мощности магнитометрического сигнала", "displayName_zh": "磁力强度倍增系数", "displayNameID": 233460, "displayWhenZero": 0, "highIsGood": 1, "name": "scanMagnetometricStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1476": { "attributeID": 1476, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Radar ECM strength multiplier", "displayName_de": "Radarstärke-Multiplikator", "displayName_en-us": "Radar strength multiplier", "displayName_es": "Multiplicador de potencia del radar", "displayName_fr": "Multiplicateur de puissance radar", "displayName_it": "Radar strength multiplier", "displayName_ja": "電波強度乗数", "displayName_ko": "레이더 강도 배수", "displayName_ru": "Множитель мощности радарного сигнала", "displayName_zh": "雷达强度倍增系数", "displayNameID": 233461, "displayWhenZero": 0, "highIsGood": 1, "name": "scanRadarStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1477": { "attributeID": 1477, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Target painter effectiveness multiplier", "displayName_de": "Target-Painter-Multiplikator", "displayName_en-us": "Target painter multiplier", "displayName_es": "Multiplicador de revelador de objetivo", "displayName_fr": "Multiplicateur de marqueur de cible", "displayName_it": "Target painter multiplier", "displayName_ja": "ターゲットペインター乗数", "displayName_ko": "타겟 페인터 배수", "displayName_ru": "Множитель подсветки цели", "displayName_zh": "目标标记装置倍增系数", "displayNameID": 233462, "displayWhenZero": 0, "highIsGood": 1, "name": "signatureRadiusBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1478": { "attributeID": 1478, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Sensor dampener range reduction multiplier", "displayName_de": "Dämpfer-Reichweiteverringerungs-Multiplikator", "displayName_en-us": "Dampening range reduction multiplier", "displayName_es": "Multiplicador de reducción del alcance de atenuación", "displayName_fr": "Multiplicateur de réduction de portée d'atténuation", "displayName_it": "Dampening range reduction multiplier", "displayName_ja": "ダンプナー範囲縮小乗数", "displayName_ko": "감쇠 시거리 감소 배수", "displayName_ru": "Множитель уменьшения дальности захвата целей", "displayName_zh": "弱化范围缩减系数", "displayNameID": 233463, "displayWhenZero": 0, "highIsGood": 1, "name": "maxTargetRangeBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1479": { "attributeID": 1479, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Sensor dampener scan resolution amount multiplier", "displayName_de": "Multiplikator für Scanauflösung-Abzug", "displayName_en-us": "Scan resolution reduction multiplier", "displayName_es": "Multiplicador de reducción de resolución de escaneo", "displayName_fr": "Multiplicateur de réduction de résolution de balayage", "displayName_it": "Scan resolution reduction multiplier", "displayName_ja": "スキャン分解能低減乗数", "displayName_ko": "스캔 정밀도 감소 배수", "displayName_ru": "Множитель уменьшения скорости захвата целей", "displayName_zh": "扫描分辨率衰减系数", "displayNameID": 233464, "displayWhenZero": 0, "highIsGood": 1, "name": "scanResolutionBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1480": { "attributeID": 1480, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Tracking disruptor tracking amount multiplier", "displayName_de": "Multiplikator des Abzugs bei Nachführung", "displayName_en-us": "Tracking penalty multiplier", "displayName_es": "Multiplicador de penalización de rastreo", "displayName_fr": "Multiplicateur de pénalité de poursuite", "displayName_it": "Tracking penalty multiplier", "displayName_ja": "追跡ペナルティ乗数", "displayName_ko": "트래킹 페널티 배수", "displayName_ru": "Множитель уменьшения скорости наводки", "displayName_zh": "跟踪惩罚倍增系数", "displayNameID": 233465, "displayWhenZero": 0, "highIsGood": 1, "name": "trackingSpeedBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1481": { "attributeID": 1481, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Tracking disruptor optimal range penalty multiplier", "displayName_de": "Multiplikator für Optimale-Reichweite-Abzug", "displayName_en-us": "Optimal range penalty multiplier", "displayName_es": "Multiplicador de penalización del alcance óptimo", "displayName_fr": "Multiplicateur de pénalité de portée optimale", "displayName_it": "Optimal range penalty multiplier", "displayName_ja": "最適射程距離ペナルティ乗数", "displayName_ko": "최적사거리 페널티 배수", "displayName_ru": "Множитель уменьшения оптимальной дальности", "displayName_zh": "最佳射距惩罚倍增系数", "displayNameID": 233466, "displayWhenZero": 0, "highIsGood": 1, "name": "maxRangeBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1482": { "attributeID": 1482, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Multiplys the damage multiplier", "displayName_de": "Schadensmultiplikator", "displayName_en-us": "Damage multiplier multiplier", "displayName_es": "Multiplicador de daño", "displayName_fr": "Multiplicateur de multiplicateur de dégâts", "displayName_it": "Damage multiplier multiplier", "displayName_ja": "ダメージ乗数", "displayName_ko": "데미지 배수", "displayName_ru": "Влияние на множитель урона", "displayName_zh": "伤害倍增系数增量", "displayNameID": 233467, "displayWhenZero": 0, "highIsGood": 1, "name": "damageMultiplierMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1483": { "attributeID": 1483, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier to missiles ability to hit fast targets", "displayName_de": "Explosionsgeschwindigkeit-Multiplikator", "displayName_en-us": "Explosion Velocity Multiplier", "displayName_es": "Multiplicador de velocidad de explosión", "displayName_fr": "Multiplicateur de vitesse d'explosion", "displayName_it": "Explosion Velocity Multiplier", "displayName_ja": "爆発速度乗数", "displayName_ko": "폭발 속도 배수", "displayName_ru": "Влияние на скорость взрыва", "displayName_zh": "爆炸速度倍增系数", "displayNameID": 233468, "displayWhenZero": 0, "highIsGood": 1, "name": "aoeVelocityMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1484": { "attributeID": 1484, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "description": "Maximum drone velocity multiplier", "displayName_de": "Drohnengeschwindigkeits-Multiplikator", "displayName_en-us": "Drone velocity multiplier", "displayName_es": "Multiplicador de velocidad de drones", "displayName_fr": "Multiplicateur de vitesse de drone", "displayName_it": "Drone velocity multiplier", "displayName_ja": "ドローン速度乗数", "displayName_ko": "드론 속도 배수", "displayName_ru": "Множитель скорости дронов", "displayName_zh": "无人机速率倍增系数", "displayNameID": 233469, "displayWhenZero": 0, "highIsGood": 1, "name": "maxDroneVelocityMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1485": { "attributeID": 1485, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "Damage multiplier for heat", "displayName_de": "Hitzeschaden-Multiplikator", "displayName_en-us": "Heat damage multiplier", "displayName_es": "Multiplicador de daño por calor", "displayName_fr": "Multiplicateur de dégâts thermiques", "displayName_it": "Heat damage multiplier", "displayName_ja": "ヒートダメージ乗数", "displayName_ko": "열 피해 배수", "displayName_ru": "Множитель повреждений от перегрузки", "displayName_zh": "超载伤害倍增系数", "displayNameID": 233470, "displayWhenZero": 0, "highIsGood": 1, "name": "heatDamageMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1486": { "attributeID": 1486, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier to all overload bonuses", "displayName_de": "Überladungsbonus-Multiplikator", "displayName_en-us": "Overload bonus multiplier", "displayName_es": "Multiplicador de bonificación de sobrecarga", "displayName_fr": "Multiplicateur de bonus de surcharge", "displayName_it": "Overload bonus multiplier", "displayName_ja": "オーバーロードボーナス乗数", "displayName_ko": "과부하 보너스 배수", "displayName_ru": "Множитель усиления при перегрузке", "displayName_zh": "超载加成倍增系数", "displayNameID": 233471, "displayWhenZero": 0, "highIsGood": 1, "name": "overloadBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1487": { "attributeID": 1487, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Smart bomb range multiplier", "displayName_de": "Reichweite-Multiplikator für Smart Bombs", "displayName_en-us": "Smart bomb range multiplier", "displayName_es": "Multiplicador de alcance de bomba inteligente", "displayName_fr": "Multiplicateur de portée de bombe intelligente", "displayName_it": "Smart bomb range multiplier", "displayName_ja": "スマートボム範囲乗数", "displayName_ko": "스마트폭탄 사거리 배수", "displayName_ru": "Множитель дальности действия импульсных излучателей", "displayName_zh": "立体炸弹范围倍增系数", "displayNameID": 233472, "displayWhenZero": 0, "highIsGood": 1, "name": "empFieldRangeMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1488": { "attributeID": 1488, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage multiplier for smart bombs", "displayName_de": "Schadens-Multiplikator für Smart Bombs", "displayName_en-us": "Smart bomb damage multiplier", "displayName_es": "Multiplicador de daño de la bomba inteligente", "displayName_fr": "Multiplicateur de dégâts de bombe intelligente", "displayName_it": "Smart bomb damage multiplier", "displayName_ja": "スマートボムダメージ乗数", "displayName_ko": "스마트폭탄 피해량 배수", "displayName_ru": "Множитель урона импульсными излучателями", "displayName_zh": "立体炸弹伤害倍增系数", "displayNameID": 233473, "displayWhenZero": 0, "highIsGood": 1, "name": "smartbombDamageMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1489": { "attributeID": 1489, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "EM resistance bonus for shields", "displayName_de": "EM-Resistenz der Schilde", "displayName_en-us": "Shield EM Resistance", "displayName_es": "Resistencia electromagnética del escudo", "displayName_fr": "Résistance EM du bouclier", "displayName_it": "Shield EM Resistance", "displayName_ja": "シールド EM レジスタンス", "displayName_ko": "실드 EM 저항력", "displayName_ru": "Сопротивляемость щитов ЭМ-урону", "displayName_zh": "护盾电磁抗性", "displayNameID": 233474, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldEmDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1490": { "attributeID": 1490, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Explosive resistance bonus for shields", "displayName_de": "Explosivresistenz der Schilde", "displayName_en-us": "Shield Explosive Resistance", "displayName_es": "Resistencia explosiva del escudo", "displayName_fr": "Résistance explosive du bouclier", "displayName_it": "Shield Explosive Resistance", "displayName_ja": "シールドエクスプローシブレジスタンス", "displayName_ko": "실드 폭발 저항력", "displayName_ru": "Сопротивляемость щитов фугасному урону", "displayName_zh": "护盾爆炸抗性", "displayNameID": 233475, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldExplosiveDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1491": { "attributeID": 1491, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Kinetic resistance bonus for shields", "displayName_de": "Kinetkresistenz der Schilde", "displayName_en-us": "Shield Kinetic Resistance", "displayName_es": "Resistencia cinética del escudo", "displayName_fr": "Résistance cinétique du bouclier", "displayName_it": "Shield Kinetic Resistance", "displayName_ja": "シールドキネティックレジスタンス", "displayName_ko": "실드 키네틱 저항력", "displayName_ru": "Сопротивляемость щитов кинетическому урону", "displayName_zh": "护盾动能抗性", "displayNameID": 233476, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldKineticDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1492": { "attributeID": 1492, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Thermal resistance bonus for shields", "displayName_de": "Thermalresistenz der Schilde", "displayName_en-us": "Shield Thermal Resistance", "displayName_es": "Resistencia térmica del escudo", "displayName_fr": "Résistance thermique du bouclier", "displayName_it": "Shield Thermal Resistance", "displayName_ja": "シールドサーマルレジスタンス", "displayName_ko": "실드 열 저항력", "displayName_ru": "Сопротивляемость щитов термическому урону", "displayName_zh": "护盾热能抗性", "displayNameID": 233477, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldThermalDamageResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1493": { "attributeID": 1493, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage multiplier for small weapons", "displayName_de": "Multiplikator für Schaden leichter Waffen (small weapon damage multiplier)", "displayName_en-us": "Small weapon damage multiplier", "displayName_es": "Multiplicador de daño de armas de pequeño calibre", "displayName_fr": "Multiplicateur de dégâts de petite arme", "displayName_it": "Small weapon damage multiplier", "displayName_ja": "小型兵器ダメージ乗数", "displayName_ko": "소형 무기 피해량 배수", "displayName_ru": "Множитель урона малыми орудиями", "displayName_zh": "小型武器伤害倍增系数", "displayNameID": 233478, "displayWhenZero": 0, "highIsGood": 1, "name": "smallWeaponDamageMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1494": { "attributeID": 1494, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage multiplier for medium weapons", "displayName_de": "Medium-Waffenschaden-Multiplikator", "displayName_en-us": "Medium weapon damage multiplier", "displayName_es": "Multiplicador de daño de armas de calibre medio", "displayName_fr": "Multiplicateur de dégâts d'arme intermédiaire", "displayName_it": "Medium weapon damage multiplier", "displayName_ja": "中型兵器ダメージ乗数", "displayName_ko": "중형 무기 피해량 배수", "displayName_ru": "Множитель урона средними орудиями", "displayName_zh": "中型武器伤害倍增系数", "displayNameID": 233479, "displayWhenZero": 0, "highIsGood": 1, "name": "mediumWeaponDamageMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1495": { "attributeID": 1495, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Armor repair amount multiplier", "displayName_de": "Reparaturmengen-Multiplikator", "displayName_en-us": "Repair amount multiplier", "displayName_es": "Multiplicador de cantidad de reparación", "displayName_fr": "Multiplicateur de quantité réparée", "displayName_it": "Repair amount multiplier", "displayName_ja": "修復量乗数", "displayName_ko": "수리량 배수", "displayName_ru": "Множитель эффективности ремонта", "displayName_zh": "修复量倍增系数", "displayNameID": 233480, "displayWhenZero": 0, "highIsGood": 1, "name": "armorDamageAmountMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1496": { "attributeID": 1496, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Shield transfer amount multiplier", "displayName_de": "Schildreparatur-Multiplikator", "displayName_en-us": "Shield repair multiplier", "displayName_es": "Multiplicador de reparación del escudo", "displayName_fr": "Multiplicateur de réparation de bouclier", "displayName_it": "Shield repair multiplier", "displayName_ja": "シールドリペア乗数", "displayName_ko": "실드 수리 배수", "displayName_ru": "Влияние на эффективность накачки щитов", "displayName_zh": "护盾维修倍增系数", "displayNameID": 233481, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldBonusMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1497": { "attributeID": 1497, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "Shield repair multiplier for remote repair", "displayName_de": "Schild-Transfermengen-Multiplikator", "displayName_en-us": "Shield transfer amount multiplier", "displayName_es": "Multiplicador de cantidad de transferencia del escudo", "displayName_fr": "Multiplicateur de volume de transfert de bouclier", "displayName_it": "Shield transfer amount multiplier", "displayName_ja": "シールド転送量乗数", "displayName_ko": "실드 전송 총량 배수", "displayName_ru": "Влияние на эффективность дистанционной накачки щитов", "displayName_zh": "护盾传输量倍增系数", "displayNameID": 233482, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldBonusMultiplierRemote", "published": 1, "stackable": 1, "unitID": 104 }, "1498": { "attributeID": 1498, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "Repair amount multiplier for remote repairers", "displayName_de": "Fernreparaturmengen-Multiplikator", "displayName_en-us": "Remote repair amount multiplier", "displayName_es": "Multiplicador de cantidad de reparación remota", "displayName_fr": "Multiplicateur de quantité réparée à distance", "displayName_it": "Remote repair amount multiplier", "displayName_ja": "リモートリペア量乗数", "displayName_ko": "원격 수리 총량 배수", "displayName_ru": "Множитель эффективности дистанционного ремонта", "displayName_zh": "远距维修量倍增系数", "displayNameID": 233483, "displayWhenZero": 0, "highIsGood": 1, "name": "armorDamageAmountMultiplierRemote", "published": 1, "stackable": 1, "unitID": 104 }, "1499": { "attributeID": 1499, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Capacitor capacity multiplier", "displayName_de": "Energiespeicher-Kapazitäts-Multiplikator", "displayName_en-us": "Capacitor capacity multiplier", "displayName_es": "Multiplicador de capacidad del condensador", "displayName_fr": "Multiplicateur de charge de capaciteur", "displayName_it": "Capacitor capacity multiplier", "displayName_ja": "キャパシタ容量乗数", "displayName_ko": "캐패시터 배수", "displayName_ru": "Множитель ёмкости накопителя", "displayName_zh": "电容量倍增系数", "displayNameID": 233484, "displayWhenZero": 0, "highIsGood": 1, "name": "capacitorCapacityMultiplierSystem", "published": 1, "stackable": 1, "unitID": 104 }, "1500": { "attributeID": 1500, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "Capacitor recharge rate multiplier", "displayName_de": "Energiespeicher-Auflade-Multiplikator", "displayName_en-us": "Capacitor recharge multiplier", "displayName_es": "Multiplicador de carga del condensador", "displayName_fr": "Multiplicateur de recharge du capaciteur", "displayName_it": "Capacitor recharge multiplier", "displayName_ja": "キャパシタリチャージ乗数", "displayName_ko": "캐패시터 충전 배수", "displayName_ru": "Множитель скорости регенерации накопителя", "displayName_zh": "电容回充倍增系数", "displayNameID": 233485, "displayWhenZero": 0, "highIsGood": 1, "name": "rechargeRateMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1501": { "attributeID": 1501, "categoryID": 20, "dataType": 4, "defaultValue": 1.0, "description": "The maximum number of targets that can be repaired at once.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteArmorRepairMaxTargets", "published": 0, "stackable": 1 }, "1502": { "attributeID": 1502, "categoryID": 20, "dataType": 4, "defaultValue": 1.0, "description": "The maximum number of targets that can be shield boosted at once", "displayWhenZero": 0, "highIsGood": 1, "name": "npcRemoteShieldBoostMaxTargets", "published": 0, "stackable": 1 }, "1503": { "attributeID": 1503, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserAmarr1", "published": 0, "stackable": 1 }, "1504": { "attributeID": 1504, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserCaldari1", "published": 0, "stackable": 1 }, "1505": { "attributeID": 1505, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserGallente1", "published": 0, "stackable": 1 }, "1506": { "attributeID": 1506, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserMinmatar1", "published": 0, "stackable": 1 }, "1507": { "attributeID": 1507, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrDefensive2", "published": 0, "stackable": 1 }, "1508": { "attributeID": 1508, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrElectronic2", "published": 0, "stackable": 1 }, "1509": { "attributeID": 1509, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrCore2", "published": 0, "stackable": 1 }, "1510": { "attributeID": 1510, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariOffensive2", "published": 0, "stackable": 1 }, "1511": { "attributeID": 1511, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrOffensive2", "published": 0, "stackable": 1 }, "1512": { "attributeID": 1512, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrPropulsion2", "published": 0, "stackable": 1 }, "1513": { "attributeID": 1513, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariPropulsion2", "published": 0, "stackable": 1 }, "1514": { "attributeID": 1514, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariElectronic2", "published": 0, "stackable": 1 }, "1515": { "attributeID": 1515, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariCore2", "published": 0, "stackable": 1 }, "1516": { "attributeID": 1516, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariDefensive2", "published": 0, "stackable": 1 }, "1517": { "attributeID": 1517, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteDefensive2", "published": 0, "stackable": 1 }, "1518": { "attributeID": 1518, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteElectronic2", "published": 0, "stackable": 1 }, "1519": { "attributeID": 1519, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteCore2", "published": 0, "stackable": 1 }, "1520": { "attributeID": 1520, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallentePropulsion2", "published": 0, "stackable": 1 }, "1521": { "attributeID": 1521, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteOffensive2", "published": 0, "stackable": 1 }, "1522": { "attributeID": 1522, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarOffensive2", "published": 0, "stackable": 1 }, "1523": { "attributeID": 1523, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarPropulsion2", "published": 0, "stackable": 1 }, "1524": { "attributeID": 1524, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarElectronic2", "published": 0, "stackable": 1 }, "1525": { "attributeID": 1525, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarCore2", "published": 0, "stackable": 1 }, "1526": { "attributeID": 1526, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarDefensive2", "published": 0, "stackable": 1 }, "1527": { "attributeID": 1527, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Maximum value for armor resonances. Default = 1.", "displayWhenZero": 0, "highIsGood": 1, "name": "armorMaxDamageResonance", "published": 0, "stackable": 1 }, "1528": { "attributeID": 1528, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Maximum value for shield resonances. Default = 1.", "displayWhenZero": 0, "highIsGood": 1, "name": "shieldMaxDamageResonance", "published": 0, "stackable": 1 }, "1529": { "attributeID": 1529, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Maximum value for hull resonances. Default = 1.", "displayWhenZero": 0, "highIsGood": 1, "name": "hullMaxDamageResonance", "published": 0, "stackable": 1 }, "1530": { "attributeID": 1530, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "This was created by accident and should be ignored", "displayWhenZero": 0, "highIsGood": 1, "name": "hullMaxDamageResonanceOld", "published": 0, "stackable": 1 }, "1531": { "attributeID": 1531, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrOffensive3", "published": 0, "stackable": 1 }, "1532": { "attributeID": 1532, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteOffensive3", "published": 0, "stackable": 1 }, "1533": { "attributeID": 1533, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariOffensive3", "published": 0, "stackable": 1 }, "1534": { "attributeID": 1534, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarOffensive3", "published": 0, "stackable": 1 }, "1535": { "attributeID": 1535, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCC3", "published": 0, "stackable": 1 }, "1536": { "attributeID": 1536, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "ECM Range-Bonus", "displayName_en-us": "ECM Range Bonus", "displayName_es": "Bonificación de alcance de ECM", "displayName_fr": "Bonus de portée CME", "displayName_it": "ECM Range Bonus", "displayName_ja": "ECM 範囲ボーナス", "displayName_ko": "ECM 사거리 보너스", "displayName_ru": "Бонус к дальности глушения захвата целей", "displayName_zh": "ECM范围加成", "displayNameID": 233513, "displayWhenZero": 0, "highIsGood": 1, "name": "ecmRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1537": { "attributeID": 1537, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusReconShip3", "published": 0, "stackable": 1 }, "1538": { "attributeID": 1538, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warpBubbleImmune", "published": 0, "stackable": 1 }, "1539": { "attributeID": 1539, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warpBubbleImmuneModifier", "published": 0, "stackable": 1 }, "1540": { "attributeID": 1540, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "stealthBomberLauncherPower2", "published": 1, "stackable": 1 }, "1541": { "attributeID": 1541, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "jumpHarmonicsModifier", "published": 0, "stackable": 1 }, "1544": { "attributeID": 1544, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Max. erlaubte Modulzahl dieser Gruppe", "displayName_en-us": "Max Modules Of This Group Allowed", "displayName_es": "Módulos máx. permitidos de este grupo", "displayName_fr": "Modules de ce groupe max. autorisés", "displayName_it": "Max Modules Of This Group Allowed", "displayName_ja": "このグループに含められるモジュール最大数", "displayName_ko": "해당 모듈 유형 최대 장착 개수", "displayName_ru": "Максимально допустимое количество модулей данной группы", "displayName_zh": "该武器组所允许的最大装备数量", "displayNameID": 233629, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "maxGroupFitted", "published": 1, "stackable": 1 }, "1547": { "attributeID": 1547, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Rig-Größe", "displayName_en-us": "Rig Size", "displayName_es": "Tamaño de complemento", "displayName_fr": "Taille d'amélioration", "displayName_it": "Rig Size", "displayName_ja": "リグサイズ", "displayName_ko": "리그 크기", "displayName_ru": "Размер модификатора", "displayName_zh": "改装件尺寸", "displayNameID": 233520, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2887, "name": "rigSize", "published": 1, "stackable": 1, "unitID": 117 }, "1549": { "attributeID": 1549, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "special fuel bay capacity", "displayName_de": "Fassungsvermögen des Hangars für Treibstoffe", "displayName_en-us": "Fuel Bay Capacity", "displayName_es": "Capacidad del almacén de combustible", "displayName_fr": "Capacité de la cuve de carburant", "displayName_it": "Fuel Bay Capacity", "displayName_ja": "燃料ベイの容量", "displayName_ko": "연료실 적재량", "displayName_ru": "Вместимость топливного отсека", "displayName_zh": "燃料舱容量", "displayNameID": 233533, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialFuelBayCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das maximale Volumen, das vom Treibstoffhangar transportiert werden kann", "tooltipDescription_en-us": "The maximum volume that can be carried in the fuel bay", "tooltipDescription_es": "El volumen máximo que puede transportarse en almacén de combustible.", "tooltipDescription_fr": "Volume maximum pouvant être transporté dans la cuve de carburant.", "tooltipDescription_it": "The maximum volume that can be carried in the fuel bay", "tooltipDescription_ja": "燃料ベイに格納できる最大量", "tooltipDescription_ko": "연료실의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём топлива в бортовом топливном отсеке", "tooltipDescription_zh": "燃料舱能装载的最大体积", "tooltipDescriptionID": 312095, "tooltipTitleID": 312094, "unitID": 9 }, "1550": { "attributeID": 1550, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetImperialNavy", "published": 0, "stackable": 1 }, "1551": { "attributeID": 1551, "dataType": 4, "defaultValue": 0.0, "description": "Number of days that this PLEX adds to your account", "displayName_de": "Tage zum Abonnement hinzugefügt", "displayName_en-us": "Days added to subscription", "displayName_es": "Días añadidos a la suscripción", "displayName_fr": "Jours d'abonnement supplémentaires", "displayName_it": "Days added to subscription", "displayName_ja": "登録追加日数", "displayName_ko": "계정기간에 추가일수", "displayName_ru": "Срок в днях, на который продлена подписка", "displayName_zh": "游戏时间增加天数", "displayNameID": 233605, "displayWhenZero": 0, "highIsGood": 1, "name": "numDays", "published": 1, "stackable": 1 }, "1552": { "attributeID": 1552, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetCaldariNavy", "published": 0, "stackable": 1 }, "1553": { "attributeID": 1553, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetFederationNavy", "published": 0, "stackable": 1 }, "1554": { "attributeID": 1554, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetRepublicFleet", "published": 0, "stackable": 1 }, "1555": { "attributeID": 1555, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fwLpKill", "published": 0, "stackable": 1 }, "1556": { "attributeID": 1556, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of general mining hold", "displayName_de": "Bergbaufassungsvermögen", "displayName_en-us": "Mining Hold Capacity", "displayName_es": "Capacidad de la bodega de minería", "displayName_fr": "Capacité de la soute d'extraction", "displayName_it": "Mining Hold Capacity", "displayName_ja": "採掘ホールド容量", "displayName_ko": "채굴 저장고 적재량", "displayName_ru": "Объём отсека для руды", "displayName_zh": "矿舱容量", "displayNameID": 233539, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "generalMiningHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Bergbaufrachtraum gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the mining hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega de minería.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute d'extraction", "tooltipDescription_it": "The total volume that can be stored in the mining hold", "tooltipDescription_ja": "採掘ホールドに積載できる総量", "tooltipDescription_ko": "채굴 저장고에 보관할 수 있는 최대 용량", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для руды", "tooltipDescription_zh": "矿舱的容量", "tooltipDescriptionID": 295316, "tooltipTitleID": 295315, "unitID": 9 }, "1557": { "attributeID": 1557, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of gas-only hold", "displayName_de": "Gasfassungsvermögen", "displayName_en-us": "Gas Hold Capacity", "displayName_es": "Capacidad de la bodega de gas", "displayName_fr": "Capacité de la soute à carburant", "displayName_it": "Gas Hold Capacity", "displayName_ja": "ガスの収容容量", "displayName_ko": "가스 저장고 적재량", "displayName_ru": "Вместимость газового отсека", "displayName_zh": "气舱容量", "displayNameID": 233534, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialGasHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Gasfrachtraum gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the gas hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega de gas.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute à gaz", "tooltipDescription_it": "The total volume that can be stored in the gas hold", "tooltipDescription_ja": "ガスホールドに積載できる総量", "tooltipDescription_ko": "가스 저장고에 보관할 수 있는 최대 용량", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в газовом отсеке", "tooltipDescription_zh": "气云舱的容量", "tooltipDescriptionID": 592043, "tooltipTitleID": 592042, "unitID": 9 }, "1558": { "attributeID": 1558, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of mineral-only hold", "displayName_de": "Mineralienfassungsvermögen", "displayName_en-us": "Mineral Hold Capacity", "displayName_es": "Capacidad de la bodega de minerales", "displayName_fr": "Capacité de la soute à minéraux", "displayName_it": "Mineral Hold Capacity", "displayName_ja": "無機物の収容容量", "displayName_ko": "미네랄 저장고 적재량", "displayName_ru": "Объём отсека для минералов", "displayName_zh": "矿物舱容量", "displayNameID": 233538, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialMineralHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Mineralienfrachtraum gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the mineral hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega de minerales.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute à minéraux.", "tooltipDescription_it": "The total volume that can be stored in the mineral hold", "tooltipDescription_ja": "無機物ホールドに積載できる総量です", "tooltipDescription_ko": "미네랄 저장고에 보관할 수 있는 최대 용량입니다.", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для минералов", "tooltipDescription_zh": "矿物舱能装载的总体积", "tooltipDescriptionID": 295318, "tooltipTitleID": 295317, "unitID": 9 }, "1559": { "attributeID": 1559, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of special salvage-only hold", "displayName_de": "Altmaterial-Fassungsvermögen", "displayName_en-us": "Salvage Hold Capacity", "displayName_es": "Capacidad de la bodega de restos", "displayName_fr": "Capacité de la soute de récupération", "displayName_it": "Salvage Hold Capacity", "displayName_ja": "サルベージの収容容量", "displayName_ko": "인양품 저장고 적재량", "displayName_ru": "Объём отсека для демонтированных компонентов", "displayName_zh": "打捞舱容量", "displayNameID": 233540, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialSalvageHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1560": { "attributeID": 1560, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of ship-only hold", "displayName_de": "Fassungsvermögen des Schiffsfrachtraums", "displayName_en-us": "Ship Hold Capacity", "displayName_es": "Capacidad de la bodega de la nave", "displayName_fr": "Capacité de la soute à vaisseaux", "displayName_it": "Ship Hold Capacity", "displayName_ja": "船の収容容量", "displayName_ko": "함선 격납고 적재량", "displayName_ru": "Объём отсека для кораблей", "displayName_zh": "舰船舱容量", "displayNameID": 233541, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialShipHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1561": { "attributeID": 1561, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of frigate/destroyer hold", "displayName_de": "Fassungsvermögen eines kleinen Schiffes", "displayName_en-us": "Small Ship Hold Capacity", "displayName_es": "Capacidad de la bodega de una nave pequeña", "displayName_fr": "Capacité de soute petit vaisseau", "displayName_it": "Small Ship Hold Capacity", "displayName_ja": "小型艦の収容容量", "displayName_ko": "소형 함선 격납고 적재량", "displayName_ru": "Объём отсека для малых кораблей", "displayName_zh": "小型舰船舱容量", "displayNameID": 233542, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialSmallShipHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1562": { "attributeID": 1562, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of cruiser/battlecruiser ship hold", "displayName_de": "Fassungsvermögen des mittleren Schiffsfrachtraums", "displayName_en-us": "Medium Ship Hold Capacity", "displayName_es": "Capacidad de la bodega de una nave mediana", "displayName_fr": "Capacité de soute vaisseau intermédiaire", "displayName_it": "Medium Ship Hold Capacity", "displayName_ja": "中型艦の収容容量", "displayName_ko": "중형 함선 격납고 적재량", "displayName_ru": "Объём отсека для средних кораблей", "displayName_zh": "中型舰船舱容量", "displayNameID": 233537, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialMediumShipHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1563": { "attributeID": 1563, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of battleship hold", "displayName_de": "Fassungsvermögen des großen Schiffsfrachtraums", "displayName_en-us": "Large Ship Hold Capacity", "displayName_es": "Capacidad de la bodega de una nave grande", "displayName_fr": "Capacité de soute grand vaisseau", "displayName_it": "Large Ship Hold Capacity", "displayName_ja": "大型艦の収容容量", "displayName_ko": "대형 함선 격납고 적재량", "displayName_ru": "Объём отсека для больших кораблей", "displayName_zh": "大型舰船舱容量", "displayNameID": 233536, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialLargeShipHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1564": { "attributeID": 1564, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of industrial ship hold", "displayName_de": "Fassungsvermögen des Frachtraums für Handelssschiffe", "displayName_en-us": "Industrial Ship Hold Capacity", "displayName_es": "Capacidad de la bodega de una nave industrial", "displayName_fr": "Capacité de soute vaisseau industriel", "displayName_it": "Industrial Ship Hold Capacity", "displayName_ja": "輸送艦の収容容量", "displayName_ko": "인더스트리얼 격납고 적재량", "displayName_ru": "Вместимость грузового отсека для промышленных кораблей", "displayName_zh": "工业舰舱容量", "displayNameID": 233535, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialIndustrialShipHoldCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1565": { "attributeID": 1565, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "+ / - modifier to a ship radar strength", "displayName_de": "RADAR Stärkebonus", "displayName_en-us": "RADAR strength bonus", "displayName_es": "Bonificación de potencia del radar", "displayName_fr": "Bonus de puissance radar", "displayName_it": "RADAR strength bonus", "displayName_ja": "電波強度ボーナス", "displayName_ko": "레이더 강도 보너스", "displayName_ru": "Влияние на мощность радарного сигнала", "displayName_zh": "雷达强度加成", "displayNameID": 233527, "displayWhenZero": 0, "highIsGood": 1, "name": "scanRadarStrengthModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1566": { "attributeID": 1566, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "+ / - modifier to a ship ladar strength", "displayName_de": "Ladar-Stärkebonus", "displayName_en-us": "Ladar strength bonus", "displayName_es": "Bonificación de potencia lidar", "displayName_fr": "Bonus de puissance ladar", "displayName_it": "Ladar strength bonus", "displayName_ja": "光学強度ボーナス", "displayName_ko": "라이다 강도 보너스", "displayName_ru": "Влияние на мощность ладарного сигнала", "displayName_zh": "光雷达强度加成", "displayNameID": 233528, "displayWhenZero": 0, "highIsGood": 1, "name": "scanLadarStrengthModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1567": { "attributeID": 1567, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "+ / - modifier to a ship gravimetric strength", "displayName_de": "Gravimetrischer Stärkebonus", "displayName_en-us": "Gravimetric strength bonus", "displayName_es": "Bonificación de fuerza gravimétrica", "displayName_fr": "Bonus de puissance gravimétrique", "displayName_it": "Gravimetric strength bonus", "displayName_ja": "重力強度ボーナス", "displayName_ko": "중력장 강도 보너스", "displayName_ru": "Влияние на мощность гравиметрического сигнала", "displayName_zh": "引力计强度加成", "displayNameID": 233529, "displayWhenZero": 0, "highIsGood": 1, "name": "scanGravimetricStrengthModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1568": { "attributeID": 1568, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "+ / - modifier to a ship magnetometric strength", "displayName_de": "Magnometrischer Stärkebonus", "displayName_en-us": "Magnetometric strength bonus", "displayName_es": "Bonificación de fuerza magnetométrica", "displayName_fr": "Bonus de puissance magnétométrique", "displayName_it": "Magnetometric strength bonus", "displayName_ja": "磁力測定強度ボーナス", "displayName_ko": "자기 강도 보너스", "displayName_ru": "Влияние на мощность магнитометрического сигнала", "displayName_zh": "磁力计强度加成", "displayNameID": 233530, "displayWhenZero": 0, "highIsGood": 1, "name": "scanMagnetometricStrengthModifier", "published": 1, "stackable": 1, "unitID": 139 }, "1569": { "attributeID": 1569, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetLGImperialNavy", "published": 0, "stackable": 1 }, "1570": { "attributeID": 1570, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetLGFederationNavy", "published": 0, "stackable": 1 }, "1571": { "attributeID": 1571, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetLGCaldariNavy", "published": 0, "stackable": 1 }, "1572": { "attributeID": 1572, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetLGRepublicFleet", "published": 0, "stackable": 1 }, "1573": { "attributeID": 1573, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "special ammo hold capacity", "displayName_de": "Munitionskapazität", "displayName_en-us": "Ammo Hold Capacity", "displayName_es": "Capacidad del arsenal", "displayName_fr": "Capacité de la soute à munitions", "displayName_it": "Ammo Hold Capacity", "displayName_ja": "弾薬の収容容量", "displayName_ko": "탄약고 적재량", "displayName_ru": "Объём отсека для боеприпасов", "displayName_zh": "弹药舱容量", "displayNameID": 233532, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialAmmoHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Munition, das im Munitionsfrachtraum des Schiffs gelagert werden kann", "tooltipDescription_en-us": "The total volume of charges that can be stored in the ship's ammo hold", "tooltipDescription_es": "El volumen total de cargas que pueden almacenarse en el arsenal de la nave.", "tooltipDescription_fr": "Volume total de munitions pouvant être transporté dans la soute à munitions du vaisseau.", "tooltipDescription_it": "The total volume of charges that can be stored in the ship's ammo hold", "tooltipDescription_ja": "艦船の弾薬ホールドに積載できる弾薬の総量です", "tooltipDescription_ko": "탄약고의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём боеприпасов и зарядов, допустимый к размещению в бортовом отсеке для боеприпасов", "tooltipDescription_zh": "舰船的弹药舱所能装载的弹药总体积", "tooltipDescriptionID": 295255, "tooltipTitleID": 295254, "unitID": 9 }, "1574": { "attributeID": 1574, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament Ship Bonus", "displayName_de": "Bonus für spezielle Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 233543, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATC1", "published": 0, "stackable": 1, "unitID": 105 }, "1575": { "attributeID": 1575, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament Ship Bonus", "displayName_de": "Bonus für spezielle Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 233544, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATC2", "published": 0, "stackable": 1, "unitID": 105 }, "1576": { "attributeID": 1576, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament Frigate Bonus", "displayName_de": "Bonus für spezielle Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 233545, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATF1", "published": 0, "stackable": 1, "unitID": 105 }, "1577": { "attributeID": 1577, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament Frigate Bonus", "displayName_de": "Bonus für spezielle Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 233546, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATF2", "published": 0, "stackable": 1, "unitID": 105 }, "1578": { "attributeID": 1578, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCovertOps3", "published": 0, "stackable": 1 }, "1579": { "attributeID": 1579, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "effectDeactivationDelay", "published": 0, "stackable": 1 }, "1580": { "attributeID": 1580, "categoryID": 7, "dataType": 4, "defaultValue": -1.0, "description": "The maximum number of defense bunkers this infrastructure Hub can support.", "displayName_de": "Bunker mit maximaler Verteidigung", "displayName_en-us": "Maximum Defense Bunkers", "displayName_es": "Máx. de búnkeres defensivos", "displayName_fr": "Bunkers de défense maximum", "displayName_it": "Maximum Defense Bunkers", "displayName_ja": "最大防衛バンカー", "displayName_ko": "최대 방어 벙커", "displayName_ru": "Максимальное количество защитных бункеров", "displayName_zh": "防御堡垒上限", "displayNameID": 233550, "displayWhenZero": 0, "highIsGood": 1, "name": "maxDefenseBunkers", "published": 1, "stackable": 1 }, "1581": { "attributeID": 1581, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusAssaultShips1", "published": 0, "stackable": 1 }, "1582": { "attributeID": 1582, "categoryID": 9, "dataType": 4, "defaultValue": 30000.0, "description": "The number of milliseconds before the container replenishes the loot inside itself. This special tutorial attribute will allow re-spawning of items in distribution dungeons bypassing restrictions present. 10 second minimum (10000 ms).", "displayWhenZero": 0, "highIsGood": 1, "name": "specialTutorialLootRespawnTime", "published": 0, "stackable": 1, "unitID": 101 }, "1583": { "attributeID": 1583, "dataType": 4, "defaultValue": 0.0, "description": "The required minimum military development index level", "displayName_de": "Erforderlicher Entwicklungsindex (Militär)", "displayName_en-us": "Required Development Index Level (Military)", "displayName_es": "Nivel de índice de desarrollo necesario (militar)", "displayName_fr": "Niveau d'index de développement requis (militaire)", "displayName_it": "Required Development Index Level (Military)", "displayName_ja": "必要な開発インデックスレベル(軍事)", "displayName_ko": "개발 지수 요구 레벨 (군사)", "displayName_ru": "Требуемый индекс развития (военный)", "displayName_zh": "发展指数等级需求(军事)", "displayNameID": 233615, "displayWhenZero": 0, "highIsGood": 1, "name": "devIndexMilitary", "published": 1, "stackable": 1, "unitID": 140 }, "1584": { "attributeID": 1584, "dataType": 4, "defaultValue": 0.0, "description": "The minimum required industrial development index level", "displayName_de": "Erforderlicher Entwicklungsindex (Industrie)", "displayName_en-us": "Required Development Index Level (Industrial)", "displayName_es": "Nivel de índice de desarrollo necesario (industrial)", "displayName_fr": "Niveau d'index de développement requis (industriel)", "displayName_it": "Required Development Index Level (Industrial)", "displayName_ja": "必要な開発インデックスレベル(工業)", "displayName_ko": "개발 지수 요구 레벨 (산업)", "displayName_ru": "Требуемый индекс развития (промышленный)", "displayName_zh": "发展指数等级需求(工业)", "displayNameID": 233614, "displayWhenZero": 0, "highIsGood": 1, "name": "devIndexIndustrial", "published": 1, "stackable": 1, "unitID": 140 }, "1585": { "attributeID": 1585, "dataType": 5, "defaultValue": 0.0, "description": "The required ISK to be present in the Economics development index.", "displayName_de": "Erforderlicher Entwicklungsindex (Wirtschaft)", "displayName_en-us": "Required Development Index (economic)", "displayName_es": "Índice de desarrollo necesario (económico)", "displayName_fr": "Indice de développement requis (économie)", "displayName_it": "Required Development Index (economic)", "displayName_ja": "必要な開発インデックス(経済)", "displayName_ko": "개발 지수 요구량 (경제)", "displayName_ru": "Требуемый индекс развития (экономический)", "displayName_zh": "发展指数需求(经济)", "displayNameID": 233551, "displayWhenZero": 0, "highIsGood": 1, "name": "devIndexEconomic", "published": 1, "stackable": 1 }, "1586": { "attributeID": 1586, "dataType": 5, "defaultValue": 0.0, "description": "The required ISK to be present in the research and development\r\ndevelopment index.", "displayName_de": "Erforderlicher Entwicklungsindex (Forschung und Entwicklung)", "displayName_en-us": "Required Development Index (Research & Development)", "displayName_es": "Índice de desarrollo necesario (I+D)", "displayName_fr": "Indice de développement requis (recherche et développement)", "displayName_it": "Required Development Index (Research & Development)", "displayName_ja": "必要な開発インデックス(研究開発)", "displayName_ko": "개발 지수 요구량 (연구 및 개발)", "displayName_ru": "Требуемый индекс развития (наука и разработки)", "displayName_zh": "发展指数需求(研发)", "displayNameID": 233552, "displayWhenZero": 0, "highIsGood": 1, "name": "devIndexResearchDevelopment", "published": 1, "stackable": 1 }, "1590": { "attributeID": 1590, "categoryID": 7, "dataType": 2, "defaultValue": -1.0, "description": "The minimum distance the object can be anchored, \"from what\" depends on the object.", "displayWhenZero": 0, "highIsGood": 1, "name": "anchorDistanceMin", "published": 0, "stackable": 1, "unitID": 1 }, "1591": { "attributeID": 1591, "categoryID": 7, "dataType": 2, "defaultValue": 250000.0, "description": "the maximum distance it can be anchored at, \"from what\" depends on the object in question", "displayWhenZero": 0, "highIsGood": 1, "name": "anchorDistanceMax", "published": 0, "stackable": 1, "unitID": 1 }, "1595": { "attributeID": 1595, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Infrastrukturupgrade erforderlich", "displayName_en-us": "Requires Infrastructure Upgrade", "displayName_es": "Requiere mejorar la infraestructura", "displayName_fr": "Requiert une amélioration d'infrastructure.", "displayName_it": "Requires Infrastructure Upgrade", "displayName_ja": "インフラストラクチャのアップグレードが必要", "displayName_ko": "인프라스트럭처 업그레이드 요구량", "displayName_ru": "Требуется расширение центра инфраструктуры", "displayName_zh": "需要基础设施升级件", "displayNameID": 233555, "displayWhenZero": 0, "highIsGood": 1, "name": "requiresIHubUpgrade", "published": 1, "stackable": 1, "unitID": 116 }, "1597": { "attributeID": 1597, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The number of seconds that sovereignty has to have been claimed for to Install this upgrade", "displayName_de": "Minimale Souveränitätszeit zur Installierung des Upgrades", "displayName_en-us": "Minimum Sovereignty Period to Install Upgrade", "displayName_es": "Periodo mínimo de soberanía para instalar mejora", "displayName_fr": "Période de souveraineté minimum pour installer l'amélioration", "displayName_it": "Minimum Sovereignty Period to Install Upgrade", "displayName_ja": "アップグレード装着までの最短領有権期間", "displayName_ko": "업그레이드 설치를 위한 최소 소버린티 기간", "displayName_ru": "Минимальный срок владения для установки расширения", "displayName_zh": "升级安装最短主权期限制", "displayNameID": 233558, "displayWhenZero": 0, "highIsGood": 1, "name": "sovUpgradeSovereigntyHeldFor", "published": 1, "stackable": 1, "unitID": 129 }, "1598": { "attributeID": 1598, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The typeID of the upgrade that prevents this type from being installed.", "displayWhenZero": 0, "highIsGood": 1, "name": "sovUpgradeBlockingUpgradeID", "published": 0, "stackable": 1, "unitID": 116 }, "1599": { "attributeID": 1599, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "The typeID of the upgrade that is required for this upgrade to be installed. ", "displayName_de": "Voraussetzung: installiertes Upgrade", "displayName_en-us": "Prerequisite Installed Upgrade", "displayName_es": "Mejora requerida instalada", "displayName_fr": "Amélioration installée prérequise", "displayName_it": "Prerequisite Installed Upgrade", "displayName_ja": "必須アップグレード", "displayName_ko": "사전에 필요한 업그레이드", "displayName_ru": "Требуемые расширения", "displayName_zh": "先决升级安装", "displayNameID": 233559, "displayWhenZero": 0, "highIsGood": 1, "name": "sovUpgradeRequiredUpgradeID", "published": 1, "stackable": 1, "unitID": 116 }, "1600": { "attributeID": 1600, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The required level of outpost upgrade required to install this upgrade", "displayName_de": "Benötigtes System-Außenposten-Upgrade-Level", "displayName_en-us": "Required System Oupost Upgrade Level", "displayName_es": "Nivel de mejora del puesto necesario", "displayName_fr": "Niveau d'amélioration d'avant-poste système requis", "displayName_it": "Required System Oupost Upgrade Level", "displayName_ja": "必要なシステムアウトポストアップグレードレベル", "displayName_ko": "시스템 전초기지 업그레이드 레벨 요구량", "displayName_ru": "Требуемый уровень модернизации станции", "displayName_zh": "星系哨站升级等级需求", "displayNameID": 233557, "displayWhenZero": 0, "highIsGood": 1, "name": "sovUpgradeRequiredOutpostUpgradeLevel", "published": 1, "stackable": 1 }, "1601": { "attributeID": 1601, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "This attribute specifies a typeID which must be active in an IH for the given structure to be onlined", "displayName_de": "Einschaltung benötigt Infrastruktur-Upgrade", "displayName_en-us": "Onlining Requires Infrastructure Upgrade", "displayName_es": "Requiere mejorar la infraestructura para conectarse", "displayName_fr": "La mise en ligne nécessite une amélioration d'infrastructure", "displayName_it": "Onlining Requires Infrastructure Upgrade", "displayName_ja": "オンライン処理にはインフラストラクチャのアップグレードが必要", "displayName_ko": "인프라스트럭처 업그레이드가 있어야 온라인이 가능합니다.", "displayName_ru": "Расширение инфраструктуры (требуется для включения)", "displayName_zh": "上线需要基础设施升级支持", "displayNameID": 233556, "displayWhenZero": 0, "highIsGood": 1, "name": "onliningRequiresSovUpgrade1", "published": 1, "stackable": 1, "unitID": 116 }, "1603": { "attributeID": 1603, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "[DEPRECATED] The sum of this attribute on the claim markers, Infrastructure hub, and each upgrade is the systems base cost. ", "displayName_de": "Tägliche Betriebskosten", "displayName_en-us": "Daily Upkeep Cost", "displayName_es": "Coste de mantenimiento diario", "displayName_fr": "Coût d'entretien journalier", "displayName_it": "Daily Upkeep Cost", "displayName_ja": "1 日の維持費", "displayName_ko": "일일 유지비용", "displayName_ru": "Ежедневное содержание", "displayName_zh": "每日维护费用", "displayNameID": 233560, "displayWhenZero": 0, "highIsGood": 1, "name": "sovBillSystemCostDEPRECATED", "published": 1, "stackable": 1, "unitID": 133 }, "1606": { "attributeID": 1606, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_blood", "published": 0, "stackable": 1 }, "1607": { "attributeID": 1607, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_angel", "published": 0, "stackable": 1 }, "1608": { "attributeID": 1608, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID_guristas", "published": 0, "stackable": 1 }, "1609": { "attributeID": 1609, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_serpentis", "published": 0, "stackable": 1 }, "1610": { "attributeID": 1610, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_drones", "published": 0, "stackable": 1 }, "1611": { "attributeID": 1611, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_sanshas", "published": 0, "stackable": 1 }, "1612": { "attributeID": 1612, "categoryID": 7, "dataType": 2, "defaultValue": 172800.0, "description": "The number of seconds that the structure will be in reinforcement time", "displayWhenZero": 0, "highIsGood": 1, "name": "reinforcementDuration", "published": 0, "stackable": 1, "unitID": 3 }, "1613": { "attributeID": 1613, "categoryID": 7, "dataType": 2, "defaultValue": 10800.0, "description": "The number of seconds that the reinforcement exit time will be adjusted by. exitTime +- attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "reinforcementVariance", "published": 0, "stackable": 1, "unitID": 3 }, "1614": { "attributeID": 1614, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 0, "name": "distributionID_mordus", "published": 0, "stackable": 1 }, "1615": { "attributeID": 1615, "dataType": 4, "defaultValue": 0.0, "description": "The minimum required sovereignty index level", "displayName_de": "Erforderlicher Entwicklungsindexlevel (Strategisch)", "displayName_en-us": "Required Development Index Level (Strategic)", "displayName_es": "Nivel de índice de desarrollo necesario (estratégico)", "displayName_fr": "Niveau d'index de développement requis (stratégique)", "displayName_it": "Required Development Index Level (Strategic)", "displayName_ja": "必要な開発インデックスレベル(戦略)", "displayName_ko": "개발 지수 요구 레벨 (전략)", "displayName_ru": "Требуемый индекс развития (стратегический)", "displayName_zh": "发展指数需求(战略)", "displayNameID": 233616, "displayWhenZero": 0, "highIsGood": 1, "name": "devIndexSovereignty", "published": 1, "stackable": 1, "unitID": 140 }, "1616": { "attributeID": 1616, "dataType": 4, "defaultValue": 0.0, "description": "Obsolete attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID", "published": 0, "stackable": 1 }, "1619": { "attributeID": 1619, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Stasis Web von Drohnen", "displayName_en-us": "Drone Stasis Web Bonus", "displayName_es": "Bonificación de red ralentizadora de drones", "displayName_fr": "Bonus de stase de drone", "displayName_it": "Drone Stasis Web Bonus", "displayName_ja": "ドローンステイシスウェブボーナス", "displayName_ko": "드론 스테이시스 웹 보너스", "displayName_ru": "Влияние на эффективность стазис-индукторов дронов", "displayName_zh": "无人机停滞缠绕光束加成", "displayNameID": 233561, "displayWhenZero": 0, "highIsGood": 1, "name": "webSpeedFactorBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1623": { "attributeID": 1623, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonus3AF", "published": 0, "stackable": 1 }, "1624": { "attributeID": 1624, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonus3CF", "published": 0, "stackable": 1 }, "1625": { "attributeID": 1625, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonus3GF", "published": 0, "stackable": 1 }, "1626": { "attributeID": 1626, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonus3MF", "published": 0, "stackable": 1 }, "1631": { "attributeID": 1631, "dataType": 4, "defaultValue": 0.0, "description": "Transport capacity (bandwidth) in m3 per hour.", "displayName_de": "Logistische Kapazität", "displayName_en-us": "Logistical Capacity", "displayName_es": "Capacidad logística", "displayName_fr": "Capacité logistique", "displayName_it": "Logistical Capacity", "displayName_ja": "輸送容量", "displayName_ko": "보급 적재량", "displayName_ru": "Логистическая емкость", "displayName_zh": "运能", "displayNameID": 233564, "displayWhenZero": 0, "highIsGood": 1, "name": "logisticalCapacity", "published": 1, "stackable": 1, "unitID": 134 }, "1632": { "attributeID": 1632, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "This type can only be found/used/created on a planet matching this type ID.", "displayName_de": "Planetentypeinschränkung", "displayName_en-us": "Planet Type Restriction", "displayName_es": "Restricción de tipo de planeta", "displayName_fr": "Restriction de type de planète", "displayName_it": "Planet Type Restriction", "displayName_ja": "惑星タイプの制限", "displayName_ko": "행성 분류 제한", "displayName_ru": "Ограничение на тип планеты", "displayName_zh": "行星类型限制", "displayNameID": 233565, "displayWhenZero": 0, "highIsGood": 1, "name": "planetRestriction", "published": 1, "stackable": 1, "unitID": 116 }, "1633": { "attributeID": 1633, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Megawatts per kilometer", "displayName_de": "Energielast (pro km)", "displayName_en-us": "Power Load (per km)", "displayName_es": "Potencia de carga (por kilómetro)", "displayName_fr": "Facteur de charge (par km)", "displayName_it": "Power Load (per km)", "displayName_ja": "パワーロード(km あたり)", "displayName_ko": "전력 사용량(Km당)", "displayName_ru": "Загрузка реактора (на км)", "displayName_zh": "能量载荷(每千米)", "displayNameID": 233566, "displayWhenZero": 0, "highIsGood": 1, "name": "powerLoadPerKm", "published": 1, "stackable": 1, "unitID": 107 }, "1634": { "attributeID": 1634, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "CPU Usage per kilometer", "displayName_de": "CPU-Auslastung (pro km)", "displayName_en-us": "CPU Usage (per km)", "displayName_es": "Uso de la CPU (por kilómetro)", "displayName_fr": "Utilisation CPU (par km)", "displayName_it": "CPU Usage (per km)", "displayName_ja": "CPU 使用率(km あたり)", "displayName_ko": "CPU 사용량(Km당)", "displayName_ru": "Загрузка ЦПУ (на км)", "displayName_zh": "CPU使用量(每千米)", "displayNameID": 233567, "displayWhenZero": 0, "highIsGood": 1, "name": "cpuLoadPerKm", "published": 1, "stackable": 1, "unitID": 106 }, "1635": { "attributeID": 1635, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Used to calculate cpu load multiplier for PI links", "displayName_de": "CPU-Auslastungsstufenmodifikator", "displayName_en-us": "CPU Load Level Modifier", "displayName_es": "Modificador de nivel de carga de la CPU", "displayName_fr": "Modificateur de niveau de charge CPU", "displayName_it": "CPU Load Level Modifier", "displayName_ja": "CPU 負荷レベル修正乗数", "displayName_ko": "CPU 요구량 보정치", "displayName_ru": "Модификатор уровня загрузки ЦПУ", "displayName_zh": "CPU载荷等级调节因子", "displayNameID": 233568, "displayWhenZero": 0, "highIsGood": 1, "name": "cpuLoadLevelModifier", "published": 1, "stackable": 1 }, "1636": { "attributeID": 1636, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Power load multiplier for PI link levels", "displayName_de": "Energielaststufenmodifikator", "displayName_en-us": "Power Load Level Modifier", "displayName_es": "Modificador de nivel de la potencia de carga", "displayName_fr": "Modificateur de niveau de charge de puissance", "displayName_it": "Power Load Level Modifier", "displayName_ja": "パワーロードレベル修正乗数", "displayName_ko": "파워그리드 요구량 보정치", "displayName_ru": "Модификатор уровня загрузки реактора", "displayName_zh": "能量载荷等级调节因子", "displayNameID": 233569, "displayWhenZero": 0, "highIsGood": 1, "name": "powerLoadLevelModifier", "published": 1, "stackable": 1 }, "1638": { "attributeID": 1638, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Base importation tax (ISK per m3 of volume) for commodities imported to pin.", "displayName_de": "Einfuhrsteuer", "displayName_en-us": "Import Tax", "displayName_es": "Impuestos de importación", "displayName_fr": "Taxe d'importation", "displayName_it": "Import Tax", "displayName_ja": "輸入税", "displayName_ko": "수입 관세", "displayName_ru": "Налог на импорт", "displayName_zh": "进口税", "displayNameID": 233570, "displayWhenZero": 0, "highIsGood": 0, "name": "importTax", "published": 1, "stackable": 1, "unitID": 133 }, "1639": { "attributeID": 1639, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Base export tax (ISK per m3 of volume) on commodities exported from a planet via this pin.", "displayName_de": "Ausfuhrsteuer", "displayName_en-us": "Export Tax", "displayName_es": "Impuestos de exportación", "displayName_fr": "Taxe d'exportation", "displayName_it": "Export Tax", "displayName_ja": "輸出税", "displayName_ko": "수출 관세", "displayName_ru": "Налог на экспорт", "displayName_zh": "出口税", "displayNameID": 233571, "displayWhenZero": 0, "highIsGood": 0, "name": "exportTax", "published": 1, "stackable": 1, "unitID": 133 }, "1640": { "attributeID": 1640, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Cost multiplier per m3 volume of this commodity when importing to a planet", "displayWhenZero": 0, "highIsGood": 0, "name": "importTaxMultiplier", "published": 0, "stackable": 1, "unitID": 121 }, "1641": { "attributeID": 1641, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Export tax multiplier when exporting this commodity off a planet.", "displayWhenZero": 0, "highIsGood": 0, "name": "exportTaxMultiplier", "published": 0, "stackable": 1, "unitID": 121 }, "1642": { "attributeID": 1642, "categoryID": 7, "dataType": 4, "defaultValue": 100.0, "description": "Base amount (in units) of commodities extracted by an extractor pin.", "displayName_de": "Extraktionsmenge", "displayName_en-us": "Extraction Quantity", "displayName_es": "Cantidad de extracción", "displayName_fr": "Volume d'extraction", "displayName_it": "Extraction Quantity", "displayName_ja": "抽出量", "displayName_ko": "채굴 수량", "displayName_ru": "Количество экстракции", "displayName_zh": "采集量", "displayNameID": 233572, "displayWhenZero": 0, "highIsGood": 1, "name": "pinExtractionQuantity", "published": 1, "stackable": 1 }, "1643": { "attributeID": 1643, "categoryID": 7, "dataType": 4, "defaultValue": 300.0, "description": "Base cycle time (in seconds) of an extractor pin.", "displayName_de": "Zyklusdauer", "displayName_en-us": "Cycle Time", "displayName_es": "Tiempo de ciclo", "displayName_fr": "Temps de cycle", "displayName_it": "Cycle Time", "displayName_ja": "サイクル時間", "displayName_ko": "사이클 시간", "displayName_ru": "Время цикла", "displayName_zh": "运转周期", "displayNameID": 233573, "displayWhenZero": 0, "highIsGood": 1, "name": "pinCycleTime", "published": 1, "stackable": 1, "unitID": 3 }, "1644": { "attributeID": 1644, "categoryID": 7, "dataType": 5, "defaultValue": 10.0, "description": "This is the radius that the depletion at this pin effects", "displayWhenZero": 0, "highIsGood": 1, "name": "extractorDepletionRange", "published": 0, "stackable": 1, "unitID": 1 }, "1645": { "attributeID": 1645, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is the amount that is added to the depletion of a resource on a planet", "displayWhenZero": 0, "highIsGood": 1, "name": "extractorDepletionRate", "published": 0, "stackable": 1 }, "1646": { "attributeID": 1646, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of CC-only hold", "displayName_de": "Frachtraumkapazität der Kommandozentrale", "displayName_en-us": "Command Center Hold Capacity", "displayName_es": "Capacidad de la bodega del centro de mando", "displayName_fr": "Capacité de la soute du centre de commandement", "displayName_it": "Command Center Hold Capacity", "displayName_ja": "司令基地の収容容量", "displayName_ko": "통제센터 저장고 적재량", "displayName_ru": "Объём отсека для центра управления", "displayName_zh": "指挥中心储备能力", "displayNameID": 233575, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialCommandCenterHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Frachtraum der Kommandozentrale gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the command center hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega del centro de mando.", "tooltipDescription_fr": "Volume total pouvant être stocké dans le centre de commandement.", "tooltipDescription_it": "The total volume that can be stored in the command center hold", "tooltipDescription_ja": "司令基地ホールドに積載できる総量です", "tooltipDescription_ko": "통제센터 저장고에 보관할 수 있는 최대 용량입니다.", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для центра управления", "tooltipDescription_zh": "指挥中心舱能装载的总体积", "tooltipDescriptionID": 295320, "tooltipTitleID": 295319, "unitID": 9 }, "1647": { "attributeID": 1647, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "This attribute deactivates the booster after the character's age reaches a certain amount", "displayName_de": "Max. Pilotenalter", "displayName_en-us": "Maximum Pilot Age", "displayName_es": "Edad máx. del piloto", "displayName_fr": "Âge maximum du pilote", "displayName_it": "Maximum Pilot Age", "displayName_ja": "パイロット年齢上限", "displayName_ko": "사용 가능한 파일럿의 최대 연령", "displayName_ru": "Максимальный возраст пилота", "displayName_zh": "最大飞行员年龄", "displayNameID": 233576, "displayWhenZero": 0, "highIsGood": 1, "name": "boosterMaxCharAgeHours", "published": 1, "stackable": 1, "unitID": 129 }, "1648": { "attributeID": 1648, "categoryID": 12, "dataType": 4, "defaultValue": 0.0, "description": "This controls how L1 AI target switches\r\nWhen disabled AI_ChanceToNotTargetSwitch, AI_ShouldUseEffectMultiplier, and AI_ShouldUseSignatureRadius are disabled also.", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ShouldUseTargetSwitching", "published": 0, "stackable": 1 }, "1649": { "attributeID": 1649, "categoryID": 12, "dataType": 3, "defaultValue": 0.0, "description": "Should use secondary effect on other targets?", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ShouldUseSecondaryTarget", "published": 0, "stackable": 1 }, "1650": { "attributeID": 1650, "categoryID": 12, "dataType": 3, "defaultValue": 0.0, "description": "Should this type use signature radius", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ShouldUseSignatureRadius", "published": 0, "stackable": 1 }, "1651": { "attributeID": 1651, "categoryID": 12, "dataType": 5, "defaultValue": 0.0, "description": "A percentage chance to not change targets 0.0 - 1.0. 1.0 they will never change targets 0.0 they will always change targets", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ChanceToNotTargetSwitch", "published": 0, "stackable": 1, "unitID": 127 }, "1652": { "attributeID": 1652, "categoryID": 12, "dataType": 3, "defaultValue": 0.0, "description": "Should the entity watch for effects when choosing targets", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ShouldUseEffectMultiplier", "published": 0, "stackable": 1 }, "1653": { "attributeID": 1653, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of Planetary Commodities hold", "displayName_de": "Planetarische Güter-Lagerkapazität", "displayName_en-us": "Planetary Commodities Hold Capacity", "displayName_es": "Capacidad de bodega de mercancías planetarias", "displayName_fr": "Capacité de la soute de marchandises planétaires", "displayName_it": "Planetary Commodities Hold Capacity", "displayName_ja": "惑星商品の収容容量", "displayName_ko": "행성 생산품 창고 적재량", "displayName_ru": "Объём отсека для продукции наземных баз", "displayName_zh": "行星资源物品储备能力", "displayNameID": 233577, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialPlanetaryCommoditiesHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Frachtraum für planetare Güter gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the planetary commodities hold", "tooltipDescription_es": "El volumen total que se puede almacenar en la bodega de mercancías planetarias.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute de marchandises planétaires.", "tooltipDescription_it": "The total volume that can be stored in the planetary commodities hold", "tooltipDescription_ja": "惑星商品ホールドに積載できる総量です", "tooltipDescription_ko": "행성 생산품 창고에 저장할 수 있는 최대 용량입니다.", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для продукции наземных баз", "tooltipDescription_zh": "行星资源物品舱能装载的总体积", "tooltipDescriptionID": 295322, "tooltipTitleID": 295321, "unitID": 9 }, "1654": { "attributeID": 1654, "categoryID": 12, "dataType": 3, "defaultValue": 0.0, "description": "Can not be attacked by doomsday devices", "displayName_de": "Immun gegen Angriffe von Superwaffen", "displayName_en-us": "Immune to super weapon attacks", "displayName_es": "Inmune a los ataques de superarmas", "displayName_fr": "Immunité contre les attaques de super armes", "displayName_it": "Immune to super weapon attacks", "displayName_ja": "超兵器の攻撃の影響を受けない", "displayName_ko": "수퍼무기 공격에 면역", "displayName_ru": "Неуязвим к орудиям Судного дня", "displayName_zh": "不受超级武器伤害", "displayNameID": 233580, "displayWhenZero": 0, "highIsGood": 1, "name": "AI_ImmuneToSuperWeapon", "published": 1, "stackable": 1 }, "1655": { "attributeID": 1655, "categoryID": 12, "dataType": 5, "defaultValue": -1.0, "description": "The Preferred signature radius for attack. If it is 0 or below it uses the ships signature radius instead.", "displayName_de": "Bevorzugter Signaturradius", "displayName_en-us": "Preferred Signature Radius", "displayName_es": "Radio de la señal preferido", "displayName_fr": "Rayon de signature préféré", "displayName_it": "Preferred Signature Radius", "displayName_ja": "推奨シグネチャ半径", "displayName_ko": "선호 시그니처 반경", "displayName_ru": "Предпочтительный радиус сигнатуры", "displayName_zh": "首选信号半径", "displayNameID": 233581, "displayWhenZero": 0, "highIsGood": 1, "name": "AI_PreferredSignatureRadius", "published": 1, "stackable": 1, "unitID": 1 }, "1656": { "attributeID": 1656, "categoryID": 12, "dataType": 5, "defaultValue": 0.699999988079071, "description": "Tanking modifier applied to drones if their owner is tanking. 1.0 is no modifier", "displayName_de": "Modifikator für das Tanken bei Drohnen", "displayName_en-us": "Drone Tanking Modifier", "displayName_es": "Modif. de tanquerización de drones", "displayName_fr": "Modificateur de protection de drone", "displayName_it": "Drone Tanking Modifier", "displayName_ja": "ドローンタンキング修正乗数", "displayName_ko": "드론 방어 보정치", "displayName_ru": "Модификатор танковки дронов", "displayName_zh": "无人机抗性调节值", "displayNameID": 233582, "displayWhenZero": 0, "highIsGood": 1, "name": "AI_TankingModifierDrone", "published": 0, "stackable": 1 }, "1657": { "attributeID": 1657, "categoryID": 12, "dataType": 5, "defaultValue": 0.699999988079071, "description": "Tanking modifier applied to ships. 1.0 is no modifier.", "displayName_de": "Modifikator für das Tanken", "displayName_en-us": "Tanking Modifier", "displayName_es": "Modificador de tanquerización", "displayName_fr": "Modificateur de protection", "displayName_it": "Tanking Modifier", "displayName_ja": "タンキング修正乗数", "displayName_ko": "방어 보정치", "displayName_ru": "Модификатор танковки", "displayName_zh": "抗性调节值", "displayNameID": 233583, "displayWhenZero": 0, "highIsGood": 1, "name": "AI_TankingModifier", "published": 1, "stackable": 1 }, "1658": { "attributeID": 1658, "categoryID": 23, "dataType": 2, "defaultValue": 300000.0, "description": "The current duration for the remote ECM ( this is recalculated each time it is activated )", "displayName_de": "Dauer der NPC-Remote-ECM", "displayName_en-us": "NPC Remote ECM Duration", "displayName_es": "Duración de ECM remotas de PNJ", "displayName_fr": "Durée de CME à distance PNJ", "displayName_it": "NPC Remote ECM Duration", "displayName_ja": "NPC リモート ECM 時間", "displayName_ko": "NPC 원격 ECM 지속시간", "displayName_ru": "Время цикла систем РЭБ NPC", "displayName_zh": "NPC远程ECM持续时间", "displayNameID": 233585, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMDuration", "published": 1, "stackable": 1 }, "1659": { "attributeID": 1659, "categoryID": 23, "dataType": 5, "defaultValue": 10000.0, "description": "Lower cap, so even if more players are added to the bubble remote ECM duration will not go below this value", "displayName_de": "Minimaldauer der NPC-Remote-ECM", "displayName_en-us": "NPC Remote ECM Minimum Duration", "displayName_es": "Duración mín. de ECM remotas de PNJ", "displayName_fr": "Durée minimum de CME à distance PNJ", "displayName_it": "NPC Remote ECM Minimum Duration", "displayName_ja": "NPC リモート ECM 最短時間", "displayName_ko": "NPC 원격 ECM 최소지속시간", "displayName_ru": "Минимальное время цикла систем РЭБ NPC", "displayName_zh": "NPC远程ECM最短持续时间", "displayNameID": 233586, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMMinDuration", "published": 1, "stackable": 1 }, "1660": { "attributeID": 1660, "categoryID": 23, "dataType": 5, "defaultValue": 0.8999999761581421, "description": "The scaling factor used for the NPC remote ECM", "displayName_de": "Skalierungsfaktor der Dauer der NPC-Remote-ECM", "displayName_en-us": "NPC Remote ECM Duration Scaling Factor", "displayName_es": "Factor de ajuste de duración de ECM remotas de PNJ", "displayName_fr": "Facteur d'échelle de durée de CME à distance PNJ", "displayName_it": "NPC Remote ECM Duration Scaling Factor", "displayName_ja": "NPC リモート ECM 時間乗数", "displayName_ko": "NPC 원격 ECM 지속시간 규모 요인", "displayName_ru": "Коэффициент времени цикла систем РЭБ NPC", "displayName_zh": "NPC远程ECM持续时间比例因数", "displayNameID": 233587, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMDurationScale", "published": 1, "stackable": 1 }, "1661": { "attributeID": 1661, "categoryID": 23, "dataType": 5, "defaultValue": 300000.0, "description": "The base time between ECM bursts", "displayName_de": "Grunddauer der NPC-Remote-ECM", "displayName_en-us": "NPC remote ECM base duration", "displayName_es": "Duración base de ECM remotas de PNJ", "displayName_fr": "Durée de base de CME à distance PNJ", "displayName_it": "NPC remote ECM base duration", "displayName_ja": "NPC リモート ECM ベース時間", "displayName_ko": "NPC 원격 ECM 기지 지속시간", "displayName_ru": "Базовое время цикла систем РЭБ NPC", "displayName_zh": "NPC远程ECM基础持续时间", "displayNameID": 233588, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMBaseDuration", "published": 1, "stackable": 1 }, "1662": { "attributeID": 1662, "categoryID": 23, "dataType": 4, "defaultValue": 8.0, "description": "The number of players in each step of scaling of remote ECM", "displayName_de": "Zusätzliche Spielerskalierung der NPC-Remote-ECM", "displayName_en-us": "NPC remote ECM Extra Player Scale", "displayName_es": "Ajuste de jugador adicional de ECM remotas de PNJ", "displayName_fr": "Échelle de joueur supplémentaire CME à distance PNJ", "displayName_it": "NPC remote ECM Extra Player Scale", "displayName_ja": "NPC リモート ECM エクストラプレイヤースケール", "displayName_ko": "NPC 원격 ECM 추가 플레이어 규모", "displayName_ru": "Коэффициент систем РЭБ NPC за кол-во игроков", "displayName_zh": "NPC远程ECM额外玩家比例", "displayNameID": 233589, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMExtraPlayerScale", "published": 1, "stackable": 1 }, "1663": { "attributeID": 1663, "categoryID": 23, "dataType": 4, "defaultValue": 40.0, "description": "The base number of players, where the scaling of the remote ECM should start", "displayName_de": "Angestrebte Spieleranzahl der NPC-Remote-ECM", "displayName_en-us": "NPC remote ECM intended number of players", "displayName_es": "N.º de jugadores previsto de ECM remotas de PNJ", "displayName_fr": "Nombre de joueurs prévu CME à distance PNJ", "displayName_it": "NPC remote ECM intended number of players", "displayName_ja": "NPC リモート ECM 想定プレイヤー数", "displayName_ko": "NPC 원격 ECM 플레이어 목표인원", "displayName_ru": "Установленное количество пилотов для систем РЭБ NPC", "displayName_zh": "NPC远程ECM应有玩家数", "displayNameID": 233590, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMIntendedNumPlayers", "published": 1, "stackable": 1 }, "1664": { "attributeID": 1664, "categoryID": 23, "dataType": 5, "defaultValue": 1.0, "description": "Chance that the NPC remote ECM fires", "displayName_de": "NPC-Remote-ECM-Wahrscheinlichkeit", "displayName_en-us": "NPC remote ECM chance", "displayName_es": "Probabilidad de ECM remotas de PNJ", "displayName_fr": "Chance de CME à distance PNJ", "displayName_it": "NPC remote ECM chance", "displayName_ja": "NPC リモート ECM チャンス", "displayName_ko": "NPC 원격 ECM 확률", "displayName_ru": "Шанс действия систем РЭБ NPC", "displayName_zh": "NPC远程ECM机率", "displayNameID": 233591, "displayWhenZero": 0, "highIsGood": 1, "name": "entityRemoteECMChanceOfActivation", "published": 1, "stackable": 1 }, "1669": { "attributeID": 1669, "dataType": 5, "defaultValue": 0.0, "description": "Bonus 1 for ORE Industrials", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreIndustrial1", "published": 0, "stackable": 1 }, "1670": { "attributeID": 1670, "dataType": 5, "defaultValue": 0.0, "description": "Bonus 2 for ORE Industrials", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreIndustrial2", "published": 0, "stackable": 1 }, "1671": { "attributeID": 1671, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "Bonus applied to all NPCs in the same group. Used by the NPCGroupShieldAssist effect. Negative values is a bonus so e.g. -20 is a 20% bonus", "displayName_de": "Schildwiderstand für NPC-Gruppen", "displayName_en-us": "NPC group shield resistance bonus", "displayName_es": "Bonificación de resistencia de escudo del grupo PNJ", "displayName_fr": "Bonus de résistance de bouclier de groupe PNJ", "displayName_it": "NPC group shield resistance bonus", "displayName_ja": "NPC グループシールドレジスタンスボーナス", "displayName_ko": "NPC 그룹 실드 저항 보너스", "displayName_ru": "Влияние на сопротивляемость щитов группы NPC", "displayName_zh": "NPC群体护盾抗性加成", "displayNameID": 233594, "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupShieldResistanceBonus", "published": 1, "stackable": 1, "unitID": 109 }, "1672": { "attributeID": 1672, "categoryID": 20, "dataType": 5, "defaultValue": 10000.0, "description": "Duration for the NPCGroupShieldAssist effect", "displayName_de": "Schildwiderstandsdauer für NPC-Gruppen", "displayName_en-us": "NPC group shield resistance duration", "displayName_es": "Duración de la resistencia de escudo del grupo PNJ", "displayName_fr": "Durée de résistance de bouclier de groupe PNJ", "displayName_it": "NPC group shield resistance duration", "displayName_ja": "NPC グループシールドレジスタンス時間", "displayName_ko": "NPC 그룹 실드 저항 지속시간", "displayName_ru": "Длительность сопротивляемости щитов группы NPC", "displayName_zh": "NPC群体护盾抗性持续时间", "displayNameID": 233592, "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupShieldResistanceDuration", "published": 1, "stackable": 1 }, "1673": { "attributeID": 1673, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "Activation chance of the NPCGroupShieldAssist effect", "displayName_de": "Aktivierungschance des Schildwiderstandes für NPC-Gruppen", "displayName_en-us": "NPC group shield resistance activation chance", "displayName_es": "Probabilidad de activación de la resistencia de escudo del grupo PNJ", "displayName_fr": "Chance d'activation de résistance de bouclier de groupe PNJ", "displayName_it": "NPC group shield resistance activation chance", "displayName_ja": "NPC グループシールドレジスタンス起動チャンス", "displayName_ko": "NPC 그룹 실드 저항 활성화 확률", "displayName_ru": "Вероятность активации сопротивляемости щитов группы NPC", "displayName_zh": "NPC群体护盾防御机率", "displayNameID": 233593, "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupShieldResistanceActivationChance", "published": 1, "stackable": 1 }, "1674": { "attributeID": 1674, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "amount of speed increase by NPCGroupSpeedAssist effect. Negative values is a bonus so e.g. -20 is a 20% bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupSpeedBonus", "published": 1, "stackable": 1, "unitID": 109 }, "1675": { "attributeID": 1675, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "Amount of propulsion jamming assist. Used by NPCGroupPropJamAssist. Negative values is a bonus so e.g. -20 is a 20% bonus", "displayName_de": "Bonus bei Störmodulen für Antriebssysteme für NPC-Gruppen", "displayName_en-us": "NPC group propulsion jamming bonus", "displayName_es": "Bonif. de perturbación de propulsión de grupo PNJ", "displayName_fr": "Bonus de brouillage de propulsion de groupe PNJ", "displayName_it": "NPC group propulsion jamming bonus", "displayName_ja": "NPC グループ推進力ジャミングボーナス", "displayName_ko": "NPC 그룹 추진기 재밍 보너스", "displayName_ru": "Влияние на шанс ограничения подвижности группой NPC", "displayName_zh": "NPC群体推进干扰加成", "displayNameID": 233595, "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupPropJamBonus", "published": 1, "stackable": 1, "unitID": 109 }, "1676": { "attributeID": 1676, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "Amount of armor resistance bonus. Used by NPCGroupArmorAssist. Negative values is a bonus so e.g. -20 is a 20% bonus", "displayName_de": "Panzerung-Resistenzbonus für NPC-Gruppen", "displayName_en-us": "NPC group armor resistance bonus", "displayName_es": "Bonificación de resistencia de blindaje del grupo PNJ", "displayName_fr": "Bonus de résistance de blindage de groupe PNJ", "displayName_it": "NPC group armor resistance bonus", "displayName_ja": "NPC グループアーマーレジスタンスボーナス", "displayName_ko": "NPC 그룹 장갑 저항 보너스", "displayName_ru": "Влияние на сопротивляемость брони группы NPC", "displayName_zh": "NPC群体装甲抗性加成", "displayNameID": 233596, "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupArmorResistanceBonus", "published": 1, "stackable": 1, "unitID": 109 }, "1677": { "attributeID": 1677, "categoryID": 20, "dataType": 5, "defaultValue": 10000.0, "description": "Duration of NPCGroupArmorAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupSpeedDuration", "published": 1, "stackable": 1 }, "1678": { "attributeID": 1678, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "Activation chance for NPCGroupSpeedAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupSpeedActivationChance", "published": 1, "stackable": 1 }, "1679": { "attributeID": 1679, "categoryID": 20, "dataType": 5, "defaultValue": 10000.0, "description": "Duration of NPCGroupPropJamAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupPropJamDuration", "published": 1, "stackable": 1 }, "1680": { "attributeID": 1680, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "Activation chance of NPCGroupPropJamAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupPropJamActivationChance", "published": 1, "stackable": 1 }, "1681": { "attributeID": 1681, "categoryID": 20, "dataType": 5, "defaultValue": 10000.0, "description": "Duration of NPCGroupArmorAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupArmorResistanceDuration", "published": 1, "stackable": 1 }, "1682": { "attributeID": 1682, "categoryID": 20, "dataType": 5, "defaultValue": 1.0, "description": "Activation chance for NPCGroupArmorAssist effect.", "displayWhenZero": 0, "highIsGood": 1, "name": "entityGroupArmorResistanceActivationChance", "published": 1, "stackable": 1 }, "1683": { "attributeID": 1683, "dataType": 5, "defaultValue": 0.012000000104308128, "description": "", "displayName_de": "Abklingfaktor", "displayName_en-us": "decay factor", "displayName_es": "factor de deterioro", "displayName_fr": "facteur de décomposition", "displayName_it": "decay factor", "displayName_ja": "劣化乗数", "displayName_ko": "폐기 요인", "displayName_ru": "фактор ослабления", "displayName_zh": "老化因子", "displayNameID": 233602, "displayWhenZero": 0, "highIsGood": 1, "name": "ecuDecayFactor", "published": 1, "stackable": 1 }, "1684": { "attributeID": 1684, "dataType": 4, "defaultValue": 9.199999809265137, "description": "", "displayName_de": "Maximales Volumen", "displayName_en-us": "Maximum Volume", "displayName_es": "Volumen máximo", "displayName_fr": "Volume maximal", "displayName_it": "Maximum Volume", "displayName_ja": "最大容量", "displayName_ko": "최대 볼륨", "displayName_ru": "Максимальный объём", "displayName_zh": "最大体积", "displayNameID": 233600, "displayWhenZero": 0, "highIsGood": 1, "name": "ecuMaxVolume", "published": 1, "stackable": 1 }, "1685": { "attributeID": 1685, "dataType": 0, "defaultValue": 0.5, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "ecuOverlapFactor", "published": 0, "stackable": 1 }, "1686": { "attributeID": 1686, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage reduction for system effects", "displayName_de": "Systemeffekt-Schadensreduktion", "displayName_en-us": "System effect damage reduction", "displayName_es": "Reducción de daño por los efectos del sistema", "displayName_fr": "Réduction de dégâts d'effet système", "displayName_it": "System effect damage reduction", "displayName_ja": "システムエフェクトダメージ軽減", "displayName_ko": "시스템 효과 피해 감소", "displayName_ru": "Снижение урона общесистемным эффектом", "displayName_zh": "星系影响伤害减少", "displayNameID": 233599, "displayWhenZero": 0, "highIsGood": 1, "name": "systemEffectDamageReduction", "published": 1, "stackable": 1, "unitID": 124 }, "1687": { "attributeID": 1687, "dataType": 5, "defaultValue": 0.800000011920929, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "ecuNoiseFactor", "published": 0, "stackable": 1 }, "1688": { "attributeID": 1688, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Second Stock Bonus on Pirate Faction Ships.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole8", "published": 0, "stackable": 1 }, "1689": { "attributeID": 1689, "dataType": 5, "defaultValue": 0.30000001192092896, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "ecuAreaOfInfluence", "published": 0, "stackable": 1 }, "1690": { "attributeID": 1690, "dataType": 5, "defaultValue": 110.0, "description": "CPU cost of extractor head", "displayName_de": "Extraktorkopf-CPU", "displayName_en-us": "Extractor head CPU", "displayName_es": "CPU del cabezal de extracción", "displayName_fr": "CPU de tête d'extracteur", "displayName_it": "Extractor head CPU", "displayName_ja": "抽出ヘッド CPU", "displayName_ko": "자원추출기 처리부 CPU", "displayName_ru": "Нагрузка экстракторов на ЦПУ", "displayName_zh": "采集点CPU", "displayNameID": 233601, "displayWhenZero": 0, "highIsGood": 1, "name": "ecuExtractorHeadCPU", "published": 1, "stackable": 1, "unitID": 106 }, "1691": { "attributeID": 1691, "dataType": 5, "defaultValue": 500.0, "description": "Power cost for a extractor head", "displayName_de": "Extraktorkopf-Leistung", "displayName_en-us": "Extractor head Power", "displayName_es": "Potencia del cabezal de extracción", "displayName_fr": "Puissance de tête d'extracteur", "displayName_it": "Extractor head Power", "displayName_ja": "抽出ヘッドパワー", "displayName_ko": "자원추출기 처리부 전력", "displayName_ru": "Нагрузка экстракторов на питание", "displayName_zh": "采集点能量", "displayNameID": 233603, "displayWhenZero": 0, "highIsGood": 1, "name": "ecuExtractorHeadPower", "published": 1, "stackable": 1, "unitID": 107 }, "1692": { "attributeID": 1692, "dataType": 4, "defaultValue": 0.0, "description": "Authoring has been moved to FSD.\r\nmeta group of type\r\n\r\n3: Story-line (Cosmos)\r\n4: Faction\r\n5: Officer (rare asteroid NPCs)\r\n6: Deadspace\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "metaGroupID", "published": 0, "stackable": 1 }, "1695": { "attributeID": 1695, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel01", "published": 0, "stackable": 1 }, "1696": { "attributeID": 1696, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel02", "published": 0, "stackable": 1 }, "1697": { "attributeID": 1697, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel03", "published": 0, "stackable": 1 }, "1698": { "attributeID": 1698, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel04", "published": 0, "stackable": 1 }, "1699": { "attributeID": 1699, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel05", "published": 0, "stackable": 1 }, "1700": { "attributeID": 1700, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel06", "published": 0, "stackable": 1 }, "1701": { "attributeID": 1701, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel07", "published": 0, "stackable": 1 }, "1702": { "attributeID": 1702, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel08", "published": 0, "stackable": 1 }, "1703": { "attributeID": 1703, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel09", "published": 0, "stackable": 1 }, "1704": { "attributeID": 1704, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Angel space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDAngel10", "published": 0, "stackable": 1 }, "1705": { "attributeID": 1705, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood01", "published": 0, "stackable": 1 }, "1706": { "attributeID": 1706, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood02", "published": 0, "stackable": 1 }, "1707": { "attributeID": 1707, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood03", "published": 0, "stackable": 1 }, "1708": { "attributeID": 1708, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood04", "published": 0, "stackable": 1 }, "1709": { "attributeID": 1709, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood05", "published": 0, "stackable": 1 }, "1710": { "attributeID": 1710, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood06", "published": 0, "stackable": 1 }, "1711": { "attributeID": 1711, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood07", "published": 0, "stackable": 1 }, "1712": { "attributeID": 1712, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood08", "published": 0, "stackable": 1 }, "1713": { "attributeID": 1713, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood09", "published": 0, "stackable": 1 }, "1714": { "attributeID": 1714, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Blood Raider space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDBlood10", "published": 0, "stackable": 1 }, "1715": { "attributeID": 1715, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista01", "published": 0, "stackable": 1 }, "1716": { "attributeID": 1716, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista02", "published": 0, "stackable": 1 }, "1717": { "attributeID": 1717, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista03", "published": 0, "stackable": 1 }, "1718": { "attributeID": 1718, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista04", "published": 0, "stackable": 1 }, "1719": { "attributeID": 1719, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista05", "published": 0, "stackable": 1 }, "1720": { "attributeID": 1720, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista06", "published": 0, "stackable": 1 }, "1721": { "attributeID": 1721, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista07", "published": 0, "stackable": 1 }, "1722": { "attributeID": 1722, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista08", "published": 0, "stackable": 1 }, "1723": { "attributeID": 1723, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista09", "published": 0, "stackable": 1 }, "1724": { "attributeID": 1724, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Guristas space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDGurista10", "published": 0, "stackable": 1 }, "1725": { "attributeID": 1725, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone01", "published": 0, "stackable": 1 }, "1726": { "attributeID": 1726, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone02", "published": 0, "stackable": 1 }, "1727": { "attributeID": 1727, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone03", "published": 0, "stackable": 1 }, "1728": { "attributeID": 1728, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone04", "published": 0, "stackable": 1 }, "1729": { "attributeID": 1729, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone05", "published": 0, "stackable": 1 }, "1730": { "attributeID": 1730, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone06", "published": 0, "stackable": 1 }, "1731": { "attributeID": 1731, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone07", "published": 0, "stackable": 1 }, "1732": { "attributeID": 1732, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone08", "published": 0, "stackable": 1 }, "1733": { "attributeID": 1733, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone09", "published": 0, "stackable": 1 }, "1734": { "attributeID": 1734, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Rogue Drone space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDRogueDrone10", "published": 0, "stackable": 1 }, "1735": { "attributeID": 1735, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha01", "published": 0, "stackable": 1 }, "1736": { "attributeID": 1736, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha02", "published": 0, "stackable": 1 }, "1737": { "attributeID": 1737, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha03", "published": 0, "stackable": 1 }, "1738": { "attributeID": 1738, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha04", "published": 0, "stackable": 1 }, "1739": { "attributeID": 1739, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha05", "published": 0, "stackable": 1 }, "1740": { "attributeID": 1740, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha06", "published": 0, "stackable": 1 }, "1741": { "attributeID": 1741, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha07", "published": 0, "stackable": 1 }, "1742": { "attributeID": 1742, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha08", "published": 0, "stackable": 1 }, "1743": { "attributeID": 1743, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha09", "published": 0, "stackable": 1 }, "1744": { "attributeID": 1744, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Sansha space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSansha10", "published": 0, "stackable": 1 }, "1745": { "attributeID": 1745, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis01", "published": 0, "stackable": 1 }, "1746": { "attributeID": 1746, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis02", "published": 0, "stackable": 1 }, "1747": { "attributeID": 1747, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis03", "published": 0, "stackable": 1 }, "1748": { "attributeID": 1748, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis04", "published": 0, "stackable": 1 }, "1749": { "attributeID": 1749, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis05", "published": 0, "stackable": 1 }, "1750": { "attributeID": 1750, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis06", "published": 0, "stackable": 1 }, "1751": { "attributeID": 1751, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis07", "published": 0, "stackable": 1 }, "1752": { "attributeID": 1752, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis08", "published": 0, "stackable": 1 }, "1753": { "attributeID": 1753, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis09", "published": 0, "stackable": 1 }, "1754": { "attributeID": 1754, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for sov upgrades in Serpentis space", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionIDSerpentis10", "published": 0, "stackable": 1 }, "1755": { "attributeID": 1755, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID01", "published": 0, "stackable": 1 }, "1756": { "attributeID": 1756, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID02", "published": 0, "stackable": 1 }, "1757": { "attributeID": 1757, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID03", "published": 0, "stackable": 1 }, "1758": { "attributeID": 1758, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID04", "published": 0, "stackable": 1 }, "1759": { "attributeID": 1759, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID05", "published": 0, "stackable": 1 }, "1760": { "attributeID": 1760, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID06", "published": 0, "stackable": 1 }, "1761": { "attributeID": 1761, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID07", "published": 0, "stackable": 1 }, "1762": { "attributeID": 1762, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID08", "published": 0, "stackable": 1 }, "1763": { "attributeID": 1763, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID09", "published": 0, "stackable": 1 }, "1764": { "attributeID": 1764, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Distribution ID for global sov upgrades", "displayWhenZero": 0, "highIsGood": 1, "name": "distributionID10", "published": 0, "stackable": 1 }, "1766": { "attributeID": 1766, "categoryID": 31, "dataType": 12, "defaultValue": 0.0, "description": "This attribute is used on entities to link them to a player ship group. This is then used to determine which overview icon they should get, among other things", "displayWhenZero": 0, "highIsGood": 1, "name": "entityOverviewShipGroupId", "published": 0, "stackable": 1, "unitID": 115 }, "1768": { "attributeID": 1768, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The value of this attribute is a graphicsID which controls the color scheme of this type. It is used to apply said color scheme to items of other types whose gfx representation is tied in with the attribute holder. Example: Turrets on ships.", "displayWhenZero": 0, "highIsGood": 0, "name": "typeColorScheme", "published": 0, "stackable": 0 }, "1770": { "attributeID": 1770, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of material bay", "displayName_de": "Kapazität des Spezialmaterialien-Hangars", "displayName_en-us": "Special material bay capacity", "displayName_es": "Capacidad especial de la plataforma de materiales", "displayName_fr": "Capacité de la baie à matériel spécial", "displayName_it": "Special material bay capacity", "displayName_ja": "特殊資源ベイの容量", "displayName_ko": "특수 자원 저장소 적재량", "displayName_ru": "Объём отсека для особых материалов", "displayName_zh": "特殊材料仓容量", "displayNameID": 233641, "displayWhenZero": 0, "highIsGood": 1, "name": "specialMaterialBayCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "1771": { "attributeID": 1771, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Type of object which this object transforms into.", "displayWhenZero": 0, "highIsGood": 1, "name": "constructionType", "published": 0, "stackable": 1 }, "1772": { "attributeID": 1772, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to chance of opening a container (for skills).", "displayName_de": "Zugriffsschwierigkeitsbonus", "displayName_en-us": "Access Difficulty Bonus", "displayName_es": "Bonificación de dificultad de acceso", "displayName_fr": "Bonus de difficulté d'accès", "displayName_it": "Access Difficulty Bonus", "displayName_ja": "アクセス難度ボーナス", "displayName_ko": "잠금 해제 보너스", "displayName_ru": "Влияние на сложность доступа", "displayName_zh": "获取成功率", "displayNameID": 233642, "displayWhenZero": 0, "highIsGood": 1, "name": "accessDifficultyBonusAbsolutePercent", "published": 1, "stackable": 1, "unitID": 127 }, "1773": { "attributeID": 1773, "categoryID": 7, "dataType": 0, "defaultValue": 2.0, "description": "Used to describe what sex a given item is meant for.\r\n\r\n1 = Male,\r\n2 = Unisex,\r\n3 = Female", "displayName_de": "Geschlecht", "displayName_en-us": "Gender", "displayName_es": "Sexo", "displayName_fr": "Sexe", "displayName_it": "Gender", "displayName_ja": "性別", "displayName_ko": "성별", "displayName_ru": "Пол", "displayName_zh": "性别", "displayNameID": 233644, "displayWhenZero": 0, "highIsGood": 1, "name": "gender", "published": 1, "stackable": 1, "unitID": 142 }, "1775": { "attributeID": 1775, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verbrauchsquantitäts-Bonus", "displayName_en-us": "Consumption Quantity Bonus", "displayName_es": "Bonificación de cantidad de consumo", "displayName_fr": "Bonus de quantité consommée", "displayName_it": "Consumption Quantity Bonus", "displayName_ja": "消費量ボーナス", "displayName_ko": "소모량 보너스", "displayName_ru": "Уменьшение количества расходуемого топлива", "displayName_zh": "消耗量加成", "displayNameID": 233646, "displayWhenZero": 0, "highIsGood": 1, "name": "consumptionQuantityBonusPercent", "published": 1, "stackable": 1, "unitID": 105 }, "1778": { "attributeID": 1778, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is a fake attribute for show info purposes.", "displayName_de": "Produktionskostenbonus", "displayName_en-us": "Manufacture Cost Bonus", "displayName_es": "Bonificación de coste de fabricación", "displayName_fr": "Bonus de coût de production", "displayName_it": "Manufacture Cost Bonus", "displayName_ja": "製造コストボーナス", "displayName_ko": "생산 비용 보너스", "displayName_ru": "Уменьшение расходов на производство", "displayName_zh": "制造花费加成", "displayNameID": 233647, "displayWhenZero": 0, "highIsGood": 1, "name": "manufactureCostBonusShowInfo", "published": 1, "stackable": 1, "unitID": 105 }, "1780": { "attributeID": 1780, "dataType": 5, "defaultValue": 0.10000000149011612, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcCustomsOfficeTaxRate", "published": 0, "stackable": 1 }, "1781": { "attributeID": 1781, "dataType": 5, "defaultValue": 0.10000000149011612, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "defaultCustomsOfficeTaxRate", "published": 0, "stackable": 1 }, "1782": { "attributeID": 1782, "categoryID": 10, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Genehmigte Drohnengruppe", "displayName_en-us": "Allowed Drone Group", "displayName_es": "Grupo de drones permitido", "displayName_fr": "Groupe de drones autorisé", "displayName_it": "Allowed Drone Group", "displayName_ja": "ドローングループを許可", "displayName_ko": "드론 그룹 허용", "displayName_ru": "Разрешенная группа дронов", "displayName_zh": "允许的无人机组别", "displayNameID": 263173, "displayWhenZero": 0, "highIsGood": 1, "name": "allowedDroneGroup1", "published": 0, "stackable": 1, "unitID": 115 }, "1783": { "attributeID": 1783, "categoryID": 10, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Genehmigte Drohnengruppe", "displayName_en-us": "Allowed Drone Group", "displayName_es": "Grupo de drones permitido", "displayName_fr": "Groupe de drones autorisé", "displayName_it": "Allowed Drone Group", "displayName_ja": "ドローングループを許可", "displayName_ko": "드론 그룹 허용", "displayName_ru": "Разрешенная группа дронов", "displayName_zh": "允许的无人机组别", "displayNameID": 263174, "displayWhenZero": 0, "highIsGood": 1, "name": "allowedDroneGroup2", "published": 0, "stackable": 1, "unitID": 115 }, "1785": { "attributeID": 1785, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Capital Sized Vessel", "displayName_en-us": "Capital Sized Vessel", "displayName_es": "Nave de tamaño capital", "displayName_fr": "Vaisseau de taille capitale", "displayName_it": "Capital Sized Vessel", "displayName_ja": "母艦級艦船", "displayName_ko": "캐피탈 크기 함선", "displayName_ru": "Корабль КБТ-класса", "displayName_zh": "旗舰级舰船", "displayNameID": 263205, "displayWhenZero": 0, "highIsGood": 1, "name": "isCapitalSize", "published": 0, "stackable": 1, "unitID": 137 }, "1786": { "attributeID": 1786, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used by Battlecruisers for large turret powergrid reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "bcLargeTurretPower", "published": 0, "stackable": 1 }, "1787": { "attributeID": 1787, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used by Battlecruisers for large turret CPU reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "bcLargeTurretCPU", "published": 0, "stackable": 1 }, "1788": { "attributeID": 1788, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used by Battlecruisers for large turret capacitor reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "bcLargeTurretCap", "published": 0, "stackable": 1 }, "1790": { "attributeID": 1790, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used by Battlecruisers for Siege Missile CPU reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "bcSiegeMissileCPU", "published": 0, "stackable": 1 }, "1791": { "attributeID": 1791, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Used by Battlecruisers for siege missile powergrid reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "bcSiegeMissilePower", "published": 0, "stackable": 1 }, "1792": { "attributeID": 1792, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusBC3", "published": 0, "stackable": 1 }, "1793": { "attributeID": 1793, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusBC4", "published": 0, "stackable": 1 }, "1794": { "attributeID": 1794, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to booster effect.", "displayName_de": "Effektbonus", "displayName_en-us": "Effect Bonus", "displayName_es": "Bonificación de efecto", "displayName_fr": "Bonus d'effet", "displayName_it": "Effect Bonus", "displayName_ja": "効果ボーナス", "displayName_ko": "효과 보너스", "displayName_ru": "Бонус эффекта", "displayName_zh": "效果加成", "displayNameID": 263696, "displayWhenZero": 0, "highIsGood": 1, "name": "skillBonusBooster", "published": 1, "stackable": 1, "unitID": 105 }, "1795": { "attributeID": 1795, "categoryID": 7, "dataType": 5, "defaultValue": 10000.0, "description": "reload time (ms)", "displayName_de": "Aufladezeit", "displayName_en-us": "Reload Time", "displayName_es": "Tiempo de recarga", "displayName_fr": "Temps de recharge", "displayName_it": "Reload Time", "displayName_ja": "リロード時間", "displayName_ko": "재장전 시간", "displayName_ru": "Время перезарядки", "displayName_zh": "重新装填时间", "displayNameID": 263842, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "reloadTime", "published": 1, "stackable": 1, "unitID": 101 }, "1797": { "attributeID": 1797, "dataType": 4, "defaultValue": 0.0, "description": "This item of clothing covers multiple areas of the body, so the category of clothes specified by this attribute is no longer mandatory", "displayName_de": "Benötigt keinen Kleidungstyp", "displayName_en-us": "Does Not Require Clothing Type", "displayName_es": "No requiere tipo de ropa", "displayName_fr": "Ne nécessite pas de type de vêtement", "displayName_it": "Does Not Require Clothing Type", "displayName_ja": "衣服タイプの指定なし", "displayName_ko": "의상 분류 필요 없음", "displayName_ru": "Тип одежды не требуется", "displayName_zh": "不要求服饰类别", "displayNameID": 263911, "displayWhenZero": 0, "highIsGood": 1, "name": "clothingAlsoCoversCategory", "published": 0, "stackable": 1 }, "1798": { "attributeID": 1798, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "When set to non-zero on a module with an assistance effect, the module cannot be activated against a target that has a positive disallowOffensiveModifiers attribute", "displayName_de": "Gegen EW-immune Ziele verbieten", "displayName_en-us": "Disallow against EW-immune target", "displayName_es": "Desconectar contra objetivo inmune a electromagnético", "displayName_fr": "Interdire contre les cibles immunisées contre la guerre électronique", "displayName_it": "Disallow against EW-immune target", "displayName_ja": "EW 免疫ターゲットを却下", "displayName_ko": "EW-면역 타겟 공격 불허", "displayName_ru": "Запрещено применение по целям с иммунитетом к системам РЭБ", "displayName_zh": "不允许针对免疫电子战的目标", "displayNameID": 263914, "displayWhenZero": 0, "highIsGood": 0, "name": "disallowAgainstEwImmuneTarget", "published": 0, "stackable": 1, "unitID": 137 }, "1799": { "attributeID": 1799, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Genolution Set Bonus", "displayName_en-us": "Genolution Set Bonus", "displayName_es": "Bonificación de conjunto Genolution", "displayName_fr": "Bonus d'ensemble Génolution", "displayName_it": "Genolution Set Bonus", "displayName_ja": "ジェノリューションセットボーナス", "displayName_ko": "제놀루션 세트 보너스", "displayName_ru": "Бонус от комплекта «Генолюция»", "displayName_zh": "格鲁汀套装加成", "displayNameID": 263930, "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetChristmas", "published": 1, "stackable": 1, "unitID": 104 }, "1803": { "attributeID": 1803, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "reduction in MicroWarp Drive signature", "displayName_de": "Bonus auf Signaturradiusabzug und Energiespeicherverbrauch von Mikrowarpantrieben", "displayName_en-us": "MWD sig penalty and cap need bonus", "displayName_es": "Bonificación de necesidad del condensador y penalización de señal del MMC", "displayName_fr": "Bonus de pénalité de signature et de besoins énergétiques du PMW", "displayName_it": "MWD sig penalty and cap need bonus", "displayName_ja": "MWDのシグネチャペナルティとキャパシタ消費軽減ボーナス", "displayName_ko": "MWD 시그니처 페널티 및 캐패시터 사용량 보너스", "displayName_ru": "Уменьшение потребления накопителя и влияния микроварп-ускорителя на радиус сигнатуры", "displayName_zh": "微型跃迁推进器信号半径惩罚和电容消耗加成", "displayNameID": 595366, "displayWhenZero": 0, "highIsGood": 0, "name": "MWDSignatureRadiusBonus", "published": 0, "stackable": 1, "unitID": 105 }, "1804": { "attributeID": 1804, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of Quafe hold", "displayName_de": "Quafe-Fassungsvermögen", "displayName_en-us": "Quafe Hold Capacity", "displayName_es": "Capacidad de bodega de Quafe", "displayName_fr": "Capacité de la soute à Quafe", "displayName_it": "Quafe Hold Capacity", "displayName_ja": "クァフェホールド容量", "displayName_ko": "퀘이프 저장고 적재량", "displayName_ru": "Ёмкость отсека для «Квейф»", "displayName_zh": "酷菲货舱容量", "displayNameID": 267679, "displayWhenZero": 0, "highIsGood": 1, "name": "specialQuafeHoldCapacity", "published": 0, "stackable": 1, "unitID": 9 }, "1806": { "attributeID": 1806, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is a display-only attribute for showinfo", "displayName_de": "Erfordert Souveränität", "displayName_en-us": "Requires Sovereignty", "displayName_es": "Requiere soberanía", "displayName_fr": "Souveraineté requise", "displayName_it": "Requires Sovereignty", "displayName_ja": "領有権必要", "displayName_ko": "소버린티가 필요합니다.", "displayName_ru": "Требуется право владения", "displayName_zh": "需要主权", "displayNameID": 276943, "displayWhenZero": 0, "highIsGood": 1, "name": "requiresSovereigntyDisplayOnly", "published": 1, "stackable": 1, "unitID": 137 }, "1808": { "attributeID": 1808, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "nosReflector", "published": 1, "stackable": 0 }, "1809": { "attributeID": 1809, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "neutReflector", "published": 1, "stackable": 0 }, "1811": { "attributeID": 1811, "dataType": 5, "defaultValue": 0.0, "description": "Chance of reflecting NOS/neut effect back on attacker", "displayName_de": "Capacitor Angriff Reflektionschance", "displayName_en-us": "Capacitor Attack Reflect Chance", "displayName_es": "Probabilidad de reflejo de ataque del condensador", "displayName_fr": "Chance de renvoi d'attaque de capaciteur", "displayName_it": "Capacitor Attack Reflect Chance", "displayName_ja": "キャパシタ攻撃成功率", "displayName_ko": "캐패시터 공격 반사 기회", "displayName_ru": "Шанс отражения атаки накопителем", "displayName_zh": "电容攻击反射几率", "displayNameID": 277617, "displayWhenZero": 0, "highIsGood": 1, "name": "capAttackReflector", "published": 1, "stackable": 1, "unitID": 111 }, "1812": { "attributeID": 1812, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Turret damage is reduced when shooting at targets with a sig radius below this value.", "displayName_de": "Damage Reduction Threshold", "displayName_en-us": "Damage Reduction Threshold", "displayName_es": "Límite de reducción de daño", "displayName_fr": "Seuil de réduction des dégâts", "displayName_it": "Damage Reduction Threshold", "displayName_ja": "ダメージ減少境界値", "displayName_ko": "피해 감소 한계치", "displayName_ru": "Порог снижения урона", "displayName_zh": "伤害减免阀值", "displayNameID": 278346, "displayWhenZero": 0, "highIsGood": 1, "name": "turretDamageScalingRadius", "published": 1, "stackable": 1, "unitID": 1 }, "1813": { "attributeID": 1813, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This attribute is used by the effect which sets titans' turrets to reduce damage below a certain target signature radius.", "displayName_de": "Schadensverändernder Radius der Geschütztürme", "displayName_en-us": "Turret Damage Scaling Radius", "displayName_es": "Radio de escala de daño de torretas", "displayName_fr": "Rayon d'échelle des dégâts de tourelle", "displayName_it": "Turret Damage Scaling Radius", "displayName_ja": "タレットダメージスケール半径", "displayName_ko": "터렛 피해량 조절 범위", "displayName_ru": "Радиус уменьшения наносимых повреждений", "displayName_zh": "炮台伤害调整范围", "displayNameID": 278371, "displayWhenZero": 0, "highIsGood": 1, "name": "titanBonusScalingRadius", "published": 0, "stackable": 1, "unitID": 1 }, "1814": { "attributeID": 1814, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "nosReflectAmount", "published": 1, "stackable": 1, "unitID": 111 }, "1815": { "attributeID": 1815, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "neutReflectAmount", "published": 1, "stackable": 1, "unitID": 111 }, "1816": { "attributeID": 1816, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Neutralizer Reflektionswert", "displayName_en-us": "Neutralizer Reflect Amount", "displayName_es": "Cantidad de reflejo del neutralizador", "displayName_fr": "Quantité renvoyée par le neutraliseur", "displayName_it": "Neutralizer Reflect Amount", "displayName_ja": "ニュートラライザー残量", "displayName_ko": "뉴트럴라이저 적용값", "displayName_ru": "Количество отражаемого воздействия при нейтрализации энергии", "displayName_zh": "中和器反射量", "displayNameID": 278486, "displayWhenZero": 0, "highIsGood": 1, "name": "neutReflectAmountBonus", "published": 1, "stackable": 0, "unitID": 105 }, "1817": { "attributeID": 1817, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Energy Leech Reflektionswert", "displayName_en-us": "Energy Leech Reflect Amount", "displayName_es": "Cantidad de reflejo de la absorción energética", "displayName_fr": "Quantité renvoyée par la sangsue énergétique", "displayName_it": "Energy Leech Reflect Amount", "displayName_ja": "エネルギー吸引残量", "displayName_ko": "에너지 흡수 적용값", "displayName_ru": "Количество отражаемого воздействия при паразитной подзарядке", "displayName_zh": "掠能器反射量", "displayNameID": 278487, "displayWhenZero": 0, "highIsGood": 1, "name": "nosReflectAmountBonus", "published": 1, "stackable": 0, "unitID": 105 }, "1818": { "attributeID": 1818, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "aurumConversionRate", "published": 0, "stackable": 1 }, "1820": { "attributeID": 1820, "categoryID": 7, "dataType": 2, "defaultValue": 10000000.0, "description": "The base cost of hiring an ally into a war", "displayWhenZero": 0, "highIsGood": 1, "name": "baseDefenderAllyCost", "published": 0, "stackable": 1, "unitID": 133 }, "1821": { "attributeID": 1821, "categoryID": 7, "dataType": 2, "defaultValue": 0.0, "description": "", "displayName_de": "Alliierten-Kosten-Modifikator", "displayName_en-us": "Ally Cost Modifier Percentage Per Level", "displayName_es": "Porcentaje de modificador de costes de aliados por niveles", "displayName_fr": "Pourcentage du modificateur de coût d'allié par niveau", "displayName_it": "Ally Cost Modifier Percentage Per Level", "displayName_ja": "援助要請費用修正", "displayName_ko": "레벨별 동맹 비용 비율", "displayName_ru": "Модификатор стоимости альянса за каждую степень", "displayName_zh": "每等级盟军费用乘数百分比", "displayNameID": 279694, "displayWhenZero": 0, "highIsGood": 1, "name": "skillAllyCostModifierBonus", "published": 1, "stackable": 1 }, "1822": { "attributeID": 1822, "dataType": 5, "defaultValue": 0.0, "description": "Reduction in energy turret capacitor use", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSETCapBonus", "published": 0, "stackable": 1 }, "1823": { "attributeID": 1823, "dataType": 5, "defaultValue": 0.0, "description": "Energy turret damage bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSETDamageBonus", "published": 0, "stackable": 1 }, "1824": { "attributeID": 1824, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to tracking disruptor effectiveness", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieWeaponDisruptionBonus", "published": 0, "stackable": 1 }, "1825": { "attributeID": 1825, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to armor resistances", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieArmorResistanceBonus", "published": 0, "stackable": 1 }, "1826": { "attributeID": 1826, "dataType": 5, "defaultValue": 0.0, "description": "Small Hybrid Turret optimal range bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSHTOptimalBonus", "published": 0, "stackable": 1 }, "1827": { "attributeID": 1827, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to kinetic missile damage", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieMissileKinDamageBonus", "published": 0, "stackable": 1 }, "1828": { "attributeID": 1828, "dataType": 5, "defaultValue": 0.0, "description": "ECM Strength Bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieECMStrengthBonus", "published": 0, "stackable": 1 }, "1829": { "attributeID": 1829, "dataType": 5, "defaultValue": 0.0, "description": "Shield resistance bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieShieldResistBonus", "published": 0, "stackable": 1 }, "1830": { "attributeID": 1830, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Small Hybrid Turret damage", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSHTDamageBonus", "published": 0, "stackable": 1 }, "1831": { "attributeID": 1831, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to drone damage, HP and mining yield", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieDroneBonus", "published": 0, "stackable": 1 }, "1832": { "attributeID": 1832, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to sensor damper effectiveness", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieDampStrengthBonus", "published": 0, "stackable": 1 }, "1833": { "attributeID": 1833, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to armor repair amount", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieArmorRepBonus", "published": 0, "stackable": 1 }, "1834": { "attributeID": 1834, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to target painter effectiveness", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieTargetPainterStrengthBonus", "published": 0, "stackable": 1 }, "1835": { "attributeID": 1835, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to ship velocity", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieShipVelocityBonus", "published": 0, "stackable": 1 }, "1836": { "attributeID": 1836, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Small Projectile Turret damage", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSPTDamageBonus", "published": 0, "stackable": 1 }, "1837": { "attributeID": 1837, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to shield booster repair amount", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieShieldBoostBonus", "published": 0, "stackable": 1 }, "1838": { "attributeID": 1838, "dataType": 2, "defaultValue": 0.0, "description": "Bonus to optimal range of Codebreakers and Analyzers", "displayWhenZero": 0, "highIsGood": 1, "name": "miniProfessionRangeBonus", "published": 0, "stackable": 1 }, "1839": { "attributeID": 1839, "categoryID": 7, "dataType": 5, "defaultValue": 10000.0, "description": "The delay in ms until the damage is done to the target. (Allows some FX to be played)", "displayName_de": "Verzögerung bei Schaden", "displayName_en-us": "Damage Delay", "displayName_es": "Demora de daño", "displayName_fr": "Délai de dégâts", "displayName_it": "Damage Delay", "displayName_ja": "ダメージ遅延", "displayName_ko": "피해 지연", "displayName_ru": "Задержка урона", "displayName_zh": "伤害延迟", "displayNameID": 285425, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "damageDelayDuration", "published": 1, "stackable": 1, "unitID": 101 }, "1840": { "attributeID": 1840, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "energyTransferAmountBonus", "published": 0, "stackable": 1 }, "1842": { "attributeID": 1842, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "ORE Mining frigate bonus 1", "displayWhenZero": 0, "highIsGood": 1, "name": "miningFrigatesBonusOreMiningYield", "published": 0, "stackable": 1 }, "1843": { "attributeID": 1843, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "ORE Mining frigate bonus 2", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOREfrig2", "published": 0, "stackable": 1 }, "1844": { "attributeID": 1844, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "A scaling factor used by DUST to determine how accurate a single shot from an orbital strike is.", "displayName_de": "Orbitalschlagpräzision", "displayName_en-us": "Orbital Strike Accuracy", "displayName_es": "Precisión de asalto orbital", "displayName_fr": "Précision de frappe orbitale", "displayName_it": "Orbital Strike Accuracy", "displayName_ja": "軌道攻撃精度", "displayName_ko": "궤도 타격 정확도", "displayName_ru": "Точность орбитального удара", "displayName_zh": "轨道轰炸准确性", "displayNameID": 283248, "displayWhenZero": 0, "highIsGood": 1, "name": "orbitalStrikeAccuracy", "published": 1, "stackable": 1 }, "1845": { "attributeID": 1845, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "A scaling factor used by DUST to determine how much damage a single shot from an orbital strike does.", "displayName_de": "Orbitalschlagschaden", "displayName_en-us": "Orbital Strike Damage", "displayName_es": "Daño de asalto orbital", "displayName_fr": "Dégâts de frappe orbitale", "displayName_it": "Orbital Strike Damage", "displayName_ja": "軌道攻撃ダメージ", "displayName_ko": "궤도 타격 피해", "displayName_ru": "Урон орбитального удара", "displayName_zh": "轨道轰炸伤害", "displayNameID": 283249, "displayWhenZero": 0, "highIsGood": 1, "name": "orbitalStrikeDamage", "published": 1, "stackable": 1 }, "1846": { "attributeID": 1846, "categoryID": 9, "dataType": 12, "defaultValue": 0.0, "description": "The second cargo group that can be loaded into this container", "displayWhenZero": 0, "highIsGood": 1, "name": "cargoGroup2", "published": 0, "stackable": 1 }, "1847": { "attributeID": 1847, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, 902", "displayWhenZero": 0, "highIsGood": 1, "name": "902", "published": 1, "stackable": 1 }, "1848": { "attributeID": 1848, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, 902", "displayWhenZero": 0, "highIsGood": 1, "name": "902", "published": 1, "stackable": 1 }, "1849": { "attributeID": 1849, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Indicates the percentage amount redistributed each cycle for resistance shift modules", "displayWhenZero": 0, "highIsGood": 1, "name": "resistanceShiftAmount", "published": 0, "stackable": 1 }, "1851": { "attributeID": 1851, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus for Sensor Strength", "displayName_de": "Bonus für Sensorstärke", "displayName_en-us": "Sensor Strength Bonus", "displayName_es": "Bonificación de intensidad del sensor", "displayName_fr": "Bonus de puissance de détection", "displayName_it": "Sensor Strength Bonus", "displayName_ja": "センサー強度ボーナス", "displayName_ko": "센서 강도 보너스", "displayName_ru": "Влияние на эффективность систем захвата целей", "displayName_zh": "感应强度加成", "displayNameID": 283692, "displayWhenZero": 0, "highIsGood": 1, "name": "sensorStrengthBonus", "published": 1, "stackable": 0, "unitID": 105 }, "1852": { "attributeID": 1852, "dataType": 3, "defaultValue": 1.0, "description": "This attribute is not needed by default. You only need to add it if you want to stop something from being jettisoned.\r\n\r\nThe primary case for this was Station Containers.\r\n\r\n0 = Cannot be jettisoned.\r\n1 = Can be jettisoned.", "displayName_de": "Kann abgeworfen werden", "displayName_en-us": "Can Be Jettisoned", "displayName_es": "Se puede expulsar.", "displayName_fr": "Peut être largué dans l'espace", "displayName_it": "Can Be Jettisoned", "displayName_ja": "船外投棄可能", "displayName_ko": "사출 가능", "displayName_ru": "Разрешается сбрасывать", "displayName_zh": "可以被投弃", "displayNameID": 283852, "displayWhenZero": 0, "highIsGood": 1, "name": "canBeJettisoned", "published": 0, "stackable": 1 }, "1854": { "attributeID": 1854, "dataType": 5, "defaultValue": 0.0, "description": "This is a devhax attribute that prevents you from e-warping on logon or logoff", "displayName_de": "Stabile Abschaltung", "displayName_en-us": "Stable Shutdown", "displayName_es": "Desconexión estable", "displayName_fr": "Fermeture stable", "displayName_it": "Stable Shutdown", "displayName_ja": "安定シャットダウン", "displayName_ko": "안정적인 종료", "displayName_ru": "Стабильное выключение", "displayName_zh": "稳定关闭", "displayNameID": 285427, "displayWhenZero": 0, "highIsGood": 1, "name": "doesNotEmergencyWarp", "published": 0, "stackable": 1, "unitID": 137 }, "1855": { "attributeID": 1855, "categoryID": 12, "dataType": 5, "defaultValue": 0.0, "description": "NPC'S with this attribute wont shoot drones with signature radius less than this value.", "displayName_de": "Drohnen mit geringerer Größe ignorieren", "displayName_en-us": "Ignore Drones Below This Size", "displayName_es": "Ignorar drones por debajo de este tamaño", "displayName_fr": "Ignorer les drones de taille inférieure", "displayName_it": "Ignore Drones Below This Size", "displayName_ja": "このサイズより小さいドローンを無視", "displayName_ko": "해당 크기 미만의 드론 무시", "displayName_ru": "Игнорировать дронов с размером меньше данного", "displayName_zh": "忽略这个规格以下的无人机", "displayNameID": 286332, "displayWhenZero": 0, "highIsGood": 1, "name": "AI_IgnoreDronesBelowSignatureRadius", "published": 0, "stackable": 1, "unitID": 1 }, "1856": { "attributeID": 1856, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktion des Masseabzugs", "displayName_en-us": "Mass Penalty Reduction", "displayName_es": "Reducción de penalización en masa", "displayName_fr": "Réduction de pénalité de masse", "displayName_it": "Mass Penalty Reduction", "displayName_ja": "質量ペナルティ軽減", "displayName_ko": "대량 페널티 감소", "displayName_ru": "Снижение штрафа за массу", "displayName_zh": "质量惩罚降低", "displayNameID": 286444, "displayWhenZero": 0, "highIsGood": 1, "name": "massPenaltyReduction", "published": 1, "stackable": 1, "unitID": 105 }, "1857": { "attributeID": 1857, "dataType": 5, "defaultValue": 0.0, "description": "Increase in small energy turret tracking", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSETTracking", "published": 0, "stackable": 1 }, "1858": { "attributeID": 1858, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Small Energy Turret optimal Range", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSETOptimal", "published": 0, "stackable": 1 }, "1859": { "attributeID": 1859, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Nosferatu drain amount", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieNosDrain", "published": 0, "stackable": 1 }, "1860": { "attributeID": 1860, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Energy Neutralizer drain amount", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieNeutDrain", "published": 0, "stackable": 1 }, "1861": { "attributeID": 1861, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Statis Webifier speed reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieWebAmount", "published": 0, "stackable": 1 }, "1862": { "attributeID": 1862, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Light Missile velocity", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieLightMissileVelocity", "published": 0, "stackable": 1 }, "1863": { "attributeID": 1863, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Rocket velocity", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieRocketVelocity", "published": 0, "stackable": 1 }, "1864": { "attributeID": 1864, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Drone MWD speed", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieDroneMWDspeed", "published": 0, "stackable": 1 }, "1865": { "attributeID": 1865, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSHTTracking", "published": 0, "stackable": 1 }, "1866": { "attributeID": 1866, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSHTFalloff", "published": 0, "stackable": 1 }, "1867": { "attributeID": 1867, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Small Projectile Turret tracking", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSPTTracking", "published": 0, "stackable": 1 }, "1868": { "attributeID": 1868, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Small Projectile Turret falloff", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSPTFalloff", "published": 0, "stackable": 1 }, "1869": { "attributeID": 1869, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Small Projectile Turret optimal range", "displayWhenZero": 0, "highIsGood": 1, "name": "rookieSPTOptimal", "published": 0, "stackable": 1 }, "1870": { "attributeID": 1870, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "covertCloakCPUAdd", "published": 0, "stackable": 1 }, "1871": { "attributeID": 1871, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "covertCloakCPUPenalty", "published": 0, "stackable": 1 }, "1872": { "attributeID": 1872, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "Can be fitted to", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 286652, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup05", "published": 1, "stackable": 1, "unitID": 115 }, "1879": { "attributeID": 1879, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "Can be fitted to", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 286660, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup06", "published": 1, "stackable": 1, "unitID": 115 }, "1880": { "attributeID": 1880, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 286662, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup07", "published": 1, "stackable": 1, "unitID": 115 }, "1881": { "attributeID": 1881, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 286661, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup08", "published": 1, "stackable": 1, "unitID": 115 }, "1882": { "attributeID": 1882, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareLinkCPUAdd", "published": 0, "stackable": 1 }, "1883": { "attributeID": 1883, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareLinkCPUPenalty", "published": 0, "stackable": 1 }, "1886": { "attributeID": 1886, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier applied to armorDamageAmount when consuming a collection of charges.", "displayName_de": "Verstärkter Reparaturmultiplikator", "displayName_en-us": "Boosted repair multiplier", "displayName_es": "Multiplicador de reparación potenciado", "displayName_fr": "Multiplicateur de réparation boostée", "displayName_it": "Boosted repair multiplier", "displayName_ja": "ブースト時リペア乗数", "displayName_ko": "부스터로 인한 수리값 배수", "displayName_ru": "Множитель восстановления прочности под воздействием усиления", "displayName_zh": "增强模式时修复量增量倍数", "displayNameID": 286772, "displayWhenZero": 0, "highIsGood": 1, "name": "chargedArmorDamageMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1887": { "attributeID": 1887, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAD1", "published": 0, "stackable": 1 }, "1888": { "attributeID": 1888, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAD2", "published": 0, "stackable": 1 }, "1889": { "attributeID": 1889, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusABC2", "published": 0, "stackable": 1 }, "1890": { "attributeID": 1890, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "This will make the item non-destructible upon podding. ONLY FOR IMPLANTS AND BOOSTERS", "displayName_de": "Unzerstörbar", "displayName_en-us": "Non-Destructible", "displayName_es": "Indestructible", "displayName_fr": "Non destructible", "displayName_it": "Non-Destructible", "displayName_ja": "破壊不可", "displayName_ko": "파괴 불가", "displayName_ru": "Неуничтожаемый", "displayName_zh": "无法摧毁", "displayNameID": 286891, "displayWhenZero": 0, "highIsGood": 1, "name": "nondestructible", "published": 0, "stackable": 1, "unitID": 137 }, "1891": { "attributeID": 1891, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "Tells if this type (ship) can be placed in the maintenance bay of a capital industrial ship.", "displayWhenZero": 0, "highIsGood": 1, "name": "allowedInCapIndustrialMaintenanceBay", "published": 0, "stackable": 1 }, "1892": { "attributeID": 1892, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "the average armor amount repaired per second", "displayWhenZero": 0, "highIsGood": 1, "name": "entityArmorRepairAmountPerSecond", "published": 0, "stackable": 1, "unitID": 113 }, "1893": { "attributeID": 1893, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "the average shield amount regenerated per second", "displayWhenZero": 0, "highIsGood": 1, "name": "entityShieldBoostAmountPerSecond", "published": 0, "stackable": 1, "unitID": 113 }, "1894": { "attributeID": 1894, "categoryID": 7, "dataType": 2, "defaultValue": 1.0, "description": "represents the capacity level of an entity", "displayWhenZero": 0, "highIsGood": 1, "name": "entityCapacitorLevel", "published": 0, "stackable": 0, "unitID": 109 }, "1895": { "attributeID": 1895, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "modifier to an entity capacitor level to represent energy drain for small ships", "displayWhenZero": 0, "highIsGood": 1, "name": "entityCapacitorLevelModifierSmall", "published": 0, "stackable": 1, "unitID": 109 }, "1896": { "attributeID": 1896, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "modifier to an entity capacitor level to represent energy drain for medium ships", "displayWhenZero": 0, "highIsGood": 1, "name": "entityCapacitorLevelModifierMedium", "published": 0, "stackable": 1, "unitID": 109 }, "1897": { "attributeID": 1897, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "modifier to an entity capacitor level to represent energy drain for large ships", "displayWhenZero": 0, "highIsGood": 1, "name": "entityCapacitorLevelModifierLarge", "published": 0, "stackable": 1, "unitID": 109 }, "1904": { "attributeID": 1904, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "ISK fee per tag to be paid when turning in a tag for a security-status gain", "displayName_de": "Verarbeitungsgebühr", "displayName_en-us": "Processing Fee", "displayName_es": "Tasa de procesamiento", "displayName_fr": "Frais de traitement", "displayName_it": "Processing Fee", "displayName_ja": "処理料", "displayName_ko": "처리 요금", "displayName_ru": "Плата за обработку", "displayName_zh": "手续费", "displayNameID": 287808, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2512, "name": "securityProcessingFee", "published": 1, "stackable": 1, "unitID": 133 }, "1905": { "attributeID": 1905, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Max. Scan-Abweichungsmodifikator", "displayName_en-us": "Maximum Scan Deviation Modifier", "displayName_es": "Modificador de desviación máxima del escaneo", "displayName_fr": "Modificateur de déviation max du balayage", "displayName_it": "Maximum Scan Deviation Modifier", "displayName_ja": "最大スキャン誤差修正乗数", "displayName_ko": "최대 스캔 오차 보정치", "displayName_ru": "Влияние на максимальное отклонение при поиске зондами", "displayName_zh": "扫描偏差上限调整", "displayNameID": 288161, "displayWhenZero": 0, "highIsGood": 1, "name": "maxScanDeviationModifierModule", "published": 1, "stackable": 0, "unitID": 105 }, "1906": { "attributeID": 1906, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Laufzeitbonus", "displayName_en-us": "Duration Bonus", "displayName_es": "Bonificación de duración", "displayName_fr": "Bonus de durée", "displayName_it": "Duration Bonus", "displayName_ja": "起動時間ボーナス", "displayName_ko": "지속시간 보너스", "displayName_ru": "Влияние на длительность", "displayName_zh": "单次运转时间加成", "displayNameID": 288163, "displayWhenZero": 0, "highIsGood": 0, "name": "scanDurationBonus", "published": 1, "stackable": 0, "unitID": 105 }, "1907": { "attributeID": 1907, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Scan-Stärke-Bonus", "displayName_en-us": "Scan Strength Bonus", "displayName_es": "Bonificación de intensidad del escaneo", "displayName_fr": "Bonus de puissance du balayage", "displayName_it": "Scan Strength Bonus", "displayName_ja": "スキャン強度ボーナス", "displayName_ko": "스캔 강도 보너스", "displayName_ru": "Влияние на чувствительность зондов", "displayName_zh": "扫描强度加成", "displayNameID": 288258, "displayWhenZero": 0, "highIsGood": 1, "name": "scanStrengthBonusModule", "published": 1, "stackable": 0, "unitID": 105 }, "1908": { "attributeID": 1908, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Wormhole signature strength.", "displayName_de": "Wurmloch-Signaturstärke", "displayName_en-us": "Wormhole Signature Strength", "displayName_es": "Intensidad de la señal de agujero de gusano", "displayName_fr": "Puissance de signature de trou de ver", "displayName_it": "Wormhole Signature Strength", "displayName_ja": "ワームホールシグネチャ強度", "displayName_ko": "웜홀 신호 강도", "displayName_ru": "Мощность сигнатуры червоточины", "displayName_zh": "虫洞信号强度", "displayNameID": 288257, "displayWhenZero": 0, "highIsGood": 1, "name": "scanWormholeStrength", "published": 1, "stackable": 0, "unitID": 120 }, "1909": { "attributeID": 1909, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The coherence of a virus.", "displayName_de": "Viruskohärenz", "displayName_en-us": "Virus Coherence", "displayName_es": "Coherencia del virus", "displayName_fr": "Résistance virale", "displayName_it": "Virus Coherence", "displayName_ja": "ウイルスコヒーレンス", "displayName_ko": "바이러스 결합도", "displayName_ru": "Целостность вируса", "displayName_zh": "病毒同步率", "displayNameID": 288364, "displayWhenZero": 0, "highIsGood": 1, "name": "virusCoherence", "published": 1, "stackable": 1 }, "1910": { "attributeID": 1910, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The strength attribute for a Virus", "displayName_de": "Virusstärke", "displayName_en-us": "Virus Strength", "displayName_es": "Intensidad del virus", "displayName_fr": "Puissance du virus", "displayName_it": "Virus Strength", "displayName_ja": "ウイルス強度", "displayName_ko": "바이러스 침투력", "displayName_ru": "Опасность вируса", "displayName_zh": "病毒强度", "displayNameID": 288365, "displayWhenZero": 0, "highIsGood": 1, "name": "virusStrength", "published": 1, "stackable": 1 }, "1911": { "attributeID": 1911, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The number of utility element slots a virus has.", "displayName_de": "Element-Slots für Virusprogramm", "displayName_en-us": "Virus Utility Element Slots", "displayName_es": "Ranuras de elementos de utilidades víricas", "displayName_fr": "Emplacements d'élément d'utilitaire de virus", "displayName_it": "Virus Utility Element Slots", "displayName_ja": "ウイルスユーティリティ", "displayName_ko": "유틸리티 슬롯", "displayName_ru": "Программные разъёмы вируса", "displayName_zh": "病毒功能元槽位", "displayNameID": 288366, "displayWhenZero": 0, "highIsGood": 1, "name": "virusElementSlots", "published": 1, "stackable": 1 }, "1912": { "attributeID": 1912, "dataType": 4, "defaultValue": 20.0, "description": "The number of mini containers that are spewed out from this type, if it supports spewing.", "displayWhenZero": 0, "highIsGood": 1, "name": "spewContainerCount", "published": 1, "stackable": 1, "unitID": 138 }, "1913": { "attributeID": 1913, "dataType": 11, "defaultValue": 0.0, "description": "Default junk loot to spawn into a mini container that does not contain anything fancy from a loot table.", "displayWhenZero": 0, "highIsGood": 1, "name": "defaultJunkLootTypeID", "published": 1, "stackable": 1, "unitID": 116 }, "1914": { "attributeID": 1914, "dataType": 5, "defaultValue": 65.0, "description": "The speed at which mini containers fly away from a spew container", "displayWhenZero": 0, "highIsGood": 1, "name": "spewVelocity", "published": 1, "stackable": 1, "unitID": 10 }, "1915": { "attributeID": 1915, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Adds to the virus coherence of profession modules", "displayName_de": "Virenkohärenzbonus", "displayName_en-us": "Virus Coherence Bonus", "displayName_es": "Bonificación de coherencia del virus", "displayName_fr": "Bonus de résistance virale", "displayName_it": "Virus Coherence Bonus", "displayName_ja": "ウイルスコヒーレンスボーナス", "displayName_ko": "바이러스 결합도 보너스", "displayName_ru": "Влияние на целостность вируса", "displayName_zh": "病毒同步率加成", "displayNameID": 289256, "displayWhenZero": 0, "highIsGood": 1, "name": "virusCoherenceBonus", "published": 1, "stackable": 1 }, "1916": { "attributeID": 1916, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Stays with characters across clone changes. ONLY FOR IMPLANTS AND BOOSTERS.", "displayName_de": "Folgt Sprungklonen", "displayName_en-us": "Follows Jump Clones", "displayName_es": "Sigue a los clones de salto", "displayName_fr": "Suit les clones hyperspatiaux", "displayName_it": "Follows Jump Clones", "displayName_ja": "ジャンプクローンをフォロー", "displayName_ko": "점프 클론 추적", "displayName_ru": "Сохраняется при переходе в джамп-клонов", "displayName_zh": "跟随远距克隆", "displayNameID": 289181, "displayWhenZero": 0, "highIsGood": 1, "name": "followsJumpClones", "published": 0, "stackable": 1, "unitID": 137 }, "1917": { "attributeID": 1917, "dataType": 5, "defaultValue": 0.0, "description": "If present, will add the given value to the automatic computed lifetime of MiniContainers with regards to the time required to take them and the amount of containers scattered out into space.", "displayWhenZero": 0, "highIsGood": 1, "name": "spewContainerLifeExtension", "published": 1, "stackable": 1, "unitID": 3 }, "1918": { "attributeID": 1918, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Analysator-Virusstärkebonus", "displayName_en-us": "Analyzer Virus Strength Bonus", "displayName_es": "Bonificación de analizador de intensidad del virus", "displayName_fr": "Bonus de puissance du virus d'analyseur", "displayName_it": "Analyzer Virus Strength Bonus", "displayName_ja": "アナライザーウイルス強度ボーナス", "displayName_ko": "분석기 바이러스 침투력 보너스", "displayName_ru": "Влияние на опасность вируса анализатора", "displayName_zh": "分析仪病毒强度加成", "displayNameID": 289116, "displayWhenZero": 0, "highIsGood": 1, "name": "virusStrengthBonus", "published": 1, "stackable": 1 }, "1919": { "attributeID": 1919, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "tierDifficulty", "published": 0, "stackable": 1 }, "1920": { "attributeID": 1920, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "If set to True on a module, the module will not be allowed to activate whilst the ship is inside a starbase forcefield", "displayName_de": "Aktivierung und Kraftfeld nicht zulassen", "displayName_en-us": "Disallow activation in forcefield", "displayName_es": "Desautorizar activación en campo de fuerza", "displayName_fr": "Interdire l'activation dans un champ de force", "displayName_it": "Disallow activation in forcefield", "displayName_ja": "フォースフィールド内では起動不可", "displayName_ko": "포스필드 내 활성화 금지", "displayName_ru": "Запрещено включение в силовом поле", "displayName_zh": "力场中无法激活", "displayNameID": 289390, "displayWhenZero": 0, "highIsGood": 1, "name": "disallowActivateInForcefield", "published": 1, "stackable": 1, "unitID": 137 }, "1921": { "attributeID": 1921, "dataType": 5, "defaultValue": 24.0, "description": "", "displayName_de": "Abkühlungsphase nach Klonsprung", "displayName_en-us": "Clone Jump Cool Down", "displayName_es": "Tiempo de espera de salto de clon", "displayName_fr": "Refroidissement de saut de clone", "displayName_it": "Clone Jump Cool Down", "displayName_ja": "クローンジャンプクールダウン", "displayName_ko": "클론 점프 쿨 다운", "displayName_ru": "Срок ожидания между переходами в джамп-клонов", "displayName_zh": "远距克隆间歇期", "displayNameID": 289977, "displayWhenZero": 0, "highIsGood": 1, "name": "cloneJumpCoolDown", "published": 0, "stackable": 1 }, "1922": { "attributeID": 1922, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Stärke von taktischen Netzwerken", "displayName_en-us": "Warfare Link Strength Bonus", "displayName_es": "Bonificación de intensidad del enlace de guerra", "displayName_fr": "Bonus de puissance de liaison tactique", "displayName_it": "Warfare Link Strength Bonus", "displayName_ja": "艦隊支援システム強度ボーナス", "displayName_ko": "전쟁 링크 침투력 보너스", "displayName_ru": "Влияние на силу эффекта командного модуля", "displayName_zh": "作战网络强度加成", "displayNameID": 289994, "displayWhenZero": 0, "highIsGood": 1, "name": "warfareLinkBonus", "published": 1, "stackable": 1 }, "1923": { "attributeID": 1923, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Role bonus for Marauders.", "displayName_de": "Reaktivierungsbonus", "displayName_en-us": "Reactivation Bonus", "displayName_es": "Bonificación de reactivación", "displayName_fr": "Bonus de réactivation", "displayName_it": "Reactivation Bonus", "displayName_ja": "再起動ボーナス", "displayName_ko": "재활성화 보너스", "displayName_ru": "Сокращение задержки повторного включения", "displayName_zh": "重新激活加成", "displayNameID": 290057, "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusMarauder", "published": 0, "stackable": 1, "unitID": 105 }, "1924": { "attributeID": 1924, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCommandShips3", "published": 0, "stackable": 1 }, "1925": { "attributeID": 1925, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Imperiumssteuer-Umwandler", "displayName_en-us": "Empire Tax Modifier", "displayName_es": "Modificador de impuestos imperiales", "displayName_fr": "Modificateur de taxe d'empire", "displayName_it": "Empire Tax Modifier", "displayName_ja": "国税修正乗数", "displayName_ko": "세율 보정치", "displayName_ru": "Изменение госпошлины", "displayName_zh": "帝国税率系数", "displayNameID": 292213, "displayWhenZero": 0, "highIsGood": 1, "name": "piTaxReductionModifer", "published": 1, "stackable": 1, "unitID": 105 }, "1926": { "attributeID": 1926, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "piTaxReduction", "published": 0, "stackable": 1 }, "1927": { "attributeID": 1927, "categoryID": 8, "dataType": 0, "defaultValue": 0.0, "description": "Defines whether an entity can be hacked or not.", "displayWhenZero": 0, "highIsGood": 1, "name": "hackable", "published": 0, "stackable": 1, "unitID": 137 }, "1928": { "attributeID": 1928, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The amount of Raw Material stolen from active Moon Harvester Arrays each cycle.", "displayName_de": "Absaugmenge für Rohmaterialien", "displayName_en-us": "Raw Material Siphon Amount", "displayName_es": "Cantidad de materia prima extraída con sifón", "displayName_fr": "Quantité de matière brute siphonnée", "displayName_it": "Raw Material Siphon Amount", "displayName_ja": "未精製資源吸い出し量", "displayName_ko": "원자재 사이펀 양", "displayName_ru": "Объем реквизиции необработанного сырья", "displayName_zh": "原材料虹吸量", "displayNameID": 292210, "displayWhenZero": 0, "highIsGood": 1, "name": "siphonRawMaterial", "published": 1, "stackable": 1, "unitID": 138 }, "1929": { "attributeID": 1929, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Amount of Processed Materials stolen from active Simple Reactor Array every cycle.", "displayName_de": "Absaugmenge für veredelte Rohstoffe", "displayName_en-us": "Processed Material Siphon Amount", "displayName_es": "Cantidad de materiales procesados extraídos con sifón", "displayName_fr": "Quantité de matériau raffiné siphonné", "displayName_it": "Processed Material Siphon Amount", "displayName_ja": "1次加工品吸い出し量", "displayName_ko": "가공 자원 사이펀 양", "displayName_ru": "Объем реквизиции обработанного сырья", "displayName_zh": "加工材料虹吸量", "displayNameID": 292211, "displayWhenZero": 0, "highIsGood": 1, "name": "siphonProMaterial", "published": 1, "stackable": 1, "unitID": 138 }, "1930": { "attributeID": 1930, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Amount of stolen materials that is destroyed.", "displayName_de": "Beim Stehlen zerstörte Menge", "displayName_en-us": "Amount Destroyed On Steal", "displayName_es": "Cantidad destruida al robar", "displayName_fr": "Quantité détruite par vol", "displayName_it": "Amount Destroyed On Steal", "displayName_ja": "吸い出し時減損量", "displayName_ko": "훔칠 때 파괴되는 양", "displayName_ru": "Объем потерь при реквизиции", "displayName_zh": "虹吸摧毁量", "displayNameID": 292212, "displayWhenZero": 0, "highIsGood": 1, "name": "siphonWasteAmount", "published": 1, "stackable": 1, "unitID": 105 }, "1932": { "attributeID": 1932, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Ascendancy Set Bonus", "displayName_en-us": "Ascendancy Set bonus", "displayName_es": "Bonificación de conjunto Ascendancy", "displayName_fr": "Bonus d'ascendant", "displayName_it": "Ascendancy Set bonus", "displayName_ja": "アセンダンシーセットボーナス", "displayName_ko": "어센던시 설정 보너스", "displayName_ru": "Влияние комплекта «Асенданси»", "displayName_zh": "统御套装加成", "displayNameID": 292381, "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetWarpSpeed", "published": 1, "stackable": 1, "unitID": 104 }, "1933": { "attributeID": 1933, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Amount of Polymer Materials stolen from active Polymer Reactor Array every cycle. ", "displayName_de": "Absaugmenge für Polymer-Materialien", "displayName_en-us": "Polymer Material Siphon Amount", "displayName_es": "Cantidad de materiales poliméricos extraídos con sifón", "displayName_fr": "Quantité de siphon de matériau de polymère", "displayName_it": "Polymer Material Siphon Amount", "displayName_ja": "ポリマー素材吸出量", "displayName_ko": "중합체 자원 사이펀 양", "displayName_ru": "Объем реквизиции полимерных материалов", "displayName_zh": "聚合物材料虹吸量", "displayNameID": 293846, "displayWhenZero": 0, "highIsGood": 1, "name": "siphonPolyMaterial", "published": 1, "stackable": 1, "unitID": 105 }, "1934": { "attributeID": 1934, "dataType": 3, "defaultValue": 1.0, "description": "If module is offensive should it deactivate on disconnect. Default to 1", "displayWhenZero": 0, "highIsGood": 1, "name": "deactivateIfOffensive", "published": 0, "stackable": 1 }, "1935": { "attributeID": 1935, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Effektivität der Überlastung", "displayName_en-us": "Overload Effectiveness Bonus", "displayName_es": "Bonificación de eficacia de sobrecarga", "displayName_fr": "Bonus d'efficacité de surcharge", "displayName_it": "Overload Effectiveness Bonus", "displayName_ja": "効果ボーナスをオーバーロード", "displayName_ko": "과부하 효율 보너스", "displayName_ru": "Влияние перегрузки на эффективность", "displayName_zh": "过载效果加成", "displayNameID": 294308, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadTrackingModuleStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1936": { "attributeID": 1936, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Effektivität der Überlastung", "displayName_en-us": "Overload Effectiveness Bonus", "displayName_es": "Bonificación de eficacia de sobrecarga", "displayName_fr": "Bonus d'efficacité de surcharge", "displayName_it": "Overload Effectiveness Bonus", "displayName_ja": "効果ボーナスをオーバーロード", "displayName_ko": "과부하 효율 보너스", "displayName_ru": "Влияние перегрузки на эффективность", "displayName_zh": "过载效果加成", "displayNameID": 294330, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadSensorModuleStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1937": { "attributeID": 1937, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Effektivität der Überlastung", "displayName_en-us": "Overload Effectiveness Bonus", "displayName_es": "Bonificación de eficacia de sobrecarga", "displayName_fr": "Bonus d'efficacité de surcharge", "displayName_it": "Overload Effectiveness Bonus", "displayName_ja": "効果ボーナスをオーバーロード", "displayName_ko": "과부하 효율 보너스", "displayName_ru": "Влияние перегрузки на эффективность", "displayName_zh": "过载效果加成", "displayNameID": 294345, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "overloadPainterStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1938": { "attributeID": 1938, "dataType": 4, "defaultValue": 0.0, "description": "Modifies miningAmountBonus", "displayName_de": "Bonus auf den Bergbauertrag-Bonus", "displayName_en-us": "Mining Amount Bonus Bonus", "displayName_es": "Bonificación de cantidad extraída", "displayName_fr": "Bonus de minerai extrait", "displayName_it": "Mining Amount Bonus Bonus", "displayName_ja": "採掘量ボーナスボーナス", "displayName_ko": "채굴량 보너스 보너스", "displayName_ru": "Влияние на объём добычи", "displayName_zh": "开采量加成", "displayNameID": 294777, "displayWhenZero": 0, "highIsGood": 1, "name": "miningAmountBonusBonus", "published": 0, "stackable": 1 }, "1939": { "attributeID": 1939, "dataType": 5, "defaultValue": 0.0, "description": "Bonus for refining ore. Used for station improvements", "displayName_de": "Bonus auf die Erz-Aufbereitungseffizienz", "displayName_en-us": "Ore Refining Efficiency Bonus", "displayName_es": "Bonificación de eficiencia de refinería de menas", "displayName_fr": "Bonus d'efficacité du raffinage de minerai", "displayName_it": "Ore Refining Efficiency Bonus", "displayName_ja": "鉱石精錬効率ボーナス", "displayName_ko": "광물 정제 효율 보너스", "displayName_ru": "Повышение эффективности переработки руды", "displayName_zh": "矿石提炼效率加成", "displayNameID": 295037, "displayWhenZero": 0, "highIsGood": 1, "name": "stationOreRefiningBonus", "published": 1, "stackable": 1, "unitID": 127 }, "1942": { "attributeID": 1942, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusExpedition1", "published": 0, "stackable": 1 }, "1943": { "attributeID": 1943, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusExpedition2", "published": 0, "stackable": 1 }, "1944": { "attributeID": 1944, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 295181, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType5", "published": 1, "stackable": 1, "unitID": 116 }, "1945": { "attributeID": 1945, "categoryID": 5, "dataType": 0, "defaultValue": 0.0, "description": "NOS override allows a nosferatu module to drain the target capacitor below the current ships capacitor level.", "displayWhenZero": 0, "highIsGood": 1, "name": "nosOverride", "published": 0, "stackable": 1, "unitID": 137 }, "1946": { "attributeID": 1946, "categoryID": 7, "dataType": 5, "defaultValue": -1.0, "description": "The minimum security level at which the structure can be anchored.", "displayName_de": "Beschränkt auf min. Sicherheitsstatus von", "displayName_en-us": "Restricted To Security Level Of At Least", "displayName_es": "Restringido a nivel de seguridad de al menos", "displayName_fr": "Limité au niveau de sécurité le plus faible", "displayName_it": "Restricted To Security Level Of At Least", "displayName_ja": "少なくとも以下のセキュリティレベルに制限", "displayName_ko": "최소 보안 수준으로 제한됩니다.", "displayName_ru": "Требуется степень соответствия нормам КОНКОРДа не менее", "displayName_zh": "仅限于安全等级不低于", "displayNameID": 295400, "displayWhenZero": 0, "highIsGood": 1, "name": "anchoringSecurityLevelMin", "published": 1, "stackable": 1 }, "1949": { "attributeID": 1949, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Überhitzungsbonus", "displayName_en-us": "Overheat Bonus", "displayName_es": "Bonificación de sobrecalentamiento", "displayName_fr": "Bonus de surchauffe", "displayName_it": "Overheat Bonus", "displayName_ja": "オーバーヒートボーナス", "displayName_ko": "오버히트 보너스", "displayName_ru": "Влияние на эффективность работы при перегрузке", "displayName_zh": "过载损伤降低", "displayNameID": 295540, "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusOverheatDST", "published": 0, "stackable": 1, "unitID": 105 }, "1950": { "attributeID": 1950, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Warpgeschwindigkeitsanstieg", "displayName_en-us": "Warp Speed Increase", "displayName_es": "Aumento de velocidad de warp", "displayName_fr": "Augmentation de la vitesse de warp", "displayName_it": "Warp Speed Increase", "displayName_ja": "ワープ速度上昇", "displayName_ko": "워프 속력 증가", "displayName_ru": "Влияние на скорость хода в варп-режиме", "displayName_zh": "跃迁速度提高", "displayNameID": 295688, "displayWhenZero": 0, "highIsGood": 1, "name": "warpSpeedAdd", "published": 1, "stackable": 1 }, "1951": { "attributeID": 1951, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Shares cost bonus with other structures in this set", "displayWhenZero": 0, "highIsGood": 1, "name": "industryStructureCostBonusSet", "published": 0, "stackable": 1 }, "1952": { "attributeID": 1952, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Build cost multiplier", "displayName_de": "Fertigungskosten-Multiplikator", "displayName_en-us": "Build Cost Multiplier", "displayName_es": "Multiplicador de coste de construcción", "displayName_fr": "Multiplicateur de coût de construction", "displayName_it": "Build Cost Multiplier", "displayName_ja": "製造コスト乗数", "displayName_ko": "건설 비용 배수", "displayName_ru": "Коэффициент стоимости постройки", "displayName_zh": "建造成本系数", "displayNameID": 295803, "displayWhenZero": 0, "highIsGood": 1, "name": "industryStructureCostBonus", "published": 1, "stackable": 1, "unitID": 104 }, "1954": { "attributeID": 1954, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplies the job cost for this blueprint type by the specified value", "displayWhenZero": 0, "highIsGood": 1, "name": "industryJobCostMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "1955": { "attributeID": 1955, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is a bookkeeping attribute for blueprints, which will hopefully be deprecated by the end of 2014", "displayWhenZero": 0, "highIsGood": 1, "name": "industryBlueprintRank", "published": 0, "stackable": 1 }, "1956": { "attributeID": 1956, "dataType": 4, "defaultValue": 0.0, "description": "This item of clothing does not allow the category specified to be equipped with this item. It will be removed", "displayName_de": "Benötigt keinen Kleidungstyp", "displayName_en-us": "Does Not Require Clothing Type", "displayName_es": "No requiere tipo de ropa.", "displayName_fr": "Ne nécessite pas de type de vêtement", "displayName_it": "Does Not Require Clothing Type", "displayName_ja": "衣服タイプの指定なし", "displayName_ko": "의상 분류 필요 없음", "displayName_ru": "Тип одежды не требуется", "displayName_zh": "不要求服饰类别", "displayNameID": 296095, "displayWhenZero": 0, "highIsGood": 1, "name": "clothingRemovesCategory", "published": 0, "stackable": 1 }, "1957": { "attributeID": 1957, "dataType": 0, "defaultValue": 0.0, "description": "When evaluating if the character is dressed well enough, this item will be evaluated as it's not equiped", "displayName_de": "Benötigt anderen Kleidungstyp", "displayName_en-us": "Requires Other Clothing Types", "displayName_es": "Requiere otros tipos de ropa.", "displayName_fr": "Nécessite d'autres types de vêtement", "displayName_it": "Requires Other Clothing Types", "displayName_ja": "他の衣服タイプを指定する", "displayName_ko": "기타 의상 분류 필요함", "displayName_ru": "Требуются другие типы одежды", "displayName_zh": "需要其他服饰类别", "displayNameID": 296096, "displayWhenZero": 0, "highIsGood": 1, "name": "clothingRuleException", "published": 0, "stackable": 1 }, "1958": { "attributeID": 1958, "categoryID": 7, "dataType": 0, "defaultValue": 0.0, "description": "if set to 1 the ship is immune to directional scan", "displayWhenZero": 0, "highIsGood": 1, "name": "dscanImmune", "published": 1, "stackable": 1, "unitID": 137 }, "1959": { "attributeID": 1959, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Speed bonus when doing invention or reverse engineering", "displayName_de": "Erfindungs-/Nachkonstruktionsgeschwindigkeit", "displayName_en-us": "Invention/reverse engineering speed", "displayName_es": "Velocidad de invención/ingeniería inversa", "displayName_fr": "Vitesse d'invention/de rétro-ingénierie", "displayName_it": "Invention/reverse engineering speed", "displayName_ja": "発明/リバースエンジニアリング速度", "displayName_ko": "인벤션/역설계 속도", "displayName_ru": "Скорость модернизации/инженерного ретроанализа", "displayName_zh": "发明/逆向工程速度", "displayNameID": 296254, "displayWhenZero": 0, "highIsGood": 1, "name": "inventionReverseEngineeringResearchSpeed", "published": 1, "stackable": 1 }, "1961": { "attributeID": 1961, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "A bonus to all industry job times for the advanced industry skill", "displayName_de": "Bonus auf die Dauer von Industrieaufträgen", "displayName_en-us": "Industry Job Length Bonus", "displayName_es": "Bonificación de duración de trabajos de industria", "displayName_fr": "Bonus de temps pour un travail industriel", "displayName_it": "Industry Job Length Bonus", "displayName_ja": "生産ジョブの長さに対するボーナス", "displayName_ko": "산업 직업 유지 기간 보너스", "displayName_ru": "Влияние на срок исполнения промышленного проекта", "displayName_zh": "工业项目长度加成", "displayNameID": 296255, "displayWhenZero": 0, "highIsGood": 1, "name": "advancedIndustrySkillIndustryJobTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "1966": { "attributeID": 1966, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Energiekriegsführungsmodifizierer", "displayName_en-us": "Energy warfare modifier", "displayName_es": "Modificador de guerra de energía", "displayName_fr": "Modificateur de guerre d'énergie", "displayName_it": "Energy warfare modifier", "displayName_ja": "エネルギー艦船乗数", "displayName_ko": "에너지전 보정치", "displayName_ru": "Влияние на работу дистанционных систем перераспределения заряда накопителя", "displayName_zh": "能量战系数", "displayNameID": 296291, "displayWhenZero": 0, "highIsGood": 1, "name": "energyWarfareStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1967": { "attributeID": 1967, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsradius-Multiplikator", "displayName_en-us": "Explosion radius multiplier", "displayName_es": "Multiplicador de radio de explosión", "displayName_fr": "Multiplicateur du rayon d'explosion", "displayName_it": "Explosion radius multiplier", "displayName_ja": "爆発半径乗数", "displayName_ko": "폭발반경 배수", "displayName_ru": "Влияние на сигнатуру взрыва", "displayName_zh": "爆炸半径系数", "displayNameID": 296298, "displayWhenZero": 0, "highIsGood": 1, "name": "aoeCloudSizeMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1968": { "attributeID": 1968, "categoryID": 21, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Zielmarkierung-Effektivitätsmultiplikator", "displayName_en-us": "Target painter effectiveness multiplier", "displayName_es": "Multiplicador de eficacia de reveladores de objetivo", "displayName_fr": "Multiplicateur d'efficacité du marqueur de cible", "displayName_it": "Target painter effectiveness multiplier", "displayName_ja": "ターゲットペインターの効果乗数", "displayName_ko": "타겟 페인터 효율성 배수", "displayName_ru": "Влияние на эффективность действия систем подсветки целей", "displayName_zh": "目标标记装置效果系数", "displayNameID": 296300, "displayWhenZero": 0, "highIsGood": 1, "name": "targetPainterStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1969": { "attributeID": 1969, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Stasisnetz-Stärkemultiplikator", "displayName_en-us": "Stasis Webifier strength multiplier", "displayName_es": "Multiplicador de intensidad de red ralentizadora", "displayName_fr": "Multiplicateur de la force du générateur de stase", "displayName_it": "Stasis Webifier strength multiplier", "displayName_ja": "ステイシスウェビファイア強度乗数", "displayName_ko": "스테이시스 웹 생성기 강도 배수", "displayName_ru": "Влияние на эффективность стазис-индукторов", "displayName_zh": "停滞缠绕光束强度系数", "displayNameID": 296302, "displayWhenZero": 0, "highIsGood": 1, "name": "stasisWebStrengthMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1970": { "attributeID": 1970, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Security status restriction, preventing ships from entering high sec and modules from being activated.", "displayName_de": "Im Hochsicherheitsraum gesperrt", "displayName_en-us": "Banned in High Sec Space", "displayName_es": "Prohibido en espacio de seguridad alta", "displayName_fr": "Banni en espace de haute sécurité", "displayName_it": "Banned in High Sec Space", "displayName_ja": "ハイセク宙域では禁止", "displayName_ko": "하이 시큐리티 출입 금지 구역", "displayName_ru": "Под запретом в системах с высокой СС", "displayName_zh": "禁止进入高安全星系", "displayNameID": 296756, "displayWhenZero": 0, "highIsGood": 1, "name": "disallowInHighSec", "published": 1, "stackable": 1, "unitID": 137 }, "1971": { "attributeID": 1971, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier for jump fatigue distance", "displayName_de": "Sprungerschöpfungsmultiplikator", "displayName_en-us": "Jump Fatigue Multiplier", "displayName_es": "Multiplicador de fatiga de salto", "displayName_fr": "Multiplicateur de l'épuisement de saut", "displayName_it": "Jump Fatigue Multiplier", "displayName_ja": "ジャンプ疲労乗数", "displayName_ko": "점프 피로도 배수", "displayName_ru": "Множитель усталости от гиперперехода", "displayName_zh": "跳跃疲劳系数", "displayNameID": 296837, "displayWhenZero": 0, "highIsGood": 1, "name": "jumpFatigueMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1972": { "attributeID": 1972, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Multiplier for jump fatigue distance, applied to characters going through a bridge provided by this type.", "displayWhenZero": 0, "highIsGood": 1, "name": "jumpThroughFatigueMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "1973": { "attributeID": 1973, "categoryID": 7, "dataType": 4, "defaultValue": -1000.0, "description": "If greater than zero than the ship cannot activate gates. Set this to 0 on a type if you want it to be gate scramble-able.", "displayName_de": "Tor-Unterbrechungsstatus", "displayName_en-us": "Gate Scramble Status", "displayName_es": "Estado de inhibición de portales", "displayName_fr": "Statut du brouillage de portail", "displayName_it": "Gate Scramble Status", "displayName_ja": "ゲートスクランブルステータス", "displayName_ko": "게이트 스크램블러 상태", "displayName_ru": "Состояние глушения связи с гиперворотами", "displayName_zh": "星门扰频状态", "displayNameID": 297045, "displayWhenZero": 0, "highIsGood": 1, "name": "gateScrambleStatus", "published": 1, "stackable": 1 }, "1974": { "attributeID": 1974, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "Amount to modify ships gate scramble status by.", "displayName_de": "Tor-Unterbrechungsstärke", "displayName_en-us": "Gate Scramble Strength", "displayName_es": "Intensidad de inhibición de portales", "displayName_fr": "Puissance du brouillage de portail", "displayName_it": "Gate Scramble Strength", "displayName_ja": "ゲートスクランブル強度", "displayName_ko": "게이트 스크램블러 강도", "displayName_ru": "Мощность глушения связи с гиперворотами", "displayName_zh": "星门扰频强度", "displayNameID": 297046, "displayWhenZero": 0, "highIsGood": 1, "name": "gateScrambleStrength", "published": 1, "stackable": 1 }, "1975": { "attributeID": 1975, "dataType": 3, "defaultValue": 1.0, "description": "Dogma helper version of basic attribute, used to set published flag.", "displayWhenZero": 0, "highIsGood": 1, "name": "published", "published": 0, "stackable": 1 }, "1978": { "attributeID": 1978, "dataType": 5, "defaultValue": 0.0, "description": "Display name is misleading, this attribute is used only for Shield and Armor, but for convenience sake only this one is used.", "displayName_de": "Globale Resistenzreduktion", "displayName_en-us": "Global Resistance Reduction", "displayName_es": "Reducción de la resistencia global", "displayName_fr": "Réduction de résistance globale", "displayName_it": "Global Resistance Reduction", "displayName_ja": "グローバルレジスタンス低減", "displayName_ko": "글로벌 저항력 감소", "displayName_ru": "Снижение общей сопротивляемости", "displayName_zh": "全体抗性减效", "displayNameID": 297080, "displayWhenZero": 0, "highIsGood": 1, "name": "resistanceKiller", "published": 1, "stackable": 1, "unitID": 105 }, "1979": { "attributeID": 1979, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "resistanceKillerHull", "published": 0, "stackable": 1 }, "1980": { "attributeID": 1980, "categoryID": 31, "dataType": 2, "defaultValue": 1.0, "description": "Controls how quickly an asteroid radius increases as its quantity grows.", "displayName_de": "Asteroidradius-Multiplizierer", "displayName_en-us": "Asteroid radius size multiplier", "displayName_es": "Multiplicador del radio del asteroide", "displayName_fr": "Multiplicateur de la taille du rayon de l'astéroïde", "displayName_it": "Asteroid radius size multiplier", "displayName_ja": "アステロイド半径乗数", "displayName_ko": "소행성 크기 배수", "displayName_ru": "Множитель радиуса астероидов", "displayName_zh": "小行星半径系数", "displayNameID": 297117, "displayWhenZero": 0, "highIsGood": 1, "name": "asteroidRadiusGrowthFactor", "published": 0, "stackable": 1 }, "1981": { "attributeID": 1981, "categoryID": 31, "dataType": 2, "defaultValue": 90.0, "description": "Sets the radius of the asteroid ball when it has a quantity of 1 unit", "displayName_de": "Asteroideneinheitenradius", "displayName_en-us": "Asteroid unit radius", "displayName_es": "Radio de unidad de asteroide", "displayName_fr": "Rayon de l'unité d'astéroïde", "displayName_it": "Asteroid unit radius", "displayName_ja": "アステロイドユニット半径", "displayName_ko": "소행성 유닛 반경", "displayName_ru": "Радиус астероида", "displayName_zh": "小行星单位半径", "displayNameID": 297127, "displayWhenZero": 0, "highIsGood": 1, "name": "asteroidRadiusUnitSize", "published": 0, "stackable": 1, "unitID": 1 }, "1982": { "attributeID": 1982, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Skill bonus per level to manufacturing time efficiency. Only applies to skills required to manufacture the blueprint.", "displayName_de": "Fertigungszeitbonus", "displayName_en-us": "Manufacturing Time Bonus", "displayName_es": "Bonificación de tiempo de fabricación", "displayName_fr": "Bonus de temps de production", "displayName_it": "Manufacturing Time Bonus", "displayName_ja": "製造時間ボーナス", "displayName_ko": "제조 시간 보너스", "displayName_ru": "Влияние на скорость производства", "displayName_zh": "制造时间加成", "displayNameID": 297540, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "manufactureTimePerLevel", "published": 1, "stackable": 1, "unitID": 105 }, "1983": { "attributeID": 1983, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "freighterBonusO1", "published": 1, "stackable": 1 }, "1984": { "attributeID": 1984, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "freighterBonusO2", "published": 1, "stackable": 1 }, "1985": { "attributeID": 1985, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "Time in milliseconds that it takes to switch stances.", "displayName_de": "Abklingzeit zwischen dem Moduswechsel", "displayName_en-us": "Cooldown between mode switching", "displayName_es": "Espera entre cambios de modo", "displayName_fr": "Refroidissement entre deux modes", "displayName_it": "Cooldown between mode switching", "displayName_ja": "モードを切り替える間の冷却", "displayName_ko": "모드 전환 대기시간", "displayName_ru": "Время до переключения режима", "displayName_zh": "模式切换冷却时间", "displayNameID": 297806, "displayWhenZero": 0, "highIsGood": 1, "name": "stanceSwitchTime", "published": 1, "stackable": 1, "unitID": 101 }, "1986": { "attributeID": 1986, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerAmarr1", "published": 0, "stackable": 1 }, "1987": { "attributeID": 1987, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerAmarr2", "published": 0, "stackable": 1 }, "1988": { "attributeID": 1988, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerAmarr3", "published": 0, "stackable": 1 }, "1989": { "attributeID": 1989, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusT3ProbeCPU", "published": 0, "stackable": 1 }, "1990": { "attributeID": 1990, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeMaxRangePostDiv", "published": 0, "stackable": 1 }, "1991": { "attributeID": 1991, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeMaxTargetRangePostDiv", "published": 0, "stackable": 1 }, "1992": { "attributeID": 1992, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeRadarStrengthPostDiv", "published": 0, "stackable": 1 }, "1993": { "attributeID": 1993, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeScanResPostDiv", "published": 0, "stackable": 1 }, "1994": { "attributeID": 1994, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeLadarStrengthPostDiv", "published": 0, "stackable": 1 }, "1995": { "attributeID": 1995, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeGravimetricStrengthPostDiv", "published": 0, "stackable": 1 }, "1996": { "attributeID": 1996, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeMagnetometricStrengthPostDiv", "published": 0, "stackable": 1 }, "1997": { "attributeID": 1997, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeEmResistancePostDiv", "published": 0, "stackable": 1 }, "1998": { "attributeID": 1998, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeExplosiveResistancePostDiv", "published": 0, "stackable": 1 }, "1999": { "attributeID": 1999, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeThermicResistancePostDiv", "published": 0, "stackable": 1 }, "2000": { "attributeID": 2000, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeKineticResistancePostDiv", "published": 0, "stackable": 1 }, "2001": { "attributeID": 2001, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeSignatureRadiusPostDiv", "published": 0, "stackable": 1 }, "2002": { "attributeID": 2002, "categoryID": 17, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeAgilityPostDiv", "published": 0, "stackable": 1 }, "2003": { "attributeID": 2003, "categoryID": 17, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeVelocityPostDiv", "published": 0, "stackable": 1 }, "2004": { "attributeID": 2004, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerMinmatar1", "published": 0, "stackable": 1 }, "2005": { "attributeID": 2005, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerMinmatar2", "published": 0, "stackable": 1 }, "2006": { "attributeID": 2006, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerMinmatar3", "published": 0, "stackable": 1 }, "2007": { "attributeID": 2007, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "modeMWDSigPenaltyPostDiv", "published": 0, "stackable": 1 }, "2008": { "attributeID": 2008, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "modeTrackingPostDiv", "published": 0, "stackable": 1 }, "2009": { "attributeID": 2009, "categoryID": 33, "dataType": 5, "defaultValue": 0.0, "description": "Used for NPCs to replicate cooldown functionality for the super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponDuration", "published": 1, "stackable": 1 }, "2010": { "attributeID": 2010, "categoryID": 33, "dataType": 5, "defaultValue": 0.0, "description": "Used for NPCs to replicate damage for the super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponEmDamage", "published": 1, "stackable": 1 }, "2011": { "attributeID": 2011, "categoryID": 33, "dataType": 5, "defaultValue": 0.0, "description": "Used for NPCs to replicate damage for the super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponKineticDamage", "published": 1, "stackable": 1 }, "2012": { "attributeID": 2012, "categoryID": 33, "dataType": 5, "defaultValue": 0.0, "description": "Used for NPCs to replicate damage for the super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponThermalDamage", "published": 1, "stackable": 1 }, "2013": { "attributeID": 2013, "categoryID": 33, "dataType": 5, "defaultValue": 0.0, "description": "Used for NPCs to replicate damage for the super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponExplosiveDamage", "published": 1, "stackable": 1 }, "2014": { "attributeID": 2014, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGC3", "published": 0, "stackable": 1 }, "2015": { "attributeID": 2015, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerCaldari1", "published": 0, "stackable": 1 }, "2016": { "attributeID": 2016, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerCaldari2", "published": 0, "stackable": 1 }, "2017": { "attributeID": 2017, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerCaldari3", "published": 0, "stackable": 1 }, "2018": { "attributeID": 2018, "dataType": 4, "defaultValue": 0.0, "description": "Autogenerated skill attribute, 2015", "displayWhenZero": 0, "highIsGood": 1, "name": "2015", "published": 1, "stackable": 1 }, "2019": { "attributeID": 2019, "dataType": 3, "defaultValue": 0.0, "description": "When set to 1 this attribute allows Spawn Containers to refill and relock. ", "displayWhenZero": 0, "highIsGood": 1, "name": "allowRefills", "published": 1, "stackable": 1 }, "2020": { "attributeID": 2020, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAT", "published": 0, "stackable": 1 }, "2021": { "attributeID": 2021, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "entosisDurationMultiplier", "published": 0, "stackable": 1 }, "2023": { "attributeID": 2023, "categoryID": 7, "dataType": 5, "defaultValue": 1399.0, "description": "", "displayName_de": "Explosionsradius-Bonusmodifikator", "displayName_en-us": "Modification of Explosion Radius Bonus", "displayName_es": "Mod. de bonificación de radio de explosión", "displayName_fr": "Bonus de modification de rayon d'explosion", "displayName_it": "Modification of Explosion Radius Bonus", "displayName_ja": "爆発半径ボーナスの変更", "displayName_ko": "폭발 반경 보너스 개조", "displayName_ru": "Изменение влияния на сигнатуру взрыва", "displayName_zh": "爆炸半径加成修正", "displayNameID": 309645, "displayWhenZero": 0, "highIsGood": 1, "name": "aoeCloudSizeBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2024": { "attributeID": 2024, "categoryID": 7, "dataType": 5, "defaultValue": 1399.0, "description": "", "displayName_de": "Explosionsgeschwindigkeit-Bonusmodifikator", "displayName_en-us": "Modification of Explosion Velocity Bonus", "displayName_es": "Modificación de bonificación de velocidad de explosión", "displayName_fr": "Bonus de modification de vitesse d'explosion", "displayName_it": "Modification of Explosion Velocity Bonus", "displayName_ja": "爆発速度ボーナスの変更", "displayName_ko": "폭발 속도 보너스 개조", "displayName_ru": "Изменение влияния на скорость взрыва", "displayName_zh": "爆炸速度加成修正", "displayNameID": 309646, "displayWhenZero": 0, "highIsGood": 1, "name": "aoeVelocityBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2025": { "attributeID": 2025, "categoryID": 7, "dataType": 5, "defaultValue": 1399.0, "description": "", "displayName_de": "Lenkwaffengeschwindigkeit-Bonusmodifikator", "displayName_en-us": "Modification of Missile Velocity Bonus", "displayName_es": "Modificación de bonificación de velocidad de misiles", "displayName_fr": "Bonus de modification de vitesse de missile", "displayName_it": "Modification of Missile Velocity Bonus", "displayName_ja": "ミサイル速度ボーナスの変更", "displayName_ko": "미사일 속도 보너스 개조", "displayName_ru": "Изменение влияния на скорость полёта ракет", "displayName_zh": "导弹速度加成修正", "displayNameID": 309647, "displayWhenZero": 0, "highIsGood": 1, "name": "missileVelocityBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2026": { "attributeID": 2026, "categoryID": 7, "dataType": 5, "defaultValue": 1399.0, "description": "", "displayName_de": "Flugdauer-Bonusmodifikator", "displayName_en-us": "Modification of Flight Time Bonus", "displayName_es": "Modificación de bonificación de tiempo de vuelo", "displayName_fr": "Bonus de modification du temps de vol", "displayName_it": "Modification of Flight Time Bonus", "displayName_ja": "航行時間ボーナスの変更", "displayName_ko": "비행 시간 보너스 개조", "displayName_ru": "Изменение влияния на запас полётного времени ракет", "displayName_zh": "飞行时间加成修正", "displayNameID": 309648, "displayWhenZero": 0, "highIsGood": 1, "name": "explosionDelayBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2027": { "attributeID": 2027, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerGallente1", "published": 0, "stackable": 1 }, "2028": { "attributeID": 2028, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerGallente2", "published": 0, "stackable": 1 }, "2029": { "attributeID": 2029, "categoryID": 9, "dataType": 0, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTacticalDestroyerGallente3", "published": 0, "stackable": 1 }, "2030": { "attributeID": 2030, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "modeArmorRepDurationPostDiv", "published": 0, "stackable": 1 }, "2031": { "attributeID": 2031, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "modeMWDVelocityPostDiv", "published": 0, "stackable": 1 }, "2032": { "attributeID": 2032, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "modeMWDCapPostDiv", "published": 0, "stackable": 1 }, "2033": { "attributeID": 2033, "categoryID": 17, "dataType": 5, "defaultValue": 1000000.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "speedLimit", "published": 0, "stackable": 1, "unitID": 11 }, "2034": { "attributeID": 2034, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Schildschaden (pro Sekunde)", "displayName_en-us": "Shield Damage Limit (per second)", "displayName_es": "Límite de daño de escudo (por seg.)", "displayName_fr": "Limite aux dégâts du bouclier (par seconde)", "displayName_it": "Shield Damage Limit (per second)", "displayName_ja": "シールドダメージの上限(毎秒)", "displayName_ko": "초당 실드 피해 한계", "displayName_ru": "Порог эффективности вражеского огня по щитам (в секунду)", "displayName_zh": "护盾伤害上限(每秒)", "displayNameID": 309810, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldDamageLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2035": { "attributeID": 2035, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Panzerungsschaden (pro Sekunde)", "displayName_en-us": "Armor Damage Limit (per second)", "displayName_es": "Límite de daño de blindaje (por seg.)", "displayName_fr": "Limite aux dégâts du blindage (par seconde)", "displayName_it": "Armor Damage Limit (per second)", "displayName_ja": "アーマーダメージの上限(毎秒)", "displayName_ko": "초당 장갑 피해 한계", "displayName_ru": "Порог эффективности вражеского огня по броне (в секунду)", "displayName_zh": "装甲伤害上限(每秒)", "displayNameID": 309811, "displayWhenZero": 0, "highIsGood": 1, "name": "armorDamageLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2036": { "attributeID": 2036, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Strukturenschaden (pro Sekunde)", "displayName_en-us": "Structure Damage Limit (per second)", "displayName_es": "Límite de daño de estructura (por seg.)", "displayName_fr": "Limite des dégâts de structure (par seconde)", "displayName_it": "Structure Damage Limit (per second)", "displayName_ja": "ストラクチャダメージの上限(毎秒)", "displayName_ko": "초당 구조물 피해 한계", "displayName_ru": "Порог эффективности вражеского огня по корпусу (в секунду)", "displayName_zh": "结构伤害上限(每秒)", "displayNameID": 309812, "displayWhenZero": 0, "highIsGood": 1, "name": "structureDamageLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2037": { "attributeID": 2037, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Schildreparatur (pro Sekunde)", "displayName_en-us": "Shield Repair Limit (per second)", "displayName_es": "Límite de reparación de escudo (por seg.)", "displayName_fr": "Limite de réparation du bouclier (par seconde)", "displayName_it": "Shield Repair Limit (per second)", "displayName_ja": "シールドリペアの上限(毎秒)", "displayName_ko": "초당 실드 수리 한계", "displayName_ru": "Порог восстановления щитов (в секунду)", "displayName_zh": "护盾恢复上限(每秒)", "displayNameID": 309813, "displayWhenZero": 0, "highIsGood": 1, "name": "shieldRepairLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2038": { "attributeID": 2038, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Panzerungsreparatur (pro Sekunde)", "displayName_en-us": "Armor Repair Limit (per second)", "displayName_es": "Límite de reparación de blindaje (por seg.)", "displayName_fr": "Limite de réparation du blindage (par seconde)", "displayName_it": "Armor Repair Limit (per second)", "displayName_ja": "アーマーリペアの上限(毎秒)", "displayName_ko": "초당 장갑 수리 한계", "displayName_ru": "Порог восстановления брони (в секунду)", "displayName_zh": "装甲维修上限(每秒)", "displayNameID": 309814, "displayWhenZero": 0, "highIsGood": 1, "name": "armorRepairLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2039": { "attributeID": 2039, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Strukturreparatur (pro Sekunde)", "displayName_en-us": "Structure Repair Limit (per second)", "displayName_es": "Límite de reparación de estructuras (por seg.)", "displayName_fr": "Limite de réparation de structure (par seconde)", "displayName_it": "Structure Repair Limit (per second)", "displayName_ja": "ストラクチャリペアの上限(毎秒)", "displayName_ko": "초당 구조물 수리 한계", "displayName_ru": "Порог восстановления корпуса (в секунду)", "displayName_zh": "结构维修上限(每秒)", "displayNameID": 309815, "displayWhenZero": 0, "highIsGood": 1, "name": "structureRepairLimit", "published": 1, "stackable": 1, "unitID": 113 }, "2041": { "attributeID": 2041, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "entosisCPUAdd", "published": 0, "stackable": 1 }, "2042": { "attributeID": 2042, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "entosisCPUPenalty", "published": 0, "stackable": 1 }, "2043": { "attributeID": 2043, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusCBC", "published": 0, "stackable": 1 }, "2044": { "attributeID": 2044, "categoryID": 29, "dataType": 5, "defaultValue": 0.0, "description": "distance from maximum range at which effectiveness has fallen by half", "displayName_de": "Präzisionsabfall-Effektivität", "displayName_en-us": "Effectiveness Falloff", "displayName_es": "Alcance efectivo de eficacia", "displayName_fr": "Déperdition d'efficacité", "displayName_it": "Effectiveness Falloff", "displayName_ja": "効力減少", "displayName_ko": "효과 유효사거리", "displayName_ru": "Добавочная дальность действия", "displayName_zh": "效果失准范围", "displayNameID": 310053, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "falloffEffectiveness", "published": 1, "stackable": 0, "unitID": 1 }, "2045": { "attributeID": 2045, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance against Energy Neutralizing and Nosferatu", "displayName_de": "Widerstand gegen Energiespeicherangriffe", "displayName_en-us": "Capacitor Warfare Resistance", "displayName_es": "Resistencia guerra condensadores", "displayName_fr": "Résistance à la guerre de capaciteur", "displayName_it": "Capacitor Warfare Resistance", "displayName_ja": "キャパシタ戦闘レジスタンス", "displayName_ko": "캐패시터 저항", "displayName_ru": "Сопротивление накопителя нейтрализирующему воздействию", "displayName_zh": "电容战抗性", "displayNameID": 310054, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1400, "name": "energyWarfareResistance", "published": 1, "stackable": 0, "tooltipDescription_de": "Verringert die Energiespeicherentleerung durch feindliche Energieneutralisierer und Nosferatus", "tooltipDescription_en-us": "Decreases the capacitor drained by hostile energy neutralizers and nosferatus", "tooltipDescription_es": "Reduce el condensador drenado por los neutralizadores energéticos y nosferatus hostiles.", "tooltipDescription_fr": "Réduit le capaciteur drainé par les neutraliseurs d'énergie et les Nosferatus hostiles", "tooltipDescription_it": "Decreases the capacitor drained by hostile energy neutralizers and nosferatus", "tooltipDescription_ja": "敵のニュートラライザーやノスフェラトゥによって減らされるキャパシタを減少させる", "tooltipDescription_ko": "적이 에너지 뉴트럴라이저 및 노스페라투로 흡수할 수 있는 캐패시터 용량이 감소합니다.", "tooltipDescription_ru": "Снижает объём энергии, выкачиваемой вражескими нейтрализаторами заряда и модулями паразитной подзарядки", "tooltipDescription_zh": "减少敌对能量中和器和掠能器吸取的电容", "tooltipDescriptionID": 895866, "tooltipTitleID": 895865, "unitID": 108 }, "2046": { "attributeID": 2046, "categoryID": 33, "dataType": 5, "defaultValue": 250000.0, "description": "Used for chance based accuracy hit calculation for entity super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponMaxRange", "published": 0, "stackable": 1 }, "2047": { "attributeID": 2047, "categoryID": 33, "dataType": 5, "defaultValue": 250000.0, "description": "Used for chance based accuracy hit calculation for entity super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponFallOff", "published": 0, "stackable": 1 }, "2048": { "attributeID": 2048, "categoryID": 33, "dataType": 5, "defaultValue": 1.0, "description": "Used for chance based accuracy hit calculation for entity super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponTrackingSpeed", "published": 0, "stackable": 1 }, "2049": { "attributeID": 2049, "categoryID": 33, "dataType": 5, "defaultValue": 20.0, "description": "Used for chance based accuracy hit calculation for entity super weapon.", "displayWhenZero": 0, "highIsGood": 1, "name": "entitySuperWeaponOptimalSignatureRadius", "published": 0, "stackable": 1 }, "2055": { "attributeID": 2055, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "This defines the total capacity of fighters allowed in the fighter bay of the ship", "displayName_de": "Jägerhangarkapazität", "displayName_en-us": "Fighter Hangar Capacity", "displayName_es": "Capacidad del hangar de cazas", "displayName_fr": "Capacité du hangar de chasseur", "displayName_it": "Fighter Hangar Capacity", "displayName_ja": "戦闘機ハンガー容量", "displayName_ko": "파이터 격납고 크기", "displayName_ru": "Объём отсека для истребителей", "displayName_zh": "铁骑舰载机挂舱容量", "displayNameID": 310095, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1084, "name": "fighterCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "2056": { "attributeID": 2056, "categoryID": 1, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Dienstmodul-Slots", "displayName_en-us": "Service Slots", "displayName_es": "Ranuras de servicio", "displayName_fr": "Emplacements de service", "displayName_it": "Service Slots", "displayName_ja": "サービススロット", "displayName_ko": "서비스 슬롯", "displayName_ru": "Служебные разъёмы", "displayName_zh": "服务槽位", "displayNameID": 310103, "displayWhenZero": 0, "highIsGood": 1, "name": "serviceSlots", "published": 1, "stackable": 1, "unitID": 122 }, "2058": { "attributeID": 2058, "dataType": 4, "defaultValue": 0.0, "description": "This item of clothing covers multiple areas of the body, so the category of clothes specified by this attribute is no longer mandatory", "displayWhenZero": 0, "highIsGood": 1, "name": "clothingAlsoCoversCategory2", "published": 0, "stackable": 1 }, "2059": { "attributeID": 2059, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCommandDestroyer1", "published": 1, "stackable": 1 }, "2060": { "attributeID": 2060, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCommandDestroyer2", "published": 1, "stackable": 1 }, "2061": { "attributeID": 2061, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCommandDestroyer3", "published": 1, "stackable": 1 }, "2063": { "attributeID": 2063, "dataType": 4, "defaultValue": 0.0, "description": "This item of clothing does not allow the category specified to be equipped with this item. It will be removed", "displayName_de": "Benötigt keinen Kleidungstyp", "displayName_en-us": "Does Not Require Clothing Type", "displayName_es": "No requiere tipo de ropa.", "displayName_fr": "Ne nécessite pas de type de vêtement", "displayName_it": "Does Not Require Clothing Type", "displayName_ja": "衣服タイプの指定なし", "displayName_ko": "의상 분류 필요 없음", "displayName_ru": "Тип одежды не требуется", "displayName_zh": "不要求服饰类别", "displayNameID": 310113, "displayWhenZero": 0, "highIsGood": 1, "name": "clothingRemovesCategory2", "published": 0, "stackable": 1 }, "2064": { "attributeID": 2064, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "role bonus for command destroyers", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusCD", "published": 1, "stackable": 1 }, "2065": { "attributeID": 2065, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装備可能:", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 310115, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup09", "published": 1, "stackable": 1, "unitID": 115 }, "2066": { "attributeID": 2066, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "distance jumped on mjd activation in meters", "displayName_de": "Sprungdistanz", "displayName_en-us": "Jump Distance", "displayName_es": "Distancia de salto", "displayName_fr": "Distance de saut", "displayName_it": "Jump Distance", "displayName_ja": "ジャンプ距離", "displayName_ko": "점프 거리", "displayName_ru": "Дальность гиперперехода", "displayName_zh": "跳跃距离", "displayNameID": 310230, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "mjdJumpRange", "published": 1, "stackable": 1, "tooltipTitleID": 310231, "unitID": 1 }, "2067": { "attributeID": 2067, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "description": "range effected by mjfg scoop", "displayName_de": "Wirkungsbereichradius", "displayName_en-us": "Area Effect Radius", "displayName_es": "Radio de acción", "displayName_fr": "Rayon de la zone d'effet", "displayName_it": "Area Effect Radius", "displayName_ja": "エリア効果半径", "displayName_ko": "유효 반경", "displayName_ru": "Радиус области действия", "displayName_zh": "范围效果半径", "displayNameID": 310232, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "mjfgRadius", "published": 1, "stackable": 1, "tooltipTitleID": 310233, "unitID": 1 }, "2069": { "attributeID": 2069, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusElectronicAttackShip3", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusElectronicAttackShip3", "published": 0, "stackable": 1 }, "2070": { "attributeID": 2070, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "shipBonusAC3", "published": 0, "stackable": 1 }, "2071": { "attributeID": 2071, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Strength at which objects are pushed away from the bumping module point of impact", "displayWhenZero": 0, "highIsGood": 1, "name": "bumpingStrength", "published": 0, "stackable": 1 }, "2072": { "attributeID": 2072, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Gravimetric Strength bonus", "displayName_de": "Modifikation des Bonus auf gravimetrische Stärke", "displayName_en-us": "Modification of Gravimetric Strength Bonus", "displayName_es": "Bonificación de modificación de fuerza gravimétrica", "displayName_fr": "Modification du bonus à la puissance gravimétrique", "displayName_it": "Modification of Gravimetric Strength Bonus", "displayName_ja": "重力強度ボーナス修正値", "displayName_ko": "중력장 강도 보너스 개조", "displayName_ru": "Изменение силы глушения гравиметрических сенсоров", "displayName_zh": "引力强度加成调整系数", "displayNameID": 310202, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3226, "name": "scanGravimetricStrengthBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2073": { "attributeID": 2073, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Lader Strength bonus", "displayName_de": "Modifikation des Bonus auf Ladar-Stärke", "displayName_en-us": "Modification of Ladar Strength Bonus", "displayName_es": "Bonificación de modificación de potencia lidar", "displayName_fr": "Modification du bonus à la puissance ladar", "displayName_it": "Modification of Ladar Strength Bonus", "displayName_ja": "光学強度ボーナス修正値", "displayName_ko": "라이다 강도 보너스 개조", "displayName_ru": "Изменение силы глушения ладарных сенсоров", "displayName_zh": "光雷达强度加成调整系数", "displayNameID": 310203, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3228, "name": "scanLadarStrengthBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2074": { "attributeID": 2074, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Magnetometric Strength bonus", "displayName_de": "Modifikation des Bonus auf magnetometrische Stärke", "displayName_en-us": "Modification of Magnetometric Strength Bonus", "displayName_es": "Bonificación de modificación de fuerza magnetométrica", "displayName_fr": "Modification du bonus à la puissance magnétométrique", "displayName_it": "Modification of Magnetometric Strength Bonus", "displayName_ja": "磁気測定強度ボーナス修正値", "displayName_ko": "자기 강도 보너스 개조", "displayName_ru": "Изменение силы глушения магнитометрических сенсоров", "displayName_zh": "磁力强度加成调整系数", "displayNameID": 310204, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3227, "name": "scanMagnetometricStrengthBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2075": { "attributeID": 2075, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Radar Strength bonus", "displayName_de": "Modifikation des Bonus auf Radar-Stärke", "displayName_en-us": "Modification of Radar Strength Bonus", "displayName_es": "Bonificación de modificación de fuerza del radar", "displayName_fr": "Modification du bonus à la puissance du radar", "displayName_it": "Modification of Radar Strength Bonus", "displayName_ja": "電波強度ボーナス修正値", "displayName_ko": "레이더 강도 보너스 개조", "displayName_ru": "Изменение силы глушения радарных сенсоров", "displayName_zh": "雷达强度加成调整系数", "displayNameID": 310205, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3229, "name": "scanRadarStrengthBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2076": { "attributeID": 2076, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)と使用", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 310214, "displayWhenZero": 0, "highIsGood": 1, "name": "launcherGroup4", "published": 1, "stackable": 1, "unitID": 115 }, "2077": { "attributeID": 2077, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)と使用", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 310215, "displayWhenZero": 0, "highIsGood": 1, "name": "launcherGroup5", "published": 1, "stackable": 1, "unitID": 115 }, "2078": { "attributeID": 2078, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "One of the groups of launcher this charge can be loaded into.", "displayName_de": "Benutzt mit (Werfergruppe)", "displayName_en-us": "Used with (Launcher Group)", "displayName_es": "Se usa con (grupo de lanzador)", "displayName_fr": "Utilisé avec (groupe de lanceur)", "displayName_it": "Used with (Launcher Group)", "displayName_ja": "(ランチャーグループ)と使用", "displayName_ko": "(런처) 탄약", "displayName_ru": "Используется с (группой модулей)", "displayName_zh": "配套使用(发射器类别)", "displayNameID": 310216, "displayWhenZero": 0, "highIsGood": 1, "name": "launcherGroup6", "published": 1, "stackable": 1, "unitID": 115 }, "2079": { "attributeID": 2079, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Sets Em damage taken by Armor. ", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen EM-Schaden festlegen", "displayName_en-us": "Set Armor EM Damage Resistance", "displayName_es": "Establecer resistencia de blindajes a daños electromagnéticos", "displayName_fr": "Définir la résistance du blindage aux dégâts EM", "displayName_it": "Set Armor EM Damage Resistance", "displayName_ja": "アーマーのEMダメージレジスタンスを設定する", "displayName_ko": "장갑 EM 저항력 설정", "displayName_ru": "Повышение сопротивляемости брони ЭМ-урону", "displayName_zh": "套件装甲电磁伤害抗性", "displayNameID": 310218, "displayWhenZero": 0, "highIsGood": 0, "name": "armorEmDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2080": { "attributeID": 2080, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Sets Explosive damage taken by Armor. ", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen Explosionsschaden festlegen", "displayName_en-us": "Set Armor Explosive Damage Resistance", "displayName_es": "Establecer resistencia de blindajes a daños explosivos", "displayName_fr": "Définir la résistance du blindage aux dégâts explosifs", "displayName_it": "Set Armor Explosive Damage Resistance", "displayName_ja": "アーマーのエクスプローシブダメージレジスタンスを設定する", "displayName_ko": "장갑 폭발 저항력 설정", "displayName_ru": "Повышение сопротивляемости брони фугасному урону", "displayName_zh": "套件装甲爆炸伤害抗性", "displayNameID": 310219, "displayWhenZero": 0, "highIsGood": 0, "name": "armorExplosiveDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2081": { "attributeID": 2081, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Sets Kinetic damage taken by Armor. ", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen Kinetikschaden festlegen", "displayName_en-us": "Set Armor Kinetic Damage Resistance", "displayName_es": "Establecer resistencia de blindajes a daños cinéticos", "displayName_fr": "Définir la résistance du blindage aux dégâts cinétiques", "displayName_it": "Set Armor Kinetic Damage Resistance", "displayName_ja": "アーマーのキネティックダメージレジスタンスを設定する", "displayName_ko": "장갑 키네틱 저항력 설정", "displayName_ru": "Повышение сопротивляемости брони кинетическому урону", "displayName_zh": "套件装甲动能伤害抗性", "displayNameID": 310220, "displayWhenZero": 0, "highIsGood": 1, "name": "armorKineticDamageResonancePostAssignment", "published": 1, "stackable": 1 }, "2082": { "attributeID": 2082, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Sets Thermal damage taken by Armor. ", "displayName_de": "Widerstandsfähigkeit der Panzerung gegen Thermalschaden festlegen", "displayName_en-us": "Set Armor Thermal Damage Resistance", "displayName_es": "Establecer resistencia de blindajes a daños térmicos", "displayName_fr": "Définir la résistance du blindage aux dégâts thermiques", "displayName_it": "Set Armor Thermal Damage Resistance", "displayName_ja": "アーマーのサーマルダメージレジスタンスを設定する", "displayName_ko": "장갑 열 저항력 설정", "displayName_ru": "Повышение сопротивляемости брони термическому урону", "displayName_zh": "套件装甲热能伤害抗性", "displayNameID": 310221, "displayWhenZero": 0, "highIsGood": 0, "name": "armorThermalDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2083": { "attributeID": 2083, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Sets Em damage taken by Shields. ", "displayName_de": "Widerstandsfähigkeit der Schilde gegen EM-Schaden festlegen", "displayName_en-us": "Set Shield EM Damage Resistance", "displayName_es": "Establecer resistencia de escudos a daños electromagnéticos", "displayName_fr": "Définir la résistance du bouclier aux dégâts EM", "displayName_it": "Set Shield EM Damage Resistance", "displayName_ja": "シールドのEMダメージレジスタンスを設定する", "displayName_ko": "실드 EM 저항력 설정", "displayName_ru": "Повышение сопротивляемости щитов ЭМ-урону", "displayName_zh": "套件护盾电磁伤害抗性", "displayNameID": 310222, "displayWhenZero": 0, "highIsGood": 0, "name": "shieldEmDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2084": { "attributeID": 2084, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Sets Explosive damage taken by shields. ", "displayName_de": "Widerstandsfähigkeit der Schilde gegen Explosionsschaden festlegen", "displayName_en-us": "Set Shield Explosive Damage Resistance", "displayName_es": "Establecer resistencia de escudos a daños explosivos", "displayName_fr": "Définir la résistance du bouclier aux dégâts explosifs", "displayName_it": "Set Shield Explosive Damage Resistance", "displayName_ja": "シールドのエクスプローシブダメージレジスタンスを設定する", "displayName_ko": "실드 폭발 저항력 설정", "displayName_ru": "Повышение сопротивляемости щитов фугасному урону", "displayName_zh": "套件护盾爆炸伤害抗性", "displayNameID": 310223, "displayWhenZero": 0, "highIsGood": 0, "name": "shieldExplosiveDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2085": { "attributeID": 2085, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Sets kinetic damage taken by Shields. ", "displayName_de": "Widerstandsfähigkeit der Schilde gegen Kinetikschaden festlegen", "displayName_en-us": "Set Shield Kinetic Damage Resistance", "displayName_es": "Establecer resistencia de escudos a daños cinéticos", "displayName_fr": "Définir la résistance du bouclier aux dégâts cinétiques", "displayName_it": "Set Shield Kinetic Damage Resistance", "displayName_ja": "シールドのキネティックダメージレジスタンスを設定する", "displayName_ko": "실드 키네틱 저항력 설정", "displayName_ru": "Повышение сопротивляемости щитов кинетическому урону", "displayName_zh": "套件护盾动能伤害抗性", "displayNameID": 310224, "displayWhenZero": 0, "highIsGood": 0, "name": "shieldKineticDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2086": { "attributeID": 2086, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "Sets Thermal damage taken by Shields. ", "displayName_de": "Widerstandsfähigkeit der Schilde gegen Thermalschaden festlegen", "displayName_en-us": "Set Shield Thermal Damage Resistance", "displayName_es": "Establecer resistencia de escudos a daños térmicos", "displayName_fr": "Définir la résistance du bouclier aux dégâts thermiques", "displayName_it": "Set Shield Thermal Damage Resistance", "displayName_ja": "シールドのサーマルダメージレジスタンスを設定する", "displayName_ko": "실드 열 저항력 설정", "displayName_ru": "Повышение сопротивляемости щитов термическому урону", "displayName_zh": "套件护盾热能伤害抗性", "displayNameID": 310225, "displayWhenZero": 0, "highIsGood": 0, "name": "shieldThermalDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2087": { "attributeID": 2087, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Sets Em damage taken by Hull. ", "displayName_de": "Widerstandsfähigkeit des Rumpfs gegen EM-Schaden festlegen", "displayName_en-us": "Set Hull EM Damage Resistance", "displayName_es": "Establecer resistencia del casco a daños electromagnéticos", "displayName_fr": "Définir la résistance de la coque aux dégâts EM", "displayName_it": "Set Hull EM Damage Resistance", "displayName_ja": "船体EMダメージレジスタンスを設定する", "displayName_ko": "선체 EM 저항력 설정", "displayName_ru": "Повышение сопротивляемости корпуса ЭМ-урону", "displayName_zh": "套件结构电磁伤害抗性", "displayNameID": 310226, "displayWhenZero": 0, "highIsGood": 0, "name": "emDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2088": { "attributeID": 2088, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Sets Explosive damage taken by Hull. ", "displayName_de": "Widerstandsfähigkeit des Rumpfs gegen Explosionsschaden festlegen", "displayName_en-us": "Set Hull Explosive Damage Resistance", "displayName_es": "Establecer resistencia del casco a daños explosivos", "displayName_fr": "Définir la résistance de la coque aux dégâts explosifs", "displayName_it": "Set Hull Explosive Damage Resistance", "displayName_ja": "船体エクスプローシブダメージレジスタンスを設定する", "displayName_ko": "선체 폭발 저항력 설정", "displayName_ru": "Повышение сопротивляемости корпуса фугасному урону", "displayName_zh": "套件结构爆炸伤害抗性", "displayNameID": 310227, "displayWhenZero": 0, "highIsGood": 0, "name": "explosiveDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2089": { "attributeID": 2089, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Sets Thermal damage taken by Hull. ", "displayName_de": "Widerstandsfähigkeit des Rumpfs gegen Thermalschaden festlegen", "displayName_en-us": "Set Hull Thermal Damage Resistance", "displayName_es": "Establecer resistencia del casco a daños térmicos", "displayName_fr": "Définir la résistance de la coque aux dégâts thermiques", "displayName_it": "Set Hull Thermal Damage Resistance", "displayName_ja": "船体サーマルダメージレジスタンスを設定する", "displayName_ko": "선체 열 저항력 설정", "displayName_ru": "Заданная сопротивляемость корпуса термическому урону", "displayName_zh": "套件结构热能伤害抗性", "displayNameID": 310228, "displayWhenZero": 0, "highIsGood": 0, "name": "thermalDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2090": { "attributeID": 2090, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Sets Kinetic damage taken by Hull. ", "displayName_de": "Widerstandsfähigkeit des Rumpfs gegen Kinetikschaden festlegen", "displayName_en-us": "Set Hull Kinetic Damage Resistance", "displayName_es": "Establecer resistencia del casco a daños cinéticos", "displayName_fr": "Définir la résistance de la coque aux dégâts cinétiques", "displayName_it": "Set Hull Kinetic Damage Resistance", "displayName_ja": "船体キネティックダメージレジスタンスを設定する", "displayName_ko": "선체 키네틱 저항력 설정", "displayName_ru": "Повышение сопротивляемости корпуса кинетическому урону", "displayName_zh": "套件结构动能伤害抗性", "displayNameID": 310229, "displayWhenZero": 0, "highIsGood": 0, "name": "kineticDamageResonancePostAssignment", "published": 1, "stackable": 1, "unitID": 108 }, "2091": { "attributeID": 2091, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonus", "published": 0, "stackable": 1 }, "2092": { "attributeID": 2092, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusLogiFrig1", "published": 0, "stackable": 1 }, "2093": { "attributeID": 2093, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusLogiFrig2", "published": 0, "stackable": 1 }, "2094": { "attributeID": 2094, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "The amount of time that a fighter can have a micro warp drive active.", "displayName_de": "Mikrowarpantriebsdauer", "displayName_en-us": "Micro Warp Drive Duration", "displayName_es": "Duración del motor de microwarp", "displayName_fr": "Durée du propulseur de microwarp", "displayName_it": "Micro Warp Drive Duration", "displayName_ja": "マイクロワープドライブ持続時間", "displayName_ko": "마이크로 워프 드라이브 지속시간", "displayName_ru": "Продолжительность эффекта микроварп-ускорителя", "displayName_zh": "微型跃迁引擎持续时间", "displayNameID": 310291, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterMicroWarpDriveDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2095": { "attributeID": 2095, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus1", "published": 0, "stackable": 1 }, "2096": { "attributeID": 2096, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus2", "published": 0, "stackable": 1 }, "2097": { "attributeID": 2097, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus3", "published": 1, "stackable": 1 }, "2098": { "attributeID": 2098, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus4", "published": 1, "stackable": 1 }, "2099": { "attributeID": 2099, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus5", "published": 1, "stackable": 1 }, "2100": { "attributeID": 2100, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus6", "published": 1, "stackable": 1 }, "2101": { "attributeID": 2101, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "High-sec bonus on structure rigs.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigBonus7", "published": 1, "stackable": 1 }, "2102": { "attributeID": 2102, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "ignoreCloakVelocityPenalty", "published": 1, "stackable": 1 }, "2103": { "attributeID": 2103, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être installé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装備可能:", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 310348, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType6", "published": 1, "stackable": 1, "unitID": 116 }, "2104": { "attributeID": 2104, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Number of targets affected by the structure doomsday beam.", "displayName_de": "Anzahl an Doomsday-Zielen", "displayName_en-us": "Number of Doomsday Targets", "displayName_es": "N.º de objetivos apocalípticos", "displayName_fr": "Nombre de cibles d'annihilation", "displayName_it": "Number of Doomsday Targets", "displayName_ja": "ドゥームズデイ標的数", "displayName_ko": "둠스데이 타겟 수", "displayName_ru": "Число целей орудий Судного дня", "displayName_zh": "末日武器目标数量", "displayNameID": 312283, "displayWhenZero": 0, "highIsGood": 1, "name": "lightningWeaponTargetAmount", "published": 1, "stackable": 1, "unitID": 138 }, "2105": { "attributeID": 2105, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Maximum distance between two possible targets for the structure doomsday.", "displayName_de": "Maximale Zielsprungreichweite", "displayName_en-us": "Maximum Target Jump Range", "displayName_es": "Alcance máx. de salto de objetivo", "displayName_fr": "Portée maximale de saut vers cible", "displayName_it": "Maximum Target Jump Range", "displayName_ja": "最大ターゲットジャンプ距離", "displayName_ko": "최대 타겟 점프 거리", "displayName_ru": "Максимальная дистанция переноса от цели к цели", "displayName_zh": "最大目标跳跃范围", "displayNameID": 312297, "displayWhenZero": 0, "highIsGood": 1, "name": "lightningWeaponTargetRange", "published": 0, "stackable": 1, "unitID": 1 }, "2106": { "attributeID": 2106, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Damage lost per target hit", "displayName_de": "Schadensreduktion pro Zielsprung", "displayName_en-us": "Damage Reduction per Target Jump", "displayName_es": "Reducción de daño por salto de objetivo", "displayName_fr": "Réduction des dégâts par saut vers cible", "displayName_it": "Damage Reduction per Target Jump", "displayName_ja": "ターゲットジャンプ毎にダメージ減少", "displayName_ko": "타겟 점프에 따른 피해 감소", "displayName_ru": "Снижение урона при переходе на следующую цель", "displayName_zh": "每次目标跳跃伤害减少", "displayNameID": 312296, "displayWhenZero": 0, "highIsGood": 1, "name": "lightningWeaponDamageLossTarget", "published": 0, "stackable": 1, "unitID": 111 }, "2107": { "attributeID": 2107, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Length of activation time.", "displayName_de": "Mikrosprungantriebsdauer", "displayName_en-us": "Micro Jump Drive Duration", "displayName_es": "Duración del motor de microsalto", "displayName_fr": "Durée du propulseur hyperspatial", "displayName_it": "Micro Jump Drive Duration", "displayName_ja": "マイクロジャンプドライブ持続時間", "displayName_ko": "마이크로 점프 드라이브 지속시간", "displayName_ru": "Время цикла маневрового гипердвигателя", "displayName_zh": "微型跳跃引擎持续时间", "displayNameID": 310355, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterMicroJumpDriveDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2108": { "attributeID": 2108, "categoryID": 7, "dataType": 12, "defaultValue": 0.0, "description": "Fuel consumed by the structure service module", "displayName_de": "Treibstoff für Dienstmodul benötigt", "displayName_en-us": "Service Module Fuel Need", "displayName_es": "Necesidad de combustible para módulo de servicio", "displayName_fr": "Besoin en carburant pour le module de service", "displayName_it": "Service Module Fuel Need", "displayName_ja": "サービスモジュールの必要燃料", "displayName_ko": "서비스 모듈 연료 필요", "displayName_ru": "Потребность служебного модуля в топливе", "displayName_zh": "服务装备燃料需求", "displayNameID": 310373, "displayWhenZero": 0, "highIsGood": 1, "name": "serviceModuleFuelConsumptionGroup", "published": 0, "stackable": 1, "unitID": 115 }, "2109": { "attributeID": 2109, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Fuel consumed at the beginning of each hour to keep a service module online.", "displayName_de": "Treibstoff für Dienstmodulzyklus benötigt", "displayName_en-us": "Service Module Cycle Fuel Need", "displayName_es": "Necesidad de combustible para ciclo de módulo de servicio", "displayName_fr": "Besoin en carburant pour le cycle du module de service", "displayName_it": "Service Module Cycle Fuel Need", "displayName_ja": "サービスモジュールのサイクルあたりの必要燃料", "displayName_ko": "서비스 모듈 사이클 연료 필요", "displayName_ru": "Потребность служебного модуля в топливе при работе", "displayName_zh": "服务装备周期燃料需求", "displayNameID": 310374, "displayWhenZero": 0, "highIsGood": 0, "name": "serviceModuleFuelAmount", "published": 1, "stackable": 1, "unitID": 138 }, "2110": { "attributeID": 2110, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Fuel consumed to online the service module.", "displayName_de": "Treibstoff für Dienstmodul-Onlineschaltung benötigt", "displayName_en-us": "Service Module Online Fuel Need", "displayName_es": "Necesidad de combustible para módulo de servicio conectado", "displayName_fr": "Besoin en carburant pour le module de service actif", "displayName_it": "Service Module Online Fuel Need", "displayName_ja": "サービスモジュールのオンライン時の必要燃料", "displayName_ko": "서비스 모듈 온라인 연료 필요", "displayName_ru": "Потребность служебного модуля в топливе при включении", "displayName_zh": "服务装备启用燃料需求", "displayNameID": 310375, "displayWhenZero": 0, "highIsGood": 0, "name": "serviceModuleFuelOnlineAmount", "published": 1, "stackable": 1, "unitID": 138 }, "2111": { "attributeID": 2111, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Number of hours of vulnerability each week required. Applies only to categoryStructure.", "displayName_de": "Wöchentliche Verwundbarkeitszeit", "displayName_en-us": "Weekly Vulnerability", "displayName_es": "Vulnerabilidad semanal", "displayName_fr": "Weekly Vulnerability", "displayName_it": "Weekly Vulnerability", "displayName_ja": "週次の脆弱性", "displayName_ko": "주간 취약성", "displayName_ru": "Еженедельный интервал уязвимости", "displayName_zh": "每周可被攻击时间", "displayNameID": 312202, "displayWhenZero": 0, "highIsGood": 1, "name": "vulnerabilityRequired", "published": 1, "stackable": 1, "unitID": 129 }, "2112": { "attributeID": 2112, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance against Remote Sensor Dampeners.", "displayName_de": "Widerstand gegen Sensorbeeinflussung", "displayName_en-us": "Sensor Warfare Resistance", "displayName_es": "Resistencia a la guerra de sensores", "displayName_fr": "Résistance à la guerre de détecteur", "displayName_it": "Sensor Warfare Resistance", "displayName_ja": "センサー戦闘レジスタンス", "displayName_ko": "센서전 저항", "displayName_ru": "Сопротивление воздействию помех на захват целей", "displayName_zh": "感应战抗性", "displayNameID": 311127, "displayWhenZero": 0, "highIsGood": 0, "iconID": 74, "name": "sensorDampenerResistance", "published": 1, "stackable": 1, "unitID": 108 }, "2113": { "attributeID": 2113, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance against Remote Weapon Disruptors.", "displayName_de": "Widerstand gegen Waffenstörung", "displayName_en-us": "Weapon Disruption Resistance", "displayName_es": "Resistencia disrupción armas", "displayName_fr": "Résistance de perturbation d'armement", "displayName_it": "Weapon Disruption Resistance", "displayName_ja": "兵器妨害レジスタンス", "displayName_ko": "무기 교란 저항", "displayName_ru": "Сопротивление воздействию помех на наводку вооружения", "displayName_zh": "武器干扰抗性", "displayNameID": 311128, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1398, "name": "weaponDisruptionResistance", "published": 1, "stackable": 1, "tooltipDescription_de": "Verringert die Effekte feindlicher Waffenstörungsmodule", "tooltipDescription_en-us": "Decreases the effects of hostile weapon disruption modules", "tooltipDescription_es": "Reduce los efectos de los módulos de disrupción de armas hostiles.", "tooltipDescription_fr": "Réduit les effets des modules de perturbation d'armement hostiles", "tooltipDescription_it": "Decreases the effects of hostile weapon disruption modules", "tooltipDescription_ja": "敵の兵器妨害モジュールの効果を減少させる", "tooltipDescription_ko": "적의 무기 교란 모듈의 효과가 감소합니다.", "tooltipDescription_ru": "Снижает эффективность вражеских подавителей орудий", "tooltipDescription_zh": "削弱敌对武器扰断装备的效果", "tooltipDescriptionID": 895868, "tooltipTitleID": 895867, "unitID": 108 }, "2114": { "attributeID": 2114, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance against Target Painters", "displayName_de": "Widerstand gegen Zielmarkierungen", "displayName_en-us": "Target Painter Resistance", "displayName_es": "Resistencia a reveladores de objetivo", "displayName_fr": "Résistance de Marqueur de cible", "displayName_it": "Target Painter Resistance", "displayName_ja": "ターゲットぺインター・レジスタンス", "displayName_ko": "타겟 페인터 저항", "displayName_ru": "Сопротивление воздействию систем подсветки целей", "displayName_zh": "目标标记抗性", "displayNameID": 311129, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "targetPainterResistance", "published": 1, "stackable": 1, "unitID": 108 }, "2115": { "attributeID": 2115, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance against Stasis Webifiers", "displayName_de": "Widerstand gegen Stasisnetze", "displayName_en-us": "Stasis Webifier Resistance", "displayName_es": "Resistencia redes ralentizadoras", "displayName_fr": "Résistance de Générateur de stase", "displayName_it": "Stasis Webifier Resistance", "displayName_ja": "ステイシスウェビファイヤー・レジスタンス", "displayName_ko": "스테이시스 웹 저항력", "displayName_ru": "Сопротивление воздействию генераторов стазис-поля", "displayName_zh": "停滞缠绕抗性", "displayNameID": 311130, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1389, "name": "stasisWebifierResistance", "published": 1, "stackable": 1, "tooltipDescription_de": "Verringert den Einfluss feindlicher Stasisnetze auf die Geschwindigkeit", "tooltipDescription_en-us": "Decreases the impact on speed from hostile stasis webifiers", "tooltipDescription_es": "Reduce el impacto en la velocidad de las redes ralentizadoras hostiles.", "tooltipDescription_fr": "Réduit l'impact des générateurs de stase hostiles sur la vitesse", "tooltipDescription_it": "Decreases the impact on speed from hostile stasis webifiers", "tooltipDescription_ja": "敵のステイシスウェビファイヤーの速度への影響を減少させる", "tooltipDescription_ko": "적이 스테이시스 웹 생성기로 함선 속도에 미치는 영향이 감소합니다.", "tooltipDescription_ru": "Уменьшает влияние вражеских стазис-индукторов на скорость корабля", "tooltipDescription_zh": "减少敌对停滞缠绕光束对速度的影响", "tooltipDescriptionID": 895864, "tooltipTitleID": 895863, "unitID": 108 }, "2116": { "attributeID": 2116, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Impedance against Remote Repair (shield, armor, hull and energy).", "displayName_de": "Fernlogistikimpedanz", "displayName_en-us": "Remote Logistics Impedance", "displayName_es": "Impedancia logística remota", "displayName_fr": "Impédance logistique à distance", "displayName_it": "Remote Logistics Impedance", "displayName_ja": "リモート輸送インピーダンス", "displayName_ko": "원격 지원 임피던스", "displayName_ru": "Сопротивление дистанционному ремонту брони/накачке щитов", "displayName_zh": "远程后勤阻扰", "displayNameID": 311131, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "remoteRepairImpedance", "published": 1, "stackable": 1, "unitID": 108 }, "2118": { "attributeID": 2118, "categoryID": 34, "dataType": 5, "defaultValue": 1.0, "description": "Shield EM Damage Resistance", "displayName_de": "Widerstandsfähigkeit der Schilde gegen EM-Schaden", "displayName_en-us": "Shield EM Damage Resistance", "displayName_es": "Resistencia electrom. escudo", "displayName_fr": "Résistance du bouclier aux dégâts EM", "displayName_it": "Shield EM Damage Resistance", "displayName_ja": "シールド ― EMダメージレジスタンス", "displayName_ko": "실드 EM 저항력", "displayName_ru": "Сопротивляемость щитов ЭМ-урону", "displayName_zh": "护盾电磁伤害抗性", "displayNameID": 311783, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1396, "name": "fighterAbilityEvasiveManeuversEmResonance", "published": 1, "stackable": 0, "unitID": 108 }, "2119": { "attributeID": 2119, "categoryID": 34, "dataType": 5, "defaultValue": 1.0, "description": "Shield Thermal Damage Resistance", "displayName_de": "Thermalschadensresistenz der Schilde", "displayName_en-us": "Shield Thermal Damage Resistance", "displayName_es": "Resistencia térmica escudo", "displayName_fr": "Résistance du bouclier aux dégâts thermiques", "displayName_it": "Shield Thermal Damage Resistance", "displayName_ja": "シールド ― サーマルダメージレジスタンス", "displayName_ko": "실드 열 저항력", "displayName_ru": "Сопротивляемость щитов термическому урону", "displayName_zh": "护盾热能伤害抗性", "displayNameID": 311784, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1394, "name": "fighterAbilityEvasiveManeuversThermResonance", "published": 1, "stackable": 0, "unitID": 108 }, "2120": { "attributeID": 2120, "categoryID": 34, "dataType": 5, "defaultValue": 1.0, "description": "Shield Kinetic Damage Resistance", "displayName_de": "Kinetikschadensresistenz der Schilde", "displayName_en-us": "Shield Kinetic Damage Resistance", "displayName_es": "Resistencia cinética escudo", "displayName_fr": "Résistance du bouclier aux dégâts cinétiques", "displayName_it": "Shield Kinetic Damage Resistance", "displayName_ja": "シールド ― キネティックダメージレジスタンス", "displayName_ko": "실드 키네틱 저항력", "displayName_ru": "Сопротивляемость щитов кинетическому урону", "displayName_zh": "护盾动能伤害抗性", "displayNameID": 311785, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1393, "name": "fighterAbilityEvasiveManeuversKinResonance", "published": 1, "stackable": 0, "unitID": 108 }, "2121": { "attributeID": 2121, "categoryID": 34, "dataType": 5, "defaultValue": 1.0, "description": "Shield Explosive Damage Resistance", "displayName_de": "Explosivschadensresistenz der Schilde", "displayName_en-us": "Shield Explosive Damage Resistance", "displayName_es": "Resistencia al daño explosivo del escudo", "displayName_fr": "Résistance du bouclier aux dégâts explosifs", "displayName_it": "Shield Explosive Damage Resistance", "displayName_ja": "シールド ― エクスプローシブダメージレジスタンス", "displayName_ko": "실드 폭발 저항력", "displayName_ru": "Сопротивляемость щитов фугасному урону", "displayName_zh": "护盾爆炸伤害抗性", "displayNameID": 311786, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1395, "name": "fighterAbilityEvasiveManeuversExpResonance", "published": 1, "stackable": 0, "unitID": 108 }, "2123": { "attributeID": 2123, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311758, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityEvasiveManeuversDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2125": { "attributeID": 2125, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Explosion Radius", "displayName_de": "Explosionsradius", "displayName_en-us": "Explosion Radius", "displayName_es": "Radio de explosión", "displayName_fr": "Rayon d'explosion", "displayName_it": "Explosion Radius", "displayName_ja": "爆発半径", "displayName_ko": "폭발반경", "displayName_ru": "Сигнатура взрыва", "displayName_zh": "爆炸半径", "displayNameID": 311788, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "fighterAbilityMissilesExplosionRadius", "published": 1, "stackable": 0, "unitID": 1 }, "2126": { "attributeID": 2126, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Explosion Velocity", "displayName_de": "Explosionsgeschwindigkeit", "displayName_en-us": "Explosion Velocity", "displayName_es": "Velocidad de explosión", "displayName_fr": "Vitesse d'explosion", "displayName_it": "Explosion Velocity", "displayName_ja": "爆発速度", "displayName_ko": "폭발속도", "displayName_ru": "Скорость взрыва", "displayName_zh": "爆炸速度", "displayNameID": 311787, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityMissilesExplosionVelocity", "published": 1, "stackable": 0, "unitID": 10 }, "2127": { "attributeID": 2127, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityMissilesDamageReductionFactor", "published": 0, "stackable": 0 }, "2128": { "attributeID": 2128, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityMissilesDamageReductionSensitivity", "published": 0, "stackable": 0 }, "2130": { "attributeID": 2130, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Damage Multiplier", "displayName_de": "Schadensmultiplikator", "displayName_en-us": "Damage Multiplier", "displayName_es": "Multiplicador de daño", "displayName_fr": "Multiplicateur de dégâts", "displayName_it": "Damage Multiplier", "displayName_ja": "ダメージ乗数", "displayName_ko": "데미지 배수", "displayName_ru": "Множитель урона", "displayName_zh": "伤害倍增系数", "displayNameID": 311769, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "fighterAbilityMissilesDamageMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "2131": { "attributeID": 2131, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "EM Damage", "displayName_de": "EM-Schaden (pro Jäger)", "displayName_en-us": "EM Damage (Per Fighter)", "displayName_es": "Daño electromagnético (por caza)", "displayName_fr": "Dégâts EM (par chasseur)", "displayName_it": "EM Damage (Per Fighter)", "displayName_ja": "EMダメージ(戦闘機ごと)", "displayName_ko": "EM 피해량 (파이터 당)", "displayName_ru": "ЭМ-урон (каждого истребителя)", "displayName_zh": "电磁伤害(每架铁骑舰载机)", "displayNameID": 311778, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "fighterAbilityMissilesDamageEM", "published": 1, "stackable": 0, "unitID": 113 }, "2132": { "attributeID": 2132, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Thermal Damage", "displayName_de": "Thermalschaden (pro Jäger)", "displayName_en-us": "Thermal Damage (Per Fighter)", "displayName_es": "Daño térmico (por caza)", "displayName_fr": "Dégâts thermiques (par chasseur)", "displayName_it": "Thermal Damage (Per Fighter)", "displayName_ja": "サーマルダメージ(戦闘機ごと)", "displayName_ko": "열 피해량 (파이터 당)", "displayName_ru": "Термический урон (каждого истребителя)", "displayName_zh": "热能伤害(每架铁骑舰载机)", "displayNameID": 311782, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "fighterAbilityMissilesDamageTherm", "published": 1, "stackable": 0, "unitID": 113 }, "2133": { "attributeID": 2133, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Kinetic Damage", "displayName_de": "Kinetikschaden (pro Jäger)", "displayName_en-us": "Kinetic Damage (Per Fighter)", "displayName_es": "Daño cinético (por caza)", "displayName_fr": "Dégâts cinétiques (par chasseur)", "displayName_it": "Kinetic Damage (Per Fighter)", "displayName_ja": "キネティックダメージ(戦闘機ごと)", "displayName_ko": "키네틱 피해량 (파이터 당)", "displayName_ru": "Кинетический урон (каждого истребителя)", "displayName_zh": "动能伤害(每架铁骑舰载机)", "displayNameID": 311781, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "fighterAbilityMissilesDamageKin", "published": 1, "stackable": 0, "unitID": 113 }, "2134": { "attributeID": 2134, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Explosive Damage", "displayName_de": "Explosionsschaden (pro Jäger)", "displayName_en-us": "Explosive Damage (Per Fighter)", "displayName_es": "Daño explosivo (por caza)", "displayName_fr": "Dégâts explosifs (par chasseur)", "displayName_it": "Explosive Damage (Per Fighter)", "displayName_ja": "エクスプローシブダメージ(戦闘機ごと)", "displayName_ko": "폭발 피해량 (파이터 당)", "displayName_ru": "Фугасный урон (каждого истребителя)", "displayName_zh": "爆炸伤害(每架铁骑舰载机)", "displayNameID": 311779, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "fighterAbilityMissilesDamageExp", "published": 1, "stackable": 0, "unitID": 113 }, "2135": { "attributeID": 2135, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Impedance against Remote assistance (sensor boosters, tracking computers and ECCM).", "displayName_de": "Elektronische Fernunterstützungsimpedanz", "displayName_en-us": "Remote Electronic Assistance Impedance", "displayName_es": "Impedancia de asistencia electrónica remota", "displayName_fr": "Impédance du soutient électronique à distance", "displayName_it": "Remote Electronic Assistance Impedance", "displayName_ja": "リモート電子アシスタンスのインピーダンス", "displayName_ko": "원격 전자 지원 임피던스", "displayName_ru": "Сопротивление радиоэлектронной поддержке", "displayName_zh": "远程电子协助阻抗", "displayNameID": 311135, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "remoteAssistanceImpedance", "published": 1, "stackable": 1, "unitID": 108 }, "2136": { "attributeID": 2136, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "maxTargetRangeBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2137": { "attributeID": 2137, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "scanResolutionBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2138": { "attributeID": 2138, "categoryID": 36, "dataType": 10, "defaultValue": 0.0, "description": "Attribute ID of the resistance type v's this Ewar module.", "displayWhenZero": 0, "highIsGood": 1, "name": "remoteResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2139": { "attributeID": 2139, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "maxRangeBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2140": { "attributeID": 2140, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "falloffBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2141": { "attributeID": 2141, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "trackingSpeedBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2142": { "attributeID": 2142, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "aoeCloudSizeBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2143": { "attributeID": 2143, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "aoeVelocityBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2144": { "attributeID": 2144, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "explosionDelayBonusInterim", "published": 0, "stackable": 1, "unitID": 121 }, "2145": { "attributeID": 2145, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "missileVelocityBonusInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2147": { "attributeID": 2147, "categoryID": 21, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "signatureRadiusBonusInterim", "published": 0, "stackable": 1, "unitID": 124 }, "2148": { "attributeID": 2148, "categoryID": 28, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "speedFactorInterim", "published": 0, "stackable": 1, "unitID": 124 }, "2149": { "attributeID": 2149, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311772, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityMissilesRange", "published": 1, "stackable": 0, "unitID": 1 }, "2150": { "attributeID": 2150, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Used by Fighter Logic.\r\nDON'T CHANGE THE DEFAULT VALUE FROM 0", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "fighterSquadronSize", "published": 0, "stackable": 1 }, "2151": { "attributeID": 2151, "categoryID": 34, "dataType": 5, "defaultValue": 100.0, "description": "Maximum Velocity Bonus", "displayName_de": "Maximaler Geschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 311765, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityAfterburnerSpeedBonus", "published": 1, "stackable": 0, "unitID": 124 }, "2152": { "attributeID": 2152, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Maximum Velocity Bonus", "displayName_de": "Maximaler Geschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 311767, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityMicroWarpDriveSpeedBonus", "published": 1, "stackable": 1, "unitID": 124 }, "2153": { "attributeID": 2153, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Signature Radius Bonus", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius Bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus de rayon de signature", "displayName_it": "Signature Radius Bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 311797, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "fighterAbilityMicroWarpDriveSignatureRadiusBonus", "published": 1, "stackable": 1, "unitID": 124 }, "2154": { "attributeID": 2154, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Jump Range", "displayName_de": "Sprungreichweite", "displayName_en-us": "Jump Range", "displayName_es": "Alcance de salto", "displayName_fr": "Portée de saut", "displayName_it": "Jump Range", "displayName_ja": "ジャンプ距離", "displayName_ko": "점프 거리", "displayName_ru": "Расстояние гиперперехода", "displayName_zh": "跳跃范围", "displayNameID": 311798, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityMicroJumpDriveDistance", "published": 1, "stackable": 1, "unitID": 1 }, "2155": { "attributeID": 2155, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311762, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterAbilityMicroJumpDriveDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2156": { "attributeID": 2156, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Signature Radius Bonus", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius Bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus de rayon de signature", "displayName_it": "Signature Radius Bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 311796, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "fighterAbilityMicroJumpDriveSignatureRadiusBonus", "published": 0, "stackable": 1, "unitID": 124 }, "2157": { "attributeID": 2157, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311761, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityMicroWarpDriveDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2158": { "attributeID": 2158, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311756, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityAfterburnerDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2170": { "attributeID": 2170, "categoryID": 34, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityMissilesResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2171": { "attributeID": 2171, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "EM Damage", "displayName_de": "EM-Schaden (pro Jäger)", "displayName_en-us": "EM Damage (Per Fighter)", "displayName_es": "Daño electromagnético (por caza)", "displayName_fr": "Dégâts EM (par chasseur)", "displayName_it": "EM Damage (Per Fighter)", "displayName_ja": "EMダメージ(戦闘機ごと)", "displayName_ko": "EM 피해량 (파이터 당)", "displayName_ru": "ЭМ-урон (каждого истребителя)", "displayName_zh": "电磁伤害(每架铁骑舰载机)", "displayNameID": 311544, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "fighterAbilityAttackTurretDamageEM", "published": 1, "stackable": 0, "unitID": 113 }, "2172": { "attributeID": 2172, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Thermal Damage", "displayName_de": "Thermalschaden (pro Jäger)", "displayName_en-us": "Thermal Damage (Per Fighter)", "displayName_es": "Daño térmico (por caza)", "displayName_fr": "Dégâts thermiques (par chasseur)", "displayName_it": "Thermal Damage (Per Fighter)", "displayName_ja": "サーマルダメージ(戦闘機ごと)", "displayName_ko": "열 피해량 (파이터 당)", "displayName_ru": "Термический урон (каждого истребителя)", "displayName_zh": "热能伤害(每架铁骑舰载机)", "displayNameID": 311549, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "fighterAbilityAttackTurretDamageTherm", "published": 1, "stackable": 0, "unitID": 113 }, "2173": { "attributeID": 2173, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Kinetic Damage", "displayName_de": "Kinetikschaden (pro Jäger)", "displayName_en-us": "Kinetic Damage (Per Fighter)", "displayName_es": "Daño cinético (por caza)", "displayName_fr": "Dégâts cinétiques (par chasseur)", "displayName_it": "Kinetic Damage (Per Fighter)", "displayName_ja": "キネティックダメージ(戦闘機ごと)", "displayName_ko": "키네틱 피해량 (파이터 당)", "displayName_ru": "Кинетический урон (каждого истребителя)", "displayName_zh": "动能伤害(每架铁骑舰载机)", "displayNameID": 311546, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "fighterAbilityAttackTurretDamageKin", "published": 1, "stackable": 0, "unitID": 113 }, "2174": { "attributeID": 2174, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Explosive Damage", "displayName_de": "Explosionsschaden (pro Jäger)", "displayName_en-us": "Explosive Damage (Per Fighter)", "displayName_es": "Daño explosivo (por caza)", "displayName_fr": "Dégâts explosifs (par chasseur)", "displayName_it": "Explosive Damage (Per Fighter)", "displayName_ja": "エクスプローシブダメージ(戦闘機ごと)", "displayName_ko": "폭발 피해량 (파이터 당)", "displayName_ru": "Фугасный урон (каждого истребителя)", "displayName_zh": "爆炸伤害(每架铁骑舰载机)", "displayNameID": 311545, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "fighterAbilityAttackTurretDamageExp", "published": 1, "stackable": 0, "unitID": 113 }, "2175": { "attributeID": 2175, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311552, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityAttackTurretRangeOptimal", "published": 1, "stackable": 0, "unitID": 1 }, "2176": { "attributeID": 2176, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Accuracy Falloff", "displayName_de": "Präzisionsreduktion", "displayName_en-us": "Accuracy Falloff", "displayName_es": "Alcance efectivo de precisión", "displayName_fr": "Perte de précision", "displayName_it": "Accuracy Falloff", "displayName_ja": "精度低下", "displayName_ko": "명중률 유효사거리", "displayName_ru": "Добавочная дальность", "displayName_zh": "失准范围", "displayNameID": 311551, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fighterAbilityAttackTurretRangeFalloff", "published": 1, "stackable": 0, "unitID": 1 }, "2177": { "attributeID": 2177, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Rate of fire", "displayName_de": "Feuerrate", "displayName_en-us": "Rate of fire", "displayName_es": "Cadencia de tiro", "displayName_fr": "Cadence de tir", "displayName_it": "Rate of fire", "displayName_ja": "射撃速度", "displayName_ko": "연사속도", "displayName_ru": "Цикл выстрела", "displayName_zh": "射击速度", "displayNameID": 311550, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "fighterAbilityAttackTurretDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2178": { "attributeID": 2178, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Damage Multiplier", "displayName_de": "Schadensmultiplikator", "displayName_en-us": "Damage Multiplier", "displayName_es": "Multiplicador de daño", "displayName_fr": "Multiplicateur de dégâts", "displayName_it": "Damage Multiplier", "displayName_ja": "ダメージ乗数", "displayName_ko": "데미지 배수", "displayName_ru": "Множитель урона", "displayName_zh": "伤害倍增系数", "displayNameID": 311548, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "fighterAbilityAttackTurretDamageMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "2179": { "attributeID": 2179, "categoryID": 34, "dataType": 5, "defaultValue": 1.0, "description": "Signature Resolution", "displayName_de": "Signaturauflösung", "displayName_en-us": "Signature Resolution", "displayName_es": "Resolución de señal", "displayName_fr": "Résolution de la signature", "displayName_it": "Signature Resolution", "displayName_ja": "シグネチャ解像度", "displayName_ko": "신호 정밀도", "displayName_ru": "Разрешающая способность системы захвата целей", "displayName_zh": "信号分辨率", "displayNameID": 311789, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityAttackTurretSignatureResolution", "published": 1, "stackable": 0, "unitID": 1 }, "2180": { "attributeID": 2180, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Tracking Speed / Accuracy", "displayName_de": "Nachführungsgeschwindigkeit / Genauigkeit", "displayName_en-us": "Tracking Speed / Accuracy", "displayName_es": "Velocidad/Precisión de rastreo", "displayName_fr": "Vitesse de poursuite / Précision", "displayName_it": "Tracking Speed / Accuracy", "displayName_ja": "トラッキング速度/精度", "displayName_ko": "트래킹 속도 / 명중률", "displayName_ru": "Скорость наводки орудий/Точность", "displayName_zh": "跟踪速度 / 准确度", "displayNameID": 311553, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "fighterAbilityAttackTurretTrackingSpeed", "published": 1, "stackable": 0, "unitID": 112 }, "2182": { "attributeID": 2182, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Rate of fire", "displayName_de": "Feuerrate", "displayName_en-us": "Rate of fire", "displayName_es": "Cadencia de tiro", "displayName_fr": "Cadence de tir", "displayName_it": "Rate of fire", "displayName_ja": "射撃速度", "displayName_ko": "연사속도", "displayName_ru": "Цикл выстрела", "displayName_zh": "射击速度", "displayNameID": 311763, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "fighterAbilityMissilesDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2183": { "attributeID": 2183, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311760, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityStasisWebifierDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2184": { "attributeID": 2184, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Maximum Velocity Bonus", "displayName_de": "Maximaler Geschwindigkeitsbonus (pro Jäger)", "displayName_en-us": "Maximum Velocity Bonus (Per Fighter)", "displayName_es": "Bonificación de velocidad máx. (por caza)", "displayName_fr": "Bonus de vitesse maximale (par chasseur)", "displayName_it": "Maximum Velocity Bonus (Per Fighter)", "displayName_ja": "最高速度ボーナス(戦闘機ごと)", "displayName_ko": "최대 속도 보너스 (파이터 당)", "displayName_ru": "Влияние на максимальную скорость (каждого истребителя)", "displayName_zh": "最大速度加成(每架铁骑舰载机)", "displayNameID": 311768, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1389, "name": "fighterAbilityStasisWebifierSpeedPenalty", "published": 1, "stackable": 0, "unitID": 124 }, "2185": { "attributeID": 2185, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityStasisWebifierSpeedPenaltyInterim", "published": 0, "stackable": 1, "unitID": 124 }, "2186": { "attributeID": 2186, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311773, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityStasisWebifierOptimalRange", "published": 1, "stackable": 0, "unitID": 1 }, "2187": { "attributeID": 2187, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Effectiveness Falloff", "displayName_de": "Präzisionsabfall-Effektivität", "displayName_en-us": "Effectiveness Falloff", "displayName_es": "Alcance efectivo de eficacia", "displayName_fr": "Déperdition d'efficacité", "displayName_it": "Effectiveness Falloff", "displayName_ja": "効力減少", "displayName_ko": "효과 유효사거리", "displayName_ru": "Добавочная дальность действия", "displayName_zh": "效果失准范围", "displayNameID": 311777, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fighterAbilityStasisWebifierFalloffRange", "published": 1, "stackable": 0, "unitID": 1 }, "2188": { "attributeID": 2188, "categoryID": 34, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityStasisWebifierResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2189": { "attributeID": 2189, "categoryID": 38, "dataType": 5, "defaultValue": 0.05000000074505806, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "fighterAbilityAntiFighterMissileResistance", "published": 0, "stackable": 1, "unitID": 108 }, "2203": { "attributeID": 2203, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311799, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityWarpDisruptionDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2204": { "attributeID": 2204, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311774, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityWarpDisruptionRange", "published": 1, "stackable": 0, "unitID": 1 }, "2205": { "attributeID": 2205, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Warp Disruption Strength", "displayName_de": "Warpstörstärke (pro Jäger)", "displayName_en-us": "Warp Disruption Strength (Per Fighter)", "displayName_es": "Fuerza de disrupción de warp (por caza)", "displayName_fr": "Puissance de perturbation de warp (par chasseur)", "displayName_it": "Warp Disruption Strength (Per Fighter)", "displayName_ja": "ワープ妨害強度(戦闘機ごと)", "displayName_ko": "워프 디스럽션 강도 (파이터 당)", "displayName_ru": "Мощность варп-помех (каждого истребителя)", "displayName_zh": "跃迁干扰强度(每架铁骑舰载机)", "displayNameID": 311801, "displayWhenZero": 0, "highIsGood": 1, "iconID": 111, "name": "fighterAbilityWarpDisruptionPointStrength", "published": 1, "stackable": 0 }, "2206": { "attributeID": 2206, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityWarpDisruptionPointStrengthInterim", "published": 0, "stackable": 1 }, "2207": { "attributeID": 2207, "categoryID": 34, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityEnergyNeutralizerResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2208": { "attributeID": 2208, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311795, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterAbilityEnergyNeutralizerDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2209": { "attributeID": 2209, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311771, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityEnergyNeutralizerOptimalRange", "published": 1, "stackable": 0, "unitID": 1 }, "2210": { "attributeID": 2210, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Effectiveness Falloff", "displayName_de": "Präzisionsabfall-Effektivität", "displayName_en-us": "Effectiveness Falloff", "displayName_es": "Alcance efectivo de eficacia", "displayName_fr": "Déperdition d'efficacité", "displayName_it": "Effectiveness Falloff", "displayName_ja": "効力減少", "displayName_ko": "효과 유효사거리", "displayName_ru": "Добавочная дальность действия", "displayName_zh": "效果失准范围", "displayNameID": 311776, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fighterAbilityEnergyNeutralizerFalloffRange", "published": 1, "stackable": 0, "unitID": 1 }, "2211": { "attributeID": 2211, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Energy Amount Neutralized", "displayName_de": "Menge an neutralisierter Energie (pro Jäger)", "displayName_en-us": "Energy Amount Neutralized (Per Fighter)", "displayName_es": "Cantidad de energía neutralizada (por caza)", "displayName_fr": "Total de l'énergie neutralisée (par chasseur)", "displayName_it": "Energy Amount Neutralized (Per Fighter)", "displayName_ja": "無効になるエネルギー量(戦闘機ごと)", "displayName_ko": "뉴트럴라이즈된 에너지 총량 (파이터 당)", "displayName_ru": "Нейтрализуемый запас энергии (каждым истребителем)", "displayName_zh": "能量中和值(每架铁骑舰载机)", "displayNameID": 311794, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "fighterAbilityEnergyNeutralizerAmount", "published": 1, "stackable": 0, "unitID": 114 }, "2212": { "attributeID": 2212, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsLight", "published": 0, "stackable": 1 }, "2213": { "attributeID": 2213, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsSupport", "published": 0, "stackable": 1 }, "2214": { "attributeID": 2214, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsHeavy", "published": 0, "stackable": 1 }, "2215": { "attributeID": 2215, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Staffelgröße", "displayName_en-us": "Squadron Size", "displayName_es": "Tamaño del escuadrón", "displayName_fr": "Taille de l'escadron", "displayName_it": "Squadron Size", "displayName_ja": "艦隊のサイズ", "displayName_ko": "편대 크기", "displayName_ru": "Размер отряда истребителей", "displayName_zh": "中队大小", "displayNameID": 312129, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronMaxSize", "published": 1, "stackable": 1 }, "2216": { "attributeID": 2216, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "This defines the total number of fighter launch tubes on the ship.", "displayName_de": "Jägerstaffel-Startrohre", "displayName_en-us": "Fighter Squadron Launch Tubes", "displayName_es": "Tubos de lanzamiento de escuadrones de cazas", "displayName_fr": "Tubes de lancement des escadrons de chasseurs", "displayName_it": "Fighter Squadron Launch Tubes", "displayName_ja": "戦闘機部隊離陸用トンネル", "displayName_ko": "파이터 편대 사출관", "displayName_ru": "Взлётные полосы истребителей", "displayName_zh": "铁骑舰载机中队发射管", "displayNameID": 311174, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2677, "name": "fighterTubes", "published": 1, "stackable": 1 }, "2217": { "attributeID": 2217, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Light Fighters the ship can launch.", "displayName_de": "Limit für Leichte Jägerstaffeln", "displayName_en-us": "Light Fighter Squadron Limit", "displayName_es": "Límite de escuadrones de cazas ligeros", "displayName_fr": "Limite d'escadrons de chasseurs légers", "displayName_it": "Light Fighter Squadron Limit", "displayName_ja": "軽量級戦闘機部隊の制限", "displayName_ko": "라이트 파이터 편대 한계", "displayName_ru": "Ограничение по отрядам лёгких истребителей", "displayName_zh": "轻型铁骑舰载机中队限制", "displayNameID": 311175, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterLightSlots", "published": 1, "stackable": 1 }, "2218": { "attributeID": 2218, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Support Fighters the ship can launch.", "displayName_de": "Limit für Unterstützungsjägerstaffeln", "displayName_en-us": "Support Fighter Squadron Limit", "displayName_es": "Límite de escuadrones de cazas de apoyo", "displayName_fr": "Limite d'escadrons de chasseurs de soutien", "displayName_it": "Support Fighter Squadron Limit", "displayName_ja": "支援戦闘機部隊の制限", "displayName_ko": "서포트 파이터 편대 한계", "displayName_ru": "Ограничение по отрядам истребителей поддержки", "displayName_zh": "后勤铁骑舰载机中队限制", "displayNameID": 311176, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterSupportSlots", "published": 1, "stackable": 1 }, "2219": { "attributeID": 2219, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Heavy Fighters the ship can launch.Heavy ", "displayName_de": "Limit für Schwere Jägerstaffeln", "displayName_en-us": "Heavy Fighter Squadrons Limit", "displayName_es": "Límite de escuadrones de cazas pesados", "displayName_fr": "Limite d'escadrons de chasseurs lourds", "displayName_it": "Heavy Fighter Squadrons Limit", "displayName_ja": "重量級戦闘機部隊の制限", "displayName_ko": "헤비 파이터 편대 한계", "displayName_ru": "Ограничение по отрядам тяжёлых истребителей", "displayName_zh": "重型铁骑舰载机中队限制", "displayNameID": 311177, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterHeavySlots", "published": 1, "stackable": 1 }, "2220": { "attributeID": 2220, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311757, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterAbilityECMDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2221": { "attributeID": 2221, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311770, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityECMRangeOptimal", "published": 1, "stackable": 0, "unitID": 1 }, "2222": { "attributeID": 2222, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Effectiveness Falloff", "displayName_de": "Präzisionsabfall-Effektivität", "displayName_en-us": "Effectiveness Falloff", "displayName_es": "Alcance efectivo de eficacia", "displayName_fr": "Déperdition d'efficacité", "displayName_it": "Effectiveness Falloff", "displayName_ja": "効力減少", "displayName_ko": "효과 유효사거리", "displayName_ru": "Добавочная дальность действия", "displayName_zh": "效果失准范围", "displayNameID": 311775, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fighterAbilityECMRangeFalloff", "published": 1, "stackable": 0, "unitID": 1 }, "2223": { "attributeID": 2223, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Orbitale Reichweite", "displayName_en-us": "Orbit Range", "displayName_es": "Alcance orbital", "displayName_fr": "Portée en orbite", "displayName_it": "Orbit Range", "displayName_ja": "旋回範囲", "displayName_ko": "선회 거리", "displayName_ru": "Радиус орбиты", "displayName_zh": "环绕距离", "displayNameID": 312490, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterSquadronOrbitRange", "published": 1, "stackable": 1, "unitID": 1 }, "2224": { "attributeID": 2224, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Maximum Velocity Bonus", "displayName_de": "Maximaler Geschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 311766, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityEvasiveManeuversSpeedBonus", "published": 1, "stackable": 0, "unitID": 124 }, "2225": { "attributeID": 2225, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Signaturradius-Reduktion", "displayName_en-us": "Signature Radius Reduction", "displayName_es": "Reducción de radio de la señal", "displayName_fr": "Réduction de rayon de signature", "displayName_it": "Signature Radius Reduction", "displayName_ja": "シグネチャ半径縮小", "displayName_ko": "시그니처 반경 감소", "displayName_ru": "Уменьшение размера сигнатуры", "displayName_zh": "信号半径降低", "displayNameID": 312563, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "fighterAbilityEvasiveManeuversSignatureRadiusBonus", "published": 1, "stackable": 0, "unitID": 105 }, "2226": { "attributeID": 2226, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Damage Multiplier", "displayName_de": "Schadensmultiplikator", "displayName_en-us": "Damage Multiplier", "displayName_es": "Multiplicador de daño", "displayName_fr": "Multiplicateur de dégâts", "displayName_it": "Damage Multiplier", "displayName_ja": "ダメージ乗数", "displayName_ko": "데미지 배수", "displayName_ru": "Множитель урона", "displayName_zh": "伤害倍增系数", "displayNameID": 311557, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "fighterAbilityAttackMissileDamageMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "2227": { "attributeID": 2227, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "EM Damage", "displayName_de": "EM-Schaden (pro Jäger)", "displayName_en-us": "EM Damage (Per Fighter)", "displayName_es": "Daño electromagnético (por caza)", "displayName_fr": "Dégâts EM (par chasseur)", "displayName_it": "EM Damage (Per Fighter)", "displayName_ja": "EMダメージ(戦闘機ごと)", "displayName_ko": "EM 피해량 (파이터 당)", "displayName_ru": "ЭМ-урон (каждого истребителя)", "displayName_zh": "电磁伤害(每架铁骑舰载机)", "displayNameID": 311554, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "fighterAbilityAttackMissileDamageEM", "published": 1, "stackable": 0, "unitID": 113 }, "2228": { "attributeID": 2228, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Thermal Damage", "displayName_de": "Thermalschaden (pro Jäger)", "displayName_en-us": "Thermal Damage (Per Fighter)", "displayName_es": "Daño térmico (por caza)", "displayName_fr": "Dégâts thermiques (par chasseur)", "displayName_it": "Thermal Damage (Per Fighter)", "displayName_ja": "サーマルダメージ(戦闘機ごと)", "displayName_ko": "열 피해량 (파이터 당)", "displayName_ru": "Термический урон (каждого истребителя)", "displayName_zh": "热能伤害(每架铁骑舰载机)", "displayNameID": 311558, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "fighterAbilityAttackMissileDamageTherm", "published": 1, "stackable": 0, "unitID": 113 }, "2229": { "attributeID": 2229, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Kinetic Damage", "displayName_de": "Kinetikschaden (pro Jäger)", "displayName_en-us": "Kinetic Damage (Per Fighter)", "displayName_es": "Daño cinético (por caza)", "displayName_fr": "Dégâts cinétiques (par chasseur)", "displayName_it": "Kinetic Damage (Per Fighter)", "displayName_ja": "キネティックダメージ(戦闘機ごと)", "displayName_ko": "키네틱 피해량 (파이터 당)", "displayName_ru": "Кинетический урон (каждого истребителя)", "displayName_zh": "动能伤害(每架铁骑舰载机)", "displayNameID": 311556, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "fighterAbilityAttackMissileDamageKin", "published": 1, "stackable": 0, "unitID": 113 }, "2230": { "attributeID": 2230, "categoryID": 34, "dataType": 8, "defaultValue": 0.0, "description": "Explosive Damage", "displayName_de": "Explosionsschaden (pro Jäger)", "displayName_en-us": "Explosive Damage (Per Fighter)", "displayName_es": "Daño explosivo (por caza)", "displayName_fr": "Dégâts explosifs (par chasseur)", "displayName_it": "Explosive Damage (Per Fighter)", "displayName_ja": "エクスプローシブダメージ(戦闘機ごと)", "displayName_ko": "폭발 피해량 (파이터 당)", "displayName_ru": "Фугасный урон (каждого истребителя)", "displayName_zh": "爆炸伤害(每架铁骑舰载机)", "displayNameID": 311555, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "fighterAbilityAttackMissileDamageExp", "published": 1, "stackable": 0, "unitID": 113 }, "2231": { "attributeID": 2231, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityAttackMissileReductionFactor", "published": 0, "stackable": 0 }, "2232": { "attributeID": 2232, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityAttackMissileReductionSensitivity", "published": 0, "stackable": 0 }, "2233": { "attributeID": 2233, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Rate of fire", "displayName_de": "Feuerrate", "displayName_en-us": "Rate of fire", "displayName_es": "Cadencia de tiro", "displayName_fr": "Cadence de tir", "displayName_it": "Rate of fire", "displayName_ja": "射撃速度", "displayName_ko": "연사속도", "displayName_ru": "Цикл выстрела", "displayName_zh": "射击速度", "displayNameID": 311559, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "fighterAbilityAttackMissileDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2234": { "attributeID": 2234, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Explosion Radius", "displayName_de": "Explosionsradius", "displayName_en-us": "Explosion Radius", "displayName_es": "Radio de explosión", "displayName_fr": "Rayon d'explosion", "displayName_it": "Explosion Radius", "displayName_ja": "爆発半径", "displayName_ko": "폭발반경", "displayName_ru": "Сигнатура взрыва", "displayName_zh": "爆炸半径", "displayNameID": 311560, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "fighterAbilityAttackMissileExplosionRadius", "published": 1, "stackable": 0, "unitID": 1 }, "2235": { "attributeID": 2235, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Explosion Velocity", "displayName_de": "Explosionsgeschwindigkeit", "displayName_en-us": "Explosion Velocity", "displayName_es": "Velocidad de explosión", "displayName_fr": "Vitesse d'explosion", "displayName_it": "Explosion Velocity", "displayName_ja": "爆発速度", "displayName_ko": "폭발속도", "displayName_ru": "Скорость взрыва", "displayName_zh": "爆炸速度", "displayNameID": 311561, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityAttackMissileExplosionVelocity", "published": 1, "stackable": 0, "unitID": 10 }, "2236": { "attributeID": 2236, "categoryID": 34, "dataType": 4, "defaultValue": 0.0, "description": "Optimal Range", "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 311563, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityAttackMissileRangeOptimal", "published": 1, "stackable": 0, "unitID": 1 }, "2237": { "attributeID": 2237, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Accuracy Falloff", "displayName_de": "Präzisionsreduktion", "displayName_en-us": "Accuracy Falloff", "displayName_es": "Alcance efectivo de precisión", "displayName_fr": "Perte de précision", "displayName_it": "Accuracy Falloff", "displayName_ja": "精度低下", "displayName_ko": "명중률 유효사거리", "displayName_ru": "Добавочная дальность", "displayName_zh": "失准范围", "displayNameID": 311562, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "fighterAbilityAttackMissileRangeFalloff", "published": 1, "stackable": 0, "unitID": 1 }, "2238": { "attributeID": 2238, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Duration", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 311759, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterAbilityTackleDuration", "published": 1, "stackable": 0, "unitID": 101 }, "2239": { "attributeID": 2239, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Range", "displayName_de": "Reichweite", "displayName_en-us": "Range", "displayName_es": "Alcance", "displayName_fr": "Portée", "displayName_it": "Range", "displayName_ja": "範囲", "displayName_ko": "거리", "displayName_ru": "Расстояние", "displayName_zh": "范围", "displayNameID": 311800, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "fighterAbilityTackleRange", "published": 1, "stackable": 0, "unitID": 1 }, "2242": { "attributeID": 2242, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Maximum Velocity Bonus", "displayName_de": "Maximaler Geschwindigkeitsbonus (pro Jäger)", "displayName_en-us": "Maximum Velocity Bonus (Per Fighter)", "displayName_es": "Bonificación de velocidad máxima (por caza)", "displayName_fr": "de bonus à la vitesse maximale (par chasseur)", "displayName_it": "Maximum Velocity Bonus (Per Fighter)", "displayName_ja": "最高速度ボーナス(戦闘機ごと)", "displayName_ko": "최대 속도 보너스 (파이터 당)", "displayName_ru": "Влияние на максимальную скорость (каждого истребителя)", "displayName_zh": "最大速度加成(每架铁骑舰载机)", "displayNameID": 311802, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterAbilityTackleWebSpeedPenalty", "published": 1, "stackable": 0, "unitID": 124 }, "2243": { "attributeID": 2243, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityTackleWebSpeedPenaltyInterim", "published": 0, "stackable": 1, "unitID": 124 }, "2244": { "attributeID": 2244, "categoryID": 38, "dataType": 5, "defaultValue": 0.10000000149011612, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "fighterAbilityAntiCapitalMissileResistance", "published": 0, "stackable": 1, "unitID": 108 }, "2246": { "attributeID": 2246, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Gravimetric ECM Jammer Strength", "displayName_de": "Gravimetrische ECM-Störstärke (pro Jäger)", "displayName_en-us": "Gravimetric ECM Jammer Strength (Per Fighter)", "displayName_es": "Intensidad del perturbador ECM gravimétrico (por caza)", "displayName_fr": "Puissance gravimétrique CME (par chasseur)", "displayName_it": "Gravimetric ECM Jammer Strength (Per Fighter)", "displayName_ja": "重力ECMジャマー強度(戦闘機ごと)", "displayName_ko": "중력장 ECM 재머 강도 (파이터 당)", "displayName_ru": "Сила действия помех на гравиметрические системы (каждого истребителя)", "displayName_zh": "引力ECM干扰器强度(每架铁骑舰载机)", "displayNameID": 311790, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3226, "name": "fighterAbilityECMStrengthGravimetric", "published": 1, "stackable": 0 }, "2247": { "attributeID": 2247, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Ladar ECM Jammer Strength", "displayName_de": "Ladar-ECM-Störstärke (pro Jäger)", "displayName_en-us": "Ladar ECM Jammer Strength (Per Fighter)", "displayName_es": "Intensidad del perturbador ECM del lidar (por caza)", "displayName_fr": "Puissance de détection ladar CME (par chasseur)", "displayName_it": "Ladar ECM Jammer Strength (Per Fighter)", "displayName_ja": "光学ECMジャマー強度(戦闘機ごと)", "displayName_ko": "라이다 ECM 재머 강도 (파이터 당)", "displayName_ru": "Сила действия помех на ладарные системы (каждого истребителя)", "displayName_zh": "光雷达ECM干扰器强度(每架铁骑舰载机)", "displayNameID": 311791, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3228, "name": "fighterAbilityECMStrengthLadar", "published": 1, "stackable": 0 }, "2248": { "attributeID": 2248, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Magnetometric ECM Jammer Strength", "displayName_de": "Magnetometrische ECM-Störstärke (pro Jäger)", "displayName_en-us": "Magnetometric ECM Jammer Strength (Per Fighter)", "displayName_es": "Intensidad del perturbador ECM magnetométrico (por caza)", "displayName_fr": "Puissance de détection magnétométrique CME (par chasseur)", "displayName_it": "Magnetometric ECM Jammer Strength (Per Fighter)", "displayName_ja": "磁気ECMジャマー強度(戦闘機ごと)", "displayName_ko": "자기 ECM 재머 강도 (파이터 당)", "displayName_ru": "Сила действия помех на магнитометрические системы (каждого истребителя)", "displayName_zh": "磁力ECM干扰器强度(每架铁骑舰载机)", "displayNameID": 311792, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3227, "name": "fighterAbilityECMStrengthMagnetometric", "published": 1, "stackable": 0 }, "2249": { "attributeID": 2249, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Radar ECM Jammer Strength", "displayName_de": "Radar-ECM-Störstärke (pro Jäger)", "displayName_en-us": "Radar ECM Jammer Strength (Per Fighter)", "displayName_es": "Intensidad del perturbador ECM del radar (por caza)", "displayName_fr": "Puissance de détection radar CME (par chasseur)", "displayName_it": "Radar ECM Jammer Strength (Per Fighter)", "displayName_ja": "レーダーECMジャマー強度(戦闘機ごと)", "displayName_ko": "레이더 ECM 재머 강도 (파이터 당)", "displayName_ru": "Сила действия помех на радарные системы (каждого истребителя)", "displayName_zh": "雷达ECM干扰器强度(每架铁骑舰载机)", "displayNameID": 311793, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3229, "name": "fighterAbilityECMStrengthRadar", "published": 1, "stackable": 0 }, "2250": { "attributeID": 2250, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityECMTargetSuccess", "published": 0, "stackable": 1 }, "2251": { "attributeID": 2251, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityECMTargetJam", "published": 0, "stackable": 1 }, "2252": { "attributeID": 2252, "categoryID": 34, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityECMResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2253": { "attributeID": 2253, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "Resistance to ECM. 0 gives Immunity.", "displayName_de": "ECM-Resistenz", "displayName_en-us": "ECM Resistance", "displayName_es": "Resistencia a las ECM", "displayName_fr": "Résistance CME", "displayName_it": "ECM Resistance", "displayName_ja": "ECMレジスタンス", "displayName_ko": "ECM 저항력", "displayName_ru": "Сопротивление воздействию помех на захват целей", "displayName_zh": "ECM抗性", "displayNameID": 315615, "displayWhenZero": 0, "highIsGood": 0, "iconID": 109, "name": "ECMResistance", "published": 1, "stackable": 1, "unitID": 108 }, "2255": { "attributeID": 2255, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "scanGravimetricStrengthPercentInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2256": { "attributeID": 2256, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "scanLadarStrengthPercentInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2257": { "attributeID": 2257, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "scanMagnetometricStrengthPercentInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2258": { "attributeID": 2258, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "scanRadarStrengthPercentInterim", "published": 0, "stackable": 1, "unitID": 105 }, "2259": { "attributeID": 2259, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Neutralisationsradius beim Aufwärmen", "displayName_en-us": "Warm-up Neutralization Radius", "displayName_es": "Radio de neutralización del calentamiento", "displayName_fr": "Échauffement – rayon de signature de neutralisation", "displayName_it": "Warm-up Neutralization Radius", "displayName_ja": "無効化半径の拡大", "displayName_ko": "가동 전 뉴트럴라이제이션 반경", "displayName_ru": "Радиус эффекта нейтрализации накопителя при разогреве", "displayName_zh": "预热中和半径", "displayNameID": 312113, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "doomsdayEnergyNeutRadius", "published": 1, "stackable": 1, "unitID": 1 }, "2260": { "attributeID": 2260, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Neutralisationswert beim Aufwärmen", "displayName_en-us": "Warm-up Neutralization Amount", "displayName_es": "Cantidad de neutralización del calentamiento", "displayName_fr": "Échauffement – capacité de neutralisation", "displayName_it": "Warm-up Neutralization Amount", "displayName_ja": "無効化量の上昇", "displayName_ko": "가동 전 뉴트럴라이제이션 수치", "displayName_ru": "Энергия, нейтрализуемая при разогреве", "displayName_zh": "预热中和量", "displayNameID": 312114, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "doomsdayEnergyNeutAmount", "published": 1, "stackable": 1, "unitID": 114 }, "2261": { "attributeID": 2261, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Neutralisationssignaturradius beim Aufwärmen", "displayName_en-us": "Warm-up Neutralization Signature Radius", "displayName_es": "Radio de la señal de neutralización del calentamiento", "displayName_fr": "Échauffement – rayon de signature de neutralisation", "displayName_it": "Warm-up Neutralization Signature Radius", "displayName_ja": "無効化シグネチャ半径の拡大", "displayName_ko": "가동 전 뉴트럴라이제이션 시그니처 반경", "displayName_ru": "Сигнатура поля нейтрализации накопителя при разогреве", "displayName_zh": "预热中和信号半径", "displayNameID": 312112, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "doomsdayEnergyNeutSignatureRadius", "published": 1, "stackable": 1, "unitID": 1 }, "2262": { "attributeID": 2262, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aufwärmdauer", "displayName_en-us": "Warm-up Duration", "displayName_es": "Duración del calentamiento", "displayName_fr": "Durée de l'échauffement", "displayName_it": "Warm-up Duration", "displayName_ja": "起動時間", "displayName_ko": "가동 전 준비시간", "displayName_ru": "Время разогрева", "displayName_zh": "预热持续时间", "displayNameID": 312111, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "doomsdayWarningDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2263": { "attributeID": 2263, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Strahlradius", "displayName_en-us": "Beam Radius", "displayName_es": "Radio del rayo", "displayName_fr": "Rayon du faisceau", "displayName_it": "Beam Radius", "displayName_ja": "ビーム半径", "displayName_ko": "빔 반경", "displayName_ru": "Радиус луча", "displayName_zh": "集束激光半径", "displayNameID": 312108, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "doomsdayDamageRadius", "published": 1, "stackable": 1, "unitID": 1 }, "2264": { "attributeID": 2264, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Strahldauer", "displayName_en-us": "Beam Duration", "displayName_es": "Duración del rayo", "displayName_fr": "Durée du faisceau", "displayName_it": "Beam Duration", "displayName_ja": "ビーム持続時間", "displayName_ko": "빔 지속시간", "displayName_ru": "Продолжительность ведения огня лучом", "displayName_zh": "集束激光持续时间", "displayNameID": 312109, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "doomsdayDamageDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2265": { "attributeID": 2265, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schadenszyklus", "displayName_en-us": "Beam Damage Cycle", "displayName_es": "Ciclo de daño del rayo", "displayName_fr": "Cycle de dégâts du faisceau", "displayName_it": "Beam Damage Cycle", "displayName_ja": "ビームダメージサイクル", "displayName_ko": "빔 피해량 사이클", "displayName_ru": "Период атаки лучом", "displayName_zh": "集束激光伤害周期", "displayNameID": 312110, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "doomsdayDamageCycleTime", "published": 1, "stackable": 1, "unitID": 101 }, "2266": { "attributeID": 2266, "categoryID": 28, "dataType": 5, "defaultValue": -99.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "speedFactorFloor", "published": 0, "stackable": 1, "unitID": 124 }, "2267": { "attributeID": 2267, "categoryID": 36, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf den Widerstand des Energiespeichers", "displayName_en-us": "Capacitor Warfare Resistance Bonus", "displayName_es": "Bonif. de resistencia a la guerra de condensadores", "displayName_fr": "Bonus de résistance à la guerre de capaciteur", "displayName_it": "Capacitor Warfare Resistance Bonus", "displayName_ja": "キャパシタ戦闘レジスタンスボーナス", "displayName_ko": "캐패시터전 저항 보너스", "displayName_ru": "Влияние на сопротивление накопителя нейтрализирующему воздействию", "displayName_zh": "电容战抗性加成", "displayNameID": 311565, "displayWhenZero": 0, "highIsGood": 0, "iconID": 89, "name": "energyWarfareResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2268": { "attributeID": 2268, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Distance which tethering will engage / disengage piloted ships.", "displayName_de": "Maximale Anbindereichweite", "displayName_en-us": "Maximum tethering range", "displayName_es": "Alcance máximo de amarre", "displayName_fr": "Maximum tethering range", "displayName_it": "Maximum tethering range", "displayName_ja": "テザリング最大範囲", "displayName_ko": "최대 테더링 거리", "displayName_ru": "Максимальное расстояние швартовки", "displayName_zh": "最大驻留范围", "displayNameID": 312203, "displayWhenZero": 0, "highIsGood": 1, "name": "tetheringRange", "published": 1, "stackable": 1, "unitID": 1 }, "2269": { "attributeID": 2269, "categoryID": 6, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "isPointTargeted", "published": 0, "stackable": 0 }, "2270": { "attributeID": 2270, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "0=None\r\n1=Anti-Fighter\r\n2=General\r\n3=Ewar\r\n4=TorpedoBomber\r\n5=AOEBomber", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronRole", "published": 0, "stackable": 1 }, "2271": { "attributeID": 2271, "categoryID": 41, "dataType": 8, "defaultValue": 0.0, "description": "EM Damage when the ship dies", "displayName_de": "EM-Schaden", "displayName_en-us": "EM Damage", "displayName_es": "Daño electromagnético", "displayName_fr": "Dégâts électromagnétiques", "displayName_it": "EM Damage", "displayName_ja": "EMダメージ", "displayName_ko": "EM 피해량", "displayName_ru": "ЭМ-урон", "displayName_zh": "电磁伤害", "displayNameID": 312170, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1388, "name": "onDeathDamageEM", "published": 1, "stackable": 1, "unitID": 113 }, "2272": { "attributeID": 2272, "categoryID": 41, "dataType": 8, "defaultValue": 0.0, "description": "Thermal Damage when the ship dies", "displayName_de": "Thermalschaden", "displayName_en-us": "Thermal Damage", "displayName_es": "Daño térmico", "displayName_fr": "Dégâts thermiques", "displayName_it": "Thermal Damage", "displayName_ja": "サーマルダメージ", "displayName_ko": "열 피해량", "displayName_ru": "Термический урон", "displayName_zh": "热能伤害", "displayNameID": 312173, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1386, "name": "onDeathDamageTherm", "published": 1, "stackable": 1, "unitID": 113 }, "2273": { "attributeID": 2273, "categoryID": 41, "dataType": 8, "defaultValue": 0.0, "description": "Kinetic Damage when the ship dies", "displayName_de": "Kinetikschaden", "displayName_en-us": "Kinetic Damage", "displayName_es": "Daño cinético", "displayName_fr": "Dégâts cinétiques", "displayName_it": "Kinetic Damage", "displayName_ja": "キネティックダメージ", "displayName_ko": "키네틱 피해량", "displayName_ru": "Кинетический урон", "displayName_zh": "动能伤害", "displayNameID": 312172, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1385, "name": "onDeathDamageKin", "published": 1, "stackable": 1, "unitID": 113 }, "2274": { "attributeID": 2274, "categoryID": 41, "dataType": 8, "defaultValue": 0.0, "description": "Explosive Damage when the ship dies", "displayName_de": "Explosivschaden", "displayName_en-us": "Explosive Damage", "displayName_es": "Daño explosivo", "displayName_fr": "Dégâts explosifs", "displayName_it": "Explosive Damage", "displayName_ja": "エクスプローシブダメージ", "displayName_ko": "폭발 피해량", "displayName_ru": "Фугасный урон", "displayName_zh": "爆炸伤害", "displayNameID": 312171, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "onDeathDamageExp", "published": 1, "stackable": 1, "unitID": 113 }, "2275": { "attributeID": 2275, "categoryID": 41, "dataType": 5, "defaultValue": 0.0, "description": "Range of the explosion when the ship dies.", "displayName_de": "Explosionsreichweite", "displayName_en-us": "Explosion Range", "displayName_es": "Alcance de explosión", "displayName_fr": "Portée de l'explosion", "displayName_it": "Explosion Range", "displayName_ja": "爆発範囲", "displayName_ko": "폭발 사거리", "displayName_ru": "Радиус распространения взрыва", "displayName_zh": "爆炸范围", "displayNameID": 312175, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "onDeathAOERadius", "published": 1, "stackable": 1, "unitID": 1 }, "2276": { "attributeID": 2276, "categoryID": 41, "dataType": 5, "defaultValue": 0.0, "description": "Signature Radius of Explosion (cloud factor) when ship dies", "displayName_de": "Explosionssignaturradius", "displayName_en-us": "Explosion Signature Radius", "displayName_es": "Radio de la señal de la explosión", "displayName_fr": "Rayon de signature d'explosion", "displayName_it": "Explosion Signature Radius", "displayName_ja": "爆発シグネチャ半径", "displayName_ko": "폭발 시그니처 반경", "displayName_ru": "Сигнатура взрыва", "displayName_zh": "爆炸信号半径", "displayNameID": 312174, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "onDeathSignatureRadius", "published": 1, "stackable": 1, "unitID": 1 }, "2277": { "attributeID": 2277, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to Arcving Vorton Projector", "displayName_de": "Zusätzliche Doomsday-Sekundärziele", "displayName_en-us": "Additional doomsday secondary targets", "displayName_es": "Objetivos secundarios apocalípticos adicionales", "displayName_fr": "Additional doomsday secondary targets", "displayName_it": "Additional doomsday secondary targets", "displayName_ja": "ドゥームズデイの副次的ターゲットが増加", "displayName_ko": "추가 둠스데이 2차 타겟", "displayName_ru": "Вторичные цели орудий Судного дня", "displayName_zh": "附加末日武器次要目标", "displayNameID": 312201, "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigDoomsdayTargetAmountBonus", "published": 1, "stackable": 1, "unitID": 138 }, "2278": { "attributeID": 2278, "categoryID": 7, "dataType": 2, "defaultValue": 0.0, "description": "Reduction in damage lost per target on the Arcing Vorton Projector", "displayName_de": "Bonus auf die Schadensreduktion der Sekundärziele von Doomsday-Waffen.", "displayName_en-us": "Bonus to doomsday secondary target damage reduction", "displayName_es": "Bonificación a la reducción de daño del objetivo secundario apocalíptico", "displayName_fr": "Bonus to doomsday secondary target damage reduction", "displayName_it": "Bonus to doomsday secondary target damage reduction", "displayName_ja": "ドゥームズデイの副次的ターゲットダメージが減少", "displayName_ko": "둠스데이 2차 타겟 피해 감소 보너스", "displayName_ru": "Влияние на снижение действия орудий Судного дня на вторичные цели", "displayName_zh": "末日武器次要目标伤害衰减加成", "displayNameID": 312200, "displayWhenZero": 0, "highIsGood": 1, "name": "structureRigDoomsdayDamageLossTargetBonus", "published": 1, "stackable": 1, "unitID": 127 }, "2279": { "attributeID": 2279, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Radius of the AOE Effect", "displayName_de": "AoE-Reichweite", "displayName_en-us": "AOE Range", "displayName_es": "Alcance del área de efecto", "displayName_fr": "Portée de l'effet de zone", "displayName_it": "AOE Range", "displayName_ja": "AOE範囲", "displayName_ko": "광역 사거리", "displayName_ru": "Радиус действия объёмного эффекта", "displayName_zh": "AOE范围", "displayNameID": 312180, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "doomsdayAOERange", "published": 1, "stackable": 1, "unitID": 1 }, "2280": { "attributeID": 2280, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Duration of the AOE Effect", "displayName_de": "AoE-Dauer", "displayName_en-us": "AOE Duration", "displayName_es": "Duración del área de efecto", "displayName_fr": "Durée de l'effet de zone", "displayName_it": "AOE Duration", "displayName_ja": "AOE持続時間", "displayName_ko": "광역 지속시간", "displayName_ru": "Время действия объёмного эффекта", "displayName_zh": "AOE持续时间", "displayNameID": 312179, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "doomsdayAOEDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2281": { "attributeID": 2281, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Signature Radius of the AOE Effect", "displayName_de": "AoE-Signaturradius", "displayName_en-us": "AOE Signature Radius", "displayName_es": "Radio de la señal del área de efecto", "displayName_fr": "Rayon de signature de l'effet de zone", "displayName_it": "AOE Signature Radius", "displayName_ja": "AOEシグネチャ半径", "displayName_ko": "광역 시그니처 반경", "displayName_ru": "Сигнатура объёмного эффекта", "displayName_zh": "AOE信号半径", "displayNameID": 312181, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "doomsdayAOESignatureRadius", "published": 1, "stackable": 1, "unitID": 1 }, "2282": { "attributeID": 2282, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikation des Sensorstärke-Bonus", "displayName_en-us": "Modification of Sensor Strength Bonus", "displayName_es": "Mod. de bonificación de intensidad del sensor", "displayName_fr": "Modification du bonus à la puissance de détection", "displayName_it": "Modification of Sensor Strength Bonus", "displayName_ja": "センサー強度ボーナスが変化", "displayName_ko": "센서 강도 보너스 개조", "displayName_ru": "Изменение влияния на эффективность систем захвата целей", "displayName_zh": "感应强度加成修正", "displayNameID": 311929, "displayWhenZero": 0, "highIsGood": 1, "iconID": 3226, "name": "sensorStrengthBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2283": { "attributeID": 2283, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtA1", "published": 0, "stackable": 1 }, "2284": { "attributeID": 2284, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtA2", "published": 0, "stackable": 1 }, "2285": { "attributeID": 2285, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtA3", "published": 0, "stackable": 1 }, "2286": { "attributeID": 2286, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtC1", "published": 0, "stackable": 1 }, "2287": { "attributeID": 2287, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtC2", "published": 0, "stackable": 1 }, "2288": { "attributeID": 2288, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtC3", "published": 0, "stackable": 1 }, "2289": { "attributeID": 2289, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtG1", "published": 0, "stackable": 1 }, "2290": { "attributeID": 2290, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtG2", "published": 0, "stackable": 1 }, "2291": { "attributeID": 2291, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtG3", "published": 0, "stackable": 1 }, "2292": { "attributeID": 2292, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtM1", "published": 0, "stackable": 1 }, "2293": { "attributeID": 2293, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtM2", "published": 0, "stackable": 1 }, "2294": { "attributeID": 2294, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtM3", "published": 0, "stackable": 1 }, "2298": { "attributeID": 2298, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole1", "published": 0, "stackable": 1 }, "2299": { "attributeID": 2299, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole2", "published": 0, "stackable": 1 }, "2300": { "attributeID": 2300, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole3", "published": 0, "stackable": 1 }, "2301": { "attributeID": 2301, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole4", "published": 0, "stackable": 1 }, "2302": { "attributeID": 2302, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole5", "published": 0, "stackable": 1 }, "2303": { "attributeID": 2303, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Ship Role Bonus. Not multiplied by skills.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusRole6", "published": 0, "stackable": 1 }, "2304": { "attributeID": 2304, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Torpedo Velocity Bonus Percentage", "displayName_de": "Torpedo-Geschwindigkeitsbonus", "displayName_en-us": "Torpedo Velocity Bonus", "displayName_es": "Bonificación de velocidad de torpedo", "displayName_fr": "de bonus à la vitesse des torpilles", "displayName_it": "Torpedo Velocity Bonus", "displayName_ja": "トルピード速度ボーナス", "displayName_ko": "토피도 속도 보너스", "displayName_ru": "Повышение скорости полёта торпед", "displayName_zh": "鱼雷速度加成", "displayNameID": 311930, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "siegeTorpedoVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2305": { "attributeID": 2305, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "XL Launcher ROF Bonus Percentage", "displayName_de": "XL-Werfer-Feuerratebonus", "displayName_en-us": "XL Launcher ROF Bonus", "displayName_es": "Bonificación de cadencia de tiro de lanzador XL", "displayName_fr": "de bonus au lanceur de tir XL", "displayName_it": "XL Launcher ROF Bonus", "displayName_ja": "XLランチャーROFボーナス", "displayName_ko": "XL 런처 ROF 보너스", "displayName_ru": "Сокращение цикла выстрела сверхбольших пусковых установок", "displayName_zh": "超大型发射器射速加成", "displayNameID": 311931, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "siegeLauncherROFBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2306": { "attributeID": 2306, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Siege Missile Damage Bonus Percentage", "displayName_de": "Schadensbonus für Belagerungslenkwaffen", "displayName_en-us": "Siege Missile Damage Bonus", "displayName_es": "Bonificación de daño de misiles", "displayName_fr": "Bonus de dégâts des missiles de siège", "displayName_it": "Siege Missile Damage Bonus", "displayName_ja": "シージミサイルダメージボーナス", "displayName_ko": "공성 미사일 피해 보너스", "displayName_ru": "Увеличение урона от осадных ракет", "displayName_zh": "会战型导弹伤害加成", "displayNameID": 311932, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "siegeMissileDamageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2307": { "attributeID": 2307, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Turret Damage Bonus Percentage", "displayName_de": "Geschützturmschadensbonus", "displayName_en-us": "Turret Damage Bonus", "displayName_es": "Turret Damage Bonus", "displayName_fr": "de bonus aux dégâts des tourelles", "displayName_it": "Turret Damage Bonus", "displayName_ja": "タレットダメージボーナス", "displayName_ko": "Turret Damage Bonus", "displayName_ru": "Повышение урона орудийных установок", "displayName_zh": "炮台伤害加成", "displayNameID": 311933, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "siegeTurretDamageBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2308": { "attributeID": 2308, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryA1", "published": 0, "stackable": 1 }, "2309": { "attributeID": 2309, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryA2", "published": 0, "stackable": 1 }, "2310": { "attributeID": 2310, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryA3", "published": 0, "stackable": 1 }, "2311": { "attributeID": 2311, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryC1", "published": 0, "stackable": 1 }, "2312": { "attributeID": 2312, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryC2", "published": 0, "stackable": 1 }, "2313": { "attributeID": 2313, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryC3", "published": 0, "stackable": 1 }, "2314": { "attributeID": 2314, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryG1", "published": 0, "stackable": 1 }, "2315": { "attributeID": 2315, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryG2", "published": 0, "stackable": 1 }, "2316": { "attributeID": 2316, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryG3", "published": 0, "stackable": 1 }, "2317": { "attributeID": 2317, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryM1", "published": 0, "stackable": 1 }, "2318": { "attributeID": 2318, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryM2", "published": 0, "stackable": 1 }, "2319": { "attributeID": 2319, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryM3", "published": 0, "stackable": 1 }, "2320": { "attributeID": 2320, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryA4", "published": 0, "stackable": 1 }, "2321": { "attributeID": 2321, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryC4", "published": 0, "stackable": 1 }, "2322": { "attributeID": 2322, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryG4", "published": 0, "stackable": 1 }, "2323": { "attributeID": 2323, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryM4", "published": 0, "stackable": 1 }, "2324": { "attributeID": 2324, "categoryID": 34, "dataType": 11, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityLaunchBombType", "published": 0, "stackable": 1, "unitID": 116 }, "2325": { "attributeID": 2325, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "EM-Schaden (pro Jäger)", "displayName_en-us": "EM Damage (Per Fighter)", "displayName_es": "Daño electromagnético (por caza)", "displayName_fr": "Dégâts EM (par chasseur)", "displayName_it": "EM Damage (Per Fighter)", "displayName_ja": "EMダメージ(戦闘機ごと)", "displayName_ko": "EM 피해량 (파이터 당)", "displayName_ru": "ЭМ-урон (каждого истребителя)", "displayName_zh": "电磁伤害(每架铁骑舰载机)", "displayNameID": 312041, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeDamageEM", "published": 1, "stackable": 0, "unitID": 113 }, "2326": { "attributeID": 2326, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Thermalschaden (pro Jäger)", "displayName_en-us": "Thermal Damage (Per Fighter)", "displayName_es": "Daño térmico (por caza)", "displayName_fr": "Dégâts thermiques (par chasseur)", "displayName_it": "Thermal Damage (Per Fighter)", "displayName_ja": "サーマルダメージ(戦闘機ごと)", "displayName_ko": "열 피해량 (파이터 당)", "displayName_ru": "Термический урон (каждого истребителя)", "displayName_zh": "热能伤害(每架铁骑舰载机)", "displayNameID": 312042, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeDamageTherm", "published": 1, "stackable": 0, "unitID": 113 }, "2327": { "attributeID": 2327, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Kinetikschaden (pro Jäger)", "displayName_en-us": "Kinetic Damage (Per Fighter)", "displayName_es": "Daño cinético (por caza)", "displayName_fr": "Dégâts cinétiques (par chasseur)", "displayName_it": "Kinetic Damage (Per Fighter)", "displayName_ja": "キネティックダメージ(戦闘機ごと)", "displayName_ko": "키네틱 피해량 (파이터 당)", "displayName_ru": "Кинетический урон (каждого истребителя)", "displayName_zh": "动能伤害(每架铁骑舰载机)", "displayNameID": 312043, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeDamageKin", "published": 1, "stackable": 0, "unitID": 113 }, "2328": { "attributeID": 2328, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsschaden (pro Jäger)", "displayName_en-us": "Explosive Damage (Per Fighter)", "displayName_es": "Daño explosivo (por caza)", "displayName_fr": "Dégâts explosifs (par chasseur)", "displayName_it": "Explosive Damage (Per Fighter)", "displayName_ja": "エクスプローシブダメージ(戦闘機ごと)", "displayName_ko": "폭발 피해량 (파이터 당)", "displayName_ru": "Фугасный урон (каждого истребителя)", "displayName_zh": "爆炸伤害(每架铁骑舰载机)", "displayNameID": 312044, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeDamageExp", "published": 1, "stackable": 0, "unitID": 113 }, "2329": { "attributeID": 2329, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeSignatureRadius", "published": 0, "stackable": 1, "unitID": 1 }, "2330": { "attributeID": 2330, "categoryID": 34, "dataType": 5, "defaultValue": 500.0, "description": "Range at which the fighters Explode from the target", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeRange", "published": 0, "stackable": 1, "unitID": 1 }, "2333": { "attributeID": 2333, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "structureRoleBonus", "published": 0, "stackable": 1, "unitID": 105 }, "2334": { "attributeID": 2334, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Dogma attribute that specifies if the item should have the structure icon or not.", "displayWhenZero": 0, "highIsGood": 1, "name": "structureItemVisualFlag", "published": 0, "stackable": 1 }, "2335": { "attributeID": 2335, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to fighter hitpoint (%)", "displayName_de": "Jäger-Schildbonus", "displayName_en-us": "Fighter Shield Bonus", "displayName_es": "Bonificación de escudo de caza", "displayName_fr": "de bonus au bouclier (chasseur)", "displayName_it": "Fighter Shield Bonus", "displayName_ja": "戦闘機シールドボーナス", "displayName_ko": "파이터 실드 보너스", "displayName_ru": "Повышение прочности щитов истребителей", "displayName_zh": "铁骑舰载机护盾加成", "displayNameID": 312063, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "fighterBonusShieldCapacityPercent", "published": 1, "stackable": 1, "unitID": 109 }, "2336": { "attributeID": 2336, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to fighter Velocity (%)", "displayName_de": "Jäger-Geschwindigkeitsbonus", "displayName_en-us": "Fighter Velocity Bonus", "displayName_es": "Bonificación de velocidad de caza", "displayName_fr": "de bonus à la vitesse (chasseur)", "displayName_it": "Fighter Velocity Bonus", "displayName_ja": "戦闘機速度ボーナス", "displayName_ko": "파이터 속도 보너스", "displayName_ru": "Повышение скорости полёта истребителей", "displayName_zh": "铁骑舰载机速度加成", "displayNameID": 312064, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "fighterBonusVelocityPercent", "published": 1, "stackable": 1, "unitID": 109 }, "2337": { "attributeID": 2337, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to fighter ROF (%)", "displayName_de": "Jäger-Feuerratebonus", "displayName_en-us": "Fighter ROF Bonus", "displayName_es": "Bonificación de cadencia de tiro de cazas", "displayName_fr": "de bonus à la cadence de tir (chasseur)", "displayName_it": "Fighter ROF Bonus", "displayName_ja": "戦闘機ROFボーナス", "displayName_ko": "파이터 연사속도 보너스", "displayName_ru": "Сокращение цикла выстрела истребителей", "displayName_zh": "铁骑舰载机射速加成", "displayNameID": 312065, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1389, "name": "fighterBonusROFPercent", "published": 1, "stackable": 1, "unitID": 111 }, "2338": { "attributeID": 2338, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to fighter shield recharge (%)", "displayName_de": "Jäger-Schildladebonus", "displayName_en-us": "Fighter Shield Recharge Bonus", "displayName_es": "Bonificación de recarga de escudo de caza", "displayName_fr": "de bonus à la recharge de bouclier (chasseur)", "displayName_it": "Fighter Shield Recharge Bonus", "displayName_ja": "戦闘機シールド再チャージボーナス", "displayName_ko": "파이터 실드 충전 보너스", "displayName_ru": "Повышение скорости регенерации щитов истребителей", "displayName_zh": "铁骑舰载机护盾回充加成", "displayNameID": 312066, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterBonusShieldRechargePercent", "published": 1, "stackable": 1, "unitID": 111 }, "2339": { "attributeID": 2339, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "structureServiceRoleBonus", "published": 0, "stackable": 1, "unitID": 105 }, "2340": { "attributeID": 2340, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Gräße des Jägerhangars", "displayName_en-us": "Bonus to Fighter Hangar size", "displayName_es": "Bonificación de tamaño del hangar de cazas", "displayName_fr": "de bonus à la taille du hangar à chasseurs", "displayName_it": "Bonus to Fighter Hangar size", "displayName_ja": "戦闘機のハンガーサイズが増加", "displayName_ko": "파이터 격납고 크기 보너스", "displayName_ru": "Влияние на размер отсека истребителей", "displayName_zh": "铁骑舰载机挂舱容量加成", "displayNameID": 312289, "displayWhenZero": 0, "highIsGood": 1, "name": "skillBonusFighterHangarSize", "published": 1, "stackable": 1, "unitID": 121 }, "2342": { "attributeID": 2342, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Fernreparatur-Impedanzbonus", "displayName_en-us": "Remote Repair Impedance Bonus", "displayName_es": "Bonificación de impedancia de reparación remota", "displayName_fr": "de bonus à l'impédance de réparation à distance", "displayName_it": "Remote Repair Impedance Bonus", "displayName_ja": "リモートリペアのインピーダンスボーナス", "displayName_ko": "원격 수리 임피던스 모듈", "displayName_ru": "Ослабление получаемого дистанционного ремонта", "displayName_zh": "远程维修阻扰加成", "displayNameID": 312067, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "remoteRepairImpedanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "2343": { "attributeID": 2343, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If this ship attribute is NOT 0 then they will be prevented from activating the structure tethering.", "displayName_de": "Anbinden nicht erlauben", "displayName_en-us": "Disallow Tethering", "displayName_es": "Desautorizar amarre", "displayName_fr": "Interdire l'accostage", "displayName_it": "Disallow Tethering", "displayName_ja": "テザリングを禁止", "displayName_ko": "테더링 불허", "displayName_ru": "Швартовка запрещена", "displayName_zh": "不允许驻留", "displayNameID": 312093, "displayWhenZero": 0, "highIsGood": 1, "name": "disallowTethering", "published": 1, "stackable": 1, "unitID": 137 }, "2344": { "attributeID": 2344, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Capital-Fernunterstützungsdauer (Schilde / Panzerung / Rumpf / Energie)", "displayName_en-us": "Capital Remote Logistics Duration Bonus (Shield / Armor / Hull / Energy)", "displayName_es": "Bonificación de duración de logística remota capital (escudo/blindaje/casco/energía)", "displayName_fr": "de bonus à la durée de support logistique à distance pour les vaisseaux capitaux (bouclier / blindage / coque / énergie)", "displayName_it": "Capital Remote Logistics Duration Bonus (Shield / Armor / Hull / Energy)", "displayName_ja": "キャピタル級リモート輸送時間ボーナス(シールド/アーマー/船体/エネルギー)", "displayName_ko": "캐피탈 원격 로지스틱스 함선 지속시간 보너스 (실드/장갑/선체/에너지)", "displayName_ru": "Сокращение времени цикла систем дистанционного восстановления щитов/брони/корпуса/энергии для КБТ", "displayName_zh": "旗舰远程后勤支援持续时间加成 (护盾/装甲/结构/能量)", "displayNameID": 312082, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "siegeRemoteLogisticsDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2345": { "attributeID": 2345, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Capital-Fernunterstützungsleistung (Schilde / Panzerung / Rumpf / Energie)", "displayName_en-us": "Capital Remote Logistics Amount Bonus (Shield / Armor / Hull / Energy)", "displayName_es": "Bonificación de la cantidad de logística remota capital (escudo/blindaje/casco/energía)", "displayName_fr": "de bonus à la qualité du support logistique à distance pour les vaisseaux capitaux (bouclier / blindage / coque / énergie)", "displayName_it": "Capital Remote Logistics Amount Bonus (Shield / Armor / Hull / Energy)", "displayName_ja": "キャピタル級リモート輸送量ボーナス(シールド/アーマー/船体/エネルギー)", "displayName_ko": "캐피탈 원격 로지스틱스 함선 총 보너스 (실드/장갑/선체/에너지)", "displayName_ru": "Повышение эффективности систем дистанционного восстановления щитов/брони/корпуса/энергии для КБТ", "displayName_zh": "旗舰远程后勤支援维修量加成 (护盾/装甲/结构/能量)", "displayNameID": 312083, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "siegeRemoteLogisticsAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2346": { "attributeID": 2346, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Armor Repairer / Shield Booster Duration Bonus", "displayName_de": "Bonus auf die Dauer von Panzerungreparatur / Schildboostern", "displayName_en-us": "Armor Repairer / Shield Booster Duration Bonus", "displayName_es": "Bonificación de duración de potenciador de escudo/reparador de blindaje", "displayName_fr": "de bonus à la durée du réparateur de blindage / booster de bouclier", "displayName_it": "Armor Repairer / Shield Booster Duration Bonus", "displayName_ja": "アーマーリペアラ/シールドブースターの有効時間ボーナス", "displayName_ko": "장갑 수리장치 / 실드 부스터 지속시간 보너스", "displayName_ru": "Сокращение времени цикла бортовых систем ремонта брони / накачки щитов", "displayName_zh": "装甲维修器/护盾回充增量器运转周期加成", "displayNameID": 312084, "displayWhenZero": 0, "highIsGood": 0, "iconID": 2104, "name": "siegeLocalLogisticsDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2347": { "attributeID": 2347, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Armor Repairer / Shield Booster Amount Bonus", "displayName_de": "Bonus auf die Leistung von Panzerungreparatur / Schildboostern", "displayName_en-us": "Armor Repairer / Shield Booster Amount Bonus", "displayName_es": "Bonificación de cantidad de potenciadores de escudo/reparadores de blindaje", "displayName_fr": "de bonus à la qualité du réparateur de blindage / booster de bouclier", "displayName_it": "Armor Repairer / Shield Booster Amount Bonus", "displayName_ja": "アーマーリペアラ/シールドブースターの量ボーナス", "displayName_ko": "장갑 수리장치 / 실드 부스터량 보너스", "displayName_ru": "Повышение эффективности бортовых систем ремонта брони / накачки щитов", "displayName_zh": "装甲维修量/护盾回充增量加成", "displayNameID": 312085, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2104, "name": "siegeLocalLogisticsAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2348": { "attributeID": 2348, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Capital-Fernunterstützungsreichweite (Schilde / Panzerung / Rumpf / Energie)", "displayName_en-us": "Capital Remote Logistics Range Bonus (Shield / Armor / Hull / Energy)", "displayName_es": "Bonificación del alcance de logística remota capital (escudo/blindaje/casco/energía)", "displayName_fr": "de bonus à la portée de support logistique à distance pour les vaisseaux capitaux (bouclier / blindage / coque / énergie)", "displayName_it": "Capital Remote Logistics Range Bonus (Shield / Armor / Hull / Energy)", "displayName_ja": "キャピタル級リモート輸送範囲ボーナス(シールド/アーマー/船体/エネルギー)", "displayName_ko": "캐피탈 원격 로지스틱스 함선 거리 보너스 (실드/장갑/선체/에너지)", "displayName_ru": "Повышение дальности действия систем дистанционного восстановления щитов/брони/корпуса/энергии для КБТ", "displayName_zh": "旗舰远程后勤支援距离加成 (护盾/装甲/结构/能量)", "displayNameID": 312086, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "siegeRemoteLogisticsRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2349": { "attributeID": 2349, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 312087, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "fighterAbilityLaunchBombDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2351": { "attributeID": 2351, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Resistenzbonus für Sensordämpfer", "displayName_en-us": "Sensor Dampener Resistance Bonus", "displayName_es": "Bonificación de resistencia del atenuador de sensor", "displayName_fr": "de bonus à la résistance de l'atténuateur de détection", "displayName_it": "Sensor Dampener Resistance Bonus", "displayName_ja": "センサーダンプナーのレジスタンスボーナス", "displayName_ko": "센서 댐프너 저항 보너스", "displayName_ru": "Влияние на сопротивление подавлению захвата целей", "displayName_zh": "感应抑阻器抗性加成", "displayNameID": 312089, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "sensorDampenerResistanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "2352": { "attributeID": 2352, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Fernunterstützung-Impedanzbonus", "displayName_en-us": "Remote Assistance Impedance Bonus", "displayName_es": "Bonificación de impedancia de asistencia remota", "displayName_fr": "de bonus à l'impédance de réparation à distance", "displayName_it": "Remote Assistance Impedance Bonus", "displayName_ja": "リモートアシスタンスのインピーダンスボーナス", "displayName_ko": "원격 지원 임피던스 보너스", "displayName_ru": "Снижение эффективности дистанционной поддержки", "displayName_zh": "远程协助阻扰加成", "displayNameID": 312090, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "remoteAssistanceImpedanceBonus", "published": 1, "stackable": 1, "unitID": 124 }, "2353": { "attributeID": 2353, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Resistenzbonus gegen Waffenstörung", "displayName_en-us": "Weapon Disruption Resistance Bonus", "displayName_es": "Bonificación de resistencia a la disrupción de armas", "displayName_fr": "de bonus à la résistance de perturbation d'armement", "displayName_it": "Weapon Disruption Resistance Bonus", "displayName_ja": "兵器妨害レジスタンスのボーナス", "displayName_ko": "무기 교란 저항 보너스", "displayName_ru": "Влияние на сопротивление помехам на системы наводки", "displayName_zh": "武器干扰抗性加成", "displayNameID": 312091, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "weaponDisruptionResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2354": { "attributeID": 2354, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If this ship attribute is NOT 0 then they will be prevented from docking in stations or structures.", "displayName_de": "Andocken nicht erlauben", "displayName_en-us": "Disallow Docking", "displayName_es": "Desautorizar acoplamiento", "displayName_fr": "Interdire l'amarrage", "displayName_it": "Disallow Docking", "displayName_ja": "ドッキングを禁止", "displayName_ko": "도킹 불허", "displayName_ru": "В активном состоянии запрещён вход в док", "displayName_zh": "不允许停靠", "displayNameID": 312092, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "disallowDocking", "published": 1, "stackable": 1, "unitID": 137 }, "2355": { "attributeID": 2355, "categoryID": 37, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Hochsicherheits-Bonusmultiplikator", "displayName_en-us": "High Security Bonus Multiplier", "displayName_es": "Multiplicador de bonificación de seguridad alta", "displayName_fr": "High Security Bonus Multiplier", "displayName_it": "High Security Bonus Multiplier", "displayName_ja": "高セキュリティボーナス乗数", "displayName_ko": "하이 시큐리티 보너스 배수", "displayName_ru": "Изменение влияния в планетных системах метрополии («хай-сек»)", "displayName_zh": "高安加成系数", "displayNameID": 312232, "displayWhenZero": 0, "highIsGood": 1, "name": "hiSecModifier", "published": 1, "stackable": 1, "unitID": 104 }, "2356": { "attributeID": 2356, "categoryID": 37, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Niedersicherheits-Bonusmultiplikator", "displayName_en-us": "Low Security Bonus Multiplier", "displayName_es": "Multiplicador de bonificación de seguridad baja", "displayName_fr": "Low Security Bonus Multiplier", "displayName_it": "Low Security Bonus Multiplier", "displayName_ja": "低セキュリティボーナス乗数", "displayName_ko": "로우 시큐리티 보너스 배수", "displayName_ru": "Изменение влияния в планетных системах фронтира («лоу-сек»)", "displayName_zh": "低安加成系数", "displayNameID": 312233, "displayWhenZero": 0, "highIsGood": 1, "name": "lowSecModifier", "published": 1, "stackable": 1, "unitID": 104 }, "2357": { "attributeID": 2357, "categoryID": 37, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Nullsicherheits- und Wurmloch-Bonusmultiplikator", "displayName_en-us": "Nullsec and Wormhole Bonus Multiplier", "displayName_es": "Multiplicador de bonificación de seguridad nula y agujero de gusano", "displayName_fr": "Nullsec and Wormhole Bonus Multiplier", "displayName_it": "Nullsec and Wormhole Bonus Multiplier", "displayName_ja": "0.0セキュリティおよびワームホールボーナス乗数", "displayName_ko": "널 시큐리티와 웜홀 보너스 배수", "displayName_ru": "Изменение влияния в «нулях» и w-пространстве", "displayName_zh": "0.0和虫洞加成系数", "displayNameID": 312234, "displayWhenZero": 0, "highIsGood": 1, "name": "nullSecModifier", "published": 1, "stackable": 1, "unitID": 104 }, "2358": { "attributeID": 2358, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "securityModifier", "published": 0, "stackable": 1 }, "2359": { "attributeID": 2359, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierA1", "published": 0, "stackable": 1 }, "2360": { "attributeID": 2360, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierA2", "published": 0, "stackable": 1 }, "2361": { "attributeID": 2361, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierA3", "published": 0, "stackable": 1 }, "2362": { "attributeID": 2362, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierA4", "published": 0, "stackable": 1 }, "2363": { "attributeID": 2363, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierC1", "published": 0, "stackable": 1 }, "2364": { "attributeID": 2364, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierC2", "published": 0, "stackable": 1 }, "2365": { "attributeID": 2365, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierC3", "published": 0, "stackable": 1 }, "2366": { "attributeID": 2366, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierC4", "published": 0, "stackable": 1 }, "2367": { "attributeID": 2367, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierG1", "published": 0, "stackable": 1 }, "2368": { "attributeID": 2368, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierG2", "published": 0, "stackable": 1 }, "2369": { "attributeID": 2369, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierG3", "published": 0, "stackable": 1 }, "2370": { "attributeID": 2370, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierG4", "published": 0, "stackable": 1 }, "2371": { "attributeID": 2371, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierM1", "published": 0, "stackable": 1 }, "2372": { "attributeID": 2372, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierM2", "published": 0, "stackable": 1 }, "2373": { "attributeID": 2373, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierM3", "published": 0, "stackable": 1 }, "2374": { "attributeID": 2374, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierM4", "published": 0, "stackable": 1 }, "2375": { "attributeID": 2375, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierA1", "published": 0, "stackable": 1 }, "2376": { "attributeID": 2376, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierA2", "published": 0, "stackable": 1 }, "2377": { "attributeID": 2377, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierA3", "published": 0, "stackable": 1 }, "2378": { "attributeID": 2378, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierA4", "published": 0, "stackable": 1 }, "2379": { "attributeID": 2379, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierA5", "published": 0, "stackable": 1 }, "2380": { "attributeID": 2380, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierC1", "published": 0, "stackable": 1 }, "2381": { "attributeID": 2381, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierC2", "published": 0, "stackable": 1 }, "2382": { "attributeID": 2382, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierC3", "published": 0, "stackable": 1 }, "2383": { "attributeID": 2383, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierC4", "published": 0, "stackable": 1 }, "2384": { "attributeID": 2384, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierC5", "published": 0, "stackable": 1 }, "2385": { "attributeID": 2385, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierG1", "published": 0, "stackable": 1 }, "2386": { "attributeID": 2386, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierG2", "published": 0, "stackable": 1 }, "2387": { "attributeID": 2387, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierG3", "published": 0, "stackable": 1 }, "2388": { "attributeID": 2388, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierG4", "published": 0, "stackable": 1 }, "2389": { "attributeID": 2389, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierG5", "published": 0, "stackable": 1 }, "2390": { "attributeID": 2390, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierM1", "published": 0, "stackable": 1 }, "2391": { "attributeID": 2391, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierM2", "published": 0, "stackable": 1 }, "2392": { "attributeID": 2392, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierM3", "published": 0, "stackable": 1 }, "2393": { "attributeID": 2393, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierM4", "published": 0, "stackable": 1 }, "2394": { "attributeID": 2394, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSupercarrierM5", "published": 0, "stackable": 1 }, "2395": { "attributeID": 2395, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Prevents module activation when the ship or structure is currently invulnerable.", "displayName_de": "Kann nur benutzt werden, während die Struktur verwundbar ist.", "displayName_en-us": "Only usable while structure is vulnerable", "displayName_es": "Solo se puede usar mientras la estructura es vulnerable.", "displayName_fr": "Only usable while structure is vulnerable", "displayName_it": "Only usable while structure is vulnerable", "displayName_ja": "ストラクチャが脆弱になっている間のみ使用可能", "displayName_ko": "구조물이 취약할 때만 사용할 수 있습니다.", "displayName_ru": "Не работает в режиме неуязвимости", "displayName_zh": "只能在建筑可被攻击时使用", "displayNameID": 312182, "displayWhenZero": 0, "highIsGood": 1, "name": "disallowWhenInvulnerable", "published": 1, "stackable": 1, "unitID": 137 }, "2396": { "attributeID": 2396, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装備可能:", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可装配至", "displayNameID": 312096, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup10", "published": 1, "stackable": 1, "unitID": 115 }, "2397": { "attributeID": 2397, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai/Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "有効時間/持続時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 312097, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationWeaponDisruptionBurstProjector", "published": 1, "stackable": 1, "unitID": 101 }, "2398": { "attributeID": 2398, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai/Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "有効時間/持続時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 312098, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "durationECMJammerBurstProjector", "published": 1, "stackable": 1, "unitID": 101 }, "2399": { "attributeID": 2399, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai/Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "有効時間/持続時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 312099, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationSensorDampeningBurstProjector", "published": 1, "stackable": 1, "unitID": 101 }, "2400": { "attributeID": 2400, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai/Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "有効時間/持続時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 312100, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationTargetIlluminationBurstProjector", "published": 1, "stackable": 1, "unitID": 101 }, "2401": { "attributeID": 2401, "categoryID": 34, "dataType": 5, "defaultValue": 10000.0, "description": "Duration of one cycle of the kamikaze ability", "displayWhenZero": 0, "highIsGood": 0, "name": "fighterAbilityKamikazeDuration", "published": 0, "stackable": 0, "unitID": 101 }, "2402": { "attributeID": 2402, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikation des Bonus auf EM-Schadensresistenz", "displayName_en-us": "Modification of EM Damage Resistance Bonus", "displayName_es": "Modificación de bonificación de resistencia a daños electromagnéticos", "displayName_fr": "modification du bonus de résistance aux dégâts électromagnétiques", "displayName_it": "Modification of EM Damage Resistance Bonus", "displayName_ja": "EMダメージのレジスタンスボーナスを修正", "displayName_ko": "EM 저항력 보너스 강화", "displayName_ru": "Изменение влияния на сопротивляемость ЭМ-урону", "displayName_zh": "电磁伤害抗性加成调整系数", "displayNameID": 312101, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1396, "name": "emDamageResistanceBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2403": { "attributeID": 2403, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikation des Bonus auf Explosionsschadensresistenz", "displayName_en-us": "Modification of Explosive Damage Resistance Bonus", "displayName_es": "Modificación de bonificación de resistencia a daños explosivos", "displayName_fr": "modification du bonus de résistance aux dégâts explositfs", "displayName_it": "Modification of Explosive Damage Resistance Bonus", "displayName_ja": "エクスプローシブダメージのレジスタンスボーナスを修正", "displayName_ko": "폭발 저항력 보너스 강화", "displayName_ru": "Изменение влияния на сопротивляемость фугасному урону", "displayName_zh": "爆炸伤害抗性加成调整系数", "displayNameID": 312102, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1395, "name": "explosiveDamageResistanceBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2404": { "attributeID": 2404, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikation des Bonus auf Kinetikschadensresistenz", "displayName_en-us": "Modification of Kinetic Damage Resistance Bonus", "displayName_es": "Modificación de bonificación de resistencia a daños cinéticos", "displayName_fr": "modification du bonus de résistance aux dégâts cinétiques", "displayName_it": "Modification of Kinetic Damage Resistance Bonus", "displayName_ja": "キネティックダメージのレジスタンスボーナスを修正", "displayName_ko": "키네틱 저항력 보너스 강화", "displayName_ru": "Изменение влияния на сопротивляемость кинетическому урону", "displayName_zh": "动能伤害抗性加成调整系数", "displayNameID": 312103, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1393, "name": "kineticDamageResistanceBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2405": { "attributeID": 2405, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Modifikation des Bonus auf Thermalschadensresistenz", "displayName_en-us": "Modification of Thermal Damage Resistance Bonus", "displayName_es": "Modificación de bonificación de resistencia a daños térmicos", "displayName_fr": "modification du bonus de résistance aux dégâts thermiques", "displayName_it": "Modification of Thermal Damage Resistance Bonus", "displayName_ja": "サーマルダメージのレジスタンスボーナスを修正", "displayName_ko": "열 저항력 보너스 강화", "displayName_ru": "Изменение влияния на сопротивляемость термическому урону", "displayName_zh": "热能伤害抗性加成调整系数", "displayNameID": 312104, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1394, "name": "thermalDamageResistanceBonusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2406": { "attributeID": 2406, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanA1", "published": 0, "stackable": 1 }, "2407": { "attributeID": 2407, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanA2", "published": 0, "stackable": 1 }, "2408": { "attributeID": 2408, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanA3", "published": 0, "stackable": 1 }, "2409": { "attributeID": 2409, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanA4", "published": 0, "stackable": 1 }, "2410": { "attributeID": 2410, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanC1", "published": 0, "stackable": 1 }, "2411": { "attributeID": 2411, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanC2", "published": 0, "stackable": 1 }, "2412": { "attributeID": 2412, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanC3", "published": 0, "stackable": 1 }, "2413": { "attributeID": 2413, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanC4", "published": 0, "stackable": 1 }, "2414": { "attributeID": 2414, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanG1", "published": 0, "stackable": 1 }, "2415": { "attributeID": 2415, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanG2", "published": 0, "stackable": 1 }, "2416": { "attributeID": 2416, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanG3", "published": 0, "stackable": 1 }, "2417": { "attributeID": 2417, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanG4", "published": 0, "stackable": 1 }, "2418": { "attributeID": 2418, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanM1", "published": 0, "stackable": 1 }, "2419": { "attributeID": 2419, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanM2", "published": 0, "stackable": 1 }, "2420": { "attributeID": 2420, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanM3", "published": 0, "stackable": 1 }, "2421": { "attributeID": 2421, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanM4", "published": 0, "stackable": 1 }, "2422": { "attributeID": 2422, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "The last allowed injection date. After this date the booster can no longer be consumed. Formatted YYYY.MM.DD HH:MM:SS", "displayName_de": "Ablaufdatum", "displayName_en-us": "Expiry Date", "displayName_es": "Fecha de caducidad", "displayName_fr": "Date d'expiration", "displayName_it": "Expiry Date", "displayName_ja": "期限", "displayName_ko": "만료 일자", "displayName_ru": "Срок годности", "displayName_zh": "有效期", "displayNameID": 312107, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "boosterLastInjectionDatetime", "published": 1, "stackable": 1, "unitID": 143 }, "2423": { "attributeID": 2423, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Titan skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusTitanC5", "published": 0, "stackable": 1 }, "2424": { "attributeID": 2424, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zielmarkierungsresistenz", "displayName_en-us": "Target Painter Resistance Bonus", "displayName_es": "Bonificación de resistencia del revelador de objetivo", "displayName_fr": "de bonus à la résistance au marquage de cible", "displayName_it": "Target Painter Resistance Bonus", "displayName_ja": "ターゲットぺインターのレジスタンスボーナス", "displayName_ko": "타겟 페인터 저항력 보너스", "displayName_ru": "Ослабление воздействия систем подсветки целей", "displayName_zh": "目标标记装置抗性加成", "displayNameID": 312116, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "targetPainterResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2425": { "attributeID": 2425, "categoryID": 34, "dataType": 5, "defaultValue": 0.0, "description": "Warp Disruption Strength", "displayName_de": "Warpstörungsstärke", "displayName_en-us": "Warp Disruption Strength", "displayName_es": "Intensidad de la disrupción de warp", "displayName_fr": "Puissance de perturbation de warp", "displayName_it": "Warp Disruption Strength", "displayName_ja": "ワープ妨害強度", "displayName_ko": "워프 디스럽션 강도", "displayName_ru": "Мощность варп-помех", "displayName_zh": "跃迁干扰强度", "displayNameID": 312117, "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityTackleWarpDisruptionPointStrength", "published": 1, "stackable": 1 }, "2426": { "attributeID": 2426, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Auftankdauer", "displayName_en-us": "Refueling Duration", "displayName_es": "Duración de repostaje", "displayName_fr": "Durée du ravitaillement", "displayName_it": "Refueling Duration", "displayName_ja": "エネルギー補給時間", "displayName_ko": "연료 보급 지속시간", "displayName_ru": "Время дозаправки", "displayName_zh": "重新装填周期", "displayNameID": 312128, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "fighterRefuelingTime", "published": 1, "stackable": 1, "unitID": 101 }, "2427": { "attributeID": 2427, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Length of No Jump Or Cloak time.", "displayName_de": "Dauer der Sprung-/Andock-/Anbindungs- und Tarnsperre", "displayName_en-us": "Jump/Dock/Tether/Cloak restriction duration", "displayName_es": "Duración de restricciones de salto/acoplamiento/amarre/camuflaje", "displayName_fr": "Durée de restriction de saut, d'amarrage, d'accostage et de camouflage", "displayName_it": "Jump/Dock/Tether/Cloak restriction duration", "displayName_ja": "ジャンプおよび遮蔽の制限時間", "displayName_ko": "점프/도크/테더링/클로킹 제한 지속시간", "displayName_ru": "Длительность запрета на прыжки/стыковку/швартовку/маскировку", "displayName_zh": "跳跃/停靠/驻留/隐形限制持续时间", "displayNameID": 312125, "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayNoJumpOrCloakDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2428": { "attributeID": 2428, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Length of Immobility time.", "displayName_de": "Unbeweglichkeitsdauer", "displayName_en-us": "Immobility Duration", "displayName_es": "Duración de inmovilidad", "displayName_fr": "Durée d'immobilité", "displayName_it": "Immobility Duration", "displayName_ja": "移動不可の時間", "displayName_ko": "이동불가 지속시간", "displayName_ru": "Срок ограничения подвижности", "displayName_zh": "无法移动持续时间", "displayNameID": 312126, "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayImmobilityDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2429": { "attributeID": 2429, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "1: Fixed Cylinder (Beam)\r\n2: Cylinder moving in an arc (Slash)\r\n3: Fixed Cone\r\n4: Projected Sphere", "displayName_de": "Form des Superwaffeneffekts", "displayName_en-us": "Shape of Superweapon Effect", "displayName_es": "Efecto de forma de superarma", "displayName_fr": "Forme de l'effet de super-arme", "displayName_it": "Shape of Superweapon Effect", "displayName_ja": "スーパーウェポン効果の形状", "displayName_ko": "슈퍼웨폰 효과의 형태", "displayName_ru": "Форма области поражения орудия Судного дня", "displayName_zh": "超级武器效果形状", "displayNameID": 312130, "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayAOEShape", "published": 0, "stackable": 1 }, "2430": { "attributeID": 2430, "categoryID": 39, "dataType": 3, "defaultValue": 0.0, "description": "Determines whether the maxRange attribute is a fixed length or a maximum length of the effect", "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayRangeIsFixed", "published": 0, "stackable": 1 }, "2431": { "attributeID": 2431, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Max. erlaubte Modulzahl dieses Typs", "displayName_en-us": "Max Modules Of This Type Allowed", "displayName_es": "Máx. de módulos de este tipo permitidos", "displayName_fr": "Modules de ce type max. autorisés", "displayName_it": "Max Modules Of This Type Allowed", "displayName_ja": "可能な最大モジュール数", "displayName_ko": "해당 모듈 유형의 최대 허용 수", "displayName_ru": "Максимально допустимое количество модулей данного типа", "displayName_zh": "该类型装备使用上限", "displayNameID": 312364, "displayWhenZero": 0, "highIsGood": 1, "name": "maxTypeFitted", "published": 1, "stackable": 1 }, "2432": { "attributeID": 2432, "categoryID": 34, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterAbilityKamikazeResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2433": { "attributeID": 2433, "categoryID": 38, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "fighterAbilityKamikazeResistance", "published": 0, "stackable": 1, "unitID": 108 }, "2434": { "attributeID": 2434, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für maximal aufgeschaltete Ziele", "displayName_en-us": "Maximum Locked Targets Bonus", "displayName_es": "Bonificación de objetivos fijados máximos", "displayName_fr": "Maximum Locked Targets Bonus", "displayName_it": "Maximum Locked Targets Bonus", "displayName_ja": "ターゲット補足数ボーナス", "displayName_ko": "최대 타겟 수 보너스", "displayName_ru": "Влияние на количество единовременно сопровождаемых целей", "displayName_zh": "目标锁定数上限加成", "displayNameID": 312223, "displayWhenZero": 0, "highIsGood": 1, "iconID": 109, "name": "structureRigMaxTargetBonus", "published": 1, "stackable": 1, "unitID": 139 }, "2435": { "attributeID": 2435, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Scan Resolution Bonus", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン解像度ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на скорость захвата целей", "displayName_zh": "扫描分辨率加成", "displayNameID": 312224, "displayWhenZero": 0, "highIsGood": 1, "iconID": 74, "name": "structureRigScanResBonus", "published": 1, "stackable": 0, "unitID": 105 }, "2436": { "attributeID": 2436, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verteidigungsbatterie-Reichweitenbonus", "displayName_en-us": "Point Defense Battery Range Bonus", "displayName_es": "Bonificación de alcance de la batería de defensa de puntos", "displayName_fr": "Point Defense Battery Range Bonus", "displayName_it": "Point Defense Battery Range Bonus", "displayName_ja": "地点防衛バッテリーの範囲ボーナス", "displayName_ko": "거점 방어 포탑 사거리 보너스", "displayName_ru": "Влияние на радиус действия систем точечной обороны", "displayName_zh": "定点防卫炮塔范围加成", "displayNameID": 312225, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "structureRigPDRangeBonus", "published": 1, "stackable": 0, "unitID": 105 }, "2437": { "attributeID": 2437, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verteidigungsbatterie-Energiespeicher-Nutzungsbonus", "displayName_en-us": "Point Defense Battery Capacitor Use Bonus", "displayName_es": "Bonificación de uso del condensador de la batería de defensa de puntos", "displayName_fr": "Point Defense Battery Capacitor Use Bonus", "displayName_it": "Point Defense Battery Capacitor Use Bonus", "displayName_ja": "地点防衛バッテリーのキャパシタ消費量ボーナス", "displayName_ko": "거점 방어 포탑 캐패시터 사용 보너스", "displayName_ru": "Влияние на расход энергии системами точечной обороны", "displayName_zh": "定点防卫炮塔电容消耗加成", "displayNameID": 312226, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1400, "name": "structureRigPDCapUseBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2438": { "attributeID": 2438, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsgeschwindigkeit-Bonus", "displayName_en-us": "Explosion Velocity Bonus", "displayName_es": "Bonificación de velocidad de explosión", "displayName_fr": "Explosion Velocity Bonus", "displayName_it": "Explosion Velocity Bonus", "displayName_ja": "爆発速度ボーナス", "displayName_ko": "폭발 속도 보너스", "displayName_ru": "Влияние на скорость взрыва", "displayName_zh": "爆炸速度加成", "displayNameID": 312227, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "structureRigMissileExploVeloBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2439": { "attributeID": 2439, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Lenkwaffengeschwindigkeit-Bonus", "displayName_en-us": "Missile Velocity Bonus", "displayName_es": "Bonificación de velocidad de misiles", "displayName_fr": "Missile Velocity Bonus", "displayName_it": "Missile Velocity Bonus", "displayName_ja": "ミサイル速度ボーナス", "displayName_ko": "미사일 속도 보너스", "displayName_ru": "Влияние на скорость полёта ракет", "displayName_zh": "导弹速度加成", "displayNameID": 312228, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "structureRigMissileVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2440": { "attributeID": 2440, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Optimale Reichweite-Bonus", "displayName_en-us": "Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo", "displayName_fr": "Optimal Range Bonus", "displayName_it": "Optimal Range Bonus", "displayName_ja": "最適射程距離ボーナス", "displayName_ko": "최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность", "displayName_zh": "最佳射程加成", "displayNameID": 312229, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "structureRigEwarOptimalBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2441": { "attributeID": 2441, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktionsbonus", "displayName_en-us": "Falloff Bonus", "displayName_es": "Bonificación de alcance efectivo", "displayName_fr": "Falloff Bonus", "displayName_it": "Falloff Bonus", "displayName_ja": "精度低下範囲ボーナス", "displayName_ko": "유효사거리 보너스", "displayName_ru": "Влияние на добавочную дальность", "displayName_zh": "失准范围加成", "displayNameID": 312230, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1399, "name": "structureRigEwarFalloffBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2442": { "attributeID": 2442, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Energiespeichernutzung", "displayName_en-us": "Capacitor Use Bonus", "displayName_es": "Bonificación de uso del condensador", "displayName_fr": "Capacitor Use Bonus", "displayName_it": "Capacitor Use Bonus", "displayName_ja": "キャパシタ消費量ボーナス", "displayName_ko": "캐패시터 사용 보너스", "displayName_ru": "Влияние на расход энергии", "displayName_zh": "电容消耗加成", "displayNameID": 312231, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1400, "name": "structureRigEwarCapUseBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2444": { "attributeID": 2444, "categoryID": 7, "dataType": 5, "defaultValue": 0.5, "description": "", "displayName_de": "Aufbereitungsertrag für Asteroidengürtel-Erze", "displayName_en-us": "Refining yield for Asteroid Belt Ores", "displayName_es": "Rendimiento de refinado para menas de cinturones de asteroides", "displayName_fr": "Rendement de raffinage pour les minerais des ceintures d'astéroïdes", "displayName_it": "Refining yield for Asteroid Belt Ores", "displayName_ja": "ベルドスパー、スコダイト、パイロゼリーズ、プラジオクレイス、オンバー、ケルナイトの精錬による収穫物", "displayName_ko": "소행성 벨트 광물의 정제 처리", "displayName_ru": "Объём переработки руды из скоплений астероидов", "displayName_zh": "小行星带矿石精炼产出", "displayNameID": 312236, "displayWhenZero": 0, "highIsGood": 1, "name": "refiningYieldNormalOres", "published": 1, "stackable": 1, "unitID": 127 }, "2445": { "attributeID": 2445, "categoryID": 7, "dataType": 5, "defaultValue": 0.5, "description": "", "displayName_de": "Aufbereitungsertrag für Monderze", "displayName_en-us": "Refining yield for Moon Ores", "displayName_es": "Rendimiento de refinado para menas lunares", "displayName_fr": "Rendement de raffinage pour les minerais lunaires", "displayName_it": "Refining yield for Moon Ores", "displayName_ja": "アーコナー、ビストット、クロカイト、ダークオークル、ナエス、メロコキサイト、スポンデュメイン、ヘッドバーガイト、ヘモファイト、ジャスペットの精錬による収穫物", "displayName_ko": "위성 광물의 정제 처리", "displayName_ru": "Объём переработки руды со спутников", "displayName_zh": "卫星矿石精炼产出", "displayNameID": 312237, "displayWhenZero": 0, "highIsGood": 1, "name": "refiningYieldMoonOres", "published": 1, "stackable": 1, "unitID": 127 }, "2446": { "attributeID": 2446, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aufbereitungsertrag für Clear Icicle und White Glaze", "displayName_en-us": "Refining yield for Clear Icicle and White Glaze", "displayName_es": "Rendimiento de refinado para carámbano blanco y cristal níveo", "displayName_fr": "Refining yield for Clear Icicle and White Glaze", "displayName_it": "Refining yield for Clear Icicle and White Glaze", "displayName_ja": "クリアアイシクル、ホワイトグレイズの精錬による収穫物", "displayName_ko": "아이시클과 화이트 글레이즈의 정제 처리", "displayName_ru": "Коэффициент выработки для льда Clear Icicle и White Glaze", "displayName_zh": "清冰锥和白釉冰提炼产出", "displayNameID": 312238, "displayWhenZero": 0, "highIsGood": 1, "name": "refiningYieldCalAmarrIce", "published": 1, "stackable": 1, "unitID": 127 }, "2447": { "attributeID": 2447, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aufbereitungsertrag für Blue Ice und Glacial Mass", "displayName_en-us": "Refining yield for Blue Ice and Glacial Mass", "displayName_es": "Rendimiento de refinado para hielo azul y masa glacial", "displayName_fr": "Refining yield for Blue Ice and Glacial Mass", "displayName_it": "Refining yield for Blue Ice and Glacial Mass", "displayName_ja": "ブルーアイス、スムーズグレイシャル塊の精錬による収穫物", "displayName_ko": "블루 아이스와 글레이셜 매스의 정제 처리", "displayName_ru": "Коэффициент выработки для льда Blue Ice и Glacial Mass", "displayName_zh": "蓝冰矿和聚合冰体提炼产出", "displayNameID": 312239, "displayWhenZero": 0, "highIsGood": 1, "name": "refiningYieldGalMinIce", "published": 1, "stackable": 1, "unitID": 127 }, "2448": { "attributeID": 2448, "categoryID": 7, "dataType": 5, "defaultValue": 0.5, "description": "", "displayName_de": "Aufbereitungsertrag für Eis", "displayName_en-us": "Refining yield for Ice", "displayName_es": "Rendimiento de refinado para hielo", "displayName_fr": "Rendement de raffinage pour la glace", "displayName_it": "Refining yield for Ice", "displayName_ja": "グレアクラスト、ダークグリッター、ジェリダス、クリスタロスの精錬による収穫物", "displayName_ko": "아이스의 정제 처리", "displayName_ru": "Объём переработки льда", "displayName_zh": "冰矿精炼产出", "displayNameID": 312240, "displayWhenZero": 0, "highIsGood": 1, "name": "refiningYieldIce", "published": 1, "stackable": 1, "unitID": 127 }, "2449": { "attributeID": 2449, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Explosionsradius-Bonus für Lenkbomben", "displayName_en-us": "Guided Bomb Explosion Radius Bonus", "displayName_es": "Bonificación de radio de explosión de bomba guiada", "displayName_fr": "Bonus au rayon d'explosion de la bombe ciblée", "displayName_it": "Guided Bomb Explosion Radius Bonus", "displayName_ja": "誘導爆弾爆発半径ボーナス", "displayName_ko": "유도폭탄 폭발 반경 보너스", "displayName_ru": "Влияние на сигнатуру взрыва ракет объёмного взрыва", "displayName_zh": "制导炸弹爆炸半径加成", "displayNameID": 312282, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "structureRigMissileExplosionRadiusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2450": { "attributeID": 2450, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "When set True, skill can no longer be injected or trained. Characters will be reimbursed with free SP for any obsolete skills in the skill queue upon logon.", "displayName_de": "Skill ist veraltet", "displayName_en-us": "Skill is obsolete", "displayName_es": "Habilidad obsoleta", "displayName_fr": "La compétence est obsolète.", "displayName_it": "Skill is obsolete", "displayName_ja": "スキルがサポートされていません", "displayName_ko": "구식 스킬", "displayName_ru": "Навык неактуален", "displayName_zh": "技能已过时", "displayNameID": 312290, "displayWhenZero": 0, "highIsGood": 1, "name": "isSkillIObsolete", "published": 0, "stackable": 1 }, "2451": { "attributeID": 2451, "categoryID": 22, "dataType": 5, "defaultValue": 0.0, "description": "Signature Resolution of Energy Neutralizer", "displayName_de": "Neutralisierung-Signaturauflösung", "displayName_en-us": "Neutralization Signature Resolution", "displayName_es": "Resolución de señal de neutralización", "displayName_fr": "Résolution de signature de neutralisation", "displayName_it": "Neutralization Signature Resolution", "displayName_ja": "無効化シグネチャ解像度", "displayName_ko": "뉴트럴라이제이션 신호 정밀도", "displayName_ru": "Размер сигнатуры нейтрализации", "displayName_zh": "能量中和信号分辨率", "displayNameID": 312359, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1390, "name": "energyNeutralizerSignatureResolution", "published": 1, "stackable": 1, "unitID": 1 }, "2452": { "attributeID": 2452, "categoryID": 22, "dataType": 5, "defaultValue": 0.0, "description": "Falloff Range of Energy Neutralizer", "displayName_de": "Neutralisierung-Präzisionsabfall", "displayName_en-us": "Neutralization Falloff Range", "displayName_es": "Alcance efectivo de neutralización", "displayName_fr": "Portée de perte de neutralisation", "displayName_it": "Neutralization Falloff Range", "displayName_ja": "無効化精度低下範囲", "displayName_ko": "뉴트럴라이제이션 유효사거리", "displayName_ru": "Добавочная дальность нейтрализации", "displayName_zh": "能量中和失准范围", "displayNameID": 312360, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "energyNeutralizerRangeFalloff", "published": 1, "stackable": 1, "unitID": 1 }, "2453": { "attributeID": 2453, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If this ship attribute is NOT 0 then they will be prevented from using their Jump Drive (Capitals, Blackops Battleships)", "displayWhenZero": 0, "highIsGood": 1, "name": "disallowDriveJumping", "published": 1, "stackable": 1, "unitID": 137 }, "2454": { "attributeID": 2454, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "if this ship attribute is NOT 0 then they will be prevented from cloaking", "displayWhenZero": 0, "highIsGood": 1, "name": "disallowCloaking", "published": 1, "stackable": 1, "unitID": 137 }, "2455": { "attributeID": 2455, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "cynosuralFieldSpawnRadius", "published": 0, "stackable": 1, "unitID": 1 }, "2456": { "attributeID": 2456, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Schildkapazität", "displayName_en-us": "Shield Capacity Bonus", "displayName_es": "Bonificación de capacidad del escudo", "displayName_fr": "Bonus de capacité du bouclier", "displayName_it": "Shield Capacity Bonus", "displayName_ja": "シールド容量ボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Повышение запаса прочности щитов", "displayName_zh": "护盾容量加成", "displayNameID": 312549, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldCapacityBonus2", "published": 1, "stackable": 1, "unitID": 105 }, "2457": { "attributeID": 2457, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reparaturbonus für Panzerung", "displayName_en-us": "Armor Repair Bonus", "displayName_es": "Bonificación de reparación del blindaje", "displayName_fr": "Bonus de réparation du blindage", "displayName_it": "Armor Repair Bonus", "displayName_ja": "アーマーリペアボーナス", "displayName_ko": "장갑 수리 보너스", "displayName_ru": "Влияние на эффективность ремонта брони", "displayName_zh": "装甲维修加成", "displayNameID": 312551, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "armorRepairBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2458": { "attributeID": 2458, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bergbauzyklus-Zeitmodifikator", "displayName_en-us": "Mining Cycle Time Modifier", "displayName_es": "Modificador de tiempo de ciclo minero", "displayName_fr": "Modificateur de temps du cycle d'extraction minière", "displayName_it": "Mining Cycle Time Modifier", "displayName_ja": "採掘サイクル時間乗数", "displayName_ko": "채굴 사이클 시간 보정치", "displayName_ru": "Влияние на время цикла буровых модулей", "displayName_zh": "采矿循环周期调节值", "displayNameID": 312574, "displayWhenZero": 0, "highIsGood": 0, "name": "miningDurationRoleBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2459": { "attributeID": 2459, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The maximum amount of skill points that the character can have before the item is unusable", "displayName_de": "Charakter-Skillpunktlimit", "displayName_en-us": "Character Skill Point Limit", "displayName_es": "Límite de puntos de habilidad del personaje", "displayName_fr": "Limite de points de compétence du personnage", "displayName_it": "Character Skill Point Limit", "displayName_ja": "キャラクターのスキルポイント制限", "displayName_ko": "캐릭터 스킬 포인트 한계", "displayName_ru": "Предел по запасу СП пилота", "displayName_zh": "人物角色技能点上限", "displayNameID": 312582, "displayWhenZero": 0, "highIsGood": 1, "name": "maxCharacterSkillPointLimit", "published": 1, "stackable": 1 }, "2460": { "attributeID": 2460, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "third bonus for support cruisers", "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "eliteBonusLogistics3", "published": 0, "stackable": 1 }, "2461": { "attributeID": 2461, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "The amount of skill points contained in this item", "displayName_de": "Skillpunkte", "displayName_en-us": "Skill Points", "displayName_es": "Puntos de habilidad", "displayName_fr": "Points de compétence", "displayName_it": "Skill Points", "displayName_ja": "スキルポイント", "displayName_ko": "스킬 포인트", "displayName_ru": "Синхропакеты", "displayName_zh": "技能点", "displayNameID": 312621, "displayWhenZero": 0, "highIsGood": 1, "name": "containedSkillPoints", "published": 1, "stackable": 1 }, "2462": { "attributeID": 2462, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusRepairRange", "published": 0, "stackable": 1 }, "2463": { "attributeID": 2463, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装備可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 312626, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType7", "published": 1, "stackable": 1, "unitID": 116 }, "2464": { "attributeID": 2464, "categoryID": 37, "dataType": 0, "defaultValue": 0.0, "description": "Tells if this type (ship) can be affected by the Rorqual Invulnerability Module", "displayWhenZero": 0, "highIsGood": 1, "name": "affectedByIndustrialInvulnModule", "published": 0, "stackable": 1 }, "2467": { "attributeID": 2467, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "special corpse hold capacity", "displayName_de": "Leichenfassungsvermögen", "displayName_en-us": "Corpse Hold Capacity", "displayName_es": "Capacidad del depósito de cadáveres", "displayName_fr": "Capacité de la soute à cadavres", "displayName_it": "Corpse Hold Capacity", "displayName_ja": "死体貯蔵庫容量", "displayName_ko": "사체 저장고 적재량", "displayName_ru": "Объём отсека для трупов", "displayName_zh": "尸体舱容量", "displayNameID": 312782, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialCorpseHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Leichen, das im Leichenfrachtraum des Schiffs gelagert werden kann", "tooltipDescription_en-us": "The total volume of corpses that can be stored in the ship's corpse hold", "tooltipDescription_es": "El volumen total de cadáveres que pueden almacenarse en el depósito de la nave.", "tooltipDescription_fr": "Volume total de cadavres pouvant être transportés dans la soute à cadavres du vaisseau.", "tooltipDescription_it": "The total volume of corpses that can be stored in the ship's corpse hold", "tooltipDescription_ja": "この艦の死体貯蔵庫に保管できる死体の総量です", "tooltipDescription_ko": "사체 저장고의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём трупов, допустимый к размещению в бортовом отсеке для трупов", "tooltipDescription_zh": "舰船的尸体舱所能装载的尸体总体积", "tooltipDescriptionID": 312784, "tooltipTitleID": 312783, "unitID": 9 }, "2468": { "attributeID": 2468, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff1ID", "published": 0, "stackable": 1 }, "2469": { "attributeID": 2469, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff1Value", "published": 0, "stackable": 1 }, "2470": { "attributeID": 2470, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff2ID", "published": 0, "stackable": 1 }, "2471": { "attributeID": 2471, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff2Value", "published": 0, "stackable": 1 }, "2472": { "attributeID": 2472, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff3ID", "published": 0, "stackable": 1 }, "2473": { "attributeID": 2473, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff3Value", "published": 0, "stackable": 1 }, "2474": { "attributeID": 2474, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusICS3", "published": 0, "stackable": 1, "unitID": 105 }, "2475": { "attributeID": 2475, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusICS4", "published": 0, "stackable": 1, "unitID": 105 }, "2476": { "attributeID": 2476, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314965, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup11", "published": 1, "stackable": 1, "unitID": 115 }, "2477": { "attributeID": 2477, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314966, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup12", "published": 1, "stackable": 1, "unitID": 115 }, "2478": { "attributeID": 2478, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314967, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup13", "published": 1, "stackable": 1, "unitID": 115 }, "2479": { "attributeID": 2479, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314968, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup14", "published": 1, "stackable": 1, "unitID": 115 }, "2480": { "attributeID": 2480, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314969, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup15", "published": 1, "stackable": 1, "unitID": 115 }, "2481": { "attributeID": 2481, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314970, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup16", "published": 1, "stackable": 1, "unitID": 115 }, "2482": { "attributeID": 2482, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314971, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup17", "published": 1, "stackable": 1, "unitID": 115 }, "2483": { "attributeID": 2483, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314972, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup18", "published": 1, "stackable": 1, "unitID": 115 }, "2484": { "attributeID": 2484, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314973, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup19", "published": 1, "stackable": 1, "unitID": 115 }, "2485": { "attributeID": 2485, "categoryID": 1, "dataType": 12, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314974, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipGroup20", "published": 1, "stackable": 1, "unitID": 115 }, "2486": { "attributeID": 2486, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314975, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType8", "published": 1, "stackable": 1, "unitID": 116 }, "2487": { "attributeID": 2487, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314976, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType9", "published": 1, "stackable": 1, "unitID": 116 }, "2488": { "attributeID": 2488, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 314977, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType10", "published": 1, "stackable": 1, "unitID": 116 }, "2489": { "attributeID": 2489, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMiningAmount", "published": 0, "stackable": 1, "unitID": 9 }, "2490": { "attributeID": 2490, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMiningDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2491": { "attributeID": 2491, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteArmorRepairDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2492": { "attributeID": 2492, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteArmorRepairRange", "published": 0, "stackable": 1, "unitID": 1 }, "2493": { "attributeID": 2493, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteArmorRepairFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2494": { "attributeID": 2494, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteArmorRepairDischarge", "published": 0, "stackable": 1 }, "2495": { "attributeID": 2495, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteShieldBoostDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2496": { "attributeID": 2496, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteShieldBoostRange", "published": 0, "stackable": 1, "unitID": 1 }, "2497": { "attributeID": 2497, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteShieldBoostFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2498": { "attributeID": 2498, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteShieldBoostDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2499": { "attributeID": 2499, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWebifierDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2500": { "attributeID": 2500, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWebifierRange", "published": 0, "stackable": 1, "unitID": 1 }, "2501": { "attributeID": 2501, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWebifierFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2502": { "attributeID": 2502, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWebifierDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2503": { "attributeID": 2503, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpDisruptDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2504": { "attributeID": 2504, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpDisruptRange", "published": 0, "stackable": 1, "unitID": 1 }, "2505": { "attributeID": 2505, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpDisruptDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2506": { "attributeID": 2506, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpScrambleDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2507": { "attributeID": 2507, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpScrambleRange", "published": 0, "stackable": 1, "unitID": 1 }, "2508": { "attributeID": 2508, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpScrambleDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2509": { "attributeID": 2509, "categoryID": 42, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpScrambleStrength", "published": 0, "stackable": 1 }, "2510": { "attributeID": 2510, "categoryID": 42, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorWarpDisruptStrength", "published": 0, "stackable": 1 }, "2511": { "attributeID": 2511, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcGuidanceDisruptorDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2512": { "attributeID": 2512, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcGuidanceDisruptorRange", "published": 0, "stackable": 1, "unitID": 1 }, "2513": { "attributeID": 2513, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcGuidanceDisruptorFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2514": { "attributeID": 2514, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcGuidanceDisruptorDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2515": { "attributeID": 2515, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcTrackingDisruptorDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2516": { "attributeID": 2516, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcTrackingDisruptorRange", "published": 0, "stackable": 1, "unitID": 1 }, "2517": { "attributeID": 2517, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcTrackingDisruptorFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2518": { "attributeID": 2518, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcTrackingDisruptorDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2519": { "attributeID": 2519, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNeutralizerDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2520": { "attributeID": 2520, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNeutralizerRange", "published": 0, "stackable": 1, "unitID": 1 }, "2521": { "attributeID": 2521, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNeutralizerFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2522": { "attributeID": 2522, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNeutralizerDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2523": { "attributeID": 2523, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetPainterDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2524": { "attributeID": 2524, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetPainterRange", "published": 0, "stackable": 1, "unitID": 1 }, "2525": { "attributeID": 2525, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetPainterFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2526": { "attributeID": 2526, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetPainterDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2527": { "attributeID": 2527, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorSensorDampenerDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2528": { "attributeID": 2528, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorSensorDampenerRange", "published": 0, "stackable": 1, "unitID": 1 }, "2529": { "attributeID": 2529, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorSensorDampenerFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2530": { "attributeID": 2530, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorSensorDampenerDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2531": { "attributeID": 2531, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorECMDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2532": { "attributeID": 2532, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorECMRange", "published": 0, "stackable": 1, "unitID": 1 }, "2533": { "attributeID": 2533, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorECMFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2534": { "attributeID": 2534, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorECMDischarge", "published": 0, "stackable": 1, "unitID": 1 }, "2535": { "attributeID": 2535, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Applied modifier duration", "displayName_de": "Modifikatordauer", "displayName_en-us": "Modifier duration", "displayName_es": "Duración del modificador", "displayName_fr": "Modificateur de durée", "displayName_it": "Modifier duration", "displayName_ja": "乗数持続時間", "displayName_ko": "효과 지속시간", "displayName_ru": "Длительность модификатора", "displayName_zh": "系数持续时间", "displayNameID": 315396, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "buffDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2536": { "attributeID": 2536, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff4ID", "published": 0, "stackable": 1 }, "2537": { "attributeID": 2537, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff4Value", "published": 0, "stackable": 1 }, "2538": { "attributeID": 2538, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nShip Modules, Ship Rigs, Personal Deployables, Implants, Cargo Containers", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeEquipmentManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2539": { "attributeID": 2539, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nShip Modules, Ship Rigs, Personal Deployables, Implants, Cargo Containers\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeEquipmentManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2540": { "attributeID": 2540, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nAmmunition, Charges, Scripts\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAmmoManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2541": { "attributeID": 2541, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nAmmunition, Charges, Scripts", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAmmoManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2542": { "attributeID": 2542, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following: Drones, Fighters", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeDroneManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2543": { "attributeID": 2543, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nDrones, Fighters", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeDroneManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2544": { "attributeID": 2544, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT1 Frigates, T1 Destroyers, Shuttles", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasSmallShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2545": { "attributeID": 2545, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT1 Frigates, T1 Destroyers, Shuttles", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasSmallShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2546": { "attributeID": 2546, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT1 Cruisers, T1 Battlecruisers, Industrial Ships, Mining Barges\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasMediumShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2547": { "attributeID": 2547, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT1 Cruisers, T1 Battlecruisers, Industrial Ships, Mining Barges\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasMediumShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2548": { "attributeID": 2548, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT1 Battleships, T1 Freighters, Industrial Command Ships\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasLargeShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2549": { "attributeID": 2549, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT1 Battleships, T1 Freighters, Industrial Command Ships\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasLargeShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2550": { "attributeID": 2550, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT2 Frigates, T2 Destroyers, T3 Destroyers\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvSmallShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2551": { "attributeID": 2551, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT2 Frigates, T2 Destroyers, T3 Destroyers\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvSmallShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2552": { "attributeID": 2552, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT2 Cruisers, T2 Battlecruisers, T2 Haulers, Exhumers, T3 Cruisers,T3 Subsystems\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvMediumShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2553": { "attributeID": 2553, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT2 Cruisers, T2 Battlecruisers, T2 Haulers, Exhumers, T3 Cruisers,T3 Subsystems\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvMediumShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2555": { "attributeID": 2555, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT2 Battleships, Jump Freighters\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvLargeShipManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2556": { "attributeID": 2556, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT2 Battleships, Jump Freighters\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvLargeShipManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2557": { "attributeID": 2557, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT2 Components, Tools, Data Interfaces, T3 Components\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvCompManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2558": { "attributeID": 2558, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT2 Components, Tools, Data Interfaces, T3 Components", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvCompManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2559": { "attributeID": 2559, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nCapital Construction Components\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasCapCompManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2560": { "attributeID": 2560, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nCapital Construction Components\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBasCapCompManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2561": { "attributeID": 2561, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nStructure Components, Structure Modules, Upwell Structures, Starbase Structures, Fuel Blocks\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeStructureManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2562": { "attributeID": 2562, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nStructure Components, Structure Modules, Upwell Structures, Starbase Structures, Fuel Blocks\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeStructureManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2563": { "attributeID": 2563, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease cost requirement for manufacturing the following:\r\nInvention\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeInventionCostMultiplier", "published": 0, "stackable": 1 }, "2564": { "attributeID": 2564, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nInvention\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeInventionTimeMultiplier", "published": 0, "stackable": 1 }, "2565": { "attributeID": 2565, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease cost requirement for manufacturing the following:\r\nMaterial Efficiency Blueprint Research\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeMEResearchCostMultiplier", "published": 0, "stackable": 1 }, "2566": { "attributeID": 2566, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nMaterial Efficiency Blueprint Research\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeMEResearchTimeMultiplier", "published": 0, "stackable": 1 }, "2567": { "attributeID": 2567, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease cost requirement for manufacturing the following:\r\nTime Efficiency Blueprint Research\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeTEResearchCostMultiplier", "published": 0, "stackable": 1 }, "2568": { "attributeID": 2568, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nTime Efficiency Blueprint Research\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeTEResearchTimeMultiplier", "published": 0, "stackable": 1 }, "2569": { "attributeID": 2569, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease cost requirement for manufacturing the following:\r\nBlueprint Copying\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBPCopyCostMultiplier", "published": 0, "stackable": 1 }, "2570": { "attributeID": 2570, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nBlueprint Copying\r\n\r\n\r\n\r\n", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeBPCopyTimeMultiplier", "published": 0, "stackable": 1 }, "2571": { "attributeID": 2571, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Stärkebonus auf Kommandostrahlen", "displayName_en-us": "Command Burst Strength Bonus", "displayName_es": "Bonificación de potencia de estallido de mando", "displayName_fr": "Bonus à la puissance des salves de commandement", "displayName_it": "Command Burst Strength Bonus", "displayName_ja": "コマンドバーストの強度ボーナス", "displayName_ko": "커맨드 버스트 강도 보너스", "displayName_ru": "Влияние на мощность импульсных оптимизаторов", "displayName_zh": "指挥脉冲波强度加成", "displayNameID": 315417, "displayWhenZero": 0, "highIsGood": 1, "name": "commandBurstStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2572": { "attributeID": 2572, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Stärkebonus auf Kommandostrahlen", "displayName_en-us": "Command Burst Strength Bonus", "displayName_es": "Bonificación de potencia de estallido de mando", "displayName_fr": "Bonus à la puissance des salves de commandement", "displayName_it": "Command Burst Strength Bonus", "displayName_ja": "コマンドバーストの強度ボーナス", "displayName_ko": "커맨드 버스트 강도 보너스", "displayName_ru": "Влияние на мощность импульсных оптимизаторов", "displayName_zh": "指挥脉冲波强度加成", "displayNameID": 315419, "displayWhenZero": 0, "highIsGood": 1, "name": "commandStrengthBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2573": { "attributeID": 2573, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Nachladegeschwindigkeit", "displayName_en-us": "Reload Speed Bonus", "displayName_es": "Bonificación de velocidad de recarga", "displayName_fr": "Bonus à la vitesse de recharge", "displayName_it": "Reload Speed Bonus", "displayName_ja": "リロード速度ボーナス", "displayName_ko": "재장전 속도 보너스", "displayName_ru": "Влияние на скорость перезарядки", "displayName_zh": "装填速度加成", "displayNameID": 315420, "displayWhenZero": 0, "highIsGood": 1, "name": "reloadTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2574": { "attributeID": 2574, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die effektive Reichweite von Kommandostrahlen", "displayName_en-us": "Command Burst Effect Range Bonus", "displayName_es": "Bonif. de alcance de efecto del estallido de mando", "displayName_fr": "Bonus à la portée des effets des salves de commandement", "displayName_it": "Command Burst Effect Range Bonus", "displayName_ja": "コマンドバーストの効果範囲ボーナス", "displayName_ko": "커맨드 버스트 사거리 보너스", "displayName_ru": "Влияние на радиус действия импульсных оптимизаторов", "displayName_zh": "指挥脉冲波效果范围加成", "displayNameID": 315421, "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusCommandBurstAoERange", "published": 0, "stackable": 1, "unitID": 105 }, "2575": { "attributeID": 2575, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nCapital Ships", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeCapShipManufactureMaterialMultiplier", "published": 1, "stackable": 1 }, "2576": { "attributeID": 2576, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nCapital Ships", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeCapShipManufactureTimeMultiplier", "published": 1, "stackable": 1 }, "2577": { "attributeID": 2577, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusICS5", "published": 0, "stackable": 1, "unitID": 105 }, "2578": { "attributeID": 2578, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusDroneMiningYield", "published": 0, "stackable": 1, "unitID": 105 }, "2579": { "attributeID": 2579, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusDroneIceHarvestingSpeed", "published": 0, "stackable": 1, "unitID": 105 }, "2580": { "attributeID": 2580, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "industrialBonusDroneDamage", "published": 0, "stackable": 1, "unitID": 105 }, "2581": { "attributeID": 2581, "categoryID": 7, "dataType": 5, "defaultValue": 2.0, "description": "Determines the maximum security class that a module can be onlined within. Used for structure modules.\r\n\r\n0=Nullsec\r\n1=Lowsec\r\n2=Highsec", "displayWhenZero": 0, "highIsGood": 1, "name": "onlineMaxSecurityClass", "published": 0, "stackable": 1 }, "2582": { "attributeID": 2582, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusORECapital5", "published": 0, "stackable": 1 }, "2583": { "attributeID": 2583, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Schaden und HP von Drohnen", "displayName_en-us": "Drone Damage and Hitpoints Bonus", "displayName_es": "Bonificación de daño y puntos de vida de drones", "displayName_fr": "Bonus aux dégâts et aux points de vie des drones", "displayName_it": "Drone Damage and Hitpoints Bonus", "displayName_ja": "ドローンのダメージおよびHPボーナス", "displayName_ko": "드론 피해와 내구도 보너스", "displayName_ru": "Влияние на прочность и урон дронов", "displayName_zh": "无人机伤害和HP加成", "displayNameID": 315447, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusDroneDamageHP", "published": 1, "stackable": 1, "unitID": 105 }, "2584": { "attributeID": 2584, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf maximale Geschwindigkeit von Drohnen", "displayName_en-us": "Drone Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máx. de drones", "displayName_fr": "Bonus à la vitesse maximale des drones", "displayName_it": "Drone Maximum Velocity Bonus", "displayName_ja": "ドローンの最高速度ボーナス", "displayName_ko": "드론 최대 속도 보너스", "displayName_ru": "Влияние на повышение скорости дронов", "displayName_zh": "无人机最大速度加成", "displayNameID": 315448, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusDroneVelocity", "published": 1, "stackable": 1, "unitID": 105 }, "2585": { "attributeID": 2585, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf den Erzertrag von Drohnen", "displayName_en-us": "Drone Ore Mining Yield Bonus", "displayName_es": "Bonificación de extracción de menas de drones", "displayName_fr": "Bonus au rendement minier des drones d'extraction", "displayName_it": "Drone Ore Mining Yield Bonus", "displayName_ja": "ドローンの鉱石採掘量ボーナス", "displayName_ko": "드론 광물 채굴 생산량 보너스", "displayName_ru": "Влияние на добычу дронами", "displayName_zh": "无人机矿石开采量加成", "displayNameID": 315449, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusDroneMining", "published": 1, "stackable": 1, "unitID": 105 }, "2586": { "attributeID": 2586, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Eisschürfgeschwindigkeit von Drohnen", "displayName_en-us": "Drone Ice Harvesting Speed Bonus", "displayName_es": "Bonif. de velocidad de recolección de hielo de dron", "displayName_fr": "Bonus à la vitesse de collecte de glace des drones", "displayName_it": "Drone Ice Harvesting Speed Bonus", "displayName_ja": "ドローンのアイス採掘速度ボーナス", "displayName_ko": "드론 아이스 채굴 속도 보너스", "displayName_ru": "Влияние на скорость добычи льда дронами", "displayName_zh": "无人机冰矿开采速度加成", "displayNameID": 315450, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusDroneIceHarvesting", "published": 1, "stackable": 1, "unitID": 105 }, "2587": { "attributeID": 2587, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Stärkebonus auf Bergbauvorarbeiterstrahlen", "displayName_en-us": "Mining Foreman Burst Strength Bonus", "displayName_es": "Bonificación de fuerza de estallido de capataz minero", "displayName_fr": "Bonus à la puissance des salves de contremaîtrise minière", "displayName_it": "Mining Foreman Burst Strength Bonus", "displayName_ja": "採掘支援バーストの強度ボーナス", "displayName_ko": "채광 버스트 강도 보너스", "displayName_ru": "Влияние на эффективность импульсных оптимизаторов добычи", "displayName_zh": "开采先锋脉冲波强度加成", "displayNameID": 315451, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusMiningBurstStrength", "published": 1, "stackable": 1, "unitID": 105 }, "2588": { "attributeID": 2588, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Reichweite von Kommando- und Bergbauvorarbeiterstrahlen", "displayName_en-us": "Command and Mining Foreman Burst Range Bonus", "displayName_es": "Bonificación de alcance del estallido de mando y de capataz minero", "displayName_fr": "Bonus à la portée des salves de contremaîtrise minière et des salves de commandement", "displayName_it": "Command and Mining Foreman Burst Range Bonus", "displayName_ja": "指揮および採掘支援バーストの範囲ボーナス", "displayName_ko": "지휘 및 채광 버스트 사거리 보너스", "displayName_ru": "Влияние на радиус действия импульсных оптимизаторов (боевых и добывающих)", "displayName_zh": "指挥和开采先锋脉冲波范围加成", "displayNameID": 315452, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCoreBonusCommandBurstRange", "published": 1, "stackable": 1, "unitID": 105 }, "2589": { "attributeID": 2589, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeDamageBonusPostDiv", "published": 0, "stackable": 1 }, "2590": { "attributeID": 2590, "categoryID": 6, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeEwarResistancePostDiv", "published": 0, "stackable": 1 }, "2591": { "attributeID": 2591, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Bonus that affects all ships being produced - for XL eng rigs", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAllShipsManufactureTimeMultiplier", "published": 1, "stackable": 1 }, "2592": { "attributeID": 2592, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "bonus that affects material of all ships being manufactured, for XL rigs", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAllShipsManufactureMaterialMultiplier", "published": 1, "stackable": 1 }, "2593": { "attributeID": 2593, "categoryID": 37, "dataType": 5, "defaultValue": 1.0, "description": "Bonus on Time decrease for engineering rigs", "displayName_de": "Zeitreduktionsbonus", "displayName_en-us": "Time Reduction Bonus", "displayName_es": "Bonificación de reducción de tiempo", "displayName_fr": "Bonus de réduction de temps", "displayName_it": "Time Reduction Bonus", "displayName_ja": "時間削減ボーナス", "displayName_ko": "시간 감소 보너스", "displayName_ru": "Влияние на снижение затрат времени", "displayName_zh": "时间削减加成", "displayNameID": 315521, "displayWhenZero": 0, "highIsGood": 0, "name": "attributeEngRigTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2594": { "attributeID": 2594, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bonus on Material decrease for engineering rigs", "displayName_de": "Materialreduktionsbonus", "displayName_en-us": "Material Reduction Bonus", "displayName_es": "Bonificación de reducción de materiales", "displayName_fr": "Bonus de réduction de matériel", "displayName_it": "Material Reduction Bonus", "displayName_ja": "材料削減ボーナス", "displayName_ko": "재료 감소 보너스", "displayName_ru": "Влияние на снижение расхода материалов", "displayName_zh": "材料削减加成", "displayNameID": 315520, "displayWhenZero": 0, "highIsGood": 0, "name": "attributeEngRigMatBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2595": { "attributeID": 2595, "categoryID": 37, "dataType": 5, "defaultValue": 1.0, "description": "Bonus on Cost decrease for engineering rigs", "displayName_de": "Kostenreduktionsbonus", "displayName_en-us": "Cost Reduction Bonus", "displayName_es": "Bonificación de reducción del coste", "displayName_fr": "Bonus de réduction de coût", "displayName_it": "Cost Reduction Bonus", "displayName_ja": "コスト削減ボーナス", "displayName_ko": "비용 감소 보너스", "displayName_ru": "Влияние на снижение стоимости", "displayName_zh": "成本削减加成", "displayNameID": 315519, "displayWhenZero": 0, "highIsGood": 0, "name": "attributeEngRigCostBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2596": { "attributeID": 2596, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff1Multiplier", "published": 0, "stackable": 1 }, "2597": { "attributeID": 2597, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff2Multiplier", "published": 0, "stackable": 1 }, "2598": { "attributeID": 2598, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff3Multiplier", "published": 0, "stackable": 1 }, "2599": { "attributeID": 2599, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "warfareBuff4Multiplier", "published": 0, "stackable": 1 }, "2600": { "attributeID": 2600, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Material bonus for Engineering Complexes Structures", "displayWhenZero": 0, "highIsGood": 1, "name": "strEngMatBonus", "published": 0, "stackable": 1 }, "2601": { "attributeID": 2601, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Cost bonus for Engineering Complexes Structures", "displayWhenZero": 0, "highIsGood": 1, "name": "strEngCostBonus", "published": 0, "stackable": 1 }, "2602": { "attributeID": 2602, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Time bonus for Engineering Complexes Structures", "displayWhenZero": 0, "highIsGood": 1, "name": "strEngTimeBonus", "published": 0, "stackable": 1 }, "2603": { "attributeID": 2603, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Geschwindigkeitsbonus", "displayName_en-us": "Maximum Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Maximum Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Влияние на максимальную скорость", "displayName_zh": "最大速度加成", "displayNameID": 315527, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "maxVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2604": { "attributeID": 2604, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Reichweite von Capital-Schildfernboostern", "displayName_en-us": "Capital Remote Shield Booster Range Bonus", "displayName_es": "Bonificación de alcance del potenciador de escudo remoto capital", "displayName_fr": "Bonus à la portée du booster de bouclier à distance capital I", "displayName_it": "Capital Remote Shield Booster Range Bonus", "displayName_ja": "キャピタルリモートシールドブースターの範囲ボーナス", "displayName_ko": "캐피탈 원격 실드 부스터 사거리 보너스", "displayName_ru": "Влияние на дальность действия сверхбольших дистанционных систем накачки щита", "displayName_zh": "旗舰级远程护盾回充增量器距离加成", "displayNameID": 315528, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "industrialCoreRemoteLogisticsRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2605": { "attributeID": 2605, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Dauer und den Energiespeicherverbrauch von Capital-Schildfernboostern", "displayName_en-us": "Capital Remote Shield Booster Duration and Capacitor Use Bonus", "displayName_es": "Bonificación de duración del potenciador de escudo remoto capital y uso del condensador", "displayName_fr": "Bonus à la durée du booster de bouclier à distance et à l'économie de capaciteur", "displayName_it": "Capital Remote Shield Booster Duration and Capacitor Use Bonus", "displayName_ja": "キャピタルリモートシールドブースターの持続時間とキャパシタ消費量ボーナス", "displayName_ko": "캐피탈 원격 실드 부스터 지속시간 및 캐패시터 보너스", "displayName_ru": "Влияние на цикл и потребление энергии сверхбольшими дистанционными системами накачки щита", "displayName_zh": "旗舰级远程护盾回充增量器持续时间和电容消耗加成", "displayNameID": 315529, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "industrialCoreRemoteLogisticsDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2606": { "attributeID": 2606, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Dauer von Schildboostern", "displayName_en-us": "Shield Booster Duration Bonus", "displayName_es": "Bonificación de duración del potenciador de escudo", "displayName_fr": "Bonus à la durée de booster de bouclier", "displayName_it": "Shield Booster Duration Bonus", "displayName_ja": "シールドブースターの持続時間ボーナス", "displayName_ko": "실드 부스터 지속시간 보너스", "displayName_ru": "Влияние на время цикла накачки щита", "displayName_zh": "护盾回充增量器持续时间加成", "displayNameID": 315530, "displayWhenZero": 0, "highIsGood": 0, "iconID": 0, "name": "industrialCoreLocalLogisticsDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2607": { "attributeID": 2607, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Leistung von Schildboostern", "displayName_en-us": "Shield Booster Amount Bonus", "displayName_es": "Bonificación de cantidad de potenciadores de escudo", "displayName_fr": "Bonus à la quantité de booster de bouclier", "displayName_it": "Shield Booster Amount Bonus", "displayName_ja": "シールドブースターの容量ボーナス", "displayName_ko": "실드 부스터 총 보너스", "displayName_ru": "Влияние на время цикла накачки щита", "displayName_zh": "护盾回充增量器回充量加成", "displayNameID": 315531, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "industrialCoreLocalLogisticsAmountBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2608": { "attributeID": 2608, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Minimale Geschwindigkeitsbegrenzung", "displayName_en-us": "Minimum Velocity Limitation", "displayName_es": "Limitación de velocidad mínima", "displayName_fr": "Limitation de vitesse minimale", "displayName_it": "Minimum Velocity Limitation", "displayName_ja": "最低速度制限", "displayName_ko": "최소 속도 제한", "displayName_ru": "Ограничение по минимальной скорости", "displayName_zh": "最小速度限制", "displayNameID": 315546, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "minVelocityActivationLimit", "published": 1, "stackable": 1, "unitID": 10 }, "2609": { "attributeID": 2609, "categoryID": 39, "dataType": 10, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayEnergyNeutResistanceID", "published": 0, "stackable": 1, "unitID": 119 }, "2610": { "attributeID": 2610, "categoryID": 7, "dataType": 2, "defaultValue": 0.0, "description": "Pilot's Crimewatch sec status. Copied from character stats when boarding a ship.", "displayWhenZero": 0, "highIsGood": 1, "name": "pilotSecurityStatus", "published": 0, "stackable": 1 }, "2612": { "attributeID": 2612, "categoryID": 12, "dataType": 5, "defaultValue": 1.2999999523162842, "description": "Tanking modifier applied to fighters if their owner is tanking. 1.0 is no modifier", "displayWhenZero": 0, "highIsGood": 1, "name": "AI_TankingModifierFighter", "published": 0, "stackable": 1 }, "2613": { "attributeID": 2613, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "chargeRateMultiplier", "published": 0, "stackable": 1 }, "2614": { "attributeID": 2614, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2615": { "attributeID": 2615, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2616": { "attributeID": 2616, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveMassAddition", "published": 0, "stackable": 1, "unitID": 2 }, "2617": { "attributeID": 2617, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveSignatureRadiusBonus", "published": 0, "stackable": 1, "unitID": 124 }, "2618": { "attributeID": 2618, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveSpeedFactor", "published": 0, "stackable": 1, "unitID": 124 }, "2619": { "attributeID": 2619, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroWarpDriveSpeedBoostFactor", "published": 0, "stackable": 1, "unitID": 125 }, "2620": { "attributeID": 2620, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "concordRoleBonusSecGain", "published": 0, "stackable": 1 }, "2621": { "attributeID": 2621, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 2623, "name": "inverseCappedSecStatus", "published": 0, "stackable": 1 }, "2622": { "attributeID": 2622, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 2624, "name": "concordTankBonus", "published": 0, "stackable": 1 }, "2623": { "attributeID": 2623, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "constantZero", "published": 0, "stackable": 1 }, "2624": { "attributeID": 2624, "categoryID": 7, "dataType": 5, "defaultValue": 50.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "constantFifty", "published": 0, "stackable": 1 }, "2627": { "attributeID": 2627, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusBlackOps3", "published": 0, "stackable": 1 }, "2628": { "attributeID": 2628, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusBlackOps4", "published": 0, "stackable": 1 }, "2629": { "attributeID": 2629, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNosferatuDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2630": { "attributeID": 2630, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNosferatuDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2631": { "attributeID": 2631, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNosferatuFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "2632": { "attributeID": 2632, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorEnergyNosferatuRange", "published": 0, "stackable": 1, "unitID": 1 }, "2633": { "attributeID": 2633, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorArmorRepairerDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2634": { "attributeID": 2634, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorArmorRepairerDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2635": { "attributeID": 2635, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorArmorRepairerAmount", "published": 0, "stackable": 1, "unitID": 113 }, "2636": { "attributeID": 2636, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2637": { "attributeID": 2637, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2638": { "attributeID": 2638, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeRemoteRepairImpedanceModifier", "published": 0, "stackable": 1 }, "2639": { "attributeID": 2639, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeRemoteAssistanceImpedanceModifier", "published": 0, "stackable": 1 }, "2640": { "attributeID": 2640, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeSensorDampenerResistanceModifier", "published": 0, "stackable": 1 }, "2641": { "attributeID": 2641, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeWeaponDisruptionResistanceModifier", "published": 0, "stackable": 1 }, "2642": { "attributeID": 2642, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeECMResistanceModifier", "published": 0, "stackable": 1 }, "2643": { "attributeID": 2643, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeMaxVelocityModifier", "published": 0, "stackable": 1 }, "2644": { "attributeID": 2644, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeWarpScrambleStatusModifier", "published": 0, "stackable": 1 }, "2645": { "attributeID": 2645, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeDisallowTetheringModifier", "published": 0, "stackable": 1 }, "2646": { "attributeID": 2646, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeMassModifier", "published": 0, "stackable": 1 }, "2647": { "attributeID": 2647, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeLocalLogisticsAmountModifier", "published": 0, "stackable": 1 }, "2648": { "attributeID": 2648, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeLocalLogisticsDurationModifier", "published": 0, "stackable": 1 }, "2649": { "attributeID": 2649, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeTurretDamageModifier", "published": 0, "stackable": 1 }, "2653": { "attributeID": 2653, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Thukker-Materialreduktionsbonus für verbesserte Capital-Komponenten", "displayName_en-us": "Thukker Enhanced Capital Component Material Reduction Bonus", "displayName_es": "Bonificación de reducción de materiales de componentes capitales thukkers mejorados", "displayName_fr": "Bonus augmenté de productivité matérielle pour la construction de composants capitaux thukker", "displayName_it": "Thukker Enhanced Capital Component Material Reduction Bonus", "displayName_ja": "サッカー強化キャピタル部品資源削減ボーナス", "displayName_ko": "터커 강화 캐피탈 부품 재료 감소 보너스", "displayName_ru": "«Таккерское» влияние на снижение расхода материалов при производстве компонентов КБТ", "displayName_zh": "图克尔加强型旗舰组件材料减耗加成", "displayNameID": 315673, "displayWhenZero": 0, "highIsGood": 0, "name": "attributeThukkerEngRigMatBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2654": { "attributeID": 2654, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "Number of Turrets to fit for entity type ships", "displayWhenZero": 0, "highIsGood": 1, "name": "gfxTurretCount", "published": 0, "stackable": 1 }, "2655": { "attributeID": 2655, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "Type ID of the launcher for entity type ships", "displayWhenZero": 0, "highIsGood": 1, "name": "gfxLauncherID", "published": 0, "stackable": 1 }, "2656": { "attributeID": 2656, "categoryID": 31, "dataType": 4, "defaultValue": 0.0, "description": "Number of Launchers to fit for entity type ships", "displayWhenZero": 0, "highIsGood": 1, "name": "gfxLauncherCount", "published": 0, "stackable": 1 }, "2657": { "attributeID": 2657, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "special booster hold capacity", "displayName_de": "Boosterkapazität", "displayName_en-us": "Booster Hold Capacity", "displayName_es": "Capacidad de bodega de potenciadores", "displayName_fr": "Capacité de la soute à boosters", "displayName_it": "Booster Hold Capacity", "displayName_ja": "ブースターホールド容量", "displayName_ko": "부스터 저장고 적재량", "displayName_ru": "Вместимость отсека для боевых стимуляторов", "displayName_zh": "增效剂舱容量", "displayNameID": 315714, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialBoosterHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Pharmazeutika, das im Boosterfrachtraum des Schiffs gelagert werden kann", "tooltipDescription_en-us": "The total volume of pharmaceuticals that can be stored in the ship's booster hold", "tooltipDescription_es": "El volumen total de fármacos que pueden almacenarse en la bodega de potenciadores de la nave.", "tooltipDescription_fr": "Volume total de drogues pharmaceutiques pouvant être transportées dans la soute à boosters du vaisseau.", "tooltipDescription_it": "The total volume of pharmaceuticals that can be stored in the ship's booster hold", "tooltipDescription_ja": "艦船のブースターホールドに積載できる医薬品の総量", "tooltipDescription_ko": "부스터 창고의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём биоактивных веществ, допустимый к размещению в бортовом отсеке для боевых стимуляторов", "tooltipDescription_zh": "舰船的增效剂舱所能装载的药物总体积", "tooltipDescriptionID": 315716, "tooltipTitleID": 315715, "unitID": 9 }, "2658": { "attributeID": 2658, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease material requirement for manufacturing the following:\r\nT2 Capital Construction Components", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvCapCompManufactureMaterialMultiplier", "published": 0, "stackable": 1 }, "2659": { "attributeID": 2659, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decrease time requirement for manufacturing the following:\r\nT2 Capital Construction Components", "displayWhenZero": 0, "highIsGood": 1, "name": "attributeAdvCapCompManufactureTimeMultiplier", "published": 0, "stackable": 1 }, "2660": { "attributeID": 2660, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Skill attribute that reduces time for reactions\r\n jobs", "displayName_de": "Reaktionszeitbonus", "displayName_en-us": "Reaction Time Bonus", "displayName_es": "Bonificación de tiempo de reacción", "displayName_fr": "Bonus de temps de réaction", "displayName_it": "Reaction Time Bonus", "displayName_ja": "反応速度ボーナス", "displayName_ko": "반응로 작업 시간 보너스", "displayName_ru": "Влияние на время реакции", "displayName_zh": "反应时间加成", "displayNameID": 315743, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "reactionTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2661": { "attributeID": 2661, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Increase number of available/simultaneous reaction slots", "displayName_de": "Reaktionsslotbonus", "displayName_en-us": "Reaction Slot Bonus", "displayName_es": "Bonificación de ranura de reacción", "displayName_fr": "Bonus de créneau de réaction", "displayName_it": "Reaction Slot Bonus", "displayName_ja": "反応スロットボーナス", "displayName_ko": "반응로 작업 슬롯 보너스", "displayName_ru": "Влияние на разъёмы реакции", "displayName_zh": "反应槽位加成", "displayNameID": 315744, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "reactionSlotBonus", "published": 1, "stackable": 1, "unitID": 139 }, "2662": { "attributeID": 2662, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "Scales the time for reaction", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionTimeMultiplier", "published": 1, "stackable": 1 }, "2664": { "attributeID": 2664, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "Maximum amount of Reactions slots that can be used at a time", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionSlotLimit", "published": 0, "stackable": 1 }, "2665": { "attributeID": 2665, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für Nosferatu und Neutralizer", "displayName_en-us": "Nosferatu and Neutralizer fitting reduction", "displayName_es": "Reducción de equipamiento de nosferatu y neutralizador", "displayName_fr": "Réduction d'équipement Nosferatu et Neutraliseur", "displayName_it": "Nosferatu and Neutralizer fitting reduction", "displayName_ja": "ノスフェラトゥとニュートラライザーの装備要件軽減", "displayName_ko": "노스페라투와 뉴트럴라이저 피팅 감소", "displayName_ru": "Сокращение потребности устройств паразитной подзарядки накопителя и дистанционных нейтрализаторов заряда в мощностях при монтаже", "displayName_zh": "掠能器和能量中和器装配需求降低", "displayNameID": 315745, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemEnergyNeutFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2666": { "attributeID": 2666, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleren Hybridwaffenturm", "displayName_en-us": "Medium Hybrid Turret fitting reduction", "displayName_es": "Reducción de equipamiento de torreta híbrida mediana", "displayName_fr": "Réduction d'équipement de tourelle hybride intermédiaire", "displayName_it": "Medium Hybrid Turret fitting reduction", "displayName_ja": "中型ハイブリッドタレットの装備要件軽減", "displayName_ko": "중형 하이브리드 터렛 피팅 감소", "displayName_ru": "Сокращение потребности средних гибридных орудий в мощностях при монтаже", "displayName_zh": "中型混合炮台装配需求降低", "displayNameID": 315746, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMHTFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2667": { "attributeID": 2667, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleren Projektilwaffenturm", "displayName_en-us": "Medium Projectile Turret fitting reduction", "displayName_es": "Reducción de equipamiento de torreta de proyectiles mediana", "displayName_fr": "Réduction d'équipement de tourelle à projectiles intermédiaire", "displayName_it": "Medium Projectile Turret fitting reduction", "displayName_ja": "中型プロジェクタイルタレットの装備要件軽減", "displayName_ko": "중형 발사체 터렛 피팅 감소", "displayName_ru": "Сокращение потребности средних баллистических орудий в мощностях при монтаже", "displayName_zh": "中型射弹炮台装配需求降低", "displayNameID": 315747, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMPTFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2668": { "attributeID": 2668, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleren Energiewaffenturm", "displayName_en-us": "Medium Energy Turret fitting reduction", "displayName_es": "Reducción de equipamiento de torreta de energía mediana", "displayName_fr": "Réduction d'équipement de tourelle à énergie intermédiaire", "displayName_it": "Medium Energy Turret fitting reduction", "displayName_ja": "中型エネルギータレットの装備要件軽減", "displayName_ko": "중형 에너지 터렛 피팅 감소", "displayName_ru": "Сокращение потребности средних лазерных орудий в мощностях при монтаже", "displayName_zh": "中型能量炮台装配需求降低", "displayNameID": 315748, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMETFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2669": { "attributeID": 2669, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleren Lenkwaffenwerfer", "displayName_en-us": "Medium Missile Launcher fitting reduction", "displayName_es": "Reducción de equipamiento de lanzamisiles mediano", "displayName_fr": "Réduction d'équipement de lance-missiles intermédiaire", "displayName_it": "Medium Missile Launcher fitting reduction", "displayName_ja": "中型ミサイルランチャーの装備要件軽減", "displayName_ko": "중형 미사일 런처 피팅 감소", "displayName_ru": "Сокращение потребности ракетных установок кораблей крейсерского тоннажа в мощностях при монтаже", "displayName_zh": "中型导弹发射器装配需求降低", "displayNameID": 315749, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMMissileFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2670": { "attributeID": 2670, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleren Schildfernbooster", "displayName_en-us": "Medium Remote Shield Booster fitting reduction", "displayName_es": "Reducción de equipamiento de potenciador de escudo remoto mediano", "displayName_fr": "Réduction d'équipement de booster de bouclier à distance intermédiaire", "displayName_it": "Medium Remote Shield Booster fitting reduction", "displayName_ja": "中型リモートシールドブースターの装備要件軽減", "displayName_ko": "중형 원격 실드 부스터 피팅 감소", "displayName_ru": "Сокращение потребности средних установок дистанционной накачки щитов в мощностях при монтаже", "displayName_zh": "中型远程护盾回充增量器装配需求降低", "displayNameID": 315750, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMRSBFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2671": { "attributeID": 2671, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Ausrüstungsreduktion für mittleres Panzerungs-Fernreparatursystem", "displayName_en-us": "Medium Remote Armor Repairer fitting reduction", "displayName_es": "Reducción de equipamiento de reparador de blindaje remoto mediano", "displayName_fr": "Réduction d'équipement de réparateur de blindage à distance intermédiaire", "displayName_it": "Medium Remote Armor Repairer fitting reduction", "displayName_ja": "中型リモートアーマーリペアラの装備要件軽減", "displayName_ko": "중형 원격 장갑수리 장치 피팅 감소", "displayName_ru": "Сокращение потребности средних установок дистанционного ремонта брони в мощностях при монтаже", "displayName_zh": "中型远程装甲维修器装配需求降低", "displayNameID": 315751, "displayWhenZero": 0, "highIsGood": 0, "name": "subsystemMRARFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2673": { "attributeID": 2673, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMiningMaxRange", "published": 0, "stackable": 1, "unitID": 1 }, "2674": { "attributeID": 2674, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMiningDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2675": { "attributeID": 2675, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "special subsystem hold capacity", "displayName_de": "Fassungsvermögen des Subsystems", "displayName_en-us": "Subsystem Hold Capacity", "displayName_es": "Capacidad de la bodega del subsistema", "displayName_fr": "Capacité de la soute du sous-système", "displayName_it": "Subsystem Hold Capacity", "displayName_ja": "サブシステムホールド容量", "displayName_ko": "서브시스템 저장고 적재량", "displayName_ru": "Вместимость отсека для подсистем", "displayName_zh": "子系统舱容量", "displayNameID": 315775, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialSubsystemHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Subsystemen, das im Subsystemhangar des Schiffs gelagert werden kann.", "tooltipDescription_en-us": "The total volume of subsystems that can be stored in the ship's subsystem hold", "tooltipDescription_es": "El volumen total de subsistemas que pueden almacenarse en la bodega de subsistemas de la nave.", "tooltipDescription_fr": "Volume total de sous-systèmes pouvant être entreposés dans la soute à sous-systèmes du vaisseau.", "tooltipDescription_it": "The total volume of subsystems that can be stored in the ship's subsystem hold", "tooltipDescription_ja": "艦船のサブシステムホールドに積載できるサブシステムの総量", "tooltipDescription_ko": "서브시스템 저장고의 총 적재량입니다.", "tooltipDescription_ru": "Максимальный объём подсистем, допустимый к размещению в этом бортовом отсеке", "tooltipDescription_zh": "舰船的子系统舱所能装载的子系统总体积", "tooltipDescriptionID": 317687, "tooltipTitleID": 317686, "unitID": 9 }, "2676": { "attributeID": 2676, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserCaldari2", "published": 0, "stackable": 1 }, "2677": { "attributeID": 2677, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserAmarr2", "published": 0, "stackable": 1 }, "2678": { "attributeID": 2678, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserGallente2", "published": 0, "stackable": 1 }, "2679": { "attributeID": 2679, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusStrategicCruiserMinmatar2", "published": 0, "stackable": 1 }, "2680": { "attributeID": 2680, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrDefensive3", "published": 0, "stackable": 1 }, "2681": { "attributeID": 2681, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusAmarrCore3", "published": 0, "stackable": 1 }, "2682": { "attributeID": 2682, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariDefensive3", "published": 0, "stackable": 1 }, "2683": { "attributeID": 2683, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusCaldariCore3", "published": 0, "stackable": 1 }, "2684": { "attributeID": 2684, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteDefensive3", "published": 0, "stackable": 1 }, "2685": { "attributeID": 2685, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusGallenteCore3", "published": 0, "stackable": 1 }, "2686": { "attributeID": 2686, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarDefensive3", "published": 0, "stackable": 1 }, "2687": { "attributeID": 2687, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMinmatarCore3", "published": 0, "stackable": 1 }, "2688": { "attributeID": 2688, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "HP-Bonus für Struktur", "displayName_en-us": "Structure Hitpoint Bonus", "displayName_es": "Bonificación de puntos de vida de estructura", "displayName_fr": "Bonus de points de vie de structure", "displayName_it": "Structure Hitpoint Bonus", "displayName_ja": "ストラクチャHPボーナス", "displayName_ko": "구조물 내구도 보너스", "displayName_ru": "Увеличение запаса прочности корпуса", "displayName_zh": "结构值加成", "displayNameID": 315792, "displayWhenZero": 0, "highIsGood": 1, "name": "structureHPBonusAdd", "published": 1, "stackable": 1, "unitID": 113 }, "2689": { "attributeID": 2689, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Frachtraumbonus", "displayName_en-us": "Cargo Capacity Bonus", "displayName_es": "Bonificación de capacidad de carga", "displayName_fr": "Bonus de capacité de la soute", "displayName_it": "Cargo Capacity Bonus", "displayName_ja": "カーゴ容量ボーナス", "displayName_ko": "화물 적재량 보너스", "displayName_ru": "Повышение объёма грузового отсека", "displayName_zh": "货柜舱容量加成", "displayNameID": 315793, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "cargoCapacityAdd", "published": 1, "stackable": 1, "unitID": 9 }, "2690": { "attributeID": 2690, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Zusätzlicher Trägheitsmodifikator", "displayName_en-us": "Additional Inertia Modifier", "displayName_es": "Modificador de inercia adicional", "displayName_fr": "Modificateur d'inertie supplémentaire", "displayName_it": "Additional Inertia Modifier", "displayName_ja": "追加慣性乗数", "displayName_ko": "추가 관성 계수", "displayName_ru": "Модификатор влияния инертности конструкции.", "displayName_zh": "附加惯性调整系数", "displayNameID": 315809, "displayWhenZero": 0, "highIsGood": 1, "name": "agilityBonusAdd", "published": 1, "stackable": 1 }, "2691": { "attributeID": 2691, "categoryID": 1, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "mediumRemoteRepFittingMultiplier", "published": 0, "stackable": 1 }, "2692": { "attributeID": 2692, "categoryID": 1, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduzierung der Kommandostrahlen-Ausrüstung", "displayName_en-us": "Command Burst fitting reduction", "displayName_es": "Reducción de equipamiento del estallido de mando", "displayName_fr": "Réduction d'équipement d'explosion de commandement", "displayName_it": "Command Burst fitting reduction", "displayName_ja": "コマンドバーストの装備要件軽減", "displayName_ko": "커맨드 버스트 피팅 감소", "displayName_ru": "Сокращение потребности импульсных оптимизаторов в мощностях при монтаже", "displayName_zh": "指挥脉冲波装配需求降低", "displayNameID": 315828, "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemCommandBurstFittingReduction", "published": 1, "stackable": 1, "unitID": 105 }, "2693": { "attributeID": 2693, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Präzisionsabfall für Schildfernbooster", "displayName_en-us": "Remote Shield Booster Falloff Bonus", "displayName_es": "Bonificación de alcance efectivo del potenciador de escudo remoto", "displayName_fr": "Bonus de perte de puissance de booster de bouclier à distance", "displayName_it": "Remote Shield Booster Falloff Bonus", "displayName_ja": "リモートシールドブースター性能低下ボーナス", "displayName_ko": "원격 실드 부스터 유효사거리 보너스", "displayName_ru": "Влияние на добавочную дальность действия установок дистанционной накачки щитов", "displayName_zh": "远程护盾回充增量器失准范围加成", "displayNameID": 315830, "displayWhenZero": 0, "highIsGood": 1, "name": "remoteShieldBoosterFalloffBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2694": { "attributeID": 2694, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Präzisionsabfall für Panzerungs-Fernreparatursystem", "displayName_en-us": "Remote Armor Repairer Falloff Bonus", "displayName_es": "Bonificación de alcance efectivo del reparador de blindaje remoto", "displayName_fr": "Bonus de perte de puissance de réparateurs de blindage à distance", "displayName_it": "Remote Armor Repairer Falloff Bonus", "displayName_ja": "リモートアーマーリペアラ精度低下ボーナス", "displayName_ko": "원격 장갑수리 장치 유효사거리 보너스", "displayName_ru": "Влияние на добавочную дальность действия установок дистанционного ремонта брони", "displayName_zh": "远程装甲维修器失准范围加成", "displayNameID": 315831, "displayWhenZero": 0, "highIsGood": 1, "name": "remoteArmorRepairerFalloffBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2695": { "attributeID": 2695, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf optimale Reichweite für Panzerungs-Fernreparatursystem", "displayName_en-us": "Remote Armor Repairer Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo del reparador de blindaje remoto", "displayName_fr": "Bonus de portée optimale de réparateurs de blindage à distance", "displayName_it": "Remote Armor Repairer Optimal Range Bonus", "displayName_ja": "リモートアーマーリペアラ最適範囲ボーナス", "displayName_ko": "원격 장갑수리 최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность действия установок дистанционного ремонта брони", "displayName_zh": "远程装甲维修器最佳射程加成", "displayNameID": 315832, "displayWhenZero": 0, "highIsGood": 1, "name": "remoteArmorRepairerOptimalBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2696": { "attributeID": 2696, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "Indicates that a module or subsystem has been phased out. Primarily used by saved fittings.", "displayName_de": "Modul oder Subsystem ist veraltet.", "displayName_en-us": "Module or subsystem is obsolete", "displayName_es": "Módulo o subsistema obsoleto", "displayName_fr": "Module ou sous-système obsolète", "displayName_it": "Module or subsystem is obsolete", "displayName_ja": "旧式のモジュールかサブシステム", "displayName_ko": "구식 모듈 또는 서브시스템", "displayName_ru": "Модуль или подсистема считаются устаревшими", "displayName_zh": "装备或子系统过时了", "displayNameID": 315833, "displayWhenZero": 0, "highIsGood": 1, "name": "moduleIsObsolete", "published": 1, "stackable": 1 }, "2697": { "attributeID": 2697, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Scanreichweite", "displayName_en-us": "Maximum Scan Range", "displayName_es": "Alcance de escaneo máximo", "displayName_fr": "Portée du balayage maximum", "displayName_it": "Maximum Scan Range", "displayName_ja": "最大スキャン範囲", "displayName_ko": "최대 스캔 거리", "displayName_ru": "Радиус сбора данных", "displayName_zh": "最大扫描范围", "displayNameID": 315916, "displayWhenZero": 0, "highIsGood": 1, "name": "maxScanRange", "published": 1, "stackable": 1, "unitID": 1 }, "2698": { "attributeID": 2698, "categoryID": 4, "dataType": 5, "defaultValue": 10800.0, "description": "Delay for exploding moon mining chunk into asteroid field", "displayWhenZero": 0, "highIsGood": 1, "name": "autoFractureDelay", "published": 0, "stackable": 1, "unitID": 3 }, "2699": { "attributeID": 2699, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "0: Mission/NPE Ore\r\n1: Standard Ore/Ice\r\n2: +5% Ore\r\n3: +10% Ore\r\n4: High Quality Ice or Extracted Ore\r\n5: Jackpot Moon Ore", "displayWhenZero": 0, "highIsGood": 1, "name": "asteroidMetaLevel", "published": 0, "stackable": 1 }, "2700": { "attributeID": 2700, "categoryID": 30, "dataType": 5, "defaultValue": 200000.0, "description": "", "displayName_de": "Maximale FOF-Zielerfassungsreichweite", "displayName_en-us": "Maximum Auto-Targeting Range", "displayName_es": "Distancia máx. de adquisición automática de objetivos", "displayName_fr": "Portée de ciblage maximum des missiles FoF", "displayName_it": "Maximum Auto-Targeting Range", "displayName_ja": "最大自動捕捉範囲", "displayName_ko": "최대 FOF 타겟 사거리", "displayName_ru": "Максимальная дальность автонаведения", "displayName_zh": "最大自动锁定距离", "displayNameID": 315920, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxFOFTargetRange", "published": 1, "stackable": 1, "unitID": 1 }, "2701": { "attributeID": 2701, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktion der Scandauer der Vermessungssonde", "displayName_en-us": "Reduction to Survey Probe Scan Time", "displayName_es": "Reducción del tiempo de escáner de sondas de prospección", "displayName_fr": "Réduction du temps de balayage de sonde d'exploration", "displayName_it": "Reduction to Survey Probe Scan Time", "displayName_ja": "衛星調査プローブスキャン時間の削減", "displayName_ko": "조사 프로브 스캔 시간 감소", "displayName_ru": "Сокращение расхода времени на сбор данных при луноразведке", "displayName_zh": "测量探针扫描时间减少", "displayNameID": 315994, "displayWhenZero": 0, "highIsGood": 1, "name": "surveyProbeDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2704": { "attributeID": 2704, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Defines relation over moon spew volume vs time to drill/create spew", "displayName_de": "Förderungsertrag-Multiplikator", "displayName_en-us": "Extraction Yield Multiplier", "displayName_es": "Multiplicador de rendimiento de extracción", "displayName_fr": "Multiplicateur du rendement d'extraction", "displayName_it": "Extraction Yield Multiplier", "displayName_ja": "抽出量乗数", "displayName_ko": "추출량 배수", "displayName_ru": "Множитель объёма извлечения", "displayName_zh": "开采量系数", "displayNameID": 316906, "displayWhenZero": 0, "highIsGood": 1, "name": "moonYieldMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "2705": { "attributeID": 2705, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Radius of asteroid field created by moon chunk", "displayName_de": "Multiplikator des Mond-Asteroidenfeldradius", "displayName_en-us": "Moon Asteroid Field Radius Multiplier", "displayName_es": "Multiplicador del radio de campos de asteroides lunares", "displayName_fr": "Multiplicateur du rayon de champ d'astéroïdes lunaires", "displayName_it": "Moon Asteroid Field Radius Multiplier", "displayName_ja": "衛星アステロイドフィールド半径乗数", "displayName_ko": "위성 소행성 필드 크기 배수", "displayName_ru": "Множитель радиуса скопления астероидов", "displayName_zh": "卫星小行星带半径系数", "displayNameID": 316907, "displayWhenZero": 0, "highIsGood": 0, "name": "moonAsteroidFieldRadius", "published": 1, "stackable": 1, "unitID": 104 }, "2706": { "attributeID": 2706, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Decay time for asteroid created from moon spew", "displayName_de": "Verfallzeit des Mondasteroiden", "displayName_en-us": "Moon Asteroid Decay Time", "displayName_es": "Velocidad de descomposición de asteroides lunares", "displayName_fr": "Durée d'effritement des astéroïdes lunaires", "displayName_it": "Moon Asteroid Decay Time", "displayName_ja": "衛星アステロイド崩壊時間", "displayName_ko": "위성 소행성 풍화 시간", "displayName_ru": "Время распада астероидов", "displayName_zh": "卫星小行星衰减时间", "displayNameID": 316908, "displayWhenZero": 0, "highIsGood": 1, "name": "moonAsteroidDecayTimeMultiplier", "published": 0, "stackable": 1, "unitID": 3 }, "2707": { "attributeID": 2707, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Rig Bonus that affects fracture delay for moon chunk", "displayName_de": "Bonus auf Mondbrockenstabilität", "displayName_en-us": "Chunk Stability Bonus", "displayName_es": "Bonificación de estabilidad de los fragmentos", "displayName_fr": "Bonus de stabilité de monolithe", "displayName_it": "Chunk Stability Bonus", "displayName_ja": "岩塊安定性ボーナス", "displayName_ko": "파편 안정성 보너스", "displayName_ru": "Бонус к устойчивости породы", "displayName_zh": "区块稳定性加成", "displayNameID": 316998, "displayWhenZero": 0, "highIsGood": 1, "name": "moonRigFractureDelayBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2708": { "attributeID": 2708, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Moon rig bonus that delays spew asteroid decay", "displayName_de": "Bonus auf Verfall abgebauter Asteroiden", "displayName_en-us": "Extracted Asteroid Decay Bonus", "displayName_es": "Bonificación de deterioro del asteroide extraído", "displayName_fr": "Bonus d'effritement des astéroïdes extraits", "displayName_it": "Extracted Asteroid Decay Bonus", "displayName_ja": "抽出されたアステロイドの崩壊ボーナス", "displayName_ko": "추출된 소행성 풍화 보너스", "displayName_ru": "Бонус к распаду извлечённых астероидов", "displayName_zh": "开采小行星衰减加成", "displayNameID": 316997, "displayWhenZero": 0, "highIsGood": 1, "name": "moonRigAsteroidDecayBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2709": { "attributeID": 2709, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Rig Bonus that affects spew asteroid belt radius from moon extraction", "displayName_de": "Bonus auf Radius der Mond-Asteroidengürtel", "displayName_en-us": "Moon Asteroid Belt Radius Bonus", "displayName_es": "Bonificación de radio del cinturón de asteroides lunar", "displayName_fr": "Bonus du rayon de ceinture d'astéroïdes lunaires", "displayName_it": "Moon Asteroid Belt Radius Bonus", "displayName_ja": "衛星アステロイドベルト半径ボーナス", "displayName_ko": "위성 소행성 벨트 반경 보너스", "displayName_ru": "Бонус к радиусу скопления астероидов", "displayName_zh": "卫星小行星带半径加成", "displayNameID": 316999, "displayWhenZero": 0, "highIsGood": 1, "name": "moonRigSpewRadiusBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2710": { "attributeID": 2710, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Moon rig bonus that increases volume of moon spew in relation to extraction time", "displayName_de": "Bonus auf Mondabbauvolumen", "displayName_en-us": "Moon Extraction Volume Bonus", "displayName_es": "Bonificación de volumen de extracción lunar", "displayName_fr": "Bonus de volume d'extraction lunaire", "displayName_it": "Moon Extraction Volume Bonus", "displayName_ja": "衛星抽出量ボーナス", "displayName_ko": "위성 추출량 보너스", "displayName_ru": "Бонус к объёму извлекаемой породы", "displayName_zh": "卫星开采体积加成", "displayNameID": 316996, "displayWhenZero": 0, "highIsGood": 1, "name": "moonRigSpewVolumeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2711": { "attributeID": 2711, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Reference for grouping ores in visual displays. All variants of one ore should have the same BasicType ID", "displayWhenZero": 0, "highIsGood": 0, "name": "oreBasicType", "published": 0, "stackable": 0, "unitID": 116 }, "2713": { "attributeID": 2713, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Time Bonus for refinery rigs", "displayName_de": "Zeitbonus", "displayName_en-us": "Time Bonus", "displayName_es": "Bonificación de tiempo", "displayName_fr": "Bonus de temps", "displayName_it": "Time Bonus", "displayName_ja": "時間ボーナス", "displayName_ko": "시간 보너스", "displayName_ru": "Дополнительное время", "displayName_zh": "时间加成", "displayNameID": 316847, "displayWhenZero": 0, "highIsGood": 0, "name": "RefRigTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2714": { "attributeID": 2714, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Refinery rig material bonus", "displayName_de": "Materialreduktionsbonus", "displayName_en-us": "Material Reduction Bonus", "displayName_es": "Bonificación de reducción de materiales", "displayName_fr": "Bonus de réduction de matériel", "displayName_it": "Material Reduction Bonus", "displayName_ja": "資源減少ボーナス", "displayName_ko": "재료 감소 보너스", "displayName_ru": "Влияние на снижение расхода материалов", "displayName_zh": "材料削减加成", "displayNameID": 316848, "displayWhenZero": 0, "highIsGood": 0, "name": "RefRigMatBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2715": { "attributeID": 2715, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Hybrid Reactions Time Multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionHybTimeMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2716": { "attributeID": 2716, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Hybrid reaction material multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionHybMatMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2717": { "attributeID": 2717, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "composite reaction time multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionCompTimeMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2718": { "attributeID": 2718, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "composite reaction material multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionCompMatMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2719": { "attributeID": 2719, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "biochemical reaction time multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionBioTimeMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2720": { "attributeID": 2720, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "biochemical reaction material multiplier", "displayWhenZero": 0, "highIsGood": 1, "name": "reactionBioMatMultiplier", "published": 0, "stackable": 1, "unitID": 104 }, "2721": { "attributeID": 2721, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "Time bonus for Refinery Structures", "displayWhenZero": 0, "highIsGood": 1, "name": "strReactionTimeMultiplier", "published": 0, "stackable": 1 }, "2722": { "attributeID": 2722, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "strRefiningYieldBonus", "published": 0, "stackable": 1 }, "2723": { "attributeID": 2723, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorShieldBoosterAmount", "published": 0, "stackable": 1, "unitID": 113 }, "2724": { "attributeID": 2724, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorShieldBoosterDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "2725": { "attributeID": 2725, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorShieldBoosterDuration", "published": 0, "stackable": 1, "unitID": 101 }, "2727": { "attributeID": 2727, "categoryID": 31, "dataType": 5, "defaultValue": 16255.0, "description": "max visual size for asteroids to fit moon chunk", "displayWhenZero": 0, "highIsGood": 1, "name": "asteroidMaxRadius ", "published": 0, "stackable": 1, "unitID": 9 }, "2728": { "attributeID": 2728, "categoryID": 4, "dataType": 5, "defaultValue": 48.0, "description": "This attribute doesn't directly impact the asteroid decay, but is used to expose the decay time to the show-info window", "displayName_de": "Ungefähre Lebensdauer erschaffener Asteroiden", "displayName_en-us": "Approximate lifetime of spawned asteroids", "displayName_es": "Vida útil aproximada de asteroides generados", "displayName_fr": "Durée de vie approximative des astéroïdes créés", "displayName_it": "Approximate lifetime of spawned asteroids", "displayName_ja": "出現したアステロイドの推定残存時間", "displayName_ko": "신규 소행성의 생명력 근사값", "displayName_ru": "Приблизительный срок эксплуатации созданных астероидов", "displayName_zh": "生成的小行星的大约生命周期", "displayNameID": 317005, "displayWhenZero": 0, "highIsGood": 1, "name": "moonAsteroidDecayDisplayValue", "published": 1, "stackable": 1, "unitID": 129 }, "2729": { "attributeID": 2729, "categoryID": 7, "dataType": 1, "defaultValue": 0.0, "description": "Timestamp specifying when a module can next be activated", "displayWhenZero": 0, "highIsGood": 1, "name": "nextActivationTime", "published": 0, "stackable": 1, "unitID": 123 }, "2730": { "attributeID": 2730, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "BehaviorSiegeMissileDamageModifier", "published": 0, "stackable": 1, "unitID": 105 }, "2731": { "attributeID": 2731, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCovertOps4", "published": 0, "stackable": 1 }, "2732": { "attributeID": 2732, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "stealthBomberLauncherCPU", "published": 0, "stackable": 1 }, "2733": { "attributeID": 2733, "categoryID": 29, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schadensmultiplikatorbonus pro Zyklus", "displayName_en-us": "Damage Multiplier Bonus Per Cycle", "displayName_es": "Bonificación de multiplicador de daño por ciclo", "displayName_fr": "Bonus de multiplicateur de dégâts par cycle", "displayName_it": "Damage Multiplier Bonus Per Cycle", "displayName_ja": "サイクルあたりのダメージ乗数ボーナス", "displayName_ko": "사이클당 피해량 배수 보너스", "displayName_ru": "Увеличение множителя урона за цикл", "displayName_zh": "每循环伤害倍增系数加成", "displayNameID": 317056, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "damageMultiplierBonusPerCycle", "published": 1, "stackable": 1, "unitID": 127 }, "2734": { "attributeID": 2734, "categoryID": 29, "dataType": 5, "defaultValue": 0.5, "description": "", "displayName_de": "Maximaler Schadensmultiplikatorbonus", "displayName_en-us": "Maximum Damage Multiplier Bonus", "displayName_es": "Bonificación de multiplicador de daño máximo", "displayName_fr": "Bonus de multiplicateur de dégâts maximum", "displayName_it": "Maximum Damage Multiplier Bonus", "displayName_ja": "最大ダメージ乗数ボーナス", "displayName_ko": "최대 피해량 배수 보너스", "displayName_ru": "Максимальное увеличение множителя урона", "displayName_zh": "最大伤害系数加成", "displayNameID": 317057, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "damageMultiplierBonusMax", "published": 1, "stackable": 1, "unitID": 127 }, "2735": { "attributeID": 2735, "categoryID": 42, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcStructureStasisWebificationBonus", "published": 0, "stackable": 1, "unitID": 104 }, "2736": { "attributeID": 2736, "categoryID": 42, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "npcStructureEnergyWarfareBonus", "published": 0, "stackable": 1, "unitID": 104 }, "2737": { "attributeID": 2737, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Light Fighters the structure can launch.", "displayName_de": "Standup-Limit für Leichte Jägerstaffeln", "displayName_en-us": "Standup Light Fighter Squadron Limit", "displayName_es": "Límite de escuadrón de cazas ligeros Standup", "displayName_fr": "Limite d'escadrons de chasseurs légers Standup", "displayName_it": "Standup Light Fighter Squadron Limit", "displayName_ja": "スタンドアップ軽戦闘機分隊制限", "displayName_ko": "스탠드업 라이트 파이터 편대 제한", "displayName_ru": "Ограничение по отрядам лёгких истребителей", "displayName_zh": "屹立轻型铁骑舰载机中队限制", "displayNameID": 317097, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterStandupLightSlots", "published": 1, "stackable": 1 }, "2738": { "attributeID": 2738, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Support Fighters the structure can launch.", "displayName_de": "Standup-Limit für Unterstützungsjägerstaffeln", "displayName_en-us": "Standup Support Fighter Squadron Limit", "displayName_es": "Límite de escuadrón de cazas de apoyo Standup", "displayName_fr": "Limite d'escadrons de chasseurs de soutien Standup", "displayName_it": "Standup Support Fighter Squadron Limit", "displayName_ja": "スタンドアップサポート戦闘機分隊制限", "displayName_ko": "스탠드업 서포트 파이터 편대 제한", "displayName_ru": "Ограничение по отрядам истребителей поддержки", "displayName_zh": "屹立后勤铁骑舰载机中队限制", "displayNameID": 317098, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterStandupSupportSlots", "published": 1, "stackable": 1 }, "2739": { "attributeID": 2739, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "Number of Heavy Fighters the structure can launch.", "displayName_de": "Standup-Limit für Schwere Jägerstaffeln", "displayName_en-us": "Standup Heavy Fighter Squadrons Limit", "displayName_es": "Límite de escuadrón de cazas pesados Standup", "displayName_fr": "Limite d'escadrons de chasseurs lourds Standup", "displayName_it": "Standup Heavy Fighter Squadrons Limit", "displayName_ja": "スタンドアップ重戦闘機分隊制限", "displayName_ko": "스탠드업 헤비 파이터 편대 제한", "displayName_ru": "Ограничение по отрядам тяжёлых истребителей", "displayName_zh": "屹立重型铁骑舰载机中队限制", "displayNameID": 317099, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2987, "name": "fighterStandupHeavySlots", "published": 1, "stackable": 1 }, "2740": { "attributeID": 2740, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsStandupLight", "published": 0, "stackable": 1 }, "2741": { "attributeID": 2741, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsStandupSupport", "published": 0, "stackable": 1 }, "2742": { "attributeID": 2742, "categoryID": 38, "dataType": 4, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "fighterSquadronIsStandupHeavy", "published": 0, "stackable": 1 }, "2743": { "attributeID": 2743, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "structureFullPowerStateHitpointMultiplier", "published": 0, "stackable": 1 }, "2744": { "attributeID": 2744, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "This attribute is authored on structure service modules and when the service module is online will be used to overwrite a hitpoint multiplier attribute on the structure.", "displayName_de": "Schild im Modus „Volle Leistung“ und HP-Multiplikator für Panzerungen", "displayName_en-us": "Full Power Mode Shield and Armor Hitpoint Multiplier", "displayName_es": "Multiplicador de puntos de vida en blindaje y escudo en potencia máx.", "displayName_fr": "Multiplicateur de points de vie des boucliers et du blindage en mode performance énergétique", "displayName_it": "Full Power Mode Shield and Armor Hitpoint Multiplier", "displayName_ja": "フルパワーモード時のシールドとアーマーヒットポイントの乗数", "displayName_ko": "풀 파워 모드 실드 및 장갑 내구도 배수", "displayName_ru": "Щит в режиме полной мощности и коэффициент запаса прочности брони", "displayName_zh": "全能量模式护盾和装甲值系数", "displayNameID": 317693, "displayWhenZero": 0, "highIsGood": 1, "name": "serviceModuleFullPowerStateHitpointMultiplier", "published": 1, "stackable": 1, "tooltipDescription_de": "Wenn mindestens ein Dienstmodul auf einer Upwell-Struktur online ist, werden die HP seines Schilds und seiner Panzerung um diesen Faktor erhöht.", "tooltipDescription_en-us": "If at least one service module is online on an Upwell Structure, its shield and armor hitpoints will be increased by this factor", "tooltipDescription_es": "Si hay al menos un módulo de servicio en línea en una estructura de Upwell, los puntos de vida del escudo y del blindaje aumentarán el valor especificado.", "tooltipDescription_fr": "Si au moins un module de service est activé sur une structure Upwell, les points de vie de ses boucliers et de son blindage seront multipliés par ce facteur.", "tooltipDescription_it": "If at least one service module is online on an Upwell Structure, its shield and armor hitpoints will be increased by this factor", "tooltipDescription_ja": "アップウェルストラクチャで1つ以上のモジュールがオンラインになっている場合、シールドとアーマーのヒットポイントが上昇する", "tooltipDescription_ko": "업웰 구조물에서 최소한 한 개의 서비스 모듈이 온라인인 경우 그 실드 및 장갑 내구도가 이 계수에 따라 증가", "tooltipDescription_ru": "Если на сооружении консорциума «Апвел» есть хотя бы один работающий модуль технического обслуживания, эффективность щита и запас прочности брони будут увеличены на это значение.", "tooltipDescription_zh": "如果昇威建筑至少启用了一个服务装备,它的护盾和装甲值将按此系数增加", "tooltipDescriptionID": 317695, "tooltipTitleID": 317694, "unitID": 104 }, "2745": { "attributeID": 2745, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Длительность", "displayName_zh": "持续时间", "displayNameID": 317645, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationTargetWarpableBeacon", "published": 1, "stackable": 1, "unitID": 101 }, "2746": { "attributeID": 2746, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Schadensresistenz aktiviert", "displayName_en-us": "Activated Damage Resistance", "displayName_es": "Resistencia al daño activada", "displayName_fr": "Résistance aux dégâts activée", "displayName_it": "Activated Damage Resistance", "displayName_ja": "起動済みのダメージレジスタンス", "displayName_ko": "데미지 저항 활성화", "displayName_ru": "Активирована сопротивляемость урону", "displayName_zh": "已激活伤害抗性", "displayNameID": 317651, "displayWhenZero": 0, "highIsGood": 1, "name": "resistanceMultiplier", "published": 1, "stackable": 1, "unitID": 108 }, "2747": { "attributeID": 2747, "categoryID": 28, "dataType": 4, "defaultValue": 0.0, "description": "Percent bonus for Stasis Webifiers maximum range", "displayName_de": "Maximaler Reichweitenbonus von Stasisnetzen", "displayName_en-us": "Stasis Webifier Maximum Range Bonus", "displayName_es": "Bonificación de alcance máx. de red ralentizadora", "displayName_fr": "Bonus de portée max. du générateur de stase", "displayName_it": "Stasis Webifier Maximum Range Bonus", "displayName_ja": "ステイシスウェビファイヤーの最大範囲ボーナス", "displayName_ko": "스테이시스 웹 생성기 사거리 보너스", "displayName_ru": "Влияние на макс. дальность действия стазис-индуктора", "displayName_zh": "停滞缠绕光束最大范围加成", "displayNameID": 317685, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "stasisWebRangeBonus", "published": 1, "stackable": 1, "unitID": 121 }, "2748": { "attributeID": 2748, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Zielerfassungsreichweite-Bonus", "displayName_en-us": "Maximum Targeting Range Bonus", "displayName_es": "Bonificación de distancia-objetivo máx.", "displayName_fr": "Bonus de portée de ciblage maximale", "displayName_it": "Maximum Targeting Range Bonus", "displayName_ja": "最大ターゲット範囲ボーナス", "displayName_ko": "최대 타겟팅 거리 보너스", "displayName_ru": "Бонус максимальной дальности наведения", "displayName_zh": "最大锁定范围加成", "displayNameID": 317688, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "structureRigMaxTargetRangeBonus", "published": 1, "stackable": 0, "unitID": 105 }, "2749": { "attributeID": 2749, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die Feuerrate von Lenkbombenwerfern und Pulsprojektoren", "displayName_en-us": "Bonus to the Rate of Fire of Guided Bomb Launchers and Burst Projectors", "displayName_es": "Bonificación a la cadencia de tiro de lanzabombas guiados y proyectores de estallido", "displayName_fr": "Bonus à la cadence de tir des lanceurs de bombes ciblées et des projecteurs à salves", "displayName_it": "Bonus to the Rate of Fire of Guided Bomb Launchers and Burst Projectors", "displayName_ja": "誘導ボムランチャーとバーストプロジェクターの発射間隔へのボーナス", "displayName_ko": "유도 폭탄 런처와 버스트 프로젝터의 연사속도 보너스", "displayName_ru": "Бонус к скорострельности бомбометателей с системой наведения и проекторов объёмных помех", "displayName_zh": "制导炸弹发射器和脉冲波投射器的射速加成", "displayNameID": 317692, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1397, "name": "structureAoERoFRoleBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2750": { "attributeID": 2750, "categoryID": 30, "dataType": 5, "defaultValue": 1.0, "description": "Missile damage attribute used by structures as a workaround for implementing Standup BCS stacking penalties", "displayWhenZero": 0, "highIsGood": 1, "name": "hiddenMissileDamageMultiplier", "published": 0, "stackable": 0, "unitID": 104 }, "2751": { "attributeID": 2751, "categoryID": 3, "dataType": 5, "defaultValue": 1.0, "description": "Armor hitpoint attribute used by structures as a workaround for implementing Standup layered plating stacking penalties", "displayWhenZero": 0, "highIsGood": 1, "name": "hiddenArmorHPMultiplier", "published": 0, "stackable": 0, "unitID": 104 }, "2752": { "attributeID": 2752, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusFlagCruisers1", "published": 0, "stackable": 1 }, "2753": { "attributeID": 2753, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktion der Ausrüstungsvoraussetzungen für AB, MWD, MJD", "displayName_en-us": "Reduction in AB, MWD, MJD fitting requirements", "displayName_es": "Reducción de requisitos de equipamiento de PQ, MMC, MMS", "displayName_fr": "Abaissement des prérequis de montage de la PC, du PMW et du PMS", "displayName_it": "Reduction in AB, MWD, MJD fitting requirements", "displayName_ja": "アフターバーナーやマイクロワープドライブ、マイクロジャンプドライブの装備要件軽減", "displayName_ko": "AB, MWD, MJD 피팅 요구량 감소", "displayName_ru": "Уменьшение нагрузки двигательных установок на ЦП/реактор", "displayName_zh": "加力燃烧器、微型跃迁推进器和微型跳跃引擎装配需求降低", "displayNameID": 317707, "displayWhenZero": 0, "highIsGood": 1, "iconID": 70, "name": "flagCruiserFittingBonusPropMods", "published": 1, "stackable": 1, "unitID": 105 }, "2754": { "attributeID": 2754, "categoryID": 36, "dataType": 5, "defaultValue": 1.0, "description": "", "displayName_de": "Entosis-Unterstützungsimpedanz", "displayName_en-us": "Entosis Assistance Impedance", "displayName_es": "Impedancia de asistencia de entosis", "displayName_fr": "Impédance de l'assistance Entosis", "displayName_it": "Entosis Assistance Impedance", "displayName_ja": "エントーシスアシスタントインピーダンス", "displayName_ko": "엔토시스 지원 임피던스", "displayName_ru": "Ослабление получаемой поддержки из-за энтоза", "displayName_zh": "侵噬链接协助阻抗", "displayNameID": 317711, "displayWhenZero": 0, "highIsGood": 0, "name": "entosisAssistanceImpedanceMultiplier", "published": 1, "stackable": 1, "tooltipDescription_de": "Unterstützungsimpedanz bei aktivem Entosis-Netzwerk", "tooltipDescription_en-us": "Assistance Impedance while running an Entosis Link", "tooltipDescription_es": "Impedancia de asistencia al usar un enlace de entosis.", "tooltipDescription_fr": "Impédance de l'assistance lors de l'exploitation d'une liaison Entosis", "tooltipDescription_it": "Assistance Impedance while running an Entosis Link", "tooltipDescription_ja": "エントーシスリンク起動時のアシスタントインピーダンス", "tooltipDescription_ko": "엔토시스 링크 작동 중 지원 임피던스", "tooltipDescription_ru": "Во время работы энтоз-передатчика возможности поддержки ограничены", "tooltipDescription_zh": "使用侵噬链接时的协助阻抗", "tooltipDescriptionID": 317734, "tooltipTitleID": 317733, "unitID": 108 }, "2755": { "attributeID": 2755, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Stärkeanpassung der Zielmarkierung", "displayName_en-us": "Modification of Target Painter strength", "displayName_es": "Modificación de la intensidad del revelador de objetivo", "displayName_fr": "Modification de la force du marqueur de cible", "displayName_it": "Modification of Target Painter strength", "displayName_ja": "ターゲットペインターの強度修正値", "displayName_ko": "타겟 페인터 강도 조정", "displayName_ru": "Изменение эффективности подсветки целей", "displayName_zh": "目标标记装置强度调整", "displayNameID": 317715, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "targetPainterStrengthModifierFlagCruisers", "published": 1, "stackable": 1, "unitID": 105 }, "2756": { "attributeID": 2756, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf die optimale Reichweite der Zielmarkierung", "displayName_en-us": "Bonus to Target Painter optimal range", "displayName_es": "Bonificación al alcance óptimo del revelador de objetivo", "displayName_fr": "Bonus à la portée optimale du marqueur de cible", "displayName_it": "Bonus to Target Painter optimal range", "displayName_ja": "ターゲットペインターの最適射程距離へのボーナス", "displayName_ko": "타겟 페인터 최적사거리 보너스", "displayName_ru": "Увеличение оптимальной дальности подсветки целей", "displayName_zh": "目标标记装置最佳射程加成", "displayNameID": 317716, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "targetPainterRangeModifierFlagCruisers", "published": 1, "stackable": 1, "unitID": 105 }, "2757": { "attributeID": 2757, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verringerung der Ausrüstungsanforderungen für Zielmarkierung und Scansondenwerfer", "displayName_en-us": "Reduction in Target Painter and Scan Probe Launcher fitting requirements", "displayName_es": "Reducción de los requisitos de equipamiento para el revelador de objetivo y el lanzasondas de escaneo", "displayName_fr": "Réduction des prérequis de montage du marqueur de cible et du lanceur de sonde", "displayName_it": "Reduction in Target Painter and Scan Probe Launcher fitting requirements", "displayName_ja": "ターゲットペインターとスキャンプローブランチャーの装備要件軽減", "displayName_ko": "타켓 지시기 및 스캔 프로브 런처 피팅 요구조건 감소", "displayName_ru": "Уменьшение нагрузки систем подсветки и ПУ разведзондов на ЦП/реактор", "displayName_zh": "目标标记装置和扫描探针发射器装配需求降低", "displayNameID": 317717, "displayWhenZero": 0, "highIsGood": 1, "iconID": 70, "name": "flagCruiserFittingBonusPainterProbes", "published": 1, "stackable": 1, "unitID": 105 }, "2758": { "attributeID": 2758, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "", "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar en", "displayName_fr": "Peut être équipé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装備可能:", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 317722, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType11", "published": 1, "stackable": 1, "unitID": 116 }, "2759": { "attributeID": 2759, "categoryID": 7, "dataType": 4, "defaultValue": -1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "typeListId", "published": 0, "stackable": 1 }, "2760": { "attributeID": 2760, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "sets the weather effect type for abyssal deadspace keys", "displayName_de": "Abgrundumgebung", "displayName_en-us": "Abyssal Environment", "displayName_es": "Ambiente abisal", "displayName_fr": "Environnement abyssal", "displayName_it": "Abyssal Environment", "displayName_ja": "アビサル環境", "displayName_ko": "어비설 환경", "displayName_ru": "Пространство бездны", "displayName_zh": "深渊环境", "displayNameID": 317898, "displayWhenZero": 0, "highIsGood": 1, "name": "weatherID", "published": 1, "stackable": 1, "unitID": 116 }, "2761": { "attributeID": 2761, "categoryID": 7, "dataType": 1, "defaultValue": 1.0, "description": "sets the difficulty tier for abyssal deadspace keys", "displayName_de": "Schwierigkeitsrang", "displayName_en-us": "Difficulty Tier", "displayName_es": "Nivel de dificultad", "displayName_fr": "Niveau de difficulté", "displayName_it": "Difficulty Tier", "displayName_ja": "難易度", "displayName_ko": "난이도 티어", "displayName_ru": "Класс сложности", "displayName_zh": "难度等级", "displayNameID": 317897, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2893, "name": "difficultyTier", "published": 1, "stackable": 1, "tooltipDescription_de": "Schwierigkeitsrang", "tooltipDescription_en-us": "Difficulty Tier", "tooltipDescription_es": "Nivel de dificultad", "tooltipDescription_fr": "Niveau de difficulté", "tooltipDescription_it": "Difficulty Tier", "tooltipDescription_ja": "難易度", "tooltipDescription_ko": "난이도 티어", "tooltipDescription_ru": "Класс сложности", "tooltipDescription_zh": "难度等级", "tooltipDescriptionID": 317914, "tooltipTitleID": 317913 }, "2762": { "attributeID": 2762, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317757, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPF1", "published": 1, "stackable": 1, "unitID": 105 }, "2763": { "attributeID": 2763, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317758, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPF2", "published": 1, "stackable": 1, "unitID": 105 }, "2764": { "attributeID": 2764, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317759, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPC1", "published": 1, "stackable": 1, "unitID": 105 }, "2765": { "attributeID": 2765, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317760, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPC2", "published": 1, "stackable": 1, "unitID": 105 }, "2766": { "attributeID": 2766, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317761, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPBS1", "published": 1, "stackable": 1, "unitID": 105 }, "2767": { "attributeID": 2767, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Классовый бонус", "displayName_zh": "特殊能力加成", "displayNameID": 317762, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPBS2", "published": 1, "stackable": 1, "unitID": 105 }, "2768": { "attributeID": 2768, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "emDamageResonanceMax", "published": 0, "stackable": 1 }, "2769": { "attributeID": 2769, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "thermalDamageResonanceMax", "published": 0, "stackable": 1 }, "2770": { "attributeID": 2770, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "kineticDamageResonanceMax", "published": 0, "stackable": 1 }, "2771": { "attributeID": 2771, "categoryID": 4, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "explosiveDamageResonanceMax", "published": 0, "stackable": 1 }, "2772": { "attributeID": 2772, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf alle HP und die Energiespeicherkapazität", "displayName_en-us": "Bonus to all hitpoints and capacitor capacity", "displayName_es": "Bonificación a todos los puntos de vida y capacidad del condensador", "displayName_fr": "Augmente tous les PV et la capacité du capaciteur", "displayName_it": "Bonus to all hitpoints and capacitor capacity", "displayName_ja": "全てのヒットポイントとキャパシタ容量へのボーナス", "displayName_ko": "전체 내구도 및 캐패시터 적재량 보너스", "displayName_ru": "Бонус к общей прочности и объёму накопителя", "displayName_zh": "护盾、装甲、结构值和电容量加成", "displayNameID": 317877, "displayWhenZero": 0, "highIsGood": 1, "name": "conversionRigHPCapBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2773": { "attributeID": 2773, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für die Fertigung von T-1-Schiffen", "displayName_en-us": "Bonus to T1 Ship Manufacturing Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de fabricación de naves T1", "displayName_fr": "Bonus de productivité horaire pour les tâches de production de vaisseaux T1", "displayName_it": "Bonus to T1 Ship Manufacturing Job Time Requirements", "displayName_ja": "T1艦船製造ジョブの必要時間へのボーナス", "displayName_ko": "테크 I 함선 제조 작업 시간효율성 보너스", "displayName_ru": "Снижение расхода времени на производство кораблей первой техкатегории", "displayName_zh": "一级科技舰船制造项目时间需求加成", "displayNameID": 317878, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeT1ShipManufactureTime", "published": 1, "stackable": 1, "unitID": 105 }, "2774": { "attributeID": 2774, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für die Fertigung von T-2-Schiffen", "displayName_en-us": "Bonus to T2 Ship Manufacturing Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de fabricación de naves T2", "displayName_fr": "Bonus de temps requis pour les tâches de production de vaisseaux T2", "displayName_it": "Bonus to T2 Ship Manufacturing Job Time Requirements", "displayName_ja": "T2艦船製造ジョブの必要時間へのボーナス", "displayName_ko": "테크 II 함선 제조 작업 시간효율성 보너스", "displayName_ru": "Снижение расхода времени на производство кораблей второй техкатегории", "displayName_zh": "二级科技舰船制造项目时间需求加成", "displayNameID": 317879, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeT2ShipManufactureTime", "published": 1, "stackable": 1, "unitID": 105 }, "2775": { "attributeID": 2775, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für die Fertigung fortschrittlicher Komponenten", "displayName_en-us": "Bonus to Advanced Component Manufacturing Job Time Requirements", "displayName_es": "Bonif. de requisitos de tiempo de fabricación de componentes avanzados", "displayName_fr": "Bonus de productivité horaire pour les tâches de production de composants avancés", "displayName_it": "Bonus to Advanced Component Manufacturing Job Time Requirements", "displayName_ja": "高性能部品製造ジョブの必要時間へのボーナス", "displayName_ko": "상급 부품 제조 작업 시간효율성 보너스", "displayName_ru": "Снижение расхода времени на производство усовершенствованных компонентов", "displayName_zh": "高级组件制造项目时间需求加成", "displayNameID": 317880, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeAdvCompManufactureTime", "published": 1, "stackable": 1, "unitID": 105 }, "2776": { "attributeID": 2776, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für die Fertigung von Capital-Komponenten", "displayName_en-us": "Bonus to Capital Component Manufacturing Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de fabricación de componentes capitales", "displayName_fr": "Bonus de productivité horaire pour les tâches de production de composants capitaux", "displayName_it": "Bonus to Capital Component Manufacturing Job Time Requirements", "displayName_ja": "キャピタル部品製造ジョブの必要時間へのボーナス", "displayName_ko": "캐피탈 부품 제조 작업 시간효율성 보너스", "displayName_ru": "Снижение расхода времени на производство флагманских компонентов", "displayName_zh": "旗舰组件制造项目时间需求加成", "displayNameID": 317881, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeCapCompManufactureTime", "published": 1, "stackable": 1, "unitID": 105 }, "2777": { "attributeID": 2777, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für die Fertigung von Ausrüstung", "displayName_en-us": "Bonus to Equipment Manufacturing Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de fabricación de equipo", "displayName_fr": "Bonus de productivité horaire pour les tâches de production d'équipement", "displayName_it": "Bonus to Equipment Manufacturing Job Time Requirements", "displayName_ja": "装備製造ジョブの必要時間へのボーナス", "displayName_ko": "장비 제조 작업 시간효율성 보너스", "displayName_ru": "Снижение расхода времени на производство оборудования", "displayName_zh": "装备制造项目时间需求加成", "displayNameID": 317882, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeEquipmentManufactureTime", "published": 1, "stackable": 1, "unitID": 105 }, "2778": { "attributeID": 2778, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für ME-Forschungsauftrag", "displayName_en-us": "Bonus to ME Research Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de investigación de EM", "displayName_fr": "Bonus de productivité horaire pour les missions de recherche en ME", "displayName_it": "Bonus to ME Research Job Time Requirements", "displayName_ja": "ME研究ジョブの必要時間へのボーナス", "displayName_ko": "ME 연구 작업 시간 요구 조건 보너스", "displayName_ru": "Снижение расхода времени на исследования материалоэффективности", "displayName_zh": "材料效率研究项目时间需求加成", "displayNameID": 317883, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeMEResearchTime", "published": 1, "stackable": 1, "unitID": 105 }, "2779": { "attributeID": 2779, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für ZE-Forschungsauftrag", "displayName_en-us": "Bonus to TE Research Job Time Requirements", "displayName_es": "Bonificación a los requisitos de tiempo de trabajos de investigación de ET", "displayName_fr": "Bonus de productivité horaire pour les missions de recherche en TE", "displayName_it": "Bonus to TE Research Job Time Requirements", "displayName_ja": "TE研究ジョブの必要時間へのボーナス", "displayName_ko": "TE 연구 작업 시간 요구 조건 보너스", "displayName_ru": "Снижение расхода времени на исследования по повышению скорости производства", "displayName_zh": "时间效率研究项目时间需求加成", "displayNameID": 317884, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeTEResearchTime", "published": 1, "stackable": 1, "unitID": 105 }, "2780": { "attributeID": 2780, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für Blaupausenkopieauftrag", "displayName_en-us": "Bonus to Blueprint Copy Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo de la copia de planos", "displayName_fr": "Bonus de productivité horaire pour les missions de copies de plan de construction", "displayName_it": "Bonus to Blueprint Copy Job Time Requirements", "displayName_ja": "ブループリントコピージョブの必要時間へのボーナス", "displayName_ko": "블루프린트 복제 작업 시간 요구 조건 보너스", "displayName_ru": "Снижение расхода времени на создание копии чертежа", "displayName_zh": "蓝图拷贝项目时间需求加成", "displayNameID": 317885, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeCopyTime", "published": 1, "stackable": 1, "unitID": 105 }, "2781": { "attributeID": 2781, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Bonus auf Zeitanforderungen für Erfindungsauftrag", "displayName_en-us": "Bonus to Invention Job Time Requirements", "displayName_es": "Bonificación de requisitos de tiempo en invenciones", "displayName_fr": "Bonus de productivité horaire pour les missions d'invention", "displayName_it": "Bonus to Invention Job Time Requirements", "displayName_ja": "発明ジョブの必要時間へのボーナス", "displayName_ko": "인벤션 작업 시간 요구 조건 보너스", "displayName_ru": "Снижение расхода времени на создание изобретения", "displayName_zh": "发明项目时间需求加成", "displayNameID": 317886, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeInventionTime", "published": 1, "stackable": 1, "unitID": 105 }, "2782": { "attributeID": 2782, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktion der ISK-Kosten für ME- und ZE- sowie Kopieauftrag", "displayName_en-us": "Reduction in ME, TE, and Copy Job ISK Costs", "displayName_es": "Reducc. de costes en ISK en trabajos de EM, ET y copias", "displayName_fr": "Réduction des coûts en ISK pour les missions de recherche en ME et en TE et les missions de copie de plans", "displayName_it": "Reduction in ME, TE, and Copy Job ISK Costs", "displayName_ja": "MEやTE、コピージョブにおけるISKコストの削減", "displayName_ko": "ME, TE 및 복제 작업 ISK 비용 감소", "displayName_ru": "Снижение расхода ISK на создание копий, исследования по повышению скорости производства и материалоэффективности", "displayName_zh": "材料效率研究、时间效率研究和拷贝项目星币花费降低", "displayNameID": 317887, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeResearchCosts", "published": 1, "stackable": 1, "unitID": 105 }, "2783": { "attributeID": 2783, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reduktion der ISK-Kosten für Erfindungsauftrag", "displayName_en-us": "Reduction in Invention Job ISK Costs", "displayName_es": "Reducc. de costes en ISK en trabajos de invención", "displayName_fr": "Réduction des coûts en ISK pour les missions d'invention", "displayName_it": "Reduction in Invention Job ISK Costs", "displayName_ja": "発明ジョブにおけるISKコストの削減", "displayName_ko": "인벤션 작업 ISK 비용 감소", "displayName_ru": "Снижение расхода ISK на создание изобретений", "displayName_zh": "发明项目星币花费降低", "displayNameID": 317888, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "attributeInventionCosts", "published": 1, "stackable": 1, "unitID": 105 }, "2784": { "attributeID": 2784, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "This is the total number of Drones that the Entity has in it's cargo hold ready to be deployed. Once it has deployed this many drones, then it no longer has any more.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcDroneCapacity", "published": 0, "stackable": 1 }, "2785": { "attributeID": 2785, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "This is the total number of Drones controlled by this Entity that can be active in space at any given time.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcDroneBandwidth", "published": 0, "stackable": 1 }, "2786": { "attributeID": 2786, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "Used by Behavior NPCs to work out minimum orbit range. If the npc has an effect with a shorter range, it will use the effects range instead.", "displayWhenZero": 0, "highIsGood": 1, "name": "npcBehaviorMaximumCombatOrbitRange", "published": 0, "stackable": 1 }, "2787": { "attributeID": 2787, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is used to connect the alliance logos to the monuments that were placed as part of the outpost and conquerable station phaseout process in 2018", "displayWhenZero": 0, "highIsGood": 1, "name": "monumentAllianceID", "published": 0, "stackable": 1 }, "2788": { "attributeID": 2788, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Dauer", "displayName_en-us": "Duration", "displayName_es": "Duración", "displayName_fr": "Durée", "displayName_it": "Duration", "displayName_ja": "持続時間", "displayName_ko": "지속시간", "displayName_ru": "Время цикла", "displayName_zh": "持续时间", "displayNameID": 317981, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "panicDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2789": { "attributeID": 2789, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Warpgeschwindigkeits- und Beschleunigungsbonus", "displayName_en-us": "Warp Speed and Acceleration Bonus", "displayName_es": "Bonificación de aceleración y velocidad de warp", "displayName_fr": "Bonus à la vitesse de warp et à l'accélération de warp", "displayName_it": "Warp Speed and Acceleration Bonus", "displayName_ja": "ワープ速度と加速度ボーナス", "displayName_ko": "위프 속도 및 가속도 보너스", "displayName_ru": "Бонус к скорости хода и разгона в варп-режиме", "displayName_zh": "跃迁速度和加速加成", "displayNameID": 317982, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusWarpSpeed", "published": 1, "stackable": 1, "unitID": 105 }, "2790": { "attributeID": 2790, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Distance which players can deposit cargo into a structure", "displayName_de": "Maximale Frachtdepot-Reichweite", "displayName_en-us": "Maximum cargo deposit range", "displayName_es": "Alcance máx. del depósito de carga", "displayName_fr": "Portée maximale de la soute", "displayName_it": "Maximum cargo deposit range", "displayName_ja": "カーゴデポジットの最大範囲", "displayName_ko": "최대 화물 적재 거리", "displayName_ru": "Максимальная дальность действия хранилища грузов", "displayName_zh": "最大货柜存放距离", "displayNameID": 317983, "displayWhenZero": 0, "highIsGood": 1, "name": "cargoDeliveryRange", "published": 1, "stackable": 1, "unitID": 1 }, "2791": { "attributeID": 2791, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "", "displayName_de": "Kann nicht entfernt werden", "displayName_en-us": "Cannot be Unfit", "displayName_es": "No se puede desequipar.", "displayName_fr": "Ne peut être démonté", "displayName_it": "Cannot be Unfit", "displayName_ja": "取り外せません", "displayName_ko": "피팅 해제 불가능", "displayName_ru": "Нельзя демонтировать", "displayName_zh": "不能卸载", "displayNameID": 317984, "displayWhenZero": 0, "highIsGood": 1, "name": "cannotBeUnfit", "published": 1, "stackable": 1, "unitID": 137 }, "2792": { "attributeID": 2792, "categoryID": 4, "dataType": 11, "defaultValue": 0.0, "description": "Module type ID to pre-fit into service slot 0", "displayWhenZero": 0, "highIsGood": 1, "name": "preFitServiceSlot0", "published": 0, "stackable": 1 }, "2793": { "attributeID": 2793, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Additional units of fuel that are consumed on each jump through a jump portal, not subject to any of the mass or distance multipliers", "displayName_de": "Treibstoffverbrauch für Sprungportal hinzugefügt", "displayName_en-us": "Added Jump Portal Fuel Consumption", "displayName_es": "Consumo de combustible de portal de salto adicional", "displayName_fr": "Consommation de carburant supplémentaire par portail sauté", "displayName_it": "Added Jump Portal Fuel Consumption", "displayName_ja": "追加のジャンプポータル燃料消費量", "displayName_ko": "추가된 점프 포털 연료 소모량", "displayName_ru": "Дополнительный расход топлива в гиперпорталах", "displayName_zh": "额外跳跃通道燃料消耗", "displayNameID": 318003, "displayWhenZero": 0, "highIsGood": 1, "name": "jumpPortalAdditionalConsumption", "published": 0, "stackable": 1, "tooltipDescription_de": "Die Menge an zusätzlichem Treibstoff, die mit jedem Sprung verbraucht wird", "tooltipDescription_en-us": "The amount of additional fuel consumed with each jump", "tooltipDescription_es": "La cantidad de combustible adicional que se consume con cada salto.", "tooltipDescription_fr": "La quantité de carburant supplémentaire consommé à chaque saut", "tooltipDescription_it": "The amount of additional fuel consumed with each jump", "tooltipDescription_ja": "ジャンプごとの追加燃料消費量", "tooltipDescription_ko": "각각의 점프에 추가적으로 소모되는 연료량", "tooltipDescription_ru": "Количество дополнительного топлива, расходуемого на каждый прыжок", "tooltipDescription_zh": "每次跳跃额外消耗的燃料数量", "tooltipDescriptionID": 318005, "tooltipTitleID": 318004, "unitID": 138 }, "2794": { "attributeID": 2794, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungsverzögerung", "displayName_en-us": "Activation Delay", "displayName_es": "Demora de activación", "displayName_fr": "Retard de l'activation", "displayName_it": "Activation Delay", "displayName_ja": "起動ディレイ", "displayName_ko": "작동 준비 시간", "displayName_ru": "Задержка перед активацией", "displayName_zh": "激活延迟", "displayNameID": 318006, "displayWhenZero": 0, "highIsGood": 1, "name": "cynoJammerActivationDelay", "published": 1, "stackable": 1, "unitID": 3 }, "2795": { "attributeID": 2795, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Aktivierungsverzögerung", "displayName_en-us": "Activation Delay", "displayName_es": "Demora de activación", "displayName_fr": "Retard de l'activation", "displayName_it": "Activation Delay", "displayName_ja": "起動遅延", "displayName_ko": "작동 준비 시간", "displayName_ru": "Задержка перед активацией", "displayName_zh": "激活延迟", "displayNameID": 318007, "displayWhenZero": 0, "highIsGood": 1, "name": "cynoJammerActivationDelay", "published": 1, "stackable": 1, "unitID": 101 }, "2796": { "attributeID": 2796, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Reparaturmultiplikatorbonus pro Zyklus", "displayName_en-us": "Repair Multiplier Bonus Per Cycle", "displayName_es": "Bonificación de multiplicador de reparación por ciclo", "displayName_fr": "Bonus de multiplicateur de réparations par cycle", "displayName_it": "Repair Multiplier Bonus Per Cycle", "displayName_ja": "サイクルあたりのリペア乗数ボーナス", "displayName_ko": "사이클당 수리량 배수 보너스", "displayName_ru": "Увеличение множителя эффективности ремонта за цикл", "displayName_zh": "每循环维修倍增系数加成", "displayNameID": 318013, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "repairMultiplierBonusPerCycle", "published": 1, "stackable": 1, "unitID": 127 }, "2797": { "attributeID": 2797, "categoryID": 20, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximaler Reparaturmultiplikatorbonus", "displayName_en-us": "Maximum Repair Multiplier Bonus", "displayName_es": "Bonificación máx. de multiplicador de reparación", "displayName_fr": "Bonus de multiplicateur de réparations maximum", "displayName_it": "Maximum Repair Multiplier Bonus", "displayName_ja": "最大リペア乗数ボーナス", "displayName_ko": "최대 수리량 배수 보너스", "displayName_ru": "Максимальное увеличение множителя эффективности ремонта", "displayName_zh": "最大维修倍增系数加成", "displayNameID": 318012, "displayWhenZero": 0, "highIsGood": 1, "iconID": 80, "name": "repairMultiplierBonusMax", "published": 1, "stackable": 1, "unitID": 127 }, "2798": { "attributeID": 2798, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Maximale Sprungmasse", "displayName_en-us": "Maximum Jump Mass", "displayName_es": "Masa máx. de salto", "displayName_fr": "Masse de saut maximum", "displayName_it": "Maximum Jump Mass", "displayName_ja": "最大ジャンプ質量", "displayName_ko": "최대 점프 질량", "displayName_ru": "Максимальная масса для гиперпрыжка", "displayName_zh": "最大跳跃质量", "displayNameID": 318014, "displayWhenZero": 0, "highIsGood": 1, "name": "gateMaxJumpMass", "published": 1, "stackable": 1, "unitID": 2 }, "2799": { "attributeID": 2799, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Precursor Destroyer Skill Attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPD1", "published": 1, "stackable": 1, "unitID": 105 }, "2800": { "attributeID": 2800, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Precursor Destroyer Skill Attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPD2", "published": 1, "stackable": 1, "unitID": 105 }, "2801": { "attributeID": 2801, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Precursor Battlecruiser Skill Attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPBC1", "published": 1, "stackable": 1, "unitID": 105 }, "2802": { "attributeID": 2802, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Precursor Battlecruiser Skill Attribute", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPBC2", "published": 1, "stackable": 1, "unitID": 105 }, "2803": { "attributeID": 2803, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Sets how much ore gets mined", "displayName_de": "Bergbauertrag", "displayName_en-us": "Mining amount", "displayName_es": "Cantidad extraída", "displayName_fr": "Minerai extrait", "displayName_it": "Mining amount", "displayName_ja": "採掘量", "displayName_ko": "채굴 총량", "displayName_ru": "Объём добычи", "displayName_zh": "开采量", "displayNameID": 318019, "displayWhenZero": 0, "highIsGood": 1, "name": "miningAmountSet", "published": 1, "stackable": 1, "unitID": 9 }, "2804": { "attributeID": 2804, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "serviceModuleFullPowerStateArmorPlatingMultiplier", "published": 0, "stackable": 1 }, "2805": { "attributeID": 2805, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "structurePowerStateArmorPlatingMultiplier", "published": 0, "stackable": 1 }, "2806": { "attributeID": 2806, "categoryID": 7, "dataType": 4, "defaultValue": 1.0, "description": "Attribute defining usage count for penaltyless skill injections", "displayName_de": "Skill-Injektionen ohne Abzug möglich", "displayName_en-us": "Penaltyless Skill Injections Allowed", "displayName_es": "Inyecciones de habilidades sin penalización permitidas", "displayName_fr": "Injections de compétence autorisées sans pénalité", "displayName_it": "Penaltyless Skill Injections Allowed", "displayName_ja": "ペナルティレススキルインジェクションの許可数", "displayName_ko": "페널티 없이 스킬 주입 가능", "displayName_ru": "Разрешено использование СП-инъекторов без снижения эффективности", "displayName_zh": "可不受技能惩罚地使用注射器的数量", "displayNameID": 318063, "displayWhenZero": 0, "highIsGood": 1, "name": "NonDiminishingSkillInjectorUses", "published": 1, "stackable": 1 }, "2807": { "attributeID": 2807, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verringerte Verzögerung für erneute Aktivierung", "displayName_en-us": "Reactivation Delay Reduction", "displayName_es": "Reducción de la demora de reactivación", "displayName_fr": "Réduction du délai de réactivation", "displayName_it": "Reactivation Delay Reduction", "displayName_ja": "再起動遅延の減少", "displayName_ko": "재작동 준비 시간 감소", "displayName_ru": "Уменьшение задержки перед повторной активацией", "displayName_zh": "重启延时降低", "displayNameID": 318064, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "reactivationDelayBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2808": { "attributeID": 2808, "categoryID": 7, "dataType": 2, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "TotalArmorRepairOnTarget", "published": 1, "stackable": 1 }, "2809": { "attributeID": 2809, "dataType": 2, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "TotalShieldRepairOnTarget", "published": 1, "stackable": 1 }, "2810": { "attributeID": 2810, "dataType": 2, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "TotalHullRepairOnTarget", "published": 1, "stackable": 1 }, "2811": { "attributeID": 2811, "dataType": 2, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "TotalCapTransferOnTarget", "published": 1, "stackable": 1 }, "2812": { "attributeID": 2812, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "Duration of npcBehaviorSmartBombDuration effect", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorSmartBombDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2814": { "attributeID": 2814, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "The capacitor discharge for the npcBehaviorSmartBomb effect", "displayWhenZero": 0, "highIsGood": 0, "name": "behaviorSmartBombDischarge", "published": 1, "stackable": 1, "unitID": 114 }, "2815": { "attributeID": 2815, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "The capacitor discharge amount for the npcBehaviorMicroJumpAttackDischarge effect", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroJumpAttackDischarge", "published": 1, "stackable": 1, "unitID": 114 }, "2816": { "attributeID": 2816, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "The range in meters for the npcBehaviorMicroJumpAttackRange effect", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroJumpAttackRange", "published": 1, "stackable": 1, "unitID": 1 }, "2818": { "attributeID": 2818, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "The length of the jump induced by the npcBehaviorMicroJumpAttack effect in meters", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroJumpAttackJumpDistance", "published": 1, "stackable": 1, "unitID": 1 }, "2819": { "attributeID": 2819, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "description": "The duration of the npcBehaviorMicroJumpAttack effect from the time the effect is activated on a ship, until the ship jumps", "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorMicroJumpAttackDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2820": { "attributeID": 2820, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to HAW turret damage", "displayName_de": "Schadensbonus auf extrem schwenkbare Geschützturme", "displayName_en-us": "High Angle Turret Damage Bonus", "displayName_es": "Bonif. de daño de torreta de ángulo alto", "displayName_fr": "Bonus de dégâts des tourelles à tir incliné", "displayName_it": "High Angle Turret Damage Bonus", "displayName_ja": "高角度タレットダメージボーナス", "displayName_ko": "고각 터렛 피해 보너스", "displayName_ru": "Увеличение урона от зенитных турелей", "displayName_zh": "高角炮台伤害加成", "displayNameID": 318080, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1432, "name": "siegeHAWTurretDamageBonus", "published": 1, "stackable": 1, "unitID": 104 }, "2821": { "attributeID": 2821, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to HAW Missile Launcher Rate of Fire", "displayName_de": "Bonus auf schnelle Torpedowerfer", "displayName_en-us": "Rapid Torpedo Launcher Bonus", "displayName_es": "Bonificación del lanzatorpedos rápido", "displayName_fr": "Bonus de rapidité des lance-torpilles", "displayName_it": "Rapid Torpedo Launcher Bonus", "displayName_ja": "ラピッドトルピードランチャーボーナス", "displayName_ko": "급속 토피도 발사기 보너스", "displayName_ru": "Улучшение пусковой установки скорострельных торпед", "displayName_zh": "快速鱼雷发射器加成", "displayNameID": 318079, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "siegeHAWMissileROFBonus", "published": 1, "stackable": 1, "unitID": 105 }, "2822": { "attributeID": 2822, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Length of jam duration", "displayName_de": "Störungsdauer", "displayName_en-us": "Jam Duration", "displayName_es": "Duración de perturbación", "displayName_fr": "Durée du brouillage", "displayName_it": "Jam Duration", "displayName_ja": "ジャミング持続時間", "displayName_ko": "재밍 지속시간", "displayName_ru": "Продолжительность помех", "displayName_zh": "干扰持续时间", "displayNameID": 318103, "displayWhenZero": 0, "highIsGood": 1, "name": "ecmJamDuration", "published": 1, "stackable": 1, "unitID": 101 }, "2823": { "attributeID": 2823, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "Modifier for damageMultiplierBonusMax used by Triglavians", "displayName_de": "Maximaler Schadensbonusmultiplikator-Modifier", "displayName_en-us": "Maximum Damage Bonus Multiplier Modifier", "displayName_es": "Modificador de multiplicador de bonificación de daño máx.", "displayName_fr": "Modificateur de multiplicateur de bonus de dégâts maximum", "displayName_it": "Maximum Damage Bonus Multiplier Modifier", "displayName_ja": "最大ダメージボーナス乗数モディファイヤー", "displayName_ko": "최대 피해량 보너스 계수", "displayName_ru": "Модификатор множителя бонуса максимального урона", "displayName_zh": "最大伤害加成系数调整", "displayNameID": 318123, "displayWhenZero": 0, "highIsGood": 1, "name": "damageMultiplierBonusMaxModifier", "published": 1, "stackable": 1, "unitID": 105 }, "2824": { "attributeID": 2824, "categoryID": 29, "dataType": 5, "defaultValue": 1.0, "description": "Modifier for Triglavian ramp-up value", "displayName_de": "Schadensmultiplikatorbonus pro Zyklus-Modifier", "displayName_en-us": "Damage Multiplier Bonus Per Cycle Modifier", "displayName_es": "Bonif. de multiplicador de daño por modificador de ciclo", "displayName_fr": "Modificateur de bonus de multiplicateur de dégâts par cycle", "displayName_it": "Damage Multiplier Bonus Per Cycle Modifier", "displayName_ja": "サイクルモディファイヤーあたりのダメージ乗数ボーナス", "displayName_ko": "사이클 계수에 따른 피해량 보너스", "displayName_ru": "Модификатор бонуса к множителю урона за цикл", "displayName_zh": "每循环伤害系数加成调整", "displayNameID": 318124, "displayWhenZero": 0, "highIsGood": 1, "name": "damageMultiplierBonusPerCycleModifier", "published": 1, "stackable": 1, "unitID": 105 }, "2825": { "attributeID": 2825, "categoryID": 7, "dataType": 0, "defaultValue": 1.0, "description": "", "displayName_de": "Implantatsetbonus", "displayName_en-us": "Implant Set Bonus", "displayName_es": "Bonificación de conjunto de implantes", "displayName_fr": "Bonus de l'ensemble Implant", "displayName_it": "Implant Set Bonus", "displayName_ja": "インプラントセットボーナス", "displayName_ko": "임플란트 세트 보너스", "displayName_ru": "Бонус комплекта имплантатов", "displayName_zh": "植入体套装加成", "displayNameID": 318125, "displayWhenZero": 0, "highIsGood": 1, "name": "setBonusMimesis", "published": 1, "stackable": 1, "unitID": 104 }, "2826": { "attributeID": 2826, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "", "displayName_de": "Verwendet industrielle Anziehungsfeld-Technologie", "displayName_en-us": "Uses Industrial Cynosural Field Technology", "displayName_es": "Usa tecnología industrial de campo cinosural", "displayName_fr": "Utilise la technologie de champ cynosural industriel", "displayName_it": "Uses Industrial Cynosural Field Technology", "displayName_ja": "工業サイノシュラルフィールド技術の使用回数", "displayName_ko": "인더스트리얼 사이노슈럴 필드 기술 사용", "displayName_ru": "Используется технология промышленных приводных маяков", "displayName_zh": "使用工业诱导力场科技", "displayNameID": 318133, "displayWhenZero": 0, "highIsGood": 1, "name": "isIndustrialCyno", "published": 1, "stackable": 1, "unitID": 137 }, "2827": { "attributeID": 2827, "categoryID": 31, "dataType": 0, "defaultValue": 0.0, "description": "The item with this attribute set to 1 keeps track of when added to space, and puts that on the slim item, but if it was before downtime the slim item value gets set to -1. Created for supporting long animations upon adding to space.", "displayWhenZero": 0, "highIsGood": 1, "name": "hasLongAnimationWhenAddedToSpaceScene", "published": 0, "stackable": 1, "unitID": 137 }, "2828": { "attributeID": 2828, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "skill bonus for trig dread", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Усиление особого умения", "displayName_zh": "特殊能力加成", "displayNameID": 318140, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusPDread1", "published": 1, "stackable": 1, "unitID": 105 }, "2829": { "attributeID": 2829, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Triglavian Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtPC2", "published": 0, "stackable": 1 }, "2830": { "attributeID": 2830, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Triglavian Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtPC1", "published": 0, "stackable": 1 }, "2831": { "attributeID": 2831, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtPC3", "published": 0, "stackable": 1 }, "2832": { "attributeID": 2832, "categoryID": 17, "dataType": 4, "defaultValue": 1.0, "description": "The maximum number of ships that can be jumped per activation", "displayName_de": "Maximale Schiffe für Sprung", "displayName_en-us": "Maximum Ship Jump cap", "displayName_es": "Límite máx. de salto de nave", "displayName_fr": "Limite max. de sauts de vaisseau", "displayName_it": "Maximum Ship Jump cap", "displayName_ja": "艦船の最大ジャンプ能力", "displayName_ko": "최대 점프 횟수", "displayName_ru": "Максимальное количество кораблей для прыжка", "displayName_zh": "最大舰船跳跃数量", "displayNameID": 318141, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "mjdShipJumpCap", "published": 1, "stackable": 1 }, "3015": { "attributeID": 3015, "categoryID": 2, "dataType": 4, "defaultValue": 1.0, "description": "Shield HP Bonus used for nirvana implants", "displayName_de": "HP-Bonus für Schilde", "displayName_en-us": "Shield Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del escudo", "displayName_fr": "Bonus de points de vie du bouclier", "displayName_it": "Shield Hitpoint Bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드 내구도 보너스", "displayName_ru": "Бонус к запасу прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 555494, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1384, "name": "shieldHpBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3017": { "attributeID": 3017, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Implant Set Nirvana", "displayName_de": "Nirvana Set-Bonus", "displayName_en-us": "Nirvana Set Bonus", "displayName_es": "Bonificación de conjunto Nirvana", "displayName_fr": "Bonus de l'ensemble Nirvana", "displayName_it": "Nirvana Set Bonus", "displayName_ja": "ニルヴァーナセットボーナス", "displayName_ko": "니르바나 세트 보너스", "displayName_ru": "Бонус комплекта «Нирвана»", "displayName_zh": "极乐套装加成", "displayNameID": 555503, "displayWhenZero": 0, "highIsGood": 1, "name": "ImplantSetNirvana", "published": 1, "stackable": 1, "unitID": 104 }, "3020": { "attributeID": 3020, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Fregattenflucht-Hangar", "displayName_en-us": "Frigate Escape Bay", "displayName_es": "Plataforma escape fragata", "displayName_fr": "Hangar à frégate de secours", "displayName_it": "Frigate Escape Bay", "displayName_ja": "フリゲート脱出ベイ", "displayName_ko": "프리깃 비상 격납고", "displayName_ru": "Отсек спасательного фрегата", "displayName_zh": "护卫舰逃生舱", "displayNameID": 561201, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "frigateEscapeBayCapacity", "published": 1, "stackable": 1, "unitID": 138 }, "3023": { "attributeID": 3023, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "displayName_de": "Savior Set-Bonus", "displayName_en-us": "Savior Set Bonus", "displayName_es": "Bonificación de conjunto Savior", "displayName_fr": "Bonus de l'ensemble Sauveur", "displayName_it": "Savior Set Bonus", "displayName_ja": "セイビアーセットボーナス", "displayName_ko": "세이비어 세트 보너스", "displayName_ru": "Бонус комплекта «Спаситель»", "displayName_zh": "救世套装加成", "displayNameID": 559060, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetSavior", "published": 1, "stackable": 1, "unitID": 104 }, "3024": { "attributeID": 3024, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus für Fernreparatur-Durchlaufzeit und Energiespeicherkosten", "displayName_en-us": "Remote Rep Cycle Time and Capacitor Cost Bonus", "displayName_es": "Bonificación al coste de condensador y tiempo de ciclo de reparador remoto", "displayName_fr": "Bonus de temps de cycle et de coût en capaciteur de la réparation à distance", "displayName_it": "Remote Rep Cycle Time and Capacitor Cost Bonus", "displayName_ja": "リモートリペアのサイクル時間とキャパシタ消費ボーナス", "displayName_ko": "원격 수리 사이클 시간 및 캐패시터 사용량 보너스", "displayName_ru": "Бонус ко врем. цикла и потр. энергии для дист. ремонта", "displayName_zh": "远程维修装备单次运转时间和电容器消耗加成", "displayNameID": 559061, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "remoteRepDurationCapBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3025": { "attributeID": 3025, "dataType": 3, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "ActiveSystemJump", "published": 0, "stackable": 0 }, "3026": { "attributeID": 3026, "dataType": 4, "defaultValue": 561098.0, "displayWhenZero": 0, "highIsGood": 0, "name": "FilamentDescriptionMessageID", "published": 0, "stackable": 0 }, "3027": { "attributeID": 3027, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "displayName_de": "Hydra Set-Bonus", "displayName_en-us": "Hydra Set Bonus", "displayName_es": "Bonificación de conjunto Hydra", "displayName_fr": "Bonus de l'ensemble Hydra", "displayName_it": "Hydra Set Bonus", "displayName_ja": "ハイドラセットボーナス", "displayName_ko": "히드라 세트 보너스", "displayName_ru": "Бонус набора «Гидра»", "displayName_zh": "九头蛇套件加成", "displayNameID": 562541, "displayWhenZero": 0, "highIsGood": 1, "iconID": 0, "name": "implantSetHydra", "published": 1, "stackable": 1, "unitID": 104 }, "3028": { "attributeID": 3028, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Drohnen-Nachführungsgeschwindigkeit-Bonus", "displayName_en-us": "Drone Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo de drones", "displayName_fr": "Bonus de vitesse de poursuite des drones", "displayName_it": "Drone Tracking Speed Bonus", "displayName_ja": "ドローン追跡速度ボーナス", "displayName_ko": "드론 트래킹 속도 보너스", "displayName_ru": "Бонус к скорости наведения дронов", "displayName_zh": "无人机跟踪速度加成", "displayNameID": 562542, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "hydraDroneTrackingBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3029": { "attributeID": 3029, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus auf optimale Reichweite und Präzisionsabfall-Reichweite vom Drohnen", "displayName_en-us": "Drone Optimal and Falloff Range Bonus", "displayName_es": "Bonificación de alcances efectivo y óptimo de drones", "displayName_fr": "Bonus de portée optimale et de déperdition des drones", "displayName_it": "Drone Optimal and Falloff Range Bonus", "displayName_ja": "ドローンの最適射程距離と精度低下範囲ボーナス", "displayName_ko": "드론 최적사거리 및 유효사거리 보너스", "displayName_ru": "Бонус к оптимальной и добавочной дальности дронов", "displayName_zh": "无人机最佳射程和失准范围加成", "displayNameID": 562543, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "hydraDroneRangeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3030": { "attributeID": 3030, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Lenkwaffenflugdauer-Bonus", "displayName_en-us": "Missile Flight Time Bonus", "displayName_es": "Bonificación de tiempo de vuelo de misiles", "displayName_fr": "Bonus de temps de vol des missiles", "displayName_it": "Missile Flight Time Bonus", "displayName_ja": "ミサイル飛行時間ボーナス", "displayName_ko": "미사일 비행 시간 보너스", "displayName_ru": "Бонус к времени полёта ракет", "displayName_zh": "导弹飞行时间加成", "displayNameID": 562544, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "hydraMissileFlightTimeBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3031": { "attributeID": 3031, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Lenkwaffenexplosionsgeschwindigkeit-Bonus", "displayName_en-us": "Missile Explosion Velocity Bonus", "displayName_es": "Bonificación de velocidad de explosión de misiles", "displayName_fr": "Bonus de vitesse d'explosion des missiles", "displayName_it": "Missile Explosion Velocity Bonus", "displayName_ja": "ミサイル爆発速度ボーナス", "displayName_ko": "미사일 폭발 속도 보너스", "displayName_ru": "Бонус к скорости распространения взрыва ракет", "displayName_zh": "导弹爆炸速度加成", "displayNameID": 562545, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1389, "name": "hydraMissileExplosionVelocityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3034": { "attributeID": 3034, "categoryID": 6, "dataType": 5, "defaultValue": 0.0, "description": "Multiplier for maximum number of targets that can be locked.", "displayWhenZero": 0, "highIsGood": 1, "iconID": 1004, "name": "maxLockedTargetsMultiplier", "published": 0, "stackable": 1 }, "3035": { "attributeID": 3035, "categoryID": 27, "dataType": 4, "defaultValue": 0.0, "description": "Warp Scramble Strength Bonus", "displayName_de": "Bonus auf Warp-Störungsstärke", "displayName_en-us": "Warp Scramble Strength Bonus", "displayName_es": "Bonificación de fuerza de distorsión de warp", "displayName_fr": "Bonus de puissance d'inhibition de warp", "displayName_it": "Warp Scramble Strength Bonus", "displayName_ja": "ワープスクランブル強度ボーナス", "displayName_ko": "워프 스크램블 강도 보너스", "displayName_ru": "Влияние на мощность глушения варп-двигателей", "displayName_zh": "跃迁干扰强度加成", "displayNameID": 600129, "displayWhenZero": 0, "highIsGood": 1, "iconID": 111, "name": "warpScrambleStrengthBonus", "published": 1, "stackable": 1, "unitID": 139 }, "3036": { "attributeID": 3036, "categoryID": 29, "dataType": 2, "defaultValue": 1.0, "description": "The maximum distance from the original target from which additional targets can receive arc damage", "displayName_de": "Vorton-Bogenreichweite", "displayName_en-us": "Vorton Arc Range", "displayName_es": "Alcance del arco vortónico", "displayName_fr": "Portée d'arc de vortons", "displayName_it": "Vorton Arc Range", "displayName_ja": "ヴォートンアークの射程", "displayName_ko": "보르톤 아크 범위", "displayName_ru": "Дальность вортонной дуги", "displayName_zh": "电弧范围", "displayNameID": 564027, "displayWhenZero": 0, "highIsGood": 1, "iconID": 24252, "name": "VortonArcRange", "published": 1, "stackable": 0, "tooltipDescription_de": "Die maximale Entfernung, die die Bogenkette vom ursprünglichen Ziel ausgehend erreichen kann", "tooltipDescription_en-us": "The maximum distance the arc chain can reach from the original target", "tooltipDescription_es": "La distancia máxima que puede alcanzar la cadena de arco desde el objetivo original.", "tooltipDescription_fr": "La distance maximum que les chaînes d'arc peuvent atteindre depuis la cible d'origine", "tooltipDescription_it": "The maximum distance the arc chain can reach from the original target", "tooltipDescription_ja": "アークチェーン発射地点から最初のターゲットに届く最大距離", "tooltipDescription_ko": "아크 체인이 주 대상으로부터 날아갈 수 있는 범위", "tooltipDescription_ru": "Максимальное расстояние от первоначальной цели, которое может преодолеть электрическая цепь", "tooltipDescription_zh": "电弧链从第一个目标开始所能波及的最远距离", "tooltipDescriptionID": 564029, "tooltipTitleID": 564028, "unitID": 1 }, "3037": { "attributeID": 3037, "categoryID": 29, "dataType": 4, "defaultValue": 1.0, "description": "Maximum number of arc targets hit.", "displayName_de": "Bogenkettenziele", "displayName_en-us": "Arc Chain Targets", "displayName_es": "Objetivos de cadena de arco", "displayName_fr": "Cibles de chaîne d'arc", "displayName_it": "Arc Chain Targets", "displayName_ja": "アークチェーンのターゲット数", "displayName_ko": "아크 체인 타겟", "displayName_ru": "Цели электрической цепи", "displayName_zh": "电弧链目标", "displayNameID": 564030, "displayWhenZero": 0, "highIsGood": 1, "iconID": 24252, "name": "VortonArcTargets", "published": 1, "stackable": 0, "tooltipDescription_de": "Die maximale Anzahl an Zielen, die von Vorton-Bögen getroffen werden kann", "tooltipDescription_en-us": "The maximum number of targets hit by Vorton Arcs", "tooltipDescription_es": "El número máximo de objetivos alcanzados por arcos vortónicos.", "tooltipDescription_fr": "Le nombre maximum de cibles touchées par les arcs de vortons", "tooltipDescription_it": "The maximum number of targets hit by Vorton Arcs", "tooltipDescription_ja": "ヴォートンアークを受ける最大ターゲット数", "tooltipDescription_ko": "보르톤 아크의 최대 타겟 수", "tooltipDescription_ru": "Максимальное число целей, которые могут поразить вортонные дуги", "tooltipDescription_zh": "电弧所能击中的目标数上限", "tooltipDescriptionID": 564032, "tooltipTitleID": 564031 }, "3038": { "attributeID": 3038, "dataType": 0, "defaultValue": 0.0, "description": "Referenced by code to know that cynosural fields will fail in the same park as this type", "displayWhenZero": 0, "highIsGood": 0, "name": "isCynoJammer", "published": 0, "stackable": 0 }, "3039": { "attributeID": 3039, "dataType": 2, "defaultValue": 1.0, "description": "Controls how much of the NpcBehaviorSmartBomb effect's damage gets applied to entities", "displayWhenZero": 0, "highIsGood": 0, "name": "behaviorSmartBombEntityDamageMultiplier", "published": 0, "stackable": 0 }, "3041": { "attributeID": 3041, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUF1", "published": 0, "stackable": 1 }, "3042": { "attributeID": 3042, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUF2", "published": 0, "stackable": 1 }, "3043": { "attributeID": 3043, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUC1", "published": 0, "stackable": 1 }, "3044": { "attributeID": 3044, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUC2", "published": 0, "stackable": 1 }, "3045": { "attributeID": 3045, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUB1", "published": 0, "stackable": 1 }, "3046": { "attributeID": 3046, "categoryID": 9, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUB2", "published": 0, "stackable": 1 }, "3050": { "attributeID": 3050, "dataType": 4, "defaultValue": 2.0, "description": "The amount of fleets needed for a single pvp filament match ", "displayWhenZero": 0, "highIsGood": 0, "name": "AmountOfFleetsPerMatch", "published": 0, "stackable": 0 }, "3051": { "attributeID": 3051, "categoryID": 17, "dataType": 5, "defaultValue": 1000.0, "description": "The range players in fleet need to be within fleet member doing an action", "displayName_de": "Wirkungsbereichradius", "displayName_en-us": "Area Effect Radius", "displayName_es": "Radio de acción", "displayName_fr": "Rayon de la zone d'effet", "displayName_it": "Area Effect Radius", "displayName_ja": "有効範囲半径", "displayName_ko": "유효 반경", "displayName_ru": "Радиус действия", "displayName_zh": "范围效果半径", "displayNameID": 564554, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "FleetMemberPickupRadius", "published": 1, "stackable": 1, "tooltipTitleID": 564555, "unitID": 1 }, "3052": { "attributeID": 3052, "categoryID": 17, "dataType": 4, "defaultValue": 1.0, "description": "Amount of players in fleet needed to be valid", "displayName_de": "Anzahl benötigter Schiffe", "displayName_en-us": "Number Of Ships required", "displayName_es": "N.º de naves necesarias", "displayName_fr": "Nombre de vaisseaux requis", "displayName_it": "Number Of Ships required", "displayName_ja": "必要艦船数", "displayName_ko": "필요한 함선 수", "displayName_ru": "Необходимое количество кораблей", "displayName_zh": "所需舰船数量", "displayNameID": 564556, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "FleetMembersNeeded", "published": 1, "stackable": 1 }, "3093": { "attributeID": 3093, "dataType": 4, "defaultValue": 1.0, "description": "A dummy attribute for brute-forcing the system-wide effects info bubble bonus tooltip to appear on a player's HUD.", "displayWhenZero": 0, "highIsGood": 0, "name": "showSystemInfoBubble", "published": 0, "stackable": 0 }, "3095": { "attributeID": 3095, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus für Sondenstärke", "displayName_en-us": "Probe Strength Bonus", "displayName_es": "Bonificación de intensidad de la sonda", "displayName_fr": "Bonus de puissance des sondes", "displayName_it": "Probe Strength Bonus", "displayName_ja": "プローブ強度ボーナス", "displayName_ko": "프로브 강도 보너스", "displayName_ru": "Увеличение чувствительности зондов", "displayName_zh": "探针强度加成", "displayNameID": 568981, "displayWhenZero": 0, "highIsGood": 1, "name": "scanProbeStrengthBonus", "published": 1, "stackable": 0, "unitID": 105 }, "3096": { "attributeID": 3096, "dataType": 4, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "locationListID", "published": 0, "stackable": 0 }, "3097": { "attributeID": 3097, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 0, "name": "lightYearDistanceMax", "published": 0, "stackable": 0 }, "3098": { "attributeID": 3098, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "armorRepairDurationBonus", "published": 0, "stackable": 0 }, "3099": { "attributeID": 3099, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shieldBoosterDurationBonus", "published": 0, "stackable": 0 }, "3101": { "attributeID": 3101, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "description": "Describes which type of deed fits in this structure", "displayName_de": "Quantumkern-Typ", "displayName_en-us": "Quantum Core Type", "displayName_es": "Tipo de núcleo cuántico", "displayName_fr": "Type de réacteur quantique", "displayName_it": "Quantum Core Type", "displayName_ja": "クアンタムコアタイプ", "displayName_ko": "양자코어 종류", "displayName_ru": "Тип квантового ядра", "displayName_zh": "量子芯类型", "displayNameID": 569361, "displayWhenZero": 0, "highIsGood": 0, "name": "structureRequiresDeedType", "published": 1, "stackable": 0, "unitID": 116 }, "3102": { "attributeID": 3102, "dataType": 0, "defaultValue": 0.0, "description": "when authored alongside the effectTractorBeamCan it will determine if it only tractors corpses instead of wrecks and cans", "displayWhenZero": 0, "highIsGood": 0, "name": "onlyTractorCorpses", "published": 0, "stackable": 0 }, "3104": { "attributeID": 3104, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Amount of fuel consumed by tactical capsuleer recloner", "displayName_de": "Verbrauchsmenge", "displayName_en-us": "Consumption Quantity", "displayName_es": "Cantidad de consumo", "displayName_fr": "Quantité consommée", "displayName_it": "Consumption Quantity", "displayName_ja": "消費量", "displayName_ko": "소모량", "displayName_ru": "Количество потребляемого топлива", "displayName_zh": "消耗量", "displayNameID": 571980, "displayWhenZero": 0, "highIsGood": 0, "name": "reclonerFuelQuantity", "published": 1, "stackable": 1, "unitID": 138 }, "3105": { "attributeID": 3105, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Type of fuel consumed by tactical capsuleer recloner", "displayName_de": "Kloner-Verbrauchstyp", "displayName_en-us": "Recloner Consumption Type", "displayName_es": "Tipo de consumo del reclonador", "displayName_fr": "Type de consommation du clonage", "displayName_it": "Recloner Consumption Type", "displayName_ja": "リクローナー消費タイプ", "displayName_ko": "복제기 사용 연료", "displayName_ru": "Тип топлива, потребляемого тактическим клонировщиком", "displayName_zh": "克隆重制体消耗类型", "displayNameID": 571979, "displayWhenZero": 0, "highIsGood": 1, "name": "reclonerFuelType", "published": 1, "stackable": 1, "tooltipTitleID": 572380, "unitID": 116 }, "3107": { "attributeID": 3107, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "description": "Rapture Implant Set Bonus", "displayName_de": "Begeisterungsset-Bonus", "displayName_en-us": "Rapture Set Bonus", "displayName_es": "Bonificación de conjunto Rapture", "displayName_fr": "Bonus de l'ensemble Rapture", "displayName_it": "Rapture Set Bonus", "displayName_ja": "ラプチャーセットボーナス", "displayName_ko": "랩쳐 세트 보너스", "displayName_ru": "Бонус комплекта «Экстаз»", "displayName_zh": "销魂套装加成", "displayNameID": 573152, "displayWhenZero": 0, "highIsGood": 1, "name": "ImplantSetRapture", "published": 1, "stackable": 1, "unitID": 104 }, "3108": { "attributeID": 3108, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Bastion effect bonus to missile rate of fire", "displayName_de": "Feuerraten-Bonus für Lenkwaffen", "displayName_en-us": "Missile Rate of Fire Bonus", "displayName_es": "Bonificación de cadencia de tiro de misiles", "displayName_fr": "Bonus de cadence de tir des missiles", "displayName_it": "Missile Rate of Fire Bonus", "displayName_ja": "ミサイル発射間隔ボーナス", "displayName_ko": "미사일 연사속도 보너스", "displayName_ru": "Уменьшение цикла выстрела ракетами", "displayName_zh": "导弹射速加成", "displayNameID": 575757, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "bastionMissileROFBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3109": { "attributeID": 3109, "categoryID": 37, "dataType": 2, "defaultValue": 0.0, "description": "Bastion effect bonus to turret rate of fire", "displayName_de": "Feuerraten-Bonus für Geschütztürme", "displayName_en-us": "Turret Rate of Fire Bonus", "displayName_es": "Bonificación de cadencia de tiro de torreta", "displayName_fr": "Bonus de cadence de tir de tourelle", "displayName_it": "Turret Rate of Fire Bonus", "displayName_ja": "タレット発射間隔ボーナス", "displayName_ko": "터렛 연사속도 보너스", "displayName_ru": "Уменьшение цикла выстрела турелей", "displayName_zh": "炮台射速加成", "displayNameID": 575758, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1397, "name": "bastionTurretROFBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3110": { "attributeID": 3110, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Salvage drone access difficult bonus attribute for salvage drone specialization skill", "displayName_de": "Zugriffsschwierigkeitsbonus", "displayName_en-us": "Access Difficulty Bonus", "displayName_es": "Bonificación de dificultad de acceso", "displayName_fr": "Bonus de difficulté d'accès", "displayName_it": "Access Difficulty Bonus", "displayName_ja": "アクセス難度ボーナス", "displayName_ko": "잠금 해제 보너스", "displayName_ru": "Снижение сложности доступа", "displayName_zh": "获取成功率", "displayNameID": 575834, "displayWhenZero": 0, "highIsGood": 1, "name": "specAccessDifficultyBonus", "published": 1, "stackable": 1, "unitID": 121 }, "3113": { "attributeID": 3113, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "the passive bonus to signature radius from signature suppressors", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius Bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus de rayon de signature", "displayName_it": "Signature Radius Bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Увеличение радиуса сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 576047, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "signatureSuppressorSignatureRadiusBonusPassive", "published": 1, "stackable": 1, "unitID": 108 }, "3114": { "attributeID": 3114, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Bonus to signature radius granted by signature suppressor activation", "displayName_de": "Aktiver Signaturradius-Bonus", "displayName_en-us": "Active Signature Radius Bonus", "displayName_es": "Bonificación de radio de la señal activa", "displayName_fr": "Bonus de rayon de signature actif", "displayName_it": "Active Signature Radius Bonus", "displayName_ja": "有効なシグネチャ半径ボーナス", "displayName_ko": "액티브 시그니처 반경 보너스", "displayName_ru": "Увеличение текущего радиуса сигнатуры", "displayName_zh": "主动信号半径加成", "displayNameID": 576048, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1390, "name": "signatureSuppressorSignatureRadiusBonusActive", "published": 1, "stackable": 0, "unitID": 108 }, "3115": { "attributeID": 3115, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Length of activation time.", "displayName_de": "Aktivierungszeit / -dauer", "displayName_en-us": "Activation time / duration", "displayName_es": "Tiempo de activación/duración", "displayName_fr": "Délai / Durée d'activation", "displayName_it": "Activation time / duration", "displayName_ja": "起動(待機)時間", "displayName_ko": "활성화 시간 / 지속시간", "displayName_ru": "Время цикла", "displayName_zh": "作用时间/单次运转时间", "displayNameID": 576795, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "durationHighisGood", "published": 1, "stackable": 1, "unitID": 101 }, "3117": { "attributeID": 3117, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "If this ship attribute is > 0 then ship is immune from remote decloak pings", "displayWhenZero": 0, "highIsGood": 1, "name": "cloakStabilizationStrength", "published": 1, "stackable": 1, "unitID": 137 }, "3118": { "attributeID": 3118, "categoryID": 7, "dataType": 2, "defaultValue": 0.0, "description": "Duration of the cloak-stabilization dbuff provided by a cloak module", "displayName_de": "Tarnmoduldauer stabilisieren", "displayName_en-us": "Stabilize Cloak Duration", "displayName_es": "Estabilizar duración de camuflaje", "displayName_fr": "Durée de stabilisation de camouflage", "displayName_it": "Stabilize Cloak Duration", "displayName_ja": "クローク持続時間を安定させる", "displayName_ko": "클로킹 안정화 지속시간", "displayName_ru": "Стабилизировать длительность маскировки", "displayName_zh": "稳定隐形持续时间", "displayNameID": 580047, "displayWhenZero": 0, "highIsGood": 1, "name": "stabilizeCloakDuration", "published": 1, "stackable": 1, "unitID": 3 }, "3120": { "attributeID": 3120, "dataType": 2, "defaultValue": 0.0, "description": "modifies warp bubble immuntiy ", "displayWhenZero": 0, "highIsGood": 1, "name": "warpBubbleImmuneBonus", "published": 0, "stackable": 0 }, "3123": { "attributeID": 3123, "categoryID": 7, "dataType": 0, "defaultValue": 0.0, "description": "If set to 1 on a module, that module can be activated whilst under gate cloak. (Does NOT include any other cloak mode)", "displayName_de": "Erlaubt Aktivierung während eines getarnten Sprungtor-Sprungs", "displayName_en-us": "Allows activation whilst cloaked from a stargate jump", "displayName_es": "Permite la activación mientras se está camuflado por un salto interestelar", "displayName_fr": "Permet l’activation sous l’effet du camouflage suite à un saut de portail stellaire", "displayName_it": "Allows activation whilst cloaked from a stargate jump", "displayName_ja": "スターゲートジャンプでクローク状態からの起動を可能にする", "displayName_ko": "스타게이트 점프로 인한 클로킹 중 활성화 가능", "displayName_ru": "Можно активировать в режиме маскировки, который включается при прыжке через звёздные врата", "displayName_zh": "跳跃星门后隐身状态下可以使用", "displayNameID": 581826, "displayWhenZero": 0, "highIsGood": 0, "iconID": 2106, "name": "canActivateInGateCloak", "published": 1, "stackable": 0, "unitID": 137 }, "3124": { "attributeID": 3124, "categoryID": 10, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Reduktion der Drohnen-Bandbreite", "displayName_en-us": "Drone Bandwidth Penalty", "displayName_es": "Penalización de ancho de banda de drones", "displayName_fr": "Pénalité de bande passante de drone", "displayName_it": "Drone Bandwidth Penalty", "displayName_ja": "ドローン帯域幅ペナルティ", "displayName_ko": "드론 대역폭 페널티", "displayName_ru": "Сужение канала управления дронами", "displayName_zh": "无人机带宽惩罚", "displayNameID": 581949, "displayWhenZero": 0, "highIsGood": 0, "iconID": 2987, "name": "droneBandwidthPercentage", "published": 1, "stackable": 0, "unitID": 105 }, "3125": { "attributeID": 3125, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Grants the ability to open Jump Portals", "displayWhenZero": 0, "highIsGood": 1, "name": "enableOpenJumpPortal", "published": 0, "stackable": 1 }, "3126": { "attributeID": 3126, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "Grants the ability to perform conduit jumps", "displayWhenZero": 0, "highIsGood": 1, "name": "enablePerformConduitJump", "published": 0, "stackable": 1 }, "3130": { "attributeID": 3130, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "description": "Type that is used for consumption from cargo hold when activating group jump drive operation.", "displayName_de": "Treibstoffbedarf des Gruppensprungs", "displayName_en-us": "Group Jump Fuel Need", "displayName_es": "Necesidad de combustible para salto conductivo", "displayName_fr": "Carburant requis pour le saut de groupe", "displayName_it": "Group Jump Fuel Need", "displayName_ja": "グループジャンプ必要燃料", "displayName_ko": "그룹 점프 연료 사용량", "displayName_ru": "Потребление топлива при групповом прыжке", "displayName_zh": "团队跳跃燃料需求", "displayNameID": 583318, "displayWhenZero": 0, "highIsGood": 1, "name": "groupJumpConsumptionType", "published": 1, "stackable": 1, "tooltipDescription_de": "Die Treibstoffart, die für den Gruppensprungantrieb benötigt wird", "tooltipDescription_en-us": "The type of fuel required to use the group jump drive", "tooltipDescription_es": "Tipo de combustible necesario para usar motor de salto conductivo.", "tooltipDescription_fr": "Le type de carburant requis à utiliser dans le propulseur interstellaire de groupe", "tooltipDescription_it": "The type of fuel required to use the group jump drive", "tooltipDescription_ja": "グループジャンプドライブを使用するのに必要な燃料タイプです", "tooltipDescription_ko": "그룹 점프 드라이브 사용 연료", "tooltipDescription_ru": "Тип топлива для гипердвигателя во время группового прыжка", "tooltipDescription_zh": "使用团队跳跃引擎所需的燃料种类", "tooltipDescriptionID": 583320, "tooltipTitleID": 583319, "unitID": 116 }, "3131": { "attributeID": 3131, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Number of units needed to conduit jump", "displayName_de": "Verbrauch des Gruppensprungs", "displayName_en-us": "Conduit Jump Consumption Amount", "displayName_es": "Consumo de salto conductivo", "displayName_fr": "Quantité consommée par le saut de groupe", "displayName_it": "Conduit Jump Consumption Amount", "displayName_ja": "コンジットジャンプ消費量", "displayName_ko": "점프 필드 연료 소모량", "displayName_ru": "Расход топлива при групповом прыжке", "displayName_zh": "导管跳跃消耗量", "displayNameID": 583321, "displayWhenZero": 0, "highIsGood": 0, "name": "conduitJumpDriveConsumptionAmount", "published": 1, "stackable": 0, "tooltipDescription_de": "Für den Gruppensprung benötigte Anzahl an Einheiten", "tooltipDescription_en-us": "Number of units needed to conduit jump", "tooltipDescription_es": "Unidades necesarias para salto conductivo", "tooltipDescription_fr": "Nombre d’unités requises pour le saut de groupe", "tooltipDescription_it": "Number of units needed to conduit jump", "tooltipDescription_ja": "コンジットジャンプに必要なユニット数", "tooltipDescription_ko": "점프 필드 활성화 시 소모 연료", "tooltipDescription_ru": "Количество ед. для группового прыжка", "tooltipDescription_zh": "导管跳跃需要的单位数量", "tooltipDescriptionID": 583323, "tooltipTitleID": 583322, "unitID": 138 }, "3132": { "attributeID": 3132, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This is used to connect the corporation logos to monuments", "displayWhenZero": 0, "highIsGood": 1, "name": "monumentCorporationID", "published": 0, "stackable": 1 }, "3133": { "attributeID": 3133, "categoryID": 7, "dataType": 1, "defaultValue": 0.0, "description": "How many passengers can be carried in a Conduit Jump", "displayName_de": "Passagieranzahl für den Gruppensprung", "displayName_en-us": "Conduit Jump Passenger Count", "displayName_es": "Recuento de pasajeros de salto conductivo", "displayName_fr": "Compteur de passagers du saut de groupe", "displayName_it": "Conduit Jump Passenger Count", "displayName_ja": "コンジットジャンプ同乗者カウント", "displayName_ko": "점프 필드 최대 인원", "displayName_ru": "Количество пассажиров при групповом прыжке", "displayName_zh": "导管跳跃乘客数量", "displayNameID": 583421, "displayWhenZero": 0, "highIsGood": 1, "name": "conduitJumpPassengerCount", "published": 1, "stackable": 0, "tooltipDescription_de": "Maximale Anzahl an Passagieren, die in einem Gruppensprung von einem Ankerschiff mitgenommen werden können.", "tooltipDescription_en-us": "Maximum number of passengers carried along with the anchor ship in a Conduit Jump", "tooltipDescription_es": "Número máximo de pasajeros transportados junto con la nave-ancla en un salto conductivo.", "tooltipDescription_fr": "Nombre maximal de passagers emmenés avec le vaisseau d'ancrage lors d'un saut de groupe", "tooltipDescription_it": "Maximum number of passengers carried along with the anchor ship in a Conduit Jump", "tooltipDescription_ja": "コンジットジャンプで、係留艦に同行できる艦船の最大数", "tooltipDescription_ko": "점프 필드 전개 시 이동 가능한 최대 인원", "tooltipDescription_ru": "Максимальное количество пассажиров при групповом прыжке", "tooltipDescription_zh": "在导管跳跃中锚船所能承载的乘客的最大数量", "tooltipDescriptionID": 583438, "tooltipTitleID": 583422 }, "3134": { "attributeID": 3134, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "bonus to stabilize cloak duration", "displayName_de": "Bonus auf die Tarnmoduldauer", "displayName_en-us": "Stabilized Cloak Duration Bonus", "displayName_es": "Bonif. de duración estable de camuflaje", "displayName_fr": "Bonus de durée de stabilisation de camouflage", "displayName_it": "Stabilized Cloak Duration Bonus", "displayName_ja": "安定化クローク持続時間ボーナス", "displayName_ko": "클로킹 안정화 보너스", "displayName_ru": "Бонус к стабилизированной длительности маскировки", "displayName_zh": "隐形稳定持续时间加成", "displayNameID": 583816, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "stabilizeCloakDurationBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3136": { "attributeID": 3136, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of ice-only hold", "displayName_de": "Eisfassungsvermögen", "displayName_en-us": "Ice Hold Capacity", "displayName_es": "Capacidad de bodega de hielo", "displayName_fr": "Capacité de la soute à glace", "displayName_it": "Ice Hold Capacity", "displayName_ja": "アイスホールド容量", "displayName_ko": "아이스 저장고 적재량", "displayName_ru": "Объём отсека для льда", "displayName_zh": "冰矿舱容量", "displayNameID": 584247, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialIceHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Eisfrachtraum gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the ice hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega de hielo.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute à glace", "tooltipDescription_it": "The total volume that can be stored in the ice hold", "tooltipDescription_ja": "アイスホールドに積載できる総量", "tooltipDescription_ko": "아이스 저장고에 보관할 수 있는 최대 용량", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для льда", "tooltipDescription_zh": "冰矿舱的容量", "tooltipDescriptionID": 584249, "tooltipTitleID": 584248, "unitID": 9 }, "3148": { "attributeID": 3148, "categoryID": 51, "dataType": 13, "defaultValue": 0.0, "description": "The ID of a typelist of asteroid typeIDs that a mining crystal can affect", "displayName_de": "Gültige Zieltypen", "displayName_en-us": "Valid target types", "displayName_es": "Tipos de objetivo válidos", "displayName_fr": "Types de cible valides", "displayName_it": "Valid target types", "displayName_ja": "有効なターゲットタイプ", "displayName_ko": "유효한 타겟팅 대상", "displayName_ru": "Доступные типы целей", "displayName_zh": "无效的目标类型", "displayNameID": 593750, "displayWhenZero": 0, "highIsGood": 0, "name": "specializationAsteroidTypeList", "published": 1, "stackable": 0 }, "3153": { "attributeID": 3153, "categoryID": 51, "dataType": 2, "defaultValue": 1.0, "description": "This multiplier is applied to the Mining Volume of the actor (module, drone etc.) to calculate the potential wasted volume per cycle", "displayName_de": "Rückstandsvolumen-Multiplikator", "displayName_en-us": "Residue Volume Multiplier", "displayName_es": "Multiplicador de volumen de residuos", "displayName_fr": "Multiplicateur de volume de résidus", "displayName_it": "Residue Volume Multiplier", "displayName_ja": "残留物体積乗数", "displayName_ko": "손실 배수", "displayName_ru": "Коэффициент объёма отходов", "displayName_zh": "残渣体积系数", "displayNameID": 589052, "displayWhenZero": 1, "highIsGood": 0, "name": "miningWastedVolumeMultiplier", "published": 1, "stackable": 0, "unitID": 104 }, "3154": { "attributeID": 3154, "categoryID": 51, "dataType": 2, "defaultValue": 0.0, "description": "The probability of volume getting wasted every cycle", "displayName_de": "Rückstandswahrscheinlichkeit", "displayName_en-us": "Residue Probability", "displayName_es": "Probabilidad de residuos", "displayName_fr": "Probabilité de résidus", "displayName_it": "Residue Probability", "displayName_ja": "残留物率", "displayName_ko": "손실 확률", "displayName_ru": "Шанс получения отходов", "displayName_zh": "残渣几率", "displayNameID": 589053, "displayWhenZero": 1, "highIsGood": 0, "name": "miningWasteProbability", "published": 1, "stackable": 0, "unitID": 121 }, "3157": { "attributeID": 3157, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "gallenteIndustrialBonusIceHoldCapacity", "published": 0, "stackable": 1, "unitID": 105 }, "3158": { "attributeID": 3158, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGasHold", "published": 0, "stackable": 1, "unitID": 105 }, "3159": { "attributeID": 3159, "categoryID": 51, "dataType": 2, "defaultValue": 0.0, "description": "Attribute added to the waste multiplier (mainly used in mining crystals)", "displayName_de": "Rückstandsvolumen-Multiplikator-Bonus", "displayName_en-us": "Residue Volume Multiplier Bonus", "displayName_es": "Bonificación de multiplicador de volumen de residuos", "displayName_fr": "Bonus au multiplicateur de volume de résidus", "displayName_it": "Residue Volume Multiplier Bonus", "displayName_ja": "残留物体積乗数ボーナス", "displayName_ko": "손실량 배수 보너스", "displayName_ru": "Прибавка к коэффициенту объёма отходов", "displayName_zh": "残渣体积系数加成", "displayNameID": 591643, "displayWhenZero": 1, "highIsGood": 0, "name": "specializationCrystalMiningWastedVolumeMultiplierBonus", "published": 1, "stackable": 0, "unitID": 205 }, "3160": { "attributeID": 3160, "categoryID": 51, "dataType": 2, "defaultValue": 0.0, "description": "Attribute added to the waste probability (mainly used in mining crystals)", "displayName_de": "Rückstandswahrscheinlichkeits-Bonus", "displayName_en-us": "Residue Probability Bonus", "displayName_es": "Bonificación de probabilidad de residuos", "displayName_fr": "Bonus à la probabilité de résidus", "displayName_it": "Residue Probability Bonus", "displayName_ja": "残留物率ボーナス", "displayName_ko": "손실 확률 보너스", "displayName_ru": "Прибавка к шансу получения отходов", "displayName_zh": "残渣几率加成", "displayNameID": 591644, "displayWhenZero": 1, "highIsGood": 0, "name": "specializationCrystalMiningWasteProbabilityBonus", "published": 1, "stackable": 0, "unitID": 205 }, "3161": { "attributeID": 3161, "categoryID": 51, "dataType": 5, "defaultValue": 1.0, "description": "The amount the mining duration is modified when mining the asteroid group this crystal is tuned for.", "displayName_de": "Dauermultiplikator für Asteroiden-Spezialisierung", "displayName_en-us": "Asteroid Specialization Duration Multiplier", "displayName_es": "Multiplicador de duración de especialización de asteroides", "displayName_fr": "Multiplicateur de durée de la spécialisation en astéroïdes", "displayName_it": "Asteroid Specialization Duration Multiplier", "displayName_ja": "アステロイドスペシャリゼーション継続時間乗数", "displayName_ko": "소행성 특화 지속시간 배수", "displayName_ru": "Коэффициент длительности при специализации на астероидах", "displayName_zh": "小行星矿专精运转周期系数", "displayNameID": 587593, "displayWhenZero": 0, "highIsGood": 0, "name": "specializationAsteroidDurationMultiplier", "published": 1, "stackable": 1, "unitID": 104 }, "3164": { "attributeID": 3164, "categoryID": 19, "dataType": 5, "defaultValue": 0.0, "description": "A attribute meant to over write the chance of loot dropping from a ship, so a setting of 0 will lead to no loot dropping from the player ship.", "displayName_de": "Beutechance überschreiben", "displayName_en-us": "Drop Chance Overwrite", "displayName_es": "Sobrescribir probabilidad de botín", "displayName_fr": "Écraser les chances de récupération", "displayName_it": "Drop Chance Overwrite", "displayName_ja": "ドロップ率の上書き", "displayName_ko": "Drop Chance Overwrite", "displayName_ru": "Изменение шанса выпадения добычи", "displayName_zh": "掉率改写", "displayNameID": 588129, "displayWhenZero": 0, "highIsGood": 1, "name": "dropChanceOverwrite", "published": 0, "stackable": 1, "tooltipDescription_de": "Chance auf Beute von Spielerschiff überschreiben, Wert 0 = keine Beute", "tooltipDescription_en-us": "Overwriting loot chance of drop from player ship, value 0 = no loot dropped", "tooltipDescription_es": "Sobrescribe la probabilidad de la nave del jugador de soltar algún botín (valor 0 = ningún botín).", "tooltipDescription_fr": "Écrasez les chances de récupération de butin sur le vaisseau d'un autre joueur. Une valeur égale à 0 signifie qu'aucun butin n'est récupérable", "tooltipDescription_it": "Overwriting loot chance of drop from player ship, value 0 = no loot dropped", "tooltipDescription_ja": "プレイヤー艦のドロップ率を上書き。値が0の場合、戦利品のドロップなし", "tooltipDescription_ko": "Overwriting loot chance of drop from player ship, value 0 = no loot dropped", "tooltipDescription_ru": "Изменяет шанс выпадения добычи из корабля игрока. 0 = добыча не выпадает", "tooltipDescription_zh": "改写玩家爆船的掉率,0=无掉落", "tooltipDescriptionID": 588131, "tooltipTitleID": 588130 }, "3165": { "attributeID": 3165, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus für Sondenstärke", "displayName_en-us": "Probe Strength Bonus", "displayName_es": "Bonificación de potencia de sonda", "displayName_fr": "Bonus de puissance des sondes", "displayName_it": "Probe Strength Bonus", "displayName_ja": "プローブ強度ボーナス", "displayName_ko": "프로브 강도 보너스", "displayName_ru": "Увеличение чувствительности зондов", "displayName_zh": "探针强度加成", "displayNameID": 588464, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusScanProbeBonus", "published": 1, "stackable": 0, "unitID": 105 }, "3166": { "attributeID": 3166, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusMiningLaserDuration", "published": 1, "stackable": 1 }, "3167": { "attributeID": 3167, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusIceHarvestingDuration", "published": 0, "stackable": 1 }, "3168": { "attributeID": 3168, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusGasHarvestingDuration", "published": 0, "stackable": 1 }, "3169": { "attributeID": 3169, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusArmorResistance", "published": 1, "stackable": 1 }, "3170": { "attributeID": 3170, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusLightDronesDamage_DEPRICATED", "published": 0, "stackable": 1 }, "3171": { "attributeID": 3171, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": " expeditionFrigateBonusMediumDronesDamage_DEPRICATED", "published": 0, "stackable": 1 }, "3172": { "attributeID": 3172, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusDroneOreMiningCycleTime", "published": 0, "stackable": 1 }, "3173": { "attributeID": 3173, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusDroneIceMiningCycleTime", "published": 0, "stackable": 1 }, "3176": { "attributeID": 3176, "categoryID": 6, "dataType": 0, "defaultValue": 0.0, "description": "A attribute that prevents the ship or entity from flashing yellow when he has the player locked and is applying effects on the player.", "displayName_de": "Ziel heimlich aufschalten", "displayName_en-us": "Target Lock Silently", "displayName_es": "Fijar objetivo silenciosamente", "displayName_fr": "Verrouiller furtivement la cible", "displayName_it": "Target Lock Silently", "displayName_ja": "サイレントターゲットロック", "displayName_ko": "Target Lock Silently", "displayName_ru": "Незаметный захват цели", "displayName_zh": "暗中锁定目标", "displayNameID": 588475, "displayWhenZero": 0, "highIsGood": 0, "name": "targetLockSilently", "published": 0, "stackable": 0, "tooltipDescription_de": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_en-us": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_es": "Evita que las naves o entidades parpadeen en amarillo cuando han fijado al jugador como objetivo o se le está aplicando algún efecto.", "tooltipDescription_fr": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_it": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_ja": "艦船などがプレイヤーにロックを行ったりエフェクトを適用している際に、その艦船などがプレイヤーに対して黄色点滅状態になるのを防ぐために使用されます。", "tooltipDescription_ko": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_ru": "Used to prevent the ship or entity from yellow flashing to the player when the ship or entity has the player locked and if applying an effect on the player.", "tooltipDescription_zh": "防止舰船或其他实体因锁定玩家或对玩家施放效果而闪黄。", "tooltipDescriptionID": 588477, "tooltipTitleID": 588476 }, "3177": { "attributeID": 3177, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusOreMiningYield", "published": 0, "stackable": 1 }, "3178": { "attributeID": 3178, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusIceHarvestingDuration", "published": 0, "stackable": 1 }, "3179": { "attributeID": 3179, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusDroneDamage", "published": 0, "stackable": 1 }, "3180": { "attributeID": 3180, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusDroneHitPoints", "published": 0, "stackable": 1 }, "3181": { "attributeID": 3181, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusOreMiningYield", "published": 0, "stackable": 1 }, "3182": { "attributeID": 3182, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "miningBargeBonusIceHarvestingDuration", "published": 0, "stackable": 1 }, "3183": { "attributeID": 3183, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "miningBargeBonusGasHarvestingDuration", "published": 0, "stackable": 1 }, "3184": { "attributeID": 3184, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusOreMiningRange", "published": 0, "stackable": 1 }, "3185": { "attributeID": 3185, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusIceHarvestingRange", "published": 0, "stackable": 1 }, "3187": { "attributeID": 3187, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusGeneralMiningHoldCapacity", "published": 0, "stackable": 1 }, "3188": { "attributeID": 3188, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusShieldCapacity", "published": 0, "stackable": 1 }, "3189": { "attributeID": 3189, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "miningBargeBonusArmorHP", "published": 0, "stackable": 1 }, "3190": { "attributeID": 3190, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusSignatureRadius", "published": 0, "stackable": 1 }, "3191": { "attributeID": 3191, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusOreMiningYield", "published": 0, "stackable": 1 }, "3192": { "attributeID": 3192, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusShieldResistance", "published": 0, "stackable": 1 }, "3193": { "attributeID": 3193, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "exhumersBonusOreMiningDuration", "published": 0, "stackable": 1 }, "3194": { "attributeID": 3194, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "exhumersBonusIceHarvestingDuration", "published": 0, "stackable": 1 }, "3195": { "attributeID": 3195, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusSingatureRadius", "published": 0, "stackable": 1 }, "3197": { "attributeID": 3197, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusOreMiningYield", "published": 0, "stackable": 1 }, "3198": { "attributeID": 3198, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusGeneralMiningHoldCapacity", "published": 0, "stackable": 1 }, "3199": { "attributeID": 3199, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusShieldResistance", "published": 0, "stackable": 1 }, "3200": { "attributeID": 3200, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusArmorResistance", "published": 0, "stackable": 1 }, "3201": { "attributeID": 3201, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusLightDroneDamage", "published": 0, "stackable": 1 }, "3202": { "attributeID": 3202, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "exhumersBonusMediumDronesDamage", "published": 0, "stackable": 1 }, "3203": { "attributeID": 3203, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusDroneDamage", "published": 0, "stackable": 1 }, "3204": { "attributeID": 3204, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusFuelConsuptionCompactIndustrialCore", "published": 0, "stackable": 1 }, "3205": { "attributeID": 3205, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusMiningForemanBurstRange", "published": 0, "stackable": 1 }, "3206": { "attributeID": 3206, "categoryID": 28, "dataType": 5, "defaultValue": 0.0, "description": "Bonus added to stasis webifier range", "displayName_de": "Maximaler Reichweitenbonus von Stasisnetzen", "displayName_en-us": "Stasis Webifier Maximum Range Bonus", "displayName_es": "Bonificación de alcance máx. de red ralentizadora", "displayName_fr": "Bonus de portée max. du générateur de stase", "displayName_it": "Stasis Webifier Maximum Range Bonus", "displayName_ja": "ステイシスウェビファイヤーの最大範囲ボーナス", "displayName_ko": "스테이시스 웹 생성기 사거리 보너스", "displayName_ru": "Бонус к макс. дальности стазис-индуктора", "displayName_zh": "停滞缠绕光束最大范围加成", "displayNameID": 589016, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "stasisWebRangeAdd", "published": 1, "stackable": 1, "unitID": 1 }, "3208": { "attributeID": 3208, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusGasHoldCapacity", "published": 0, "stackable": 1 }, "3209": { "attributeID": 3209, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusIceHoldCapacity", "published": 0, "stackable": 1 }, "3210": { "attributeID": 3210, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "minmatarIndustrialBonusGasHoldCapacity", "published": 0, "stackable": 1 }, "3211": { "attributeID": 3211, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusShipCargoCapacity", "published": 0, "stackable": 1 }, "3212": { "attributeID": 3212, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusGeneralMiningHoldCapacity", "published": 0, "stackable": 1 }, "3213": { "attributeID": 3213, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusLightDronesDamage", "published": 0, "stackable": 1 }, "3214": { "attributeID": 3214, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionFrigateBonusMediumDroneDamage", "published": 0, "stackable": 1 }, "3221": { "attributeID": 3221, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusDroneOreMiningYield", "published": 0, "stackable": 1 }, "3222": { "attributeID": 3222, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "industrialCommandBonusDroneIceHarvestingCycleTime", "published": 0, "stackable": 1 }, "3223": { "attributeID": 3223, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "capitalIndustrialShipBonusDroneOreMiningYield", "published": 0, "stackable": 1 }, "3224": { "attributeID": 3224, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "capitalIndustrialShipBonusDroneIceCycleTime", "published": 0, "stackable": 1 }, "3225": { "attributeID": 3225, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusGasHarvesterDuration", "published": 0, "stackable": 1 }, "3226": { "attributeID": 3226, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "exhumersBonusGasHarvestingDuration", "published": 0, "stackable": 1 }, "3227": { "attributeID": 3227, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Capacity of asteroid-only hold", "displayName_de": "Asteroidenfassungsvermögen", "displayName_en-us": "Asteroid Hold Capacity", "displayName_es": "Capacidad de la bodega de asteroides", "displayName_fr": "Capacité de la soute à astéroïdes", "displayName_it": "Asteroid Hold Capacity", "displayName_ja": "アステロイドホールド容量", "displayName_ko": "소행성 저장고 적재량", "displayName_ru": "Объём отсека для астероидов", "displayName_zh": "小行星矿石舱容量", "displayNameID": 591098, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialAsteroidHoldCapacity", "published": 1, "stackable": 1, "tooltipDescription_de": "Das maximale Volumen, das im Asteroidenfrachtraum gelagert werden kann", "tooltipDescription_en-us": "The total volume that can be stored in the Asteroid Hold", "tooltipDescription_es": "El volumen total que puede almacenarse en la bodega de asteroides.", "tooltipDescription_fr": "Volume total pouvant être stocké dans la soute à astéroïdes", "tooltipDescription_it": "The total volume that can be stored in the Asteroid Hold", "tooltipDescription_ja": "アステロイドホールドに積載できる総量", "tooltipDescription_ko": "소행성 저장고에 보관할 수 있는 최대 용량", "tooltipDescription_ru": "Максимальный объём, допустимый к размещению в бортовом отсеке для астероидов", "tooltipDescription_zh": "小行星矿石舱的容量", "tooltipDescriptionID": 591100, "tooltipTitleID": 591099, "unitID": 9 }, "3228": { "attributeID": 3228, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusStripMinerActivationCost", "published": 0, "stackable": 1 }, "3229": { "attributeID": 3229, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusIceHarvesterActivationCost", "published": 0, "stackable": 1 }, "3230": { "attributeID": 3230, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusOreMiningDuration", "published": 0, "stackable": 1 }, "3231": { "attributeID": 3231, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusGeneralMiningHoldCapacity", "published": 0, "stackable": 1 }, "3233": { "attributeID": 3233, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "capitalIndustrialShipBonusDroneHitPoints", "published": 0, "stackable": 1 }, "3235": { "attributeID": 3235, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "industrialCommandBonusDroneHitPoints", "published": 0, "stackable": 1 }, "3236": { "attributeID": 3236, "categoryID": 51, "dataType": 3, "defaultValue": 0.0, "description": "If set to true, this results in no mining waste.", "displayWhenZero": 0, "highIsGood": 0, "name": "ignoreMiningWaste", "published": 0, "stackable": 0 }, "3237": { "attributeID": 3237, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "miningFrigateBonusGasCloudHarvestingDuration", "published": 0, "stackable": 1 }, "3239": { "attributeID": 3239, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusGasHarvestingYield", "published": 0, "stackable": 1 }, "3240": { "attributeID": 3240, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "miningFrigateBonusIceHarvestingDuration", "published": 0, "stackable": 1 }, "3241": { "attributeID": 3241, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "gallenteIndustrialBonusMiningHoldCapacity", "published": 0, "stackable": 1 }, "3242": { "attributeID": 3242, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusDroneOreMiningYield", "published": 0, "stackable": 1 }, "3246": { "attributeID": 3246, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "displayName_de": "Optimale Reichweite", "displayName_en-us": "Optimal Range", "displayName_es": "Alcance óptimo", "displayName_fr": "Portée optimale", "displayName_it": "Optimal Range", "displayName_ja": "最適射程距離", "displayName_ko": "최적사거리", "displayName_ru": "Оптимальная дальность", "displayName_zh": "最佳射程", "displayNameID": 593073, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "pointDefenseRange", "published": 1, "stackable": 0, "unitID": 1 }, "3250": { "attributeID": 3250, "dataType": 5, "defaultValue": 0.0, "description": "eliteBonusHeavyInterdictors3", "displayWhenZero": 0, "highIsGood": 0, "name": "eliteBonusHeavyInterdictors3", "published": 0, "stackable": 0 }, "3255": { "attributeID": 3255, "dataType": 13, "defaultValue": 0.0, "description": "The ID of a typelist describing which types of item this module can compress", "displayName_de": "Komprimierbare Gegenstände", "displayName_en-us": "Compressible Items", "displayName_es": "Objetos comprimibles", "displayName_fr": "Objets compressés", "displayName_it": "Compressible Items", "displayName_ja": "圧縮可能なアイテム", "displayName_ko": "압축 가능한 아이템", "displayName_ru": "Сжимаемые ресурсы", "displayName_zh": "可压缩", "displayNameID": 594759, "displayWhenZero": 0, "highIsGood": 0, "name": "compressibleItemsTypeList", "published": 1, "stackable": 0 }, "3257": { "attributeID": 3257, "categoryID": 27, "dataType": 5, "defaultValue": 0.0, "description": "Bonus added to warp scrambler range", "displayName_de": "Bonus auf die optimale Reichweite von Warpunterbrechern", "displayName_en-us": "Warp Scrambler Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo del distorsionador de warp", "displayName_fr": "Bonus de portée optimale d'inhibiteur de warp", "displayName_it": "Warp Scrambler Optimal Range Bonus", "displayName_ja": "ワープスクランブラーの最適射程距離ボーナス", "displayName_ko": "워프 스크램블러 최적사거리 보너스", "displayName_ru": "Влияние на оптимальную дальность действия варп-глушителя", "displayName_zh": "跃迁扰频器最佳射程加成", "displayNameID": 595177, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "scramblerRangeAdd", "published": 1, "stackable": 1, "unitID": 1 }, "3258": { "attributeID": 3258, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Rumpf-Schadensresistenzbonus", "displayName_en-us": "Hull Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños en el casco", "displayName_fr": "Bonus de résistance aux dégâts de la coque", "displayName_it": "Hull Damage Resistance Bonus", "displayName_ja": "船体ダメージレジスタンスボーナス", "displayName_ko": "선체 저항력 보너스", "displayName_ru": "Увеличение сопротивляемости корпуса", "displayName_zh": "结构伤害抗性加成", "displayNameID": 595367, "displayWhenZero": 0, "highIsGood": 0, "name": "hullDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 124 }, "3260": { "attributeID": 3260, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus auf die Gasdekompressionseffizienz", "displayName_en-us": "Gas Decompression Efficiency Bonus", "displayName_es": "Bonificación de eficiencia de la descompresión de gas", "displayName_fr": "Bonus d'efficience de la décompression de gaz", "displayName_it": "Gas Decompression Efficiency Bonus", "displayName_ja": "ガス減圧効率ボーナス", "displayName_ko": "가스 압축해제 효율 보너스", "displayName_ru": "Бонус к эффективности декомпрессии газа", "displayName_zh": "气云解压效率加成", "displayNameID": 595397, "displayWhenZero": 0, "highIsGood": 1, "name": "GasDecompressionEfficiencyBonus", "published": 1, "stackable": 1 }, "3261": { "attributeID": 3261, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "structureGasDecompressionEfficiencyBonus", "published": 0, "stackable": 1, "unitID": 127 }, "3262": { "attributeID": 3262, "categoryID": 7, "dataType": 5, "defaultValue": 0.800000011920929, "displayWhenZero": 0, "highIsGood": 1, "name": "gasDecompressionBaseEfficiency", "published": 0, "stackable": 1, "unitID": 127 }, "3263": { "attributeID": 3263, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "fleetCompressionLogisticsRangeBonus", "published": 0, "stackable": 1 }, "3265": { "attributeID": 3265, "dataType": 3, "defaultValue": 0.0, "description": "An effect can check this to indicate that module activation requires ship to have an active Industrial Core module.", "displayWhenZero": 0, "highIsGood": 0, "name": "activationRequiresActiveIndustrialCore", "published": 0, "stackable": 0 }, "3266": { "attributeID": 3266, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "battleshipPlateHPBonus", "published": 0, "stackable": 1 }, "3267": { "attributeID": 3267, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "battleshipExtenderHPBonus", "published": 0, "stackable": 1 }, "3268": { "attributeID": 3268, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "battleshipBulkheadHPModifierBonus", "published": 0, "stackable": 1 }, "3317": { "attributeID": 3317, "dataType": 13, "defaultValue": 0.0, "description": "Pointer to type-list that describes which beacons a ship's jump drive can connect to", "displayWhenZero": 0, "highIsGood": 0, "name": "jumpDriveTargetBeaconTypelistID", "published": 0, "stackable": 0 }, "3318": { "attributeID": 3318, "dataType": 10, "defaultValue": 0.0, "description": "This attribute enables a ship to open a Jump Portal. Its value specifies a dogma attribute ID that a passenger ship must possess in order to travel through that Jump Portal.", "displayWhenZero": 0, "highIsGood": 0, "name": "jumpPortalPassengerRequiredAttributeID", "published": 0, "stackable": 0, "unitID": 119 }, "3319": { "attributeID": 3319, "dataType": 0, "defaultValue": 1.0, "description": "Set this attribute on a ship to declare that the ship is an eligible passenger to travel through a Titan Jump Portal", "displayWhenZero": 0, "highIsGood": 1, "name": "isTitanJumpPortalPassenger", "published": 0, "stackable": 0 }, "3320": { "attributeID": 3320, "dataType": 0, "defaultValue": 0.0, "description": "Set this attribute on a ship to declare that the ship is an eligible passenger to travel through a BlackOps Jump Portal", "displayWhenZero": 0, "highIsGood": 1, "name": "isBlackOpsJumpPortalPassenger", "published": 0, "stackable": 0 }, "3321": { "attributeID": 3321, "dataType": 10, "defaultValue": 0.0, "description": "This attribute enables a ship to activate a Jump Conduit. Its value specifies a dogma attribute ID that a passenger ship must possess in order to be carried though that Jump Conduit.", "displayWhenZero": 0, "highIsGood": 1, "name": "jumpConduitPassengerRequiredAttributeID", "published": 0, "stackable": 0, "unitID": 119 }, "3322": { "attributeID": 3322, "dataType": 0, "defaultValue": 0.0, "description": "Set this attribute on a ship to declare that the ship is an eligible passenger to be carried through a BlackOps Jump Conduit", "displayWhenZero": 0, "highIsGood": 1, "name": "isBlackOpsJumpConduitPassenger", "published": 0, "stackable": 0 }, "3324": { "attributeID": 3324, "dataType": 0, "defaultValue": 0.0, "description": "Set this attribute on a ship to declare that the ship is an eligible passenger to be carried through an Industrial Jump Conduit.", "displayWhenZero": 0, "highIsGood": 1, "name": "isIndustrialJumpConduitPassenger", "published": 0, "stackable": 0 }, "3325": { "attributeID": 3325, "dataType": 0, "defaultValue": 0.0, "description": "Set this attribute on a ship to declare that the ship is an eligible passenger to travel through an Industrial Jump Portal", "displayWhenZero": 0, "highIsGood": 1, "name": "isIndustrialJumpPortalPassenger", "published": 0, "stackable": 0 }, "3326": { "attributeID": 3326, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "capitalIndustrialCommandBonusDroneDamage", "published": 0, "stackable": 1 }, "3327": { "attributeID": 3327, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "capitalIndustrialShipBonusMiningForemanBurstRange", "published": 0, "stackable": 1 }, "3328": { "attributeID": 3328, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "subsystemBonusMassAddition", "published": 0, "stackable": 1 }, "3353": { "attributeID": 3353, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Drohnen-Nachführungsgeschwindigkeits-Bonus", "displayName_en-us": "Drone Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo del dron", "displayName_fr": "Bonus de vitesse de poursuite des drones", "displayName_it": "Drone Tracking Speed Bonus", "displayName_ja": "ドローン追跡速度ボーナス", "displayName_ko": "드론 트래킹 속도 보너스", "displayName_ru": "Бонус к скорости наведения дронов", "displayName_zh": "无人机跟踪速度加成", "displayNameID": 598958, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "droneTrackingBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3354": { "attributeID": 3354, "categoryID": 2, "dataType": 5, "defaultValue": 0.0, "displayName_de": "DPS-Schwelle zum Unterbrechen der Schildreparatur", "displayName_en-us": "DPS threshold to pause shield repair", "displayName_es": "Límite DPS para detener la reparación del escudo", "displayName_fr": "Seuil de DPS pour interrompre la réparation du bouclier", "displayName_it": "DPS threshold to pause shield repair", "displayName_ja": "シールド修復を停止させるDPSしきい値", "displayName_ko": "실드 수리가 멈추는 기준 피해량", "displayName_ru": "Порог урона/сек. для приостановки восстановления щитов", "displayName_zh": "停止护盾维修的DPS阈值", "displayNameID": 598991, "displayWhenZero": 0, "highIsGood": 1, "name": "pauseShieldRepairDpsThreshold", "published": 1, "stackable": 1, "unitID": 113 }, "3355": { "attributeID": 3355, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "displayName_de": "DPS-Schwelle zum Unterbrechen der Panzerungsreparatur", "displayName_en-us": "DPS threshold to pause armor repair", "displayName_es": "Límite DPS para detener la reparación del blindaje", "displayName_fr": "Seuil de DPS pour interrompre la réparation du blindage", "displayName_it": "DPS threshold to pause armor repair", "displayName_ja": "アーマー修復を停止させるDPSしきい値", "displayName_ko": "장갑 수리가 멈추는 기준 피해량", "displayName_ru": "Порог урона/сек. для приостановки восстановления брони", "displayName_zh": "停止装甲维修的DPS阈值", "displayNameID": 598992, "displayWhenZero": 0, "highIsGood": 1, "name": "pauseArmorRepairDpsThreshold", "published": 1, "stackable": 1, "unitID": 113 }, "3356": { "attributeID": 3356, "categoryID": 4, "dataType": 5, "defaultValue": 0.0, "displayName_de": "DPS-Schwelle zum Unterbrechen der Rumpfreparatur", "displayName_en-us": "DPS threshold to pause hull repair", "displayName_es": "Límite DPS para detener la reparación del casco.", "displayName_fr": "Seuil de DPS pour interrompre la réparation de la coque", "displayName_it": "DPS threshold to pause hull repair", "displayName_ja": "船体修復を停止させるDPSしきい値", "displayName_ko": "선체 수리가 멈추는 기준 피해량", "displayName_ru": "Порог урона/сек. для приостановки восстановления корпуса", "displayName_zh": "停止结构维修的DPS阈值", "displayNameID": 598993, "displayWhenZero": 0, "highIsGood": 1, "name": "pauseHullRepairDpsThreshold", "published": 1, "stackable": 1, "unitID": 113 }, "3422": { "attributeID": 3422, "categoryID": 36, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Widerstandsbonus gegen Stasisnetze", "displayName_en-us": "Stasis Webifier Resistance Bonus", "displayName_es": "Bonificación de resistencia a redes ralentizadoras", "displayName_fr": "Bonus de résistance du générateur de stase", "displayName_it": "Stasis Webifier Resistance Bonus", "displayName_ja": "ステイシスウェビファイヤーレジスタンスボーナス", "displayName_ko": "스테이시스 웹 생성기 저항 보너스", "displayName_ru": "Влияние на сопротивляемость стазис-индукторов", "displayName_zh": "停滞缠绕抗性加成", "displayNameID": 600127, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1389, "name": "stasisWebifierResistanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "3429": { "attributeID": 3429, "categoryID": 3, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus auf Schadensresistenz von Panzerungen", "displayName_en-us": "Armor Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños en el blindaje", "displayName_fr": "Bonus de résistance aux dégâts du blindage", "displayName_it": "Armor Damage Resistance Bonus", "displayName_ja": "アーマーダメージレジスタンスボーナス", "displayName_ko": "장갑 피해 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони", "displayName_zh": "装甲伤害抗性加成", "displayNameID": 600536, "displayWhenZero": 0, "highIsGood": 0, "name": "armorDamageResistanceBonus", "published": 1, "stackable": 0, "unitID": 124 }, "5041": { "attributeID": 5041, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusBattlecruiserHeavyMissileExplosionRadius", "published": 0, "stackable": 1 }, "5042": { "attributeID": 5042, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusBattlecruiserHeavyAssaultMissileExplosionRadius", "published": 0, "stackable": 1 }, "5044": { "attributeID": 5044, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipBonusCBC3", "published": 0, "stackable": 1 }, "5045": { "attributeID": 5045, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "roleBonusCBC2", "published": 0, "stackable": 1 }, "5046": { "attributeID": 5046, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipBonusGBC3", "published": 0, "stackable": 1 }, "5048": { "attributeID": 5048, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipRoleBonusScanProbeLauncherCPU", "published": 0, "stackable": 0 }, "5205": { "attributeID": 5205, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusABC3", "published": 0, "stackable": 1 }, "5206": { "attributeID": 5206, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "It is a Boolean Value that defaults to false. If true, it will only allow players to Hack if they belong to the Faction that is an enemy of the Occupier of the Star System.", "displayName_de": "Nur Angreifer aus dem Fraktionskrieg zulassen", "displayName_en-us": "Allow Only Factional Warfare Attackers", "displayName_es": "Permitir solo atacantes de la guerra de facciones", "displayName_fr": "N'autoriser que les assaillants de la guerre de faction", "displayName_it": "Allow Only Factional Warfare Attackers", "displayName_ja": "国家間戦争の攻撃側のみが利用可能", "displayName_ko": "팩션 전쟁 공격 측 입장 가능", "displayName_ru": "Допускать только нападающую сторону МВ", "displayName_zh": "只允许势力战争攻击方", "displayNameID": 635862, "displayWhenZero": 0, "highIsGood": 0, "name": "allowOnlyFwAttackers", "published": 0, "stackable": 0, "unitID": 137 }, "5207": { "attributeID": 5207, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipBonusMBC3", "published": 0, "stackable": 1 }, "5214": { "attributeID": 5214, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtA4", "published": 0, "stackable": 1 }, "5215": { "attributeID": 5215, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtG4", "published": 0, "stackable": 1 }, "5216": { "attributeID": 5216, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtG5", "published": 0, "stackable": 1 }, "5218": { "attributeID": 5218, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr1", "published": 0, "stackable": 1 }, "5219": { "attributeID": 5219, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr2", "published": 0, "stackable": 1 }, "5220": { "attributeID": 5220, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr3", "published": 0, "stackable": 1 }, "5221": { "attributeID": 5221, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr4", "published": 0, "stackable": 1 }, "5222": { "attributeID": 5222, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr5", "published": 0, "stackable": 1 }, "5223": { "attributeID": 5223, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr6", "published": 0, "stackable": 1 }, "5224": { "attributeID": 5224, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerAmarr7", "published": 0, "stackable": 1 }, "5225": { "attributeID": 5225, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerCaldari1", "published": 0, "stackable": 1 }, "5226": { "attributeID": 5226, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerCaldari5", "published": 0, "stackable": 1 }, "5227": { "attributeID": 5227, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerCaldari4", "published": 0, "stackable": 1 }, "5228": { "attributeID": 5228, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerCaldari2", "published": 0, "stackable": 1 }, "5229": { "attributeID": 5229, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerCaldari3", "published": 0, "stackable": 1 }, "5230": { "attributeID": 5230, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerGallente1", "published": 0, "stackable": 1 }, "5231": { "attributeID": 5231, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerGallente5", "published": 0, "stackable": 1 }, "5232": { "attributeID": 5232, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerGallente2", "published": 0, "stackable": 1 }, "5233": { "attributeID": 5233, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerGallente3", "published": 0, "stackable": 1 }, "5234": { "attributeID": 5234, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerGallente4", "published": 0, "stackable": 1 }, "5235": { "attributeID": 5235, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerMinmatar1", "published": 0, "stackable": 1 }, "5236": { "attributeID": 5236, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerMinmatar2", "published": 0, "stackable": 1 }, "5237": { "attributeID": 5237, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerMinmatar3", "published": 0, "stackable": 1 }, "5238": { "attributeID": 5238, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerMinmatar4", "published": 0, "stackable": 1 }, "5239": { "attributeID": 5239, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusNavyDestroyerMinmatar5", "published": 0, "stackable": 1 }, "5240": { "attributeID": 5240, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "skill bonus attribute3 for gallente battleship", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGB3", "published": 0, "stackable": 1 }, "5248": { "attributeID": 5248, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusDreadnoughtM4", "published": 0, "stackable": 1 }, "5265": { "attributeID": 5265, "categoryID": 9, "dataType": 3, "defaultValue": 0.0, "description": "All players will be flagged as suspect when looting a wreck with this attribute.", "displayWhenZero": 0, "highIsGood": 1, "name": "flagAllAsSuspectOnLootWreck", "published": 0, "stackable": 1 }, "5318": { "attributeID": 5318, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Ship Bonus used for Alliance Tournament Ships", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAT2", "published": 0, "stackable": 1 }, "5319": { "attributeID": 5319, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "Ship Bonus used for Alliance Tournament Ships", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAT3", "published": 0, "stackable": 1 }, "5325": { "attributeID": 5325, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Mobile Depot Hold Capacity", "displayName_de": "Hangarkapazität für Mobile Depots", "displayName_en-us": "Mobile Depot Hold Capacity", "displayName_es": "Capacidad de la bodega de almacenes móviles", "displayName_fr": "Capacité de la soute à dépôts mobiles", "displayName_it": "Mobile Depot Hold Capacity", "displayName_ja": "移動式貯蔵ホールド容量", "displayName_ko": "이동식 저장고 적재량", "displayName_ru": "Объём отсека для автономных постов снабжения", "displayName_zh": "移动式仓库舱容量", "displayNameID": 651789, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialMobileDepotHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Mobilen Depots, das im Hangar des Schiffs für Mobile Depots gelagert werden kann.", "tooltipDescription_en-us": "The total volume of mobile depots that can be stored in the ship's mobile depot hold", "tooltipDescription_es": "El volumen total de almacenes móviles que pueden almacenarse en la bodega de almacenes móviles de la nave.", "tooltipDescription_fr": "Volume total de dépôts mobiles pouvant être stockés dans la soute à dépôts mobiles du vaisseau", "tooltipDescription_it": "The total volume of mobile depots that can be stored in the ship's mobile depot hold", "tooltipDescription_ja": "艦船の移動式貯蔵ホールドに積載できる移動式貯蔵庫の総量", "tooltipDescription_ko": "함선에 적재할 수 있는 이동식 저장고의 총 부피입니다.", "tooltipDescription_ru": "Общее количество автономных постов снабжения, которые можно разместить в соответствующем отсеке корабля", "tooltipDescription_zh": "舰船的移动式仓库舱可容纳的移动式仓库总容量", "tooltipDescriptionID": 651791, "tooltipTitleID": 651790, "unitID": 9 }, "5412": { "attributeID": 5412, "categoryID": 39, "dataType": 5, "defaultValue": 0.0, "description": "Length of time for applied debuffs to persist on a target", "displayName_de": "Dauer des angewendeten Debuffs", "displayName_en-us": "Applied Debuff Duration", "displayName_es": "Duración del perjuicio aplicado", "displayName_fr": "Durée du malus appliqué", "displayName_it": "Applied Debuff Duration", "displayName_ja": "有効なデバフ持続時間", "displayName_ko": "적용된 디버프 지속 시간", "displayName_ru": "Длительность наложенного ослабления", "displayName_zh": "施加的减益效果持续时间", "displayNameID": 660832, "displayWhenZero": 0, "highIsGood": 1, "name": "doomsdayAppliedDBuffDuration", "published": 1, "stackable": 1, "unitID": 101 }, "5417": { "attributeID": 5417, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Lancer Dreadnought skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAdvancedDreadnought1", "published": 0, "stackable": 1 }, "5418": { "attributeID": 5418, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Lancer Dreadnoughts skill level", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAdvancedDreadnought2", "published": 0, "stackable": 1 }, "5419": { "attributeID": 5419, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "disruptionLanceSkillBoostCapacitorCost", "published": 0, "stackable": 1, "unitID": 105 }, "5425": { "attributeID": 5425, "categoryID": 39, "dataType": 0, "defaultValue": 0.0, "displayName_de": "Verweigert Tarnung, solange ausgerüstet", "displayName_en-us": "Disallow Cloaking While Fit", "displayName_es": "Desautorizar camuflaje mientras esté equipado", "displayName_fr": "Désactive le camouflage si équipé", "displayName_it": "Disallow Cloaking While Fit", "displayName_ja": "装備中は遮蔽使用不可", "displayName_ko": "해당 모듈 피팅 시 클로킹 불가", "displayName_ru": "Маскировка не работает, если модуль установлен", "displayName_zh": "装配时不允许隐形", "displayNameID": 662925, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2106, "name": "disruptionLanceDisallowCloaking", "published": 1, "stackable": 1, "unitID": 137 }, "5426": { "attributeID": 5426, "categoryID": 7, "dataType": 3, "defaultValue": 0.0, "description": "An effect can check this to indicate that module activation requires ship to have an active Industrial Core module.", "displayName_de": "Erfordert aktives Belagerungsmodul", "displayName_en-us": "Requires Active Siege Module", "displayName_es": "Requiere módulo de asedio activo", "displayName_fr": "Nécessite un module de siège actif", "displayName_it": "Requires Active Siege Module", "displayName_ja": "起動状態のシージモジュールが必要", "displayName_ko": "시즈 모듈 활성화 필요", "displayName_ru": "Требуется активный осадный модуль", "displayName_zh": "需要主动会战装备", "displayNameID": 662927, "displayWhenZero": 0, "highIsGood": 0, "iconID": 2851, "name": "activationRequiresActiveSiegeModule", "published": 1, "stackable": 0, "unitID": 137 }, "5429": { "attributeID": 5429, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "warpDistanceXAxis", "published": 0, "stackable": 0 }, "5430": { "attributeID": 5430, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "warpDistanceYAxis", "published": 0, "stackable": 0 }, "5431": { "attributeID": 5431, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "warpDistanceZAxis", "published": 0, "stackable": 0 }, "5432": { "attributeID": 5432, "dataType": 5, "defaultValue": 149599993856.0, "displayWhenZero": 0, "highIsGood": 0, "name": "warpItemActivationLimit", "published": 0, "stackable": 0 }, "5469": { "attributeID": 5469, "categoryID": 52, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament Ship Overheat Bonus", "displayName_de": "Überhitzungsbonus", "displayName_en-us": "Overheat Bonus", "displayName_es": "Bonificación de sobrecalentamiento", "displayName_fr": "Bonus de surchauffe", "displayName_it": "Overheat Bonus", "displayName_ja": "オーバーヒートボーナス", "displayName_ko": "과부하 보너스", "displayName_ru": "Повышение эффективности при перегрузке", "displayName_zh": "过载损伤降低", "displayNameID": 665013, "displayWhenZero": 1, "highIsGood": 1, "name": "roleBonusOverheatATHAC", "published": 0, "stackable": 1, "unitID": 105 }, "5470": { "attributeID": 5470, "categoryID": 6, "dataType": 0, "defaultValue": 0.0, "description": "Tracking Speed Bonus", "displayName_de": "Zielverfolgungsgeschwindigkeit-Bonus", "displayName_en-us": "Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo", "displayName_fr": "Bonus de vitesse de poursuite", "displayName_it": "Tracking Speed Bonus", "displayName_ja": "追跡速度ボーナス", "displayName_ko": "트래킹 속도 보너스", "displayName_ru": "Влияние на скорость слежения", "displayName_zh": "跟踪速度加成", "displayNameID": 665059, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1398, "name": "shipBonusTrackingATC1", "published": 1, "stackable": 1, "unitID": 105 }, "5561": { "attributeID": 5561, "categoryID": 9, "dataType": 4, "defaultValue": 0.0, "description": "If set on a charge or module type, will prevent it from being activated in hazard system", "displayName_de": "Kann nicht in Zarzakh verwendet werden ", "displayName_en-us": "Unusable in Zarzakh ", "displayName_es": "Inutilizable en Zarzakh ", "displayName_fr": "Inutilisable à Zarzakh ", "displayName_it": "Unusable in Zarzakh ", "displayName_ja": "ザルザクでは使用不可 ", "displayName_ko": "자르자크에서 사용 불가 ", "displayName_ru": "Нельзя использовать в Zarzakh ", "displayName_zh": "无法在扎尔扎克使用 ", "displayNameID": 669819, "displayWhenZero": 0, "highIsGood": 0, "iconID": 25803, "name": "disallowInHazardSystem", "published": 1, "stackable": 1, "unitID": 137 }, "5592": { "attributeID": 5592, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetRepairImpedanceRange", "published": 0, "stackable": 1, "unitID": 1 }, "5593": { "attributeID": 5593, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": " behaviorTargetRepairImpedanceDuration", "published": 0, "stackable": 1, "unitID": 101 }, "5594": { "attributeID": 5594, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorTargetInertiaRange", "published": 0, "stackable": 1, "unitID": 1 }, "5595": { "attributeID": 5595, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": " behaviorTargetInertiaDuration", "published": 0, "stackable": 1, "unitID": 101 }, "5599": { "attributeID": 5599, "dataType": 0, "defaultValue": 0.0, "description": "if the module is disallowed in low sec (empire space), if it also have this attribute, it will allow that module to be used in low sec system if the systems is fully corrupted", "displayWhenZero": 0, "highIsGood": 0, "name": "allowInFullyCorruptedLowSec", "published": 0, "stackable": 0 }, "5600": { "attributeID": 5600, "dataType": 0, "defaultValue": 0.0, "description": "if the module is disallowed in high sec (by disallowInEmpireSpace or disallowInHighSec), if it also have this attribute, the module can be used in high sec system ONLY WHEN the systems is fully corrupted", "displayWhenZero": 0, "highIsGood": 0, "name": "allowInFullyCorruptedHighSec", "published": 1, "stackable": 0 }, "5602": { "attributeID": 5602, "categoryID": 9, "dataType": 0, "defaultValue": 1.0, "description": "to allow capture point proximity sensors to also detect non-interactives (like NPCs/entities) ", "displayWhenZero": 0, "highIsGood": 0, "name": "captureProximityInteractivesOnly", "published": 0, "stackable": 0 }, "5603": { "attributeID": 5603, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "used for alliance tournament ships 2023, plate mass reduction", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATF3", "published": 0, "stackable": 1 }, "5604": { "attributeID": 5604, "categoryID": 7, "dataType": 0, "defaultValue": 0.0, "description": "Alliance Tournament Ship Bonus", "displayName_de": "Bonus für besondere Fähigkeit", "displayName_en-us": "Special Ability Bonus", "displayName_es": "Bonificación de capacidad especial", "displayName_fr": "Bonus d'aptitude particulière", "displayName_it": "Special Ability Bonus", "displayName_ja": "特殊能力ボーナス", "displayName_ko": "특수 능력 보너스", "displayName_ru": "Усиление особого умения", "displayName_zh": "特殊能力加成", "displayNameID": 696793, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATC3", "published": 0, "stackable": 1, "unitID": 105 }, "5617": { "attributeID": 5617, "dataType": 5, "defaultValue": 0.0, "description": "Only used by UI, price is not stored as a type_dogma value", "displayName_de": "Geschätzter Preis", "displayName_en-us": "Estimated Price", "displayName_es": "Precio estimado", "displayName_fr": "Estimation du prix", "displayName_it": "Estimated Price", "displayName_ja": "推定価格", "displayName_ko": "예상 가격", "displayName_ru": "Примерная цена", "displayName_zh": "预估价格", "displayNameID": 706662, "displayWhenZero": 1, "highIsGood": 1, "iconID": 2512, "name": "Estimated ISK Price", "published": 1, "stackable": 0, "tooltipDescription_de": "Der geschätzte durchschnittliche Marktpreis des Gegenstands", "tooltipDescription_en-us": "The estimated average market price of the item", "tooltipDescription_es": "El precio de mercado promedio estimado del objeto.", "tooltipDescription_fr": "Le prix moyen estimé de l'objet sur le marché", "tooltipDescription_it": "The estimated average market price of the item", "tooltipDescription_ja": "このアイテムの推定平均マーケット価格", "tooltipDescription_ko": "아이템의 예상 평균 거래소 가격", "tooltipDescription_ru": "Приблизительная средняя рыночная стоимость товара", "tooltipDescription_zh": "该物品的预估市场均价", "tooltipDescriptionID": 706664, "tooltipTitleID": 706663, "unitID": 133 }, "5618": { "attributeID": 5618, "dataType": 4, "defaultValue": 0.0, "description": "Clone grade level restriction (Value is always zero, only used for UI purposes)", "displayName_de": "Klonklassen-Beschränkung", "displayName_en-us": "Clone Grade Restriction", "displayName_es": "Restricción de clon de grado", "displayName_fr": "Restriction de grade de clone", "displayName_it": "Clone Grade Restriction", "displayName_ja": "クローングレード制限", "displayName_ko": "클론 그레이드 제한", "displayName_ru": "Ограничение ур. клонов", "displayName_zh": "克隆等级限制", "displayNameID": 707124, "displayWhenZero": 1, "highIsGood": 0, "iconID": 25874, "name": "cloneGradeRestriction", "published": 1, "stackable": 0 }, "5646": { "attributeID": 5646, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Infrastructure Hold Capacity", "displayName_de": "Infrastrukturhangarkapazität", "displayName_en-us": "Infrastructure Hold Capacity", "displayName_es": "Capacidad de la bodega de infraestructuras", "displayName_fr": "Capacité de la baie d'infrastructure", "displayName_it": "Infrastructure Hold Capacity", "displayName_ja": "インフラホールド容量", "displayName_ko": "구조물 격납고 적재량", "displayName_ru": "Вместимость логистического отсека", "displayName_zh": "基础设施舱容量", "displayNameID": 709012, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialColonyResourcesHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen an Infrastruktur-bezogenen Gegenständen, die im Infrastruktur-Hangar des Schiffes gelagert werden können.

Diese Gegenstände umfassen:
Kolonie-Reagenzien, Upwell-Strukturen, Strukturmodifikationen, Strukturmodule, Standup-Jäger, Strukturmunition, Quantumkerne, orbitale Skyhooks, Zollamtgerüste, Souveränitätsstrukturen, Souveränitäts-Upgrades, Mondmaterialien, Treibstoffblöcke, planetarische Güter und raffinierte Eisprodukte.", "tooltipDescription_en-us": "The total volume of infrastructure related items that can be stored in the ship's infrastructure hold.

These items include;
Colony Reagents, Upwell Structures, Structure Rigs, Structure Modules, Standup Fighters, Structure Ammo, Quantum Cores, Orbital Skyhooks, Custom Gantrys, Sovereignty Structures, Sovereignty Upgrades, Moon Materials, Fuel Blocks, Planetary Commodities and Refined Ice Products.", "tooltipDescription_es": "El volumen total de objetos relacionados con infraestructuras que pueden almacenarse en la bodega de la nave.

Estos objetos incluyen:
reactivos de colonia, estructuras de Upwell, complementos de estructura, módulos de estructuras, cazas Standup, munición de estructura, núcleos cuánticos, ganchos orbitales, andamiajes de Aduana, estructuras de soberanía, mejoras de soberanía, materiales lunares, bloques de combustible, mercancías planetarias y productos de hielo refinados.", "tooltipDescription_fr": "Le volume total des articles liés à l'infrastructure qui peuvent être stockés dans la baie d'infrastructure du vaisseau.

Ces articles comprennent :
Réactifs de colonie, Structures Upwell, Modules d'optimisation de structure, Modules de structure, Chasseurs Standup, Munitions de structure, Réacteurs quantiques, Grappins orbitaux, Grues de bureau de douane, Structures de souveraineté, Améliorations de souveraineté, Matériaux lunaires, Blocs de carburant, Marchandises planétaires et Produits de glace raffinée.", "tooltipDescription_it": "The total volume of infrastructure related items that can be stored in the ship's infrastructure hold.

These items include;
Colony Reagents, Upwell Structures, Structure Rigs, Structure Modules, Standup Fighters, Structure Ammo, Quantum Cores, Orbital Skyhooks, Custom Gantrys, Sovereignty Structures, Sovereignty Upgrades, Moon Materials, Fuel Blocks, Planetary Commodities and Refined Ice Products.", "tooltipDescription_ja": "艦船のインフラホールドに収容できるインフラ関連アイテムの合計体積。

以下のアイテムが含まれる:
コロニーの反応試剤、アップウェルストラクチャ、ストラクチャ用リグ、ストラクチャ用モジュール、スタンドアップ戦闘機、ストラクチャ用弾薬、クアンタムコア、軌道スカイフック、税関ガントリー、領有権管理設備、領有権用アップグレード、衛星資源、燃料ブロック、惑星商品、アイス精錬品。", "tooltipDescription_ko": "구조물 격납고에 적재할 수 있는 인프라 관련 아이템의 양입니다.

적재 가능 아이템:
콜로니 촉매, 업웰 구조물, 구조물 리그, 구조물 모듈, 스탠드업 파이터, 구조물 탄약, 양자코어, 궤도 스카이훅, 세관 사무소 갠트리, 소버린티 구조물, 소버린티 업그레이드, 위성 자원, 연료 블록, 행성 생산품, 정제 아이스 가공품", "tooltipDescription_ru": "Максимальная вместимость логистического отсека корабля, где хранятся грузы инфраструктурного значения.

К таким грузам относятся:
реагенты из колоний, сооружения «Апвелл», модули, надстройки и боеприпасы для сооружений, истребители на базе «Стационар», квантовые ядра, орбитальные подъёмники, каркасы для отделений таможни, объекты системы суверенитета, улучшения штаба владений, материалы со спутников, топливные блоки, планетарные товары и продукты переработки льда.", "tooltipDescription_zh": "舰船的基础设施舱所能装载的基础设施相关物品的总体积。

这些物品包括:
殖民试剂、昇威建筑、建筑改装件、建筑装备、屹立铁骑舰载机、建筑弹药、量子芯、轨道天钩、定制框架,主权建筑、主权升级件、卫星材料、燃料块、行星货物和精炼冰矿产物。", "tooltipDescriptionID": 709014, "tooltipTitleID": 709013, "unitID": 9 }, "5647": { "attributeID": 5647, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUH1", "published": 0, "stackable": 1 }, "5648": { "attributeID": 5648, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUH2", "published": 0, "stackable": 1 }, "5649": { "attributeID": 5649, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUFreighter1", "published": 0, "stackable": 1 }, "5650": { "attributeID": 5650, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUFreighter2", "published": 0, "stackable": 1 }, "5651": { "attributeID": 5651, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "upwellFreightercloakCPUPenalty", "published": 0, "stackable": 1 }, "5654": { "attributeID": 5654, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusUFreighter3", "published": 0, "stackable": 1 }, "5655": { "attributeID": 5655, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "upwellFreighterCapitalFlexHardenerFittingCapBonus", "published": 0, "stackable": 1 }, "5657": { "attributeID": 5657, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteCapacitorTransmitterDuration", "published": 0, "stackable": 1, "unitID": 101 }, "5658": { "attributeID": 5658, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteCapacitorTransmitterRange", "published": 0, "stackable": 1, "unitID": 1 }, "5659": { "attributeID": 5659, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteCapacitorTransmitterFalloff", "published": 0, "stackable": 1, "unitID": 1 }, "5660": { "attributeID": 5660, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorRemoteCapacitorTransmitterDischarge", "published": 0, "stackable": 1, "unitID": 114 }, "5681": { "attributeID": 5681, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Gruppenpassagierbonus", "displayName_en-us": "Conduit Passenger Bonus", "displayName_es": "Bonificación de pasajeros de conducto", "displayName_fr": "Bonus de passager de saut", "displayName_it": "Conduit Passenger Bonus", "displayName_ja": "コンジットジャンプ同乗者ボーナス", "displayName_ko": "점프 필드 대상 보너스", "displayName_ru": "Бонус к пассажирам при прыжке", "displayName_zh": "导管乘客加成", "displayNameID": 713460, "displayWhenZero": 0, "highIsGood": 1, "name": "conduitPassengerBonusPercent", "published": 1, "stackable": 1, "unitID": 105 }, "5682": { "attributeID": 5682, "dataType": 0, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "isCarrierJumpConduitPassenger", "published": 0, "stackable": 0 }, "5683": { "attributeID": 5683, "categoryID": 5, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Capital-MJD-Energiespeicher-Bonus", "displayName_en-us": "Capital MJD Capacitor Bonus", "displayName_es": "Bonificación de condensador MMS capital", "displayName_fr": "Bonus de capaciteur de PMS capital", "displayName_it": "Capital MJD Capacitor Bonus", "displayName_ja": "キャピタルマイクロジャンプドライブ・キャパシタボーナス", "displayName_ko": "캐피탈 마이크로 점프 드라이브 캐패시터 용량 보너스", "displayName_ru": "Бонус к накопителям МГД для КБТ", "displayName_zh": "旗舰级微型跳跃引擎电容加成", "displayNameID": 719588, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1668, "name": "capitalMJDCapReductionBonus", "published": 1, "stackable": 1, "unitID": 105 }, "5686": { "attributeID": 5686, "categoryID": 17, "dataType": 4, "defaultValue": 0.0, "description": "The maximum number of capital ships that can be jumped per activation", "displayName_de": "Maximale Anzahl an gesprungenen Capital-Schiffen", "displayName_en-us": "Maximum Capital Ships Jumped", "displayName_es": "Naves capitales máximas que han saltado", "displayName_fr": "Maximum de vaisseaux capitaux lors du saut", "displayName_it": "Maximum Capital Ships Jumped", "displayName_ja": "最大主力艦ジャンプ数", "displayName_ko": "최대 캐피탈 함선 점프", "displayName_ru": "Максимум КБТ для прыжка", "displayName_zh": "跳跃的旗舰数量上限", "displayNameID": 720852, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "mjdCapitalShipJumpCap", "published": 1, "stackable": 1 }, "5687": { "attributeID": 5687, "categoryID": 27, "dataType": 4, "defaultValue": 0.0, "description": "Attribute for MJD/MJFG modules which determines how long ships are warp scrambled for after having been jumped. If set to zero, no warp scrambling will occur. Value is in milliseconds", "displayName_de": "Warpunterbrechungsdauer", "displayName_en-us": "Warp Scramble Duration", "displayName_es": "Duración de la distorsión de warp", "displayName_fr": "Durée de l'inhibition de warp", "displayName_it": "Warp Scramble Duration", "displayName_ja": "ワープスクランブル継続時間", "displayName_ko": "워프 스크램블 지속 시간", "displayName_ru": "Длительность глушения варп-двигателей", "displayName_zh": "跃迁扰频持续时间", "displayNameID": 720944, "displayWhenZero": 0, "highIsGood": 0, "iconID": 111, "name": "mjdPostActivationScramDuration", "published": 1, "stackable": 0, "unitID": 101 }, "5688": { "attributeID": 5688, "categoryID": 7, "dataType": 11, "defaultValue": 0.0, "displayName_de": "Erfordert Souveränitätshub-Upgrade", "displayName_en-us": "Requires Sovereignty Hub Upgrade", "displayName_es": "Requiere mejora del centro de soberanía", "displayName_fr": "Nécessite l'amélioration du pôle de souveraineté", "displayName_it": "Requires Sovereignty Hub Upgrade", "displayName_ja": "領有権ハブのアップグレードが必要", "displayName_ko": "필요 소버린티 허브 업그레이드", "displayName_ru": "Требуется улучшение штаба владений", "displayName_zh": "需要使用主权中心升级件", "displayNameID": 720951, "displayWhenZero": 0, "highIsGood": 1, "name": "requiresSovHubUpgrade", "published": 1, "stackable": 1, "unitID": 116 }, "5693": { "attributeID": 5693, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Kapazität des Mondmaterial-Ertragshangars", "displayName_en-us": "Moon Material Output Bay Capacity", "displayName_es": "Capacidad de la plataforma de producción de material lunar", "displayName_fr": "Capacité de la baie de production de matériau lunaire", "displayName_it": "Moon Material Output Bay Capacity", "displayName_ja": "衛星資源産出ベイ容量", "displayName_ko": "위성 자원 저장소 적재량", "displayName_ru": "Вместимость отсека для материалов со спутников", "displayName_zh": "卫星材料输出舱容量", "displayNameID": 721129, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "outputMoonMaterialBayCapacity", "published": 1, "stackable": 1, "unitID": 9 }, "5694": { "attributeID": 5694, "dataType": 4, "defaultValue": 0.0, "description": "While this value is > 0 for a ship, that ship cannot be moved by Micro Jump effects. This includes Micro Jump Drives and Micro Jump Field Generators. ", "displayWhenZero": 0, "highIsGood": 0, "name": "microJumpBlocked", "published": 0, "stackable": 0 }, "5700": { "attributeID": 5700, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "description": "For use with the Networked Sensor Array dogma effect, moduleBonusNetworkedSensorArray [6567]. If this value is set to 1, prevent activation of a Capital Micro Jump Drive or Capital Micro Jump Field Generator.", "displayName_de": "Aktivierung des Capital-Mikrosprungs verbieten", "displayName_en-us": "Disallow Capital Micro Jump Activation", "displayName_es": "Desautorizar activación de microsalto capital", "displayName_fr": "Interdire l'activation du micro-saut capital", "displayName_it": "Disallow Capital Micro Jump Activation", "displayName_ja": "キャピタル・マイクロジャンプの起動不可", "displayName_ko": "캐피탈 마이크로 점프 드라이브 사용 금지", "displayName_ru": "Запрет на активацию маневрового гипердвигателя КБТ", "displayName_zh": "禁止激活旗舰级微型跳跃", "displayNameID": 722777, "displayWhenZero": 0, "highIsGood": 0, "iconID": 20971, "name": "networkedSensorArrayDisallowCapitalMicroJump", "published": 1, "stackable": 0, "unitID": 137 }, "5701": { "attributeID": 5701, "categoryID": 4, "dataType": 11, "defaultValue": 0.0, "description": "Module type ID to pre-fit as structure core", "displayWhenZero": 0, "highIsGood": 1, "name": "preFitStructureCore", "published": 0, "stackable": 1 }, "5705": { "attributeID": 5705, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": " upwellHaulersMediumMissileFittingBonus", "published": 0, "stackable": 1 }, "5727": { "attributeID": 5727, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "Alliance Tournament XX Frigate Bonus", "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 5732, "name": "ATFrigDmgBonus", "published": 0, "stackable": 1 }, "5728": { "attributeID": 5728, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATInverseSecStatus", "published": 0, "stackable": 1 }, "5729": { "attributeID": 5729, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ShipBonusAllShieldResistAT1", "published": 0, "stackable": 1 }, "5731": { "attributeID": 5731, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 5732, "name": "ATNegSecStatusLocalShieldArmorBonus", "published": 0, "stackable": 1 }, "5732": { "attributeID": 5732, "dataType": 5, "defaultValue": 100.0, "displayWhenZero": 0, "highIsGood": 1, "name": "constantHundred", "published": 0, "stackable": 1 }, "5733": { "attributeID": 5733, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusATprobDuration", "published": 0, "stackable": 1 }, "5734": { "attributeID": 5734, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 5732, "name": "ATBurstJammerStrengthBonus", "published": 0, "stackable": 1 }, "5735": { "attributeID": 5735, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Schadenseffektdauer", "displayName_en-us": "Damage effect duration", "displayName_es": "Duración del efecto de daño", "displayName_fr": "Durée de l'effet de dégâts", "displayName_it": "Damage effect duration", "displayName_ja": "ダメージ発生時間", "displayName_ko": "피해 효과 지속시간", "displayName_ru": "Длительность эффекта урона", "displayName_zh": "伤害效果持续时间", "displayNameID": 727532, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1392, "name": "dotDuration", "published": 1, "stackable": 1, "unitID": 101 }, "5736": { "attributeID": 5736, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Maximaler Schaden pro Sekunde", "displayName_en-us": "Maximum damage per second", "displayName_es": "Daño por segundo máximo", "displayName_fr": "Dégâts maximum par seconde", "displayName_it": "Maximum damage per second", "displayName_ja": "最大秒間ダメージ", "displayName_ko": "최대 초당 피해량", "displayName_ru": "Максимальный урон в секунду", "displayName_zh": "每秒最大伤害", "displayNameID": 727533, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "dotMaxDamagePerTick", "published": 1, "stackable": 1, "unitID": 113 }, "5737": { "attributeID": 5737, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Maximaler Prozentsatz des Ziel-HP-Schadens pro Sekunde", "displayName_en-us": "Maximum percentage of target HP damaged per second", "displayName_es": "Porcentaje máximo de PV del objetivo dañados por segundo", "displayName_fr": "Pourcentage maximal de PV de dégâts de la cible par seconde", "displayName_it": "Maximum percentage of target HP damaged per second", "displayName_ja": "ターゲットのHPに与える秒間割合ダメージの上限(%)", "displayName_ko": "초당 목표의 내구도 비례 최대 피해량", "displayName_ru": "Максимальный процент урона по врагу в секунду.", "displayName_zh": "每秒对目标HP造成的最大百分比伤害", "displayNameID": 727534, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "dotMaxHPPercentagePerTick", "published": 1, "stackable": 1, "unitID": 105 }, "5739": { "attributeID": 5739, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATfrigHTdmgBonus", "published": 0, "stackable": 1 }, "5740": { "attributeID": 5740, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATfrigSMdmgBonus", "published": 0, "stackable": 1 }, "5741": { "attributeID": 5741, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATfrigPTdmgBonus", "published": 0, "stackable": 1 }, "5742": { "attributeID": 5742, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATfrigETdmgBonus", "published": 0, "stackable": 1, "unitID": 105 }, "5743": { "attributeID": 5743, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 5732, "name": "ATcruiserStasisWebifierBonus", "published": 0, "stackable": 1 }, "5744": { "attributeID": 5744, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "maxAttributeID": 5732, "name": "ATcruiserScramblerDisruptorBonus", "published": 0, "stackable": 1 }, "5745": { "attributeID": 5745, "dataType": 5, "defaultValue": 0.0, "description": "The ID of a typeList that defines the whitelist of types that can be valid targets for this module", "displayWhenZero": 0, "highIsGood": 0, "name": "validTargetWhitelist", "published": 0, "stackable": 0 }, "5746": { "attributeID": 5746, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATfrigDroneBonus", "published": 0, "stackable": 1 }, "5747": { "attributeID": 5747, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ShipBonusMC3", "published": 0, "stackable": 1 }, "5748": { "attributeID": 5748, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "ATcruiserDroneBonus", "published": 0, "stackable": 1 }, "5749": { "attributeID": 5749, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "displayName_de": "Maximaler Prozentsatz des Bonus auf Ziel-HP-Schaden pro Sekunde", "displayName_en-us": "Maximum percentage of target HP damaged per second bonus", "displayName_es": "Bonificación de porcentaje máximo de PV del objetivo dañados por segundo", "displayName_fr": "Pourcentage maximal de bonus de PV de dégâts de la cible par seconde", "displayName_it": "Maximum percentage of target HP damaged per second bonus", "displayName_ja": "ターゲットのHPに与える秒間割合ダメージの上限(%)へのボーナス", "displayName_ko": "목표 내구도 비례 최대 초당 피해량 증가", "displayName_ru": "Бонус к максимальному проценту урона по врагу в секунду", "displayName_zh": "每秒对目标HP造成的最大百分比伤害加成", "displayNameID": 871401, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "dotMaxHPPercentagePerTickBonus", "published": 1, "stackable": 0, "unitID": 124 }, "5750": { "attributeID": 5750, "categoryID": 7, "dataType": 5, "defaultValue": 1.0, "displayName_de": "Maximaler Bonus auf Schaden pro Sekunde", "displayName_en-us": "Maximum damage per second bonus", "displayName_es": "Bonificación de daño por segundo máximo", "displayName_fr": "Bonus de dégâts maximum par seconde", "displayName_it": "Maximum damage per second bonus", "displayName_ja": "最大秒間ダメージへのボーナス", "displayName_ko": "최대 초당 피해량 증가", "displayName_ru": "Бонус к максимальному урону в секунду", "displayName_zh": "每秒最大伤害加成", "displayNameID": 871402, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1387, "name": "dotMaxDamagePerTickBonus", "published": 1, "stackable": 0, "unitID": 124 }, "5754": { "attributeID": 5754, "categoryID": 4, "dataType": 1, "defaultValue": 0.0, "description": "the loot tableID that will drop once the structure is destroyed", "displayWhenZero": 0, "highIsGood": 0, "name": "structureDropLootTableID", "published": 0, "stackable": 0 }, "5759": { "attributeID": 5759, "dataType": 4, "defaultValue": 1.0, "description": "attribute that, along with aspectRatioHeight, describes the proportions of videos/images in a puzzle", "displayWhenZero": 0, "highIsGood": 0, "name": "aspectRatioWidth", "published": 0, "stackable": 0 }, "5760": { "attributeID": 5760, "dataType": 4, "defaultValue": 1.0, "description": "attribute that, along with aspectRatioWidth, describes the proportions of videos/images in a puzzle", "displayWhenZero": 0, "highIsGood": 0, "name": "aspectRatioHeight", "published": 0, "stackable": 0 }, "5767": { "attributeID": 5767, "categoryID": 17, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipBonusSiegeSpeedMultiplier", "published": 0, "stackable": 0 }, "5770": { "attributeID": 5770, "categoryID": 4, "dataType": 0, "defaultValue": 1.0, "description": "Set's whether or not a structure will automatically repair itself.", "displayWhenZero": 0, "highIsGood": 0, "name": "CanHaveAutoRepair", "published": 0, "stackable": 0, "unitID": 137 }, "5771": { "attributeID": 5771, "categoryID": 4, "dataType": 0, "defaultValue": 1.0, "description": "Can a structure have armor phases", "displayWhenZero": 0, "highIsGood": 0, "name": "CanHaveArmorPhases", "published": 0, "stackable": 0, "unitID": 137 }, "5772": { "attributeID": 5772, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusCommandShips4", "published": 0, "stackable": 1 }, "5783": { "attributeID": 5783, "categoryID": 7, "dataType": 4, "defaultValue": 0.0, "displayName_de": "Aktivierungsverzögerung", "displayName_en-us": "Activation Delay", "displayName_es": "Demora de activación", "displayName_fr": "Retard de l'activation", "displayName_it": "Activation Delay", "displayName_ja": "起動遅延", "displayName_ko": "작동 준비 시간", "displayName_ru": "Задержка перед активацией", "displayName_zh": "激活延迟", "displayNameID": 1010371, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "filamentSpoolupTimeSeconds", "published": 1, "stackable": 0, "unitID": 3 }, "5787": { "attributeID": 5787, "dataType": 0, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBloodRaiderCapitalNosSignatureReductionMultiplyer", "published": 0, "stackable": 1 }, "5792": { "attributeID": 5792, "categoryID": 9, "dataType": 5, "defaultValue": 0.0, "description": "fourth bonus for support cruisers", "displayWhenZero": 0, "highIsGood": 1, "name": "eliteBonusLogistics4", "published": 0, "stackable": 1 }, "5796": { "attributeID": 5796, "categoryID": 7, "dataType": 5, "defaultValue": 2147483648000.0, "description": "Maximum range (in metres) that a ship's Directional Scanner can reach", "displayName_de": "Maximale Reichweite für Richtungsscan", "displayName_en-us": "Maximum Directional Scan Range", "displayName_es": "Alcance de escaneo direccional máximo", "displayName_fr": "Portée maximale du scanner directionnel", "displayName_it": "Maximum Directional Scan Range", "displayName_ja": "指向性スキャンの最大範囲", "displayName_ko": "최대 전방위 스캔 범위", "displayName_ru": "Макс. дальность пеленгатора", "displayName_zh": "最大定向扫描范围", "displayNameID": 1011405, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1391, "name": "maxDirectionalScanRange", "published": 1, "stackable": 1, "tooltipDescription_de": "Die maximale Reichweite, in der dieses Schiff seinen Richtungsscanner einsetzen kann", "tooltipDescription_en-us": "The maximum range at which this ship can operate its directional scanner", "tooltipDescription_es": "El alcance máximo en el que esta nave puede operar su escáner direccional.", "tooltipDescription_fr": "La portée maximale à laquelle ce vaisseau peut utiliser son scanner directionnel", "tooltipDescription_it": "The maximum range at which this ship can operate its directional scanner", "tooltipDescription_ja": "この艦船が指向性スキャナーを操作できる最大範囲", "tooltipDescription_ko": "함선이 운용할 수 있는 전방위 스캐너의 최대사거리", "tooltipDescription_ru": "Макс. дальность действия пеленгатора на этом корабле", "tooltipDescription_zh": "舰船可通过定向扫描仪扫描的最大范围", "tooltipDescriptionID": 1011407, "tooltipTitleID": 1011406, "unitID": 1 }, "5798": { "attributeID": 5798, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "implantSetHackingVirusCoherenceOmegaSetBonus", "published": 0, "stackable": 1 }, "5799": { "attributeID": 5799, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus auf Virenkohärenz", "displayName_en-us": "Virus Coherence Bonus", "displayName_es": "Bonificación a la coherencia del virus", "displayName_fr": "Bonus de résistance virale", "displayName_it": "Virus Coherence Bonus", "displayName_ja": "ウイルスコヒーレンスボーナス", "displayName_ko": "바이러스 결합도 보너스", "displayName_ru": "Усиление целостности вируса", "displayName_zh": "病毒同步率加成", "displayNameID": 1011492, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2856, "name": "implantSetHackingVirusCoherenceModifier", "published": 1, "stackable": 1, "tooltipDescription_de": "Bonus auf Virenkohärenz für Daten- und Reliktanalysegeräte", "tooltipDescription_en-us": "Bonus to Virus Coherence for Data and Relic Analyzers", "tooltipDescription_es": "Bonificación a la coherencia del virus para analizadores de reliquias y datos.", "tooltipDescription_fr": "Bonus à la résistance virale pour les analyseurs de données et de reliques", "tooltipDescription_it": "Bonus to Virus Coherence for Data and Relic Analyzers", "tooltipDescription_ja": "データ・遺物アナライザーのウイルスコヒーレンスへのボーナス", "tooltipDescription_ko": "데이터 및 유물 분석기의 바이러스 결합도 보너스", "tooltipDescription_ru": "Бонус к целостн. вируса для анализ. данных и артефактов", "tooltipDescription_zh": "数据分析仪和遗迹分析仪的病毒同步率加成", "tooltipDescriptionID": 1011494, "tooltipTitleID": 1011493, "unitID": 139 }, "5800": { "attributeID": 5800, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This doesn't actually do anything... It's just to show the omega set bonus % in the client without also showing the real dogma value at 1.0x on the implants.", "displayName_de": "Wedge-Implantatsetbonus", "displayName_en-us": "Wedge Implant Set Bonus", "displayName_es": "Bonificación de conjunto de implantes Wedge", "displayName_fr": "Bonus de l'ensemble d'implants Wedge", "displayName_it": "Wedge Implant Set Bonus", "displayName_ja": "ウェッジインプラントセットボーナス", "displayName_ko": "웨지 임플란트 세트 보너스", "displayName_ru": "Бонус комплекта имплантов «Клин»", "displayName_zh": "分裂植入体系列加成", "displayNameID": 1011575, "displayWhenZero": 0, "highIsGood": 1, "iconID": 2856, "name": "implantSetHackingVirusCoherenceOmegaSetBonusFAKE", "published": 1, "stackable": 1, "tooltipDescription_de": "Bonus für die sekundären Effekte aller anderen eingebauten Implantate, die zum Wedge-Set gehören. ", "tooltipDescription_en-us": "Bonus provided to the secondary effects of all other implants that belong to the Wedge set that are currently plugged in. ", "tooltipDescription_es": "Bonificación proporcionada a los efectos secundarios de todos los demás implantes que pertenecen al conjunto Wedge y que están conectados actualmente. ", "tooltipDescription_fr": "Bonus accordé aux effets secondaires de tous les autres implants appartenant à l'ensemble Wedge qui sont actuellement connectés. ", "tooltipDescription_it": "Bonus provided to the secondary effects of all other implants that belong to the Wedge set that are currently plugged in. ", "tooltipDescription_ja": "現在装着中の、ウェッジセットに含まれるその他の全インプラントの第2効果に適用されるボーナス。 ", "tooltipDescription_ko": "현재 장착한 다른 웨지 세트에 해당하는 임플란트의 보조 효과에 보너스가 제공됩니다. ", "tooltipDescription_ru": "Бонус к дополнительным эффектам всех других действующих имплантов из комплекта «Клин». ", "tooltipDescription_zh": "为当前已插入的“分裂”系列的其他所有植入体提供次要效果加成。 ", "tooltipDescriptionID": 1011577, "tooltipTitleID": 1011576, "unitID": 105 }, "5804": { "attributeID": 5804, "dataType": 2, "defaultValue": 0.0, "description": "to keep track of what is the current damage multiplier bonus for a weapon", "displayWhenZero": 0, "highIsGood": 1, "name": "damageMultiplierBonusCurrent", "published": 0, "stackable": 0 }, "5818": { "attributeID": 5818, "dataType": 2, "defaultValue": 0.0, "description": "to keep track of when is the damage multiplier bonus reaches its max value. This value is in blue time", "displayWhenZero": 0, "highIsGood": 0, "name": "damageMultiplierBonusMaxTimestamp", "published": 0, "stackable": 0 }, "5820": { "attributeID": 5820, "categoryID": 37, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreDestroyer1", "published": 0, "stackable": 1 }, "5821": { "attributeID": 5821, "categoryID": 37, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreDestroyer2", "published": 0, "stackable": 1 }, "5822": { "attributeID": 5822, "categoryID": 37, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreDestroyer3", "published": 0, "stackable": 1 }, "5939": { "attributeID": 5939, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSoEECS1", "published": 0, "stackable": 1 }, "5940": { "attributeID": 5940, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSoEECS2", "published": 0, "stackable": 1 }, "5941": { "attributeID": 5941, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSoEECS3", "published": 0, "stackable": 1 }, "5942": { "attributeID": 5942, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSoEECS4", "published": 0, "stackable": 1 }, "5943": { "attributeID": 5943, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusSoEECS5", "published": 0, "stackable": 1 }, "5944": { "attributeID": 5944, "categoryID": 40, "dataType": 5, "defaultValue": 0.0, "description": "Expedition Hold Capacity", "displayName_de": "Expeditionshangarkapazität", "displayName_en-us": "Expedition Hold Capacity", "displayName_es": "Capacidad de la bodega de expedición", "displayName_fr": "Capacité de la soute d'expédition", "displayName_it": "Expedition Hold Capacity", "displayName_ja": "探査用ホールド容量", "displayName_ko": "탐사 저장고 적재량", "displayName_ru": "Вместимость экспедиционного отсека", "displayName_zh": "远征货舱容量", "displayNameID": 1017844, "displayWhenZero": 0, "highIsGood": 1, "iconID": 71, "name": "specialExpeditionHoldCapacity", "published": 1, "stackable": 0, "tooltipDescription_de": "Das Gesamtvolumen von erkundungsbezogenen Gegenständen, die typischerweise aus kosmischen Signaturen stammen und im Expeditionshangar des Schiffes gelagert werden können, sowie andere Gegenstände, die für eine erweiterte Expedition benötigt werden.

Dazu zählen Gegenstände wie:
Datenkerne, Altmaterial, stationierbare Strukturen, Waren, Bekleidung, SKINs, Scansonden, Kommandostrahlenladungen, Energiespeicher-Booster-Ladungen und Gas.", "tooltipDescription_en-us": "The total volume of exploration related items typically found from cosmic signatures that can be stored in the ship's expedition hold, and other items needed for an extended expedition.

This includes item such as;
Datacores, Salvage, Deployables, Commodities, Apparel, SKINs, Scanner Probes, Command Burst Charges, Capacitor Booster Charges and Gas", "tooltipDescription_es": "El volumen total de los objetos relacionados con la exploración que suelen encontrarse en señales cósmicas y que pueden almacenarse en la bodega de expedición de la nave, junto con otros artículos necesarios para una expedición prolongada.

Esto incluye objetos como:
núcleos de datos, restos, estructuras desplegables, bienes comerciales, indumentaria, SKIN, sondas escáner, cargas de estallido de mando, cargas de potenciador de condensador y gas.", "tooltipDescription_fr": "Le volume total d'objets liés à l'exploration, généralement issus de signatures cosmiques et pouvant être stockés dans la soute d'expédition du vaisseau, ainsi que d'autres objets nécessaires pour une expédition prolongée.

Ceci inclut des objets tels que :
des banques de données, des récupérations, des structures déployables, des marchandises, des tenues, des SKINS, des sondes de balayage, des charges de salve de commandement, des charges de booster de capaciteur et du gaz", "tooltipDescription_it": "The total volume of exploration related items typically found from cosmic signatures that can be stored in the ship's expedition hold, and other items needed for an extended expedition.

This includes item such as;
Datacores, Salvage, Deployables, Commodities, Apparel, SKINs, Scanner Probes, Command Burst Charges, Capacitor Booster Charges and Gas", "tooltipDescription_ja": "宇宙のシグネチャで入手することが多い探査用ホールドに収容可能な探検関連アイテムと、長期探査に必要なその他のアイテムの総容量。

以下のアイテムを収容できる:
データコア、サルベージ品、配置可能物、加工品、アパレル、SKIN、スキャナープローブ、コマンドバーストチャージ、キャパシタブースターチャージ、ガス", "tooltipDescription_ko": "함선의 탐사 저장고 최대 적재량입니다. 코즈믹 시그니처 탐사 활동으로 획득할 수 있는 아이템과 탐사 활동에 필요한 아이템을 보관할 수 있습니다.

다음 아이템이 보관됩니다:
데이터코어, 샐비지, 전개물, 물자, 의상, SKIN, 스캔 프로브, 커맨드 버스트 차지, 캐패시터 부스터 차지, 가스", "tooltipDescription_ru": "Общий объём предметов, полученных в ходе изучения космических сигнатур и иной исследовательской деятельности, а также предметов для продолжительных экспедиций, которые можно хранить в экспедиционном отсеке корабля.

К таким предметам относятся
инфоблоки, демонтированные компоненты, полевые блоки, товары, одежда, аксессуары, окраски, разведзонды, газ, заряды импульсных оптимизаторов и заряды системы пополнения накопителя.", "tooltipDescription_zh": "探索相关物品的总体积,特别是那些通过空间信号发现、可以储存在舰船远征货舱的物品,以及延长远征时间所需的其他物品。

其中包括以下物品:
数据核心、打捞物、可部署设备、常见物品、服饰、涂装、扫描探针、指挥脉冲波弹药、电容注电器装料和气体", "tooltipDescriptionID": 1017846, "tooltipTitleID": 1017845, "unitID": 9 }, "5945": { "attributeID": 5945, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGasCloudScoopCPUreductionSOEECSrole", "published": 0, "stackable": 1 }, "5948": { "attributeID": 5948, "categoryID": 1, "dataType": 11, "defaultValue": 0.0, "displayName_de": "Kann eingebaut werden in", "displayName_en-us": "Can be fitted to", "displayName_es": "Se puede equipar con", "displayName_fr": "Peut être installé sur", "displayName_it": "Can be fitted to", "displayName_ja": "装着可能対象:", "displayName_ko": "피팅 가능한 대상:", "displayName_ru": "Устанавливается на", "displayName_zh": "可以装配至", "displayNameID": 1017934, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1443, "name": "canFitShipType12", "published": 1, "stackable": 1, "unitID": 116 }, "5949": { "attributeID": 5949, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "description": "This doesn't actually do anything... It's just to show the dbuff % increases in the client which currently doesn't display this and we rely on the module descriptions to inform players. ", "displayName_de": "Bonus auf die effektive Stärke von Kommandostrahlen", "displayName_en-us": "Command Burst Effect Strength Bonus", "displayName_es": "Bonificación de potencia de efecto de estallido de mando", "displayName_fr": "Bonus de puissance des effets des salves de commandement", "displayName_it": "Command Burst Effect Strength Bonus", "displayName_ja": "コマンドバーストの効果強度ボーナス", "displayName_ko": "커맨드 버스트 효과 강화 보너스", "displayName_ru": "Повышение эффективности импульсных оптимизаторов", "displayName_zh": "指挥脉冲波效果强度加成", "displayNameID": 1017959, "displayWhenZero": 0, "highIsGood": 1, "iconID": 1444, "name": "commandBurstDbuffEffectStrengthFAKE", "published": 1, "stackable": 1, "tooltipDescription_de": "Bonus auf die Effektstärke von Kommandostrahlenladungen, die von diesem Modul gestartet werden.", "tooltipDescription_en-us": "Bonus to the effect strength of command burst charges launched from this module.", "tooltipDescription_es": "Bonificación a la intensidad del efecto de las cargas de estallido de mando que se lancen desde este módulo.", "tooltipDescription_fr": "Bonus à la puissance de l'effet des charges de salve de commandement lancées depuis ce module.", "tooltipDescription_it": "Bonus to the effect strength of command burst charges launched from this module.", "tooltipDescription_ja": "このモジュールから発射されるコマンドバーストチャージの効果にボーナス。", "tooltipDescription_ko": "해당 모듈로 발사하는 커맨드 버스트의 효과가 강화됩니다.", "tooltipDescription_ru": "Повышение эффективности зарядов импульсного оптимизатора, выпущенных этим модулем.", "tooltipDescription_zh": "由此装备发射的指挥脉冲波弹药的效果强度提高", "tooltipDescriptionID": 1017961, "tooltipTitleID": 1017960, "unitID": 105 }, "5950": { "attributeID": 5950, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "Role Bonus for ORE Executive Issue Ships for mining hold amount.", "displayWhenZero": 0, "highIsGood": 1, "name": "oreExecutiveRoleBonusMiningHoldAmount", "published": 0, "stackable": 1 }, "5952": { "attributeID": 5952, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusGasCloudDurationRoleBonusOreMiningDestroyer", "published": 0, "stackable": 1 }, "5953": { "attributeID": 5953, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusOreDestroyer4", "published": 0, "stackable": 1 }, "5954": { "attributeID": 5954, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficulty", "published": 0, "stackable": 1 }, "5955": { "attributeID": 5955, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "OreMiningFrigateExecutiveShieldBoosterShipBonus", "published": 0, "stackable": 1 }, "5956": { "attributeID": 5956, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "shipBonusCBC4", "published": 0, "stackable": 1 }, "5958": { "attributeID": 5958, "dataType": 4, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "qaMaxDroneControl", "published": 0, "stackable": 1 }, "5960": { "attributeID": 5960, "dataType": 5, "defaultValue": 5.0, "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusAB3", "published": 0, "stackable": 1 }, "5961": { "attributeID": 5961, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "modeRemoteRepairCapacitorCostPostDiv", "published": 0, "stackable": 1 }, "5962": { "attributeID": 5962, "categoryID": 7, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "modeRemoteRepairBonusPostDiv", "published": 0, "stackable": 1 }, "5964": { "attributeID": 5964, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Reduces the cycle time and capacitor cost of Armor Repairer modules for the bastion module. ", "displayName_de": "Bonus auf die Dauer von Panzerungreparatur / Schildboostern und Energiespeicher", "displayName_en-us": "Armor Repairer Duration and Capacitor Bonus", "displayName_es": "Bonificación de condensador y duración de potenciador de escudo/reparador de blindaje", "displayName_fr": "Bonus de durée et de capaciteur du réparateur de blindage / booster de bouclier", "displayName_it": "Armor Repairer Duration and Capacitor Bonus", "displayName_ja": "アーマーリペアラ/シールドブースターの有効時間とキャパシタボーナス", "displayName_ko": "장갑수리 장치 / 실드 부스터 지속시간 및 캐패시터 보너스", "displayName_ru": "Бонус к расходу энергии накопителя и длительности работы установки ремонта брони / модуля накачки щитов", "displayName_zh": "装甲维修器/护盾回充增量器的持续时间和电容器加成", "displayNameID": 1018792, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "bastionModeArmorRepairCapDurationBonus", "published": 1, "stackable": 1, "tooltipDescription_de": "Verringert die Zykluszeit und den Energiespeicherverbrauch von Panzerungsreparatursystemen und Schildboostern, um die Reparaturleistung zu verbessern. ", "tooltipDescription_en-us": "Reduces the cycle time and capacitor cost of Armor Repairers improving repair throughput. ", "tooltipDescription_es": "Reduce el tiempo de ciclo y el coste del condensador de los reparadores de blindaje y los potenciadores de escudo que mejoran el rendimiento de reparación. ", "tooltipDescription_fr": "Réduit le temps de cycle et le coût de capaciteur des réparateurs de blindage et des boosters de bouclier afin d'améliorer le débit de réparation. ", "tooltipDescription_it": "Reduces the cycle time and capacitor cost of Armor Repairers improving repair throughput. ", "tooltipDescription_ja": "アーマーリペアラとシールドブースターのサイクル時間とキャパシタ消費量を減少させ、リペア能力を向上させる。 ", "tooltipDescription_ko": "장갑수리 장치 및 실드 부스터의 사이클 시간 및 캐패시터 사용량이 감소해 수리 효과가 증가합니다. ", "tooltipDescription_ru": "Уменьшает время цикла и расход энергии накопителя для установок ремонта брони и модулей накачки щитов, повышая общую эффективность ремонта. ", "tooltipDescription_zh": "降低装甲维修器和护盾回充增量器的循环时间和电容器成本,从而提升维修吞吐量。 ", "tooltipDescriptionID": 1018794, "tooltipTitleID": 1018793, "unitID": 105 }, "5967": { "attributeID": 5967, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Kritische Erfolgswahrscheinlichkeit", "displayName_en-us": "Critical Success Chance", "displayName_es": "Probabilidad de éxito crítico", "displayName_fr": "Probabilité de succès critiques", "displayName_it": "Critical Success Chance", "displayName_ja": "クリティカル率", "displayName_ko": "대량 채굴 확률", "displayName_ru": "Вероятность крит. удара", "displayName_zh": "暴击成功率", "displayNameID": 1019273, "displayWhenZero": 0, "highIsGood": 1, "iconID": 22, "maxAttributeID": 5968, "minAttributeID": 2623, "name": "miningCritChance", "published": 1, "stackable": 1, "unitID": 127 }, "5968": { "attributeID": 5968, "dataType": 5, "defaultValue": 1.0, "displayWhenZero": 0, "highIsGood": 1, "name": "constantOne", "published": 0, "stackable": 1 }, "5969": { "attributeID": 5969, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonusertrag bei kritischem Erfolg", "displayName_en-us": "Critical Success Bonus Yield", "displayName_es": "Beneficio extra de éxito crítico", "displayName_fr": "Bonus de rendement de succès critique", "displayName_it": "Critical Success Bonus Yield", "displayName_ja": "クリティカル発生時のボーナス産出量", "displayName_ko": "대량 채굴 산출량", "displayName_ru": "Дополнительная добыча при крит. ударе", "displayName_zh": "成功暴击额外收益", "displayNameID": 1019275, "displayWhenZero": 0, "highIsGood": 1, "iconID": 22, "minAttributeID": 2623, "name": "miningCritBonusYield", "published": 1, "stackable": 1, "unitID": 127 }, "5970": { "attributeID": 5970, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorCommandBurstDuration", "published": 0, "stackable": 1, "unitID": 101 }, "5971": { "attributeID": 5971, "categoryID": 42, "dataType": 4, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorCommandBurstRange", "published": 0, "stackable": 0, "unitID": 1 }, "5972": { "attributeID": 5972, "categoryID": 42, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "behaviorCommandBurstDischarge", "published": 0, "stackable": 1 }, "5978": { "attributeID": 5978, "dataType": 3, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "integratedMiningScanner", "published": 0, "stackable": 0 }, "5979": { "attributeID": 5979, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "maxAttributeID": 5985, "name": "miningScannerUpgrade", "published": 0, "stackable": 0 }, "5981": { "attributeID": 5981, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierA5", "published": 0, "stackable": 1 }, "5982": { "attributeID": 5982, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierC5", "published": 0, "stackable": 1 }, "5983": { "attributeID": 5983, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierG5", "published": 0, "stackable": 1 }, "5984": { "attributeID": 5984, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusCarrierM5", "published": 0, "stackable": 1 }, "5985": { "attributeID": 5985, "dataType": 5, "defaultValue": 2.0, "displayWhenZero": 0, "highIsGood": 1, "name": "constantTwo", "published": 0, "stackable": 1 }, "5986": { "attributeID": 5986, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Role bonus for the Pioneer and Pioneer Executive Issue for mining yield amount. ", "displayWhenZero": 0, "highIsGood": 1, "name": "shipMiningBonusYieldOreDestroyerRoleBonus", "published": 0, "stackable": 1 }, "5988": { "attributeID": 5988, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Armor Repairer / Shield Booster Capacitor Need Bonus", "displayName_de": "Energiespeicherverbrauchsbonus für Panzerungsreparatursystem / Schildbooster", "displayName_en-us": "Armor Repairer / Shield Booster Capacitor Need Bonus", "displayName_es": "Bonificación de necesidad del condensador de potenciadores de escudo/reparadores de blindaje", "displayName_fr": "Bonus de consommation de capaciteur du réparateur de blindage / booster de bouclier", "displayName_it": "Armor Repairer / Shield Booster Capacitor Need Bonus", "displayName_ja": "アーマーリペアラ/シールドブースターのキャパシタ消費ボーナス", "displayName_ko": "장갑수리 장치 / 실드 부스터 캐패시터 요구량 보너스", "displayName_ru": "Снижение расхода энергии на установку ремонта брони / модуль накачки щитов", "displayName_zh": "装甲维修器/护盾回充增量器电容需求加成", "displayNameID": 1021728, "displayWhenZero": 0, "highIsGood": 0, "iconID": 2104, "name": "siegeLocalLogisticsCapacitorNeedBonus", "published": 1, "stackable": 1, "unitID": 105 }, "6042": { "attributeID": 6042, "dataType": 1, "defaultValue": 0.0, "description": "Set when a ship is connected to a PhaseStabilizer", "displayWhenZero": 0, "highIsGood": 0, "name": "phaseStabilizerConnected", "published": 0, "stackable": 0 }, "6048": { "attributeID": 6048, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "Role Bonus for ORE Executive Issue Ships for critical hit chance", "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusOREExecutiveIssueMiningCriticalHitChance", "published": 0, "stackable": 1 }, "6049": { "attributeID": 6049, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonus auf kritische Erfolgswahrscheinlichkeit beim Bergbau", "displayName_en-us": "Mining Critical Success Chance Bonus", "displayName_es": "Bonificación de probabilidad de éxito crítico de minería", "displayName_fr": "Bonus de probabilité de succès critique d'extraction minière", "displayName_it": "Mining Critical Success Chance Bonus", "displayName_ja": "採掘のクリティカル率ボーナス", "displayName_ko": "대량 채굴 확률 보너스", "displayName_ru": "Повышение вероятности крит. удара при бурении", "displayName_zh": "采矿暴击成功率加成", "displayNameID": 1022755, "displayWhenZero": 0, "highIsGood": 1, "iconID": 22, "name": "miningCritChanceBonus", "published": 1, "stackable": 1, "unitID": 105 }, "6050": { "attributeID": 6050, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Bonusertrag für kritische Erfolge beim Bergbau", "displayName_en-us": "Mining Critical Success Yield Bonus", "displayName_es": "Bonificación de extracción de éxito crítico de minería", "displayName_fr": "Bonus au rendement de succès critique d'extraction minière", "displayName_it": "Mining Critical Success Yield Bonus", "displayName_ja": "採掘のクリティカル発生時の産出量ボーナス", "displayName_ko": "대량 채굴 산출량 보너스", "displayName_ru": "Прибавка к добыче за крит. удар", "displayName_zh": "采矿成功暴击额外收益", "displayNameID": 1022758, "displayWhenZero": 0, "highIsGood": 1, "iconID": 22, "name": "miningCritBonusYieldBonus", "published": 1, "stackable": 1, "unitID": 105 }, "6053": { "attributeID": 6053, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "displayName_de": "Rückstandswahrscheinlichkeits-Reduktion", "displayName_en-us": "Residue Probability Reduction", "displayName_es": "Reducción de probabilidad de residuos", "displayName_fr": "Réduction de la probabilité de résidus", "displayName_it": "Residue Probability Reduction", "displayName_ja": "残留物率減少", "displayName_ko": "손실 확률 감소", "displayName_ru": "Снижение вероятности получения отходов", "displayName_zh": "产生残渣几率降低", "displayNameID": 1022814, "displayWhenZero": 0, "highIsGood": 1, "name": "miningWasteProbabilityBonus", "published": 1, "stackable": 1, "unitID": 105 }, "6054": { "attributeID": 6054, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "AnhingaLargeMissilePowerFittingBonus", "published": 0, "stackable": 1 }, "6055": { "attributeID": 6055, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "AnhingaLargeMissileCpuFittingBonus", "published": 0, "stackable": 1 }, "6057": { "attributeID": 6057, "categoryID": 2, "dataType": 5, "defaultValue": 1.0, "description": "", "displayWhenZero": 0, "highIsGood": 0, "name": "modeShieldRechargePostDiv", "published": 0, "stackable": 1 }, "6062": { "attributeID": 6062, "categoryID": 51, "dataType": 5, "defaultValue": 0.0, "description": "Role Bonus for Perseverance Ice Mining Critical Hit Role bonus", "displayWhenZero": 0, "highIsGood": 1, "name": "shipRoleBonusPerseveranceIceMiningCriticalHitChance", "published": 0, "stackable": 1 }, "6067": { "attributeID": 6067, "categoryID": 9, "dataType": 5, "defaultValue": 5.0, "description": "", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonus1AF", "published": 0, "stackable": 1 }, "6078": { "attributeID": 6078, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Light Missile velocity", "displayWhenZero": 0, "highIsGood": 0, "name": "modeLightMissileMaxVelocityBonusPostDivSkua", "published": 0, "stackable": 1 }, "6079": { "attributeID": 6079, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "description": "Increase in Rocket velocity", "displayWhenZero": 0, "highIsGood": 0, "name": "modeRocketMissileMaxVelocityBonusPostDivSkua", "published": 0, "stackable": 1 }, "6080": { "attributeID": 6080, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "modeAnhingaMissileFlightTimePostDiv", "published": 0, "stackable": 1 }, "6081": { "attributeID": 6081, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "modeAnhingaMissileMaxVelocityPostDiv", "published": 0, "stackable": 1 }, "6082": { "attributeID": 6082, "categoryID": 30, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 0, "name": "modeAnhingaCruiseLauncherTorpedoLauncherRapidHeavyLauncherROFPostDiv", "published": 0, "stackable": 1 }, "6108": { "attributeID": 6108, "categoryID": 51, "dataType": 3, "defaultValue": 0.0, "description": "If set to true, this results in no mining crits when mining this typeID", "displayWhenZero": 0, "highIsGood": 0, "name": "ignoreMiningCrits", "published": 0, "stackable": 0 }, "6112": { "attributeID": 6112, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Gallente Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryG5", "published": 0, "stackable": 1 }, "6113": { "attributeID": 6113, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Caldari Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryC5", "published": 0, "stackable": 1 }, "6114": { "attributeID": 6114, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Amarr Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryA5", "published": 0, "stackable": 1 }, "6116": { "attributeID": 6116, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Multiplied by Minmatar Carrier skill level.", "displayWhenZero": 0, "highIsGood": 1, "name": "shipBonusForceAuxiliaryM5", "published": 0, "stackable": 1 }, "6118": { "attributeID": 6118, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionCommandBurstProbeStrengthBonusCharID", "published": 0, "stackable": 1, "unitID": 105 }, "6119": { "attributeID": 6119, "dataType": 5, "defaultValue": 0.0, "displayWhenZero": 0, "highIsGood": 1, "name": "expeditionCommandBurstProbeDeviationBonusCharID", "published": 0, "stackable": 1, "unitID": 105 }, "6187": { "attributeID": 6187, "categoryID": 37, "dataType": 5, "defaultValue": 0.0, "description": "Reduces the cycle time and capacitor cost of Shield Booster modules for the bastion module. ", "displayName_de": "Shield Booster Duration and Capacitor Bonus", "displayName_en-us": "Shield Booster Duration and Capacitor Bonus", "displayName_es": "Shield Booster Duration and Capacitor Bonus", "displayName_fr": "Shield Booster Duration and Capacitor Bonus", "displayName_it": "Shield Booster Duration and Capacitor Bonus", "displayName_ja": "Shield Booster Duration and Capacitor Bonus", "displayName_ko": "Shield Booster Duration and Capacitor Bonus", "displayName_ru": "Shield Booster Duration and Capacitor Bonus", "displayName_zh": "Shield Booster Duration and Capacitor Bonus", "displayNameID": 1043350, "displayWhenZero": 0, "highIsGood": 0, "iconID": 1392, "name": "bastionModeShieldBoosterCapDurationBonus", "published": 1, "stackable": 1, "tooltipDescription_de": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_en-us": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_es": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_fr": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_it": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_ja": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_ko": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_ru": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescription_zh": "Reduces the cycle time and capacitor cost of Shield Boosters improving repair throughput. ", "tooltipDescriptionID": 1043352, "tooltipTitleID": 1043351, "unitID": 105 } } ================================================ FILE: staticdata/fsd_built/dogmaeffects.0.json ================================================ { "4": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4, "effectName": "shieldBoosting", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "9": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 9, "effectName": "missileLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "10": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 10, "effectName": "targetAttack", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "11": { "description_de": "Benötigt einen Low Power Slot", "description_en-us": "Requires a low power slot", "description_es": "Requiere una ranura de potencia inferior.", "description_fr": "Nécessite un emplacement basse puissance", "description_it": "Requires a low power slot", "description_ja": "ローパワースロットが必要", "description_ko": "로우 슬롯 전용 모듈", "description_ru": "Требуется разъём малой мощности", "description_zh": "需要低能量槽", "descriptionID": 107004, "disallowAutoRepeat": 0, "displayName_de": "Low power", "displayName_en-us": "Low power", "displayName_es": "Baja potencia", "displayName_fr": "Basse puissance", "displayName_it": "Low power", "displayName_ja": "ローパワー", "displayName_ko": "로우 슬롯", "displayName_ru": "Разъёмы малой мощности", "displayName_zh": "低能量", "displayNameID": 109441, "effectCategory": 0, "effectID": 11, "effectName": "loPower", "electronicChance": 0, "guid": "", "iconID": 295, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "12": { "description_de": "Benötigt einen High Power Slot", "description_en-us": "Requires a high power slot", "description_es": "Requiere una ranura de potencia superior.", "description_fr": "Nécessite un emplacement haute puissance", "description_it": "Requires a high power slot", "description_ja": "ハイパワースロットが必要", "description_ko": "하이 슬롯 전용 모듈", "description_ru": "Требуется разъём высокой мощности", "description_zh": "需要高能量槽", "descriptionID": 107005, "disallowAutoRepeat": 0, "displayName_de": "High power", "displayName_en-us": "High power", "displayName_es": "Alta potencia", "displayName_fr": "Haute puissance", "displayName_it": "High power", "displayName_ja": "ハイパワー", "displayName_ko": "하이 슬롯", "displayName_ru": "Разъёмы большой мощности", "displayName_zh": "高能量", "displayNameID": 109442, "effectCategory": 0, "effectID": 12, "effectName": "hiPower", "electronicChance": 0, "guid": "", "iconID": 293, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "13": { "description_de": "Benötigt einen Medium Power Slot", "description_en-us": "Requires a medium power slot", "description_es": "Requiere una ranura de potencia media.", "description_fr": "Nécessite un emplacement de puissance moyenne", "description_it": "Requires a medium power slot", "description_ja": "ミディアムパワースロットが必要", "description_ko": "미드 슬롯 전용 모듈", "description_ru": "Требуется разъём средней мощности", "description_zh": "需要中能量槽", "descriptionID": 107006, "disallowAutoRepeat": 0, "displayName_de": "Medium power", "displayName_en-us": "Medium power", "displayName_es": "Media potencia", "displayName_fr": "Moyenne puissance", "displayName_it": "Medium power", "displayName_ja": "ミディアムパワー", "displayName_ko": "미드 슬롯", "displayName_ru": " Разъёмы средней мощности", "displayName_zh": "中级能量", "displayNameID": 109443, "effectCategory": 0, "effectID": 13, "effectName": "medPower", "electronicChance": 0, "guid": "", "iconID": 294, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "16": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 16, "effectName": "online", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "17": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 17, "effectName": "mining", "electronicChance": 0, "guid": "effects.Mining", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "18": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 18, "effectName": "shieldTransfer", "electronicChance": 0, "guid": "effects.ShieldTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 87, "rangeChance": 0 }, "21": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 21, "effectName": "shieldCapacityBonusOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 72, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "25": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 25, "effectName": "capacitorCapacityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 67, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "26": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 26, "effectName": "structureRepair", "electronicChance": 0, "guid": "effects.StructureRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "27": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 27, "effectName": "armorRepair", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "34": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 34, "effectName": "projectileFired", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.ProjectileFired", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "38": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 1, "effectID": 38, "effectName": "empWave", "electronicChance": 0, "guid": "effects.EMPWave", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 99, "rangeChance": 0 }, "39": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 39, "effectName": "warpDisrupt", "electronicChance": 0, "guid": "effects.WarpDisrupt", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "40": { "description_de": "Benötigt einen Montageplatz für Werfer", "description_en-us": "Requires a launcher hardpoint", "description_es": "Requiere un punto de montaje de lanzador.", "description_fr": "Nécessite un point de fixation de lanceur", "description_it": "Requires a launcher hardpoint", "description_ja": "ランチャーハードポイントが必要です", "description_ko": "런처 하드포인트 요구", "description_ru": "Требуется точка монтажа пусковых установок", "description_zh": "需要发射器挂点", "descriptionID": 571924, "disallowAutoRepeat": 0, "displayName_de": "Werfer", "displayName_en-us": "Launcher", "displayName_es": "Lanzador", "displayName_fr": "Lanceur", "displayName_it": "Launcher", "displayName_ja": "ランチャー", "displayName_ko": "런처", "displayName_ru": "Пусковая установка", "displayName_zh": "发射器", "displayNameID": 571925, "effectCategory": 0, "effectID": 40, "effectName": "launcherFitted", "electronicChance": 0, "guid": "", "iconID": 168, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "42": { "description_de": "Benötigt einen Montageplatz für Geschütztürme", "description_en-us": "Requires a turret hardpoint", "description_es": "Requiere un punto de montaje de torreta.", "description_fr": "Nécessite un point de fixation de tourelle", "description_it": "Requires a turret hardpoint", "description_ja": "タレットハードポイントが必要です", "description_ko": "터렛 하드포인트 요구", "description_ru": "Требуется точка монтажа турелей", "description_zh": "需要炮台挂点", "descriptionID": 571926, "disallowAutoRepeat": 0, "displayName_de": "Geschützturm", "displayName_en-us": "Turret", "displayName_es": "Torreta", "displayName_fr": "Tourelle", "displayName_it": "Turret", "displayName_ja": "タレット", "displayName_ko": "터렛", "displayName_ru": "Турель", "displayName_zh": "炮台", "displayNameID": 571927, "effectCategory": 0, "effectID": 42, "effectName": "turretFitted", "electronicChance": 0, "guid": "", "iconID": 1432, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "46": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 46, "effectName": "shipScan", "electronicChance": 0, "falloffAttributeID": 510, "guid": "effects.ShipScan", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 125, "rangeChance": 0 }, "47": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 47, "effectName": "cargoScan", "electronicChance": 0, "guid": "effects.CargoScan", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 126, "rangeChance": 0, "sfxName": "None" }, "48": { "disallowAutoRepeat": 0, "durationAttributeID": 73, "effectCategory": 1, "effectID": 48, "effectName": "powerBooster", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "50": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 50, "effectName": "modifyShieldRechargeRate", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 134, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "51": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 51, "effectName": "modifyPowerRechargeRate", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 144, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "54": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 54, "effectName": "targetPassively", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "55": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 55, "effectName": "targetHostiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "56": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 56, "effectName": "powerOutputMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 145, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "57": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 57, "effectName": "shieldCapacityMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 146, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "58": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 58, "effectName": "capacitorCapacityMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 147, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "59": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 59, "effectName": "cargoCapacityMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 149, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "60": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 60, "effectName": "structureHPMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 150, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "61": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 61, "effectName": "agilityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 2690, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "63": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 63, "effectName": "armorHPMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 148, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "67": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 67, "effectName": "miningLaser", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "70": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 70, "effectName": "agilityMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 169, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "73": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 73, "effectName": "repairCostMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 187, "modifyingAttributeID": 187, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "81": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 81, "effectName": "surveyScan", "electronicChance": 0, "guid": "effects.SurveyScan", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 197, "rangeChance": 0 }, "82": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 82, "effectName": "corporationMemberLimitBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 190, "modifyingAttributeID": 191, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "87": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 87, "effectName": "cpuUsageMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 202, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "88": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 88, "effectName": "miningDurationMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 54, "modifiedAttributeID": 73, "modifyingAttributeID": 203, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "89": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 89, "effectName": "projectileWeaponSpeedMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "91": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 91, "effectName": "energyWeaponDamageMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "92": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 92, "effectName": "projectileWeaponDamageMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "93": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 93, "effectName": "hybridWeaponDamageMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "95": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 95, "effectName": "energyWeaponSpeedMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "96": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 96, "effectName": "hybridWeaponSpeedMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "97": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 97, "effectName": "turretWeaponAccuracyMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 205, "modifyingAttributeID": 205, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 205, "modifyingAttributeID": 205, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 205, "modifyingAttributeID": 205, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "100": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 100, "effectName": "hybridWeaponAccuracyMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 205, "modifyingAttributeID": 205, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "101": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 1, "effectID": 101, "effectName": "useMissiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "102": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 102, "effectName": "mineLaying", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "103": { "disallowAutoRepeat": 0, "distribution": 2, "effectCategory": 1, "effectID": 103, "effectName": "defenderMissileLaunching", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "104": { "disallowAutoRepeat": 0, "distribution": 2, "effectCategory": 1, "effectID": 104, "effectName": "fofMissileLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "105": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 105, "effectName": "shieldResonanceMultiplyOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 130, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 131, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 133, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 132, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 106, "effectName": "miningAmountMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 54, "modifiedAttributeID": 77, "modifyingAttributeID": 207, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "107": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 107, "effectName": "characterMissileDamageMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 212, "modifyingAttributeID": 213, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "109": { "description_de": "Skaliert den Energiespeicherbedarf von allen eingebauten Geschütztürmen.", "description_en-us": "Scales the capacitor need for all the fitted turret weapons.", "description_es": "Ajusta la necesidad del condensador de todas las armas de torreta equipadas.", "description_fr": "Échelonne les besoins énergétiques du capaciteur pour chaque tourelle installée.", "description_it": "Scales the capacitor need for all the fitted turret weapons.", "description_ja": "装備されたすべてのタレット武器についてキャパシタの必要量を拡大。", "description_ko": "피팅된 모든 터렛 무기에 필요한 캐패시터를 측정합니다.", "description_ru": "Scales the capacitor need for all the fitted turret weapons.", "description_zh": "按照比例修正所有已装载的炮台武器电容需求。", "descriptionID": 107039, "disallowAutoRepeat": 0, "displayName_de": "turretWeaponCapacitorMultiply", "displayName_en-us": "turretWeaponCapacitorMultiply", "displayName_es": "turretWeaponCapacitorMultiply", "displayName_fr": "turretWeaponCapacitorMultiply", "displayName_it": "turretWeaponCapacitorMultiply", "displayName_ja": "タレット兵器キャパシタ増加", "displayName_ko": "터렛 무기 캐패시터 변동", "displayName_ru": "turretWeaponCapacitorMultiply", "displayName_zh": "炮台武器电容修正值", "displayNameID": 109444, "effectCategory": 0, "effectID": 109, "effectName": "turretWeaponCapacitorNeedMultiply", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 6, "modifyingAttributeID": 216, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 6, "modifyingAttributeID": 216, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 6, "modifyingAttributeID": 216, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "110": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 110, "effectName": "characterBlueprintResearchTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 218, "modifyingAttributeID": 220, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "111": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 111, "effectName": "characterBlueprintManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 221, "modifyingAttributeID": 222, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "112": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 112, "effectName": "characterCharismaSkillTrainingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 223, "modifyingAttributeID": 228, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "113": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 113, "effectName": "characterIntelligenceSkillTrainingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 224, "modifyingAttributeID": 229, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "114": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 114, "effectName": "characterMemorySkillTrainingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 225, "modifyingAttributeID": 230, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "115": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 115, "effectName": "characterPerceptionSkillTrainingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 226, "modifyingAttributeID": 231, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "116": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 116, "effectName": "characterWillpowerSkillTrainingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 227, "modifyingAttributeID": 232, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "118": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 118, "effectName": "electronicAttributeModifyOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 237, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 79, "modifyingAttributeID": 242, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "127": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 127, "effectName": "torpedoLaunching", "electronicChance": 0, "guid": "effects.TorpedoDeployment", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "132": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 132, "effectName": "skillEffect", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 280, "modifyingAttributeID": 276, "operation": 2 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 280, "modifyingAttributeID": 275, "operation": 9 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "146": { "description_de": "Boost des barrageDmgMultiplier mit PreMul des skillLevel.", "description_en-us": "Boost of damageMultiplier by PreMul of skillLevel", "description_es": "Boost of damageMultiplier by PreMul of skillLevel", "description_fr": "Boost of damageMultiplier by PreMul of skillLevel", "description_it": "Boost of damageMultiplier by PreMul of skillLevel", "description_ja": "スキルレベルのプレマルによるダメージ乗数のブースト", "description_ko": "스킬 레벨의 변동 전 수치에 따른 데미지 변동 증폭입니다.", "description_ru": "Boost of damageMultiplier by PreMul of skillLevel", "description_zh": "伤害乘数乘以原始技能等级后得到的加成值", "descriptionID": 107055, "disallowAutoRepeat": 0, "displayName_de": "DamageBonus", "displayName_en-us": "DamageBonus", "displayName_es": "DamageBonus", "displayName_fr": "DamageBonus", "displayName_it": "DamageBonus", "displayName_ja": "ダメージボーナス", "displayName_ko": "데미지 보너스", "displayName_ru": "DamageBonus", "displayName_zh": "伤害加成", "displayNameID": 109445, "effectCategory": 0, "effectID": 146, "effectName": "damageMultiplierSkillBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 292, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "152": { "description_de": "Boost des damageMultiplierBonus mit PreMul des skillLevel", "description_en-us": "Boost of damageMultiplierBonus by PreMul of skillLevel", "description_es": "Boost of damageMultiplierBonus by PreMul of skillLevel", "description_fr": "Boost of damageMultiplierBonus by PreMul of skillLevel", "description_it": "Boost of damageMultiplierBonus by PreMul of skillLevel", "description_ja": "スキルレベルのプレマルによるダメージ乗数ボーナスのブースト", "description_ko": "스킬 레벨의 변동 전 수치에 따른 데미지 변동 보너스 증폭입니다.", "description_ru": "Boost of damageMultiplierBonus by PreMul of skillLevel", "description_zh": "伤害乘数加成乘以原始技能等级后得到的加成值", "descriptionID": 107056, "disallowAutoRepeat": 0, "displayName_de": "SkillBoostDamageMultiplierBonus", "displayName_en-us": "SkillBoostDamageMultiplierBonus", "displayName_es": "SkillBoostDamageMultiplierBonus", "displayName_fr": "SkillBoostDamageMultiplierBonus", "displayName_it": "SkillBoostDamageMultiplierBonus", "displayName_ja": "スキルブーストダメージ乗数ボーナス", "displayName_ko": "SkillBoostDamageMultiplierBonus", "displayName_ru": "SkillBoostDamageMultiplierBonus", "displayName_zh": "技能增加伤害修正值加成", "displayNameID": 109446, "effectCategory": 0, "effectID": 152, "effectName": "skillBoostDamageMultiplierBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 292, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "157": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 157, "effectName": "largeHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeHybridTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "159": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 159, "effectName": "mediumEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumEnergyTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "160": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 160, "effectName": "mediumHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumHybridTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "161": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 161, "effectName": "mediumProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringMediumProjectileTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "162": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 162, "effectName": "largeEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeEnergyTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "163": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 163, "effectName": "rapidFiringSkillBoostRofBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 293, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "167": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 167, "effectName": "sharpshooterSkillBoostRangeSkillBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 294, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "172": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 172, "effectName": "smallEnergyTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallEnergyTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "173": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 173, "effectName": "smallHybridTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallHybridTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "174": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 174, "effectName": "smallProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringSmallProjectileTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "187": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 187, "effectName": "caldariCruiserSkillBoostCcTRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 300, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "189": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 189, "effectName": "caldariFrigateSkillBoostCfTRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 301, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "204": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 204, "effectName": "signatureAnalysisSkillBoostScanspeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 308, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "205": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 205, "effectName": "signatureAnalysisScanspeedBonusPostPercentScanSpeedLocationShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 79, "modifyingAttributeID": 308, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "206": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 206, "effectName": "longRangeTargetingSkillBoostMaxTargetRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 309, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "208": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 208, "effectName": "propulsionJammingSkillBoostDurationBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 66, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "211": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 211, "effectName": "sensorUpgradesSkillBoostCpuNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 310, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 212, "effectName": "sensorUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringSensorUpgrades", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3432 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "213": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 213, "effectName": "targetingSkillBoostMaxTargetBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 311, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "214": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 214, "effectName": "targetingMaxTargetBonusModAddMaxLockedTargetsLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 311, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "216": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 216, "effectName": "electronicWarfareSkillBoostDurationBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 312, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "218": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 218, "effectName": "engineeringSkillBoostPowerOutputBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 313, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "220": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 220, "effectName": "energyManagementSkillBoostCapRechargeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 314, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "222": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 222, "effectName": "navigationSkillBoostVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 315, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "223": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 223, "effectName": "navigationVelocityBonusPostPercentMaxVelocityLocationShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 315, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "225": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 225, "effectName": "accerationControlSkillBoostCapNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 317, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "227": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 227, "effectName": "accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "228": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 228, "effectName": "accerationControlSkillBoostSpeedFBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 318, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "230": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 230, "effectName": "afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "232": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 232, "effectName": "evasiveManuveringSkillBoostAgilityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 151, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 234, "effectName": "warpdriveoperationSkillBoostWarpCapacitorNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 319, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "235": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 235, "effectName": "warpdriveoperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 319, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "239": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 239, "effectName": "corporationManagementSkillBoostCorporationMemberBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 191, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "242": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 242, "effectName": "accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 20, "modifyingAttributeID": 318, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "243": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 243, "effectName": "highSpeedManuveringSkillBoostCapacitorNeedMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 317, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "244": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 244, "effectName": "highSpeedManuveringCapacitorNeedMultiplierPostPercentCapacitorNeedLocationShipModulesRequiringHighSpeedManuvering", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "246": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 246, "effectName": "sensorUpgradesSkillBoostPowerNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 323, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "251": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 251, "effectName": "hullUpgradesSkillBoostHullHpBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 327, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "253": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 253, "effectName": "shadowBarrageDmgMultiplierWithDamageMultiplierPostPercentBarrageDmgMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 326, "modifyingAttributeID": 64, "operation": -1 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 326, "modifyingAttributeID": 324, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "254": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 254, "effectName": "shadowBarrageFalloffWithFalloffPostPercentBarrageFalloffMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 328, "modifyingAttributeID": 158, "operation": -1 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 328, "modifyingAttributeID": 325, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "263": { "description_de": "Sperrfeuer-Angriff - Angriff mit barrageDmgMultiplier als Multiplikator.", "description_en-us": "Barrage Attack, Attack with barrageDmgMultiplier as a damage multiplier", "description_es": "Barrage Attack, Attack with barrageDmgMultiplier as a damage multiplier", "description_fr": "Barrage Attack, Attack with barrageDmgMultiplier as a damage multiplier", "description_it": "Barrage Attack, Attack with barrageDmgMultiplier as a damage multiplier", "description_ja": "バラージ攻撃、ダメージ乗数としてバラージダメージ乗数を使用する攻撃", "description_ko": "버라지 공격으로 버라지 데미지 변동을 데미지 변동으로 반영해 공격합니다.", "description_ru": "Barrage Attack, Attack with barrageDmgMultiplier as a damage multiplier", "description_zh": "弹幕攻击,以弹幕伤害乘数作为伤害乘数进行攻击", "descriptionID": 107101, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Barrage Attack", "displayName_en-us": "Barrage Attack", "displayName_es": "Ataque descarga", "displayName_fr": "Attaque de barrage", "displayName_it": "Barrage Attack", "displayName_ja": "バラージ攻撃", "displayName_ko": "버라지 공격", "displayName_ru": "Barrage Attack", "displayName_zh": "弹幕攻击", "displayNameID": 109454, "durationAttributeID": 51, "effectCategory": 2, "effectID": 263, "effectName": "barrage", "electronicChance": 0, "falloffAttributeID": 328, "guid": "effects.Barrage", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "267": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 267, "effectName": "amarrCruiserSkillBoostPowerOutputBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 121, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "270": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 270, "effectName": "hullUpgradesSkillBoostArmorHpBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 335, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "271": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 271, "effectName": "hullUpgradesArmorHpBonusPostPercentHpLocationShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 335, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "272": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 272, "effectName": "repairSystemsDurationBonusPostPercentDurationLocationShipModulesRequiringRepairSystems", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 312, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "273": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 273, "effectName": "shieldUpgradesPowerNeedBonusPostPercentPowerLocationShipModulesRequiringShieldUpgrades", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 323, "operation": 6, "skillTypeID": 3425 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "277": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 277, "effectName": "tacticalshieldManipulationSkillBoostUniformityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 336, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "279": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 279, "effectName": "shieldEmmisionSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringShieldEmmisionSystems", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "280": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 280, "effectName": "shieldManagementSkillBoostShieldCapacityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 337, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "283": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 283, "effectName": "shieldoperationSkillBoostRechargeratebonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 338, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "287": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 287, "effectName": "controlledBurstsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "289": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 289, "effectName": "motionPredictionTrackingSpeedMultiplierPostPercentTrackingSpeedLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "290": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 290, "effectName": "sharpshooterRangeSkillBonusPostPercentMaxRangeLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "297": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 297, "effectName": "skillBoostFalloffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "298": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 298, "effectName": "surgicalStrikeFalloffBonusPostPercentFalloffLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "302": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 302, "effectName": "empathyCharismaBonusModAddCharismaLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 164, "modifyingAttributeID": 175, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "304": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 304, "effectName": "instantRecallMemoryBonusModAddMemoryLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 166, "modifyingAttributeID": 177, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "306": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 306, "effectName": "analyticalMindIntelligenceBonusModAddIntelligenceLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 165, "modifyingAttributeID": 176, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "308": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 308, "effectName": "ironWillWillpowerBonusModAddWillpowerLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 168, "modifyingAttributeID": 179, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "310": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 310, "effectName": "spatialAwarenessPerceptionBonusModAddPerceptionLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 167, "modifyingAttributeID": 178, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "315": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 315, "effectName": "dronesSkillBoostMaxActiveDroneBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 353, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "316": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 316, "effectName": "dronesMaxActiveDroneBonusModAddMaxActiveLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 352, "modifyingAttributeID": 353, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "317": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 317, "effectName": "amarrTechSkillBoostAmarrTechMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 370, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "318": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 318, "effectName": "amarrTechAmarrTechMutatorPostPercentAmarrTechTimePercentLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 363, "modifyingAttributeID": 370, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "319": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 319, "effectName": "caldariTechSkillBoostCaldariTechMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 371, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "320": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 320, "effectName": "caldariTechCaldariTechMutatorPostPercentCaldariTechTimePercentLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 366, "modifyingAttributeID": 371, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "321": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 321, "effectName": "gallenteTechSkillBoostGallenteTechMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 372, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "322": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 322, "effectName": "gallenteTechGallenteTechMutatorPostPercentGallenteTechTimePercentLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 365, "modifyingAttributeID": 372, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "331": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 331, "effectName": "refineryEfficiencySkillBoostRefiningYieldMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 379, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "334": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 334, "effectName": "cSOTrainingSkillBoostResearchGangSizeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 407, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "335": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 335, "effectName": "cSOTrainingResearchGangSizeBonusModAddMaxResearchGangSizeShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 384, "modifyingAttributeID": 407, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "336": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 336, "effectName": "battleshipConstructionSkillBoostBattleshipConstructionTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 408, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "337": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 337, "effectName": "battleshipConstructionBattleshipConstructionTimeBonusPostPercentBattleshipConstructionTimeChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 393, "modifyingAttributeID": 408, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "338": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 338, "effectName": "cruiserConstructionSkillBoostCruiserConstructionTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 409, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "339": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 339, "effectName": "cruiserConstructionCruiserConstructionTimeBonusPostPercentCruiserConstructionTimeChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 389, "modifyingAttributeID": 409, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "340": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 340, "effectName": "frigateConstructionSkillBoostFrigateConstructionTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 410, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "341": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 341, "effectName": "frigateConstructionFrigateConstructionTimeBonusPostPercentFrigateConstructionTimeChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 388, "modifyingAttributeID": 410, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "342": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 342, "effectName": "industrialConstructionSkillBoostIndustrialConstructionTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 411, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "343": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 343, "effectName": "industrialConstructionIndustrialConstructionTimeBonusPostPercentIndustrialConstructionTimeChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 392, "modifyingAttributeID": 411, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "344": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 344, "effectName": "connectionsSkillBoostConnectionBonusMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 412, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "346": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 346, "effectName": "criminalConnectionsSkillBoostCriminalConnectionsMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 413, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "348": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 348, "effectName": "diplomacySkillBoostDiplomacyMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 414, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "349": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 349, "effectName": "diplomacyDiplomacyMutatorModAddDiplomacyBonusChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 356, "modifyingAttributeID": 414, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "350": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 350, "effectName": "fasttalkSkillBoostFastTalkMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 415, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "352": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 352, "effectName": "fasttalkFastTalkMutatorPostPercentFastTalkPercentageChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 359, "modifyingAttributeID": 415, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "368": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 368, "effectName": "gallenteFrigateSkillBoostCpuOutputBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 424, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "389": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 389, "effectName": "astrogeologySkillBoostMiningAmountBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 434, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "391": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 391, "effectName": "astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "392": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 392, "effectName": "mechanicHullHpBonusPostPercentHpShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "394": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 394, "effectName": "navigationVelocityBonusPostPercentMaxVelocityShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 315, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "395": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 395, "effectName": "evasiveManeuveringAgilityBonusPostPercentAgilityShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 151, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "396": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 396, "effectName": "energyGridUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyGridUpgrades", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3424 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "397": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 397, "effectName": "electronicsCpuOutputBonusPostPercentCpuOutputLocationShipGroupComputer", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 424, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "399": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 399, "effectName": "connectionsConnectionBonusMutatorModAddConnectionsBonusChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 360, "modifyingAttributeID": 412, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "402": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 402, "effectName": "criminalConnectionsCriminalConnectionsMutatorModAddCriminalConnectionsBonusChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 361, "modifyingAttributeID": 413, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "403": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 403, "effectName": "negotiationSkillBoostNegotiationBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 437, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "404": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 404, "effectName": "negotiationNegotiationBonusPostPercentNegotiationPercentageChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 355, "modifyingAttributeID": 437, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "406": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 406, "effectName": "socialSkillBoostSocialMutator", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 438, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "407": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 407, "effectName": "socialSocialMutatorPostPercentSocialBonusChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 362, "modifyingAttributeID": 438, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "408": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 408, "effectName": "largeProjectileTurretDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringLargeProjectileTurret", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "412": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 412, "effectName": "industrySkillBoostManufacturingTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 440, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "413": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 413, "effectName": "gunnerySkillBoostTurretSpeeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 441, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "414": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 414, "effectName": "gunneryTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 441, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "415": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 415, "effectName": "tradeSkillBoostTradePremiumBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 446, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "416": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 416, "effectName": "tradeTradePremiumBonusPostPercentTradePremiumChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 443, "modifyingAttributeID": 446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "417": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 417, "effectName": "smugglingSkillBoostSmugglingChanceBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 447, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "425": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 425, "effectName": "industryManufacturingTimeBonusPostPercentManufactureTimeMultiplierChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 219, "modifyingAttributeID": 440, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "430": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 430, "effectName": "scienceSkillBoostCopySpeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 452, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "431": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 431, "effectName": "scienceCopySpeedBonusPostPercentCopySpeedPercentChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 387, "modifyingAttributeID": 452, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "432": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 432, "effectName": "researchSkillBoostBlueprintmanufactureTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 453, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "433": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 433, "effectName": "researchBlueprintmanufactureTimeBonusPostPercentProductionTimeResearchSpeedChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 385, "modifyingAttributeID": 453, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "435": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 435, "effectName": "refineryEfficiencyRefiningYieldMutatorPostPercentRefiningYieldPercentageChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 378, "modifyingAttributeID": 379, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "436": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 436, "effectName": "missileLauncherOperationSpeedBonusPostPercentSpeedLocationShipModulesRequiringMissileLauncherOperation", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 80, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "445": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 445, "effectName": "energyManagementCapacitorBonusPostPercentCapacityLocationShipGroupCapacitor", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 67, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "446": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 446, "effectName": "shieldManagementShieldCapacityBonusPostPercentCapacityLocationShipGroupShield", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 337, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "448": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 448, "effectName": "scoutDroneOperationSkillBoostDroneRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 459, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "453": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 453, "effectName": "minmatarFrigateSkillLevelPreMulShipBonusMFShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 460, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "456": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 456, "effectName": "shipTargetRangeBonusMF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 460, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "460": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 460, "effectName": "caldariFrigateSkillLevelPreMulShipBonusCFShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 463, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "464": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 464, "effectName": "shipShieldCapBonusCF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "468": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 468, "effectName": "gallenteFrigateSkillLevelPreMulShipBonusGFShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 462, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "476": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 476, "effectName": "amarrFrigateSkillLevelPreMulShipBonusAFShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 464, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "481": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 481, "effectName": "metallurgySkillBoostMineralNeedResearchBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 468, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "485": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 485, "effectName": "capacitorRechargeTimeBonusPostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 314, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "486": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 486, "effectName": "shieldOperationRechargeratebonusPostPercentRechargeRateLocationShipGroupShield", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 338, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "490": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 490, "effectName": "engineeringPowerEngineeringOutputBonusPostPercentPowerOutputLocationShipGroupPowerCore", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 313, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "494": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 494, "effectName": "warpDriveOperationWarpCapacitorNeedBonusPostPercentWarpCapacitorNeedLocationShipGroupPropulsion", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 319, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "498": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 498, "effectName": "inventionSkillBoostInventionBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 474, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "500": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 500, "effectName": "amarrCruiserSkillLevelPreMulShipBonusACShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 478, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "504": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 504, "effectName": "scoutDroneOperationDroneRangeBonusModAddDroneControlDistanceChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 458, "modifyingAttributeID": 459, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "506": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 506, "effectName": "fuelConservationCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringAfterburner", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "507": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 507, "effectName": "longRangeTargetingMaxTargetRangeBonusPostPercentMaxTargetRangeLocationShipGroupElectronic", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "508": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 508, "effectName": "shipPDmgBonusMF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "510": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 510, "effectName": "amarrFrigateSkillLevelPreMulShipBonus2AFShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 485, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "511": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 511, "effectName": "shipEnergyTCapNeedBonusAF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "512": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 512, "effectName": "shipSHTDmgBonusGF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "514": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 514, "effectName": "shipSETDmgBonusAF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "516": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 516, "effectName": "shipTCapNeedBonusAC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "517": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 517, "effectName": "gallenteCruiserSkillLevelPreMulShipBonusGCShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 486, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "520": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 520, "effectName": "caldariCruiserSkillLevelPreMulShipBonusCCShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 487, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "521": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 521, "effectName": "shipHRangeBonusCC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "524": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 524, "effectName": "minmatarCruiserSkillLevelPreMulShipBonusMCShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 489, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "526": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 526, "effectName": "minmatarIndustrialSkillLevelPreMulShipBonusMIShip", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 493, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "527": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 527, "effectName": "shipVelocityBonusMI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 493, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "529": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 529, "effectName": "shipCargoBonusAI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 494, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "530": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 530, "effectName": "caldariIndustrialSkillLevelPreMulShipBonusCIShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 495, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "532": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 532, "effectName": "gallenteIndustrialSkillLevelPreMulShipBonusGIShip", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 496, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "536": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 536, "effectName": "cpuMultiplierPostMulCpuOutputShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 202, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "538": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 538, "effectName": "amarrBattleshipSkillLevelPostMulShipBonusABShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 492, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "541": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 541, "effectName": "caldariBattleshipSkillLevelPreMulShipBonusCBShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 491, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "542": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 542, "effectName": "shipCapNeedBonusAB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "548": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 548, "effectName": "minmatarBattleshipSkillLevelPreMulShipBonusMBShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 490, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "549": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 549, "effectName": "shipPTDmgBonusMB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "550": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107253, "disallowAutoRepeat": 0, "displayName_de": "shipHTDmgBonus", "displayName_en-us": "shipHTDmgBonus", "displayName_es": "shipHTDmgBonus", "displayName_fr": "shipHTDmgBonus", "displayName_it": "shipHTDmgBonus", "displayName_ja": "艦船HTダメージボーナス", "displayName_ko": "함선 열 데미지 보너스", "displayName_ru": "shipHTDmgBonus", "displayName_zh": "舰船混合炮台伤害加成", "displayNameID": 109475, "effectCategory": 0, "effectID": 550, "effectName": "shipHTDmgBonusGB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "553": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 553, "effectName": "shipHTTrackingBonusGB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "556": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 556, "effectName": "caldariBattleshipSkillLevelPreMulShipBonus2CBShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 501, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "558": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 558, "effectName": "metallurgyMineralNeedResearchBonusPostPercentMineralNeedResearchSpeedChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 398, "modifyingAttributeID": 468, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "562": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107258, "disallowAutoRepeat": 0, "displayName_de": "ShipHTDmgBonusfixedGC", "displayName_en-us": "ShipHTDmgBonusfixedGC", "displayName_es": "ShipHTDmgBonusfixedGC", "displayName_fr": "ShipHTDmgBonusfixedGC", "displayName_it": "ShipHTDmgBonusfixedGC", "displayName_ja": "艦船HTダメージボーナスGC固定", "displayName_ko": "ShipHTDmgBonusfixedGC", "displayName_ru": "ShipHTDmgBonusfixedGC", "displayName_zh": "舰船炮台伤害加成固定GC", "displayNameID": 109476, "effectCategory": 0, "effectID": 562, "effectName": "shipHTDmgBonusfixedGC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "563": { "description_de": "Versucht, das Ziel vom Warpen abzuhalten.", "description_en-us": "Attempts to prevent the target from warping.", "description_es": "Intenta impedir que el objetivo warpee.", "description_fr": "Essaie d'empêcher la cible de warper.", "description_it": "Attempts to prevent the target from warping.", "description_ja": "ターゲットのワープ阻止を試みる。", "description_ko": "타겟의 워프를 막기 위한 시도입니다.", "description_ru": "Attempts to prevent the target from warping.", "description_zh": "阻止目标进行跃迁。", "descriptionID": 108709, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Warp Scramble", "displayName_en-us": "Warp Scramble", "displayName_es": "Distorsión de warp", "displayName_fr": "Inhibition de warp", "displayName_it": "Warp Scramble", "displayName_ja": "ワープスクランブル", "displayName_ko": "워프 스크램블", "displayName_ru": "Warp Scramble", "displayName_zh": "跃迁干扰", "displayNameID": 109962, "distribution": 1, "durationAttributeID": 505, "effectCategory": 2, "effectID": 563, "effectName": "warpScrambleForEntity", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "npcUsageChanceAttributeID": 504, "propulsionChance": 0, "published": 1, "rangeAttributeID": 103, "rangeChance": 0 }, "566": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 566, "effectName": "laboratoryOperationSkillLevelModAddMaxLaborotorySlotsChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 467, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "568": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 568, "effectName": "massProductionSkillLevelModAddManufactureSlotLimitChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 196, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "569": { "disallowAutoRepeat": 0, "displayName_de": "missileLaunching", "displayName_en-us": "missileLaunching", "displayName_es": "missileLaunching", "displayName_fr": "missileLaunching", "displayName_it": "missileLaunching", "displayName_ja": "ミサイル発射", "displayName_ko": "미사일 발사", "displayName_ru": "missileLaunching", "displayName_zh": "导弹发射", "displayNameID": 109477, "durationAttributeID": 506, "effectCategory": 2, "effectID": 569, "effectName": "missileLaunchingForEntity", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "571": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 571, "effectName": "reverseEngineeringInventionBonusModAddReverseEngineeringChanceLocationChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 397, "modifyingAttributeID": 474, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "575": { "disallowAutoRepeat": 0, "dischargeAttributeID": 515, "displayName_de": "modifyTargetSpeed", "displayName_en-us": "modifyTargetSpeed", "displayName_es": "modifyTargetSpeed", "displayName_fr": "modifyTargetSpeed", "displayName_it": "modifyTargetSpeed", "displayName_ja": "ターゲット速度を修正", "displayName_ko": "타겟 속도 변경", "displayName_ru": "modifyTargetSpeed", "displayName_zh": "修正目标速度", "displayNameID": 109964, "distribution": 2, "durationAttributeID": 513, "effectCategory": 2, "effectID": 575, "effectName": "modifyTargetSpeed2", "electronicChance": 0, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "npcUsageChanceAttributeID": 512, "propulsionChance": 0, "published": 1, "rangeAttributeID": 514, "rangeChance": 0 }, "581": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 581, "effectName": "weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3300 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "582": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 582, "effectName": "rapidFiringRofBonusPostPercentSpeedLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "583": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 583, "effectName": "amarrIndustrialSkillLevelPreMulShipBonusAI2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 494, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "584": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 584, "effectName": "surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipModulesRequiringGunnery", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "586": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Decrease Target Speed", "displayName_en-us": "Decrease Target Speed", "displayName_es": "Disminución de la velocidad del objetivo", "displayName_fr": "Réduit la vitesse de la cible", "displayName_it": "Decrease Target Speed", "displayName_ja": "ターゲット速度を減速", "displayName_ko": "타겟 속도 감소", "displayName_ru": "Decrease Target Speed", "displayName_zh": "降低目标速度", "displayNameID": 109478, "durationAttributeID": 73, "effectCategory": 2, "effectID": 586, "effectName": "decreaseTargetSpeed", "electronicChance": 0, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0 }, "587": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 587, "effectName": "surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupEnergyWeapon", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "588": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 588, "effectName": "surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupProjectileWeapon", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "589": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 589, "effectName": "surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupHybridWeapon", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 590, "effectName": "energyPulseWeaponsDurationBonusPostPercentDurationLocationShipModulesRequiringEnergyPulseWeapons", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3421 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "592": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 592, "effectName": "targetArmorRepair", "electronicChance": 0, "guid": "effects.RemoteArmourRepair", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "596": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 596, "effectName": "ammoInfluenceRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 120, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "598": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 598, "effectName": "ammoSpeedMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "599": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 599, "effectName": "ammoFallofMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 517, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "600": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 600, "effectName": "ammoTrackingMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "602": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 602, "effectName": "shipPTurretSpeedBonusMC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "604": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 604, "effectName": "shipPTspeedBonusMB2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 518, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "605": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 605, "effectName": "minmatarBattleshipSkillLevelPreMulShipBonusMB2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 518, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "607": { "disallowAutoRepeat": 0, "displayName_de": "Cloaking", "displayName_en-us": "Cloaking", "displayName_es": "Camuflaje", "displayName_fr": "Camouflage", "displayName_it": "Cloaking", "displayName_ja": "遮蔽", "displayName_ko": "클로킹", "displayName_ru": "Cloaking", "displayName_zh": "隐身", "displayNameID": 109481, "distribution": 2, "effectCategory": 1, "effectID": 607, "effectName": "cloaking", "electronicChance": 0, "guid": "effects.Cloaking", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "611": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 611, "effectName": "gallenteBattleshipSkillLevelPreMulShipBonusGBShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 500, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "623": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 623, "effectName": "miningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "627": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 627, "effectName": "powerIncrease", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 549, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "648": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107291, "disallowAutoRepeat": 0, "displayName_de": "deepCoreMiningCPUReduction", "displayName_en-us": "deepCoreMiningCPUReduction", "displayName_es": "deepCoreMiningCPUReduction", "displayName_fr": "deepCoreMiningCPUReduction", "displayName_it": "deepCoreMiningCPUReduction", "displayName_ja": "ディープコア採掘CPU減少", "displayName_ko": "딥코어 채굴 CPU 감소", "displayName_ru": "deepCoreMiningCPUReduction", "displayName_zh": "深核采矿CPU减少", "displayNameID": 109484, "effectCategory": 0, "effectID": 648, "effectName": "shipSpecialityMining", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 11395 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "649": { "description_de": "Dieses Objekt im All verankern.", "description_en-us": "Anchoring this object in space.", "description_es": "Anclando este objeto en el espacio.", "description_fr": "Ancrage de cet objet dans l'espace.", "description_it": "Anchoring this object in space.", "description_ja": "このオブジェクトを宙域に係留。", "description_ko": "이 물체를 우주에 위치 고정합니다.", "description_ru": "Anchoring this object in space.", "description_zh": "在太空中锚定这个物体。", "descriptionID": 107292, "disallowAutoRepeat": 0, "displayName_de": "anchoring", "displayName_en-us": "anchoring", "displayName_es": "anclando", "displayName_fr": "ancrage en cours", "displayName_it": "anchoring", "displayName_ja": "係留", "displayName_ko": "위치 고정 중", "displayName_ru": "anchoring", "displayName_zh": "锚定", "displayNameID": 109485, "distribution": 2, "durationAttributeID": 556, "effectCategory": 1, "effectID": 649, "effectName": "anchorDrop", "electronicChance": 0, "guid": "effects.AnchorDrop", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "650": { "disallowAutoRepeat": 0, "displayName_de": "unanchoring", "displayName_en-us": "unanchoring", "displayName_es": "desanclando", "displayName_fr": "détachement en cours", "displayName_it": "unanchoring", "displayName_ja": "未係留", "displayName_ko": "위치 고정 해제 중", "displayName_ru": "unanchoring", "displayName_zh": "取消锚定", "displayNameID": 109486, "distribution": 2, "durationAttributeID": 556, "effectCategory": 1, "effectID": 650, "effectName": "anchorLift", "electronicChance": 0, "guid": "effects.AnchorLift", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "651": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 651, "effectName": "cloakingSkillBoostCloakVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 555, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "657": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107295, "disallowAutoRepeat": 0, "displayName_de": "AgilityMultiplierEffect", "displayName_en-us": "AgilityMultiplierEffect", "displayName_es": "AgilityMultiplierEffect", "displayName_fr": "AgilityMultiplierEffect", "displayName_it": "AgilityMultiplierEffect", "displayName_ja": "機動乗数効果", "displayName_ko": "기동성 변동 효과", "displayName_ru": "AgilityMultiplierEffect", "displayName_zh": "敏捷乘数效果", "displayNameID": 109488, "effectCategory": 4, "effectID": 657, "effectName": "agilityMultiplierEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 169, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "660": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 660, "effectName": "missileEMDmgBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "661": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 661, "effectName": "missileExplosiveDmgBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "662": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 662, "effectName": "missileThermalDmgBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "663": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 663, "effectName": "heavyMissilesSkillBoostMaxflightTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 557, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "668": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 668, "effectName": "missileKineticDmgBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "670": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107303, "disallowAutoRepeat": 0, "displayName_de": "antiWarpScrambling", "displayName_en-us": "antiWarpScrambling", "displayName_es": "antiWarpScrambling", "displayName_fr": "antiWarpScrambling", "displayName_it": "antiWarpScrambling", "displayName_ja": "アンチワープスクランブル", "displayName_ko": "대 워프 스크램블러", "displayName_ru": "antiWarpScrambling", "displayName_zh": "反跃迁干扰", "displayNameID": 109490, "effectCategory": 4, "effectID": 670, "effectName": "antiWarpScramblingPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "672": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 672, "effectName": "weaponUpgradesSkillBoostCpu", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "675": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 675, "effectName": "weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringEnergyPulseWeapons", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3421 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "677": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 677, "effectName": "weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringMissileLauncherOperation", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "682": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 682, "effectName": "gallenteBattleshipSkillLevelPreMulShipBonusGB2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 561, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "698": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 698, "effectName": "signatureAnalysisSkillLevelPreMulScanResolutionBonusSelf", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 566, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "699": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 699, "effectName": "signatureAnalysisScanResolutionBonusPostPercentScanResolutionShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "703": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 703, "effectName": "interceptorsSkillLevelPreMulEliteBonusInterceptorShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 568, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "704": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 704, "effectName": "covertOpsSkillLevelPreMulEliteBonusCoverOpsShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 569, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "706": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 706, "effectName": "covertOpsWarpResistance", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 21, "modifyingAttributeID": 569, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "707": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 707, "effectName": "bomberRocketRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 570, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "708": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 708, "effectName": "bomberLightsRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 570, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "709": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 709, "effectName": "interceptorSignatoreRadiusBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 568, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "713": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 713, "effectName": "stealthActive", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "726": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 726, "effectName": "shipBonusCargo2GI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 496, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "727": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 727, "effectName": "shipBonusCargoCI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 495, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "728": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 728, "effectName": "shipBonusCargoMI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 493, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "729": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 729, "effectName": "shipBonusVelocityGI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 496, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "730": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 730, "effectName": "shipBonusVelocityCI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 495, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "732": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107327, "disallowAutoRepeat": 0, "displayName_de": "ShipVelocityBonusAI", "displayName_en-us": "ShipVelocityBonusAI", "displayName_es": "ShipVelocityBonusAI", "displayName_fr": "ShipVelocityBonusAI", "displayName_it": "ShipVelocityBonusAI", "displayName_ja": "艦船速度ボーナスAI", "displayName_ko": "함선 속도 보너스 AI", "displayName_ru": "ShipVelocityBonusAI", "displayName_zh": "舰船速度加成AI", "displayNameID": 109493, "effectCategory": 0, "effectID": 732, "effectName": "shipVelocityBonusAI", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 494, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "734": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 734, "effectName": "amarrBattleshipSkillLevelPreMulShipBonusAB2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 585, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "736": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 736, "effectName": "shipBonusCapCapAB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 585, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "744": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 744, "effectName": "surveyScanspeedBonusPostPercentDurationLocationShipModulesRequiringElectronics", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 308, "operation": 6, "skillTypeID": 3426 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "751": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 751, "effectName": "gallenteFrigateSkillLevelPreMulShipBonusGF2Ship", "electronicChance": 0, "guid": "gallenteFrigateSkillLevelPreMulShipBonusGF2Ship", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 586, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "754": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 754, "effectName": "shipHybridDamageBonusCF", "electronicChance": 0, "guid": "shipHybridDamageBonusCF", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "757": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 757, "effectName": "shipETDamageAF", "electronicChance": 0, "guid": "shipETDamageAF", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "760": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 760, "effectName": "shipBonusSmallMissileRoFCF2", "electronicChance": 0, "guid": "shipMissileSpeedBonusCF", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 507, "modifiedAttributeID": 51, "modifyingAttributeID": 588, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 509, "modifiedAttributeID": 51, "modifyingAttributeID": 588, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "761": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 761, "effectName": "caldariFrigateSkillLevelPreMulShipBonusCF2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 588, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "762": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 762, "effectName": "minmatarFrigateSkillLevelPreMulShipBonusMF2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 587, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "763": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 763, "effectName": "missileDMGBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 212, "modifyingAttributeID": 213, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "768": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 768, "effectName": "hypereuclideanNavigationCloakVelocityBonusModAddSpeedFactorLocationShipModulesRequiringCloaking", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 555, "operation": 2, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "784": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 784, "effectName": "missileBombardmentMaxFlightTimeBonusPostPercentExplosionDelayOwnerCharModulesRequiringMissileLauncherOperation", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 557, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "793": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 793, "effectName": "escortHullUpgradeCpu Bonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 597, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "796": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 796, "effectName": "escortShieldUpgradeCpu Bonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 597, "operation": 6, "skillTypeID": 3425 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "797": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 797, "effectName": "caldariBattleshipSkillLevelPreMulShipBonusCB3Ship", "electronicChance": 0, "guid": "caldariBattleshipSkillLevelPreMulShipBonusCB3Ship", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 598, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "804": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 804, "effectName": "ammoInfluenceCapNeed", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "834": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 834, "effectName": "ammoInfluenceCapRecharge", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 144, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "835": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 835, "effectName": "freightSkillBoostCargoCapacityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 614, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "836": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 836, "effectName": "skillFreightBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 614, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "838": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 838, "effectName": "ammoInfluenceShipVelocity", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "848": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 848, "effectName": "cloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "850": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 850, "effectName": "cloakingSkillBoostCloakingTargetingDelayBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 619, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "854": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 854, "effectName": "cloakingScanResolutionMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 565, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "856": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 856, "effectName": "warpSkillSpeed", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 624, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "857": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 857, "effectName": "bountyHuntingSkillBoostBountySkillBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 627, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "858": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 858, "effectName": "bountyhunterskill", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 625, "modifyingAttributeID": 627, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "874": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 874, "effectName": "shipProjectileOptimalBonuseMF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "876": { "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 876, "effectName": "shieldBoostingForEntities", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "878": { "disallowAutoRepeat": 0, "durationAttributeID": 630, "effectCategory": 1, "effectID": 878, "effectName": "armorRepairForEntities", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "882": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 882, "effectName": "shipHybridRangeBonusCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "887": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 887, "effectName": "shipETspeedBonusAB2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 585, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "889": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 889, "effectName": "missileLauncherSpeedMultiplier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "891": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 891, "effectName": "shipCruiseMissileVelocityBonusCB3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 598, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "892": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 892, "effectName": "shipTorpedosVelocityBonusCB3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 598, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "896": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 896, "effectName": "covertOpsCpuBonus1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 649, "operation": 4, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "898": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 898, "effectName": "shipMissileKineticDamageCF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "899": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 899, "effectName": "shipMissileKineticDamageCC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "900": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 900, "effectName": "shipDroneScoutThermalDamageGF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "901": { "description_de": "Dies ist ein Online-Effekt für Strukturen.", "description_en-us": "this is the online effect for structures", "description_es": "El efecto de activación de las estructuras.", "description_fr": "il s'agit de l'effet de connexion pour les structures", "description_it": "this is the online effect for structures", "description_ja": "これはストラクチャに対するオンライン効果です", "description_ko": "구조물을 위한 작동 효과입니다.", "description_ru": "this is the online effect for structures", "description_zh": "这能起到启用建筑的效果", "descriptionID": 107376, "disallowAutoRepeat": 0, "displayName_de": "online", "displayName_en-us": "online", "displayName_es": "con conexión", "displayName_fr": "connecté", "displayName_it": "online", "displayName_ja": "オンライン", "displayName_ko": "온라인", "displayName_ru": "online", "displayName_zh": "启用", "displayNameID": 109496, "effectCategory": 1, "effectID": 901, "effectName": "onlineForStructures", "electronicChance": 0, "guid": "effects.StructureOnline", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "903": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 903, "effectName": "ammoInfluenceSignatureRadius", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 652, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "904": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 904, "effectName": "ammoInfluenceShieldCapacity", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 146, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "907": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 907, "effectName": "shipLaserRofAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "909": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 909, "effectName": "shipArmorHpAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "912": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 912, "effectName": "shipMissileLauncherRofCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "918": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 918, "effectName": "shipDronesMaxGC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 352, "modifyingAttributeID": 658, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "919": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 919, "effectName": "shipHybridTrackingGC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "926": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 926, "effectName": "amarrCruiserSkillLevelPreMulShipBonusAC2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 656, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "927": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 927, "effectName": "caldariCruiserSkillLevelPreMulShipBonusCC2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 657, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "928": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 928, "effectName": "gallenteCruiserSkillLevelPreMulShipBonusGC2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 658, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "929": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 929, "effectName": "minmatarCruiserSkillLevelPreMulShipBonusMC2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 659, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "958": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 958, "effectName": "shipArmorEmResistanceAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "959": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 959, "effectName": "shipArmorExplosiveResistanceAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "960": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 960, "effectName": "shipArmorKineticResistanceAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "961": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 961, "effectName": "shipArmorThermalResistanceAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "968": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 968, "effectName": "shipProjectileDmgMC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "980": { "disallowAutoRepeat": 0, "displayName_de": "Cloaking", "displayName_en-us": "Cloaking", "displayName_es": "Camuflaje", "displayName_fr": "Camouflage", "displayName_it": "Cloaking", "displayName_ja": "遮蔽", "displayName_ko": "클로킹", "displayName_ru": "Cloaking", "displayName_zh": "隐身", "displayNameID": 109497, "distribution": 2, "effectCategory": 1, "effectID": 980, "effectName": "cloakingWarpSafe", "electronicChance": 0, "guid": "effects.CloakingCovertOps", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "987": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 987, "effectName": "gunshipSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 673, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "988": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 988, "effectName": "gunshipSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 675, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "989": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 989, "effectName": "eliteBonusGunshipHybridOptimal1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "991": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 991, "effectName": "eliteBonusGunshipLaserOptimal1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "996": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 996, "effectName": "eliteBonusGunshipHybridTracking2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "998": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 998, "effectName": "eliteBonusGunshipProjectileFalloff2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "999": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 999, "effectName": "eliteBonusGunshipShieldBoost2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1001": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1001, "effectName": "eliteBonusGunshipCapRecharge2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 675, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1003": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1003, "effectName": "selfT2SmallLaserPulseDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12213 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1004": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1004, "effectName": "selfT2SmallLaserBeamDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 11083 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1005": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1005, "effectName": "selfT2SmallHybridBlasterDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12210 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1006": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1006, "effectName": "selfT2SmallHybridRailDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 11082 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1007": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1007, "effectName": "selfT2SmallProjectileACDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 11084 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1008": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1008, "effectName": "selfT2SmallProjectileArtyDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12201 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1009": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1009, "effectName": "selfT2MediumLaserPulseDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12214 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1010": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1010, "effectName": "selfT2MediumLaserBeamDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12204 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1011": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1011, "effectName": "selfT2MediumHybridBlasterDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12211 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1012": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1012, "effectName": "selfT2MediumHybridRailDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12206 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1013": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1013, "effectName": "selfT2MediumProjectileACDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12208 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1014": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1014, "effectName": "selfT2MediumProjectileArtyDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12202 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1015": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1015, "effectName": "selfT2LargeLaserPulseDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12215 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1016": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1016, "effectName": "selfT2LargeLaserBeamDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12205 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1017": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1017, "effectName": "selfT2LargeHybridBlasterDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12212 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1018": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1018, "effectName": "selfT2LargeHybridRailDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12207 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1019": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1019, "effectName": "selfT2LargeProjectileACDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12209 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1020": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1020, "effectName": "selfT2LargeProjectileArtyDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 12203 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1021": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1021, "effectName": "eliteBonusGunshipHybridDmg2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1022": { "description_de": "Dieses Objekt im All verankern.", "description_en-us": "Anchoring this object in space.", "description_es": "Anclando este objeto en el espacio.", "description_fr": "Ancrage de cet objet dans l'espace.", "description_it": "Anchoring this object in space.", "description_ja": "このオブジェクトを宙域に係留。", "description_ko": "이 물체를 우주에 위치 고정합니다.", "description_ru": "Anchoring this object in space.", "description_zh": "在太空中锚定这个物体。", "descriptionID": 107436, "disallowAutoRepeat": 0, "displayName_de": "anchoring", "displayName_en-us": "anchoring", "displayName_es": "anclando", "displayName_fr": "ancrage en cours", "displayName_it": "anchoring", "displayName_ja": "係留", "displayName_ko": "위치 고정 중", "displayName_ru": "anchoring", "displayName_zh": "锚定", "displayNameID": 109498, "distribution": 2, "effectCategory": 1, "effectID": 1022, "effectName": "anchorDropForStructures", "electronicChance": 0, "guid": "effects.AnchorDrop", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1023": { "disallowAutoRepeat": 0, "displayName_de": "unanchoring", "displayName_en-us": "unanchoring", "displayName_es": "desanclando", "displayName_fr": "détachement en cours", "displayName_it": "unanchoring", "displayName_ja": "未係留", "displayName_ko": "위치 고정 해제 중", "displayName_ru": "unanchoring", "displayName_zh": "取消锚定", "displayNameID": 109499, "distribution": 2, "effectCategory": 1, "effectID": 1023, "effectName": "anchorLiftForStructures", "electronicChance": 0, "guid": "effects.AnchorLift", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1024": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1024, "effectName": "shipMissileHeavyVelocityBonusCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1025": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1025, "effectName": "shipMissileLightVelocityBonusCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1030": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1030, "effectName": "remoteArmorSystemsCapNeedBonusPostPercentCapacitorNeedLocationShipModulesRequiringRemoteArmorSystems", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1033": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1033, "effectName": "eliteBonusLogisticRemoteArmorRepairCapNeed1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 678, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1034": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1034, "effectName": "eliteBonusLogisticRemoteArmorRepairCapNeed2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 679, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1035": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1035, "effectName": "eliteBonusLogisticShieldTransferCapNeed2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 679, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1036": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1036, "effectName": "eliteBonusLogisticShieldTransferCapNeed1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 678, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1046": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1046, "effectName": "shipRemoteArmorRangeGC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1047": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1047, "effectName": "shipRemoteArmorRangeAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1048": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1048, "effectName": "shipShieldTransferRangeCC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1049": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1049, "effectName": "shipShieldTransferRangeMC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1052": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1052, "effectName": "logisticSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 678, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1053": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1053, "effectName": "logisticSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 679, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1056": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1056, "effectName": "eliteBonusHeavyGunshipHybridOptimal1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1057": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1057, "effectName": "eliteBonusHeavyGunshipProjectileOptimal1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1058": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1058, "effectName": "eliteBonusHeavyGunshipLaserOptimal1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1060": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1060, "effectName": "eliteBonusHeavyGunshipProjectileFallOff1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1061": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1061, "effectName": "eliteBonusHeavyGunshipHybridDmg2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1062": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1062, "effectName": "eliteBonusHeavyGunshipLaserDmg2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1063": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1063, "effectName": "eliteBonusHeavyGunshipProjectileTracking2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1077": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1077, "effectName": "warshipSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 693, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1079": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1079, "effectName": "warshipSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 692, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1080": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1080, "effectName": "eliteBonusHeavyGunshipHybridFallOff1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1081": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1081, "effectName": "eliteBonusHeavyGunshipHeavyMissileFlightTime1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1082": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1082, "effectName": "eliteBonusHeavyGunshipLightMissileFlightTime1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1084": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1084, "effectName": "eliteBonusHeavyGunshipDroneControlRange1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 458, "modifyingAttributeID": 692, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1086": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "projectileFired", "displayName_en-us": "projectileFired", "displayName_es": "projectileFired", "displayName_fr": "projectileFired", "displayName_it": "projectileFired", "displayName_ja": "プロジェクタイル発射", "displayName_ko": "발사체 발포", "displayName_ru": "projectileFired", "displayName_zh": "射弹已发射", "displayNameID": 109500, "distribution": 1, "durationAttributeID": 51, "effectCategory": 2, "effectID": 1086, "effectName": "projectileFiredForEntities", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.ProjectileFiredForEntities", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "1087": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1087, "effectName": "eliteBonusHeavyGunshipProjectileDmg2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1099": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1099, "effectName": "shipProjectileTrackingMF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1108": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1108, "effectName": "controlTowerAmarrLaserDMGBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 64, "modifyingAttributeID": 728, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1109": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1109, "effectName": "battlecruiserSkillLevelPreMulShipBonusBC1Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 741, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1111": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1111, "effectName": "battlecruiserSkillLevelPreMulShipBonusBC2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 742, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1129": { "disallowAutoRepeat": 0, "displayName_de": "Force Unanchor", "displayName_en-us": "Force Unanchor", "displayName_es": "Desanclaje forzado", "displayName_fr": "Forcer le détachement", "displayName_it": "Force Unanchor", "displayName_ja": "強制未係留", "displayName_ko": "포스 설치 해제 중", "displayName_ru": "Force Unanchor", "displayName_zh": "强行解除锚定", "displayNameID": 109501, "distribution": 2, "durationAttributeID": 676, "effectCategory": 2, "effectID": 1129, "effectName": "structureUnanchorForced", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 76, "rangeChance": 0 }, "1130": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1130, "effectName": "controlTowerAmarrLaserOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 54, "modifyingAttributeID": 750, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1131": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1131, "effectName": "controlTowerSiloCapacityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 404, "modifiedAttributeID": 38, "modifyingAttributeID": 757, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1133": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1133, "effectName": "controlTowerMinmatarProjectileOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 54, "modifyingAttributeID": 752, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1134": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1134, "effectName": "controlTowerMinmatarProjectileFallOffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 158, "modifyingAttributeID": 753, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1137": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1137, "effectName": "controlTowerMinmatarProjectileRofBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 51, "modifyingAttributeID": 754, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1139": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1139, "effectName": "destroyerSkillLevelPreMulShipBonusDF2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 759, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1140": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1140, "effectName": "destroyerSkillLevelPreMulShipBonusDF1Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 758, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1152": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1152, "effectName": "controlTowerGallenteHybridDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 64, "modifyingAttributeID": 766, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1156": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1156, "effectName": "controlTowerTrackingArrayHybridOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 54, "modifyingAttributeID": 769, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1157": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1157, "effectName": "controlTowerTrackingArrayLaserOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 54, "modifyingAttributeID": 769, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1158": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1158, "effectName": "controlTowerTrackingArrayProjectileOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 54, "modifyingAttributeID": 769, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1159": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1159, "effectName": "controlTowerTrackingArrayProjectileTrackingBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1160": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1160, "effectName": "controlTowerTrackingArrayHybridTrackingBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1161": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1161, "effectName": "controlTowerTrackingArrayLaserTrackingBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "1173": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1173, "effectName": "ammoInfluenceEntityFlyRange", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 416, "modifyingAttributeID": 779, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1176": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1176, "effectName": "accerationControlSkillAb&MwdSpeedBoost", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 20, "modifyingAttributeID": 318, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 475, "modifiedAttributeID": 20, "modifyingAttributeID": 318, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1179": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1179, "effectName": "eliteBonusGunshipLaserDamage2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1181": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1181, "effectName": "eliteBonusLogisticEnergyTransferCapNeed1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 6, "modifyingAttributeID": 678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1182": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1182, "effectName": "shipEnergyTransferRange1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 54, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1183": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1183, "effectName": "eliteBonusLogisticEnergyTransferCapNeed2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 6, "modifyingAttributeID": 679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1184": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1184, "effectName": "shipEnergyTransferRange2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 54, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1185": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1185, "effectName": "structureStealthEmitterArraySigDecrease", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1188": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1188, "effectName": "miningBargeSkillLevelPostMulShipBonusORE2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 774, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1190": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1190, "effectName": "iceHarvestCycleTimeModulesRequiringIceHarvesting", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 780, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1191": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1191, "effectName": "iceHarvestCycleTimeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 780, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1192": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1192, "effectName": "controlTowerCaldariEwTargetSwitchDelayBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 439, "modifiedAttributeID": 691, "modifyingAttributeID": 770, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1199": { "description_de": "Kampf", "description_en-us": "Combat", "description_es": "Combate.", "description_fr": "Combat", "description_it": "Combat", "description_ja": "戦闘", "description_ko": "전투", "description_ru": "Combat", "description_zh": "战斗", "descriptionID": 107523, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "targetAttack", "displayName_en-us": "targetAttack", "displayName_es": "targetAttack", "displayName_fr": "targetAttack", "displayName_it": "targetAttack", "displayName_ja": "ターゲット攻撃", "displayName_ko": "타겟 공격", "displayName_ru": "targetAttack", "displayName_zh": "目标攻击", "displayNameID": 109504, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 1199, "effectName": "targetAttackForStructures", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.ProjectileFiredForEntities", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "1200": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107524, "disallowAutoRepeat": 0, "displayName_de": "MiningInfoMultiplier", "displayName_en-us": "MiningInfoMultiplier", "displayName_es": "MiningInfoMultiplier", "displayName_fr": "MiningInfoMultiplier", "displayName_it": "MiningInfoMultiplier", "displayName_ja": "採掘情報乗数", "displayName_ko": "채굴 정보 변동", "displayName_ru": "MiningInfoMultiplier", "displayName_zh": "采矿信息乘数", "displayNameID": 109505, "effectCategory": 0, "effectID": 1200, "effectName": "miningCrystalsMiningAtributesAdjustments", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 782, "operation": 0 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 3153, "modifyingAttributeID": 3159, "operation": 2 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 3154, "modifyingAttributeID": 3160, "operation": 2 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1203": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1203, "effectName": "controlTowerCaldariMissileVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 645, "modifyingAttributeID": 792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1210": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1210, "effectName": "controlTowerCaldariMissileRofBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 506, "modifyingAttributeID": 755, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1212, "effectName": "crystalMiningamountInfo2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 789, "modifyingAttributeID": 77, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1215": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1215, "effectName": "shipEnergyDrainAmountAF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1218": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1218, "effectName": "shipBonusPirateSmallHybridDmg", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1219": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1219, "effectName": "shipEnergyVampireTransferAmountBonusAB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1220": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107535, "disallowAutoRepeat": 0, "displayName_de": "shipEnergyVampireTransferAmountBonusAB", "displayName_en-us": "shipEnergyVampireTransferAmountBonusAB", "displayName_es": "shipEnergyVampireTransferAmountBonusAB", "displayName_fr": "shipEnergyVampireTransferAmountBonusAB", "displayName_it": "shipEnergyVampireTransferAmountBonusAB", "displayName_ja": "艦船エネルギーヴァンパイア転送量ボーナスAB", "displayName_ko": "함선 에너지 뱀파이어 전송량 보너스 AB", "displayName_ru": "shipEnergyVampireTransferAmountBonusAB", "displayName_zh": "舰船能量吸食转移量加成AB", "displayNameID": 109506, "effectCategory": 0, "effectID": 1220, "effectName": "shipEnergyVampireTransferAmountBonusAc", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1221": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1221, "effectName": "shipStasisWebRangeBonusMB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1222": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1222, "effectName": "shipStasisWebRangeBonusMC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1228": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1228, "effectName": "shipProjectileTrackingGF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1230": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1230, "effectName": "shipMissileVelocityPirateFactionFrigate", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1232": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1232, "effectName": "shipProjectileRofPirateCruiser", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1233": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1233, "effectName": "shipHybridDmgPirateCruiser", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1234, "effectName": "shipMissileVelocityPirateFactionLight", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1239": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1239, "effectName": "shipProjectileRofPirateBattleship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1240": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1240, "effectName": "shipHybridDmgPirateBattleship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1244": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1244, "effectName": "smugglingModifier", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 445, "modifyingAttributeID": 447, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1255": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1255, "effectName": "setBonusBloodraider", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 66, "modifyingAttributeID": 799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1256": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1256, "effectName": "setBonusBloodraiderNosferatu", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3423 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1257": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1257, "effectName": "blackMarketTradingSkillBoostContrabandDetectionChanceBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 800, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1258": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1258, "effectName": "skillBoostContrabandDetectionChanceBonusEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 723, "modifyingAttributeID": 800, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1261": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1261, "effectName": "setBonusSerpentis", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 315, "modifyingAttributeID": 802, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1262": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1262, "effectName": "setBonusSerpentis2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 803, "modifyingAttributeID": 447, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1264": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1264, "effectName": "interceptor2HybridTracking", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 804, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1268": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1268, "effectName": "interceptor2LaserTracking", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 804, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1279": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1279, "effectName": "interceptors2SkillLevelPreMulEliteBonusInterceptorShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 804, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1281": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1281, "effectName": "structuralAnalysisEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 806, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1282": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1282, "effectName": "eliteIndustrial1SkillLevelPreMulEliteBonusEliteIndustrialShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 807, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1283": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1283, "effectName": "eliteIndustrial2SkillLevelPreMulEliteBonusEliteIndustrialShip", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 808, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1290": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1290, "effectName": "amarrIndustrialSkillLevelPreMulShipBonusAI22Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 809, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1291": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1291, "effectName": "caldariIndustrialSkillLevelPreMulShipBonusCI2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 811, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1292": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1292, "effectName": "gallenteIndustrialSkillLevelPreMulShipBonusGI2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 813, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1293": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1293, "effectName": "minmatarIndustrialSkillLevelPreMulShipBonusMI2Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 814, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1318": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1318, "effectName": "ewSkillScanStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1321": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1321, "effectName": "ewSkillScanStrengthBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 828, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1330": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1330, "effectName": "propulsionSkillPropulsionStrengthBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 829, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1360": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1360, "effectName": "ewSkillRsdCapNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3433 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1361": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1361, "effectName": "ewSkillTdCapNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1370": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1370, "effectName": "ewSkillTpCapNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1372": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1372, "effectName": "ewSkillEwCapNeedSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1373": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1373, "effectName": "ewSkillTargetPaintingStrengthBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 832, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1387": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107601, "disallowAutoRepeat": 0, "displayName_de": "logisticsCPUReduction", "displayName_en-us": "logisticsCPUReduction", "displayName_es": "logisticsCPUReduction", "displayName_fr": "logisticsCPUReduction", "displayName_it": "logisticsCPUReduction", "displayName_ja": "ロジスティックCPU減少", "displayName_ko": "지원 CPU 감소", "displayName_ru": "logisticsCPUReduction", "displayName_zh": "后勤CPU减少", "displayNameID": 109514, "effectCategory": 0, "effectID": 1387, "effectName": "leadershipCpuBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1395": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1395, "effectName": "shieldBoostAmplifierPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1397": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1397, "effectName": "setBonusGuristas", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 548, "modifyingAttributeID": 838, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1405": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1405, "effectName": "covertOpsSkillLevelPreMulEliteBonusCoverOpsShip2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 839, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1409": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1409, "effectName": "systemScanDurationSkillAstrometrics", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1410": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1410, "effectName": "propulsionSkillCapNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1412": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1412, "effectName": "shipBonusHybridOptimalCB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1434": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1434, "effectName": "caldariShipEwStrengthCB", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3427 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1441": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1441, "effectName": "caldariShipEwOptimalRangeCB3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 598, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1442": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1442, "effectName": "caldariShipEwOptimalRangeCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1443": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1443, "effectName": "caldariShipEwCapacitorNeedCC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 487, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1445": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1445, "effectName": "ewSkillRsdMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3433 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1446": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1446, "effectName": "ewSkillTpMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1448": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1448, "effectName": "ewSkillTdMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1449": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1449, "effectName": "ewSkillRsdFallOffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3433 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1450": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1450, "effectName": "ewSkillTpFallOffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1451": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1451, "effectName": "ewSkillTdFallOffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1452": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1452, "effectName": "ewSkillEwMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1453": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1453, "effectName": "ewSkillEwFallOffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1467": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1467, "effectName": "missileSkillAoeVelocityBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1472": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1472, "effectName": "missileSkillAoeCloudSizeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1473": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1473, "effectName": "missileSkillAoeCloudSizeBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1483": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 1483, "effectName": "contrabandMasking", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 723, "modifyingAttributeID": 800, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1495": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107633, "disallowAutoRepeat": 0, "displayName_de": "multiRelayEffect", "displayName_en-us": "multiRelayEffect", "displayName_es": "multiRelayEffect", "displayName_fr": "multiRelayEffect", "displayName_it": "multiRelayEffect", "displayName_ja": "マルチリレー効果", "displayName_ko": "복합 중계 효과", "displayName_ru": "multiRelayEffect", "displayName_zh": "多重中继效果", "displayNameID": 109516, "effectCategory": 4, "effectID": 1495, "effectName": "flagshipmultiRelayEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 435, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1499": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1499, "effectName": "shieldOperationSkillBoostCapacitorNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 851, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1500": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1500, "effectName": "shieldOperationSkillBoostCapacitorNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 851, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1549": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 1549, "effectName": "ewTargetPaint", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.TargetPaint", "iconID": 0, "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 1 }, "1550": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1550, "effectName": "ewSkillTargetPaintingStrengthBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 832, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1551": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1551, "effectName": "minmatarShipEwTargetPainterMF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1577": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1577, "effectName": "haloSetBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 863, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1579": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1579, "effectName": "setBonusSansha", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 335, "modifyingAttributeID": 864, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1581": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1581, "effectName": "jumpDriveSkillsRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 867, "modifyingAttributeID": 870, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1582": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1582, "effectName": "jumpDriveSkillsRangeBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 870, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1585": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1585, "effectName": "capitalTurretSkillLaserDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1586": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1586, "effectName": "capitalTurretSkillProjectileDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1587": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1587, "effectName": "capitalTurretSkillHybridDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1588": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1588, "effectName": "capitalLauncherSkillCitadelKineticDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1590, "effectName": "missileSkillAoeVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1592": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1592, "effectName": "capitalLauncherSkillCitadelEmDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1593": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1593, "effectName": "capitalLauncherSkillCitadelExplosiveDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1594": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1594, "effectName": "capitalLauncherSkillCitadelThermalDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1595": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1595, "effectName": "missileSkillWarheadUpgradesEmDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1596": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1596, "effectName": "missileSkillWarheadUpgradesExplosiveDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1597": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1597, "effectName": "missileSkillWarheadUpgradesKineticDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1614": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1614, "effectName": "skillAdvancedSpaceshipAgilityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 853, "modifyingAttributeID": 151, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1615": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1615, "effectName": "shipAdvancedSpaceshipCommandAgilityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 853, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1616": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1616, "effectName": "skillCapitalShipsAdvancedAgility", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 874, "modifyingAttributeID": 151, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1617": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1617, "effectName": "shipCapitalAgilityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 874, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1634": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1634, "effectName": "capitalShieldOperationSkillCapacitorNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 851, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1635": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1635, "effectName": "capitalRepairSystemsSkillDurationBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 312, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1638": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1638, "effectName": "skillAdvancedWeaponUpgradesPowerNeedBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 323, "operation": 6, "skillTypeID": 3300 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 323, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 323, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1643": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107681, "disallowAutoRepeat": 0, "displayName_de": "Panzerungkommando-Mind-Link", "displayName_en-us": "ArmoredCommandMindlink", "displayName_es": "ArmoredCommandMindlink", "displayName_fr": "Lien neural de commandement blindé", "displayName_it": "ArmoredCommandMindlink", "displayName_ja": "ArmoredCommandMindlink", "displayName_ko": "장갑 버스트 마인드링크", "displayName_ru": "Имплант оптимизации брони", "displayName_zh": "装甲指挥思维网络芯片", "displayNameID": 109521, "effectCategory": 0, "effectID": 1643, "effectName": "armoredCommandMindlink", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1644": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107682, "disallowAutoRepeat": 0, "displayName_de": "Gefechtkommando-Mind-Link", "displayName_en-us": "SkirmishCommandMindlink", "displayName_es": "SkirmishCommandMindlink", "displayName_fr": "Lien neural de commandement tactique", "displayName_it": "SkirmishCommandMindlink", "displayName_ja": "SkirmishCommandMindlink", "displayName_ko": "스커미시 통제 마인드 링크", "displayName_ru": "Имплант оптимизации маневрирования", "displayName_zh": "游击战指挥思维网络芯片", "displayNameID": 109522, "effectCategory": 0, "effectID": 1644, "effectName": "skirmishCommandMindlink", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1645": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107683, "disallowAutoRepeat": 0, "displayName_de": "Schildkommando-Mind-Link", "displayName_en-us": "ShieldCommandMindlink", "displayName_es": "ShieldCommandMindlink", "displayName_fr": "Lien neural de commandement de boucliers", "displayName_it": "ShieldCommandMindlink", "displayName_ja": "ShieldCommandMindlink", "displayName_ko": "쉴드 통제 마인드 링크", "displayName_ru": "Имплант оптимизации щитов", "displayName_zh": "护盾指挥思维网络芯片", "displayNameID": 109523, "effectCategory": 0, "effectID": 1645, "effectName": "shieldCommandMindlink", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1646": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107684, "disallowAutoRepeat": 0, "displayName_de": "Informationkommando-Mind-Link", "displayName_en-us": "InformationCommandMindlink", "displayName_es": "InformationCommandMindlink", "displayName_fr": "Lien neural de commandement électronique", "displayName_it": "InformationCommandMindlink", "displayName_ja": "InformationCommandMindlink", "displayName_ko": "정보전 버스트 마인드링크", "displayName_ru": "Имплант оптимизации РЭБ", "displayName_zh": "护盾指挥思维网络芯片", "displayNameID": 109524, "effectCategory": 0, "effectID": 1646, "effectName": "informationCommandMindlink", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1650": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1650, "effectName": "skillSiegeModuleConsumptionQuantityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 885, "operation": 3, "skillTypeID": 22043 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1651": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1651, "effectName": "skillCynosural&SiegeConsumQuantityBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 885, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1657": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1657, "effectName": "missileSkillWarheadUpgradesThermalDamageBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1659": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1659, "effectName": "freighterA1SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 886, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1660": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1660, "effectName": "freighterA2SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 887, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1661": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1661, "effectName": "freighterC1SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 888, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1663": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1663, "effectName": "freighterC2SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 889, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1664": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1664, "effectName": "freighterG1SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 891, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1665": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1665, "effectName": "freighterG2SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 890, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1666": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1666, "effectName": "freighterM1SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 892, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1667": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1667, "effectName": "freighterM2SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 893, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1668": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1668, "effectName": "freighterCargoBonusA2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 887, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1669": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1669, "effectName": "freighterCargoBonusC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 889, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1670": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1670, "effectName": "freighterCargoBonusG2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 890, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1671": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1671, "effectName": "freighterCargoBonusM2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 893, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1672": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1672, "effectName": "freighterMaxVelocityBonusA1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 886, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1673": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1673, "effectName": "freighterMaxVelocityBonusC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1674": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1674, "effectName": "freighterMaxVelocityBonusG1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 891, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1675": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1675, "effectName": "freighterMaxVelocityBonusM1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 892, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1720": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1720, "effectName": "shieldBoostAmplifier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1722": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1722, "effectName": "jumpDriveSkillsCapacitorNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 898, "modifyingAttributeID": 899, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1723": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1723, "effectName": "jumpDriveSkillsCapacitorNeedBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 899, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1730": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1730, "effectName": "droneDmgBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1738": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 1738, "effectName": "doHacking", "electronicChance": 0, "guid": "effects.TargetScan", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "1752": { "disallowAutoRepeat": 0, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 1752, "effectName": "entityEwTestEffectJam", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 831, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1763": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1763, "effectName": "missileSkillRapidLauncherRoF", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1764": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1764, "effectName": "missileSkillMissileProjectileVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1765": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1765, "effectName": "missileSkillMissileProjectileVelocityBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1773": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1773, "effectName": "shipBonusSHTFalloffGF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1804": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1804, "effectName": "shipArmorEMResistanceAF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1805": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1805, "effectName": "shipArmorTHResistanceAF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1806": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1806, "effectName": "shipArmorKNResistanceAF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1807": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1807, "effectName": "shipArmorEXResistanceAF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1812": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1812, "effectName": "shipShieldEMResistanceCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1813": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1813, "effectName": "shipShieldThermalResistanceCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1814": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1814, "effectName": "shipShieldKineticResistanceCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1815": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1815, "effectName": "shipShieldExplosiveResistanceCC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1816": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1816, "effectName": "shipShieldEMResistanceCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1817": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1817, "effectName": "shipShieldThermalResistanceCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1819": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1819, "effectName": "shipShieldKineticResistanceCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1820": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1820, "effectName": "shipShieldExplosiveResistanceCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1838": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1838, "effectName": "eliteBargeSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 924, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1839": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1839, "effectName": "eliteBargeSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 925, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1848": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1848, "effectName": "miningForemanMindlink", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1849": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1849, "effectName": "miningBargeSkillLevelPostMulShipBonusORE3Ship", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 926, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1851": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107746, "disallowAutoRepeat": 0, "displayName_de": "SelfRof", "displayName_en-us": "SelfRof", "displayName_es": "SelfRof", "displayName_fr": "SelfRof", "displayName_it": "SelfRof", "displayName_ja": "SelfRof", "displayName_ko": "SelfRof", "displayName_ru": "SelfRof", "displayName_zh": "自身发射速率", "displayNameID": 109539, "effectCategory": 0, "effectID": 1851, "effectName": "selfRof", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1862": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1862, "effectName": "shipMissileEMDamageCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1863": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1863, "effectName": "shipMissileThermalDamageCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1864": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1864, "effectName": "shipMissileExplosiveDamageCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1878": { "disallowAutoRepeat": 0, "distribution": 1, "durationAttributeID": 943, "effectCategory": 2, "effectID": 1878, "effectName": "entitySensorDampen", "electronicChance": 0, "falloffAttributeID": 950, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 237, "operation": 4 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 79, "modifyingAttributeID": 242, "operation": 4 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 2 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 565, "operation": 0 } ], "npcActivationChanceAttributeID": 932, "propulsionChance": 0, "published": 0, "rangeAttributeID": 938, "rangeChance": 1 }, "1879": { "disallowAutoRepeat": 0, "distribution": 1, "durationAttributeID": 945, "effectCategory": 2, "effectID": 1879, "effectName": "entityTargetPaint", "electronicChance": 0, "falloffAttributeID": 954, "guid": "effects.TargetPaint", "iconID": 0, "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 6 } ], "npcActivationChanceAttributeID": 935, "propulsionChance": 0, "published": 0, "rangeAttributeID": 941, "rangeChance": 1 }, "1882": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1882, "effectName": "miningYieldMultiplyPercent", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1885": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1885, "effectName": "shipCruiseLauncherROFBonus2CB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1886": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1886, "effectName": "shipSiegeLauncherROFBonus2CB", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1895": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1895, "effectName": "miningUpgradeCPUReductionBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 927, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1896": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1896, "effectName": "eliteBargeBonusIceHarvestingCycleTimeBarge3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 925, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1897": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1897, "effectName": "shieldCompensationSkillBoostHardeningBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 958, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1908": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1908, "effectName": "reconShipSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 962, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1909": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1909, "effectName": "reconShipSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 963, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1910": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1910, "effectName": "eliteBonusVampireDrainAmount2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1911": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1911, "effectName": "eliteReconBonusGravimetricStrength2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1912": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1912, "effectName": "eliteReconBonusMagnetometricStrength2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1913": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1913, "effectName": "eliteReconBonusRadarStrength2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1914": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1914, "effectName": "eliteReconBonusLadarStrength2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1921": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1921, "effectName": "eliteReconStasisWebBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1922": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1922, "effectName": "eliteReconScramblerRangeBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1943": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107783, "disallowAutoRepeat": 0, "displayName_de": "EM Resistance Modifier", "displayName_en-us": "EM Resistance Modifier", "displayName_es": "Modificador de resistencia electromagnética", "displayName_fr": "Modificateur de résistance EM", "displayName_it": "EM Resistance Modifier", "displayName_ja": "EMレジスタンス修正乗数", "displayName_ko": "EM 저항력 보정치", "displayName_ru": "EM Resistance Modifier", "displayName_zh": "EM抗性乘数", "displayNameID": 109540, "effectCategory": 0, "effectID": 1943, "effectName": "ammoEMResistOther", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "LocationModifier", "modifiedAttributeID": 133, "modifyingAttributeID": 958, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "1959": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 1959, "effectName": "armorReinforcerMassAdd", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 796, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1962": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 1962, "effectName": "signatureRadiusBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 973, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1964": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1964, "effectName": "shipBonusShieldTransferCapneed1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1969": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1969, "effectName": "shipBonusRemoteArmorRepairCapNeedGC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "1996": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 1996, "effectName": "caldariShipEwCapacitorNeedCF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 588, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2000": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2000, "effectName": "droneRangeBonusAdd", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 458, "modifyingAttributeID": 459, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2008": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2008, "effectName": "cynosuralDurationBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 21603 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2010": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2010, "effectName": "propulsionDroneJammingStrength", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 829, "operation": 6, "skillTypeID": 23599 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2013": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2013, "effectName": "droneMaxVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2014": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2014, "effectName": "droneMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2015": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2015, "effectName": "droneDurabilityShieldCapBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2016": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2016, "effectName": "droneDurabilityArmorHPBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2017": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2017, "effectName": "droneDurabilityHPBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2018": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2018, "effectName": "damageRepairedSkillBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 39, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2019": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2019, "effectName": "repairDroneShieldBonusBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 39, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2020": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2020, "effectName": "repairDroneArmorDamageAmountBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 39, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2029": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2029, "effectName": "addToSignatureRadius2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 983, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2041": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2041, "effectName": "modifyArmorResonancePostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2052": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2052, "effectName": "modifyShieldResonancePostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2053": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2053, "effectName": "emShieldCompensationHardeningBonusGroupShieldAmp", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 295, "modifiedAttributeID": 984, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2054": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2054, "effectName": "explosiveShieldCompensationHardeningBonusGroupShieldAmp", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 295, "modifiedAttributeID": 985, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2055": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2055, "effectName": "kineticShieldCompensationHardeningBonusGroupShieldAmp", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 295, "modifiedAttributeID": 986, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2056": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2056, "effectName": "thermalShieldCompensationHardeningBonusGroupShieldAmp", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 295, "modifiedAttributeID": 987, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2105": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2105, "effectName": "emArmorCompensationHardeningBonusGroupArmorCoating", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 98, "modifiedAttributeID": 984, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2106, "effectName": "explosiveArmorCompensationHardeningBonusGroupArmorCoating", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 98, "modifiedAttributeID": 985, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2107": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2107, "effectName": "kineticArmorCompensationHardeningBonusGroupArmorCoating", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 98, "modifiedAttributeID": 986, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2108": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2108, "effectName": "thermicArmorCompensationHardeningBonusGroupArmorCoating", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 98, "modifiedAttributeID": 987, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2109": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2109, "effectName": "emArmorCompensationHardeningBonusGroupEnergized", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 326, "modifiedAttributeID": 984, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2110": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2110, "effectName": "explosiveArmorCompensationHardeningBonusGroupEnergized", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 326, "modifiedAttributeID": 985, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2111": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2111, "effectName": "kineticArmorCompensationHardeningBonusGroupEnergized", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 326, "modifiedAttributeID": 986, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2112": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2112, "effectName": "thermicArmorCompensationHardeningBonusGroupEnergized", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 326, "modifiedAttributeID": 987, "modifyingAttributeID": 958, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2130": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2130, "effectName": "smallHybridMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2131": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2131, "effectName": "smallEnergyMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2132": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2132, "effectName": "smallProjectileMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2133": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2133, "effectName": "energyTransferArrayMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 54, "modifyingAttributeID": 769, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2134": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2134, "effectName": "shieldTransporterMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 41, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1697, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2135": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2135, "effectName": "armorRepairProjectorMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 325, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1698, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2143": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2143, "effectName": "minmatarShipEwTargetPainterMC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 554, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2148": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2148, "effectName": "droneDamageBonusRequringDrones", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2152": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 1002, "effectCategory": 1, "effectID": 2152, "effectName": "jumpPortalGeneration", "electronicChance": 0, "guid": "effects.JumpPortal", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2155": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2155, "effectName": "eliteBonusCommandShipProjectileDamageCS1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2156": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2156, "effectName": "eliteBonusCommandShipProjectileFalloffCS2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2157": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2157, "effectName": "eliteBonusCommandShipLaserDamageCS1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2158": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2158, "effectName": "eliteBonusCommandShipLaserROFCS2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2160": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2160, "effectName": "eliteBonusCommandShipHybridFalloffCS2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2161": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2161, "effectName": "eliteBonusCommandShipHybridOptimalCS1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2179": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2179, "effectName": "shipBonusDroneHitpointsGC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2181": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2181, "effectName": "shipBonusDroneHitpointsFixedAC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2186": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2186, "effectName": "shipBonusDroneHitpointsGB2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2187": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2187, "effectName": "shipBonusDroneDamageMultiplierGB2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2188": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2188, "effectName": "shipBonusDroneDamageMultiplierGC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2189": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2189, "effectName": "shipBonusDroneDamageMultiplierAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2192": { "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 2192, "effectName": "entityShieldBoostingSmall", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1006, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2193": { "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 2193, "effectName": "entityShieldBoostingMedium", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1007, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2194": { "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 2194, "effectName": "entityShieldBoostingLarge", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1008, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2195": { "disallowAutoRepeat": 0, "durationAttributeID": 630, "effectCategory": 1, "effectID": 2195, "effectName": "entityArmorRepairingSmall", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1009, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2196": { "disallowAutoRepeat": 0, "durationAttributeID": 630, "effectCategory": 1, "effectID": 2196, "effectName": "entityArmorRepairingMedium", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1010, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2197": { "disallowAutoRepeat": 0, "durationAttributeID": 630, "effectCategory": 1, "effectID": 2197, "effectName": "entityArmorRepairingLarge", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1011, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2200": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2200, "effectName": "eliteBonusInterdictorsMissileKineticDamage1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1012, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2201": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2201, "effectName": "eliteBonusInterdictorsProjectileFalloff1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1012, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2215": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2215, "effectName": "shipBonusPirateFrigateProjDamage", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2231": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 2231, "effectName": "scanStrengthBonusPercentActivate", "electronicChance": 0, "guid": "effects.ScanStrengthBonusActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2232": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2232, "effectName": "scanStrengthBonusPercentOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2246": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 2246, "effectName": "scanStrengthTargetPercentBonus", "electronicChance": 0, "falloffAttributeID": 158, "guid": "", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 1 }, "2249": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2249, "effectName": "shipBonusDroneMiningAmountAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2250": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2250, "effectName": "shipBonusDroneMiningAmountGC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2251": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2251, "effectName": "commandshipMultiRelayEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 435, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 435, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2252": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2252, "effectName": "covertOpsAndReconOpsCloakModuleDelayBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 669, "modifyingAttributeID": 1034, "operation": 7, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2253": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2253, "effectName": "covertOpsStealthBomberTargettingDelayBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 560, "modifyingAttributeID": 1035, "operation": 7, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2255": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 2255, "effectName": "tractorBeamCan", "electronicChance": 0, "guid": "effects.TractorBeam", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "2296": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2296, "effectName": "modifyArmorResonancePassivePostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 994, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 995, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 996, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 997, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2297": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2297, "effectName": "modifyShieldResonancePassivePostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 994, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 995, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 996, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 997, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2298": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2298, "effectName": "scanStrengthBonusPercentPassive", "electronicChance": 0, "guid": "effects.ScanStrengthBonusActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2302": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2302, "effectName": "damageControl", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 267, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 268, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 269, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 270, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 271, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 272, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 273, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 274, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2305": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2305, "effectName": "eliteReconBonusEnergyNeutAmount2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2311": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2311, "effectName": "skillADDmaxJumpClones", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 979, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2312": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2312, "effectName": "disallowOffensiveActChar", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 872, "modifyingAttributeID": 1048, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2354": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2354, "effectName": "capitalRemoteArmorRepairerCapNeedBonusSkill", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2355": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2355, "effectName": "capitalRemoteShieldTransferCapNeedBonusSkill", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2356": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2356, "effectName": "capitalRemoteEnergyTransferCapNeedBonusSkill", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 24572 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2402": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2402, "effectName": "skillSuperWeaponDmgBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 24563 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 24563 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 24563 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 24563 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2411": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2411, "effectName": "cloneVatMaxJumpCloneBonusSkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1073, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2413": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 2413, "effectName": "snowBallLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2422": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 107959, "disallowAutoRepeat": 0, "displayName_de": "Max Velocity Bonus", "displayName_en-us": "Max Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Max Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Max Velocity Bonus", "displayName_zh": "最大速度加成", "displayNameID": 109543, "effectCategory": 0, "effectID": 2422, "effectName": "implantVelocityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1076, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "2426": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2426, "effectName": "skillInterdictorEliteBonus1SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1012, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2427": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2427, "effectName": "skillInterdictorEliteBonus2SkillLevel", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1013, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2431": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2431, "effectName": "energyManagementSkillBoostCapacitorCapacityBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1079, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2432": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2432, "effectName": "energyManagementCapacitorCapacityBonusPostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1079, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2444": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2444, "effectName": "minerCpuUsageMultiplyPercent2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1082, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2445": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2445, "effectName": "iceMinerCpuUsagePercent", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1082, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2451": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2451, "effectName": "commandShipSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1000, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2452": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2452, "effectName": "commandShipSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 999, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2456": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2456, "effectName": "miningUpgradeCPUPenaltyReductionModulesRequiringMiningUpgradePercent", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1082, "modifyingAttributeID": 927, "operation": 6, "skillTypeID": 22578 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2465": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2465, "effectName": "shipBonusArmorResistAB", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 492, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 492, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 492, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2479": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2479, "effectName": "iceHarvestCycleTimeModulesRequiringIceHarvestingOnline", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 780, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2481": { "description_de": "Versucht, das Ziel vom Warpen abzuhalten.", "description_en-us": "Attempts to prevent the target from warping.", "description_es": "Intenta impedir que el objetivo warpee.", "description_fr": "Essaie d'empêcher la cible de warper.", "description_it": "Attempts to prevent the target from warping.", "description_ja": "ターゲットのワープ阻止を試みる。", "description_ko": "타겟의 워프를 막기 위한 시도입니다.", "description_ru": "Attempts to prevent the target from warping.", "description_zh": "阻止目标进行跃迁。", "descriptionID": 107988, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Warp Scramble", "displayName_en-us": "Warp Scramble", "displayName_es": "Distorsión de warp", "displayName_fr": "Inhibition de warp", "displayName_it": "Warp Scramble", "displayName_ja": "ワープスクランブル", "displayName_ko": "워프 스크램블", "displayName_ru": "Warp Scramble", "displayName_zh": "跃迁干扰", "displayNameID": 109546, "distribution": 1, "durationAttributeID": 505, "effectCategory": 2, "effectID": 2481, "effectName": "warpScrambleForStructure", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "npcUsageChanceAttributeID": 504, "propulsionChance": 0, "published": 1, "rangeAttributeID": 103, "rangeChance": 0 }, "2485": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2485, "effectName": "implantArmorHpBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1083, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2488": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2488, "effectName": "implantVelocityBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1084, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2489": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2489, "effectName": "shipBonusRemoteTrackingComputerFalloffMC", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 2044, "modifyingAttributeID": 489, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2490": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2490, "effectName": "shipBonusRemoteTrackingComputerFalloffGC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 2044, "modifyingAttributeID": 658, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2491": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2491, "effectName": "ewSkillEcmBurstRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 142, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2492": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2492, "effectName": "ewSkillEcmBurstCapNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2503": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2503, "effectName": "shipHTTrackingBonusGB2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2504": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2504, "effectName": "shipBonusHybridTrackingGF2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2561": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2561, "effectName": "eliteBonusAssaultShipMissileVelocity1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2580": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2580, "effectName": "neurotoxinRecoverySkillBoostChanceBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1125, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2589": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2589, "effectName": "modifyBoosterEffectChanceWithBoosterChanceBonusPostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1089, "modifyingAttributeID": 1125, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1090, "modifyingAttributeID": 1125, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1091, "modifyingAttributeID": 1125, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1092, "modifyingAttributeID": 1125, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1093, "modifyingAttributeID": 1125, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2590, "effectName": "naniteControlSkillBoostBoosterAttributeModifier", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1126, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2602": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2602, "effectName": "shipBonusEmShieldResistanceCB2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2603": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2603, "effectName": "shipBonusExplosiveShieldResistanceCB2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2604": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2604, "effectName": "shipBonusKineticShieldResistanceCB2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2605": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2605, "effectName": "shipBonusThermicShieldResistanceCB2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2611": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2611, "effectName": "eliteBonusGunshipProjectileDamage1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2644": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2644, "effectName": "increaseSignatureRadiusOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 554, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2645": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2645, "effectName": "scanResolutionMultiplierOnline", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 565, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2646": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2646, "effectName": "maxTargetRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2647": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2647, "effectName": "eliteBonusHeavyGunshipHeavyMissileLauncherRof2", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2648": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2648, "effectName": "eliteBonusHeavyGunshipHeavyAssaultMissileLauncherRof2", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2649": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2649, "effectName": "eliteBonusHeavyGunshipAssaultMissileLauncherRof2", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2656": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2656, "effectName": "scanStrengthBonusSkillLevelIncrease", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 846, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2662": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 73, "effectCategory": 1, "effectID": 2662, "effectName": "entityEnvironmentalEffectDamageTest", "electronicChance": 0, "guid": "effects.EMPWave", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 930, "propulsionChance": 0, "published": 0, "rangeAttributeID": 99, "rangeChance": 0, "sfxName": "None" }, "2663": { "description_de": "Muss in einen leeren Modifikationsslot eingebaut werden.", "description_en-us": "Must be installed into an open rig slot", "description_es": "Debe instalarse en una ranura de complemento abierta.", "description_fr": "Doit être installé sur un emplacement d'optimisation libre", "description_it": "Must be installed into an open rig slot", "description_ja": "リグの空いているスロットに設置する必要あり", "description_ko": "반드시 열려있는 리그 슬롯에 설치되어야 합니다.", "description_ru": "Устанавливается в свободный разъём для тюнинг-модулей", "description_zh": "必须安装在一个空的改装件槽位中", "descriptionID": 108049, "disallowAutoRepeat": 0, "displayName_de": "Rig Slot", "displayName_en-us": "Rig Slot", "displayName_es": "Ranura de complemento", "displayName_fr": "Emplacement de module d'optimisation", "displayName_it": "Rig Slot", "displayName_ja": "リグスロット", "displayName_ko": "리그 슬롯", "displayName_ru": "Разъёмы для тюнинг-модулей", "displayName_zh": "改装件插槽", "displayNameID": 109565, "effectCategory": 0, "effectID": 2663, "effectName": "rigSlot", "electronicChance": 0, "guid": "", "iconID": 3266, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "2670": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 2670, "effectName": "sensorBoosterActivePercentage", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2688": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2688, "effectName": "capNeedBonusEffectLasers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2689": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2689, "effectName": "capNeedBonusEffectHybrids", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2690": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2690, "effectName": "cpuNeedBonusEffectLasers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2691": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2691, "effectName": "cpuNeedBonusEffectHybrid", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2692": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2692, "effectName": "cpuNeedBonusEffectProjectile", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2693": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2693, "effectName": "falloffBonusEffectLasers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2694": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2694, "effectName": "falloffBonusEffectHybrids", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2695": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2695, "effectName": "falloffBonusEffectProjectiles", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2696": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2696, "effectName": "maxRangeBonusEffectLasers", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2697": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2697, "effectName": "maxRangeBonusEffectHybrids", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2698": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2698, "effectName": "maxRangeBonusEffectProjectiles", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2706": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2706, "effectName": "drawbackPowerNeedLasers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 30, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2707": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2707, "effectName": "drawbackPowerNeedHybrids", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 30, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2708": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2708, "effectName": "drawbackPowerNeedProjectiles", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 30, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2712": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2712, "effectName": "drawbackArmorHP", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2713": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2713, "effectName": "drawbackCPUOutput", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2714": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2714, "effectName": "drawbackCPUNeedLaunchers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1138, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2716": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2716, "effectName": "drawbackSigRad", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2717": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2717, "effectName": "drawbackAgility", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "2718": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2718, "effectName": "drawbackShieldCapacity", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2725": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2725, "effectName": "rigDrawbackSkillEffect", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1139, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2726": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 2726, "effectName": "miningClouds", "electronicChance": 0, "guid": "effects.CloudMining", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "2727": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2727, "effectName": "gasCloudHarvestingMaxGroupSkillLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 737, "modifiedAttributeID": 763, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2734": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2734, "effectName": "shipECMScanStrengthBonusCF", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 463, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 463, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 463, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 463, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2735": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108092, "disallowAutoRepeat": 0, "displayName_de": "Armor Hitpoint Penalty", "displayName_en-us": "Armor Hitpoint Penalty", "displayName_es": "Penalización de puntos de vida del blindaje", "displayName_fr": "Pénalité de PV du blindage", "displayName_it": "Armor Hitpoint Penalty", "displayName_ja": "アーマーヒットポイントペナルティ", "displayName_ko": "장갑 내구도 페널티", "displayName_ru": "Armor Hitpoint Penalty", "displayName_zh": "装甲强度值惩罚", "displayNameID": 109567, "effectCategory": 0, "effectID": 2735, "effectName": "boosterArmorHpPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1091, "guid": "None", "iconID": 1383, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1141, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2736": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108093, "disallowAutoRepeat": 0, "displayName_de": "Armor Repairer Penalty", "displayName_en-us": "Armor Repairer Penalty", "displayName_es": "Penalización de reparador de blindaje", "displayName_fr": "Pénalité de réparateur de blindage", "displayName_it": "Armor Repairer Penalty", "displayName_ja": "アーマーリペアペナルティ", "displayName_ko": "장갑 수리장치 페널티", "displayName_ru": "Armor Repairer Penalty", "displayName_zh": "装甲维修器惩罚", "displayNameID": 109568, "effectCategory": 0, "effectID": 2736, "effectName": "boosterArmorRepairAmountPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1091, "iconID": 80, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 62, "modifiedAttributeID": 84, "modifyingAttributeID": 1142, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1199, "modifiedAttributeID": 84, "modifyingAttributeID": 1142, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "2737": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108094, "disallowAutoRepeat": 0, "displayName_de": "Shield Capacity Penalty", "displayName_en-us": "Shield Capacity Penalty", "displayName_es": "Penalización de capacidad de escudo", "displayName_fr": "Pénalité de capacité du bouclier", "displayName_it": "Shield Capacity Penalty", "displayName_ja": "シールド容量ペナルティ", "displayName_ko": "실드량 페널티", "displayName_ru": "Shield Capacity Penalty", "displayName_zh": "护盾容量值惩罚", "displayNameID": 109569, "effectCategory": 0, "effectID": 2737, "effectName": "boosterShieldCapacityPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1089, "guid": "None", "iconID": 1384, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1143, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2739": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108096, "disallowAutoRepeat": 0, "displayName_de": "Abzug auf die Optimale Reichweite von Geschütztürmen", "displayName_en-us": "Turret Optimal Range Penalty", "displayName_es": "Penalización de alcance óptimo de torreta", "displayName_fr": "Pénalité de portée optimale des tourelles", "displayName_it": "Turret Optimal Range Penalty", "displayName_ja": "タレット最適射程距離ペナルティ", "displayName_ko": "터렛 최적사거리 페널티", "displayName_ru": "Сокращение оптимальной дальности ведения орудийного огня", "displayName_zh": "炮台最佳射程惩罚", "displayNameID": 109571, "effectCategory": 0, "effectID": 2739, "effectName": "boosterTurretOptimalRangePenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1092, "iconID": 1391, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1144, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "2741": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108097, "disallowAutoRepeat": 0, "displayName_de": "Geschützturm-Präzisionsabfall", "displayName_en-us": "Turret Falloff Penalty", "displayName_es": "Penalización de alcance efectivo de torreta", "displayName_fr": "Pénalité de distance de perte des tourelles", "displayName_it": "Turret Falloff Penalty", "displayName_ja": "タレット精度低下ペナルティ", "displayName_ko": "터렛 유효사거리 페널티", "displayName_ru": "Штраф к эффективной дальности действия", "displayName_zh": "炮台失准范围惩罚", "displayNameID": 109572, "effectCategory": 0, "effectID": 2741, "effectName": "boosterTurretFalloffPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1093, "guid": "None", "iconID": 1399, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1146, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2745": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108099, "disallowAutoRepeat": 0, "displayName_de": "Capacitor Capacity Penalty", "displayName_en-us": "Capacitor Capacity Penalty", "displayName_es": "Penalización de capacidad del condensador", "displayName_fr": "Pénalité de charge de capaciteur", "displayName_it": "Capacitor Capacity Penalty", "displayName_ja": "キャパシタ容量ペナルティ", "displayName_ko": "캐패시터 용량 페널티", "displayName_ru": "Capacitor Capacity Penalty", "displayName_zh": "电容容量惩罚", "displayNameID": 109574, "effectCategory": 0, "effectID": 2745, "effectName": "boosterCapacitorCapacityPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1090, "guid": "None", "iconID": 1400, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1150, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2746": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108100, "disallowAutoRepeat": 0, "displayName_de": "Max Velocity Penalty", "displayName_en-us": "Max Velocity Penalty", "displayName_es": "Penalización de velocidad máxima", "displayName_fr": "Pénalité de vitesse max", "displayName_it": "Max Velocity Penalty", "displayName_ja": "最高速度ペナルティ", "displayName_ko": "최대 속도 페널티", "displayName_ru": "Max Velocity Penalty", "displayName_zh": "最大速度惩罚", "displayNameID": 109575, "effectCategory": 0, "effectID": 2746, "effectName": "boosterMaxVelocityPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1090, "guid": "None", "iconID": 1389, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1151, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2747": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108101, "disallowAutoRepeat": 0, "displayName_de": "Turret Tracking Penalty", "displayName_en-us": "Turret Tracking Penalty", "displayName_es": "Penalización de rastreo de torreta", "displayName_fr": "Pénalité de suivi des tourelles", "displayName_it": "Turret Tracking Penalty", "displayName_ja": "タレット追跡ペナルティ", "displayName_ko": "터렛 트래킹 페널티", "displayName_ru": "Turret Tracking Penalty", "displayName_zh": "炮台跟踪惩罚", "displayNameID": 109576, "effectCategory": 0, "effectID": 2747, "effectName": "boosterTurretTrackingPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1092, "guid": "None", "iconID": 1398, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1145, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2748": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108102, "disallowAutoRepeat": 0, "displayName_de": "Missile Velocity Penalty", "displayName_en-us": "Missile Velocity Penalty", "displayName_es": "Penalización de velocidad de misil", "displayName_fr": "Pénalité de vitesse des missiles", "displayName_it": "Missile Velocity Penalty", "displayName_ja": "ミサイル速度ペナルティ", "displayName_ko": "미사일 속도 페널티", "displayName_ru": "Missile Velocity Penalty", "displayName_zh": "导弹飞行速度惩罚", "displayNameID": 109577, "effectCategory": 0, "effectID": 2748, "effectName": "boosterMissileVelocityPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1093, "guid": "None", "iconID": 1389, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1148, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2749": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108103, "disallowAutoRepeat": 0, "displayName_de": "Explosion Velocity Penalty", "displayName_en-us": "Explosion Velocity Penalty", "displayName_es": "Penalización de velocidad de explosión", "displayName_fr": "Pénalité de vitesse d'explosion", "displayName_it": "Explosion Velocity Penalty", "displayName_ja": "爆発速度ペナルティ", "displayName_ko": "폭발속도 페널티", "displayName_ru": "Explosion Velocity Penalty", "displayName_zh": "爆炸速度惩罚", "displayNameID": 109578, "effectCategory": 0, "effectID": 2749, "effectName": "boosterMissileExplosionVelocityPenalty", "electronicChance": 0, "fittingUsageChanceAttributeID": 1093, "guid": "None", "iconID": 1389, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 1147, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2756": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2756, "effectName": "shipBonusECMStrengthBonusCC", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 487, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 487, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 487, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 487, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2757": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 2757, "effectName": "salvaging", "electronicChance": 0, "guid": "effects.Salvaging", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "2760": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2760, "effectName": "boosterModifyBoosterArmorPenalties", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1141, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1142, "modifyingAttributeID": 1126, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2763": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2763, "effectName": "boosterModifyBoosterShieldPenalty", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 616, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1143, "modifyingAttributeID": 1126, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2766": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2766, "effectName": "boosterModifyBoosterMaxVelocityAndCapacitorPenalty", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1150, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1151, "modifyingAttributeID": 1126, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2776": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2776, "effectName": "boosterModifyBoosterMissilePenalty", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1147, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1149, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1148, "modifyingAttributeID": 1126, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2778": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2778, "effectName": "boosterModifyBoosterTurretPenalty", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1146, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1145, "modifyingAttributeID": 1126, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1144, "modifyingAttributeID": 1126, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2791": { "disallowAutoRepeat": 0, "displayName_de": "Lenkwaffen-Explosionsradius-Nachteil", "displayName_en-us": "Missile Explosion Radius Penalty", "displayName_es": "Penalización de radio de explosión de misiles", "displayName_fr": "Pénalité de rayon d'explosion des missiles", "displayName_it": "Missile Explosion Radius Penalty", "displayName_ja": "ミサイル爆発半径ペナルティ", "displayName_ko": "미사일 폭발반경 페널티", "displayName_ru": "Отрицательное влияние на разброс при поражении целей ракетами", "displayName_zh": "导弹爆炸半径惩罚", "displayNameID": 314723, "effectCategory": 0, "effectID": 2791, "effectName": "boosterMissileExplosionCloudPenaltyFixed", "electronicChance": 0, "fittingUsageChanceAttributeID": 1093, "iconID": 1390, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 1149, "operation": 6, "skillTypeID": 3452 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2792": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2792, "effectName": "modifyArmorResonancePostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2794": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2794, "effectName": "salvagingAccessDifficultyBonusEffectPassive", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 902, "operation": 2, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2795": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2795, "effectName": "modifyShieldResonancePostPercentPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2796": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2796, "effectName": "massReductionBonusPassive", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1131, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2797": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2797, "effectName": "projectileWeaponSpeedMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2798": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2798, "effectName": "projectileWeaponDamageMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2799": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2799, "effectName": "missileLauncherSpeedMultiplierPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2801": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2801, "effectName": "energyWeaponSpeedMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2802": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2802, "effectName": "hybridWeaponDamageMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2803": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2803, "effectName": "energyWeaponDamageMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2804": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2804, "effectName": "hybridWeaponSpeedMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2805": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2805, "effectName": "shipBonusLargeEnergyWeaponDamageAB2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 585, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2809": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2809, "effectName": "shipMissileAssaultMissileVelocityBonusCC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2810": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2810, "effectName": "eliteBonusHeavyGunshipAssaultMissileFlightTime1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2812": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2812, "effectName": "caldariShipECMBurstOptimalRangeCB3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 142, "modifyingAttributeID": 598, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2820": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2820, "effectName": "maxScanDeviationSelfSkillModifier", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1156, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2837": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 2837, "effectName": "armorHPBonusAdd", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1159, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2846": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2846, "effectName": "skillBoostTrackingSpeedBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2847": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2847, "effectName": "trackingSpeedBonusPassiveRequiringGunneryTrackingSpeedBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2848": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2848, "effectName": "accessDifficultyBonusModifierRequiringArchaelogy", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 1160, "operation": 6, "skillTypeID": 13278 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2849": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2849, "effectName": "accessDifficultyBonusModifierRequiringHacking", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 1160, "operation": 6, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2850": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2850, "effectName": "durationBonusForGroupAfterburner", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2851": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2851, "effectName": "missileDMGBonusPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 212, "modifyingAttributeID": 213, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2852": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2852, "effectName": "maxTargetingRangeBonusPremulPassive", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 237, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2853": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2853, "effectName": "cloakingTargetingDelayBonusLRSMCloakingPassive", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 560, "modifyingAttributeID": 619, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2857": { "disallowAutoRepeat": 0, "durationAttributeID": 73, "effectCategory": 1, "effectID": 2857, "effectName": "cynosuralGeneration", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1163, "modifyingAttributeID": 1163, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2858": { "disallowAutoRepeat": 0, "durationAttributeID": 73, "effectCategory": 1, "effectID": 2858, "effectName": "cloneJumpAccepting", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1163, "modifyingAttributeID": 1163, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "2865": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108178, "disallowAutoRepeat": 0, "displayName_de": "Max Velocity Bonus", "displayName_en-us": "Max Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Max Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Max Velocity Bonus", "displayName_zh": "最大速度加成", "displayNameID": 109590, "effectCategory": 4, "effectID": 2865, "effectName": "velocityBonusOnline", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1076, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0, "sfxName": "None" }, "2866": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2866, "effectName": "biologyTimeBonusFixed", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 330, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2867": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2867, "effectName": "sentryDroneDamageBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2868": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2868, "effectName": "armorDamageAmountBonusCapitalArmorRepairers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 806, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2872": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2872, "effectName": "missileVelocityBonusDefender", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3323 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2881": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2881, "effectName": "missileEMDmgBonusCruise3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2882": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2882, "effectName": "missileExplosiveDmgBonusCruise3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2883": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2883, "effectName": "missileKineticDmgBonusCruise3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2884": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2884, "effectName": "missileThermalDmgBonusCruise3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2885": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2885, "effectName": "gasHarvestingCycleTimeModulesRequiringGasCloudHarvesting", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2886": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2886, "effectName": "setMaxLockedTargets", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2887": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2887, "effectName": "missileEMDmgBonusRocket", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2888": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2888, "effectName": "missileExplosiveDmgBonusRocket", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2889": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2889, "effectName": "missileKineticDmgBonusRocket", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2890": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2890, "effectName": "missileThermalDmgBonusRocket", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2891": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2891, "effectName": "missileEMDmgBonusStandard", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2892": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2892, "effectName": "missileExplosiveDmgBonusStandard", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2893": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2893, "effectName": "missileKineticDmgBonusStandard", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2894": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2894, "effectName": "missileThermalDmgBonusStandard", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2899": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2899, "effectName": "missileEMDmgBonusHeavy", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2900": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2900, "effectName": "missileExplosiveDmgBonusHeavy", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2901": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2901, "effectName": "missileKineticDmgBonusHeavy", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2902": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2902, "effectName": "missileThermalDmgBonusHeavy", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2903": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2903, "effectName": "missileEMDmgBonusHAM", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2904": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2904, "effectName": "missileExplosiveDmgBonusHAM", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2905": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2905, "effectName": "missileKineticDmgBonusHAM", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2906": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2906, "effectName": "missileThermalDmgBonusHAM", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2907": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2907, "effectName": "missileEMDmgBonusTorpedo", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2908": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2908, "effectName": "missileExplosiveDmgBonusTorpedo", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2909": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2909, "effectName": "missileKineticDmgBonusTorpedo", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2910": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2910, "effectName": "missileThermalDmgBonusTorpedo", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2911": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2911, "effectName": "dataminerModuleDurationReduction", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 538, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2918": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2918, "effectName": "posStructureControlAmountBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1174, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2967": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2967, "effectName": "skillTriageModuleConsumptionQuantityBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 885, "operation": 3, "skillTypeID": 27906 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2971": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 2971, "effectName": "bombLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2974": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2974, "effectName": "skillRemoteECMDurationBonusSkillLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1193, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2979": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2979, "effectName": "\tskillRemoteHullRepairSystemsCapNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 27902 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2980": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2980, "effectName": "skillCapitalRemoteHullRepairSystemsCapNeedBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 27936 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "2982": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 2982, "effectName": "skillRemoteECMDurationBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1193, "operation": 6, "skillTypeID": 27911 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2397, "modifyingAttributeID": 1193, "operation": 6, "skillTypeID": 27911 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2399, "modifyingAttributeID": 1193, "operation": 6, "skillTypeID": 27911 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2400, "modifyingAttributeID": 1193, "operation": 6, "skillTypeID": 27911 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2398, "modifyingAttributeID": 1193, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3001": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3001, "effectName": "overloadRofBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1205, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3002": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3002, "effectName": "overloadSelfDurationBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1206, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3024": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3024, "effectName": "eliteBonusCoverOpsBombExplosiveDmg1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 569, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3025": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3025, "effectName": "overloadSelfDamageBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1210, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3026": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3026, "effectName": "eliteBonusCoverOpsBombKineticDmg1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 569, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3027": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3027, "effectName": "eliteBonusCoverOpsBombThermalDmg1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 569, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3028": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3028, "effectName": "eliteBonusCoverOpsBombEmDmg1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 569, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3029": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3029, "effectName": "overloadSelfEmHardeningBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 984, "modifyingAttributeID": 1208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3030": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3030, "effectName": "overloadSelfThermalHardeningBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 987, "modifyingAttributeID": 1208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3031": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3031, "effectName": "overloadSelfExplosiveHardeningBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 985, "modifyingAttributeID": 1208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3032": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3032, "effectName": "overloadSelfKineticHardeningBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 986, "modifyingAttributeID": 1208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3035": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3035, "effectName": "overloadSelfHardeningInvulnerabilityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 984, "modifyingAttributeID": 1208, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 985, "modifyingAttributeID": 1208, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 986, "modifyingAttributeID": 1208, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 987, "modifyingAttributeID": 1208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3036": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3036, "effectName": "skillBombDeploymentModuleReactivationDelayBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 669, "modifyingAttributeID": 2807, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3046": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3046, "effectName": "modifyMaxVelocityOfShipPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3047": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3047, "effectName": "structureHPMultiplyPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 150, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3061": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3061, "effectName": "heatDamageBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1213, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3160": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3160, "effectName": "controlTowerGenericHullResistanceBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 838, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 838, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 838, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 838, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 839, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 839, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 839, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 839, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 439, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 439, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 439, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 439, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 837, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 837, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 837, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 837, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 449, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 707, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 707, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 707, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 707, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 430, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 417, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 426, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 443, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 443, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 443, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 443, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 440, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 440, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 440, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 440, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 441, "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 441, "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 441, "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 441, "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3169": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3169, "effectName": "shieldTransportCpuNeedBonusEffect", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1216, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3172": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3172, "effectName": "droneArmorDamageBonusEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1219, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3173": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3173, "effectName": "droneShieldBonusBonusEffect", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1220, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3174": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3174, "effectName": "overloadSelfRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1222, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3175": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3175, "effectName": "overloadSelfSpeedBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1223, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3182": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3182, "effectName": "overloadSelfECMStrenghtBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 1225, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 1225, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 1225, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 1225, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3189": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3189, "effectName": "overloadSelfECCMStrenghtBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1027, "modifyingAttributeID": 1226, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1028, "modifyingAttributeID": 1226, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1029, "modifyingAttributeID": 1226, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1030, "modifyingAttributeID": 1226, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3195": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3195, "effectName": "thermodynamicsSkillLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1229, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3196": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3196, "effectName": "thermodynamicsSkillDamageBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1229, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3200": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3200, "effectName": "overloadSelfArmorDamageAmountDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1230, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1206, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3201": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 3201, "effectName": "overloadSelfShieldBonusDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1231, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1206, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3212, "effectName": "missileSkillFoFAoeCloudSizeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3322 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3234, "effectName": "shipRocketExplosiveDmgAF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3235": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3235, "effectName": "shipRocketKineticDmgAF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3236": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3236, "effectName": "shipRocketThermalDmgAF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3237": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3237, "effectName": "shipRocketEmDmgAF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3241": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3241, "effectName": "eliteBonusGunshipArmorEmResistance1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3242": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3242, "effectName": "eliteBonusGunshipArmorThermalResistance1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3243": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3243, "effectName": "eliteBonusGunshipArmorKineticResistance1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3244": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3244, "effectName": "eliteBonusGunshipArmorExplosiveResistance1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3249": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3249, "effectName": "shipCapRecharge2AF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3254": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3254, "effectName": "tacticalShieldManipulationBonus2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 484, "modifyingAttributeID": 336, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3261": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3261, "effectName": "shipCommandBonusEffectiveMultiplierOreCapital2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1236, "modifyingAttributeID": 1240, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3262": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3262, "effectName": "oreCapitalShipSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1239, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3263": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3263, "effectName": "oreCapitalShipSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1240, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3264": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3264, "effectName": "skillCapitalIndustrialReconfigurationConsumptionQuantityBonus", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 885, "operation": 3, "skillTypeID": 28585 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3267": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3267, "effectName": "shipConsumptionQuantityBonusIndustrialReconfigurationORECapital1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 1239, "operation": 6, "skillTypeID": 28585 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3268": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3268, "effectName": "miningDirectorBonusCommandBonusEffective", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 833, "modifyingAttributeID": 1236, "operation": 6, "skillTypeID": 22552 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3297": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3297, "effectName": "shipEnergyNeutralizerTransferAmountBonusAB", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3298": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3298, "effectName": "shipEnergyNeutralizerTransferAmountBonusAC", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3299": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3299, "effectName": "shipEnergyNeutralizerTransferAmountBonusAF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3308": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3308, "effectName": "oreCapitalShipShieldTransferRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3311": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3311, "effectName": "oreCapitalShipSkillMultiplier3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1243, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3313": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3313, "effectName": "cloneVatMaxJumpCloneBonusSkillNew", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 979, "modifyingAttributeID": 1073, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3321": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3321, "effectName": "shipBonusORECapShipDroneDmgBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3326": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3326, "effectName": "shipBonusORECapShipDroneArmorHPAndShieldHPAndHpBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3327": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3327, "effectName": "oreCapitalShipSkillMultiplier4", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1244, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3331": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3331, "effectName": "eliteBonusCommandShipArmorHP1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1000, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3335": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3335, "effectName": "shipArmorEmResistanceMC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3336": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3336, "effectName": "shipArmorExplosiveResistanceMC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3339": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3339, "effectName": "shipArmorKineticResistanceMC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3340": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3340, "effectName": "shipArmorThermalResistanceMC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3343": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3343, "effectName": "eliteBonusHeavyInterdictorsProjectileFalloff1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3344": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3344, "effectName": "heavyInterdictorsSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1246, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3345": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3345, "effectName": "heavyInterdictorsSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1247, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3355": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3355, "effectName": "eliteBonusHeavyInterdictorHeavyMissileVelocityBonus1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3356": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3356, "effectName": "eliteBonusHeavyInterdictorHeavyAssaultMissileVelocityBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3357": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3357, "effectName": "eliteBonusHeavyInterdictorLightMissileVelocityBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3358": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3358, "effectName": "electronicAttackShipsSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1249, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3359": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3359, "effectName": "electronicAttackShipsSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1250, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3366": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3366, "effectName": "shipRemoteSensorDampenerCapNeedGF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 6, "modifyingAttributeID": 462, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3367": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3367, "effectName": "eliteBonusElectronicAttackShipWarpScramblerMaxRange1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 1249, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3369": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3369, "effectName": "eliteBonusElectronicAttackShipECMOptimalRange1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 1249, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3370": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3370, "effectName": "eliteBonusElectronicAttackShipStasisWebMaxRange1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 1249, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3371": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3371, "effectName": "eliteBonusElectronicAttackShipWarpScramblerCapNeed2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 6, "modifyingAttributeID": 1250, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3374": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3374, "effectName": "eliteBonusElectronicAttackShipSignatureRadius2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 1250, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3379": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3379, "effectName": "implantHardwiringABcapacitorNeed", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3380": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 3380, "effectName": "warpDisruptSphere", "electronicChance": 0, "guid": "effects.WarpDisruptFieldGenerating", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 103, "rangeChance": 0 }, "3392": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3392, "effectName": "eliteBonusBlackOpsLargeEnergyTurretTracking1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1257, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3403": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3403, "effectName": "eliteBonusBlackOpsCloakVelocity2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 1258, "operation": 0, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3404": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3404, "effectName": "blackOpsSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1257, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3405": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3405, "effectName": "blackOpsSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1258, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3406": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3406, "effectName": "eliteBonusBlackOpsMaxVelocity1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1257, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3408": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3408, "effectName": "violatorsSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1265, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3409": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3409, "effectName": "violatorsSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1266, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3415": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3415, "effectName": "eliteBonusViolatorsLargeEnergyTurretDamageRole1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3416": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3416, "effectName": "eliteBonusViolatorsLargeHybridTurretDamageRole1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3417": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3417, "effectName": "eliteBonusViolatorsLargeProjectileTurretDamageRole1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3424": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3424, "effectName": "eliteBonusViolatorsLargeHybridTurretTracking1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1265, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3425": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3425, "effectName": "eliteBonusViolatorsLargeProjectileTurretTracking1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1265, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3427": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3427, "effectName": "eliteBonusViolatorsTractorBeamMaxRangeRole2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1269, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3439": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3439, "effectName": "eliteBonusViolatorsEwTargetPainting1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1265, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3447": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3447, "effectName": "shipBonusPTFalloffMB1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3466": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3466, "effectName": "eliteBonusElectronicAttackShipRechargeRate2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1250, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3467": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3467, "effectName": "eliteBonusElectronicAttackShipCapacitorCapacity2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1250, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3468": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3468, "effectName": "eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 899, "modifiedAttributeID": 103, "modifyingAttributeID": 1247, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3473": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3473, "effectName": "eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1279, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3478": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3478, "effectName": "shipLaserDamagePirateBattleship", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3480": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3480, "effectName": "shipTrackingBonusAB", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 585, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3483": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3483, "effectName": "shipBonusMediumEnergyTurretDamagePirateFaction", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3484": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3484, "effectName": "shipBonusMediumEnergyTurretTrackingAC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3487": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3487, "effectName": "shipBonusSmallEnergyTurretDamagePirateFaction", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3489": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3489, "effectName": "shipBonusSmallEnergyTurretTracking2AF", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3493": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3493, "effectName": "rorqualCargoScanRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 47, "modifiedAttributeID": 126, "modifyingAttributeID": 1235, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3494": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3494, "effectName": "rorqualSurveyScannerRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 49, "modifiedAttributeID": 197, "modifyingAttributeID": 1234, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3495": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3495, "effectName": "shipCapPropulsionJamming", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1280, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3496": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3496, "effectName": "setBonusThukker", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 151, "modifyingAttributeID": 1282, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3498": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3498, "effectName": "setBonusSisters", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 846, "modifyingAttributeID": 1284, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3499": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3499, "effectName": "setBonusSyndicate", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 1126, "modifyingAttributeID": 1291, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3500": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3500, "effectName": "miningLaserMaxRangeMultBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 54, "modifiedAttributeID": 54, "modifyingAttributeID": 243, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3513": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3513, "effectName": "setBonusMordus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 294, "modifyingAttributeID": 1293, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3514": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3514, "effectName": "Interceptor2WarpScrambleRange", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 804, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3519": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3519, "effectName": "weaponUpgradesCpuNeedBonusPostPercentCpuLocationShipModulesRequiringBombLauncher", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 862, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3520": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3520, "effectName": "skillAdvancedWeaponUpgradesPowerNeedBonusBombLaunchers", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 323, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3521": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3521, "effectName": "skillNaniteOperationRepairCost", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1277, "modifyingAttributeID": 1294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3522": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3522, "effectName": "skillNaniteOperationRepairCostLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1294, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3524": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3524, "effectName": "skillNaniteInterfacingRepairTimeLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1295, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3526": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3526, "effectName": "cynosuralTheoryConsumptionBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 1296, "operation": 6, "skillTypeID": 21603 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3527": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3527, "effectName": "skillConsumptionQuantityBonusPercentageSkillLevel", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1296, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3528": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3528, "effectName": "drawbackCapacitorRecharge", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3530": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3530, "effectName": "eliteBonusBlackOpsAgiliy1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1257, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3532": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3532, "effectName": "skillJumpDriveConsumptionAmountBonusPercentage", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 868, "modifyingAttributeID": 1296, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3557": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 3557, "effectName": "gunneryMaxRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3561": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3561, "effectName": "ewSkillTrackingDisruptionTrackingSpeedBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3568": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3568, "effectName": "eliteBonusLogisticsTrackingLinkMaxRangeBonus1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 351, "modifyingAttributeID": 678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3569": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3569, "effectName": "eliteBonusLogisticsTrackingLinkMaxRangeBonus2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 351, "modifyingAttributeID": 679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3570": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3570, "effectName": "eliteBonusLogisticsTrackingLinkTrackingSpeedBonus2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 767, "modifyingAttributeID": 679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3571": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3571, "effectName": "eliteBonusLogisticsTrackingLinkTrackingSpeedBonus1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 767, "modifyingAttributeID": 678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3586": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3586, "effectName": "ewSkillSignalSuppressionScanResolutionBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 566, "modifyingAttributeID": 828, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3587": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3587, "effectName": "shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 309, "modifyingAttributeID": 658, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3588": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3588, "effectName": "shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusGF2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 309, "modifyingAttributeID": 586, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3589": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3589, "effectName": "shipBonusEwRemoteSensorDampenerScanResolutionBonusGF2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 566, "modifyingAttributeID": 586, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3590, "effectName": "shipBonusEwRemoteSensorDampenerScanResolutionBonusGC2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 566, "modifyingAttributeID": 658, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3591": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3591, "effectName": "ewSkillSignalSuppressionMaxTargetRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 309, "modifyingAttributeID": 828, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3592": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3592, "effectName": "eliteBonusJumpFreighterHullHP1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1311, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3593": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3593, "effectName": "eliteBonusJumpFreighterJumpDriveConsumptionAmount2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 868, "modifyingAttributeID": 1312, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3595": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3595, "effectName": "jumpFreightersSkillMultiplier1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1311, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3596": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3596, "effectName": "jumpFreightersSkillMultiplier2", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1312, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3597": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3597, "effectName": "scriptSensorBoosterScanResolutionBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 566, "modifyingAttributeID": 1314, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3598": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3598, "effectName": "scriptSensorBoosterMaxTargetRangeBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 309, "modifyingAttributeID": 1313, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3599": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3599, "effectName": "scriptTrackingComputerTrackingSpeedBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 1316, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3600": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3600, "effectName": "scriptTrackingComputerMaxRangeBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 1315, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3601": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3601, "effectName": "scriptWarpDisruptionFieldGeneratorSetDisallowInEmpireandHazardSpace", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1074, "modifyingAttributeID": 1074, "operation": 7 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 5561, "modifyingAttributeID": 5561, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "sfxName": "None" }, "3602": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3602, "effectName": "scriptDurationBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3615": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3615, "effectName": "scriptWarpDisruptionFieldGeneratorSetScriptCapacitorNeedHidden", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1319, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3617": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3617, "effectName": "scriptSignatureRadiusBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1227, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3618": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3618, "effectName": "scriptMassBonusPercentageBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1131, "modifyingAttributeID": 1324, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3619": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3619, "effectName": "scriptSpeedBoostFactorBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1270, "modifyingAttributeID": 1325, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3620": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3620, "effectName": "scriptSpeedFactorBonusBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1164, "modifyingAttributeID": 1326, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3648": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3648, "effectName": "scriptWarpScrambleRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 103, "modifyingAttributeID": 1327, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3649": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3649, "effectName": "eliteBonusViolatorsLargeEnergyTurretDamage1", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1265, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3650": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3650, "effectName": "ewGroupRsdMaxRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3651": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3651, "effectName": "ewGroupTpMaxRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3652": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3652, "effectName": "ewGroupTdMaxRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 291, "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3653": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3653, "effectName": "ewGroupEcmBurstMaxRangeBonus", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3655": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3655, "effectName": "gunneryMaxRangeBonusOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3656": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3656, "effectName": "gunneryTrackingSpeedBonusOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3657": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3657, "effectName": "shipScanResolutionBonusOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3659": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3659, "effectName": "shipMaxTargetRangeBonusOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3660": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3660, "effectName": "shipMaxLockedTargetsBonusAddOnline", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3661": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 3661, "effectName": "targetDroneBandwidthMultiplier", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1271, "modifyingAttributeID": 1328, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "3668": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3668, "effectName": "miningLaserRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 54, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3669": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3669, "effectName": "frequencyMiningLaserMaxRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 483, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3670": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3670, "effectName": "stripMinerMaxRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 464, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3671": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3671, "effectName": "gasHarvesterMaxRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 737, "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3672": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3672, "effectName": "setBonusOre", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 351, "modifyingAttributeID": 1292, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3674": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 1002, "effectCategory": 1, "effectID": 3674, "effectName": "jumpPortalGenerationBO", "electronicChance": 0, "guid": "effects.JumpPortalBO", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3677": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3677, "effectName": "shipBonusLargeEnergyTurretMaxRangeAB2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 585, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3678": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3678, "effectName": "eliteBonusJumpFreighterShieldHP1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1311, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3679": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3679, "effectName": "eliteBonusJumpFreighterArmorHP1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1311, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3680": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3680, "effectName": "freighterAgilityBonusC1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3681": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3681, "effectName": "freighterAgilityBonusM1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 892, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3682": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3682, "effectName": "freighterAgilityBonusG1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 891, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3683": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3683, "effectName": "freighterAgilityBonusA1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 886, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3686": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3686, "effectName": "scriptTrackingComputerFalloffBonusBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 1, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 1332, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3698": { "disallowAutoRepeat": 0, "effectCategory": 6, "effectID": 3698, "effectName": "dungeonMaxTargetingRangeShip", "electronicChance": 0, "iconID": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3703": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3703, "effectName": "shipMissileLauncherSpeedBonusMC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 659, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 659, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3705": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3705, "effectName": "shipHybridTurretROFBonusGC2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3706": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3706, "effectName": "shipBonusProjectileTrackingMC2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3710": { "disallowAutoRepeat": 0, "durationAttributeID": 929, "effectCategory": 2, "effectID": 3710, "effectName": "concordTargetJam", "electronicChance": 1, "falloffAttributeID": 953, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 928, "operation": 4 } ], "npcActivationChanceAttributeID": 930, "propulsionChance": 0, "published": 0, "rangeAttributeID": 936, "rangeChance": 0 }, "3713": { "description_de": "Versucht, das Ziel vom Warpen abzuhalten.", "description_en-us": "Attempts to prevent the target from warping.", "description_es": "Intenta impedir que el objetivo warpee.", "description_fr": "Essaie d'empêcher la cible de warper.", "description_it": "Attempts to prevent the target from warping.", "description_ja": "ターゲットのワープ阻止を試みる。", "description_ko": "타겟의 워프를 막기 위한 시도입니다.", "description_ru": "Attempts to prevent the target from warping.", "description_zh": "阻止目标进行跃迁。", "descriptionID": 108711, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Warp Scramble", "displayName_en-us": "Warp Scramble", "displayName_es": "Distorsión de warp", "displayName_fr": "Inhibition de warp", "displayName_it": "Warp Scramble", "displayName_ja": "ワープスクランブル", "displayName_ko": "워프 스크램블", "displayName_ru": "Warp Scramble", "displayName_zh": "跃迁干扰", "displayNameID": 109963, "distribution": 1, "durationAttributeID": 505, "effectCategory": 2, "effectID": 3713, "effectName": "concordWarpScramble", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "npcUsageChanceAttributeID": 504, "propulsionChance": 0, "published": 1, "rangeAttributeID": 103, "rangeChance": 0 }, "3714": { "disallowAutoRepeat": 0, "dischargeAttributeID": 515, "displayName_de": "modifyTargetSpeed", "displayName_en-us": "modifyTargetSpeed", "displayName_es": "modifyTargetSpeed", "displayName_fr": "modifyTargetSpeed", "displayName_it": "modifyTargetSpeed", "displayName_ja": "ターゲット速度を修正", "displayName_ko": "타겟 속도 변경", "displayName_ru": "modifyTargetSpeed", "displayName_zh": "修正目标速度", "displayNameID": 109965, "distribution": 2, "durationAttributeID": 513, "effectCategory": 2, "effectID": 3714, "effectName": "concordModifyTargetSpeed", "electronicChance": 0, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "npcUsageChanceAttributeID": 512, "propulsionChance": 0, "published": 1, "rangeAttributeID": 514, "rangeChance": 0 }, "3723": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3723, "effectName": "skillNaniteInterfacingRepairTime2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1267, "modifyingAttributeID": 1295, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3726": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108718, "disallowAutoRepeat": 0, "displayName_de": "AgilityMultiplierEffectPassive", "displayName_en-us": "AgilityMultiplierEffectPassive", "displayName_es": "AgilityMultiplierEffectPassive", "displayName_fr": "AgilityMultiplierEffectPassive", "displayName_it": "AgilityMultiplierEffectPassive", "displayName_ja": "機動乗数効果防御", "displayName_ko": "패시브 기동성 변동 효과", "displayName_ru": "AgilityMultiplierEffectPassive", "displayName_zh": "敏捷乘数效果被动性", "displayNameID": 109967, "effectCategory": 0, "effectID": 3726, "effectName": "agilityMultiplierEffectPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 151, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "3727": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 108719, "disallowAutoRepeat": 0, "displayName_de": "Max Velocity Bonus", "displayName_en-us": "Max Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Max Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Max Velocity Bonus", "displayName_zh": "最大速度加成", "displayNameID": 109968, "effectCategory": 0, "effectID": 3727, "effectName": "velocityBonusPassive", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1076, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "3739": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3739, "effectName": "zColinOrcaTractorRangeBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1355, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3740": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3740, "effectName": "zColinOrcaTractorVelocityBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1357, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3741": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3741, "effectName": "industrialCommandShipSkillLevelMultiplierICS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1356, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3742": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3742, "effectName": "cargoAndOreHoldCapacityBonusICS1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 1356, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 1356, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3743": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3743, "effectName": "industrialCommandShipSkillLevelMultiplierICS2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1358, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3744": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3744, "effectName": "miningForemanBurstBonusICS2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1358, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1358, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1358, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1358, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1358, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3745": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3745, "effectName": "zColinOrcaSurveyScannerBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 49, "modifiedAttributeID": 197, "modifyingAttributeID": 1359, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3753": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3753, "effectName": "eliteIndustrialExtenderSkillBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1360, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3755": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3755, "effectName": "zColinSkillTransportCovertCloakMod", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1361, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3765": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3765, "effectName": "covertOpsStealthBomberSiegeMissileLauncherPowerNeedBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 30, "modifyingAttributeID": 837, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3766": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3766, "effectName": "interceptorMWDSignatureRadiusBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 568, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3767": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3767, "effectName": "eliteBonusCommandShipsHeavyMissileExplosionVelocityCS2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3771": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3771, "effectName": "armorHPBonusAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1159, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3772": { "description_de": "Benötigt einen Subsystem-Slot in einem Tech III-Schiff.", "description_en-us": "Must be installed into an available subsystem slot on a Tech III ship.", "description_es": "Debe instalarse en una ranura de subsistema disponible en una nave de T3.", "description_fr": "Doit être installé sur un emplacement de sous-système disponible sur un vaisseau Tech III.", "description_it": "Must be installed into an available subsystem slot on a Tech III ship.", "description_ja": "T3船の空きサブシステムスロットに取り付ける。", "description_ko": "테크 III 함선에 있는 가용한 서브시스템 슬롯에 설치되어야 합니다.", "description_ru": "Must be installed into an available subsystem slot on a Tech III ship.", "description_zh": "必须装在三级科技舰船的一个子系统槽上。", "descriptionID": 109022, "disallowAutoRepeat": 0, "displayName_de": "Sub System", "displayName_en-us": "Sub System", "displayName_es": "Subsistema", "displayName_fr": "Sous-système", "displayName_it": "Sub System", "displayName_ja": "サブシステム", "displayName_ko": "서브시스템", "displayName_ru": "Sub System", "displayName_zh": "子系统", "displayNameID": 110114, "effectCategory": 0, "effectID": 3772, "effectName": "subSystem", "electronicChance": 0, "guid": "", "iconID": 3756, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3773": { "description_de": "Dieses Objekt im All verankern.", "description_en-us": "Anchoring this object in space.", "description_es": "Anclando este objeto en el espacio.", "description_fr": "Ancrage de cet objet dans l'espace.", "description_it": "Anchoring this object in space.", "description_ja": "このオブジェクトを宙域に係留。", "description_ko": "이 물체를 우주에 위치 고정합니다.", "description_ru": "Anchoring this object in space.", "description_zh": "在太空中锚定这个物体。", "descriptionID": 108746, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3773, "effectName": "hardPointModifierEffect", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "3774": { "description_de": "Dieses Objekt im All verankern.", "description_en-us": "Anchoring this object in space.", "description_es": "Anclando este objeto en el espacio.", "description_fr": "Ancrage de cet objet dans l'espace.", "description_it": "Anchoring this object in space.", "description_ja": "このオブジェクトを宙域に係留。", "description_ko": "이 물체를 우주에 위치 고정합니다.", "description_ru": "Anchoring this object in space.", "description_zh": "在太空中锚定这个物体。", "descriptionID": 108747, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3774, "effectName": "slotModifier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3782": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3782, "effectName": "powerOutputAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 11, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3783": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3783, "effectName": "cpuOutputAddCpuOutputPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 48, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3784": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3784, "effectName": "maxVelocityAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 37, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3791": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 3791, "effectName": "modifyHullResonancePostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3793": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 3793, "effectName": "probeLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3794": { "disallowAutoRepeat": 0, "effectCategory": 6, "effectID": 3794, "effectName": "dungeonMaxVelocityModifier", "electronicChance": 0, "iconID": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3795": { "disallowAutoRepeat": 0, "effectCategory": 6, "effectID": 3795, "effectName": "dungeonMiningLaserDurationBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3796": { "disallowAutoRepeat": 0, "effectCategory": 6, "effectID": 3796, "effectName": "dungeonTurretTrackingBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3797": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3797, "effectName": "droneBandwidthAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1271, "modifyingAttributeID": 1271, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3799": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3799, "effectName": "droneCapacityAdddroneCapacityPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 283, "modifyingAttributeID": 283, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3806": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3806, "effectName": "scanStrengthAddPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 211, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 209, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 208, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 210, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3807": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3807, "effectName": "maxTargetRangeAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 76, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3808": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3808, "effectName": "signatureRadiusAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 552, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3809": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3809, "effectName": "scanResolutionAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 564, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3810": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3810, "effectName": "capacityAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 2689, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3811": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3811, "effectName": "capacitorCapacityAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 482, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3831": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3831, "effectName": "shieldCapacityAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 263, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3832": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3832, "effectName": "subsystemSkillLevelAmarrDefensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1433, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3833": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3833, "effectName": "subsystemSkillLevelCaldariDefensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1443, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3834": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3834, "effectName": "subsystemSkillLevelGallenteDefensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1438, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3835": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3835, "effectName": "subsystemSkillLevelMinmatarDefensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1448, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3836": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3836, "effectName": "subsystemSkillLevelMinmatarElectronic", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1447, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3837": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3837, "effectName": "subsystemSkillLevelGallenteElectronic", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1437, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3838": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3838, "effectName": "subsystemSkillLevelCaldariElectronic", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1442, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3839": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3839, "effectName": "subsystemSkillLevelAmarrElectronic", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1432, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3840": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3840, "effectName": "subsystemSkillLevelAmarrEngineering", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1431, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3841": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3841, "effectName": "subsystemSkillLevelCaldariEngineering", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1441, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3842": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3842, "effectName": "subsystemSkillLevelGallenteEngineering", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1436, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3843": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3843, "effectName": "subsystemSkillLevelMinmatarEngineering", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1446, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3844": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3844, "effectName": "subsystemSkillLevelMinmatarOffensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1449, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3845": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3845, "effectName": "subsystemSkillLevelGallenteOffensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1439, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3846": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3846, "effectName": "subsystemSkillLevelCaldariOffensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1444, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3847": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3847, "effectName": "subsystemSkillLevelAmarrOffensive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1434, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3848": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3848, "effectName": "subsystemSkillLevelAmarrPropulsion", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1435, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3849": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3849, "effectName": "subsystemSkillLevelCaldariPropulsion", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1445, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3850": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3850, "effectName": "subsystemSkillLevelGallentePropulsion", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1440, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3851": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3851, "effectName": "subsystemSkillLevelMinmatarPropulsion", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1450, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3852": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1454, "effectCategory": 2, "effectID": 3852, "effectName": "NPCRemoteArmorRepair", "electronicChance": 0, "guid": "effects.RemoteArmourRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1453, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3853": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3853, "effectName": "rechargeRateAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 55, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3855": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1458, "effectCategory": 2, "effectID": 3855, "effectName": "NPCRemoteShieldBoost", "electronicChance": 0, "guid": "effects.ShieldTransfer", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1459, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3856": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3856, "effectName": "shieldRechargeRateAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 479, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3857": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3857, "effectName": "subsystemBonusAmarrPropulsionMaxVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1435, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3859": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3859, "effectName": "subsystemBonusCaldariPropulsionMaxVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1445, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3860": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3860, "effectName": "subsystemBonusMinmatarPropulsionMaxVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1450, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3861": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3861, "effectName": "subsystemBonusMinmatarPropulsionAfterburnerSpeedFactor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1450, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3863": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3863, "effectName": "subsystemBonusCaldariPropulsionAfterburnerSpeedFactor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1445, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3864": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3864, "effectName": "subsystemBonusAmarrPropulsionAfterburnerSpeedFactor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1435, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3865": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3865, "effectName": "subsystemBonusAmarrPropulsion2Agility", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1512, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3866": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3866, "effectName": "subsystemBonusCaldariPropulsion2Agility", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1513, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3867": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3867, "effectName": "subsystemBonusGallentePropulsion2Agility", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1520, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3868": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3868, "effectName": "subsystemBonusMinmatarPropulsion2Agility", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1523, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3869": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3869, "effectName": "subsystemBonusMinmatarPropulsion2MWDPenalty", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1523, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3870": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3870, "effectName": "subsystemBonusGallentePropulsionMWDPenalty", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1440, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3872": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3872, "effectName": "subsystemBonusAmarrPropulsion2MWDPenalty", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1512, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3875": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3875, "effectName": "subsystemBonusGallentePropulsionABMWDCapNeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 6, "modifyingAttributeID": 1440, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3886": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3886, "effectName": "subsystemBonusGallenteElectronicCPU", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1437, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3887": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3887, "effectName": "subsystemBonusCaldariElectronicCPU", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1442, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3893": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3893, "effectName": "subsystemBonusMinmatarCoreScanStrengthLADAR", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3895": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3895, "effectName": "subsystemBonusGallenteCoreScanStrengthMagnetometric", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1436, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3897": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3897, "effectName": "subsystemBonusCaldariCoreScanStrengthGravimetric", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3900": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3900, "effectName": "subsystemBonusAmarrCoreScanStrengthRADAR", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1431, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3908": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3908, "effectName": "subsystemBonusAmarrDefensiveArmorResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1433, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1433, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1433, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1433, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3922": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3922, "effectName": "subsystemBonusGallenteDefensiveArmorResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1438, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1438, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1438, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1438, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3930": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3930, "effectName": "subsystemBonusMinmatarDefensiveArmorResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1448, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3949": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3949, "effectName": "subsystemBonusMinmatarDefensiveShieldResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1448, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3955": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3955, "effectName": "subsystemBonusCaldariDefensiveShieldResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1443, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1443, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1443, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1443, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3959": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3959, "effectName": "subsystemBonusAmarrDefensiveArmorRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3961": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3961, "effectName": "subsystemBonusGallenteDefensiveArmorRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3962": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3962, "effectName": "subsystemBonusMinmatarDefensiveShieldArmorRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3964": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3964, "effectName": "subsystemBonusCaldariDefensiveShieldBoostAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3976": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3976, "effectName": "subsystemBonusCaldariDefensiveShieldHP", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1443, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3979": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3979, "effectName": "subsystemBonusMinmatarDefensiveShieldArmorHP", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1448, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1448, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3980": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3980, "effectName": "subsystemBonusGallenteDefensiveArmorHP", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1438, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3982": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 3982, "effectName": "subsystemBonusAmarrDefensiveArmorHP", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1433, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3992": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3992, "effectName": "systemShieldHP", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 146, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3993": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3993, "effectName": "systemTargetingRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 237, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3995": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3995, "effectName": "systemSignatureRadius", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 652, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3996": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3996, "effectName": "systemArmorEmResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1465, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3997": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3997, "effectName": "systemArmorExplosiveResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1468, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3998": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3998, "effectName": "systemArmorKineticResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1466, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "3999": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 3999, "effectName": "systemArmorThermalResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1467, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4002": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4002, "effectName": "systemMissileVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1469, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4003": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4003, "effectName": "systemMaxVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1470, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4016": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4016, "effectName": "systemDamageMultiplierGunnery", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4017": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4017, "effectName": "systemDamageThermalMissiles", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4018": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4018, "effectName": "systemDamageEmMissiles", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4019": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4019, "effectName": "systemDamageExplosiveMissiles", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4020": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4020, "effectName": "systemDamageKineticMissiles", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4021": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4021, "effectName": "systemDamageDrones", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4022": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4022, "effectName": "systemTracking", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4023": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4023, "effectName": "systemAoeVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 1483, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4033": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4033, "effectName": "systemHeatDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1485, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4034": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4034, "effectName": "systemOverloadArmor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4035": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4035, "effectName": "systemOverloadDamageModifier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1210, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4036": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4036, "effectName": "systemOverloadDurationBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1181, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4037": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4037, "effectName": "systemOverloadEccmStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1226, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4038": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4038, "effectName": "systemOverloadEcmStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1225, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4039": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4039, "effectName": "systemOverloadHardening", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4040": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4040, "effectName": "systemOverloadRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1222, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4041": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4041, "effectName": "systemOverloadRof", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1205, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4042": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4042, "effectName": "systemOverloadSelfDuration", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4043": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4043, "effectName": "systemOverloadShieldBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4044": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4044, "effectName": "systemOverloadSpeedFactor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1486, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4045": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4045, "effectName": "systemSmartBombRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 72, "modifiedAttributeID": 99, "modifyingAttributeID": 1487, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4046": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4046, "effectName": "systemSmartBombEmDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 72, "modifiedAttributeID": 114, "modifyingAttributeID": 1488, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4047": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4047, "effectName": "systemSmartBombThermalDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 72, "modifiedAttributeID": 118, "modifyingAttributeID": 1488, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4048": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4048, "effectName": "systemSmartBombKineticDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 72, "modifiedAttributeID": 117, "modifyingAttributeID": 1488, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4049": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4049, "effectName": "systemSmartBombExplosiveDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 72, "modifiedAttributeID": 116, "modifyingAttributeID": 1488, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4054": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4054, "effectName": "systemSmallEnergyDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4055": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4055, "effectName": "systemSmallProjectileDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4056": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4056, "effectName": "systemSmallHybridDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4057": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4057, "effectName": "systemRocketEmDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4058": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4058, "effectName": "systemRocketExplosiveDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4059": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4059, "effectName": "systemRocketKineticDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4060": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4060, "effectName": "systemRocketThermalDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4061": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4061, "effectName": "systemStandardMissileThermalDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4062": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4062, "effectName": "systemStandardMissileEmDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4063": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4063, "effectName": "systemStandardMissileExplosiveDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4086": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4086, "effectName": "systemArmorRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1495, "operation": 4, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1495, "operation": 4, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4088": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4088, "effectName": "systemArmorRemoteRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1498, "operation": 4, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1498, "operation": 4, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4089": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4089, "effectName": "systemShieldRemoteRepairAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1497, "operation": 4, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1497, "operation": 4, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4090": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4090, "effectName": "systemCapacitorCapacity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1499, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4091": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4091, "effectName": "systemCapacitorRecharge", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1500, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4093": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4093, "effectName": "subsystemBonusAmarrOffensiveEnergyWeaponDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4104": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4104, "effectName": "subsystemBonusCaldariOffensiveHybridWeaponMaxRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4106, "effectName": "subsystemBonusGallenteOffensiveHybridWeaponFalloff", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4109": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4109, "effectName": "subsystemBonusGallenteOffensiveHybridWeaponDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4111": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4111, "effectName": "subsystemBonusMinmatarOffensiveProjectileWeaponROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4114": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4114, "effectName": "subsystemBonusMinmatarOffensiveProjectileWeaponFalloff", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4115": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4115, "effectName": "subsystemBonusMinmatarOffensiveProjectileWeaponMaxRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4120": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4120, "effectName": "subsystemBonusCaldariOffensiveHeavyMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1444, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4121": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4121, "effectName": "subsystemBonusCaldariOffensiveHeavyAssaultMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1444, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4122": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4122, "effectName": "subsystemBonusCaldariOffensive1LauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 1444, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1444, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1444, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4135": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4135, "effectName": "systemShieldEmResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1489, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4136": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4136, "effectName": "systemShieldExplosiveResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4137": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4137, "effectName": "systemShieldKineticResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1491, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4138": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4138, "effectName": "systemShieldThermalResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4152": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4152, "effectName": "subsystemBonusAmarrEngineeringHeatDamageReduction", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1431, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4153": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4153, "effectName": "subsystemBonusCaldariEngineeringHeatDamageReduction", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4154": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4154, "effectName": "subsystemBonusGallenteEngineeringHeatDamageReduction", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1436, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4155": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4155, "effectName": "subsystemBonusMinmatarEngineeringHeatDamageReduction", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4156": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4156, "effectName": "subsystemBonusMinmatarEngineeringCapacitorCapacity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4158": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4158, "effectName": "subsystemBonusCaldariCoreCapacitorCapacity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4159": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4159, "effectName": "subsystemBonusAmarrCoreCapacitorCapacity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1431, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4160": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4160, "effectName": "massAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 4, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4161": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4161, "effectName": "baseMaxScanDeviationModifierRequiringAstrometrics", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 1156, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4162": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4162, "effectName": "baseSensorStrengthModifierRequiringAstrometrics", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 846, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4165": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4165, "effectName": "shipBonusScanProbeStrengthCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4166": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4166, "effectName": "shipBonusScanProbeStrengthMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4167": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4167, "effectName": "shipBonusScanProbeStrengthGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4168": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4168, "effectName": "eliteBonusCoverOpsScanProbeStrength2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 839, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4185": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4185, "effectName": "subsystemBonusAmarrOffensiveEnergyWeaponCapacitorNeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4187": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4187, "effectName": "shipBonusStrategicCruiserAmarrHeatDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1503, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4188": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4188, "effectName": "shipBonusStrategicCruiserCaldariHeatDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1504, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4189": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4189, "effectName": "shipBonusStrategicCruiserGallenteHeatDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1505, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4190": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4190, "effectName": "shipBonusStrategicCruiserMinmatarHeatDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1506, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4191": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4191, "effectName": "strategicCruiserAmarrSkillLevel1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1503, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4192": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4192, "effectName": "strategicCruiserCaldariSkillLevel1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1504, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4193": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4193, "effectName": "strategicCruiserGallenteSkillLevel1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1505, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4194": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4194, "effectName": "strategicCruiserMinmatarSkillLevel1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1506, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4195": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4195, "effectName": "subsystemSkillLevelAmarrDefensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1507, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4196": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4196, "effectName": "subsystemSkillLevelCaldariDefensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1516, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4197": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4197, "effectName": "subsystemSkillLevelGallenteDefensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1517, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4198": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4198, "effectName": "subsystemSkillLevelMinmatarDefensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 1526, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4199": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4199, "effectName": "subsystemSkillLevelMinmatarElectronic2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1524, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4200": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4200, "effectName": "subsystemSkillLevelGallenteElectronic2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1518, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4201": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4201, "effectName": "subsystemSkillLevelCaldariElectronic2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1514, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4202": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4202, "effectName": "subsystemSkillLevelAmarrElectronic2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 955, "modifiedAttributeID": 1508, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4203": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4203, "effectName": "subsystemSkillLevelAmarrEngineering2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1509, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4204": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4204, "effectName": "subsystemSkillLevelCaldariEngineering2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1515, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4205": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4205, "effectName": "subsystemSkillLevelGallenteEngineering2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1519, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4206": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4206, "effectName": "subsystemSkillLevelMinmatarEngineering2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 1525, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4207": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4207, "effectName": "subsystemSkillLevelMinmatarOffensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1522, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4208": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4208, "effectName": "subsystemSkillLevelGallenteOffensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1521, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4209": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4209, "effectName": "subsystemSkillLevelCaldariOffensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1510, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4210": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4210, "effectName": "subsystemSkillLevelAmarrOffensive2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1511, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4211": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4211, "effectName": "subsystemSkillLevelAmarrPropulsion2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1512, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4212, "effectName": "subsystemSkillLevelCaldariPropulsion2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1513, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4213": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4213, "effectName": "subsystemSkillLevelGallentePropulsion2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1520, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4214": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4214, "effectName": "subsystemSkillLevelMinmatarPropulsion2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 957, "modifiedAttributeID": 1523, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4215": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4215, "effectName": "subsystemBonusAmarrOffensive2EnergyWeaponCapacitorNeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4216": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4216, "effectName": "subsystemBonusAmarrCore2EnergyVampireAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 1509, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4217": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4217, "effectName": "subsystemBonusAmarrCore2EnergyDestabilizerAmount", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 1509, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4240": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4240, "effectName": "modifyArmorResonancePassivePreAssignment", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1419, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1418, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1421, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1420, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4247": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4247, "effectName": "modifyShieldResonancePassivePreAssignment", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1423, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1422, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1424, "operation": -1 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1425, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4248": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4248, "effectName": "subsystemBonusCaldariOffensive2MissileLauncherKineticDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1510, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1510, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1510, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4250": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4250, "effectName": "subsystemBonusGallenteOffensiveDroneDamageHP", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4251": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4251, "effectName": "subsystemBonusMinmatarOffensive2ProjectileWeaponDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1522, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4253": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4253, "effectName": "subsystemBonusMinmatarOffensive2ProjectileWeaponROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1522, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4256": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4256, "effectName": "subsystemBonusMinmatarOffensive2MissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 1522, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1522, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1522, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4257": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4257, "effectName": "subsystemBonusMinmatarOffensiveAssaultMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 1449, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4258": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4258, "effectName": "subsystemBonusMinmatarOffensiveHeavyMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1449, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4259": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4259, "effectName": "subsystemBonusMinmatarOffensiveHeavyAssaultMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1449, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4260": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4260, "effectName": "subsystemBonusAmarrEngineeringPowerOutput", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 1431, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4261": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4261, "effectName": "subsystemBonusCaldariEngineeringPowerOutput", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 1441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4262": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4262, "effectName": "subsystemBonusGallenteEngineeringPowerOutput", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 1436, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4263": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4263, "effectName": "subsystemBonusMinmatarEngineeringPowerOutput", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 11, "modifyingAttributeID": 1446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4264": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4264, "effectName": "subsystemBonusMinmatarCoreCapacitorRecharge", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1446, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4265": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4265, "effectName": "subsystemBonusGallenteCoreCapacitorRecharge", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1436, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4266": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4266, "effectName": "subsystemBonusCaldariEngineeringCapacitorRecharge", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4267": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4267, "effectName": "subsystemBonusAmarrEngineeringCapacitorRecharge", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1431, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4269": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4269, "effectName": "subsystemBonusAmarrCore3ScanResolution", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 2681, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4270": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4270, "effectName": "subsystemBonusMinmatarCore3ScanResolution", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 2687, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4271": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4271, "effectName": "subsystemBonusCaldariCore2MaxTargetingRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 1515, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4272": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4272, "effectName": "subsystemBonusGallenteCore2MaxTargetingRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 1519, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4273": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4273, "effectName": "subsystemBonusGallenteCore2WarpScrambleRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 1519, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4274": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4274, "effectName": "subsystemBonusMinmatarCore2StasisWebifierRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 1525, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4275": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4275, "effectName": "subsystemBonusCaldariPropulsion2WarpSpeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1513, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4277": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4277, "effectName": "subsystemBonusGallentePropulsionWarpCapacitor", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 1440, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4278": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4278, "effectName": "subsystemBonusGallentePropulsion2WarpSpeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1520, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4280": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4280, "effectName": "systemAgility", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 169, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4281": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4281, "effectName": "modifyShipAgilityPassivePreAssignment", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 70, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4282": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4282, "effectName": "subsystemBonusGallenteOffensive2HybridWeaponDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1521, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4283": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4283, "effectName": "subsystemBonusCaldariOffensive2HybridWeaponDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1510, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4286": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4286, "effectName": "subsystemBonusAmarrOffensive2RemoteArmorRepairCapUse", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4288": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4288, "effectName": "subsystemBonusGallenteOffensive2RemoteArmorRepairCapUse", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1521, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4290": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4290, "effectName": "subsystemBonusMinmatarOffensive2RemoteRepCapUse", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1522, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1522, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4292": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4292, "effectName": "subsystemBonusCaldariOffensive2RemoteShieldBoosterCapUse", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1510, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4317": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4317, "effectName": "subsystemBonusGallenteEngineeringDroneHP", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1436, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1436, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1436, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4320": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4320, "effectName": "subsystemBonusGallenteEngineering2DroneMWD", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1519, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4321": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4321, "effectName": "subsystemBonusCaldariCore2ECMStrengthRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 1515, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 1515, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 1515, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 1515, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 1515, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4322": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4322, "effectName": "subsystemBonusAmarrOffensiveDroneDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4327": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4327, "effectName": "subsystemBonusAmarrOffensive3DroneDamageHP", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4329": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4329, "effectName": "subsystemBonusGallenteOffensive3DroneDamageMultiplier", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1532, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4330": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4330, "effectName": "subsystemBonusAmarrOffensive3EnergyWeaponMaxRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4331": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4331, "effectName": "subsystemBonusCaldariOffensive3HMLHAMVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4332": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4332, "effectName": "subsystemBonusCaldariOffensive3HeavyMissileVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4334": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4334, "effectName": "subsystemBonusCaldariOffensive3EwStrengthGrav", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4335": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4335, "effectName": "subsystemBonusCaldariOffensive3EwStrengthLadar", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4336": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4336, "effectName": "subsystemBonusCaldariOffensive3EwStrengthMagn", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4337": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4337, "effectName": "subsystemBonusCaldariOffensive3EwStrengthRadar", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3427 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4338": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4338, "effectName": "subsystemSkillLevelAmarrOffensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1531, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4339": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4339, "effectName": "subsystemSkillLevelCaldariOffensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1533, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4341": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4341, "effectName": "subsystemSkillLevelGallenteOffensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1532, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4342": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4342, "effectName": "subsystemBonusMinmatarCore2MaxTargetingRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 1525, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4343": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4343, "effectName": "subsystemBonusAmarrCore2MaxTargetingRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 1509, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4344": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4344, "effectName": "subsystemBonusMinmatarDefensiveSignatureRadius", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 1448, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4347": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4347, "effectName": "subsystemBonusGallenteOffensive3TurretTracking", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1532, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4350": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4350, "effectName": "subsystemSkillLevelMinmatarOffensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 956, "modifiedAttributeID": 1534, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4351": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4351, "effectName": "subsystemBonusMinmatarOffensive3TurretTracking", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4357": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4357, "effectName": "caldariCruiserSkillLevelPreMulShipBonusCC3Ship", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1535, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4358": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4358, "effectName": "ecmRangeBonusModuleEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 1536, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4359": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4359, "effectName": "subsystemBonusAmarrOffensiveHeavyMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1434, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4360": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4360, "effectName": "subsystemBonusAmarrOffensiveMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 1434, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1434, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1434, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4361": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4361, "effectName": "subsystemBonusAmarrOffensiveHeavyAssaultMissileLauncherROF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1434, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4362": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4362, "effectName": "subsystemBonusAmarrOffensive2MissileDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4363": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4363, "effectName": "subsystemBonusAmarrOffensive2HAMThermalDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4364": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4364, "effectName": "subsystemBonusAmarrOffensive2HAMKineticDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4365": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4365, "effectName": "subsystemBonusAmarrOffensive2HAMExplosiveDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1511, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4366": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4366, "effectName": "shipBonusMediumHybridDmgCC2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4369": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4369, "effectName": "subsystemBonusWarpBubbleImmune", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1538, "modifyingAttributeID": 1539, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4370": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4370, "effectName": "caldariShipEwFalloffRangeCC2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 2044, "modifyingAttributeID": 657, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4372": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4372, "effectName": "caldariShipEwFalloffRangeCB3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 2044, "modifyingAttributeID": 598, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4373": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4373, "effectName": "subSystemBonusAmarrOffensiveCommandBursts", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1434, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4374": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4374, "effectName": "subSystemBonusCaldariDefensiveSiegeWarfare", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4375": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4375, "effectName": "subSystemBonusGallenteDefensiveInformationWarfare", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4376": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4376, "effectName": "subSystemBonusMinmatarDefensiveSkirmishWarfare", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4377": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4377, "effectName": "shipBonusTorpedoVelocityGF2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4378": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4378, "effectName": "shipBonusTorpedoVelocityMF2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4379": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4379, "effectName": "shipBonusTorpedoVelocity2AF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4380": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4380, "effectName": "shipBonusTorpedoVelocityCF2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4384": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4384, "effectName": "eliteReconBonusHeavyMissileVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4385": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4385, "effectName": "eliteReconBonusHeavyAssaultMissileVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4389": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4389, "effectName": "subSystemBonusAmarrElectronicScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1432, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4390": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4390, "effectName": "subSystemBonusCaldariElectronicScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1442, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4391": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4391, "effectName": "subSystemBonusGallenteElectronicScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1437, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4392": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4392, "effectName": "subSystemBonusMinmatarElectronicScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1447, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4393": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4393, "effectName": "shipBonusEliteCover2TorpedoThermalDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 839, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4394": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4394, "effectName": "shipBonusEliteCover2TorpedoEMDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 839, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4395": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4395, "effectName": "shipBonusEliteCover2TorpedoExplosiveDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 839, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4396": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4396, "effectName": "shipBonusEliteCover2TorpedoKineticDamage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 839, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4397": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4397, "effectName": "shipBonusGFTorpedoExplosionVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4398": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4398, "effectName": "shipBonusMF1TorpedoExplosionVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4399": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4399, "effectName": "shipBonusCF1TorpedoExplosionVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4400": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4400, "effectName": "shipBonusAF1TorpedoExplosionVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4401": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4401, "effectName": "subSystemBonusAmarrElectronic2TractorBeamVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1508, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4402": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4402, "effectName": "subSystemBonusCaldariElectronic2TractorBeamVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1514, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4403": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4403, "effectName": "subSystemBonusGallenteElectronic2TractorBeamVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1518, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4404": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4404, "effectName": "subSystemBonusMinmatarElectronic2TractorBeamVelocity", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1524, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4405": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4405, "effectName": "subSystemBonusMinmatarElectronic2TractorBeamRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1524, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4406": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4406, "effectName": "subSystemBonusGallenteElectronic2TractorBeamRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1518, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4407": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4407, "effectName": "subSystemBonusCaldariElectronic2TractorBeamRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1514, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4408": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4408, "effectName": "subSystemBonusAmarrElectronic2TractorBeamRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1508, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4409": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4409, "effectName": "signatureRadiusPreAssignment", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 552, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4410": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4410, "effectName": "subsystemBonusScanProbeLauncherCPU", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 481, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4412": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4412, "effectName": "subsystemBonusJumpHarmonics", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1253, "modifyingAttributeID": 1541, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4413": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4413, "effectName": "shipBonusGF1TorpedoFlightTime", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4415": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4415, "effectName": "shipBonusMF1TorpedoFlightTime", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4416": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4416, "effectName": "shipBonusCF1TorpedoFlightTime", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4417": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4417, "effectName": "shipBonusAF1TorpedoFlightTime", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4451": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4451, "effectName": "ScanRadarStrengthModifierEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1565, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4452": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4452, "effectName": "ScanLadarStrengthModifierEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1566, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4453": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4453, "effectName": "ScanGravimetricStrengthModifierEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1567, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4454": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4454, "effectName": "ScanMagnetometricStrengthModifierEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1568, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4456": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4456, "effectName": "federationsetbonus3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1029, "modifyingAttributeID": 1553, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4457": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4457, "effectName": "imperialsetbonus3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1030, "modifyingAttributeID": 1550, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4458": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4458, "effectName": "republicsetbonus3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1028, "modifyingAttributeID": 1554, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4459": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4459, "effectName": "caldarisetbonus3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1027, "modifyingAttributeID": 1552, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4460": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4460, "effectName": "imperialsetLGbonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1565, "modifyingAttributeID": 1569, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4461": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4461, "effectName": "federationsetLGbonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1568, "modifyingAttributeID": 1570, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4462": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4462, "effectName": "caldarisetLGbonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1567, "modifyingAttributeID": 1571, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4463": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4463, "effectName": "republicsetLGbonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1566, "modifyingAttributeID": 1572, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4464": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4464, "effectName": "shipProjectileRofMF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4471": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4471, "effectName": "shipBonusStasisMF2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 587, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4472": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4472, "effectName": "shipProjectileDmgMC", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4473": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4473, "effectName": "shipVelocityBonusATC1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1574, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4474": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4474, "effectName": "shipMTMaxRangeBonusATC", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1575, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4475": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4475, "effectName": "shipMTFalloffBonusATC", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1575, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4476": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4476, "effectName": "shipMTFalloffBonusATF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4477": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4477, "effectName": "shipMTMaxRangeBonusATF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4478": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4478, "effectName": "shipBonusAfterburnerCapNeedATF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 6, "modifyingAttributeID": 1576, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4479": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4479, "effectName": "shipBonusSurveyProbeExplosionDelaySkillSurveyCovertOps3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 1578, "operation": 6, "skillTypeID": 3551 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4480": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4480, "effectName": "covertOpsSkillLevelPreMulEliteBonusCoverOpsShip3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1578, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4482": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4482, "effectName": "shipETOptimalRange2AF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4484": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4484, "effectName": "shipPTurretFalloffBonusGB", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4485": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4485, "effectName": "shipBonusStasisWebSpeedFactorMB", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4489": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 4489, "effectName": "superWeaponAmarr", "electronicChance": 0, "guid": "effects.SuperWeaponAmarr", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4490": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 4490, "effectName": "superWeaponCaldari", "electronicChance": 0, "guid": "effects.SuperWeaponCaldari", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4491": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 4491, "effectName": "superWeaponGallente", "electronicChance": 0, "guid": "effects.SuperWeaponGallente", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4492": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 4492, "effectName": "superWeaponMinmatar", "electronicChance": 0, "guid": "effects.SuperWeaponMinmatar", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4510": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4510, "effectName": "shipStasisWebStrengthBonusMC2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 659, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4512": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4512, "effectName": "shipPTurretFalloffBonusGC", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4513": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4513, "effectName": "shipStasisWebStrengthBonusMF2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 587, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4515": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4515, "effectName": "shipFalloffBonusMF", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4516": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4516, "effectName": "shipHTurretFalloffBonusGC", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4527": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4527, "effectName": "gunneryFalloffBonusOnline", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4555": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4555, "effectName": "\tcapitalLauncherSkillCruiseCitadelEmDamage1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4556": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4556, "effectName": "capitalLauncherSkillCruiseCitadelExplosiveDamage1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4557": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4557, "effectName": "capitalLauncherSkillCruiseCitadelKineticDamage1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4558": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4558, "effectName": "capitalLauncherSkillCruiseCitadelThermalDamage1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4559": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4559, "effectName": "gunneryMaxRangeFalloffTrackingSpeedBonus", "electronicChance": 0, "guid": "effects.TurretWeaponRangeTrackingSpeedMultiplyActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3300 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3300 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4575": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4575, "effectName": "industrialCoreEffect2", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1471, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2342, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2352, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2351, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2253, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 565, "operation": 0 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2607, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2606, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2605, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2605, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2604, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2604, "operation": 6, "skillTypeID": 24571 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2584, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 2585, "operation": 6, "skillTypeID": 3438 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2586, "operation": 6, "skillTypeID": 43702 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2588, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4576": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4576, "effectName": "eliteBonusLogisticsTrackingLinkFalloffBonus1", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 349, "modifyingAttributeID": 678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4577": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4577, "effectName": "eliteBonusLogisticsTrackingLinkFalloffBonus2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 209, "modifiedAttributeID": 349, "modifyingAttributeID": 679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4579": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4579, "effectName": "droneRigStasisWebSpeedFactorBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1619, "operation": 6, "skillTypeID": 12305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4598": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4598, "effectName": "amarrFrigateSkillLevelPreMulShipBonus3AFShip", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1623, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4599": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4599, "effectName": "caldariFrigateSkillLevelPreMulShipBonus3CFShip", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1624, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4600": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4600, "effectName": "gallenteFrigateSkillLevelPreMulShipBonus3GFShip", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1625, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4601": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4601, "effectName": "minmatarFrigateSkillLevelPreMulShipBonus3MFShip", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1626, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4619": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4619, "effectName": "shipBonusDroneDamageGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4620": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4620, "effectName": "shipBonusWarpScramblerMaxRangeGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 586, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4621": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4621, "effectName": "shipBonusHeatDamageATF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1576, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4622": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4622, "effectName": "shipBonusSmallHybridMaxRangeATF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4623": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4623, "effectName": "shipBonusSmallHybridTrackingSpeedATF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4624": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4624, "effectName": "shipBonusHybridTrackingATC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1575, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4625": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4625, "effectName": "shipBonusHybridFalloffATC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1575, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4626": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4626, "effectName": "shipBonusWarpScramblerMaxRangeGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 658, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4635": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4635, "effectName": "eliteBonusMaraudersCruiseAndTorpedoDamageRole1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4636": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4636, "effectName": "shipBonusAoeVelocityCruiseAndTorpedoCB2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 501, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 501, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4637": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4637, "effectName": "shipCruiseAndTorpedoVelocityBonusCB3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 598, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 598, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4640": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4640, "effectName": "shipArmorEMAndExpAndkinAndThmResistanceAC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 656, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 656, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 656, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4643": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4643, "effectName": "shipHeavyAssaultMissileEMAndExpAndKinAndThmDmgAC1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4645": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4645, "effectName": "eliteBonusHeavyGunshipHeavyAndHeavyAssaultAndAssaultMissileLauncherROF", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 693, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4648": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4648, "effectName": "eliteBonusBlackOpsECMGravAndLadarAndMagnetometricAndRadarStrength1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 1257, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4649": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4649, "effectName": "shipCruiseAndSiegeLauncherROFBonus2CB", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4656": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1658, "effectCategory": 1, "effectID": 4656, "effectName": "NPCRemoteECM", "electronicChance": 1, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "npcUsageChanceAttributeID": 1664, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4665": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4665, "effectName": "oreIndustrialSkillLevelPostMulShipBonusOreIndustrial1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1669, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4666": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4666, "effectName": "oreIndustrialSkillLevelPostMulShipBonusOreIndustrial2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1670, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4667": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4667, "effectName": "shipBonusNoctisSalvageCycle", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1669, "operation": 6, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4668": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4668, "effectName": "shipBonusNoctisTractorCycle", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 73, "modifyingAttributeID": 1669, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4669": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4669, "effectName": "shipBonusNoctisTractorVelocity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 1045, "modifyingAttributeID": 1670, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4670": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4670, "effectName": "shipBonusNoctisTractorRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 650, "modifiedAttributeID": 54, "modifyingAttributeID": 1670, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4686": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1672, "effectCategory": 1, "effectID": 4686, "effectName": "NPCGroupShieldAssist", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1673, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4687": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1677, "effectCategory": 1, "effectID": 4687, "effectName": "NPCGroupSpeedAssist", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1678, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4688": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1679, "effectCategory": 1, "effectID": 4688, "effectName": "NPCGroupPropJamAssist", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1680, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4689": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1681, "effectCategory": 1, "effectID": 4689, "effectName": "NPCGroupArmorAssist", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "npcActivationChanceAttributeID": 1682, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4728": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4728, "effectName": "OffensiveDefensiveReduction", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4760": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4760, "effectName": "subsystemBonusCaldariPropulsionWarpCapacitor", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 1445, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4769": { "description_de": "Dieses Objekt im All verankern.", "description_en-us": "Anchoring this object in space.", "description_es": "Anclando este objeto en el espacio.", "description_fr": "Ancrage de cet objet dans l'espace.", "description_it": "Anchoring this object in space.", "description_ja": "このオブジェクトを宙域に係留。", "description_ko": "이 물체를 우주에 위치 고정합니다.", "description_ru": "Постановка объекта на якорь в космосе.", "description_zh": "正在太空中锚定这个物体。", "descriptionID": 109403, "disallowAutoRepeat": 0, "displayName_de": "anchoring", "displayName_en-us": "anchoring", "displayName_es": "anclando", "displayName_fr": "ancrage en cours", "displayName_it": "anchoring", "displayName_ja": "係留", "displayName_ko": "위치 고정 중", "displayName_ru": "постановка на якорь", "displayName_zh": "正在锚定", "displayNameID": 110339, "distribution": 2, "effectCategory": 1, "effectID": 4769, "effectName": "anchorDropOrbital", "electronicChance": 0, "guid": "effects.AnchorDrop", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4770": { "disallowAutoRepeat": 0, "displayName_de": "unanchoring", "displayName_en-us": "unanchoring", "displayName_es": "desanclando", "displayName_fr": "détachement en cours", "displayName_it": "unanchoring", "displayName_ja": "未係留", "displayName_ko": "위치 고정 해제 중", "displayName_ru": "снятие с якоря", "displayName_zh": "正在解锚", "displayNameID": 110340, "distribution": 2, "effectCategory": 1, "effectID": 4770, "effectName": "anchorLiftOrbital", "electronicChance": 0, "guid": "effects.AnchorLift", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4771": { "description_de": "Dies ist ein Online-Effekt für Strukturen.", "description_en-us": "this is the online effect for structures", "description_es": "El efecto de activación de las estructuras.", "description_fr": "il s'agit de l'effet de connexion pour les structures", "description_it": "this is the online effect for structures", "description_ja": "これはストラクチャに対するオンライン効果です", "description_ko": "구조물을 위한 작동 효과입니다.", "description_ru": "это — онлайн-эффект для зданий", "description_zh": "这能起到启用建筑的效果", "descriptionID": 109404, "disallowAutoRepeat": 0, "displayName_de": "online", "displayName_en-us": "online", "displayName_es": "con conexión", "displayName_fr": "connecté", "displayName_it": "online", "displayName_ja": "オンライン", "displayName_ko": "온라인", "displayName_ru": "онлайн", "displayName_zh": "在线", "displayNameID": 110341, "effectCategory": 1, "effectID": 4771, "effectName": "onlineOrbital", "electronicChance": 0, "guid": "effects.StructureOnline", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4773": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 4773, "effectName": "hackOrbital", "electronicChance": 0, "guid": "effects.TargetScan", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4775": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4775, "effectName": "shipEnergyNeutralizerTransferAmountBonusAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4782": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4782, "effectName": "shipBonusSmallEnergyWeaponOptimalRangeATF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4789": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4789, "effectName": "shipBonusSmallEnergyTurretDamageATF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1576, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4793": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4793, "effectName": "shipBonusMissileLauncherHeavyROFATC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1574, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4794": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4794, "effectName": "shipBonusMissileLauncherAssaultROFATC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 1574, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4795": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4795, "effectName": "shipBonusMissileLauncherHeavyAssaultROFATC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1574, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4799": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4799, "effectName": "eliteBonusBlackOpsECMBurstGravAndLadarAndMagnetoAndRadar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 238, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 239, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 240, "modifyingAttributeID": 1257, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 241, "modifyingAttributeID": 1257, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4801": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4801, "effectName": "salvagingAccessDifficultyBonusMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 1772, "operation": 0, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4802": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4802, "effectName": "hackingAccessDifficultyBonusMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 1772, "operation": 0, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4803": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4803, "effectName": "archaeologyAccessDifficultyBonusMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 1772, "operation": 0, "skillTypeID": 13278 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4804": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4804, "effectName": "dataMiningSkillBoostAccessDifficultyBonusAbsolutePercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1772, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4809": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4809, "effectName": "ecmGravimetricStrengthBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 1130, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4810": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4810, "effectName": "ecmLadarStrengthBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 1130, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4811": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4811, "effectName": "ecmMagnetometricStrengthBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 1130, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4812": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4812, "effectName": "ecmRadarStrengthBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 1130, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4813": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4813, "effectName": "skillConsumptionQuantityBonusPercentSkillLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1775, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4814": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4814, "effectName": "jumpPortalConsumptionBonusPercentSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 1775, "operation": 6, "skillTypeID": 24562 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4817": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4817, "effectName": "salvagerModuleDurationReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1122, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4820": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263322, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4820, "effectName": "bcLargeEnergyTurretPowerNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 1786, "operation": 0, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4821": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263324, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4821, "effectName": "bcLargeHybridTurretPowerNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 1786, "operation": 0, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4822": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263325, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4822, "effectName": "bcLargeProjectileTurretPowerNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 1786, "operation": 0, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4823": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263326, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4823, "effectName": "bcLargeEnergyTurretCPUNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1787, "operation": 0, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4824": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263327, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4824, "effectName": "bcLargeHybridTurretCPUNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1787, "operation": 0, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4825": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263333, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4825, "effectName": "bcLargeProjectileTurretCPUNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1787, "operation": 0, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4826": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263334, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4826, "effectName": "bcLargeEnergyTurretCapacitorNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1788, "operation": 0, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4827": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263335, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4827, "effectName": "bcLargeHybridTurretCapacitorNeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1788, "operation": 0, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4850": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263533, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4850, "effectName": "battlecruiserSkillLevelPreMulShipBonusBC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1792, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4852": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263535, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4852, "effectName": "battlecruiserSkillLevelPreMulShipBonusBC4Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1793, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4867": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263931, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4867, "effectName": "setBonusChristmasPowergrid", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 313, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4868": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263932, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4868, "effectName": "setBonusChristmasCapacitorCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 1079, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4869": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263933, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4869, "effectName": "setBonusChristmasCPUOutput", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 424, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4871": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 263935, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4871, "effectName": "setBonusChristmasCapacitorRecharge2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 314, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4894": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264986, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4894, "effectName": "maxRangeHiddenPreAssignmentWarpScrambleRange", "electronicChance": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1317, "modifyingAttributeID": 103, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4896": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264990, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4896, "effectName": "shipBonusDroneHitpointsGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4897": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264991, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4897, "effectName": "shipBonusDroneArmorHitpointsGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4898": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264992, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4898, "effectName": "shipBonusDroneShieldHitpointsGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 586, "operation": 2, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4901": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264995, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4901, "effectName": "shipMissileSpeedBonusAF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4902": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 264996, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4902, "effectName": "MWDSignatureRadiusRoleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1803, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4906": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 267598, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4906, "effectName": "systemDamageFighters", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4908": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 4908, "effectName": "modifyShieldArmorHullResonancePostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 987, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4910": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 267654, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4910, "effectName": "setWeaponSpeedToValue", "electronicChance": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 20, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4911": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4911, "effectName": "modifyShieldRechargeRatePassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 134, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4912": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 267655, "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 4912, "effectName": "damageMultiplierMultiplierActivation", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4913": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 267656, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 4913, "effectName": "missileDamageMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 212, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4918": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 4918, "effectName": "setMassAndAgilityAndSpeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 622, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 169, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1333, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4921": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4921, "effectName": "microJumpDrive", "electronicChance": 0, "guid": "effects.MicroJumpDriveEngage", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4923": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 277330, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4923, "effectName": "skillMJDdurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 4385 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4928": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4928, "effectName": "adaptiveArmorHardener", "electronicChance": 0, "guid": "effects.ArmorHardening", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4930": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 278191, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4930, "effectName": "scriptConsumptionQuantityBonus", "electronicChance": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 885, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4933": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 278359, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4933, "effectName": "shipSETDmgBonus2AF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4934": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 278360, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4934, "effectName": "shipArmorRepairingGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4936": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4936, "effectName": "fueledShieldBoosting", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4941": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 278506, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4941, "effectName": "shipHybridDamageBonusCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4942": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 4942, "effectName": "targetBreaker", "electronicChance": 0, "guid": "effects.TargetBreaker", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4945": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279042, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4945, "effectName": "skillTargetBreakerDurationBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1154, "modifiedAttributeID": 3115, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4946": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279043, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "effectCategory": 0, "effectID": 4946, "effectName": "skillTargetBreakerCapNeedBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1154, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4950": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279222, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4950, "effectName": "shipBonusShieldBoosterMB1a", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4951": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4951, "effectName": "shieldBoostAmplifierPassiveBooster", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4961": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 4961, "effectName": "systemShieldRepairAmountShieldSkills", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1496, "operation": 4, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1496, "operation": 4, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4967": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4967, "effectName": "shieldBoosterDurationBonusShieldSkills", "electronicChance": 0, "guid": "", "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 312, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 312, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4970": { "disallowAutoRepeat": 0, "displayName_de": "Shield Booster Penalty", "displayName_en-us": "Shield Booster Penalty", "displayName_es": "Penalización de potenciador de escudo", "displayName_fr": "Pénalité de booster de bouclier", "displayName_it": "Shield Booster Penalty", "displayName_ja": "シールドブースターペナルティ", "displayName_ko": "실드 부스터 페널티", "displayName_ru": "Shield Booster Penalty", "displayName_zh": "护盾回充增效器惩罚", "displayNameID": 279259, "effectCategory": 0, "effectID": 4970, "effectName": "boosterShieldBoostAmountPenaltyShieldSkills", "electronicChance": 0, "fittingUsageChanceAttributeID": 1089, "guid": "", "iconID": 1384, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 616, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 616, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "4972": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279265, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4972, "effectName": "eliteBonusAssaultShipLightMissileROF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 509, "modifiedAttributeID": 51, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4973": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279266, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4973, "effectName": "eliteBonusAssaultShipRocketROF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 507, "modifiedAttributeID": 51, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4974": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279281, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4974, "effectName": "eliteBonusMarauderShieldBonus2a", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1266, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4975": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279282, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4975, "effectName": "shipBonusMissileKineticlATF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1577, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4976": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 279316, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4976, "effectName": "skillReactiveArmorHardenerDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1150, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 32797 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4984": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 279695, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4984, "effectName": "skillWarAllyCostModifier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1820, "modifyingAttributeID": 1821, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4985": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 279696, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4985, "effectName": "relationsAllyCostSkillBoost", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1821, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4989": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 279782, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4989, "effectName": "missileSkillAoeCloudSizeBonusAllIncludingCapitals", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4990": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280524, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4990, "effectName": "shipEnergyTCapNeedBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1822, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4991": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280635, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4991, "effectName": "shipSETDmgBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1823, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4994": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280638, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4994, "effectName": "shipArmorEMResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1825, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4995": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280639, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4995, "effectName": "shipArmorEXResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1825, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4996": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280640, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4996, "effectName": "shipArmorKNResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1825, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4997": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280641, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4997, "effectName": "shipArmorTHResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1825, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "4999": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280643, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 4999, "effectName": "shipHybridRangeBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1826, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5000": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280644, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5000, "effectName": "shipMissileKineticDamageRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1827, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5008": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280650, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5008, "effectName": "shipShieldEMResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1829, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5009": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280651, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5009, "effectName": "shipShieldExplosiveResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1829, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5011": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280653, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5011, "effectName": "shipShieldKineticResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1829, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5012": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280654, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5012, "effectName": "shipShieldThermalResistanceRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1829, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5013": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280669, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5013, "effectName": "shipSHTDmgBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1830, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5014": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280670, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5014, "effectName": "shipBonusDroneDamageMultiplierRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1831, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5015": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280671, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5015, "effectName": "shipBonusEwRemoteSensorDampenerMaxTargetRangeBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 309, "modifyingAttributeID": 1832, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5016": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280672, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5016, "effectName": "shipBonusEwRemoteSensorDampenerScanResolutionBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 566, "modifyingAttributeID": 1832, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5017": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280673, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5017, "effectName": "shipArmorRepairingRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1833, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5018": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280675, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5018, "effectName": "shipVelocityBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1835, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5019": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280676, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5019, "effectName": "minmatarShipEwTargetPainterRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1834, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5020": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280679, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5020, "effectName": "shipSPTDmgBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1836, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5021": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280680, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5021, "effectName": "shipShieldBoostRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1837, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5028": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5028, "effectName": "shipECMScanStrengthBonusRookie", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 238, "modifyingAttributeID": 1828, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 240, "modifyingAttributeID": 1828, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 239, "modifyingAttributeID": 1828, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 241, "modifyingAttributeID": 1828, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5029": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280686, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5029, "effectName": "shipBonusDroneMiningAmountRole", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 2578, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5030": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280688, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5030, "effectName": "shipBonusMiningDroneAmountPercentRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 428, "modifyingAttributeID": 1831, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5035": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5035, "effectName": "shipBonusDroneHitpointsRookie", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1831, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1831, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1831, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5036": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 280738, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5036, "effectName": "shipBonusSalvageCycleAF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5045": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 280747, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5045, "effectName": "shipBonusSalvageCycleCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5048": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 280750, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5048, "effectName": "shipBonusSalvageCycleGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5051": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 280753, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5051, "effectName": "shipBonusSalvageCycleMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 25863 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5052": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 280930, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5052, "effectName": "baseDefenderAllyCostCharAssignment", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1820, "modifyingAttributeID": 1820, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5055": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281017, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5055, "effectName": "iceHarvesterDurationMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 780, "operation": 4, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5056": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281018, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5056, "effectName": "iceHarvesterCapacitorNeedMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 780, "operation": 4, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5058": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281020, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5058, "effectName": "miningYieldMultiplyPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 207, "operation": 4, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5059": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281021, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5059, "effectName": "shipBonusIceHarvesterDurationORE3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 926, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5066": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5066, "effectName": "shipBonusTargetPainterOptimalMF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5067": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281040, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5067, "effectName": "miningBargeBonusGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 3187, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5068": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281041, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5068, "effectName": "miningBargeBonusShieldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 3188, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5069": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 281042, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5069, "effectName": "deepcoreMiningBonus", "electronicChance": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 11395 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "5079": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5079, "effectName": "shipMissileKineticDamageCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5080": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5080, "effectName": "shipMissileVelocityCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5081": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5081, "effectName": "maxTargetingRangeBonusPostPercentPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5087": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5087, "effectName": "shipBonusDroneHitpointsGF", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5090": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5090, "effectName": "shipShieldBoostMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5103": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5103, "effectName": "shipBonusShieldTransferCapNeedCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5104": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5104, "effectName": "shipBonusShieldTransferBoostAmountCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5105": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5105, "effectName": "shipBonusShieldTransferCapNeedMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5106, "effectName": "shipBonusShieldTransferBoostAmountMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5107": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5107, "effectName": "shipBonusRemoteArmorRepairCapNeedGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5108": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5108, "effectName": "shipBonusRemoteArmorRepairAmountGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5109": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5109, "effectName": "shipBonusRemoteArmorRepairCapNeedAF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5110": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5110, "effectName": "shipBonusRemoteArmorRepairAmount2AF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5111": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5111, "effectName": "shipBonusDroneTrackingGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5119": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5119, "effectName": "shipBonusScanProbeStrength2AF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5121": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5121, "effectName": "energyTransferArrayTransferAmountBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 90, "modifyingAttributeID": 1840, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5122": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5122, "effectName": "shipBonusShieldTransferCapneedMC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5123": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5123, "effectName": "shipBonusRemoteArmorRepairCapNeedAC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5124": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5124, "effectName": "shipBonusRemoteArmorRepairAmountAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5125": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282561, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5125, "effectName": "shipBonusRemoteArmorRepairAmountGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5126": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282562, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5126, "effectName": "shipBonusShieldTransferBoostAmountCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5127": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282563, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5127, "effectName": "shipBonusShieldTransferBoostAmountMC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5128": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282643, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5128, "effectName": "shipBonusEwRemoteSensorDampenerOptimalBonusGC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 54, "modifyingAttributeID": 486, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5129": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282644, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5129, "effectName": "minmatarShipEwTargetPainterMC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 554, "modifyingAttributeID": 489, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5131": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5131, "effectName": "shipMissileRofCC", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 487, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 487, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 51, "modifyingAttributeID": 487, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5132": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282855, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5132, "effectName": "shipPTurretFalloffBonusMC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5133": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282856, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5133, "effectName": "shipHTDamageBonusCC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5136": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282859, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5136, "effectName": "shipMETCDamageBonusAC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5137": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282883, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5137, "effectName": "miningFrigateSkillLevelOreMiningYieldBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1842, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5138": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282884, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5138, "effectName": "miningFrigateSkillLevelPostMulShipBonusORE2frig", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1843, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5139": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282885, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5139, "effectName": "miningFrigateBonusOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 1842, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5142": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 282895, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5142, "effectName": "GasCloudHarvesterYieldMultiplyPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 737, "modifiedAttributeID": 77, "modifyingAttributeID": 207, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5153": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283118, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5153, "effectName": "shipMissileVelocityPirateFactionRocket", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5162": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283267, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5162, "effectName": "skillReactiveArmorHardenerCapNeedBonus", "electronicChance": 0, "isAssistance": 1, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1150, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 32797 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5163": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 5163, "effectName": "salvageDroneEffect", "electronicChance": 0, "guid": "effects.Salvaging", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0 }, "5165": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283392, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5165, "effectName": "shipBonusDroneMWDboostrole", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5168": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283611, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5168, "effectName": "droneSalvageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 902, "operation": 2, "skillTypeID": 3440 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5170": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283613, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5170, "effectName": "droneSalvageSkillBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5172": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283693, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5172, "effectName": "sensorIntegritySkillLevelPreMulSensorStrengthBonusSelf", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1851, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5180": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283786, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5180, "effectName": "sensorCompensationSensorStrengthBonusGravimetric", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1851, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5181": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283787, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5181, "effectName": "sensorCompensationSensorStrengthBonusLadar", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1851, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5182": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283788, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5182, "effectName": "sensorCompensationSensorStrengthBonusMagnetometric", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1851, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5183": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283789, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5183, "effectName": "sensorCompensationSensorStrengthBonusRadar", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1851, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5185": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283927, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5185, "effectName": "shipEnergyVampireAmountBonusFixedAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5187": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 283929, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5187, "effectName": "shipBonusEwRemoteSensorDampenerFalloffBonusGC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 2044, "modifyingAttributeID": 486, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5188": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 285226, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5188, "effectName": "trackingSpeedBonusEffectHybrids", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 74, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5189": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 285291, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5189, "effectName": "trackingSpeedBonusEffectLasers", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 53, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5190": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 285292, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5190, "effectName": "trackingSpeedBonusEffectProjectiles", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 55, "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5191": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 285428, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5191, "effectName": "spaceAnchorEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1854, "modifyingAttributeID": 1854, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5200": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286445, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5200, "effectName": "armorUpgradesSkillBoostMassPenaltyReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1856, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5201": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286446, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5201, "effectName": "armorUpgradesMassPenaltyReductionBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 1856, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5205": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286525, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5205, "effectName": "shipSETTrackingBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1857, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5206": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286526, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5206, "effectName": "shipSETOptimalBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1858, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5207": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286527, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5207, "effectName": "shipNOSTransferAmountBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 1859, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5208": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286528, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5208, "effectName": "shipNeutDestabilizationAmountBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 1860, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5209": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286529, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5209, "effectName": "shipWebVelocityBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 1861, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5212": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286532, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5212, "effectName": "shipDroneMWDSpeedBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1864, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5213": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286533, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5213, "effectName": "shipRocketMaxVelocityBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1863, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5214": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286534, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5214, "effectName": "shipLightMissileMaxVelocityBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1862, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5215": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286535, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5215, "effectName": "shipSHTTrackingSpeedBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1865, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5216": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286536, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5216, "effectName": "shipSHTFalloffBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1866, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5217": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286538, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5217, "effectName": "shipSPTTrackingSpeedBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1867, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5218": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286539, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5218, "effectName": "shipSPTFalloffBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1868, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5219": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически генерируемый эффект", "description_zh": "自动生成效果", "descriptionID": 286540, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5219, "effectName": "shipSPTOptimalRangeBonusRookie", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1869, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5220": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286574, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5220, "effectName": "shipProjectileDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5221": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286575, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5221, "effectName": "shipHeavyAssaultMissileEMDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5222": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286576, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5222, "effectName": "shipHeavyAssaultMissileKinDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5223": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286577, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5223, "effectName": "shipHeavyAssaultMissileThermDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5224": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286578, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5224, "effectName": "shipHeavyAssaultMissileExpDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5225": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286579, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5225, "effectName": "shipHeavyMissileEMDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5226": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286580, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5226, "effectName": "shipHeavyMissileExpDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5227": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286581, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5227, "effectName": "shipHeavyMissileKinDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5228": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286582, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5228, "effectName": "shipHeavyMissileThermDmgPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5229": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5229, "effectName": "shipScanProbeStrengthBonusPirateCruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5230": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 5230, "effectName": "modifyActiveShieldResonancePostPercent", "electronicChance": 0, "guid": "effects.ModifyShieldResonance", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5231": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 5231, "effectName": "modifyActiveArmorResonancePostPercent", "electronicChance": 0, "guid": "effects.ArmorHardening", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5234, "effectName": "shipSmallMissileExpDmgCF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5237": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5237, "effectName": "shipSmallMissileKinDmgCF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5240": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5240, "effectName": "shipSmallMissileThermDmgCF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5243": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5243, "effectName": "shipSmallMissileEMDmgCF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5259": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286647, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5259, "effectName": "reconShipCloakCpuBonus1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5260": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286648, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5260, "effectName": "covertOpsCloakCpuPercentBonus1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 569, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5261": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286649, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5261, "effectName": "CovertCloakCPUAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1870, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5262": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286650, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5262, "effectName": "covertOpsCloakCpuPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1870, "modifyingAttributeID": 1871, "operation": 2, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5263": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286651, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5263, "effectName": "covertCynoCpuPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1870, "modifyingAttributeID": 1871, "operation": 2, "skillTypeID": 21603 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5264": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286695, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5264, "effectName": "warfareLinkCPUAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1882, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5265": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286696, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5265, "effectName": "warfareLinkCpuPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1882, "modifyingAttributeID": 1883, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5266": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286699, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5266, "effectName": "blockadeRunnerCloakCpuPercentBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1361, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5267": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286730, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5267, "effectName": "drawbackRepairSystemsPGNeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 1138, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5268": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286731, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5268, "effectName": "drawbackCapRepPGNeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 1138, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5275": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 5275, "effectName": "fueledArmorRepair", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "5276": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286777, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5276, "effectName": "destroyerSkillLevelPreMulShipBonusAD1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1887, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5277": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286778, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5277, "effectName": "destroyerSkillLevelPreMulShipBonusAD2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1888, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5278": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286779, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5278, "effectName": "destroyerSkillLevelPreMulShipBonusCD1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 734, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5279": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286780, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5279, "effectName": "destroyerSkillLevelPreMulShipBonusCD2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 735, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5280": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286781, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5280, "effectName": "destroyerSkillLevelPreMulShipBonusGD1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 738, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5281": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286782, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5281, "effectName": "destroyerSkillLevelPreMulShipBonusGD2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 739, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5282": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286783, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5282, "effectName": "destroyerSkillLevelPreMulShipBonusMD1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 729, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5283": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286784, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5283, "effectName": "destroyerSkillLevelPreMulShipBonusMD2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 740, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5284": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286785, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5284, "effectName": "battlecruiserSkillLevelPreMulShipBonusABC1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 795, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5285": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286786, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5285, "effectName": "battlecruiserSkillLevelPreMulShipBonusABC2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1889, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5286": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286787, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5286, "effectName": "battlecruiserSkillLevelPreMulShipBonusCBC1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 743, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5287": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286788, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5287, "effectName": "battlecruiserSkillLevelPreMulShipBonusCBC2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 745, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5288": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286789, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5288, "effectName": "battlecruiserSkillLevelPreMulShipBonusGBC1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 747, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5289": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286790, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5289, "effectName": "battlecruiserSkillLevelPreMulShipBonusGBC2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 746, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5290": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286791, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5290, "effectName": "battlecruiserSkillLevelPreMulShipBonusMBC1Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 748, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5291": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286792, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5291, "effectName": "battlecruiserSkillLevelPreMulShipBonusMBC2Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 749, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5293": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286797, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5293, "effectName": "shipLaserCapNeed2AD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5294": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286798, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5294, "effectName": "shipLaserTracking2AD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1888, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5295": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286799, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5295, "effectName": "shipBonusDroneDamageMultiplierAD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5300": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5300, "effectName": "shipBonusDroneHitpointsAD1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5303": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286810, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5303, "effectName": "shipHybridRange1CD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5304": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286811, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5304, "effectName": "shipHybridTrackingCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5305": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286812, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5305, "effectName": "shipBonusFrigateSizedMissileKineticDamageCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5306": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286813, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5306, "effectName": "shipRocketKineticDmgCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5307": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286814, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5307, "effectName": "shipBonusAoeVelocityRocketsCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5308": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286815, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5308, "effectName": "shipBonusAoeVelocityStandardMissilesCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5309": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286816, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5309, "effectName": "shipHybridFallOff1GD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5310": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286817, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5310, "effectName": "shipHybridTracking1GD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 739, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5311": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286833, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5311, "effectName": "shipBonusDroneDamageMultiplierGD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5316": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5316, "effectName": "shipBonusDroneHitpointsGD1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5317": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286849, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5317, "effectName": "shipProjectileDamageMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5318": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286850, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5318, "effectName": "shipProjectileTracking1MD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 740, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5319": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286851, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5319, "effectName": "shipBonusFrigateSizedLightMissileExplosiveDamageMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5320": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286852, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5320, "effectName": "shipRocketExplosiveDmgMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5321": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286853, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5321, "effectName": "shipBonusMWDSignatureRadiusMD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 740, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5322": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286854, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5322, "effectName": "shipArmorEMResistance1ABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5323": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286855, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5323, "effectName": "shipArmorExplosiveResistance1ABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5324": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286856, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5324, "effectName": "shipArmorKineticResistance1ABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5325": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286857, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5325, "effectName": "shipArmorThermResistance1ABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5326": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286858, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5326, "effectName": "shipBonusDroneDamageMultiplierABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5331": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5331, "effectName": "shipBonusDroneHitpointsABC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5332": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286862, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5332, "effectName": "shipLaserCapABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 795, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5333": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286863, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5333, "effectName": "shipLaserDamageBonusABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5334": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286864, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5334, "effectName": "shipHybridOptimal1CBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5335": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286865, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5335, "effectName": "shipShieldEmResistance1CBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 745, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5336": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286866, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5336, "effectName": "shipShieldExplosiveResistance1CBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 745, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5337": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286867, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5337, "effectName": "shipShieldKineticResistance1CBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 745, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5338": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286868, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5338, "effectName": "shipShieldThermalResistance1CBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 745, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5339": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286869, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5339, "effectName": "shipBonusHeavyAssaultMissileKineticDamageCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5340": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286870, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5340, "effectName": "shipBonusHeavyMissileKineticDamageCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5341": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286871, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5341, "effectName": "shipHybridDmg1GBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5342": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286872, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5342, "effectName": "shipArmorRepairing1GBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 746, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5343": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286873, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5343, "effectName": "shipBonusDroneDamageMultiplierGBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5348": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5348, "effectName": "shipBonusDroneHitpointsGBC1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5349": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286877, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5349, "effectName": "shipBonusHeavyMissileLauncherRofMBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 749, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5350": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286878, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5350, "effectName": "shipBonusHeavyAssaultMissileLauncherRofMBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 749, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5351": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286879, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5351, "effectName": "shipShieldBoost1MBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 748, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5352": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286880, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5352, "effectName": "shipBonusProjectileDamageMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 748, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5353": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286881, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5353, "effectName": "shipProjectileRof1MBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 749, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5354": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286882, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5354, "effectName": "shipLargeLaserCapABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 795, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5355": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286883, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5355, "effectName": "shipLargeLaserDamageBonusABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5356": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286884, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5356, "effectName": "shipHybridRangeBonusCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5357": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286885, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5357, "effectName": "shipHybridDamageBonusCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5358": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286886, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5358, "effectName": "shipLargeHybridTrackingBonusGBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5359": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286887, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5359, "effectName": "shipHybridDamageBonusGBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 746, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5360": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286888, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5360, "effectName": "shipProjectileRofBonusMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 748, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5361": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 286889, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5361, "effectName": "shipProjectileFalloffBonusMBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 749, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5364": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5364, "effectName": "armorAllRepairSystemsAmountBonusPassive", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 895, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 895, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5365": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 286951, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5365, "effectName": "eliteBonusViolatorsRepairSystemsArmorDamageAmount2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1266, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5366": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 286952, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5366, "effectName": "shipBonusRepairSystemsBonusATC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1575, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5367": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 286953, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5367, "effectName": "shipBonusRepairSystemsArmorRepairAmountGB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5370": { "description_de": "Reparatureffekt für die Panzerung von NPC-Einheiten", "description_en-us": "Entity armor repair effect for tanking NPCs", "description_es": "Efecto de reparación del blindaje de la entidad para PNJ tanquerizadores.", "description_fr": "Effet de réparation de blindage d'entité pour la protection des PNJ", "description_it": "Entity armor repair effect for tanking NPCs", "description_ja": "エンティティのアーマーリペア効果(タンキングNPC用)", "description_ko": "NPC를 탱킹하여 얻는 개체 장갑 수리 효과입니다.", "description_ru": "Модификатор темпов ремонта брони объекта (для танкующих NPC)", "description_zh": "防御型NPC的装甲维修效果", "descriptionID": 287044, "disallowAutoRepeat": 0, "durationAttributeID": 630, "effectCategory": 1, "effectID": 5370, "effectName": "entityArmorRepairing", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5371": { "description_de": "Schildverstärkungseffekt für die Panzerung von NPC-Einheiten", "description_en-us": "Entity shield boosting effect for tanking NPCs", "description_es": "Efecto de potenciación del escudo de la entidad para PNJ tanquerizadores.", "description_fr": "Effet de boost de bouclier d'entité pour la protection des PNJ", "description_it": "Entity shield boosting effect for tanking NPCs", "description_ja": "エンティティのシールドブースト効果(タンキングNPC用)", "description_ko": "NPC를 탱킹하여 얻는 개체 실드 부스트 효과입니다.", "description_ru": "Модификатор темпов накачки силового щита объекта (для танкующих NPC)", "description_zh": "防御型NPC的护盾回充增量效果", "descriptionID": 287045, "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 5371, "effectName": "entityShieldBoosting", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5372": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 287336, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5372, "effectName": "damageCloudChanceReductionFixed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 522, "modifyingAttributeID": 543, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5373": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 287337, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5373, "effectName": "deepCoreMiningSkillBoostDamageCloudChanceReductionMul", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 543, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5378": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 287980, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5378, "effectName": "shipHeavyMissileAOECloudSizeCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5379": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 287981, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5379, "effectName": "shipHeavyAssaultMissileAOECloudSizeCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5380": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 287982, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5380, "effectName": "shipHybridTrackingGBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 746, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5381": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288000, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5381, "effectName": "shipEnergyTrackingABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 795, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5382": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288066, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5382, "effectName": "shipBonusMETOptimalAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5383": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288067, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5383, "effectName": "shipMissileEMDamageCC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5384": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288068, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5384, "effectName": "shipMissileThermDamageCC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5385": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288069, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5385, "effectName": "shipMissileExpDamageCC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5386": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288070, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5386, "effectName": "shipMissileKinDamageCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5387": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288071, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5387, "effectName": "shipHeavyAssaultMissileAOECloudSizeCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5388": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288072, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5388, "effectName": "shipHeavyMissileAOECloudSizeCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5389": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288073, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5389, "effectName": "shipBonusDroneTrackingGC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5397": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288162, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5397, "effectName": "baseMaxScanDeviationModifierModuleOnline2None", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 1905, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5398": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288164, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5398, "effectName": "systemScanDurationModuleModifier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 1906, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5399": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5399, "effectName": "baseSensorStrengthModifierModule", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1907, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5402": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288186, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5402, "effectName": "shipMissileHeavyAssaultVelocityABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5403": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288187, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5403, "effectName": "shipMissileHeavyVelocityABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5410": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5410, "effectName": "shipLaserCap1ABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5411": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288200, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5411, "effectName": "shipMissileVelocityCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5417": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288240, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5417, "effectName": "shipBonusDroneDamageMultiplierAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5418": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288241, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5418, "effectName": "shipBonusDroneArmorHitPointsAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5419": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288242, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5419, "effectName": "shipBonusDroneShieldHitPointsAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5420": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288243, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5420, "effectName": "shipBonusDroneStructureHitPointsAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5421": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288244, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5421, "effectName": "shipBonusEnergyNeutRangeAB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 98, "modifyingAttributeID": 585, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5422": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288245, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5422, "effectName": "shipBonusEnergyVampireRangeAB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 91, "modifyingAttributeID": 585, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5424": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288247, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5424, "effectName": "shipLargeHybridTurretRofGB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5427": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288250, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5427, "effectName": "shipBonusDroneTrackingGB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5428": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288251, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5428, "effectName": "shipBonusDroneOptimalRangeGB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 500, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5429": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288252, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5429, "effectName": "shipBonusMissileAoeVelocityMB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 518, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5430": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288253, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5430, "effectName": "shipBonusAoeVelocityCruiseMissilesMB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 518, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5431": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288259, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5431, "effectName": "shipBonusLargeEnergyTurretTrackingAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5433": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5433, "effectName": "hackingSkillVirusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5435": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5435, "effectName": "dataMiningSkillLevelVirusCoherenceBonusModifier2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1915, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5437": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288851, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5437, "effectName": "archaeologySkillVirusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 13278 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5440": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 288868, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5440, "effectName": "systemStandardMissileKineticDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5444": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289030, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5444, "effectName": "shipTorpedoAOECloudSize1CB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5445": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289031, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5445, "effectName": "shipCruiseMissileAOECloudSize1CB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5456": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289088, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5456, "effectName": "shipCruiseMissileROFCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 491, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5457": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289089, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5457, "effectName": "shipTorpedoROFCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 491, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5459": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289118, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5459, "effectName": "hackingVirusStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1910, "modifyingAttributeID": 1918, "operation": 2, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5460": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5460, "effectName": "minigameVirusStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1910, "modifyingAttributeID": 1918, "operation": 2, "skillTypeID": 13278 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1910, "modifyingAttributeID": 1918, "operation": 2, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5461": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5461, "effectName": "shieldOperationRechargeratebonusPostPercentOnline", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 338, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5468": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5468, "effectName": "shipBonusAgilityCI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 811, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5469": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5469, "effectName": "shipBonusAgilityMI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 814, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5470": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289295, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5470, "effectName": "shipBonusAgilityGI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 813, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5471": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289296, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5471, "effectName": "shipBonusAgilityAI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 809, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5476": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289366, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5476, "effectName": "shipBonusOreCapacityGI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 813, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5477": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289367, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5477, "effectName": "shipBonusAmmoBayMI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1573, "modifyingAttributeID": 814, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5478": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289368, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5478, "effectName": "shipBonusPICommoditiesHoldGI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1653, "modifyingAttributeID": 813, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5479": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289369, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5479, "effectName": "shipBonusMineralBayGI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1558, "modifyingAttributeID": 813, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5480": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289400, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5480, "effectName": "setBonusChristmasBonusVelocity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 1076, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5482": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289402, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5482, "effectName": "setBonusChristmasAgilityBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 151, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5483": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289403, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5483, "effectName": "setBonusChristmasShieldCapacityBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 337, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5484": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289404, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5484, "effectName": "setBonusChristmasArmorHPBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 1730, "modifiedAttributeID": 1083, "modifyingAttributeID": 1799, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5485": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289411, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5485, "effectName": "shipSPTOptimalBonusMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5486": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5486, "effectName": "shipBonusProjectileDamageMBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 749, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5496": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289694, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5496, "effectName": "eliteBonusCommandShipHAMRoFCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 51, "modifyingAttributeID": 1000, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5497": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289695, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5497, "effectName": "eliteBonusCommandShipHMRoFCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 51, "modifyingAttributeID": 1000, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5498": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289696, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5498, "effectName": "eliteBonusCommandShipsHeavyAssaultMissileExplosionVelocityCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5499": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289697, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5499, "effectName": "eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5500": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289698, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5500, "effectName": "eliteBonusCommandShipsHeavyMissileExplosionRadiusCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5501": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289699, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5501, "effectName": "eliteBonusCommandShipMediumHybridDamageCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5502": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289700, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5502, "effectName": "eliteBonusCommandShipMediumHybridTrackingCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5503": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289701, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5503, "effectName": "eliteBonusCommandShipDroneTrackingCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5504": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289702, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5504, "effectName": "eliteBonusCommandShipHeavyDroneVelocityCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5505": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289703, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5505, "effectName": "eliteBonusCommandShipMediumHybridRoFCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5514": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5514, "effectName": "eliteBonusCommandShipHeavyAssaultMissileDamageCS2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5521": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5521, "effectName": "eliteBonusCommandShipHeavyMissileDamageCS2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5527": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 289980, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5527, "effectName": "skillJumpCloneCooldownReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1921, "modifyingAttributeID": 280, "operation": 3 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5539": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290016, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5539, "effectName": "shipBonusHMLKineticDamageAC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5540": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290017, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5540, "effectName": "shipBonusHMLEMDamageAC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5541": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290018, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5541, "effectName": "shipBonusHMLThermDamageAC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5542": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290019, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5542, "effectName": "shipBonusHMLExploDamageAC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5552": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290047, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5552, "effectName": "shipBonusHMLVelocityEliteBonusHeavyGunship1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5553": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290048, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5553, "effectName": "shipBonusHAMVelocityEliteBonusHeavyGunship1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5554": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290049, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5554, "effectName": "shipBonusArmorRepAmountGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5555": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290050, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5555, "effectName": "shipBonusHeavyDroneSpeedGC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5556": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290051, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5556, "effectName": "shipBonusHeavyDRoneTrackingGC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5557": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290052, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5557, "effectName": "shipBonusSentryDroneOptimalRangeEliteBonusHeavyGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5558": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290053, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5558, "effectName": "shipBonusSentryDroneTrackingEliteBonusHeavyGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5559": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290054, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5559, "effectName": "shipBonusShieldBoostAmountMC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5560": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290058, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5560, "effectName": "roleBonusMarauderMJDRReactivationDelayBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1189, "modifiedAttributeID": 669, "modifyingAttributeID": 1923, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5561": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290059, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5561, "effectName": "subSystemBonusAmarrDefensiveInformationWarfare", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5563": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290061, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5563, "effectName": "subSystemBonusAmarrDefensiveSkirmishWarfare", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1433, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5564": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290062, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5564, "effectName": "subSystemBonusCaldariOffensiveCommandBursts", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1444, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5566": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290064, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5566, "effectName": "subSystemBonusCaldariDefensiveSkirmishWarfare", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1443, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5567": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290065, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5567, "effectName": "subSystemBonusGallenteDefensiveSkirmishWarfare", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1438, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5568": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290066, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5568, "effectName": "subSystemBonusGallenteOffensiveCommandBursts", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1439, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5569": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290067, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5569, "effectName": "subSystemBonusMinmatarDefensiveSiegeWarfare", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1448, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5570": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290068, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5570, "effectName": "subSystemBonusMinmatarOffensiveCommandBursts", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5571": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290069, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5571, "effectName": "commandShipSkillMultiplier3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1924, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5572": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290070, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5572, "effectName": "eliteBonusCommandShipArmoredCS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5573": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290071, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5573, "effectName": "eliteBonusCommandShipSiegeCS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5574": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290072, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5574, "effectName": "eliteBonusCommandShipSkirmishCS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5575": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290073, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5575, "effectName": "eliteBonusCommandShipInformationCS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1924, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5607": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 290195, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5607, "effectName": "capacitorEmissionSystemskill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6, "skillTypeID": 3423 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5610": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5610, "effectName": "shipBonusLargeEnergyTurretMaxRangeAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5611": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5611, "effectName": "shipBonusHTFalloffGB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5614": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290373, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5614, "effectName": "piCustomsOfficeTaxReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1926, "modifyingAttributeID": 1925, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5615": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290374, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5615, "effectName": "piTaxReductionModifierSkillModifier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1925, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5618": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290378, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5618, "effectName": "shipBonusRHMLROF2CB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5619": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290379, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5619, "effectName": "shipBonusRHMLROFCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 51, "modifyingAttributeID": 491, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5620": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290380, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5620, "effectName": "shipBonusRHMLROFMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 51, "modifyingAttributeID": 490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5621": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290381, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5621, "effectName": "shipBonusCruiseROFMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5622": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290382, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5622, "effectName": "shipBonusTorpedoROFMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 490, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5628": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290388, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5628, "effectName": "shipBonusCruiseMissileEMDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5629": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290389, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5629, "effectName": "shipBonusCruiseMissileThermDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5630": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290390, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5630, "effectName": "shipBonusCruiseMissileKineticDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5631": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290391, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5631, "effectName": "shipBonusCruiseMissileExploDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5632": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290392, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5632, "effectName": "shipBonusTorpedoMissileExploDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5633": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290393, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5633, "effectName": "shipBonusTorpedoMissileEMDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5634": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290394, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5634, "effectName": "shipBonusTorpedoMissileThermDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5635": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290395, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5635, "effectName": "shipBonusTorpedoMissileKineticDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5636": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290396, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5636, "effectName": "shipBonusHeavyMissileEMDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5637": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290397, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5637, "effectName": "shipBonusHeavyMissileThermDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5638": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290398, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5638, "effectName": "shipBonusHeavyMissileKineticDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5639": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290399, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5639, "effectName": "shipBonusHeavyMissileExploDmgMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5644": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 290548, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5644, "effectName": "shipBonusMissileVelocityCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5647": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292040, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5647, "effectName": "covertOpsCloakCPUPercentRoleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5650": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5650, "effectName": "shipArmorResistanceAF1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 464, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 464, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 464, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5657": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5657, "effectName": "Interceptor2ShieldResist", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 804, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 804, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 804, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 804, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5673": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292181, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5673, "effectName": "interceptor2ProjectileDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 804, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5676": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5676, "effectName": "shipBonusSmallMissileExplosionRadiusCD2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5688": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292303, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5688, "effectName": "shipBonusMissileVelocityAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1888, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5695": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5695, "effectName": "eliteBonusInterdictorsArmorResist1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1012, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1012, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1012, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1012, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5715": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292349, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5715, "effectName": "setWarpSpeedMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 601, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5717": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292382, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5717, "effectName": "implantSetWarpSpeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 624, "modifyingAttributeID": 1932, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5721": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292652, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5721, "effectName": "shipBonusMETOptimalRangePirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5722": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 292712, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5722, "effectName": "shipHybridOptimalGD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5723": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5723, "effectName": "eliteBonusInterdictorsMWDSigRadius2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1013, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5724": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5724, "effectName": "shipSHTOptimalBonusGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5725": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 292751, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5725, "effectName": "shipBonusRemoteRepairAmountPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5726": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 292752, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5726, "effectName": "shipBonusLETOptimalRangePirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5733": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 293410, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5733, "effectName": "eliteBonusMaraudersHeavyMissileDamageExpRole1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5734": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 293411, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5734, "effectName": "eliteBonusMaraudersHeavyMissileDamageKinRole1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5735": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 293412, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5735, "effectName": "eliteBonusMaraudersHeavyMissileDamageEMRole1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5736": { "description_de": "Automatisch generierter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматический эффект", "description_zh": "自动生成效果", "descriptionID": 293413, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5736, "effectName": "eliteBonusMaraudersHeavyMissileDamageThermRole1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1268, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5737": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294015, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5737, "effectName": "shipScanProbeStrengthBonusPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5738": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294016, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5738, "effectName": "shipBonusRemoteRepairRangePirateFaction2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5754": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 5754, "effectName": "overloadSelfTrackingModuleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 1935, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5757": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 5757, "effectName": "overloadSelfSensorModuleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 309, "modifyingAttributeID": 1936, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 566, "modifyingAttributeID": 1936, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1027, "modifyingAttributeID": 1936, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1028, "modifyingAttributeID": 1936, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1029, "modifyingAttributeID": 1936, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1030, "modifyingAttributeID": 1936, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5758": { "description_de": "Bonus auf die Effektivität der Überlastung", "description_en-us": "Overload Effectiveness Bonus", "description_es": "Bonificación de efectividad de sobrecarga.", "description_fr": "Bonus d'efficacité de surcharge", "description_it": "Overload Effectiveness Bonus", "description_ja": "オーバーロード効果ボーナス", "description_ko": "과부하 효율 보너스", "description_ru": "Влияние предельного режима на эффективность действия", "description_zh": "过载效果加成", "descriptionID": 294333, "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 5758, "effectName": "overloadSelfPainterBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1937, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5768": { "disallowAutoRepeat": 0, "distribution": 1, "effectCategory": 2, "effectID": 5768, "effectName": "EssWarpScramble", "electronicChance": 0, "guid": "effects.BeamCollecting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5769": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294466, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5769, "effectName": "repairDroneHullBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 39, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5778": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294515, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5778, "effectName": "shipMissileRoFMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5779": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294516, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5779, "effectName": "shipBonusSPTFalloffMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5789": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 294778, "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 5789, "effectName": "miningAmountBonusBonusActivation", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 434, "modifyingAttributeID": 1938, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5793": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5793, "effectName": "ewSkillTrackingDisruptionRangeDisruptionBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5795": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5795, "effectName": "shipBonusEwWeaponDisruptionStrengthRookie", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 1824, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5802": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295041, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5802, "effectName": "shipBonusAfterburnerSpeedFactor2CB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 501, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5803": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295042, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5803, "effectName": "shipBonusSentryDroneDamageMultiplierPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5804": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295043, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5804, "effectName": "shipBonusHeavyDroneDamageMultiplierPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5805": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295044, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5805, "effectName": "shipBonusSentryDroneHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5806": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295045, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5806, "effectName": "shipBonusSentryDroneArmorHpPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5807": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295046, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5807, "effectName": "shipBonusSentryDroneShieldHpPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5808": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295047, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5808, "effectName": "shipBonusHeavyDroneShieldHpPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5809": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295048, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5809, "effectName": "shipBonusHeavyDroneArmorHpPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5810": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295049, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5810, "effectName": "shipBonusHeavyDroneHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5811": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295050, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5811, "effectName": "shipBonusKineticMissileDamageGB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5812": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295051, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5812, "effectName": "shipBonusThermalMissileDamageGB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5813": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295052, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5813, "effectName": "shipBonusAfterburnerSpeedFactorCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5814": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295053, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5814, "effectName": "shipBonusKineticMissileDamageGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5815": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295054, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5815, "effectName": "shipBonusThermalMissileDamageGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5816": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295055, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5816, "effectName": "shipBonusLightDroneDamageMultiplierPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5817": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295056, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5817, "effectName": "shipBonusLightDroneHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5818": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295057, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5818, "effectName": "shipBonusLightDroneArmorHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5819": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295058, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5819, "effectName": "shipBonusLightDroneShieldHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5820": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295060, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5820, "effectName": "shipBonusAfterburnerSpeedFactorCC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5821": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295061, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5821, "effectName": "shipBonusMediumDroneDamageMultiplierPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5822": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295062, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5822, "effectName": "shipBonusMediumDroneHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5823": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295063, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5823, "effectName": "shipBonusMediumDroneArmorHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5824": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295064, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5824, "effectName": "shipBonusMediumDroneShieldHPPirateFaction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5825": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295065, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5825, "effectName": "shipBonusKineticMissileDamageGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5826": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295066, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5826, "effectName": "shipBonusThermalMissileDamageGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5827": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 295067, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5827, "effectName": "shipBonusTDOptimalBonusAF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5829": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295077, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5829, "effectName": "shipBonusMiningDurationORE3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 926, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5832": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5832, "effectName": "shipBonusMiningIceHarvestingRangeORE2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 774, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 774, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5839": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5839, "effectName": "eliteBargeShieldResistance1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 924, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 924, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 924, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 924, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5840": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295084, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5840, "effectName": "eliteBargeBonusMiningDurationBarge2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 925, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5850": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295177, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5850, "effectName": "expeditionFrigateSkillLevelPostMulEliteBonusExpedition1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1942, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5851": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295178, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5851, "effectName": "expeditionFrigateSkillLevelSignatureRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3190, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5852": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295179, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5852, "effectName": "expeditionFrigateBonusOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3191, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5853": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295180, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5853, "effectName": "expeditionFrigateBonusSignatureRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 3190, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5854": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5854, "effectName": "shipBonusNosferatuOverride", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 1945, "modifyingAttributeID": 1945, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5862": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295401, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5862, "effectName": "shipMissileEMDamageCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5863": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295402, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5863, "effectName": "shipMissileKinDamageCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5864": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295403, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5864, "effectName": "shipMissileThermDamageCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5865": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295404, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5865, "effectName": "shipMissileExploDamageCB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5866": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295405, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5866, "effectName": "shipBonusWarpScrambleMaxRangeGB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 500, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5867": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295406, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5867, "effectName": "shipBonusMissileExplosionDelayPirateFaction2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5868": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295482, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5868, "effectName": "drawbackCargoCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5869": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295517, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5869, "effectName": "eliteIndustrialWarpSpeedBonus1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 807, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5870": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295518, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5870, "effectName": "shipBonusShieldBoostCI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 811, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5871": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295519, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5871, "effectName": "shipBonusShieldBoostMI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 814, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5872": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295520, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5872, "effectName": "shipBonusArmorRepairAI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 809, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5873": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295521, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5873, "effectName": "shipBonusArmorRepairGI2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 813, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5874": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295530, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5874, "effectName": "eliteIndustrialFleetCapacity1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 912, "modifyingAttributeID": 807, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5881": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5881, "effectName": "eliteIndustrialShieldResists2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 808, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5888": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5888, "effectName": "eliteIndustrialArmorResists2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 808, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 808, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5889": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295541, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5889, "effectName": "eliteIndustrialABHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5890": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295542, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5890, "effectName": "eliteIndustrialMWDHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5891": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295543, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5891, "effectName": "eliteIndustrialArmorHardenerHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5892": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295544, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5892, "effectName": "eliteIndustrialReactiveArmorHardenerHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5893": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295545, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5893, "effectName": "eliteIndustrialShieldHardenerHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3420 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5896": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5896, "effectName": "eliteIndustrialShieldBoosterHeatBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5899": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5899, "effectName": "eliteIndustrialArmorRepairHeatBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1949, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5900": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 295689, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5900, "effectName": "warpSpeedAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1950, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5901": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5901, "effectName": "roleBonusBulkheadCPU", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 78, "modifiedAttributeID": 50, "modifyingAttributeID": 310, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5903": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296258, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5903, "effectName": "advancedIndustryManufacturingTimeBonusPostPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 219, "modifyingAttributeID": 1961, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5906": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296261, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5906, "effectName": "advancedIndustryCopyTimeBonusPostPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 387, "modifyingAttributeID": 1961, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5907": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296262, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5907, "effectName": "advancedIndustryInventionTimeBonusPostPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1959, "modifyingAttributeID": 1961, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5908": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296263, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5908, "effectName": "advancedIndustrySkillBoostAdvancedIndustrySkillIndustryJobTimeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 1961, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5909": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5909, "effectName": "advancedIndustryManufactureTimeResearchTimeBonusPostPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 385, "modifyingAttributeID": 1961, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5910": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5910, "effectName": "advancedIndustryMaterialResearchTimeBonusPostPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 398, "modifyingAttributeID": 1961, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5911": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 5911, "effectName": "onlineJumpDriveConsumptionAmountBonusPercentage", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 868, "modifyingAttributeID": 1296, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5912": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296289, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5912, "effectName": "systemRemoteCapTransmitterAmount", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 90, "modifyingAttributeID": 1840, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5913": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296290, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5913, "effectName": "systemArmorHP", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 148, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5914": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296292, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5914, "effectName": "systemEnergyNeutMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 1966, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5915": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296293, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5915, "effectName": "systemEnergyVampireMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 1966, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5916": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296294, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5916, "effectName": "systemDamageExplosiveBombs", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5917": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296295, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5917, "effectName": "systemDamageKineticBombs", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5918": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296296, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5918, "effectName": "systemDamageThermalBombs", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5919": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296297, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5919, "effectName": "systemDamageEMBombs", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5920": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296299, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5920, "effectName": "systemAoeCloudSize", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5921": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296301, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5921, "effectName": "systemTargetPainterMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1968, "operation": 4, "skillTypeID": 19921 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5922": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296303, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5922, "effectName": "systemWebifierStrengthMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 1969, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5923": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296308, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5923, "effectName": "systemNeutBombs", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 97, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5924": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296309, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5924, "effectName": "systemGravimetricECMBomb", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5925": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296310, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5925, "effectName": "systemLadarECMBomb", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5926": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296311, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5926, "effectName": "systemMagnetrometricECMBomb", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5927": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296312, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5927, "effectName": "systemRadarECMBomb", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 1488, "operation": 4, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5928": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "displayName_de": "Warpunterbrechung", "displayName_en-us": "Warp Scramble", "displayName_es": "Distorsión de warp", "displayName_fr": "Inhibition de warp", "displayName_it": "Warp Scramble", "displayName_ja": "ワープスクランブル", "displayName_ko": "워프 스크램블", "displayName_ru": "Глушение варп-двигателя", "displayName_zh": "跃迁干扰", "displayNameID": 296315, "distribution": 1, "durationAttributeID": 505, "effectCategory": 2, "effectID": 5928, "effectName": "warpScrambleTargetMWDBlockActivationForEntity", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 3454 }, { "domain": "target", "effectID": 6441, "func": "EffectStopper" }, { "domain": "target", "effectID": 6442, "func": "EffectStopper" }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 4385 } ], "npcUsageChanceAttributeID": 504, "propulsionChance": 0, "published": 1, "rangeAttributeID": 103, "rangeChance": 0 }, "5929": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296371, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 5929, "effectName": "systemDroneTracking", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5931": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5931, "effectName": "entitySelfVelocityMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1470, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5933": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5933, "effectName": "entitySelfCruiseSpeedMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 508, "modifyingAttributeID": 1470, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5934": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 5934, "effectName": "warpScrambleBlockMWDWithNPCEffect", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 3454 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1470, "modifyingAttributeID": 1470, "operation": 7 }, { "domain": "target", "effectID": 6441, "func": "EffectStopper" }, { "domain": "target", "effectID": 6442, "func": "EffectStopper" } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "5938": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5938, "effectName": "shipBonusSmallMissileExplosionRadiusCF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 588, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5939": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296616, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5939, "effectName": "shipRocketRoFBonusAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 507, "modifiedAttributeID": 51, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5940": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296617, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5940, "effectName": "eliteBonusInterdictorsSHTRoF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1012, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5944": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 296803, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5944, "effectName": "shipMissileLauncherRoFAD1Fixed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 1887, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5945": { "disallowAutoRepeat": 0, "distribution": 2, "effectCategory": 1, "effectID": 5945, "effectName": "cloakingPrototype", "electronicChance": 0, "guid": "effects.CloakingPrototype", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 306, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "5951": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297040, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5951, "effectName": "drawbackWarpSpeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5956": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297050, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5956, "effectName": "shipMETDamageBonusAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5957": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297051, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5957, "effectName": "eliteBonusHeavyInterdictorsMETOptimal", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5958": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297052, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5958, "effectName": "shipHybridTrackingGC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5959": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297053, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5959, "effectName": "eliteBonusHeavyInterdictorsHybridOptimal1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1246, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5983": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5983, "effectName": "resistanceKillerShieldAll", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1978, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5986": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5986, "effectName": "resistanceKillerArmorAll", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1978, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5994": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5994, "effectName": "resistanceKillerHullAll", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 1979, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 1979, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 1979, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 1979, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5995": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5995, "effectName": "resistanceKillerShieldArmorAll", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1978, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1978, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5996": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297305, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5996, "effectName": "freighterO1SkillLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1983, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5997": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297306, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5997, "effectName": "freighterO2SkillLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1984, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "5998": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297385, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5998, "effectName": "freighterSMACapacityBonusO1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 908, "modifyingAttributeID": 1983, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6001": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297728, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6001, "effectName": "freighterAgilityBonus2O2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 1984, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6003": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297977, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6003, "effectName": "tacticalDestroyerAmarrSkillLevel1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1986, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6004": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297978, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6004, "effectName": "tacticalDestroyerAmarrSkillLevel2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1987, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6005": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297979, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6005, "effectName": "tacticalDestroyerAmarrSkillLevel3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1988, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6006": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297980, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6006, "effectName": "shipSETDamageAmarrTacticalDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1986, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6007": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297981, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6007, "effectName": "shipSETCapNeedAmarrTacticalDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1987, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6008": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297982, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6008, "effectName": "shipHeatDamageAmarrTacticalDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1988, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6009": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297983, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6009, "effectName": "probeLauncherCPUPercentRoleBonusT3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 1989, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6010": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6010, "effectName": "shipModeMaxTargetRangePostDiv", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 1991, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6011": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 297998, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6011, "effectName": "shipModeSETOptimalRangePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1990, "operation": 5, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6012": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6012, "effectName": "shipModeScanStrengthPostDiv", "electronicChance": 0, "guid": "effects.ScanStrengthBonusActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1995, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1996, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1992, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1994, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6014": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6014, "effectName": "modeSigRadiusPostDiv", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 2001, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6015": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6015, "effectName": "modeArmorResonancePostDiv", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1997, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1998, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2000, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1999, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6016": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6016, "effectName": "modeAgilityPostDiv", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 2002, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6017": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6017, "effectName": "modeVelocityPostDiv", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2003, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6020": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 298694, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6020, "effectName": "shipBonusEnergyNeutOptimalRS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 1537, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6021": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 298695, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6021, "effectName": "shipBonusEnergyNosOptimalRS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 1537, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6022": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 298696, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6022, "effectName": "reconShipSkillMultiplier3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1537, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6025": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 298703, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6025, "effectName": "eliteReconBonusMHTOptimalRange1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6027": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 298705, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6027, "effectName": "eliteReconBonusMPTdamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6032": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 299386, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6032, "effectName": "remoteCapacitorTransmitterPowerNeedBonusEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 30, "modifyingAttributeID": 1218, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6033": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305001, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6033, "effectName": "tacticalDestroyerMinmatarSkillLevel1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2004, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6034": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305002, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6034, "effectName": "tacticalDestroyerMinmatarSkillLevel2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2005, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6035": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305003, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6035, "effectName": "tacticalDestroyerMinmatarSkillLevel3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2006, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6036": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305004, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6036, "effectName": "shipHeatDamageMinmatarTacticalDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 2006, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6037": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305005, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6037, "effectName": "shipSPTDamageMinmatarTacticalDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2004, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6038": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305006, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6038, "effectName": "shipSPTOptimalMinmatarTacticalDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2005, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6039": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305019, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6039, "effectName": "shipModeSPTTrackingPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2008, "operation": 5, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6040": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305020, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6040, "effectName": "modeMWDSigRadiusPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 2007, "operation": 5, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6041": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6041, "effectName": "modeShieldResonancePostDiv", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1997, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1998, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2000, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1999, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6042": { "disallowAutoRepeat": 0, "durationAttributeID": 2009, "effectCategory": 2, "effectID": 6042, "effectName": "entitySuperWeapon", "electronicChance": 0, "guid": "effects.TurboLaser", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6043": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305576, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6043, "effectName": "subsystemBonusCaldariDefensiveShieldRechargeRate", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 1516, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6044": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305725, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6044, "effectName": "gallenteCruiserSkillLevelPreMulShipBonusGC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2014, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6045": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305726, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6045, "effectName": "shipBonusSentryDamageMultiplierGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6046": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305727, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6046, "effectName": "shipBonusSentryHPGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6047": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305728, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6047, "effectName": "shipBonusSentryArmorHPGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6048": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305729, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6048, "effectName": "shipBonusSentryShieldHPGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6051": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305732, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6051, "effectName": "shipBonusLightDroneDamageMultiplierGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6052": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305733, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6052, "effectName": "shipBonusMediumDroneDamageMultiplierGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6053": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305734, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6053, "effectName": "shipBonusHeavyDroneDamageMultiplierGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6054": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305759, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6054, "effectName": "shipBonusHeavyDroneHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6055": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305760, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6055, "effectName": "shipBonusHeavyDroneArmorHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6056": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305761, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6056, "effectName": "shipBonusHeavyDroneShieldHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3441 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6057": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305762, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6057, "effectName": "shipBonusMediumDroneShieldHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6058": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305763, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6058, "effectName": "shipBonusMediumDroneArmorHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6059": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305764, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6059, "effectName": "shipBonusMediumDroneHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6060": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305765, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6060, "effectName": "shipBonusLightDroneHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6061": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305766, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6061, "effectName": "shipBonusLightDroneArmorHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6062": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 305767, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6062, "effectName": "shipBonusLightDroneShieldHPGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6063": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6063, "effectName": "entosisLink", "electronicChance": 0, "guid": "effects.EntosisBeam", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0 }, "6076": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308771, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6076, "effectName": "shipModeMissileVelocityPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1990, "operation": 5, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6077": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308776, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6077, "effectName": "shipHeatDamageCaldariTacticalDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 2017, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6078": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308777, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6078, "effectName": "tacticalDestroyerCaldariSkillLevel1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2015, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6079": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308778, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6079, "effectName": "tacticalDestroyerCaldariSkillLevel2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2016, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6080": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308779, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6080, "effectName": "tacticalDestroyerCaldariSkillLevel3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2017, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6083": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6083, "effectName": "shipSmallMissileDmgPirateFaction", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6085": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308782, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6085, "effectName": "shipMissileRoFCaldariTacticalDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2015, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6088": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308783, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6088, "effectName": "shipBonusHeavyAssaultMissileAllDamageMC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6093": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 308787, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6093, "effectName": "shipBonusHeavyMissileAllDamageMC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6096": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6096, "effectName": "shipBonusLightMissileAllDamageMC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6098": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309258, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6098, "effectName": "shipMissileReloadTimeCaldariTacticalDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1795, "modifyingAttributeID": 2016, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6104": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6104, "effectName": "entosisDurationMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2021, "operation": 4, "skillTypeID": 24242 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2754, "modifyingAttributeID": 2754, "operation": 7, "skillTypeID": 24242 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6110": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309518, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6110, "effectName": "missileVelocityBonusOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6111": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309519, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6111, "effectName": "missileExplosionDelayBonusOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6112": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309520, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6112, "effectName": "missileAOECloudSizeBonusOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6113": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309521, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6113, "effectName": "missileAOEVelocityBonusOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6128": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309650, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6128, "effectName": "scriptMissileGuidanceComputerAOECloudSizeBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 2023, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6129": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309651, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6129, "effectName": "scriptMissileGuidanceComputerAOEVelocityBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 2024, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6130": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309652, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6130, "effectName": "scriptMissileGuidanceComputerMissileVelocityBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 2025, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6131": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309653, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6131, "effectName": "scriptMissileGuidanceComputerExplosionDelayBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 2026, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6135": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6135, "effectName": "missileGuidanceComputerBonus4", "electronicChance": 0, "guid": "effects.TurretWeaponRangeTrackingSpeedMultiplyActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6144": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 6144, "effectName": "overloadSelfMissileGuidanceBonus5", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 1935, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6145": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6145, "effectName": "tacticalDestroyerGallenteSkillLevel1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2027, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6146": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6146, "effectName": "tacticalDestroyerGallenteSkillLevel2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2028, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6147": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6147, "effectName": "tacticalDestroyerGallenteSkillLevel3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2029, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6148": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6148, "effectName": "shipHeatDamageGallenteTacticalDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 2029, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6149": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6149, "effectName": "shipSHTRoFGallenteTacticalDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2027, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6150": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6150, "effectName": "shipSHTTrackingGallenteTacticalDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2028, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6151": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6151, "effectName": "modeHullResonancePostDiv", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 1997, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 1998, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 2000, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 1999, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6152": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6152, "effectName": "shipModeSHTOptimalRangePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1990, "operation": 5, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6153": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6153, "effectName": "modeMWDCapPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2032, "operation": 5, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6154": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6154, "effectName": "modeMWDBoostPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 2031, "operation": 5, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6155": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309673, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6155, "effectName": "modeArmorRepDurationPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2030, "operation": 5, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6163": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309804, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6163, "effectName": "passiveSpeedLimit", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2033, "modifyingAttributeID": 2033, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6164": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309805, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 6164, "effectName": "systemMaxVelocityPercentage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6165": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 1454, "effectCategory": 1, "effectID": 6165, "effectName": "behaviorNpcRemoteArmorRepair", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6166": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6166, "effectName": "shipBonusWDFGnullPenalties", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1131, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1270, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1164, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6170": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309860, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6170, "effectName": "entosisCPUPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2041, "modifyingAttributeID": 2042, "operation": 2, "skillTypeID": 24242 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6171": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309861, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6171, "effectName": "entosisCPUAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2041, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6172": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309894, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6172, "effectName": "battlecruiserMETRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3306 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6173": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309895, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6173, "effectName": "battlecruiserMHTRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3304 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6174": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309896, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6174, "effectName": "battlecruiserMPTRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3305 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6175": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309897, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6175, "effectName": "battlecruiserMissileRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6176": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309898, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6176, "effectName": "battlecruiserDroneSpeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6177": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 309899, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6177, "effectName": "shipHybridDmg1CBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6178": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6178, "effectName": "shipBonusProjectileTrackingMBC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 749, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6184": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6184, "effectName": "shipModuleRemoteCapacitorTransmitter", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.EnergyTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6185": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6185, "effectName": "shipModuleRemoteHullRepairer", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.RemoteHullRepair", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6186": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6186, "effectName": "shipModuleRemoteShieldBooster", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ShieldTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6187": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6187, "effectName": "energyNeutralizerFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.EnergyDestabilization", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6188": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6188, "effectName": "shipModuleRemoteArmorRepairer", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.RemoteArmourRepair", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6195": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6195, "effectName": "expeditionFrigateBonusShieldResistance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 3192, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 3192, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 3192, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 3192, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6197": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6197, "effectName": "energyNosferatuFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.EnergyVampire", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6201": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6201, "effectName": "doomsdaySlash", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6208": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6208, "effectName": "microJumpPortalDrive", "electronicChance": 0, "guid": "effects.MicroJumpFieldEngage", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6209": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310107, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6209, "effectName": "commandDestroyerSkillMultiplier1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2059, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6210": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310108, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6210, "effectName": "commandDestroyerSkillMultiplier2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2060, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6211": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310109, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6211, "effectName": "commandDestroyerSkillMultiplier3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2061, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6214": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310114, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6214, "effectName": "roleBonusCDLinksPGReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2064, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6216": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6216, "effectName": "structureEnergyNeutralizerFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6222": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6222, "effectName": "structureWarpScrambleBlockMWDWithNPCEffect", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 3454 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1470, "modifyingAttributeID": 1470, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6223": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6223, "effectName": "structureTargetMaxTargetRangeAndScanResolutionBonusAssistance", "electronicChance": 0, "falloffAttributeID": 158, "guid": "", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 309, "operation": 6 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 1 }, "6225": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6225, "effectName": "structureTargetGunneryMaxRangeFalloffTrackingSpeedBonusAssistance", "electronicChance": 0, "falloffAttributeID": 158, "guid": "effects.TurretWeaponRangeTrackingSpeedMultiplyTarget", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3300 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3300 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3300 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 1 }, "6226": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6226, "effectName": "structureMissileGuidanceComputerBonus4", "electronicChance": 0, "falloffAttributeID": 158, "guid": "", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 3319 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 1 }, "6230": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310167, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6230, "effectName": "shipBonusEnergyNeutOptimalRS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 962, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6232": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310169, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6232, "effectName": "shipBonusEnergyNeutFalloffRS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6233": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310170, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6233, "effectName": "shipBonusEnergyNeutFalloffRS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 1537, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6234, "effectName": "shipBonusEnergyNosOptimalRS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 962, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6237": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6237, "effectName": "shipBonusEnergyNosFalloffRS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 963, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6238": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6238, "effectName": "shipBonusEnergyNosFalloffRS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 1537, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6241": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6241, "effectName": "shipBonusEnergyNeutFalloffAD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 1887, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6242": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6242, "effectName": "shipBonusEnergyNeutOptimalAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6245": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6245, "effectName": "shipBonusEnergyNosOptimalAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6246": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6246, "effectName": "shipBonusEnergyNosFalloffAD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 1887, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6253": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310176, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6253, "effectName": "shipBonusEnergyNeutOptimalAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6256": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310179, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6256, "effectName": "shipBonusEnergyNeutFalloffAB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 585, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6257": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310180, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6257, "effectName": "shipBonusEnergyNosOptimalAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 492, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6260": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310183, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6260, "effectName": "shipBonusEnergyNosFalloffAB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 585, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6267": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6267, "effectName": "shipBonusEnergyNeutOptimalEAF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 1249, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6272": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6272, "effectName": "shipBonusEnergyNeutFalloffEAF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 2069, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6273": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6273, "effectName": "shipBonusEnergyNosOptimalEAF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 1249, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6278": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6278, "effectName": "shipBonusEnergyNosFalloffEAF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 2069, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6279": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6279, "effectName": "electronicAttackShipsSkillMultiplier3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2069, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6281": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6281, "effectName": "shipBonusEnergyNeutOptimalAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6285": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6285, "effectName": "shipBonusEnergyNeutFalloffAF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 1623, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6287": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6287, "effectName": "shipBonusEnergyNosOptimalAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 485, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6291": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6291, "effectName": "shipBonusEnergyNosFalloffAF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 1623, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6293": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310185, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6293, "effectName": "amarrCruiserSkillLevelPreMulShipBonusAC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2070, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6294": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310186, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6294, "effectName": "shipBonusEnergyNeutOptimalAC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6299": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310191, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6299, "effectName": "shipBonusEnergyNeutFalloffAC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 2070, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6300": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310192, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6300, "effectName": "shipBonusEnergyNosOptimalAC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6301": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310193, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6301, "effectName": "shipBonusNosOptimalFalloffAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 656, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6305": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310197, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6305, "effectName": "shipBonusEnergyNosFalloffAC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 2070, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6306": { "description_de": "Benötigt einen Dienstmodul-Slot.", "description_en-us": "Requires a service slot.", "description_es": "Requiere una ranura de servicio.", "description_fr": "Nécessite un emplacement de service.", "description_it": "Requires a service slot.", "description_ja": "サービススロットが1つ必要です。", "description_ko": "서비스 슬롯이 필요합니다.", "description_ru": "Устанавливается в служебный разъём", "description_zh": "需要一个服务槽位", "descriptionID": 310198, "disallowAutoRepeat": 0, "displayName_de": "Dienstmodul-Slot", "displayName_en-us": "Service Slot", "displayName_es": "Ranura de servicio", "displayName_fr": "Emplacement de service", "displayName_it": "Service Slot", "displayName_ja": "サービススロット", "displayName_ko": "서비스 슬롯", "displayName_ru": "Служебный разъём", "displayName_zh": "服务槽位", "displayNameID": 310206, "effectCategory": 0, "effectID": 6306, "effectName": "serviceSlot", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6307": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6307, "effectName": "shipBonusThermMissileDmgMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6308": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6308, "effectName": "shipBonusEMMissileDmgMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6309": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6309, "effectName": "shipBonusKineticMissileDmgMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6310": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6310, "effectName": "shipBonusExplosiveMissileDmgMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6315": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310199, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6315, "effectName": "eliteBonusCommandDestroyerSkirmish1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6316": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310200, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6316, "effectName": "eliteBonusCommandDestroyerShield1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6317": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310201, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6317, "effectName": "eliteBonusCommandDestroyerMJFGspool2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2060, "operation": 6, "skillTypeID": 4385 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6318": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310207, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6318, "effectName": "shipBonusEMShieldResistanceMD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 740, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6319": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310208, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6319, "effectName": "shipBonusKineticShieldResistanceMD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 740, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6320": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310209, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6320, "effectName": "shipBonusThermalShieldResistanceMD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 740, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6321": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310210, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6321, "effectName": "shipBonusExplosiveShieldResistanceMD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 740, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6322": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6322, "effectName": "scriptscanGravimetricStrengthBonusBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 238, "modifyingAttributeID": 2072, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6323": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6323, "effectName": "scriptscanLadarStrengthBonusBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 239, "modifyingAttributeID": 2073, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6324": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6324, "effectName": "scriptscanMagnetometricStrengthBonusBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 240, "modifyingAttributeID": 2074, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6325": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6325, "effectName": "scriptscanRadarStrengthBonusBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 241, "modifyingAttributeID": 2075, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6326": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6326, "effectName": "shipBonusThermalMissileDamageCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6327": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6327, "effectName": "shipBonusEMMissileDamageCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6328": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6328, "effectName": "shipBonusKineticMissileDamageCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6329": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6329, "effectName": "shipBonusExplosiveMissileDamageCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6330": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6330, "effectName": "shipBonusShieldEMResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6331": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6331, "effectName": "shipBonusShieldThermalResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6332": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6332, "effectName": "shipBonusShieldKineticResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6333": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6333, "effectName": "shipBonusShieldExplosiveResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6334": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6334, "effectName": "eliteBonusCommandDestroyerInfo1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6335": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6335, "effectName": "shipBonusKineticArmorResistanceAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6336": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6336, "effectName": "shipBonusThermalArmorResistanceAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6337": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6337, "effectName": "shipBonusEMArmorResistanceAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6338": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6338, "effectName": "shipBonusExplosiveArmorResistanceAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6339": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6339, "effectName": "eliteBonusCommandDestroyerArmored1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6340": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6340, "effectName": "shipBonusKineticArmorResistanceGD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 739, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6341": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6341, "effectName": "shipBonusEMArmorResistanceGD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 739, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6342": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6342, "effectName": "shipBonusThermalArmorResistanceGD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 739, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6343": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6343, "effectName": "shipBonusExplosiveArmorResistanceGD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 739, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6348": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6348, "effectName": "setFixedResonance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2083, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2084, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2085, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2086, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2079, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2080, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2081, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2082, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 2087, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 2088, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 2090, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 2089, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6350": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6350, "effectName": "shipSmallMissileKinDmgCF3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1624, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1624, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6351": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310259, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6351, "effectName": "shipMissileKinDamageCC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1535, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6352": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310260, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6352, "effectName": "roleBonusWDRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6353": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310261, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6353, "effectName": "roleBonusWDCapCPU", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6354": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6354, "effectName": "shipBonusEwWeaponDisruptionStrengthAF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6355": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310262, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6355, "effectName": "roleBonusECMCapCPU", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 50, "modifyingAttributeID": 2091, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 2091, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6356": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310263, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6356, "effectName": "roleBonusECMRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 2091, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 2044, "modifyingAttributeID": 2091, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6357": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310264, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6357, "effectName": "shipBonusJustScramblerRangeGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3449 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6358": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310265, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6358, "effectName": "roleBonusJustScramblerStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 105, "modifyingAttributeID": 2091, "operation": 2, "skillTypeID": 3449 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6359": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310266, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6359, "effectName": "shipBonusAoeVelocityRocketsMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6360": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6360, "effectName": "shipRocketEMThermKinDmgMF2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6361": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6361, "effectName": "shipRocketExpDmgMF3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1626, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6362": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6362, "effectName": "roleBonusStasisRange", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 2091, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6368": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6368, "effectName": "shieldTransporterFalloffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 41, "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1697, "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6369": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6369, "effectName": "shipShieldTransferFalloffMC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6370": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6370, "effectName": "shipShieldTransferFalloffCC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 487, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6371": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6371, "effectName": "shipRemoteArmorFalloffGC1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 486, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6372": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6372, "effectName": "shipRemoteArmorFalloffAC2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 656, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6373": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6373, "effectName": "armorRepairProjectorFalloffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 325, "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1698, "modifiedAttributeID": 2044, "modifyingAttributeID": 349, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6374": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6374, "effectName": "droneHullRepairBonusEffect", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 1219, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6375": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6375, "effectName": "logiFrigSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2092, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6376": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6376, "effectName": "logiFrigSkillMultiplier2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2093, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6377": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6377, "effectName": "eliteBonusLogiFrigArmorRepSpeedCap1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2092, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2092, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6378": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6378, "effectName": "eliteBonusLogiFrigShieldRepSpeedCap1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2092, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2092, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6379": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6379, "effectName": "eliteBonusLogiFrigArmorHP2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2093, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6380": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6380, "effectName": "eliteBonusLogiFrigShieldHP2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2093, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6381": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6381, "effectName": "eliteBonusLogiFrigSignature2", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 2093, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6384": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 6384, "effectName": "overloadSelfMissileGuidanceModuleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 1935, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6385": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 310309, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6385, "effectName": "ignoreCloakVelocityPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 2102, "operation": 7, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6386": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6386, "effectName": "ewSkillGuidanceDisruptionBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 828, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6395": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6395, "effectName": "shipBonusEwWeaponDisruptionStrengthAC1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 596, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 478, "operation": 6, "skillTypeID": 3434 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6396": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6396, "effectName": "skillStructureMissileDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 114, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 116, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 117, "modifyingAttributeID": 292, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 118, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6400": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6400, "effectName": "skillStructureElectronicSystemsCapNeedBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1441, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1442, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1332, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6401": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6401, "effectName": "skillStructureEngineeringSystemsCapNeedBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 6, "modifyingAttributeID": 317, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6402": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6402, "effectName": "structureRigAoeVelocityBonusSingleTargetMissiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 653, "modifyingAttributeID": 2438, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 653, "modifyingAttributeID": 2438, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6403": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6403, "effectName": "structureRigVelocityBonusSingleTargetMissiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 37, "modifyingAttributeID": 2439, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 37, "modifyingAttributeID": 2439, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6404": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6404, "effectName": "structureRigNeutralizerMaxRangeFalloffEffectiveness", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 54, "modifyingAttributeID": 2440, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 2044, "modifyingAttributeID": 2441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6405": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6405, "effectName": "structureRigNeutralizerCapacitorNeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 6, "modifyingAttributeID": 2442, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6406": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6406, "effectName": "structureRigEWMaxRangeFalloff", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1332, "modifiedAttributeID": 54, "modifyingAttributeID": 2440, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1332, "modifiedAttributeID": 2044, "modifyingAttributeID": 2441, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1332, "modifiedAttributeID": 158, "modifyingAttributeID": 2441, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1719, "modifiedAttributeID": 54, "modifyingAttributeID": 2440, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1719, "modifiedAttributeID": 2044, "modifyingAttributeID": 2441, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1719, "modifiedAttributeID": 158, "modifyingAttributeID": 2441, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6407": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6407, "effectName": "structureRigEWCapacitorNeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1332, "modifiedAttributeID": 6, "modifyingAttributeID": 2442, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1719, "modifiedAttributeID": 6, "modifyingAttributeID": 2442, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6408": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6408, "effectName": "structureRigMaxTargets", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 2434, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6409": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6409, "effectName": "structureRigSensorResolution", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 2435, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6410": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6410, "effectName": "structureRigExplosionRadiusBonusAoEMissiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 654, "modifyingAttributeID": 2449, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6411": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6411, "effectName": "structureRigVelocityBonusAoeMissiles", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1548, "modifiedAttributeID": 37, "modifyingAttributeID": 2439, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6412": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6412, "effectName": "structureRigPDBmaxRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 99, "modifyingAttributeID": 2436, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6413": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6413, "effectName": "structureRigPDBCapacitorNeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 6, "modifyingAttributeID": 2437, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6414": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6414, "effectName": "structureRigFighterHP", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 32339 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 32339 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 32339 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6415": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6415, "effectName": "structureRigFighterMaxVelocity", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 32339 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6417": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6417, "effectName": "structureRigDoomsdayDamageLoss", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1333, "modifiedAttributeID": 2106, "modifyingAttributeID": 2278, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6422": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6422, "effectName": "remoteSensorDampFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.SensorDampening", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6423": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6423, "effectName": "shipModuleGuidanceDisruptor", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6424": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6424, "effectName": "shipModuleTrackingDisruptor", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.TrackingDisruption", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6425": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6425, "effectName": "remoteTargetPaintFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.TargetPaint", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6426": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6426, "effectName": "remoteWebifierFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6427": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6427, "effectName": "remoteSensorBoostFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6428": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6428, "effectName": "shipModuleRemoteTrackingComputer", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.TurretWeaponRangeTrackingSpeedMultiplyTarget", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2135 }, "6431": { "disallowAutoRepeat": 0, "durationAttributeID": 2182, "effectCategory": 2, "effectID": 6431, "effectName": "fighterAbilityMissiles", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2149, "rangeChance": 0 }, "6434": { "disallowAutoRepeat": 0, "durationAttributeID": 2208, "effectCategory": 2, "effectID": 6434, "effectName": "fighterAbilityEnergyNeutralizer", "electronicChance": 0, "falloffAttributeID": 2210, "guid": "effects.EnergyDestabilization", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2209, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6435": { "disallowAutoRepeat": 0, "durationAttributeID": 2183, "effectCategory": 2, "effectID": 6435, "effectName": "fighterAbilityStasisWebifier", "electronicChance": 0, "falloffAttributeID": 2187, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2186, "rangeChance": 0 }, "6436": { "disallowAutoRepeat": 0, "durationAttributeID": 2203, "effectCategory": 2, "effectID": 6436, "effectName": "fighterAbilityWarpDisruption", "electronicChance": 0, "guid": "effects.WarpDisrupt", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2204, "rangeChance": 0 }, "6437": { "disallowAutoRepeat": 0, "durationAttributeID": 2220, "effectCategory": 2, "effectID": 6437, "effectName": "fighterAbilityECM", "electronicChance": 0, "falloffAttributeID": 2222, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2221, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6439": { "disallowAutoRepeat": 0, "durationAttributeID": 2123, "effectCategory": 1, "effectID": 6439, "effectName": "fighterAbilityEvasiveManeuvers", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6440": { "disallowAutoRepeat": 0, "durationAttributeID": 2158, "effectCategory": 1, "effectID": 6440, "effectName": "fighterAbilityAfterburner", "electronicChance": 0, "guid": "effects.Afterburner", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6441": { "disallowAutoRepeat": 0, "durationAttributeID": 2157, "effectCategory": 1, "effectID": 6441, "effectName": "fighterAbilityMicroWarpDrive", "electronicChance": 0, "guid": "effects.MicroWarpDrive", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6442": { "disallowAutoRepeat": 0, "durationAttributeID": 2155, "effectCategory": 1, "effectID": 6442, "effectName": "fighterAbilityMicroJumpDrive", "electronicChance": 0, "guid": "effects.MicroJumpDriveEngage", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2154, "rangeChance": 0 }, "6443": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6443, "effectName": "pointDefense", "electronicChance": 0, "guid": "effects.PointDefense", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 99, "rangeChance": 0 }, "6445": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6445, "effectName": "tractorBeamShip", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0 }, "6446": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 6446, "effectName": "structureBumpingModule", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6447": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6447, "effectName": "lightningWeapon", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6448": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6448, "effectName": "structureMissileGuidanceEnhancer", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6449": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6449, "effectName": "structureBallisticControlSystem", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2750, "modifyingAttributeID": 213, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1327, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1562, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6450": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6450, "effectName": "structureMissileGuidanceComputerBonus5", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 37796 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 37796 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 596, "operation": 6, "skillTypeID": 37796 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 37796 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6451": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 6451, "effectName": "structureScanResolutionActivePercentage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6464": { "disallowAutoRepeat": 0, "durationAttributeID": 2238, "effectCategory": 2, "effectID": 6464, "effectName": "fighterAbilityTackle", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2239, "rangeChance": 0 }, "6465": { "disallowAutoRepeat": 0, "durationAttributeID": 2233, "effectCategory": 2, "effectID": 6465, "effectName": "fighterAbilityAttackM", "electronicChance": 0, "falloffAttributeID": 2237, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2236, "rangeChance": 0 }, "6470": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6470, "effectName": "remoteECMFalloff", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6472": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6472, "effectName": "doomsdayBeamDOT", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6473": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6473, "effectName": "doomsdayConeDOT", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6474": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6474, "effectName": "doomsdayHOG", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6475": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6475, "effectName": "structureRigDoomsdayTargetAmountBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1333, "modifiedAttributeID": 2104, "modifyingAttributeID": 2277, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6476": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6476, "effectName": "doomsdayAOEWeb", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6477": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6477, "effectName": "doomsdayAOENeut", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6478": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2400, "effectCategory": 1, "effectID": 6478, "effectName": "doomsdayAOEPaint", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6479": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2397, "effectCategory": 1, "effectID": 6479, "effectName": "doomsdayAOETrack", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6480": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6480, "effectName": "doomsdayAOEGuide", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6481": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2399, "effectCategory": 1, "effectID": 6481, "effectName": "doomsdayAOEDamp", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6482": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6482, "effectName": "doomsdayAOEBubble", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6484": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6484, "effectName": "emergencyHullEnergizer", "electronicChance": 0, "guid": "effects.Invulnerability", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6485": { "disallowAutoRepeat": 0, "durationAttributeID": 2349, "effectCategory": 1, "effectID": 6485, "effectName": "fighterAbilityLaunchBomb", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6487": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6487, "effectName": "modifyEnergyWarfareResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 2267, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6488": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6488, "effectName": "scriptSensorBoosterSensorStrengthBonusBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1030, "modifyingAttributeID": 2282, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1029, "modifyingAttributeID": 2282, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1028, "modifyingAttributeID": 2282, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1027, "modifyingAttributeID": 2282, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6489": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6489, "effectName": "skillMultiplierShipBonusDreadnoughtAmarr", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2283, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2284, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2285, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5214, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6492": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6492, "effectName": "skillMultiplierShipBonusDreadnoughtCaldari", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2286, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2287, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2288, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6495": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6495, "effectName": "skillMultiplierShipBonusDreadnoughtGallente", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2289, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2290, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2291, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5215, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5216, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6498": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6498, "effectName": "skillMultiplierShipBonusDreadnoughtMinmatar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2292, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2293, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2294, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5248, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6501": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6501, "effectName": "shipBonusDreadnoughtA1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6502": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6502, "effectName": "shipBonusDreadnoughtA2ArmorResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2284, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2284, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2284, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2284, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6503": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6503, "effectName": "shipBonusDreadnoughtA3CapNeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2285, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6504": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6504, "effectName": "shipBonusDreadnoughtC1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6505": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6505, "effectName": "shipBonusDreadnoughtC2ShieldResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2287, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2287, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2287, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2287, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6506": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6506, "effectName": "shipBonusDreadnoughtG1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6507": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6507, "effectName": "shipBonusDreadnoughtG2ROFBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2290, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6508": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6508, "effectName": "shipBonusDreadnoughtG3RepairTime", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2291, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6509": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6509, "effectName": "shipBonusDreadnoughtM1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2292, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6510": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6510, "effectName": "shipBonusDreadnoughtM2ROFBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2293, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6511": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6511, "effectName": "shipBonusDreadnoughtM3RepairTime", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2293, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6513": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2398, "effectCategory": 1, "effectID": 6513, "effectName": "doomsdayAOEECM", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6514": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6514, "effectName": "skillMultiplierShipBonusForceAuxiliaryAmarr", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2308, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2309, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2310, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2320, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 6114, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6517": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6517, "effectName": "skillMultiplierShipBonusForceAuxiliaryCaldari", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2311, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2312, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2313, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2321, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 6113, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6520": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6520, "effectName": "skillMultiplierShipBonusForceAuxiliaryGallente", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2314, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2315, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2316, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2322, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 6112, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6523": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6523, "effectName": "skillMultiplierShipBonusForceAuxiliaryMinmatar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2317, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2318, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2319, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2323, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 6116, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6526": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6526, "effectName": "shipBonusForceAuxiliaryA1RemoteRepairAndCapAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2308, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 90, "modifyingAttributeID": 2308, "operation": 6, "skillTypeID": 24572 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6527": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6527, "effectName": "shipBonusForceAuxiliaryA2ArmorResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2309, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2309, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2309, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2309, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6533": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6533, "effectName": "shipBonusForceAuxiliaryA4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2320, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6534": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6534, "effectName": "shipBonusForceAuxiliaryM4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2323, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6535": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6535, "effectName": "shipBonusForceAuxiliaryG4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2322, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6536": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6536, "effectName": "shipBonusForceAuxiliaryC4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2321, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6537": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6537, "effectName": "shipBonusRole1CommandBurstCPUBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6545": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6545, "effectName": "shipBonusForceAuxiliaryC1RemoteBoostAndCapAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2311, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 90, "modifyingAttributeID": 2311, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6546": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6546, "effectName": "shipBonusForceAuxiliaryC2ShieldResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2312, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2312, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2312, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2312, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6548": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6548, "effectName": "shipBonusForceAuxiliaryG1RemoteCycleTime", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2314, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2314, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6549": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6549, "effectName": "shipBonusForceAuxiliaryG2LocalRepairAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2315, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2315, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6551": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6551, "effectName": "shipBonusForceAuxiliaryM1RemoteDuration", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2317, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2317, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6552": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6552, "effectName": "shipBonusForceAuxiliaryM2LocalBoostAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2318, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2318, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6554": { "disallowAutoRepeat": 0, "durationAttributeID": 2401, "effectCategory": 2, "effectID": 6554, "effectName": "fighterAbilityKamikaze", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6555": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6555, "effectName": "moduleBonusDroneNavigationComputer", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6556": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6556, "effectName": "moduleBonusDroneDamageAmplifier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6557": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6557, "effectName": "moduleBonusOmnidirectionalTrackingLink", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2236, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2175, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2149, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2237, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2176, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2180, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2234, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2235, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2125, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2126, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6558": { "disallowAutoRepeat": 0, "effectCategory": 5, "effectID": 6558, "effectName": "moduleBonusOmnidirectionalTrackingLinkOverload", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 351, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 349, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 767, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 1935, "operation": 6 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 1935, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6559": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6559, "effectName": "moduleBonusOmnidirectionalTrackingEnhancer", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2236, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2175, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2149, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2237, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2176, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2180, "modifyingAttributeID": 767, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2234, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2235, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2125, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2126, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6560": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6560, "effectName": "skillBonusFighters", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6561": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6561, "effectName": "skillBonusLightFighters", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 40572 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6562": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6562, "effectName": "skillBonusSupportFightersShield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 337, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6563": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6563, "effectName": "skillBonusHeavyFighters", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32339 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32339 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 32339 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6565": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6565, "effectName": "citadelRigBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2278, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2435, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2436, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2437, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2438, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2439, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2440, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2441, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2442, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2449, "modifyingAttributeID": 2333, "operation": 6, "skillTypeID": 26252 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6566": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6566, "effectName": "moduleBonusFighterSupportUnit", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2233, "modifyingAttributeID": 2337, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2177, "modifyingAttributeID": 2337, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2182, "modifyingAttributeID": 2337, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2336, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2335, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 2338, "operation": 4, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6567": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6567, "effectName": "moduleBonusNetworkedSensorArray", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyActivate", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 291, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6, "skillTypeID": 3435 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6, "skillTypeID": 23069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 5700, "operation": 2, "skillTypeID": 83464 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6568": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6568, "effectName": "citadelServiceFuelBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1321, "modifiedAttributeID": 2109, "modifyingAttributeID": 2339, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1321, "modifiedAttributeID": 2110, "modifyingAttributeID": 2339, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6569": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6569, "effectName": "skillMultiplierFighterHangarSize", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2340, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6570": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6570, "effectName": "skillBonusFighterHangarManagement", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2055, "modifyingAttributeID": 2340, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6571": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6571, "effectName": "skillBonusCapitalAutocannonSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41403 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6572": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6572, "effectName": "skillBonusCapitalArtillerySpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41404 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6573": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6573, "effectName": "skillBonusCapitalBlasterSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41405 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6574": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6574, "effectName": "skillBonusCapitalRailgunSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41406 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6575": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6575, "effectName": "skillBonusCapitalPulseLaserSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41407 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6576": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6576, "effectName": "skillBonusCapitalBeamLaserSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 41408 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6577": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6577, "effectName": "skillBonusXLCruiseMissileSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 41410 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6578": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6578, "effectName": "skillBonusXLTorpedoSpecialization", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 41409 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6580": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6580, "effectName": "shipBonusRole2LogisticDroneRepAmountBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6581": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6581, "effectName": "moduleBonusTriageModule", "electronicChance": 0, "guid": "effects.TriageMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2342, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2352, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2351, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2253, "operation": 7 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1471, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1672, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 208, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 291, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1190, "operation": 6, "skillTypeID": 3435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2345, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2345, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 90, "modifyingAttributeID": 2345, "operation": 6, "skillTypeID": 24572 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 2345, "operation": 6, "skillTypeID": 27936 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2344, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2344, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2344, "operation": 6, "skillTypeID": 24572 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2344, "operation": 6, "skillTypeID": 27936 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24572 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 27936 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24568 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24571 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 24572 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2348, "operation": 6, "skillTypeID": 27936 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 565, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 2 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2347, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2347, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6582": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6582, "effectName": "moduleBonusSiegeModule", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2352, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2351, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2113, "modifyingAttributeID": 2353, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2253, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1471, "operation": 4 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2347, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2347, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2304, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2306, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 524, "modifiedAttributeID": 51, "modifyingAttributeID": 2305, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1674, "modifiedAttributeID": 51, "modifyingAttributeID": 2305, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2307, "operation": 6, "skillTypeID": 21666 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2307, "operation": 6, "skillTypeID": 20327 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2307, "operation": 6, "skillTypeID": 21667 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2342, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2307, "operation": 6, "skillTypeID": 52998 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1673, "modifiedAttributeID": 51, "modifyingAttributeID": 2821, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6583": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6583, "effectName": "skillMultiplierShipBonusCarrierAmarr", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2359, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2360, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2361, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2362, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5981, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6584": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6584, "effectName": "skillMultiplierShipBonusCarrierCaldari", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2363, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2364, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2365, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2366, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5982, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6585": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6585, "effectName": "skillMultiplierShipBonusCarrierGallente", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2367, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2368, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2369, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2370, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5983, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6586": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6586, "effectName": "skillMultiplierShipBonusCarrierMinmatar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2371, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2372, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2373, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2374, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5984, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6587": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6587, "effectName": "skillMultiplierShipBonusSupercarrierAmarr", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2375, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2376, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2377, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2378, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2379, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6588": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6588, "effectName": "skillMultiplierShipBonusSupercarrierCaldari", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2380, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2381, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2382, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2383, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2384, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6589": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6589, "effectName": "skillMultiplierShipBonusSupercarrierGallente", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2385, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2386, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2387, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2388, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2389, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6590, "effectName": "skillMultiplierShipBonusSupercarrierMinmatar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2390, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2391, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2392, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2393, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2394, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6591": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6591, "effectName": "shipBonusSupercarrierA3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2377, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6592": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6592, "effectName": "shipBonusSupercarrierC3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2382, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6593": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6593, "effectName": "shipBonusSupercarrierG3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2387, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6594": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6594, "effectName": "shipBonusSupercarrierM3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2392, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6595": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6595, "effectName": "shipBonusCarrierA4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2362, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6596": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6596, "effectName": "shipBonusCarrierC4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2366, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6597": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6597, "effectName": "shipBonusCarrierG4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2370, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6598": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6598, "effectName": "shipBonusCarrierM4WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2374, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6599": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6599, "effectName": "shipBonusCarrierA1ArmorResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2359, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2359, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2359, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2359, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6600": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6600, "effectName": "shipBonusCarrierC1ShieldResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2363, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2363, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2363, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2363, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6601": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6601, "effectName": "shipBonusCarrierG1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2367, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2367, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2367, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6602": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6602, "effectName": "shipBonusCarrierM1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2371, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2371, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2371, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6603": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6603, "effectName": "shipBonusSupercarrierA1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2375, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2375, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2375, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6604": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6604, "effectName": "shipBonusSupercarrierC1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2380, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2380, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2380, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6605": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6605, "effectName": "shipBonusSupercarrierG1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2385, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2385, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2385, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6606": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6606, "effectName": "shipBonusSupercarrierM1FighterDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2390, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2390, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2390, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6607": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6607, "effectName": "shipBonusSupercarrierA5WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2379, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6608": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6608, "effectName": "shipBonusSupercarrierC5WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2384, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6609": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6609, "effectName": "shipBonusSupercarrierG5WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2389, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6610": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6610, "effectName": "shipBonusSupercarrierM5WarfareLinksBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2394, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6611": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6611, "effectName": "shipBonusSupercarrierC2AfterburnerBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 2381, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6612": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6612, "effectName": "shipBonusSupercarrierA2FighterApplicationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2235, "modifyingAttributeID": 2376, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2126, "modifyingAttributeID": 2376, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6613": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6613, "effectName": "shipBonusSupercarrierRole1NumWarfareLinks", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6614": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6614, "effectName": "shipBonusSupercarrierRole2ArmorShieldModuleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 72, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3425 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1159, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6615": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6615, "effectName": "shipBonusSupercarrierA4BurstProjectorBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2397, "modifyingAttributeID": 2378, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6616": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6616, "effectName": "shipBonusSupercarrierC4BurstProjectorBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2398, "modifyingAttributeID": 2383, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6617": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6617, "effectName": "shipBonusSupercarrierG4BurstProjectorBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2399, "modifyingAttributeID": 2388, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6618": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6618, "effectName": "shipBonusSupercarrierM4BurstProjectorBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2400, "modifyingAttributeID": 2393, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6619": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6619, "effectName": "shipBonusCarrierRole1NumWarfareLinks", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6620": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6620, "effectName": "shipBonusDreadnoughtC3ReloadBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1795, "modifyingAttributeID": 2288, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6621": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6621, "effectName": "shipBonusSupercarrierA2ArmorResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2376, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2376, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2376, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2376, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6622": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6622, "effectName": "shipBonusSupercarrierC2ShieldResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2381, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2381, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2381, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2381, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6623": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6623, "effectName": "shipBonusSupercarrierG2FighterHitpoints", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2386, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6624": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6624, "effectName": "shipBonusSupercarrierM2FighterVelocity", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2391, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6625": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6625, "effectName": "shipBonusCarrierA2SupportFighterBonusRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2209, "modifyingAttributeID": 2360, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2223, "modifyingAttributeID": 2360, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6626": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6626, "effectName": "shipBonusCarrierC2SupportFighterBonusRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2221, "modifyingAttributeID": 2364, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2223, "modifyingAttributeID": 2364, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6627": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6627, "effectName": "shipBonusCarrierG2SupportFighterBonusRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2204, "modifyingAttributeID": 2368, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2223, "modifyingAttributeID": 2368, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6628": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6628, "effectName": "shipBonusCarrierM2SupportFighterBonusRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2186, "modifyingAttributeID": 2372, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2223, "modifyingAttributeID": 2372, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6629": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6629, "effectName": "scriptResistanceBonusBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 984, "modifyingAttributeID": 2402, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 985, "modifyingAttributeID": 2403, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 986, "modifyingAttributeID": 2404, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 987, "modifyingAttributeID": 2405, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6630": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6630, "effectName": "skillMultiplierShipBonusTitanAmarr", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2406, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2407, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2408, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2409, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6631": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6631, "effectName": "skillMultiplierShipBonusTitanCaldari", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2410, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2411, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2412, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2413, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2423, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6632": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6632, "effectName": "skillMultiplierShipBonusTitanGallente", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2414, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2415, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2416, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2417, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6633": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6633, "effectName": "skillMultiplierShipBonusTitanMinmatar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2418, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2419, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2420, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2421, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6634": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6634, "effectName": "shipBonusTitanA1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2406, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6635": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6635, "effectName": "shipBonusTitanC1KinDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2410, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2410, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6636": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6636, "effectName": "shipBonusTitanG1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6637": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6637, "effectName": "shipBonusTitanM1DamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2418, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6638": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6638, "effectName": "shipBonusTitanC2ROFBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 524, "modifiedAttributeID": 51, "modifyingAttributeID": 2411, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1674, "modifiedAttributeID": 51, "modifyingAttributeID": 2411, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6639": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6639, "effectName": "shipBonusSupercarrierA4FighterApplicationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2234, "modifyingAttributeID": 2378, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2125, "modifyingAttributeID": 2378, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6640": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6640, "effectName": "shipBonusRole1NumWarfareLinks", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 2298, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6641": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6641, "effectName": "shipBonusRole2ArmorPlates&ShieldExtendersBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 72, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3425 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1159, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6642": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6642, "effectName": "skillBonusDoomsdayRapidFiring", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 24563 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6647": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6647, "effectName": "shipBonusTitanA3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2408, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6648": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6648, "effectName": "shipBonusTitanC3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2412, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6649": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6649, "effectName": "shipBonusTitanG3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2416, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6650": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6650, "effectName": "shipBonusTitanM3WarpStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2420, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6651": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6651, "effectName": "shipModuleAncillaryRemoteArmorRepairer", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.RemoteArmourRepair", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6652": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6652, "effectName": "shipModuleAncillaryRemoteShieldBooster", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.ShieldTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6653": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6653, "effectName": "shipBonusTitanA2CapNeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2407, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6654": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6654, "effectName": "shipBonusTitanG2ROFBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6655": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6655, "effectName": "shipBonusTitanM2ROFBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2419, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6656": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6656, "effectName": "shipBonusRole3XLTorpdeoVelocityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2300, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6657": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6657, "effectName": "shipBonusTitanC5AllDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2423, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6658": { "disallowAutoRepeat": 0, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6658, "effectName": "moduleBonusBastionModule", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2342, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2352, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2351, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2113, "modifyingAttributeID": 2353, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2114, "modifyingAttributeID": 2424, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 895, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 548, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3309 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3307 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3308 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3309 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3307 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3308 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3326 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3109, "operation": 6, "skillTypeID": 3307 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3109, "operation": 6, "skillTypeID": 3309 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3109, "operation": 6, "skillTypeID": 3308 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3108, "operation": 6, "skillTypeID": 3326 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3108, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3108, "operation": 6, "skillTypeID": 20213 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3108, "operation": 6, "skillTypeID": 20212 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 267, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 269, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 268, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 270, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 974, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 975, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 976, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 977, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 271, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 273, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 272, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 274, "operation": 0 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3109, "operation": 6, "skillTypeID": 47872 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 47872 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 6187, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 6187, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 5964, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5964, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6660": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6660, "effectName": "higgsWarpBubbleImmuneRemoval", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1538, "modifyingAttributeID": 1539, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6661": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6661, "effectName": "shipBonusCarrierM3FighterVelocity", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2373, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6662": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6662, "effectName": "shipBonusCarrierG3FighterHitpoints", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2369, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6663": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6663, "effectName": "skillBonusDroneInterfacing", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6664": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6664, "effectName": "skillBonusDroneSharpshooting", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2236, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2175, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2149, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6665": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6665, "effectName": "skillBonusDroneDurability", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 337, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 335, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 337, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6666": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6666, "effectName": "skillMultiplierMaxVelocityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2603, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6667": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6667, "effectName": "skillBonusDroneNavigation", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6669": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6669, "effectName": "moduleBonusCapitalDroneDurabilityEnhancer", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 23069 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1138, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6670": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6670, "effectName": "moduleBonusCapitalDroneScopeChip", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1138, "operation": 6 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2236, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2175, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2149, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6671": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6671, "effectName": "moduleBonusCapitalDroneSpeedAugmentor", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 48, "modifyingAttributeID": 1138, "operation": 6 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6672": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6672, "effectName": "structureCombatRigSecurityModification", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2278, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2435, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2436, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2437, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2438, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2439, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2440, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2441, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2442, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2449, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2748, "modifyingAttributeID": 2358, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6673": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6673, "effectName": "structureReprocessingRigSecurityModification", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 717, "modifyingAttributeID": 2358, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6674": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6674, "effectName": "structureRigAsteroidOreYield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2444, "modifyingAttributeID": 717, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6675": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6675, "effectName": "structureRigMoonOreYield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2445, "modifyingAttributeID": 717, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6676": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6676, "effectName": "structureRigCalAmarrIceYield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2446, "modifyingAttributeID": 717, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6677": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6677, "effectName": "structureRigGalMinIceYield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2447, "modifyingAttributeID": 717, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6678": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6678, "effectName": "structureRigIceYield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2448, "modifyingAttributeID": 717, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6679": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6679, "effectName": "skillStructureDoomsdayDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1333, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6681": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6681, "effectName": "shipBonusRole3NumWarfareLinks", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 2300, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 2300, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6682": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6682, "effectName": "structureModuleEffectStasisWebifier", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6683": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6683, "effectName": "structureModuleEffectTargetPainter", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6684": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6684, "effectName": "structureModuleEffectRemoteSensorDampener", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6685": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6685, "effectName": "structureModuleEffectECM", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6686": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6686, "effectName": "structureModuleEffectWeaponDisruption", "electronicChance": 0, "falloffAttributeID": 2044, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6687": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6687, "effectName": "npcEntityRemoteArmorRepairer", "electronicChance": 0, "guid": "effects.RemoteArmorRepairDrone", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6688": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6688, "effectName": "npcEntityRemoteShieldBooster", "electronicChance": 0, "guid": "effects.ShieldTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6689": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6689, "effectName": "npcEntityRemoteHullRepairer", "electronicChance": 0, "guid": "effects.RemoteArmorRepairDrone", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6690": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6690, "effectName": "remoteWebifierEntity", "electronicChance": 0, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6691": { "disallowAutoRepeat": 0, "durationAttributeID": 942, "effectCategory": 2, "effectID": 6691, "effectName": "entityEnergyNeutralizerFalloff", "electronicChance": 0, "guid": "effects.EnergyDestabilization", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "npcActivationChanceAttributeID": 931, "propulsionChance": 0, "published": 0, "rangeAttributeID": 98, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6692": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6692, "effectName": "remoteTargetPaintEntity", "electronicChance": 0, "guid": "effects.TargetPaint", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6693": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6693, "effectName": "remoteSensorDampEntity", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6694": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 1, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6694, "effectName": "npcEntityWeaponDisruptor", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6695": { "disallowAutoRepeat": 0, "distribution": 1, "durationAttributeID": 929, "effectCategory": 2, "effectID": 6695, "effectName": "entityECMFalloff", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "npcActivationChanceAttributeID": 930, "propulsionChance": 0, "published": 0, "rangeAttributeID": 936, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6696": { "disallowAutoRepeat": 0, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6696, "effectName": "starbaseEnergyNeutralizerFalloff", "electronicChance": 0, "guid": "effects.EnergyDestabilization", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 98, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6697": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312493, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6697, "effectName": "rigDrawbackReductionArmor", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 773, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1232, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6698": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312494, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6698, "effectName": "rigDrawbackReductionAstronautics", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 782, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1308, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6699": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6699, "effectName": "rigDrawbackReductionDrones", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 778, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6700": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6700, "effectName": "rigDrawbackReductionElectronic", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1234, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 786, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1233, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6701": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6701, "effectName": "rigDrawbackReductionProjectile", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 777, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6702": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6702, "effectName": "rigDrawbackReductionEnergyWeapon", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 775, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6703": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6703, "effectName": "rigDrawbackReductionHybrid", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 776, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6704": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6704, "effectName": "rigDrawbackReductionLauncher", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 779, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6705": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6705, "effectName": "rigDrawbackReductionShield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 774, "modifiedAttributeID": 1138, "modifyingAttributeID": 1139, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6706": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6706, "effectName": "setBonusAsklepian", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2457, "modifyingAttributeID": 803, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6708": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312552, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6708, "effectName": "armorRepairAmountBonusSubcap", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2457, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6709": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6709, "effectName": "shipBonusRole1CapitalHybridDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6710": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6710, "effectName": "shipBonusDreadnoughtM1WebStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 2292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6711": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6711, "effectName": "shipBonusRole3CapitalHybridDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2300, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6712": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6712, "effectName": "shipBonusTitanM1WebStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 20, "modifyingAttributeID": 2418, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6713": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6713, "effectName": "shipBonusSupercarrierM1BurstProjectorWebBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 2390, "operation": 6, "skillTypeID": 27911 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6714": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6714, "effectName": "ECMBurstJammer", "electronicChance": 0, "guid": "effects.ECMBurst", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 142, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6715": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6715, "effectName": "ECMBurstJammerQA", "electronicChance": 0, "guid": "effects.ECMBurst", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 142, "rangeChance": 0 }, "6716": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6716, "effectName": "pacifierDebuffQA", "electronicChance": 0, "guid": "effects.ECMBurst", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 142, "rangeChance": 0 }, "6717": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312575, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6717, "effectName": "roleBonusIceOreMiningDurationCap", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2458, "operation": 6, "skillTypeID": 16281 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2458, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2458, "operation": 6, "skillTypeID": 16281 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2458, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6718": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6718, "effectName": "logisticSkillMultiplier3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2460, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6719": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2788, "effectCategory": 1, "effectID": 6719, "effectName": "moduleBonusIndustrialInvulnerability", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6720": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312622, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6720, "effectName": "shipBonusDroneRepairMC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6721": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312623, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6721, "effectName": "eliteBonusLogisticRemoteArmorRepairOptimalFalloff1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 678, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 678, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6722": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312624, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6722, "effectName": "roleBonusRemoteArmorRepairOptimalFalloff", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2462, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2044, "modifyingAttributeID": 2462, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6723": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312625, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6723, "effectName": "shipBonusCloakCpuMC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6724": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6724, "effectName": "eliteBonusLogisticRemoteArmorRepairDuration3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2460, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6725": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312627, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6725, "effectName": "shipBonusSETFalloffAF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6726": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312628, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6726, "effectName": "shipBonusCloakCpuMF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6727": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 312629, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6727, "effectName": "eliteBonusCoverOpsNOSNeutFalloff1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 2044, "modifyingAttributeID": 569, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 569, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6730": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6730, "effectName": "moduleBonusMicrowarpdrive", "electronicChance": 0, "guid": "effects.MicroWarpDrive", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6731": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6731, "effectName": "moduleBonusAfterburner", "electronicChance": 0, "guid": "effects.Afterburner", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6732": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6732, "effectName": "moduleBonusWarfareLinkArmor", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6733": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6733, "effectName": "moduleBonusWarfareLinkShield", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6734": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6734, "effectName": "moduleBonusWarfareLinkSkirmish", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6735": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6735, "effectName": "moduleBonusWarfareLinkInfo", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6736": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6736, "effectName": "moduleBonusWarfareLinkMining", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6737": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6737, "effectName": "chargeBonusWarfareCharge", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2468, "modifyingAttributeID": 2468, "operation": 7 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2596, "operation": 4 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2470, "modifyingAttributeID": 2470, "operation": 7 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2597, "operation": 4 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2472, "modifyingAttributeID": 2472, "operation": 7 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2598, "operation": 4 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2536, "modifyingAttributeID": 2536, "operation": 7 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2599, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6739": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6739, "effectName": "industrialCommandShipSkillLevelMultiplierICS3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2474, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6740": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6740, "effectName": "industrialCommandShipSkillLevelMultiplierICS4", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2475, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6741": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2494, "durationAttributeID": 2491, "effectCategory": 2, "effectID": 6741, "effectName": "npcBehaviorRemoteArmorRepairer", "electronicChance": 0, "falloffAttributeID": 2493, "guid": "effects.RemoteArmourRepair", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2492, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6742": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2498, "durationAttributeID": 2495, "effectCategory": 2, "effectID": 6742, "effectName": "npcBehaviorRemoteShieldBooster", "electronicChance": 0, "falloffAttributeID": 2497, "guid": "effects.ShieldTransfer", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2496, "rangeChance": 0, "resistanceAttributeID": 2116 }, "6743": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2502, "durationAttributeID": 2499, "effectCategory": 2, "effectID": 6743, "effectName": "npcBehaviorWebifier", "electronicChance": 0, "falloffAttributeID": 2501, "guid": "effects.ModifyTargetSpeed", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2500, "rangeChance": 0, "resistanceAttributeID": 2115 }, "6744": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2505, "durationAttributeID": 2503, "effectCategory": 2, "effectID": 6744, "effectName": "behaviorWarpDisrupt", "electronicChance": 0, "guid": "effects.WarpDisrupt", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2510, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 2504, "rangeChance": 0 }, "6745": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2508, "durationAttributeID": 2506, "effectCategory": 2, "effectID": 6745, "effectName": "behaviorWarpScramble", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2509, "operation": 2 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 2509, "operation": 2, "skillTypeID": 3454 }, { "domain": "target", "effectID": 6441, "func": "EffectStopper" }, { "domain": "target", "effectID": 6442, "func": "EffectStopper" } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 2507, "rangeChance": 0 }, "6746": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2514, "durationAttributeID": 2511, "effectCategory": 2, "effectID": 6746, "effectName": "npcBehaviorGuidanceDisruptor", "electronicChance": 0, "falloffAttributeID": 2513, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2512, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6747": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2518, "durationAttributeID": 2515, "effectCategory": 2, "effectID": 6747, "effectName": "npcBehaviorTrackingDisruptor", "electronicChance": 0, "falloffAttributeID": 2517, "guid": "effects.TrackingDisruption", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2516, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6752": { "description_de": "Effekt Drifter-Kontrolle für NPE-NPCs.", "description_en-us": "Drifter Controlled effect for NPE NPCs.", "description_es": "Efecto controlado de drifter para PNJ de EJN.", "description_fr": "Effet réservé aux PNJ de la NPE sous contrôle drifter .", "description_it": "Drifter Controlled effect for NPE NPCs.", "description_ja": "NPE NPCのためのドリフター支配下効果。", "description_ko": "NPE NPC를 위한 드리프터 컨트롤 효과입니다.", "description_ru": "Эффект управления Скитальцами для NPC учебных курсов.", "description_zh": "新手期NPC被流浪者控制的效果。", "descriptionID": 315016, "disallowAutoRepeat": 0, "durationAttributeID": 636, "effectCategory": 1, "effectID": 6752, "effectName": "entityDrifterControlled", "electronicChance": 0, "guid": "effects.DrifterControlled", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6753": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6753, "effectName": "moduleTitanEffectGenerator", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6754": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2526, "durationAttributeID": 2523, "effectCategory": 2, "effectID": 6754, "effectName": "behaviorTargetPainter", "electronicChance": 0, "falloffAttributeID": 2525, "guid": "effects.TargetPaint", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2524, "rangeChance": 0, "resistanceAttributeID": 2114 }, "6755": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2530, "durationAttributeID": 2527, "effectCategory": 2, "effectID": 6755, "effectName": "behaviorSensorDampener", "electronicChance": 0, "falloffAttributeID": 2529, "guid": "effects.SensorDampening", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2528, "rangeChance": 0, "resistanceAttributeID": 2112 }, "6756": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2522, "durationAttributeID": 2519, "effectCategory": 2, "effectID": 6756, "effectName": "npcBehaviorEnergyNeutralizer", "electronicChance": 0, "falloffAttributeID": 2521, "guid": "effects.EnergyDestabilization", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2520, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6757": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2534, "durationAttributeID": 2531, "effectCategory": 2, "effectID": 6757, "effectName": "behaviorECM", "electronicChance": 0, "falloffAttributeID": 2533, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2532, "rangeChance": 0, "resistanceAttributeID": 2253 }, "6759": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6759, "effectName": "engComplexServiceFuelBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1415, "modifiedAttributeID": 2109, "modifyingAttributeID": 2339, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1415, "modifiedAttributeID": 2110, "modifyingAttributeID": 2339, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6762": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6762, "effectName": "miningDroneSpecBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 22541 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 22541 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6763": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315400, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6763, "effectName": "iceHarvestingDroneOperationDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6764": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6764, "effectName": "iceHarvestingDroneSpecBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 43703 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 43703 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6765": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315410, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6765, "effectName": "spatialPhenomenaGenerationDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 43728 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6766": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6766, "effectName": "commandProcessorEffect", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 978, "modifyingAttributeID": 435, "operation": 2, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 763, "modifyingAttributeID": 435, "operation": 2, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6768": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6768, "effectName": "areaOfEffectSkillBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 670, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6769": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6769, "effectName": "commandBurstAoEBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 670, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6770": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6770, "effectName": "armoredCommandDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6771": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6771, "effectName": "shieldCommandDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6772": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6772, "effectName": "informationCommandDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6773": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6773, "effectName": "skirmishCommandDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6774": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6774, "effectName": "miningForemanDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6775": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6775, "effectName": "commandBurstStrengthSkillBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2572, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6776": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6776, "effectName": "armoredCommandStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6777": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6777, "effectName": "shieldCommandStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6778": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6778, "effectName": "informationCommandStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20495 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 20495 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6779": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6779, "effectName": "skirmishCommandStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3349 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 3349 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6780": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6780, "effectName": "miningForemanStrengthBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6781": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6781, "effectName": "reloadTimeSkillBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2573, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6782": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6782, "effectName": "commandBurstReloadTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1795, "modifyingAttributeID": 2573, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6783": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6783, "effectName": "commandBurstAoERoleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2574, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6785": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6785, "effectName": "industrialCommandShipSkillLevelMultiplierICS5", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2577, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6786": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6786, "effectName": "shieldCommandBurstBonusICS3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2474, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2474, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2474, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2474, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2474, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6787": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6787, "effectName": "shipBonusDroneHPDamageMiningICS4", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2475, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2475, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2475, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2475, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 2475, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6788": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6788, "effectName": "shipBonusDroneIceHarvestingICS5", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2577, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6789": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6789, "effectName": "industrialBonusDroneDamage", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2580, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6790": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6790, "effectName": "shipBonusDroneIceHarvestingRole", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2579, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6791": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6791, "effectName": "oreCapitalShipSkillMultiplier5", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2582, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6792": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6792, "effectName": "shipBonusDroneHPDamageMiningORECapital4", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 1244, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6793": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6793, "effectName": "miningForemanBurstBonusORECapital2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1240, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1240, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1240, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1240, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1240, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6794": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6794, "effectName": "shieldCommandBurstBonusORECapital3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 3350 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 1243, "operation": 6, "skillTypeID": 3350 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6795": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6795, "effectName": "shipBonusDroneIceHarvestingORECapital5", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2582, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6796": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6796, "effectName": "shipModeSHTDamagePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6797": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6797, "effectName": "shipModeSPTDamagePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6798": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6798, "effectName": "shipModeSETDamagePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6799": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6799, "effectName": "shipModeSmallMissileDamagePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3321 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3320 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3320 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3320 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2589, "operation": 5, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6800": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6800, "effectName": "modeDampTDResistsPostDiv", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2590, "operation": 5 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2113, "modifyingAttributeID": 2590, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6801": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6801, "effectName": "modeMWDandABBoostPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 2003, "operation": 5, "skillTypeID": 3454 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 2003, "operation": 5, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6805": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Ausrüstung", "description_en-us": "Structure Rig Material effect on Manufacturing of equipment", "description_es": "Efecto de material de complementos para estructuras al fabricar equipo.", "description_fr": "Optimisation – Productivité matérielle de la production d'équipement (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of equipment", "description_ja": "ストラクチャリグ 装置の製造に対して材料効果", "description_ko": "장비 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве оборудования", "description_zh": "建筑改装件对制造设备的材料影响效果", "descriptionID": 315454, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6805, "effectName": "rigEquipmentManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2538, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6806": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von Ausrüstung", "description_en-us": "Structure Rig Time effect on Manufacturing of equipment", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar equipo.", "description_fr": "Optimisation – Productivité horaire de la production d'équipement (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of equipment", "description_ja": "ストラクチャリグ 装置の製造に対して時間効果", "description_ko": "장비 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве оборудования", "description_zh": "建筑改装件对制造设备的时间影响效果", "descriptionID": 315459, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6806, "effectName": "rigEquipmentManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2539, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6807": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6807, "effectName": "invulnerabilityCoreDurationBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 44067 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2788, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 44067 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6808": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Munition", "description_en-us": "Structure Rig Material effect on Manufacturing of ammo", "description_es": "Efecto de material de complementos de estructura en la fabricación de munición.", "description_fr": "Optimisation – Productivité matérielle de la production d'équipement (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of ammo", "description_ja": "ストラクチャリグ 弾薬の製造に対して材料効果", "description_ko": "탄약 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве боеприпасов и зарядов", "description_zh": "建筑改装件对制造弹药的材料影响效果", "descriptionID": 315455, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6808, "effectName": "rigAmmoManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2540, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6809": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von Munition", "description_en-us": "Structure Rig Time effect on Manufacturing of ammo", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar munición.", "description_fr": "Optimisation – Productivité horaire de la production de munitions (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of ammo", "description_ja": "ストラクチャリグ 弾薬の製造に対して時間効果", "description_ko": "탄약 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве боеприпасов и зарядов", "description_zh": "建筑改装件对制造弹药的时间影响效果", "descriptionID": 315456, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6809, "effectName": "rigAmmoManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2541, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6810": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Drohnen", "description_en-us": "Structure Rig Material effect on Manufacturing of drones", "description_es": "Efecto de material de complementos para estructuras al fabricar drones.", "description_fr": "Optimisation – Productivité matérielle de la production de drones (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of drones", "description_ja": "ストラクチャリグ ドローンの製造に対して材料効果", "description_ko": "드론 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве дронов", "description_zh": "建筑改装件对制造无人机的材料影响效果", "descriptionID": 315457, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6810, "effectName": "rigDroneManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2542, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6811": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von Drohnen", "description_en-us": "Structure Rig Time effect on Manufacturing of drones", "description_es": "Efecto de tiempo de complementos para estructura al fabricar drones.", "description_fr": "Optimisation – Productivité horaire de la production de drones (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of drones", "description_ja": "ストラクチャリグ ドローンの製造に対して時間効果", "description_ko": "드론 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве дронов", "description_zh": "建筑改装件对制造无人机的时间影响效果", "descriptionID": 315458, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6811, "effectName": "rigDroneManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2543, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6812": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von kleinen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of small Ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves pequeñas.", "description_fr": "Optimisation – Productivité matérielle de la production de petits vaisseaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of small Ships", "description_ja": "ストラクチャリグ 小型艦船の製造に対して材料効果", "description_ko": "소형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве кораблей малого тоннажа", "description_zh": "建筑改装件对制造小型舰船的材料影响效果", "descriptionID": 315484, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6812, "effectName": "rigSmallshipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2544, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6813": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von kleinen Schiffen", "description_en-us": "Structure Rig time effect on Manufacturing of small ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves pequeñas.", "description_fr": "Optimisation – Productivité horaire de la production de petits vaisseaux (Structure)", "description_it": "Structure Rig time effect on Manufacturing of small ships", "description_ja": "ストラクチャリグ 小型艦船の製造に対して時間効果", "description_ko": "소형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве кораблей малого тоннажа", "description_zh": "建筑改装件对制造小型舰船的时间影响效果", "descriptionID": 315485, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6813, "effectName": "rigSmallshipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2545, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6814": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von mittelgroßen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of medium ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves medianas.", "description_fr": "Optimisation – Productivité matérielle de la production de vaisseaux intermédiaires (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of medium ships", "description_ja": "ストラクチャリグ 中型艦船の製造に対して材料効果", "description_ko": "중형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве кораблей крейсерского тоннажа", "description_zh": "建筑改装件对制造中型舰船的材料影响效果", "descriptionID": 315486, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6814, "effectName": "rigMediumshipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2546, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6815": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von mittelgroßen Schiffen", "description_en-us": "Structure Rig time effect on Manufacturing of medium ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves medianas.", "description_fr": "Optimisation – Productivité horaire de la production de vaisseaux intermédiaires (Structure)", "description_it": "Structure Rig time effect on Manufacturing of medium ships", "description_ja": "ストラクチャリグ 中型艦船の製造に対して時間効果", "description_ko": "중형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве кораблей крейсерского тоннажа", "description_zh": "建筑改装件对制造中型舰船的时间影响效果", "descriptionID": 315487, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6815, "effectName": "rigMediumshipsManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2547, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6816": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von großen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of large ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves grandes.", "description_fr": "Optimisation – Productivité matérielle de la production de grands vaisseaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of large ships", "description_ja": "ストラクチャリグ 大型艦船の製造に対して材料効果", "description_ko": "대형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве кораблей линейного тоннажа", "description_zh": "建筑改装件对制造大型舰船的材料影响效果", "descriptionID": 315488, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6816, "effectName": "rigLargeshipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2548, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6817": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von großen Schiffen", "description_en-us": "Structure Rig time effect on Manufacturing of large ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves grandes.", "description_fr": "Optimisation – Productivité horaire de la production de grands vaisseaux (Structure)", "description_it": "Structure Rig time effect on Manufacturing of large ships", "description_ja": "ストラクチャリグ 大型艦船の製造に対して時間効果", "description_ko": "대형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве кораблей линейного тоннажа", "description_zh": "建筑改装件对制造大型舰船的时间影响效果", "descriptionID": 315489, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6817, "effectName": "rigLargeshipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2549, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6818": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen kleinen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of advanced small ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves pequeñas con tecnología avanzada.", "description_fr": "Optimisation – Productivité matérielle de la production de petits vaisseaux avancés (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of advanced small ships", "description_ja": "ストラクチャリグ 高性能な小型艦船の製造に対して材料効果", "description_ko": "상급 소형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве улучшенных кораблей малого тоннажа", "description_zh": "建筑改装件对制造高级小型舰船的材料影响效果", "descriptionID": 315490, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6818, "effectName": "rigAdvSmshipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2550, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6819": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von fortschrittlichen kleinen Schiffen", "description_en-us": "Structure Rig Time effect on Manufacturing of advanced small ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves pequeñas con tecnología avanzada.", "description_fr": "Optimisation – Productivité horaire de la production de petits vaisseaux avancés (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of advanced small ships", "description_ja": "ストラクチャリグ 高性能な小型艦船の製造に対して時間効果", "description_ko": "상급 소형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве улучшенных кораблей малого тоннажа", "description_zh": "建筑改装件对制造高级小型舰船的时间影响效果", "descriptionID": 315491, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6819, "effectName": "rigAdvSmshipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2551, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6820": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen mittelgroßen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of advanced medium ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves medianas con tecnología avanzada.", "description_fr": "Optimisation – Productivité matérielle de la production de vaisseaux intermédiaires avancés (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of advanced medium ships", "description_ja": "ストラクチャリグ 高性能な中型艦船の製造に対して材料効果", "description_ko": "상급 중형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве улучшенных кораблей крейсерского тоннажа", "description_zh": "建筑改装件对制造高级中型舰船的材料影响效果", "descriptionID": 315492, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6820, "effectName": "rigAdvMedShipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2552, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6821": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von fortschrittlichen mittelgroßen Schiffen", "description_en-us": "Structure Rig Time effect on Manufacturing of advanced medium ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves medianas con tecnología avanzada.", "description_fr": "Optimisation – Productivité horaire de la production de vaisseaux intermédiaires avancés (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of advanced medium ships", "description_ja": "ストラクチャリグ 高性能な中型艦船の製造に対して時間効果", "description_ko": "상급 중형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве улучшенных кораблей крейсерского тоннажа", "description_zh": "建筑改装件对制造高级中型舰船的时间影响效果", "descriptionID": 315493, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6821, "effectName": "rigAdvMedShipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2553, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6822": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen großen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of advanced large ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves grandes con tecnología avanzada.", "description_fr": "Optimisation – Productivité matérielle de la production de grands vaisseaux avancés (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of advanced large ships", "description_ja": "ストラクチャリグ 高性能な大型艦船の製造に対して材料効果", "description_ko": "상급 대형 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве улучшенных кораблей линейного тоннажа", "description_zh": "建筑改装件对制造高级大型舰船的材料影响效果", "descriptionID": 315494, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6822, "effectName": "rigAdvLarShipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2555, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6823": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von fortschrittlichen großen Schiffen", "description_en-us": "Structure Rig Time effect on Manufacturing of advanced large ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves grandes con tecnología avanzada.", "description_fr": "Optimisation – Productivité horaire de la production de grands vaisseaux avancés (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of advanced large ships", "description_ja": "ストラクチャリグ 高性能な大型艦船の製造に対して時間効果", "description_ko": "상급 대형 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве улучшенных кораблей линейного тоннажа", "description_zh": "建筑改装件对制造高级大型舰船的时间影响效果", "descriptionID": 315495, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6823, "effectName": "rigAdvLarShipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2556, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6824": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen Komponenten", "description_en-us": "Structure Rig Material effect on Manufacturing of advanced components", "description_es": "Efecto de material de complementos para estructuras al fabricar componentes con tecnología avanzada.", "description_fr": "Optimisation – Productivité matérielle de la production de composants avancés (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of advanced components", "description_ja": "ストラクチャリグ 高性能なコンポーネントの製造に対して材料効果", "description_ko": "상급 부품 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве улучшенных компонентов", "description_zh": "建筑改装件对制造高级组件的材料影响效果", "descriptionID": 315496, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6824, "effectName": "rigAdvComponentManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2557, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6825": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Ausrüstung", "description_en-us": "Structure Rig Material effect on Manufacturing of equipment", "description_es": "Efecto de material de complementos para estructuras al fabricar equipo.", "description_fr": "Optimisation – Productivité matérielle de la production d'équipement (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of equipment", "description_ja": "ストラクチャリグ 装置の製造に対して材料効果", "description_ko": "장비 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве оборудования", "description_zh": "建筑改装件对制造设备的材料影响效果", "descriptionID": 315497, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6825, "effectName": "rigAdvComponentManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2558, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6826": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von gewöhnlichen Komponenten für Capital-Schiffe", "description_en-us": "Structure Rig Material effect on Manufacturing of Basic Capital Components", "description_es": "Efecto de material de complementos para estructuras al fabricar componentes capitales con tecnología básica.", "description_fr": "Optimisation – Productivité matérielle de la production de composants basiques avancés de vaisseaux capitaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of Basic Capital Components", "description_ja": "ストラクチャリグ 標準的なキャピタルコンポーネントの製造に対して材料効果", "description_ko": "기본 캐피탈 부품 제조에 영향을 미치는 구조물 리그 자원입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве базовых компонентов КБТ", "description_zh": "建筑改装件对制造基础旗舰组件的材料影响效果", "descriptionID": 315498, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6826, "effectName": "rigBasCapCompManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2559, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6827": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von gewöhnlichen Komponenten für Capital-Schiffe", "description_en-us": "Structure Rig Time effect on Manufacturing of basic capital components", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar componentes capitales con tecnología básica.", "description_fr": "Optimisation – Productivité horaire de la production de composants basiques avancés de vaisseaux capitaux (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of basic capital components", "description_ja": "ストラクチャリグ 標準的なキャピタルコンポーネントの製造に対して時間効果", "description_ko": "기본 캐피탈 부품 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве базовых компонентов КБТ", "description_zh": "建筑改装件对制造基础旗舰组件的时间影响效果", "descriptionID": 315499, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6827, "effectName": "rigBasCapCompManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2560, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6828": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Strukturen", "description_en-us": "Structure Rig Material effect on Manufacturing of structures", "description_es": "Efecto de material de complementos para estructuras al fabricar estructuras.", "description_fr": "Optimisation – Productivité matérielle de la production de structures (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of structures", "description_ja": "ストラクチャリグ ストラクチャの製造に対して材料効果", "description_ko": "구조물 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве сооружений", "description_zh": "建筑改装件对制造建筑的材料影响效果", "descriptionID": 315500, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6828, "effectName": "rigStructureManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2561, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6829": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von Strukturen", "description_en-us": "Structure Rig time effect on Manufacturing of structures", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar estructuras.", "description_fr": "Optimisation – Productivité horaire de la production de structures (Structure)", "description_it": "Structure Rig time effect on Manufacturing of structures", "description_ja": "ストラクチャリグ ストラクチャの製造に対して時間効果", "description_ko": "구조물 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве сооружений", "description_zh": "建筑改装件对制造建筑的时间影响效果", "descriptionID": 315501, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6829, "effectName": "rigStructureManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2562, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6830": { "description_de": "Struktur-Modifikation-Kosteneffekt für Erfindungen", "description_en-us": "Structure Rig Cost effect on Invention", "description_es": "Efecto de coste de complementos para estructuras al inventar.", "description_fr": "Optimisation – Coût de copie d'invention (Structure)", "description_it": "Structure Rig Cost effect on Invention", "description_ja": "ストラクチャリグ 発明に対して費用効果", "description_ko": "인벤션의 비용을 감소시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение стоимости модернизации", "description_zh": "建筑改装件对发明的成本影响效果", "descriptionID": 315502, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6830, "effectName": "rigInventionCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2563, "modifyingAttributeID": 2595, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6831": { "description_de": "Struktur-Modifikation-Zeiteffekt für Erfindungen", "description_en-us": "Structure Rig Time effect on Invention", "description_es": "Efecto de tiempo de complementos para estructuras al inventar.", "description_fr": "Optimisation – Productivité horaire d'invention (Structure)", "description_it": "Structure Rig Time effect on Invention", "description_ja": "ストラクチャリグ 発明に対して時間効果", "description_ko": "인벤션의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение затрат времени на модернизацию", "description_zh": "建筑改装件对发明的时间影响效果", "descriptionID": 315503, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6831, "effectName": "rigInventionTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2564, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6832": { "description_de": "Struktur-Modifikation-Kosteneffekt für Materialeffizienzforschungen", "description_en-us": "Structure Rig Cost effect on ME Research", "description_es": "Efecto de coste de complementos para estructuras al investigar EM.", "description_fr": "Optimisation – Coût de copie de recherche en EM (Structure)", "description_it": "Structure Rig Cost effect on ME Research", "description_ja": "ストラクチャリグ ME研究に対して費用効果", "description_ko": "자원효율성 연구의 비용을 절감시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение стоимости проектов повышения материалоэффективности", "description_zh": "建筑改装件对材料效率研究的成本影响效果", "descriptionID": 315504, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6832, "effectName": "rigMEResearchCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2565, "modifyingAttributeID": 2595, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6833": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Ausrüstung", "description_en-us": "Structure Rig Material effect on Manufacturing of equipment", "description_es": "Efecto de material de complementos para estructuras al fabricar equipo.", "description_fr": "Optimisation – Productivité matérielle de la production d'équipement (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of equipment", "description_ja": "ストラクチャリグ 装置の製造に対して材料効果", "description_ko": "장비 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве оборудования", "description_zh": "建筑改装件对制造设备的材料影响效果", "descriptionID": 315505, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6833, "effectName": "rigMEResearchTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2566, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6834": { "description_de": "Struktur-Modifikation-Kosteneffekt für Zeiteffizienzforschungen", "description_en-us": "Structure Rig Cost effect on TE Research", "description_es": "Efecto de coste de complementos para estructuras al investigar ET", "description_fr": "Optimisation – Coût de copie de recherche en PH (Structure)", "description_it": "Structure Rig Cost effect on TE Research", "description_ja": "ストラクチャリグ TE研究に対して費用効果", "description_ko": "시간효율성 연구의 비용을 절감시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение стоимости проектов повышения скорости производства", "description_zh": "建筑改装件对时间效率研究的成本影响效果", "descriptionID": 315506, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6834, "effectName": "rigTEResearchCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2567, "modifyingAttributeID": 2595, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6835": { "description_de": "Struktur-Modifikation-Zeiteffekt für Zeiteffizienzforschungen", "description_en-us": "Structure Rig Time effect on TE Research", "description_es": "Efecto de tiempo de complementos para estructuras al investigar ET.", "description_fr": "Optimisation – Productivité horaire de recherche en PH (Structure)", "description_it": "Structure Rig Time effect on TE Research", "description_ja": "ストラクチャリグ TE研究に対して時間効果", "description_ko": "시간효율성 연구의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение затрат времени на проекты повышения скорости производства", "description_zh": "建筑改装件对时间效率研究的时间影响效果", "descriptionID": 315507, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6835, "effectName": "rigTEResearchTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2568, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6836": { "description_de": "Struktur-Modifikation-Kosteneffekt für Kopierungen", "description_en-us": "Structure Rig Cost effect on Copying", "description_es": "Efecto de coste de complementos para estructuras al copiar.", "description_fr": "Optimisation – Coût de copie (Structure)", "description_it": "Structure Rig Cost effect on Copying", "description_ja": "ストラクチャリグ 複製に対して費用効果", "description_ko": "복제의 비용을 감소시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение стоимости копирования чертежей", "description_zh": "建筑改装件对拷贝的成本影响效果", "descriptionID": 315508, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6836, "effectName": "rigCopyCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2569, "modifyingAttributeID": 2595, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6837": { "description_de": "Struktur-Modifikation-Zeiteffekt für Kopierungen", "description_en-us": "Structure Rig Time effect on Copying", "description_es": "Efecto de tiempo de complementos para estructuras al copiar.", "description_fr": "Optimisation – Productivité horaire de copie (Structure)", "description_it": "Structure Rig Time effect on Copying", "description_ja": "ストラクチャリグ 複製に対して時間用効果", "description_ko": "복제의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: снижение затрат времени на копирование чертежей", "description_zh": "建筑改装件对拷贝的时间影响效果", "descriptionID": 315509, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6837, "effectName": "rigCopyTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2570, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6838": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von Capital-Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of Capital ships", "description_es": "Efecto de material de complementos para estructuras al fabricar naves capitales.", "description_fr": "Optimisation – Productivité matérielle de la production de vaisseaux capitaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of Capital ships", "description_ja": "ストラクチャリグ 母艦級艦船の製造に対して材料効果", "description_ko": "캐피탈 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве КБТ", "description_zh": "建筑改装件对制造旗舰的材料影响效果", "descriptionID": 315510, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6838, "effectName": "rigCapShipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2575, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6839": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von Capital-Schiffen", "description_en-us": "Structure Rig Time effect on Manufacturing of Capital Ships", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar naves capitales.", "description_fr": "Optimisation – Productivité horaire de la production de vaisseaux capitaux (Structure)", "description_it": "Structure Rig Time effect on Manufacturing of Capital Ships", "description_ja": "ストラクチャリグ 母艦級艦船の製造に対して時間効果", "description_ko": "캐피탈 함선 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве КБТ", "description_zh": "建筑改装件对制造旗舰的时间影响效果", "descriptionID": 315511, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6839, "effectName": "rigCapShipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2576, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6840": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von allen Schiffen", "description_en-us": "Structure Rig Material effect on Manufacturing of all ships", "description_es": "Efecto de material de complementos para estructuras al fabricar cualquier nave.", "description_fr": "Optimisation – Productivité matérielle de la production de tous les vaisseaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of all ships", "description_ja": "ストラクチャリグ すべての艦船の製造に対して材料効果", "description_ko": "모든 함선 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве всех кораблей", "description_zh": "建筑改装件对制造所有舰船的材料影响效果", "descriptionID": 315512, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6840, "effectName": "rigAllShipManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2592, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6841": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von allen Schiffen", "description_en-us": "rig time bonus on manufacture of all ships", "description_es": "Bonificación de tiempo de complementos al fabricar cualquier nave", "description_fr": "Optimisation – Bonus horaire à la production de tous les vaisseaux", "description_it": "rig time bonus on manufacture of all ships", "description_ja": "すべての艦船の製造に対してリグ時間ボーナス", "description_ko": "모든 함선 제작의 시간효율성을 향상시키는 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве всех кораблей", "description_zh": "建筑改装件对制造所有舰船的时间影响效果", "descriptionID": 315513, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6841, "effectName": "rigAllShipManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2591, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6842": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6842, "effectName": "structureEngineeringRigSecurityModification", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2595, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2594, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2593, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2653, "modifyingAttributeID": 2358, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6843": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6843, "effectName": "skillMultiplierMissileVelocityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 547, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6844": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6844, "effectName": "skillMultiplierDefenderMissileVelocity", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 547, "operation": 6, "skillTypeID": 3323 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6845": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6845, "effectName": "shipBonusCommandDestroyerRole1DefenderBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 669, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3323 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6846": { "disallowAutoRepeat": 0, "durationAttributeID": 2515, "effectCategory": 2, "effectID": 6846, "effectName": "npcEntityTrackingDisruptor", "electronicChance": 0, "guid": "effects.ElectronicAttributeModifyTarget", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "npcActivationChanceAttributeID": 933, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2516, "rangeChance": 0, "resistanceAttributeID": 2113 }, "6848": { "disallowAutoRepeat": 0, "dischargeAttributeID": 1319, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6848, "effectName": "shipModuleFocusedWarpScramblingScript", "electronicChance": 0, "guid": "effects.WarpScramble", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 3454 }, { "domain": "targetID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 4385 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1470, "modifyingAttributeID": 1470, "operation": 7 }, { "domain": "target", "effectID": 6441, "func": "EffectStopper" }, { "domain": "target", "effectID": 6442, "func": "EffectStopper" }, { "domain": "target", "effectID": 4921, "func": "EffectStopper" }, { "domain": "target", "effectID": 6208, "func": "EffectStopper" }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 103, "rangeChance": 0 }, "6849": { "disallowAutoRepeat": 0, "dischargeAttributeID": 1319, "durationAttributeID": 73, "effectCategory": 2, "effectID": 6849, "effectName": "shipModuleFocusedWarpDisruptionScript", "electronicChance": 0, "guid": "effects.WarpDisrupt", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1470, "modifyingAttributeID": 1470, "operation": 7 }, { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 103, "rangeChance": 0 }, "6851": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6851, "effectName": "shipBonusRole3CapitalEnergyDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2300, "operation": 6, "skillTypeID": 20327 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6852": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6852, "effectName": "shipBonusTitanM1WebRangeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 2418, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6853": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6853, "effectName": "shipBonusTitanA1EnergyWarfareAmountBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 2406, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 2406, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6855": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6855, "effectName": "shipBonusDreadnoughtA1EnergyWarfareAmountBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 2283, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 2283, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6856": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6856, "effectName": "shipBonusDreadnoughtM1WebRangeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 2292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6857": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6857, "effectName": "shipBonusForceAuxiliaryA1NosferatuRangeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 2308, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2044, "modifyingAttributeID": 2308, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6858": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6858, "effectName": "shipBonusForceAuxiliaryA1NosferatuDrainAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 2308, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6859": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6859, "effectName": "shipBonusRole4NosferatuCPUBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 50, "modifyingAttributeID": 2301, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6860": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6860, "effectName": "shipBonusRole5RemoteArmorRepairPowergridBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2302, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6861": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6861, "effectName": "shipBonusRole5CapitalRemoteArmorRepairPowergridBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2302, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6862": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6862, "effectName": "shipBonusForceAuxiliaryM1RemoteArmorRepairDuration", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2317, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6864": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2614, "durationAttributeID": 2615, "effectCategory": 1, "effectID": 6864, "effectName": "npcBehaviorMicroWarpDrive", "electronicChance": 0, "guid": "effects.MicroWarpDrive", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6865": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315647, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6865, "effectName": "eliteBonusCoverOpsWarpVelocity1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 569, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6866": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6866, "effectName": "shipBonusSmallMissileFlightTimeCF1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6867": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6867, "effectName": "shipBonusSPTRoFMF", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6868": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6868, "effectName": "roleBonusConcordSecGain", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 359, "modifyingAttributeID": 2620, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6869": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6869, "effectName": "concordIntermediateSecStatus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2621, "modifyingAttributeID": 2610, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6870": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6870, "effectName": "concordAssignTankBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2622, "modifyingAttributeID": 2621, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6871": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6871, "effectName": "concordSecStatusTankBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2622, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2622, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6872": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6872, "effectName": "eliteReconStasisWebBonus1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 962, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6873": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315648, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6873, "effectName": "eliteBonusReconWarpVelocity3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1537, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6874": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6874, "effectName": "shipBonusMedMissileFlightTimeCC2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 657, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6875": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6875, "effectName": "blackOpsSkillMultiplier3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2627, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6876": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6876, "effectName": "blackOpsSkillMultiplier4", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2628, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6877": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315649, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6877, "effectName": "eliteBonusBlackOpsWarpVelocity1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1257, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6878": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6878, "effectName": "eliteBonusBlackOpsScramblerRange4", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 2628, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6879": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6879, "effectName": "eliteBonusBlackOpsWebRange3", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 2627, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6880": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6880, "effectName": "shipBonusLauncherRoF2CB", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 501, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6881": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6881, "effectName": "shipBonusLargeMissileFlightTimeCB1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 491, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6882": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2629, "durationAttributeID": 2630, "effectCategory": 2, "effectID": 6882, "effectName": "npcBehaviorEnergyNosferatu", "electronicChance": 0, "falloffAttributeID": 2631, "guid": "effects.EnergyVampire", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2632, "rangeChance": 0, "resistanceAttributeID": 2045 }, "6883": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6883, "effectName": "shipBonusForceAuxiliaryM2LocalRepairAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2318, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2318, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6884": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2634, "durationAttributeID": 2633, "effectCategory": 1, "effectID": 6884, "effectName": "npcBehaviorArmorRepairer", "electronicChance": 0, "guid": "effects.ArmorRepair", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6885": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2637, "durationAttributeID": 2636, "effectCategory": 1, "effectID": 6885, "effectName": "npcBehaviorSiege", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2638, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2639, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2640, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2113, "modifyingAttributeID": 2641, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2642, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2643, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2644, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2645, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 2646, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2635, "modifyingAttributeID": 2647, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2633, "modifyingAttributeID": 2648, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2723, "modifyingAttributeID": 2647, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2725, "modifyingAttributeID": 2648, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2649, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 212, "modifyingAttributeID": 2730, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6887": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von gewöhnlichen Komponenten für Capital-Schiffe", "description_en-us": "Structure Rig Material effect on Manufacturing of Basic Capital Components", "description_es": "Efecto de material de complementos para estructuras al fabricar componentes capitales con tecnología básica.", "description_fr": "Optimisation – Productivité matérielle de la production de composants basiques avancés de vaisseaux capitaux (Structure)", "description_it": "Structure Rig Material effect on Manufacturing of Basic Capital Components", "description_ja": "基本キャピタル部品の製造に及ぼす、ストラクチャリグの資源の効果", "description_ko": "기본 캐피탈 부품 제조에 영향을 미치는 구조물 리그 자원입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве базовых компонентов КБТ", "description_zh": "建筑改装件对制造基础旗舰组件的材料影响效果", "descriptionID": 315674, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6887, "effectName": "rigThukkerBasCapCompManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2559, "modifyingAttributeID": 2653, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6888": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen Capital-Komponenten", "description_en-us": "Structure Rig Material effect on Manufacturing of advanced capital components", "description_es": "Efecto de material de complementos para estructuras al fabricar componentes capitales con tecnología avanzada.", "description_fr": "Productivité matérielle du module d'optimisation de structure sur la production de composants capitaux avancés", "description_it": "Structure Rig Material effect on Manufacturing of advanced capital components", "description_ja": "高性能キャピタル部品の製造に及ぼす、ストラクチャリグの資源の効果", "description_ko": "상급 캐피탈 부품 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве усовершенствованных компонентов КБТ", "description_zh": "建筑改装件对制造高级旗舰组件的材料影响效果", "descriptionID": 315717, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6888, "effectName": "rigAdvCapComponentManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2658, "modifyingAttributeID": 2594, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6889": { "description_de": "Struktur-Modifikation-Zeiteffekt für die Herstellung von fortschrittlichen Capital-Komponenten", "description_en-us": "Structure Rig Time effect on Manufacturing of advanced capital components", "description_es": "Efecto de tiempo de complementos para estructuras al fabricar componentes capitales con tecnología avanzada.", "description_fr": "Productivité horaire du module d'optimisation de structure sur la production de composants capitaux avancés", "description_it": "Structure Rig Time effect on Manufacturing of advanced capital components", "description_ja": "高性能キャピタル部品の製造に及ぼす、ストラクチャリグの時間的効果", "description_ko": "상급 캐피탈 부품 제조의 시간효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия времени при производстве усовершенствованных компонентов КБТ", "description_zh": "建筑改装件对制造高级旗舰组件的时间影响效果", "descriptionID": 315718, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6889, "effectName": "rigAdvCapComponentManufactureTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2659, "modifyingAttributeID": 2593, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6890": { "description_de": "Struktur-Modifikation-Materialeffekt für die Herstellung von fortschrittlichen Capital-Komponenten", "description_en-us": "Structure Rig Material effect on Manufacturing of Advanced Capital Components", "description_es": "Efecto de material de complementos para estructuras al fabricar componentes capitales con tecnología avanzada.", "description_fr": "Productivité matérielle du module d'optimisation de structure sur la production de composants capitaux avancés", "description_it": "Structure Rig Material effect on Manufacturing of Advanced Capital Components", "description_ja": "高性能キャピタル部品の製造に及ぼす、ストラクチャリグの資源の効果", "description_ko": "상급 캐피탈 부품 제조의 자원효율성을 향상시키는 구조물 리그입니다.", "description_ru": "Эффект модификатора сооружений: экономия материалов при производстве усовершенствованных компонентов КБТ", "description_zh": "建筑改装件对制造高级旗舰组件的材料影响效果", "descriptionID": 315719, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6890, "effectName": "rigThukkerAdvCapCompManufactureMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2658, "modifyingAttributeID": 2653, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6891": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6891, "effectName": "reactionTimeBonusPostPercentManufactureTimeMultiplierChar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 2662, "modifyingAttributeID": 2660, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6892": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6892, "effectName": "reactionSkillBoostManufacturingTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2660, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6893": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6893, "effectName": "massReactionSkillLevelModAddReactionSlotLimitChar", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 2664, "modifyingAttributeID": 280, "operation": 2 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6894": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315752, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6894, "effectName": "subsystemEnergyNeutFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 30, "modifyingAttributeID": 2665, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 50, "modifyingAttributeID": 2665, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 30, "modifyingAttributeID": 2665, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 50, "modifyingAttributeID": 2665, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6895": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315753, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6895, "effectName": "subsystemMETFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2668, "operation": 6, "skillTypeID": 3306 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2668, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6896": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315754, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6896, "effectName": "subsystemMHTFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2666, "operation": 6, "skillTypeID": 3304 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2666, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6897": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315755, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6897, "effectName": "subsystemMPTFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2667, "operation": 6, "skillTypeID": 3305 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2667, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6898": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315756, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6898, "effectName": "subsystemMRARFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2691, "modifyingAttributeID": 2671, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6899": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315757, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6899, "effectName": "subsystemMRSBFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2691, "modifyingAttributeID": 2670, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6900": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315758, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6900, "effectName": "subsystemMMissileFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 30, "modifyingAttributeID": 2669, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 50, "modifyingAttributeID": 2669, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 30, "modifyingAttributeID": 2669, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 50, "modifyingAttributeID": 2669, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 30, "modifyingAttributeID": 2669, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 50, "modifyingAttributeID": 2669, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6901": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2674, "distribution": 2, "durationAttributeID": 2490, "effectCategory": 2, "effectID": 6901, "effectName": "npcBehaviorMiningLaser", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2673, "rangeChance": 0 }, "6902": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6902, "effectName": "shipModuleNonRepeatingShieldHardener", "electronicChance": 0, "guid": "effects.ModifyShieldResonance", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6903": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 6903, "effectName": "shipModuleNonRepeatingArmorHardener", "electronicChance": 0, "guid": "effects.ArmorHardening", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6904": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6904, "effectName": "strategicCruiserMinmatarSkillLevel2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2679, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6905": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6905, "effectName": "strategicCruiserAmarrSkillLevel2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2677, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6906": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6906, "effectName": "strategicCruiserCaldariSkillLevel2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2676, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6907": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6907, "effectName": "strategicCruiserGallenteSkillLevel2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2678, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6908": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6908, "effectName": "shipBonusStrategicCruiserCaldariNaniteRepairTime2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1267, "modifyingAttributeID": 2676, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6909": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6909, "effectName": "shipBonusStrategicCruiserAmarrNaniteRepairTime2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1267, "modifyingAttributeID": 2677, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6910": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6910, "effectName": "shipBonusStrategicCruiserGallenteNaniteRepairTime2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1267, "modifyingAttributeID": 2678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6911": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6911, "effectName": "shipBonusStrategicCruiserMinmatarNaniteRepairTime2", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 1267, "modifyingAttributeID": 2679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6912": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6912, "effectName": "subsystemSkillLevelAmarrDefensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 2680, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6913": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6913, "effectName": "subsystemSkillLevelAmarrEngineering3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 2681, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6914": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6914, "effectName": "subsystemSkillLevelCaldariEngineering3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 2683, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6915": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6915, "effectName": "subsystemSkillLevelCaldariDefensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 2682, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6916": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6916, "effectName": "subsystemSkillLevelGallenteEngineering3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 2685, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6917": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6917, "effectName": "subsystemSkillLevelGallenteDefensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 2684, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6918": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6918, "effectName": "subsystemSkillLevelMinmatarEngineering3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 958, "modifiedAttributeID": 2687, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6919": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6919, "effectName": "subsystemSkillLevelMinmatarDefensive3", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 954, "modifiedAttributeID": 2686, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6920": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6920, "effectName": "structureHPBonusAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2688, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6921": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6921, "effectName": "subSystemBonusAmarrDefensive2ScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1507, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6923": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6923, "effectName": "subsystemBonusMinmatarOffensive1HMLHAMVelo", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 3324 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1449, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6924": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6924, "effectName": "subsystemBonusMinmatarOffensive3MissileExpVelo", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6925": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6925, "effectName": "subsystemBonusGallenteOffensive2DroneVeloTracking", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1521, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 1521, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6926": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6926, "effectName": "subsystemBonusAmarrPropulsionWarpCapacitor", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 1435, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6927": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6927, "effectName": "subsystemBonusMinmatarPropulsionWarpCapacitor", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 1450, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6928": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6928, "effectName": "subsystemBonusCaldariPropulsion2PropModHeatBenefit", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1513, "operation": 6, "skillTypeID": 3450 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1513, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6929": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6929, "effectName": "subsystemBonusGallentePropulsion2PropModHeatBenefit", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1520, "operation": 6, "skillTypeID": 3450 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 1520, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6930": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6930, "effectName": "subsystemBonusAmarrCore2EnergyResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 1509, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6931": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6931, "effectName": "subsystemBonusMinmatarCore2EnergyResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 1525, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6932": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6932, "effectName": "subsystemBonusGallenteCore2EnergyResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 1519, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6933": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6933, "effectName": "subsystemBonusCaldariCore2EnergyResistance", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 1515, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6934": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6934, "effectName": "shipMaxLockedTargetsBonusAddPassive", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 235, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6935": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315818, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6935, "effectName": "subsystemBonusAmarrCore3EnergyWarHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 1206, "modifyingAttributeID": 2681, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 1206, "modifyingAttributeID": 2681, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6936": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6936, "effectName": "subsystemBonusMinmatarCore3StasisWebHeatBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 1222, "modifyingAttributeID": 2687, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6937": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6937, "effectName": "subsystemBonusGallenteCore3WarpScramHeatBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 1222, "modifyingAttributeID": 2685, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6938": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6938, "effectName": "subsystemBonusCaldariCore3ECMHeatBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 1225, "modifyingAttributeID": 2683, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6939": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315819, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6939, "effectName": "subsystemBonusAmarrDefensive2HardenerHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1507, "operation": 6, "skillTypeID": 3394 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1507, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6940": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315820, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6940, "effectName": "subsystemBonusGallenteDefensive2HardenerHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1517, "operation": 6, "skillTypeID": 3394 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1517, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6941": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315821, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6941, "effectName": "subsystemBonusCaldariDefensive2HardenerHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1516, "operation": 6, "skillTypeID": 3420 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6942": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315822, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6942, "effectName": "subsystemBonusMinmatarDefensive2HardenerHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1526, "operation": 6, "skillTypeID": 3420 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1208, "modifyingAttributeID": 1526, "operation": 6, "skillTypeID": 3394 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1526, "operation": 6, "skillTypeID": 3394 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6943": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315823, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6943, "effectName": "subsystemBonusAmarrDefensive3ArmorRepHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 2680, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 2680, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6944": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315824, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6944, "effectName": "subsystemBonusGallenteDefensive3ArmorRepHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 2684, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 2684, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6945": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315825, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6945, "effectName": "subsystemBonusCaldariDefensive3ShieldBoostHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 2682, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 2682, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6946": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315826, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6946, "effectName": "subsystemBonusMinmatarDefensive3LocalRepHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 2686, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 2686, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 2686, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 2686, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6947": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6947, "effectName": "subSystemBonusCaldariDefensive2ScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1516, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6949": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6949, "effectName": "subSystemBonusGallenteDefensive2ScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1517, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6951": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6951, "effectName": "subSystemBonusMinmatarDefensive2ScanProbeStrength", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1526, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6953": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315827, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6953, "effectName": "mediumRemoteRepFittingAdjustment", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2691, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2691, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6954": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315829, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6954, "effectName": "subsystemBonusCommandBurstFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2692, "operation": 6, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2692, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6955": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6955, "effectName": "subsystemRemoteShieldBoostFalloffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 41, "modifiedAttributeID": 2044, "modifyingAttributeID": 2693, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1697, "modifiedAttributeID": 2044, "modifyingAttributeID": 2693, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6956": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6956, "effectName": "subsystemRemoteArmorRepairerOptimalBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 325, "modifiedAttributeID": 54, "modifyingAttributeID": 2695, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1698, "modifiedAttributeID": 54, "modifyingAttributeID": 2695, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6957": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6957, "effectName": "subsystemRemoteArmorRepairerFalloffBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 325, "modifiedAttributeID": 2044, "modifyingAttributeID": 2694, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1698, "modifiedAttributeID": 2044, "modifyingAttributeID": 2694, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6958": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6958, "effectName": "subsystemBonusAmarrOffensive3RemoteArmorRepairHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 1531, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6959": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6959, "effectName": "subsystemBonusGallenteOffensive3RemoteArmorRepairHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1532, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 1532, "operation": 6, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6960": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6960, "effectName": "subsystemBonusCaldariOffensive3RemoteShieldBoosterHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 1533, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6961": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6961, "effectName": "subsystemBonusMinmatarOffensive3RemoteRepHeat", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1206, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1230, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1231, "modifyingAttributeID": 1534, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6962": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6962, "effectName": "subsystemBonusAmarrPropulsion2WarpSpeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1512, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6963": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6963, "effectName": "subsystemBonusMinmatarPropulsion2WarpSpeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1523, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6964": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6964, "effectName": "subsystemBonusGallentePropulsionWarpSpeed", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1440, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6965": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный модификатор", "description_zh": "自动生成效果", "descriptionID": 315995, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 6965, "effectName": "surveyProbeExplosionDelayOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 2701, "operation": 6, "skillTypeID": 3551 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6969": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6969, "effectName": "rigReactionHybTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2715, "modifyingAttributeID": 2713, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6970": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6970, "effectName": "rigReactionHybMatBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2716, "modifyingAttributeID": 2714, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6971": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6971, "effectName": "rigReactionCompTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2717, "modifyingAttributeID": 2713, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6973": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6973, "effectName": "rigReactionCompMatBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2718, "modifyingAttributeID": 2714, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6974": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6974, "effectName": "rigReactionBioTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2719, "modifyingAttributeID": 2713, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6975": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6975, "effectName": "rigReactionBioMatBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2720, "modifyingAttributeID": 2714, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6976": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6976, "effectName": "structureReactionRigSecurityModification", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2714, "modifyingAttributeID": 2358, "operation": 4 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2713, "modifyingAttributeID": 2358, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6977": { "description_de": "erhöht das Volumen von Asteroiden, die durch Anbohren des Mondes entstehen", "description_en-us": "increases volume of asteroids created from moon drill", "description_es": "Aumenta el volumen de los asteroides formados con la perforación lunar.", "description_fr": "augmente les éléments issus du forage lunaire sur les astéroïdes", "description_it": "increases volume of asteroids created from moon drill", "description_ja": "衛星ドリルで生産できるアステロイドの量を増やす", "description_ko": "위성 드릴로 생성되는 소행성의 부피 증가", "description_ru": "увеличивает количество астероидов, создаваемых в процессе бурения спутника", "description_zh": "提高卫星钻探生成小行星的体积", "descriptionID": 316899, "disallowAutoRepeat": 0, "displayName_de": "Bonus auf Bohrervolumen", "displayName_en-us": "Drill Volume Bonus", "displayName_es": "Bonificación de volumen de perforación", "displayName_fr": "Bonus de volume de forage", "displayName_it": "Drill Volume Bonus", "displayName_ja": "ドリル採掘量ボーナス", "displayName_ko": "드릴 부피 보너스", "displayName_ru": "Бонус к объёму бурения", "displayName_zh": "钻探体积加成", "displayNameID": 316898, "effectCategory": 0, "effectID": 6977, "effectName": "rigMoonSpewVolBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2704, "modifyingAttributeID": 2710, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6978": { "description_de": "Bonus auf Radius des Mondbohrers", "description_en-us": "moon drill spew radius bonus", "description_es": "Bonificación al radio de difusión de la perforación lunar.", "description_fr": "Bonus du rayon de rejet de forage lunaire", "description_it": "moon drill spew radius bonus", "description_ja": "衛星ドリル噴出半径ボーナス", "description_ko": "위성 드릴 스퓨 반경 보너스", "description_ru": "бонус к радиусу разброса при бурении спутника", "description_zh": "卫星钻探喷涌半径加成", "descriptionID": 316901, "disallowAutoRepeat": 0, "displayName_de": "Bonus auf Radius der Mond-Asteroidengürtel", "displayName_en-us": "Moon Asteroid Belt Radius Bonus", "displayName_es": "Bonificación de radio del cinturón de asteroides lunar", "displayName_fr": "Bonus du rayon de ceinture d'astéroïdes lunaires", "displayName_it": "Moon Asteroid Belt Radius Bonus", "displayName_ja": "衛星アステロイドベルト半径ボーナス", "displayName_ko": "위성 소행성 벨트 반경 보너스", "displayName_ru": "Бонус к радиусу скопления астероидов", "displayName_zh": "卫星小行星带半径加成", "displayNameID": 316900, "effectCategory": 0, "effectID": 6978, "effectName": "rigMoonSpewRadBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2705, "modifyingAttributeID": 2709, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6979": { "description_de": "Verzögerung, um Mondteile abzutrennen", "description_en-us": "Delay to fracture moon chunk", "description_es": "Demora en la fracturación del fragmento lunar.", "description_fr": "Délai supplémentaire avant la fracture d'un morceau de lune", "description_it": "Delay to fracture moon chunk", "description_ja": "衛星の岩塊を破砕する間隔", "description_ko": "위성 파편 분열 지연", "description_ru": "Задержка раскола породы спутника", "description_zh": "碎裂卫星区块延时", "descriptionID": 316903, "disallowAutoRepeat": 0, "displayName_de": "Bonus auf Verzögerung der Asteroidenförderung", "displayName_en-us": "Asteroid extraction delay Bonus", "displayName_es": "Bonificación de demora en la extracción de asteroides", "displayName_fr": "Bonus du délai d'extraction d'astéroïdes", "displayName_it": "Asteroid extraction delay Bonus", "displayName_ja": "アステロイド抽出速度ボーナス", "displayName_ko": "소행성 추출 지연 보너스", "displayName_ru": "Бонус к задержке при извлечении ресурсов из астероидов", "displayName_zh": "小行星开采延时加成", "displayNameID": 316902, "effectCategory": 0, "effectID": 6979, "effectName": "rigMoonFractureDelay", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2698, "modifyingAttributeID": 2707, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6980": { "description_de": "Bonus auf Verfall von Mondasteroiden", "description_en-us": "Moon asteroid decay Bonus", "description_es": "Bonificación de deterioro de asteroides lunares.", "description_fr": "Bonus d'effritement des astéroïdes lunaires", "description_it": "Moon asteroid decay Bonus", "description_ja": "衛星アステロイド崩壊ボーナス", "description_ko": "위성 소행성 풍화 보너스", "description_ru": "Бонус к распаду астероидов", "description_zh": "卫星小行星衰减加成", "descriptionID": 316905, "disallowAutoRepeat": 0, "displayName_de": "Bonus auf Verfall von Mondasteroiden", "displayName_en-us": "Moon asteroid decay Bonus", "displayName_es": "Bonificación de deterioro de asteroides lunares.", "displayName_fr": "Bonus d'effritement des astéroïdes lunaires", "displayName_it": "Moon asteroid decay Bonus", "displayName_ja": "衛星アステロイド崩壊ボーナス", "displayName_ko": "위성 소행성 풍화 보너스", "displayName_ru": "Бонус к распаду астероидов", "displayName_zh": "卫星小行星衰减加成", "displayNameID": 316904, "effectCategory": 0, "effectID": 6980, "effectName": "rigMoonAsteroidDecayBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2706, "modifyingAttributeID": 2708, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "6981": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6981, "effectName": "shipBonusTitanG1KinThermDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6982": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6982, "effectName": "shipBonusTitanG2EMExplosiveDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 21668 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "6983": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6983, "effectName": "shipBonusTitanC1ShieldResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2410, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2410, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2410, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2410, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6984": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6984, "effectName": "shipBonusRole4FighterDamageAndHitpoints", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 2301, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 2301, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 2301, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2301, "operation": 6, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6985": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6985, "effectName": "shipBonusDreadnoughtG1KinThermDamageBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6986": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6986, "effectName": "shipBonusForceAuxiliaryG1RemoteShieldBoostAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2314, "operation": 6, "skillTypeID": 24571 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6987": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6987, "effectName": "shipBonusRole2LogisticDroneRepAmountAndHitpointBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 83, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3439 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6988": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6988, "effectName": "refineryServiceFuelBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2109, "modifyingAttributeID": 2339, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2110, "modifyingAttributeID": 2339, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6989": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6989, "effectName": "refineryRefiningYieldBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2444, "modifyingAttributeID": 2722, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2448, "modifyingAttributeID": 2722, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 2445, "modifyingAttributeID": 2722, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6990": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2724, "durationAttributeID": 2725, "effectCategory": 1, "effectID": 6990, "effectName": "npcBehaviorShieldBooster", "electronicChance": 0, "guid": "effects.ShieldBoosting", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6991": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6991, "effectName": "asteroidDecayTimeDisplayUpdate", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2728, "modifyingAttributeID": 2706, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6992": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6992, "effectName": "roleBonusMHTDamage1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6993": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317018, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6993, "effectName": "roleBonus2BoosterPenaltyReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1147, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1149, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1148, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1146, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1145, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1144, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1141, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1142, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1150, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1151, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 616, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 303, "modifiedAttributeID": 1143, "modifyingAttributeID": 2299, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6994": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317019, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6994, "effectName": "eliteReconBonusMHTDamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 962, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6995": { "description_de": "Haupteffekt atomarer Strahlenkanone", "description_en-us": "Atomic Beam Cannon main effect", "description_es": "Efecto principal del cañón de energía atómica.", "description_fr": "Effet principal du Canon à Rayons Atomique", "description_it": "Atomic Beam Cannon main effect", "description_ja": "アトミックビームキャノンの主な効果", "description_ko": "원자 빔 캐넌 주요 효과", "description_ru": "Основной эффект атомно-лучевой пушки", "description_zh": "原子集束加农炮主效果", "descriptionID": 317020, "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 6995, "effectName": "targetDisintegratorAttack", "electronicChance": 0, "guid": "effects.TriglavianBeam,effects.AttackMode", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0, "trackingSpeedAttributeID": 160 }, "6996": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317021, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6996, "effectName": "eliteReconBonusArmorRepAmount3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1537, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6997": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317022, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6997, "effectName": "eliteCovertOpsBonusArmorRepAmount4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2731, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6998": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6998, "effectName": "covertOpsSkillLevelPreMulEliteBonusCoverOpsShip4", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2731, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "6999": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 6999, "effectName": "covertOpsStealthBomberSiegeMissileLauncherCPUNeedBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 50, "modifyingAttributeID": 2732, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7000": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7000, "effectName": "shipBonusSHTFalloffGF1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7001": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317023, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7001, "effectName": "roleBonusTorpRoF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 2298, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7002": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317024, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7002, "effectName": "roleBonusBombLauncherPWGCPU3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2300, "operation": 6, "skillTypeID": 28073 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2300, "operation": 6, "skillTypeID": 28073 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7003": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 317025, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7003, "effectName": "eliteBonusCovertOpsSHTDamage3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1578, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7004": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7004, "effectName": "npcStructureEwarBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1441, "modifiedAttributeID": 54, "modifyingAttributeID": 2735, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 54, "modifyingAttributeID": 2736, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1329, "modifiedAttributeID": 2044, "modifyingAttributeID": 2736, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7008": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317605, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7008, "effectName": "structureFullPowerStateHitpointModifier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2743, "operation": 4 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2743, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7009": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317606, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7009, "effectName": "serviceModuleFullPowerHitpointPostAssign", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2743, "modifyingAttributeID": 2744, "operation": 7 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2805, "modifyingAttributeID": 2804, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7010": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2745, "effectCategory": 1, "effectID": 7010, "effectName": "doomsdayTargetedWarpableBeacon", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7012": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 7012, "effectName": "moduleBonusAssaultDamageControl", "electronicChance": 0, "guid": "effects.Invulnerability", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 974, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 975, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 976, "modifyingAttributeID": 2746, "operation": 7 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 977, "modifyingAttributeID": 2746, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7013": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7013, "effectName": "eliteBonusGunshipKineticMissileDamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7014": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7014, "effectName": "eliteBonusGunshipThermalMissileDamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7015": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7015, "effectName": "eliteBonusGunshipEMMissileDamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7016": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7016, "effectName": "eliteBonusGunshipExplosiveMissileDamage1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7017": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7017, "effectName": "eliteBonusGunshipExplosionVelocity2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7018": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7018, "effectName": "shipSETROFAF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7020": { "description_de": "Stasisnetz erhöht maximale Reichweite", "description_en-us": "Stasis Webifier increase max range", "description_es": "Aumenta el alcance máximo de la red ralentizadora.", "description_fr": "Portée maximale du générateur de stase", "description_it": "Stasis Webifier increase max range", "description_ja": "ステイシスウェビファイヤーは、最大範囲を向上させる", "description_ko": "스테이시스 웹 생성기 사거리 증가", "description_ru": "Увеличение макс. дальности стазис-индуктора", "description_zh": "停滞缠绕光束增加最大范围", "descriptionID": 317684, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7020, "effectName": "remoteWebifierMaxRangeBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 2747, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7021": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7021, "effectName": "structureRigMaxTargetRange", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 2748, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7022": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7022, "effectName": "structureShieldCapacityBonusOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 72, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7023": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7023, "effectName": "structureShieldResonanceBonusPostPercent", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7024": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7024, "effectName": "shipBonusDroneTrackingEliteGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7026": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7026, "effectName": "scriptStandupWarpScram", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1327, "operation": 6 }, { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 1350, "modifyingAttributeID": 1350, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7027": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7027, "effectName": "structureCapacitorCapacityBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 67, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7028": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7028, "effectName": "structureModifyPowerRechargeRate", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 144, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7029": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7029, "effectName": "structureArmorHPBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2751, "modifyingAttributeID": 335, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7030": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7030, "effectName": "structureAoERoFRoleBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1328, "modifiedAttributeID": 51, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 73, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 2400, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 2397, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 2398, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 2399, "modifyingAttributeID": 2749, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1331, "modifiedAttributeID": 6, "modifyingAttributeID": 2749, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7031": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7031, "effectName": "shipBonusHeavyMissileKineticDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7032": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7032, "effectName": "shipBonusHeavyMissileThermalDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7033": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7033, "effectName": "shipBonusHeavyMissileEMDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7034": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7034, "effectName": "shipBonusHeavyMissileExplosiveDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7035": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7035, "effectName": "shipBonusHeavyAssaultMissileExplosiveDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7036": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7036, "effectName": "shipBonusHeavyAssaultMissileEMDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7037": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7037, "effectName": "shipBonusHeavyAssaultMissileThermalDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7038": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7038, "effectName": "shipBonusHeavyAssaultMissileKineticDamageCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7039": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7039, "effectName": "structureHiddenMissileDamageMultiplier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 114, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 116, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 117, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1547, "modifiedAttributeID": 118, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 114, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 116, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 117, "modifyingAttributeID": 2750, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1546, "modifiedAttributeID": 118, "modifyingAttributeID": 2750, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7040": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7040, "effectName": "structureHiddenArmorHPMultiplier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2751, "operation": 4 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1968, "modifiedAttributeID": 335, "modifyingAttributeID": 2805, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7041": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7041, "effectName": "flagCruiserSkillMultiplier1", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2752, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7042": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317702, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7042, "effectName": "shipArmorHitPointsAC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 478, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7043": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317703, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7043, "effectName": "shipShieldHitpointsCC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 487, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7044": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317704, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7044, "effectName": "shipAgilityBonusGC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 486, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7045": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317705, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7045, "effectName": "shipSignatureRadiusMC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 489, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7046": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317706, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7046, "effectName": "eliteBonusFlagCruiserAllResistances1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 2752, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 2752, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7047": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317708, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7047, "effectName": "roleBonusFlagCruiserModuleFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 50, "modifyingAttributeID": 2753, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 30, "modifyingAttributeID": 2753, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1189, "modifiedAttributeID": 50, "modifyingAttributeID": 2753, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1189, "modifiedAttributeID": 30, "modifyingAttributeID": 2753, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 481, "modifiedAttributeID": 50, "modifyingAttributeID": 2757, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 481, "modifiedAttributeID": 30, "modifyingAttributeID": 2757, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 50, "modifyingAttributeID": 2757, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 30, "modifyingAttributeID": 2757, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7050": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7050, "effectName": "aoe_beacon_bioluminescence_cloud", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7051": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7051, "effectName": "aoe_beacon_caustic_cloud", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7052": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317714, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7052, "effectName": "roleBonusFlagCruiserTargetPainterModifications", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 554, "modifyingAttributeID": 2755, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 54, "modifyingAttributeID": 2756, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7053": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7053, "effectName": "aoe_beacon_pulse_01", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7055": { "description_de": "Schadensbonus % für große Waffen", "description_en-us": "Large Weapons Damage % Bonus", "description_es": "% de bonificación al daño de armas de gran calibre.", "description_fr": "% de bonus de dégâts des armes lourdes", "description_it": "Large Weapons Damage % Bonus", "description_ja": "大型兵器ダメージボーナス(%)", "description_ko": "대형 무기 피해 % 보너스", "description_ru": "Бонус к урону от больших орудий в %", "description_zh": "大型武器伤害百分比加成", "descriptionID": 317724, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7055, "effectName": "shipLargeWeaponsDamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3326 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3308 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3309 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3307 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7057": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 7057, "effectName": "aoe_beacon_point_defense", "electronicChance": 0, "guid": "effects.TriGlavianBS01a", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7058": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7058, "effectName": "aoe_beacon_filament_cloud", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7059": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7059, "effectName": "weather_caustic_toxin", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7060": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7060, "effectName": "weather_darkness", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7061": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7061, "effectName": "weather_electric_storm", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7062": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7062, "effectName": "weather_infernal", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7063": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7063, "effectName": "weather_xenon_gas", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7064": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7064, "effectName": "weather_basic", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "7065": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317763, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7065, "effectName": "precursorFrigateSkillLevelPreMulShipBonusPF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2762, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7066": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317764, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7066, "effectName": "precursorFrigateSkillLevelPreMulShipBonusPF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2763, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7067": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317765, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7067, "effectName": "precursorCruiserSkillLevelPreMulShipBonusPC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2764, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7068": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317766, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7068, "effectName": "precursorCruiserSkillLevelPreMulShipBonusPC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2765, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7069": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317767, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7069, "effectName": "precursorBattleShipSkillLevelPreMulShipBonusPBS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2766, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7070": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317768, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7070, "effectName": "precursorBattleshipSkillLevelPreMulShipBonusPBS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2767, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7071": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7071, "effectName": "smallPrecursorTurretDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7072": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7072, "effectName": "mediumPrecursorTurretDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7073": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7073, "effectName": "largePrecursorTurretDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7074": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7074, "effectName": "smallDisintegratorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47873 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7075": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7075, "effectName": "mediumDisintegratorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47874 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7076": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7076, "effectName": "largeDisintegratorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 47875 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7077": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317769, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7077, "effectName": "disintegratorWeaponDamageMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1986, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7078": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317770, "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7078, "effectName": "disintegratorWeaponSpeedMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1986, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7079": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7079, "effectName": "shipPCBSSPeedBonusPCBS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2766, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7080": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7080, "effectName": "shipPCBSDmgBonusPCBS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2767, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7085": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7085, "effectName": "shipbonusPCTDamagePC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2764, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7086": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7086, "effectName": "shipbonusPCTTrackingPC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2765, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7087": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7087, "effectName": "shipbonusPCTOptimalPF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2763, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7088": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7088, "effectName": "shipbonusPCTDamagePF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2762, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7091": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317871, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7091, "effectName": "shipBonusNosNeutCapNeedRoleBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3423 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7092": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317872, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7092, "effectName": "shipBonusRemoteRepCapNeedRoleBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7093": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317873, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7093, "effectName": "shipBonusSmartbombCapNeedRoleBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3421 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7094": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 317874, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7094, "effectName": "shipBonusRemoteRepMaxRangeRoleBonus1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 24568 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7097": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7097, "effectName": "surgicalStrikeDamageMultiplierBonusPostPercentDamageMultiplierLocationShipGroupPrecursorTurret", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1986, "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7098": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7098, "effectName": "structureConversionRigBasicBonuses", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 2772, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2772, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2772, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2772, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 2748, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 2434, "operation": 2 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 6, "modifyingAttributeID": 2437, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 99, "modifyingAttributeID": 2436, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 2435, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 6, "modifyingAttributeID": 2437, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1330, "modifiedAttributeID": 99, "modifyingAttributeID": 2436, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 2435, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1635, "modifiedAttributeID": 2434, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1635, "modifiedAttributeID": 2748, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1635, "modifiedAttributeID": 2435, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1634, "modifiedAttributeID": 2437, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1634, "modifiedAttributeID": 2436, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7099": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7099, "effectName": "structureConversionRigManufacturingMaterialBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2600, "modifyingAttributeID": 2594, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1850, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1851, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1852, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1853, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1854, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1855, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1856, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1857, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1858, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1859, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1860, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1861, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1862, "modifiedAttributeID": 2594, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7100": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7100, "effectName": "structureConversionRigT1ShipManTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2545, "modifyingAttributeID": 2773, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2547, "modifyingAttributeID": 2773, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2549, "modifyingAttributeID": 2773, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2576, "modifyingAttributeID": 2773, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1853, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1854, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1855, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1859, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7101": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7101, "effectName": "structureConversionRigT2ShipManTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2551, "modifyingAttributeID": 2774, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2553, "modifyingAttributeID": 2774, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2556, "modifyingAttributeID": 2774, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1856, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1857, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1858, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7102": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7102, "effectName": "structureConversionRigT2CompManTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2558, "modifyingAttributeID": 2775, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2659, "modifyingAttributeID": 2775, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1860, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7103": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7103, "effectName": "structureConversionRigCapCompManTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2560, "modifyingAttributeID": 2776, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1861, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7104": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7104, "effectName": "structureConversionRigEquipManTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2539, "modifyingAttributeID": 2777, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1850, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7105": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7105, "effectName": "structureConversionRigMETimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2566, "modifyingAttributeID": 2778, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1864, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7106, "effectName": "structureConversionRigTETimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2568, "modifyingAttributeID": 2779, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1865, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7107": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7107, "effectName": "structureConversionRigCopyTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2570, "modifyingAttributeID": 2780, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1866, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7108": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7108, "effectName": "structureConversionRigInventionTimeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2564, "modifyingAttributeID": 2781, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1863, "modifiedAttributeID": 2593, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7109": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7109, "effectName": "structureConversionRigInventionCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2563, "modifyingAttributeID": 2783, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1863, "modifiedAttributeID": 2595, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7110": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7110, "effectName": "structureConversionRigResearchCostBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2565, "modifyingAttributeID": 2782, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2567, "modifyingAttributeID": 2782, "operation": 6 }, { "domain": "structureID", "func": "ItemModifier", "modifiedAttributeID": 2569, "modifyingAttributeID": 2782, "operation": 6 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1864, "modifiedAttributeID": 2595, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1865, "modifiedAttributeID": 2595, "modifyingAttributeID": 2623, "operation": 7 }, { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1866, "modifiedAttributeID": 2595, "modifyingAttributeID": 2623, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7111": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7111, "effectName": "systemSmallPrecursorTurretDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7112": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7112, "effectName": "shipBonusNeutCapNeedRoleBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 6, "modifyingAttributeID": 2299, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7116": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7116, "effectName": "eliteBonusReconScanProbeStrength2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 963, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7117": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7117, "effectName": "roleBonusWarpSpeed", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 2789, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7118": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7118, "effectName": "eliteBonusCovertOps3PCTdamagePerCycle", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2733, "modifyingAttributeID": 1578, "operation": 2, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7119": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7119, "effectName": "eliteBonusReconShip3PCTdamagePerCycle", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2733, "modifyingAttributeID": 1537, "operation": 2, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7120": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7120, "effectName": "structureCynoJammerOnline", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7124": { "disallowAutoRepeat": 0, "dischargeAttributeID": 604, "durationAttributeID": 73, "effectCategory": 1, "effectID": 7124, "effectName": "moduleStasisImpedence", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2115, "modifyingAttributeID": 2115, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7142": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 7142, "effectName": "massEntanglerEffect5", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1131, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1349, "modifyingAttributeID": 1350, "operation": 2, "skillTypeID": 3454 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 1164, "operation": 6, "skillTypeID": 3450 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 567, "modifyingAttributeID": 1270, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7150": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7150, "effectName": "precursorDestroyerSkillLevelPreMulShipBonusPD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2799, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7151": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7151, "effectName": "precursorDestroyerSkillLevelPreMulShipBonusPD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2800, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7152": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7152, "effectName": "precursorBattlecruiserSkillLevelPreMulShipBonusPBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2801, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7153": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7153, "effectName": "precursorBattlecruiserSkillLevelPreMulShipBonusPBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2802, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7154": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7154, "effectName": "shipBonusPD1DisintegratorDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2799, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7155": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7155, "effectName": "shipBonusPBC1DisintegratorDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2801, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7156": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7156, "effectName": "smallDisintegratorMaxRangeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7157": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7157, "effectName": "shipBonusPD2DisintegratorMaxRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2800, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7158": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7158, "effectName": "shipArmorKineticResistancePBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2802, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7159": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7159, "effectName": "shipArmorThermalResistancePBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2802, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7160": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7160, "effectName": "shipArmorEMResistancePBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2802, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7161": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7161, "effectName": "shipArmorExplosiveResistancePBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2802, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7162": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7162, "effectName": "shipRoleDisintegratorMaxRangeCBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2043, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7165": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318029, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7165, "effectName": "miningAmountOverride", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 2803, "operation": 7, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7166": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 73, "effectCategory": 2, "effectID": 7166, "effectName": "ShipModuleRemoteArmorMutadaptiveRepairer", "electronicChance": 0, "guid": "effects.TriglavianBeam,effects.AttackMode", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 1, "published": 1, "rangeAttributeID": 54, "rangeChance": 0, "resistanceAttributeID": 2116 }, "7167": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318052, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7167, "effectName": "shipBonusRemoteCapacitorTransferRangeRole1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 67, "modifiedAttributeID": 54, "modifyingAttributeID": 2298, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7168": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318053, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7168, "effectName": "shipBonusMutadaptiveRemoteRepairRangeRole3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 54, "modifyingAttributeID": 2300, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7169": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318054, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7169, "effectName": "shipBonusMutadaptiveRepAmountPC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 84, "modifyingAttributeID": 2764, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7170": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318055, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7170, "effectName": "shipBonusMutadaptiveRepCapNeedPC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 6, "modifyingAttributeID": 2765, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7171": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318056, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7171, "effectName": "shipBonusMutadaptiveRemoteRepRangePC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 54, "modifyingAttributeID": 2764, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7172": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318057, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7172, "effectName": "shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 6, "modifyingAttributeID": 678, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7173": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318058, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7173, "effectName": "shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 2018, "modifiedAttributeID": 84, "modifyingAttributeID": 679, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7176": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7176, "effectName": "skillBonusDroneInterfacingNotFighters", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7177": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7177, "effectName": "skillBonusDroneDurabilityNotFighters", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 337, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 335, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7179": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7179, "effectName": "stripMinerDurationMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 464, "modifiedAttributeID": 73, "modifyingAttributeID": 203, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7180": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 7180, "effectName": "miningDurationMultiplierOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 54, "modifiedAttributeID": 73, "modifyingAttributeID": 203, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7183": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 318075, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7183, "effectName": "implantWarpScrambleRangeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 1327, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7184": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318076, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7184, "effectName": "shipBonusMediumDroneHProle8", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7185": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318077, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7185, "effectName": "shipBonusMediumDroneShieldHProle8", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7186": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318078, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7186, "effectName": "shipBonusMediumDroneArmorHProle8", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7187": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2815, "durationAttributeID": 2819, "effectCategory": 2, "effectID": 7187, "effectName": "npcBehaviorMicroJumpAttack", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 2816, "rangeChance": 0 }, "7188": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2814, "durationAttributeID": 2812, "effectCategory": 3, "effectID": 7188, "effectName": "npcBehaviorSmartBomb", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 99, "rangeChance": 0 }, "7193": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7193, "effectName": "systemMiningCycleTimeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 203, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7202": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318089, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7202, "effectName": "systemDroneSpeedBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 591, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7203": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318090, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7203, "effectName": "systemDroneDamageBonusPercent", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1255, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7204": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7204, "effectName": "shipArmorEMResistancePF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2763, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7205": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7205, "effectName": "shipArmorKinResistancePF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2763, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7206": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7206, "effectName": "shipArmorThermResistancePF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2763, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7207": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7207, "effectName": "shipArmorExpResistancePF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2763, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7209": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7209, "effectName": "shipPCTOptimalBonusEliteGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7210": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7210, "effectName": "shipBonusCommandDestroyerRole2DefenderBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 669, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3323 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7211": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7211, "effectName": "shipDmgMultiMaxEliteHeavyGunship1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2734, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7216": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7216, "effectName": "shipDmgMultiMaxEliteGunship1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2734, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 47870 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7223": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318104, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7223, "effectName": "systemAgilityBonusPercentItem", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 70, "modifyingAttributeID": 151, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7227": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7227, "effectName": "\tsystemHullHPBonusPercentItem", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 327, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7228": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7228, "effectName": "shipMediumPrecursorWeaponOptimalEliteHeavyGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7230": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7230, "effectName": "shipBonusDroneTrackingGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7231": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Automatically generated effect", "description_zh": "自动生成效果", "descriptionID": 318119, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7231, "effectName": "shipBonusArmorRepAmountGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7232": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7232, "effectName": "modifyDamageMultiplierBonusMax", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1986, "modifiedAttributeID": 2734, "modifyingAttributeID": 2823, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7233": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7233, "effectName": "modifyDamageMultiplierBonusPerCycle", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1986, "modifiedAttributeID": 2733, "modifyingAttributeID": 2824, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "7234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7234, "effectName": "implantSetMimesis", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 2823, "modifyingAttributeID": 2825, "operation": 0 }, { "domain": "charID", "func": "LocationGroupModifier", "groupID": 300, "modifiedAttributeID": 2824, "modifyingAttributeID": 2825, "operation": 0 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "7235": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 7235, "effectName": "aoeDamageMultiplier", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "targetID", "func": "ItemModifier", "modifiedAttributeID": 292, "modifyingAttributeID": 64, "operation": 6 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "7236": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 7236, "effectName": "systemWarpSpeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7237": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 7237, "effectName": "systemWarpSpeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 601, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7238": { "description_de": "Precursor XL Waffenschaden-Modifier nach Skillstufe", "description_en-us": "precursor XL weapon damage modifier by skill level", "description_es": "Modificador de daño de armas precursoras XL según nivel de habilidad.", "description_fr": "modificateur de dégâts d'armes XL de précursion par niveau de compétence", "description_it": "precursor XL weapon damage modifier by skill level", "description_ja": "スキルレベルに応じた、プリカーサー超大型兵器のダメージモディファイヤー", "description_ko": "스킬 레벨에 따른 프리커서 XL 무기 피해 계수", "description_ru": "Модификатор урона сверхбольшого оружия Предтечей по уровню навыка", "description_zh": "先驱者超大型武器每级技能伤害调整系数", "descriptionID": 318139, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7238, "effectName": "shipBonusDreadnoughtPC1DamageMultMax", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2830, "operation": 6, "skillTypeID": 52998 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7239": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7239, "effectName": "shipBonusDreadnoughtPC2ArmorResists", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 2829, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 2829, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 2829, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 2829, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7240": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7240, "effectName": "shipBonusDreadnoughtPC3WeaponSpeed", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 2831, "operation": 6, "skillTypeID": 52998 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7241": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7241, "effectName": "skillMultiplierShipBonusDreadnoughtPrecursor", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2830, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2829, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2831, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7242": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7242, "effectName": "capitalPrecursorTurretDmgBonusRequiredSkill", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 52998 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "7247": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7247, "effectName": "shipBonusHAMHMLAoeVelocityMC", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "7248": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 7248, "effectName": "shipPBonusROFMF", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "8011": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8011, "effectName": "shieldHpBonusPostPercentHpLocationShip", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 3015, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8013": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8013, "effectName": "setBonusNirvana", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3015, "modifyingAttributeID": 3017, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8017": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8017, "effectName": "saviorSetBonus", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3024, "modifyingAttributeID": 3023, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8018": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8018, "effectName": "subcapRemoteArmorShieldRepDurationCapBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3024, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3024, "operation": 6, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 3024, "operation": 6, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 3024, "operation": 6, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "8020": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8020, "effectName": "systemWarpSpeedAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 1950, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8021": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8021, "effectName": "hydraSetBonus", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3028, "modifyingAttributeID": 3027, "operation": 0, "skillTypeID": 3411 }, { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3029, "modifyingAttributeID": 3027, "operation": 0, "skillTypeID": 3411 }, { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3030, "modifyingAttributeID": 3027, "operation": 0, "skillTypeID": 3411 }, { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3031, "modifyingAttributeID": 3027, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8023": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8023, "effectName": "hydraDroneTrackingEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 3028, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8024": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8024, "effectName": "hydraDroneRangeEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3029, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 3029, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8025": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8025, "effectName": "hydraMissileFlightTimeEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 3030, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8026": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8026, "effectName": "hydraMissileExplosionVelocityEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 3031, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8029": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8029, "effectName": "roleBonus7CapBoosterGroupRestriction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 76, "modifiedAttributeID": 1544, "modifyingAttributeID": 793, "operation": 7 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 76, "modifiedAttributeID": 978, "modifyingAttributeID": 793, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8031": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8031, "effectName": "systemMaxTargets", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 192, "modifyingAttributeID": 3034, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8032": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 563154, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8032, "effectName": "systemWarpScrambleStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 105, "modifyingAttributeID": 3035, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8033": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 563155, "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8033, "effectName": "systemEcmRangeMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 201, "modifiedAttributeID": 54, "modifyingAttributeID": 1536, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8034": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8034, "effectName": "smallUpwellWeaponDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 55034 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8035": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8035, "effectName": "mediumUpwellWeaponDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 55035 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8036": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8036, "effectName": "largeUpwellWeaponDmgBonusRequiredSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 54826 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8037": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 8037, "effectName": "ChainLightning", "electronicChance": 0, "guid": "effects.AttackMode", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "8039": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8039, "effectName": "upwellSkillaoeVelocityaoeCloudSizeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 6, "skillTypeID": 55033 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 848, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8040": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8040, "effectName": "upwellSkillaoeVelocityaoeCloudSizeBonusSkilllevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 848, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 847, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8041": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8041, "effectName": "upwellSkillDamageMuliplierBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4060, "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8042": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8042, "effectName": "upwellSkillSpeedBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 441, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8044": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8044, "effectName": "smallVortonProjectorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 54827 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8045": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8045, "effectName": " mediumVortonProjectorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 54828 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8046": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8046, "effectName": "largeVortonProjectorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 54829 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8047": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8047, "effectName": "shipBonusUF1shieldResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 3041, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 3041, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 3041, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 3041, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8048": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8048, "effectName": "shipBonusUF2damage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3042, "operation": 6, "skillTypeID": 55034 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8049": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8049, "effectName": "upwellFrigateSkillLevelPreMulShipBonusUF1UF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3041, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3042, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8050": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8050, "effectName": "upwellCruiserSkillLevelPreMulShipBonusUC1UC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3043, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3044, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8051": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8051, "effectName": "upwellBattleshipSkillLevelPreMulShipBonusUB1UB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3045, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3046, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8052": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8052, "effectName": "shipBonusUC2ShieldResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 3044, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 3044, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 3044, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 3044, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8053": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8053, "effectName": "shipBonusUC1maxRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3043, "operation": 6, "skillTypeID": 55035 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8054": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8054, "effectName": "shipBonusUB1upwellDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3045, "operation": 6, "skillTypeID": 54826 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8056": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8056, "effectName": "shipBonusUB2upwellROF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 3046, "operation": 6, "skillTypeID": 54826 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8057": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 8057, "effectName": "vortonWeaponDamageSpeedMultiply", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4060, "modifiedAttributeID": 64, "modifyingAttributeID": 64, "operation": 4 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4060, "modifiedAttributeID": 51, "modifyingAttributeID": 204, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8062": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8062, "effectName": "ammoAOEvelocityMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 847, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8063": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8063, "effectName": "systemShowInfoBubbleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3093, "modifyingAttributeID": 3093, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8064": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8064, "effectName": "vortonProjectorOptimalRangeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8065": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8065, "effectName": "vortonProjectorSkillRangeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8066": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8066, "effectName": "vortonProjectorDamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8068": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8068, "effectName": "shipShieldResistanceBonusMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 748, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 748, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 748, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 748, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8070": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8070, "effectName": "eliteBonusCommandShipsHeavyHAMvelocityCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8071": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8071, "effectName": " eliteBonusCommandShipDroneRangeCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1000, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8072": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8072, "effectName": "shipArmorResistanceBonusGBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 746, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 746, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 746, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 746, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8073": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8073, "effectName": "eliteBonusCommandShipShieldHPCS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1000, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8074": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8074, "effectName": "shipBonusPC2maxRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2765, "operation": 6, "skillTypeID": 47871 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8075": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8075, "effectName": "systemHullEmResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 984, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8076": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8076, "effectName": "systemHullThermalResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 987, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8077": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8077, "effectName": "systemHullKineticResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 986, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8078": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8078, "effectName": "systemHullExplosiveResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 985, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8079": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8079, "effectName": "systemVirusCoherenceBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 13278 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 21718 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8080": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8080, "effectName": "systemProbeStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 3095, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8081": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8081, "effectName": "systemDisallowCloaking", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2454, "modifyingAttributeID": 2454, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8082": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8082, "effectName": "systemScanResolutionBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8083": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8083, "effectName": "systemArmorRepairerDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3098, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3098, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8084": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8084, "effectName": "systemShieldBoosterDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3099, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3099, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8085": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8085, "effectName": "systemFighterExplosionRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2234, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2125, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8088": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "distribution": 2, "durationAttributeID": 51, "effectCategory": 2, "effectID": 8088, "effectName": "EntityChainLightning", "electronicChance": 0, "guid": "effects.AttackMode", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "8091": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8091, "effectName": "shipBonusForceAuxiliaryG5CapBoosterStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 87, "modifiedAttributeID": 67, "modifyingAttributeID": 6112, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8092": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8092, "effectName": "shipBonusForceAuxiliaryM2CapBoosterStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 87, "modifiedAttributeID": 67, "modifyingAttributeID": 2318, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8093": { "disallowAutoRepeat": 0, "effectCategory": 1, "effectID": 8093, "effectName": "cloneRespawnBay", "electronicChance": 0, "guid": "effects.VisualModuleEffect", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8094": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8094, "effectName": "shipBonusHybridROFGD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8095": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8095, "effectName": "eliteBonusInterdictors1massAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 1012, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8096": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8096, "effectName": "shipBonusKinMissileDamageCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 735, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8097": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8097, "effectName": "eliteBonusInterdictors1ShieldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 1012, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8098": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8098, "effectName": "shipBonusArmorHPAD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 1888, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8099": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8099, "effectName": "systemHeatDamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationModifier", "modifiedAttributeID": 1211, "modifyingAttributeID": 1229, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8100": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8100, "effectName": "shipBonusECMJamDroneDurationCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2822, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8101": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8101, "effectName": "roleBonusDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2091, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8102": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8102, "effectName": "shipBonusRole1DroneHitpointsDroneControlRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 458, "modifyingAttributeID": 2298, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8103": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8103, "effectName": "setBonusRapture", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 314, "modifyingAttributeID": 3107, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8104": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8104, "effectName": "salvageDroneSpecBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2603, "operation": 6, "skillTypeID": 57164 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 3110, "operation": 2, "skillTypeID": 57164 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8105": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8105, "effectName": "skillMultiplierAccessDifficultyBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 3110, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8106": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8106, "effectName": "shipPTdamageBonusMB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 518, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8107": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8107, "effectName": "shipBonusLETcapNeedAB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 585, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8108": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 8108, "effectName": "signatureRadiusBonusOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 3113, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8109": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 3115, "effectCategory": 1, "effectID": 8109, "effectName": "targetSpectrumBreakerBonus", "electronicChance": 0, "guid": "effects.Invulnerability", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 3114, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8111": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8111, "effectName": "systemElectricalStorm", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 984, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 21718 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1909, "modifyingAttributeID": 1915, "operation": 2, "skillTypeID": 13278 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 3095, "operation": 6, "skillTypeID": 3412 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2454, "modifyingAttributeID": 2454, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 55, "modifyingAttributeID": 1500, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 1465, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8112": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8112, "effectName": "systemExoticStorm", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 600, "modifyingAttributeID": 601, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1491, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 986, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3098, "operation": 6, "skillTypeID": 3393 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3098, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3099, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3099, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 203, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 1466, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8113": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8113, "effectName": "systemGammaStorm", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1490, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 985, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1498, "operation": 4, "skillTypeID": 16069 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1498, "operation": 4, "skillTypeID": 24568 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 146, "operation": 4 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1497, "operation": 4, "skillTypeID": 3422 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1497, "operation": 4, "skillTypeID": 24571 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 482, "modifyingAttributeID": 1499, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 652, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 1468, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8114": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 8114, "effectName": "systemPlasmaStorm", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 1467, "operation": 6 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3300 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 3436 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4, "skillTypeID": 3300 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1492, "operation": 6 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 23069 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 148, "operation": 4 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 244, "operation": 4, "skillTypeID": 3436 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 987, "operation": 6 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2234, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2125, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 23069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8117": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 3115, "effectCategory": 1, "effectID": 8117, "effectName": "interdictionNullifierBonus", "electronicChance": 0, "guid": "effects.Invulnerability", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1538, "modifyingAttributeID": 3120, "operation": -1 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8119": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 8119, "effectName": "industrialCompactCoreEffect2", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 852, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 1471, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1973, "modifyingAttributeID": 1974, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2342, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2352, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2351, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2253, "operation": 7 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2583, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2584, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 2585, "operation": 6, "skillTypeID": 3438 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2586, "operation": 6, "skillTypeID": 43702 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2587, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2588, "operation": 6, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2607, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2606, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8120": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8120, "effectName": "interceptorNullificationRoleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 1, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4117, "modifiedAttributeID": 309, "modifyingAttributeID": 2298, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4117, "modifiedAttributeID": 669, "modifyingAttributeID": 2298, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4117, "modifiedAttributeID": 3115, "modifyingAttributeID": 2299, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 4117, "modifiedAttributeID": 565, "modifyingAttributeID": 2300, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8121": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 8121, "effectName": "warpCoreStabilizerActive", "electronicChance": 0, "guid": "effects.Invulnerability", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8123": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 8123, "effectName": "droneBandWidthPenaltyOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1271, "modifyingAttributeID": 3124, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8128": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8128, "effectName": "miningLaserRangeBonusLRSM", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 351, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8129": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8129, "effectName": "shipBonusCloakVelocityBonusGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 462, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8130": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8130, "effectName": "shipBonusWarpCapacityNeedGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 586, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8131": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8131, "effectName": "shipBonusWarpCapacitorNeedAF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 464, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8132": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8132, "effectName": "shipBonusScanProbeDeviationA2F", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 485, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8133": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8133, "effectName": "shipBonusCloakVelocityMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8134": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8134, "effectName": "shipBonusWarpCapacitorNeedCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 588, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8135": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8135, "effectName": "shipBonusScanProbeDeviationCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8136": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8136, "effectName": "shipBonusWarpCapacitorNeedMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 153, "modifyingAttributeID": 587, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8151": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8151, "effectName": "shipBonusCloakedVelocityRole1", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 306, "modifyingAttributeID": 2298, "operation": 0, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "8152": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8152, "effectName": "eliteBonusEnergyDrainAmountBlackOps2", "electronicChance": 0, "guid": "None", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 1258, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 1258, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8153": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8153, "effectName": "eliteBonusDroneArmorShieldTransferBonusBlops1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 1257, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1257, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8154": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8154, "effectName": "eliteBonusDroneTrackingOptimalBlackOps2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1258, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1258, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8155": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8155, "effectName": "eliteBonusLPTtrackingBlackOps1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1257, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8156": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8156, "effectName": "eliteBonusLPTfalloffBlackOps2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1258, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8157": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8157, "effectName": "eliteBonusShieldResistancesBlackOps2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1258, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8158": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8158, "effectName": "stabilizeCloakDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3118, "modifyingAttributeID": 3134, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8199": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8199, "effectName": "gallenteIndustrialBonusIceHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3136, "modifyingAttributeID": 3157, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8200": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8200, "effectName": "gasHoldCapacityBonusEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1557, "modifyingAttributeID": 3158, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8206": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8206, "effectName": "specializationAsteroidDurationMultiplierEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "otherID", "func": "ItemModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3161, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8208": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8208, "effectName": "shipRoleBonusScanProbeStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 3165, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8209": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8209, "effectName": "expeditionFrigateBonusMiningLaserDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3166, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8210": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8210, "effectName": "expeditionFrigateBonusIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3167, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8211": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8211, "effectName": "expeditionFrigateBonusGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3168, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8212, "effectName": "expeditionFrigateSkillLevelMiningLaserDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3166, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8213": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8213, "effectName": "expeditionFrigateSkillLevelIceHarvestingrDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3167, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8214": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8214, "effectName": "expeditionFrigateSkillLevelGasHarvestingrDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3168, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8215": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8215, "effectName": "expeditionFrigateBonusArmorResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 3169, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 3169, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 3169, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 3169, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8216": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8216, "effectName": "expeditionFrigateSkillLevelArmorResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3169, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8217": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8217, "effectName": "expeditionFrigateBonusLightDronesDamage_DEPRICATED", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3170, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8218": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8218, "effectName": "expeditionFrigateSkillLevelLightDronesDamage_DEPRICATED", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 3170, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8219": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8219, "effectName": "expeditionFrigateSkillLevelMediumDronesDamage_DEPRICATED", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 3171, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "8220": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8220, "effectName": "expeditionFrigateBonusMediumDronesDamage_DEPRICATED", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3171, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8221": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8221, "effectName": "shipRoleBonusDroneOreMiningCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3172, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8222": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8222, "effectName": "shipRoleBonusDroneIceMiningCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3173, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8223": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8223, "effectName": "shipRoleBonusOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3177, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8224": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8224, "effectName": "shipRoleBonusIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3178, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8225": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8225, "effectName": "shipRoleBonusDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3179, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8226": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8226, "effectName": "shipRoleBonusDroneHitPoints", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 3180, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 3180, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 3180, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8227": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8227, "effectName": "miningBargeBonusOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3181, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8228": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8228, "effectName": "miningBargeBonusIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3182, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8229": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8229, "effectName": "miningBargeBonusGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3183, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8230": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8230, "effectName": "miningBargeBonusOreMiningRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3184, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8231": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8231, "effectName": "miningBargeBonusIceHarvestingRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3185, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8232": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8232, "effectName": "miningBargeSkillLevelOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3181, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8233": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8233, "effectName": "miningBargeSkillLevelIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3182, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8234": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8234, "effectName": "miningBargeSkillLevelGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3183, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8235": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8235, "effectName": "miningBargeSkillLevelOreMiningRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3184, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8236": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8236, "effectName": "miningBargeSkillLevelIceHarvestingRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3185, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8237": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8237, "effectName": "miningBargeBonusArmorHP", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 3189, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8239": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8239, "effectName": "expeditionFrigateSkillLevelShieldResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3192, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8240": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8240, "effectName": "miningBargeSkillLevelGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3187, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8241": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8241, "effectName": "miningBargeSkillLevelShieldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3188, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8242": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8242, "effectName": "miningBargeSkillLevelArmorHP", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3189, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8243": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8243, "effectName": "exhumersBonusOreMiningDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3193, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8244": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8244, "effectName": "exhumersBonusIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3194, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8245": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8245, "effectName": "exhumersBonusSignatureRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 3195, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8246": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8246, "effectName": "exhumersSkillLevelOreMiningDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3193, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8247": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8247, "effectName": "exhumersSkillLevelIceharvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3194, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8248": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8248, "effectName": "exhumersSkillLevelSingatureRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3195, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8249": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8249, "effectName": "exhumersBonusOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3197, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8250": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8250, "effectName": "exhumersSkillLevelOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3197, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8251": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8251, "effectName": "exhumersBonusGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 3198, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8252": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8252, "effectName": "exhumersSkillLevelGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3198, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8253": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8253, "effectName": "exhumersBonusShieldResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 3199, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 3199, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 3199, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 3199, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8254": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8254, "effectName": "exhumersBonusArmorResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 3200, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 3200, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 3200, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 3200, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8255": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8255, "effectName": "exhumersSkillLevelShieldResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3199, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8256": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8256, "effectName": "exhumersSkillLevelArmorResistance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3200, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8257": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8257, "effectName": "exhumersBonusLightDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3201, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8258": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8258, "effectName": "exhumersBonusMediumDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3202, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8259": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8259, "effectName": "exhumersSkillLevelLightDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3201, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8260": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8260, "effectName": "exhumersSkillLevelMediumDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3202, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8261": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8261, "effectName": "industrialCommandBonusDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3203, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8262": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8262, "effectName": "industrialCommandSkillLevelDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3203, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8263": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8263, "effectName": "industrialCommandBonusFuelConsuptionCompactIndustrialCore", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 3204, "operation": 6, "skillTypeID": 58956 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8264": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8264, "effectName": "industrialCommandBonusMiningForemanBurstRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3205, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8265": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8265, "effectName": "industrialCommandSkillLevelFuelConsuptionCompactIndustrialCore", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3204, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8266": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8266, "effectName": "industrialCommandSkillLevelMiningForemanBurstRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3205, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8267": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8267, "effectName": "weaponDisruptorResistanceBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2113, "modifyingAttributeID": 2353, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8268": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8268, "effectName": "nosferatuDurationBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 73, "modifyingAttributeID": 66, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8269": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8269, "effectName": "stasisWebifierMaxRangeAddPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 3206, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8270": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8270, "effectName": "capacitorWarfareResistanceBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2045, "modifyingAttributeID": 2267, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8271": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8271, "effectName": "industrialCommandBonusGasHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1557, "modifyingAttributeID": 3208, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8272": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8272, "effectName": "industrialCommandBonusIceHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3136, "modifyingAttributeID": 3209, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8273": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8273, "effectName": "industrialCommandSkillLevelGasHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3208, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8274": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8274, "effectName": "industrialCommandSkillLevelIceHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3209, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8275": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8275, "effectName": "minmatarIndustrialBonusGasHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1557, "modifyingAttributeID": 3210, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8276": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8276, "effectName": "minmatarIndustrialSkillLevelGasHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3210, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8277": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8277, "effectName": "gallenteIndustrialSkillLevelIceHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3157, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8278": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8278, "effectName": "industrialCommandBonusGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 3212, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8279": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8279, "effectName": "industrialCommandBonusShipHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 38, "modifyingAttributeID": 3211, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8280": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8280, "effectName": "industrialCommandSkillLevelGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3212, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8281": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8281, "effectName": "industrialCommandSkillLevelShipCargoCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3211, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8282": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8282, "effectName": "expeditionFrigateSkillLevelLightDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3213, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8283": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8283, "effectName": "expeditionFrigateBonusLightDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3213, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8284": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8284, "effectName": "expeditionFrigateBonusMediumDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3214, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8285": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8285, "effectName": "expeditionFrigateSkillLevelMediumDronesDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3214, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8291": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8291, "effectName": "afterburnerSpeedBoostBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 318, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8292": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8292, "effectName": "industrialCommandSkillLevelDroneOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3221, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8293": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8293, "effectName": "industrialCommandSkillLevelDroneIceHarvestingCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3222, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8294": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8294, "effectName": "industrialCommandBonusDroneOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3221, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8295": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8295, "effectName": "industrialCommandBonusDroneIceHarvestingCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3222, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8296": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8296, "effectName": "capitalIndustrialShipBonusDroneOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3223, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8297": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8297, "effectName": "capitalIndustrialShipBonusDroneIceCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3224, "operation": 6, "skillTypeID": 43702 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8298": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8298, "effectName": "capitalIndustrialShipSkillLevelDroneOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3223, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8299": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8299, "effectName": "capitalIndustrialShipSkillLevelDroneIceHarvestingCycleTime", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3224, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8300": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8300, "effectName": "shipRoleBonusGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3225, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8301": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8301, "effectName": "exhumersBonusGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3226, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8302": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8302, "effectName": "exhumersSkillLevelGasHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3226, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8303": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8303, "effectName": "shipRoleBonusStripMinerActivationCost", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 3228, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8304": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8304, "effectName": "shipRoleBonusIceHarvestingActivationCost", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 3229, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8305": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8305, "effectName": "shipRoleBonusOreMiningDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3230, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8306": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8306, "effectName": "industrialReconfigurationBonusConsumptionQuantity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 714, "modifyingAttributeID": 885, "operation": 3, "skillTypeID": 58956 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8307": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8307, "effectName": "industrialReconfigurationSkillLevelConsumptionQuantity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 885, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8308": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8308, "effectName": "shipRoleBonusGeneralMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 3231, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8309": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8309, "effectName": "capitalIndustrialShipBonusDroneHitPoints", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 3233, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 3233, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 3233, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8310": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8310, "effectName": "capitalIndustrialShipSkillLevelDroneHitPoints", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3233, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8311": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8311, "effectName": "industrialCommandBonusDroneHitPoints", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 3235, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 3235, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 3235, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8312": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8312, "effectName": "industrialCommandSkillLevelDroneHitPoints", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3235, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8313": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8313, "effectName": "miningFrigateBonusGasCloudHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3237, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8314": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8314, "effectName": "miningFrigateSkillLevelGasCloudHarvesting", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3237, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8315": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8315, "effectName": "shipRoleBonusGasHarvestingYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3239, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8316": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8316, "effectName": "expeditionFrigateSkillLevelOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3191, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8317": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8317, "effectName": "miningFrigateBonusIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 3240, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8318": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8318, "effectName": "miningFrigateSkillLevelIceHarvestingDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3240, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8322": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8322, "effectName": "gallenteIndustrialSkillLevelMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3241, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8323": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8323, "effectName": "gallenteIndustrialBonusMiningHoldCapacity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 3241, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8324": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8324, "effectName": "shipRoleBonusDroneOreMiningYield", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 3242, "operation": 6, "skillTypeID": 3438 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8327": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8327, "effectName": "relicAnalyzerRangeBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 13278 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8328": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8328, "effectName": "relicVirusStrengthBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1910, "modifyingAttributeID": 1918, "operation": 2, "skillTypeID": 13278 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8329": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8329, "effectName": "signatureRadiusBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 973, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8360": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8360, "effectName": "shipBonusMissileReloadTimeGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1795, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8362": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8362, "effectName": "shipBonusWarpDisruptionFieldGeneratorSignatureRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 899, "modifiedAttributeID": 554, "modifyingAttributeID": 3250, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8364": { "disallowAutoRepeat": 0, "durationAttributeID": 73, "effectCategory": 1, "effectID": 8364, "effectName": "industrialItemCompression", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8365": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8365, "effectName": "mwdCapUseAndSigBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 1803, "operation": 6, "skillTypeID": 3454 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 1803, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8366": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8366, "effectName": "modifyHullResonancePostPercentpassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 3258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 3258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 3258, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 3258, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8367": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8367, "effectName": "warpScramblerMaxRangeAddPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3257, "operation": 2, "skillTypeID": 3449 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8369": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8369, "effectName": "refineryGasDecompressionEfficiencyBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "structureID", "func": "LocationGroupModifier", "groupID": 1322, "modifiedAttributeID": 3262, "modifyingAttributeID": 3261, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8372": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8372, "effectName": "fleetCompressionLogisticsRangeBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3263, "operation": 6, "skillTypeID": 62450 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3263, "operation": 6, "skillTypeID": 62451 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8373": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8373, "effectName": "fleetCompressionLogisticsSkillLevelBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 3263, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8377": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8377, "effectName": "BattleshipRoleBonusArmorPlate&ShieldExtenderHP", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 38, "modifiedAttributeID": 72, "modifyingAttributeID": 3267, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 1159, "modifyingAttributeID": 3266, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 78, "modifiedAttributeID": 150, "modifyingAttributeID": 3268, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8467": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 8467, "effectName": "modifyJumpConduitPassengerRequired", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3321, "modifyingAttributeID": 3321, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8468": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8468, "effectName": "subsystemBonusBlackOpsJumpPassenger", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3320, "modifyingAttributeID": 3320, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3322, "modifyingAttributeID": 3322, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8469": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8469, "effectName": "bombDeploymentSkillReactivationDelayBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 2807, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8470": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8470, "effectName": "capitalIndustrialCommandBonusDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 3326, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8471": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8471, "effectName": "capitalIndustrialShipSkillLevelDroneDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3326, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8472": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8472, "effectName": "capitalIndustrialShipBonusMiningForemanBurstRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 3327, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8473": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8473, "effectName": "capitalIndustrialShipSkillLevelMiningForemanBurstRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3327, "modifyingAttributeID": 280, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8474": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8474, "effectName": "subsystemBonusMassAddition", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 3328, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8477": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8477, "effectName": "droneTrackingBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 3353, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8478": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8478, "effectName": "miningAndIceHarvestingCycleTimeBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 780, "operation": 6, "skillTypeID": 16281 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 780, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8479": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8479, "effectName": "droneOptimalFalloffBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 294, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 349, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8517": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8517, "effectName": "stasisWebifierResistanceBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2115, "modifyingAttributeID": 3422, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8518": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8518, "effectName": "cargoScanResistanceAssign", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 188, "modifyingAttributeID": 188, "operation": 7 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8519": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8519, "effectName": "warpScrambleStrengthBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 105, "modifyingAttributeID": 3035, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8590": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8590, "effectName": "launcherReloadTimeBonusPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1795, "modifyingAttributeID": 2573, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "8594": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 8594, "effectName": "modifyArmorDamageResistanceBonusPostPercentPassive", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 3429, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 3429, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 3429, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 3429, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11055": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11055, "effectName": "shipBonusBattlecruiserHeavyMissileAoeVelocityMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 748, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11056": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11056, "effectName": "shipBonusBattlecruiserHeavyAssaultMissileAoeVelocityMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 748, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11057": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11057, "effectName": "shipBonusShieldBoostCapacitorCBC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5044, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11058": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11058, "effectName": "battlecruiserSkillLevelPreMulShipBonusCBC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5044, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11059": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11059, "effectName": "shipBonusMediumHybridTrackingCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11060": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11060, "effectName": "shipBonusDroneWebStrengthAndHitpointsGBC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 3435 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 3435 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11061": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11061, "effectName": "roleBonusMHTRangeCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5045, "operation": 6, "skillTypeID": 3304 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5045, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11062": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11062, "effectName": "battlecruiserSkillLevelPreMulShipBonusCBC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5046, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11063": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11063, "effectName": "shipBonusMediumEnergyWeaponDamageABC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5205, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11064": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11064, "effectName": "shipBonusMediumEnergyWeaponRangeABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 795, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11065": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11065, "effectName": "shipBonusArmorHitpointsABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11066": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11066, "effectName": "shipBonusDroneTrackingABC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 1889, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11067": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11067, "effectName": "battlecruiserMETRange2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5045, "operation": 6, "skillTypeID": 3306 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5045, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11068": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11068, "effectName": "shipMissileRoFMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11069": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11069, "effectName": "shipRoleBonusScanProbeLauncherCPU", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 5048, "operation": 6, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11070": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11070, "effectName": "shipBonusMissileDamageCF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 463, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11071": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11071, "effectName": "shipBonusSETCapNeedBonusAF ", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11072": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11072, "effectName": "shipBonusSmallHybridDamageGF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11358": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11358, "effectName": "shipBonusBattlecruiserSignatureRadiusMBC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 552, "modifyingAttributeID": 5207, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11359": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11359, "effectName": "shipBonusShieldBoostFittingCBC4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 5956, "operation": 6, "skillTypeID": 3416 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 5956, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11360": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11360, "effectName": "battlecruiserSkillLevelPreMulShipBonusABC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5205, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11362": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11362, "effectName": "battlecruiserSkillLevelPreMulShipBonusMBC3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5207, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11373": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11373, "effectName": "shipBonusDreadnoughtM1ArmorBoostAmount&ShieldBoostAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2292, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 2292, "operation": 6, "skillTypeID": 21802 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11374": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11374, "effectName": "shipBonusDreadnoughtA4EnergyWarfareRangeAmountBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 5214, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 90, "modifyingAttributeID": 5214, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11376": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11376, "effectName": "shipBonusDreadnoughtG1OptimalRangeBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11380": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11380, "effectName": "shipBonusDreadnoughtG1ArmorBoostAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11381": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11381, "effectName": "shipBonusWarpScramblerRangeBonusG5", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 5216, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11382": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect ( copy )", "description_es": "Efecto generado automáticamente (copia)", "description_fr": "Automatically generated effect ( copy )", "description_it": "Automatically generated effect ( copy )", "description_ja": "自動生成効果(コピー)", "description_ko": "자동 생성 효과 (복제)", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638155, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11382, "effectName": "shipBonusDreadnoughtC1EwTargetPainter", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 379, "modifiedAttributeID": 554, "modifyingAttributeID": 2286, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11387": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11387, "effectName": "shipHybridDamageBonusGalNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5230, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11388": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638201, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11388, "effectName": "shipBonusArmorRepairGalNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 5232, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11390": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638262, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11390, "effectName": "armorUpgradesMassPenaltyReductionBonusGalNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 5233, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11391": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11391, "effectName": "shipHybridDamageBonusCalNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5225, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11392": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11392, "effectName": "shipHybridRangeBonusCalNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5228, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11393": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11393, "effectName": "shipHybridRangeBonusGalNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5234, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11394": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638276, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11394, "effectName": "shipHybridFallOffGalNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5231, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11395": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638278, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11395, "effectName": "shipBonusShieldBoosterCalNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 5229, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11396": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11396, "effectName": "shipHybridRangeBonus2CalNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5227, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11397": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11397, "effectName": "shipHybridFallOffCalNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5226, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11398": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638286, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11398, "effectName": "shipProjectileDamageMinNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5235, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11399": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11399, "effectName": "shipProjectileRofMinNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 5236, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11400": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11400, "effectName": "shipBonusMWDSignatureRadiusMinNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 554, "modifyingAttributeID": 5237, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11401": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Automatically generated effect", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638392, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11401, "effectName": "shipProjectileRangeBonusMinNavyDestroyer", "electronicChance": 0, "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5238, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11402": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect ( copy )", "description_es": "Efecto generado automáticamente (copia)", "description_fr": "Automatically generated effect ( copy )", "description_it": "Automatically generated effect ( copy )", "description_ja": "自動生成効果(コピー)", "description_ko": "자동 생성 효과 (복제)", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 638289, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11402, "effectName": "shipProjectileFallOffMinNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5239, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11404": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11404, "effectName": "shipArmorHpAmaNavyDestroyer", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5218, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11405": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11405, "effectName": "shipBonusSmallEnergyTurretDamageAmaNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5219, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11406": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11406, "effectName": "shipLaserCap1AmaNavyIssue", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5220, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11407": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11407, "effectName": "shipNeutCap1AmaNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 6, "modifyingAttributeID": 5221, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11408": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11408, "effectName": "shipEnergyNeutralizerTransferAmountBonusAmaNavyDestroyer", "electronicChance": 0, "guid": "None", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 97, "modifyingAttributeID": 5222, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0, "sfxName": "None" }, "11409": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11409, "effectName": "shipBonusSmallEnergyWeaponOptimalRangeAmaNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5223, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11410": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11410, "effectName": "shipBonusSETFalloffAmaNavyDestroyer", "electronicChance": 0, "guid": "", "iconID": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5224, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11411": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11411, "effectName": "shipMissileDmgMC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 659, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11412": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11412, "effectName": "shipBonusShieldArmorResonanceMC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 489, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 489, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11413": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11413, "effectName": "eliteBonusHeavyGunshipMissileExplosionVelocity1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11414": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11414, "effectName": "eliteBonusShieldBoosterAmount1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11415": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11415, "effectName": "eliteBonusHybridTracking1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11416": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11416, "effectName": "shipBonusHybridFalloffGC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 658, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11417": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11417, "effectName": "shipBonusArmorPlateMassGC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 2014, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11418": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11418, "effectName": "gallenteBattleshipSkillLevelPreMulShipBonusGB3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5240, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11419": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11419, "effectName": "shipBonusDroneTrackingGB2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 561, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11420": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11420, "effectName": "shipBonusRepairAmountGB3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 5240, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11421": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11421, "effectName": "shipBonusTorpedoDamageAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11422": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11422, "effectName": "shipBonusCruiseMissileDamageAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11423": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11423, "effectName": "shipBonusHeavyMissileDamageAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3324 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11424": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11424, "effectName": "shipBonusLargeEnergyTurretDamageAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11425": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11425, "effectName": "shipBonusDroneHitpointsAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11426": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11426, "effectName": "shipBonusDroneDamageAB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 492, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11428": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11428, "effectName": "shipBonusCruiseMissileExplosionVelocityMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11429": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11429, "effectName": "shipBonusTorpedoMissileExplosionVelocityMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11430": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11430, "effectName": "shipBonusLargeProjectileTrackingMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3308 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11431": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11431, "effectName": "shipBonusShieldHpCF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 588, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11432": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11432, "effectName": "shipBonusArmorRepairEliteGunship2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11445": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 11445, "effectName": "systemSensorStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1851, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1851, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1851, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1851, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11446": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11446, "effectName": "shipBonusDreadnoughtG4DamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5215, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11447": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11447, "effectName": "destroyerSkillLevelPreMulShipBonusCaldariNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5225, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5228, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5229, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11448": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11448, "effectName": " destroyerSkillLevelPreMulShipBonusMinmatarDestroyerNavy", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5235, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5236, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5237, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11449": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11449, "effectName": "destroyerSkillLevelPreMulShipBonusAmarrNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5218, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5219, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5220, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5221, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5222, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11450": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11450, "effectName": "shipBonusSETOptimalAmarNavyDestroyer6", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5223, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11451": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11451, "effectName": "destroyerSkillLevelPreMulShipBonusGallenteNavyDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5230, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5232, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5233, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11452": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11452, "effectName": "shipBonusWarpScramblerStrengthG5", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 105, "modifyingAttributeID": 5216, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11453": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2674, "distribution": 2, "durationAttributeID": 2490, "effectCategory": 2, "effectID": 11453, "effectName": "npcBehaviorFakeMiningLaser", "electronicChance": 0, "guid": "effects.Laser", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 2673, "rangeChance": 0 }, "11454": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11454, "effectName": "shipBonusGrapplerFalloffM4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1672, "modifiedAttributeID": 2044, "modifyingAttributeID": 5248, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11512": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11512, "effectName": "eliteBonusGunshipLightMissileAndRocketROF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 509, "modifiedAttributeID": 51, "modifyingAttributeID": 673, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 507, "modifiedAttributeID": 51, "modifyingAttributeID": 673, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11513": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11513, "effectName": "shipBonusMissileDamageMF2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3319 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 587, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11514": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11514, "effectName": "shipBonusArmorRepairAmountMF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 460, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11515": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11515, "effectName": "shipBonusArmorRepairAmountMC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11516": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11516, "effectName": "shipBonusShieldBoostAmountMC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 489, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11517": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11517, "effectName": "shipBonusStasisWebDroneHitpointsAT", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 2020, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11518": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11518, "effectName": "shipBonusStasisWebDroneVelocityAT2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 5318, "operation": 6, "skillTypeID": 3435 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11519": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11519, "effectName": "shipBonusStasisWebDroneWebStrengthAT3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 20, "modifyingAttributeID": 5319, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11528": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11528, "effectName": "covopsCloakCPURole1Bonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 11579 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11529": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11529, "effectName": "shipRole8BonusCoreProbeStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 1688, "operation": 6, "skillTypeID": 3402 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11530": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11530, "effectName": "shipRole6BonusCoreProbeDeviation", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 2303, "operation": 6, "skillTypeID": 3402 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11531": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11531, "effectName": "probeLauncherCPURole1Bonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 481, "modifiedAttributeID": 50, "modifyingAttributeID": 2298, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11532": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11532, "effectName": "dataMinerCPURole1Bonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 538, "modifiedAttributeID": 50, "modifyingAttributeID": 2298, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11691": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 11691, "effectName": "debuffLance", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 1, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11695": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11695, "effectName": "skillMultiplierShipBonusLancerDreadnought", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5417, "modifyingAttributeID": 280, "operation": 0 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5418, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11696": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11696, "effectName": "shipBonusDreadnoughtC1HybridTracking", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2286, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11697": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11697, "effectName": "shipBonusDreadnoughtC2HybridOptimalRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2287, "operation": 6, "skillTypeID": 21666 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11698": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11698, "effectName": "shipBonusDisruptionLanceDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5417, "operation": 6, "skillTypeID": 77739 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5417, "operation": 6, "skillTypeID": 77739 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5417, "operation": 6, "skillTypeID": 77739 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5417, "operation": 6, "skillTypeID": 77739 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11699": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11699, "effectName": "skillDisruptionLanceCapacitorUsePremultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 5419, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11700": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11700, "effectName": "skillDisruptionLanceCapacitorUseBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5419, "operation": 6, "skillTypeID": 77739 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11701": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11701, "effectName": "shipBonusDisruptionLanceRange", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5418, "operation": 6, "skillTypeID": 77739 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11702": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11702, "effectName": "eliteBonusMarauderArmourBonus2a", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 1266, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11704": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11704, "effectName": "shipBonusDreadnoughtM2CapitalProjectileFalloff", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2293, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11705": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11705, "effectName": "shipBonusDreadnoughtA1MissileDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 32435 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 21668 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 3325 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2283, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11706": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11706, "effectName": "shipBonusDreadnoughtA2MissileExplosionRadius", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 2284, "operation": 6, "skillTypeID": 32435 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 2284, "operation": 6, "skillTypeID": 21668 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 2284, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11707": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11707, "effectName": "shipBonusDreadnoughtG1HullResonance", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 113, "modifyingAttributeID": 2289, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 111, "modifyingAttributeID": 2289, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 109, "modifyingAttributeID": 2289, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 110, "modifyingAttributeID": 2289, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11714": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11714, "effectName": "disruptionLanceDisallowCloaking", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2454, "modifyingAttributeID": 5425, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11716": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 2009, "effectCategory": 2, "effectID": 11716, "effectName": "entitySuperWeaponLanceAllRaces", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeAttributeID": 54, "rangeChance": 0 }, "11743": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11743, "effectName": "shipProjectileTrackingGD", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11745": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664920, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11745, "effectName": "shipShieldEmResistanceGuristasAlligatorCBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 743, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11746": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664921, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11746, "effectName": "shipShieldThermalResistanceGuristasAlligatorCBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 743, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11747": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664922, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11747, "effectName": "shipShieldKineticResistanceGuristasAlligatorCBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 743, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11748": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664923, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11748, "effectName": "shipShieldExplosiveResistanceGuristasAlligatorCBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 743, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11750": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664926, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11750, "effectName": "shipBonusHeavyAssaultMissileKineticDamageGuristasAlligatorGBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11751": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664927, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11751, "effectName": "shipBonusHeavyAssaultMissileThermalDamageGuristasAlligatorGBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11752": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664928, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11752, "effectName": "shipBonusHeavyMissileKineticDamageGuristasAlligatorGBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11753": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 664929, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11753, "effectName": "shipBonusHeavyMissileThermalDamageGuristasAlligatorGBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3324 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11763": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 665011, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11763, "effectName": "shipBonusProjectileTurretFalloffBonusGBC", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11764": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 665012, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11764, "effectName": "shipRoleBonusProjectileRofPirateBattlecruiser", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 793, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11765": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 665014, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11765, "effectName": "shipMWDHeatBonusATShip", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 5469, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11766": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 665015, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11766, "effectName": "shipABHeatBonusATShip", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 5469, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11767": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11767, "effectName": "shipBonusHybridTrackingATC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 692, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11774": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11774, "effectName": "cockroachQAHullHPBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 793, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11919": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11919, "effectName": "shipBonusDestroyerMD1Falloff", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 729, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11938": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11938, "effectName": "shipShieldEMResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11939": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11939, "effectName": "shipShieldThermalResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11940": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11940, "effectName": "shipShieldKineticResistanceCD2 ", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11941": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11941, "effectName": "shipShieldExplosiveResistanceCD2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 735, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11942": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11942, "effectName": "shipBonusKineticMissileDamageGD", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11943": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11943, "effectName": "shipBonusThermalMissileDamageGD", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 738, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11944": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11944, "effectName": "shipBonusTitanG2ProjectileFalloff", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2415, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11945": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11945, "effectName": "shipBonusTitanG1ProjectileTracking", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2414, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11946": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 11946, "effectName": "systemSmallUpwellTurretDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1493, "operation": 4, "skillTypeID": 55034 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11947": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 11947, "effectName": "systemUpwellAoeCloudSize", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 1967, "operation": 4, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11948": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 11948, "effectName": "systemUpwellDamageMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 1482, "operation": 4, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11953": { "disallowAutoRepeat": 0, "effectCategory": 7, "effectID": 11953, "effectName": "systemUpwellAoeVelocity", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 1483, "operation": 4, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11986": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 11986, "effectName": "behaviorTargetRepairImpedance", "electronicChance": 0, "guid": "effects.TargetPaint", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11992": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11992, "effectName": "shipBonusArmorPlateMassAT", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 5603, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11993": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 696792, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11993, "effectName": "shipBonusRepairSystemsBonusATC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 2014, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11994": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11994, "effectName": "shipBonusHybridFalloffATC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 693, "operation": 6, "skillTypeID": 3304 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11995": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 696810, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11995, "effectName": "shipBonusHeatAfterburnerATGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3450 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "11996": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 696813, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11996, "effectName": "shipBonusMWDHeatATGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 1223, "modifyingAttributeID": 586, "operation": 6, "skillTypeID": 3454 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11997": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 696932, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11997, "effectName": "shipBonusArmorRepATGF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 673, "operation": 6, "skillTypeID": 3393 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11998": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11998, "effectName": "shipBonusSmallHybridMaxRangeATF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "11999": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 11999, "effectName": "shipBonusSmallHybridTrackingSpeedATF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 675, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12002": { "disallowAutoRepeat": 0, "dischargeAttributeID": 2637, "durationAttributeID": 2636, "effectCategory": 1, "effectID": 12002, "effectName": "npcBehaviorIndustrialCore", "electronicChance": 0, "guid": "effects.SiegeMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2643, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 2644, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 4, "modifyingAttributeID": 2646, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2116, "modifyingAttributeID": 2638, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2135, "modifyingAttributeID": 2639, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2112, "modifyingAttributeID": 2640, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2253, "modifyingAttributeID": 2642, "operation": 7 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2723, "modifyingAttributeID": 2647, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2725, "modifyingAttributeID": 2648, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2495, "modifyingAttributeID": 2605, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2498, "modifyingAttributeID": 2605, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2496, "modifyingAttributeID": 2604, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2497, "modifyingAttributeID": 2604, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12003": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12003, "effectName": "vortonTurretSpeeBonusPostPercentSpeedLocationShipModulesRequiringVortonProjectorOperation", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 441, "operation": 6, "skillTypeID": 55033 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12022": { "disallowAutoRepeat": 0, "durationAttributeID": 2788, "effectCategory": 1, "effectID": 12022, "effectName": "Super Shield Visual Effect", "electronicChance": 0, "guid": "effects.SuperDefenseShield", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12038": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 708589, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12038, "effectName": "shipBonusSPTFalloffMF3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 1626, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12047": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12047, "effectName": "upwellHaulerSkillLevelPreMulShipBonusUH1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5647, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12049": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12049, "effectName": "upwellHaulerSkillLevelPreMulShipBonusUH2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5648, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12050": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709075, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12050, "effectName": "shipBonusColonyResourcesHoldCapacityUH1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5646, "modifyingAttributeID": 5647, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12051": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709076, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12051, "effectName": "shipMissileEMDamageUH2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5648, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12052": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709077, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12052, "effectName": " shipMissileThermalDamageUH2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5648, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12053": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709079, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12053, "effectName": "shipMissileExplosiveDamageUH2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5648, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12054": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709080, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12054, "effectName": "shipMissileKineticDamageUH2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5648, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12055": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12055, "effectName": "upwellFreighterSkillLevelPreMulShipBonusUFreighter1", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5649, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12056": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12056, "effectName": "upwellFreighterSkillLevelPreMulShipBonusUFreighter2", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5650, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12057": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709133, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12057, "effectName": "shipBonusColonyResourcesHoldCapacityUFreighter1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5646, "modifyingAttributeID": 5649, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12058": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709134, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12058, "effectName": "shipMissileEMDamageUFreighter2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5650, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12060": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709135, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12060, "effectName": " shipMissileThermalDamageUFreighter2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5650, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12061": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709136, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12061, "effectName": "shipMissileExplosiveDamageUFreighter2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5650, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12062": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709137, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12062, "effectName": "shipMissileKineticDamageUFreighter2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5650, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12063": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709142, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12063, "effectName": "shipRoleBonusUpwellFreighterCloakCPUPenalty", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 330, "modifiedAttributeID": 50, "modifyingAttributeID": 5651, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12069": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709567, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12069, "effectName": "shipBonusAutoTargetingMissilesUFreighter3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5654, "operation": 6, "skillTypeID": 3322 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5654, "operation": 6, "skillTypeID": 3322 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5654, "operation": 6, "skillTypeID": 3322 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5654, "operation": 6, "skillTypeID": 3322 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12070": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12070, "effectName": "upwellFreighterSkillLevelPreMulShipBonusUFreighter3", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5654, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12071": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "Automatically generated effect", "descriptionID": 709571, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12071, "effectName": "shipRoleBonusUpwellFreighterCapitalFlexHardenerFittingCapBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1700, "modifiedAttributeID": 30, "modifyingAttributeID": 5655, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1700, "modifiedAttributeID": 6, "modifyingAttributeID": 5655, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12072": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12072, "effectName": "eliteIndustrialUpwellNeutNosHeatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 1206, "modifyingAttributeID": 1949, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 1206, "modifyingAttributeID": 1949, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12073": { "disallowAutoRepeat": 0, "dischargeAttributeID": 5660, "durationAttributeID": 5657, "effectCategory": 2, "effectID": 12073, "effectName": "npcBehaviorRemoteCapacitorTransmitter", "electronicChance": 0, "falloffAttributeID": 5659, "guid": "effects.EnergyTransfer", "isAssistance": 1, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 5658, "rangeChance": 1, "resistanceAttributeID": 2116 }, "12097": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12097, "effectName": "skillConduitPassengerBonusPercentLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5681, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12098": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12098, "effectName": "jumpPortalPassengerBonusPercentSkill", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 3133, "modifyingAttributeID": 5681, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12101": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12101, "effectName": "capitalMJDCapReductionSkillMultiplier", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 5683, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12102": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12102, "effectName": "capitalMJDSkillCapReductionBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5683, "operation": 6, "skillTypeID": 83464 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12126": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 12126, "effectName": "microJumpPortalDriveCapital", "electronicChance": 0, "guid": "effects.MicroJumpFieldEngageCapital", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "12127": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 723567, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12127, "effectName": "shipRoleBonusUpwellHaulersMediumMissileFittingBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 30, "modifyingAttributeID": 5705, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 30, "modifyingAttributeID": 5705, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 30, "modifyingAttributeID": 5705, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 771, "modifiedAttributeID": 50, "modifyingAttributeID": 5705, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 510, "modifiedAttributeID": 50, "modifyingAttributeID": 5705, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 511, "modifiedAttributeID": 50, "modifyingAttributeID": 5705, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12165": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12165, "effectName": "ATFrigDmgBonus", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3303 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3302 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3301 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3321 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12166": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12166, "effectName": "ATAssignShieldArmorBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5727, "modifyingAttributeID": 2621, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12167": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12167, "effectName": "ATNegativeToPositiveSecStatus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5728, "modifyingAttributeID": 2610, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12168": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12168, "effectName": "ATIntermediateSecStatus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2621, "modifyingAttributeID": 5728, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12170": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12170, "effectName": "shipShieldThermalResistanceAT1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 5729, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12171": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12171, "effectName": "shipShieldKineticResistanceAT1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 5729, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12172": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12172, "effectName": "shipShieldEMResistanceAT1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 5729, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12173": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12173, "effectName": "shipShieldExplosiveResistanceAT1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 5729, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12174": { "disallowAutoRepeat": 0, "effectCategory": 2, "effectID": 12174, "effectName": "dotMissileLaunching", "electronicChance": 0, "guid": "effects.MissileDeployment", "isAssistance": 0, "isOffensive": 1, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12176": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12176, "effectName": "shipBonusAllShieldresistATCC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1535, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1535, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1535, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1535, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12179": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12179, "effectName": "ShipBonusAllShieldResistATCF1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 1624, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 1624, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 1624, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 1624, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12180": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12180, "effectName": "roleBonusATCruiserMJDFittingReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1189, "modifiedAttributeID": 50, "modifyingAttributeID": 2753, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1189, "modifiedAttributeID": 30, "modifyingAttributeID": 2753, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12181": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12181, "effectName": "ATcruiserTackleBonus1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 65, "modifiedAttributeID": 54, "modifyingAttributeID": 5743, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12182": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12182, "effectName": "ATcruiserAssignSecStatBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5744, "modifyingAttributeID": 2621, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5743, "modifyingAttributeID": 2621, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12183": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12183, "effectName": "shipBonusATpropDuration", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 475, "modifiedAttributeID": 73, "modifyingAttributeID": 5733, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 46, "modifiedAttributeID": 73, "modifyingAttributeID": 5733, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12184": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12184, "effectName": "shipBonusATAllShieldResistCB3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 598, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 598, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 598, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 598, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12185": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12185, "effectName": "shipBonusBurstJammer ATB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 142, "modifyingAttributeID": 5734, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 241, "modifyingAttributeID": 5734, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 238, "modifyingAttributeID": 5734, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 239, "modifyingAttributeID": 5734, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 80, "modifiedAttributeID": 240, "modifyingAttributeID": 5734, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12186": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12186, "effectName": "ATAssignBurstJammerStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5734, "modifyingAttributeID": 2621, "operation": 4 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12188": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12188, "effectName": "shipRoleBonusSPTDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12189": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12189, "effectName": "shipRoleBonusMPTDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12190": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12190, "effectName": "shipRoleBonusRocketDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3320 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12191": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12191, "effectName": "shipRoleBonusHAMDamage", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 117, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 116, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 114, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 25719 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 2299, "operation": 6, "skillTypeID": 25719 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12192": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12192, "effectName": "stasisWebifierResistanceBonusMD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2115, "modifyingAttributeID": 729, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12193": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12193, "effectName": "stasisWebifierResistanceBonusMBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2115, "modifyingAttributeID": 748, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12194": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12194, "effectName": "shipBonusShieldBoostCD1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 734, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12195": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12195, "effectName": "shipBonusShieldBoostCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12199": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12199, "effectName": "ATfrigNegSecStatusDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5742, "operation": 6, "skillTypeID": 3303 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5741, "operation": 6, "skillTypeID": 3302 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5740, "operation": 6, "skillTypeID": 20315 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5739, "operation": 6, "skillTypeID": 3301 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12200": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12200, "effectName": "ATfrigMissileDamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 118, "modifyingAttributeID": 5727, "operation": 6, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12202": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12202, "effectName": "ATcruiserTackleBonus2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 52, "modifiedAttributeID": 54, "modifyingAttributeID": 5744, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12203": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12203, "effectName": "ATfrigDroneBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 5746, "operation": 6, "skillTypeID": 24241 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 5746, "operation": 6, "skillTypeID": 24241 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5746, "operation": 6, "skillTypeID": 24241 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5746, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12212": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12212, "effectName": "minmatarCruiserSkillLevelPreMulShipBonusMC3Ship", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5747, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12213": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 870991, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12213, "effectName": "shipBonusMPTFalloffMC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 5747, "operation": 6, "skillTypeID": 3305 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12214": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12214, "effectName": "AtcruiserDroneBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 5748, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 5748, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5748, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5748, "operation": 6, "skillTypeID": 33699 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12215": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12215, "effectName": "skillDotMaxHPPercentagePerTickBonusSkillLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 5749, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12216": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12216, "effectName": "skillDotMaxDamagePerTickBonusSkillLevel", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 5750, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12217": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12217, "effectName": "skillDotMaxHPPercentagePerTickBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 5737, "modifyingAttributeID": 5749, "operation": 6, "skillTypeID": 86260 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12218": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12218, "effectName": "skillDotMaxDamagePerTickBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 5736, "modifyingAttributeID": 5750, "operation": 6, "skillTypeID": 86260 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12219": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12219, "effectName": "skillDotPodVelocityBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 20, "operation": 6, "skillTypeID": 86260 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12220": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12220, "effectName": "skillDotLauncherRoFBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 51, "modifyingAttributeID": 293, "operation": 6, "skillTypeID": 86260 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12221": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12221, "effectName": "skillDotDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 5735, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 86260 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12244": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12244, "effectName": "shipBonusRole1CapitalProjectileDamageBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 2298, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12245": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12245, "effectName": "shipBonusDreadnoughtG1FalloffBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2289, "operation": 6, "skillTypeID": 21667 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12246": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12246, "effectName": "shipBonusRoleAngelDreadMoveWhileSieged", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 515, "modifiedAttributeID": 20, "modifyingAttributeID": 5767, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12249": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1009573, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12249, "effectName": "shipBonusDroneDamageHeavyMediumLightMultiplierGBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3441 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12250": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12250, "effectName": "shipBonusSentryDroneDamageAndSentryHPMultiplierGBC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 23594 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 23594 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 23594 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 5046, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12251": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1009574, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12251, "effectName": "shipBonusDroneHPHeavyMediumLightGBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3441 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 24241 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3441 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 24241 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3441 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12252": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12252, "effectName": "eliteBonusCommandShipDroneTrackingHeavyMediumLightCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 3441 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 33699 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 999, "operation": 6, "skillTypeID": 24241 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12253": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12253, "effectName": "eliteBonusCommandShipDroneTrackingSentryCS4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 5772, "operation": 6, "skillTypeID": 23594 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12254": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1009575, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12254, "effectName": "commandShipSkillMultiplier4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5772, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12267": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1010664, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12267, "effectName": "shipBloodRaiderCapitalNosNeutralizationSignatureResolutionReduction", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 2451, "modifyingAttributeID": 5787, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12274": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12274, "effectName": "logisticSkillMultiplier4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5792, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12275": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12275, "effectName": "shipBonusArmorPlateMassEliteBonusLogistics4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 5792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12276": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12276, "effectName": "shipBonusShieldExtenderSigEliteBonusLogistics4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 38, "modifiedAttributeID": 983, "modifyingAttributeID": 5792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12277": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12277, "effectName": " shipBonusRemoteSensorBoosterTargetingRangeSensorStrengthEliteBonusLogistics4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 290, "modifiedAttributeID": 1027, "modifyingAttributeID": 5792, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 290, "modifiedAttributeID": 1028, "modifyingAttributeID": 5792, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 290, "modifiedAttributeID": 1029, "modifyingAttributeID": 5792, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 290, "modifiedAttributeID": 1030, "modifyingAttributeID": 5792, "operation": 6 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 290, "modifiedAttributeID": 309, "modifyingAttributeID": 5792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12278": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12278, "effectName": " shipBonusArmorPlateHitpointAmountEliteBonusLogistics4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 1159, "modifyingAttributeID": 5792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12279": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12279, "effectName": " shipBonusShieldExtenderCapacityBonusEliteBonusLogistics4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 38, "modifiedAttributeID": 72, "modifyingAttributeID": 5792, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12283": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12283, "effectName": "implantSetHackingVirusCoheranceEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5799, "modifyingAttributeID": 5798, "operation": 0, "skillTypeID": 3411 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12284": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12284, "effectName": "implantSetHackingVirusCoheranceModifierEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 538, "modifiedAttributeID": 1909, "modifyingAttributeID": 5799, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12286": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12286, "effectName": "shipLPWRangeBonusPCBS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 2766, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12287": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12287, "effectName": "shipLPWTrackingBonusPCBS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 2767, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12288": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12288, "effectName": "eliteBonusViolatorsLPWDmgMultiMax1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2734, "modifyingAttributeID": 1265, "operation": 6, "skillTypeID": 47872 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12296": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1015638, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12296, "effectName": "shipLaserCapABC3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5205, "operation": 6, "skillTypeID": 3306 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12326": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12326, "effectName": "oreDestroyerSkillLevelPreMulShipBonusOreDestroyerShip1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5820, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12327": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12327, "effectName": "oreDestroyerSkillLevelPreMulShipBonusOreDestroyerShip2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5821, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12328": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12328, "effectName": "oreDestroyerSkillLevelPreMulShipBonusOreDestroyerShip3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5822, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12329": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1016660, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12329, "effectName": "shipMiningYieldBonusOreDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 5820, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12330": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1016661, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12330, "effectName": "shipMiningRangeBonusOreDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12331": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1016662, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12331, "effectName": "shipGasCloudDurationBonusOreDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 5822, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12529": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12529, "effectName": "shipBonusArmorResistsUniformSOEABC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 267, "modifyingAttributeID": 795, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 268, "modifyingAttributeID": 795, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 269, "modifyingAttributeID": 795, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 270, "modifyingAttributeID": 795, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12530": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12530, "effectName": "expeditionCommandDurationBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 66, "operation": 6, "skillTypeID": 89611 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12531": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12531, "effectName": "expeditionCommandStrengthBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2572, "operation": 6, "skillTypeID": 89611 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12532": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12532, "effectName": "ExpeditionCommandSkillLevelPreMulShipBonusExpeditionCommandShip1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5939, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12533": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12533, "effectName": "ExpeditionCommandSkillLevelPreMulShipBonusExpeditionCommandShip2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5940, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12534": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12534, "effectName": "ExpeditionCommandSkillLevelPreMulShipBonusExpeditionCommandShip3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5941, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12535": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12535, "effectName": "ExpeditionCommandSkillLevelPreMulShipBonusExpeditionCommandShip4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5942, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12536": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12536, "effectName": "ExpeditionCommandSkillLevelPreMulShipBonusExpeditionCommandShip5", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5943, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12537": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12537, "effectName": "shipBonusAnalyzerRangeECS1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 538, "modifiedAttributeID": 54, "modifyingAttributeID": 5939, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12538": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12538, "effectName": "shipBonusGasCloudScoopDurationECS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 5940, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12539": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12539, "effectName": "shipBonusExplorationCommandStrengthDurationECS3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 5941, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 5941, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 5941, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 5941, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 5941, "operation": 6, "skillTypeID": 89611 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12540": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12540, "effectName": "shipBonusArmorCommandStrengthDurationECS4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 5942, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 5942, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 5942, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 5942, "operation": 6, "skillTypeID": 20494 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 5942, "operation": 6, "skillTypeID": 20494 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12541": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12541, "effectName": "shipBonusGasCloudScoopCPUreductionSOEECSrole", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 5945, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12542": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1017865, "disallowAutoRepeat": 0, "displayName_de": "Expeditionskommando-Mind-Link", "displayName_en-us": "expeditionCommandMindlink", "displayName_es": "Enlace mental de mando de expedición", "displayName_fr": "expeditionCommandMindlink", "displayName_it": "expeditionCommandMindlink", "displayName_ja": "探査コマンドマインドリンク", "displayName_ko": "expeditionCommandMindlink", "displayName_ru": "expeditionCommandMindlink", "displayName_zh": "远征指挥思维网络芯片", "displayNameID": 1017866, "effectCategory": 0, "effectID": 12542, "effectName": "expeditionCommandMindlink", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 89611 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 884, "operation": 6, "skillTypeID": 89611 } ], "propulsionChance": 0, "published": 1, "rangeChance": 0 }, "12543": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12543, "effectName": "shipBonusRole6ExpeditionBurstDurationSOEECS", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2303, "operation": 6, "skillTypeID": 89611 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12552": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12552, "effectName": "shipRoleBonusOREExecutiveIssueMiningHoldAmount", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 1556, "modifyingAttributeID": 5950, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12554": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12554, "effectName": "shipDroneHPandDamageOreDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 9, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 265, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 3436 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 263, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12555": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12555, "effectName": "shipBonusShieldAllResistancesOreDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 271, "modifyingAttributeID": 5822, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 272, "modifyingAttributeID": 5822, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 273, "modifyingAttributeID": 5822, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 274, "modifyingAttributeID": 5822, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12556": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12556, "effectName": "eliteBonusCommandDestroyerMining1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2535, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2469, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2471, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2473, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 22536 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 2537, "modifyingAttributeID": 2059, "operation": 6, "skillTypeID": 22536 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12557": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12557, "effectName": "shipBonusGasCloudDurationRoleBonusOreMiningDestroyer", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 5952, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12558": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12558, "effectName": " oreDestroyerSkillLevelPreMulShipBonusOreDestroyerShip4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5953, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12559": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12559, "effectName": "shipShieldBoosterBonusOreExecutiveDestroyer4", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 5953, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12560": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12560, "effectName": " oreExecutiveRoleBonusSalvageDroneAdditionalAccessDifficultyRoleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 902, "modifyingAttributeID": 5954, "operation": 2, "skillTypeID": 3440 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12562": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12562, "effectName": "miningFrigateSkillLevelPreMulShipBonusOreFrigateShieldBoosterbonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5955, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12563": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12563, "effectName": "shipShieldBoosterBonusOreExecutiveFrigate", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 5955, "operation": 6, "skillTypeID": 3416 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12564": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12564, "effectName": "battlecruiserSkillLevelPreMulShipBonusCBC4Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5956, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12565": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12565, "effectName": "shipBonusDroneTrackingSpeedGBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 160, "modifyingAttributeID": 747, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12566": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12566, "effectName": "shipBonusDroneMWDboostrole6", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 2303, "operation": 6, "skillTypeID": 3436 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12567": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12567, "effectName": "shipBonusSmallProjectileFalloffRole6", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 158, "modifyingAttributeID": 2303, "operation": 6, "skillTypeID": 3302 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12568": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12568, "effectName": "eliteBonusJustWarpScramblerRangeBonusBlops1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 1257, "operation": 6, "skillTypeID": 3449 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12569": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12569, "effectName": " eliteBonusJustWarpScramblerStrengthBonusBlops3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 105, "modifyingAttributeID": 2627, "operation": 2, "skillTypeID": 3449 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12572": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12572, "effectName": "moduleQADroneControlModuleEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "ItemModifier", "modifiedAttributeID": 352, "modifyingAttributeID": 5958, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12573": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12573, "effectName": "shipBonusLargeEnergyTurretCapReductionAB3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5960, "operation": 6, "skillTypeID": 3309 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12574": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12574, "effectName": "amarrBattleshipSkillLevelPreMulShipBonusAB3Ship", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5960, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12575": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12575, "effectName": "modeRemoteArmorRepairCapacitorCostPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5961, "operation": 5, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12576": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12576, "effectName": "modeRemoteShieldRepairCapacitorCostPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5961, "operation": 5, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12577": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12577, "effectName": "modeRemoteRepairAmountArmorPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 84, "modifyingAttributeID": 5962, "operation": 5, "skillTypeID": 16069 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12578": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12578, "effectName": "modeRemoteRepairAmountShieldPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 68, "modifyingAttributeID": 5962, "operation": 5, "skillTypeID": 3422 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12579": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12579, "effectName": " shipBonusArmorPlateMassGB3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 329, "modifiedAttributeID": 796, "modifyingAttributeID": 5240, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12586": { "disallowAutoRepeat": 0, "dischargeAttributeID": 5972, "distribution": 2, "durationAttributeID": 5970, "effectCategory": 1, "effectID": 12586, "effectName": "behaviorModuleBonusWarfareLinkMiningFake", "electronicChance": 0, "guid": "effects.WarfareLinkMining", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "propulsionChance": 0, "published": 0, "rangeAttributeID": 5971, "rangeChance": 0 }, "12591": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 12591, "effectName": "miningSensorArrayScannerUpgrade", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 5979, "modifyingAttributeID": 5979, "operation": 2 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12592": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12592, "effectName": "shipBonusCarrierA5SupportFighterBonusEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2211, "modifyingAttributeID": 5981, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12593": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12593, "effectName": "shipBonusCarrierC5SupportFighterBonusEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2246, "modifyingAttributeID": 5982, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2247, "modifyingAttributeID": 5982, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2248, "modifyingAttributeID": 5982, "operation": 6, "skillTypeID": 40573 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2249, "modifyingAttributeID": 5982, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12594": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12594, "effectName": "shipBonusCarrierG5SupportFighterBonusSpeed", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2151, "modifyingAttributeID": 5983, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12595": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12595, "effectName": "shipBonusCarrierM5SupportFighterBonusEffect", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2184, "modifyingAttributeID": 5984, "operation": 6, "skillTypeID": 40573 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12596": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1021646, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12596, "effectName": "shipMiningBonusYieldOreDestroyerRoleBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 5986, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12597": { "disallowAutoRepeat": 0, "dischargeAttributeID": 6, "durationAttributeID": 73, "effectCategory": 1, "effectID": 12597, "effectName": "moduleBonusIntegratedSensorArray", "electronicChance": 0, "guid": "effects.TriageMode", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 104, "modifyingAttributeID": 105, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 564, "modifyingAttributeID": 566, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2354, "modifyingAttributeID": 2354, "operation": 2 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 2343, "modifyingAttributeID": 2343, "operation": 2 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 211, "modifyingAttributeID": 1027, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 210, "modifyingAttributeID": 1029, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 208, "modifyingAttributeID": 1030, "operation": 6, "skillTypeID": 23069 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 209, "modifyingAttributeID": 1028, "operation": 6, "skillTypeID": 23069 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 76, "modifyingAttributeID": 237, "operation": 4 }, { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 797, "modifyingAttributeID": 797, "operation": 7 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 73, "modifyingAttributeID": 2346, "operation": 6, "skillTypeID": 21803 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5988, "operation": 6, "skillTypeID": 21802 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 6, "modifyingAttributeID": 5988, "operation": 6, "skillTypeID": 21803 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12739": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1022431, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12739, "effectName": "shipBonusEnergyNeutOptimalAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 71, "modifiedAttributeID": 54, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12740": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1022434, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12740, "effectName": "shipBonusEnergyNosOptimalAC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 68, "modifiedAttributeID": 54, "modifyingAttributeID": 656, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12753": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12753, "effectName": "shipRoleBonusOREExecutiveIssueMiningCriticalHitChanceBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6048, "operation": 6, "skillTypeID": 3386 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12754": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12754, "effectName": "miningCritChanceSkillBoostLevelBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 6049, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12755": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12755, "effectName": "miningCritChanceSkillPostPercentLRSMBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6049, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6049, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12756": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12756, "effectName": "miningCritYieldSkillBoostLevelBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 6050, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12757": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12757, "effectName": "miningCritYieldSkillPostPercentLRSMBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5969, "modifyingAttributeID": 6050, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5969, "modifyingAttributeID": 6050, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12758": { "description_de": "Automatisch erzeugter Effekt", "description_en-us": "Automatically generated effect", "description_es": "Efecto generado automáticamente.", "description_fr": "Effet généré automatiquement", "description_it": "Automatically generated effect", "description_ja": "自動生成効果", "description_ko": "자동 생성 효과", "description_ru": "Автоматически созданный эффект", "description_zh": "自动生成效果", "descriptionID": 1022818, "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12758, "effectName": "shipRoleBonusAnhingaLargeMissilePowerFittingBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 30, "modifyingAttributeID": 6054, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 30, "modifyingAttributeID": 6054, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 30, "modifyingAttributeID": 6054, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12759": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 12759, "effectName": "miningCritChanceBonusOreIceOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6049, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6049, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12760": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 12760, "effectName": "miningCritBonusYieldBonusOreIceOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5969, "modifyingAttributeID": 6050, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5969, "modifyingAttributeID": 6050, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12761": { "disallowAutoRepeat": 0, "effectCategory": 4, "effectID": 12761, "effectName": "miningWasteChanceBonusOreIceOnline", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3154, "modifyingAttributeID": 6053, "operation": 6, "skillTypeID": 3386 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3154, "modifyingAttributeID": 6053, "operation": 6, "skillTypeID": 16281 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 3154, "modifyingAttributeID": 6053, "operation": 6, "skillTypeID": 25544 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12764": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12764, "effectName": "shipRoleBonusAnhingaLargeMissileCpuFittingBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 50, "modifyingAttributeID": 6055, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 50, "modifyingAttributeID": 6055, "operation": 0 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 50, "modifyingAttributeID": 6055, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12765": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12765, "effectName": "shipBonusTorpedoAndCruiseMissileExplosionVelocityMB", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 490, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12766": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12766, "effectName": "shipBonusTorpedoAndCruiseMissileExplosionRadiusCBC1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3326 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 654, "modifyingAttributeID": 743, "operation": 6, "skillTypeID": 3325 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12767": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12767, "effectName": "tacticalBonusSkuaDefensiveShieldRechargeRate", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "ItemModifier", "modifiedAttributeID": 479, "modifyingAttributeID": 6057, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12771": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12771, "effectName": "shipRoleBonusPerseveranceIceMiningCriticalHitChanceBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 6062, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12772": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12772, "effectName": "shipIceMiningCriticalHitChanceBonusOreDestroyer1", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5967, "modifyingAttributeID": 5820, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12773": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12773, "effectName": "shipIceMiningCriticalHitYieldBonusOreDestroyer2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 5969, "modifyingAttributeID": 5821, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12774": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12774, "effectName": "shipIceMiningRangeBonusOreDestroyer3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 5822, "operation": 6, "skillTypeID": 16281 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12777": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12777, "effectName": "roleBonusCDLinksPGCPUReductionSkua", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 30, "modifyingAttributeID": 2064, "operation": 6, "skillTypeID": 3348 }, { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 50, "modifyingAttributeID": 2064, "operation": 6, "skillTypeID": 3348 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12781": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12781, "effectName": "shipETOptimalRange1AF", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 54, "modifyingAttributeID": 464, "operation": 6, "skillTypeID": 3303 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12790": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12790, "effectName": "shipBonusTorpedoAndCruiseMissileExplosionVelocityCBC2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3325 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 653, "modifyingAttributeID": 745, "operation": 6, "skillTypeID": 3326 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12794": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12794, "effectName": "shipRocketMaxVelocityBonusPostDivSkua", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 6079, "operation": 5, "skillTypeID": 3320 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12795": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12795, "effectName": "shipLightMissileMaxVelocityBonusPostDivSkua", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 6078, "operation": 5, "skillTypeID": 3321 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12796": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12796, "effectName": "shipModeMissileFlightTimePostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 281, "modifyingAttributeID": 6080, "operation": 5, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12798": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12798, "effectName": "shipModeMissileVelocityPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 37, "modifyingAttributeID": 6081, "operation": 5, "skillTypeID": 3319 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12799": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12799, "effectName": "shipModeAnhingaCruiseLauncherTorpedoLauncherRapidHeavyLauncherROFPostDiv", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 506, "modifiedAttributeID": 51, "modifyingAttributeID": 6082, "operation": 5 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1245, "modifiedAttributeID": 51, "modifyingAttributeID": 6082, "operation": 5 }, { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 508, "modifiedAttributeID": 51, "modifyingAttributeID": 6082, "operation": 5 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12801": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12801, "effectName": "miningAmountMultiplierSkillBonusPreMul", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "itemID", "func": "ItemModifier", "modifiedAttributeID": 434, "modifyingAttributeID": 280, "operation": 0 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12802": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12802, "effectName": "MutatedMiningDroneOperationMiningAmountBonusPostPercentMiningDroneAmountPercentChar", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 77, "modifyingAttributeID": 434, "operation": 6, "skillTypeID": 60515 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12811": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12811, "effectName": "eliteBonusStasisGrapplerMaxRangeBlackOps3", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 1672, "modifiedAttributeID": 54, "modifyingAttributeID": 2627, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12834": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12834, "effectName": "shipBonusForceAuxiliaryG5CapAmount", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 90, "modifyingAttributeID": 6112, "operation": 6, "skillTypeID": 24572 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12835": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12835, "effectName": "shipBonusForceAuxiliaryC5CapBoosterStrength", "electronicChance": 0, "guid": "", "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 87, "modifiedAttributeID": 67, "modifyingAttributeID": 6113, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12836": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12836, "effectName": "shipBonusForceAuxiliaryA5CapBoosterStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 87, "modifiedAttributeID": 67, "modifyingAttributeID": 6114, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12837": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12837, "effectName": "shipBonusForceAuxiliaryM5CapBoosterStrength", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationGroupModifier", "groupID": 87, "modifiedAttributeID": 67, "modifyingAttributeID": 6116, "operation": 6 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12838": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12838, "effectName": "expeditionCommandBurstProbeStrengthBonusCharIDEffectPassivePostMul", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1371, "modifyingAttributeID": 6118, "operation": 4, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12839": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12839, "effectName": "expeditionCommandBurstProbeDeviationBonusCharIDEffectPassivePostMul", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 1372, "modifyingAttributeID": 6119, "operation": 4, "skillTypeID": 3412 } ], "propulsionChance": 0, "published": 0, "rangeAttributeID": 54, "rangeChance": 0 }, "12844": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12844, "effectName": "skillBonusAmarrFighters", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92397 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92397 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92397 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12846": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12846, "effectName": "skillBonusCaldariFighters", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92400 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92400 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92400 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12847": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12847, "effectName": "skillBonusGallenteFighters", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92398 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92398 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92398 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12848": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12848, "effectName": "skillBonusMinmatarFighters", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2226, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92399 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2178, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92399 }, { "domain": "charID", "func": "OwnerRequiredSkillModifier", "modifiedAttributeID": 2130, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92399 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 }, "12862": { "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 12862, "effectName": "extralargeDisintegratorSkillDmgBonus", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, "isWarpSafe": 0, "modifierInfo": [ { "domain": "shipID", "func": "LocationRequiredSkillModifier", "modifiedAttributeID": 64, "modifyingAttributeID": 292, "operation": 6, "skillTypeID": 92541 } ], "propulsionChance": 0, "published": 0, "rangeChance": 0 } } ================================================ FILE: staticdata/fsd_built/dogmaunits.0.json ================================================ { "1": { "description_de": "Meter", "description_en-us": "Meter", "description_es": "Metro.", "description_fr": "Mètre", "description_it": "Meter", "description_ja": "メートル", "description_ko": "m", "description_ru": "метр", "description_zh": "米", "descriptionID": 77965, "displayName_de": "m", "displayName_en-us": "m", "displayName_es": "m", "displayName_fr": "m", "displayName_it": "m", "displayName_ja": "m", "displayName_ko": "m", "displayName_ru": "м", "displayName_zh": "m", "displayNameID": 78005, "name": "Length" }, "2": { "description_de": "Kilogramm", "description_en-us": "Kilogram", "description_es": "Kilogramo.", "description_fr": "Kilogramme", "description_it": "Kilogram", "description_ja": "キログラム", "description_ko": "kg", "description_ru": "килограмм", "description_zh": "千克", "descriptionID": 77966, "displayName_de": "kg", "displayName_en-us": "kg", "displayName_es": "kg", "displayName_fr": "kg", "displayName_it": "kg", "displayName_ja": "kg", "displayName_ko": "kg", "displayName_ru": "кг", "displayName_zh": "kg", "displayNameID": 78006, "name": "Mass" }, "3": { "description_de": "Sekunde", "description_en-us": "Second", "description_es": "Segundo.", "description_fr": "Seconde", "description_it": "Second", "description_ja": "秒", "description_ko": "s", "description_ru": "секунда", "description_zh": "秒", "descriptionID": 77967, "displayName_de": "s", "displayName_en-us": "sec", "displayName_es": "s", "displayName_fr": "sec", "displayName_it": "sec", "displayName_ja": "sec", "displayName_ko": "초", "displayName_ru": "сек.", "displayName_zh": "s", "displayNameID": 78007, "name": "Time" }, "4": { "description_de": "Ampere", "description_en-us": "Ampere", "description_es": "Amperio.", "description_fr": "Ampère", "description_it": "Ampere", "description_ja": "アンペア", "description_ko": "A", "description_ru": "ампер", "description_zh": "安培", "descriptionID": 77968, "displayName_de": "A", "displayName_en-us": "A", "displayName_es": "A", "displayName_fr": "A", "displayName_it": "A", "displayName_ja": "A", "displayName_ko": "A", "displayName_ru": "А", "displayName_zh": "A", "displayNameID": 78008, "name": "Electric Current" }, "5": { "description_de": "Kelvin", "description_en-us": "Kelvin", "description_es": "Kelvin.", "description_fr": "Kelvin", "description_it": "Kelvin", "description_ja": "ケルビン", "description_ko": "K", "description_ru": "кельвин", "description_zh": "开尔文", "descriptionID": 77969, "displayName_de": "K", "displayName_en-us": "K", "displayName_es": "K", "displayName_fr": "K", "displayName_it": "K", "displayName_ja": "K", "displayName_ko": "K", "displayName_ru": "К", "displayName_zh": "K", "displayNameID": 78009, "name": "Temperature" }, "6": { "description_de": "Mol", "description_en-us": "Mole", "description_es": "Mole.", "description_fr": "Mole", "description_it": "Mole", "description_ja": "モル", "description_ko": "mol", "description_ru": "моль", "description_zh": "摩尔", "descriptionID": 77970, "displayName_de": "mol", "displayName_en-us": "mol", "displayName_es": "mol", "displayName_fr": "mol", "displayName_it": "mol", "displayName_ja": "mol", "displayName_ko": "mol", "displayName_ru": "моль", "displayName_zh": "mol", "displayNameID": 78010, "name": "Amount Of Substance" }, "7": { "description_de": "Candela", "description_en-us": "Candela", "description_es": "Candela.", "description_fr": "Candela", "description_it": "Candela", "description_ja": "カンデラ", "description_ko": "cd", "description_ru": "кандела", "description_zh": "坎德拉", "descriptionID": 77971, "displayName_de": "cd", "displayName_en-us": "cd", "displayName_es": "cd", "displayName_fr": "cd", "displayName_it": "cd", "displayName_ja": "cd", "displayName_ko": "cd", "displayName_ru": "кд", "displayName_zh": "cd", "displayNameID": 78011, "name": "Luminous Intensity" }, "8": { "description_de": "Quadratmeter", "description_en-us": "Square meter", "description_es": "Metro cuadrado.", "description_fr": "Mètre carré", "description_it": "Square meter", "description_ja": "平方メートル", "description_ko": "m²", "description_ru": "квадратный метр", "description_zh": "平方米", "descriptionID": 77972, "displayName_de": "m2", "displayName_en-us": "m2", "displayName_es": "m²", "displayName_fr": "m2", "displayName_it": "m2", "displayName_ja": "m2", "displayName_ko": "m²", "displayName_ru": "m2", "displayName_zh": "m2", "displayNameID": 78012, "name": "Area" }, "9": { "description_de": "Kubikmeter", "description_en-us": "Cubic meter", "description_es": "Metro cúbico.", "description_fr": "Mètre cube", "description_it": "Cubic meter", "description_ja": "立方メートル", "description_ko": "m³", "description_ru": "кубический метр", "description_zh": "立方米", "descriptionID": 77973, "displayName_de": "m3", "displayName_en-us": "m3", "displayName_es": "m³", "displayName_fr": "m³", "displayName_it": "m3", "displayName_ja": "m3", "displayName_ko": "m³", "displayName_ru": "м^3", "displayName_zh": "m3", "displayNameID": 78013, "name": "Volume" }, "10": { "description_de": "Meter pro Sekunde", "description_en-us": "Meter per second", "description_es": "Metro por segundo.", "description_fr": "Mètre par seconde", "description_it": "Meter per second", "description_ja": "メートル毎秒", "description_ko": "m/s", "description_ru": "метр в секунду", "description_zh": "米/秒", "descriptionID": 77974, "displayName_de": "m/s", "displayName_en-us": "m/sec", "displayName_es": "m/s", "displayName_fr": "m/sec", "displayName_it": "m/sec", "displayName_ja": "m/sec", "displayName_ko": "m/s", "displayName_ru": "м/с", "displayName_zh": "m/s", "displayNameID": 78014, "name": "Speed" }, "11": { "description_de": "Meter pro Quadratsekunde", "description_en-us": "Meter per second squared", "description_es": "Metro por segundo al cuadrado.", "description_fr": "Mètre par seconde carrée", "description_it": "Meter per second squared", "description_ja": "メートル毎秒毎秒", "description_ko": "m/s²", "description_ru": "метр в секунду в квадрате", "description_zh": "米/平方秒", "descriptionID": 77975, "displayName_de": "m/s", "displayName_en-us": "m/sec", "displayName_es": "m/s", "displayName_fr": "m/sec", "displayName_it": "m/sec", "displayName_ja": "m/sec", "displayName_ko": "m/s", "displayName_ru": "м/с", "displayName_zh": "m/s", "displayNameID": 78015, "name": "Acceleration" }, "12": { "description_de": "Inverser Meter", "description_en-us": "Reciprocal meter", "description_es": "Metro recíproco.", "description_fr": "Mètre inverse", "description_it": "Reciprocal meter", "description_ja": "毎メートル", "description_ko": "m-1", "description_ru": "обратный метр", "description_zh": "米倒数", "descriptionID": 77976, "displayName_de": "m-1", "displayName_en-us": "m-1", "displayName_es": "m-1", "displayName_fr": "m-1", "displayName_it": "m-1", "displayName_ja": "m-1", "displayName_ko": "m-1", "displayName_ru": "м-1", "displayName_zh": "m-1", "displayNameID": 78016, "name": "Wave Number" }, "13": { "description_de": "Kilogramm pro Kubikmeter", "description_en-us": "Kilogram per cubic meter", "description_es": "Kilogramo por metro cúbico.", "description_fr": "Kilogramme par mètre cubique", "description_it": "Kilogram per cubic meter", "description_ja": "キログラム毎立方メートル", "description_ko": "kg/m³", "description_ru": "килограмм на кубический метр", "description_zh": "千克/立方米", "descriptionID": 77977, "displayName_de": "kg/m3", "displayName_en-us": "kg/m3", "displayName_es": "kg/m³", "displayName_fr": "kg/m³", "displayName_it": "kg/m3", "displayName_ja": "kg/m3", "displayName_ko": "kg/m³", "displayName_ru": "кг/м^3", "displayName_zh": "kg/m3", "displayNameID": 78017, "name": "Mass Density" }, "14": { "description_de": "Kubikmeter pro Kilogramm", "description_en-us": "Cubic meter per kilogram", "description_es": "Metro cúbico por kilogramo.", "description_fr": "Mètre cubique par kilogramme", "description_it": "Cubic meter per kilogram", "description_ja": "立方メートル毎キログラム", "description_ko": "m³/kg", "description_ru": "кубический метр на килограмм", "description_zh": "立方米/千克", "descriptionID": 77978, "displayName_de": "m3/kg", "displayName_en-us": "m3/kg", "displayName_es": "m³/kg", "displayName_fr": "m³/kg", "displayName_it": "m3/kg", "displayName_ja": "m3/kg", "displayName_ko": "m³/kg", "displayName_ru": "м^3/кг", "displayName_zh": "m3/kg", "displayNameID": 78018, "name": "Specific Volume" }, "15": { "description_de": "Ampere pro Quadratmeter", "description_en-us": "Ampere per square meter", "description_es": "Amperio por metro cuadrado.", "description_fr": "Ampère par mètre carré", "description_it": "Ampere per square meter", "description_ja": "アンペア毎平方メートル", "description_ko": "A/m²", "description_ru": "ампер на квадратный метр", "description_zh": "安培/平方米", "descriptionID": 77979, "displayName_de": "A/m2", "displayName_en-us": "A/m2", "displayName_es": "A/m²", "displayName_fr": "A/m2", "displayName_it": "A/m2", "displayName_ja": "A/m2", "displayName_ko": "A/m²", "displayName_ru": "A/м^2", "displayName_zh": "A/m2", "displayNameID": 78019, "name": "Current Density" }, "16": { "description_de": "Ampere pro Meter", "description_en-us": "Ampere per meter", "description_es": "Amperio por metro.", "description_fr": "Ampère par mètre", "description_it": "Ampere per meter", "description_ja": "アンペア毎メートル", "description_ko": "A/m", "description_ru": "ампер на метр", "description_zh": "安培/米", "descriptionID": 77980, "displayName_de": "A/m", "displayName_en-us": "A/m", "displayName_es": "A/m", "displayName_fr": "A/m", "displayName_it": "A/m", "displayName_ja": "A/m", "displayName_ko": "A/m", "displayName_ru": "A/м", "displayName_zh": "A/m", "displayNameID": 78020, "name": "Magnetic Field Strength" }, "17": { "description_de": "Mol pro Kubikmeter", "description_en-us": "Mole per cubic meter", "description_es": "Mole por metro cúbico.", "description_fr": "Mole par mètre cubique", "description_it": "Mole per cubic meter", "description_ja": "モル毎立方メートル", "description_ko": "mol/m³", "description_ru": "моль на кубический метр", "description_zh": "摩尔/立方米", "descriptionID": 77981, "displayName_de": "mol/m3", "displayName_en-us": "mol/m3", "displayName_es": "mol/m³", "displayName_fr": "mol/m³", "displayName_it": "mol/m3", "displayName_ja": "mol/m3", "displayName_ko": "mol/m³", "displayName_ru": "моль/м^3", "displayName_zh": "mol/m3", "displayNameID": 78021, "name": "Amount-Of-Substance Concentration" }, "18": { "description_de": "Candela pro Quadratmeter", "description_en-us": "Candela per square meter", "description_es": "Candela por metro cuadrado.", "description_fr": "Candela par mètre carré", "description_it": "Candela per square meter", "description_ja": "カンデラ毎平方メートル", "description_ko": "cd/m²", "description_ru": "кандела на квадратный метр", "description_zh": "坎德拉/平方米", "descriptionID": 77982, "displayName_de": "cd/m2", "displayName_en-us": "cd/m2", "displayName_es": "cd/m²", "displayName_fr": "cd/m2", "displayName_it": "cd/m2", "displayName_ja": "cd/m2", "displayName_ko": "cd/m²", "displayName_ru": "кд/м^2", "displayName_zh": "cd/m2", "displayNameID": 78022, "name": "Luminance" }, "19": { "description_de": "Kilogramm pro Kilogramm, was durch die Nummer 1 dargestellt werden kann", "description_en-us": "Kilogram per kilogram, which may be represented by the number 1", "description_es": "Kilogramo por kilogramo, que puede representarse con el número 1.", "description_fr": "Kilogramme par kilogramme, ce qui peut être représenté par le chiffre 1", "description_it": "Kilogram per kilogram, which may be represented by the number 1", "description_ja": "キログラム毎キログラム。数値 1 で表すことができます", "description_ko": "kg/kg, 숫자 1로 표현되기도 합니다.", "description_ru": "килограмм на килограмм (иногда обозначается цифрой 1)", "description_zh": "千克/千克,可用数字1表示", "descriptionID": 77983, "displayName_de": "kg/kg = 1", "displayName_en-us": "kg/kg = 1", "displayName_es": "kg/kg = 1", "displayName_fr": "kg/kg = 1", "displayName_it": "kg/kg = 1", "displayName_ja": "kg/kg = 1", "displayName_ko": "kg/kg = 1", "displayName_ru": "кг/кг = 1", "displayName_zh": "kg/kg = 1", "displayNameID": 78023, "name": "Mass Fraction" }, "101": { "displayName_de": "s", "displayName_en-us": "s", "displayName_es": "s", "displayName_fr": "s", "displayName_it": "s", "displayName_ja": "s", "displayName_ko": "s", "displayName_ru": "c", "displayName_zh": "s", "displayNameID": 78024, "name": "Milliseconds" }, "102": { "displayName_de": "mm", "displayName_en-us": "mm", "displayName_es": "mm", "displayName_fr": "mm", "displayName_it": "mm", "displayName_ja": "mm", "displayName_ko": "mm", "displayName_ru": "мм", "displayName_zh": "mm", "displayNameID": 78025, "name": "Millimeters" }, "103": { "name": "MegaPascals" }, "104": { "description_de": "Zeigt an, dass die Einheit ein Multiplikator ist.", "description_en-us": "Indicates that the unit is a multiplier.", "description_es": "Indica que la unidad es un multiplicador.", "description_fr": "Indique que l'unité est un multiplicateur.", "description_it": "Indicates that the unit is a multiplier.", "description_ja": "乗数の単位を表します。", "description_ko": "단위는 승수를 나타냅니다.", "description_ru": "Указывает на то, что величина является множителем.", "description_zh": "表明该单位是乘数。", "descriptionID": 77984, "displayName_de": "x", "displayName_en-us": "x", "displayName_es": "x", "displayName_fr": "x", "displayName_it": "x", "displayName_ja": "x", "displayName_ko": "x", "displayName_ru": "х", "displayName_zh": "x", "displayNameID": 78026, "name": "Multiplier" }, "105": { "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78027, "name": "Percentage" }, "106": { "displayName_de": "tf", "displayName_en-us": "tf", "displayName_es": "tf", "displayName_fr": "tf", "displayName_it": "tf", "displayName_ja": "tf", "displayName_ko": "tf", "displayName_ru": "Tф", "displayName_zh": "tf", "displayNameID": 78028, "name": "Teraflops" }, "107": { "displayName_de": "MW", "displayName_en-us": "MW", "displayName_es": "MW", "displayName_fr": "MW", "displayName_it": "MW", "displayName_ja": "MW", "displayName_ko": "MW", "displayName_ru": "МВт", "displayName_zh": "MW", "displayNameID": 78029, "name": "MegaWatts" }, "108": { "description_de": "Für Resistenzen verwendet.\r\n0,0 = 100%\r\n1,0 = 0%", "description_en-us": "Used for resistance.\r\n0.0 = 100% 1.0 = 0%", "description_es": "Se usa en la resistencia.\n\n0,0 = 100% 1,0 = 0%", "description_fr": "Utilisé pour la résistance. 0,0 = 100% 1,0 = 0 %", "description_it": "Used for resistance.\r\n0.0 = 100% 1.0 = 0%", "description_ja": "抵抗で使用。\n0.0 = 100% 1.0 = 0%", "description_ko": "저항력 표기에 사용됩니다.
0.0 = 100% 1.0 = 0%", "description_ru": "Используется для обозначения силы сопротивления.\n0.0 = 100%\n1.0 = 0%", "description_zh": "用于抗性。0.0 = 100% 1.0 = 0%", "descriptionID": 77985, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78030, "name": "Inverse Absolute Percent" }, "109": { "description_de": "Für Multiplikatoren verwendet, um Prozent anzuzeigen.1,1 = +10%0,9 = -10%", "description_en-us": "Used for multipliers displayed as %1.1 = +10%0.9 = -10%", "description_es": "Se usa en los multiplicadores que se muestran como %1,1 = +10 %0,9 = -10 %.", "description_fr": "Utilisé pour les multiplicateurs affichés en %. 1,1 = +10 %, 0,9 = -10 %", "description_it": "Used for multipliers displayed as %1.1 = +10%0.9 = -10%", "description_ja": "% として表示される乗数で使用:1.1=+10%、0.9=-10%", "description_ko": "%로 나타낸 승수 표기에 사용됩니다. 1.1 = +10%, 0.9 = -10%", "description_ru": "Используется для множителей в виде %. 1,1 = +10%; 0,9 = -10%", "description_zh": "用于乘数,显示为 %1.1 = +10%0.9 = -10%", "descriptionID": 77986, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78031, "name": "Modifier Percent" }, "111": { "description_de": "Für die Modifikation von Schadensresistenzen verwendet. Schadensresistenzbonus.\r\n0,1 = 90%\r\n0,9 = 10%", "description_en-us": "Used to modify damage resistance. Damage resistance bonus.\r\n0.1 = 90%\r\n0.9 = 10%", "description_es": "Se usa para modificar la resistencia al daño. Bonificación de resistencia a daños.\n\n0,1 = 90 %.\n\n0,9 = 10 %.", "description_fr": "Utilisé pour modifier la résistance aux dégâts. Bonus de résistance aux dégâts. 0,1 = 90% 0,9 = 10%", "description_it": "Used to modify damage resistance. Damage resistance bonus.\r\n0.1 = 90%\r\n0.9 = 10%", "description_ja": "ダメージレジスタンスを変更するときに使用。ダメージレジスタンスボーナス。\r\n0.1 = 90%\n0.9 = 0%", "description_ko": "피해 저항력 변경에 사용됩니다. 피해 저항력 보너스.
0.1 = 90%
0.9 = 10%", "description_ru": "Используется для указания изменений сопротивляемости различным видам ущерба. Бонус к сопротивляемости различным видам ущерба.\n0.1 = 90%\n0.9 = 10%", "description_zh": "用来调整伤害抗性。伤害抗性加成。0.1 = 90%\n0.9 = 10%", "descriptionID": 77987, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78032, "name": "Inversed Modifier Percent" }, "112": { "description_de": "Rotationsgeschwindigkeit.", "description_en-us": "Rotation speed.", "description_es": "Velocidad de rotación.", "description_fr": "Vitesse de rotation.", "description_it": "Rotation speed.", "description_ja": "回転速度。", "description_ko": "회전속도.", "description_ru": "Скорость вращения.", "description_zh": "转速。", "descriptionID": 77988, "displayName_de": "rad/s", "displayName_en-us": "rad/sec", "displayName_es": "rad/s", "displayName_fr": "rad/sec", "displayName_it": "rad/sec", "displayName_ja": "rad/sec", "displayName_ko": "rad/초", "displayName_ru": "рад/с", "displayName_zh": "r/s", "displayNameID": 78033, "name": "Radians/Second" }, "113": { "displayName_de": "HP", "displayName_en-us": "HP", "displayName_es": "PV", "displayName_fr": "PV", "displayName_it": "HP", "displayName_ja": "HP", "displayName_ko": "HP", "displayName_ru": "ед.", "displayName_zh": "HP", "displayNameID": 78034, "name": "Hitpoints" }, "114": { "description_de": "Gigajoule", "description_en-us": "Giga Joule", "description_es": "Gigajulio.", "description_fr": "Gigajoule", "description_it": "Giga Joule", "description_ja": "ギガジュール", "description_ko": "GJ", "description_ru": "гигаджоуль", "description_zh": "千兆焦耳", "descriptionID": 77989, "displayName_de": "GJ", "displayName_en-us": "GJ", "displayName_es": "GJ", "displayName_fr": "GJ", "displayName_it": "GJ", "displayName_ja": "GJ", "displayName_ko": "GJ", "displayName_ru": "ГДж", "displayName_zh": "GJ", "displayNameID": 78035, "name": "capacitor units" }, "115": { "displayName_de": "groupID", "displayName_en-us": "groupID", "displayName_es": "groupID", "displayName_fr": "groupID", "displayName_it": "groupID", "displayName_ja": "グループ ID", "displayName_ko": "그룹ID", "displayName_ru": "groupID", "displayName_zh": "组别ID", "displayNameID": 78036, "name": "groupID" }, "116": { "displayName_de": "typeID", "displayName_en-us": "typeID", "displayName_es": "typeID", "displayName_fr": "typeID", "displayName_it": "typeID", "displayName_ja": "タイプ ID", "displayName_ko": "타입ID", "displayName_ru": "typeID", "displayName_zh": "类别ID", "displayNameID": 78037, "name": "typeID" }, "117": { "description_de": "1=small 2=medium 3=large 4=x-large", "description_en-us": "1=small 2=medium 3=large 4=x-large", "description_es": "1=pequeño 2=mediano 3=grande 4=extragrande", "description_fr": "1=small 2=medium 3=large 4=x-large", "description_it": "1=small 2=medium 3=large 4=x-large", "description_ja": "1=小型 2=中型 3=大型 4=超大型", "description_ko": "1=소형 2=중형 3=대형 4=초대형", "description_ru": "1=малый 2=средний 3=большой 4=оч. большой", "description_zh": "1=小型 2=中型 3=大型 4=超大型", "descriptionID": 318074, "displayName_de": "1=small 2=medium 3=l", "displayName_en-us": "1=small 2=medium 3=l", "displayName_es": "1=pequeño 2=mediano 3=grande", "displayName_fr": "1 = petit 2 = intermédiaire 3 = l", "displayName_it": "1=small 2=medium 3=l", "displayName_ja": "1=小 2=中 3=大", "displayName_ko": "1= 소형 2= 중형 3= 대형", "displayName_ru": "1=малые 2=средние 3=б", "displayName_zh": "1=小型 2=中型 3=大型", "displayNameID": 78038, "name": "Sizeclass" }, "118": { "displayName_de": "Ore units", "displayName_en-us": "Ore units", "displayName_es": "Unidades de mena", "displayName_fr": "Unités de minérai", "displayName_it": "Ore units", "displayName_ja": "鉱石ユニット", "displayName_ko": "광물 개수", "displayName_ru": "ед. руды", "displayName_zh": "矿石单位", "displayNameID": 78039, "name": "Ore units" }, "119": { "displayName_de": "attributeID", "displayName_en-us": "attributeID", "displayName_es": "attributeID", "displayName_fr": "attributeID", "displayName_it": "attributeID", "displayName_ja": "属性 ID", "displayName_ko": "분류ID", "displayName_ru": "attributeID", "displayName_zh": "属性ID", "displayNameID": 78040, "name": "attributeID" }, "120": { "displayName_de": "Punkte", "displayName_en-us": "points", "displayName_es": "puntos", "displayName_fr": "points", "displayName_it": "points", "displayName_ja": "ポイント", "displayName_ko": "포인트", "displayName_ru": "ед.", "displayName_zh": "点", "displayNameID": 78041, "name": "attributePoints" }, "121": { "description_de": "Für echte Prozentzahlen verwendet; die Zahl 5 ist beispielsweise 5%.", "description_en-us": "Used for real percentages, i.e. the number 5 is 5%", "description_es": "Se usa en porcentajes reales. Por ejemplo, el número 5 es un 5 %.", "description_fr": "Utilisé pour les pourcentages réels (ex. : le nombre 5 est 5 %)", "description_it": "Used for real percentages, i.e. the number 5 is 5%", "description_ja": "実際のパーセンテージで使用(数値 5 は 5%)", "description_ko": "실제 백분율 표기에 사용됩니다. 예를 들어, 숫자 5는 5%가 됩니다.", "description_ru": "Используется для обозначения процентов (например, число 5 соответствует 5%)", "description_zh": "用于真实百分比,比如数字5表示5%", "descriptionID": 77990, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78042, "name": "realPercent" }, "122": { "name": "Fitting slots" }, "123": { "description_de": "Zeigt Sekunden direkt an.", "description_en-us": "Shows seconds directly", "description_es": "Indica directamente los segundos.", "description_fr": "Indique directement les secondes", "description_it": "Shows seconds directly", "description_ja": "秒を表します", "description_ko": "초를 그대로 나타냅니다.", "description_ru": "Показывает дату и время в виде количества секунд", "description_zh": "直接显示秒", "descriptionID": 77991, "displayName_de": "s", "displayName_en-us": "sec", "displayName_es": "s", "displayName_fr": "sec", "displayName_it": "sec", "displayName_ja": "sec", "displayName_ko": "초", "displayName_ru": "сек.", "displayName_zh": "s", "displayNameID": 78043, "name": "trueTime" }, "124": { "description_de": "Für relative Prozentzahlen verwendet, welche als % angezeigt werden.", "description_en-us": "Used for relative percentages displayed as %", "description_es": "Se usa en los porcentajes relativos como %.", "description_fr": "Utilisé pour les pourcentages relatifs affichés comme %", "description_it": "Used for relative percentages displayed as %", "description_ja": "% として表示される相対的なパーセンテージで使用", "description_ko": "%로 표시된 상대적 백분율 표기에 사용됩니다.", "description_ru": "Используется для обозначения относительных долей, выражаемых в процентах", "description_zh": "用于相对百分比,显示为 %", "descriptionID": 77992, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78044, "name": "Modifier Relative Percent" }, "125": { "displayName_de": "N", "displayName_en-us": "N", "displayName_es": "N", "displayName_fr": "N", "displayName_it": "N", "displayName_ja": "N", "displayName_ko": "N", "displayName_ru": "Н", "displayName_zh": "N", "displayNameID": 78045, "name": "Newton" }, "126": { "displayName_de": "Lj", "displayName_en-us": "ly", "displayName_es": "años luz", "displayName_fr": "a.l.", "displayName_it": "ly", "displayName_ja": "ly", "displayName_ko": "ly", "displayName_ru": "св. г.", "displayName_zh": "光年", "displayNameID": 78046, "name": "Light Year" }, "127": { "description_de": "0,0 = 0%; 1,0 = 100%", "description_en-us": "0.0 = 0% 1.0 = 100%", "description_es": "0,0 = 0% 1,0 = 100%", "description_fr": "0,0 = 0% 1,0 = 100%", "description_it": "0.0 = 0% 1.0 = 100%", "description_ja": "0.0 = 0% 1.0 = 100%", "description_ko": "0.0 = 0% 1.0 = 100%", "description_ru": "0.0 = 0%\n1.0 = 100%", "description_zh": "0.0 = 0% 1.0 = 100%", "descriptionID": 77993, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 78047, "name": "Absolute Percent" }, "128": { "description_de": "Megabit pro Sekunde", "description_en-us": "Mega bits per second", "description_es": "Megabits por segundo.", "description_fr": "Mégabits par seconde", "description_it": "Mega bits per second", "description_ja": "メガビット毎秒", "description_ko": "MB/s", "description_ru": "мегабит в секунду", "description_zh": "兆比特/秒", "descriptionID": 77994, "displayName_de": "Mbit/s", "displayName_en-us": "Mbit/sec", "displayName_es": "Mbit/s", "displayName_fr": "Mbit/sec", "displayName_it": "Mbit/sec", "displayName_ja": "Mbit/sec", "displayName_ko": "Mbit/s", "displayName_ru": "Мбит/с", "displayName_zh": "Mbit/s", "displayNameID": 78048, "name": "Drone bandwidth" }, "129": { "description_de": "Stunden", "description_en-us": "Hours", "description_es": "Horas.", "description_fr": "Heures", "description_it": "Hours", "description_ja": "時間", "description_ko": "h", "description_ru": "часы", "description_zh": "小时", "descriptionID": 77995, "name": "Hours" }, "133": { "description_de": "ISK", "description_en-us": "ISK", "description_es": "ISK.", "description_fr": "ISK", "description_it": "ISK", "description_ja": "ISK", "description_ko": "ISK", "description_ru": "ISK", "description_zh": "星币", "descriptionID": 77996, "displayName_de": "ISK", "displayName_en-us": "ISK", "displayName_es": "ISK", "displayName_fr": "ISK", "displayName_it": "ISK", "displayName_ja": "ISK", "displayName_ko": "ISK", "displayName_ru": "ISK", "displayName_zh": "星币", "displayNameID": 78049, "name": "Money" }, "134": { "description_de": "Bandbreite für PI", "description_en-us": "Bandwidth for PI", "description_es": "Ancho de banda para la IP.", "description_fr": "Bande passante pour IP", "description_it": "Bandwidth for PI", "description_ja": "PI の帯域幅", "description_ko": "PI 대역폭", "description_ru": "Пропускная способность канала (для PI)", "description_zh": "行星互动的带宽", "descriptionID": 77997, "displayName_de": "m3/Stunde", "displayName_en-us": "m3/hour", "displayName_es": "m³/hora", "displayName_fr": "m³/heure", "displayName_it": "m3/hour", "displayName_ja": "m3/hour", "displayName_ko": "m³/시간", "displayName_ru": "м^3/ч", "displayName_zh": "立方米/时", "displayNameID": 78050, "name": "Logistical Capacity" }, "135": { "description_de": "Für Entfernungen verwendet; 1 AE = Entfernung zwischen Erde und Sonne.", "description_en-us": "Used to denote distance, 1AU = The distance from the Earth to the Sun.", "description_es": "Se usa para indicar distancias. 1 UA equivale a la distancia entre la Tierra y el Sol.", "description_fr": "Utilisé pour indiquer la distance, 1 UA = la distance entre la Terre et le Soleil.", "description_it": "Used to denote distance, 1AU = The distance from the Earth to the Sun.", "description_ja": "距離を表すときに使用。1 AU = 地球から太陽までの距離。", "description_ko": "거리 표기에 사용됩니다. 1AU = 지구에서 태양까지의 거리", "description_ru": "Используется для обозначения расстояний. 1 астрономическая единица (AU) эквивалентна расстоянию от Земли до Солнца.", "description_zh": "表示距离,1AU等于地球到太阳的距离。", "descriptionID": 77998, "displayName_de": "AE", "displayName_en-us": "AU", "displayName_es": "UA", "displayName_fr": "UA", "displayName_it": "AU", "displayName_ja": "AU", "displayName_ko": "AU", "displayName_ru": "а. е.", "displayName_zh": "AU", "displayNameID": 78051, "name": "Astronomical Unit" }, "136": { "description_de": "Slotzahlen-Prefix für diverse Zwecke", "description_en-us": "Slot number prefix for various purposes", "description_es": "Prefijo del número de ranura para varios propósitos.", "description_fr": "Préfixe d'emplacement utilisé dans diverses situations", "description_it": "Slot number prefix for various purposes", "description_ja": "汎用スロットの番号プレフィックス", "description_ko": "다양한 용도로 사용되는 접두사용 슬롯 번호", "description_ru": "Префикс номера разъема для различных целей", "description_zh": "用于多种场合的槽位数字前缀", "descriptionID": 77999, "displayName_de": "Slot", "displayName_en-us": "Slot", "displayName_es": "Ranura", "displayName_fr": "Emplacement", "displayName_it": "Slot", "displayName_ja": "スロット", "displayName_ko": "슬롯", "displayName_ru": "Разъем", "displayName_zh": "槽位", "displayNameID": 78052, "name": "Slot" }, "137": { "description_de": "Für die Darstellung Bool'scher Flaggen 1=True 0=False", "description_en-us": "For displaying boolean flags 1=True 0=False", "description_es": "Para mostrar marcas binarias. 1=Verdadero, 0=Falso.", "description_fr": "For displaying boolean flags 1=True 0=False", "description_it": "For displaying boolean flags 1=True 0=False", "description_ja": "ブール値フラグの表示", "description_ko": "참과 거짓 표기에 사용. 1=참, 0=거짓", "description_ru": "Для отображения булевых флагов 1=Истина 0=Ложь", "description_zh": "用于显示布尔标记 1=True 0=False", "descriptionID": 78000, "displayName_de": "1=True 0=False", "displayName_en-us": "1=True 0=False", "displayName_es": "1=Verdadero 0=Falso", "displayName_fr": "1 = vrai 0 = faux", "displayName_it": "1=True 0=False", "displayName_ja": "1=True 0=False", "displayName_ko": "1= 참 0= 거짓", "displayName_ru": "1=True 0=False", "displayName_zh": "1=True 0=False", "displayNameID": 78053, "name": "Boolean" }, "138": { "description_de": "Einheiten von etwas, beispielsweise Treibstoff", "description_en-us": "Units of something, for example fuel", "description_es": "Unidades de algún elemento, como combustible.", "description_fr": "Unités de quelque chose (ex. : de carburant)", "description_it": "Units of something, for example fuel", "description_ja": "何かの単位。例えば燃料など。", "description_ko": "연료 등의 항목에 사용되는 단위", "description_ru": "Единицы чего-либо (например, топлива)", "description_zh": "某样物品的单位,比如燃料", "descriptionID": 78001, "displayName_de": "Einheiten", "displayName_en-us": "units", "displayName_es": "unidades", "displayName_fr": "unités", "displayName_it": "units", "displayName_ja": "単位", "displayName_ko": "개", "displayName_ru": "ед.", "displayName_zh": "单位", "displayNameID": 78054, "name": "Units" }, "139": { "description_de": "Zwingt ein Plus-Zeichen für positive Werter", "description_en-us": "Forces a plus sign for positive values", "description_es": "Añade un signo más (+) a los valores positivos.", "description_fr": "Force un signe plus pour les valeurs positives", "description_it": "Forces a plus sign for positive values", "description_ja": "正の値に+記号を強制", "description_ko": "양수값 표기를 위해 더하기 부호 사용", "description_ru": "Принудительно присваивает положительное значение", "description_zh": "用于正值的加号", "descriptionID": 78002, "displayName_de": "+", "displayName_en-us": "+", "displayName_es": "+", "displayName_fr": "+", "displayName_it": "+", "displayName_ja": "+", "displayName_ko": "+", "displayName_ru": "+", "displayName_zh": "+", "displayNameID": 78055, "name": "Bonus" }, "140": { "description_de": "Für alles, was durch Stufen getrennt ist", "description_en-us": "For anything which is divided by levels", "description_es": "Para todo lo que se divida en niveles.", "description_fr": "Pour tout ce qui est divisé en niveaux", "description_it": "For anything which is divided by levels", "description_ja": "レベルにより分けられているもの", "description_ko": "레벨로 나뉘어지는 항목에 사용", "description_ru": "Для всего, что может быть разделено на уровни", "description_zh": "用于那些以等级划分的事物", "descriptionID": 78003, "displayName_de": "Stufe", "displayName_en-us": "Level", "displayName_es": "Nivel", "displayName_fr": "Niveau", "displayName_it": "Level", "displayName_ja": "レベル", "displayName_ko": "레벨", "displayName_ru": "Уровень", "displayName_zh": "等级", "displayNameID": 78056, "name": "Level" }, "141": { "description_de": "Für diverse Zählungen in Verbindung mit Geschützturm-, Werfer- und anderen Waffenmontageplätzen", "description_en-us": "For various counts to do with turret, launcher and rig hardpoints", "description_es": "Se usa en varios conceptos relacionados con los puntos de montaje de torretas, lanzadores y complementos.", "description_fr": "Pour diverses mesures liées aux points de fixation des tourelles, des lanceurs et des améliorations.", "description_it": "For various counts to do with turret, launcher and rig hardpoints", "description_ja": "タレット、ランチャー、およびリグハードポイントで行う多様なカウント", "description_ko": "터렛, 런처, 리그 슬롯 항목에 사용", "description_ru": "Для счетчиков, связанных с турелями, ракетными установками и тюнинг-модулями", "description_zh": "用于各种炮塔、发射器以及改装件的装配点数量", "descriptionID": 78004, "displayName_de": "Montageplätze", "displayName_en-us": "hardpoints", "displayName_es": "puntos de montaje", "displayName_fr": "points de fixation", "displayName_it": "hardpoints", "displayName_ja": "ハードポイント", "displayName_ko": "슬롯", "displayName_ru": "точки монтажа", "displayName_zh": "安装座", "displayNameID": 78057, "name": "Hardpoints" }, "142": { "displayName_de": "0=Weiblich 1=Männlich 2=Geschlechtsneutral", "displayName_en-us": "1=Male 2=Unisex 3=Female", "displayName_es": "1=Hombre 2=Unisex 3=Mujer", "displayName_fr": "1 = masculin 2 = unisexe 3 = féminin", "displayName_it": "1=Male 2=Unisex 3=Female", "displayName_ja": "1= 男性 2=ユニセックス 3=女性", "displayName_ko": "1=남성 2=공용 3=여성", "displayName_ru": "0=жен. 1=муж. 2=унисекс", "displayName_zh": "1=男性 2=中性 3=女性", "displayNameID": 78058, "name": "Sex" }, "143": { "description_de": "Datum und Uhrzeit", "description_en-us": "Date and time", "description_es": "La fecha y la hora.", "description_fr": "Date et heure", "description_it": "Date and time", "description_ja": "日時", "description_ko": "날짜 및 시간", "description_ru": "Дата и время", "description_zh": "日期和时间", "descriptionID": 312106, "name": "Datetime" }, "144": { "description_de": "AE pro Sekunde", "description_en-us": "AU per second", "description_es": "UA por segundo.", "description_fr": "UA par seconde", "description_it": "AU per second", "description_ja": "天文単位毎秒", "description_ko": "AU/s", "description_ru": "а. е. в секунду", "description_zh": "AU每秒", "descriptionID": 561538, "displayName_de": "AE/s", "displayName_en-us": "AU/s", "displayName_es": "UA/s", "displayName_fr": "UA/s", "displayName_it": "AU/s", "displayName_ja": "AU/秒", "displayName_ko": "AU/s", "displayName_ru": "а. е./сек.", "displayName_zh": "AU/s", "displayNameID": 561537, "name": "Warp speed" }, "205": { "description_de": "Bei in % angezeigten Multiplikatoren bedeutet 10 +10 %, -10 -10 % und 3,6 +3,6 %", "description_en-us": "Used for multipliers displayed as % 10 is +10% -10 is -10% 3.6 is +3.6%", "description_es": "Se usa en los multiplicadores que aparecen como %. 10 es +10 %; -10 es -10 %; 3,6 es +3,6 %.", "description_fr": "Utilisé pour les multiplicateurs affichés en %. 10 correspond à +10 %, -10 à -10 %, 3,6 à +3,6 %", "description_it": "Used for multipliers displayed as % 10 is +10% -10 is -10% 3.6 is +3.6%", "description_ja": "% として表示される乗数で使用:10=+10%、-10=-10%、3.6=+3.6%", "description_ko": "%로 나타낸 승수 표기에 사용됩니다. 10 = +10%, -10 = -10%, 3.6 = +3.6%", "description_ru": "Используется для множителей в виде %. 10 = +10%; -10 = -10%; 3,6 = +3,6%", "description_zh": "用于乘数,显示为 % 10 is +10% -10 is -10% 3.6 is +3.6%", "descriptionID": 592242, "displayName_de": "%", "displayName_en-us": "%", "displayName_es": "%", "displayName_fr": "%", "displayName_it": "%", "displayName_ja": "%", "displayName_ko": "%", "displayName_ru": "%", "displayName_zh": "%", "displayNameID": 592243, "name": "modifier realPercent" } } ================================================ FILE: staticdata/fsd_built/dynamicitemattributes.0.json ================================================ { "47297": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "554": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "47299": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.034999966621399, "min": 0.9700000286102295 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "554": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "47699": { "attributeIDs": { "6": { "max": 1.7999999523162842, "min": 1.399999976158142 }, "20": { "highIsGood": 0, "max": 1.034999966621399, "min": 0.9700000286102295 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.0750000476837158, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "47700": { "attributeIDs": { "6": { "max": 2.5, "min": 0.8999999761581421 }, "20": { "highIsGood": 0, "max": 1.100000023841858, "min": 0.8999999761581421 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 15419, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "47701": { "attributeIDs": { "6": { "max": 2.0, "min": 1.0 }, "20": { "highIsGood": 0, "max": 1.0700000524520874, "min": 0.949999988079071 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 15419, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "47729": { "attributeIDs": { "6": { "max": 1.7999999523162842, "min": 1.399999976158142 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.0750000476837158, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "47730": { "attributeIDs": { "6": { "max": 2.5, "min": 0.8999999761581421 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "47731": { "attributeIDs": { "6": { "max": 2.0, "min": 1.0 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "47733": { "attributeIDs": { "6": { "max": 1.7999999523162842, "min": 1.399999976158142 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.0750000476837158, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "47734": { "attributeIDs": { "6": { "max": 2.5, "min": 0.8999999761581421 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "47735": { "attributeIDs": { "6": { "max": 2.0, "min": 1.0 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "47737": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.034999966621399, "min": 0.9700000286102295 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "554": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84962, 84963 ], "resultingType": 47740 } ] }, "47738": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "554": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84963, 84962 ], "resultingType": 47740 } ] }, "47739": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.0700000524520874, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "554": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84962, 84963 ], "resultingType": 47740 } ] }, "47741": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.0700000524520874, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "554": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "47742": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.034999966621399, "min": 0.9700000286102295 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "554": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "47743": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "554": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "47744": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.0700000524520874, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "554": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "47746": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.100000023841858, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84967, 84966, 85025, 85031 ], "resultingType": 47749 } ] }, "47747": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84967, 84966, 85025, 85031 ], "resultingType": 47749 } ] }, "47748": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.149999976158142, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84966, 84967, 85025, 85031 ], "resultingType": 47749 } ] }, "47750": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.100000023841858, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "47751": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "47752": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.149999976158142, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "47754": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.100000023841858, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "47755": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "47756": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.149999976158142, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "47766": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 }, "84": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4531, 4535, 4533, 84970, 84971 ], "resultingType": 47769 } ] }, "47767": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4533, 84971, 84970 ], "resultingType": 47769 } ] }, "47768": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 }, "84": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4533, 84970, 84971 ], "resultingType": 47769 } ] }, "47770": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 }, "84": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4571, 4575, 4573, 84973, 84972 ], "resultingType": 47773 } ] }, "47771": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4573, 84972, 84973 ], "resultingType": 47773 } ] }, "47772": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 }, "84": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4573, 84973, 84972 ], "resultingType": 47773 } ] }, "47774": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 }, "84": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "47775": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "47776": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 }, "84": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "47778": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "68": { "max": 1.100000023841858, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "47779": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "47780": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "68": { "max": 1.149999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "47782": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "68": { "max": 1.100000023841858, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "47783": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "47784": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "68": { "max": 1.149999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "47786": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "68": { "max": 1.100000023841858, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "47787": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "47788": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "68": { "max": 1.149999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "47790": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "68": { "max": 1.100000023841858, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "47791": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "47792": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "68": { "max": 1.149999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "47797": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "72": { "max": 1.100000023841858, "min": 0.949999988079071 }, "983": { "max": 1.2999999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "47798": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "72": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "983": { "max": 1.5, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "47799": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "72": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "983": { "max": 1.399999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "47801": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "72": { "max": 1.100000023841858, "min": 0.949999988079071 }, "983": { "max": 1.2999999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "47802": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "72": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "983": { "max": 1.5, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "47803": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "72": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "983": { "max": 1.399999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "47805": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "72": { "max": 1.100000023841858, "min": 0.949999988079071 }, "983": { "max": 1.2999999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "47806": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "72": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "983": { "max": 1.5, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "47807": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "72": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "983": { "max": 1.399999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "47809": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "796": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "1159": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "47810": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "796": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "1159": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "47811": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "796": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "1159": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "47813": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "796": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "1159": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "47814": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "796": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "1159": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "47815": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "796": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "1159": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "47816": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "796": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "1159": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "47818": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "796": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "1159": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "47819": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "796": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "1159": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "47821": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "97": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "47822": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "97": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "47823": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "97": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "47825": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "97": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "47826": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "97": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "47827": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "97": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "47829": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "97": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "47830": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "97": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "47831": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "97": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "47835": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 32772, 88716 ], "resultingType": 47836 } ] }, "47837": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 4391, 88715 ], "resultingType": 47838 } ] }, "47839": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 32780, 88714 ], "resultingType": 47840 } ] }, "47841": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 33076, 88721 ], "resultingType": 47842 } ] }, "47843": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 33101, 88720 ], "resultingType": 47844 } ] }, "47845": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 33103, 88719 ], "resultingType": 47846 } ] }, "48416": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "90": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "48417": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "90": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "48418": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "90": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "48420": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "90": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "48421": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "90": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "48422": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "90": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "48424": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "90": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "48425": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "90": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "48426": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "90": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "48428": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "67": { "max": 1.100000023841858, "min": 0.949999988079071 }, "2267": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "48429": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "67": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "2267": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "48430": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "67": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "2267": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "48432": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "67": { "max": 1.100000023841858, "min": 0.949999988079071 }, "2267": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "48433": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "67": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "2267": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "48434": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "67": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "2267": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "48436": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "67": { "max": 1.100000023841858, "min": 0.949999988079071 }, "2267": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "48437": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "67": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "2267": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "48438": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "67": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "2267": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "49723": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "64": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "49724": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "64": { "max": 1.0140000581741333, "min": 0.9890000224113464 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "49725": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "64": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "49727": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "64": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "49728": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "64": { "max": 1.0140000581741333, "min": 0.9890000224113464 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "49729": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "64": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "49731": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "64": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "49732": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "64": { "max": 1.0140000581741333, "min": 0.9890000224113464 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "49733": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "64": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "49735": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "64": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52244, 52242 ], "resultingType": 49734 } ] }, "49736": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "64": { "max": 1.0140000581741333, "min": 0.9890000224113464 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52242, 52244 ], "resultingType": 49734 } ] }, "49737": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "64": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52242, 52244 ], "resultingType": 49734 } ] }, "49739": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 }, "213": { "max": 1.0080000162124634, "min": 0.9950000047683716 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "49740": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 }, "213": { "max": 1.0140000581741333, "min": 0.9890000224113464 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "49741": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "213": { "max": 1.0199999809265137, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "52224": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "974": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "975": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "976": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "977": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "52225": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "974": { "max": 1.100000023841858, "min": 0.800000011920929 }, "975": { "max": 1.100000023841858, "min": 0.800000011920929 }, "976": { "max": 1.100000023841858, "min": 0.800000011920929 }, "977": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "52226": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "974": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "975": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "976": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "977": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "52228": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "highIsGood": 1, "max": 1.0750000476837158, "min": 0.949999988079071 }, "974": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "975": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "976": { "max": 1.0499999523162842, "min": 0.8999999761581421 }, "977": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "52229": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "highIsGood": 1, "max": 1.149999976158142, "min": 0.8999999761581421 }, "974": { "max": 1.100000023841858, "min": 0.800000011920929 }, "975": { "max": 1.100000023841858, "min": 0.800000011920929 }, "976": { "max": 1.100000023841858, "min": 0.800000011920929 }, "977": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "52231": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "highIsGood": 1, "max": 1.2000000476837158, "min": 0.800000011920929 }, "974": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "975": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "976": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "977": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "56269": { "attributeIDs": { "6": { "max": 1.7999999523162842, "min": 1.399999976158142 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.0750000476837158, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "56270": { "attributeIDs": { "6": { "max": 2.5, "min": 0.8999999761581421 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "56271": { "attributeIDs": { "6": { "max": 2.0, "min": 1.0 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "56272": { "attributeIDs": { "6": { "max": 2.5, "min": 0.8999999761581421 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "56273": { "attributeIDs": { "6": { "max": 2.0, "min": 1.0 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "56274": { "attributeIDs": { "6": { "max": 1.7999999523162842, "min": 1.399999976158142 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.0750000476837158, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "56275": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.100000023841858, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "56276": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "56277": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.149999976158142, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "56278": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "20": { "max": 1.034999966621399, "min": 0.9700000286102295 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "554": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "56279": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "20": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "554": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "56280": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "20": { "max": 1.0700000524520874, "min": 0.949999988079071 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "554": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "56281": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 }, "84": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "56282": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "56283": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 }, "84": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "56284": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "84": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41503, 88718 ], "resultingType": 56308 } ] }, "56285": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "68": { "max": 1.100000023841858, "min": 0.949999988079071 }, "73": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "56286": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "56287": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "68": { "max": 1.149999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "56288": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "68": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "73": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "1795": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41504, 88713 ], "resultingType": 56310 } ] }, "56289": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "90": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "56290": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "90": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "56291": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "90": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "56292": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "97": { "max": 1.100000023841858, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "56293": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "97": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "56294": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "97": { "max": 1.2000000476837158, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "56299": { "attributeIDs": { "30": { "max": 1.25, "min": 0.949999988079071 }, "2306": { "max": 1.0099999904632568, "min": 0.9943000078201294 }, "2307": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "2346": { "max": 0.949999988079071, "min": 1.024999976158142 }, "2347": { "max": 1.024999976158142, "min": 0.949999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "56300": { "attributeIDs": { "30": { "max": 1.5, "min": 0.800000011920929 }, "2306": { "max": 1.0267000198364258, "min": 0.9732999801635742 }, "2307": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "2346": { "max": 0.8999999761581421, "min": 1.100000023841858 }, "2347": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "56301": { "attributeIDs": { "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "2306": { "max": 1.0187000036239624, "min": 0.9729999899864197 }, "2307": { "max": 1.0140000581741333, "min": 0.9800000190734863 }, "2346": { "max": 0.925000011920929, "min": 1.0499999523162842 }, "2347": { "max": 1.149999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "60460": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.2999999523162842, "min": 1.0 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.2999999523162842, "min": 1.0 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "60461": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.2000000476837158, "min": 1.0 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "60462": { "attributeIDs": { "9": { "max": 1.2999999523162842, "min": 1.0 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.2999999523162842, "min": 1.0 }, "265": { "max": 1.2999999523162842, "min": 1.0 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "60463": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.2999999523162842, "min": 1.0 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.2999999523162842, "min": 1.0 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "60464": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.2000000476837158, "min": 1.0 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "60465": { "attributeIDs": { "9": { "max": 1.2999999523162842, "min": 1.0 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.2999999523162842, "min": 1.0 }, "265": { "max": 1.2999999523162842, "min": 1.0 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "60466": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 1.0 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.2999999523162842, "min": 1.0 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "60467": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.2999999523162842, "min": 1.0 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "60468": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.2000000476837158, "min": 1.0 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "60469": { "attributeIDs": { "9": { "max": 1.2999999523162842, "min": 1.0 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.2999999523162842, "min": 1.0 }, "265": { "max": 1.2999999523162842, "min": 1.0 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "60470": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 1.0 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.2999999523162842, "min": 1.0 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "60471": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 1.0 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.2999999523162842, "min": 1.0 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "60472": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.2999999523162842, "min": 1.0 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.2999999523162842, "min": 1.0 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "60473": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.2000000476837158, "min": 1.0 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "60474": { "attributeIDs": { "9": { "max": 1.2999999523162842, "min": 1.0 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.149999976158142, "min": 0.699999988079071 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.149999976158142, "min": 0.699999988079071 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.2999999523162842, "min": 1.0 }, "265": { "max": 1.2999999523162842, "min": 1.0 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "60475": { "attributeIDs": { "9": { "max": 1.149999976158142, "min": 0.699999988079071 }, "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 1.0 }, "64": { "max": 1.100000023841858, "min": 0.699999988079071 }, "158": { "max": 1.2999999523162842, "min": 1.0 }, "160": { "max": 1.149999976158142, "min": 0.699999988079071 }, "263": { "max": 1.149999976158142, "min": 0.699999988079071 }, "265": { "max": 1.149999976158142, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "60476": { "attributeIDs": { "50": { "max": 1.5, "min": 0.699999988079071 }, "1255": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 4393, 4405, 41034, 33846, 33842, 33844, 33848, 32919, 32921, 32923, 32925 ], "resultingType": 60482 } ] }, "60477": { "attributeIDs": { "30": { "max": 1.5, "min": 0.699999988079071 }, "50": { "max": 1.5, "min": 0.699999988079071 }, "2335": { "max": 1.0119999647140503, "min": 0.9879999756813049 }, "2336": { "max": 1.0119999647140503, "min": 0.9879999756813049 }, "2337": { "max": 1.1319999694824219, "min": 0.9909999966621399 }, "2338": { "max": 1.0119999647140503, "min": 0.9879999756813049 } }, "inputOutputMapping": [ { "applicableTypes": [ 24283, 41415, 41414, 41417, 32951, 32953, 32955, 32957, 88264 ], "resultingType": 60483 } ] }, "78622": { "attributeIDs": { "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "64": { "max": 1.0140000581741333, "min": 0.9890000224113464 }, "204": { "max": 1.0149999856948853, "min": 0.9800000190734863 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78740, 78741 ], "resultingType": 78621 } ] }, "78623": { "attributeIDs": { "50": { "max": 1.25, "min": 0.949999988079071 }, "64": { "max": 1.0080000162124634, "min": 0.9950000047683716 }, "204": { "max": 1.0099999904632568, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78740, 78741 ], "resultingType": 78621 } ] }, "78624": { "attributeIDs": { "50": { "max": 1.5, "min": 0.800000011920929 }, "64": { "max": 1.0199999809265137, "min": 0.9800000190734863 }, "204": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78741, 78740 ], "resultingType": 78621 } ] }, "84398": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "114": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3993, 3995, 14188, 14190, 15963, 28545, 15947, 9678, 23868, 14784, 14786, 14790, 14788, 14792, 14796, 14798, 14794 ], "resultingType": 84434 } ] }, "84399": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "118": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3987, 3989, 14206, 15955, 15152, 15158, 15156, 15154, 9808, 84496 ], "resultingType": 84435 } ] }, "84400": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "114": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3953, 3955, 23866, 9734, 14192, 14194, 15961, 28550, 15945 ], "resultingType": 84438 } ] }, "84401": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "118": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3947, 3949, 9800, 15953, 14220, 84498 ], "resultingType": 84439 } ] }, "84402": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "117": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3941, 3943, 9728, 15929, 14210, 84497 ], "resultingType": 84440 } ] }, "84403": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "116": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3937, 3939, 9762, 21536, 15937, 14222 ], "resultingType": 84441 } ] }, "84404": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "114": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 1563, 1565, 9680, 23864, 15941, 14200, 15957, 28557, 14202 ], "resultingType": 84442 } ] }, "84405": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "118": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 1557, 1559, 9784, 15949, 14228, 84500 ], "resultingType": 84443 } ] }, "84406": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "117": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 15925, 1551, 1553, 14214, 9670, 84499 ], "resultingType": 84444 } ] }, "84407": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "116": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 1547, 1549, 9744, 14226, 15935, 21534 ], "resultingType": 84445 } ] }, "84408": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "117": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3981, 3983, 9668, 15931, 14204, 14698, 14692, 14694, 14696, 84495 ], "resultingType": 84436 } ] }, "84409": { "attributeIDs": { "6": { "max": 1.25, "min": 0.949999988079071 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "73": { "max": 1.100000023841858, "min": 0.949999988079071 }, "99": { "max": 1.0499999523162842, "min": 0.8500000238418579 }, "116": { "max": 1.0499999523162842, "min": 0.8799999952316284 } }, "inputOutputMapping": [ { "applicableTypes": [ 3977, 3979, 14208, 15939, 9772, 21538, 14544, 14548, 14546, 14550 ], "resultingType": 84437 } ] }, "84410": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "114": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 1563, 1565, 9680, 23864, 15941, 14200, 15957, 28557, 14202 ], "resultingType": 84442 } ] }, "84411": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "118": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 1557, 1559, 9784, 15949, 14228, 84500 ], "resultingType": 84443 } ] }, "84412": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "117": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 15925, 1551, 1553, 14214, 9670, 84499 ], "resultingType": 84444 } ] }, "84413": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "116": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 1547, 1549, 9744, 14226, 15935, 21534 ], "resultingType": 84445 } ] }, "84414": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "117": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3981, 3983, 9668, 15931, 14204, 14698, 14692, 14694, 14696, 84495 ], "resultingType": 84436 } ] }, "84415": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "116": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3977, 3979, 14208, 15939, 9772, 21538, 14544, 14548, 14546, 14550 ], "resultingType": 84437 } ] }, "84416": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "114": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3993, 3995, 14188, 14190, 15963, 28545, 15947, 9678, 23868, 14784, 14786, 14790, 14788, 14792, 14796, 14798, 14794 ], "resultingType": 84434 } ] }, "84417": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "118": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3987, 3989, 14206, 15955, 15152, 15158, 15156, 15154, 9808, 84496 ], "resultingType": 84435 } ] }, "84418": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "114": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3953, 3955, 23866, 9734, 14192, 14194, 15961, 28550, 15945 ], "resultingType": 84438 } ] }, "84419": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "118": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3947, 3949, 9800, 15953, 14220, 84498 ], "resultingType": 84439 } ] }, "84420": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "117": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3941, 3943, 9728, 15929, 14210, 84497 ], "resultingType": 84440 } ] }, "84421": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "99": { "max": 1.149999976158142, "min": 0.800000011920929 }, "116": { "max": 1.0800000429153442, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3937, 3939, 9762, 21536, 15937, 14222 ], "resultingType": 84441 } ] }, "84422": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "114": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3993, 3995, 14188, 14190, 15963, 28545, 15947, 9678, 23868, 14784, 14786, 14790, 14788, 14792, 14796, 14798, 14794 ], "resultingType": 84434 } ] }, "84423": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "118": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3987, 3989, 14206, 15955, 15152, 15158, 15156, 15154, 9808, 84496 ], "resultingType": 84435 } ] }, "84424": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "114": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3953, 3955, 23866, 9734, 14192, 14194, 15961, 28550, 15945 ], "resultingType": 84438 } ] }, "84425": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "118": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3947, 3949, 9800, 15953, 14220, 84498 ], "resultingType": 84439 } ] }, "84426": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "117": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3941, 3943, 9728, 15929, 14210, 84497 ], "resultingType": 84440 } ] }, "84427": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "116": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3937, 3939, 9762, 21536, 15937, 14222 ], "resultingType": 84441 } ] }, "84428": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "114": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 1563, 1565, 9680, 23864, 15941, 14200, 15957, 28557, 14202 ], "resultingType": 84442 } ] }, "84429": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "118": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 1557, 1559, 9784, 15949, 14228, 84500 ], "resultingType": 84443 } ] }, "84430": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "117": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 15925, 1551, 1553, 14214, 9670, 84499 ], "resultingType": 84444 } ] }, "84431": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "116": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 1547, 1549, 9744, 14226, 15935, 21534 ], "resultingType": 84445 } ] }, "84432": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "117": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3981, 3983, 9668, 15931, 14204, 14698, 14692, 14694, 14696, 84495 ], "resultingType": 84436 } ] }, "84433": { "attributeIDs": { "6": { "max": 1.5, "min": 0.800000011920929 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "73": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "99": { "max": 1.2000000476837158, "min": 0.699999988079071 }, "116": { "max": 1.100000023841858, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3977, 3979, 14208, 15939, 9772, 21538, 14544, 14548, 14546, 14550 ], "resultingType": 84437 } ] }, "85438": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "796": { "max": 1.25, "min": 0.824999988079071 }, "1159": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "85439": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "796": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "1159": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "85440": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "796": { "max": 1.350000023841858, "min": 0.699999988079071 }, "1159": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23783, 23791, 11343, 11345, 11339, 11341, 11293, 20345, 31898, 31896, 28778, 23787, 11351, 11353, 11347, 11349, 11295, 20347, 31906, 31904, 28782 ], "resultingType": 47812 } ] }, "85441": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.037500023841858, "min": 0.9375 }, "84": { "max": 1.125, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4531, 4535, 4533, 84970, 84971 ], "resultingType": 47769 } ] }, "85442": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "84": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4533, 84971, 84970 ], "resultingType": 47769 } ] }, "85443": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.399999976158142, "min": 0.824999988079071 }, "50": { "max": 1.399999976158142, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 }, "84": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 23795, 22887, 15741, 19009, 19007, 19005, 19015, 19013, 19011, 19003, 19001, 18999, 13964, 13962, 15744, 17548, 28556, 17494, 14069, 523, 1183, 13963, 4529, 4533, 84970, 84971 ], "resultingType": 47769 } ] }, "85445": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "84": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 33076, 88721 ], "resultingType": 47842 } ] }, "85446": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "796": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "1159": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "85447": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "796": { "max": 1.350000023841858, "min": 0.699999988079071 }, "1159": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "85448": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "796": { "max": 1.25, "min": 0.824999988079071 }, "1159": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23789, 11311, 11313, 11307, 11309, 11297, 20349, 31910, 31908, 28784, 23793, 11319, 11321, 11315, 11317, 11299, 20351, 31918, 31916, 28786 ], "resultingType": 47817 } ] }, "85449": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.037500023841858, "min": 0.9375 }, "84": { "max": 1.125, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4571, 4575, 4573, 84973, 84972 ], "resultingType": 47773 } ] }, "85450": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.399999976158142, "min": 0.824999988079071 }, "50": { "max": 1.399999976158142, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 }, "84": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4573, 84973, 84972 ], "resultingType": 47773 } ] }, "85451": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "84": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 33101, 88720 ], "resultingType": 47844 } ] }, "85452": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "84": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 3528, 3530, 13958, 13959, 13960, 14068, 15742, 15745, 17493, 17547, 19017, 19019, 19021, 19023, 19025, 19027, 19029, 19031, 19033, 22889, 23797, 28549, 4569, 4573, 84972, 84973 ], "resultingType": 47773 } ] }, "85453": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "796": { "max": 1.25, "min": 0.824999988079071 }, "1159": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "85454": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "796": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "1159": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "85455": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.037500023841858, "min": 0.9375 }, "84": { "max": 1.125, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "85456": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "796": { "max": 1.350000023841858, "min": 0.699999988079071 }, "1159": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 23785, 11327, 11329, 11323, 11325, 11279, 20353, 31902, 31900, 28780 ], "resultingType": 47820 } ] }, "85457": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "84": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "85458": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.399999976158142, "min": 0.824999988079071 }, "50": { "max": 1.399999976158142, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 }, "84": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3538, 3540, 4609, 4611, 4613, 4615, 4621, 13955, 13956, 13957, 14067, 14552, 14554, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 15160, 15161, 15162, 15163, 15743, 15746, 17492, 17546, 19035, 19036, 19037, 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 22891, 23799, 28544 ], "resultingType": 47777 } ] }, "85459": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "84": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 33103, 88719 ], "resultingType": 47846 } ] }, "85460": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "73": { "max": 1.037500023841858, "min": 0.9375 }, "84": { "max": 1.125, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "85461": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "84": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "85462": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.399999976158142, "min": 0.824999988079071 }, "50": { "max": 1.399999976158142, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 }, "84": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 20701, 41499, 41498, 41500, 3534, 41501, 41502 ], "resultingType": 56307 } ] }, "85463": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "84": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 41503, 88718 ], "resultingType": 56308 } ] }, "85464": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.125, "min": 0.949999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84967, 84966, 85025, 85031 ], "resultingType": 47749 } ] }, "85465": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.25, "min": 0.75 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84967, 84966, 85025, 85031 ], "resultingType": 47749 } ] }, "85466": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.1749999523162842, "min": 0.8999999761581421 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 439, 438, 21470, 21857, 6003, 6001, 18692, 18686, 18680, 14110, 15761, 18670, 18664, 18658, 15749, 14112, 84966, 84967, 85025, 85031 ], "resultingType": 47749 } ] }, "85467": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.0850000381469727, "min": 0.925000011920929 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "554": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84962, 84963 ], "resultingType": 47740 } ] }, "85468": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.0499999523162842, "min": 0.9599999785423279 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "554": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84962, 84963 ], "resultingType": 47740 } ] }, "85469": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "554": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 434, 440, 5971, 5973, 14122, 14124, 15747, 15759, 19313, 19319, 19325, 19337, 19343, 19349, 21476, 35658, 84963, 84962 ], "resultingType": 47740 } ] }, "85470": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.125, "min": 0.949999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "85471": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.25, "min": 0.75 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "85472": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.1749999523162842, "min": 0.8999999761581421 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 6005, 12056, 12058, 14106, 14108, 15753, 15766, 18660, 18666, 18672, 18682, 18688, 18694, 21472, 35656, 84969, 84968, 85026, 85032 ], "resultingType": 47753 } ] }, "85473": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "554": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "85474": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.0499999523162842, "min": 0.9599999785423279 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "554": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "85475": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.0850000381469727, "min": 0.925000011920929 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "554": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 5975, 12052, 12076, 14118, 14120, 15751, 15764, 19315, 19321, 19327, 19339, 19345, 19351, 21478, 35659, 35660, 84964, 84965 ], "resultingType": 47408 } ] }, "85476": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.1749999523162842, "min": 0.8999999761581421 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "85477": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.125, "min": 0.949999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "85478": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.25, "min": 0.75 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 5955, 12066, 12068, 14102, 14104, 14484, 14486, 14488, 14490, 14500, 14502, 14504, 14506, 15757, 15770, 18662, 18668, 18674, 18676, 18684, 18690, 18696, 18698, 19491, 21474, 35657 ], "resultingType": 47757 } ] }, "85479": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.0499999523162842, "min": 0.9599999785423279 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "554": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "85480": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.0850000381469727, "min": 0.925000011920929 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "554": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "85481": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "554": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 5945, 12054, 12084, 14114, 14116, 14492, 14494, 14496, 14498, 14508, 14510, 14512, 14514, 15755, 15768, 19317, 19323, 19329, 19335, 19341, 19347, 19353, 19359, 21480, 35661, 35662 ], "resultingType": 47745 } ] }, "85482": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.125, "min": 0.949999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "85483": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.25, "min": 0.75 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "85484": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.1749999523162842, "min": 0.8999999761581421 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41236, 41238, 41237, 41239, 41240, 41241 ], "resultingType": 56305 } ] }, "85485": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "20": { "max": 1.0850000381469727, "min": 0.925000011920929 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "554": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "85486": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "20": { "max": 1.034999966621399, "min": 0.9700000286102295 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "554": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "85487": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "20": { "max": 1.149999976158142, "min": 0.8500000238418579 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "554": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 41249, 41252, 41251, 41250, 41253, 41254, 41255 ], "resultingType": 56306 } ] }, "85488": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "974": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "975": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "976": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "977": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "85489": { "attributeIDs": { "50": { "max": 1.600000023841858, "min": 0.699999988079071 }, "974": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "975": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "976": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "977": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "85490": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "73": { "highIsGood": 1, "max": 1.1124999523162842, "min": 0.925000011920929 }, "974": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "975": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "976": { "max": 1.0750000476837158, "min": 0.8500000238418579 }, "977": { "max": 1.0750000476837158, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "85491": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "974": { "max": 1.149999976158142, "min": 0.75 }, "975": { "max": 1.149999976158142, "min": 0.75 }, "976": { "max": 1.149999976158142, "min": 0.75 }, "977": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 2048, 521, 5839, 41210, 41200, 41201, 41202, 41203, 41204, 41205, 41206, 41208, 23418, 41211, 2046, 41207 ], "resultingType": 52227 } ] }, "85492": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "73": { "highIsGood": 1, "max": 1.1749999523162842, "min": 0.8500000238418579 }, "974": { "max": 1.149999976158142, "min": 0.75 }, "975": { "max": 1.149999976158142, "min": 0.75 }, "976": { "max": 1.149999976158142, "min": 0.75 }, "977": { "max": 1.149999976158142, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "85493": { "attributeIDs": { "50": { "max": 1.600000023841858, "min": 0.699999988079071 }, "73": { "highIsGood": 1, "max": 1.25, "min": 0.75 }, "974": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "975": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "976": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "977": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 47254, 47255, 47256, 47257, 47258, 84961 ], "resultingType": 52230 } ] }, "85494": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "67": { "max": 1.149999976158142, "min": 0.925000011920929 }, "2267": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "85495": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "67": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "2267": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "85496": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "67": { "max": 1.25, "min": 0.800000011920929 }, "2267": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 1185, 3488, 4787, 23801, 41212, 41213, 41214, 522 ], "resultingType": 48431 } ] }, "85497": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "97": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "85498": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.75 }, "97": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "85499": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "97": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 533, 4471, 4473, 4475, 4477, 13003, 14160, 14162, 15794, 15800, 23815, 37622, 37623, 37624, 84991 ], "resultingType": 47824 } ] }, "85500": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "90": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "85501": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.699999988079071 }, "90": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "85502": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "90": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 530, 5137, 5141, 13001, 14148, 14150, 15875, 15881, 19101, 19103, 19105, 23821, 84989 ], "resultingType": 48419 } ] }, "85504": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "67": { "max": 1.149999976158142, "min": 0.925000011920929 }, "2267": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "85506": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "67": { "max": 1.25, "min": 0.800000011920929 }, "2267": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "85507": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "67": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "2267": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2018, 3496, 6073, 23803, 41215, 41216, 41217 ], "resultingType": 48435 } ] }, "85508": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "97": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "85509": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.75 }, "97": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "85510": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "97": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12265, 12267, 14164, 14166, 15796, 15802, 16465, 16467, 16469, 16471, 23817, 37625, 37626, 37627, 84992 ], "resultingType": 47828 } ] }, "85511": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "90": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "85512": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "90": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "85513": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.699999988079071 }, "90": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12257, 12259, 14156, 14158, 15877, 15883, 16505, 16507, 19107, 19109, 19111, 23824, 84993, 84741 ], "resultingType": 48423 } ] }, "85514": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "67": { "max": 1.25, "min": 0.800000011920929 }, "2267": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "85515": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "67": { "max": 1.149999976158142, "min": 0.925000011920929 }, "2267": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "85516": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "67": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "2267": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2020, 3504, 4871, 23805, 41218, 41219, 41220 ], "resultingType": 48439 } ] }, "85517": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "97": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "85518": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.75 }, "97": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "85519": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.699999988079071 }, "90": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "85520": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "90": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "85521": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "97": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12269, 12271, 14168, 14170, 14832, 14834, 14836, 14838, 14840, 14842, 14844, 14846, 15798, 15804, 16473, 16475, 16477, 16479, 23819, 37628, 37629, 37630, 37631 ], "resultingType": 47832 } ] }, "85522": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "90": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12261, 12263, 14152, 14154, 14816, 14818, 14820, 14822, 14824, 14826, 14828, 14830, 15879, 15885, 16497, 16499, 19113, 19115, 19117, 19119, 23829 ], "resultingType": 48427 } ] }, "85523": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "97": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "85524": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.75 }, "97": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "85525": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "97": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40659, 40660, 40661, 40664, 40663, 40662 ], "resultingType": 56312 } ] }, "85526": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.25, "min": 0.824999988079071 }, "90": { "max": 1.149999976158142, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "85527": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.350000023841858, "min": 0.699999988079071 }, "90": { "max": 1.25, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "85528": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "90": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 40665, 40666, 40667, 40668, 40670, 40669 ], "resultingType": 56311 } ] }, "85529": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "68": { "max": 1.125, "min": 0.925000011920929 }, "73": { "max": 1.037500023841858, "min": 0.9375 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "85530": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "72": { "max": 1.149999976158142, "min": 0.925000011920929 }, "983": { "max": 1.350000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "85531": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.125, "min": 0.875 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "85532": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "72": { "max": 1.25, "min": 0.800000011920929 }, "983": { "max": 1.4500000476837158, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "85533": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "68": { "max": 1.1749999523162842, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 399, 400, 6437, 6439, 6441, 6443, 13951, 13952, 15898, 15902, 19169, 19171, 19173, 19175, 19177, 19179, 20617, 84999, 84998 ], "resultingType": 47781 } ] }, "85534": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "72": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "983": { "max": 1.5499999523162842, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31922, 31924, 20627, 20625, 8427, 8521, 377, 380, 8401, 8481, 28742 ], "resultingType": 47800 } ] }, "85535": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "68": { "max": 1.125, "min": 0.925000011920929 }, "73": { "max": 1.037500023841858, "min": 0.9375 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "85536": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "68": { "max": 1.1749999523162842, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "85537": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.125, "min": 0.875 } }, "inputOutputMapping": [ { "applicableTypes": [ 10836, 10850, 10866, 10868, 10870, 10872, 13949, 13950, 15899, 15903, 19181, 19183, 19185, 19187, 19189, 19191, 20619, 85000, 85001 ], "resultingType": 47785 } ] }, "85538": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "72": { "max": 1.25, "min": 0.800000011920929 }, "983": { "max": 1.4500000476837158, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "85539": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "72": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "983": { "max": 1.5499999523162842, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "85540": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "72": { "max": 1.149999976158142, "min": 0.925000011920929 }, "983": { "max": 1.350000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 31926, 16144, 20629, 8433, 8517, 3829, 3831, 8397, 8477, 31928, 28746, 19489 ], "resultingType": 47804 } ] }, "85541": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 32772, 88716 ], "resultingType": 47836 } ] }, "85542": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "68": { "max": 1.125, "min": 0.925000011920929 }, "73": { "max": 1.037500023841858, "min": 0.9375 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "85543": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "68": { "max": 1.1749999523162842, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "85544": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "72": { "max": 1.25, "min": 0.800000011920929 }, "983": { "max": 1.4500000476837158, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "85545": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.125, "min": 0.875 } }, "inputOutputMapping": [ { "applicableTypes": [ 10838, 10858, 10874, 10876, 10878, 10880, 13947, 13948, 14597, 14599, 14700, 14701, 14702, 14703, 15900, 15904, 19193, 19194, 19199, 19200, 19201, 19203, 19205, 19207, 20621 ], "resultingType": 47789 } ] }, "85546": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "72": { "max": 1.149999976158142, "min": 0.925000011920929 }, "983": { "max": 1.350000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "85547": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "72": { "max": 1.350000023841858, "min": 0.6499999761581421 }, "983": { "max": 1.5499999523162842, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 31930, 16146, 20631, 8419, 8529, 3839, 3841, 8409, 8489, 31932, 28744 ], "resultingType": 47808 } ] }, "85548": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 4391, 88715 ], "resultingType": 47838 } ] }, "85549": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.125, "min": 0.875 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "85550": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "68": { "max": 1.125, "min": 0.925000011920929 }, "73": { "max": 1.037500023841858, "min": 0.9375 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "85551": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "68": { "max": 1.1749999523162842, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 10882, 10884, 10886, 10888, 13953, 13954, 14601, 14603, 14704, 14705, 14706, 14707, 15897, 15901, 19195, 19196, 19197, 19198, 19202, 19204, 19206, 19208, 20623, 10840, 10842 ], "resultingType": 47793 } ] }, "85552": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 32780, 88714 ], "resultingType": 47840 } ] }, "85553": { "attributeIDs": { "6": { "max": 1.25, "min": 0.824999988079071 }, "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "68": { "max": 1.125, "min": 0.925000011920929 }, "73": { "max": 1.037500023841858, "min": 0.9375 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "85554": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.25, "min": 0.75 }, "1795": { "max": 1.350000023841858, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 41504, 88713 ], "resultingType": 56310 } ] }, "85555": { "attributeIDs": { "6": { "max": 1.350000023841858, "min": 0.699999988079071 }, "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "68": { "max": 1.1749999523162842, "min": 0.824999988079071 }, "73": { "max": 1.0750000476837158, "min": 0.9125000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "85556": { "attributeIDs": { "6": { "max": 1.4500000476837158, "min": 0.550000011920929 }, "30": { "max": 1.5499999523162842, "min": 0.75 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "68": { "max": 1.25, "min": 0.75 }, "73": { "max": 1.125, "min": 0.875 } }, "inputOutputMapping": [ { "applicableTypes": [ 20703, 41505, 41506, 41507, 3542, 41510, 41509, 41508 ], "resultingType": 56309 } ] }, "85557": { "attributeIDs": { "6": { "max": 1.899999976158142, "min": 1.2000000476837158 }, "20": { "highIsGood": 0, "max": 1.0499999523162842, "min": 0.9599999785423279 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.100000023841858, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "85558": { "attributeIDs": { "6": { "max": 3.0, "min": 0.8500000238418579 }, "20": { "highIsGood": 0, "max": 1.149999976158142, "min": 0.8500000238418579 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 15419, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "85559": { "attributeIDs": { "6": { "max": 2.25, "min": 0.949999988079071 }, "20": { "highIsGood": 0, "max": 1.0850000381469727, "min": 0.925000011920929 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 28514, 15419, 41038, 14652, 14650, 526, 527, 17500, 14648, 14654, 14262, 17559, 14264, 4025, 14266, 4027, 14268, 14270 ], "resultingType": 47702 } ] }, "85640": { "attributeIDs": { "6": { "max": 1.899999976158142, "min": 1.2000000476837158 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.100000023841858, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "85641": { "attributeIDs": { "6": { "max": 2.75, "min": 0.8500000238418579 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "85642": { "attributeIDs": { "6": { "max": 2.25, "min": 0.949999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 3242, 5403, 5399, 21510, 5405, 3244, 41062, 15889, 15891, 5401, 14242, 14244, 14246, 14248, 15431, 14250, 28516 ], "resultingType": 47736 } ] }, "85643": { "attributeIDs": { "6": { "max": 1.899999976158142, "min": 1.2000000476837158 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.100000023841858, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "85644": { "attributeIDs": { "6": { "max": 2.25, "min": 0.949999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "85645": { "attributeIDs": { "6": { "max": 2.75, "min": 0.8500000238418579 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 447, 5439, 5441, 5443, 5445, 448, 14256, 14258, 14260, 14252, 14254, 41061, 28518, 15433, 21512, 15887, 15893 ], "resultingType": 47732 } ] }, "85646": { "attributeIDs": { "6": { "max": 1.899999976158142, "min": 1.2000000476837158 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.100000023841858, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "85647": { "attributeIDs": { "6": { "max": 2.25, "min": 0.949999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "85648": { "attributeIDs": { "6": { "max": 2.75, "min": 0.8500000238418579 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 40750, 40756, 40752, 40754, 40758, 40764, 40762, 14664, 14666, 14668, 14670 ], "resultingType": 56303 } ] }, "85649": { "attributeIDs": { "6": { "max": 1.899999976158142, "min": 1.2000000476837158 }, "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "54": { "max": 1.100000023841858, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "85650": { "attributeIDs": { "6": { "max": 2.25, "min": 0.949999988079071 }, "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "54": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "85651": { "attributeIDs": { "6": { "max": 2.75, "min": 0.8500000238418579 }, "50": { "max": 1.5499999523162842, "min": 0.75 }, "54": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 40730, 40733, 40731, 40732, 40734, 40737, 40736, 14656, 14658, 14660, 14662 ], "resultingType": 56304 } ] }, "85652": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 }, "213": { "max": 1.0110000371932983, "min": 0.9929999709129333 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "85653": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 }, "213": { "max": 1.0169999599456787, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "85654": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 }, "213": { "max": 1.024999976158142, "min": 0.9750000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 12274, 13935, 13937, 14528, 14530, 14532, 14534, 14684, 14686, 14688, 14690, 15681, 15683, 16457, 16459, 16461, 16463, 21482, 21484, 22291, 28563, 46270, 47447, 47448 ], "resultingType": 49738 } ] }, "85655": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "64": { "max": 1.0110000371932983, "min": 0.9929999709129333 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52244, 52242 ], "resultingType": 49734 } ] }, "85656": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "64": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52242, 52244 ], "resultingType": 49734 } ] }, "85657": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "64": { "max": 1.0169999599456787, "min": 0.9850000143051147 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 } }, "inputOutputMapping": [ { "applicableTypes": [ 47908, 47909, 47911, 52242, 52244 ], "resultingType": 49734 } ] }, "85660": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "64": { "max": 1.0110000371932983, "min": 0.9929999709129333 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "85661": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "64": { "max": 1.0169999599456787, "min": 0.9850000143051147 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "85662": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "64": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 } }, "inputOutputMapping": [ { "applicableTypes": [ 518, 519, 520, 5913, 5915, 5917, 5919, 5929, 5931, 5933, 5935, 13939, 14536, 14538, 14540, 14542, 15447, 15806, 21486, 21488, 44112 ], "resultingType": 49730 } ] }, "85663": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "64": { "max": 1.0110000371932983, "min": 0.9929999709129333 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "85664": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "64": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "85665": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "64": { "max": 1.0169999599456787, "min": 0.9850000143051147 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 } }, "inputOutputMapping": [ { "applicableTypes": [ 1893, 2363, 2364, 5845, 5846, 5849, 5854, 5855, 5856, 5857, 5858, 13941, 13943, 14800, 14802, 14804, 14806, 14808, 14810, 14812, 14814, 15397, 15435, 15808, 15810, 23900, 23902, 44111, 88265 ], "resultingType": 49726 } ] }, "85666": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "64": { "max": 1.0110000371932983, "min": 0.9929999709129333 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "85667": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "64": { "max": 1.0169999599456787, "min": 0.9850000143051147 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "85668": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "64": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 } }, "inputOutputMapping": [ { "applicableTypes": [ 9944, 10188, 10190, 11101, 11103, 11105, 11107, 11109, 11111, 11113, 11115, 13945, 15144, 15146, 15148, 15150, 15416, 15895, 22917, 22919, 44113, 44114 ], "resultingType": 49722 } ] }, "85669": { "attributeIDs": { "30": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "2306": { "max": 1.0140000581741333, "min": 0.9850000143051147 }, "2307": { "max": 1.0110000371932983, "min": 0.987500011920929 }, "2346": { "max": 0.9375, "min": 1.037500023841858 }, "2347": { "max": 1.0499999523162842, "min": 0.925000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "85670": { "attributeIDs": { "30": { "max": 1.350000023841858, "min": 0.824999988079071 }, "2306": { "max": 1.0219999551773071, "min": 0.9725000262260437 }, "2307": { "max": 1.0169999599456787, "min": 0.9800000190734863 }, "2346": { "max": 0.9125000238418579, "min": 1.0750000476837158 }, "2347": { "max": 1.1749999523162842, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "85671": { "attributeIDs": { "30": { "max": 1.524999976158142, "min": 0.7749999761581421 }, "2306": { "max": 1.0299999713897705, "min": 0.9700000286102295 }, "2307": { "max": 1.0225000381469727, "min": 0.9775000214576721 }, "2346": { "max": 0.875, "min": 1.125 }, "2347": { "max": 1.225000023841858, "min": 0.7749999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 20280, 4292, 88266 ], "resultingType": 56313 } ] }, "85672": { "attributeIDs": { "50": { "max": 1.274999976158142, "min": 0.8999999761581421 }, "64": { "max": 1.0110000371932983, "min": 0.9929999709129333 }, "204": { "max": 1.0125000476837158, "min": 0.9825000166893005 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78740, 78741 ], "resultingType": 78621 } ] }, "85673": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.75 }, "64": { "max": 1.024999976158142, "min": 0.9750000238418579 }, "204": { "max": 1.0299999713897705, "min": 0.9700000286102295 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78741, 78740 ], "resultingType": 78621 } ] }, "85674": { "attributeIDs": { "50": { "max": 1.350000023841858, "min": 0.824999988079071 }, "64": { "max": 1.0169999599456787, "min": 0.9850000143051147 }, "204": { "max": 1.0199999809265137, "min": 0.9775000214576721 } }, "inputOutputMapping": [ { "applicableTypes": [ 54973, 54975, 54974, 78740, 78741 ], "resultingType": 78621 } ] }, "85675": { "attributeIDs": { "9": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "265": { "max": 1.350000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "85676": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "85677": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "85678": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.25, "min": 0.8999999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2203, 2205, 28264, 31864, 28262, 2454, 2456, 28276, 28274, 31880, 2464, 2466, 28280, 31872, 28278, 2486, 2488, 28304, 31888, 28302 ], "resultingType": 60478 } ] }, "85679": { "attributeIDs": { "9": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "265": { "max": 1.350000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "85680": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "85681": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.25, "min": 0.8999999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "85682": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2183, 2185, 28272, 28270, 31882, 2173, 2175, 28284, 28282, 31866, 15510, 21640, 28296, 28294, 31890, 15508, 21638, 28300, 28298, 31874 ], "resultingType": 60479 } ] }, "85685": { "attributeIDs": { "9": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "265": { "max": 1.350000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "85686": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "85687": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "85688": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.25, "min": 0.8999999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 2444, 2446, 28288, 28286, 31884, 2193, 2195, 28292, 31870, 28290, 2476, 2478, 28268, 28266, 31892, 1201, 2436, 28308, 28306, 31876 ], "resultingType": 60480 } ] }, "85690": { "attributeIDs": { "9": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "265": { "max": 1.350000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "85691": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.25, "min": 0.8999999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "85692": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "160": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "85693": { "attributeIDs": { "9": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "37": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "54": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "64": { "max": 1.149999976158142, "min": 0.6499999761581421 }, "158": { "max": 1.350000023841858, "min": 0.8999999761581421 }, "160": { "max": 1.2000000476837158, "min": 0.6499999761581421 }, "263": { "max": 1.2000000476837158, "min": 0.6000000238418579 }, "265": { "max": 1.2000000476837158, "min": 0.6499999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 23561, 28211, 31886, 23525, 28213, 31868, 23563, 28215, 31894, 23559, 28209, 31878 ], "resultingType": 60481 } ] }, "85696": { "attributeIDs": { "50": { "max": 1.5499999523162842, "min": 0.6499999761581421 }, "1255": { "max": 1.25, "min": 0.75 } }, "inputOutputMapping": [ { "applicableTypes": [ 4393, 4405, 41034, 33846, 33842, 33844, 33848, 32919, 32921, 32923, 32925 ], "resultingType": 60482 } ] }, "85698": { "attributeIDs": { "30": { "max": 1.5499999523162842, "min": 0.6499999761581421 }, "50": { "max": 1.5499999523162842, "min": 0.6499999761581421 }, "2335": { "max": 1.0149999856948853, "min": 0.9850000143051147 }, "2336": { "max": 1.0149999856948853, "min": 0.9850000143051147 }, "2337": { "max": 1.149999976158142, "min": 0.9900000095367432 }, "2338": { "max": 1.0149999856948853, "min": 0.9850000143051147 } }, "inputOutputMapping": [ { "applicableTypes": [ 24283, 41415, 41414, 41417, 32951, 32953, 32955, 32957, 88264 ], "resultingType": 60483 } ] }, "90457": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 483, 5239, 5245, 482, 22923, 5233, 21841, 28750 ], "resultingType": 90460 } ] }, "90458": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 483, 5239, 5245, 482, 22923, 5233, 21841, 28750 ], "resultingType": 90460 } ] }, "90459": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 483, 5239, 5245, 482, 22923, 5233, 21841, 28750 ], "resultingType": 90460 } ] }, "90466": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 17912 ], "resultingType": 90467 } ] }, "90468": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 17912 ], "resultingType": 90467 } ] }, "90469": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 17912 ], "resultingType": 90467 } ] }, "90470": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 18068 ], "resultingType": 90474 } ] }, "90471": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 18068 ], "resultingType": 90474 } ] }, "90472": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 18068 ], "resultingType": 90474 } ] }, "90480": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 12108, 28748 ], "resultingType": 90483 } ] }, "90481": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 12108, 28748 ], "resultingType": 90483 } ] }, "90482": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 12108, 28748 ], "resultingType": 90483 } ] }, "90484": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 24305 ], "resultingType": 90487 } ] }, "90485": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 24305 ], "resultingType": 90487 } ] }, "90486": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 24305 ], "resultingType": 90487 } ] }, "90489": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 17482, 28754 ], "resultingType": 90493 } ] }, "90490": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 17482, 28754 ], "resultingType": 90493 } ] }, "90491": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 17482, 28754 ], "resultingType": 90493 } ] }, "90495": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 87562 ], "resultingType": 90498 } ] }, "90496": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 87562 ], "resultingType": 90498 } ] }, "90497": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 87562 ], "resultingType": 90498 } ] }, "90499": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 37450, 37451, 37452 ], "resultingType": 90502 } ] }, "90500": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 37450, 37451, 37452 ], "resultingType": 90502 } ] }, "90501": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 37450, 37451, 37452 ], "resultingType": 90502 } ] }, "90521": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "5967": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "5969": { "max": 1.0499999523162842, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 16278, 22229, 28752 ], "resultingType": 90524 } ] }, "90522": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 }, "5967": { "max": 1.2000000476837158, "min": 0.75 }, "5969": { "max": 1.100000023841858, "min": 0.8500000238418579 } }, "inputOutputMapping": [ { "applicableTypes": [ 16278, 22229, 28752 ], "resultingType": 90524 } ] }, "90523": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 }, "5967": { "max": 1.2999999523162842, "min": 0.6499999761581421 }, "5969": { "max": 1.149999976158142, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 16278, 22229, 28752 ], "resultingType": 90524 } ] }, "90526": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 25266, 25540, 25542, 25812, 28788 ], "resultingType": 90529 } ] }, "90527": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 25266, 25540, 25542, 25812, 28788 ], "resultingType": 90529 } ] }, "90528": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 25266, 25540, 25542, 25812, 28788 ], "resultingType": 90529 } ] }, "90590": { "attributeIDs": { "6": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "30": { "max": 1.25, "min": 0.949999988079071 }, "50": { "max": 1.25, "min": 0.949999988079071 }, "54": { "max": 1.2000000476837158, "min": 0.8500000238418579 }, "73": { "max": 1.0499999523162842, "min": 0.9750000238418579 }, "77": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3153": { "max": 1.100000023841858, "min": 0.949999988079071 }, "3154": { "max": 1.100000023841858, "min": 0.8999999761581421 } }, "inputOutputMapping": [ { "applicableTypes": [ 60313, 60314, 60315 ], "resultingType": 90593 } ] }, "90591": { "attributeIDs": { "6": { "max": 1.2999999523162842, "min": 0.800000011920929 }, "30": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "50": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "54": { "max": 1.25, "min": 0.800000011920929 }, "73": { "max": 1.0750000476837158, "min": 0.949999988079071 }, "77": { "max": 1.2000000476837158, "min": 0.8999999761581421 }, "3153": { "max": 1.100000023841858, "min": 0.8500000238418579 }, "3154": { "max": 1.2000000476837158, "min": 0.800000011920929 } }, "inputOutputMapping": [ { "applicableTypes": [ 60313, 60314, 60315 ], "resultingType": 90593 } ] }, "90592": { "attributeIDs": { "6": { "max": 1.399999976158142, "min": 0.6000000238418579 }, "30": { "max": 1.5, "min": 0.800000011920929 }, "50": { "max": 1.5, "min": 0.800000011920929 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 60313, 60314, 60315 ], "resultingType": 90593 } ] }, "90609": { "attributeIDs": { "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 10246, 10250, 43694 ], "resultingType": 90614 } ] }, "90611": { "attributeIDs": { "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 43699, 43700, 43701 ], "resultingType": 90618 } ] }, "90619": { "attributeIDs": { "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 41030 ], "resultingType": 90621 } ] }, "90620": { "attributeIDs": { "37": { "max": 1.149999976158142, "min": 0.699999988079071 }, "54": { "max": 1.2999999523162842, "min": 0.75 }, "73": { "max": 1.100000023841858, "min": 0.8999999761581421 }, "77": { "max": 1.2999999523162842, "min": 0.8500000238418579 }, "3153": { "max": 1.149999976158142, "min": 0.800000011920929 }, "3154": { "max": 1.2999999523162842, "min": 0.699999988079071 } }, "inputOutputMapping": [ { "applicableTypes": [ 43681 ], "resultingType": 90622 } ] } } ================================================ FILE: staticdata/fsd_built/groups.0.json ================================================ { "0": { "anchorable": 0, "anchored": 0, "categoryID": 0, "fittableNonSingleton": 0, "groupID": 0, "groupName_de": "#System", "groupName_en-us": "#System", "groupName_es": "#System", "groupName_fr": "#Système", "groupName_it": "#System", "groupName_ja": "#システム", "groupName_ko": "#항성계", "groupName_ru": "#Система", "groupName_zh": "#星系", "groupNameID": 63576, "published": 0, "useBasePrice": 0 }, "1": { "anchorable": 0, "anchored": 0, "categoryID": 1, "fittableNonSingleton": 0, "groupID": 1, "groupName_de": "Charakter", "groupName_en-us": "Character", "groupName_es": "Personaje", "groupName_fr": "Personnage", "groupName_it": "Character", "groupName_ja": "キャラクター", "groupName_ko": "캐릭터", "groupName_ru": "Персонаж", "groupName_zh": "人物角色", "groupNameID": 63577, "published": 0, "useBasePrice": 0 }, "2": { "anchorable": 0, "anchored": 0, "categoryID": 1, "fittableNonSingleton": 0, "groupID": 2, "groupName_de": "Corporation", "groupName_en-us": "Corporation", "groupName_es": "Corporación", "groupName_fr": "Corporation", "groupName_it": "Corporation", "groupName_ja": "コーポレーション", "groupName_ko": "코퍼레이션", "groupName_ru": "Корпорация", "groupName_zh": "军团", "groupNameID": 63578, "published": 0, "useBasePrice": 0 }, "3": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 3, "groupName_de": "Region", "groupName_en-us": "Region", "groupName_es": "Región", "groupName_fr": "Région", "groupName_it": "Region", "groupName_ja": "リージョン", "groupName_ko": "지역", "groupName_ru": "Сектор", "groupName_zh": "星域", "groupNameID": 63579, "published": 0, "useBasePrice": 0 }, "4": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4, "groupName_de": "Konstellation", "groupName_en-us": "Constellation", "groupName_es": "Constelación", "groupName_fr": "Constellation", "groupName_it": "Constellation", "groupName_ja": "コンステレーション", "groupName_ko": "성좌", "groupName_ru": "Созвездие", "groupName_zh": "星座", "groupNameID": 63580, "published": 0, "useBasePrice": 0 }, "5": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 5, "groupName_de": "Sonnensystem", "groupName_en-us": "Solar System", "groupName_es": "Sistema solar", "groupName_fr": "Système solaire", "groupName_it": "Solar System", "groupName_ja": "ソーラーシステム", "groupName_ko": "항성계", "groupName_ru": "Планетная система", "groupName_zh": "星系", "groupNameID": 63581, "published": 0, "useBasePrice": 0 }, "6": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 6, "groupName_de": "Sonne", "groupName_en-us": "Sun", "groupName_es": "Dom.", "groupName_fr": "Soleil", "groupName_it": "Sun", "groupName_ja": "恒星", "groupName_ko": "항성", "groupName_ru": "Звезда", "groupName_zh": "恒星", "groupNameID": 63582, "published": 0, "useBasePrice": 0 }, "7": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 7, "groupName_de": "Planet", "groupName_en-us": "Planet", "groupName_es": "Planeta", "groupName_fr": "Planète", "groupName_it": "Planet", "groupName_ja": "惑星", "groupName_ko": "행성", "groupName_ru": "Планета", "groupName_zh": "行星", "groupNameID": 63583, "published": 0, "useBasePrice": 0 }, "8": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 8, "groupName_de": "Mond", "groupName_en-us": "Moon", "groupName_es": "Luna", "groupName_fr": "Lune", "groupName_it": "Moon", "groupName_ja": "衛星", "groupName_ko": "위성", "groupName_ru": "Луна", "groupName_zh": "卫星", "groupNameID": 63584, "published": 0, "useBasePrice": 0 }, "9": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 9, "groupName_de": "Asteroidengürtel", "groupName_en-us": "Asteroid Belt", "groupName_es": "Cinturón de asteroides", "groupName_fr": "Ceinture d'astéroïdes", "groupName_it": "Asteroid Belt", "groupName_ja": "アステロイドベルト", "groupName_ko": "소행성 벨트", "groupName_ru": "Пояс астероидов", "groupName_zh": "小行星带", "groupNameID": 63585, "iconID": 15, "published": 0, "useBasePrice": 0 }, "10": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 10, "groupName_de": "Sprungtor", "groupName_en-us": "Stargate", "groupName_es": "Portal estelar", "groupName_fr": "Portail stellaire", "groupName_it": "Stargate", "groupName_ja": "スターゲート", "groupName_ko": "스타게이트", "groupName_ru": "Гиперворота", "groupName_zh": "星门", "groupNameID": 63586, "published": 0, "useBasePrice": 0 }, "11": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 11, "groupName_de": "ALTER Asteroid", "groupName_en-us": "Asteroid OLD", "groupName_es": "Asteroid OLD", "groupName_fr": "Astéroïde ANCIEN", "groupName_it": "Asteroid OLD", "groupName_ja": "アステロイド旧式", "groupName_ko": "소행성 OLD", "groupName_ru": "Asteroid OLD", "groupName_zh": "小行星OLD", "groupNameID": 63587, "iconID": 15, "published": 0, "useBasePrice": 0 }, "12": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 12, "groupName_de": "Frachtcontainer", "groupName_en-us": "Cargo Container", "groupName_es": "Contenedor de carga", "groupName_fr": "Conteneur de fret", "groupName_it": "Cargo Container", "groupName_ja": "カーゴコンテナ", "groupName_ko": "화물 컨테이너", "groupName_ru": "Грузовой контейнер", "groupName_zh": "货柜", "groupNameID": 64289, "iconID": 16, "published": 1, "useBasePrice": 1 }, "13": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 13, "groupName_de": "Ring", "groupName_en-us": "Ring", "groupName_es": "Anillo", "groupName_fr": "Anneau", "groupName_it": "Ring", "groupName_ja": "リング", "groupName_ko": "링", "groupName_ru": "Кольцо", "groupName_zh": "环状星体", "groupNameID": 63588, "iconID": 0, "published": 0, "useBasePrice": 0 }, "14": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 14, "groupName_de": "Biomasse", "groupName_en-us": "Biomass", "groupName_es": "Biomasa", "groupName_fr": "Biomasse", "groupName_it": "Biomass", "groupName_ja": "バイオマス", "groupName_ko": "바이오매스", "groupName_ru": "Биомасса", "groupName_zh": "生物质", "groupNameID": 63589, "iconID": 0, "published": 1, "useBasePrice": 0 }, "15": { "anchorable": 0, "anchored": 1, "categoryID": 3, "fittableNonSingleton": 0, "groupID": 15, "groupName_de": "Station", "groupName_en-us": "Station", "groupName_es": "Estación", "groupName_fr": "Station", "groupName_it": "Station", "groupName_ja": "ステーション", "groupName_ko": "정거장", "groupName_ru": "Станция", "groupName_zh": "空间站", "groupNameID": 63590, "published": 0, "useBasePrice": 0 }, "16": { "anchorable": 0, "anchored": 0, "categoryID": 3, "fittableNonSingleton": 0, "groupID": 16, "groupName_de": "Stationsdienste", "groupName_en-us": "Station Services", "groupName_es": "Servicios de la estación", "groupName_fr": "Services de la station", "groupName_it": "Station Services", "groupName_ja": "ステーションサービス", "groupName_ko": "정거장 서비스", "groupName_ru": "Станционные службы", "groupName_zh": "空间站设施", "groupNameID": 63591, "published": 0, "useBasePrice": 0 }, "17": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 17, "groupName_de": "Geld", "groupName_en-us": "Money", "groupName_es": "Dinero", "groupName_fr": "Argent", "groupName_it": "Money", "groupName_ja": "通貨", "groupName_ko": "화폐", "groupName_ru": "Деньги", "groupName_zh": "钱", "groupNameID": 63592, "iconID": 21, "published": 1, "useBasePrice": 0 }, "18": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 18, "groupName_de": "Mineralien", "groupName_en-us": "Mineral", "groupName_es": "Mineral", "groupName_fr": "Minéral", "groupName_it": "Mineral", "groupName_ja": "無機物", "groupName_ko": "광물", "groupName_ru": "Минералы", "groupName_zh": "矿物", "groupNameID": 63593, "iconID": 22, "published": 1, "useBasePrice": 1 }, "19": { "anchorable": 0, "anchored": 0, "categoryID": 1, "fittableNonSingleton": 0, "groupID": 19, "groupName_de": "Fraktion", "groupName_en-us": "Faction", "groupName_es": "Facción", "groupName_fr": "Faction", "groupName_it": "Faction", "groupName_ja": "勢力", "groupName_ko": "팩션", "groupName_ru": "Государство/организация", "groupName_zh": "势力", "groupNameID": 63594, "published": 0, "useBasePrice": 0 }, "20": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 20, "groupName_de": "Droge", "groupName_en-us": "Drug", "groupName_es": "Sustancia", "groupName_fr": "Drogue", "groupName_it": "Drug", "groupName_ja": "薬物", "groupName_ko": "약물", "groupName_ru": "Наркотик", "groupName_zh": "药品", "groupNameID": 63595, "iconID": 31, "published": 0, "useBasePrice": 0 }, "23": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 23, "groupName_de": "Klon", "groupName_en-us": "Clone", "groupName_es": "Clon", "groupName_fr": "Clone", "groupName_it": "Clone", "groupName_ja": "クローン", "groupName_ko": "클론", "groupName_ru": "Клон", "groupName_zh": "克隆", "groupNameID": 64284, "iconID": 34, "published": 0, "useBasePrice": 1 }, "24": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 24, "groupName_de": "Beleg", "groupName_en-us": "Voucher", "groupName_es": "Cupón", "groupName_fr": "Coupon", "groupName_it": "Voucher", "groupName_ja": "バウチャー", "groupName_ko": "추천서", "groupName_ru": "Ваучер", "groupName_zh": "授权卷", "groupNameID": 63596, "published": 0, "useBasePrice": 0 }, "25": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 25, "groupName_de": "Fregatte", "groupName_en-us": "Frigate", "groupName_es": "Fragata", "groupName_fr": "Frégate", "groupName_it": "Frigate", "groupName_ja": "フリゲート", "groupName_ko": "프리깃", "groupName_ru": "Фрегат", "groupName_zh": "护卫舰", "groupNameID": 63597, "published": 1, "useBasePrice": 0 }, "26": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 26, "groupName_de": "Kreuzer", "groupName_en-us": "Cruiser", "groupName_es": "Crucero", "groupName_fr": "Croiseur", "groupName_it": "Cruiser", "groupName_ja": "巡洋艦", "groupName_ko": "크루저", "groupName_ru": "Крейсер", "groupName_zh": "巡洋舰", "groupNameID": 63598, "published": 1, "useBasePrice": 0 }, "27": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 27, "groupName_de": "Schlachtschiff", "groupName_en-us": "Battleship", "groupName_es": "Acorazado", "groupName_fr": "Cuirassé", "groupName_it": "Battleship", "groupName_ja": "戦艦", "groupName_ko": "배틀쉽", "groupName_ru": "Линкор", "groupName_zh": "战列舰", "groupNameID": 63599, "published": 1, "useBasePrice": 0 }, "28": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 28, "groupName_de": "Transporter", "groupName_en-us": "Hauler", "groupName_es": "Nave de mercancías", "groupName_fr": "Cargo", "groupName_it": "Hauler", "groupName_ja": "ハウラー", "groupName_ko": "운반선", "groupName_ru": "Перевозчик", "groupName_zh": "运载舰", "groupNameID": 63600, "published": 1, "useBasePrice": 0 }, "29": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 29, "groupName_de": "Kapsel", "groupName_en-us": "Capsule", "groupName_es": "Cápsula", "groupName_fr": "Capsule", "groupName_it": "Capsule", "groupName_ja": "カプセル", "groupName_ko": "캡슐", "groupName_ru": "Капсула", "groupName_zh": "太空舱", "groupNameID": 63601, "iconID": 73, "published": 1, "useBasePrice": 0 }, "30": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 30, "groupName_de": "Titan", "groupName_en-us": "Titan", "groupName_es": "Titán", "groupName_fr": "Titan", "groupName_it": "Titan", "groupName_ja": "タイタン", "groupName_ko": "타이탄", "groupName_ru": "Титан", "groupName_zh": "泰坦", "groupNameID": 63602, "published": 1, "useBasePrice": 0 }, "31": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 31, "groupName_de": "Shuttle", "groupName_en-us": "Shuttle", "groupName_es": "Lanzadera", "groupName_fr": "Navette", "groupName_it": "Shuttle", "groupName_ja": "シャトル", "groupName_ko": "셔틀", "groupName_ru": "Личный катер", "groupName_zh": "穿梭机", "groupNameID": 63603, "iconID": 0, "published": 1, "useBasePrice": 0 }, "32": { "anchorable": 0, "anchored": 0, "categoryID": 1, "fittableNonSingleton": 0, "groupID": 32, "groupName_de": "Allianz", "groupName_en-us": "Alliance", "groupName_es": "Alianza", "groupName_fr": "Alliance", "groupName_it": "Alliance", "groupName_ja": "アライアンス", "groupName_ko": "얼라이언스", "groupName_ru": "Альянс", "groupName_zh": "联盟", "groupNameID": 63604, "published": 0, "useBasePrice": 0 }, "38": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 38, "groupName_de": "Schilderweiterung", "groupName_en-us": "Shield Extender", "groupName_es": "Extensor de escudo", "groupName_fr": "Extenseur de bouclier", "groupName_it": "Shield Extender", "groupName_ja": "シールドエクステンダー", "groupName_ko": "실드 확장장치", "groupName_ru": "Расширитель щита", "groupName_zh": "护盾扩展装置", "groupNameID": 63605, "iconID": 82, "published": 1, "useBasePrice": 0 }, "39": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 39, "groupName_de": "Schildauflader", "groupName_en-us": "Shield Recharger", "groupName_es": "Cargador de escudo", "groupName_fr": "Rechargeur de bouclier", "groupName_it": "Shield Recharger", "groupName_ja": "シールドリチャージャー", "groupName_ko": "실드 회복장치", "groupName_ru": "Система подзарядки щита", "groupName_zh": "护盾回充设备", "groupNameID": 63606, "iconID": 26451, "published": 1, "useBasePrice": 0 }, "40": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 40, "groupName_de": "Schild-Booster", "groupName_en-us": "Shield Booster", "groupName_es": "Potenciador de escudo", "groupName_fr": "Booster de bouclier", "groupName_it": "Shield Booster", "groupName_ja": "シールドブースター", "groupName_ko": "실드 부스터", "groupName_ru": "Установка накачки силового поля", "groupName_zh": "护盾回充增量器", "groupNameID": 63607, "iconID": 84, "published": 1, "useBasePrice": 0 }, "41": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 41, "groupName_de": "Remote Shield Booster", "groupName_en-us": "Remote Shield Booster", "groupName_es": "Potenciador de escudo remoto", "groupName_fr": "Booster de bouclier à distance", "groupName_it": "Remote Shield Booster", "groupName_ja": "リモートシールドブースター", "groupName_ko": "원격 실드 부스터", "groupName_ru": "Установка дистанционной накачки силовых полей", "groupName_zh": "远程护盾回充增量器", "groupNameID": 63608, "iconID": 86, "published": 1, "useBasePrice": 0 }, "43": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 43, "groupName_de": "Energiespeicher-Auflader", "groupName_en-us": "Capacitor Recharger", "groupName_es": "Cargadores del condensador", "groupName_fr": "Rechargeur de capaciteur", "groupName_it": "Capacitor Recharger", "groupName_ja": "キャパシタリチャージャー", "groupName_ko": "캐패시터 충전기", "groupName_ru": "Система подзарядки конденсатора", "groupName_zh": "电容器回充设备", "groupNameID": 63609, "iconID": 26457, "published": 1, "useBasePrice": 0 }, "46": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 46, "groupName_de": "Schiffsantrieb-Module", "groupName_en-us": "Propulsion Module", "groupName_es": "Módulo de propulsión", "groupName_fr": "Module de propulsion", "groupName_it": "Propulsion Module", "groupName_ja": "推進力モジュール", "groupName_ko": "추진 모듈", "groupName_ru": "Движительные модули", "groupName_zh": "推进装备", "groupNameID": 63610, "iconID": 96, "published": 1, "useBasePrice": 0 }, "47": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 47, "groupName_de": "Frachtscanner", "groupName_en-us": "Cargo Scanner", "groupName_es": "Escáner de carga", "groupName_fr": "Scanner de soute", "groupName_it": "Cargo Scanner", "groupName_ja": "カーゴスキャナー", "groupName_ko": "화물 스캐너", "groupName_ru": "Комплекс для досмотра грузов", "groupName_zh": "货柜舱扫描设备", "groupNameID": 63611, "iconID": 106, "published": 1, "useBasePrice": 0 }, "48": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 48, "groupName_de": "Schiffsscanner", "groupName_en-us": "Ship Scanner", "groupName_es": "Escáner de nave", "groupName_fr": "Scanner du vaisseau", "groupName_it": "Ship Scanner", "groupName_ja": "シップスキャナー", "groupName_ko": "함선 스캐너", "groupName_ru": "Сканер кораблей", "groupName_zh": "船只扫描设备", "groupNameID": 63612, "iconID": 107, "published": 1, "useBasePrice": 0 }, "49": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 49, "groupName_de": "Bergbauvermessungs-Chipsatz", "groupName_en-us": "Mining Survey Chipset", "groupName_es": "Chipset de prospección de minería", "groupName_fr": "Puce d'arpentage d'extraction minière", "groupName_it": "Mining Survey Chipset", "groupName_ja": "採掘調査用チップセット", "groupName_ko": "채굴 조사 칩셋", "groupName_ru": "Считывающий буровой чип", "groupName_zh": "采矿调查芯片组", "groupNameID": 63613, "iconID": 107, "published": 1, "useBasePrice": 0 }, "52": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 52, "groupName_de": "Warp-Störer", "groupName_en-us": "Warp Scrambler", "groupName_es": "distorsionador de warp", "groupName_fr": "Inhibiteur de warp", "groupName_it": "Warp Scrambler", "groupName_ja": "ワープスクランブラー", "groupName_ko": "워프 스크램블러", "groupName_ru": "Варп-глушитель", "groupName_zh": "跃迁扰乱设备", "groupNameID": 63614, "iconID": 111, "published": 1, "useBasePrice": 0 }, "53": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 53, "groupName_de": "Energiewaffe", "groupName_en-us": "Energy Weapon", "groupName_es": "Arma de energía", "groupName_fr": "Arme à énergie", "groupName_it": "Energy Weapon", "groupName_ja": "エネルギー兵器", "groupName_ko": "에너지 무기", "groupName_ru": "Лазерное орудие", "groupName_zh": "能量武器", "groupNameID": 63615, "iconID": 355, "published": 1, "useBasePrice": 0 }, "54": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 54, "groupName_de": "Bergbaulaser", "groupName_en-us": "Mining Laser", "groupName_es": "Láser minero", "groupName_fr": "Laser d'extraction", "groupName_it": "Mining Laser", "groupName_ja": "採掘レーザー", "groupName_ko": "채굴 레이저", "groupName_ru": "Буровой лазер", "groupName_zh": "采矿激光器", "groupNameID": 63616, "iconID": 138, "published": 1, "useBasePrice": 0 }, "55": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 55, "groupName_de": "Projektilwaffe", "groupName_en-us": "Projectile Weapon", "groupName_es": "Arma de proyectiles", "groupName_fr": "Arme à projectiles", "groupName_it": "Projectile Weapon", "groupName_ja": "プロジェクタイル兵器", "groupName_ko": "발사체 무기", "groupName_ru": "Баллистическое орудие", "groupName_zh": "射弹武器", "groupNameID": 63617, "iconID": 384, "published": 1, "useBasePrice": 0 }, "56": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 56, "groupName_de": "Raketenwerfer", "groupName_en-us": "Missile Launcher", "groupName_es": "Lanzamisiles", "groupName_fr": "Lance-missiles", "groupName_it": "Missile Launcher", "groupName_ja": "ミサイルランチャー", "groupName_ko": "미사일 런처", "groupName_ru": "Ракетная установка", "groupName_zh": "导弹发射器", "groupNameID": 63618, "iconID": 168, "published": 0, "useBasePrice": 0 }, "57": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 57, "groupName_de": "Schildenergie-Relais", "groupName_en-us": "Shield Power Relay", "groupName_es": "Relé de potencia de escudo", "groupName_fr": "Relais d’alimentation de bouclier", "groupName_it": "Shield Power Relay", "groupName_ja": "シールドパワーリレー", "groupName_ko": "실드 릴레이", "groupName_ru": "Модуль передачи мощности на щит", "groupName_zh": "护盾能源继电器", "groupNameID": 63619, "iconID": 26450, "published": 1, "useBasePrice": 0 }, "59": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 59, "groupName_de": "Kreiselregler", "groupName_en-us": "Gyrostabilizer", "groupName_es": "Giroestabilizador", "groupName_fr": "Gyrostabilisateur", "groupName_it": "Gyrostabilizer", "groupName_ja": "回転制御機", "groupName_ko": "자이로 안정기", "groupName_ru": "Гиростабилизатор", "groupName_zh": "回转稳定设备", "groupNameID": 63620, "iconID": 26452, "published": 1, "useBasePrice": 0 }, "60": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 60, "groupName_de": "Schadenskontrolle", "groupName_en-us": "Damage Control", "groupName_es": "Control de daños", "groupName_fr": "Contrôle des dégâts", "groupName_it": "Damage Control", "groupName_ja": "ダメージ制御", "groupName_ko": "피해 수복", "groupName_ru": "Модуль боевой живучести", "groupName_zh": "损伤控制", "groupNameID": 63621, "iconID": 0, "published": 1, "useBasePrice": 0 }, "61": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 61, "groupName_de": "Energiespeicher-Batterie", "groupName_en-us": "Capacitor Battery", "groupName_es": "Batería de condensador", "groupName_fr": "Batterie de capaciteur", "groupName_it": "Capacitor Battery", "groupName_ja": "キャパシタバッテリー", "groupName_ko": "캐패시터 배터리", "groupName_ru": "Батарея конденсатора", "groupName_zh": "电容器电池", "groupNameID": 63622, "iconID": 0, "published": 1, "useBasePrice": 0 }, "62": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 62, "groupName_de": "Panzerungsreparatureinheit", "groupName_en-us": "Armor Repair Unit", "groupName_es": "Unidad de reparación de blindaje", "groupName_fr": "Unité de réparation d'armure", "groupName_it": "Armor Repair Unit", "groupName_ja": "アーマーリペアユニット", "groupName_ko": "장갑수리 장치", "groupName_ru": "Установка ремонта брони", "groupName_zh": "装甲维修组件", "groupNameID": 63623, "iconID": 0, "published": 1, "useBasePrice": 1 }, "63": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 63, "groupName_de": "Hüllenreparatureinheit", "groupName_en-us": "Hull Repair Unit", "groupName_es": "Unidad de reparación de casco", "groupName_fr": "Unité de réparation de coque", "groupName_it": "Hull Repair Unit", "groupName_ja": "船体リペアユニット", "groupName_ko": "선체수리 장치", "groupName_ru": "Система ремонта корпуса", "groupName_zh": "船体维修组件", "groupNameID": 63624, "iconID": 0, "published": 1, "useBasePrice": 0 }, "65": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 65, "groupName_de": "Stasis Web", "groupName_en-us": "Stasis Web", "groupName_es": "Red ralentizadora", "groupName_fr": "Stase", "groupName_it": "Stasis Web", "groupName_ja": "ステイシスウェブ", "groupName_ko": "스테이시스 웹 생성기", "groupName_ru": "Генератор стазис-поля", "groupName_zh": "能量滞停光束网", "groupNameID": 63625, "iconID": 0, "published": 1, "useBasePrice": 0 }, "67": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 67, "groupName_de": "Remote Capacitor Transmitter", "groupName_en-us": "Remote Capacitor Transmitter", "groupName_es": "Transmisor de condensador remoto", "groupName_fr": "Transmetteur de capaciteur à distance", "groupName_it": "Remote Capacitor Transmitter", "groupName_ja": "リモートキャパシタトランスミッター", "groupName_ko": "원격 캐패시터 전송기", "groupName_ru": "Установка дистанционного энергоснабжения", "groupName_zh": "远程电容传输装置", "groupNameID": 63626, "iconID": 0, "published": 1, "useBasePrice": 0 }, "68": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 68, "groupName_de": "Energie-Nosferatu", "groupName_en-us": "Energy Nosferatu", "groupName_es": "Nosferatu de energía", "groupName_fr": "Nosferatu à énergie", "groupName_it": "Energy Nosferatu", "groupName_ja": "エネルギーノスフェラトゥ", "groupName_ko": "에너지 노스페라투", "groupName_ru": "Устройства паразитной подзарядки", "groupName_zh": "掠能器", "groupNameID": 63627, "iconID": 0, "published": 1, "useBasePrice": 0 }, "71": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 71, "groupName_de": "Energieneutralisierer", "groupName_en-us": "Energy Neutralizer", "groupName_es": "Neutralizador energético", "groupName_fr": "Neutraliseur d'énergie", "groupName_it": "Energy Neutralizer", "groupName_ja": "エネルギーニュートライザー", "groupName_ko": "에너지 뉴트럴라이저", "groupName_ru": "Дистанционные нейтрализаторы заряда", "groupName_zh": "能量中和器", "groupNameID": 63628, "iconID": 0, "published": 1, "useBasePrice": 0 }, "72": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 72, "groupName_de": "Smart Bomb", "groupName_en-us": "Smart Bomb", "groupName_es": "Bomba inteligente", "groupName_fr": "Bombe de proximité", "groupName_it": "Smart Bomb", "groupName_ja": "スマートボム", "groupName_ko": "스마트폭탄", "groupName_ru": "Импульсный излучатель", "groupName_zh": "立体炸弹", "groupNameID": 63629, "iconID": 0, "published": 1, "useBasePrice": 0 }, "74": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 74, "groupName_de": "Hybridwaffe", "groupName_en-us": "Hybrid Weapon", "groupName_es": "Arma híbrida", "groupName_fr": "Arme hybride", "groupName_it": "Hybrid Weapon", "groupName_ja": "ハイブリッド兵器", "groupName_ko": "하이브리드 무기", "groupName_ru": "Гибридное орудие", "groupName_zh": "混合武器", "groupNameID": 63630, "iconID": 370, "published": 1, "useBasePrice": 0 }, "76": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 76, "groupName_de": "Energiespeicher-Booster", "groupName_en-us": "Capacitor Booster", "groupName_es": "Potenciador de condensador", "groupName_fr": "Booster de capaciteur", "groupName_it": "Capacitor Booster", "groupName_ja": "キャパシタブースター", "groupName_ko": "캐패시터 부스터", "groupName_ru": "Система подкачки конденсатора", "groupName_zh": "电容注电器", "groupNameID": 63631, "iconID": 1031, "published": 1, "useBasePrice": 0 }, "77": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 77, "groupName_de": "Schildhärter", "groupName_en-us": "Shield Hardener", "groupName_es": "Endurecedor de escudo", "groupName_fr": "Renforcement de bouclier", "groupName_it": "Shield Hardener", "groupName_ja": "シールドハードナー", "groupName_ko": "실드 강화장치", "groupName_ru": "Система настройки щита", "groupName_zh": "护盾强化设备", "groupNameID": 63632, "iconID": 0, "published": 1, "useBasePrice": 0 }, "78": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 78, "groupName_de": "Verstärkte Schotten", "groupName_en-us": "Reinforced Bulkhead", "groupName_es": "Mamparo reforzado", "groupName_fr": "Cloison renforcée", "groupName_it": "Reinforced Bulkhead", "groupName_ja": "強化隔壁", "groupName_ko": "강화 선체 격벽", "groupName_ru": "Усиленная переборка", "groupName_zh": "加强型舱隔壁", "groupNameID": 63633, "iconID": 0, "published": 1, "useBasePrice": 0 }, "80": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 80, "groupName_de": "Burst-Störsender", "groupName_en-us": "Burst Jammer", "groupName_es": "Perturbador de ráfaga", "groupName_fr": "Brouilleur Burst", "groupName_it": "Burst Jammer", "groupName_ja": "バーストジャマー", "groupName_ko": "버스트 재머", "groupName_ru": "Генератор импульсных помех", "groupName_zh": "脉冲干扰器", "groupNameID": 63634, "iconID": 0, "published": 1, "useBasePrice": 0 }, "82": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 82, "groupName_de": "Passives Aufschaltungssystem", "groupName_en-us": "Passive Targeting System", "groupName_es": "Sistema de adquisición pasiva de objetivos", "groupName_fr": "Système de ciblage passif", "groupName_it": "Passive Targeting System", "groupName_ja": "パッシブターゲットシステム", "groupName_ko": "패시브 타겟팅 시스템", "groupName_ru": "Пассивная система целеуказания", "groupName_zh": "被动锁定系统", "groupNameID": 63635, "iconID": 0, "published": 1, "useBasePrice": 0 }, "83": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 83, "groupName_de": "Projektilmunition", "groupName_en-us": "Projectile Ammo", "groupName_es": "Munición de proyectiles", "groupName_fr": "Munition de projectile", "groupName_it": "Projectile Ammo", "groupName_ja": "プロジェクタイル弾", "groupName_ko": "발사체 탄약", "groupName_ru": "Снаряды", "groupName_zh": "射弹弹药", "groupNameID": 64402, "iconID": 1296, "published": 1, "useBasePrice": 0 }, "85": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 85, "groupName_de": "Hybrid-Ladung", "groupName_en-us": "Hybrid Charge", "groupName_es": "Carga híbrida", "groupName_fr": "Charge hybride", "groupName_it": "Hybrid Charge", "groupName_ja": "ハイブリッド弾", "groupName_ko": "하이브리드 탄약", "groupName_ru": "Гибридные заряды", "groupName_zh": "混合弹药", "groupNameID": 63637, "iconID": 1325, "published": 1, "useBasePrice": 0 }, "86": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 86, "groupName_de": "Frequenzkristall", "groupName_en-us": "Frequency Crystal", "groupName_es": "Cristal de frecuencia", "groupName_fr": "Cristal à fréquence", "groupName_it": "Frequency Crystal", "groupName_ja": "フリーケンシークリスタル", "groupName_ko": "프리퀀시 크리스탈", "groupName_ru": "Частотный кристалл", "groupName_zh": "频率晶体", "groupNameID": 63638, "iconID": 1142, "published": 1, "useBasePrice": 0 }, "87": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 87, "groupName_de": "Energiespeicher-Boosterladung", "groupName_en-us": "Capacitor Booster Charge", "groupName_es": "Carga de potenciador de condensador", "groupName_fr": "Charge de booster de capaciteur", "groupName_it": "Capacitor Booster Charge", "groupName_ja": "キャパシタブースターチャージ", "groupName_ko": "캐패시터 부스터 차지", "groupName_ru": "Заряд системы пополнения накопителя", "groupName_zh": "电容注电器装料", "groupNameID": 63639, "iconID": 1033, "published": 1, "useBasePrice": 0 }, "88": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 88, "groupName_de": "Abfangraketen", "groupName_en-us": "Defender Missiles", "groupName_es": "Misiles de defensa", "groupName_fr": "Missiles antibalistiques", "groupName_it": "Defender Missiles", "groupName_ja": "防衛ミサイル", "groupName_ko": "디펜더 미사일", "groupName_ru": "Противоракеты", "groupName_zh": "反弹道导弹基础学", "groupNameID": 63640, "iconID": 192, "published": 1, "useBasePrice": 0 }, "89": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 89, "groupName_de": "Torpedo", "groupName_en-us": "Torpedo", "groupName_es": "Torpedo", "groupName_fr": "Torpille", "groupName_it": "Torpedo", "groupName_ja": "トルピード", "groupName_ko": "토피도", "groupName_ru": "Торпеда", "groupName_zh": "鱼雷", "groupNameID": 63641, "iconID": 1349, "published": 1, "useBasePrice": 0 }, "90": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 90, "groupName_de": "Bombe", "groupName_en-us": "Bomb", "groupName_es": "Bomba", "groupName_fr": "Bombe", "groupName_it": "Bomb", "groupName_ja": "ボム", "groupName_ko": "폭탄", "groupName_ru": "Бомба", "groupName_zh": "炸弹", "groupNameID": 63642, "iconID": 3278, "published": 1, "useBasePrice": 0 }, "92": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 92, "groupName_de": "Mine", "groupName_en-us": "Mine", "groupName_es": "Minería", "groupName_fr": "Mine", "groupName_it": "Mine", "groupName_ja": "機雷", "groupName_ko": "채굴", "groupName_ru": "Мина", "groupName_zh": "悬浮雷", "groupNameID": 63643, "iconID": 0, "published": 0, "useBasePrice": 0 }, "94": { "anchorable": 0, "anchored": 0, "categoryID": 10, "fittableNonSingleton": 0, "groupID": 94, "groupName_de": "Handeln", "groupName_en-us": "Trading", "groupName_es": "Comercio", "groupName_fr": "Commerce", "groupName_it": "Trading", "groupName_ja": "トレード", "groupName_ko": "거래", "groupName_ru": "Торговля", "groupName_zh": "贸易", "groupNameID": 63644, "published": 0, "useBasePrice": 0 }, "95": { "anchorable": 0, "anchored": 0, "categoryID": 10, "fittableNonSingleton": 0, "groupID": 95, "groupName_de": "Handlungssitzung", "groupName_en-us": "Trade Session", "groupName_es": "Sesión comercial", "groupName_fr": "Session de commerce", "groupName_it": "Trade Session", "groupName_ja": "トレードセッション", "groupName_ko": "거래 세션", "groupName_ru": "Сеанс торговли", "groupName_zh": "贸易市场", "groupNameID": 63645, "published": 0, "useBasePrice": 0 }, "96": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 96, "groupName_de": "Automatisiertes Aufschaltungssystem", "groupName_en-us": "Automated Targeting System", "groupName_es": "Sistema de adquisición automatizada de objetivos", "groupName_fr": "Système de ciblage automatisé", "groupName_it": "Automated Targeting System", "groupName_ja": "全自動ターゲットシステム", "groupName_ko": "오토 타겟팅 시스템", "groupName_ru": "Автоматическая система целеуказания", "groupName_zh": "自动锁定系统", "groupNameID": 63646, "iconID": 0, "published": 1, "useBasePrice": 0 }, "97": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 97, "groupName_de": "Nähe-Drohne", "groupName_en-us": "Proximity Drone", "groupName_es": "Dron de proximidad", "groupName_fr": "Drone de proximité", "groupName_it": "Proximity Drone", "groupName_ja": "プロキシミティードローン", "groupName_ko": "근접 드론", "groupName_ru": "Дрон Proximity", "groupName_zh": "近距离采矿无人机", "groupNameID": 63647, "iconID": 0, "published": 0, "useBasePrice": 0 }, "98": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 98, "groupName_de": "Panzerungsbeschichtung", "groupName_en-us": "Armor Coating", "groupName_es": "Recubrimiento de blindaje", "groupName_fr": "Surcouche de blindage", "groupName_it": "Armor Coating", "groupName_ja": "アーマーコーティング", "groupName_ko": "장갑 코팅", "groupName_ru": "Защитное покрытие брони", "groupName_zh": "装甲附甲", "groupNameID": 63648, "iconID": 0, "published": 1, "useBasePrice": 0 }, "99": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 99, "groupName_de": "Sentry-Gun", "groupName_en-us": "Sentry Gun", "groupName_es": "Torreta centinela", "groupName_fr": "Canon de sentinelle", "groupName_it": "Sentry Gun", "groupName_ja": "セントリーガン", "groupName_ko": "센트리 포탑", "groupName_ru": "Автоматическое орудие", "groupName_zh": "岗哨炮", "groupNameID": 63649, "iconID": 0, "published": 0, "useBasePrice": 0 }, "100": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 100, "groupName_de": "Kampfdrohne", "groupName_en-us": "Combat Drone", "groupName_es": "Dron de combate", "groupName_fr": "Drone de combat", "groupName_it": "Combat Drone", "groupName_ja": "戦闘用ドローン", "groupName_ko": "전투 드론", "groupName_ru": "Боевой дрон", "groupName_zh": "战斗无人机", "groupNameID": 63650, "iconID": 0, "published": 1, "useBasePrice": 0 }, "101": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 101, "groupName_de": "Bergbaudrohne", "groupName_en-us": "Mining Drone", "groupName_es": "Dron minero", "groupName_fr": "Drone d'extraction", "groupName_it": "Mining Drone", "groupName_ja": "採掘専門ドローン", "groupName_ko": "채굴 드론", "groupName_ru": "Буровой дрон", "groupName_zh": "采矿无人机", "groupNameID": 63651, "iconID": 0, "published": 1, "useBasePrice": 0 }, "104": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 104, "groupName_de": "Klon-Blueprint", "groupName_en-us": "Clone Blueprint", "groupName_es": "Plano de clon", "groupName_fr": "Plan de construction Clone", "groupName_it": "Clone Blueprint", "groupName_ja": "クローンブループリント", "groupName_ko": "클론 블루프린트", "groupName_ru": "Чертеж клона", "groupName_zh": "克隆蓝图", "groupNameID": 63652, "iconID": 34, "published": 1, "useBasePrice": 1 }, "105": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 105, "groupName_de": "Fregatten-Blueprint", "groupName_en-us": "Frigate Blueprint", "groupName_es": "Plano de fragata", "groupName_fr": "Plan de construction Frégate", "groupName_it": "Frigate Blueprint", "groupName_ja": "フリゲートブループリント", "groupName_ko": "프리깃 블루프린트", "groupName_ru": "Чертежи фрегата", "groupName_zh": "护卫舰蓝图", "groupNameID": 63653, "published": 1, "useBasePrice": 1 }, "106": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 106, "groupName_de": "Kreuzer-Blueprint", "groupName_en-us": "Cruiser Blueprint", "groupName_es": "Plano de crucero", "groupName_fr": "Plan de construction Croiseur", "groupName_it": "Cruiser Blueprint", "groupName_ja": "巡洋艦ブループリント", "groupName_ko": "크루저 블루프린트", "groupName_ru": "Чертежи крейсера", "groupName_zh": "巡洋舰蓝图", "groupNameID": 63654, "published": 1, "useBasePrice": 1 }, "107": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 107, "groupName_de": "Schlachtschiff-Blueprint", "groupName_en-us": "Battleship Blueprint", "groupName_es": "Plano de acorazado", "groupName_fr": "Plan de construction Cuirassé", "groupName_it": "Battleship Blueprint", "groupName_ja": "戦艦ブループリント", "groupName_ko": "배틀쉽 블루프린트", "groupName_ru": "Чертежи линкора", "groupName_zh": "战列舰蓝图", "groupNameID": 63655, "published": 1, "useBasePrice": 1 }, "108": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 108, "groupName_de": "Transporter-Blaupause", "groupName_en-us": "Hauler Blueprint", "groupName_es": "Plano de nave de mercancías", "groupName_fr": "Plan de construction Cargo", "groupName_it": "Hauler Blueprint", "groupName_ja": "ハウラー設計図", "groupName_ko": "운반선 블루프린트", "groupName_ru": "Hauler Blueprint", "groupName_zh": "运载舰蓝图", "groupNameID": 63656, "published": 1, "useBasePrice": 1 }, "109": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 109, "groupName_de": "Kapsel-Blueprint", "groupName_en-us": "Capsule Blueprint", "groupName_es": "Plano de cápsula", "groupName_fr": "Plan de construction Capsule", "groupName_it": "Capsule Blueprint", "groupName_ja": "カプセルブループリント", "groupName_ko": "캡슐 블루프린트", "groupName_ru": "Чертежи капсулы", "groupName_zh": "太空舱蓝图", "groupNameID": 63657, "iconID": 73, "published": 1, "useBasePrice": 1 }, "110": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 110, "groupName_de": "Titan-Blueprint", "groupName_en-us": "Titan Blueprint", "groupName_es": "Plano de titán", "groupName_fr": "Plan de construction Titan", "groupName_it": "Titan Blueprint", "groupName_ja": "タイタンブループリント", "groupName_ko": "타이탄 블루프린트", "groupName_ru": "Чертежи титана", "groupName_zh": "泰坦蓝图", "groupNameID": 63658, "published": 1, "useBasePrice": 1 }, "111": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 111, "groupName_de": "Shuttle-Blueprint", "groupName_en-us": "Shuttle Blueprint", "groupName_es": "Plano de lanzadera", "groupName_fr": "Plan de construction Navette", "groupName_it": "Shuttle Blueprint", "groupName_ja": "シャトルブループリント", "groupName_ko": "셔틀 블루프린트", "groupName_ru": "Чертежи личного катера", "groupName_zh": "穿梭机蓝图", "groupNameID": 63659, "iconID": 0, "published": 1, "useBasePrice": 1 }, "118": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 118, "groupName_de": "Schilderweiterungs-Blueprint", "groupName_en-us": "Shield Extender Blueprint", "groupName_es": "Plano de extensor de escudo", "groupName_fr": "Plan de construction Extenseur de bouclier", "groupName_it": "Shield Extender Blueprint", "groupName_ja": "シールドエクステンダーブループリント", "groupName_ko": "실드 확장장치 블루프린트", "groupName_ru": "Чертеж расширителя щита", "groupName_zh": "护盾扩展装置蓝图", "groupNameID": 63660, "iconID": 82, "published": 1, "useBasePrice": 1 }, "119": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 119, "groupName_de": "Schildauflader-Blueprint", "groupName_en-us": "Shield Recharger Blueprint", "groupName_es": "Plano de cargador de escudo", "groupName_fr": "Plan de construction Rechargeur de bouclier", "groupName_it": "Shield Recharger Blueprint", "groupName_ja": "シールドリチャージャーブループリント", "groupName_ko": "실드 회복장치 블루프린트", "groupName_ru": "Чертеж системы подзарядки щита", "groupName_zh": "护盾回充器蓝图", "groupNameID": 63661, "iconID": 26451, "published": 1, "useBasePrice": 1 }, "120": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 120, "groupName_de": "Schild-Booster-Blueprint", "groupName_en-us": "Shield Booster Blueprint", "groupName_es": "Plano de potenciador de escudo", "groupName_fr": "Plan de construction Booster de bouclier", "groupName_it": "Shield Booster Blueprint", "groupName_ja": "シールドブースターブループリント", "groupName_ko": "실드 부스터 블루프린트", "groupName_ru": "Чертежи установки накачки силового поля", "groupName_zh": "护盾回充增量器蓝图", "groupNameID": 63662, "iconID": 84, "published": 1, "useBasePrice": 1 }, "121": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 121, "groupName_de": "Remote Shield Booster Blueprint", "groupName_en-us": "Remote Shield Booster Blueprint", "groupName_es": "Plano de potenciador de escudo remoto", "groupName_fr": "Plan de construction Booster de bouclier à distance", "groupName_it": "Remote Shield Booster Blueprint", "groupName_ja": "リモートシールドブースターブループリント", "groupName_ko": "원격 실드 부스터 블루프린트", "groupName_ru": "Чертежи установки дистанционной накачки силовых полей", "groupName_zh": "远程护盾回充增量器蓝图", "groupNameID": 63663, "iconID": 86, "published": 1, "useBasePrice": 1 }, "123": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 123, "groupName_de": "Energiespeicherauflader-Blueprint", "groupName_en-us": "Capacitor Recharger Blueprint", "groupName_es": "Plano de cargadores del condensador", "groupName_fr": "Plan de construction Rechargeur de capaciteur", "groupName_it": "Capacitor Recharger Blueprint", "groupName_ja": "キャパシタリチャージャーブループリント", "groupName_ko": "캐피시터 충전기 블루프린트", "groupName_ru": "Чертеж системы подзарядки конденсатора", "groupName_zh": "电容回充器蓝图", "groupNameID": 63664, "iconID": 26457, "published": 1, "useBasePrice": 1 }, "126": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 126, "groupName_de": "Propulsion Module Blueprint", "groupName_en-us": "Propulsion Module Blueprint", "groupName_es": "Plano de módulo de propulsión", "groupName_fr": "Plan de construction Module de propulsion", "groupName_it": "Propulsion Module Blueprint", "groupName_ja": "推進力モジュールブループリント", "groupName_ko": "추진 모듈 블루프린트", "groupName_ru": "Propulsion Module Blueprint", "groupName_zh": "推进装备蓝图", "groupNameID": 63665, "iconID": 96, "published": 1, "useBasePrice": 1 }, "127": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 127, "groupName_de": "Frachtscanner-Blueprint", "groupName_en-us": "Cargo Scanner Blueprint", "groupName_es": "Plano de escáner de carga", "groupName_fr": "Plan de construction Scanner de soute", "groupName_it": "Cargo Scanner Blueprint", "groupName_ja": "カーゴスキャナーブループリント", "groupName_ko": "화물 스캐너 블루프린트", "groupName_ru": "Чертежи комплекса для досмотра грузов", "groupName_zh": "货柜扫描器蓝图", "groupNameID": 63666, "iconID": 106, "published": 1, "useBasePrice": 1 }, "128": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 128, "groupName_de": "Schiffsscanner-Blueprint", "groupName_en-us": "Ship Scanner Blueprint", "groupName_es": "Plano de escáner de naves", "groupName_fr": "Plan de construction Scanner de vaisseau", "groupName_it": "Ship Scanner Blueprint", "groupName_ja": "シップスキャナーブループリント", "groupName_ko": "함선 스캐너 블루프린트", "groupName_ru": "Чертеж сканера кораблей", "groupName_zh": "船体扫描设备蓝图", "groupNameID": 63667, "iconID": 107, "published": 1, "useBasePrice": 1 }, "129": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 129, "groupName_de": "Bauplan für Bergbauvermessungs-Chipsatz", "groupName_en-us": "Mining Survey Chipset Blueprint", "groupName_es": "Plano de chipset de prospección de minería", "groupName_fr": "Plan de construction Puce d'arpentage d'extraction minière", "groupName_it": "Mining Survey Chipset Blueprint", "groupName_ja": "採掘調査用チップセット設計図", "groupName_ko": "채굴 조사 칩셋 블루프린트", "groupName_ru": "Чертёж считывающего бурового чипа", "groupName_zh": "采矿调查芯片组蓝图", "groupNameID": 63668, "iconID": 107, "published": 1, "useBasePrice": 1 }, "130": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 130, "groupName_de": "ECM-Blueprint", "groupName_en-us": "ECM Blueprint", "groupName_es": "Plano de ECM", "groupName_fr": "Plan de construction CME", "groupName_it": "ECM Blueprint", "groupName_ja": "ECMブループリント", "groupName_ko": "ECM 블루프린트", "groupName_ru": "Чертеж модуля РЭБ", "groupName_zh": "ECM发生器蓝图", "groupNameID": 63669, "iconID": 109, "published": 1, "useBasePrice": 1 }, "131": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 131, "groupName_de": "ECCM-Blueprint", "groupName_en-us": "ECCM Blueprint", "groupName_es": "Plano de ECCM", "groupName_fr": "Plan de construction CCME", "groupName_it": "ECCM Blueprint", "groupName_ja": "ECCMブループリント", "groupName_ko": "ECCM 블루프린트", "groupName_ru": "Чертеж модуля ПРЭБ", "groupName_zh": "ECCM发生器蓝图", "groupNameID": 63670, "iconID": 110, "published": 1, "useBasePrice": 1 }, "132": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 132, "groupName_de": "Warp-Störer-Blueprint", "groupName_en-us": "Warp Scrambler Blueprint", "groupName_es": "Plano de distorsionador de warp", "groupName_fr": "Plan de construction Inhibiteur de warp", "groupName_it": "Warp Scrambler Blueprint", "groupName_ja": "ワープスクランブラーブループリント", "groupName_ko": "워프 스크램블러 블루프린트", "groupName_ru": "Чертежи варп-глушителя", "groupName_zh": "跃迁扰乱设备蓝图", "groupNameID": 63671, "iconID": 111, "published": 1, "useBasePrice": 1 }, "133": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 133, "groupName_de": "Energiewaffen-Blueprint", "groupName_en-us": "Energy Weapon Blueprint", "groupName_es": "Plano de arma de energía", "groupName_fr": "Plan de construction Arme à énergie", "groupName_it": "Energy Weapon Blueprint", "groupName_ja": "エネルギー兵器設計図", "groupName_ko": "에너지 무기 블루프린트", "groupName_ru": "Чертежи лазерного орудия", "groupName_zh": "能量武器蓝图", "groupNameID": 63672, "published": 1, "useBasePrice": 1 }, "134": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 134, "groupName_de": "Bergbaulaser-Blueprint", "groupName_en-us": "Mining Laser Blueprint", "groupName_es": "Plano de láser minero", "groupName_fr": "Plan de construction Laser d'extraction", "groupName_it": "Mining Laser Blueprint", "groupName_ja": "採掘レーザー設計図", "groupName_ko": "채굴 레이저 블루프린트", "groupName_ru": "Чертежи бурового лазера", "groupName_zh": "采矿激光器蓝图", "groupNameID": 63673, "iconID": 138, "published": 1, "useBasePrice": 1 }, "135": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 135, "groupName_de": "Projektilwaffen-Blueprint", "groupName_en-us": "Projectile Weapon Blueprint", "groupName_es": "Plano de arma de proyectiles", "groupName_fr": "Plan de construction Arme à projectiles", "groupName_it": "Projectile Weapon Blueprint", "groupName_ja": "プロジェクタイル兵器ブループリント", "groupName_ko": "발사체 무기 블루프린트", "groupName_ru": "Чертежи баллистического орудия", "groupName_zh": "射弹武器蓝图", "groupNameID": 63674, "published": 1, "useBasePrice": 1 }, "136": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 136, "groupName_de": "Raketenwerfer-Blueprint", "groupName_en-us": "Missile Launcher Blueprint", "groupName_es": "Plano de lanzamisiles", "groupName_fr": "Plan de construction Lance-missiles", "groupName_it": "Missile Launcher Blueprint", "groupName_ja": "ミサイルランチャーブループリント", "groupName_ko": "미사일 런처 블루프린트", "groupName_ru": "Чертежи ракетной установки", "groupName_zh": "导弹发射器蓝图", "groupNameID": 63675, "iconID": 168, "published": 1, "useBasePrice": 1 }, "137": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 137, "groupName_de": "Energiemanager-Blueprint", "groupName_en-us": "Power Manager Blueprint", "groupName_es": "Plano de gerente de potencia", "groupName_fr": "Plan de construction Gestionnaire d'énergie", "groupName_it": "Power Manager Blueprint", "groupName_ja": "パワーマネージャーブループリント", "groupName_ko": "전력 관리장치 블루프린트", "groupName_ru": "Чертеж системы управления питанием", "groupName_zh": "能源管理蓝图", "groupNameID": 63676, "iconID": 0, "published": 1, "useBasePrice": 1 }, "139": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 139, "groupName_de": "Waffenkunde Upgrade Blaupause", "groupName_en-us": "Gunnery Upgrade Blueprint", "groupName_es": "Plano de mejora de artillería", "groupName_fr": "Plan de construction Amélioration d'armement", "groupName_it": "Gunnery Upgrade Blueprint", "groupName_ja": "銃器アップグレードのブループリント", "groupName_ko": "터렛 업그레이드 블루프린트", "groupName_ru": "Чертежи пакетов усиления орудий", "groupName_zh": "射击学升级件蓝图", "groupNameID": 63677, "iconID": 0, "published": 1, "useBasePrice": 1 }, "140": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 140, "groupName_de": "Schadenskontrolle-Blueprint", "groupName_en-us": "Damage Control Blueprint", "groupName_es": "Plano de control de daños", "groupName_fr": "Plan de construction Contrôle des dégâts", "groupName_it": "Damage Control Blueprint", "groupName_ja": "ダメージコントロールブループリント", "groupName_ko": "데미지 컨트롤 블루프린트", "groupName_ru": "Чертеж модуля боевой живучести", "groupName_zh": "损伤控制装备蓝图", "groupNameID": 63678, "iconID": 0, "published": 1, "useBasePrice": 1 }, "141": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 141, "groupName_de": "Energiespeicher-Batterie-Blueprint", "groupName_en-us": "Capacitor Battery Blueprint", "groupName_es": "Plano de batería de condensador", "groupName_fr": "Plan de construction Batterie de capaciteur", "groupName_it": "Capacitor Battery Blueprint", "groupName_ja": "キャパシタバッテリーブループリント", "groupName_ko": "캐패시터 배터리 블루프린트", "groupName_ru": "Чертеж батареи конденсатора", "groupName_zh": "电容器电池蓝图", "groupNameID": 63679, "iconID": 0, "published": 1, "useBasePrice": 1 }, "142": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 142, "groupName_de": "Panzerungsreparatureinheit-Blueprint", "groupName_en-us": "Armor Repair Unit Blueprint", "groupName_es": "Plano de unidad de reparación de blindaje", "groupName_fr": "Plan de construction Unité de réparation d'armure", "groupName_it": "Armor Repair Unit Blueprint", "groupName_ja": "アーマーリペアユニットブループリント", "groupName_ko": "장갑수리 장치 블루프린트", "groupName_ru": "Чертежи установки ремонта брони", "groupName_zh": "装甲维修组件蓝图", "groupNameID": 63680, "iconID": 0, "published": 1, "useBasePrice": 1 }, "143": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 143, "groupName_de": "Hüllenreparatureinheit-Blueprint", "groupName_en-us": "Hull Repair Unit Blueprint", "groupName_es": "Plano de unidad de reparación de casco", "groupName_fr": "Plan de construction Unité de réparation de coque", "groupName_it": "Hull Repair Unit Blueprint", "groupName_ja": "船体リペアユニットブループリント", "groupName_ko": "선체수리 장치 블루프린트", "groupName_ru": "Чертеж системы ремонта корпуса", "groupName_zh": "船体维修组件蓝图", "groupNameID": 63681, "iconID": 0, "published": 1, "useBasePrice": 1 }, "145": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 145, "groupName_de": "Stasis-Web-Blueprint", "groupName_en-us": "Stasis Web Blueprint", "groupName_es": "Plano de red ralentizadora", "groupName_fr": "Plan de construction Sentinelle de stase", "groupName_it": "Stasis Web Blueprint", "groupName_ja": "ステイシスウェブブループリント", "groupName_ko": "스테이시스 웹 생성기 블루프린트", "groupName_ru": "Чертежи генератора стазис-поля", "groupName_zh": "停滞缠绕光束蓝图", "groupNameID": 63682, "iconID": 0, "published": 1, "useBasePrice": 1 }, "147": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 147, "groupName_de": "Remote Capacitor Transmitter Blueprint", "groupName_en-us": "Remote Capacitor Transmitter Blueprint", "groupName_es": "Plano de transmisor de condensador remoto", "groupName_fr": "Plan de construction Transmetteur de capaciteur à distance", "groupName_it": "Remote Capacitor Transmitter Blueprint", "groupName_ja": "リモートキャパシタトランスミッターブループリント", "groupName_ko": "원격 캐패시터 전송기 블루프린트", "groupName_ru": "Чертежи установки дистанционного энергоснабжения", "groupName_zh": "远程电容传输装置蓝图", "groupNameID": 63683, "iconID": 0, "published": 1, "useBasePrice": 1 }, "148": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 148, "groupName_de": "Nosferatu-Blaupause", "groupName_en-us": "Energy Nosferatu Blueprint", "groupName_es": "Plano de nosferatu de energía", "groupName_fr": "Plan de construction Nosferatu à énergie", "groupName_it": "Energy Nosferatu Blueprint", "groupName_ja": "エネルギーノスフェラトゥ設計図", "groupName_ko": "에너지 노스페라투 블루프린트", "groupName_ru": "Чертежи устройств паразитной подзарядки", "groupName_zh": "掠能器蓝图", "groupNameID": 63684, "iconID": 0, "published": 1, "useBasePrice": 1 }, "151": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 151, "groupName_de": "EEnergieneutralisierer-Blaupause", "groupName_en-us": "Energy Neutralizer Blueprint", "groupName_es": "Plano de neutralizador energético", "groupName_fr": "Plan de construction Neutraliseur d'énergie", "groupName_it": "Energy Neutralizer Blueprint", "groupName_ja": "エネルギーニュートラライザー設計図", "groupName_ko": "에너지 뉴트럴라이저 블루프린트", "groupName_ru": "Чертежи дистанционных нейтрализаторов заряда", "groupName_zh": "能量中和器蓝图", "groupNameID": 63685, "iconID": 0, "published": 1, "useBasePrice": 1 }, "152": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 152, "groupName_de": "Smart-Bomb-Blueprint", "groupName_en-us": "Smart Bomb Blueprint", "groupName_es": "Plano de bomba inteligente", "groupName_fr": "Plan de construction Bombe de proximité", "groupName_it": "Smart Bomb Blueprint", "groupName_ja": "スマートボムブループリント", "groupName_ko": "스마트폭탄 블루프린트", "groupName_ru": "Чертеж импульсного излучателя", "groupName_zh": "立体炸弹蓝图", "groupNameID": 63686, "iconID": 0, "published": 1, "useBasePrice": 1 }, "154": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 154, "groupName_de": "Hybridwaffen-Blueprint", "groupName_en-us": "Hybrid Weapon Blueprint", "groupName_es": "Plano de arma híbrida", "groupName_fr": "Plan de construction Arme hybride", "groupName_it": "Hybrid Weapon Blueprint", "groupName_ja": "ハイブリッド兵器ブループリント", "groupName_ko": "하이브리드 무기 블루프린트", "groupName_ru": "Чертежи гибридного орудия", "groupName_zh": "混合武器蓝图", "groupNameID": 63687, "iconID": 0, "published": 1, "useBasePrice": 1 }, "156": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 156, "groupName_de": "Energiespeicher-Booster-Blueprint", "groupName_en-us": "Capacitor Booster Blueprint", "groupName_es": "Plano de potenciador de condensador", "groupName_fr": "Plan de construction Booster de capaciteur", "groupName_it": "Capacitor Booster Blueprint", "groupName_ja": "キャパシタブースターブループリント", "groupName_ko": "캐패시터 부스터 블루프린트", "groupName_ru": "Чертежи системы пополнения накопителя", "groupName_zh": "电容注电器蓝图", "groupNameID": 63688, "iconID": 0, "published": 1, "useBasePrice": 1 }, "157": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 157, "groupName_de": "Schildhärter-Blueprint", "groupName_en-us": "Shield Hardener Blueprint", "groupName_es": "Plano de endurecedor de escudo", "groupName_fr": "Plan de construction Renforcement de bouclier", "groupName_it": "Shield Hardener Blueprint", "groupName_ja": "シールドハードナーブループリント", "groupName_ko": "실드 강화장치 블루프린트", "groupName_ru": "Чертеж системы настройки щита", "groupName_zh": "护盾增强系统蓝图", "groupNameID": 63689, "iconID": 0, "published": 1, "useBasePrice": 1 }, "158": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 158, "groupName_de": "Hüllenmodifikationen-Blueprint", "groupName_en-us": "Hull Mods Blueprint", "groupName_es": "Plano de modificaciones de casco", "groupName_fr": "Plan de construction Modification de coque", "groupName_it": "Hull Mods Blueprint", "groupName_ja": "船体改良ブループリント", "groupName_ko": "선체 모듈 블루프린트", "groupName_ru": "Чертеж модуля модернизации корпуса", "groupName_zh": "船体蓝图", "groupNameID": 63690, "iconID": 0, "published": 1, "useBasePrice": 1 }, "160": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 160, "groupName_de": "Burst-Störsender Blaupause", "groupName_en-us": "Burst Jammer Blueprint", "groupName_es": "Plano de perturbador de ráfaga", "groupName_fr": "Plan de construction Brouilleur Burst", "groupName_it": "Burst Jammer Blueprint", "groupName_ja": "バーストジャマーのブループリント", "groupName_ko": "버스트 재머 블루프린트", "groupName_ru": "Чертежи генераторов импульсных помех", "groupName_zh": "脉冲干扰器蓝图", "groupNameID": 63691, "iconID": 0, "published": 1, "useBasePrice": 1 }, "161": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 161, "groupName_de": "Passives-Aufschaltungssystem-Blueprint", "groupName_en-us": "Passive Targeting System Blueprint", "groupName_es": "Plano de sistema de adquisición pasiva de objetivos", "groupName_fr": "Plan de construction Système de ciblage", "groupName_it": "Passive Targeting System Blueprint", "groupName_ja": "パッシブターゲットシステムブループリント", "groupName_ko": "패시브 타겟팅 시스템 블루프린트", "groupName_ru": "Чертеж пассивной системы целеуказания", "groupName_zh": "被动锁定系统蓝图", "groupNameID": 63692, "iconID": 0, "published": 1, "useBasePrice": 1 }, "162": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 162, "groupName_de": "Automatisiertes-Aufschaltungssystem-Blueprint", "groupName_en-us": "Automated Targeting System Blueprint", "groupName_es": "Plano de sistema de adquisición automatizada de objetivos", "groupName_fr": "Plan de construction Système de ciblage automatique", "groupName_it": "Automated Targeting System Blueprint", "groupName_ja": "全自動ターゲットシステムブループリント", "groupName_ko": "오토 타겟팅 시스템 블루프린트", "groupName_ru": "Чертеж автоматической системы целеуказания", "groupName_zh": "自动锁定系统蓝图", "groupNameID": 63693, "iconID": 0, "published": 1, "useBasePrice": 1 }, "163": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 163, "groupName_de": "Panzerungsbeschichtung-Blueprint", "groupName_en-us": "Armor Coating Blueprint", "groupName_es": "Plano de recubrimiento de blindaje", "groupName_fr": "Plan de construction Surcouche de blindage", "groupName_it": "Armor Coating Blueprint", "groupName_ja": "アーマーコーティング設計図", "groupName_ko": "장갑 코팅 블루프린트", "groupName_ru": "Чертеж защитного покрытия брони", "groupName_zh": "装甲附甲蓝图", "groupNameID": 63694, "iconID": 0, "published": 1, "useBasePrice": 1 }, "165": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 165, "groupName_de": "Projektilmunition-Blueprint", "groupName_en-us": "Projectile Ammo Blueprint", "groupName_es": "Plano de munición de proyectiles", "groupName_fr": "Plan de construction Munition de projectile", "groupName_it": "Projectile Ammo Blueprint", "groupName_ja": "プロジェクタイル弾ブループリント", "groupName_ko": "발사체 탄약 블루프린트", "groupName_ru": "Чертеж снаряда", "groupName_zh": "射弹弹药蓝图", "groupNameID": 63695, "published": 1, "useBasePrice": 1 }, "166": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 166, "groupName_de": "Raketen-Blueprint", "groupName_en-us": "Missile Blueprint", "groupName_es": "Plano de misil", "groupName_fr": "Plan de construction Missiles", "groupName_it": "Missile Blueprint", "groupName_ja": "ミサイルブループリント", "groupName_ko": "미사일 블루프린트", "groupName_ru": "Чертежи ракеты", "groupName_zh": "导弹蓝图", "groupNameID": 63696, "iconID": 182, "published": 1, "useBasePrice": 1 }, "167": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 167, "groupName_de": "Blueprint einer Hybrid-Ladung", "groupName_en-us": "Hybrid Charge Blueprint", "groupName_es": "Plano de carga híbrida", "groupName_fr": "Plan de construction Charge hybride", "groupName_it": "Hybrid Charge Blueprint", "groupName_ja": "ハイブリッド弾のブループリント", "groupName_ko": "하이브리드 탄약 블루프린트", "groupName_ru": "Чертеж гибридных зарядов", "groupName_zh": "混合弹药蓝图", "groupNameID": 63697, "published": 1, "useBasePrice": 1 }, "168": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 168, "groupName_de": "Frequenzkristall-Blueprint", "groupName_en-us": "Frequency Crystal Blueprint", "groupName_es": "Plano de cristal de frecuencia", "groupName_fr": "Plan de construction Cristal de fréquence", "groupName_it": "Frequency Crystal Blueprint", "groupName_ja": "フリーケンシークリスタルブループリント", "groupName_ko": "프리퀀시 크리스탈 블루프린트", "groupName_ru": "Чертеж частотного кристалла", "groupName_zh": "频率晶体蓝图", "groupNameID": 63698, "iconID": 0, "published": 1, "useBasePrice": 1 }, "169": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 169, "groupName_de": "Energiespeicher-Boosterladungs-Blueprint", "groupName_en-us": "Capacitor Booster Charge Blueprint", "groupName_es": "Plano de carga de potenciador de condensador", "groupName_fr": "Plan de construction Charge pour booster de capaciteur", "groupName_it": "Capacitor Booster Charge Blueprint", "groupName_ja": "キャパシタブースター弾ブループリント", "groupName_ko": "캐패시터 부스터 차지 블루프린트", "groupName_ru": "Чертежи заряда системы пополнения накопителя", "groupName_zh": "电容注电器装料蓝图", "groupNameID": 63699, "iconID": 0, "published": 1, "useBasePrice": 1 }, "170": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 170, "groupName_de": "Verteidigungsraketen-Blueprint", "groupName_en-us": "Defender Missile Blueprint", "groupName_es": "Plano de misil de defensa", "groupName_fr": "Plan de construction Missile défenseur", "groupName_it": "Defender Missile Blueprint", "groupName_ja": "防衛ミサイルブループリント", "groupName_ko": "디펜더 미사일 블루프린트", "groupName_ru": "Чертежи противоракеты", "groupName_zh": "反弹道导弹蓝图", "groupNameID": 63700, "iconID": 0, "published": 1, "useBasePrice": 1 }, "172": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 172, "groupName_de": "Bomben-Blueprint", "groupName_en-us": "Bomb Blueprint", "groupName_es": "Plano de bomba", "groupName_fr": "Plan de construction Bombe", "groupName_it": "Bomb Blueprint", "groupName_ja": "ボムブループリント", "groupName_ko": "폭탄 블루프린트", "groupName_ru": "Чертежи бомбы", "groupName_zh": "炸弹蓝图", "groupNameID": 63701, "iconID": 0, "published": 1, "useBasePrice": 1 }, "174": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 174, "groupName_de": "Minen-Blueprint", "groupName_en-us": "Mine Blueprint", "groupName_es": "Plano de minero", "groupName_fr": "Plan de construction Mine", "groupName_it": "Mine Blueprint", "groupName_ja": "機雷ブループリント", "groupName_ko": "기뢰 블루프린트", "groupName_ru": "Чертежи мины", "groupName_zh": "悬浮雷蓝图", "groupNameID": 63702, "iconID": 0, "published": 1, "useBasePrice": 1 }, "175": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 175, "groupName_de": "Nähe-Drohnen-Blueprint", "groupName_en-us": "Proximity Drone Blueprint", "groupName_es": "Plano de dron de proximidad", "groupName_fr": "Plan de construction Drone de proximité", "groupName_it": "Proximity Drone Blueprint", "groupName_ja": "プロキシミティードローンブループリント", "groupName_ko": "근접 드론 블루프린트", "groupName_ru": "Чертеж дрона Proximity", "groupName_zh": "近程无人机蓝图", "groupNameID": 63703, "iconID": 0, "published": 1, "useBasePrice": 1 }, "176": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 176, "groupName_de": "Kampfdrohnen-Blueprint", "groupName_en-us": "Combat Drone Blueprint", "groupName_es": "Plano de dron de combate", "groupName_fr": "Plan de construction Drone de combat", "groupName_it": "Combat Drone Blueprint", "groupName_ja": "戦闘用ドローンブループリント", "groupName_ko": "전투 드론 블루프린트", "groupName_ru": "Чертежи боевого дрона", "groupName_zh": "战斗无人机蓝图", "groupNameID": 63704, "iconID": 0, "published": 1, "useBasePrice": 1 }, "177": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 177, "groupName_de": "Bergbaudrohnen-Blueprint", "groupName_en-us": "Mining Drone Blueprint", "groupName_es": "Plano de dron minero", "groupName_fr": "Plan de construction Drone d'extraction", "groupName_it": "Mining Drone Blueprint", "groupName_ja": "採掘専門ドローンブループリント", "groupName_ko": "채굴 드론 블루프린트", "groupName_ru": "Чертежи бурового дрона", "groupName_zh": "采矿无人机蓝图", "groupNameID": 63705, "iconID": 0, "published": 1, "useBasePrice": 1 }, "178": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 178, "groupName_de": "Drogen-Blueprint", "groupName_en-us": "Drug Blueprint", "groupName_es": "Plano de sustancia", "groupName_fr": "Plan de construction Substance chimique", "groupName_it": "Drug Blueprint", "groupName_ja": "薬物ブループリント", "groupName_ko": "약품 블루프린트", "groupName_ru": "Чертеж наркотика", "groupName_zh": "管制物品蓝图", "groupNameID": 63706, "iconID": 21, "published": 1, "useBasePrice": 1 }, "180": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 180, "groupName_de": "Schutz-Sentry-Gun", "groupName_en-us": "Protective Sentry Gun", "groupName_es": "Torreta centinela protectora", "groupName_fr": "Canon de sentinelle de protection", "groupName_it": "Protective Sentry Gun", "groupName_ja": "防衛セントリーガン", "groupName_ko": "보호용 센트리 포탑", "groupName_ru": "Защитное сторожевое орудие", "groupName_zh": "防卫型岗哨炮", "groupNameID": 63707, "published": 0, "useBasePrice": 0 }, "182": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 182, "groupName_de": "Polizeidrohne", "groupName_en-us": "Police Drone", "groupName_es": "Dron policial", "groupName_fr": "Drone de police", "groupName_it": "Police Drone", "groupName_ja": "警察ドローン", "groupName_ko": "경찰 드론", "groupName_ru": "Полицейский дрон", "groupName_zh": "警用无人机", "groupNameID": 63708, "published": 0, "useBasePrice": 0 }, "185": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 185, "groupName_de": "Piratendrohne", "groupName_en-us": "Pirate Drone", "groupName_es": "Dron pirata", "groupName_fr": "Drone pirate", "groupName_it": "Pirate Drone", "groupName_ja": "海賊ドローン", "groupName_ko": "해적 드론", "groupName_ru": "Пиратский дрон", "groupName_zh": "海盗无人机", "groupNameID": 63709, "iconID": 0, "published": 0, "useBasePrice": 0 }, "186": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 186, "groupName_de": "Wrack", "groupName_en-us": "Wreck", "groupName_es": "Restos", "groupName_fr": "Épave", "groupName_it": "Wreck", "groupName_ja": "残骸", "groupName_ko": "잔해", "groupName_ru": "Обломки корабля", "groupName_zh": "残骸", "groupNameID": 63710, "iconID": 0, "published": 0, "useBasePrice": 0 }, "190": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 190, "groupName_de": "Abstammungsbonus", "groupName_en-us": "Bloodline Bonus", "groupName_es": "Bonificación de linaje", "groupName_fr": "Bonus de lignée", "groupName_it": "Bloodline Bonus", "groupName_ja": "血統ボーナス", "groupName_ko": "혈통 보너스", "groupName_ru": "Родовое преимущество", "groupName_zh": "血统加成", "groupNameID": 63711, "iconID": 0, "published": 0, "useBasePrice": 0 }, "191": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 191, "groupName_de": "Körperlicher Vorteil", "groupName_en-us": "Physical Benefit", "groupName_es": "Beneficio físico", "groupName_fr": "Bénéfice physique", "groupName_it": "Physical Benefit", "groupName_ja": "フィジカルベネフィット", "groupName_ko": "물리적 이익", "groupName_ru": "Физическое преимущество", "groupName_zh": "体质增强效果", "groupNameID": 63712, "iconID": 0, "published": 0, "useBasePrice": 0 }, "192": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 192, "groupName_de": "Körperliches Handicap", "groupName_en-us": "Physical Handicap", "groupName_es": "Desventaja física", "groupName_fr": "Handicap physique", "groupName_it": "Physical Handicap", "groupName_ja": "フィジカルハンディキャップ", "groupName_ko": "물리적 불이익", "groupName_ru": "Физический недостаток", "groupName_zh": "体质削弱效果", "groupNameID": 63713, "iconID": 0, "published": 0, "useBasePrice": 0 }, "193": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 193, "groupName_de": "Phobien-Handicap", "groupName_en-us": "Phobia Handicap", "groupName_es": "Desventaja de fobia", "groupName_fr": "Phobie", "groupName_it": "Phobia Handicap", "groupName_ja": "フォビアハンディキャップ", "groupName_ko": "혐오증적 불이익", "groupName_ru": "Психологический недостаток", "groupName_zh": "恐惧症不利效果", "groupNameID": 63714, "iconID": 0, "published": 0, "useBasePrice": 0 }, "194": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 194, "groupName_de": "Soziales Handicap", "groupName_en-us": "Social Handicap", "groupName_es": "Desventaja social", "groupName_fr": "Handicap social", "groupName_it": "Social Handicap", "groupName_ja": "ソーシャルハンディキャップ", "groupName_ko": "사회적 불이익", "groupName_ru": "Социальный недостаток", "groupName_zh": "社会交流不利效果", "groupNameID": 63715, "iconID": 0, "published": 0, "useBasePrice": 0 }, "195": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 195, "groupName_de": "Amarrianische Ausbildung", "groupName_en-us": "Amarr Education", "groupName_es": "Educación amarriana", "groupName_fr": "Formation amarr", "groupName_it": "Amarr Education", "groupName_ja": "アマー教育", "groupName_ko": "아마르 교육", "groupName_ru": "Образование Amarr", "groupName_zh": "艾玛种族教育", "groupNameID": 63716, "iconID": 0, "published": 0, "useBasePrice": 0 }, "196": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 196, "groupName_de": "Caldarische Ausbildung", "groupName_en-us": "Caldari Education", "groupName_es": "Educación caldari", "groupName_fr": "Formation caldari", "groupName_it": "Caldari Education", "groupName_ja": "カルダリ教育", "groupName_ko": "칼다리 교육", "groupName_ru": "Образование Caldari", "groupName_zh": "加达里种族教育", "groupNameID": 63717, "iconID": 0, "published": 0, "useBasePrice": 0 }, "197": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 197, "groupName_de": "Gallentische Ausbildung", "groupName_en-us": "Gallente Education", "groupName_es": "Educación gallente", "groupName_fr": "Formation gallente", "groupName_it": "Gallente Education", "groupName_ja": "ガレンテ教育", "groupName_ko": "갈란테 교육", "groupName_ru": "Образование Gallente", "groupName_zh": "盖伦特种族教育", "groupNameID": 63718, "iconID": 0, "published": 0, "useBasePrice": 0 }, "198": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 198, "groupName_de": "Minmatarische Ausbildung", "groupName_en-us": "Minmatar Education", "groupName_es": "Educación minmatariana", "groupName_fr": "Formation minmatar", "groupName_it": "Minmatar Education", "groupName_ja": "ミンマター教育", "groupName_ko": "민마타 교육", "groupName_ru": "Образование Minmatar", "groupName_zh": "米玛塔尔种族教育", "groupNameID": 63719, "iconID": 0, "published": 0, "useBasePrice": 0 }, "199": { "anchorable": 0, "anchored": 0, "categoryID": 14, "fittableNonSingleton": 0, "groupID": 199, "groupName_de": "Karrierebonus", "groupName_en-us": "Career Bonus", "groupName_es": "Bonificación de trayectoria", "groupName_fr": "Bonus de carrière", "groupName_it": "Career Bonus", "groupName_ja": "キャリアボーナス", "groupName_ko": "커리어 보너스", "groupName_ru": "Преимущество карьеры", "groupName_zh": "职业加成", "groupNameID": 63720, "iconID": 0, "published": 0, "useBasePrice": 0 }, "201": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 201, "groupName_de": "ECM", "groupName_en-us": "ECM", "groupName_es": "ECM", "groupName_fr": "CME", "groupName_it": "ECM", "groupName_ja": "ECM", "groupName_ko": "ECM", "groupName_ru": "Генератор помех системам сопровождения целей", "groupName_zh": "ECM", "groupNameID": 63721, "iconID": 0, "published": 1, "useBasePrice": 0 }, "202": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 202, "groupName_de": "ECCM", "groupName_en-us": "ECCM", "groupName_es": "ECCM", "groupName_fr": "CCME", "groupName_it": "ECCM", "groupName_ja": "ECCM", "groupName_ko": "ECCM", "groupName_ru": "Модуль ПРЭБ", "groupName_zh": "ECCM发生器", "groupNameID": 63722, "iconID": 0, "published": 1, "useBasePrice": 0 }, "203": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 203, "groupName_de": "Sensor-Sicherungssystem", "groupName_en-us": "Sensor Backup Array", "groupName_es": "Sistema de sensores de apoyo", "groupName_fr": "Module de secours de détection", "groupName_it": "Sensor Backup Array", "groupName_ja": "センサー補助", "groupName_ko": "센서 백업 시설", "groupName_ru": "Резервная сенсорная система", "groupName_zh": "感应器支援阵列", "groupNameID": 63723, "iconID": 0, "published": 1, "useBasePrice": 0 }, "205": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 205, "groupName_de": "Kühlkörper", "groupName_en-us": "Heat Sink", "groupName_es": "Disipador de calor", "groupName_fr": "Dissipateur thermique", "groupName_it": "Heat Sink", "groupName_ja": "放熱機", "groupName_ko": "방열판", "groupName_ru": "Радиатор", "groupName_zh": "散热槽", "groupNameID": 63724, "iconID": 26453, "published": 1, "useBasePrice": 0 }, "208": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 208, "groupName_de": "Sensordämpfer", "groupName_en-us": "Sensor Dampener", "groupName_es": "Atenuador de sensor", "groupName_fr": "Atténuateur de détection", "groupName_it": "Sensor Dampener", "groupName_ja": "センサーダンプナー", "groupName_ko": "센서 댐프너", "groupName_ru": "Передатчик помех системам обнаружения целей", "groupName_zh": "感应抑阻器", "groupNameID": 63725, "iconID": 105, "published": 1, "useBasePrice": 0 }, "209": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 209, "groupName_de": "Remote Tracking Computer", "groupName_en-us": "Remote Tracking Computer", "groupName_es": "Ordenador de rastreo remoto", "groupName_fr": "Ordinateur de suivi à distance", "groupName_it": "Remote Tracking Computer", "groupName_ja": "リモートトラッキングコンピューター", "groupName_ko": "원격 트래킹 컴퓨터", "groupName_ru": "Ретранслятор системы целеуказания", "groupName_zh": "远距索敌计算机", "groupNameID": 63726, "iconID": 3346, "published": 1, "useBasePrice": 0 }, "210": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 210, "groupName_de": "Signalverstärker", "groupName_en-us": "Signal Amplifier", "groupName_es": "Amplificador de señal", "groupName_fr": "Amplificateur de signal", "groupName_it": "Signal Amplifier", "groupName_ja": "シグナル増幅器", "groupName_ko": "신호 증폭기", "groupName_ru": "Усилитель сигнала", "groupName_zh": "信号放大器", "groupNameID": 63727, "iconID": 0, "published": 1, "useBasePrice": 0 }, "211": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 211, "groupName_de": "Nachführverbesserung", "groupName_en-us": "Tracking Enhancer", "groupName_es": "Intensificador de rastreo", "groupName_fr": "Optimisateur de poursuite", "groupName_it": "Tracking Enhancer", "groupName_ja": "トラッキングエンハンサー", "groupName_ko": "트래킹 향상장치", "groupName_ru": "Приводы наводки орудий", "groupName_zh": "索敌增强器", "groupNameID": 63728, "iconID": 0, "published": 1, "useBasePrice": 0 }, "212": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 212, "groupName_de": "Sensor-Booster", "groupName_en-us": "Sensor Booster", "groupName_es": "Potenciador de sensor", "groupName_fr": "Booster de détection", "groupName_it": "Sensor Booster", "groupName_ja": "センサーブースター", "groupName_ko": "센서 부스터", "groupName_ru": "Активный усилитель для систем обнаружения целей", "groupName_zh": "感应增强器", "groupNameID": 63729, "iconID": 74, "published": 1, "useBasePrice": 0 }, "213": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 213, "groupName_de": "Nachführcomputer", "groupName_en-us": "Tracking Computer", "groupName_es": "Ordenador de rastreo", "groupName_fr": "Ordinateur de suivi", "groupName_it": "Tracking Computer", "groupName_ja": "トラッキングコンピュータ", "groupName_ko": "트래킹 컴퓨터", "groupName_ru": "Орудийный вычислитель", "groupName_zh": "索敌计算机", "groupNameID": 63730, "iconID": 3346, "published": 1, "useBasePrice": 0 }, "218": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 218, "groupName_de": "Kühlkörper-Blueprint", "groupName_en-us": "Heat Sink Blueprint", "groupName_es": "Plano de disipador de calor", "groupName_fr": "Plan de construction Dissipateur thermique", "groupName_it": "Heat Sink Blueprint", "groupName_ja": "放熱機ブループリント", "groupName_ko": "방열판 블루프린트", "groupName_ru": "Heat Sink Blueprint", "groupName_zh": "散热槽蓝图", "groupNameID": 63731, "iconID": 26453, "published": 1, "useBasePrice": 1 }, "223": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 223, "groupName_de": "Sensor-Booster-Blueprint", "groupName_en-us": "Sensor Booster Blueprint", "groupName_es": "Plano de potenciador de sensor", "groupName_fr": "Plan de construction Booster de détection", "groupName_it": "Sensor Booster Blueprint", "groupName_ja": "センサーブースターブループリント", "groupName_ko": "센서 부스터 블루프린트", "groupName_ru": "Чертежи активного усилителя", "groupName_zh": "感应增强设备蓝图", "groupNameID": 63732, "iconID": 0, "published": 1, "useBasePrice": 1 }, "224": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 224, "groupName_de": "Nachführcomputer-Blueprint", "groupName_en-us": "Tracking Computer Blueprint", "groupName_es": "Plano de ordenador de rastreo", "groupName_fr": "Plan de construction Ordinateur de suivi", "groupName_it": "Tracking Computer Blueprint", "groupName_ja": "トラッキングコンピューターブループリント", "groupName_ko": "트래킹 컴퓨터 블루프린트", "groupName_ru": "Tracking Computer Blueprint", "groupName_zh": "索敌计算机蓝图", "groupNameID": 63733, "iconID": 0, "published": 1, "useBasePrice": 1 }, "225": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 225, "groupName_de": "Cheat-Modul-Gruppe", "groupName_en-us": "Cheat Module Group", "groupName_es": "Grupo de módulo de trampas", "groupName_fr": "Cheat Module Group", "groupName_it": "Cheat Module Group", "groupName_ja": "チートモジュールグループ", "groupName_ko": "치트 모듈 그룹", "groupName_ru": "Группа модуля взлома", "groupName_zh": "神之装备", "groupNameID": 63734, "iconID": 0, "published": 0, "useBasePrice": 0 }, "226": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 226, "groupName_de": "Großes, statisches Objekt", "groupName_en-us": "Large Collidable Object", "groupName_es": "Objeto colisionable grande", "groupName_fr": "Grand objet solide", "groupName_it": "Large Collidable Object", "groupName_ja": "大型オブジェクト(破壊可能)", "groupName_ko": "대형 충돌체", "groupName_ru": "Навигационная опасность", "groupName_zh": "大型空间实体(LCO)", "groupNameID": 63735, "published": 0, "useBasePrice": 0 }, "227": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 227, "groupName_de": "Wolke", "groupName_en-us": "Cloud", "groupName_es": "Nube", "groupName_fr": "Nuage", "groupName_it": "Cloud", "groupName_ja": "雲", "groupName_ko": "성운", "groupName_ru": "Облако", "groupName_zh": "云状星体", "groupNameID": 63736, "iconID": 0, "published": 0, "useBasePrice": 0 }, "237": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 237, "groupName_de": "Corvette", "groupName_en-us": "Corvette", "groupName_es": "Corbeta", "groupName_fr": "Corvette", "groupName_it": "Corvette", "groupName_ja": "コルベット艦", "groupName_ko": "코르벳", "groupName_ru": "Корветы", "groupName_zh": "轻型护卫舰", "groupNameID": 63737, "iconID": 0, "published": 1, "useBasePrice": 0 }, "255": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 255, "groupName_de": "Waffenkunde", "groupName_en-us": "Gunnery", "groupName_es": "Artillería", "groupName_fr": "Armement", "groupName_it": "Gunnery", "groupName_ja": "ガンナリー", "groupName_ko": "터렛", "groupName_ru": "Ведение орудийного огня", "groupName_zh": "射击学", "groupNameID": 63738, "published": 1, "useBasePrice": 1 }, "256": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 256, "groupName_de": "Lenkwaffen", "groupName_en-us": "Missiles", "groupName_es": "Misiles", "groupName_fr": "Missiles", "groupName_it": "Missiles", "groupName_ja": "ミサイル", "groupName_ko": "미사일", "groupName_ru": "Ведение ракетного огня", "groupName_zh": "导弹", "groupNameID": 63739, "published": 1, "useBasePrice": 1 }, "257": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 257, "groupName_de": "Raumschiff-Kommando", "groupName_en-us": "Spaceship Command", "groupName_es": "Manejo de naves espaciales", "groupName_fr": "Pilotage de vaisseau", "groupName_it": "Spaceship Command", "groupName_ja": "宇宙船操作", "groupName_ko": "함선 운용", "groupName_ru": "Допуски к управлению кораблями", "groupName_zh": "飞船操控学", "groupNameID": 63740, "published": 1, "useBasePrice": 1 }, "258": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 258, "groupName_de": "Flottenunterstützung", "groupName_en-us": "Fleet Support", "groupName_es": "Apoyo a la flota", "groupName_fr": "Soutien de flotte", "groupName_it": "Fleet Support", "groupName_ja": "フリート支援", "groupName_ko": "함대 지원", "groupName_ru": "Поддержка флотов", "groupName_zh": "舰队支援", "groupNameID": 63741, "published": 1, "useBasePrice": 1 }, "266": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 266, "groupName_de": "Corporation-Management", "groupName_en-us": "Corporation Management", "groupName_es": "Gestión de corporaciones", "groupName_fr": "Gestion de corporation", "groupName_it": "Corporation Management", "groupName_ja": "コーポレーションマネージメント", "groupName_ko": "코퍼레이션 관리", "groupName_ru": "Руководство корпорацией", "groupName_zh": "军团管理", "groupNameID": 63742, "published": 1, "useBasePrice": 1 }, "267": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 267, "groupName_de": "Veraltete Bücher", "groupName_en-us": "Obsolete Books", "groupName_es": "Libros obsoletos", "groupName_fr": "Livres obsolètes", "groupName_it": "Obsolete Books", "groupName_ja": "廃本", "groupName_ko": "사용 중지된 책", "groupName_ru": "Старые учебники", "groupName_zh": "被人忘却的书", "groupNameID": 64401, "published": 0, "useBasePrice": 1 }, "268": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 268, "groupName_de": "Produktion", "groupName_en-us": "Production", "groupName_es": "Producción", "groupName_fr": "Production", "groupName_it": "Production", "groupName_ja": "生産", "groupName_ko": "생산품", "groupName_ru": "Организация производства", "groupName_zh": "生产", "groupNameID": 63743, "published": 1, "useBasePrice": 1 }, "269": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 269, "groupName_de": "Rigging", "groupName_en-us": "Rigging", "groupName_es": "Complementos", "groupName_fr": "Optimisation", "groupName_it": "Rigging", "groupName_ja": "リグ", "groupName_ko": "리그", "groupName_ru": "Установка тюнинг-модулей", "groupName_zh": "改装件", "groupNameID": 64437, "published": 1, "useBasePrice": 1 }, "270": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 270, "groupName_de": "Wissenschaft", "groupName_en-us": "Science", "groupName_es": "Ciencia", "groupName_fr": "Science", "groupName_it": "Science", "groupName_ja": "サイエンス", "groupName_ko": "과학", "groupName_ru": "Научные дисциплины", "groupName_zh": "科学", "groupNameID": 63744, "published": 1, "useBasePrice": 1 }, "272": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 272, "groupName_de": "Elektronische Systeme", "groupName_en-us": "Electronic Systems", "groupName_es": "Sistemas electrónicos", "groupName_fr": "Systèmes électroniques", "groupName_it": "Electronic Systems", "groupName_ja": "電子システム", "groupName_ko": "전자 시스템", "groupName_ru": "Работа с бортовой электроникой", "groupName_zh": "电子系统", "groupNameID": 63746, "published": 1, "useBasePrice": 1 }, "273": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 273, "groupName_de": "Drohnen", "groupName_en-us": "Drones", "groupName_es": "Drones", "groupName_fr": "Drones", "groupName_it": "Drones", "groupName_ja": "ドローン", "groupName_ko": "드론", "groupName_ru": "Управление дронами", "groupName_zh": "无人机", "groupNameID": 63747, "published": 1, "useBasePrice": 1 }, "274": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 274, "groupName_de": "Handel", "groupName_en-us": "Trade", "groupName_es": "Comercio", "groupName_fr": "Commerce", "groupName_it": "Trade", "groupName_ja": "トレード", "groupName_ko": "거래", "groupName_ru": "Торговля", "groupName_zh": "贸易学", "groupNameID": 63748, "published": 1, "useBasePrice": 1 }, "275": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 275, "groupName_de": "Navigation", "groupName_en-us": "Navigation", "groupName_es": "Navegación", "groupName_fr": "Navigation", "groupName_it": "Navigation", "groupName_ja": "航行技術", "groupName_ko": "항법", "groupName_ru": "Эксплуатация двигателей", "groupName_zh": "导航学", "groupNameID": 63749, "published": 1, "useBasePrice": 1 }, "278": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 278, "groupName_de": "Sozial", "groupName_en-us": "Social", "groupName_es": "Social", "groupName_fr": "Social", "groupName_it": "Social", "groupName_ja": "ソーシャル", "groupName_ko": "사회 커넥션", "groupName_ru": "Развитие деловых отношений", "groupName_zh": "社会学", "groupNameID": 63750, "published": 1, "useBasePrice": 1 }, "279": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 279, "groupName_de": "LCO-Drohne", "groupName_en-us": "LCO Drone", "groupName_es": "Dron OCG", "groupName_fr": "Drone LCO", "groupName_it": "LCO Drone", "groupName_ja": "LCOドローン", "groupName_ko": "LCO 드론", "groupName_ru": "Дрон LCO", "groupName_zh": "LCO 无人机", "groupNameID": 63751, "iconID": 0, "published": 0, "useBasePrice": 0 }, "280": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 280, "groupName_de": "Allgemein", "groupName_en-us": "General", "groupName_es": "General", "groupName_fr": "Général", "groupName_it": "General", "groupName_ja": "ジェネラル", "groupName_ko": "일반", "groupName_ru": "Товары общего потребления", "groupName_zh": "消费品", "groupNameID": 63752, "iconID": 0, "published": 1, "useBasePrice": 1 }, "281": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 281, "groupName_de": "Eingefroren", "groupName_en-us": "Frozen", "groupName_es": "Congelado", "groupName_fr": "Gelé", "groupName_it": "Frozen", "groupName_ja": "冷凍保存の", "groupName_ko": "냉동", "groupName_ru": "Замороженные продукты", "groupName_zh": "冷藏品", "groupNameID": 63753, "iconID": 0, "published": 1, "useBasePrice": 1 }, "282": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 282, "groupName_de": "Radioaktiv", "groupName_en-us": "Radioactive", "groupName_es": "Radiactivo", "groupName_fr": "Radioactif", "groupName_it": "Radioactive", "groupName_ja": "放射性", "groupName_ko": "방사성", "groupName_ru": "Радиоактивные материалы", "groupName_zh": "放射性物质", "groupNameID": 63754, "iconID": 0, "published": 1, "useBasePrice": 1 }, "283": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 283, "groupName_de": "Viehbestand", "groupName_en-us": "Livestock", "groupName_es": "Ganado", "groupName_fr": "Bétail", "groupName_it": "Livestock", "groupName_ja": "生命体", "groupName_ko": "생물체", "groupName_ru": "Живой груз", "groupName_zh": "有生货物", "groupNameID": 63755, "iconID": 0, "published": 1, "useBasePrice": 1 }, "284": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 284, "groupName_de": "Biologisches Risiko", "groupName_en-us": "Biohazard", "groupName_es": "Peligro biológico", "groupName_fr": "Biorisque", "groupName_it": "Biohazard", "groupName_ja": "バイオハザード", "groupName_ko": "생물학적 위협", "groupName_ru": "Биологически опасные материалы", "groupName_zh": "生化有害物", "groupNameID": 63756, "iconID": 0, "published": 1, "useBasePrice": 1 }, "285": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 285, "groupName_de": "CPU-Verbesserung", "groupName_en-us": "CPU Enhancer", "groupName_es": "Intensificador de CPU", "groupName_fr": "Optimisateur de CPU", "groupName_it": "CPU Enhancer", "groupName_ja": "CPUエンハンサー", "groupName_ko": "CPU 향상장치", "groupName_ru": "Модуль апгрейда процессора", "groupName_zh": "CPU增强设备", "groupNameID": 63757, "iconID": 0, "published": 1, "useBasePrice": 0 }, "286": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 286, "groupName_de": "Geringe Bedrohung", "groupName_en-us": "Minor Threat", "groupName_es": "Amenaza menor", "groupName_fr": "Menace mineure", "groupName_it": "Minor Threat", "groupName_ja": "小さな脅威", "groupName_ko": "소규모 위협", "groupName_ru": "Незначительная угроза", "groupName_zh": "较小威胁", "groupNameID": 63758, "iconID": 0, "published": 0, "useBasePrice": 0 }, "287": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 287, "groupName_de": "Raubdrohne", "groupName_en-us": "Rogue Drone", "groupName_es": "Dron rebelde", "groupName_fr": "Drone renégat", "groupName_it": "Rogue Drone", "groupName_ja": "ローグドローン", "groupName_ko": "로그 드론", "groupName_ru": "Восставший дрон", "groupName_zh": "自由无人机", "groupNameID": 63759, "published": 0, "useBasePrice": 0 }, "288": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 288, "groupName_de": "Fraktionsdrohne", "groupName_en-us": "Faction Drone", "groupName_es": "Dron de facción", "groupName_fr": "Drone de faction", "groupName_it": "Faction Drone", "groupName_ja": "勢力別ドローン", "groupName_ko": "팩션 드론", "groupName_ru": "Дрон фракции", "groupName_zh": "势力特属无人机", "groupNameID": 63760, "iconID": 0, "published": 0, "useBasePrice": 0 }, "289": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 289, "groupName_de": "Projiziertes ECCM", "groupName_en-us": "Projected ECCM", "groupName_es": "ECCM proyectadas", "groupName_fr": "CCME projetée", "groupName_it": "Projected ECCM", "groupName_ja": "ECCMプロジェクション", "groupName_ko": "강화 ECCM", "groupName_ru": "Проекционный модуль ПРЭБ", "groupName_zh": "投射型ECCM", "groupNameID": 63761, "published": 1, "useBasePrice": 0 }, "290": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 290, "groupName_de": "Fern-Sensoren-Booster", "groupName_en-us": "Remote Sensor Booster", "groupName_es": "Potenciador de sensor remoto", "groupName_fr": "Booster de détection à distance", "groupName_it": "Remote Sensor Booster", "groupName_ja": "リモートセンサーブースター", "groupName_ko": "원격 센서 부스터", "groupName_ru": "Ретранслятор системы обнаружения целей", "groupName_zh": "远程感应增强器", "groupNameID": 63762, "iconID": 74, "published": 1, "useBasePrice": 0 }, "291": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 291, "groupName_de": "Waffenstörer", "groupName_en-us": "Weapon Disruptor", "groupName_es": "Disruptor de arma", "groupName_fr": "Perturbateur d'armement", "groupName_it": "Weapon Disruptor", "groupName_ja": "ストラクチャ 兵器妨害器", "groupName_ko": "무기 디스럽터", "groupName_ru": "Помехопостановщики наводке орудий", "groupName_zh": "武器扰断器", "groupNameID": 64295, "iconID": 1639, "published": 1, "useBasePrice": 0 }, "295": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 295, "groupName_de": "Schildresistenzverstärker", "groupName_en-us": "Shield Resistance Amplifier", "groupName_es": "Amplificador de resistencia de escudo", "groupName_fr": "Amplificateur de résistance de bouclier", "groupName_it": "Shield Resistance Amplifier", "groupName_ja": "シールドレジスタンス増幅器", "groupName_ko": "실드 저항력 증폭기", "groupName_ru": "Энергонезависимые модуляторы сопротивляемости полей", "groupName_zh": "护盾抗性增效器", "groupNameID": 63763, "iconID": 82, "published": 1, "useBasePrice": 0 }, "296": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 296, "groupName_de": "Schildresistenzverstärker Blaupause", "groupName_en-us": "Shield Resistance Amplifier Blueprint", "groupName_es": "Plano de amplificador de resistencia de escudo", "groupName_fr": "Plan de construction Amplificateur de résistance de bouclier", "groupName_it": "Shield Resistance Amplifier Blueprint", "groupName_ja": "シールドレジスタンス増幅器設計図", "groupName_ko": "실드 저항력 증폭기 블루프린트", "groupName_ru": "Чертежи энергонезависимых модуляторов сопротивляемости полей", "groupName_zh": "护盾抗性增效器蓝图", "groupNameID": 63764, "iconID": 82, "published": 1, "useBasePrice": 1 }, "297": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 297, "groupName_de": "Konvoi", "groupName_en-us": "Convoy", "groupName_es": "Convoy", "groupName_fr": "Convoi", "groupName_it": "Convoy", "groupName_ja": "輸送船団", "groupName_ko": "수송대", "groupName_ru": "Конвой", "groupName_zh": "护航队", "groupNameID": 63765, "iconID": 0, "published": 0, "useBasePrice": 0 }, "298": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 298, "groupName_de": "Konvoidrohne", "groupName_en-us": "Convoy Drone", "groupName_es": "Dron de convoy", "groupName_fr": "Drone de convoi", "groupName_it": "Convoy Drone", "groupName_ja": "輸送船団ドローン", "groupName_ko": "수송대 드론", "groupName_ru": "Дрон сопровождения", "groupName_zh": "护卫无人机", "groupNameID": 63766, "iconID": 0, "published": 0, "useBasePrice": 0 }, "299": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 299, "groupName_de": "Reparaturdrohne", "groupName_en-us": "Repair Drone", "groupName_es": "Dron reparador", "groupName_fr": "Drone de réparation", "groupName_it": "Repair Drone", "groupName_ja": "リペアドローン", "groupName_ko": "수리드론", "groupName_ru": "Ремонтный дрон", "groupName_zh": "维修无人机", "groupNameID": 64344, "iconID": 0, "published": 0, "useBasePrice": 0 }, "300": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 300, "groupName_de": "Cyberimplantat", "groupName_en-us": "Cyberimplant", "groupName_es": "Ciberimplante", "groupName_fr": "Implant cybernétique", "groupName_it": "Cyberimplant", "groupName_ja": "サイバーインプラント", "groupName_ko": "사이버 임플란트", "groupName_ru": "Кибернетический имплантат", "groupName_zh": "脑植入体", "groupNameID": 63767, "iconID": 0, "published": 1, "useBasePrice": 1 }, "301": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 301, "groupName_de": "CONCORD-Drohne", "groupName_en-us": "Concord Drone", "groupName_es": "Dron de CONCORD", "groupName_fr": "Drone Concord", "groupName_it": "Concord Drone", "groupName_ja": "CONCORDドローン", "groupName_ko": "CONCORD 드론", "groupName_ru": "Дрон Concord", "groupName_zh": "统合部无人机", "groupNameID": 63768, "iconID": 0, "published": 0, "useBasePrice": 0 }, "302": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 302, "groupName_de": "Magnetischer-Feld-Stabilisator", "groupName_en-us": "Magnetic Field Stabilizer", "groupName_es": "Estabilizador de campo magnético", "groupName_fr": "Stabilisateur de champ magnétique", "groupName_it": "Magnetic Field Stabilizer", "groupName_ja": "磁場制御器", "groupName_ko": "자기장 안정기", "groupName_ru": "Стабилизатор магнитного поля", "groupName_zh": "磁场稳定设备", "groupNameID": 63769, "iconID": 26454, "published": 1, "useBasePrice": 0 }, "303": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 303, "groupName_de": "Booster", "groupName_en-us": "Booster", "groupName_es": "Potenciador", "groupName_fr": "Booster", "groupName_it": "Booster", "groupName_ja": "ブースター", "groupName_ko": "부스터", "groupName_ru": "Бустер", "groupName_zh": "增效剂", "groupNameID": 63770, "iconID": 0, "published": 1, "useBasePrice": 0 }, "304": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 304, "groupName_de": "DNS-Mutator", "groupName_en-us": "DNA Mutator", "groupName_es": "Mutador de ADN", "groupName_fr": "Modificateur d'ADN", "groupName_it": "DNA Mutator", "groupName_ja": "DNAミューテイター", "groupName_ko": "DNA 변이장치", "groupName_ru": "Модификатор ДНК", "groupName_zh": "DNA变异植入体", "groupNameID": 63771, "iconID": 0, "published": 0, "useBasePrice": 0 }, "305": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 305, "groupName_de": "Komet", "groupName_en-us": "Comet", "groupName_es": "Comet", "groupName_fr": "Comète", "groupName_it": "Comet", "groupName_ja": "コメット", "groupName_ko": "코멧", "groupName_ru": "Комета", "groupName_zh": "彗星", "groupNameID": 63772, "iconID": 0, "published": 0, "useBasePrice": 0 }, "306": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 306, "groupName_de": "Spawn-Container", "groupName_en-us": "Spawn Container", "groupName_es": "Contenedor de aparición", "groupName_fr": "Conteneur flottant", "groupName_it": "Spawn Container", "groupName_ja": "スポーンコンテナ", "groupName_ko": "소환 컨테이너", "groupName_ru": "Искусственный объект", "groupName_zh": "可重生的货柜", "groupNameID": 63773, "iconID": 0, "published": 0, "useBasePrice": 0 }, "307": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 307, "groupName_de": "Konstruktionsplattform", "groupName_en-us": "Construction Platform", "groupName_es": "Plataforma de construcción", "groupName_fr": "Plateforme de construction", "groupName_it": "Construction Platform", "groupName_ja": "建設プラットフォーム", "groupName_ko": "건설 플랫폼", "groupName_ru": "Строительная платформа", "groupName_zh": "建筑平台", "groupNameID": 63774, "iconID": 0, "published": 1, "useBasePrice": 0 }, "308": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 308, "groupName_de": "Gegenmaßnahmen-Raketenwerfer", "groupName_en-us": "Countermeasure Launcher", "groupName_es": "Lanzador de contramedidas", "groupName_fr": "Lanceur de contre-mesures", "groupName_it": "Countermeasure Launcher", "groupName_ja": "カウンターメジャーランチャー", "groupName_ko": "대응체계 런처", "groupName_ru": "Система постановки помех", "groupName_zh": "导弹反制发射器", "groupNameID": 63775, "iconID": 0, "published": 0, "useBasePrice": 0 }, "309": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 309, "groupName_de": "Autopilot", "groupName_en-us": "Autopilot", "groupName_es": "Piloto automático", "groupName_fr": "Pilotage automatique", "groupName_it": "Autopilot", "groupName_ja": "オートパイロット", "groupName_ko": "오토파일럿", "groupName_ru": "Автопилот", "groupName_zh": "自动导航", "groupNameID": 63776, "iconID": 0, "published": 0, "useBasePrice": 0 }, "310": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 310, "groupName_de": "Signalfeuer", "groupName_en-us": "Beacon", "groupName_es": "Baliza", "groupName_fr": "Balise", "groupName_it": "Beacon", "groupName_ja": "ビーコン", "groupName_ko": "비컨", "groupName_ru": "Маяк", "groupName_zh": "信标", "groupNameID": 63777, "iconID": 0, "published": 0, "useBasePrice": 0 }, "311": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 311, "groupName_de": "Aufbereitungsanlage", "groupName_en-us": "Reprocessing Array", "groupName_es": "Matriz de reprocesamiento", "groupName_fr": "Module de retraitement", "groupName_it": "Reprocessing Array", "groupName_ja": "再処理施設", "groupName_ko": "정제시설", "groupName_ru": "Reprocessing Array", "groupName_zh": "提炼阵列", "groupNameID": 63778, "iconID": 0, "published": 1, "useBasePrice": 1 }, "312": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 312, "groupName_de": "Planetarische Wolke", "groupName_en-us": "Planetary Cloud", "groupName_es": "Nube planetaria", "groupName_fr": "Nuage planétaire", "groupName_it": "Planetary Cloud", "groupName_ja": "惑星雲", "groupName_ko": "행성 구름", "groupName_ru": "Планетное облако", "groupName_zh": "星云", "groupNameID": 63779, "iconID": 0, "published": 0, "useBasePrice": 0 }, "313": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 313, "groupName_de": "Drogen", "groupName_en-us": "Drugs", "groupName_es": "Estupefacientes", "groupName_fr": "Drogues", "groupName_it": "Drugs", "groupName_ja": "薬物", "groupName_ko": "약물", "groupName_ru": "Наркотики", "groupName_zh": "药品", "groupNameID": 63780, "iconID": 0, "published": 1, "useBasePrice": 1 }, "314": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 314, "groupName_de": "Diverse", "groupName_en-us": "Miscellaneous", "groupName_es": "Varios", "groupName_fr": "Divers", "groupName_it": "Miscellaneous", "groupName_ja": "その他", "groupName_ko": "기타 설정", "groupName_ru": "Разное", "groupName_zh": "其他", "groupNameID": 63781, "iconID": 0, "published": 1, "useBasePrice": 1 }, "315": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 315, "groupName_de": "Warpkern-Stabilisator", "groupName_en-us": "Warp Core Stabilizer", "groupName_es": "Estabilizador del núcleo de warp", "groupName_fr": "Stabilisateur du réacteur de warp", "groupName_it": "Warp Core Stabilizer", "groupName_ja": "ワープコア制御装置", "groupName_ko": "워프 코어 안정기", "groupName_ru": "Стабилизатор квантового ядра", "groupName_zh": "跃迁稳定器", "groupNameID": 63782, "iconID": 0, "published": 1, "useBasePrice": 0 }, "316": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 316, "groupName_de": "Gruppen-Koordinator", "groupName_en-us": "Gang Coordinator", "groupName_es": "Coordinador de banda", "groupName_fr": "Coordinateur de gang", "groupName_it": "Gang Coordinator", "groupName_ja": "ギャングコーディネーター", "groupName_ko": "워페어 링크", "groupName_ru": "Модуль обеспечения флотского взаимодействия", "groupName_zh": "团队协调系统", "groupNameID": 63783, "iconID": 0, "published": 0, "useBasePrice": 0 }, "317": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 317, "groupName_de": "Computer-Schnittstelle", "groupName_en-us": "Computer Interface Node", "groupName_es": "Nodo de interfaz de ordenador", "groupName_fr": "Nœud d'interface informatique", "groupName_it": "Computer Interface Node", "groupName_ja": "コンピューターインターフェースポイント", "groupName_ko": "컴퓨터 인터페이스 노드", "groupName_ru": "Узел интерфейса компьютера", "groupName_zh": "电脑接口节点", "groupNameID": 63784, "iconID": 0, "published": 0, "useBasePrice": 0 }, "318": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 318, "groupName_de": "Wahrzeichen", "groupName_en-us": "Landmark", "groupName_es": "Lugar emblemático", "groupName_fr": "Repère", "groupName_it": "Landmark", "groupName_ja": "ランドマーク", "groupName_ko": "랜드마크", "groupName_ru": "Достопримечательность", "groupName_zh": "地标", "groupNameID": 63785, "iconID": 0, "published": 0, "useBasePrice": 0 }, "319": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 319, "groupName_de": "Große, statische Struktur", "groupName_en-us": "Large Collidable Structure", "groupName_es": "Estructura colisionable grande", "groupName_fr": "Grande structure solide", "groupName_it": "Large Collidable Structure", "groupName_ja": "大型建造物(破壊可能)", "groupName_ko": "대형 충돌체 (구조물)", "groupName_ru": "Материальное сооружение", "groupName_zh": "大型可撞击的建筑", "groupNameID": 63786, "iconID": 0, "published": 0, "useBasePrice": 0 }, "321": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 321, "groupName_de": "Schildunterbrecher", "groupName_en-us": "Shield Disruptor", "groupName_es": "Disruptor de escudo", "groupName_fr": "Perturbateur de bouclier", "groupName_it": "Shield Disruptor", "groupName_ja": "シールド妨害器", "groupName_ko": "실드 디스럽터", "groupName_ru": "Модуль дестабилизации щита", "groupName_zh": "护盾干扰设备", "groupNameID": 63787, "iconID": 0, "published": 1, "useBasePrice": 0 }, "323": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 323, "groupName_de": "Plakatwand", "groupName_en-us": "Billboard", "groupName_es": "Cartel publicitario", "groupName_fr": "Panneau d'affichage", "groupName_it": "Billboard", "groupName_ja": "看板", "groupName_ko": "전광판", "groupName_ru": "Информационный экран", "groupName_zh": "公告屏", "groupNameID": 63788, "iconID": 0, "published": 0, "useBasePrice": 0 }, "324": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 324, "groupName_de": "Angriffsfregatte", "groupName_en-us": "Assault Frigate", "groupName_es": "Fragata de asalto", "groupName_fr": "Frégate d’assaut", "groupName_it": "Assault Frigate", "groupName_ja": "強襲型フリゲート", "groupName_ko": "어썰트 프리깃", "groupName_ru": "Ударный фрегат", "groupName_zh": "突击护卫舰", "groupNameID": 63789, "iconID": 0, "published": 1, "useBasePrice": 0 }, "325": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 325, "groupName_de": "Remote Armor Repairer", "groupName_en-us": "Remote Armor Repairer", "groupName_es": "Reparador de blindaje remoto", "groupName_fr": "Réparateur de blindage à distance", "groupName_it": "Remote Armor Repairer", "groupName_ja": "リモートアーマーリペアラ", "groupName_ko": "원격 장갑수리 장치", "groupName_ru": "Установка дистанционного ремонта брони", "groupName_zh": "远程装甲维修器", "groupNameID": 63790, "iconID": 0, "published": 1, "useBasePrice": 0 }, "326": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 326, "groupName_de": "Energized Armor Membrane", "groupName_en-us": "Energized Armor Membrane", "groupName_es": "Membrana de blindaje energizada", "groupName_fr": "Membrane de blindage énergétique", "groupName_it": "Energized Armor Membrane", "groupName_ja": "電磁加工アーマー装甲", "groupName_ko": "장갑 에너지 멤브레인", "groupName_ru": "Подзаряжающаяся мембрана брони", "groupName_zh": "电压装甲薄膜", "groupNameID": 63791, "iconID": 0, "published": 1, "useBasePrice": 0 }, "328": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 328, "groupName_de": "Panzerungshärtemittel", "groupName_en-us": "Armor Hardener", "groupName_es": "Endurecedor de blindaje", "groupName_fr": "Renforcement du blindage", "groupName_it": "Armor Hardener", "groupName_ja": "アーマーハードナー", "groupName_ko": "장갑 강화장치", "groupName_ru": "Система укрепления брони", "groupName_zh": "装甲增强器", "groupNameID": 63792, "iconID": 0, "published": 1, "useBasePrice": 0 }, "329": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 329, "groupName_de": "Panzerplatte", "groupName_en-us": "Armor Plate", "groupName_es": "Placa de blindaje", "groupName_fr": "Revêtement de blindage", "groupName_it": "Armor Plate", "groupName_ja": "アーマープレート", "groupName_ko": "장갑 플레이트", "groupName_ru": "Бронеплита", "groupName_zh": "装甲附甲板", "groupNameID": 63793, "iconID": 0, "published": 1, "useBasePrice": 0 }, "330": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 330, "groupName_de": "Tarnvorrichtung", "groupName_en-us": "Cloaking Device", "groupName_es": "Dispositivo de camuflaje", "groupName_fr": "Dispositif de camouflage", "groupName_it": "Cloaking Device", "groupName_ja": "遮蔽装置", "groupName_ko": "클로킹 장치", "groupName_ru": "Система маскировки", "groupName_zh": "隐身设备", "groupNameID": 63794, "iconID": 0, "published": 1, "useBasePrice": 0 }, "332": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 332, "groupName_de": "Werkzeug", "groupName_en-us": "Tool", "groupName_es": "Herramienta", "groupName_fr": "Outil", "groupName_it": "Tool", "groupName_ja": "ツール", "groupName_ko": "도구", "groupName_ru": "Инструмент", "groupName_zh": "工具", "groupNameID": 63795, "iconID": 0, "published": 1, "useBasePrice": 0 }, "333": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 333, "groupName_de": "Datenkerne", "groupName_en-us": "Datacores", "groupName_es": "Núcleos de datos", "groupName_fr": "Banque de données", "groupName_it": "Datacores", "groupName_ja": "データコア", "groupName_ko": "데이터코어", "groupName_ru": "Инфоблоки", "groupName_zh": "数据核心", "groupNameID": 63796, "iconID": 0, "published": 1, "useBasePrice": 0 }, "334": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 334, "groupName_de": "Konstruktionskomponenten", "groupName_en-us": "Construction Components", "groupName_es": "Componentes de construcción", "groupName_fr": "Composants de construction", "groupName_it": "Construction Components", "groupName_ja": "建設資材", "groupName_ko": "생산 부품", "groupName_ru": "Производственные компоненты", "groupName_zh": "建造组件", "groupNameID": 63797, "iconID": 0, "published": 1, "useBasePrice": 0 }, "335": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 335, "groupName_de": "Temporäre Wolke", "groupName_en-us": "Temporary Cloud", "groupName_es": "Nube temporal", "groupName_fr": "Nuage temporaire", "groupName_it": "Temporary Cloud", "groupName_ja": "一時的なガス雲", "groupName_ko": "일시적 구름", "groupName_ru": "Временное облако", "groupName_zh": "临时的云团", "groupNameID": 63798, "iconID": 0, "published": 0, "useBasePrice": 0 }, "336": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 336, "groupName_de": "Mobile Sentry-Gun", "groupName_en-us": "Mobile Sentry Gun", "groupName_es": "Torreta centinela móvil", "groupName_fr": "Canon de sentinelle mobile", "groupName_it": "Mobile Sentry Gun", "groupName_ja": "移動型セントリーガン", "groupName_ko": "이동식 센트리 포탑", "groupName_ru": "Передвижное сторожевое орудие", "groupName_zh": "移动式岗哨炮", "groupNameID": 63799, "iconID": 0, "published": 0, "useBasePrice": 0 }, "337": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 337, "groupName_de": "Missionsdrohne", "groupName_en-us": "Mission Drone", "groupName_es": "Dron de misión", "groupName_fr": "Drone de mission", "groupName_it": "Mission Drone", "groupName_ja": "ミッションドローン", "groupName_ko": "미션 드론", "groupName_ru": "Дрон боевой группы", "groupName_zh": "任务无人机", "groupNameID": 63800, "iconID": 0, "published": 0, "useBasePrice": 0 }, "338": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 338, "groupName_de": "Schildboostverstärker", "groupName_en-us": "Shield Boost Amplifier", "groupName_es": "Amplificador de potenciador de escudo", "groupName_fr": "Amplificateur de booster de bouclier", "groupName_it": "Shield Boost Amplifier", "groupName_ja": "シールドブースト増幅器", "groupName_ko": "실드 부스터 증폭기", "groupName_ru": "Усилитель накачки щита", "groupName_zh": "护盾回充增量放大器", "groupNameID": 63801, "iconID": 0, "published": 1, "useBasePrice": 0 }, "339": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 339, "groupName_de": "Zusätzlicher Energiekern", "groupName_en-us": "Auxiliary Power Core", "groupName_es": "Núcleo de potencia auxiliar", "groupName_fr": "Alimentation auxiliaire", "groupName_it": "Auxiliary Power Core", "groupName_ja": "補助パワーコア", "groupName_ko": "보조 파워코어", "groupName_ru": "Вспомогательный реактор", "groupName_zh": "辅助能源核心", "groupNameID": 63802, "iconID": 0, "published": 1, "useBasePrice": 0 }, "340": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 340, "groupName_de": "Sicherer Frachtcontainer", "groupName_en-us": "Secure Cargo Container", "groupName_es": "Contenedor de carga seguro", "groupName_fr": "Conteneur de fret sécurisé", "groupName_it": "Secure Cargo Container", "groupName_ja": "セキュアカーゴコンテナ", "groupName_ko": "보안 화물 컨테이너", "groupName_ru": "Защищенный грузовой контейнер", "groupName_zh": "安全货柜", "groupNameID": 64288, "iconID": 0, "published": 1, "useBasePrice": 1 }, "341": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 341, "groupName_de": "Signaturen verzerren", "groupName_en-us": "Signature Scrambling", "groupName_es": "Distorsionador de señal", "groupName_fr": "Brouillage de signature", "groupName_it": "Signature Scrambling", "groupName_ja": "シグネチャスクランブル", "groupName_ko": "신호 교란", "groupName_ru": "Система маскировки сигнатуры", "groupName_zh": "信号扰频器", "groupNameID": 63803, "iconID": 0, "published": 0, "useBasePrice": 0 }, "342": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 342, "groupName_de": "Anti-Warp-Störer-Blueprint", "groupName_en-us": "Anti Warp Scrambler Blueprint", "groupName_es": "Plano de antidistorsionador de warp", "groupName_fr": "Plan de construction Anti-inhibiteur de warp", "groupName_it": "Anti Warp Scrambler Blueprint", "groupName_ja": "対ワープスクランブラーブループリント", "groupName_ko": "대 워프 스크램블러 블루프린트", "groupName_ru": "Чертеж системы противодействия квантовому подавлению", "groupName_zh": "反跃迁扰频器蓝图", "groupNameID": 63804, "iconID": 0, "published": 1, "useBasePrice": 1 }, "343": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 343, "groupName_de": "Waffenstörer-Blaupause", "groupName_en-us": "Weapon Disruptor Blueprint", "groupName_es": "Plano de disruptor de armas", "groupName_fr": "Plan de construction Perturbateur d'armement", "groupName_it": "Weapon Disruptor Blueprint", "groupName_ja": "兵器妨害器のブループリント", "groupName_ko": "무기 디스럽터 블루프린트", "groupName_ru": "Чертежи помехопостановщика наводке орудий", "groupName_zh": "武器扰断器蓝图", "groupNameID": 63805, "iconID": 0, "published": 1, "useBasePrice": 1 }, "344": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 344, "groupName_de": "Nachführverbesserung-Blueprint", "groupName_en-us": "Tracking Enhancer Blueprint", "groupName_es": "Plano de intensificador de rastreo", "groupName_fr": "Plan de construction Optimisateur de suivi", "groupName_it": "Tracking Enhancer Blueprint", "groupName_ja": "トラッキングエンハンサーブループリント", "groupName_ko": "트래킹 향상장치 블루프린트", "groupName_ru": "Чертежи приводов наводки орудий", "groupName_zh": "索敌增强器蓝图", "groupNameID": 63806, "iconID": 0, "published": 1, "useBasePrice": 1 }, "345": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 345, "groupName_de": "Remote Tracking Computer Blueprint", "groupName_en-us": "Remote Tracking Computer Blueprint", "groupName_es": "Plano de ordenador de rastreo remoto", "groupName_fr": "Plan de construction Ordinateur de suivi à distance", "groupName_it": "Remote Tracking Computer Blueprint", "groupName_ja": "リモートトラッキングコンピューターブループリント", "groupName_ko": "원격 트래킹 컴퓨터 블루프린트", "groupName_ru": "Чертеж ретранслятора системы целеуказания", "groupName_zh": "远距索敌计算机蓝图", "groupNameID": 63807, "iconID": 0, "published": 1, "useBasePrice": 1 }, "346": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 346, "groupName_de": "Co-Prozessor-Blueprint", "groupName_en-us": "Co-Processor Blueprint", "groupName_es": "Plano de coprocesador", "groupName_fr": "Plan de construction Coprocesseur", "groupName_it": "Co-Processor Blueprint", "groupName_ja": "コプロセッサーブループリント", "groupName_ko": "보조 처리기 블루프린트", "groupName_ru": "Чертеж сопроцессора", "groupName_zh": "协处理器蓝图", "groupNameID": 63808, "iconID": 0, "published": 1, "useBasePrice": 1 }, "347": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 347, "groupName_de": "Signalverstärker-Blueprint", "groupName_en-us": "Signal Amplifier Blueprint", "groupName_es": "Plano de amplificador de señal", "groupName_fr": "Plan de construction Amplificateur de signal", "groupName_it": "Signal Amplifier Blueprint", "groupName_ja": "シグナル増幅器設計図", "groupName_ko": "신호 증폭기 블루프린트", "groupName_ru": "Чертеж усилителя сигнала", "groupName_zh": "信号放大器蓝图", "groupNameID": 63809, "iconID": 0, "published": 1, "useBasePrice": 1 }, "348": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 348, "groupName_de": "Panzerungshärtemittel-Blueprint", "groupName_en-us": "Armor Hardener Blueprint", "groupName_es": "Plano de endurecedor de blindaje", "groupName_fr": "Plan de construction Renforcement du blindage", "groupName_it": "Armor Hardener Blueprint", "groupName_ja": "アーマーハードナーブループリント", "groupName_ko": "장갑 강화장치 블루프린트", "groupName_ru": "Чертеж системы укрепления брони", "groupName_zh": "装甲增强器蓝图", "groupNameID": 63810, "iconID": 0, "published": 1, "useBasePrice": 1 }, "349": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 349, "groupName_de": "Panzerplatten-Blaupause", "groupName_en-us": "Armor Plate Blueprint", "groupName_es": "Plano de placa de blindaje", "groupName_fr": "Plan de construction Revêtement de blindage", "groupName_it": "Armor Plate Blueprint", "groupName_ja": "アーマープレート設計図", "groupName_ko": "장갑 플레이트 블루프린트", "groupName_ru": "Чертёж бронеплиты", "groupName_zh": "装甲附甲板蓝图", "groupNameID": 63811, "iconID": 0, "published": 1, "useBasePrice": 1 }, "350": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 350, "groupName_de": "Remote Armor Repairer Blueprint", "groupName_en-us": "Remote Armor Repairer Blueprint", "groupName_es": "Plano de reparador de blindaje remoto", "groupName_fr": "Plan de construction Réparateur de blindage à distance", "groupName_it": "Remote Armor Repairer Blueprint", "groupName_ja": "リモートアーマーリペアラブループリント", "groupName_ko": "원격 장갑수리 장치 블루프린트", "groupName_ru": "Чертеж системы дистанционного ремонта брони", "groupName_zh": "远程装甲维修器蓝图", "groupNameID": 63812, "iconID": 0, "published": 1, "useBasePrice": 1 }, "352": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 352, "groupName_de": "Zusätzlicher-Energiekern-Blueprint", "groupName_en-us": "Auxiliary Power Core Blueprint", "groupName_es": "Plano de núcleo de potencia auxiliar", "groupName_fr": "Plan de construction Alimentation auxiliaire", "groupName_it": "Auxiliary Power Core Blueprint", "groupName_ja": "補助パワーコアブループリント", "groupName_ko": "보조 파워코어 블루프린트", "groupName_ru": "Чертеж вспомогательной силовой установки", "groupName_zh": "辅助能源核心蓝图", "groupNameID": 63813, "iconID": 0, "published": 1, "useBasePrice": 1 }, "353": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 353, "groupName_de": "QA Module", "groupName_en-us": "QA Module", "groupName_es": "Módulo de control de calidad", "groupName_fr": "Module AQ", "groupName_it": "QA Module", "groupName_ja": "QAモジュール", "groupName_ko": "QA 모듈", "groupName_ru": "Модули отдела контроля качества", "groupName_zh": "QA测试装备", "groupNameID": 63814, "iconID": 0, "published": 0, "useBasePrice": 0 }, "355": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 355, "groupName_de": "Aufbereitbare Materialien", "groupName_en-us": "Refinables", "groupName_es": "Refinables", "groupName_fr": "Raffinables", "groupName_it": "Refinables", "groupName_ja": "精錬可能物", "groupName_ko": "정제가능 광물", "groupName_ru": "Обогащаемые вещества", "groupName_zh": "可精炼物质", "groupNameID": 63815, "iconID": 0, "published": 1, "useBasePrice": 0 }, "356": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 356, "groupName_de": "Werkzeug-Blueprint", "groupName_en-us": "Tool Blueprint", "groupName_es": "Plano de herramienta", "groupName_fr": "Plan de construction Outil", "groupName_it": "Tool Blueprint", "groupName_ja": "ツールブループリント", "groupName_ko": "도구 블루프린트", "groupName_ru": "Чертеж инструмента", "groupName_zh": "工具蓝图", "groupNameID": 63816, "iconID": 0, "published": 1, "useBasePrice": 1 }, "357": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 357, "groupName_de": "Drohnenhangar\">Buchterweiterung", "groupName_en-us": "DroneBayExpander", "groupName_es": "Expansor de plataforma de drones", "groupName_fr": "Extension de hangar à drones", "groupName_it": "DroneBayExpander", "groupName_ja": "ドローンベイ拡張", "groupName_ko": "드론 격납고 확장장치", "groupName_ru": "DroneBayExpander", "groupName_zh": "无人机挂舱扩展设备", "groupNameID": 63817, "iconID": 0, "published": 0, "useBasePrice": 0 }, "358": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 358, "groupName_de": "Schwerer Angriffskreuzer", "groupName_en-us": "Heavy Assault Cruiser", "groupName_es": "Crucero de asalto pesado", "groupName_fr": "Croiseur d'assaut lourd", "groupName_it": "Heavy Assault Cruiser", "groupName_ja": "強襲型巡洋艦", "groupName_ko": "어썰트 크루저", "groupName_ru": "Тяжёлый ударный крейсер", "groupName_zh": "重型突击巡洋舰", "groupNameID": 63818, "iconID": 0, "published": 1, "useBasePrice": 0 }, "360": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 360, "groupName_de": "Schildboostverstärker-Blueprint", "groupName_en-us": "Shield Boost Amplifier Blueprint", "groupName_es": "Plano de amplificador de potenciador de escudo", "groupName_fr": "Plan de construction Amplificateur de booster de bouclier", "groupName_it": "Shield Boost Amplifier Blueprint", "groupName_ja": "シールドブースト増幅器ブループリント", "groupName_ko": "실드 부스터 증폭기 블루프린트", "groupName_ru": "Чертеж усилителя накачки щита", "groupName_zh": "护盾回充增量增效器蓝图", "groupNameID": 63819, "iconID": 0, "published": 1, "useBasePrice": 1 }, "361": { "anchorable": 1, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 361, "groupName_de": "Mobiler Warp-Unterbrecher", "groupName_en-us": "Mobile Warp Disruptor", "groupName_es": "disruptor de warp móvil", "groupName_fr": "Perturbateur de warp mobile", "groupName_it": "Mobile Warp Disruptor", "groupName_ja": "移動型ワープ妨害器", "groupName_ko": "이동식 워프 디스럽터", "groupName_ru": "Автономный генератор варп-помех", "groupName_zh": "机动跃迁扰断器", "groupNameID": 63820, "iconID": 0, "published": 1, "useBasePrice": 0 }, "363": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 363, "groupName_de": "Schiffwartungsanlage", "groupName_en-us": "Ship Maintenance Array", "groupName_es": "Dársena de mantenimiento de naves", "groupName_fr": "Module de maintenance de vaisseaux", "groupName_it": "Ship Maintenance Array", "groupName_ja": "船舶調整施設", "groupName_ko": "함선 정비 시설", "groupName_ru": "Ангарный блок", "groupName_zh": "船只维护阵列", "groupNameID": 63821, "iconID": 0, "published": 1, "useBasePrice": 1 }, "364": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 364, "groupName_de": "Mobiles Lager", "groupName_en-us": "Mobile Storage", "groupName_es": "Almacén móvil", "groupName_fr": "Capacité de stockage mobile", "groupName_it": "Mobile Storage", "groupName_ja": "移動型保管庫", "groupName_ko": "이동식 저장고", "groupName_ru": "Передвижное хранилище", "groupName_zh": "移动贮藏设备", "groupNameID": 63822, "iconID": 0, "published": 0, "useBasePrice": 0 }, "365": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 365, "groupName_de": "Kontrollturm", "groupName_en-us": "Control Tower", "groupName_es": "Torre de control", "groupName_fr": "Tour de contrôle", "groupName_it": "Control Tower", "groupName_ja": "コントロールタワー", "groupName_ko": "관제타워", "groupName_ru": "Башня управления базой", "groupName_zh": "控制塔", "groupNameID": 63823, "iconID": 0, "published": 1, "useBasePrice": 1 }, "366": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 366, "groupName_de": "Warp-Tor", "groupName_en-us": "Warp Gate", "groupName_es": "Portal de warp", "groupName_fr": "Portail de warp", "groupName_it": "Warp Gate", "groupName_ja": "ワープゲート", "groupName_ko": "워프 게이트", "groupName_ru": "Разгонные ворота", "groupName_zh": "跃迁门", "groupNameID": 63824, "iconID": 0, "published": 0, "useBasePrice": 0 }, "367": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 367, "groupName_de": "Ballistikkontrollsystem", "groupName_en-us": "Ballistic Control System", "groupName_es": "Sistema de control balístico", "groupName_fr": "Système de contrôle balistique", "groupName_it": "Ballistic Control System", "groupName_ja": "弾道制御装置", "groupName_ko": "탄도 제어시스템", "groupName_ru": "Система управления баллистикой", "groupName_zh": "弹道控制系统", "groupNameID": 63825, "iconID": 0, "published": 1, "useBasePrice": 0 }, "368": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 368, "groupName_de": "Globaler Warp-Unterbrecher", "groupName_en-us": "Global Warp Disruptor", "groupName_es": "Disruptor de warp global", "groupName_fr": "Perturbateur global de warp", "groupName_it": "Global Warp Disruptor", "groupName_ja": "グローバルワープ妨害器", "groupName_ko": "전역 워프 디스럽터", "groupName_ru": "Глобальный квантовый подавитель", "groupName_zh": "全局跃迁扰断器", "groupNameID": 63826, "iconID": 0, "published": 0, "useBasePrice": 0 }, "369": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 369, "groupName_de": "Schiffslogbücher", "groupName_en-us": "Ship Logs", "groupName_es": "Cuadernos de bitácora", "groupName_fr": "Journaux de bord", "groupName_it": "Ship Logs", "groupName_ja": "航行記録", "groupName_ko": "항해 일지", "groupName_ru": "Корабельные журналы", "groupName_zh": "航行日志", "groupNameID": 63827, "iconID": 0, "published": 1, "useBasePrice": 1 }, "370": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 370, "groupName_de": "Erkennungsmarke eines Kriminellen", "groupName_en-us": "Criminal Tags", "groupName_es": "Chapas de criminal", "groupName_fr": "Plaques de criminels", "groupName_it": "Criminal Tags", "groupName_ja": "犯罪者タグ", "groupName_ko": "범죄자 인식표", "groupName_ru": "Личные жетоны преступников", "groupName_zh": "铭牌", "groupNameID": 63828, "iconID": 0, "published": 1, "useBasePrice": 1 }, "371": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 371, "groupName_de": "Mobiler-Warp-Unterbrecher-Blueprint", "groupName_en-us": "Mobile Warp Disruptor Blueprint", "groupName_es": "Plano de disruptor de warp móvil", "groupName_fr": "Plan de construction Perturbateur de warp mobile", "groupName_it": "Mobile Warp Disruptor Blueprint", "groupName_ja": "移動型ワープ妨害器ブループリント", "groupName_ko": "이동식 워프 디스럽터 블루프린트", "groupName_ru": "Чертежи автономного генератора варп-помех", "groupName_zh": "机动跃迁扰断器蓝图", "groupNameID": 63829, "iconID": 0, "published": 1, "useBasePrice": 1 }, "372": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 372, "groupName_de": "Fortgeschrittene Maschinenkanonenmunition", "groupName_en-us": "Advanced Autocannon Ammo", "groupName_es": "Munición avanzada de cañón automático", "groupName_fr": "Munitions de canon automatique perfectionnées", "groupName_it": "Advanced Autocannon Ammo", "groupName_ja": "高性能オートキャノン弾", "groupName_ko": "상급 기관포 탄약", "groupName_ru": "Спецбоеприпасы для автопушек", "groupName_zh": "高级自动加农炮弹药", "groupNameID": 63830, "iconID": 1296, "published": 1, "useBasePrice": 0 }, "373": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 373, "groupName_de": "Fortgeschrittene Railgun-Ladung", "groupName_en-us": "Advanced Railgun Charge", "groupName_es": "Carga de cañón electromagnético avanzada", "groupName_fr": "Charge de canon à rail perfectionnée", "groupName_it": "Advanced Railgun Charge", "groupName_ja": "最新型のレールガンの弾薬", "groupName_ko": "상급 레일건 탄약", "groupName_ru": "Спецбоеприпасы для рельсотронов", "groupName_zh": "高级磁轨炮弹药", "groupNameID": 63831, "iconID": 1321, "published": 1, "useBasePrice": 0 }, "374": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 374, "groupName_de": "Fortgeschrittener Strahllaser-Kristall", "groupName_en-us": "Advanced Beam Laser Crystal", "groupName_es": "Cristal avanzado de láser de rayos", "groupName_fr": "Cristal de laser à rayons perfectionné", "groupName_it": "Advanced Beam Laser Crystal", "groupName_ja": "高性能ビームレーザークリスタル", "groupName_ko": "상급 빔 레이저 크리스탈", "groupName_ru": "Спецкристаллы для лазеров непрерывного действия", "groupName_zh": "高级集束激光晶体", "groupNameID": 63832, "iconID": 1145, "published": 1, "useBasePrice": 0 }, "375": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 375, "groupName_de": "Fortgeschrittener Impulslaser-Kristall", "groupName_en-us": "Advanced Pulse Laser Crystal", "groupName_es": "Cristal avanzado de láser de pulsos", "groupName_fr": "Cristal de laser à impulsion perfectionné", "groupName_it": "Advanced Pulse Laser Crystal", "groupName_ja": "高性能パルスレーザー用", "groupName_ko": "상급 펄스 레이저 크리스탈", "groupName_ru": "Спецкристаллы для импульсных лазеров", "groupName_zh": "高级脉冲激光晶体", "groupNameID": 63833, "iconID": 1140, "published": 1, "useBasePrice": 0 }, "376": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 376, "groupName_de": "Fortgeschrittene Artilleriemunition", "groupName_en-us": "Advanced Artillery Ammo", "groupName_es": "Munición avanzada de artillería", "groupName_fr": "Munitions d’artillerie perfectionnées", "groupName_it": "Advanced Artillery Ammo", "groupName_ja": "高性能アーティレリ弾", "groupName_ko": "상급 함포 탄약", "groupName_ru": "Спецбоеприпасы для артиллерийских орудий", "groupName_zh": "高级火炮弹药", "groupNameID": 63834, "iconID": 1292, "published": 1, "useBasePrice": 0 }, "377": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 377, "groupName_de": "Fortgeschrittene Blaster-Ladung", "groupName_en-us": "Advanced Blaster Charge", "groupName_es": "Carga avanzada de bláster", "groupName_fr": "Charge de blaster perfectionnée", "groupName_it": "Advanced Blaster Charge", "groupName_ja": "最新型のブラスターの弾薬", "groupName_ko": "상급 블라스터 탄약", "groupName_ru": "Спецбоеприпасы для бластеров", "groupName_zh": "高级疾速炮弹药", "groupNameID": 63835, "iconID": 1317, "published": 1, "useBasePrice": 0 }, "378": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 378, "groupName_de": "Tempomat", "groupName_en-us": "Cruise Control", "groupName_es": "Control de crucero", "groupName_fr": "Régulateur de vitesse", "groupName_it": "Cruise Control", "groupName_ja": "巡航制御器", "groupName_ko": "크루즈 컨트롤", "groupName_ru": "Система поддержания скорости", "groupName_zh": "巡航控制", "groupNameID": 63836, "iconID": 0, "published": 0, "useBasePrice": 0 }, "379": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 379, "groupName_de": "Zielmarkierer", "groupName_en-us": "Target Painter", "groupName_es": "revelador de objetivo", "groupName_fr": "Marqueur de cible", "groupName_it": "Target Painter", "groupName_ja": "ターゲットペインター", "groupName_ko": "타겟 페인터", "groupName_ru": "Система подсветки целей", "groupName_zh": "目标标记装置", "groupNameID": 63837, "iconID": 0, "published": 1, "useBasePrice": 0 }, "380": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 380, "groupName_de": "Deep Space Transport", "groupName_en-us": "Deep Space Transport", "groupName_es": "Transporte del espacio profundo", "groupName_fr": "Transport d'espace profond", "groupName_it": "Deep Space Transport", "groupName_ja": "深宇宙用特化型輸送艦", "groupName_ko": "딥스페이스 트랜스포터", "groupName_ru": "Транспорт фронтирного типа", "groupName_zh": "深层空间运输舰", "groupNameID": 63838, "iconID": 0, "published": 1, "useBasePrice": 0 }, "381": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 381, "groupName_de": "Elite-Schlachtschiff", "groupName_en-us": "Elite Battleship", "groupName_es": "Acorazado de élite", "groupName_fr": "Cuirassé d'élite", "groupName_it": "Elite Battleship", "groupName_ja": "エリート戦艦", "groupName_ko": "엘리트 배틀쉽", "groupName_ru": "Линкор специального назначения", "groupName_zh": "精英战列舰", "groupNameID": 63839, "iconID": 0, "published": 0, "useBasePrice": 1 }, "382": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 382, "groupName_de": "Transportkisten", "groupName_en-us": "Shipping Crates", "groupName_es": "Cajas de envío", "groupName_fr": "Caisses de transport", "groupName_it": "Shipping Crates", "groupName_ja": "輸送コンテナ", "groupName_ko": "화물", "groupName_ru": "Упаковочные ящики", "groupName_zh": "集装箱", "groupNameID": 63840, "iconID": 0, "published": 0, "useBasePrice": 0 }, "383": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 383, "groupName_de": "Zerstörbare Sentry-Gun", "groupName_en-us": "Destructible Sentry Gun", "groupName_es": "Torreta centinela destructible", "groupName_fr": "Canon de sentinelle destructible", "groupName_it": "Destructible Sentry Gun", "groupName_ja": "セントリーガン(破壊可能)", "groupName_ko": "파괴 가능한 센트리 포탑", "groupName_ru": "Разрушаемое автоматическое орудие", "groupName_zh": "可击毁的岗哨炮", "groupNameID": 63841, "iconID": 0, "published": 0, "useBasePrice": 0 }, "384": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 384, "groupName_de": "Leichte Rakete", "groupName_en-us": "Light Missile", "groupName_es": "Misil ligero", "groupName_fr": "Missile léger", "groupName_it": "Light Missile", "groupName_ja": "ライトミサイル", "groupName_ko": "라이트 미사일", "groupName_ru": "Ракета малой мощности", "groupName_zh": "轻型导弹", "groupNameID": 63842, "iconID": 192, "published": 1, "useBasePrice": 0 }, "385": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 385, "groupName_de": "Schwere Rakete", "groupName_en-us": "Heavy Missile", "groupName_es": "Misil pesado", "groupName_fr": "Missile lourd", "groupName_it": "Heavy Missile", "groupName_ja": "ヘビーミサイル", "groupName_ko": "헤비 미사일", "groupName_ru": "Ракета большой мощности", "groupName_zh": "重型导弹", "groupNameID": 63843, "iconID": 188, "published": 1, "useBasePrice": 0 }, "386": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 386, "groupName_de": "Cruise Missile", "groupName_en-us": "Cruise Missile", "groupName_es": "Misil de crucero", "groupName_fr": "Missile de croisière", "groupName_it": "Cruise Missile", "groupName_ja": "クルーズミサイル", "groupName_ko": "크루즈 미사일", "groupName_ru": "Ракета дальнего боя", "groupName_zh": "巡航导弹", "groupNameID": 63844, "iconID": 182, "published": 1, "useBasePrice": 0 }, "387": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 387, "groupName_de": "Rakete", "groupName_en-us": "Rocket", "groupName_es": "Cohete", "groupName_fr": "Roquette", "groupName_it": "Rocket", "groupName_ja": "ロケット", "groupName_ko": "로켓", "groupName_ru": "Ракета ближнего боя", "groupName_zh": "火箭", "groupNameID": 63845, "iconID": 1352, "published": 1, "useBasePrice": 0 }, "394": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 394, "groupName_de": "Lenkwaffe mit Auto-Zielerfassung (Leicht)", "groupName_en-us": "Auto-Targeting Light Missile", "groupName_es": "Misil ligero de adquisición automática de objetivos", "groupName_fr": "Missile léger à ciblage automatique", "groupName_it": "Auto-Targeting Light Missile", "groupName_ja": "自動捕捉型ライトミサイル", "groupName_ko": "오토 타겟팅 라이트 미사일", "groupName_ru": "Лёгкая ракета с авто-наведением", "groupName_zh": "自动锁定轻型导弹", "groupNameID": 63846, "iconID": 1336, "published": 1, "useBasePrice": 0 }, "395": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 395, "groupName_de": "Lenkwaffe mit Auto-Zielerfassung (Schwer)", "groupName_en-us": "Auto-Targeting Heavy Missile", "groupName_es": "Misil pesado de adquisición automática de objetivos", "groupName_fr": "Missile lourd à ciblage automatique", "groupName_it": "Auto-Targeting Heavy Missile", "groupName_ja": "自動捕捉型ヘビーミサイル", "groupName_ko": "오토 타겟팅 헤비 비사일", "groupName_ru": "Тяжёлая ракета с авто-наведением", "groupName_zh": "自动锁定重型导弹", "groupNameID": 63847, "iconID": 1339, "published": 1, "useBasePrice": 0 }, "396": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 396, "groupName_de": "Lenkwaffe mit Auto-Zielerfassung (Marschflugkörper)", "groupName_en-us": "Auto-Targeting Cruise Missile", "groupName_es": "Misil de crucero de adquisición automática de objetivos", "groupName_fr": "Missile de croisière à ciblage automatique", "groupName_it": "Auto-Targeting Cruise Missile", "groupName_ja": "自動捕捉型クルーズミサイル", "groupName_ko": "오토 타겟팅 크루즈 미사일", "groupName_ru": "Дальнобойная ракета с авто-наведением", "groupName_zh": "自动锁定巡航导弹", "groupNameID": 63848, "iconID": 1344, "published": 1, "useBasePrice": 0 }, "397": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 397, "groupName_de": "Fertigungsanlage", "groupName_en-us": "Assembly Array", "groupName_es": "Batería de montaje", "groupName_fr": "Module d'assemblage", "groupName_it": "Assembly Array", "groupName_ja": "組み立て施設", "groupName_ko": "생산시설", "groupName_ru": "Сборочная линия", "groupName_zh": "装配阵列", "groupNameID": 63849, "iconID": 0, "published": 1, "useBasePrice": 1 }, "400": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 400, "groupName_de": "Ballistisches-Kontrollsystem-Blueprint", "groupName_en-us": "Ballistic Control System Blueprint", "groupName_es": "Plano del sistema de control balístico I", "groupName_fr": "Plan de construction Système de contrôle balistique", "groupName_it": "Ballistic Control System Blueprint", "groupName_ja": "弾道制御装置ブループリント", "groupName_ko": "탄도 제어시스템 블루프린트", "groupName_ru": "Чертеж баллистического вычислителя", "groupName_zh": "弹道控制系统蓝图", "groupNameID": 63850, "iconID": 0, "published": 1, "useBasePrice": 1 }, "401": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 401, "groupName_de": "Tarnvorrichtung-Blueprint", "groupName_en-us": "Cloaking Device Blueprint", "groupName_es": "Plano de dispositivo de camuflaje", "groupName_fr": "Plan de construction Dispositif de camouflage", "groupName_it": "Cloaking Device Blueprint", "groupName_ja": "遮蔽装置ブループリント", "groupName_ko": "클로킹 장치 블루프린트", "groupName_ru": "Чертежи системы маскировки", "groupName_zh": "隐形装置蓝图", "groupNameID": 63851, "iconID": 0, "published": 1, "useBasePrice": 1 }, "404": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 404, "groupName_de": "Silo", "groupName_en-us": "Silo", "groupName_es": "Depósito", "groupName_fr": "Silo", "groupName_it": "Silo", "groupName_ja": "貯蔵庫", "groupName_ko": "사일로", "groupName_ru": "Хранилище", "groupName_zh": "储藏库", "groupNameID": 63852, "iconID": 0, "published": 1, "useBasePrice": 1 }, "405": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 405, "groupName_de": "Enttarnungsimpuls", "groupName_en-us": "Anti Cloaking Pulse", "groupName_es": "Pulso anticamuflaje", "groupName_fr": "Impulsion anti-camouflage", "groupName_it": "Anti Cloaking Pulse", "groupName_ja": "遮蔽探知パルス", "groupName_ko": "대 클로킹 펄스", "groupName_ru": "Система импульсной демаскировки", "groupName_zh": "反隐身脉冲", "groupNameID": 63853, "iconID": 0, "published": 0, "useBasePrice": 0 }, "406": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 406, "groupName_de": "Smartbomb-Supercharger", "groupName_en-us": "Smartbomb Supercharger", "groupName_es": "Supercargador de bomba inteligente", "groupName_fr": "Superchargeur de bombe de proximité", "groupName_it": "Smartbomb Supercharger", "groupName_ja": "スマートボムスーパーチャージャー", "groupName_ko": "스마트폭탄 슈퍼차지", "groupName_ru": "Система накачки импульсных излучателей", "groupName_zh": "立体炸弹增压器", "groupNameID": 63854, "iconID": 0, "published": 0, "useBasePrice": 0 }, "407": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 407, "groupName_de": "Jäger-Unterstützungseinheit", "groupName_en-us": "Fighter Support Unit", "groupName_es": "Unidad de apoyo para cazas", "groupName_fr": "Unité de soutien de chasseurs", "groupName_it": "Fighter Support Unit", "groupName_ja": "戦闘機サポートユニット", "groupName_ko": "파이터 보조 장치", "groupName_ru": "Модуль поддержки истребителей", "groupName_zh": "铁骑舰载机辅助单元", "groupNameID": 63855, "iconID": 0, "published": 1, "useBasePrice": 0 }, "408": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 408, "groupName_de": "Drohnenupgrade-Blaupause", "groupName_en-us": "Drone Upgrade Blueprint", "groupName_es": "Plano de mejora de dron", "groupName_fr": "Plan de construction Amélioration de drone", "groupName_it": "Drone Upgrade Blueprint", "groupName_ja": "ドローンアップグレードのブループリント", "groupName_ko": "드론 업그레이드 모듈 블루프린트", "groupName_ru": "Чертежи пакетов усиления дронов", "groupName_zh": "无人机升级件蓝图", "groupNameID": 63856, "iconID": 0, "published": 1, "useBasePrice": 1 }, "409": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 409, "groupName_de": "Imperiumsabzeichen-Vergabe", "groupName_en-us": "Empire Insignia Drops", "groupName_es": "Botín de insignia del Imperio", "groupName_fr": "Colis d'insigne de l'empire", "groupName_it": "Empire Insignia Drops", "groupName_ja": "帝国記章遺留品", "groupName_ko": "계급장", "groupName_ru": "Идентификаторы офицеров флота", "groupName_zh": "帝国勋章", "groupNameID": 63857, "iconID": 0, "published": 1, "useBasePrice": 1 }, "410": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 410, "groupName_de": "Enttarnungsimpuls-Blueprint", "groupName_en-us": "Anti Cloaking Pulse Blueprint", "groupName_es": "Plano de pulso anticamuflaje", "groupName_fr": "Plan de construction Impulsion anti-camouflage", "groupName_it": "Anti Cloaking Pulse Blueprint", "groupName_ja": "遮蔽探知パルスブループリント", "groupName_ko": "대 클로킹 펄스 블루프린트", "groupName_ru": "Чертеж импульсной системы демаскировки", "groupName_zh": "反隐身脉冲蓝图", "groupNameID": 64334, "iconID": 0, "published": 0, "useBasePrice": 1 }, "411": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 411, "groupName_de": "Kraftfeld", "groupName_en-us": "Force Field", "groupName_es": "Campo de fuerza", "groupName_fr": "Champ de force", "groupName_it": "Force Field", "groupName_ja": "フォースフィールド", "groupName_ko": "포스필드", "groupName_ru": "Силовое поле", "groupName_zh": "力场", "groupNameID": 63858, "iconID": 0, "published": 0, "useBasePrice": 0 }, "413": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 413, "groupName_de": "Labor", "groupName_en-us": "Laboratory", "groupName_es": "Laboratorio", "groupName_fr": "Laboratoire", "groupName_it": "Laboratory", "groupName_ja": "研究施設", "groupName_ko": "연구실", "groupName_ru": "Лаборатория", "groupName_zh": "实验室", "groupNameID": 63859, "iconID": 0, "published": 1, "useBasePrice": 1 }, "414": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 414, "groupName_de": "Mobiler Energiekern", "groupName_en-us": "Mobile Power Core", "groupName_es": "Núcleo de potencia móvil", "groupName_fr": "Alimentation mobile", "groupName_it": "Mobile Power Core", "groupName_ja": "移動型パワーコア", "groupName_ko": "이동식 파워코어", "groupName_ru": "Передвижная силовая установка", "groupName_zh": "移动能源阵列", "groupNameID": 63860, "iconID": 0, "published": 0, "useBasePrice": 0 }, "416": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 416, "groupName_de": "Mond-Bergbau", "groupName_en-us": "Moon Mining", "groupName_es": "Minería lunar", "groupName_fr": "Extraction lunaire", "groupName_it": "Moon Mining", "groupName_ja": "衛星の採掘", "groupName_ko": "위성 채굴", "groupName_ru": "Комплекс экстракции со спутника", "groupName_zh": "卫星开采设备", "groupNameID": 63861, "iconID": 0, "published": 1, "useBasePrice": 1 }, "417": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 417, "groupName_de": "Mobiler Raketen-Wachposten", "groupName_en-us": "Mobile Missile Sentry", "groupName_es": "Estructura centinela de misiles móvil", "groupName_fr": "Sentinelle à missiles mobile", "groupName_it": "Mobile Missile Sentry", "groupName_ja": "移動式ミサイルセントリー", "groupName_ko": "이동식 미사일 센트리", "groupName_ru": "Передвижная автоматическая ракетная установка", "groupName_zh": "移动导弹岗哨炮", "groupNameID": 63862, "iconID": 0, "published": 1, "useBasePrice": 1 }, "418": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 418, "groupName_de": "Mobiler Schildgenerator", "groupName_en-us": "Mobile Shield Generator", "groupName_es": "Generador de escudo móvil", "groupName_fr": "Générateur de bouclier mobile", "groupName_it": "Mobile Shield Generator", "groupName_ja": "移動式シールドジェネレーター", "groupName_ko": "이동식 실드 생성기", "groupName_ru": "Передвижной генератор щита", "groupName_zh": "移动护盾发生器", "groupNameID": 63863, "iconID": 0, "published": 0, "useBasePrice": 0 }, "419": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 419, "groupName_de": "Kampf-Schlachtkreuzer", "groupName_en-us": "Combat Battlecruiser", "groupName_es": "Crucero de combate", "groupName_fr": "Croiseur de bataille de combat", "groupName_it": "Combat Battlecruiser", "groupName_ja": "戦闘巡洋戦艦", "groupName_ko": "컴뱃 배틀크루저", "groupName_ru": "Линейный крейсер общего назначения", "groupName_zh": "战斗战列巡洋舰", "groupNameID": 63864, "iconID": 0, "published": 1, "useBasePrice": 0 }, "420": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 420, "groupName_de": "Destroyer", "groupName_en-us": "Destroyer", "groupName_es": "Destructor", "groupName_fr": "Destroyer", "groupName_it": "Destroyer", "groupName_ja": "駆逐艦", "groupName_ko": "디스트로이어", "groupName_ru": "Эсминец", "groupName_zh": "驱逐舰", "groupNameID": 63865, "iconID": 0, "published": 1, "useBasePrice": 0 }, "422": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 422, "groupName_de": "Gasisotope", "groupName_en-us": "Gas Isotopes", "groupName_es": "Isótopos de gas", "groupName_fr": "Isotopes gazeux", "groupName_it": "Gas Isotopes", "groupName_ja": "ガス同位体", "groupName_ko": "기체 동위원소", "groupName_ru": "Изотопы газа", "groupName_zh": "气体同位素", "groupNameID": 63866, "iconID": 0, "published": 0, "useBasePrice": 0 }, "423": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 423, "groupName_de": "Eisprodukt", "groupName_en-us": "Ice Product", "groupName_es": "Producto de hielo", "groupName_fr": "Produit glaciaire", "groupName_it": "Ice Product", "groupName_ja": "アイス精製物", "groupName_ko": "아이스 자원", "groupName_ru": "Замерзшие вещества", "groupName_zh": "冰矿产物", "groupNameID": 63867, "iconID": 0, "published": 1, "useBasePrice": 1 }, "425": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 425, "groupName_de": "Orbitale Angriffseinheit", "groupName_en-us": "Orbital Assault Unit", "groupName_es": "Unidad de asalto orbital", "groupName_fr": "Unité d'assaut orbitale", "groupName_it": "Orbital Assault Unit", "groupName_ja": "周回軌道アサルトユニット", "groupName_ko": "궤도 강습 유닛", "groupName_ru": "Ударная орбитальная система", "groupName_zh": "轨道攻击单位", "groupNameID": 63868, "iconID": 0, "published": 0, "useBasePrice": 0 }, "426": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 426, "groupName_de": "Mobiler Projektil-Wachposten", "groupName_en-us": "Mobile Projectile Sentry", "groupName_es": "Centinela de proyectiles móviles", "groupName_fr": "Sentinelle à projectiles mobile", "groupName_it": "Mobile Projectile Sentry", "groupName_ja": "移動型プロジェクタイルセントリー", "groupName_ko": "이동식 발사체 센트리", "groupName_ru": "Передвижное автоматическое огнестрельное орудие", "groupName_zh": "移动式射弹岗哨炮", "groupNameID": 63869, "iconID": 0, "published": 1, "useBasePrice": 1 }, "427": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 427, "groupName_de": "Mondmaterialien", "groupName_en-us": "Moon Materials", "groupName_es": "Materiales lunares", "groupName_fr": "Matières lunaires", "groupName_it": "Moon Materials", "groupName_ja": "衛星資源", "groupName_ko": "위성 자원", "groupName_ru": "Материалы спутника", "groupName_zh": "卫星原料", "groupNameID": 63870, "iconID": 0, "published": 1, "useBasePrice": 1 }, "428": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 428, "groupName_de": "Mittlere Materialien", "groupName_en-us": "Intermediate Materials", "groupName_es": "Materiales intermedios", "groupName_fr": "Matériaux intermédiaires", "groupName_it": "Intermediate Materials", "groupName_ja": "中間生成原料", "groupName_ko": "중간재", "groupName_ru": "Полуфабрикаты", "groupName_zh": "中间产物", "groupNameID": 63871, "iconID": 0, "published": 1, "useBasePrice": 1 }, "429": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 429, "groupName_de": "Verbundstoff", "groupName_en-us": "Composite", "groupName_es": "Compuesto", "groupName_fr": "Composé", "groupName_it": "Composite", "groupName_ja": "化合物", "groupName_ko": "복합재", "groupName_ru": "Композитные вещества", "groupName_zh": "合成物", "groupNameID": 63872, "iconID": 0, "published": 1, "useBasePrice": 1 }, "430": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 430, "groupName_de": "Mobiler Laser-Wachposten", "groupName_en-us": "Mobile Laser Sentry", "groupName_es": "Centinela láser móvil", "groupName_fr": "Sentinelle à laser mobile", "groupName_it": "Mobile Laser Sentry", "groupName_ja": "移動式レーザーセントリー", "groupName_ko": "이동식 레이저 센트리", "groupName_ru": "Передвижное автоматическое лазерное орудие", "groupName_zh": "移动式激光岗哨炮", "groupNameID": 63873, "iconID": 0, "published": 1, "useBasePrice": 1 }, "435": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 435, "groupName_de": "Raumverwerfungsaufseher", "groupName_en-us": "Deadspace Overseer", "groupName_es": "Vigilante del espacio muerto", "groupName_fr": "Surveillant Deadspace", "groupName_it": "Deadspace Overseer", "groupName_ja": "デッドスペース監督者", "groupName_ko": "데드스페이스 오버시어", "groupName_ru": "Смотритель дэдспейса", "groupName_zh": "死亡空间监视者", "groupNameID": 63874, "iconID": 0, "published": 0, "useBasePrice": 0 }, "436": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 436, "groupName_de": "Einfache Reaktion", "groupName_en-us": "Simple Reaction", "groupName_es": "Reacción simple", "groupName_fr": "Réaction simple", "groupName_it": "Simple Reaction", "groupName_ja": "単体反応", "groupName_ko": "단순 합성", "groupName_ru": "Простая реакция", "groupName_zh": "简单反应", "groupNameID": 63875, "iconID": 2665, "published": 1, "useBasePrice": 1 }, "438": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 438, "groupName_de": "Mobiler Reaktor", "groupName_en-us": "Mobile Reactor", "groupName_es": "Reactor móvil", "groupName_fr": "Réacteur mobile", "groupName_it": "Mobile Reactor", "groupName_ja": "移動型リアクター", "groupName_ko": "이동식 반응로", "groupName_ru": "Передвижной реактор", "groupName_zh": "移动反应堆", "groupNameID": 63876, "iconID": 0, "published": 1, "useBasePrice": 1 }, "439": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 439, "groupName_de": "Batterie zur elektronischen Kriegsführung", "groupName_en-us": "Electronic Warfare Battery", "groupName_es": "Batería de guerra electrónica", "groupName_fr": "Batterie de guerre électronique", "groupName_it": "Electronic Warfare Battery", "groupName_ja": "電子戦兵器", "groupName_ko": "전자전 포탑", "groupName_ru": "Батарея электронного противодействия", "groupName_zh": "电子战炮台", "groupNameID": 63877, "iconID": 0, "published": 1, "useBasePrice": 1 }, "440": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 440, "groupName_de": "Sensordämpfungsbatterie", "groupName_en-us": "Sensor Dampening Battery", "groupName_es": "Batería de atenuación de sensores", "groupName_fr": "Batterie d'atténuation de détection", "groupName_it": "Sensor Dampening Battery", "groupName_ja": "センサーダンプニングバッテリー", "groupName_ko": "센서 교란 타워", "groupName_ru": "Батарея подавления сенсорных систем", "groupName_zh": "感应抑阻波发射台", "groupNameID": 63878, "iconID": 0, "published": 1, "useBasePrice": 1 }, "441": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 441, "groupName_de": "Stasisnetz-Batterie", "groupName_en-us": "Stasis Webification Battery", "groupName_es": "Batería de red ralentizadora", "groupName_fr": "Batterie génératrice de stase", "groupName_it": "Stasis Webification Battery", "groupName_ja": "ステイシスウェビフェケーションバッテリー", "groupName_ko": "스테이시스 웹 타워", "groupName_ru": "Батарея генерации стазис-сети", "groupName_zh": "停滞网状光束发射台", "groupNameID": 63879, "iconID": 0, "published": 1, "useBasePrice": 1 }, "443": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 443, "groupName_de": "Warpstörbatterie", "groupName_en-us": "Warp Scrambling Battery", "groupName_es": "Batería de distorsionador de warp", "groupName_fr": "Batterie de brouillage de warp", "groupName_it": "Warp Scrambling Battery", "groupName_ja": "ワープスクランブルバッテリー", "groupName_ko": "워프 스크램블 타워", "groupName_ru": "Батарея глушения квантовых двигателей", "groupName_zh": "跃迁扰频波发射台", "groupNameID": 63880, "iconID": 0, "published": 1, "useBasePrice": 1 }, "444": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 444, "groupName_de": "Schildhärtungsanlage", "groupName_en-us": "Shield Hardening Array", "groupName_es": "Plataforma endurecedora de escudo", "groupName_fr": "Module de renforcement de bouclier", "groupName_it": "Shield Hardening Array", "groupName_ja": "シールドハードニング施設", "groupName_ko": "실드 강화시설", "groupName_ru": "Комплекс усиления щита", "groupName_zh": "护盾强化阵列", "groupNameID": 63881, "iconID": 0, "published": 1, "useBasePrice": 1 }, "445": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 445, "groupName_de": "Kraftfeldanlage", "groupName_en-us": "Force Field Array", "groupName_es": "Plataforma de campo de fuerza", "groupName_fr": "Module de champ de force", "groupName_it": "Force Field Array", "groupName_ja": "フォースフィールド施設", "groupName_ko": "포스필드 시설", "groupName_ru": "Генератор силового поля", "groupName_zh": "力场阵列", "groupNameID": 63882, "iconID": 0, "published": 0, "useBasePrice": 1 }, "446": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 446, "groupName_de": "Zollbeamter", "groupName_en-us": "Customs Official", "groupName_es": "Oficial de Aduanas", "groupName_fr": "Officier des douanes", "groupName_it": "Customs Official", "groupName_ja": "税関職員", "groupName_ko": "세관 관계자", "groupName_ru": "Сотрудник таможни", "groupName_zh": "海关公务船", "groupNameID": 63883, "iconID": 0, "published": 0, "useBasePrice": 0 }, "447": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 447, "groupName_de": "Konstruktionskomponenten-Blueprints", "groupName_en-us": "Construction Component Blueprints", "groupName_es": "Planos de componentes de construcción", "groupName_fr": "Plans de construction Élément de construction", "groupName_it": "Construction Component Blueprints", "groupName_ja": "建設資材ブループリント", "groupName_ko": "생산 부품 블루프린트", "groupName_ru": "Чертежи производственных компонентов", "groupName_zh": "建造组件蓝图", "groupNameID": 63884, "published": 1, "useBasePrice": 1 }, "448": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 448, "groupName_de": "Audit-Log-Sicherheitscontainer", "groupName_en-us": "Audit Log Secure Container", "groupName_es": "Contenedor seguro del registro de auditoría", "groupName_fr": "Conteneur sécurisé de journaux d'audit", "groupName_it": "Audit Log Secure Container", "groupName_ja": "監査ログセキュアコンテナ", "groupName_ko": "암호화 컨테이너", "groupName_ru": "Защищенный контейнер с контролем доступа", "groupName_zh": "审计安全密码集装箱", "groupNameID": 63885, "published": 1, "useBasePrice": 1 }, "449": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 449, "groupName_de": "Mobiler Hybrid-Wachposten", "groupName_en-us": "Mobile Hybrid Sentry", "groupName_es": "Centinela híbrido móvil", "groupName_fr": "Sentinelle hybride mobile", "groupName_it": "Mobile Hybrid Sentry", "groupName_ja": "移動式ハイブリッドセントリー", "groupName_ko": "이동식 하이브리드 센트리", "groupName_ru": "Передвижное автоматическое орудие гибридного действия", "groupName_zh": "移动式混合岗哨炮", "groupNameID": 63886, "iconID": 0, "published": 1, "useBasePrice": 1 }, "450": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 450, "groupName_de": "Arkonor", "groupName_en-us": "Arkonor", "groupName_es": "Arkonor", "groupName_fr": "Arkonor", "groupName_it": "Arkonor", "groupName_ja": "アーコナー", "groupName_ko": "아르카노르", "groupName_ru": "Arkonor", "groupName_zh": "艾克诺岩", "groupNameID": 63887, "iconID": 15, "published": 1, "useBasePrice": 0 }, "451": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 451, "groupName_de": "Bistot", "groupName_en-us": "Bistot", "groupName_es": "Bistotina", "groupName_fr": "Bistot", "groupName_it": "Bistot", "groupName_ja": "ビストット", "groupName_ko": "비스토트", "groupName_ru": "Bistot", "groupName_zh": "双多特石", "groupNameID": 63888, "iconID": 15, "published": 1, "useBasePrice": 0 }, "452": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 452, "groupName_de": "Crokite", "groupName_en-us": "Crokite", "groupName_es": "Crokitio", "groupName_fr": "Crokite", "groupName_it": "Crokite", "groupName_ja": "クロカイト", "groupName_ko": "크로카이트", "groupName_ru": "Crokite", "groupName_zh": "克洛基石", "groupNameID": 63889, "iconID": 15, "published": 1, "useBasePrice": 0 }, "453": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 453, "groupName_de": "Dark Ochre", "groupName_en-us": "Dark Ochre", "groupName_es": "Ocre oscuro", "groupName_fr": "Ochre foncé", "groupName_it": "Dark Ochre", "groupName_ja": "ダークオークル", "groupName_ko": "다크 오커", "groupName_ru": "Dark Ochre", "groupName_zh": "黑赭石", "groupNameID": 63890, "iconID": 15, "published": 1, "useBasePrice": 0 }, "454": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 454, "groupName_de": "Hedbergite", "groupName_en-us": "Hedbergite", "groupName_es": "Hedbergita", "groupName_fr": "Hedbergite", "groupName_it": "Hedbergite", "groupName_ja": "ヘッドバーガイト", "groupName_ko": "헤버자이트", "groupName_ru": "Hedbergite", "groupName_zh": "同位原矿", "groupNameID": 63891, "iconID": 15, "published": 1, "useBasePrice": 0 }, "455": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 455, "groupName_de": "Hemorphite", "groupName_en-us": "Hemorphite", "groupName_es": "Hemorfita", "groupName_fr": "Hemorphite", "groupName_it": "Hemorphite", "groupName_ja": "ヘモファイト", "groupName_ko": "헤모르파이트", "groupName_ru": "Hemorphite", "groupName_zh": "希莫非特", "groupNameID": 63892, "iconID": 15, "published": 1, "useBasePrice": 0 }, "456": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 456, "groupName_de": "Jaspet", "groupName_en-us": "Jaspet", "groupName_es": "Jaspetita", "groupName_fr": "Jaspet", "groupName_it": "Jaspet", "groupName_ja": "ジャスペット", "groupName_ko": "자스페트", "groupName_ru": "Jaspet", "groupName_zh": "杰斯贝矿", "groupNameID": 63893, "iconID": 15, "published": 1, "useBasePrice": 0 }, "457": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 457, "groupName_de": "Kernite", "groupName_en-us": "Kernite", "groupName_es": "Kernita", "groupName_fr": "Kernite", "groupName_it": "Kernite", "groupName_ja": "ケルナイト", "groupName_ko": "커나이트", "groupName_ru": "Kernite", "groupName_zh": "水硼砂", "groupNameID": 63894, "iconID": 15, "published": 1, "useBasePrice": 0 }, "458": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 458, "groupName_de": "Plagioclase", "groupName_en-us": "Plagioclase", "groupName_es": "Plagioclasa", "groupName_fr": "Plagioclase", "groupName_it": "Plagioclase", "groupName_ja": "プラジオクレイス", "groupName_ko": "플레지오클레이스", "groupName_ru": "Plagioclase", "groupName_zh": "斜长岩", "groupNameID": 63895, "iconID": 15, "published": 1, "useBasePrice": 0 }, "459": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 459, "groupName_de": "Pyroxeres", "groupName_en-us": "Pyroxeres", "groupName_es": "Piroxeno", "groupName_fr": "Pyroxeres", "groupName_it": "Pyroxeres", "groupName_ja": "パイロゼリース", "groupName_ko": "파이로제레스", "groupName_ru": "Pyroxeres", "groupName_zh": "干焦岩", "groupNameID": 63896, "iconID": 15, "published": 1, "useBasePrice": 0 }, "460": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 460, "groupName_de": "Scordite", "groupName_en-us": "Scordite", "groupName_es": "Escordita", "groupName_fr": "Scordite", "groupName_it": "Scordite", "groupName_ja": "スコダイト", "groupName_ko": "스코다이트", "groupName_ru": "Scordite", "groupName_zh": "灼烧岩", "groupNameID": 63897, "iconID": 15, "published": 1, "useBasePrice": 0 }, "461": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 461, "groupName_de": "Spodumain", "groupName_en-us": "Spodumain", "groupName_es": "Espodumain", "groupName_fr": "Spodumain", "groupName_it": "Spodumain", "groupName_ja": "スポデュメイン", "groupName_ko": "스포듀마인", "groupName_ru": "Spodumain", "groupName_zh": "灰岩", "groupNameID": 63898, "iconID": 15, "published": 1, "useBasePrice": 0 }, "462": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 462, "groupName_de": "Veldspar", "groupName_en-us": "Veldspar", "groupName_es": "Veldspar", "groupName_fr": "Veldspar", "groupName_it": "Veldspar", "groupName_ja": "ベルドスパー", "groupName_ko": "벨드스파", "groupName_ru": "Veldspar", "groupName_zh": "凡晶石", "groupNameID": 63899, "iconID": 15, "published": 1, "useBasePrice": 0 }, "463": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 463, "groupName_de": "Bergbaubarkasse", "groupName_en-us": "Mining Barge", "groupName_es": "Gabarra minera", "groupName_fr": "Barge d'extraction", "groupName_it": "Mining Barge", "groupName_ja": "採掘艦", "groupName_ko": "채광선", "groupName_ru": "Буровой корабль", "groupName_zh": "采矿驳船", "groupNameID": 63900, "iconID": 0, "published": 1, "useBasePrice": 0 }, "464": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 464, "groupName_de": "Strip-Miner", "groupName_en-us": "Strip Miner", "groupName_es": "extractor minero", "groupName_fr": "Laser d'extraction intensive", "groupName_it": "Strip Miner", "groupName_ja": "ストリップマイナー", "groupName_ko": "가속 채굴기", "groupName_ru": "Буровой лазер валовой выемки", "groupName_zh": "露天采矿器", "groupNameID": 63901, "iconID": 0, "published": 1, "useBasePrice": 0 }, "465": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 465, "groupName_de": "Eis", "groupName_en-us": "Ice", "groupName_es": "Hielo", "groupName_fr": "Glace", "groupName_it": "Ice", "groupName_ja": "アイス", "groupName_ko": "얼음", "groupName_ru": "Лед", "groupName_zh": "冰矿", "groupNameID": 63902, "iconID": 15, "published": 1, "useBasePrice": 0 }, "467": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 467, "groupName_de": "Gneiss", "groupName_en-us": "Gneiss", "groupName_es": "Gneiss", "groupName_fr": "Gneiss", "groupName_it": "Gneiss", "groupName_ja": "ナエス", "groupName_ko": "니스", "groupName_ru": "Gneiss", "groupName_zh": "片麻岩", "groupNameID": 63903, "iconID": 15, "published": 1, "useBasePrice": 0 }, "468": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 468, "groupName_de": "Mercoxit", "groupName_en-us": "Mercoxit", "groupName_es": "Mercoxita", "groupName_fr": "Mercoxit", "groupName_it": "Mercoxit", "groupName_ja": "メロコキサイト", "groupName_ko": "메르코시트", "groupName_ru": "Mercoxit", "groupName_zh": "基腹断岩", "groupNameID": 63904, "iconID": 15, "published": 1, "useBasePrice": 0 }, "469": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 469, "groupName_de": "Omber", "groupName_en-us": "Omber", "groupName_es": "Ómber", "groupName_fr": "Omber", "groupName_it": "Omber", "groupName_ja": "オンバー", "groupName_ko": "옴버", "groupName_ru": "Omber", "groupName_zh": "奥贝尔石", "groupNameID": 63905, "iconID": 15, "published": 1, "useBasePrice": 0 }, "470": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 470, "groupName_de": "Entankernde Drohne", "groupName_en-us": "Unanchoring Drone", "groupName_es": "Dron desanclador", "groupName_fr": "Drone de désamarrage", "groupName_it": "Unanchoring Drone", "groupName_ja": "係留解除ドローン", "groupName_ko": "고정 해제용 드론", "groupName_ru": "Якорный дрон", "groupName_zh": "反悬浮定位无人机", "groupNameID": 63906, "iconID": 0, "published": 0, "useBasePrice": 0 }, "471": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 471, "groupName_de": "Corporation-Hangar-Struktur", "groupName_en-us": "Corporate Hangar Array", "groupName_es": "Dársenas de hangares corporativos", "groupName_fr": "Module du hangar corporatif", "groupName_it": "Corporate Hangar Array", "groupName_ja": "コーポハンガー施設", "groupName_ko": "코퍼레이션 공용 창고", "groupName_ru": "Внешний корпоративный ангар", "groupName_zh": "联合机库阵列", "groupNameID": 63907, "iconID": 0, "published": 1, "useBasePrice": 1 }, "472": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 472, "groupName_de": "Systemscanner", "groupName_en-us": "System Scanner", "groupName_es": "Escáner de sistemas", "groupName_fr": "Scanner système", "groupName_it": "System Scanner", "groupName_ja": "システムスキャナー", "groupName_ko": "항성계 스캐너", "groupName_ru": "Сканер систем", "groupName_zh": "星系扫描仪", "groupNameID": 63908, "iconID": 0, "published": 1, "useBasePrice": 0 }, "473": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 473, "groupName_de": "Nachführarray", "groupName_en-us": "Tracking Array", "groupName_es": "Sistema de rastreo", "groupName_fr": "Module de poursuite", "groupName_it": "Tracking Array", "groupName_ja": "トラッキング施設", "groupName_ko": "추적 시설", "groupName_ru": "Система слежения", "groupName_zh": "索敌天线阵列", "groupNameID": 63909, "iconID": 0, "published": 1, "useBasePrice": 1 }, "474": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 474, "groupName_de": "Beschleunigungstor-Schlüssel", "groupName_en-us": "Acceleration Gate Keys", "groupName_es": "Llaves de portal de aceleración", "groupName_fr": "Clés du portail d'accélération", "groupName_it": "Acceleration Gate Keys", "groupName_ja": "アクセラレーションゲートキー", "groupName_ko": "액셀레이션 게이트 출입키", "groupName_ru": "Ключ от разгонных ворот", "groupName_zh": "加速轨道钥匙", "groupNameID": 63910, "iconID": 0, "published": 1, "useBasePrice": 1 }, "475": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 475, "groupName_de": "Mikrowarpantrieb", "groupName_en-us": "Microwarpdrive", "groupName_es": "Motor de microwarp", "groupName_fr": "Propulseur de microwarp", "groupName_it": "Microwarpdrive", "groupName_ja": "マイクロワープドライブ", "groupName_ko": "마이크로 워프 드라이브", "groupName_ru": "Микроварп-ускоритель", "groupName_zh": "微型跃迁推进器", "groupNameID": 63911, "iconID": 96, "published": 0, "useBasePrice": 0 }, "476": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 476, "groupName_de": "XL Torpedo", "groupName_en-us": "XL Torpedo", "groupName_es": "Torpedo (XL)", "groupName_fr": "Torpille XL", "groupName_it": "XL Torpedo", "groupName_ja": "XLトルピード", "groupName_ko": "XL 토피도", "groupName_ru": "Торпеды сверхбольшой мощности", "groupName_zh": "超大型鱼雷", "groupNameID": 63912, "iconID": 1349, "published": 1, "useBasePrice": 0 }, "477": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 477, "groupName_de": "Bergbaubarkasse-Blueprint", "groupName_en-us": "Mining Barge Blueprint", "groupName_es": "Plano de gabarra minera", "groupName_fr": "Plan de construction Barge d'extraction", "groupName_it": "Mining Barge Blueprint", "groupName_ja": "採掘艦ブループリント", "groupName_ko": "채광선 블루프린트", "groupName_ru": "Чертежи бурового корабля", "groupName_zh": "采矿船蓝图", "groupNameID": 63913, "iconID": 0, "published": 1, "useBasePrice": 1 }, "478": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 478, "groupName_de": "Systemscanner-Blueprint", "groupName_en-us": "System Scanner Blueprint", "groupName_es": "Plano de escáner de sistemas", "groupName_fr": "Plan de construction Scanner système", "groupName_it": "System Scanner Blueprint", "groupName_ja": "システムスキャナーブループリント", "groupName_ko": "항성계 스캐너 블루프린트", "groupName_ru": "Чертеж сканера систем", "groupName_zh": "星系扫描仪蓝图", "groupNameID": 63914, "iconID": 0, "published": 1, "useBasePrice": 0 }, "479": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 479, "groupName_de": "Scansonde", "groupName_en-us": "Scanner Probe", "groupName_es": "Sonda escáner", "groupName_fr": "Sonde d'exploration", "groupName_it": "Scanner Probe", "groupName_ja": "スキャナープローブ", "groupName_ko": "스캔 프로브", "groupName_ru": "Разведывательный зонд", "groupName_zh": "扫描探针", "groupNameID": 63915, "iconID": 2222, "published": 1, "useBasePrice": 0 }, "480": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 480, "groupName_de": "Tarnkappensendeanlage", "groupName_en-us": "Stealth Emitter Array", "groupName_es": "Sistema emisor sigiloso", "groupName_fr": "Module d'émission furtif", "groupName_it": "Stealth Emitter Array", "groupName_ja": "ステルスエミッター施設", "groupName_ko": "스텔스 방사 시설", "groupName_ru": "Система маскировки", "groupName_zh": "反侦测发射天线阵列", "groupNameID": 63916, "iconID": 0, "published": 0, "useBasePrice": 0 }, "481": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 481, "groupName_de": "Startvorrichtung für Scansonden", "groupName_en-us": "Scan Probe Launcher", "groupName_es": "Lanzasondas de escaneo", "groupName_fr": "Lanceur de sonde de balayage", "groupName_it": "Scan Probe Launcher", "groupName_ja": "スキャンプローブランチャー", "groupName_ko": "스캔 프로브 런처", "groupName_ru": "Пусковая установка разведзондов", "groupName_zh": "扫描探针发射器", "groupNameID": 63917, "iconID": 2677, "published": 1, "useBasePrice": 0 }, "482": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 482, "groupName_de": "Bergbaukristall", "groupName_en-us": "Mining Crystal", "groupName_es": "Cristal de minería", "groupName_fr": "Cristal d'extraction", "groupName_it": "Mining Crystal", "groupName_ja": "採掘クリスタル", "groupName_ko": "채광용 크리스탈", "groupName_ru": "Кристалл настройки экстрактора", "groupName_zh": "采矿晶体", "groupNameID": 63918, "iconID": 24968, "published": 1, "useBasePrice": 0 }, "483": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 483, "groupName_de": "Frequenz-Bergbaulaser", "groupName_en-us": "Frequency Mining Laser", "groupName_es": "Láser minero de frecuencia", "groupName_fr": "Laser d'extraction à fréquences", "groupName_it": "Frequency Mining Laser", "groupName_ja": "周波数可変式採掘レーザー", "groupName_ko": "프리퀀시 채굴 레이저", "groupName_ru": "Мультичастотный экстрактор", "groupName_zh": "频率采矿激光器", "groupNameID": 63919, "iconID": 138, "published": 1, "useBasePrice": 0 }, "484": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 484, "groupName_de": "Komplexreaktionen", "groupName_en-us": "Complex Reactions", "groupName_es": "Reacciones complejas", "groupName_fr": "Réactions complexes", "groupName_it": "Complex Reactions", "groupName_ja": "複合反応", "groupName_ko": "복합 합성", "groupName_ru": "Сложные реакции", "groupName_zh": "复杂反应", "groupNameID": 63920, "iconID": 2666, "published": 1, "useBasePrice": 1 }, "485": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 485, "groupName_de": "Dreadnought", "groupName_en-us": "Dreadnought", "groupName_es": "Superacorazado", "groupName_fr": "Dreadnought", "groupName_it": "Dreadnought", "groupName_ja": "攻城艦", "groupName_ko": "드레드노트", "groupName_ru": "Дредноут", "groupName_zh": "无畏舰", "groupNameID": 63921, "iconID": 0, "published": 1, "useBasePrice": 0 }, "486": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 486, "groupName_de": "Scansonde-Blueprint", "groupName_en-us": "Scan Probe Blueprint", "groupName_es": "Plano de sonda de escaneo", "groupName_fr": "Plan de construction Sonde de balayage", "groupName_it": "Scan Probe Blueprint", "groupName_ja": "スキャンプローブブループリント", "groupName_ko": "스캔 프로브 블루프린트", "groupName_ru": "Чертежи разведывательного зонда", "groupName_zh": "扫描探针蓝图", "groupNameID": 63922, "iconID": 0, "published": 1, "useBasePrice": 1 }, "487": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 487, "groupName_de": "Zerstörer-Blueprint", "groupName_en-us": "Destroyer Blueprint", "groupName_es": "Plano de destructor", "groupName_fr": "Plan de construction Destroyer", "groupName_it": "Destroyer Blueprint", "groupName_ja": "駆逐艦ブループリント", "groupName_ko": "디스트로이어 블루프린트", "groupName_ru": "Чертежи эсминца", "groupName_zh": "驱逐舰蓝图", "groupNameID": 63923, "iconID": 0, "published": 1, "useBasePrice": 1 }, "489": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 489, "groupName_de": "Schlachtkreuzer-Blueprint", "groupName_en-us": "Battlecruiser Blueprint", "groupName_es": "Plano de crucero de combate", "groupName_fr": "Plan de construction Croiseur de bataille", "groupName_it": "Battlecruiser Blueprint", "groupName_ja": "巡洋戦艦ブループリント", "groupName_ko": "배틀크루저 블루프린트", "groupName_ru": "Чертежи линейного крейсера", "groupName_zh": "战列巡洋舰蓝图", "groupNameID": 63924, "iconID": 0, "published": 1, "useBasePrice": 1 }, "490": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 490, "groupName_de": "Strip-Miner-Blueprint", "groupName_en-us": "Strip Miner Blueprint", "groupName_es": "Plano de extractor minero", "groupName_fr": "Plan de construction Laser d'extraction intensive", "groupName_it": "Strip Miner Blueprint", "groupName_ja": "ストリップマイナー設計図", "groupName_ko": "가속 채굴기 블루프린트", "groupName_ru": "Чертежи бурового лазера валовой выемки", "groupName_zh": "露天采矿器蓝图", "groupNameID": 63925, "iconID": 0, "published": 1, "useBasePrice": 1 }, "492": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 492, "groupName_de": "Überwachungssonde", "groupName_en-us": "Survey Probe", "groupName_es": "Sonda de prospección", "groupName_fr": "Sonde d'inspection", "groupName_it": "Survey Probe", "groupName_ja": "衛星調査プローブ", "groupName_ko": "조사 프로브", "groupName_ru": "Лунный зонд", "groupName_zh": "测量探针", "groupNameID": 64298, "iconID": 2663, "published": 1, "useBasePrice": 1 }, "493": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 493, "groupName_de": "Persönliche Rangabzeichen eines Overseer", "groupName_en-us": "Overseer Personal Effects", "groupName_es": "Efectos personales de vigilante", "groupName_fr": "Effets personnels du surveillant", "groupName_it": "Overseer Personal Effects", "groupName_ja": "監督者の私物", "groupName_ko": "오버시어 개인 소지품", "groupName_ru": "Личные вещи смотрителя", "groupName_zh": "监察官的个人财产", "groupNameID": 63926, "iconID": 0, "published": 1, "useBasePrice": 1 }, "494": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 494, "groupName_de": "Raumverwerfungsaufseher-Struktur", "groupName_en-us": "Deadspace Overseer's Structure", "groupName_es": "Estructura de vigilante del espacio muerto", "groupName_fr": "Structure du surveillant de Deadspace", "groupName_it": "Deadspace Overseer's Structure", "groupName_ja": "デッドスペース監督建造物", "groupName_ko": "데드스페이스 오버시어의 구조물", "groupName_ru": "База смотрителя дэдспейса", "groupName_zh": "死亡空间监察官的建筑", "groupNameID": 63927, "iconID": 0, "published": 0, "useBasePrice": 0 }, "495": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 495, "groupName_de": "Raumverwerfungsaufseher-Wachposten", "groupName_en-us": "Deadspace Overseer's Sentry", "groupName_es": "Centinela de vigilante del espacio muerto", "groupName_fr": "Sentinelle du surveillant de Deadspace", "groupName_it": "Deadspace Overseer's Sentry", "groupName_ja": "デッドスペース監督セントリー", "groupName_ko": "데드스페이스 오버시어의 센트리", "groupName_ru": "Стража смотрителя дэдспейса", "groupName_zh": "死亡空间监视者岗哨", "groupNameID": 63928, "iconID": 0, "published": 0, "useBasePrice": 0 }, "496": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 496, "groupName_de": "Besitz des Raumverwerfungsaufsehers", "groupName_en-us": "Deadspace Overseer's Belongings", "groupName_es": "Pertenencias de vigilante del espacio muerto", "groupName_fr": "Objets du surveillant de Deadspace", "groupName_it": "Deadspace Overseer's Belongings", "groupName_ja": "デッドスペース監督所持品", "groupName_ko": "데드스페이스 오버시어의 소유물", "groupName_ru": "Имущество смотрителя дэдспейса", "groupName_zh": "死亡空间监视者的物品", "groupNameID": 63929, "iconID": 0, "published": 0, "useBasePrice": 0 }, "497": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 497, "groupName_de": "Treibstoff", "groupName_en-us": "Fuel", "groupName_es": "Combustible", "groupName_fr": "Carburant", "groupName_it": "Fuel", "groupName_ja": "燃料", "groupName_ko": "연료", "groupName_ru": "Топливо", "groupName_zh": "燃剂", "groupNameID": 63930, "iconID": 0, "published": 0, "useBasePrice": 0 }, "498": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 498, "groupName_de": "Modifikationen", "groupName_en-us": "Modifications", "groupName_es": "Modificaciones", "groupName_fr": "Modifications", "groupName_it": "Modifications", "groupName_ja": "改造", "groupName_ko": "리그", "groupName_ru": "Модификации", "groupName_zh": "管理系统", "groupNameID": 63931, "iconID": 0, "published": 0, "useBasePrice": 0 }, "499": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 499, "groupName_de": "Neues EW-Testen", "groupName_en-us": "New EW Testing", "groupName_es": "Nuevas pruebas de EW", "groupName_fr": "Nouveau test GE", "groupName_it": "New EW Testing", "groupName_ja": "新EWテスト用", "groupName_ko": "신규 전자전 테스트", "groupName_ru": "Испытание нового электронного оружия", "groupName_zh": "新电子战测试", "groupNameID": 63932, "iconID": 0, "published": 0, "useBasePrice": 0 }, "500": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 500, "groupName_de": "Festivalladungen", "groupName_en-us": "Festival Charges", "groupName_es": "Cargas de festival", "groupName_fr": "Charges de festival", "groupName_it": "Festival Charges", "groupName_ja": "フェスティバル弾", "groupName_ko": "축제 폭죽", "groupName_ru": "Фестивальные снаряды", "groupName_zh": "节日弹药", "groupNameID": 63933, "iconID": 0, "published": 1, "useBasePrice": 0 }, "501": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 501, "groupName_de": "Festivalwerfer", "groupName_en-us": "Festival Launcher", "groupName_es": "Lanzador festivalero", "groupName_fr": "Lanceur de festival", "groupName_it": "Festival Launcher", "groupName_ja": "フェスティバルランチャー", "groupName_ko": "축제용 런처", "groupName_ru": "Салютная пусковая установка", "groupName_zh": "节日发射器", "groupNameID": 63934, "iconID": 0, "published": 1, "useBasePrice": 0 }, "502": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 502, "groupName_de": "Kosmische Signatur", "groupName_en-us": "Cosmic Signature", "groupName_es": "Señal cósmica", "groupName_fr": "Signature cosmique", "groupName_it": "Cosmic Signature", "groupName_ja": "宇宙のシグネチャ", "groupName_ko": "코즈믹 시그니처", "groupName_ru": "Скрытый сигнал", "groupName_zh": "空间信号", "groupNameID": 63935, "iconID": 0, "published": 0, "useBasePrice": 0 }, "503": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 503, "groupName_de": "Elite-Transporter-Blaupause", "groupName_en-us": "Elite Hauler Blueprint", "groupName_es": "Plano de nave de mercancías de élite", "groupName_fr": "Plan de construction Cargo d'élite", "groupName_it": "Elite Hauler Blueprint", "groupName_ja": "エリートハウラー設計図", "groupName_ko": "엘리트 운반선 블루프린트", "groupName_ru": "Elite Hauler Blueprint", "groupName_zh": "精英运载舰蓝图", "groupNameID": 63936, "iconID": 0, "published": 1, "useBasePrice": 0 }, "504": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 504, "groupName_de": "Zielmarkierung-Blueprint", "groupName_en-us": "Target Painter Blueprint", "groupName_es": "Plano de revelador de objetivo", "groupName_fr": "Plan de construction Marqueur de cible", "groupName_it": "Target Painter Blueprint", "groupName_ja": "ターゲットペインターブループリント", "groupName_ko": "타겟 페인터 블루프린트", "groupName_ru": "Чертежи системы подсветки целей", "groupName_zh": "目标标记装置蓝图", "groupNameID": 63937, "iconID": 0, "published": 1, "useBasePrice": 1 }, "505": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 505, "groupName_de": "Täuschungsfertigkeiten", "groupName_en-us": "Fake Skills", "groupName_es": "Habilidades falsas", "groupName_fr": "Faux talents", "groupName_it": "Fake Skills", "groupName_ja": "フェイクスキル", "groupName_ko": "가짜 스킬", "groupName_ru": "Ложные навыки", "groupName_zh": "虚构技能", "groupNameID": 63938, "iconID": 0, "published": 0, "useBasePrice": 0 }, "506": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 506, "groupName_de": "Raketenwerfer: Cruise", "groupName_en-us": "Missile Launcher Cruise", "groupName_es": "Crucero de lanzamisiles", "groupName_fr": "Lance-missiles croisière", "groupName_it": "Missile Launcher Cruise", "groupName_ja": "ミサイルランチャー(クルーズ)", "groupName_ko": "크루즈 미사일 런처", "groupName_ru": "Пусковая установка ракет дальнего боя", "groupName_zh": "巡航导弹发射器", "groupNameID": 63939, "iconID": 2530, "published": 1, "useBasePrice": 0 }, "507": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 507, "groupName_de": "Raketenwerfer: Rocket", "groupName_en-us": "Missile Launcher Rocket", "groupName_es": "Cohete lanzamisiles", "groupName_fr": "Lance-missiles roquette", "groupName_it": "Missile Launcher Rocket", "groupName_ja": "ミサイルランチャー(ロケット)", "groupName_ko": "로켓 런처", "groupName_ru": "Пусковая установка ракет ближнего боя", "groupName_zh": "火箭发射器", "groupNameID": 63940, "iconID": 1345, "published": 1, "useBasePrice": 0 }, "508": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 508, "groupName_de": "Missile Launcher Torpedo", "groupName_en-us": "Missile Launcher Torpedo", "groupName_es": "Torpedo de lanzamisiles", "groupName_fr": "Lance-missiles torpille", "groupName_it": "Missile Launcher Torpedo", "groupName_ja": "ミサイルランチャー(トルピード)", "groupName_ko": "토피도 런처", "groupName_ru": "Торпедный аппарат", "groupName_zh": "鱼雷发射器", "groupNameID": 63941, "iconID": 170, "published": 1, "useBasePrice": 0 }, "509": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 509, "groupName_de": "Missile Launcher Light", "groupName_en-us": "Missile Launcher Light", "groupName_es": "Lanzamisiles ligero", "groupName_fr": "Lance-missiles léger", "groupName_it": "Missile Launcher Light", "groupName_ja": "ミサイルランチャー(ライト)", "groupName_ko": "라이트 미사일 런처", "groupName_ru": "Пусковая установка ракет малой мощности", "groupName_zh": "轻型导弹发射器", "groupNameID": 63942, "iconID": 168, "published": 1, "useBasePrice": 0 }, "510": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 510, "groupName_de": "Raketenwerfer: Schwer", "groupName_en-us": "Missile Launcher Heavy", "groupName_es": "Lanzamisiles pesado", "groupName_fr": "Lance-missiles lourd", "groupName_it": "Missile Launcher Heavy", "groupName_ja": "ミサイルランチャー(ヘビー)", "groupName_ko": "헤비 미사일 런처", "groupName_ru": "Пусковая установка ракет большой мощности", "groupName_zh": "重型导弹发射器", "groupNameID": 63943, "iconID": 169, "published": 1, "useBasePrice": 0 }, "511": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 511, "groupName_de": "Missile Launcher Rapid Light", "groupName_en-us": "Missile Launcher Rapid Light", "groupName_es": "Luz rápida de lanzamisiles", "groupName_fr": "Lance-missiles léger rapide", "groupName_it": "Missile Launcher Rapid Light", "groupName_ja": "ミサイルランチャー(高速ライト)", "groupName_ko": "급속 라이트 미사일 런처", "groupName_ru": "Скорострельная ПУ ракет малой мощности", "groupName_zh": "轻型快速导弹发射器", "groupNameID": 63944, "iconID": 1345, "published": 1, "useBasePrice": 0 }, "512": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 512, "groupName_de": "Raketenwerfer: Verteidiger", "groupName_en-us": "Missile Launcher Defender", "groupName_es": "Defensor de lanzamisiles", "groupName_fr": "Lance-missiles défenseur", "groupName_it": "Missile Launcher Defender", "groupName_ja": "ミサイルランチャー(防衛)", "groupName_ko": "디펜더 미사일 런처", "groupName_ru": "Пусковая установка противоракет", "groupName_zh": "反弹道导弹发射器", "groupNameID": 63945, "iconID": 0, "published": 1, "useBasePrice": 0 }, "513": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 513, "groupName_de": "Frachter", "groupName_en-us": "Freighter", "groupName_es": "Carguero", "groupName_fr": "Transport de fret", "groupName_it": "Freighter", "groupName_ja": "超大型輸送艦", "groupName_ko": "프레이터", "groupName_ru": "Фрейтер", "groupName_zh": "货舰", "groupNameID": 63946, "iconID": 0, "published": 1, "useBasePrice": 0 }, "514": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 514, "groupName_de": "ECM-Stabilisator", "groupName_en-us": "ECM Stabilizer", "groupName_es": "Estabilizador ECM", "groupName_fr": "Stabilisateur CME", "groupName_it": "ECM Stabilizer", "groupName_ja": "ECMスタビライザー", "groupName_ko": "ECM 안정기", "groupName_ru": "Стабилизатор РЭБ", "groupName_zh": "ECM稳定设备", "groupNameID": 63947, "iconID": 0, "published": 1, "useBasePrice": 0 }, "515": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 515, "groupName_de": "Belagerungsmodul", "groupName_en-us": "Siege Module", "groupName_es": "módulo de asedio", "groupName_fr": "Module de siège", "groupName_it": "Siege Module", "groupName_ja": "シージモジュール", "groupName_ko": "시즈모듈", "groupName_ru": "Реконфигуратор", "groupName_zh": "会战装备", "groupNameID": 63948, "iconID": 0, "published": 1, "useBasePrice": 0 }, "516": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 516, "groupName_de": "Belagerungsmodul-Blueprint", "groupName_en-us": "Siege Module Blueprint", "groupName_es": "Plano de módulo de asedio I", "groupName_fr": "Plan de construction Module de siège", "groupName_it": "Siege Module Blueprint", "groupName_ja": "シージモジュールブループリント", "groupName_ko": "시즈모듈 블루프린트", "groupName_ru": "Чертежи реконфигуратора", "groupName_zh": "会战设备蓝图", "groupNameID": 63949, "iconID": 0, "published": 1, "useBasePrice": 1 }, "517": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 517, "groupName_de": "Agenten im All", "groupName_en-us": "Agents in Space", "groupName_es": "Agentes en el espacio", "groupName_fr": "Agents dans l'espace", "groupName_it": "Agents in Space", "groupName_ja": "宙域にいるエージェント", "groupName_ko": "우주 공간 내 에이전트", "groupName_ru": "Агенты в космосе", "groupName_zh": "空间代理人", "groupNameID": 63950, "iconID": 0, "published": 0, "useBasePrice": 0 }, "518": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 518, "groupName_de": "Antiballistisches Verteidigungssystem", "groupName_en-us": "Anti Ballistic Defense System", "groupName_es": "Sistema de defensa antibalístico", "groupName_fr": "Système de défense anti-balistique", "groupName_it": "Anti Ballistic Defense System", "groupName_ja": "対弾道弾防衛システム", "groupName_ko": "대 미사일 방어 시스템", "groupName_ru": "Система ПРО", "groupName_zh": "反弹道防御系统", "groupNameID": 63951, "iconID": 0, "published": 0, "useBasePrice": 0 }, "519": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 519, "groupName_de": "Terraner-Artefakte", "groupName_en-us": "Terran Artifacts", "groupName_es": "Artefacto terranos", "groupName_fr": "Artefacts Terran", "groupName_it": "Terran Artifacts", "groupName_ja": "テラン人工物", "groupName_ko": "지구 유물", "groupName_ru": "Земные артефакты", "groupName_zh": "史前地球异物", "groupNameID": 63952, "iconID": 0, "published": 0, "useBasePrice": 1 }, "520": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 520, "groupName_de": "Storyline-Fregatte", "groupName_en-us": "Storyline Frigate", "groupName_es": "Fragata de la historia", "groupName_fr": "Frégate scénario", "groupName_it": "Storyline Frigate", "groupName_ja": "ストーリーラインフリゲート", "groupName_ko": "스토리라인 프리깃", "groupName_ru": "Фрегат особого назначения", "groupName_zh": "任务剧情护卫舰", "groupNameID": 63953, "iconID": 0, "published": 0, "useBasePrice": 0 }, "521": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 521, "groupName_de": "Identifikation", "groupName_en-us": "Identification", "groupName_es": "Identificación", "groupName_fr": "Identification", "groupName_it": "Identification", "groupName_ja": "認識証", "groupName_ko": "신분증", "groupName_ru": "Удостоверение", "groupName_zh": "识别卡", "groupNameID": 63954, "iconID": 0, "published": 1, "useBasePrice": 0 }, "522": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 522, "groupName_de": "Storyline-Kreuzer", "groupName_en-us": "Storyline Cruiser", "groupName_es": "Crucero de la historia", "groupName_fr": "Croiseur scénario", "groupName_it": "Storyline Cruiser", "groupName_ja": "ストーリーライン巡洋艦", "groupName_ko": "스토리라인 크루저", "groupName_ru": "Крейсер особого назначения", "groupName_zh": "任务剧情巡洋舰", "groupNameID": 63955, "iconID": 0, "published": 0, "useBasePrice": 0 }, "523": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 523, "groupName_de": "Storyline-Schlachtschiff", "groupName_en-us": "Storyline Battleship", "groupName_es": "Acorazado de la historia", "groupName_fr": "Cuirassé scénario", "groupName_it": "Storyline Battleship", "groupName_ja": "ストーリーライン戦艦", "groupName_ko": "스토리라인 배틀쉽", "groupName_ru": "Линкор особого назначения", "groupName_zh": "任务剧情战列舰", "groupNameID": 63956, "iconID": 0, "published": 0, "useBasePrice": 0 }, "524": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 524, "groupName_de": "Lenkwaffenwerfer: XL Torpedo", "groupName_en-us": "Missile Launcher XL Torpedo", "groupName_es": "Torpedo lanzamisiles (XL)", "groupName_fr": "Lance-missiles torpille XL", "groupName_it": "Missile Launcher XL Torpedo", "groupName_ja": "ミサイルランチャーXLトルピード", "groupName_ko": "미사일 런처 XL 토피도", "groupName_ru": "Торпедные аппараты сверхбольшой мощности", "groupName_zh": "超大型鱼雷发射器", "groupNameID": 63957, "iconID": 2839, "published": 1, "useBasePrice": 0 }, "525": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 525, "groupName_de": "Frachter-Blueprint", "groupName_en-us": "Freighter Blueprint", "groupName_es": "Plano de carguero", "groupName_fr": "Plan de construction Transport de fret", "groupName_it": "Freighter Blueprint", "groupName_ja": "超大型輸送艦ブループリント", "groupName_ko": "프레이터 블루프린트", "groupName_ru": "Чертежи фрейтера", "groupName_zh": "货舰蓝图", "groupNameID": 63958, "iconID": 0, "published": 1, "useBasePrice": 1 }, "526": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 526, "groupName_de": "Güter", "groupName_en-us": "Commodities", "groupName_es": "Mercancías", "groupName_fr": "Marchandises", "groupName_it": "Commodities", "groupName_ja": "加工品", "groupName_ko": "생산품", "groupName_ru": "Товары", "groupName_zh": "常见物品", "groupNameID": 63959, "iconID": 0, "published": 1, "useBasePrice": 0 }, "527": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 527, "groupName_de": "Storyline-Missionsfregatte", "groupName_en-us": "Storyline Mission Frigate", "groupName_es": "Fragata de misión de la historia", "groupName_fr": "Frégate de mission scénarisée", "groupName_it": "Storyline Mission Frigate", "groupName_ja": "ストーリーラインミッションフリゲート", "groupName_ko": "스토리라인 미션 프리깃", "groupName_ru": "Фрегат боевой группы особого назначения", "groupName_zh": "任务剧情任务护卫舰", "groupNameID": 63960, "iconID": 0, "published": 0, "useBasePrice": 0 }, "528": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 528, "groupName_de": "Artefakte und Prototypen", "groupName_en-us": "Artifacts and Prototypes", "groupName_es": "Artefactos y prototipos", "groupName_fr": "Artefacts et prototypes", "groupName_it": "Artifacts and Prototypes", "groupName_ja": "人工物と試作品", "groupName_ko": "유물 및 프로토타입", "groupName_ru": "Артефакты и прототипы", "groupName_zh": "古物和原型", "groupNameID": 63961, "iconID": 0, "published": 1, "useBasePrice": 0 }, "530": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 530, "groupName_de": "Materialien und Verbundstoffe", "groupName_en-us": "Materials and Compounds", "groupName_es": "Materiales y compuestos", "groupName_fr": "Matériaux et composés", "groupName_it": "Materials and Compounds", "groupName_ja": "資源と混合物", "groupName_ko": "자원 및 화합물", "groupName_ru": "Материалы и детали", "groupName_zh": "原料和化合物", "groupNameID": 63962, "iconID": 0, "published": 1, "useBasePrice": 0 }, "532": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 532, "groupName_de": "Gruppen-Koordinator-Blueprint", "groupName_en-us": "Gang Coordinator Blueprint", "groupName_es": "Plano de coordinador de banda", "groupName_fr": "Plan de construction Coordinateur de gang", "groupName_it": "Gang Coordinator Blueprint", "groupName_ja": "ギャングコーディネーターブループリント", "groupName_ko": "워페어 링크 블루프린트", "groupName_ru": "Чертежи модуля обеспечения флотского взаимодействия", "groupName_zh": "团队协调系统蓝图", "groupNameID": 63963, "iconID": 0, "published": 1, "useBasePrice": 1 }, "533": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 533, "groupName_de": "Storyline-Missionskreuzer", "groupName_en-us": "Storyline Mission Cruiser", "groupName_es": "Crucero de misión de la historia", "groupName_fr": "Croiseur de mission scénarisée", "groupName_it": "Storyline Mission Cruiser", "groupName_ja": "ストーリーラインミッション巡洋艦", "groupName_ko": "스토리라인 미션 크루저", "groupName_ru": "Крейсер боевой группы особого назначения", "groupName_zh": "任务剧情任务巡洋舰", "groupNameID": 63964, "iconID": 0, "published": 0, "useBasePrice": 0 }, "534": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 534, "groupName_de": "Storyline-Missionsschlachtschiff", "groupName_en-us": "Storyline Mission Battleship", "groupName_es": "Acorazado de misión de la historia", "groupName_fr": "Cuirassé de mission scénarisée", "groupName_it": "Storyline Mission Battleship", "groupName_ja": "ストーリーラインミッション戦艦", "groupName_ko": "스토리라인 미션 배틀쉽", "groupName_ru": "Линкор боевой группы особого назначения", "groupName_zh": "任务剧情战列舰", "groupNameID": 63965, "iconID": 0, "published": 0, "useBasePrice": 0 }, "535": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 535, "groupName_de": "Konstruktionsplattform-Blueprint", "groupName_en-us": "Construction Platform Blueprint", "groupName_es": "Plano de plataforma de construcción", "groupName_fr": "Plan de construction Plateforme de construction", "groupName_it": "Construction Platform Blueprint", "groupName_ja": "建設プラットフォームブループリント", "groupName_ko": "건설 플랫폼 블루프린트", "groupName_ru": "Чертеж строительной платформы", "groupName_zh": "建筑平台蓝图", "groupNameID": 63966, "iconID": 0, "published": 1, "useBasePrice": 1 }, "536": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 536, "groupName_de": "Strukturkomponenten", "groupName_en-us": "Structure Components", "groupName_es": "Componentes de estructuras", "groupName_fr": "Composants de structure", "groupName_it": "Structure Components", "groupName_ja": "構造の部品", "groupName_ko": "설비 구성품", "groupName_ru": "Компоненты сооружения", "groupName_zh": "建筑组件", "groupNameID": 63967, "iconID": 0, "published": 1, "useBasePrice": 1 }, "537": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 537, "groupName_de": "Dreadnought-Blueprint", "groupName_en-us": "Dreadnought Blueprint", "groupName_es": "Plano de superacorazado", "groupName_fr": "Plan de construction Dreadnought", "groupName_it": "Dreadnought Blueprint", "groupName_ja": "攻城艦ブループリント", "groupName_ko": "드레드노트 블루프린트", "groupName_ru": "Чертежи дредноута", "groupName_zh": "无畏舰蓝图", "groupNameID": 63968, "iconID": 0, "published": 1, "useBasePrice": 1 }, "538": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 538, "groupName_de": "Datensammler", "groupName_en-us": "Data Miners", "groupName_es": "Extractores de datos", "groupName_fr": "Mineurs de données", "groupName_it": "Data Miners", "groupName_ja": "データマイナー", "groupName_ko": "데이터 수집기", "groupName_ru": "Программно-аналитический комплекс", "groupName_zh": "数据采掘设备", "groupNameID": 63969, "iconID": 0, "published": 1, "useBasePrice": 0 }, "540": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 540, "groupName_de": "Kommandoschiff", "groupName_en-us": "Command Ship", "groupName_es": "Nave de mando", "groupName_fr": "Vaisseau de commandement", "groupName_it": "Command Ship", "groupName_ja": "指揮型巡洋戦艦", "groupName_ko": "커맨드쉽", "groupName_ru": "Корабль управления", "groupName_zh": "指挥舰", "groupNameID": 63970, "iconID": 0, "published": 1, "useBasePrice": 0 }, "541": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 541, "groupName_de": "Interdictor", "groupName_en-us": "Interdictor", "groupName_es": "Interdictor", "groupName_fr": "Interdicteur", "groupName_it": "Interdictor", "groupName_ja": "ワープ妨害型駆逐艦", "groupName_ko": "인터딕터", "groupName_ru": "Заградитель", "groupName_zh": "拦截舰", "groupNameID": 63971, "iconID": 0, "published": 1, "useBasePrice": 0 }, "543": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 543, "groupName_de": "Ausgrabungsschiff", "groupName_en-us": "Exhumer", "groupName_es": "Exhumador", "groupName_fr": "Exhumer", "groupName_it": "Exhumer", "groupName_ja": "特化型採掘艦", "groupName_ko": "익스허머", "groupName_ru": "Тяжёлый буровой корабль", "groupName_zh": "采掘者", "groupNameID": 63972, "iconID": 0, "published": 1, "useBasePrice": 0 }, "544": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 544, "groupName_de": "Energie neutralisierende Drohne", "groupName_en-us": "Energy Neutralizer Drone", "groupName_es": "Dron neutralizador energético", "groupName_fr": "Drone neutraliseur d'énergie.", "groupName_it": "Energy Neutralizer Drone", "groupName_ja": "エネルギーニュートライザードローン", "groupName_ko": "에너지 뉴트럴라이저 드론", "groupName_ru": "Дроны-нейтрализаторы энергии.", "groupName_zh": "能量中和无人机", "groupNameID": 63973, "iconID": 0, "published": 1, "useBasePrice": 0 }, "545": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 545, "groupName_de": "Warpunterbrecher-Drohne", "groupName_en-us": "Warp Scrambling Drone", "groupName_es": "Dron distorsionador de warp", "groupName_fr": "Drone inhibiteur de warp", "groupName_it": "Warp Scrambling Drone", "groupName_ja": "ワープスクランブルドローン", "groupName_ko": "워프 스크램블 드론", "groupName_ru": "Дрон-постановщик квантовых помех", "groupName_zh": "跃迁干扰无人机", "groupNameID": 64343, "iconID": 0, "published": 0, "useBasePrice": 0 }, "546": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 546, "groupName_de": "Bergbau-Upgrade", "groupName_en-us": "Mining Upgrade", "groupName_es": "Mejora de minería", "groupName_fr": "Amélioration minière", "groupName_it": "Mining Upgrade", "groupName_ja": "採掘強化", "groupName_ko": "채굴 업그레이드", "groupName_ru": "Пакет модернизации экстракторов", "groupName_zh": "采矿改良设备", "groupNameID": 63974, "iconID": 0, "published": 1, "useBasePrice": 0 }, "547": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 547, "groupName_de": "Trägerschiffe", "groupName_en-us": "Carrier", "groupName_es": "Portanaves", "groupName_fr": "Porte-vaisseaux", "groupName_it": "Carrier", "groupName_ja": "艦載機母艦", "groupName_ko": "캐리어", "groupName_ru": "КАР (корабль автономного развёртывания)", "groupName_zh": "航空母舰", "groupNameID": 63975, "iconID": 0, "published": 1, "useBasePrice": 0 }, "548": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 548, "groupName_de": "Unterbrechungssonde", "groupName_en-us": "Interdiction Probe", "groupName_es": "Sonda de interdicción", "groupName_fr": "Sonde d'interdiction", "groupName_it": "Interdiction Probe", "groupName_ja": "インターディクションプローブ", "groupName_ko": "인터딕터 프로브", "groupName_ru": "Зонд-генератор варп-помех", "groupName_zh": "干扰探针", "groupNameID": 64427, "iconID": 1721, "published": 1, "useBasePrice": 0 }, "549": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 549, "groupName_de": "Jäger", "groupName_en-us": "Fighter Drone", "groupName_es": "Dron caza", "groupName_fr": "Drone de combat", "groupName_it": "Fighter Drone", "groupName_ja": "艦載戦闘機ドローン", "groupName_ko": "파이터 드론", "groupName_ru": "Истребитель", "groupName_zh": "铁骑舰载机", "groupNameID": 63976, "iconID": 0, "published": 0, "useBasePrice": 0 }, "550": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 550, "groupName_de": "Asteroiden: Angel Cartel-Fregatte", "groupName_en-us": "Asteroid Angel Cartel Frigate", "groupName_es": "Fragata de asteroide del Cártel de los Ángeles", "groupName_fr": "Frégate cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Frigate", "groupName_ja": "アステロイドエンジェルカルテルフリゲート", "groupName_ko": "소행성 엔젤 카르텔 프리깃", "groupName_ru": "Фрегат астероидного патруля Картеля Angel", "groupName_zh": "行星天使联合企业护卫舰", "groupNameID": 63977, "iconID": 0, "published": 0, "useBasePrice": 0 }, "551": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 551, "groupName_de": "Asteroiden: Angel Cartel-Kreuzer", "groupName_en-us": "Asteroid Angel Cartel Cruiser", "groupName_es": "Crucero de asteroide del Cártel de los Ángeles", "groupName_fr": "Croiseur cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Cruiser", "groupName_ja": "アステロイドエンジェルカルテル巡洋艦", "groupName_ko": "소행성 엔젤 카르텔 크루저", "groupName_ru": "Крейсер астероидного патруля Картеля Angel", "groupName_zh": "小行星天使联合企业巡洋舰", "groupNameID": 63978, "iconID": 0, "published": 0, "useBasePrice": 0 }, "552": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 552, "groupName_de": "Asteroiden: Angel Cartel-Schlachtschiff", "groupName_en-us": "Asteroid Angel Cartel Battleship", "groupName_es": "Acorazado de asteroide del Cártel de los Ángeles", "groupName_fr": "Cuirassé cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Battleship", "groupName_ja": "アステロイドエンジェルカルテル戦艦", "groupName_ko": "소행성 엔젤 카르텔 배틀쉽", "groupName_ru": "Линкор астероидного патруля Картеля Angel", "groupName_zh": "小行星天使联合企业战列舰", "groupNameID": 63979, "iconID": 0, "published": 0, "useBasePrice": 0 }, "553": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 553, "groupName_de": "Asteroiden: Angel Cartel-Offizier", "groupName_en-us": "Asteroid Angel Cartel Officer", "groupName_es": "Oficial de asteroide del Cártel de los Ángeles", "groupName_fr": "Officier cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Officer", "groupName_ja": "アステロイドエンジェルカルテル士官", "groupName_ko": "소행성 엔젤 카르텔 장교", "groupName_ru": "Офицер астероидного патруля Картеля Angel", "groupName_zh": "小行星天使联合企业军官", "groupNameID": 63980, "iconID": 0, "published": 0, "useBasePrice": 0 }, "554": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 554, "groupName_de": "Asteroiden: Angel Cartel-Frachter", "groupName_en-us": "Asteroid Angel Cartel Hauler", "groupName_es": "Nave de mercancías de asteroide del Cártel de los Ángeles", "groupName_fr": "Transporteur cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Hauler", "groupName_ja": "アステロイドエンジェルカルテルハウラー", "groupName_ko": "소행성 엔젤 카르텔 운반선", "groupName_ru": "Грузовик астероидного патруля Картеля Angel", "groupName_zh": "行星天使联合企运载舰", "groupNameID": 63981, "iconID": 0, "published": 0, "useBasePrice": 0 }, "555": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 555, "groupName_de": "Asteroiden: Blood Raiders-Kreuzer", "groupName_en-us": "Asteroid Blood Raiders Cruiser", "groupName_es": "Crucero de asteroides de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Cruiser", "groupName_ja": "アステロイドブラッドレイダー巡洋艦", "groupName_ko": "소행성 블러드 레이더 크루저", "groupName_ru": "Крейсер астероидного патруля Blood Raider", "groupName_zh": "行星血袭者军团巡洋舰", "groupNameID": 63982, "iconID": 0, "published": 0, "useBasePrice": 0 }, "556": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 556, "groupName_de": "Asteroiden: Blood Raiders-Schlachtschiff", "groupName_en-us": "Asteroid Blood Raiders Battleship", "groupName_es": "Acorazado de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Cuirassé blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Battleship", "groupName_ja": "アステロイドブラッドレイダー戦艦", "groupName_ko": "소행성 블러드 레이더 배틀쉽", "groupName_ru": "Линкор астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军团战列舰", "groupNameID": 63983, "iconID": 0, "published": 0, "useBasePrice": 0 }, "557": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 557, "groupName_de": "Asteroiden: Blood Raiders-Fregatte", "groupName_en-us": "Asteroid Blood Raiders Frigate", "groupName_es": "Fragata de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Frégate blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Frigate", "groupName_ja": "アステロイドブラッドレイダーフリゲート", "groupName_ko": "소행성 블러드 레이더 프리깃", "groupName_ru": "Фрегат астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军团护卫舰", "groupNameID": 63984, "iconID": 0, "published": 0, "useBasePrice": 0 }, "558": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 558, "groupName_de": "Asteroiden: Blood Raiders-Frachter", "groupName_en-us": "Asteroid Blood Raiders Hauler", "groupName_es": "Nave de mercancías de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Transporteur blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Hauler", "groupName_ja": "アステロイドブラッドレイダーハウラー", "groupName_ko": "소행성 블러드 레이더 운반선", "groupName_ru": "Грузовик астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军团运载舰", "groupNameID": 63985, "iconID": 0, "published": 0, "useBasePrice": 0 }, "559": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 559, "groupName_de": "Asteroiden: Blood Raiders-Offizier", "groupName_en-us": "Asteroid Blood Raiders Officer", "groupName_es": "Oficial de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Officier blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Officer", "groupName_ja": "アステロイドブラッドレイダー士官", "groupName_ko": "소행성 블러드 레이더 장교", "groupName_ru": "Офицер астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军官", "groupNameID": 63986, "iconID": 0, "published": 0, "useBasePrice": 0 }, "560": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 560, "groupName_de": "Asteroiden: Guristas-Schlachtschiff", "groupName_en-us": "Asteroid Guristas Battleship", "groupName_es": "Acorazado de asteroide de los Guristas", "groupName_fr": "Cuirassé guristas astéroïde", "groupName_it": "Asteroid Guristas Battleship", "groupName_ja": "アステロイドガリスタス戦艦", "groupName_ko": "소행성 구리스타스 배틀쉽", "groupName_ru": "Линкор астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯战列舰", "groupNameID": 63987, "iconID": 0, "published": 0, "useBasePrice": 0 }, "561": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 561, "groupName_de": "Asteroiden: Guristas-Kreuzer", "groupName_en-us": "Asteroid Guristas Cruiser", "groupName_es": "Crucero de asteroide de los Guristas", "groupName_fr": "Croiseur guristas astéroïde", "groupName_it": "Asteroid Guristas Cruiser", "groupName_ja": "アステロイドガリスタス巡洋艦", "groupName_ko": "소행성 구리스타스 크루저", "groupName_ru": "Крейсер астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯巡洋舰", "groupNameID": 63988, "iconID": 0, "published": 0, "useBasePrice": 0 }, "562": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 562, "groupName_de": "Asteroiden: Guristas-Fregatte", "groupName_en-us": "Asteroid Guristas Frigate", "groupName_es": "Fragata de asteroide de los Guristas", "groupName_fr": "Frégate guristas astéroïde", "groupName_it": "Asteroid Guristas Frigate", "groupName_ja": "アステロイドガリスタスフリゲート", "groupName_ko": "소행성 구리스타스 프리깃", "groupName_ru": "Фрегат астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯护卫舰", "groupNameID": 63989, "iconID": 0, "published": 0, "useBasePrice": 0 }, "563": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 563, "groupName_de": "Asteroiden: Guristas-Frachter", "groupName_en-us": "Asteroid Guristas Hauler", "groupName_es": "Nave de mercancías de asteroide de los Guristas", "groupName_fr": "Transporteur guristas astéroïde", "groupName_it": "Asteroid Guristas Hauler", "groupName_ja": "アステロイドガリスタスハウラー", "groupName_ko": "소행성 구리스타스 운반선", "groupName_ru": "Грузовик астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯运载舰", "groupNameID": 63990, "iconID": 0, "published": 0, "useBasePrice": 0 }, "564": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 564, "groupName_de": "Asteroiden: Guristas-Offizier", "groupName_en-us": "Asteroid Guristas Officer", "groupName_es": "Oficial de asteroide de los Guristas", "groupName_fr": "Officier guristas astéroïde", "groupName_it": "Asteroid Guristas Officer", "groupName_ja": "アステロイドガリスタス士官", "groupName_ko": "소행성 구리스타스 장교", "groupName_ru": "Офицер астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯军官", "groupNameID": 63991, "iconID": 0, "published": 0, "useBasePrice": 0 }, "565": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 565, "groupName_de": "Asteroiden: Sansha's Nation-Schlachtschiff", "groupName_en-us": "Asteroid Sansha's Nation Battleship", "groupName_es": "Acorazado de asteroide de la Nación Sansha", "groupName_fr": "Cuirassé Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Battleship", "groupName_ja": "アステロイドサンシャ国戦艦", "groupName_ko": "소행성 산샤 네이션 배틀쉽", "groupName_ru": "Линкор астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国战列舰", "groupNameID": 63992, "iconID": 0, "published": 0, "useBasePrice": 0 }, "566": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 566, "groupName_de": "Asteroiden: Sansha's Nation-Kreuzer", "groupName_en-us": "Asteroid Sansha's Nation Cruiser", "groupName_es": "Crucero de asteroide de la Nación Sansha", "groupName_fr": "Croiseur Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Cruiser", "groupName_ja": "アステロイドサンシャ国巡洋艦", "groupName_ko": "소행성 산샤 네이션 크루저", "groupName_ru": "Крейсер астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国巡洋舰", "groupNameID": 63993, "iconID": 0, "published": 0, "useBasePrice": 0 }, "567": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 567, "groupName_de": "Asteroiden: Sansha's Nation-Fregatte", "groupName_en-us": "Asteroid Sansha's Nation Frigate", "groupName_es": "Fragata de asteroide de la Nación Sansha", "groupName_fr": "Frégate Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Frigate", "groupName_ja": "アステロイドサンシャ国フリゲート", "groupName_ko": "소행성 산샤 네이션 프리깃", "groupName_ru": "Фрегат астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国护卫舰", "groupNameID": 63994, "iconID": 0, "published": 0, "useBasePrice": 0 }, "568": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 568, "groupName_de": "Asteroiden: Sansha's Nation-Frachter", "groupName_en-us": "Asteroid Sansha's Nation Hauler", "groupName_es": "Nave de mercancías de asteroide de la Nación Sansha", "groupName_fr": "Transporteur Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Hauler", "groupName_ja": "アステロイドサンシャ国ハウラー", "groupName_ko": "소행성 산샤 네이션 운반선", "groupName_ru": "Грузовик астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国运载舰", "groupNameID": 63995, "iconID": 0, "published": 0, "useBasePrice": 0 }, "569": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 569, "groupName_de": "Asteroiden: Sansha's Nation-Offizier", "groupName_en-us": "Asteroid Sansha's Nation Officer", "groupName_es": "Oficial de asteroide de la Nación Sansha", "groupName_fr": "Officier Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Officer", "groupName_ja": "アステロイドサンシャ国士官", "groupName_ko": "소행성 산샤 네이션 장교", "groupName_ru": "Офицер астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国军官", "groupNameID": 63996, "iconID": 0, "published": 0, "useBasePrice": 0 }, "570": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 570, "groupName_de": "Asteroiden: Serpentis-Schlachtschiff", "groupName_en-us": "Asteroid Serpentis Battleship", "groupName_es": "Acorazado de asteroide de Serpentis", "groupName_fr": "Cuirassé serpentis astéroïde", "groupName_it": "Asteroid Serpentis Battleship", "groupName_ja": "アステロイドサーペンティス戦艦", "groupName_ko": "소행성 서펜티스 배틀쉽", "groupName_ru": "Линкор астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团战列舰", "groupNameID": 63997, "iconID": 0, "published": 0, "useBasePrice": 0 }, "571": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 571, "groupName_de": "Asteroiden: Serpentis-Kreuzer", "groupName_en-us": "Asteroid Serpentis Cruiser", "groupName_es": "Crucero de asteroide de Serpentis", "groupName_fr": "Croiseur serpentis astéroïde", "groupName_it": "Asteroid Serpentis Cruiser", "groupName_ja": "アステロイドサーペンティス巡洋艦", "groupName_ko": "소행성 서펜티스 지휘 크루저", "groupName_ru": "Крейсер астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团巡洋舰", "groupNameID": 63998, "iconID": 0, "published": 0, "useBasePrice": 0 }, "572": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 572, "groupName_de": "Asteroiden: Serpentis-Fregatte", "groupName_en-us": "Asteroid Serpentis Frigate", "groupName_es": "Fragata de asteroide de Serpentis", "groupName_fr": "Frégate serpentis astéroïde", "groupName_it": "Asteroid Serpentis Frigate", "groupName_ja": "アステロイドサーペンティスフリゲート", "groupName_ko": "소행성 서펜티스 프리깃", "groupName_ru": "Фрегат астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团护卫舰", "groupNameID": 63999, "iconID": 0, "published": 0, "useBasePrice": 0 }, "573": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 573, "groupName_de": "Asteroiden: Serpentis-Frachter", "groupName_en-us": "Asteroid Serpentis Hauler", "groupName_es": "Nave de mercancías de asteroide de Serpentis", "groupName_fr": "Transporteur serpentis astéroïde", "groupName_it": "Asteroid Serpentis Hauler", "groupName_ja": "アステロイドサーペンティスハウラー", "groupName_ko": "소행성 서펜티스 운반선", "groupName_ru": "Грузовик астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团运载舰", "groupNameID": 64000, "iconID": 0, "published": 0, "useBasePrice": 0 }, "574": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 574, "groupName_de": "Asteroiden: Serpentis-Offizier", "groupName_en-us": "Asteroid Serpentis Officer", "groupName_es": "Oficial de asteroide de Serpentis", "groupName_fr": "Officier serpentis astéroïde", "groupName_it": "Asteroid Serpentis Officer", "groupName_ja": "アステロイドサーペンティス士官", "groupName_ko": "소행성 서펜티스 장교", "groupName_ru": "Офицер астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团军官", "groupNameID": 64001, "iconID": 0, "published": 0, "useBasePrice": 0 }, "575": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 575, "groupName_de": "Asteroiden: Angel Cartel-Zerstörer", "groupName_en-us": "Asteroid Angel Cartel Destroyer", "groupName_es": "Destructor de asteroide del Cártel de los Ángeles", "groupName_fr": "Destroyer cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Destroyer", "groupName_ja": "アステロイドエンジェルカルテル駆逐艦", "groupName_ko": "소행성 엔젤 카르텔 디스트로이어", "groupName_ru": "Эсминец астероидного патруля Картеля Angel", "groupName_zh": "行星天使联合企业驱逐舰", "groupNameID": 64002, "iconID": 0, "published": 0, "useBasePrice": 0 }, "576": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 576, "groupName_de": "Asteroiden: Angel Cartel-Schlachtkreuzer", "groupName_en-us": "Asteroid Angel Cartel BattleCruiser", "groupName_es": "Crucero de combate de asteroide del Cártel de los Ángeles", "groupName_fr": "Croiseur de bataille cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel BattleCruiser", "groupName_ja": "アステロイドエンジェルカルテル巡洋戦艦", "groupName_ko": "소행성 엔젤 카르텔 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля Картеля Angel", "groupName_zh": "行星天使联合企业战列巡洋舰", "groupNameID": 64003, "iconID": 0, "published": 0, "useBasePrice": 0 }, "577": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 577, "groupName_de": "Asteroiden: Blood Raiders-Zerstörer", "groupName_en-us": "Asteroid Blood Raiders Destroyer", "groupName_es": "Destructor de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Destroyer blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Destroyer", "groupName_ja": "アステロイドブラッドレイダー駆逐艦", "groupName_ko": "소행성 블러드 레이더 디스트로이어", "groupName_ru": "Эсминец астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军团驱逐舰", "groupNameID": 64004, "iconID": 0, "published": 0, "useBasePrice": 0 }, "578": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 578, "groupName_de": "Asteroiden: Blood Raiders-Schlachtkreuzer", "groupName_en-us": "Asteroid Blood Raiders BattleCruiser", "groupName_es": "Crucero de combate de asteroide de Saqueadores Sanguinarios", "groupName_fr": "Croiseur de bataille blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders BattleCruiser", "groupName_ja": "アステロイドブラッドレイダー巡洋戦艦", "groupName_ko": "소행성 블러드 레이더 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者军团战列巡洋舰", "groupNameID": 64005, "iconID": 0, "published": 0, "useBasePrice": 0 }, "579": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 579, "groupName_de": "Asteroiden: Guristas-Zerstörer", "groupName_en-us": "Asteroid Guristas Destroyer", "groupName_es": "Destructor de asteroide de los Guristas", "groupName_fr": "Destroyer guristas astéroïde", "groupName_it": "Asteroid Guristas Destroyer", "groupName_ja": "アステロイドガリスタス駆逐艦", "groupName_ko": "소행성 구리스타스 디스트로이어", "groupName_ru": "Эсминец астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯驱逐舰", "groupNameID": 64006, "iconID": 0, "published": 0, "useBasePrice": 0 }, "580": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 580, "groupName_de": "Asteroiden: Guristas-Schlachtkreuzer", "groupName_en-us": "Asteroid Guristas BattleCruiser", "groupName_es": "Crucero de combate de asteroide de los Guristas", "groupName_fr": "Croiseur de bataille guristas astéroïde", "groupName_it": "Asteroid Guristas BattleCruiser", "groupName_ja": "アステロイドガリスタス巡洋戦艦", "groupName_ko": "소행성 구리스타스 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯战列巡洋舰", "groupNameID": 64007, "iconID": 0, "published": 0, "useBasePrice": 0 }, "581": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 581, "groupName_de": "Asteroiden: Sansha's Nation-Zerstörer", "groupName_en-us": "Asteroid Sansha's Nation Destroyer", "groupName_es": "Destructor de asteroide de la Nación Sansha", "groupName_fr": "Destroyer Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Destroyer", "groupName_ja": "アステロイドサンシャ国駆逐艦", "groupName_ko": "소행성 산샤 네이션 디스트로이어", "groupName_ru": "Эсминец астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国驱逐舰", "groupNameID": 64008, "iconID": 0, "published": 0, "useBasePrice": 0 }, "582": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 582, "groupName_de": "Asteroiden: Sansha's Nation-Schlachtkreuzer", "groupName_en-us": "Asteroid Sansha's Nation BattleCruiser", "groupName_es": "Crucero de combate de asteroide de la Nación Sansha", "groupName_fr": "Croiseur de bataille Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation BattleCruiser", "groupName_ja": "アステロイドサンシャ国巡洋戦艦", "groupName_ko": "소행성 산샤 네이션 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля Sansha", "groupName_zh": "小行星萨沙共和国战列巡洋舰", "groupNameID": 64009, "iconID": 0, "published": 0, "useBasePrice": 0 }, "583": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 583, "groupName_de": "Asteroiden: Serpentis-Zerstörer", "groupName_en-us": "Asteroid Serpentis Destroyer", "groupName_es": "Destructor de asteroide de Serpentis", "groupName_fr": "Destroyer serpentis astéroïde", "groupName_it": "Asteroid Serpentis Destroyer", "groupName_ja": "アステロイドサーペンティス駆逐艦", "groupName_ko": "소행성 서펜티스 디스트로이어", "groupName_ru": "Эсминец астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团驱逐舰", "groupNameID": 64010, "iconID": 0, "published": 0, "useBasePrice": 0 }, "584": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 584, "groupName_de": "Asteroiden: Serpentis-Schlachtkreuzer", "groupName_en-us": "Asteroid Serpentis BattleCruiser", "groupName_es": "Crucero de combate de asteroide de Serpentis", "groupName_fr": "Croiseur de bataille serpentis astéroïde", "groupName_it": "Asteroid Serpentis BattleCruiser", "groupName_ja": "アステロイドサーペンティス巡洋戦艦", "groupName_ko": "소행성 서펜티스 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团战列巡洋舰", "groupNameID": 64011, "iconID": 0, "published": 0, "useBasePrice": 0 }, "585": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 585, "groupName_de": "Fern-Hüllenreparierer", "groupName_en-us": "Remote Hull Repairer", "groupName_es": "Reparador de casco remoto", "groupName_fr": "Réparateur de coque à distance", "groupName_it": "Remote Hull Repairer", "groupName_ja": "リモート船体リペアラ", "groupName_ko": "원격 선체수리 장치", "groupName_ru": "Система дистанционного ремонта корпуса", "groupName_zh": "远程船体维修装置", "groupNameID": 64012, "iconID": 0, "published": 1, "useBasePrice": 0 }, "586": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 586, "groupName_de": "Drohnenmodule", "groupName_en-us": "Drone Modules", "groupName_es": "Módulos de drones", "groupName_fr": "Modules de drone", "groupName_it": "Drone Modules", "groupName_ja": "ドローンモジュール", "groupName_ko": "드론 모듈", "groupName_ru": "Модули дронов", "groupName_zh": "无人机舱段", "groupNameID": 64013, "iconID": 0, "published": 0, "useBasePrice": 0 }, "588": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 588, "groupName_de": "Superwaffe", "groupName_en-us": "Super Weapon", "groupName_es": "Superarma", "groupName_fr": "Super arme", "groupName_it": "Super Weapon", "groupName_ja": "超兵器", "groupName_ko": "슈퍼웨폰", "groupName_ru": "Супероружие", "groupName_zh": "超级武器", "groupNameID": 64014, "iconID": 0, "published": 1, "useBasePrice": 0 }, "589": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 589, "groupName_de": "Interdiction-Sphere-Launcher", "groupName_en-us": "Interdiction Sphere Launcher", "groupName_es": "Lanzaesferas de interdicción", "groupName_fr": "Lanceur de sphère d'interdiction", "groupName_it": "Interdiction Sphere Launcher", "groupName_ja": "インターディクションスフィアランチャー", "groupName_ko": "인터딕션 런처", "groupName_ru": "Пусковая установка зондов-генераторов варп-помех", "groupName_zh": "拦截泡发射器", "groupNameID": 64342, "iconID": 2990, "published": 1, "useBasePrice": 0 }, "590": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 590, "groupName_de": "Sprungtorgenerator", "groupName_en-us": "Jump Portal Generator", "groupName_es": "Generador de portales de salto", "groupName_fr": "Générateur de portail hyperspatial", "groupName_it": "Jump Portal Generator", "groupName_ja": "ジャンプポータルジェネレーター", "groupName_ko": "점프 포탈 생성기", "groupName_ru": "Генератор гиперпорталов", "groupName_zh": "跳跃通道发生器", "groupNameID": 64015, "iconID": 0, "published": 1, "useBasePrice": 0 }, "593": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 593, "groupName_de": "Raumverwerfung: Angel Cartel-Schlachtkreuzer", "groupName_en-us": "Deadspace Angel Cartel BattleCruiser", "groupName_es": "Crucero de combate del espacio muerto del Cártel de los Ángeles", "groupName_fr": "Croiseur de bataille cartel angel Deadspace", "groupName_it": "Deadspace Angel Cartel BattleCruiser", "groupName_ja": "デッドスペースエンジェルカルテル巡洋戦艦", "groupName_ko": "데드스페이스 엔젤 카르텔 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса Картеля Angel", "groupName_zh": "死亡空间天使战列巡洋舰", "groupNameID": 64016, "iconID": 0, "published": 0, "useBasePrice": 0 }, "594": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 594, "groupName_de": "Raumverwerfung: Angel Cartel-Schlachtschiff", "groupName_en-us": "Deadspace Angel Cartel Battleship", "groupName_es": "Acorazado del espacio muerto del Cártel de los Ángeles", "groupName_fr": "Cuirassé cartel angel Deadspace", "groupName_it": "Deadspace Angel Cartel Battleship", "groupName_ja": "デッドスペースエンジェルカルテル戦艦", "groupName_ko": "데드스페이스 엔젤 카르텔 배틀쉽", "groupName_ru": "Линкор дэдспейса Картеля Angel", "groupName_zh": "死亡空间天使战列舰", "groupNameID": 64017, "iconID": 0, "published": 0, "useBasePrice": 0 }, "595": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 595, "groupName_de": "Raumverwerfung: Angel Cartel-Kreuzer", "groupName_en-us": "Deadspace Angel Cartel Cruiser", "groupName_es": "Crucero del espacio muerto del Cártel de los Ángeles", "groupName_fr": "Croiseur cartel angel Deadspace", "groupName_it": "Deadspace Angel Cartel Cruiser", "groupName_ja": "デッドスペースエンジェルカルテル巡洋艦", "groupName_ko": "데드스페이스 엔젤 카르텔 크루저", "groupName_ru": "Крейсер дэдспейса Картеля Angel", "groupName_zh": "死亡空间天使巡洋舰", "groupNameID": 64018, "iconID": 0, "published": 0, "useBasePrice": 0 }, "596": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 596, "groupName_de": "Raumverwerfung: Angel Cartel-Zerstörer", "groupName_en-us": "Deadspace Angel Cartel Destroyer", "groupName_es": "Destructor del espacio muerto del Cártel de los Ángeles", "groupName_fr": "Destroyer cartel angel Deadspace", "groupName_it": "Deadspace Angel Cartel Destroyer", "groupName_ja": "デッドスペースエンジェルカルテル駆逐艦", "groupName_ko": "데드스페이스 엔젤 카르텔 디스트로이어", "groupName_ru": "Эсминец дэдспейса Картеля Angel", "groupName_zh": "死亡空间天使驱逐舰", "groupNameID": 64019, "iconID": 0, "published": 0, "useBasePrice": 0 }, "597": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 597, "groupName_de": "Raumverwerfung: Angel Cartel-Fregatte", "groupName_en-us": "Deadspace Angel Cartel Frigate", "groupName_es": "Fragata del espacio muerto del Cártel de los Ángeles", "groupName_fr": "Frégate cartel angel Deadspace", "groupName_it": "Deadspace Angel Cartel Frigate", "groupName_ja": "デッドスペースエンジェルカルテルフリゲート", "groupName_ko": "데드스페이스 엔젤 카르텔 프리깃", "groupName_ru": "Фрегат дэдспейса Картеля Angel", "groupName_zh": "死亡空间天使护卫舰", "groupNameID": 64020, "iconID": 0, "published": 0, "useBasePrice": 0 }, "602": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 602, "groupName_de": "Raumverwerfung: Blood Raiders-Schlachtkreuzer", "groupName_en-us": "Deadspace Blood Raiders BattleCruiser", "groupName_es": "Crucero de combate del espacio muerto de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur de bataille blood raider Deadspace", "groupName_it": "Deadspace Blood Raiders BattleCruiser", "groupName_ja": "デッドスペースブラッドレイダー巡洋戦艦", "groupName_ko": "데드스페이스 블러드 레이더 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса Blood Raider", "groupName_zh": "死亡空间血袭者战列巡洋舰", "groupNameID": 64021, "iconID": 0, "published": 0, "useBasePrice": 0 }, "603": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 603, "groupName_de": "Raumverwerfung: Blood Raiders-Schlachtschiff", "groupName_en-us": "Deadspace Blood Raiders Battleship", "groupName_es": "Acorazado del espacio muerto de los Saqueadores Sanguinarios", "groupName_fr": "Cuirassé blood raider Deadspace", "groupName_it": "Deadspace Blood Raiders Battleship", "groupName_ja": "デッドスペースブラッドレイダー戦艦", "groupName_ko": "데드스페이스 블러드 레이더 배틀쉽", "groupName_ru": "Линкор дэдспейса Blood Raider", "groupName_zh": "死亡空间血袭者战列舰", "groupNameID": 64022, "iconID": 0, "published": 0, "useBasePrice": 0 }, "604": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 604, "groupName_de": "Raumverwerfung: Blood Raiders-Kreuzer", "groupName_en-us": "Deadspace Blood Raiders Cruiser", "groupName_es": "Crucero del espacio muerto de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur blood raider Deadspace", "groupName_it": "Deadspace Blood Raiders Cruiser", "groupName_ja": "デッドスペースブラッドレイダー巡洋艦", "groupName_ko": "데드스페이스 블러드 레이더 크루저", "groupName_ru": "Крейсер дэдспейса Blood Raider", "groupName_zh": "死亡空间血袭者巡洋舰", "groupNameID": 64023, "iconID": 0, "published": 0, "useBasePrice": 0 }, "605": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 605, "groupName_de": "Raumverwerfung: Blood Raiders-Zerstörer", "groupName_en-us": "Deadspace Blood Raiders Destroyer", "groupName_es": "Destructor del espacio muerto de los Saqueadores Sanguinarios", "groupName_fr": "Destroyer blood raider Deadspace", "groupName_it": "Deadspace Blood Raiders Destroyer", "groupName_ja": "デッドスペースブラッドレイダー駆逐艦", "groupName_ko": "데드스페이스 블러드 레이더 디스트로이어", "groupName_ru": "Эсминец дэдспейса Blood Raider", "groupName_zh": "死亡空间血袭者驱逐舰", "groupNameID": 64024, "iconID": 0, "published": 0, "useBasePrice": 0 }, "606": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 606, "groupName_de": "Raumverwerfung: Blood Raiders-Fregatte", "groupName_en-us": "Deadspace Blood Raiders Frigate", "groupName_es": "Fragata de los Saqueadores Sanguinarios del espacio muerto", "groupName_fr": "Frégate blood raider Deadspace", "groupName_it": "Deadspace Blood Raiders Frigate", "groupName_ja": "デッドスペースブラッドレイダーフリゲート", "groupName_ko": "데드스페이스 블러드 레이더 프리깃", "groupName_ru": "Фрегат дэдспейса Blood Raider", "groupName_zh": "死亡空间血袭者护卫舰", "groupNameID": 64025, "iconID": 0, "published": 0, "useBasePrice": 0 }, "611": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 611, "groupName_de": "Raumverwerfung: Guristas-Schlachtkreuzer", "groupName_en-us": "Deadspace Guristas BattleCruiser", "groupName_es": "Crucero de combate del espacio muerto de los Guristas", "groupName_fr": "Croiseur de bataille guristas Deadspace", "groupName_it": "Deadspace Guristas BattleCruiser", "groupName_ja": "デッドスペースガリスタス巡洋戦艦", "groupName_ko": "데드스페이스 구리스타스 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса Gurista", "groupName_zh": "死亡空间古斯塔斯战列巡洋舰", "groupNameID": 64026, "iconID": 0, "published": 0, "useBasePrice": 0 }, "612": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 612, "groupName_de": "Raumverwerfung: Guristas-Schlachtschiff", "groupName_en-us": "Deadspace Guristas Battleship", "groupName_es": "Acorazado del espacio muerto de los Guristas", "groupName_fr": "Cuirassé guristas Deadspace", "groupName_it": "Deadspace Guristas Battleship", "groupName_ja": "デッドスペースガリスタス戦艦", "groupName_ko": "데드스페이스 구리스타스 배틀쉽", "groupName_ru": "Линкор дэдспейса Gurista", "groupName_zh": "死亡空间古斯塔斯战列舰", "groupNameID": 64027, "iconID": 0, "published": 0, "useBasePrice": 0 }, "613": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 613, "groupName_de": "Raumverwerfung: Guristas-Kreuzer", "groupName_en-us": "Deadspace Guristas Cruiser", "groupName_es": "Crucero del espacio muerto de los Guristas", "groupName_fr": "Croiseur guristas Deadspace", "groupName_it": "Deadspace Guristas Cruiser", "groupName_ja": "デッドスペースガリスタス巡洋艦", "groupName_ko": "데드스페이스 구리스타스 크루저", "groupName_ru": "Крейсер дэдспейса Gurista", "groupName_zh": "死亡空间古斯塔斯巡洋舰", "groupNameID": 64028, "iconID": 0, "published": 0, "useBasePrice": 0 }, "614": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 614, "groupName_de": "Raumverwerfung: Guristas-Zerstörer", "groupName_en-us": "Deadspace Guristas Destroyer", "groupName_es": "Destructor del espacio muerto de los Guristas", "groupName_fr": "Destroyer guristas Deadspace", "groupName_it": "Deadspace Guristas Destroyer", "groupName_ja": "デッドスペースガリスタス駆逐艦", "groupName_ko": "데드스페이스 구리스타스 디스트로이어", "groupName_ru": "Эсминец дэдспейса Gurista", "groupName_zh": "死亡空间古斯塔斯驱逐舰", "groupNameID": 64029, "iconID": 0, "published": 0, "useBasePrice": 0 }, "615": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 615, "groupName_de": "Raumverwerfung: Guristas-Fregatte", "groupName_en-us": "Deadspace Guristas Frigate", "groupName_es": "Fragata del espacio muerto de los Guristas", "groupName_fr": "Frégate guristas Deadspace", "groupName_it": "Deadspace Guristas Frigate", "groupName_ja": "デッドスペースガリスタスフリゲート", "groupName_ko": "데드스페이스 구리스타스 프리깃", "groupName_ru": "Фрегат дэдспейса Gurista", "groupName_zh": "死亡空间古斯塔斯护卫舰", "groupNameID": 64030, "iconID": 0, "published": 0, "useBasePrice": 0 }, "620": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 620, "groupName_de": "Raumverwerfung: Sansha's Nation-Schlachtkreuzer", "groupName_en-us": "Deadspace Sansha's Nation BattleCruiser", "groupName_es": "Crucero de combate del espacio muerto de la Nación Sansha", "groupName_fr": "Croiseur de bataille Sansha's Nation Deadspace", "groupName_it": "Deadspace Sansha's Nation BattleCruiser", "groupName_ja": "デッドスペースサンシャ国巡洋戦艦", "groupName_ko": "데드스페이스 산샤 네이션 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса Sansha", "groupName_zh": "死亡空间萨沙共和国战列巡洋舰", "groupNameID": 64031, "iconID": 0, "published": 0, "useBasePrice": 0 }, "621": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 621, "groupName_de": "Raumverwerfung: Sansha's Nation-Schlachtschiff", "groupName_en-us": "Deadspace Sansha's Nation Battleship", "groupName_es": "Acorazado del espacio muerto de la Nación Sansha", "groupName_fr": "Cuirassé Sansha's Nation Deadspace", "groupName_it": "Deadspace Sansha's Nation Battleship", "groupName_ja": "デッドスペースサンシャ国戦艦", "groupName_ko": "데드스페이스 산샤 네이션 배틀쉽", "groupName_ru": "Линкор дэдспейса Sansha", "groupName_zh": "死亡空间萨沙共和国战列舰", "groupNameID": 64032, "iconID": 0, "published": 0, "useBasePrice": 0 }, "622": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 622, "groupName_de": "Raumverwerfung: Sansha's Nation-Kreuzer", "groupName_en-us": "Deadspace Sansha's Nation Cruiser", "groupName_es": "Crucero del espacio muerto de la Nación Sansha", "groupName_fr": "Croiseur Sansha's Nation Deadspace", "groupName_it": "Deadspace Sansha's Nation Cruiser", "groupName_ja": "デッドスペースサンシャ国巡洋艦", "groupName_ko": "데드스페이스 산샤 네이션 크루저", "groupName_ru": "Крейсер дэдспейса Sansha", "groupName_zh": "死亡空间萨沙共和国巡洋舰", "groupNameID": 64033, "iconID": 0, "published": 0, "useBasePrice": 0 }, "623": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 623, "groupName_de": "Raumverwerfung: Sansha's Nation-Zerstörer", "groupName_en-us": "Deadspace Sansha's Nation Destroyer", "groupName_es": "Destructor del espacio muerto de la Nación Sansha", "groupName_fr": "Destroyer Sansha's Nation Deadspace", "groupName_it": "Deadspace Sansha's Nation Destroyer", "groupName_ja": "デッドスペースサンシャ国駆逐艦", "groupName_ko": "데드스페이스 산샤 네이션 디스트로이어", "groupName_ru": "Эсминец дэдспейса Sansha", "groupName_zh": "死亡空间萨沙共和国驱逐舰", "groupNameID": 64034, "iconID": 0, "published": 0, "useBasePrice": 0 }, "624": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 624, "groupName_de": "Raumverwerfung: Sansha's Nation-Fregatte", "groupName_en-us": "Deadspace Sansha's Nation Frigate", "groupName_es": "Fragata del espacio muerto de la Nación Sansha", "groupName_fr": "Frégate Sansha's Nation Deadspace", "groupName_it": "Deadspace Sansha's Nation Frigate", "groupName_ja": "デッドスペースサンシャ国フリゲート", "groupName_ko": "데드스페이스 산샤 네이션 프리깃", "groupName_ru": "Фрегат дэдспейса Sansha", "groupName_zh": "死亡空间萨沙共和国护卫舰", "groupNameID": 64035, "iconID": 0, "published": 0, "useBasePrice": 0 }, "629": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 629, "groupName_de": "Raumverwerfung: Serpentis-Schlachtkreuzer", "groupName_en-us": "Deadspace Serpentis BattleCruiser", "groupName_es": "Crucero de combate del espacio muerto de los Serpentis", "groupName_fr": "Croiseur de bataille serpentis Deadspace", "groupName_it": "Deadspace Serpentis BattleCruiser", "groupName_ja": "デッドスペースサーペンティス巡洋戦艦", "groupName_ko": "데드스페이스 서펜티스 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса Serpentis", "groupName_zh": "死亡空间天蛇战列巡洋舰", "groupNameID": 64036, "iconID": 0, "published": 0, "useBasePrice": 0 }, "630": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 630, "groupName_de": "Raumverwerfung: Serpentis-Schlachtschiff", "groupName_en-us": "Deadspace Serpentis Battleship", "groupName_es": "Acorazado del espacio muerto de los Serpentis", "groupName_fr": "Cuirassé serpentis Deadspace", "groupName_it": "Deadspace Serpentis Battleship", "groupName_ja": "デッドスペースサーペンティス戦艦", "groupName_ko": "데드스페이스 서펜티스 배틀쉽", "groupName_ru": "Линкор дэдспейса Serpentis", "groupName_zh": "死亡空间天蛇战列舰", "groupNameID": 64037, "iconID": 0, "published": 0, "useBasePrice": 0 }, "631": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 631, "groupName_de": "Raumverwerfung: Serpentis-Kreuzer", "groupName_en-us": "Deadspace Serpentis Cruiser", "groupName_es": "Crucero del espacio muerto de los Serpentis", "groupName_fr": "Croiseur serpentis Deadspace", "groupName_it": "Deadspace Serpentis Cruiser", "groupName_ja": "デッドスペースサーペンティス巡洋艦", "groupName_ko": "데드스페이스 서펜티스 크루저", "groupName_ru": "Крейсер дэдспейса Serpentis", "groupName_zh": "死亡空间天蛇巡洋舰", "groupNameID": 64038, "iconID": 0, "published": 0, "useBasePrice": 0 }, "632": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 632, "groupName_de": "Raumverwerfung: Serpentis-Zerstörer", "groupName_en-us": "Deadspace Serpentis Destroyer", "groupName_es": "Destructor del espacio muerto de los Serpentis", "groupName_fr": "Destroyer serpentis Deadspace", "groupName_it": "Deadspace Serpentis Destroyer", "groupName_ja": "デッドスペースサーペンティス駆逐艦", "groupName_ko": "데드스페이스 서펜티스 디스트로이어", "groupName_ru": "Эсминец дэдспейса Serpentis", "groupName_zh": "死亡空间天蛇驱逐舰", "groupNameID": 64039, "iconID": 0, "published": 0, "useBasePrice": 0 }, "633": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 633, "groupName_de": "Raumverwerfung: Serpentis-Fregatte", "groupName_en-us": "Deadspace Serpentis Frigate", "groupName_es": "Fragata del espacio muerto de los Serpentis", "groupName_fr": "Frégate serpentis Deadspace", "groupName_it": "Deadspace Serpentis Frigate", "groupName_ja": "デッドスペースサーペンティスフリゲート", "groupName_ko": "데드스페이스 서펜티스 프리깃", "groupName_ru": "Фрегат дэдспейса Serpentis", "groupName_zh": "死亡空间天蛇护卫舰", "groupNameID": 64040, "iconID": 0, "published": 0, "useBasePrice": 0 }, "638": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 638, "groupName_de": "Navigationscomputer", "groupName_en-us": "Navigation Computer", "groupName_es": "Ordenador de navegación", "groupName_fr": "Ordinateur de navigation", "groupName_it": "Navigation Computer", "groupName_ja": "ナビゲーションコンピュータ", "groupName_ko": "항법 시스템", "groupName_ru": "Навигационный компьютер", "groupName_zh": "无人机导航计算机", "groupNameID": 64041, "iconID": 0, "published": 0, "useBasePrice": 0 }, "639": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 639, "groupName_de": "Drohne zur elektronischen Kriegsführung", "groupName_en-us": "Electronic Warfare Drone", "groupName_es": "Dron de guerra electrónica", "groupName_fr": "Drone de guerre électronique", "groupName_it": "Electronic Warfare Drone", "groupName_ja": "電子戦ドローン", "groupName_ko": "전자전 드론", "groupName_ru": "Дрон электронного противодействия", "groupName_zh": "电子战无人机", "groupNameID": 64042, "iconID": 0, "published": 1, "useBasePrice": 0 }, "640": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 640, "groupName_de": "Versorgungsdrohne", "groupName_en-us": "Logistic Drone", "groupName_es": "Dron logístico", "groupName_fr": "Drone d'assistance", "groupName_it": "Logistic Drone", "groupName_ja": "支援専門ドローン", "groupName_ko": "로지스틱스 드론", "groupName_ru": "Ремонтный дрон", "groupName_zh": "后勤无人机", "groupNameID": 64043, "iconID": 0, "published": 1, "useBasePrice": 0 }, "641": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 641, "groupName_de": "Stasisnetzdrohne", "groupName_en-us": "Stasis Webifying Drone", "groupName_es": "Dron de red ralentizadora", "groupName_fr": "Drone de stase", "groupName_it": "Stasis Webifying Drone", "groupName_ja": "ステイシスウェブドローン", "groupName_ko": "스테이시스 웹 드론", "groupName_ru": "Дрон постановки стазис-сети", "groupName_zh": "停滞缠绕无人机", "groupNameID": 64044, "iconID": 0, "published": 1, "useBasePrice": 0 }, "642": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 642, "groupName_de": "Supergruppenverbesserer", "groupName_en-us": "Super Gang Enhancer", "groupName_es": "Intensificador de superbanda", "groupName_fr": "Super optimisateur de gang", "groupName_it": "Super Gang Enhancer", "groupName_ja": "スーパーギャングエンハンサー", "groupName_ko": "슈퍼 갱 향상장치", "groupName_ru": "Усовершенствованная система межкорабельной координации", "groupName_zh": "超级团队增强器", "groupNameID": 64045, "iconID": 0, "published": 0, "useBasePrice": 0 }, "643": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 643, "groupName_de": "Trägerschiff-Blaupause", "groupName_en-us": "Carrier Blueprint", "groupName_es": "Plano de portanaves", "groupName_fr": "Plan de construction Porte-vaisseaux", "groupName_it": "Carrier Blueprint", "groupName_ja": "艦載機母艦ブループリント", "groupName_ko": "캐리어 블루프린트", "groupName_ru": "Чертежи корабля автономного развёртывания", "groupName_zh": "航空母舰蓝图", "groupNameID": 64046, "iconID": 0, "published": 1, "useBasePrice": 1 }, "644": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 644, "groupName_de": "Drohnen-Navigationscomputer", "groupName_en-us": "Drone Navigation Computer", "groupName_es": "Ordenador de navegación de drones", "groupName_fr": "Ordinateur de navigation de drone", "groupName_it": "Drone Navigation Computer", "groupName_ja": "ドローンナビゲーションコンピュータ", "groupName_ko": "드론 항법 시스템", "groupName_ru": "Навигационный компьютер дронов", "groupName_zh": "无人机导航电脑", "groupNameID": 64047, "iconID": 0, "published": 1, "useBasePrice": 0 }, "645": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 645, "groupName_de": "Drohnenschadensmodule", "groupName_en-us": "Drone Damage Modules", "groupName_es": "Módulos de daño de drones", "groupName_fr": "Modules de dégâts causés par les drones", "groupName_it": "Drone Damage Modules", "groupName_ja": "ドローンダメージモジュール", "groupName_ko": "드론 데미지 모듈", "groupName_ru": "Усилители боевой эффективности дронов", "groupName_zh": "无人机伤害单元", "groupNameID": 64048, "iconID": 0, "published": 1, "useBasePrice": 0 }, "646": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 646, "groupName_de": "Drohnenmodule zur Nachführung", "groupName_en-us": "Drone Tracking Modules", "groupName_es": "Módulos de rastreo de drones", "groupName_fr": "Modules de poursuite de drone", "groupName_it": "Drone Tracking Modules", "groupName_ja": "ドローントラッキングモジュール", "groupName_ko": "드론 트래킹 모듈", "groupName_ru": "Усилитель системы слежения дронов", "groupName_zh": "无人机追踪装备", "groupNameID": 64049, "iconID": 0, "published": 1, "useBasePrice": 0 }, "647": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 647, "groupName_de": "Kontrollreichweitenmodul für Drohnen", "groupName_en-us": "Drone Control Range Module", "groupName_es": "Módulo de alcance de control de drones", "groupName_fr": "Module de contrôle de portée de drone", "groupName_it": "Drone Control Range Module", "groupName_ja": "ドローン制御範囲モジュール", "groupName_ko": "드론 제어반경 모듈", "groupName_ru": "Ретранслятор системы управления дронами", "groupName_zh": "无人机操控范围增强单元", "groupNameID": 64050, "iconID": 0, "published": 1, "useBasePrice": 0 }, "648": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 648, "groupName_de": "Fortgeschrittene Rakete", "groupName_en-us": "Advanced Rocket", "groupName_es": "Cohete avanzado", "groupName_fr": "Roquette avancée", "groupName_it": "Advanced Rocket", "groupName_ja": "高性能ロケット", "groupName_ko": "상급 로켓", "groupName_ru": "Спецракеты ближнего боя", "groupName_zh": "高级火箭", "groupNameID": 64051, "iconID": 1351, "published": 1, "useBasePrice": 0 }, "649": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 649, "groupName_de": "Frachtcontainer", "groupName_en-us": "Freight Container", "groupName_es": "Contenedor de mercancías", "groupName_fr": "Conteneur de fret", "groupName_it": "Freight Container", "groupName_ja": "貨物コンテナ", "groupName_ko": "화물 컨테이너", "groupName_ru": "Транспортный контейнер", "groupName_zh": "货物集装箱", "groupNameID": 64052, "iconID": 1174, "published": 1, "useBasePrice": 1 }, "650": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 650, "groupName_de": "Traktorstrahl", "groupName_en-us": "Tractor Beam", "groupName_es": "Rayo tractor", "groupName_fr": "Rayon de tractage", "groupName_it": "Tractor Beam", "groupName_ja": "トラクタービーム", "groupName_ko": "트랙터 빔", "groupName_ru": "Гравизахват", "groupName_zh": "牵引光束", "groupNameID": 64053, "iconID": 0, "published": 1, "useBasePrice": 0 }, "651": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 651, "groupName_de": "Superwaffen-Blueprint", "groupName_en-us": "Super Weapon Blueprint", "groupName_es": "Plano de superarma", "groupName_fr": "Plan de construction Super arme", "groupName_it": "Super Weapon Blueprint", "groupName_ja": "超兵器ブループリント", "groupName_ko": "슈퍼웨폰 블루프린트", "groupName_ru": "Чертеж супероружия", "groupName_zh": "超级武器蓝图", "groupNameID": 64054, "iconID": 0, "published": 1, "useBasePrice": 1 }, "652": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 652, "groupName_de": "Mietvertrag", "groupName_en-us": "Lease", "groupName_es": "Alquiler", "groupName_fr": "Location", "groupName_it": "Lease", "groupName_ja": "リース", "groupName_ko": "임대", "groupName_ru": "Документы аренды", "groupName_zh": "契约", "groupNameID": 64055, "iconID": 0, "published": 1, "useBasePrice": 1 }, "653": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 653, "groupName_de": "Verbesserte leichte Rakete", "groupName_en-us": "Advanced Light Missile", "groupName_es": "Misil ligero avanzado", "groupName_fr": "Missile léger avancé", "groupName_it": "Advanced Light Missile", "groupName_ja": "高性能ライトミサイル", "groupName_ko": "상급 라이트 미사일", "groupName_ru": "Спецракеты малой мощности", "groupName_zh": "高级轻型导弹", "groupNameID": 64056, "iconID": 191, "published": 1, "useBasePrice": 0 }, "654": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 654, "groupName_de": "Fortgeschrittene schwere Angriffsrakete", "groupName_en-us": "Advanced Heavy Assault Missile", "groupName_es": "Misil de asalto pesado avanzado", "groupName_fr": "Missile d'assaut lourd avancé", "groupName_it": "Advanced Heavy Assault Missile", "groupName_ja": "高性能ヘビーアサルトミサイル", "groupName_ko": "상급 헤비 어썰트 미사일", "groupName_ru": "Малогабаритные спецракеты большой мощности", "groupName_zh": "高级重型攻击导弹", "groupNameID": 64057, "iconID": 3235, "published": 1, "useBasePrice": 0 }, "655": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 655, "groupName_de": "Fortgeschrittene schwere Rakete", "groupName_en-us": "Advanced Heavy Missile", "groupName_es": "Misil pesado avanzado", "groupName_fr": "Missile lourd avancé", "groupName_it": "Advanced Heavy Missile", "groupName_ja": "高性能ヘビーミサイル", "groupName_ko": "상급 헤비 미사일", "groupName_ru": "Спецракеты большой мощности", "groupName_zh": "高级重型导弹", "groupNameID": 64058, "iconID": 188, "published": 1, "useBasePrice": 0 }, "656": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 656, "groupName_de": "Fortgeschrittene Cruise Missile", "groupName_en-us": "Advanced Cruise Missile", "groupName_es": "Misil de crucero avanzado", "groupName_fr": "Missile de croisière avancé", "groupName_it": "Advanced Cruise Missile", "groupName_ja": "高性能クルーズミサイル", "groupName_ko": "상급 크루즈 미사일", "groupName_ru": "Спецракеты дальнего боя", "groupName_zh": "高级巡航导弹", "groupNameID": 64059, "iconID": 184, "published": 1, "useBasePrice": 0 }, "657": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 657, "groupName_de": "Fortgeschrittener Torpedo", "groupName_en-us": "Advanced Torpedo", "groupName_es": "Torpedo avanzado", "groupName_fr": "Torpille avancée", "groupName_it": "Advanced Torpedo", "groupName_ja": "高性能トルピード", "groupName_ko": "상급 토피도", "groupName_ru": "Спецторпеды", "groupName_zh": "高级鱼雷", "groupNameID": 64060, "iconID": 1347, "published": 1, "useBasePrice": 0 }, "658": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 658, "groupName_de": "Cynosural Field Generator", "groupName_en-us": "Cynosural Field Generator", "groupName_es": "Generador de campo cinosural", "groupName_fr": "Générateur de champ cynosural", "groupName_it": "Cynosural Field Generator", "groupName_ja": "サイノシュラルフィールド・ジェネレーター", "groupName_ko": "사이노슈럴 필드 생성기", "groupName_ru": "Приводной маяк", "groupName_zh": "诱导力场发生器", "groupNameID": 64061, "iconID": 0, "published": 1, "useBasePrice": 0 }, "659": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 659, "groupName_de": "Supercarrier", "groupName_en-us": "Supercarrier", "groupName_es": "Superportanaves", "groupName_fr": "Super porte-vaisseaux", "groupName_it": "Supercarrier", "groupName_ja": "大型艦載機母艦", "groupName_ko": "슈퍼캐리어", "groupName_ru": "КАР сверхбольшого тоннажа", "groupName_zh": "超级航母", "groupNameID": 64360, "iconID": 0, "published": 1, "useBasePrice": 0 }, "660": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 660, "groupName_de": "Energievampir-Jäger", "groupName_en-us": "Energy Vampire Slayer", "groupName_es": "Asesino chupaenergía", "groupName_fr": "Tueur de vampire énergétique", "groupName_it": "Energy Vampire Slayer", "groupName_ja": "対エネルギーバンパイア", "groupName_ko": "에너지 뱀파이어 슬레이어", "groupName_ru": "Энергетический модуль-антивампир", "groupName_zh": "能量虹吸反制设备", "groupNameID": 64062, "iconID": 0, "published": 0, "useBasePrice": 0 }, "661": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 661, "groupName_de": "Einfache Biochemische Reaktionen", "groupName_en-us": "Simple Biochemical Reactions", "groupName_es": "Reacciones bioquímicas simples", "groupName_fr": "Réactions biochimiques simples", "groupName_it": "Simple Biochemical Reactions", "groupName_ja": "有機単体反応", "groupName_ko": "단순 생화학 합성", "groupName_ru": "Простые биохимические реакции", "groupName_zh": "简单生化反应", "groupNameID": 64063, "iconID": 2665, "published": 1, "useBasePrice": 0 }, "662": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 662, "groupName_de": "Komplexe Biochemische Reaktionen", "groupName_en-us": "Complex Biochemical Reactions", "groupName_es": "Reacciones bioquímicas complejas", "groupName_fr": "Réactions biochimiques complexes", "groupName_it": "Complex Biochemical Reactions", "groupName_ja": "有機複合反応", "groupName_ko": "복합 생화학 합성", "groupName_ru": "Сложные биохимические реакции", "groupName_zh": "复杂生化反应", "groupNameID": 64064, "iconID": 2665, "published": 1, "useBasePrice": 0 }, "663": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 663, "groupName_de": "Mercoxit-Bergbaukristall", "groupName_en-us": "Mercoxit Mining Crystal", "groupName_es": "Cristal de minería de mercoxita", "groupName_fr": "Cristal d'extraction de mercoxit", "groupName_it": "Mercoxit Mining Crystal", "groupName_ja": "メロコキサイト採掘クリスタル", "groupName_ko": "메르코시트 채광용 크리스탈", "groupName_ru": "Кристалл настройки экстрактора на меркоцит", "groupName_zh": "基腹断岩采集晶体", "groupNameID": 64065, "iconID": 24969, "published": 1, "useBasePrice": 0 }, "665": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 665, "groupName_de": "Missionen: Fregatte des Amarr-Imperiums", "groupName_en-us": "Mission Amarr Empire Frigate", "groupName_es": "Fragata de misión del Imperio Amarr", "groupName_fr": "Frégate Empire amarr mission", "groupName_it": "Mission Amarr Empire Frigate", "groupName_ja": "ミッションアマー帝国フリゲート", "groupName_ko": "미션 아마르 프리깃", "groupName_ru": "Фрегат боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国舰队护卫舰", "groupNameID": 64066, "iconID": 0, "published": 0, "useBasePrice": 0 }, "666": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 666, "groupName_de": "Missionen: Schlachtkreuzer des Amarr-Imperiums", "groupName_en-us": "Mission Amarr Empire Battlecruiser", "groupName_es": "Crucero de combate de misión del Imperio Amarr", "groupName_fr": "Croiseur de bataille Empire amarr mission", "groupName_it": "Mission Amarr Empire Battlecruiser", "groupName_ja": "ミッションアマー帝国巡洋戦艦", "groupName_ko": "미션 아마르 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国舰队战列巡洋舰", "groupNameID": 64067, "iconID": 0, "published": 0, "useBasePrice": 0 }, "667": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 667, "groupName_de": "Missionen: Amarr Empire-Schlachtschiff", "groupName_en-us": "Mission Amarr Empire Battleship", "groupName_es": "Acorazado de misión del Imperio Amarr", "groupName_fr": "Cuirassé Empire amarr mission", "groupName_it": "Mission Amarr Empire Battleship", "groupName_ja": "ミッションアマー帝国戦艦", "groupName_ko": "미션 아마르 배틀쉽", "groupName_ru": "Линкор боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国舰队战列舰", "groupNameID": 64068, "iconID": 0, "published": 0, "useBasePrice": 0 }, "668": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 668, "groupName_de": "Missionen: Kreuzer des Amarr-Imperiums", "groupName_en-us": "Mission Amarr Empire Cruiser", "groupName_es": "Crucero de misión del Imperio Amarr", "groupName_fr": "Croiseur Empire amarr mission", "groupName_it": "Mission Amarr Empire Cruiser", "groupName_ja": "ミッションアマー帝国巡洋艦", "groupName_ko": "미션 아마르 크루저", "groupName_ru": "Крейсер боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国舰队巡洋舰", "groupNameID": 64069, "iconID": 0, "published": 0, "useBasePrice": 0 }, "669": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 669, "groupName_de": "Missionen: Zerstörer des Amarr-Imperiums", "groupName_en-us": "Mission Amarr Empire Destroyer", "groupName_es": "Destructor de misión del Imperio Amarr", "groupName_fr": "Destroyer Empire amarr mission", "groupName_it": "Mission Amarr Empire Destroyer", "groupName_ja": "ミッションアマー帝国駆逐艦", "groupName_ko": "미션 아마르 디스트로이어", "groupName_ru": "Эсминец боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国舰队驱逐舰", "groupNameID": 64070, "iconID": 0, "published": 0, "useBasePrice": 0 }, "670": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 670, "groupName_de": "Missionen: Amarr Empire (andere)", "groupName_en-us": "Mission Amarr Empire Other", "groupName_es": "Otro elemento de misión del Imperio Amarr", "groupName_fr": "Autre Empire amarr mission", "groupName_it": "Mission Amarr Empire Other", "groupName_ja": "ミッションアマー帝国その他", "groupName_ko": "미션 아마르 기타 함선", "groupName_ru": "Другой корабль боевой группы империи Amarr", "groupName_zh": "任务 艾玛帝国舰队其它", "groupNameID": 64071, "iconID": 0, "published": 0, "useBasePrice": 0 }, "671": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 671, "groupName_de": "Missionen: Fregatte des Staats der Caldari", "groupName_en-us": "Mission Caldari State Frigate", "groupName_es": "Fragata de misión del Estado Caldari", "groupName_fr": "Frégate État caldari mission", "groupName_it": "Mission Caldari State Frigate", "groupName_ja": "ミッションカルダリ連合フリゲート", "groupName_ko": "미션 칼다리 프리깃", "groupName_ru": "Фрегат боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国护卫舰", "groupNameID": 64072, "iconID": 0, "published": 0, "useBasePrice": 0 }, "672": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 672, "groupName_de": "Missionen: Schlachtkreuzer des Staats der Caldari", "groupName_en-us": "Mission Caldari State Battlecruiser", "groupName_es": "Crucero de combate de misión del Estado Caldari", "groupName_fr": "Croiseur de bataille État caldari mission", "groupName_it": "Mission Caldari State Battlecruiser", "groupName_ja": "ミッションカルダリ連合巡洋戦艦", "groupName_ko": "미션 칼다리 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы государства Caldari", "groupName_zh": "任务 加达里合众国舰队战列巡洋舰", "groupNameID": 64073, "iconID": 0, "published": 0, "useBasePrice": 0 }, "673": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 673, "groupName_de": "Missionen: Kreuzer des Staats der Caldari", "groupName_en-us": "Mission Caldari State Cruiser", "groupName_es": "Crucero de misión del Estado Caldari", "groupName_fr": "Croiseur État caldari mission", "groupName_it": "Mission Caldari State Cruiser", "groupName_ja": "ミッションカルダリ連合巡洋艦", "groupName_ko": "미션 칼다리 크루저", "groupName_ru": "Крейсер боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国巡洋舰", "groupNameID": 64074, "iconID": 0, "published": 0, "useBasePrice": 0 }, "674": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 674, "groupName_de": "Missionen: Caldari State-Schlachtschiff", "groupName_en-us": "Mission Caldari State Battleship", "groupName_es": "Acorazado de misión del Estado Caldari", "groupName_fr": "Cuirassé État caldari mission", "groupName_it": "Mission Caldari State Battleship", "groupName_ja": "ミッションカルダリ連合戦艦", "groupName_ko": "미션 칼다리 배틀쉽", "groupName_ru": "Линкор боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国舰队战列舰", "groupNameID": 64075, "iconID": 0, "published": 0, "useBasePrice": 0 }, "675": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 675, "groupName_de": "Missionen: Caldari State (andere)", "groupName_en-us": "Mission Caldari State Other", "groupName_es": "Otro elemento de misión del Estado Caldari", "groupName_fr": "Autre État caldari mission", "groupName_it": "Mission Caldari State Other", "groupName_ja": "ミッションカルダリ連合その他", "groupName_ko": "미션 칼다리 기타 함선", "groupName_ru": "Другой корабль боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国舰队其它", "groupNameID": 64076, "iconID": 0, "published": 0, "useBasePrice": 0 }, "676": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 676, "groupName_de": "Missionen: Zerstörer des Staats der Caldari", "groupName_en-us": "Mission Caldari State Destroyer", "groupName_es": "Destructor de misión del Estado Caldari", "groupName_fr": "Destroyer État caldari mission", "groupName_it": "Mission Caldari State Destroyer", "groupName_ja": "ミッションカルダリ連合駆逐艦", "groupName_ko": "미션 칼다리 디스트로이어", "groupName_ru": "Эсминец боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国舰队驱逐舰", "groupNameID": 64077, "iconID": 0, "published": 0, "useBasePrice": 0 }, "677": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 677, "groupName_de": "Missionen: Fregatte der Föderation der Gallente", "groupName_en-us": "Mission Gallente Federation Frigate", "groupName_es": "Fragata de misión de la Federación Gallente", "groupName_fr": "Frégate Fédération gallente mission", "groupName_it": "Mission Gallente Federation Frigate", "groupName_ja": "ミッションガレンテ連邦フリゲート", "groupName_ko": "미션 갈란테 프리깃", "groupName_ru": "Фрегат боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦护卫舰", "groupNameID": 64078, "iconID": 0, "published": 0, "useBasePrice": 0 }, "678": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 678, "groupName_de": "Missionen: Kreuzer der Gallente-Föderation", "groupName_en-us": "Mission Gallente Federation Cruiser", "groupName_es": "Crucero de misión de la Federación Gallente", "groupName_fr": "Croiseur Fédération gallente mission", "groupName_it": "Mission Gallente Federation Cruiser", "groupName_ja": "ミッションガレンテ連邦巡洋艦", "groupName_ko": "미션 갈란테 크루저", "groupName_ru": "Крейсер боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦巡洋舰", "groupNameID": 64079, "iconID": 0, "published": 0, "useBasePrice": 0 }, "679": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 679, "groupName_de": "Missionen: Zerstörer der Gallente-Föderation", "groupName_en-us": "Mission Gallente Federation Destroyer", "groupName_es": "Destructor de misión de la Federación Gallente", "groupName_fr": "Destroyer Fédération gallente mission", "groupName_it": "Mission Gallente Federation Destroyer", "groupName_ja": "ミッションガレンテ連邦駆逐艦", "groupName_ko": "미션 갈란테 디스트로이어", "groupName_ru": "Эсминец боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦舰队驱逐舰", "groupNameID": 64080, "iconID": 0, "published": 0, "useBasePrice": 0 }, "680": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 680, "groupName_de": "Missionen: Gallente Federation-Schlachtschiff", "groupName_en-us": "Mission Gallente Federation Battleship", "groupName_es": "Acorazado de misión de la Federación Gallente", "groupName_fr": "Cuirassé Fédération gallente mission", "groupName_it": "Mission Gallente Federation Battleship", "groupName_ja": "ミッションガレンテ連邦戦艦", "groupName_ko": "미션 갈란테 배틀쉽", "groupName_ru": "Линкор боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦战列舰", "groupNameID": 64081, "iconID": 0, "published": 0, "useBasePrice": 0 }, "681": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 681, "groupName_de": "Missionen: Schlachtkreuzer der Gallente-Föderation", "groupName_en-us": "Mission Gallente Federation Battlecruiser", "groupName_es": "Crucero de combate de misión de la Federación Gallente", "groupName_fr": "Croiseur de bataille Fédération gallente mission", "groupName_it": "Mission Gallente Federation Battlecruiser", "groupName_ja": "ミッションガレンテ連邦巡洋戦艦", "groupName_ko": "미션 갈란테 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦舰队战列巡洋舰", "groupNameID": 64082, "iconID": 0, "published": 0, "useBasePrice": 0 }, "682": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 682, "groupName_de": "Missionen: Gallente Federation (andere)", "groupName_en-us": "Mission Gallente Federation Other", "groupName_es": "Otro elemento de misión de la Federación Gallente", "groupName_fr": "Autre Fédération gallente mission", "groupName_it": "Mission Gallente Federation Other", "groupName_ja": "ミッションガレンテ連邦その他", "groupName_ko": "미션 갈란테 기타 함선", "groupName_ru": "Другой корабль боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦舰队其它", "groupNameID": 64083, "iconID": 0, "published": 0, "useBasePrice": 0 }, "683": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 683, "groupName_de": "Mission: Fregatte der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Frigate", "groupName_es": "Fragata de misión de la República Minmatar", "groupName_fr": "Frégate République minmatar mission", "groupName_it": "Mission Minmatar Republic Frigate", "groupName_ja": "ミッションミンマター共和国フリゲート", "groupName_ko": "미션 민마타 프리깃", "groupName_ru": "Фрегат боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和国护卫舰", "groupNameID": 64084, "iconID": 0, "published": 0, "useBasePrice": 0 }, "684": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 684, "groupName_de": "Mission: Zerstörer der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Destroyer", "groupName_es": "Destructor de misión de la República Minmatar", "groupName_fr": "Destroyer République minmatar mission", "groupName_it": "Mission Minmatar Republic Destroyer", "groupName_ja": "ミッションミンマター共和国駆逐艦", "groupName_ko": "미션 민마타 디스트로이어", "groupName_ru": "Эсминец боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和舰队驱逐舰", "groupNameID": 64085, "iconID": 0, "published": 0, "useBasePrice": 0 }, "685": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 685, "groupName_de": "Mission: Schlachtkreuzer der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Battlecruiser", "groupName_es": "Crucero de combate de misión de la República Minmatar", "groupName_fr": "Croiseur de bataille République minmatar mission", "groupName_it": "Mission Minmatar Republic Battlecruiser", "groupName_ja": "ミッションミンマター共和国巡洋戦艦", "groupName_ko": "미션 민마타 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和舰队战列巡洋舰", "groupNameID": 64086, "iconID": 0, "published": 0, "useBasePrice": 0 }, "686": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 686, "groupName_de": "Mission: Republik Minmatar (andere)", "groupName_en-us": "Mission Minmatar Republic Other", "groupName_es": "Otro elemento de misión de la República Minmatar", "groupName_fr": "Autre République minmatar mission", "groupName_it": "Mission Minmatar Republic Other", "groupName_ja": "ミッションミンマター共和国その他", "groupName_ko": "미션 민마타 기타 함선", "groupName_ru": "Другой корабль боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和舰队其它", "groupNameID": 64087, "iconID": 0, "published": 0, "useBasePrice": 0 }, "687": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 687, "groupName_de": "Missionen: Khanid-Fregatte", "groupName_en-us": "Mission Khanid Frigate", "groupName_es": "Fragata de misión de los Khanid", "groupName_fr": "Frégate khanid mission", "groupName_it": "Mission Khanid Frigate", "groupName_ja": "ミッションクーニッドフリゲート", "groupName_ko": "미션 카니드 프리깃", "groupName_ru": "Фрегат боевой группы Khanid", "groupName_zh": "任务 卡尼迪护卫舰", "groupNameID": 64088, "iconID": 0, "published": 0, "useBasePrice": 0 }, "688": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 688, "groupName_de": "Missionen: Khanid-Zerstörer", "groupName_en-us": "Mission Khanid Destroyer", "groupName_es": "Destructor de misión de los Khanid", "groupName_fr": "Destroyer khanid mission", "groupName_it": "Mission Khanid Destroyer", "groupName_ja": "ミッションクーニッド駆逐艦", "groupName_ko": "미션 카니드 디스트로이어", "groupName_ru": "Эсминец боевой группы Khanid", "groupName_zh": "任务 卡尼迪驱逐舰", "groupNameID": 64089, "iconID": 0, "published": 0, "useBasePrice": 0 }, "689": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 689, "groupName_de": "Missionen: Khanid-Kreuzer", "groupName_en-us": "Mission Khanid Cruiser", "groupName_es": "Crucero de misión de los Khanid", "groupName_fr": "Croiseur khanid mission", "groupName_it": "Mission Khanid Cruiser", "groupName_ja": "ミッションクーニッド巡洋艦", "groupName_ko": "미션 카니드 크루저", "groupName_ru": "Крейсер боевой группы Khanid", "groupName_zh": "任务 卡尼迪巡洋舰", "groupNameID": 64090, "iconID": 0, "published": 0, "useBasePrice": 0 }, "690": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 690, "groupName_de": "Missionen: Khanid-Schlachtkreuzer", "groupName_en-us": "Mission Khanid Battlecruiser", "groupName_es": "Crucero de combate de misión de los Khanid", "groupName_fr": "Croiseur de bataille khanid mission", "groupName_it": "Mission Khanid Battlecruiser", "groupName_ja": "ミッションクーニッド巡洋戦艦", "groupName_ko": "미션 카니드 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Khanid", "groupName_zh": "任务 卡尼迪战列巡洋舰", "groupNameID": 64091, "iconID": 0, "published": 0, "useBasePrice": 0 }, "691": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 691, "groupName_de": "Missionen: Khanid-Schlachtschiff", "groupName_en-us": "Mission Khanid Battleship", "groupName_es": "Acorazado de misión de los Khanid", "groupName_fr": "Cuirassé khanid mission", "groupName_it": "Mission Khanid Battleship", "groupName_ja": "ミッションクーニッド戦艦", "groupName_ko": "미션 카니드 배틀쉽", "groupName_ru": "Линкор боевой группы Khanid", "groupName_zh": "任务 卡尼迪战列舰", "groupNameID": 64092, "iconID": 0, "published": 0, "useBasePrice": 0 }, "692": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 692, "groupName_de": "Missionen: Khanid (andere)", "groupName_en-us": "Mission Khanid Other", "groupName_es": "Otro elemento de misión de los Khanid", "groupName_fr": "Autre khanid mission", "groupName_it": "Mission Khanid Other", "groupName_ja": "ミッションクーニッドその他", "groupName_ko": "미션 카니드 기타 함선", "groupName_ru": "Другой корабль боевой группы Khanid", "groupName_zh": "任务 卡尼迪其它", "groupNameID": 64093, "iconID": 0, "published": 0, "useBasePrice": 0 }, "693": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 693, "groupName_de": "Missionen: CONCORD-Fregatte", "groupName_en-us": "Mission CONCORD Frigate", "groupName_es": "Fragata de misión CONCORD", "groupName_fr": "Frégate CONCORD mission", "groupName_it": "Mission CONCORD Frigate", "groupName_ja": "ミッションCONCORDフリゲート", "groupName_ko": "미션 CONCORD 프리깃", "groupName_ru": "Фрегат боевой группы CONCORD", "groupName_zh": "任务 统合部护卫舰", "groupNameID": 64094, "iconID": 0, "published": 0, "useBasePrice": 0 }, "694": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 694, "groupName_de": "Missionen: CONCORD-Zerstörer", "groupName_en-us": "Mission CONCORD Destroyer", "groupName_es": "Destructor de misión de CONCORD", "groupName_fr": "Destroyer CONCORD mission", "groupName_it": "Mission CONCORD Destroyer", "groupName_ja": "ミッションCONCORD駆逐艦", "groupName_ko": "미션 CONCORD 디스트로이어", "groupName_ru": "Эсминец боевой группы CONCORD", "groupName_zh": "任务 统合部驱逐舰", "groupNameID": 64095, "iconID": 0, "published": 0, "useBasePrice": 0 }, "695": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 695, "groupName_de": "Missionen: CONCORD-Kreuzer", "groupName_en-us": "Mission CONCORD Cruiser", "groupName_es": "Crucero de misión CONCORD", "groupName_fr": "Croiseur CONCORD mission", "groupName_it": "Mission CONCORD Cruiser", "groupName_ja": "ミッションCONCORD巡洋艦", "groupName_ko": "미션 CONCORD 크루저", "groupName_ru": "Крейсер боевой группы CONCORD", "groupName_zh": "任务 统合部巡洋舰", "groupNameID": 64096, "iconID": 0, "published": 0, "useBasePrice": 0 }, "696": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 696, "groupName_de": "Missionen: CONCORD-Schlachtkreuzer", "groupName_en-us": "Mission CONCORD Battlecruiser", "groupName_es": "Crucero de combate de misión CONCORD", "groupName_fr": "Croiseur de bataille CONCORD mission", "groupName_it": "Mission CONCORD Battlecruiser", "groupName_ja": "ミッションCONCORD巡洋戦艦", "groupName_ko": "미션 CONCORD 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы CONCORD", "groupName_zh": "任务 统合部战列巡洋舰", "groupNameID": 64097, "iconID": 0, "published": 0, "useBasePrice": 0 }, "697": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 697, "groupName_de": "Missionen: CONCORD-Schlachtschiff", "groupName_en-us": "Mission CONCORD Battleship", "groupName_es": "Acorazado de misión CONCORD", "groupName_fr": "Cuirassé CONCORD mission", "groupName_it": "Mission CONCORD Battleship", "groupName_ja": "ミッションCONCORD戦艦", "groupName_ko": "미션 CONCORD 배틀쉽", "groupName_ru": "Линкор боевой группы CONCORD", "groupName_zh": "任务 统合部战列舰", "groupNameID": 64098, "iconID": 0, "published": 0, "useBasePrice": 0 }, "698": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 698, "groupName_de": "Missionen: CONCORD (andere)", "groupName_en-us": "Mission CONCORD Other", "groupName_es": "Otro elemento de misión CONCORD", "groupName_fr": "Autre CONCORD mission", "groupName_it": "Mission CONCORD Other", "groupName_ja": "ミッションCONCORDその他", "groupName_ko": "미션 CONCORD 기타 함선", "groupName_ru": "Другой корабль боевой группы CONCORD", "groupName_zh": "任务 统合部其它", "groupNameID": 64099, "iconID": 0, "published": 0, "useBasePrice": 0 }, "699": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 699, "groupName_de": "Missionen: Mordu-Fregatte", "groupName_en-us": "Mission Mordu Frigate", "groupName_es": "Fragata de misión de Mordu", "groupName_fr": "Frégate Mordu mission", "groupName_it": "Mission Mordu Frigate", "groupName_ja": "ミッションモードゥフリゲート", "groupName_ko": "미션 모르두 프리깃", "groupName_ru": "Фрегат боевой группы Mordu", "groupName_zh": "任务 莫德团护卫舰", "groupNameID": 64100, "iconID": 0, "published": 0, "useBasePrice": 0 }, "700": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 700, "groupName_de": "Missionen: Mordu-Zerstörer", "groupName_en-us": "Mission Mordu Destroyer", "groupName_es": "Destructor de misión de Mordu", "groupName_fr": "Destroyer Mordu mission", "groupName_it": "Mission Mordu Destroyer", "groupName_ja": "ミッションモードゥ駆逐艦", "groupName_ko": "미션 모르두 디스트로이어", "groupName_ru": "Эсминец боевой группы Mordu", "groupName_zh": "任务 莫德团驱逐舰", "groupNameID": 64101, "iconID": 0, "published": 0, "useBasePrice": 0 }, "701": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 701, "groupName_de": "Missionen: Mordu-Kreuzer", "groupName_en-us": "Mission Mordu Cruiser", "groupName_es": "Crucero de misión de Mordu", "groupName_fr": "Croiseur Mordu mission", "groupName_it": "Mission Mordu Cruiser", "groupName_ja": "ミッションモードゥ巡洋艦", "groupName_ko": "미션 모르두 크루저", "groupName_ru": "Крейсер боевой группы Mordu", "groupName_zh": "任务 莫德团巡洋舰", "groupNameID": 64102, "iconID": 0, "published": 0, "useBasePrice": 0 }, "702": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 702, "groupName_de": "Missionen: Mordu-Schlachtkreuzer", "groupName_en-us": "Mission Mordu Battlecruiser", "groupName_es": "Crucero de combate de misión de Mordu", "groupName_fr": "Croiseur de bataille Mordu mission", "groupName_it": "Mission Mordu Battlecruiser", "groupName_ja": "ミッションモードゥ巡洋戦艦", "groupName_ko": "미션 모르두 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Mordu", "groupName_zh": "任务 莫德团战列巡洋舰", "groupNameID": 64103, "iconID": 0, "published": 0, "useBasePrice": 0 }, "703": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 703, "groupName_de": "Missionen: Mordu-Schlachtschiff", "groupName_en-us": "Mission Mordu Battleship", "groupName_es": "Acorazado de misión de Mordu", "groupName_fr": "Cuirassé Mordu mission", "groupName_it": "Mission Mordu Battleship", "groupName_ja": "ミッションモードゥ戦艦", "groupName_ko": "미션 모르두 배틀쉽", "groupName_ru": "Линкор боевой группы Mordu", "groupName_zh": "任务 莫德团战列舰", "groupNameID": 64104, "iconID": 0, "published": 0, "useBasePrice": 0 }, "704": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 704, "groupName_de": "Missionen: Mordu (andere)", "groupName_en-us": "Mission Mordu Other", "groupName_es": "Otro elemento de misión de Mordu", "groupName_fr": "Autre Mordu mission", "groupName_it": "Mission Mordu Other", "groupName_ja": "ミッションモードゥその他", "groupName_ko": "미션 모르두 기타 함선", "groupName_ru": "Другой корабль боевой группы Mordu", "groupName_zh": "任务 莫德团其它", "groupNameID": 64105, "iconID": 0, "published": 0, "useBasePrice": 0 }, "705": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 705, "groupName_de": "Mission: Kreuzer der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Cruiser", "groupName_es": "Crucero de misión de la República Minmatar", "groupName_fr": "Croiseur République minmatar mission", "groupName_it": "Mission Minmatar Republic Cruiser", "groupName_ja": "ミッションミンマター共和国巡洋艦", "groupName_ko": "미션 민마타 크루저", "groupName_ru": "Крейсер боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和国巡洋舰", "groupNameID": 64106, "iconID": 0, "published": 0, "useBasePrice": 0 }, "706": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 706, "groupName_de": "Mission: Schlachtschiff der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Battleship", "groupName_es": "Acorazado de misión de la República Minmatar", "groupName_fr": "Cuirassé République minmatar mission", "groupName_it": "Mission Minmatar Republic Battleship", "groupName_ja": "ミッションミンマター共和国戦艦", "groupName_ko": "미션 민마타 배틀쉽", "groupName_ru": "Линкор боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和国战列舰", "groupNameID": 64107, "iconID": 0, "published": 0, "useBasePrice": 0 }, "707": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 707, "groupName_de": "Sprungportalbereich", "groupName_en-us": "Jump Portal Array", "groupName_es": "Plataforma de portal de salto", "groupName_fr": "Module de portail hyperspatial", "groupName_it": "Jump Portal Array", "groupName_ja": "ジャンプポータル施設", "groupName_ko": "점프 포탈 시설", "groupName_ru": "Комплекс генерации гиперпортала", "groupName_zh": "跳跃通道阵列", "groupNameID": 64108, "iconID": 0, "published": 1, "useBasePrice": 1 }, "709": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 709, "groupName_de": "Scanner-Array", "groupName_en-us": "Scanner Array", "groupName_es": "Dársena de escáner", "groupName_fr": "Module de scanner", "groupName_it": "Scanner Array", "groupName_ja": "スキャナ施設", "groupName_ko": "스캐너 시설", "groupName_ru": "Локационная система", "groupName_zh": "扫描器阵列", "groupNameID": 64109, "iconID": 0, "published": 1, "useBasePrice": 1 }, "710": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 710, "groupName_de": "Logistik-Array", "groupName_en-us": "Logistics Array", "groupName_es": "Sistema de logística", "groupName_fr": "Module logistique", "groupName_it": "Logistics Array", "groupName_ja": "ロジスティック施設", "groupName_ko": "지원 시설", "groupName_ru": "Ремонтный комплекс", "groupName_zh": "后勤阵列", "groupNameID": 64110, "iconID": 0, "published": 0, "useBasePrice": 1 }, "711": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 711, "groupName_de": "Abbaubare Wolke", "groupName_en-us": "Harvestable Cloud", "groupName_es": "Nube cosechable", "groupName_fr": "Nuage exploitable", "groupName_it": "Harvestable Cloud", "groupName_ja": "採掘可能なガス雲", "groupName_ko": "추출 가능한 성운", "groupName_ru": "Газовое облако", "groupName_zh": "可采集云团", "groupNameID": 64111, "iconID": 0, "published": 1, "useBasePrice": 0 }, "712": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 712, "groupName_de": "Biochemisches Material", "groupName_en-us": "Biochemical Material", "groupName_es": "Material bioquímico", "groupName_fr": "Matériau biochimique", "groupName_it": "Biochemical Material", "groupName_ja": "有機原料", "groupName_ko": "생화학 자원", "groupName_ru": "Биохимические вещества", "groupName_zh": "生化材料", "groupNameID": 64112, "iconID": 0, "published": 1, "useBasePrice": 0 }, "715": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 715, "groupName_de": "Zerstörbare Agenten im All", "groupName_en-us": "Destructible Agents In Space", "groupName_es": "Agentes destructibles en el espacio", "groupName_fr": "Agents destructibles dans l'espace", "groupName_it": "Destructible Agents In Space", "groupName_ja": "航行中のエージェント(破壊可能)", "groupName_ko": "우주 내 파괴 가능한 에이전트", "groupName_ru": "Разрушаемые корабли агентов в космосе", "groupName_zh": "空间中可被击毁的代理人", "groupNameID": 64113, "iconID": 0, "published": 0, "useBasePrice": 0 }, "716": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 716, "groupName_de": "Datenschnittstellen", "groupName_en-us": "Data Interfaces", "groupName_es": "Interfaces de datos", "groupName_fr": "Interfaces de données", "groupName_it": "Data Interfaces", "groupName_ja": "データインターフェイス", "groupName_ko": "데이터 인터페이스", "groupName_ru": "Интерфейсы данных", "groupName_zh": "数据接口", "groupNameID": 64114, "iconID": 0, "published": 1, "useBasePrice": 0 }, "718": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 718, "groupName_de": "Booster-Blueprints", "groupName_en-us": "Booster Blueprints", "groupName_es": "Planos de potenciador", "groupName_fr": "Plans de construction Boosters", "groupName_it": "Booster Blueprints", "groupName_ja": "ブースターブループリント", "groupName_ko": "부스터 블루프린트", "groupName_ru": "Чертеж бустера", "groupName_zh": "增效体蓝图", "groupNameID": 64115, "iconID": 0, "published": 1, "useBasePrice": 0 }, "721": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 721, "groupName_de": "Temp", "groupName_en-us": "Temp", "groupName_es": "Temporal", "groupName_fr": "Temp", "groupName_it": "Temp", "groupName_ja": "一時的", "groupName_ko": "임시", "groupName_ru": "Temp", "groupName_zh": "temp", "groupNameID": 64116, "iconID": 0, "published": 0, "useBasePrice": 0 }, "722": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 722, "groupName_de": "Blueprint einer Fortgeschrittenen Hybrid-Ladung", "groupName_en-us": "Advanced Hybrid Charge Blueprint", "groupName_es": "Plano de carga híbrida avanzada", "groupName_fr": "Plan de construction Charge hybride avancée", "groupName_it": "Advanced Hybrid Charge Blueprint", "groupName_ja": "最新型ハイブリッド弾のブループリント", "groupName_ko": "상급 하이브리드 탄약 블루프린트", "groupName_ru": "Чертеж усовершенствованных гибридных зарядов", "groupName_zh": "高级混合弹药蓝图", "groupNameID": 64117, "published": 1, "useBasePrice": 1 }, "723": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 723, "groupName_de": "Traktorstrahl-Blueprint", "groupName_en-us": "Tractor Beam Blueprint", "groupName_es": "Plano de rayo tractor", "groupName_fr": "Plan de construction Rayon de tractage", "groupName_it": "Tractor Beam Blueprint", "groupName_ja": "トラクタービームブループリント", "groupName_ko": "트랙터 빔 블루프린트", "groupName_ru": "Чертежи гравизахвата", "groupName_zh": "牵引光束器蓝图", "groupNameID": 64118, "iconID": 349, "published": 1, "useBasePrice": 1 }, "724": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 724, "groupName_de": "Implantat-Blueprints", "groupName_en-us": "Implant Blueprints", "groupName_es": "Planos de implantes", "groupName_fr": "Plan de construction Implant", "groupName_it": "Implant Blueprints", "groupName_ja": "インプラントブループリント", "groupName_ko": "임플란트 블루프린트", "groupName_ru": "Чертежи имплантата", "groupName_zh": "植入体蓝图", "groupNameID": 64119, "iconID": 0, "published": 1, "useBasePrice": 1 }, "725": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 725, "groupName_de": "Fortgeschrittene-Projektilmunition-Blueprint", "groupName_en-us": "Advanced Projectile Ammo Blueprint", "groupName_es": "Plano de munición de proyectiles avanzada", "groupName_fr": "Plan de construction Munition de projectile avancée", "groupName_it": "Advanced Projectile Ammo Blueprint", "groupName_ja": "高性能プロジェクタイル弾ブループリント", "groupName_ko": "상급 발사체 탄약 블루프린트", "groupName_ru": "Чертеж усовершенствованного снаряда", "groupName_zh": "高级射弹弹药蓝图", "groupNameID": 64120, "published": 1, "useBasePrice": 1 }, "726": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 726, "groupName_de": "Fortgeschrittener-Frequenzkristall-Blueprint", "groupName_en-us": "Advanced Frequency Crystal Blueprint", "groupName_es": "Plano de cristal de frecuencia avanzado", "groupName_fr": "Plan de construction Cristal de fréquence avancé", "groupName_it": "Advanced Frequency Crystal Blueprint", "groupName_ja": "高性能フリーケンシークリスタルブループリント", "groupName_ko": "상급 프리퀀시 크리스탈 블루프린트", "groupName_ru": "Чертеж усовершенствованного частотного кристалла", "groupName_zh": "高级频率晶体蓝图", "groupNameID": 64121, "iconID": 0, "published": 1, "useBasePrice": 1 }, "727": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 727, "groupName_de": "Bergbaukristall-Blueprint", "groupName_en-us": "Mining Crystal Blueprint", "groupName_es": "Plano de cristal de minería", "groupName_fr": "Plan de construction Cristal d'extraction", "groupName_it": "Mining Crystal Blueprint", "groupName_ja": "採掘クリスタルブループリント", "groupName_ko": "채광용 크리스탈 블루프린트", "groupName_ru": "Чертеж кристалла настройки экстрактора", "groupName_zh": "采矿晶体蓝图", "groupNameID": 64122, "iconID": 0, "published": 1, "useBasePrice": 1 }, "728": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 728, "groupName_de": "Decoder - Amarr", "groupName_en-us": "Decryptors - Amarr", "groupName_es": "Desencriptadores amarrianos", "groupName_fr": "Décrypteurs - Amarr", "groupName_it": "Decryptors - Amarr", "groupName_ja": "解読器-アマー", "groupName_ko": "해독기 - 아마르", "groupName_ru": "Файлы данных — Amarr", "groupName_zh": "解码器—艾玛", "groupNameID": 64305, "iconID": 0, "published": 1, "useBasePrice": 0 }, "729": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 729, "groupName_de": "Decoder - Minmatar", "groupName_en-us": "Decryptors - Minmatar", "groupName_es": "Desencriptadores minmatariano", "groupName_fr": "Décrypteurs - Minmatar", "groupName_it": "Decryptors - Minmatar", "groupName_ja": "解読器-ミンマター", "groupName_ko": "해독기 - 민마타", "groupName_ru": "Файлы данных — Minmatar", "groupName_zh": "解码器—米玛塔尔", "groupNameID": 64308, "iconID": 0, "published": 1, "useBasePrice": 0 }, "730": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 730, "groupName_de": "Decoder - Gallente", "groupName_en-us": "Decryptors - Gallente", "groupName_es": "Desencriptadores gallentes", "groupName_fr": "Décrypteurs - Gallente", "groupName_it": "Decryptors - Gallente", "groupName_ja": "解読器-ガレンテ", "groupName_ko": "해독기 - 갈란테", "groupName_ru": "Файлы данных — Gallente", "groupName_zh": "解码器—盖伦特", "groupNameID": 64307, "iconID": 0, "published": 1, "useBasePrice": 0 }, "731": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 731, "groupName_de": "Decorder - Caldari", "groupName_en-us": "Decryptors - Caldari", "groupName_es": "Desencriptadores caldaris", "groupName_fr": "Décrypteurs - Caldari", "groupName_it": "Decryptors - Caldari", "groupName_ja": "解読器-カルダリ", "groupName_ko": "해독기 - 칼다리", "groupName_ru": "Файлы данных — Caldari", "groupName_zh": "解码器—加达里", "groupNameID": 64306, "iconID": 0, "published": 1, "useBasePrice": 0 }, "732": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 732, "groupName_de": "Decoder - Sleepers", "groupName_en-us": "Decryptors - Sleepers", "groupName_es": "Desencriptadores sleepers", "groupName_fr": "Décrypteurs - Sleepers", "groupName_it": "Decryptors - Sleepers", "groupName_ja": "解読器-スリーパー", "groupName_ko": "해독기 - 슬리퍼", "groupName_ru": "Файлы данных — Sleepers", "groupName_zh": "解码器—冬眠者", "groupNameID": 64123, "iconID": 0, "published": 1, "useBasePrice": 0 }, "733": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 733, "groupName_de": "Decoder - Yan Jung", "groupName_en-us": "Decryptors - Yan Jung", "groupName_es": "Desencriptadores de Yan Jung", "groupName_fr": "Décrypteurs - Yan Jung", "groupName_it": "Decryptors - Yan Jung", "groupName_ja": "解読器-ヤンユング", "groupName_ko": "해독기 - 얀 정", "groupName_ru": "Файлы данных — Yan Jung", "groupName_zh": "解码器—殷郡", "groupNameID": 64124, "iconID": 0, "published": 1, "useBasePrice": 0 }, "734": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 734, "groupName_de": "Decoder - Takmahl", "groupName_en-us": "Decryptors - Takmahl", "groupName_es": "Desencriptadores takmahls", "groupName_fr": "Décrypteurs - Takmahl", "groupName_it": "Decryptors - Takmahl", "groupName_ja": "解読器-タカマヒル", "groupName_ko": "해독기 - 타크말", "groupName_ru": "Файлы данных — Takmahl", "groupName_zh": "解码器—塔克玛", "groupNameID": 64125, "iconID": 0, "published": 1, "useBasePrice": 0 }, "735": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 735, "groupName_de": "Decoder - Talocan", "groupName_en-us": "Decryptors - Talocan", "groupName_es": "Desencriptadores de Talocan", "groupName_fr": "Décrypteurs - Talocan", "groupName_it": "Decryptors - Talocan", "groupName_ja": "解読器-タロカン", "groupName_ko": "해독기 - 탈로칸", "groupName_ru": "Файлы данных — Talocan", "groupName_zh": "解码器—塔洛迦", "groupNameID": 64126, "iconID": 0, "published": 1, "useBasePrice": 0 }, "737": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 737, "groupName_de": "Gaswolken-Schaufeln", "groupName_en-us": "Gas Cloud Scoops", "groupName_es": "Succionadores de nubes de gas", "groupName_fr": "Récupérateurs de nuages de gaz", "groupName_it": "Gas Cloud Scoops", "groupName_ja": "ガス雲スクープ", "groupName_ko": "가스 수집기", "groupName_ru": "Газочерпатели", "groupName_zh": "气云回收装置", "groupNameID": 64127, "iconID": 0, "published": 1, "useBasePrice": 0 }, "738": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 738, "groupName_de": "Cyber-Panzerung", "groupName_en-us": "Cyber Armor", "groupName_es": "Ciberblindaje", "groupName_fr": "Blindage cybernétique", "groupName_it": "Cyber Armor", "groupName_ja": "サイバーアーマー", "groupName_ko": "사이버 장갑", "groupName_ru": "Киберимплантат — броня", "groupName_zh": "脑控装甲", "groupNameID": 64128, "iconID": 0, "published": 1, "useBasePrice": 1 }, "739": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 739, "groupName_de": "Cyber-Drohnen", "groupName_en-us": "Cyber Drones", "groupName_es": "Ciberdrones", "groupName_fr": "Drones cybernétiques", "groupName_it": "Cyber Drones", "groupName_ja": "サイバードローン", "groupName_ko": "사이버 드론", "groupName_ru": "Киберимплантат — дроны", "groupName_zh": "脑控无人机", "groupNameID": 64129, "iconID": 0, "published": 1, "useBasePrice": 1 }, "740": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 740, "groupName_de": "Cyber Electronic Systems", "groupName_en-us": "Cyber Electronic Systems", "groupName_es": "Cibersistemas electrónicos", "groupName_fr": "Systèmes électroniques cybernétiques", "groupName_it": "Cyber Electronic Systems", "groupName_ja": "サイバー電子システム", "groupName_ko": "사이버 전자 시스템", "groupName_ru": "Киберимплантат — системы электронного противодействия", "groupName_zh": "脑控电子系统", "groupNameID": 64130, "iconID": 0, "published": 1, "useBasePrice": 1 }, "741": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 741, "groupName_de": "Cyber-Ingenieurwesen", "groupName_en-us": "Cyber Engineering", "groupName_es": "Ciberingeniería", "groupName_fr": "Ingénierie cybernétique", "groupName_it": "Cyber Engineering", "groupName_ja": "サイバーエンジニアリング", "groupName_ko": "사이버 엔지니어링", "groupName_ru": "Киберимплантат — инженерные навыки", "groupName_zh": "脑控工程学", "groupNameID": 64131, "iconID": 0, "published": 1, "useBasePrice": 1 }, "742": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 742, "groupName_de": "Cyber-Waffenkunde", "groupName_en-us": "Cyber Gunnery", "groupName_es": "Ciberartillería", "groupName_fr": "Armement cybernétique", "groupName_it": "Cyber Gunnery", "groupName_ja": "サイバーガンナリー", "groupName_ko": "사이버 터렛 조작", "groupName_ru": "Киберимплантат — управление орудиями", "groupName_zh": "脑控炮术学", "groupNameID": 64132, "iconID": 0, "published": 1, "useBasePrice": 1 }, "743": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 743, "groupName_de": "Cyber Production", "groupName_en-us": "Cyber Production", "groupName_es": "Ciberproducción", "groupName_fr": "Production cybernétique", "groupName_it": "Cyber Production", "groupName_ja": "サイバー生産", "groupName_ko": "사이버 생산", "groupName_ru": "Киберимплантат — производство", "groupName_zh": "脑控生产", "groupNameID": 64133, "iconID": 0, "published": 1, "useBasePrice": 1 }, "744": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 744, "groupName_de": "Cyber-Führung", "groupName_en-us": "Cyber Leadership", "groupName_es": "Ciberliderazgo", "groupName_fr": "Leadership cybernétique", "groupName_it": "Cyber Leadership", "groupName_ja": "サイバーリーダーシップ", "groupName_ko": "사이버 리더쉽", "groupName_ru": "Киберимплантат — лидерство", "groupName_zh": "脑控指挥", "groupNameID": 64134, "iconID": 0, "published": 1, "useBasePrice": 1 }, "745": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 745, "groupName_de": "Cyber-Bildung", "groupName_en-us": "Cyber Learning", "groupName_es": "Ciberaprendizaje", "groupName_fr": "Apprentissage cybernétique", "groupName_it": "Cyber Learning", "groupName_ja": "サイバー学習", "groupName_ko": "사이버네틱스", "groupName_ru": "Имплантируемый блок повышения обучаемости", "groupName_zh": "脑控学习", "groupNameID": 64135, "iconID": 0, "published": 1, "useBasePrice": 1 }, "746": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 746, "groupName_de": "Cyber-Rakete", "groupName_en-us": "Cyber Missile", "groupName_es": "Cibermisil", "groupName_fr": "Missile cybernétique", "groupName_it": "Cyber Missile", "groupName_ja": "サイバーミサイル", "groupName_ko": "사이버 미사일", "groupName_ru": "Киберимплантат — управление пусковыми установками", "groupName_zh": "脑控导弹", "groupNameID": 64136, "iconID": 0, "published": 1, "useBasePrice": 1 }, "747": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 747, "groupName_de": "Cyber-Navigation", "groupName_en-us": "Cyber Navigation", "groupName_es": "Cibernavegación", "groupName_fr": "Navigation cybernétique", "groupName_it": "Cyber Navigation", "groupName_ja": "サイバー航行技術", "groupName_ko": "사이버 항법", "groupName_ru": "Киберимплантат — навыки навигации", "groupName_zh": "脑控导航", "groupNameID": 64137, "iconID": 0, "published": 1, "useBasePrice": 1 }, "748": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 748, "groupName_de": "Cyber-Wissenschaft", "groupName_en-us": "Cyber Science", "groupName_es": "Ciberciencia", "groupName_fr": "Science cybernétique", "groupName_it": "Cyber Science", "groupName_ja": "サイバーサイエンス", "groupName_ko": "사이버 과학", "groupName_ru": "Киберимплантат — научные знания", "groupName_zh": "脑控科学", "groupNameID": 64138, "iconID": 0, "published": 1, "useBasePrice": 1 }, "749": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 749, "groupName_de": "Cyber-Schilde", "groupName_en-us": "Cyber Shields", "groupName_es": "Ciberescudos", "groupName_fr": "Boucliers cybernétiques", "groupName_it": "Cyber Shields", "groupName_ja": "サイバーシールド", "groupName_ko": "사이버 실드", "groupName_ru": "Киберимплантат — щиты", "groupName_zh": "脑控护盾", "groupNameID": 64139, "iconID": 0, "published": 1, "useBasePrice": 1 }, "750": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 750, "groupName_de": "Cyber-Ereignis", "groupName_en-us": "Cyber Social", "groupName_es": "Cibersocial", "groupName_fr": "Social cybernétique", "groupName_it": "Cyber Social", "groupName_ja": "サイバーソーシャル", "groupName_ko": "사이버 사교", "groupName_ru": "Киберимплантат — социальные навыки", "groupName_zh": "脑控社交增强", "groupNameID": 64140, "iconID": 0, "published": 1, "useBasePrice": 1 }, "751": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 751, "groupName_de": "Cyber-Handel", "groupName_en-us": "Cyber Trade", "groupName_es": "Cibercomercio", "groupName_fr": "Commerce cybernétique", "groupName_it": "Cyber Trade", "groupName_ja": "サイバートレード", "groupName_ko": "사이버 거래", "groupName_ru": "Киберимплантат — навыки торговли", "groupName_zh": "脑控贸易增强", "groupNameID": 64141, "iconID": 0, "published": 1, "useBasePrice": 1 }, "753": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 753, "groupName_de": "ECM-Verstärker", "groupName_en-us": "ECM Enhancer", "groupName_es": "Intensificador de ECM", "groupName_fr": "Optimisateur de CME", "groupName_it": "ECM Enhancer", "groupName_ja": "ECMエンハンサー", "groupName_ko": "ECM 향상장치", "groupName_ru": "Усилитель модулей РЭБ", "groupName_zh": "ECM增强器", "groupNameID": 64142, "iconID": 0, "published": 0, "useBasePrice": 0 }, "754": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 754, "groupName_de": "Geborgene Materialien", "groupName_en-us": "Salvaged Materials", "groupName_es": "Materiales recuperados", "groupName_fr": "Matériaux récupérés", "groupName_it": "Salvaged Materials", "groupName_ja": "サルベージされた資源", "groupName_ko": "샐비지 자원", "groupName_ru": "Демонтированные компоненты", "groupName_zh": "打捞材料", "groupNameID": 64143, "iconID": 0, "published": 1, "useBasePrice": 0 }, "755": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 755, "groupName_de": "Asteroiden: Raubdrohnen-Schlachtkreuzer", "groupName_en-us": "Asteroid Rogue Drone BattleCruiser", "groupName_es": "Crucero de combate de dron rebelde de asteroide", "groupName_fr": "Croiseur de bataille drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone BattleCruiser", "groupName_ja": "アステロイドローグドローン巡洋戦艦", "groupName_ko": "소행성 로그 드론 배틀크루저", "groupName_ru": "Линейный крейсер астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机战列巡洋舰", "groupNameID": 64144, "iconID": 0, "published": 0, "useBasePrice": 0 }, "756": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 756, "groupName_de": "Asteroiden: Raubdrohnen-Schlachtschiff", "groupName_en-us": "Asteroid Rogue Drone Battleship", "groupName_es": "Acorazado de asteroide de dron rebelde", "groupName_fr": "Cuirassé drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Battleship", "groupName_ja": "アステロイドローグドローン戦艦", "groupName_ko": "소행성 로그 드론 배틀쉽", "groupName_ru": "Линкор астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机战列舰", "groupNameID": 64145, "iconID": 0, "published": 0, "useBasePrice": 0 }, "757": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 757, "groupName_de": "Asteroiden: Raubdrohnen-Kreuzer", "groupName_en-us": "Asteroid Rogue Drone Cruiser", "groupName_es": "Crucero de dron rebelde de asteroide", "groupName_fr": "Croiseur drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Cruiser", "groupName_ja": "アステロイドローグドローン巡洋艦", "groupName_ko": "소행성 로그 드론 크루저", "groupName_ru": "Крейсер астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机巡洋舰", "groupNameID": 64146, "iconID": 0, "published": 0, "useBasePrice": 0 }, "758": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 758, "groupName_de": "Asteroiden: Raubdrohnen-Zerstörer", "groupName_en-us": "Asteroid Rogue Drone Destroyer", "groupName_es": "Destructor de dron rebelde de asteroide", "groupName_fr": "Destroyer drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Destroyer", "groupName_ja": "アステロイドローグドローン駆逐艦", "groupName_ko": "소행성 로그 드론 디스트로이어", "groupName_ru": "Эсминец астероидного патруля восставших дронов", "groupName_zh": "小行星无人机驱逐舰", "groupNameID": 64147, "iconID": 0, "published": 0, "useBasePrice": 0 }, "759": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 759, "groupName_de": "Asteroiden: Raubdrohnen-Fregatte", "groupName_en-us": "Asteroid Rogue Drone Frigate", "groupName_es": "Fragata de dron rebelde de asteroide", "groupName_fr": "Frégate drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Frigate", "groupName_ja": "アステロイドローグドローンフリゲート", "groupName_ko": "소행성 로그 드론 프리깃", "groupName_ru": "Фрегат астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机护卫舰", "groupNameID": 64148, "iconID": 0, "published": 0, "useBasePrice": 0 }, "760": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 760, "groupName_de": "Asteroiden: Raubdrohnen-Frachter", "groupName_en-us": "Asteroid Rogue Drone Hauler", "groupName_es": "Nave de mercancías de dron rebelde de asteroide", "groupName_fr": "Transporteur drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Hauler", "groupName_ja": "アステロイドローグドローンハウラー", "groupName_ko": "소행성 로그 드론 운반선", "groupName_ru": "Грузовик астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机运载舰", "groupNameID": 64149, "iconID": 0, "published": 0, "useBasePrice": 0 }, "761": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 761, "groupName_de": "Asteroiden: Raubdrohnen-Schwarm", "groupName_en-us": "Asteroid Rogue Drone Swarm", "groupName_es": "Enjambre de dron rebelde de asteroide", "groupName_fr": "Essaim drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Swarm", "groupName_ja": "アステロイドローグドローンスウォーム", "groupName_ko": "소행성 로그 드론 스웜", "groupName_ru": "Рой астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机蜂巢", "groupNameID": 64150, "iconID": 0, "published": 0, "useBasePrice": 0 }, "762": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 762, "groupName_de": "Trägheitsstabilisator", "groupName_en-us": "Inertial Stabilizer", "groupName_es": "Estabilizador inercial", "groupName_fr": "Stabilisateur d'inertie", "groupName_it": "Inertial Stabilizer", "groupName_ja": "慣性スタビライザー", "groupName_ko": "관성 안정기", "groupName_ru": "Инерционный стабилизатор", "groupName_zh": "惯性稳定器", "groupNameID": 64151, "iconID": 0, "published": 1, "useBasePrice": 0 }, "763": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 763, "groupName_de": "Struktur aus Nanofaser", "groupName_en-us": "Nanofiber Internal Structure", "groupName_es": "Estructura interna de nanofibra", "groupName_fr": "Structure interne en nanofibre", "groupName_it": "Nanofiber Internal Structure", "groupName_ja": "ナノファイバー内部構造材", "groupName_ko": "나노섬유 경량화 모듈", "groupName_ru": "Нановолоконная несущая конструкция", "groupName_zh": "纳米纤维内部构架", "groupNameID": 64152, "iconID": 0, "published": 1, "useBasePrice": 0 }, "764": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 764, "groupName_de": "Turboladersystem", "groupName_en-us": "Overdrive Injector System", "groupName_es": "Sistema inyector de sobrepotencia", "groupName_fr": "Système d'overdrive", "groupName_it": "Overdrive Injector System", "groupName_ja": "オーバードライブインジェクターシステム", "groupName_ko": "오버드라이브 주입기", "groupName_ru": "Система форсирования силовой установки", "groupName_zh": "超载喷注系统", "groupNameID": 64153, "iconID": 0, "published": 1, "useBasePrice": 0 }, "765": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 765, "groupName_de": "Erweiterter Frachtraum", "groupName_en-us": "Expanded Cargohold", "groupName_es": "Expansión de la bodega de carga", "groupName_fr": "Expansion de soute", "groupName_it": "Expanded Cargohold", "groupName_ja": "カーゴ容量追加", "groupName_ko": "화물 확장 모듈", "groupName_ru": "Расширение грузового отсека", "groupName_zh": "扩充货柜舱", "groupNameID": 64154, "iconID": 0, "published": 1, "useBasePrice": 0 }, "766": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 766, "groupName_de": "System zur Leistungsdiagnose", "groupName_en-us": "Power Diagnostic System", "groupName_es": "Sistema de diagnóstico de energía", "groupName_fr": "Système de diagnostic d'alimentation", "groupName_it": "Power Diagnostic System", "groupName_ja": "パワー計測システム", "groupName_ko": "전력 진단 시스템", "groupName_ru": "Диагностическая система энергосети", "groupName_zh": "能源诊断系统", "groupNameID": 64155, "iconID": 0, "published": 1, "useBasePrice": 0 }, "767": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 767, "groupName_de": "Energiespeicher-Stromrelais", "groupName_en-us": "Capacitor Power Relay", "groupName_es": "Relé de potencia de condensador", "groupName_fr": "Relais de puissance pour capaciteur", "groupName_it": "Capacitor Power Relay", "groupName_ja": "キャパシタパワーリレー", "groupName_ko": "캐패시터 릴레이", "groupName_ru": "Модуль передачи мощности на конденсатор", "groupName_zh": "电容能源继电器", "groupNameID": 64156, "iconID": 26455, "published": 1, "useBasePrice": 0 }, "768": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 768, "groupName_de": "Energiespeicher-Durchflussmengenspule", "groupName_en-us": "Capacitor Flux Coil", "groupName_es": "Bobina de flujo de condensador", "groupName_fr": "Bobine de flux pour capaciteur", "groupName_it": "Capacitor Flux Coil", "groupName_ja": "キャパシタフラックスコイル", "groupName_ko": "캐패시터 플럭스 코일", "groupName_ru": "Ускоритель подзарядки конденсатора", "groupName_zh": "电容通量线圈", "groupNameID": 64157, "iconID": 26456, "published": 1, "useBasePrice": 0 }, "769": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 769, "groupName_de": "Reaktor-Kontrolleinheiten", "groupName_en-us": "Reactor Control Unit", "groupName_es": "Unidad de control de reactor", "groupName_fr": "Unité de contrôle du réacteur", "groupName_it": "Reactor Control Unit", "groupName_ja": "リアクター制御装置", "groupName_ko": "반응로 제어유닛", "groupName_ru": "Блок управления реактором", "groupName_zh": "反应堆控制元件", "groupNameID": 64158, "iconID": 0, "published": 1, "useBasePrice": 0 }, "770": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 770, "groupName_de": "Schild-Durchflussmengenspule", "groupName_en-us": "Shield Flux Coil", "groupName_es": "Bobina de flujo de escudo", "groupName_fr": "Bobine de flux de bouclier", "groupName_it": "Shield Flux Coil", "groupName_ja": "シールドフラックスコイル", "groupName_ko": "실드 플럭스 코일", "groupName_ru": "Ускоритель подзарядки щита", "groupName_zh": "护盾通量线圈", "groupNameID": 64159, "iconID": 26449, "published": 1, "useBasePrice": 0 }, "771": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 771, "groupName_de": "Missile Launcher Heavy Assault", "groupName_en-us": "Missile Launcher Heavy Assault", "groupName_es": "Asalto pesado de lanzamisiles", "groupName_fr": "Lance-missiles d'assaut lourd", "groupName_it": "Missile Launcher Heavy Assault", "groupName_ja": "ミサイルランチャー(ヘビーアサルト)", "groupName_ko": "헤비 어썰트 미사일 런처", "groupName_ru": "Пусковая установка облегчённых ракет большой мощности", "groupName_zh": "重型攻击导弹发射器", "groupNameID": 64160, "iconID": 3241, "published": 1, "useBasePrice": 0 }, "772": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 772, "groupName_de": "Schwere Angriffslenkwaffe", "groupName_en-us": "Heavy Assault Missile", "groupName_es": "Misil de asalto pesado", "groupName_fr": "Missile d'assaut lourd", "groupName_it": "Heavy Assault Missile", "groupName_ja": "ヘビーアサルトミサイル", "groupName_ko": "헤비 어썰트 미사일", "groupName_ru": "Облегчённая ракета большой мощности", "groupName_zh": "重型攻击导弹", "groupNameID": 64161, "iconID": 3237, "published": 1, "useBasePrice": 0 }, "773": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 773, "groupName_de": "Rigg-Panzerung", "groupName_en-us": "Rig Armor", "groupName_es": "Blindaje de complemento", "groupName_fr": "Blindage optimisé", "groupName_it": "Rig Armor", "groupName_ja": "リグ(アーマー)", "groupName_ko": "장갑 리그", "groupName_ru": "Тюнинг-модуль — броня", "groupName_zh": "装甲改装件", "groupNameID": 64162, "iconID": 0, "published": 1, "useBasePrice": 0 }, "774": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 774, "groupName_de": "Rigg-Schild", "groupName_en-us": "Rig Shield", "groupName_es": "Escudo de complemento", "groupName_fr": "Bouclier optimisé", "groupName_it": "Rig Shield", "groupName_ja": "リグ(シールド)", "groupName_ko": "실드 리그", "groupName_ru": "Тюнинг-модуль — щит", "groupName_zh": "护盾改装件", "groupNameID": 64163, "iconID": 0, "published": 1, "useBasePrice": 0 }, "775": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 775, "groupName_de": "Rigg-Energiewaffe", "groupName_en-us": "Rig Energy Weapon", "groupName_es": "Arma de energía de complemento", "groupName_fr": "Arme à énergie optimisée", "groupName_it": "Rig Energy Weapon", "groupName_ja": "リグ(エネルギー兵器)", "groupName_ko": "에너지 무기 리그", "groupName_ru": "Тюнинг-модуль — лазерное оружие", "groupName_zh": "能量武器改造件", "groupNameID": 64164, "iconID": 0, "published": 1, "useBasePrice": 0 }, "776": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 776, "groupName_de": "Rigg-Hybridwaffe", "groupName_en-us": "Rig Hybrid Weapon", "groupName_es": "Arma híbrida de complemento", "groupName_fr": "Arme hybride optimisée", "groupName_it": "Rig Hybrid Weapon", "groupName_ja": "リグ(ハイブリッド兵器)", "groupName_ko": "하이브리드 무기 리그", "groupName_ru": "Тюнинг-модуль — гибридное оружие", "groupName_zh": "混合武器改装件", "groupNameID": 64165, "iconID": 0, "published": 1, "useBasePrice": 0 }, "777": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 777, "groupName_de": "Rigg-Projektilwaffe", "groupName_en-us": "Rig Projectile Weapon", "groupName_es": "Arma de proyectiles de complemento", "groupName_fr": "Arme à projectiles optimisée", "groupName_it": "Rig Projectile Weapon", "groupName_ja": "リグ(プロジェクタイル兵器)", "groupName_ko": "발사체 무기 리그", "groupName_ru": "Тюнинг-модуль — баллистическое оружие", "groupName_zh": "射弹武器改装件", "groupNameID": 64166, "iconID": 0, "published": 1, "useBasePrice": 0 }, "778": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 778, "groupName_de": "Rigg-Drohnen", "groupName_en-us": "Rig Drones", "groupName_es": "Drones de complemento", "groupName_fr": "Drones optimisés", "groupName_it": "Rig Drones", "groupName_ja": "リグ(ドローン)", "groupName_ko": "드론 리그", "groupName_ru": "Тюнинг-модуль — дроны", "groupName_zh": "无人机改装件", "groupNameID": 64167, "iconID": 0, "published": 1, "useBasePrice": 0 }, "779": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 779, "groupName_de": "Riggwerfer", "groupName_en-us": "Rig Launcher", "groupName_es": "Lanzador de complementos", "groupName_fr": "Lanceur optimisé", "groupName_it": "Rig Launcher", "groupName_ja": "リグ(ランチャー)", "groupName_ko": "런처 리그", "groupName_ru": "Тюнинг-модуль — ракетное оружие", "groupName_zh": "发射器改装件", "groupNameID": 64168, "iconID": 0, "published": 1, "useBasePrice": 0 }, "781": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 781, "groupName_de": "Rig Core", "groupName_en-us": "Rig Core", "groupName_es": "Núcleo de complemento", "groupName_fr": "Noyau optimisé", "groupName_it": "Rig Core", "groupName_ja": "リグ - コア", "groupName_ko": "코어 리그", "groupName_ru": "Тюнинг-модуль — энергосеть", "groupName_zh": "改装件核心", "groupNameID": 64170, "iconID": 0, "published": 1, "useBasePrice": 0 }, "782": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 782, "groupName_de": "Rig Navigation", "groupName_en-us": "Rig Navigation", "groupName_es": "Navegación de complementos", "groupName_fr": "Navigation optimisée", "groupName_it": "Rig Navigation", "groupName_ja": "リグ - 宇宙航行", "groupName_ko": "항법 리그", "groupName_ru": "Тюнинг-модуль — астронавигация", "groupName_zh": "改装件导航", "groupNameID": 64171, "iconID": 0, "published": 1, "useBasePrice": 0 }, "783": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 783, "groupName_de": "Cyber-Kreuz-Besonderheiten", "groupName_en-us": "Cyber X Specials", "groupName_es": "Ciberefectos especiales", "groupName_fr": "Spéciaux cyber X", "groupName_it": "Cyber X Specials", "groupName_ja": "サイバーXスペシャル", "groupName_ko": "사이버 X 스페셜", "groupName_ru": "Киберимплантат спецназначения", "groupName_zh": "脑控X特殊增强", "groupNameID": 64172, "iconID": 0, "published": 1, "useBasePrice": 1 }, "784": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 784, "groupName_de": "Großes, statisches Schiff", "groupName_en-us": "Large Collidable Ship", "groupName_es": "Nave colisionable grande", "groupName_fr": "Grand vaisseau solide", "groupName_it": "Large Collidable Ship", "groupName_ja": "大型船(破壊可能)", "groupName_ko": "대형 충돌체 (함선)", "groupName_ru": "Материальный корабль", "groupName_zh": "大型可撞击船只", "groupNameID": 64408, "iconID": 0, "published": 0, "useBasePrice": 0 }, "786": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 786, "groupName_de": "Rig Electronic Systems", "groupName_en-us": "Rig Electronic Systems", "groupName_es": "Sistemas electrónicos de complemento", "groupName_fr": "Systèmes électroniques optimisés", "groupName_it": "Rig Electronic Systems", "groupName_ja": "リグ - 電子システム", "groupName_ko": "전자 시스템 리그", "groupName_ru": "Тюнинг-модуль — системы электронного противодействия", "groupName_zh": "改装件电子系统", "groupNameID": 64173, "iconID": 0, "published": 1, "useBasePrice": 0 }, "787": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 787, "groupName_de": "Rigg-Blueprint", "groupName_en-us": "Rig Blueprint", "groupName_es": "Plano de complementos", "groupName_fr": "Plan de construction optimisé", "groupName_it": "Rig Blueprint", "groupName_ja": "リグブループリント", "groupName_ko": "리그 블루프린트", "groupName_ru": "Чертежи тюнинг-модуля", "groupName_zh": "改装件蓝图", "groupNameID": 64174, "iconID": 76, "published": 1, "useBasePrice": 1 }, "789": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 789, "groupName_de": "Asteroiden: Angel Cartel-Kommandeurfregatte", "groupName_en-us": "Asteroid Angel Cartel Commander Frigate", "groupName_es": "Fragata de comandante de asteroides del Cártel de los Ángeles", "groupName_fr": "Frégate de commandement cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Commander Frigate", "groupName_ja": "アステロイドエンジェルカルテル司令官フリゲート", "groupName_ko": "소행성 엔젤 카르텔 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля Картеля Angel", "groupName_zh": "小行星天使集团指挥官护卫舰", "groupNameID": 64175, "iconID": 0, "published": 0, "useBasePrice": 0 }, "790": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 790, "groupName_de": "Asteroiden: Angel Cartel-Kommandeurkreuzer", "groupName_en-us": "Asteroid Angel Cartel Commander Cruiser", "groupName_es": "Crucero de comandante de asteroides del Cártel de los Ángeles", "groupName_fr": "Croiseur de commandement cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Commander Cruiser", "groupName_ja": "アステロイドエンジェルカルテル司令官巡洋艦", "groupName_ko": "소행성 엔젤 카르텔 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля Картеля Angel", "groupName_zh": "小行星天使集团指挥官巡洋舰", "groupNameID": 64176, "iconID": 0, "published": 0, "useBasePrice": 0 }, "791": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 791, "groupName_de": "Asteroiden: Blood Raiders-Kommandeurkreuzer", "groupName_en-us": "Asteroid Blood Raiders Commander Cruiser", "groupName_es": "Crucero de comandante de asteroides de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur de commandement blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Commander Cruiser", "groupName_ja": "アステロイドブラッドレイダー司令官巡洋艦", "groupName_ko": "소행성 블러드 레이더 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者指挥官巡洋舰", "groupNameID": 64177, "iconID": 0, "published": 0, "useBasePrice": 0 }, "792": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 792, "groupName_de": "Asteroiden: Blood Raiders-Kommandeurfregatte", "groupName_en-us": "Asteroid Blood Raiders Commander Frigate", "groupName_es": "Fragata de comandante de asteroides de los Saqueadores Sanguinarios", "groupName_fr": "Frégate de commandement blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Commander Frigate", "groupName_ja": "アステロイドブラッドレイダー司令官フリゲート", "groupName_ko": "소행성 블러드 레이더 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者指挥官护卫舰", "groupNameID": 64178, "iconID": 0, "published": 0, "useBasePrice": 0 }, "793": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 793, "groupName_de": "Asteroiden: Angel Cartel-Kommandeur-Schlachtkreuzer", "groupName_en-us": "Asteroid Angel Cartel Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de asteroides del Cártel de los Ángeles", "groupName_fr": "Croiseur de bataille de commandement cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Commander BattleCruiser", "groupName_ja": "アステロイドエンジェルカルテル司令官巡洋戦艦", "groupName_ko": "소행성 엔젤 카르텔 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля Картеля Angel", "groupName_zh": "小行星天使集团指挥官战列巡洋舰", "groupNameID": 64179, "iconID": 0, "published": 0, "useBasePrice": 0 }, "794": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 794, "groupName_de": "Asteroiden: Angel Cartel-Kommandeurzerstörer", "groupName_en-us": "Asteroid Angel Cartel Commander Destroyer", "groupName_es": "Destructor de comandante de asteroides del Cártel de los Ángeles", "groupName_fr": "Destroyer de commandement cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Commander Destroyer", "groupName_ja": "アステロイドエンジェルカルテル司令官駆逐艦", "groupName_ko": "소행성 엔젤 카르텔 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля Картеля Angel", "groupName_zh": "小行星天使集团指挥官驱逐舰", "groupNameID": 64180, "iconID": 0, "published": 0, "useBasePrice": 0 }, "795": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 795, "groupName_de": "Asteroiden: Blood Raiders-Kommandeur-Schlachtkreuzer", "groupName_en-us": "Asteroid Blood Raiders Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de asteroides de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur de bataille de commandement blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Commander BattleCruiser", "groupName_ja": "アステロイドブラッドレイダー司令官巡洋戦艦", "groupName_ko": "소행성 블러드 레이더 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者指挥官战列巡洋舰", "groupNameID": 64181, "iconID": 0, "published": 0, "useBasePrice": 0 }, "796": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 796, "groupName_de": "Asteroiden: Blood Raiders-Kommandeurzerstörer", "groupName_en-us": "Asteroid Blood Raiders Commander Destroyer", "groupName_es": "Destructor de comandante de asteroides de los Saqueadores Sanguinarios", "groupName_fr": "Destroyer de commandement blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Commander Destroyer", "groupName_ja": "アステロイドブラッドレイダー司令官駆逐艦", "groupName_ko": "소행성 블러드 레이더 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者指挥官驱逐舰", "groupNameID": 64182, "iconID": 0, "published": 0, "useBasePrice": 0 }, "797": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 797, "groupName_de": "Asteroiden: Guristas-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Guristas Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de asteroides de los Guristas", "groupName_fr": "Croiseur de bataille de commandement guristas astéroïde", "groupName_it": "Asteroid Guristas Commander BattleCruiser", "groupName_ja": "アステロイドガリスタス司令官巡洋戦艦", "groupName_ko": "소행성 구리스타스 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯指挥官战列巡洋舰", "groupNameID": 64183, "iconID": 0, "published": 0, "useBasePrice": 0 }, "798": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 798, "groupName_de": "Asteroiden: Guristas-Kommandeurkreuzer", "groupName_en-us": "Asteroid Guristas Commander Cruiser", "groupName_es": "Crucero de comandante de asteroides de los Guristas", "groupName_fr": "Croiseur de commandement guristas astéroïde", "groupName_it": "Asteroid Guristas Commander Cruiser", "groupName_ja": "アステロイドガリスタス司令官巡洋艦", "groupName_ko": "소행성 구리스타스 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯指挥官巡洋舰", "groupNameID": 64184, "iconID": 0, "published": 0, "useBasePrice": 0 }, "799": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 799, "groupName_de": "Asteroiden: Guristas-Kommandeurzerstörer", "groupName_en-us": "Asteroid Guristas Commander Destroyer", "groupName_es": "Destructor de comandante de asteroide de los Guristas", "groupName_fr": "Destroyer de commandement guristas astéroïde", "groupName_it": "Asteroid Guristas Commander Destroyer", "groupName_ja": "アステロイドガリスタス司令官駆逐艦", "groupName_ko": "소행성 구리스타스 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯指挥官驱逐舰", "groupNameID": 64185, "iconID": 0, "published": 0, "useBasePrice": 0 }, "800": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 800, "groupName_de": "Asteroiden: Guristas-Kommandeurfregatte", "groupName_en-us": "Asteroid Guristas Commander Frigate", "groupName_es": "Fragata de comandante de asteroide de los Guristas", "groupName_fr": "Frégate de commandement guristas astéroïde", "groupName_it": "Asteroid Guristas Commander Frigate", "groupName_ja": "アステロイドガリスタス司令官フリゲート", "groupName_ko": "소행성 구리스타스 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯指挥官护卫舰", "groupNameID": 64186, "iconID": 0, "published": 0, "useBasePrice": 0 }, "801": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 801, "groupName_de": "Raumverwerfung: Raubdrohnen-Schlachtkreuzer", "groupName_en-us": "Deadspace Rogue Drone BattleCruiser", "groupName_es": "Crucero de combate de dron rebelde del espacio muerto", "groupName_fr": "Croiseur de bataille de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone BattleCruiser", "groupName_ja": "デッドスペースローグドローン巡洋戦艦", "groupName_ko": "데드스페이스 로그 드론 배틀크루저", "groupName_ru": "Линейный крейсер дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机战列巡洋舰", "groupNameID": 64187, "iconID": 0, "published": 0, "useBasePrice": 0 }, "802": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 802, "groupName_de": "Raumverwerfung: Raubdrohnen-Schlachtschiff", "groupName_en-us": "Deadspace Rogue Drone Battleship", "groupName_es": "Acorazado de dron rebelde del espacio muerto", "groupName_fr": "Cuirassé de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone Battleship", "groupName_ja": "デッドスペースローグドローン戦艦", "groupName_ko": "데드스페이스 로그 드론 배틀쉽", "groupName_ru": "Линкор дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机战列舰", "groupNameID": 64188, "iconID": 0, "published": 0, "useBasePrice": 0 }, "803": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 803, "groupName_de": "Raumverwerfung: Raubdrohnen-Kreuzer", "groupName_en-us": "Deadspace Rogue Drone Cruiser", "groupName_es": "Crucero dron rebelde del espacio muerto", "groupName_fr": "Croiseur de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone Cruiser", "groupName_ja": "デッドスペースローグドローン巡洋艦", "groupName_ko": "데드스페이스 로그 드론 크루저", "groupName_ru": "Крейсер дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机巡洋舰", "groupNameID": 64189, "iconID": 0, "published": 0, "useBasePrice": 0 }, "804": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 804, "groupName_de": "Raumverwerfung: Raubdrohnen-Zerstörer", "groupName_en-us": "Deadspace Rogue Drone Destroyer", "groupName_es": "Destructor de dron rebelde del espacio muerto", "groupName_fr": "Destroyer de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone Destroyer", "groupName_ja": "デッドスペースローグドローン駆逐艦", "groupName_ko": "데드스페이스 로그 드론 디스트로이어", "groupName_ru": "Эсминец дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机驱逐舰", "groupNameID": 64190, "iconID": 0, "published": 0, "useBasePrice": 0 }, "805": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 805, "groupName_de": "Raumverwerfung: Raubdrohnen-Fregatte", "groupName_en-us": "Deadspace Rogue Drone Frigate", "groupName_es": "Fragata de dron rebelde del espacio muerto", "groupName_fr": "Frégate de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone Frigate", "groupName_ja": "デッドスペースローグドローンフリゲート", "groupName_ko": "데드스페이스 로그 드론 프리깃", "groupName_ru": "Фрегат дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机护卫舰", "groupNameID": 64191, "iconID": 0, "published": 0, "useBasePrice": 0 }, "806": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 806, "groupName_de": "Raumverwerfung: Raubdrohnen-Schwarm", "groupName_en-us": "Deadspace Rogue Drone Swarm", "groupName_es": "Enjambre de dron rebelde del espacio muerto", "groupName_fr": "Essaim de commandement drone renégat Deadspace", "groupName_it": "Deadspace Rogue Drone Swarm", "groupName_ja": "デッドスペースローグドローンスウォーム", "groupName_ko": "데드스페이스 로그 드론 스웜", "groupName_ru": "Рой дэдспейса восставших дронов", "groupName_zh": "死亡空间自由无人机集群", "groupNameID": 64192, "iconID": 0, "published": 0, "useBasePrice": 0 }, "807": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 807, "groupName_de": "Asteroiden: Sansha's Nation-Kommandeur-Schlachtkreuzer", "groupName_en-us": "Asteroid Sansha's Nation Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de asteroide de la Nación Sansha", "groupName_fr": "Croiseur de bataille de commandement Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Commander BattleCruiser", "groupName_ja": "アステロイドサンシャ国司令官巡洋戦艦", "groupName_ko": "소행성 산샤 네이션 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国指挥官战列巡洋舰", "groupNameID": 64193, "iconID": 0, "published": 0, "useBasePrice": 0 }, "808": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 808, "groupName_de": "Asteroiden: Sansha's Nation-Kommandeurkreuzer", "groupName_en-us": "Asteroid Sansha's Nation Commander Cruiser", "groupName_es": "Crucero de comandante de asteroide de la Nación Sansha", "groupName_fr": "Croiseur de commandement Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Commander Cruiser", "groupName_ja": "アステロイドサンシャ国司令官巡洋艦", "groupName_ko": "소행성 산샤 네이션 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国指挥官巡洋舰", "groupNameID": 64194, "iconID": 0, "published": 0, "useBasePrice": 0 }, "809": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 809, "groupName_de": "Asteroiden: Sansha's Nation-Kommandeurzerstörer", "groupName_en-us": "Asteroid Sansha's Nation Commander Destroyer", "groupName_es": "Destructor de comandante de asteroides de la Nación Sansha", "groupName_fr": "Destroyer de commandement Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Commander Destroyer", "groupName_ja": "アステロイドサンシャ国司令官駆逐艦", "groupName_ko": "소행성 산샤 네이션 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国指挥官驱逐舰", "groupNameID": 64195, "iconID": 0, "published": 0, "useBasePrice": 0 }, "810": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 810, "groupName_de": "Asteroiden: Sansha's Nation-Kommandeurfregatte", "groupName_en-us": "Asteroid Sansha's Nation Commander Frigate", "groupName_es": "Fragata de comandante de asteroide de la Nación Sansha", "groupName_fr": "Frégate de commandement Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Commander Frigate", "groupName_ja": "アステロイドサンシャ国司令官フリゲート", "groupName_ko": "소행성 산샤 네이션 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国指挥官护卫舰", "groupNameID": 64196, "iconID": 0, "published": 0, "useBasePrice": 0 }, "811": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 811, "groupName_de": "Asteroiden: Serpentis-Kommandeur-Schlachtkreuzer", "groupName_en-us": "Asteroid Serpentis Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de asteroide de Serpentis", "groupName_fr": "Croiseur de bataille de commandement serpentis astéroïde", "groupName_it": "Asteroid Serpentis Commander BattleCruiser", "groupName_ja": "アステロイドサーペンティス司令官巡洋戦艦", "groupName_ko": "소행성 서펜티스 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团指挥官战列巡洋舰", "groupNameID": 64197, "iconID": 0, "published": 0, "useBasePrice": 0 }, "812": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 812, "groupName_de": "Asteroiden: Serpentis-Kommandeurkreuzer", "groupName_en-us": "Asteroid Serpentis Commander Cruiser", "groupName_es": "Crucero de comandante de asteroide de Serpentis", "groupName_fr": "Croiseur de commandement serpentis astéroïde", "groupName_it": "Asteroid Serpentis Commander Cruiser", "groupName_ja": "アステロイドサーペンティス司令官巡洋艦", "groupName_ko": "소행성 서펜티스 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团指挥官巡洋舰", "groupNameID": 64198, "iconID": 0, "published": 0, "useBasePrice": 0 }, "813": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 813, "groupName_de": "Asteroiden: Serpentis-Kommandeurzerstörer", "groupName_en-us": "Asteroid Serpentis Commander Destroyer", "groupName_es": "Destructor de comandante de asteroide de Serpentis", "groupName_fr": "Destroyer de commandement serpentis astéroïde", "groupName_it": "Asteroid Serpentis Commander Destroyer", "groupName_ja": "アステロイドサーペンティス司令官駆逐艦", "groupName_ko": "소행성 서펜티스 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团指挥官驱逐舰", "groupNameID": 64199, "iconID": 0, "published": 0, "useBasePrice": 0 }, "814": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 814, "groupName_de": "Asteroiden: Serpentis-Kommandeurfregatte", "groupName_en-us": "Asteroid Serpentis Commander Frigate", "groupName_es": "Fragata de comandante de asteroide de Serpentis", "groupName_fr": "Frégate de commandement serpentis astéroïde", "groupName_it": "Asteroid Serpentis Commander Frigate", "groupName_ja": "アステロイドサーペンティス司令官フリゲート", "groupName_ko": "소행성 서펜티스 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля Serpentis", "groupName_zh": "小行星天蛇集团指挥官护卫舰", "groupNameID": 64200, "iconID": 0, "published": 0, "useBasePrice": 0 }, "815": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 815, "groupName_de": "Hangar für Klonbehältnis", "groupName_en-us": "Clone Vat Bay", "groupName_es": "Plataforma de contenedores de clonación", "groupName_fr": "Plateforme de clonage", "groupName_it": "Clone Vat Bay", "groupName_ja": "クローンバットベイ", "groupName_ko": "점프 클론 격납고", "groupName_ru": "Бортовая клон-станция", "groupName_zh": "克隆舱", "groupNameID": 64201, "iconID": 0, "published": 1, "useBasePrice": 0 }, "816": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 816, "groupName_de": "Missionen: Standard-Schlachtschiffe", "groupName_en-us": "Mission Generic Battleships", "groupName_es": "Acorazados de misión genéricos", "groupName_fr": "Cuirassés génériques mission", "groupName_it": "Mission Generic Battleships", "groupName_ja": "ミッション一般戦艦", "groupName_ko": "미션 일반 배틀쉽", "groupName_ru": "Линкоры боевой группы", "groupName_zh": "任务通用战列舰", "groupNameID": 64202, "iconID": 0, "published": 0, "useBasePrice": 0 }, "817": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 817, "groupName_de": "Missionen: Standardkreuzer", "groupName_en-us": "Mission Generic Cruisers", "groupName_es": "Cruceros de misión genéricos", "groupName_fr": "Croiseurs génériques mission", "groupName_it": "Mission Generic Cruisers", "groupName_ja": "ミッション一般巡洋艦", "groupName_ko": "미션 일반 크루저", "groupName_ru": "Крейсеры боевой группы", "groupName_zh": "任务通用巡洋舰", "groupNameID": 64203, "iconID": 0, "published": 0, "useBasePrice": 0 }, "818": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 818, "groupName_de": "Missionen: Standardfregatte", "groupName_en-us": "Mission Generic Frigates", "groupName_es": "Fragatas de misión genéricas", "groupName_fr": "Frégates génériques mission", "groupName_it": "Mission Generic Frigates", "groupName_ja": "ミッション一般フリゲート", "groupName_ko": "미션 일반 프리깃", "groupName_ru": "Фрегаты боевой группы", "groupName_zh": "任务通用护卫舰", "groupNameID": 64204, "iconID": 0, "published": 0, "useBasePrice": 0 }, "819": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 819, "groupName_de": "Raumverwerfung: Aufseherfregatte", "groupName_en-us": "Deadspace Overseer Frigate", "groupName_es": "Fragata de vigilante del espacio muerto", "groupName_fr": "Frégate de surveillance Deadspace", "groupName_it": "Deadspace Overseer Frigate", "groupName_ja": "デッドスペース監督フリゲート", "groupName_ko": "데드스페이스 오버시어 프리깃", "groupName_ru": "Фрегат смотрителя дэдспейса", "groupName_zh": "死亡空间监察官护卫舰", "groupNameID": 64205, "iconID": 0, "published": 0, "useBasePrice": 0 }, "820": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 820, "groupName_de": "Raumverwerfung: Aufseherkreuzer", "groupName_en-us": "Deadspace Overseer Cruiser", "groupName_es": "Crucero de vigilante del espacio muerto", "groupName_fr": "Croiseur de surveillance Deadspace", "groupName_it": "Deadspace Overseer Cruiser", "groupName_ja": "デッドスペース監督巡洋艦", "groupName_ko": "데드스페이스 오버시어 크루저", "groupName_ru": "Крейсер смотрителя дэдспейса", "groupName_zh": "死亡空间监察官巡洋舰", "groupNameID": 64206, "iconID": 0, "published": 0, "useBasePrice": 0 }, "821": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 821, "groupName_de": "Raumverwerfung: Aufseher-Schlachtschiff", "groupName_en-us": "Deadspace Overseer Battleship", "groupName_es": "Acorazado de vigilante del espacio muerto", "groupName_fr": "Cuirassé de surveillance Deadspace", "groupName_it": "Deadspace Overseer Battleship", "groupName_ja": "デッドスペース監督戦艦", "groupName_ko": "데드스페이스 오버시어 배틀쉽", "groupName_ru": "Линкор смотрителя дэдспейса", "groupName_zh": "死亡空间监察官战列舰", "groupNameID": 64207, "iconID": 0, "published": 0, "useBasePrice": 0 }, "822": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 822, "groupName_de": "Missionen: Thukker-Schlachtkreuzer", "groupName_en-us": "Mission Thukker Battlecruiser", "groupName_es": "Crucero de combate de misión thukker", "groupName_fr": "Croiseur de bataille thukker mission", "groupName_it": "Mission Thukker Battlecruiser", "groupName_ja": "ミッションサッカー巡洋戦艦", "groupName_ko": "미션 터커 배틀크루저", "groupName_ru": "Линейный крейсер боевой группы Thukker", "groupName_zh": "任务图克尔战列巡洋舰", "groupNameID": 64208, "iconID": 0, "published": 0, "useBasePrice": 0 }, "823": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 823, "groupName_de": "Missionen: Thukker-Schlachtschiff", "groupName_en-us": "Mission Thukker Battleship", "groupName_es": "Acorazado de misión de Thukker", "groupName_fr": "Cuirassé thukker mission", "groupName_it": "Mission Thukker Battleship", "groupName_ja": "ミッションサッカー戦艦", "groupName_ko": "미션 터커 배틀쉽", "groupName_ru": "Линкор боевой группы Thukker", "groupName_zh": "任务图克尔战列舰", "groupNameID": 64209, "iconID": 0, "published": 0, "useBasePrice": 0 }, "824": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 824, "groupName_de": "Missionen: Thukker-Kreuzer", "groupName_en-us": "Mission Thukker Cruiser", "groupName_es": "Crucero de misión de Thukker", "groupName_fr": "Croiseur thukker mission", "groupName_it": "Mission Thukker Cruiser", "groupName_ja": "ミッションサッカー巡洋艦", "groupName_ko": "미션 터커 크루저", "groupName_ru": "Крейсер боевой группы Thukker", "groupName_zh": "任务图克尔巡洋舰", "groupNameID": 64210, "iconID": 0, "published": 0, "useBasePrice": 0 }, "825": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 825, "groupName_de": "Missionen: Thukker-Zerstörer", "groupName_en-us": "Mission Thukker Destroyer", "groupName_es": "Destructor de misión de Thukker", "groupName_fr": "Destroyer thukker mission", "groupName_it": "Mission Thukker Destroyer", "groupName_ja": "ミッションサッカー駆逐艦", "groupName_ko": "미션 터커 디스트로이어", "groupName_ru": "Эсминец боевой группы Thukker", "groupName_zh": "任务图克尔驱逐舰", "groupNameID": 64211, "iconID": 0, "published": 0, "useBasePrice": 0 }, "826": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 826, "groupName_de": "Missionen: Thukker-Fregatte", "groupName_en-us": "Mission Thukker Frigate", "groupName_es": "Fragata de misión de Thukker", "groupName_fr": "Frégate thukker mission", "groupName_it": "Mission Thukker Frigate", "groupName_ja": "ミッションサッカーフリゲート", "groupName_ko": "미션 터커 프리깃", "groupName_ru": "Фрегат боевой группы Thukker", "groupName_zh": "任务图克尔护卫舰", "groupNameID": 64212, "iconID": 0, "published": 0, "useBasePrice": 0 }, "827": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 827, "groupName_de": "Missionen: Thukker (andere)", "groupName_en-us": "Mission Thukker Other", "groupName_es": "Otro elemento de misión de Thukker", "groupName_fr": "Autre thukker mission", "groupName_it": "Mission Thukker Other", "groupName_ja": "ミッションサッカーその他", "groupName_ko": "미션 터커 기타 함선", "groupName_ru": "Другой корабль боевой группы Thukker", "groupName_zh": "图克尔任务其它", "groupNameID": 64213, "iconID": 0, "published": 0, "useBasePrice": 0 }, "828": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 828, "groupName_de": "Missionen: Standard-Schlachtkreuzer", "groupName_en-us": "Mission Generic Battle Cruisers", "groupName_es": "Cruceros de combate de misión genéricos", "groupName_fr": "Escorteurs d'assaut génériques mission", "groupName_it": "Mission Generic Battle Cruisers", "groupName_ja": "ミッション一般巡洋戦艦", "groupName_ko": "미션 일반 배틀크루저", "groupName_ru": "Линейные крейсеры боевой группы", "groupName_zh": "任务通用战列巡洋舰", "groupNameID": 64214, "iconID": 0, "published": 0, "useBasePrice": 0 }, "829": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 829, "groupName_de": "Missionen: Standardzerstörer", "groupName_en-us": "Mission Generic Destroyers", "groupName_es": "Destructores de misión genéricos", "groupName_fr": "Destroyers génériques mission", "groupName_it": "Mission Generic Destroyers", "groupName_ja": "ミッション一般駆逐艦", "groupName_ko": "미션 일반 디스트로이어", "groupName_ru": "Эсминцы боевой группы", "groupName_zh": "任务通用驱逐舰", "groupNameID": 64215, "iconID": 0, "published": 0, "useBasePrice": 0 }, "830": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 830, "groupName_de": "Verdeckte Operationen", "groupName_en-us": "Covert Ops", "groupName_es": "Operaciones encubiertas", "groupName_fr": "Opérations secrètes", "groupName_it": "Covert Ops", "groupName_ja": "隠密行動艦", "groupName_ko": "코버트 옵스", "groupName_ru": "Лёгкий диверсионный корабль", "groupName_zh": "隐形特勤舰", "groupNameID": 64216, "iconID": 0, "published": 1, "useBasePrice": 0 }, "831": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 831, "groupName_de": "Abfangjäger", "groupName_en-us": "Interceptor", "groupName_es": "Interceptor", "groupName_fr": "Intercepteur", "groupName_it": "Interceptor", "groupName_ja": "要撃型フリゲート", "groupName_ko": "인터셉터", "groupName_ru": "Перехватчик", "groupName_zh": "截击舰", "groupNameID": 64217, "iconID": 0, "published": 1, "useBasePrice": 0 }, "832": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 832, "groupName_de": "Logistik", "groupName_en-us": "Logistics", "groupName_es": "Logística", "groupName_fr": "Logistique", "groupName_it": "Logistics", "groupName_ja": "支援型巡洋艦", "groupName_ko": "로지스틱스", "groupName_ru": "Корабль обеспечения", "groupName_zh": "后勤舰", "groupNameID": 64218, "iconID": 0, "published": 1, "useBasePrice": 0 }, "833": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 833, "groupName_de": "Flottenaufklärer", "groupName_en-us": "Force Recon Ship", "groupName_es": "Nave de reconocimiento de fuerza", "groupName_fr": "Vaisseau de reconnaissance furtif", "groupName_it": "Force Recon Ship", "groupName_ja": "軍事偵察船", "groupName_ko": "포스 리콘 크루저", "groupName_ru": "Дозорно-диверсионный крейсер", "groupName_zh": "力场侦察舰", "groupNameID": 64219, "iconID": 0, "published": 1, "useBasePrice": 0 }, "834": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 834, "groupName_de": "Tarnkappenbomber", "groupName_en-us": "Stealth Bomber", "groupName_es": "Bombardero sigiloso", "groupName_fr": "Bombardier furtif", "groupName_it": "Stealth Bomber", "groupName_ja": "ステルス爆撃艦", "groupName_ko": "스텔스 폭격기", "groupName_ru": "Ударно-диверсионный бомбардировщик", "groupName_zh": "隐形轰炸舰", "groupNameID": 64220, "iconID": 0, "published": 1, "useBasePrice": 0 }, "835": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 835, "groupName_de": "Stations-Upgrade-Plattform", "groupName_en-us": "Station Upgrade Platform", "groupName_es": "Plataforma de actualización de estación", "groupName_fr": "Plateforme d'amélioration de station", "groupName_it": "Station Upgrade Platform", "groupName_ja": "ステーション強化プラットフォーム", "groupName_ko": "정거장 업그레이드 플랫폼", "groupName_ru": "Платформа для модуля расширения станции", "groupName_zh": "空间站升级平台", "groupNameID": 64221, "iconID": 0, "published": 1, "useBasePrice": 1 }, "836": { "anchorable": 1, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 836, "groupName_de": "Stationsverbesserungsplattform", "groupName_en-us": "Station Improvement Platform", "groupName_es": "Plataforma de mejora de estación", "groupName_fr": "Plateforme d'optimisation de station", "groupName_it": "Station Improvement Platform", "groupName_ja": "ステーション改良プラットフォーム", "groupName_ko": "정거장 확장 플랫폼", "groupName_ru": "Модуль расширения станции", "groupName_zh": "空间站强化平台", "groupNameID": 64222, "iconID": 0, "published": 1, "useBasePrice": 1 }, "837": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 837, "groupName_de": "Energieneutralisierungsbatterie", "groupName_en-us": "Energy Neutralizing Battery", "groupName_es": "Batería neutralizadora de energía", "groupName_fr": "Batterie de neutralisation de l'énergie", "groupName_it": "Energy Neutralizing Battery", "groupName_ja": "エネルギー無効化バッテリー", "groupName_ko": "에너지 뉴트럴라이제이션 포탑", "groupName_ru": "Батарея нейтрализации энергии", "groupName_zh": "能量中和波发射台", "groupNameID": 64223, "iconID": 0, "published": 1, "useBasePrice": 1 }, "838": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 838, "groupName_de": "Anziehungsgeneratoranlage", "groupName_en-us": "Cynosural Generator Array", "groupName_es": "Sistemas generadores cinosurales", "groupName_fr": "Module de génération cynosurale", "groupName_it": "Cynosural Generator Array", "groupName_ja": "サイノシュアル生成施設", "groupName_ko": "사이노슈럴 생성기", "groupName_ru": "Генератор путеводного поля", "groupName_zh": "诱导力场发生阵列", "groupNameID": 64224, "iconID": 0, "published": 1, "useBasePrice": 1 }, "839": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 839, "groupName_de": "Anziehungssystem-Störsender", "groupName_en-us": "Cynosural System Jammer", "groupName_es": "Perturbador cinosural de sistemas", "groupName_fr": "Brouilleur de système cynosural", "groupName_it": "Cynosural System Jammer", "groupName_ja": "サイノシュラルシステムジャマー", "groupName_ko": "사이노슈럴 시스템 재머", "groupName_ru": "Постановщик помех путеводного поля", "groupName_zh": "诱导力场系统干扰器", "groupNameID": 64225, "iconID": 0, "published": 1, "useBasePrice": 1 }, "840": { "anchorable": 0, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 840, "groupName_de": "Strukturreparatur-Array", "groupName_en-us": "Structure Repair Array", "groupName_es": "Plataforma reparadora de estructuras", "groupName_fr": "Module de réparation de structure", "groupName_it": "Structure Repair Array", "groupName_ja": "ストラクチャリペア施設", "groupName_ko": "구조물 수리 시설", "groupName_ru": "Structure Repair Array", "groupName_zh": "结构维修阵列", "groupNameID": 64345, "iconID": 0, "published": 0, "useBasePrice": 0 }, "841": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 841, "groupName_de": "Sternenbasis - Kontrollturm-Blaupause", "groupName_en-us": "Starbase - Control Tower Blueprints", "groupName_es": "Base estelar: planos de torre de control", "groupName_fr": "Base stellaire – Plans de construction Tour de contrôle", "groupName_it": "Starbase - Control Tower Blueprints", "groupName_ja": "スターベース ― コントロールタワーのブループリント", "groupName_ko": "스타베이스 - 관제타워 블루프린트", "groupName_ru": "Сооружения - чертежи башен управления базами", "groupName_zh": "母星 - 控制塔蓝图", "groupNameID": 64384, "iconID": 0, "published": 1, "useBasePrice": 1 }, "842": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 842, "groupName_de": "Pulsprojektoren", "groupName_en-us": "Burst Projectors", "groupName_es": "Proyectores de estallido", "groupName_fr": "Projecteur à salves", "groupName_it": "Burst Projectors", "groupName_ja": "バーストプロジェクター", "groupName_ko": "버스트 프로젝터", "groupName_ru": "Ретрансляторы объёмных помех", "groupName_zh": "脉冲波投射器", "groupNameID": 64226, "iconID": 0, "published": 1, "useBasePrice": 0 }, "843": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 843, "groupName_de": "Asteroiden: Raubdrohnen-Kommandeur-Schlachtkreuzer", "groupName_en-us": "Asteroid Rogue Drone Commander BattleCruiser", "groupName_es": "Crucero de combate de comandante de dron rebelde de asteroide", "groupName_fr": "Croiseur de bataille de commandement drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Commander BattleCruiser", "groupName_ja": "アステロイドローグドローンコマンダー巡洋戦艦", "groupName_ko": "소행성 로그 드론 지휘 배틀크루저", "groupName_ru": "Флагманский линейный крейсер астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机指挥官战列巡洋舰", "groupNameID": 64227, "iconID": 0, "published": 0, "useBasePrice": 0 }, "844": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 844, "groupName_de": "Asteroiden: Raubdrohnen-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Rogue Drone Commander Battleship", "groupName_es": "Acorazado de comandante de dron rebelde de asteroide", "groupName_fr": "Cuirassé de commandement drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Commander Battleship", "groupName_ja": "アステロイドローグドローンコマンダー戦艦", "groupName_ko": "소행성 로그 드론 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机指挥官战列舰", "groupNameID": 64228, "iconID": 0, "published": 0, "useBasePrice": 0 }, "845": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 845, "groupName_de": "Asteroiden: Raubdrohnen-Kommandeurkreuzer", "groupName_en-us": "Asteroid Rogue Drone Commander Cruiser", "groupName_es": "Crucero de comandante de dron rebelde de asteroide", "groupName_fr": "Croiseur de commandement drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Commander Cruiser", "groupName_ja": "アステロイドローグドローン司令官巡洋艦", "groupName_ko": "소행성 로그 드론 지휘 크루저", "groupName_ru": "Флагманский крейсер астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机指挥官巡洋舰", "groupNameID": 64229, "iconID": 0, "published": 0, "useBasePrice": 0 }, "846": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 846, "groupName_de": "Asteroiden: Raubdrohnen-Kommandeurzerstörer", "groupName_en-us": "Asteroid Rogue Drone Commander Destroyer", "groupName_es": "Destructor de comandante de dron rebelde de asteroide", "groupName_fr": "Destroyer de commandement drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Commander Destroyer", "groupName_ja": "アステロイドローグドローン司令官駆逐艦", "groupName_ko": "소행성 로그 드론 커맨드 디스트로이어", "groupName_ru": "Флагманский эсминец астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机指挥官驱逐舰", "groupNameID": 64230, "iconID": 0, "published": 0, "useBasePrice": 0 }, "847": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 847, "groupName_de": "Asteroiden: Raubdrohnen-Kommandeurfregatte", "groupName_en-us": "Asteroid Rogue Drone Commander Frigate", "groupName_es": "Fragata de comandante de dron rebelde de asteroide", "groupName_fr": "Frégate de commandement drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Commander Frigate", "groupName_ja": "アステロイドローグドローン司令官フリゲート", "groupName_ko": "소행성 로그 드론 지휘 프리깃", "groupName_ru": "Флагманский фрегат астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机指挥官护卫舰", "groupNameID": 64231, "iconID": 0, "published": 0, "useBasePrice": 0 }, "848": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 848, "groupName_de": "Asteroiden: Angel Cartel-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Angel Cartel Commander Battleship", "groupName_es": "Acorazado de comandante de asteroide del Cártel de los Ángeles", "groupName_fr": "Cuirassé de commandement cartel angel astéroïde", "groupName_it": "Asteroid Angel Cartel Commander Battleship", "groupName_ja": "アステロイドエンジェルカルテル司令官戦艦", "groupName_ko": "소행성 엔젤 카르텔 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля Картеля Angel", "groupName_zh": "小行星天使集团指挥官战列舰", "groupNameID": 64232, "iconID": 0, "published": 0, "useBasePrice": 0 }, "849": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 849, "groupName_de": "Asteroiden: Blood Raiders-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Blood Raiders Commander Battleship", "groupName_es": "Acorazado de comandante de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Cuirassé de commandement blood raider astéroïde", "groupName_it": "Asteroid Blood Raiders Commander Battleship", "groupName_ja": "アステロイドブラッドレイダー司令官戦艦", "groupName_ko": "소행성 블러드 레이더 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля Blood Raider", "groupName_zh": "小行星血袭者指挥官战列舰", "groupNameID": 64233, "iconID": 0, "published": 0, "useBasePrice": 0 }, "850": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 850, "groupName_de": "Asteroiden: Guristas-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Guristas Commander Battleship", "groupName_es": "Acorazado de comandante de asteroide de los Guristas", "groupName_fr": "Cuirassé de commandement guristas astéroïde", "groupName_it": "Asteroid Guristas Commander Battleship", "groupName_ja": "アステロイドガリスタス司令官戦艦", "groupName_ko": "소행성 구리스타스 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля Gurista", "groupName_zh": "小行星古斯塔斯指挥官战列舰", "groupNameID": 64234, "iconID": 0, "published": 0, "useBasePrice": 0 }, "851": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 851, "groupName_de": "Asteroiden: Sansha's Nation-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Sansha's Nation Commander Battleship", "groupName_es": "Acorazado de comandante de asteroide de la Nación Sansha", "groupName_fr": "Cuirassé de commandement Sansha's Nation astéroïde", "groupName_it": "Asteroid Sansha's Nation Commander Battleship", "groupName_ja": "アステロイドサンシャ国司令官戦艦", "groupName_ko": "소행성 산샤 네이션 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля Нации Sansha", "groupName_zh": "小行星萨沙共和国指挥官战列舰", "groupNameID": 64235, "iconID": 0, "published": 0, "useBasePrice": 0 }, "852": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 852, "groupName_de": "Asteroiden: Serpentis-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Serpentis Commander Battleship", "groupName_es": "Acorazado de comandante de asteroide de Serpentis", "groupName_fr": "Cuirassé de commandement serpentis astéroïde", "groupName_it": "Asteroid Serpentis Commander Battleship", "groupName_ja": "アステロイドサーペンティス司令官戦艦", "groupName_ko": "소행성 서펜티스 지휘 배틀쉽", "groupName_ru": "Флагманский линкор астероидного патруля Serpentis", "groupName_zh": "小行星天蛇指挥官战列舰", "groupNameID": 64236, "iconID": 0, "published": 0, "useBasePrice": 0 }, "853": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 853, "groupName_de": "Sternenbasis - Laserbatterie-Blaupausen", "groupName_en-us": "Starbase - Laser Battery Blueprints", "groupName_es": "Base estelar: planos de batería de láser", "groupName_fr": "Base stellaire – Plans de construction Batterie de lasers", "groupName_it": "Starbase - Laser Battery Blueprints", "groupName_ja": "スターベース ― レーザーバッテリーのブループリント", "groupName_ko": "스타베이스 - 레이저 포탑 블루프린트", "groupName_ru": "Сооружения - чертежи лазерного оружия", "groupName_zh": "母星 - 激光炮台蓝图", "groupNameID": 64388, "iconID": 0, "published": 1, "useBasePrice": 1 }, "854": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 854, "groupName_de": "Sternenbasis - Projektilbatterie-Blaupausen", "groupName_en-us": "Starbase - Projectile Battery Blueprints", "groupName_es": "Base estelar: plano de batería de proyectiles", "groupName_fr": "Base stellaire – Plans de construction Batterie de projectiles", "groupName_it": "Starbase - Projectile Battery Blueprints", "groupName_ja": "スターベース ― プロジェクタイルバッテリーのブループリント", "groupName_ko": "스타베이스 - 발사체 포탑 블루프린트", "groupName_ru": "Сооружения - чертежи баллистического оружия", "groupName_zh": "母星 - 射弹炮台蓝图", "groupNameID": 64390, "iconID": 0, "published": 1, "useBasePrice": 1 }, "855": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 855, "groupName_de": "Sternenbasis - Hybridbatterie-Blaupausen", "groupName_en-us": "Starbase - Hybrid Battery Blueprints", "groupName_es": "Base estelar: planos de batería híbrida", "groupName_fr": "Base stellaire – Plans de construction Batterie hybride", "groupName_it": "Starbase - Hybrid Battery Blueprints", "groupName_ja": "スターベース ― ハイブリッドバッテリーのブループリント", "groupName_ko": "스타베이스 - 하이브리드 포탑 블루프린트", "groupName_ru": "Сооружения - чертежи гибридного оружия", "groupName_zh": "母星 - 混合炮台蓝图", "groupNameID": 64387, "iconID": 0, "published": 1, "useBasePrice": 1 }, "856": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 856, "groupName_de": "Sternenbasis - ECM-Störsender-Blaupausen", "groupName_en-us": "Starbase - ECM Jamming Array Blueprints", "groupName_es": "Plano de sistema de perturbación ECM de base estelar", "groupName_fr": "Base stellaire – Plans de construction Module de brouillage CME", "groupName_it": "Starbase - ECM Jamming Array Blueprints", "groupName_ja": "スターベース ― ECMジャミング施設のブループリント", "groupName_ko": "스타베이스 - ECM 재밍 시설 블루프린트", "groupName_ru": "Сооружения - чертежи передатчика системы РЭБ", "groupName_zh": "母星 - ECM干扰阵列蓝图", "groupNameID": 64385, "iconID": 0, "published": 1, "useBasePrice": 1 }, "857": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 857, "groupName_de": "Sternenbasis - Warpstörer-Batterie-Blaupausen", "groupName_en-us": "Starbase - Warp Scrambling Battery Blueprints", "groupName_es": "Base estelar: planos de batería de distorsionador de warp", "groupName_fr": "Base stellaire - Plans de construction Batterie d'inhibition de warp", "groupName_it": "Starbase - Warp Scrambling Battery Blueprints", "groupName_ja": "スターベース ― ワープスクランブラーバッテリーのブループリント", "groupName_ko": "스타베이스 - 워프 스크램블 타워 블루프린트", "groupName_ru": "Сооружения - чертежи варп-глушителей", "groupName_zh": "母星 - 跃迁扰频波发射台蓝图", "groupNameID": 64393, "iconID": 0, "published": 1, "useBasePrice": 1 }, "858": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 858, "groupName_de": "Sternenbasis - Btasisnetzbatterie-Blaupausen", "groupName_en-us": "Starbase - Stasis Webification Battery Blueprints", "groupName_es": "Base estelar: planos de batería de red ralentizadora", "groupName_fr": "Base stellaire – Plans de construction Batterie génératrice de stase", "groupName_it": "Starbase - Stasis Webification Battery Blueprints", "groupName_ja": "スターベース ― ステイシスウェビファイヤーバッテリーのブループリント", "groupName_ko": "스타베이스 - 스테이시스 웹 타워 블루프린트", "groupName_ru": "Сооружения - чертежи генераторов стазис-поля", "groupName_zh": "母星 - 停滞网状光束发射台蓝图", "groupNameID": 64392, "iconID": 0, "published": 1, "useBasePrice": 1 }, "859": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 859, "groupName_de": "Sternenbasis - Sensordämpfungsanlage-Blaupausen", "groupName_en-us": "Starbase - Sensor Dampening Array Blueprints", "groupName_es": "Base estelar: planos de sistema de atenuación de sensores", "groupName_fr": "Base stellaire – Structures – Plans de construction Module d'atténuation de détection", "groupName_it": "Starbase - Sensor Dampening Array Blueprints", "groupName_ja": "スターベース ― センサーダンプニング施設のブループリント", "groupName_ko": "스타베이스 - 센서 교란 시설 블루프린트", "groupName_ru": "Сооружения - чертежи передатчиков помех системам обнаружения целей", "groupName_zh": "母星 - 感应抑阻阵列蓝图", "groupNameID": 64391, "iconID": 0, "published": 1, "useBasePrice": 1 }, "860": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 860, "groupName_de": "Sternenbasis - Energieneutralisierungsbatterie-Blaupausen", "groupName_en-us": "Starbase - Energy Neutralizing Battery Blueprints", "groupName_es": "Base estelar: planos de batería neutralizadora de energía", "groupName_fr": "Base stellaire – Plans de construction Batterie de neutralisation d'énergie", "groupName_it": "Starbase - Energy Neutralizing Battery Blueprints", "groupName_ja": "スターベース ― エネルギーニュートライザーバッテリーのブループリント", "groupName_ko": "스타베이스 - 에너지 뉴트럴라이제이션 터렛 블루프린트", "groupName_ru": "Сооружения - чертежи батареи нейтрализации заряда", "groupName_zh": "母星 - 能量中和炮台蓝图", "groupNameID": 64386, "iconID": 0, "published": 1, "useBasePrice": 1 }, "861": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 861, "groupName_de": "Missionen: Jagddrohne", "groupName_en-us": "Mission Fighter Drone", "groupName_es": "Dron caza de misión", "groupName_fr": "Drone de combat mission", "groupName_it": "Mission Fighter Drone", "groupName_ja": "ミッション艦載戦闘機", "groupName_ko": "미션 파이터", "groupName_ru": "Истребитель боевой группы", "groupName_zh": "任务 铁骑舰载机", "groupNameID": 64237, "iconID": 0, "published": 0, "useBasePrice": 0 }, "862": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 862, "groupName_de": "Raketenwerfer: Bomb", "groupName_en-us": "Missile Launcher Bomb", "groupName_es": "Bomba lanzamisiles", "groupName_fr": "Bombe lance-missiles", "groupName_it": "Missile Launcher Bomb", "groupName_ja": "ミサイルランチャー(ボム)", "groupName_ko": "미사일 런처 폭탄", "groupName_ru": "Бомбомёт", "groupName_zh": "炸弹发射器", "groupNameID": 64238, "iconID": 2677, "published": 1, "useBasePrice": 0 }, "863": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 863, "groupName_de": "ECM-Bombe", "groupName_en-us": "Bomb ECM", "groupName_es": "Bomba ECM", "groupName_fr": "Bombe CME", "groupName_it": "Bomb ECM", "groupName_ja": "ボムECM", "groupName_ko": "폭탄 ECM", "groupName_ru": "Бомба РЭБ", "groupName_zh": "ECM炸弹", "groupNameID": 64239, "iconID": 3283, "published": 1, "useBasePrice": 0 }, "864": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 864, "groupName_de": "Energiebombe", "groupName_en-us": "Bomb Energy", "groupName_es": "Energía de bomba", "groupName_fr": "Bombe à énergie", "groupName_it": "Bomb Energy", "groupName_ja": "ボムエネルギー", "groupName_ko": "폭탄 에너지", "groupName_ru": "Энергетическая бомба", "groupName_zh": "能量炸弹", "groupNameID": 64240, "iconID": 3282, "published": 1, "useBasePrice": 0 }, "865": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 865, "groupName_de": "Missionen: Amarr Empire-Carrier", "groupName_en-us": "Mission Amarr Empire Carrier", "groupName_es": "Portanaves de misión del Imperio Amarr", "groupName_fr": "Porte-vaisseaux Empire amarr mission", "groupName_it": "Mission Amarr Empire Carrier", "groupName_ja": "ミッションアマー帝国艦載機母艦", "groupName_ko": "미션 아마르 캐리어", "groupName_ru": "Корабль-носитель боевой группы Империи Amarr", "groupName_zh": "任务 艾玛帝国航空母舰", "groupNameID": 64241, "iconID": 0, "published": 0, "useBasePrice": 0 }, "866": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 866, "groupName_de": "Missionen: Caldari State-Carrier", "groupName_en-us": "Mission Caldari State Carrier", "groupName_es": "Portanaves de misión del Estado Caldari", "groupName_fr": "Porte-vaisseaux État caldari mission", "groupName_it": "Mission Caldari State Carrier", "groupName_ja": "ミッションカルダリ連合艦載機母艦", "groupName_ko": "미션 칼다리 캐리어", "groupName_ru": "Корабль-носитель боевой группы Государства Caldari", "groupName_zh": "任务 加达里合众国航空母舰", "groupNameID": 64242, "iconID": 0, "published": 0, "useBasePrice": 0 }, "867": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 867, "groupName_de": "Missionen: Gallente Federation-Carrier", "groupName_en-us": "Mission Gallente Federation Carrier", "groupName_es": "Portanaves de misión de la Federación Gallente", "groupName_fr": "Porte-vaisseaux Fédération gallente mission", "groupName_it": "Mission Gallente Federation Carrier", "groupName_ja": "ミッションガレンテ連邦艦載機母艦", "groupName_ko": "미션 갈란테 캐리어", "groupName_ru": "Корабль-носитель боевой группы Федерации Gallente", "groupName_zh": "任务 盖伦特联邦航空母舰", "groupNameID": 64243, "iconID": 0, "published": 0, "useBasePrice": 0 }, "868": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 868, "groupName_de": "Mission: Trägerschiff der Republik Minmatar", "groupName_en-us": "Mission Minmatar Republic Carrier", "groupName_es": "Portanaves de misión de la República Minmatar", "groupName_fr": "Porte-vaisseaux République minmatar mission", "groupName_it": "Mission Minmatar Republic Carrier", "groupName_ja": "ミッションミンマター共和国艦載機母艦", "groupName_ko": "미션 민마타 캐리어", "groupName_ru": "Корабль-носитель боевой группы Республики Minmatar", "groupName_zh": "任务 米玛塔尔共和舰队航空母舰", "groupNameID": 64244, "iconID": 0, "published": 0, "useBasePrice": 0 }, "870": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 870, "groupName_de": "Fern-Hüllenreparierer-Blueprint", "groupName_en-us": "Remote Hull Repairer Blueprint", "groupName_es": "Plano de reparador de casco remoto", "groupName_fr": "Plan de construction Réparateur de coque à distance", "groupName_it": "Remote Hull Repairer Blueprint", "groupName_ja": "リモート船体リペアラブループリント", "groupName_ko": "원격 선체수리 장치 블루프린트", "groupName_ru": "Чертеж системы дистанционного ремонта корпуса", "groupName_zh": "远程船体维修装置蓝图", "groupNameID": 64245, "iconID": 0, "published": 1, "useBasePrice": 1 }, "871": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 871, "groupName_de": "Sternenbasis - Lenkwaffenbatterie-Blaupausen", "groupName_en-us": "Starbase - Missile Battery Blueprints", "groupName_es": "Base estelar: planos de batería de misiles", "groupName_fr": "Base stellaire – Plans de construction Batterie de missiles", "groupName_it": "Starbase - Missile Battery Blueprints", "groupName_ja": "スターベース ― ミサイルバッテリーのブループリント", "groupName_ko": "스타베이스 - 미사일 포탑 블루프린트", "groupName_ru": "Сооружения - чертежи ракетного оружия", "groupName_zh": "母星 - 导弹发射塔蓝图", "groupNameID": 64389, "iconID": 0, "published": 1, "useBasePrice": 1 }, "872": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 872, "groupName_de": "Verbesserungen für Außenposten", "groupName_en-us": "Outpost Improvements", "groupName_es": "Mejoras de puesto avanzado", "groupName_fr": "Optimisations d'avant-poste", "groupName_it": "Outpost Improvements", "groupName_ja": "アウトポスト改良", "groupName_ko": "전초기지 확장", "groupName_ru": "Внешние модули станций", "groupName_zh": "哨站强化", "groupNameID": 64246, "iconID": 0, "published": 1, "useBasePrice": 1 }, "873": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 873, "groupName_de": "Capital-Konstruktionskomponenten", "groupName_en-us": "Capital Construction Components", "groupName_es": "Componentes de construcción de naves capitales", "groupName_fr": "Composants de vaisseau capital", "groupName_it": "Capital Construction Components", "groupName_ja": "キャピタル建設資材", "groupName_ko": "캐피탈 생산 부품", "groupName_ru": "Компоненты кораблей большого тоннажа", "groupName_zh": "旗舰建造组件", "groupNameID": 64247, "iconID": 0, "published": 1, "useBasePrice": 0 }, "874": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 874, "groupName_de": "Störbare Stationsdienste", "groupName_en-us": "Disruptable Station Services", "groupName_es": "Servicios de la estación alterables", "groupName_fr": "Services de la station susceptibles d'être détournés", "groupName_it": "Disruptable Station Services", "groupName_ja": "停止可能なステーションサービス", "groupName_ko": "정거장 서비스 방해", "groupName_ru": "Уязвимые станционные службы", "groupName_zh": "可干扰的空间站服务", "groupNameID": 64248, "iconID": 0, "published": 0, "useBasePrice": 0 }, "875": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 875, "groupName_de": "Mission: Fraktionentransporter", "groupName_en-us": "Mission Faction Transports", "groupName_es": "Naves de transporte de misión de facción", "groupName_fr": "Transports de faction mission", "groupName_it": "Mission Faction Transports", "groupName_ja": "ミッション勢力別輸送艦", "groupName_ko": "미션 팩션 수송선", "groupName_ru": "Транспорты боевой группы фракции", "groupName_zh": "任务势力运输舰", "groupNameID": 64285, "iconID": 0, "published": 0, "useBasePrice": 0 }, "876": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 876, "groupName_de": "Außenposten-Upgrades", "groupName_en-us": "Outpost Upgrades", "groupName_es": "Actualizaciones de puesto avanzado", "groupName_fr": "Améliorations d'avant-poste", "groupName_it": "Outpost Upgrades", "groupName_ja": "アウトポスト強化", "groupName_ko": "전초기지 업그레이드", "groupName_ru": "Оборудование для модернизации станций", "groupName_zh": "哨站升级", "groupNameID": 64249, "iconID": 0, "published": 1, "useBasePrice": 0 }, "877": { "anchorable": 0, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 877, "groupName_de": "Zielmarkierungsbatterie", "groupName_en-us": "Target Painting Battery", "groupName_es": "Batería de revelador de objetivo", "groupName_fr": "Batterie de marquage de cible", "groupName_it": "Target Painting Battery", "groupName_ja": "ターゲットペインティングバッテリー", "groupName_ko": "타겟 지시 포탑", "groupName_ru": "Батарея подсветки цели", "groupName_zh": "目标标记发射台", "groupNameID": 64250, "iconID": 0, "published": 0, "useBasePrice": 0 }, "878": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 878, "groupName_de": "Tarnverbesserungen", "groupName_en-us": "Cloak Enhancements", "groupName_es": "Mejoras de camuflaje", "groupName_fr": "Améliorations de camouflage", "groupName_it": "Cloak Enhancements", "groupName_ja": "クローク機能強化", "groupName_ko": "클로킹 향상", "groupName_ru": "Пакет модернизации системы маскировки", "groupName_zh": "隐形增强", "groupNameID": 64251, "iconID": 0, "published": 0, "useBasePrice": 0 }, "879": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 879, "groupName_de": "Aufnahme von Sklaven", "groupName_en-us": "Slave Reception", "groupName_es": "Recepción de esclavos", "groupName_fr": "Réception d'esclave", "groupName_it": "Slave Reception", "groupName_ja": "奴隷レセプション", "groupName_ko": "해방 노예", "groupName_ru": "Прием рабов", "groupName_zh": "劳工接待处", "groupNameID": 64252, "iconID": 0, "published": 1, "useBasePrice": 0 }, "880": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 880, "groupName_de": "Sleeper-Geräte", "groupName_en-us": "Sleeper Components", "groupName_es": "Componentes de sleepers", "groupName_fr": "Composants sleeper", "groupName_it": "Sleeper Components", "groupName_ja": "スリーパー部品", "groupName_ko": "슬리퍼 부품", "groupName_ru": "Компоненты Sleeper", "groupName_zh": "冬眠者组件", "groupNameID": 64314, "iconID": 0, "published": 1, "useBasePrice": 1 }, "881": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 881, "groupName_de": "Freiheitsprogramme", "groupName_en-us": "Freedom Programs", "groupName_es": "Programas de libertad", "groupName_fr": "Programmes de libération", "groupName_it": "Freedom Programs", "groupName_ja": "解放プログラム", "groupName_ko": "자유 프로그램", "groupName_ru": "Программы освобождения", "groupName_zh": "自由程序", "groupNameID": 64253, "iconID": 0, "published": 0, "useBasePrice": 0 }, "882": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 882, "groupName_de": "Versklavungsprogramme", "groupName_en-us": "Enslavement Programs", "groupName_es": "Programas de esclavitud", "groupName_fr": "Programmes d'esclavage", "groupName_it": "Enslavement Programs", "groupName_ja": "奴隷化プログラム", "groupName_ko": "노예 프로그램", "groupName_ru": "Программы индоктринации", "groupName_zh": "奴役程序", "groupNameID": 64254, "iconID": 0, "published": 0, "useBasePrice": 0 }, "883": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 883, "groupName_de": "Capital-Industrial-Schiff", "groupName_en-us": "Capital Industrial Ship", "groupName_es": "Nave industrial capital", "groupName_fr": "Vaisseau industriel capital", "groupName_it": "Capital Industrial Ship", "groupName_ja": "採掘支援母艦", "groupName_ko": "캐피탈 인더스트리얼", "groupName_ru": "Промышленный корабль", "groupName_zh": "旗舰级工业舰", "groupNameID": 64255, "iconID": 0, "published": 1, "useBasePrice": 0 }, "884": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 884, "groupName_de": "Stichprobe komprimierten Erzes", "groupName_en-us": "Test Compressed Ore", "groupName_es": "Mena comprimida de prueba", "groupName_fr": "Minerai de test condensé", "groupName_it": "Test Compressed Ore", "groupName_ja": "テスト用圧縮鉱石", "groupName_ko": "압축 광물 테스트", "groupName_ru": "Сжатая руда (ТЕСТ)", "groupName_zh": "测试高密度矿石", "groupNameID": 64256, "iconID": 0, "published": 0, "useBasePrice": 0 }, "885": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 885, "groupName_de": "Kosmische Anomalie", "groupName_en-us": "Cosmic Anomaly", "groupName_es": "Anomalía cósmica", "groupName_fr": "Anomalie cosmique", "groupName_it": "Cosmic Anomaly", "groupName_ja": "宇宙の特異点", "groupName_ko": "코즈믹 어노말리", "groupName_ru": "Космическая аномалия", "groupName_zh": "异常空间", "groupNameID": 64257, "iconID": 0, "published": 0, "useBasePrice": 0 }, "886": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 886, "groupName_de": "Raubdrohnenkomponenten", "groupName_en-us": "Rogue Drone Components", "groupName_es": "Componentes de dron rebelde", "groupName_fr": "Composants de drone renégat", "groupName_it": "Rogue Drone Components", "groupName_ja": "ローグドローン部品", "groupName_ko": "로그 드론 부품", "groupName_ru": "Компоненты восставших дронов", "groupName_zh": "自由无人机组件", "groupNameID": 64258, "iconID": 0, "published": 1, "useBasePrice": 0 }, "888": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 888, "groupName_de": "Erzverdichtung-Blueprints", "groupName_en-us": "Ore Compression Blueprints", "groupName_es": "Planos de compresores de menas", "groupName_fr": "Plans de construction Compression de minerai", "groupName_it": "Ore Compression Blueprints", "groupName_ja": "鉱石圧縮ブループリント", "groupName_ko": "광물 압착 블루프린트", "groupName_ru": "Чертежи сжатия руды", "groupName_zh": "高密度矿石蓝图", "groupNameID": 64259, "iconID": 0, "published": 1, "useBasePrice": 1 }, "889": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 889, "groupName_de": "Erzverbesserung-Blueprints", "groupName_en-us": "Ore Enhancement Blueprints", "groupName_es": "Planos de mejoras de menas", "groupName_fr": "Plans de construction Amélioration de minerai", "groupName_it": "Ore Enhancement Blueprints", "groupName_ja": "鉱石強化ブループリント", "groupName_ko": "광물 향상 블루프린트", "groupName_ru": "Чертежи обогащения руды", "groupName_zh": "矿石改进蓝图", "groupNameID": 64260, "iconID": 0, "published": 0, "useBasePrice": 0 }, "890": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 890, "groupName_de": "Blueprints zur Eiskomprimierung", "groupName_en-us": "Ice Compression Blueprints", "groupName_es": "Planos de compresores de hielo", "groupName_fr": "Plans de construction Compression de glace", "groupName_it": "Ice Compression Blueprints", "groupName_ja": "アイス圧縮ブループリント", "groupName_ko": "아이스 압착 블루프린트", "groupName_ru": "Чертежи сжатия льда", "groupName_zh": "高密度冰矿蓝图", "groupNameID": 64261, "iconID": 0, "published": 1, "useBasePrice": 1 }, "891": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 891, "groupName_de": "Sternenbasis - Mobiles Labor-Blaupause", "groupName_en-us": "Starbase - Mobile Laboratory Blueprints", "groupName_es": "Base estelar: planos de laboratorio móvil", "groupName_fr": "Base stellaire – Plans de construction Laboratoire mobile", "groupName_it": "Starbase - Mobile Laboratory Blueprints", "groupName_ja": "スターベース ― 移動式研究施設のブループリント", "groupName_ko": "스타베이스 - 이동식 연구실 블루프린트", "groupName_ru": "Сооружения - чертежи передвижной лаборатории", "groupName_zh": "母星 - 移动实验室蓝图", "groupNameID": 64383, "iconID": 0, "published": 1, "useBasePrice": 1 }, "892": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 892, "groupName_de": "Satelliten eines Planeten", "groupName_en-us": "Planet Satellites", "groupName_es": "Satélites planetarios", "groupName_fr": "Satellites planétaires", "groupName_it": "Planet Satellites", "groupName_ja": "惑星サテライト", "groupName_ko": "행성용 인공위성", "groupName_ru": "Планетарные спутники", "groupName_zh": "行星人造卫星", "groupNameID": 64371, "iconID": 0, "published": 0, "useBasePrice": 0 }, "893": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 893, "groupName_de": "Elektronisches Angriffsschiff", "groupName_en-us": "Electronic Attack Ship", "groupName_es": "Nave de ataque electrónico", "groupName_fr": "Vaisseau d'attaque électronique", "groupName_it": "Electronic Attack Ship", "groupName_ja": "電子攻撃船", "groupName_ko": "전자전 프리깃", "groupName_ru": "Дозорный фрегат", "groupName_zh": "电子攻击舰", "groupNameID": 64262, "published": 1, "useBasePrice": 0 }, "894": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 894, "groupName_de": "Schwerer Unterbrechungskreuzer", "groupName_en-us": "Heavy Interdiction Cruiser", "groupName_es": "Crucero interdictor pesado", "groupName_fr": "Croiseur d'interdiction lourd", "groupName_it": "Heavy Interdiction Cruiser", "groupName_ja": "ワープ妨害型巡洋艦", "groupName_ko": "인터딕터 크루저", "groupName_ru": "Тяжёлый заградительный крейсер", "groupName_zh": "重型拦截巡洋舰", "groupNameID": 64263, "published": 1, "useBasePrice": 0 }, "896": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 896, "groupName_de": "Rigg-Sicherheitstransponder", "groupName_en-us": "Rig Security Transponder", "groupName_es": "Transpondedor de seguridad de complemento", "groupName_fr": "Transpondeur de sécurité optimisé", "groupName_it": "Rig Security Transponder", "groupName_ja": "リグ(セキュリティトランスポンダー)", "groupName_ko": "보안 송수신기 리그", "groupName_ru": "Тюнинг-модуль — ответчик «свой-чужой»", "groupName_zh": "安全异频雷达收发机改装件", "groupNameID": 64264, "iconID": 0, "published": 0, "useBasePrice": 0 }, "897": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 897, "groupName_de": "Getarntes Anziehungsfeld", "groupName_en-us": "Covert Cynosural Field", "groupName_es": "Campo cinosural encubierto", "groupName_fr": "Champ cynosural furtif", "groupName_it": "Covert Cynosural Field", "groupName_ja": "光学迷彩サイノシュラルフィールド", "groupName_ko": "코버트 사이노슈럴 필드", "groupName_ru": "Приводной маяк скрытого действия", "groupName_zh": "隐秘诱导力场", "groupNameID": 64265, "iconID": 0, "published": 0, "useBasePrice": 0 }, "898": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 898, "groupName_de": "Black Ops", "groupName_en-us": "Black Ops", "groupName_es": "Operaciones secretas", "groupName_fr": "Forces spéciales", "groupName_it": "Black Ops", "groupName_ja": "秘密工作艦", "groupName_ko": "블랙옵스", "groupName_ru": "Тяжёлый диверсионный корабль", "groupName_zh": "黑隐特勤舰", "groupNameID": 64266, "published": 1, "useBasePrice": 0 }, "899": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 899, "groupName_de": "Warp-Unterbrecher-Feldgenerator", "groupName_en-us": "Warp Disrupt Field Generator", "groupName_es": "Generador de campo disruptor de warp", "groupName_fr": "Générateur de champ perturbateur de warp", "groupName_it": "Warp Disrupt Field Generator", "groupName_ja": "ワープディスラプトフィールドジェネレーター", "groupName_ko": "워프 디스럽션 필드 생성기", "groupName_ru": "Бортовой генератор варп-помех", "groupName_zh": "跃迁扰断力场发生器", "groupNameID": 64267, "iconID": 0, "published": 1, "useBasePrice": 0 }, "900": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 900, "groupName_de": "Marauder", "groupName_en-us": "Marauder", "groupName_es": "Depredador", "groupName_fr": "Maraudeur", "groupName_it": "Marauder", "groupName_ja": "襲撃型戦艦", "groupName_ko": "머라우더", "groupName_ru": "Рейдер", "groupName_zh": "掠夺舰", "groupNameID": 64268, "published": 1, "useBasePrice": 0 }, "901": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 901, "groupName_de": "Bergbauverbesserer", "groupName_en-us": "Mining Enhancer", "groupName_es": "Intensificador minero", "groupName_fr": "Optimisateur d'extraction", "groupName_it": "Mining Enhancer", "groupName_ja": "採掘エンハンサー", "groupName_ko": "채굴 향상장치", "groupName_ru": "Усилитель экстракторов", "groupName_zh": "采矿增强器", "groupNameID": 64269, "iconID": 0, "published": 0, "useBasePrice": 0 }, "902": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 902, "groupName_de": "Sprung-Frachter", "groupName_en-us": "Jump Freighter", "groupName_es": "Carguero de salto", "groupName_fr": "Transport de fret hyperspatial", "groupName_it": "Jump Freighter", "groupName_ja": "ジャンプドライブ搭載型輸送艦", "groupName_ko": "점프 프레이터", "groupName_ru": "Джамп-фрейтер", "groupName_zh": "战略货舰", "groupNameID": 64270, "iconID": 0, "published": 1, "useBasePrice": 0 }, "903": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 903, "groupName_de": "Uraltes komprimiertes Eis", "groupName_en-us": "Ancient Compressed Ice", "groupName_es": "Hielo comprimido antiguo", "groupName_fr": "Glace compressée ancienne", "groupName_it": "Ancient Compressed Ice", "groupName_ja": "古い圧縮アイス", "groupName_ko": "압축된 고대의 아이스", "groupName_ru": "Сжатый древний лед", "groupName_zh": "远古压缩冰", "groupNameID": 64271, "iconID": 0, "published": 0, "useBasePrice": 0 }, "904": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 904, "groupName_de": "Rigg-Bergbau", "groupName_en-us": "Rig Mining", "groupName_es": "Minería de complemento", "groupName_fr": "Extraction optimisée", "groupName_it": "Rig Mining", "groupName_ja": "リグ(採掘)", "groupName_ko": "채굴 리그", "groupName_ru": "Тюнинг-модуль — экстракторы", "groupName_zh": "采矿改装件", "groupNameID": 64272, "iconID": 0, "published": 0, "useBasePrice": 0 }, "905": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 905, "groupName_de": "Verborgener Anziehungsfeld-Generator", "groupName_en-us": "Covert Cynosural Field Generator", "groupName_es": "Generador de campo cinosural encubierto", "groupName_fr": "Générateur de champ cynosural furtif", "groupName_it": "Covert Cynosural Field Generator", "groupName_ja": "潜伏用サイノシュラルフィールドジェネレータ", "groupName_ko": "코버트 사이노슈럴 필드 생성기", "groupName_ru": "Приводной маяк скрытого действия", "groupName_zh": "隐秘诱导力场发生器", "groupNameID": 64346, "iconID": 0, "published": 0, "useBasePrice": 0 }, "906": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 906, "groupName_de": "Kampfaufklärer", "groupName_en-us": "Combat Recon Ship", "groupName_es": "Nave de reconocimiento de combate", "groupName_fr": "Vaisseau de reconnaissance et combat", "groupName_it": "Combat Recon Ship", "groupName_ja": "戦闘偵察船", "groupName_ko": "컴뱃 리콘 크루저", "groupName_ru": "Дозорный крейсер", "groupName_zh": "战斗侦察舰", "groupNameID": 64273, "iconID": 0, "published": 1, "useBasePrice": 0 }, "907": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 907, "groupName_de": "Nachführscript", "groupName_en-us": "Tracking Script", "groupName_es": "Script de rastreo", "groupName_fr": "Script de poursuite", "groupName_it": "Tracking Script", "groupName_ja": "トラッキングスクリプト", "groupName_ko": "트래킹 스크립트", "groupName_ru": "Прошивка для систем наводки орудий", "groupName_zh": "追踪脚本", "groupNameID": 64274, "iconID": 3346, "published": 1, "useBasePrice": 0 }, "908": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 908, "groupName_de": "Warpunterbrechungsskript", "groupName_en-us": "Warp Disruption Script", "groupName_es": "Script disruptor de warp", "groupName_fr": "Script de perturbation de warp", "groupName_it": "Warp Disruption Script", "groupName_ja": "ワープ妨害スクリプト", "groupName_ko": "워프 디스럽션 스크립트", "groupName_ru": "Прошивка для бортового генератора варп-помех", "groupName_zh": "跃迁干扰脚本", "groupNameID": 64275, "iconID": 111, "published": 1, "useBasePrice": 0 }, "909": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 909, "groupName_de": "Nachführungsstörerskript", "groupName_en-us": "Tracking Disruption Script", "groupName_es": "Script disruptor de rastreo", "groupName_fr": "Script de perturbation de poursuite", "groupName_it": "Tracking Disruption Script", "groupName_ja": "トラッキング妨害スクリプト", "groupName_ko": "트래킹 디스럽션 스크립트", "groupName_ru": "Программа глушения систем наводки орудий", "groupName_zh": "跟踪干扰脚本", "groupNameID": 64276, "iconID": 1639, "published": 1, "useBasePrice": 0 }, "910": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 910, "groupName_de": "Sensor-Booster-Skript", "groupName_en-us": "Sensor Booster Script", "groupName_es": "Script de potenciador de sensor", "groupName_fr": "Script de booster de détection", "groupName_it": "Sensor Booster Script", "groupName_ja": "センサーブースタースクリプト", "groupName_ko": "센서 부스터 스크립트", "groupName_ru": "Прошивка для активного усилителя", "groupName_zh": "感应增强器脚本", "groupNameID": 64277, "iconID": 74, "published": 1, "useBasePrice": 0 }, "911": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 911, "groupName_de": "Sensorunterdrückerscript", "groupName_en-us": "Sensor Dampener Script", "groupName_es": "Script de atenuador de sensor", "groupName_fr": "Script d'atténuateur de détection", "groupName_it": "Sensor Dampener Script", "groupName_ja": "センサーダンプナースクリプト", "groupName_ko": "센서 교란 스크립트", "groupName_ru": "Прошивка для передатчика помех системам обнаружения целей", "groupName_zh": "感应抑阻器脚本", "groupNameID": 64278, "iconID": 105, "published": 1, "useBasePrice": 0 }, "912": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 912, "groupName_de": "Script-Blueprint", "groupName_en-us": "Script Blueprint", "groupName_es": "Plano de Script", "groupName_fr": "Plan de construction Script", "groupName_it": "Script Blueprint", "groupName_ja": "スクリプトブループリント", "groupName_ko": "스크립트 블루프린트", "groupName_ru": "Исходники прошивки", "groupName_zh": "脚本蓝图", "groupNameID": 64279, "iconID": 0, "published": 1, "useBasePrice": 1 }, "913": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 913, "groupName_de": "Fortschrittliche Capital-Konstruktionskomponenten", "groupName_en-us": "Advanced Capital Construction Components", "groupName_es": "Componentes de construcción de naves capitales avanzados", "groupName_fr": "Composants de construction de vaisseau capital avancé", "groupName_it": "Advanced Capital Construction Components", "groupName_ja": "高性能キャピタル建設資材", "groupName_ko": "상급 캐피탈 생산 부품", "groupName_ru": "Усовершенствованные компоненты кораблей большого тоннажа", "groupName_zh": "高级旗舰级建造组件", "groupNameID": 64280, "iconID": 0, "published": 1, "useBasePrice": 0 }, "914": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 914, "groupName_de": "Fortschrittliche Capital-Konstruktionskomponenten-Blueprints", "groupName_en-us": "Advanced Capital Construction Component Blueprints", "groupName_es": "Planos de componentes de construcción capitales avanzados", "groupName_fr": "Plans de construction Composant de construction de vaisseau capital avancé", "groupName_it": "Advanced Capital Construction Component Blueprints", "groupName_ja": "高性能キャピタル建築資材ブループリント", "groupName_ko": "상급 캐피탈 생산 부품 블루프린트", "groupName_ru": "Чертежи усовершенствованных компонентов кораблей большого тоннажа", "groupName_zh": "高级旗舰级建造组件蓝图", "groupNameID": 64281, "iconID": 0, "published": 1, "useBasePrice": 1 }, "915": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 915, "groupName_de": "Capital-Konstruktionsblueprints", "groupName_en-us": "Capital Construction Blueprints", "groupName_es": "Planos de construcción capitales", "groupName_fr": "Plans de construction Vaisseau capital", "groupName_it": "Capital Construction Blueprints", "groupName_ja": "キャピタル建設ブループリント", "groupName_ko": "캐피탈 구조물 블루프린트", "groupName_ru": "Чертежи компонентов кораблей большого тоннажа", "groupName_zh": "旗舰建造模块蓝图", "groupNameID": 64282, "iconID": 0, "published": 1, "useBasePrice": 1 }, "916": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 916, "groupName_de": "Nanobot-Reparaturpaste", "groupName_en-us": "Nanite Repair Paste", "groupName_es": "Fluido reparador de nanobots", "groupName_fr": "Nanites de réparation", "groupName_it": "Nanite Repair Paste", "groupName_ja": "ナノマシンリペアペイスト", "groupName_ko": "나나이트 용액", "groupName_ru": "Nanite Repair Paste", "groupName_zh": "纳米体修复粘合剂", "groupNameID": 64283, "iconID": 0, "published": 1, "useBasePrice": 1 }, "917": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 917, "groupName_de": "Datensammler-Blueprint", "groupName_en-us": "Data Miner Blueprint", "groupName_es": "Plano de extractor de datos", "groupName_fr": "Plan de construction Extracteur de données", "groupName_it": "Data Miner Blueprint", "groupName_ja": "データマイナー設計図", "groupName_ko": "데이터 수집기 블루프린트", "groupName_ru": "Чертежи программно-аналитического комплекса", "groupName_zh": "数据收集器蓝图", "groupNameID": 64287, "published": 1, "useBasePrice": 1 }, "918": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 918, "groupName_de": "Scansonden-Launcher-Blueprint", "groupName_en-us": "Scan Probe Launcher Blueprint", "groupName_es": "Plano de lanzasondas de escaneo", "groupName_fr": "Plan de construction Lanceur de sonde de balayage", "groupName_it": "Scan Probe Launcher Blueprint", "groupName_ja": "スキャンプローブランチャー設計図", "groupName_ko": "스캔 프로브 런처 블루프린트", "groupName_ru": "Чертежи пусковой установки разведзондов", "groupName_zh": "扫描探针发射器蓝图", "groupNameID": 64286, "published": 1, "useBasePrice": 1 }, "920": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 920, "groupName_de": "Effekt-Signalfeuer", "groupName_en-us": "Effect Beacon", "groupName_es": "Baliza de efecto", "groupName_fr": "Balise à effet", "groupName_it": "Effect Beacon", "groupName_ja": "効果ビーコン", "groupName_ko": "효과 비컨", "groupName_ru": "Точка привязки эффекта", "groupName_zh": "效果光束", "groupNameID": 64400, "published": 0, "useBasePrice": 0 }, "922": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 922, "groupName_de": "Eroberungspunkt", "groupName_en-us": "Capture Point", "groupName_es": "Punto de captura", "groupName_fr": "Point de capture", "groupName_it": "Capture Point", "groupName_ja": "捕獲ポイント", "groupName_ko": "점령 포인트", "groupName_ru": "Место захвата", "groupName_zh": "争夺点", "groupNameID": 64292, "published": 0, "useBasePrice": 0 }, "924": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 924, "groupName_de": "Missionen: Fraktionsschlachtschiff", "groupName_en-us": "Mission Faction Battleship", "groupName_es": "Acorazado de misión de facción", "groupName_fr": "Cuirassé de faction mission", "groupName_it": "Mission Faction Battleship", "groupName_ja": "ミッション勢力別戦艦", "groupName_ko": "미션 팩션 배틀쉽", "groupName_ru": "Линкор боевой группы фракции", "groupName_zh": "任务势力战列舰", "groupNameID": 64348, "published": 0, "useBasePrice": 0 }, "925": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 925, "groupName_de": "FW Infrastrukturzentrum", "groupName_en-us": "FW Infrastructure Hub", "groupName_es": "FW Infrastructure Hub", "groupName_fr": "Centre d'infrastructure GF", "groupName_it": "FW Infrastructure Hub", "groupName_ja": "FW領域管理用拠点", "groupName_ko": "팩션 전쟁 인프라 허브", "groupName_ru": "FW Infrastructure Hub", "groupName_zh": "势力战争基础设施中心", "groupNameID": 64293, "published": 0, "useBasePrice": 0 }, "927": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 927, "groupName_de": "Missionen: Fraktionstransporter", "groupName_en-us": "Mission Faction Haulers", "groupName_es": "Naves de mercancías de misión de facción", "groupName_fr": "Cargos de faction de mission", "groupName_it": "Mission Faction Haulers", "groupName_ja": "ミッション勢力別ハウラー", "groupName_ko": "미션 팩션 운반선", "groupName_ru": "Mission Faction Haulers", "groupName_zh": "任务势力运载舰", "groupNameID": 64290, "published": 0, "useBasePrice": 0 }, "934": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 934, "groupName_de": "Zombie-Einheiten", "groupName_en-us": "Zombie Entities", "groupName_es": "Entidades zombi", "groupName_fr": "Entités zombies", "groupName_it": "Zombie Entities", "groupName_ja": "ゾンビエンティティ", "groupName_ko": "좀비 객체", "groupName_ru": "Зомби", "groupName_zh": "僵尸物体", "groupNameID": 64291, "published": 0, "useBasePrice": 0 }, "935": { "anchorable": 0, "anchored": 0, "categoryID": 26, "fittableNonSingleton": 0, "groupID": 935, "groupName_de": "WeltRaum", "groupName_en-us": "WorldSpace", "groupName_es": "WorldSpace", "groupName_fr": "Espace planétaire", "groupName_it": "WorldSpace", "groupName_ja": "ワールドスペース", "groupName_ko": "월드스페이스", "groupName_ru": "Заведение", "groupName_zh": "内部空间", "groupNameID": 64403, "published": 0, "useBasePrice": 0 }, "937": { "anchorable": 0, "anchored": 0, "categoryID": 29, "fittableNonSingleton": 0, "groupID": 937, "groupName_de": "Dekorationen", "groupName_en-us": "Decorations", "groupName_es": "Condecoraciones", "groupName_fr": "Décorations", "groupName_it": "Decorations", "groupName_ja": "称号", "groupName_ko": "훈장", "groupName_ru": "Награды", "groupName_zh": "徽章和证书", "groupNameID": 64294, "published": 0, "useBasePrice": 0 }, "940": { "anchorable": 0, "anchored": 0, "categoryID": 49, "fittableNonSingleton": 0, "groupID": 940, "groupName_de": "Möbel", "groupName_en-us": "Furniture", "groupName_es": "Mobiliario", "groupName_fr": "Meubles", "groupName_it": "Furniture", "groupName_ja": "家具", "groupName_ko": "가구", "groupName_ru": "Furniture", "groupName_zh": "家具", "groupNameID": 64409, "published": 1, "useBasePrice": 0 }, "941": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 941, "groupName_de": "Industrial-Kommandoschiff", "groupName_en-us": "Industrial Command Ship", "groupName_es": "Nave de mando industrial", "groupName_fr": "Vaisseau de commandement industriel", "groupName_it": "Industrial Command Ship", "groupName_ja": "指揮型輸送艦", "groupName_ko": "인더스트리얼 커맨드쉽", "groupName_ru": "Флагман буровой флотилии", "groupName_zh": "工业指挥舰", "groupNameID": 64296, "published": 1, "useBasePrice": 0 }, "943": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 943, "groupName_de": "Veraltete Währung", "groupName_en-us": "Legacy Currency", "groupName_es": "Moneda de legado", "groupName_fr": "Ancienne unité monétaire", "groupName_it": "Legacy Currency", "groupName_ja": "レガシー通貨", "groupName_ko": "이전 화폐", "groupName_ru": "Устаревшая валюта", "groupName_zh": "古代货币", "groupNameID": 64297, "iconID": 3001, "published": 1, "useBasePrice": 0 }, "944": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 944, "groupName_de": "Blueprint eines Capital-Industrial-Schiffs", "groupName_en-us": "Capital Industrial Ship Blueprint", "groupName_es": "Plano de nave industrial capital", "groupName_fr": "Plan de construction Vaisseau industriel capital", "groupName_it": "Capital Industrial Ship Blueprint", "groupName_ja": "採掘支援母艦ブループリント", "groupName_ko": "캐피탈 인더스트리얼 블루프린트", "groupName_ru": "Чертежи промышленного корабля", "groupName_zh": "旗舰级工业舰蓝图", "groupNameID": 64299, "published": 1, "useBasePrice": 1 }, "945": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 945, "groupName_de": "Blueprint eines Industrial-Kommandoschiffs", "groupName_en-us": "Industrial Command Ship Blueprint", "groupName_es": "Plano de nave de mando industrial", "groupName_fr": "Plan de construction Vaisseau de commandement industriel", "groupName_it": "Industrial Command Ship Blueprint", "groupName_ja": "指揮型輸送艦ブループリント", "groupName_ko": "인더스트리얼 커맨드쉽 블루프린트", "groupName_ru": "Чертежи флагмана буровой флотилии", "groupName_zh": "工业指挥舰蓝图", "groupNameID": 64300, "published": 1, "useBasePrice": 1 }, "952": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 952, "groupName_de": "Missionen: Container", "groupName_en-us": "Mission Container", "groupName_es": "Contenedor de misión", "groupName_fr": "Conteneur de mission", "groupName_it": "Mission Container", "groupName_ja": "ミッションコンテナ", "groupName_ko": "미션 컨테이너", "groupName_ru": "Объект особой категории", "groupName_zh": "任务货柜舱", "groupNameID": 64301, "iconID": 0, "published": 0, "useBasePrice": 0 }, "954": { "anchorable": 0, "anchored": 0, "categoryID": 32, "fittableNonSingleton": 0, "groupID": 954, "groupName_de": "Verteidigungssubsystem", "groupName_en-us": "Defensive Subsystem", "groupName_es": "Subsistema defensivo", "groupName_fr": "Sous-système défensif", "groupName_it": "Defensive Subsystem", "groupName_ja": "防御サブシステム", "groupName_ko": "방어용 서브시스템", "groupName_ru": "Оборонительная подсистема", "groupName_zh": "防御子系统", "groupNameID": 64324, "iconID": 3631, "published": 1, "useBasePrice": 0 }, "955": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 955, "groupName_de": "Veraltete Subsysteme", "groupName_en-us": "Depricated Subsystems", "groupName_es": "Subsistemas obsoletos", "groupName_fr": "Sous-systèmes dévalorisés", "groupName_it": "Depricated Subsystems", "groupName_ja": "沈静化したサブシステム", "groupName_ko": "사용 중지된 서브시스템", "groupName_ru": "Устаревшие подсистемы", "groupName_zh": "废弃的子系统", "groupNameID": 64325, "published": 0, "useBasePrice": 0 }, "956": { "anchorable": 0, "anchored": 0, "categoryID": 32, "fittableNonSingleton": 0, "groupID": 956, "groupName_de": "Angriffssubsystem", "groupName_en-us": "Offensive Subsystem", "groupName_es": "Subsistema ofensivo", "groupName_fr": "Sous-système offensif", "groupName_it": "Offensive Subsystem", "groupName_ja": "攻撃サブシステム", "groupName_ko": "공격용 서브시스템", "groupName_ru": "Наступательная подсистема", "groupName_zh": "攻击子系统", "groupNameID": 64327, "iconID": 3641, "published": 1, "useBasePrice": 0 }, "957": { "anchorable": 0, "anchored": 0, "categoryID": 32, "fittableNonSingleton": 0, "groupID": 957, "groupName_de": "Antriebssubsystem", "groupName_en-us": "Propulsion Subsystem", "groupName_es": "Subsistemas de propulsión", "groupName_fr": "Sous-système de propulsion", "groupName_it": "Propulsion Subsystem", "groupName_ja": "推進力装備サブシステム", "groupName_ko": "추진기 서브시스템", "groupName_ru": "Двигательная подсистема", "groupName_zh": "推进子系统", "groupNameID": 64328, "iconID": 3646, "published": 1, "useBasePrice": 0 }, "958": { "anchorable": 0, "anchored": 0, "categoryID": 32, "fittableNonSingleton": 0, "groupID": 958, "groupName_de": "Kernsubsystem", "groupName_en-us": "Core Subsystem", "groupName_es": "Subsistema de núcleo", "groupName_fr": "Sous-système du noyau", "groupName_it": "Core Subsystem", "groupName_ja": "コアサブシステム", "groupName_ko": "코어 서브시스템", "groupName_ru": "Подсистема ядра", "groupName_zh": "核心子系统", "groupNameID": 64326, "iconID": 3636, "published": 1, "useBasePrice": 0 }, "959": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 959, "groupName_de": "Raumverwerfung: Schlafloser Sleeper-Wächter", "groupName_en-us": "Deadspace Sleeper Sleepless Sentinel", "groupName_es": "Centinela insomne de sleepers del espacio muerto", "groupName_fr": "Sentinelle sleeper sans sommeil Deadspace", "groupName_it": "Deadspace Sleeper Sleepless Sentinel", "groupName_ja": "デッドスペーススリーパー眠らないセンチネル", "groupName_ko": "잠들지 않는 데드스페이스 슬리퍼 센티널", "groupName_ru": "Deadspace Sleeper Sleepless Sentinel", "groupName_zh": "死亡空间冬眠者长明卫士", "groupNameID": 64315, "iconID": 0, "published": 0, "useBasePrice": 0 }, "960": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 960, "groupName_de": "Raumverwerfung: Erwachter Sleeper-Wachposten", "groupName_en-us": "Deadspace Sleeper Awakened Sentinel", "groupName_es": "Centinela despertado de sleepers del espacio muerto", "groupName_fr": "Sentinelle sleeper éveillée Deadspace", "groupName_it": "Deadspace Sleeper Awakened Sentinel", "groupName_ja": "デッドスペーススリーパー目覚めたセンチネル", "groupName_ko": "깨어난 데드스페이스 슬리퍼 센티널", "groupName_ru": "Deadspace Sleeper Awakened Sentinel", "groupName_zh": "苏醒的死亡空间冬眠者卫士", "groupNameID": 64320, "iconID": 0, "published": 0, "useBasePrice": 0 }, "961": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 961, "groupName_de": "Raumverwerfung: Sleeper-Nachwuchswachposten", "groupName_en-us": "Deadspace Sleeper Emergent Sentinel", "groupName_es": "Sentinel emergente de sleepers del espacio muerto", "groupName_fr": "Sentinelle sleeper émergente Deadspace", "groupName_it": "Deadspace Sleeper Emergent Sentinel", "groupName_ja": "デッドスペーススリーパー緊急センチネル", "groupName_ko": "이머전트 데드스페이스 슬리퍼 센티넬", "groupName_ru": "Deadspace Sleeper Emergent Sentinel", "groupName_zh": "死亡空间冬眠者新生卫士", "groupNameID": 64323, "iconID": 0, "published": 0, "useBasePrice": 0 }, "963": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 963, "groupName_de": "Strategischer Kreuzer", "groupName_en-us": "Strategic Cruiser", "groupName_es": "Crucero estratégico", "groupName_fr": "Croiseur stratégique", "groupName_it": "Strategic Cruiser", "groupName_ja": "戦略的巡洋艦", "groupName_ko": "전략 크루저", "groupName_ru": "Стратегический крейсер", "groupName_zh": "战略巡洋舰", "groupNameID": 64312, "published": 1, "useBasePrice": 0 }, "964": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 964, "groupName_de": "Hybrid-Tech-Komponenten", "groupName_en-us": "Hybrid Tech Components", "groupName_es": "Componentes de tecnología híbrida", "groupName_fr": "Composants tech hybrides", "groupName_it": "Hybrid Tech Components", "groupName_ja": "ハイブリッド技術部品", "groupName_ko": "하이브리드 부품", "groupName_ru": "Компоненты гибридных технологий", "groupName_zh": "混合科技组件", "groupNameID": 64331, "published": 1, "useBasePrice": 1 }, "965": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 965, "groupName_de": "Hybridkomponenten-Blueprints", "groupName_en-us": "Hybrid Component Blueprints", "groupName_es": "Planos de componentes híbridos", "groupName_fr": "Plans de construction Composants hybrides", "groupName_it": "Hybrid Component Blueprints", "groupName_ja": "ハイブリッドコンポーネントブループリント", "groupName_ko": "하이브리드 부품 블루프린트", "groupName_ru": "Чертежи гибридных компонентов", "groupName_zh": "混合组件蓝图", "groupNameID": 64335, "published": 1, "useBasePrice": 1 }, "966": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 966, "groupName_de": "Uraltes Bergungsgut", "groupName_en-us": "Ancient Salvage", "groupName_es": "Restos recuperados antiguos", "groupName_fr": "Récupération ancienne", "groupName_it": "Ancient Salvage", "groupName_ja": "サルベージされた遺物", "groupName_ko": "고대 샐비지 물품", "groupName_ru": "Демонтированные компоненты древних кораблей", "groupName_zh": "远古打捞", "groupNameID": 64330, "published": 1, "useBasePrice": 0 }, "967": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 967, "groupName_de": "Wurmloch-Mineralien", "groupName_en-us": "Wormhole Minerals", "groupName_es": "Minerales de agujeros de gusano", "groupName_fr": "Minerais de trou de ver", "groupName_it": "Wormhole Minerals", "groupName_ja": "ワームホール無機物", "groupName_ko": "웜홀 광물", "groupName_ru": "Материалы из неисследованного пространства", "groupName_zh": "虫洞矿物", "groupNameID": 64302, "published": 0, "useBasePrice": 0 }, "971": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 971, "groupName_de": "Sleeper-Antriebsüberreste", "groupName_en-us": "Sleeper Propulsion Relics", "groupName_es": "Reliquias de propulsión sleepers", "groupName_fr": "Reliques de propulsion sleeper", "groupName_it": "Sleeper Propulsion Relics", "groupName_ja": "スリーパー遺物(推進力)", "groupName_ko": "슬리퍼 추진 시스템 유물", "groupName_ru": "Древние двигательные установки Sleeper", "groupName_zh": "冬眠者的古老推进装备", "groupNameID": 64341, "published": 1, "useBasePrice": 0 }, "972": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 972, "groupName_de": "Veraltete Sonden", "groupName_en-us": "Obsolete Probes", "groupName_es": "Sondas obsoletas", "groupName_fr": "Sondes obsolètes", "groupName_it": "Obsolete Probes", "groupName_ja": "廃止されたプローブ", "groupName_ko": "폐기된 프로브", "groupName_ru": "Устаревшие зонды", "groupName_zh": "老式探针", "groupNameID": 64303, "published": 0, "useBasePrice": 0 }, "973": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 973, "groupName_de": "Subsystem-Blueprints", "groupName_en-us": "Subsystem Blueprints", "groupName_es": "Planos de subsistemas", "groupName_fr": "Plans de construction Sous-système", "groupName_it": "Subsystem Blueprints", "groupName_ja": "サブシステムブループリント", "groupName_ko": "서브시스템 블루프린트", "groupName_ru": "Чертежи подсистем", "groupName_zh": "子系统蓝图", "groupNameID": 64333, "published": 1, "useBasePrice": 0 }, "974": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 974, "groupName_de": "Hybrid Polymers", "groupName_en-us": "Hybrid Polymers", "groupName_es": "Polímeros híbridos", "groupName_fr": "Polymères hybrides", "groupName_it": "Hybrid Polymers", "groupName_ja": "ハイブリッド重合体", "groupName_ko": "하이브리드 폴리머", "groupName_ru": "Гибридные полимеры", "groupName_zh": "混合聚合物", "groupNameID": 64313, "published": 1, "useBasePrice": 0 }, "976": { "anchorable": 0, "anchored": 0, "categoryID": 63, "fittableNonSingleton": 0, "groupID": 976, "groupName_de": "Festivalladungen abgelaufen", "groupName_en-us": "Festival Charges Expired", "groupName_es": "Cargas de festival caducadas", "groupName_fr": "Charges de festival expirées", "groupName_it": "Festival Charges Expired", "groupName_ja": "フェスティバル弾(期限切れ)", "groupName_ko": "만료된 축제 폭죽", "groupName_ru": "Срок действия фестивальных снарядов истек", "groupName_zh": "节日弹药过期", "groupNameID": 64304, "published": 1, "useBasePrice": 0 }, "977": { "anchorable": 0, "anchored": 0, "categoryID": 24, "fittableNonSingleton": 0, "groupID": 977, "groupName_de": "Hybrid-Reaktionen", "groupName_en-us": "Hybrid Reactions", "groupName_es": "Reacciones híbridas", "groupName_fr": "Réactions hybrides", "groupName_it": "Hybrid Reactions", "groupName_ja": "ハイブリッド反応", "groupName_ko": "하이브리드 합성", "groupName_ru": "Гибридные реакции", "groupName_zh": "混合反应", "groupNameID": 64332, "published": 1, "useBasePrice": 1 }, "979": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 979, "groupName_de": "Decryptors - Hybrid", "groupName_en-us": "Decryptors - Hybrid", "groupName_es": "Desencriptadores híbridos", "groupName_fr": "Décrypteurs - Hybride", "groupName_it": "Decryptors - Hybrid", "groupName_ja": "解読器-ハイブリッド", "groupName_ko": "해독기 - 하이브리드", "groupName_ru": "Файлы данных — гибридные", "groupName_zh": "解码器—混合型", "groupNameID": 64347, "published": 1, "useBasePrice": 0 }, "982": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 982, "groupName_de": "Raumverwerfung: Schlafloser Sleeper-Verteidiger", "groupName_en-us": "Deadspace Sleeper Sleepless Defender", "groupName_es": "Defensor insomne de sleepers del espacio muerto", "groupName_fr": "Défenseur sleeper sans sommeil Deadspace", "groupName_it": "Deadspace Sleeper Sleepless Defender", "groupName_ja": "デッドスペーススリーパー眠らないディフェンダー", "groupName_ko": "잠들지 않는 데드스페이스 슬리퍼 디펜더", "groupName_ru": "Deadspace Sleeper Sleepless Defender", "groupName_zh": "死亡空间冬眠者长明防卫者", "groupNameID": 64316, "iconID": 0, "published": 0, "useBasePrice": 0 }, "983": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 983, "groupName_de": "Raumverwerfung: Schlaflose Sleeper-Patrouille", "groupName_en-us": "Deadspace Sleeper Sleepless Patroller", "groupName_es": "Patrullero insomne de sleepers del espacio muerto", "groupName_fr": "Patrouilleur sleeper sans sommeil Deadspace", "groupName_it": "Deadspace Sleeper Sleepless Patroller", "groupName_ja": "デッドスペーススリーパー眠らないパトロール", "groupName_ko": "잠들지 않는 데드스페이스 슬리퍼 순찰선", "groupName_ru": "Deadspace Sleeper Sleepless Patroller", "groupName_zh": "死亡空间冬眠者长明巡逻者", "groupNameID": 64317, "iconID": 0, "published": 0, "useBasePrice": 0 }, "984": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 984, "groupName_de": "Raumverwerfung: Erwachter Sleeper-Verteidiger", "groupName_en-us": "Deadspace Sleeper Awakened Defender", "groupName_es": "Defensor despertado de sleepers del espacio muerto", "groupName_fr": "Défenseur sleeper éveillé Deadspace", "groupName_it": "Deadspace Sleeper Awakened Defender", "groupName_ja": "デッドスペーススリーパー目覚めたディフェンダー", "groupName_ko": "깨어난 데드스페이스 슬리퍼 디펜더", "groupName_ru": "Deadspace Sleeper Awakened Defender", "groupName_zh": "苏醒的死亡空间冬眠防卫者", "groupNameID": 64319, "iconID": 0, "published": 0, "useBasePrice": 0 }, "985": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 985, "groupName_de": "Raumverwerfung: Erwachte Sleeper-Patrouille", "groupName_en-us": "Deadspace Sleeper Awakened Patroller", "groupName_es": "Patrullero despertado de sleepers del espacio muerto", "groupName_fr": "Patrouilleur sleeper éveillé Deadspace", "groupName_it": "Deadspace Sleeper Awakened Patroller", "groupName_ja": "デッドスペーススリーパー目覚めたパトロール", "groupName_ko": "깨어난 데드스페이스 슬리퍼 순찰선", "groupName_ru": "Deadspace Sleeper Awakened Patroller", "groupName_zh": "苏醒的冬眠巡逻者", "groupNameID": 64318, "iconID": 0, "published": 0, "useBasePrice": 0 }, "986": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 986, "groupName_de": "Raumverwerfung: Sleeper-Nachwuchsverteidiger", "groupName_en-us": "Deadspace Sleeper Emergent Defender", "groupName_es": "Defensor emergente de Sleepers del espacio muerto", "groupName_fr": "Défenseur sleeper émergent Deadspace", "groupName_it": "Deadspace Sleeper Emergent Defender", "groupName_ja": "デッドスペーススリーパー緊急ディフェンダー", "groupName_ko": "이머전트 데드스페이스 슬리퍼 디펜더", "groupName_ru": "Deadspace Sleeper Emergent Defender", "groupName_zh": "死亡空间冬眠者新生防卫者", "groupNameID": 64322, "iconID": 0, "published": 0, "useBasePrice": 0 }, "987": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 987, "groupName_de": "Raumverwerfung: Sleeper-Nachwuchspatrouille", "groupName_en-us": "Deadspace Sleeper Emergent Patroller", "groupName_es": "Patrullero emergente de sleepers del espacio muerto", "groupName_fr": "Patrouilleur sleeper émergent Deadspace", "groupName_it": "Deadspace Sleeper Emergent Patroller", "groupName_ja": "デッドスペーススリーパー緊急パトロール", "groupName_ko": "이머전트 데드스페이스 슬리퍼 순찰선", "groupName_ru": "Deadspace Sleeper Emergent Patroller", "groupName_zh": "死亡空间冬眠者新生巡逻者", "groupNameID": 64321, "iconID": 0, "published": 0, "useBasePrice": 0 }, "988": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 988, "groupName_de": "Wurmloch", "groupName_en-us": "Wormhole", "groupName_es": "Agujero de gusano", "groupName_fr": "Trou de ver", "groupName_it": "Wormhole", "groupName_ja": "ワームホール", "groupName_ko": "웜홀", "groupName_ru": "Червоточина", "groupName_zh": "虫洞", "groupNameID": 64309, "published": 0, "useBasePrice": 0 }, "990": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 990, "groupName_de": "Elektronische Relikte der Sleeper", "groupName_en-us": "Sleeper Electronics Relics", "groupName_es": "Reliquias electrónicas sleepers", "groupName_fr": "Reliques électroniques sleeper", "groupName_it": "Sleeper Electronics Relics", "groupName_ja": "スリーパー遺物(エレクトロニクス)", "groupName_ko": "슬리퍼 전자 시스템 유물", "groupName_ru": "Древние электронные устройства Sleeper", "groupName_zh": "冬眠者的古老电子装备", "groupNameID": 64338, "published": 1, "useBasePrice": 0 }, "991": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 991, "groupName_de": "Überreste von Sleeper-Angriffssystemen", "groupName_en-us": "Sleeper Offensive Relics", "groupName_es": "Reliquias ofensivas sleepers", "groupName_fr": "Reliques offensives sleeper", "groupName_it": "Sleeper Offensive Relics", "groupName_ja": "スリーパー遺物(攻撃)", "groupName_ko": "슬리퍼 공격용 시스템 유물", "groupName_ru": "Древние боевые машины Sleeper", "groupName_zh": "冬眠者的古老攻击装备", "groupNameID": 64340, "published": 1, "useBasePrice": 0 }, "992": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 992, "groupName_de": "Überreste des Ingenieurwesens der Sleeper", "groupName_en-us": "Sleeper Engineering Relics", "groupName_es": "Reliquias de ingeniería sleepers", "groupName_fr": "Reliques d'ingénierie sleeper", "groupName_it": "Sleeper Engineering Relics", "groupName_ja": "スリーパー遺物(エンジニアリング)", "groupName_ko": "슬리퍼 엔지니어링 시스템 유물", "groupName_ru": "Древние инженерные установки Sleeper", "groupName_zh": "冬眠者的古老工程设备", "groupNameID": 64339, "published": 1, "useBasePrice": 0 }, "993": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 993, "groupName_de": "Sleeper-Verteidigungsüberreste", "groupName_en-us": "Sleeper Defensive Relics", "groupName_es": "Reliquias defensivas de Sleepers", "groupName_fr": "Reliques défensives sleeper", "groupName_it": "Sleeper Defensive Relics", "groupName_ja": "スリーパー遺物(防御)", "groupName_ko": "슬리퍼 방어용 시스템 유물", "groupName_ru": "Древние защитные устройства Sleeper", "groupName_zh": "冬眠者的古老防御装备", "groupNameID": 64336, "published": 1, "useBasePrice": 0 }, "995": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 995, "groupName_de": "Sekundäre Sonne", "groupName_en-us": "Secondary Sun", "groupName_es": "Sol secundario", "groupName_fr": "Soleil secondaire", "groupName_it": "Secondary Sun", "groupName_ja": "第2恒星", "groupName_ko": "특수 항성", "groupName_ru": "Вторая звезда", "groupName_zh": "次级恒星", "groupNameID": 64311, "published": 0, "useBasePrice": 0 }, "996": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 996, "groupName_de": "Strategischer-Kreuzer-Blueprints", "groupName_en-us": "Strategic Cruiser Blueprints", "groupName_es": "Planos de cruceros estratégicos", "groupName_fr": "Plans de construction Croiseur stratégique", "groupName_it": "Strategic Cruiser Blueprints", "groupName_ja": "戦略的巡洋艦ブループリント", "groupName_ko": "전략 크루저 블루프린트", "groupName_ru": "Чертежи стратегического крейсера", "groupName_zh": "战略巡洋舰蓝图", "groupNameID": 64310, "published": 1, "useBasePrice": 0 }, "997": { "anchorable": 0, "anchored": 0, "categoryID": 34, "fittableNonSingleton": 0, "groupID": 997, "groupName_de": "Sleeper-Hüllenüberreste", "groupName_en-us": "Sleeper Hull Relics", "groupName_es": "Reliquias de casco sleepers", "groupName_fr": "Reliques coque sleeper", "groupName_it": "Sleeper Hull Relics", "groupName_ja": "スリーパー遺物(船体)", "groupName_ko": "슬리퍼 선체 시스템 유물", "groupName_ru": "Древние корпуса Sleeper", "groupName_zh": "冬眠者船体", "groupNameID": 64337, "published": 1, "useBasePrice": 0 }, "1003": { "anchorable": 0, "anchored": 0, "categoryID": 40, "fittableNonSingleton": 0, "groupID": 1003, "groupName_de": "Gebietsansprucheinheit", "groupName_en-us": "Territorial Claim Unit", "groupName_es": "Unidad de reivindicación territorial", "groupName_fr": "Unité de revendication territoriale", "groupName_it": "Territorial Claim Unit", "groupName_ja": "支配領管理ユニット", "groupName_ko": "영토 제어 유닛", "groupName_ru": "Блок обеспечения прав собственности", "groupName_zh": "主权宣布设施", "groupNameID": 64357, "published": 1, "useBasePrice": 1 }, "1004": { "anchorable": 1, "anchored": 0, "categoryID": 40, "fittableNonSingleton": 0, "groupID": 1004, "groupName_de": "Defense Bunkers", "groupName_en-us": "Defense Bunkers", "groupName_es": "Búnkeres defensivos", "groupName_fr": "Bunkers défensifs", "groupName_it": "Defense Bunkers", "groupName_ja": "防衛バンカー", "groupName_ko": "방어용 벙커", "groupName_ru": "Защитные бункеры", "groupName_zh": "防御碉堡", "groupNameID": 64353, "published": 0, "useBasePrice": 0 }, "1005": { "anchorable": 1, "anchored": 0, "categoryID": 40, "fittableNonSingleton": 0, "groupID": 1005, "groupName_de": "Souveränitätsblockierer", "groupName_en-us": "Sovereignty Blockade Unit", "groupName_es": "Unidad de bloqueo de soberanía", "groupName_fr": "Unité de blocus de la souveraineté", "groupName_it": "Sovereignty Blockade Unit", "groupName_ja": "領有権封鎖ユニット", "groupName_ko": "영토 봉쇄 유닛", "groupName_ru": "Устройство подавления права владения", "groupName_zh": "主权干扰设施", "groupNameID": 64359, "published": 0, "useBasePrice": 1 }, "1006": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1006, "groupName_de": "Missionen: Fraktionskreuzer", "groupName_en-us": "Mission Faction Cruiser", "groupName_es": "Crucero de misión de facción", "groupName_fr": "Croiseur de faction mission", "groupName_it": "Mission Faction Cruiser", "groupName_ja": "ミッション勢力別巡洋艦", "groupName_ko": "미션 팩션 크루저", "groupName_ru": "Крейсер боевой группы фракции", "groupName_zh": "任务势力巡洋舰", "groupNameID": 64349, "published": 0, "useBasePrice": 0 }, "1007": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1007, "groupName_de": "Missionen: Fraktionsfregatte", "groupName_en-us": "Mission Faction Frigate", "groupName_es": "Fragata de misión de facción", "groupName_fr": "Frégate de faction mission", "groupName_it": "Mission Faction Frigate", "groupName_ja": "ミッション勢力別フリゲート", "groupName_ko": "미션 팩션 프리깃", "groupName_ru": "Фрегат боевой группы фракции", "groupName_zh": "任务势力护卫舰", "groupNameID": 64350, "published": 0, "useBasePrice": 0 }, "1010": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1010, "groupName_de": "Kompakter XL Torpedo", "groupName_en-us": "Compact XL Torpedo", "groupName_es": "Torpedo compacto (XL)", "groupName_fr": "Torpille compacte XL", "groupName_it": "Compact XL Torpedo", "groupName_ja": "コンパクトXLトルピード", "groupName_ko": "컴팩트 XL 토피도", "groupName_ru": "Компактные торпеды сверхбольшой мощности", "groupName_zh": "紧凑型超大型鱼雷", "groupNameID": 64351, "published": 0, "useBasePrice": 0 }, "1012": { "anchorable": 0, "anchored": 0, "categoryID": 40, "fittableNonSingleton": 0, "groupID": 1012, "groupName_de": "SOUVERÄNITÄTSHUB", "groupName_en-us": "Sovereignty Hub", "groupName_es": "Centro de soberanía", "groupName_fr": "Pôle de souveraineté", "groupName_it": "Sovereignty Hub", "groupName_ja": "領有権ハブ", "groupName_ko": "소버린티 허브", "groupName_ru": "Штаб владений", "groupName_zh": "主权中心", "groupNameID": 64358, "published": 1, "useBasePrice": 1 }, "1013": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1013, "groupName_de": "Supercarrier-Blueprints", "groupName_en-us": "Supercarrier Blueprints", "groupName_es": "Planos de superportanaves", "groupName_fr": "Plans de construction Super porte-vaisseaux", "groupName_it": "Supercarrier Blueprints", "groupName_ja": "大型艦載機母艦ブループリント", "groupName_ko": "슈퍼캐리어 블루프린트", "groupName_ru": "Чертежи КАРа сверхбольшого тоннажа", "groupName_zh": "超级航母蓝图", "groupNameID": 64361, "published": 1, "useBasePrice": 1 }, "1016": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 1016, "groupName_de": "Infrastrukturzentrum Strategische Upgrades", "groupName_en-us": "Infrastructure Hub Strategic Upgrades", "groupName_es": "Mejoras estratégicas de centro de infraestructuras", "groupName_fr": "Améliorations stratégiques du centre d'infrastructure", "groupName_it": "Infrastructure Hub Strategic Upgrades", "groupName_ja": "インフラストラクチャハブの戦略強化", "groupName_ko": "인프라 허브 전략 업그레이드", "groupName_ru": "Стратегические улучшения центра инфраструктуры", "groupName_zh": "基础设施中心战略升级件", "groupNameID": 64356, "published": 1, "useBasePrice": 1 }, "1019": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1019, "groupName_de": "XL Marschflugkörper", "groupName_en-us": "XL Cruise Missile", "groupName_es": "Misil de crucero (XL)", "groupName_fr": "Missile de croisière XL", "groupName_it": "XL Cruise Missile", "groupName_ja": "XLクルーズミサイル", "groupName_ko": "XL 크루즈 미사일", "groupName_ru": "Ракеты дальнего боя сверхбольшой мощности", "groupName_zh": "超大型巡航导弹", "groupNameID": 64352, "iconID": 182, "published": 1, "useBasePrice": 0 }, "1020": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 1020, "groupName_de": "Infrastrukturzentrum Industrielle Upgrades", "groupName_en-us": "Infrastructure Hub Industrial Upgrades", "groupName_es": "Mejoras industriales de centro de infraestructuras", "groupName_fr": "Améliorations industrielles du centre d'infrastructure", "groupName_it": "Infrastructure Hub Industrial Upgrades", "groupName_ja": "インフラストラクチャハブの工業力強化", "groupName_ko": "인프라 허브 산업 업그레이드", "groupName_ru": "Промышленные улучшения центра инфраструктуры", "groupName_zh": "基础设施中心工业升级件", "groupNameID": 64354, "published": 1, "useBasePrice": 1 }, "1021": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 1021, "groupName_de": "Infrastrukturzentrum Militärupgrades", "groupName_en-us": "Infrastructure Hub Military Upgrades", "groupName_es": "Mejoras militares de centro de infraestructuras", "groupName_fr": "Améliorations militaires du centre d'infrastructure", "groupName_it": "Infrastructure Hub Military Upgrades", "groupName_ja": "インフラストラクチャハブの軍事力強化", "groupName_ko": "인프라 허브 군사 업그레이드", "groupName_ru": "Военные улучшения центра инфраструктуры", "groupName_zh": "基础设施中心军事升级件", "groupNameID": 64355, "published": 1, "useBasePrice": 1 }, "1022": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1022, "groupName_de": "Prototype Exploration Ship", "groupName_en-us": "Prototype Exploration Ship", "groupName_es": "Prototipo de nave de exploración", "groupName_fr": "Vaisseau d'exploration prototype", "groupName_it": "Prototype Exploration Ship", "groupName_ja": "プロトタイプ探査船", "groupName_ko": "프로토타입 탐사선", "groupName_ru": "Экспериментальный экспедиционный корабль", "groupName_zh": "考察船原型", "groupNameID": 64362, "published": 1, "useBasePrice": 0 }, "1023": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 1023, "groupName_de": "Jagdbomber", "groupName_en-us": "Fighter Bomber", "groupName_es": "Cazabombardero", "groupName_fr": "Chasseur-bombardier", "groupName_it": "Fighter Bomber", "groupName_ja": "艦載戦闘爆撃機", "groupName_ko": "전투폭격기", "groupName_ru": "Истребитель-бомбардировщик", "groupName_zh": "铁骑轰炸机", "groupNameID": 64363, "published": 0, "useBasePrice": 0 }, "1025": { "anchorable": 1, "anchored": 0, "categoryID": 46, "fittableNonSingleton": 0, "groupID": 1025, "groupName_de": "Orbitale Infrastruktur", "groupName_en-us": "Orbital Infrastructure", "groupName_es": "Infraestructura orbital", "groupName_fr": "Infrastructure orbitale", "groupName_it": "Orbital Infrastructure", "groupName_ja": "軌道インフラストラクチャ", "groupName_ko": "궤도 인프라시설", "groupName_ru": "Инфраструктура орбитальной станции", "groupName_zh": "行星海关办公室", "groupNameID": 64428, "published": 0, "useBasePrice": 0 }, "1026": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1026, "groupName_de": "Extraktoren", "groupName_en-us": "Extractors", "groupName_es": "Extractores", "groupName_fr": "Extracteurs", "groupName_it": "Extractors", "groupName_ja": "エクストラクター", "groupName_ko": "추출기", "groupName_ru": "Планетарные экстракторы", "groupName_zh": "采集器", "groupNameID": 64375, "published": 1, "useBasePrice": 1 }, "1027": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1027, "groupName_de": "Kommandozentralen", "groupName_en-us": "Command Centers", "groupName_es": "Centros de mando", "groupName_fr": "Centres de commandement", "groupName_it": "Command Centers", "groupName_ja": "司令基地", "groupName_ko": "통제센터", "groupName_ru": "Центры управления", "groupName_zh": "指挥中心", "groupNameID": 64365, "published": 1, "useBasePrice": 1 }, "1028": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1028, "groupName_de": "Prozessoren", "groupName_en-us": "Processors", "groupName_es": "Procesadores", "groupName_fr": "Processeurs", "groupName_it": "Processors", "groupName_ja": "プロセッサー", "groupName_ko": "제조시설", "groupName_ru": "Производственные комплексы", "groupName_zh": "处理设施", "groupNameID": 64376, "published": 1, "useBasePrice": 1 }, "1029": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1029, "groupName_de": "Lagereinrichtungen", "groupName_en-us": "Storage Facilities", "groupName_es": "Instalaciones de almacenamiento", "groupName_fr": "Sites de stockage", "groupName_it": "Storage Facilities", "groupName_ja": "バンカー", "groupName_ko": "보관 시설", "groupName_ru": "Складские помещения", "groupName_zh": "储藏设施", "groupNameID": 64378, "published": 1, "useBasePrice": 1 }, "1030": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1030, "groupName_de": "Raumhafen", "groupName_en-us": "Spaceports", "groupName_es": "Puertos espaciales", "groupName_fr": "Spatioports", "groupName_it": "Spaceports", "groupName_ja": "スペースポート", "groupName_ko": "우주 항구", "groupName_ru": "Космопорты", "groupName_zh": "太空港", "groupNameID": 64377, "published": 1, "useBasePrice": 1 }, "1031": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1031, "groupName_de": "Planetary Resources", "groupName_en-us": "Planetary Resources", "groupName_es": "Recursos planetarios", "groupName_fr": "Ressources planétaires", "groupName_it": "Planetary Resources", "groupName_ja": "惑星資源", "groupName_ko": "행성 자원", "groupName_ru": "Планетарные ресурсы", "groupName_zh": "行星资源", "groupNameID": 64364, "published": 1, "useBasePrice": 0 }, "1032": { "anchorable": 0, "anchored": 0, "categoryID": 42, "fittableNonSingleton": 0, "groupID": 1032, "groupName_de": "Planet (solide) – Rohmaterialien", "groupName_en-us": "Planet Solid - Raw Resource", "groupName_es": "Material sólido de planeta: materias primas", "groupName_fr": "Planète solide - Ressource brute", "groupName_it": "Planet Solid - Raw Resource", "groupName_ja": "惑星(固体) - 原資源", "groupName_ko": "행성 고체 - 기초 자원", "groupName_ru": "Планетарная порода — сырьё", "groupName_zh": "行星固体 - 原始资源", "groupNameID": 64368, "published": 1, "useBasePrice": 0 }, "1033": { "anchorable": 0, "anchored": 0, "categoryID": 42, "fittableNonSingleton": 0, "groupID": 1033, "groupName_de": "Planet (flüssig-gasförmig) – Rohmaterialien", "groupName_en-us": "Planet Liquid-Gas - Raw Resource", "groupName_es": "Gas líquido de planeta: materias primas", "groupName_fr": "Planète liquide-gaz - Ressource brute", "groupName_it": "Planet Liquid-Gas - Raw Resource", "groupName_ja": "惑星(液体ガス) - 原資源", "groupName_ko": "행성 액체-가스 - 기초 자원", "groupName_ru": "Планетарный жидкий газ — сырьё", "groupName_zh": "行星液体-气体 - 原始资源", "groupNameID": 64369, "published": 1, "useBasePrice": 0 }, "1034": { "anchorable": 0, "anchored": 0, "categoryID": 43, "fittableNonSingleton": 0, "groupID": 1034, "groupName_de": "Raffinierte Güter – Rang 2", "groupName_en-us": "Refined Commodities - Tier 2", "groupName_es": "Mercancías refinadas: nivel 2", "groupName_fr": "Marchandises raffinées - Tier 2", "groupName_it": "Refined Commodities - Tier 2", "groupName_ja": "2次加工品 - 第2類", "groupName_ko": "개량 생산품 - 티어 2", "groupName_ru": "Очищенные товары — класс 2", "groupName_zh": "加工过的资源物品 - 第二等级", "groupNameID": 64372, "published": 1, "useBasePrice": 1 }, "1035": { "anchorable": 0, "anchored": 0, "categoryID": 42, "fittableNonSingleton": 0, "groupID": 1035, "groupName_de": "Planet (organisch) – Rohmaterialien", "groupName_en-us": "Planet Organic - Raw Resource", "groupName_es": "Material orgánico de planeta: materias primas", "groupName_fr": "Planète organique - Ressource brute", "groupName_it": "Planet Organic - Raw Resource", "groupName_ja": "惑星(有機) - 原資源", "groupName_ko": "행성 유기물 - 기초 자원", "groupName_ru": "Планетарная органика — сырьё", "groupName_zh": "行星有机物 - 原始资源", "groupNameID": 64367, "published": 1, "useBasePrice": 0 }, "1036": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1036, "groupName_de": "Planetarische Verbindungen", "groupName_en-us": "Planetary Links", "groupName_es": "Enlaces planetarios", "groupName_fr": "Liaisons planétaires", "groupName_it": "Planetary Links", "groupName_ja": "惑星リンク", "groupName_ko": "행성 링크", "groupName_ru": "Транспортная система", "groupName_zh": "行星链", "groupNameID": 64366, "published": 1, "useBasePrice": 1 }, "1040": { "anchorable": 0, "anchored": 0, "categoryID": 43, "fittableNonSingleton": 0, "groupID": 1040, "groupName_de": "Spezialisierte Güter – Rang 3", "groupName_en-us": "Specialized Commodities - Tier 3", "groupName_es": "Mercancías especializadas: nivel 3", "groupName_fr": "Marchandises spécialisées - Tier 3", "groupName_it": "Specialized Commodities - Tier 3", "groupName_ja": "3次加工品 - 第3類", "groupName_ko": "전문 생산품 - 티어 3", "groupName_ru": "Специализированные товары — класс 3", "groupName_zh": "特种资源物品 - 第三等级", "groupNameID": 64373, "published": 1, "useBasePrice": 1 }, "1041": { "anchorable": 0, "anchored": 0, "categoryID": 43, "fittableNonSingleton": 0, "groupID": 1041, "groupName_de": "Weiterentwickelte Güter – Rang 4", "groupName_en-us": "Advanced Commodities - Tier 4", "groupName_es": "Mercancías avanzadas: nivel 4", "groupName_fr": "Marchandises avancées - Tier 4", "groupName_it": "Advanced Commodities - Tier 4", "groupName_ja": "最終加工品 - 第4類", "groupName_ko": "상급 생산품 - 티어 4", "groupName_ru": "Продвинутые товары — класс 4", "groupName_zh": "高级资源物品 - 第四等级", "groupNameID": 64370, "published": 1, "useBasePrice": 0 }, "1042": { "anchorable": 0, "anchored": 0, "categoryID": 43, "fittableNonSingleton": 0, "groupID": 1042, "groupName_de": "Grundlegende Güter – Rang 1", "groupName_en-us": "Basic Commodities - Tier 1", "groupName_es": "Mercancías básicas: nivel 1", "groupName_fr": "Marchandises de base - Tier 1", "groupName_it": "Basic Commodities - Tier 1", "groupName_ja": "1次加工品 - 第1類", "groupName_ko": "기본 생산품 - 티어 1", "groupName_ru": "Базовые товары — класс 1", "groupName_zh": "基础资源物品 - 第一等级", "groupNameID": 64374, "published": 1, "useBasePrice": 1 }, "1045": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1045, "groupName_de": "Sovereignty Structure Blueprint", "groupName_en-us": "Sovereignty Structure Blueprint", "groupName_es": "Plano de estructura de soberanía", "groupName_fr": "Plan de construction Structure de la souveraineté", "groupName_it": "Sovereignty Structure Blueprint", "groupName_ja": "領有権管理設備ブループリント", "groupName_ko": "소버린티 구조물 블루프린트", "groupName_ru": "Sovereignty Structure Blueprint", "groupName_zh": "主权设施蓝图", "groupNameID": 64380, "published": 1, "useBasePrice": 1 }, "1046": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1046, "groupName_de": "Nanobot-Reparaturpaste-Blueprint", "groupName_en-us": "Nanite Repair Paste Blueprint", "groupName_es": "Plano de fluido reparador de nanobots", "groupName_fr": "Plan de construction Nanites de réparation", "groupName_it": "Nanite Repair Paste Blueprint", "groupName_ja": "ナノマシンリペアペイストブループリント", "groupName_ko": "나나이트 용액 블루프린트", "groupName_ru": "Nanite Repair Paste Blueprint", "groupName_zh": "纳米体修复粘合剂蓝图", "groupNameID": 64381, "published": 1, "useBasePrice": 1 }, "1048": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1048, "groupName_de": "Sternenbasenblaupause", "groupName_en-us": "Starbase Blueprint", "groupName_es": "Plano de base estelar", "groupName_fr": "Plan de construction Base stellaire", "groupName_it": "Starbase Blueprint", "groupName_ja": "スターベースのブループリント", "groupName_ko": "스타베이스 블루프린트", "groupName_ru": "Чертежи ПОСов", "groupName_zh": "母星蓝图", "groupNameID": 64382, "published": 1, "useBasePrice": 1 }, "1051": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1051, "groupName_de": "Übergriffe: Sansha's Nation-Industrieschiff", "groupName_en-us": "Incursion Sansha's Nation Industrial", "groupName_es": "Nave industrial de incursión de la Nación Sansha", "groupName_fr": "Vaisseau industriel Sansha's Nation incursion", "groupName_it": "Incursion Sansha's Nation Industrial", "groupName_ja": "インカージョンサンシャ国インダストリアル", "groupName_ko": "인커젼 산샤 네이션 인더스트리얼", "groupName_ru": "Грузовой корабль саншистского флота вторжения", "groupName_zh": "入侵萨沙工业舰", "groupNameID": 64398, "published": 0, "useBasePrice": 0 }, "1052": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1052, "groupName_de": "Übergriffe: Sansha's Nation-Capital", "groupName_en-us": "Incursion Sansha's Nation Capital", "groupName_es": "Nave capital de incursión de la Nación Sansha", "groupName_fr": "Vaisseau capital Sansha's Nation incursion", "groupName_it": "Incursion Sansha's Nation Capital", "groupName_ja": "サンシャ国侵略キャピタル", "groupName_ko": "인커젼 산샤 네이션 캐피탈", "groupName_ru": "Корабль большого тоннажа Флота вторжения Нации Sansha", "groupName_zh": "入侵萨沙旗舰", "groupNameID": 64395, "published": 0, "useBasePrice": 0 }, "1053": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1053, "groupName_de": "Übergriffe: Sansha's Nation-Fregatte", "groupName_en-us": "Incursion Sansha's Nation Frigate", "groupName_es": "Fragata de incursión de la Nación Sansha", "groupName_fr": "Frégate Sansha's Nation incursion", "groupName_it": "Incursion Sansha's Nation Frigate", "groupName_ja": "サンシャ国侵略フリゲート", "groupName_ko": "인커젼 산샤 네이션 프리깃", "groupName_ru": "Фрегат Флота вторжения Нации Sansha", "groupName_zh": "入侵萨沙护卫舰", "groupNameID": 64397, "published": 0, "useBasePrice": 0 }, "1054": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1054, "groupName_de": "Übergriffe: Sansha's Nation-Kreuzer", "groupName_en-us": "Incursion Sansha's Nation Cruiser", "groupName_es": "Crucero de incursión de la Nación Sansha", "groupName_fr": "Croiseur Sansha's Nation incursion", "groupName_it": "Incursion Sansha's Nation Cruiser", "groupName_ja": "サンシャ国侵略巡洋艦", "groupName_ko": "인커젼 산샤 네이션 크루저", "groupName_ru": "Крейсер Флота вторжения Нации Sansha", "groupName_zh": "入侵萨沙巡洋舰", "groupNameID": 64396, "published": 0, "useBasePrice": 0 }, "1056": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1056, "groupName_de": "Übergriffe: Sansha's Nation-Schlachtschiff", "groupName_en-us": "Incursion Sansha's Nation Battleship", "groupName_es": "Acorazado de incursión de la Nación Sansha", "groupName_fr": "Cuirassé Sansha's Nation incursion", "groupName_it": "Incursion Sansha's Nation Battleship", "groupName_ja": "サンシャ国侵略戦艦", "groupName_ko": "인커젼 산샤 네이션 배틀쉽", "groupName_ru": "Линкор Флота вторжения Нации Sansha", "groupName_zh": "入侵萨沙战列舰", "groupNameID": 64394, "published": 0, "useBasePrice": 0 }, "1063": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1063, "groupName_de": "Extraktor-Kontrolleinheiten", "groupName_en-us": "Extractor Control Units", "groupName_es": "Consolas extractoras", "groupName_fr": "Unités de contrôle d'extracteur", "groupName_it": "Extractor Control Units", "groupName_ja": "エクストラクター制御装置", "groupName_ko": "추출기 제어 유닛", "groupName_ru": "Узлы управления экстракторами", "groupName_zh": "采集控制器", "groupNameID": 64399, "published": 1, "useBasePrice": 1 }, "1067": { "anchorable": 0, "anchored": 0, "categoryID": 26, "fittableNonSingleton": 0, "groupID": 1067, "groupName_de": "Materielle Zone", "groupName_en-us": "MaterialZone", "groupName_es": "Zona de materiales", "groupName_fr": "Zone matérielle", "groupName_it": "MaterialZone", "groupName_ja": "マテリアルゾーン", "groupName_ko": "메테리얼 존", "groupName_ru": "MaterialZone", "groupName_zh": "材质区域", "groupNameID": 64405, "published": 0, "useBasePrice": 0 }, "1068": { "anchorable": 0, "anchored": 0, "categoryID": 26, "fittableNonSingleton": 0, "groupID": 1068, "groupName_de": "Detail-Netz", "groupName_en-us": "DetailMesh", "groupName_es": "Malla de detalles", "groupName_fr": "DetailMesh", "groupName_it": "DetailMesh", "groupName_ja": "ディテイルメッシュ", "groupName_ko": "세부메쉬", "groupName_ru": "DetailMesh", "groupName_zh": "细节区块", "groupNameID": 64404, "published": 0, "useBasePrice": 0 }, "1071": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1071, "groupName_de": "Flammpunkt", "groupName_en-us": "Flashpoint", "groupName_es": "Foco de tensión", "groupName_fr": "Poudrière", "groupName_it": "Flashpoint", "groupName_ja": "フラッシュポイント", "groupName_ko": "플래시포인트", "groupName_ru": "Вспышка", "groupName_zh": "闪光点", "groupNameID": 64406, "published": 1, "useBasePrice": 0 }, "1073": { "anchorable": 1, "anchored": 0, "categoryID": 46, "fittableNonSingleton": 0, "groupID": 1073, "groupName_de": "Test Orbitals", "groupName_en-us": "Test Orbitals", "groupName_es": "Orbitales de prueba", "groupName_fr": "Orbitaux de test", "groupName_it": "Test Orbitals", "groupName_ja": "テスト用軌道施設", "groupName_ko": "테스트용 궤도 시설", "groupName_ru": "Тестовые орбитальные станции", "groupName_zh": "测试轨道物品", "groupNameID": 64407, "published": 0, "useBasePrice": 1 }, "1079": { "anchorable": 0, "anchored": 0, "categoryID": 49, "fittableNonSingleton": 0, "groupID": 1079, "groupName_de": "Allgemein", "groupName_en-us": "Generic", "groupName_es": "Genérico", "groupName_fr": "Générique", "groupName_it": "Generic", "groupName_ja": "一般", "groupName_ko": "일반", "groupName_ru": "Без категории", "groupName_zh": "通用", "groupNameID": 64410, "published": 1, "useBasePrice": 0 }, "1081": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1081, "groupName_de": "Söldnerbasis", "groupName_en-us": "Mercenary Bases", "groupName_es": "Bases de mercenarios", "groupName_fr": "Bases mercenaires", "groupName_it": "Mercenary Bases", "groupName_ja": "傭兵基地", "groupName_ko": "용병 기지", "groupName_ru": "Базы наемников", "groupName_zh": "雇佣兵基地", "groupNameID": 64412, "published": 1, "useBasePrice": 0 }, "1082": { "anchorable": 0, "anchored": 0, "categoryID": 41, "fittableNonSingleton": 0, "groupID": 1082, "groupName_de": "Kapselpilotenbasis", "groupName_en-us": "Capsuleer Bases", "groupName_es": "Bases de capsulistas", "groupName_fr": "Bases capsuliers", "groupName_it": "Capsuleer Bases", "groupName_ja": "カプセラ基地", "groupName_ko": "캡슐리어 기지", "groupName_ru": "Базы капсулеров", "groupName_zh": "飞行员基地", "groupNameID": 64413, "published": 1, "useBasePrice": 0 }, "1083": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1083, "groupName_de": "Augen", "groupName_en-us": "Eyewear", "groupName_es": "Dispositivos oculares", "groupName_fr": "Lunettes", "groupName_it": "Eyewear", "groupName_ja": "メガネ類", "groupName_ko": "안경류", "groupName_ru": "Очки", "groupName_zh": "眼部饰品", "groupNameID": 64417, "published": 1, "useBasePrice": 0 }, "1084": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1084, "groupName_de": "Tattoos", "groupName_en-us": "Tattoos", "groupName_es": "Tatuajes", "groupName_fr": "Tatouages", "groupName_it": "Tattoos", "groupName_ja": "タトゥー", "groupName_ko": "문신", "groupName_ru": "Татуировки", "groupName_zh": "纹身", "groupNameID": 64435, "published": 1, "useBasePrice": 0 }, "1085": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1085, "groupName_de": "Piercings", "groupName_en-us": "Piercings", "groupName_es": "Piercings", "groupName_fr": "Piercings", "groupName_it": "Piercings", "groupName_ja": "ピアス", "groupName_ko": "피어싱", "groupName_ru": "Пирсинг", "groupName_zh": "穿孔", "groupNameID": 64433, "published": 0, "useBasePrice": 0 }, "1086": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1086, "groupName_de": "Narben", "groupName_en-us": "Scars", "groupName_es": "Cicatrices", "groupName_fr": "Cicatrices", "groupName_it": "Scars", "groupName_ja": "傷跡", "groupName_ko": "흉터", "groupName_ru": "Шрамы", "groupName_zh": "疤痕", "groupNameID": 64434, "published": 0, "useBasePrice": 0 }, "1087": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1087, "groupName_de": "Mittlere Schicht", "groupName_en-us": "Mid Layer", "groupName_es": "Capa intermedia", "groupName_fr": "Sous-couche", "groupName_it": "Mid Layer", "groupName_ja": "中間レイヤー", "groupName_ko": "겉옷", "groupName_ru": "Верх (слой 2)", "groupName_zh": "中层", "groupNameID": 64432, "published": 0, "useBasePrice": 0 }, "1088": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1088, "groupName_de": "Außen", "groupName_en-us": "Outer", "groupName_es": "Exterior", "groupName_fr": "Veste", "groupName_it": "Outer", "groupName_ja": "アウター", "groupName_ko": "외투", "groupName_ru": "Верхняя одежда", "groupName_zh": "外套", "groupNameID": 64414, "published": 1, "useBasePrice": 0 }, "1089": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1089, "groupName_de": "Oberteile", "groupName_en-us": "Tops", "groupName_es": "Prendas superiores", "groupName_fr": "Hauts", "groupName_it": "Tops", "groupName_ja": "トップス", "groupName_ko": "상의", "groupName_ru": "Верх", "groupName_zh": "上装", "groupNameID": 64418, "published": 1, "useBasePrice": 0 }, "1090": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1090, "groupName_de": "Unterkörper", "groupName_en-us": "Bottoms", "groupName_es": "Prendas inferiores", "groupName_fr": "Bas", "groupName_it": "Bottoms", "groupName_ja": "ボトムス", "groupName_ko": "하의", "groupName_ru": "Низ", "groupName_zh": "下装", "groupNameID": 64419, "published": 1, "useBasePrice": 0 }, "1091": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1091, "groupName_de": "Schuhe", "groupName_en-us": "Footwear", "groupName_es": "Calzado", "groupName_fr": "Chaussures", "groupName_it": "Footwear", "groupName_ja": "靴", "groupName_ko": "신발", "groupName_ru": "Обувь", "groupName_zh": "鞋靴", "groupNameID": 64416, "published": 1, "useBasePrice": 0 }, "1092": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1092, "groupName_de": "Kopfgegenstände", "groupName_en-us": "Headwear", "groupName_es": "Accesorios para la cabeza", "groupName_fr": "Couvre-chefs", "groupName_it": "Headwear", "groupName_ja": "ヘッドウェア", "groupName_ko": "모자", "groupName_ru": "Головные уборы", "groupName_zh": "头饰", "groupNameID": 64431, "published": 1, "useBasePrice": 0 }, "1093": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1093, "groupName_de": "Make-up", "groupName_en-us": "Makeup", "groupName_es": "Maquillaje", "groupName_fr": "Maquillage", "groupName_it": "Makeup", "groupName_ja": "メイクアップ", "groupName_ko": "화장", "groupName_ru": "Макияж", "groupName_zh": "化妆", "groupNameID": 64430, "published": 0, "useBasePrice": 0 }, "1105": { "anchorable": 0, "anchored": 0, "categoryID": 53, "fittableNonSingleton": 0, "groupID": 1105, "groupName_de": "Blendenlichtreflexe", "groupName_en-us": "Lens Flares", "groupName_es": "Bengalas de lente", "groupName_fr": "Halos", "groupName_it": "Lens Flares", "groupName_ja": "レンズフレア", "groupName_ko": "렌즈 플레어", "groupName_ru": "Блики", "groupName_zh": "镜头光晕", "groupNameID": 64421, "published": 0, "useBasePrice": 0 }, "1106": { "anchorable": 1, "anchored": 0, "categoryID": 46, "fittableNonSingleton": 0, "groupID": 1106, "groupName_de": "Orbitale Bauplattform", "groupName_en-us": "Orbital Construction Platform", "groupName_es": "Plataforma de construcción orbital", "groupName_fr": "Plateforme de construction orbitale", "groupName_it": "Orbital Construction Platform", "groupName_ja": "軌道建設プラットフォーム", "groupName_ko": "궤도 시설 플랫폼", "groupName_ru": "Орбитальная строительная платформа", "groupName_zh": "轨道建筑平台", "groupNameID": 64415, "published": 1, "useBasePrice": 1 }, "1107": { "anchorable": 0, "anchored": 0, "categoryID": 53, "fittableNonSingleton": 0, "groupID": 1107, "groupName_de": "Partikelsysteme", "groupName_en-us": "Particle Systems", "groupName_es": "Sistemas de partículas", "groupName_fr": "Systèmes de particules", "groupName_it": "Particle Systems", "groupName_ja": "粒子システム", "groupName_ko": "파티클 시스템", "groupName_ru": "Частицы", "groupName_zh": "粒子系统", "groupNameID": 64422, "published": 0, "useBasePrice": 0 }, "1108": { "anchorable": 0, "anchored": 0, "categoryID": 53, "fittableNonSingleton": 0, "groupID": 1108, "groupName_de": "Animierte Lichter", "groupName_en-us": "Animated Lights", "groupName_es": "Luces animadas", "groupName_fr": "Lumières animées", "groupName_it": "Animated Lights", "groupName_ja": "アニメーションライト", "groupName_ko": "애니메이션 빛 효과", "groupName_ru": "Динамическое освещение", "groupName_zh": "动画光照", "groupNameID": 64420, "published": 0, "useBasePrice": 0 }, "1109": { "anchorable": 0, "anchored": 0, "categoryID": 29, "fittableNonSingleton": 0, "groupID": 1109, "groupName_de": "Audio", "groupName_en-us": "Audio", "groupName_es": "Sonido", "groupName_fr": "Audio", "groupName_it": "Audio", "groupName_ja": "音声", "groupName_ko": "오디오", "groupName_ru": "Звуки", "groupName_zh": "音频", "groupNameID": 64423, "published": 0, "useBasePrice": 0 }, "1110": { "anchorable": 0, "anchored": 0, "categoryID": 54, "fittableNonSingleton": 0, "groupID": 1110, "groupName_de": "Punktlichter", "groupName_en-us": "Point Lights", "groupName_es": "Luces de indicación", "groupName_fr": "Lumières en points", "groupName_it": "Point Lights", "groupName_ja": "ポイントライト", "groupName_ko": "점 광원", "groupName_ru": "Точечный свет", "groupName_zh": "点光源", "groupNameID": 64424, "published": 1, "useBasePrice": 0 }, "1111": { "anchorable": 0, "anchored": 0, "categoryID": 54, "fittableNonSingleton": 0, "groupID": 1111, "groupName_de": "Kastenlichter", "groupName_en-us": "Box Lights", "groupName_es": "Luces de caja", "groupName_fr": "Lumières en boîtes", "groupName_it": "Box Lights", "groupName_ja": "ボックスライト", "groupName_ko": "박스 광원", "groupName_ru": "Фонарь", "groupName_zh": "方块光源", "groupNameID": 64425, "published": 1, "useBasePrice": 0 }, "1112": { "anchorable": 0, "anchored": 0, "categoryID": 54, "fittableNonSingleton": 0, "groupID": 1112, "groupName_de": "Scheinwerfer", "groupName_en-us": "Spot Lights", "groupName_es": "Focos", "groupName_fr": "Lumières en projecteurs", "groupName_it": "Spot Lights", "groupName_ja": "スポットライト", "groupName_ko": "지점 광원", "groupName_ru": "Прожекторы", "groupName_zh": "聚光灯", "groupNameID": 64426, "published": 1, "useBasePrice": 0 }, "1118": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1118, "groupName_de": "Oberflächen Infrastruktur Fertigbaueinheiten", "groupName_en-us": "Surface Infrastructure Prefab Units", "groupName_es": "Unidades prefabricadas de infraestructuras de superficie", "groupName_fr": "Unités préfabriquées d'infrastructure de surface", "groupName_it": "Surface Infrastructure Prefab Units", "groupName_ja": "サーフェスインフラストラクチャプレハブユニット", "groupName_ko": "지표면 인프라 조립식 유닛", "groupName_ru": "Сборные единицы поверхностной инфраструктуры", "groupName_zh": "地表设施预制单元", "groupNameID": 64429, "published": 0, "useBasePrice": 0 }, "1121": { "anchorable": 0, "anchored": 0, "categoryID": 29, "fittableNonSingleton": 0, "groupID": 1121, "groupName_de": "Empfangspunkt", "groupName_en-us": "Perception Points", "groupName_es": "Puntos de percepción", "groupName_fr": "Points de perception", "groupName_it": "Perception Points", "groupName_ja": "知覚ポイント", "groupName_ko": "지각력 포인트", "groupName_ru": "Невидимые очки восприятия", "groupName_zh": "感知点", "groupNameID": 64436, "published": 1, "useBasePrice": 0 }, "1122": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1122, "groupName_de": "Bergungsmodul", "groupName_en-us": "Salvager", "groupName_es": "Recuperador", "groupName_fr": "Récupérateur", "groupName_it": "Salvager", "groupName_ja": "サルベージャー", "groupName_ko": "샐비저", "groupName_ru": "Демонтажная установка", "groupName_zh": "打捞器", "groupNameID": 64438, "published": 1, "useBasePrice": 0 }, "1123": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1123, "groupName_de": "Bergungsmodul-Blueprint", "groupName_en-us": "Salvager Blueprint", "groupName_es": "Plano de recuperador", "groupName_fr": "Plan de construction Récupérateur", "groupName_it": "Salvager Blueprint", "groupName_ja": "サルベージャーブループリント", "groupName_ko": "샐비저 블루프린트", "groupName_ru": "Чертежи демонтажной установки", "groupName_zh": "打捞器蓝图", "groupNameID": 64439, "published": 1, "useBasePrice": 1 }, "1126": { "anchorable": 0, "anchored": 0, "categoryID": 59, "fittableNonSingleton": 0, "groupID": 1126, "groupName_de": "PhysicalPortals", "groupName_en-us": "PhysicalPortals", "groupName_es": "Portales físicos", "groupName_fr": "Portails physiques", "groupName_it": "PhysicalPortals", "groupName_ja": "フィジカルポータル", "groupName_ko": "물리적 포탈", "groupName_ru": "Физические порталы", "groupName_zh": "物理入口", "groupNameID": 235966, "published": 0, "useBasePrice": 0 }, "1136": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 1136, "groupName_de": "Treibstoffblock", "groupName_en-us": "Fuel Block", "groupName_es": "Bloque de combustible", "groupName_fr": "Bloc de carburant", "groupName_it": "Fuel Block", "groupName_ja": "燃料ブロック", "groupName_ko": "연료 블록", "groupName_ru": "Топливный блок", "groupName_zh": "燃料块", "groupNameID": 263520, "published": 1, "useBasePrice": 1 }, "1137": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1137, "groupName_de": "Treibstoffblock Blaupause", "groupName_en-us": "Fuel Block Blueprint", "groupName_es": "Plano de bloque de combustible", "groupName_fr": "Plan de construction Bloc de carburant", "groupName_it": "Fuel Block Blueprint", "groupName_ja": "燃料ブロックブループリント", "groupName_ko": "연료 블록 블루프린트", "groupName_ru": "Чертеж топливного блока", "groupName_zh": "燃料块蓝图", "groupNameID": 263521, "published": 1, "useBasePrice": 1 }, "1139": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1139, "groupName_de": "Bergbaulaser Upgrade Blaupause", "groupName_en-us": "Mining Laser Upgrade Blueprint", "groupName_es": "Plano de mejora de láser minero", "groupName_fr": "Plan de construction Amélioration de laser d'extraction", "groupName_it": "Mining Laser Upgrade Blueprint", "groupName_ja": "採掘レーザー強化ブループリント", "groupName_ko": "채굴 레이저 업그레이드 블루프린트", "groupName_ru": "Чертеж улучшенного экстрактора", "groupName_zh": "采矿激光提升器蓝图", "groupNameID": 263644, "published": 1, "useBasePrice": 1 }, "1141": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1141, "groupName_de": "Forschungsdaten", "groupName_en-us": "Research Data", "groupName_es": "Datos de investigación.", "groupName_fr": "Données de recherche", "groupName_it": "Research Data", "groupName_ja": "研究データ", "groupName_ko": "연구 데이터", "groupName_ru": "Исследовательские данные", "groupName_zh": "研究数据", "groupNameID": 263706, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1142": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1142, "groupName_de": "Energieneutralisierer-Drohnen-Blaupause", "groupName_en-us": "Energy Neutralizer Drone Blueprint", "groupName_es": "Plano de dron neutralizador energético", "groupName_fr": "Plan de construction Drone de neutralisation de l'énergie", "groupName_it": "Energy Neutralizer Drone Blueprint", "groupName_ja": "エネルギーニュートライザードローンのブループリント", "groupName_ko": "에너지 뉴트럴라이저 드론 블루프린트", "groupName_ru": "Чертежи дистанционных нейтрализаторов заряда", "groupName_zh": "能量中和无人机蓝图", "groupNameID": 267565, "published": 1, "useBasePrice": 1 }, "1143": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1143, "groupName_de": "Electronic Warfare Drone Blueprint", "groupName_en-us": "Electronic Warfare Drone Blueprint", "groupName_es": "Plano de dron de guerra electrónica", "groupName_fr": "Plan de construction Drone de guerre électronique", "groupName_it": "Electronic Warfare Drone Blueprint", "groupName_ja": "電子戦ドローンブループリント", "groupName_ko": "전자전 드론 블루프린트", "groupName_ru": "Electronic Warfare Drone Blueprint", "groupName_zh": "电子战无人机蓝图", "groupNameID": 267566, "published": 1, "useBasePrice": 1 }, "1144": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1144, "groupName_de": "Logistic Drone Blueprint", "groupName_en-us": "Logistic Drone Blueprint", "groupName_es": "Plano de dron logístico", "groupName_fr": "Plan de construction Drone d'assistance", "groupName_it": "Logistic Drone Blueprint", "groupName_ja": "支援専門ドローンブループリント", "groupName_ko": "로지스틱스 드론 블루프린트", "groupName_ru": "Чертежи ремонтного дрона", "groupName_zh": "后勤无人机蓝图", "groupNameID": 267567, "published": 1, "useBasePrice": 1 }, "1145": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1145, "groupName_de": "Schwerer Jäger Blaupause", "groupName_en-us": "Heavy Fighter Blueprint", "groupName_es": "Plano de caza pesado", "groupName_fr": "Plan de construction Chasseur lourd", "groupName_it": "Heavy Fighter Blueprint", "groupName_ja": "重量級戦闘機のブループリント", "groupName_ko": "헤비 파이터 블루프린트", "groupName_ru": "Чертежи тяжёлых истребителей", "groupName_zh": "重型铁骑舰载机蓝图", "groupNameID": 267568, "published": 1, "useBasePrice": 1 }, "1146": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1146, "groupName_de": "Leichter Jäger Blaupause", "groupName_en-us": "Light Fighter Blueprint", "groupName_es": "Plano de caza ligero", "groupName_fr": "Plan de construction Chasseur léger", "groupName_it": "Light Fighter Blueprint", "groupName_ja": "軽量級戦闘機設計図", "groupName_ko": "라이트 파이터 블루프린트", "groupName_ru": "Чертежи лёгких истребителей", "groupName_zh": "轻型铁骑舰载机蓝图", "groupNameID": 267569, "published": 1, "useBasePrice": 1 }, "1147": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1147, "groupName_de": "Stasis Webifying Drone Blueprint", "groupName_en-us": "Stasis Webifying Drone Blueprint", "groupName_es": "Plano de dron de red ralentizadora", "groupName_fr": "Plan de construction Drone de stase", "groupName_it": "Stasis Webifying Drone Blueprint", "groupName_ja": "ステイシスウェブドローンブループリント", "groupName_ko": "웹 드론 블루프린트", "groupName_ru": "Stasis Webifying Drone Blueprint", "groupName_zh": "停滞缠绕无人机蓝图", "groupNameID": 267570, "published": 1, "useBasePrice": 1 }, "1149": { "anchorable": 1, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1149, "groupName_de": "Mobiler Sprungunterbrecher", "groupName_en-us": "Mobile Jump Disruptor", "groupName_es": "Disruptor de salto móvil", "groupName_fr": "Disrupteur de saut mobile", "groupName_it": "Mobile Jump Disruptor", "groupName_ja": "移動式ジャンプ妨害器", "groupName_ko": "이동식 Jump Disruptor", "groupName_ru": "Mobile Jump Disruptor", "groupName_zh": "机动跳跃扰断器", "groupNameID": 277374, "iconID": 0, "published": 0, "useBasePrice": 0 }, "1150": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1150, "groupName_de": "Panzerungsverstärker mit Beständigkeitsanpassung", "groupName_en-us": "Armor Resistance Shift Hardener", "groupName_es": "Endurecedor de cambio de resistencia de blindaje", "groupName_fr": "Renforcement de résistance de blindage adaptatif", "groupName_it": "Armor Resistance Shift Hardener", "groupName_ja": "アーマーレジスタンスシフトハードナー", "groupName_ko": "장갑 저항력 변환 강화장치", "groupName_ru": "Система укрепления брони с автонастройкой", "groupName_zh": "装甲抗性变换增强器", "groupNameID": 277777, "published": 1, "useBasePrice": 0 }, "1151": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1151, "groupName_de": "Blueprint für Panzerungsverstärker mit Beständigkeitsanpassung", "groupName_en-us": "Armor Resistance Shift Hardener Blueprint", "groupName_es": "Plano de endurecedor de cambio de resistencia de blindaje", "groupName_fr": "Plan de construction Renforcement de résistance de blindage adaptatif", "groupName_it": "Armor Resistance Shift Hardener Blueprint", "groupName_ja": "アーマーレジスタンスシフトハードナーブループリント", "groupName_ko": "장갑 저항력 변환 강화장치 블루프린트", "groupName_ru": "Чертежи системы укрепления брони с автонастройкой", "groupName_zh": "装甲抗性变换增强器蓝图", "groupNameID": 278152, "published": 1, "useBasePrice": 1 }, "1152": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1152, "groupName_de": "Blueprint für Drohnenschadensmodul", "groupName_en-us": "Drone Damage Module Blueprint", "groupName_es": "Plano de módulo de daño de drones", "groupName_fr": "Plan de construction Module de dégâts causés par les drones", "groupName_it": "Drone Damage Module Blueprint", "groupName_ja": "ドローンダメージモジュールブループリント", "groupName_ko": "드론 데미지 모듈 블루프린트", "groupName_ru": "Drone Damage Module Blueprint", "groupName_zh": "无人机伤害装置蓝图", "groupNameID": 278182, "published": 1, "useBasePrice": 1 }, "1153": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1153, "groupName_de": "Shield Booster Skript", "groupName_en-us": "Shield Booster Script", "groupName_es": "Script de potenciador de escudo", "groupName_fr": "Script de booster de bouclier", "groupName_it": "Shield Booster Script", "groupName_ja": "シールドブースタースクリプト", "groupName_ko": "실드 부스터 스크립트", "groupName_ru": "Прошивка для установки накачки силового поля", "groupName_zh": "护盾回充增量脚本", "groupNameID": 278184, "published": 0, "useBasePrice": 0 }, "1154": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1154, "groupName_de": "Signatursuppressor", "groupName_en-us": "Signature Suppressor", "groupName_es": "Supresor de señal", "groupName_fr": "Suppresseur de signature", "groupName_it": "Signature Suppressor", "groupName_ja": "シグネチャサプレッサー", "groupName_ko": "시그니처 억제기", "groupName_ru": "Подавитель сигнатуры", "groupName_zh": "信号半径抑制装置", "groupNameID": 278323, "published": 1, "useBasePrice": 0 }, "1155": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1155, "groupName_de": "Blaupause für einen Signatursuppressor", "groupName_en-us": "Signature Suppressor Blueprint", "groupName_es": "Plano de supresor de señales", "groupName_fr": "Plan de construction Suppresseur de signature", "groupName_it": "Signature Suppressor Blueprint", "groupName_ja": "シグネチャサプレッサー設計図", "groupName_ko": "시그니처 억제기 블루프린트", "groupName_ru": "Чертёж подавителя сигнатуры", "groupName_zh": "信号半径抑制装置蓝图", "groupNameID": 278329, "published": 1, "useBasePrice": 1 }, "1156": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1156, "groupName_de": "Ancillary-Schildbooster", "groupName_en-us": "Ancillary Shield Booster", "groupName_es": "Potenciador de escudo auxiliar", "groupName_fr": "Booster de bouclier annexe", "groupName_it": "Ancillary Shield Booster", "groupName_ja": "補助シールドブースター", "groupName_ko": "보조 실드 부스터", "groupName_ru": "Установки вспомогательной накачки силового поля", "groupName_zh": "辅助护盾回充增量器", "groupNameID": 278395, "iconID": 10935, "published": 1, "useBasePrice": 0 }, "1157": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1157, "groupName_de": "Blueprint für Fueled Shield Booster", "groupName_en-us": "Fueled Shield Booster Blueprint", "groupName_es": "Plano de potenciador de escudo alentado", "groupName_fr": "Plan de construction Booster de bouclier alimenté", "groupName_it": "Fueled Shield Booster Blueprint", "groupName_ja": "燃料方式シールドブースターブループリント", "groupName_ko": "연료 실드 부스터 블루프린트", "groupName_ru": "Fueled Shield Booster Blueprint", "groupName_zh": "燃料式护盾回充增量器蓝图", "groupNameID": 278405, "published": 1, "useBasePrice": 1 }, "1158": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1158, "groupName_de": "Schwere Defender Missile", "groupName_en-us": "Heavy Defender Missile", "groupName_es": "Misil de defensa pesado", "groupName_fr": "Missile défenseur lourd", "groupName_it": "Heavy Defender Missile", "groupName_ja": "大型防衛ミサイル", "groupName_ko": "헤비 디펜더 미사일", "groupName_ru": "Противоракета большой мощности", "groupName_zh": "重型反弹道导弹", "groupNameID": 278461, "iconID": 192, "published": 0, "useBasePrice": 0 }, "1159": { "anchorable": 0, "anchored": 0, "categoryID": 18, "fittableNonSingleton": 0, "groupID": 1159, "groupName_de": "Bergungsdrohne", "groupName_en-us": "Salvage Drone", "groupName_es": "Dron recuperador", "groupName_fr": "Drone de récupération", "groupName_it": "Salvage Drone", "groupName_ja": "サルベージドローン", "groupName_ko": "샐비지 드론", "groupName_ru": "Дрон-демонтажник", "groupName_zh": "打捞无人机", "groupNameID": 278654, "published": 1, "useBasePrice": 0 }, "1160": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1160, "groupName_de": "Blueprints für Überwachungssonden", "groupName_en-us": "Survey Probe Blueprints", "groupName_es": "Planos de sonda de prospección", "groupName_fr": "Plans de construction Sonde d'inspection", "groupName_it": "Survey Probe Blueprints", "groupName_ja": "衛星調査プローブブループリント", "groupName_ko": "조사 프로브 블루프린트", "groupName_ru": "Чертежи лунного зонда", "groupName_zh": "测量探针蓝图", "groupNameID": 281035, "published": 1, "useBasePrice": 1 }, "1162": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1162, "groupName_de": "Blueprints für Container", "groupName_en-us": "Container Blueprints", "groupName_es": "Planos de contenedor", "groupName_fr": "Plans de construction Conteneur", "groupName_it": "Container Blueprints", "groupName_ja": "コンテナブループリント", "groupName_ko": "컨테이너 블루프린트", "groupName_ru": "Чертежи контейнеров", "groupName_zh": "货柜蓝图", "groupNameID": 281234, "published": 1, "useBasePrice": 1 }, "1165": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1165, "groupName_de": "Satellit", "groupName_en-us": "Satellite", "groupName_es": "Satélite", "groupName_fr": "Satellite", "groupName_it": "Satellite", "groupName_ja": "サテライト", "groupName_ko": "인공위성", "groupName_ru": "Спутник", "groupName_zh": "人造卫星", "groupNameID": 282854, "published": 1, "useBasePrice": 0 }, "1166": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1166, "groupName_de": "FW Fregatte der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Frigate", "groupName_es": "Fragata de la República Minmatar (GF)", "groupName_fr": "Frégate République minmatar GF", "groupName_it": "FW Minmatar Republic Frigate", "groupName_ja": "FWミンマター共和国フリゲート", "groupName_ko": "FW 민마타 프리깃", "groupName_ru": "Фрегат ополчения Республики Минматар", "groupName_zh": "势力战争米玛塔尔共和国护卫舰", "groupNameID": 283244, "published": 1, "useBasePrice": 0 }, "1167": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1167, "groupName_de": "FW Fregatte des Staats der Caldari", "groupName_en-us": "FW Caldari State Frigate", "groupName_es": "Fragata de GF del Estado Caldari", "groupName_fr": "Frégate État caldari GF", "groupName_it": "FW Caldari State Frigate", "groupName_ja": "FWカルダリ連合フリゲート", "groupName_ko": "FW 칼다리 프리깃", "groupName_ru": "Фрегат ополчения Государства Калдари", "groupName_zh": "势力战争加达里合众国护卫舰", "groupNameID": 283255, "published": 1, "useBasePrice": 0 }, "1168": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1168, "groupName_de": "FW Fregatte der Föderation der Gallente", "groupName_en-us": "FW Gallente Federation Frigate", "groupName_es": "Fragata de GF de la Federación Gallente", "groupName_fr": "Frégate Fédération gallente GF", "groupName_it": "FW Gallente Federation Frigate", "groupName_ja": "FWガレンテ連邦フリゲート", "groupName_ko": "FW 갈란테 프리깃", "groupName_ru": "Фрегат ополчения Галлентской Федерации", "groupName_zh": "势力战争盖伦特联邦护卫舰", "groupNameID": 283260, "published": 1, "useBasePrice": 0 }, "1169": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1169, "groupName_de": "FW Fregatte des Amarr-Imperiums", "groupName_en-us": "FW Amarr Empire Frigate", "groupName_es": "Fragata de GF del Imperio Amarr", "groupName_fr": "Frégate Empire amarr GF", "groupName_it": "FW Amarr Empire Frigate", "groupName_ja": "FWアマー帝国フリゲート", "groupName_ko": "FW 아마르 프리깃", "groupName_ru": "Фрегат ополчения Амаррской Империи", "groupName_zh": "势力战争艾玛帝国护卫舰", "groupNameID": 283263, "published": 1, "useBasePrice": 0 }, "1174": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1174, "groupName_de": "Asteroiden: Raubdrohnenoffizier", "groupName_en-us": "Asteroid Rogue Drone Officer", "groupName_es": "Oficial de asteroide de dron rebelde", "groupName_fr": "Officier drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Officer", "groupName_ja": "アステロイドローグドローン士官", "groupName_ko": "소행성 로그 드론 장교", "groupName_ru": "Asteroid Rogue Drone Officer", "groupName_zh": "小行星自由无人机官员", "groupNameID": 283414, "published": 0, "useBasePrice": 0 }, "1175": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1175, "groupName_de": "FW Zerstörer des Amarr-Imperiums", "groupName_en-us": "FW Amarr Empire Destroyer", "groupName_es": "Destructor de GF del Imperio Amarr", "groupName_fr": "Destroyer Empire amarr GF", "groupName_it": "FW Amarr Empire Destroyer", "groupName_ja": "FWアマー帝国駆逐艦", "groupName_ko": "FW 아마르 디스트로이어", "groupName_ru": "Эсминец ополчения Амаррской Империи", "groupName_zh": "势力战争艾玛帝国驱逐舰", "groupNameID": 283415, "published": 1, "useBasePrice": 0 }, "1176": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1176, "groupName_de": "FW Zerstörer des Staats der Caldari", "groupName_en-us": "FW Caldari State Destroyer", "groupName_es": "Destructor de GF del Estado Caldari", "groupName_fr": "Destroyer État caldari GF", "groupName_it": "FW Caldari State Destroyer", "groupName_ja": "FWカルダリ連合駆逐艦", "groupName_ko": "FW 칼다리 디스트로이어", "groupName_ru": "Эсминец ополчения Государства Калдари", "groupName_zh": "势力战争加达里合众国驱逐舰", "groupNameID": 283416, "published": 1, "useBasePrice": 0 }, "1177": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1177, "groupName_de": "FW Zerstörer der Gallente-Föderation", "groupName_en-us": "FW Gallente Federation Destroyer", "groupName_es": "Destructor de GF de la Federación Gallente", "groupName_fr": "Destroyer Fédération gallente GF", "groupName_it": "FW Gallente Federation Destroyer", "groupName_ja": "FWガレンテ連邦駆逐艦", "groupName_ko": "FW 갈란테 디스트로이어", "groupName_ru": "Эсминец ополчения Галлентской Федерации", "groupName_zh": "势力战争盖伦特联邦驱逐舰", "groupNameID": 283417, "published": 1, "useBasePrice": 0 }, "1178": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1178, "groupName_de": "FW Zerstörer der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Destroyer", "groupName_es": "Destructor de GF de la República Minmatar", "groupName_fr": "Destroyer République minmatar GF", "groupName_it": "FW Minmatar Republic Destroyer", "groupName_ja": "FWミンマター共和国駆逐艦", "groupName_ko": "FW 민마타 디스트로이어", "groupName_ru": "Эсминец ополчения Республики Минматар", "groupName_zh": "势力战争米玛塔尔共和国驱逐舰", "groupNameID": 283418, "published": 1, "useBasePrice": 0 }, "1179": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1179, "groupName_de": "FW Kreuzer des Amarr-Imperiums", "groupName_en-us": "FW Amarr Empire Cruiser", "groupName_es": "Crucero de GF del Imperio Amarr", "groupName_fr": "Croiseur Empire amarr GF", "groupName_it": "FW Amarr Empire Cruiser", "groupName_ja": "FWアマー帝国巡洋艦", "groupName_ko": "FW 아마르 크루저", "groupName_ru": "Крейсер ополчения Амаррской Империи", "groupName_zh": "势力战争艾玛帝国巡洋舰", "groupNameID": 283424, "published": 1, "useBasePrice": 0 }, "1180": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1180, "groupName_de": "FW Kreuzer des Staats der Caldari", "groupName_en-us": "FW Caldari State Cruiser", "groupName_es": "Crucero de GF del Estado Caldari", "groupName_fr": "Croiseur État caldari GF", "groupName_it": "FW Caldari State Cruiser", "groupName_ja": "FWカルダリ連合巡洋艦", "groupName_ko": "FW 칼다리 크루저", "groupName_ru": "Крейсер ополчения Государства Калдари", "groupName_zh": "势力战争加达里合众国巡洋舰", "groupNameID": 283425, "published": 1, "useBasePrice": 0 }, "1181": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1181, "groupName_de": "FW Kreuzer der Gallente-Föderation", "groupName_en-us": "FW Gallente Federation Cruiser", "groupName_es": "Crucero de GF de la Federación Gallente", "groupName_fr": "Croiseur Fédération gallente GF", "groupName_it": "FW Gallente Federation Cruiser", "groupName_ja": "FWガレンテ連邦巡洋艦", "groupName_ko": "FW 갈란테 크루저", "groupName_ru": "Крейсер ополчения Галлентской Федерации", "groupName_zh": "势力战争盖伦特联邦巡洋舰", "groupNameID": 283426, "published": 1, "useBasePrice": 0 }, "1182": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1182, "groupName_de": "FW Kreuzer der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Cruiser", "groupName_es": "Crucero de GF de la República Minmatar", "groupName_fr": "Croiseur République minmatar GF", "groupName_it": "FW Minmatar Republic Cruiser", "groupName_ja": "FWミンマター共和国巡洋艦", "groupName_ko": "FW 민마타 크루저", "groupName_ru": "Крейсер ополчения Республики Минматар", "groupName_zh": "势力战争米玛塔尔共和国巡洋舰", "groupNameID": 283427, "published": 1, "useBasePrice": 0 }, "1183": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1183, "groupName_de": "FW Schlachtkreuzer des Amarr-Imperiums", "groupName_en-us": "FW Amarr Empire Battlecruiser", "groupName_es": "Crucero de combate de GF del Imperio Amarr", "groupName_fr": "Croiseur de bataille Empire amarr GF", "groupName_it": "FW Amarr Empire Battlecruiser", "groupName_ja": "FWアマー帝国巡洋戦艦", "groupName_ko": "FW 아마르 배틀크루저", "groupName_ru": "Линейный крейсер ополчения Амаррской Империи", "groupName_zh": "势力战争艾玛帝国战列舰", "groupNameID": 283434, "published": 1, "useBasePrice": 0 }, "1184": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1184, "groupName_de": "FW Schlachtkreuzer des Staats der Caldari", "groupName_en-us": "FW Caldari State Battlecruiser", "groupName_es": "Crucero de combate de GF del Estado Caldari", "groupName_fr": "Croiseur de bataille État caldari GF", "groupName_it": "FW Caldari State Battlecruiser", "groupName_ja": "FWカルダリ連合巡洋戦艦", "groupName_ko": "FW 칼다리 배틀크루저", "groupName_ru": "Линейный крейсер ополчения Государства Калдари", "groupName_zh": "势力战争加达里合众国战列舰", "groupNameID": 283435, "published": 1, "useBasePrice": 0 }, "1185": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1185, "groupName_de": "FW Schlachtkreuzer der Gallente-Föderation", "groupName_en-us": "FW Gallente Federation Battlecruiser", "groupName_es": "Crucero de combate de GF de la Federación Gallente", "groupName_fr": "Croiseur de bataille Fédération gallente GF", "groupName_it": "FW Gallente Federation Battlecruiser", "groupName_ja": "FWガレンテ連邦巡洋戦艦", "groupName_ko": "FW 갈란테 배틀크루저", "groupName_ru": "Линейный крейсер ополчения Галлентской Федерации", "groupName_zh": "势力战争盖伦特联邦战列舰", "groupNameID": 283436, "published": 1, "useBasePrice": 0 }, "1186": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1186, "groupName_de": "FW Schlachtkreuzer der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Battlecruiser", "groupName_es": "Crucero de combate de GF de la República Minmatar", "groupName_fr": "Croiseur de bataille République minmatar GF", "groupName_it": "FW Minmatar Republic Battlecruiser", "groupName_ja": "FWミンマター共和国巡洋戦艦", "groupName_ko": "FW 민마타 배틀크루저", "groupName_ru": "Линейный крейсер ополчения Республики Минматар", "groupName_zh": "势力战争米玛塔尔共和国战列舰", "groupNameID": 283437, "published": 1, "useBasePrice": 0 }, "1189": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1189, "groupName_de": "Mikrosprungantrieb", "groupName_en-us": "Micro Jump Drive", "groupName_es": "Motor de microsalto", "groupName_fr": "Propulseur de microsauts", "groupName_it": "Micro Jump Drive", "groupName_ja": "マイクロジャンプドライブ", "groupName_ko": "마이크로 점프 드라이브", "groupName_ru": "Маневровый гипердвигатель", "groupName_zh": "微型跳跃引擎", "groupNameID": 283654, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1190": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1190, "groupName_de": "Blueprint für Bergungsdrohne", "groupName_en-us": "Salvage Drone Blueprint", "groupName_es": "Plano de dron recuperador", "groupName_fr": "Plan de construction Drone de récupération", "groupName_it": "Salvage Drone Blueprint", "groupName_ja": "サルベージドローンブループリント", "groupName_ko": "샐비지 드론 블루프린트", "groupName_ru": "Чертежи дрона-демонтажника", "groupName_zh": "打捞无人机蓝图", "groupNameID": 283655, "published": 1, "useBasePrice": 1 }, "1191": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1191, "groupName_de": "Blueprint für Microsprungantrieb", "groupName_en-us": "Micro Jump Drive Blueprint", "groupName_es": "Plano de motor de microsalto", "groupName_fr": "Plan de construction Propulseur de microsauts", "groupName_it": "Micro Jump Drive Blueprint", "groupName_ja": "マイクロジャンプドライブブループリント", "groupName_ko": "마이크로 점프 드라이브 블루프린트", "groupName_ru": "Чертежи маневрового гипердвигателя", "groupName_zh": "微型跳跃引擎蓝图", "groupNameID": 283702, "published": 1, "useBasePrice": 1 }, "1194": { "anchorable": 0, "anchored": 0, "categoryID": 63, "fittableNonSingleton": 0, "groupID": 1194, "groupName_de": "Sonderversionen: Handelsgüter", "groupName_en-us": "Special Edition Commodities", "groupName_es": "Mercancías de edición especial", "groupName_fr": "Marchandises édition spéciale", "groupName_it": "Special Edition Commodities", "groupName_ja": "特別版加工品", "groupName_ko": "스페셜 에디션 아이템", "groupName_ru": "Товары из особых изданий", "groupName_zh": "特别版商品", "groupNameID": 285071, "published": 1, "useBasePrice": 0 }, "1195": { "anchorable": 0, "anchored": 0, "categoryID": 63, "fittableNonSingleton": 0, "groupID": 1195, "groupName_de": "Turnierkarten: New Eden Open YC 114", "groupName_en-us": "Tournament Cards: New Eden Open YC 114", "groupName_es": "Cartas del torneo: Open de Nuevo Edén del 114 CY", "groupName_fr": "Cartes de tournoi : New Eden Open 114 après CY", "groupName_it": "Tournament Cards: New Eden Open YC 114", "groupName_ja": "トーナメントカード:ニューエデンオープンYC 114", "groupName_ko": "토너먼트 카드: 뉴에덴 오픈 YC 114년", "groupName_ru": "Турнирные карты: New Eden Open YC 114", "groupName_zh": "锦标赛卡片:YC114年新伊甸公开赛", "groupNameID": 285103, "published": 1, "useBasePrice": 0 }, "1197": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1197, "groupName_de": "Sonderversionen: Blueprints", "groupName_en-us": "Special Edition Commodity Blueprints", "groupName_es": "Planos de mercancías de edición especial", "groupName_fr": "Plans de construction Marchandises édition spéciale", "groupName_it": "Special Edition Commodity Blueprints", "groupName_ja": "特別版加工品ブループリント", "groupName_ko": "스페셜 에디션 상품 블루프린트", "groupName_ru": "Чертежи товаров из особых изданий", "groupName_zh": "特别版商品蓝图", "groupNameID": 285267, "published": 1, "useBasePrice": 0 }, "1198": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1198, "groupName_de": "Orbitalziel", "groupName_en-us": "Orbital Target", "groupName_es": "Objetivo orbital", "groupName_fr": "Cible orbitale", "groupName_it": "Orbital Target", "groupName_ja": "軌道爆撃目標", "groupName_ko": "궤도 타겟", "groupName_ru": "Орбитальная цель", "groupName_zh": "轨道目标", "groupNameID": 285507, "published": 1, "useBasePrice": 0 }, "1199": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1199, "groupName_de": "Ancillary-Panzerungsreperatursystem", "groupName_en-us": "Ancillary Armor Repairer", "groupName_es": "Reparador de blindaje auxiliar", "groupName_fr": "Réparateur de blindage annexe", "groupName_it": "Ancillary Armor Repairer", "groupName_ja": "補助アーマーリペアラ", "groupName_ko": "보조 장갑수리 장치", "groupName_ru": "Установки вспомогательного ремонта брони", "groupName_zh": "辅助装甲维修器", "groupNameID": 286328, "published": 1, "useBasePrice": 0 }, "1200": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1200, "groupName_de": "Fueled Armor Repairer Blueprint", "groupName_en-us": "Fueled Armor Repairer Blueprint", "groupName_es": "Plano de reparador de blindaje alentado", "groupName_fr": "Plan de construction Réparateur de blindage alimenté", "groupName_it": "Fueled Armor Repairer Blueprint", "groupName_ja": "燃料式アーマーリペアラブループリント", "groupName_ko": "연료 장갑수리 장치 블루프린트", "groupName_ru": "Fueled Armor Repairer Blueprint", "groupName_zh": "燃料式装甲维修器蓝图", "groupNameID": 286440, "published": 1, "useBasePrice": 0 }, "1201": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1201, "groupName_de": "Angriff-Schlachtkreuzer", "groupName_en-us": "Attack Battlecruiser", "groupName_es": "Crucero de combate de ataque", "groupName_fr": "Croiseur de bataille d'attaque", "groupName_it": "Attack Battlecruiser", "groupName_ja": "強襲巡洋戦艦", "groupName_ko": "어택 배틀크루저", "groupName_ru": "Быстроходный линейный крейсер", "groupName_zh": "攻击战列巡洋舰", "groupNameID": 286659, "published": 1, "useBasePrice": 0 }, "1202": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1202, "groupName_de": "Blockade Runner", "groupName_en-us": "Blockade Runner", "groupName_es": "Nave de bloqueo", "groupName_fr": "Forceur de blocus", "groupName_it": "Blockade Runner", "groupName_ja": "封鎖突破輸送艦", "groupName_ko": "블록케이드 러너", "groupName_ru": "Корабль прорыва блокады", "groupName_zh": "偷运舰", "groupNameID": 286698, "published": 1, "useBasePrice": 0 }, "1206": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1206, "groupName_de": "Sicherheitsmarken", "groupName_en-us": "Security Tags", "groupName_es": "Chapas de seguridad", "groupName_fr": "Insignes de sécurité", "groupName_it": "Security Tags", "groupName_ja": "セキュリティタグ", "groupName_ko": "보안 태그", "groupName_ru": "Пиратские бирки", "groupName_zh": "安全等级铭牌", "groupNameID": 287123, "published": 1, "useBasePrice": 1 }, "1207": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1207, "groupName_de": "Scatter-Container", "groupName_en-us": "Scatter Container", "groupName_es": "Contenedor de dispersión", "groupName_fr": "Conteneur dispersé", "groupName_it": "Scatter Container", "groupName_ja": "散らばったコンテナ", "groupName_ko": "흩어진 컨테이너", "groupName_ru": "Эвакуационный контейнер", "groupName_zh": "散落货柜", "groupNameID": 287802, "published": 1, "useBasePrice": 0 }, "1209": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1209, "groupName_de": "Schilde", "groupName_en-us": "Shields", "groupName_es": "Escudos", "groupName_fr": "Boucliers", "groupName_it": "Shields", "groupName_ja": "シールド", "groupName_ko": "실드", "groupName_ru": "Защита кораблей силовыми полями", "groupName_zh": "护盾", "groupNameID": 287834, "published": 1, "useBasePrice": 1 }, "1210": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1210, "groupName_de": "Panzerung", "groupName_en-us": "Armor", "groupName_es": "Blindaje", "groupName_fr": "Blindage", "groupName_it": "Armor", "groupName_ja": "アーマー", "groupName_ko": "장갑", "groupName_ru": "Укрепление брони", "groupName_zh": "装甲", "groupNameID": 287835, "published": 1, "useBasePrice": 1 }, "1212": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 1212, "groupName_de": "Persönlicher Hangar", "groupName_en-us": "Personal Hangar", "groupName_es": "Hangar personal", "groupName_fr": "Hangar personnel", "groupName_it": "Personal Hangar", "groupName_ja": "個人ハンガー", "groupName_ko": "아이템 창고", "groupName_ru": "Личный ангар", "groupName_zh": "个人机库", "groupNameID": 287837, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1213": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1213, "groupName_de": "Zielaufschaltung", "groupName_en-us": "Targeting", "groupName_es": "Adquisición de objetivos", "groupName_fr": "Ciblage", "groupName_it": "Targeting", "groupName_ja": "ターゲット", "groupName_ko": "타겟팅", "groupName_ru": "Целеуказание", "groupName_zh": "锁定系统", "groupNameID": 287841, "published": 1, "useBasePrice": 1 }, "1216": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1216, "groupName_de": "Ingenieurwesen", "groupName_en-us": "Engineering", "groupName_es": "Ingeniería", "groupName_fr": "Ingénierie", "groupName_it": "Engineering", "groupName_ja": "エンジニアリング", "groupName_ko": "엔지니어링", "groupName_ru": "Эксплуатация бортовых систем", "groupName_zh": "工程学", "groupNameID": 287846, "published": 1, "useBasePrice": 1 }, "1217": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1217, "groupName_de": "Scannen", "groupName_en-us": "Scanning", "groupName_es": "Escaneo", "groupName_fr": "Détection", "groupName_it": "Scanning", "groupName_ja": "スキャン", "groupName_ko": "스캔", "groupName_ru": "Сбор данных", "groupName_zh": "扫描", "groupNameID": 287847, "published": 1, "useBasePrice": 1 }, "1218": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1218, "groupName_de": "Ressourcenverarbeitung", "groupName_en-us": "Resource Processing", "groupName_es": "Procesamiento de recursos", "groupName_fr": "Traitement des ressources", "groupName_it": "Resource Processing", "groupName_ja": "資源加工", "groupName_ko": "자원 정제", "groupName_ru": "Добыча и переработка сырья", "groupName_zh": "资源处理", "groupNameID": 287848, "published": 1, "useBasePrice": 1 }, "1220": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1220, "groupName_de": "Neuralverbesserung", "groupName_en-us": "Neural Enhancement", "groupName_es": "Mejora neuronal", "groupName_fr": "Amélioration neurale", "groupName_it": "Neural Enhancement", "groupName_ja": "神経強化", "groupName_ko": "신경망 향상", "groupName_ru": "Подключение нейротехники", "groupName_zh": "神经增强", "groupNameID": 287849, "published": 1, "useBasePrice": 1 }, "1222": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1222, "groupName_de": "Blueprint für ECM-Stabilisator", "groupName_en-us": "ECM Stabilizer Blueprint", "groupName_es": "Plano de estabilizador de ECM", "groupName_fr": "Plan de construction Stabilisateur CME", "groupName_it": "ECM Stabilizer Blueprint", "groupName_ja": "ECMスタビライザーブループリント", "groupName_ko": "ECM 안정기 블루프린트", "groupName_ru": "ECM Stabilizer Blueprint", "groupName_zh": "ECM稳定器蓝图", "groupNameID": 288144, "published": 1, "useBasePrice": 1 }, "1223": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1223, "groupName_de": "Scannen des Upgrades", "groupName_en-us": "Scanning Upgrade", "groupName_es": "Mejora de escaneo", "groupName_fr": "Amélioration de détection", "groupName_it": "Scanning Upgrade", "groupName_ja": "スキャン強化", "groupName_ko": "스캔 업그레이드", "groupName_ru": "Пакет модернизации для систем сканирования", "groupName_zh": "扫描升级", "groupNameID": 288148, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1224": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1224, "groupName_de": "Blueprint für das Scannen von Upgrades", "groupName_en-us": "Scanning Upgrade Blueprint", "groupName_es": "Plano de mejora de escaneo", "groupName_fr": "Plan de construction Amélioration de détection", "groupName_it": "Scanning Upgrade Blueprint", "groupName_ja": "スキャン強化ブループリント", "groupName_ko": "스캔 업그레이드 블루프린트", "groupName_ru": "Scanning Upgrade Blueprint", "groupName_zh": "扫描升级蓝图", "groupNameID": 288158, "published": 1, "useBasePrice": 1 }, "1225": { "anchorable": 0, "anchored": 0, "categoryID": 63, "fittableNonSingleton": 0, "groupID": 1225, "groupName_de": "Turnierkarten: Allianzturnier-Bestenmannschaften", "groupName_en-us": "Tournament Cards: Alliance Tournament All Stars", "groupName_es": "Cartas del torneo: All Stars del Torneo de Alianzas", "groupName_fr": "Cartes de tournoi : Vedettes du Tournoi des alliances", "groupName_it": "Tournament Cards: Alliance Tournament All Stars", "groupName_ja": "トーナメントカード:アライアンストーナメントオールスター", "groupName_ko": "토너먼트 카드: 얼라이언스 토너먼트 올스타", "groupName_ru": "Коллекционные карты турниров между альянсами: звездные команды", "groupName_zh": "锦标赛卡片:全明星队", "groupNameID": 288338, "published": 1, "useBasePrice": 0 }, "1226": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1226, "groupName_de": "Vermessungssondenwerfer", "groupName_en-us": "Survey Probe Launcher", "groupName_es": "lanzasondas de prospección", "groupName_fr": "Lanceur de sonde d'inspection", "groupName_it": "Survey Probe Launcher", "groupName_ja": "衛星調査プローブランチャー", "groupName_ko": "조사 프로브 런처", "groupName_ru": "Пусковая установка лунных зондов", "groupName_zh": "测量探针发射器", "groupNameID": 288482, "iconID": 2677, "published": 1, "useBasePrice": 0 }, "1227": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1227, "groupName_de": "Blaupause für Vermessungssondenwerfer", "groupName_en-us": "Survey Probe Launcher Blueprint", "groupName_es": "Plano de lanzasondas de prospección", "groupName_fr": "Plan de construction Lanceur de sonde d'inspection", "groupName_it": "Survey Probe Launcher Blueprint", "groupName_ja": "衛星調査プローブランチャーブループリント", "groupName_ko": "조사 프로브 런처 블루프린트", "groupName_ru": "Чертежи пусковой установки лунных зондов", "groupName_zh": "测量探针发射器蓝图", "groupNameID": 288490, "published": 1, "useBasePrice": 1 }, "1228": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 1228, "groupName_de": "Cyber-Zielaufschaltung", "groupName_en-us": "Cyber Targeting", "groupName_es": "Ciberadquisición de objetivos", "groupName_fr": "Ciblage cybernétique", "groupName_it": "Cyber Targeting", "groupName_ja": "サイバー - ターゲット", "groupName_ko": "사이버 타겟팅", "groupName_ru": "Кибер-целеуказание", "groupName_zh": "脑控锁定", "groupNameID": 288909, "published": 1, "useBasePrice": 0 }, "1229": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 1229, "groupName_de": "Cyber-Ressourcenverarbeitung", "groupName_en-us": "Cyber Resource Processing", "groupName_es": "Ciberprocesamiento de recursos", "groupName_fr": "Traitement de ressources cybernétiques", "groupName_it": "Cyber Resource Processing", "groupName_ja": "サイバー - 資源加工", "groupName_ko": "사이버 자원 정제", "groupName_ru": "Кибер-переработка ресурсов", "groupName_zh": "脑控资源处理", "groupNameID": 288910, "published": 1, "useBasePrice": 0 }, "1230": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 1230, "groupName_de": "Cyber-Scannen", "groupName_en-us": "Cyber Scanning", "groupName_es": "Ciberescaneo por sonda", "groupName_fr": "Balayage cybernétique", "groupName_it": "Cyber Scanning", "groupName_ja": "サイバー - スキャン", "groupName_ko": "사이버 스캔", "groupName_ru": "Кибер-сканирование", "groupName_zh": "脑控扫描", "groupNameID": 288911, "published": 1, "useBasePrice": 0 }, "1231": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 1231, "groupName_de": "Cyber-Biologie", "groupName_en-us": "Cyber Biology", "groupName_es": "Ciberbiología", "groupName_fr": "Biologie cybernétique", "groupName_it": "Cyber Biology", "groupName_ja": "サイバー - 生物学", "groupName_ko": "사이버 생물학", "groupName_ru": "Кибер-биология", "groupName_zh": "脑控生物学", "groupNameID": 288912, "published": 1, "useBasePrice": 0 }, "1232": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1232, "groupName_de": "Ressourcenverarbeitung unter Verwendung von Ausrüstungsgegenständen", "groupName_en-us": "Rig Resource Processing", "groupName_es": "Procesamiento de recursos de complemento", "groupName_fr": "Traitement de ressource optimisé", "groupName_it": "Rig Resource Processing", "groupName_ja": "リグ - 資源加工", "groupName_ko": "리그 자원 정제", "groupName_ru": "Тюнинг-модуль для переработки ресурсов", "groupName_zh": "改装件资源处理", "groupNameID": 288913, "published": 1, "useBasePrice": 0 }, "1233": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1233, "groupName_de": "Scannen unter Verwendung von Ausrüstungsgegenständen", "groupName_en-us": "Rig Scanning", "groupName_es": "Escaneo de complemento", "groupName_fr": "Balayage optimisé", "groupName_it": "Rig Scanning", "groupName_ja": "リグ - スキャン", "groupName_ko": "리그 스캔", "groupName_ru": "Тюнинг-модуль для сканирования", "groupName_zh": "改装件扫描", "groupNameID": 288914, "published": 1, "useBasePrice": 0 }, "1234": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1234, "groupName_de": "Zielerfassung unter Verwendung von Ausrüstungsgegenständen", "groupName_en-us": "Rig Targeting", "groupName_es": "Adquisición de objetivos de complemento", "groupName_fr": "Ciblage optimisé", "groupName_it": "Rig Targeting", "groupName_ja": "リグ - ターゲット", "groupName_ko": "리그 타겟팅", "groupName_ru": "Тюнинг-модуль для целеуказания", "groupName_zh": "改装件锁定", "groupNameID": 288915, "published": 1, "useBasePrice": 0 }, "1238": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1238, "groupName_de": "Scannen von Upgrade-Zeit", "groupName_en-us": "Scanning Upgrade Time", "groupName_es": "Tiempo de mejora de escaneo", "groupName_fr": "Temps d'amélioration de balayage", "groupName_it": "Scanning Upgrade Time", "groupName_ja": "スキャン時間強化", "groupName_ko": "스캔 업그레이드 시간", "groupName_ru": "Сокращение времени сканирования", "groupName_zh": "扫描升级时间", "groupNameID": 289110, "published": 1, "useBasePrice": 0 }, "1239": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1239, "groupName_de": "Scannen von Blueprints für Upgrade-Zeit", "groupName_en-us": "Scanning Upgrade Time Blueprint", "groupName_es": "Plano de tiempo de mejora de escaneo", "groupName_fr": "Plan de construction Temps d'amélioration de balayage", "groupName_it": "Scanning Upgrade Time Blueprint", "groupName_ja": "スキャン時間強化ブループリント", "groupName_ko": "스캔 업그레이드 시간 블루프린트", "groupName_ru": "Scanning Upgrade Time Blueprint", "groupName_zh": "扫描升级时间蓝图", "groupNameID": 289111, "published": 1, "useBasePrice": 1 }, "1240": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1240, "groupName_de": "Subsystems", "groupName_en-us": "Subsystems", "groupName_es": "Subsistemas", "groupName_fr": "Sous-systèmes", "groupName_it": "Subsystems", "groupName_ja": "サブシステム", "groupName_ko": "서브시스템", "groupName_ru": "Установка сменных подсистем", "groupName_zh": "子系统", "groupNameID": 289820, "published": 1, "useBasePrice": 1 }, "1241": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1241, "groupName_de": "Planet Management", "groupName_en-us": "Planet Management", "groupName_es": "Gestión planetaria", "groupName_fr": "Gestion planétaire", "groupName_it": "Planet Management", "groupName_ja": "惑星管理", "groupName_ko": "행성 관리", "groupName_ru": "Освоение планет", "groupName_zh": "行星管理", "groupNameID": 289821, "published": 1, "useBasePrice": 1 }, "1245": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1245, "groupName_de": "Schnelle, schwere Lenkwaffenwerfer", "groupName_en-us": "Missile Launcher Rapid Heavy", "groupName_es": "Lanzamisiles pesado rápido", "groupName_fr": "Lance-missiles lourd rapide", "groupName_it": "Missile Launcher Rapid Heavy", "groupName_ja": "ミサイルランチャー(高速ヘビー)", "groupName_ko": "급속 헤비 미사일 런처", "groupName_ru": "Скорострельная ПУ ракет большой мощности", "groupName_zh": "重型快速导弹发射器", "groupNameID": 290236, "published": 1, "useBasePrice": 0 }, "1246": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1246, "groupName_de": "Mobiles Depot", "groupName_en-us": "Mobile Depot", "groupName_es": "Almacén móvil", "groupName_fr": "Dépôt mobile", "groupName_it": "Mobile Depot", "groupName_ja": "移動式貯蔵所", "groupName_ko": "이동식 저장고", "groupName_ru": "Автономный пост снабжения", "groupName_zh": "移动式仓库", "groupNameID": 290544, "published": 1, "useBasePrice": 0 }, "1247": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1247, "groupName_de": "Mobile Absaugeinheit", "groupName_en-us": "Mobile Siphon Unit", "groupName_es": "Unidad sifónica móvil", "groupName_fr": "Unité de siphon mobile", "groupName_it": "Mobile Siphon Unit", "groupName_ja": "移動式サイフォンユニット", "groupName_ko": "이동식 사이펀 장치", "groupName_ru": "Отводной блок", "groupName_zh": "移动式虹吸装置", "groupNameID": 290551, "published": 1, "useBasePrice": 0 }, "1248": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1248, "groupName_de": "Verschlüsselte Kopfgeldwertpapiere", "groupName_en-us": "Bounty Encrypted Bonds", "groupName_es": "Bonos cifrados de recompensa", "groupName_fr": "Obligations cryptées de prime", "groupName_it": "Bounty Encrypted Bonds", "groupName_ja": "賞金暗号化債券", "groupName_ko": "현상금 암호 채권", "groupName_ru": "Зашифрованные облигации в награду за убийство", "groupName_zh": "赏金加密债券", "groupNameID": 292063, "published": 1, "useBasePrice": 1 }, "1249": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1249, "groupName_de": "Mobiler Anziehungsblocker", "groupName_en-us": "Mobile Cyno Inhibitor", "groupName_es": "Cinoinhibidor móvil", "groupName_fr": "Inhibiteur cyno mobile", "groupName_it": "Mobile Cyno Inhibitor", "groupName_ja": "移動式サイノ阻害機", "groupName_ko": "이동식 사이노슈럴 억제기", "groupName_ru": "Автономный генератор помех приводным маякам", "groupName_zh": "移动式诱导抑制装置", "groupNameID": 292103, "published": 1, "useBasePrice": 0 }, "1250": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1250, "groupName_de": "Mobile Traktorstrahl-Einheit", "groupName_en-us": "Mobile Tractor Unit", "groupName_es": "Unidad tractora móvil", "groupName_fr": "Unité de tractage mobile", "groupName_it": "Mobile Tractor Unit", "groupName_ja": "移動式トラクターユニット", "groupName_ko": "이동식 트랙터 장치", "groupName_ru": "Автономный блок сбора трофеев", "groupName_zh": "移动式牵引装置", "groupNameID": 292104, "published": 1, "useBasePrice": 0 }, "1252": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1252, "groupName_de": "Ghost Sites: Angel Cartel-Kreuzer", "groupName_en-us": "Ghost Sites Angel Cartel Cruiser", "groupName_es": "Crucero del Cártel de los Ángeles de zonas fantasma", "groupName_fr": "Croiseur cartel angel sites fantômes", "groupName_it": "Ghost Sites Angel Cartel Cruiser", "groupName_ja": "ゴーストサイトエンジェルカルテル巡洋艦", "groupName_ko": "고스트 사이트 엔젤 카르텔 크루저", "groupName_ru": "Ghost Sites Angel Cartel Cruiser", "groupName_zh": "幽灵地点天使巡洋舰", "groupNameID": 292196, "published": 1, "useBasePrice": 0 }, "1255": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1255, "groupName_de": "Ghost Sites: Blood Raiders-Kreuzer", "groupName_en-us": "Ghost Sites Blood Raiders Cruiser", "groupName_es": "Crucero de los Saqueadores Sanguinarios de zonas fantasma", "groupName_fr": "Croiseur blood raider sites fantômes", "groupName_it": "Ghost Sites Blood Raiders Cruiser", "groupName_ja": "ゴーストサイトブラッドレイダー巡洋艦", "groupName_ko": "고스트 사이트 블러드 레이더 크루저", "groupName_ru": "Ghost Sites Blood Raiders Cruiser", "groupName_zh": "幽灵地点血袭者巡洋舰", "groupNameID": 292199, "published": 1, "useBasePrice": 0 }, "1259": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1259, "groupName_de": "Ghost Sites: Guristas-Kreuzer", "groupName_en-us": "Ghost Sites Guristas Cruiser", "groupName_es": "Crucero de los Guristas de zonas fantasma", "groupName_fr": "Croiseur guristas sites fantômes", "groupName_it": "Ghost Sites Guristas Cruiser", "groupName_ja": "ゴーストサイトガリスタス巡洋艦", "groupName_ko": "고스트 사이트 구리스타스 크루저", "groupName_ru": "Ghost Sites Guristas Cruiser", "groupName_zh": "幽灵地点古斯塔斯巡洋舰", "groupNameID": 292202, "published": 1, "useBasePrice": 0 }, "1262": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1262, "groupName_de": "Ghost Sites: Serpentis-Kreuzer", "groupName_en-us": "Ghost Sites Serpentis Cruiser", "groupName_es": "Crucero de Serpentis de zonas fantasma", "groupName_fr": "Croiseur serpentis sites fantômes", "groupName_it": "Ghost Sites Serpentis Cruiser", "groupName_ja": "ゴーストサイトサーペンティス巡洋艦", "groupName_ko": "고스트 사이트 서펜티스 크루저", "groupName_ru": "Ghost Sites Serpentis Cruiser", "groupName_zh": "幽灵地点天蛇巡洋舰", "groupNameID": 292205, "published": 1, "useBasePrice": 0 }, "1265": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1265, "groupName_de": "Ghost Sites: Sansha-Kreuzer", "groupName_en-us": "Ghost Sites Sanshas Cruiser", "groupName_es": "Crucero de los Sansha de zonas fantasma", "groupName_fr": "Croiseur sansha sites fantômes", "groupName_it": "Ghost Sites Sanshas Cruiser", "groupName_ja": "ゴーストサイトサンシャ巡洋艦", "groupName_ko": "고스트 사이트 산샤 네이션 크루저", "groupName_ru": "Ghost Sites Sanshas Cruiser", "groupName_zh": "幽灵地点萨沙巡洋舰", "groupNameID": 292208, "published": 1, "useBasePrice": 0 }, "1267": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1267, "groupName_de": "Blueprint für mobile Absaugeinheit", "groupName_en-us": "Mobile Siphon Unit Blueprint", "groupName_es": "Plano de unidad sifónica móvil", "groupName_fr": "Plan de construction Unité de siphon mobile", "groupName_it": "Mobile Siphon Unit Blueprint", "groupName_ja": "移動式サイフォンユニットブループリント", "groupName_ko": "이동식 사이펀 장치 블루프린트", "groupName_ru": "Чертежи отводного блока", "groupName_zh": "移动式虹吸装置蓝图", "groupNameID": 292374, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1268": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1268, "groupName_de": "Blueprint für mobile Anziehungsblocker", "groupName_en-us": "Mobile Cynosural Inhibitor Blueprint", "groupName_es": "Plano de inhibidor cinosural móvil", "groupName_fr": "Plan de construction Inhibiteur cynosural mobile", "groupName_it": "Mobile Cynosural Inhibitor Blueprint", "groupName_ja": "移動式サイノシュラル阻害機ブループリント", "groupName_ko": "이동식 사이노슈럴 억제기 블루프린트", "groupName_ru": "Чертежи автономного генератора помех приводным маякам", "groupName_zh": "移动式诱导抑制装置蓝图", "groupNameID": 292399, "published": 1, "useBasePrice": 1 }, "1269": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1269, "groupName_de": "Blueprint für mobile Depots", "groupName_en-us": "Mobile Depot Blueprint", "groupName_es": "Plano de depósito móvil", "groupName_fr": "Plan de construction Dépôt mobile", "groupName_it": "Mobile Depot Blueprint", "groupName_ja": "移動式貯蔵所ブループリント", "groupName_ko": "이동식 저장고 블루프린트", "groupName_ru": "Чертежи автономного поста снабжения", "groupName_zh": "移动式仓库蓝图", "groupNameID": 292398, "published": 1, "useBasePrice": 1 }, "1270": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1270, "groupName_de": "Blueprint für mobile Traktorstrahl-Einheit", "groupName_en-us": "Mobile Tractor Unit Blueprint", "groupName_es": "Plano de unidad tractora móvil", "groupName_fr": "Plan de construction Unité de tractage mobile", "groupName_it": "Mobile Tractor Unit Blueprint", "groupName_ja": "移動式トラクターユニットブループリント", "groupName_ko": "이동식 트랙터 장치 블루프린트", "groupName_ru": "Чертежи автономного блока сбора трофеев", "groupName_zh": "移动式牵引装置蓝图", "groupNameID": 292400, "published": 1, "useBasePrice": 1 }, "1271": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1271, "groupName_de": "Prothetik", "groupName_en-us": "Prosthetics", "groupName_es": "Prótesis", "groupName_fr": "Prothèses", "groupName_it": "Prosthetics", "groupName_ja": "義肢", "groupName_ko": "인공물", "groupName_ru": "Протезы", "groupName_zh": "义肢", "groupNameID": 292529, "published": 1, "useBasePrice": 0 }, "1273": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1273, "groupName_de": "Gefechtsüberwachungssystem", "groupName_en-us": "Encounter Surveillance System", "groupName_es": "Sistema de vigilancia de encuentros", "groupName_fr": "Système de surveillance des affrontements", "groupName_it": "Encounter Surveillance System", "groupName_ja": "対戦監視システム", "groupName_ko": "교전 감시 시스템", "groupName_ru": "Станция учёта боестолкновений", "groupName_zh": "事件监测装置", "groupNameID": 294008, "published": 1, "useBasePrice": 1 }, "1274": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1274, "groupName_de": "Mobile Scheinanlage", "groupName_en-us": "Mobile Decoy Unit", "groupName_es": "Unidad señuelo móvil", "groupName_fr": "Unité de leurre mobile", "groupName_it": "Mobile Decoy Unit", "groupName_ja": "移動式デコイユニット", "groupName_ko": "이동식 유인장치", "groupName_ru": "Автономные блоки создания ложных целей", "groupName_zh": "移动式诱捕装置", "groupNameID": 294017, "published": 0, "useBasePrice": 0 }, "1275": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1275, "groupName_de": "Mobiler Scanblockierer", "groupName_en-us": "Mobile Scan Inhibitor", "groupName_es": "Inhibidor de escaneo móvil", "groupName_fr": "Inhibiteur de balayage mobile", "groupName_it": "Mobile Scan Inhibitor", "groupName_ja": "移動式スキャン阻害機", "groupName_ko": "이동식 스캔 방해장치", "groupName_ru": "Автономный генератор помех разведсистемам", "groupName_zh": "移动式扫描抑制装置", "groupNameID": 294018, "published": 1, "useBasePrice": 0 }, "1276": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1276, "groupName_de": "Mobile Mikrosprungeinheit", "groupName_en-us": "Mobile Micro Jump Unit", "groupName_es": "Unidad de microsalto móvil", "groupName_fr": "Unité de microsaut mobile", "groupName_it": "Mobile Micro Jump Unit", "groupName_ja": "移動式マイクロジャンプユニット", "groupName_ko": "이동식 마이크로 점프 장치", "groupName_ru": "Автономный разгонный блок", "groupName_zh": "移动式微型跳跃装置", "groupNameID": 294019, "published": 1, "useBasePrice": 0 }, "1277": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1277, "groupName_de": "Blaupausen für Gefechtsüberwachungssysteme", "groupName_en-us": "Encounter Surveillance System Blueprint", "groupName_es": "Plano de sistema de vigilancia de encuentros", "groupName_fr": "Plan de construction Système de surveillance des affrontements", "groupName_it": "Encounter Surveillance System Blueprint", "groupName_ja": "対戦監視システムブループリント", "groupName_ko": "교전 감시 시스템 블루프린트", "groupName_ru": "Чертежи станции учёта боестолкновений", "groupName_zh": "事件监测装置蓝图", "groupNameID": 294226, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1282": { "anchorable": 1, "anchored": 0, "categoryID": 23, "fittableNonSingleton": 0, "groupID": 1282, "groupName_de": "Kompressionsanlage", "groupName_en-us": "Compression Array", "groupName_es": "Matriz de compresión", "groupName_fr": "Module de compression", "groupName_it": "Compression Array", "groupName_ja": "圧縮施設", "groupName_ko": "압착시설", "groupName_ru": "Блоки сжатия руды и льда", "groupName_zh": "压缩阵列", "groupNameID": 294898, "published": 1, "useBasePrice": 1 }, "1283": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1283, "groupName_de": "Expeditionsfregatte", "groupName_en-us": "Expedition Frigate", "groupName_es": "Fragata expedicionaria", "groupName_fr": "Frégate d'expédition", "groupName_it": "Expedition Frigate", "groupName_ja": "長距離フリゲート", "groupName_ko": "탐사 프리깃", "groupName_ru": "Разведочно-буровой фрегат", "groupName_zh": "勘探护卫舰", "groupNameID": 295174, "published": 1, "useBasePrice": 0 }, "1285": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1285, "groupName_de": "Asteroiden: Mordus Legion-Kommandeurfregatte", "groupName_en-us": "Asteroid Mordus Legion Commander Frigate", "groupName_es": "Mando de fragata de asteroide de la Legión de Mordu", "groupName_fr": "Frégate du commandant de la légion Mordu de l'astéroïde", "groupName_it": "Asteroid Mordus Legion Commander Frigate", "groupName_ja": "アステロイドモードゥ部隊司令官フリゲート", "groupName_ko": "소행성 벨트 모르두 군단 지휘 프리깃", "groupName_ru": "Фрегат астероидного патруля Верховного командования легиона Морду", "groupName_zh": "小行星莫德团指挥官护卫舰", "groupNameID": 295431, "published": 0, "useBasePrice": 0 }, "1286": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1286, "groupName_de": "Asteroiden: Mordus Legion-Kommandeurkreuzer", "groupName_en-us": "Asteroid Mordus Legion Commander Cruiser", "groupName_es": "Mando de crucero de asteroide de la Legión de Mordu", "groupName_fr": "Croiseur du commandant de la légion Mordu de l'astéroïde", "groupName_it": "Asteroid Mordus Legion Commander Cruiser", "groupName_ja": "アステロイドモードゥ部隊司令官巡洋艦", "groupName_ko": "소행성 벨트 모르두 군단 지휘 크루저", "groupName_ru": "Крейсер астероидного патруля Верховного командования легиона Морду", "groupName_zh": "小行星莫德团指挥官巡洋舰", "groupNameID": 295432, "published": 0, "useBasePrice": 0 }, "1287": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1287, "groupName_de": "Asteroiden: Mordus Legion-Kommandeur-Schlachtschiff", "groupName_en-us": "Asteroid Mordus Legion Commander Battleship", "groupName_es": "Mando de acorazado de asteroide de la Legión de Mordu", "groupName_fr": "Cuirassé du commandant de la légion Mordu de l'astéroïde", "groupName_it": "Asteroid Mordus Legion Commander Battleship", "groupName_ja": "アステロイドモードゥ部隊司令官戦艦", "groupName_ko": "소행성 벨트 모르두 군단 지휘 배틀쉽", "groupName_ru": "Линкор астероидного патруля Верховного командования легиона Морду", "groupName_zh": "小行星莫德团指挥官战列舰", "groupNameID": 295433, "published": 0, "useBasePrice": 0 }, "1288": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1288, "groupName_de": "Mordus Legion Ghost Sites", "groupName_en-us": "Ghost Sites Mordu's Legion", "groupName_es": "Legión de Mordu de zonas fantasma", "groupName_fr": "Sites fantômes de la Mordu's Legion", "groupName_it": "Ghost Sites Mordu's Legion", "groupName_ja": "ゴーストサイトモードゥ部隊", "groupName_ko": "고스트 사이트 모르두 군단", "groupName_ru": "«Объекты-призраки» легиона Морду", "groupName_zh": "幽灵地点莫德团", "groupNameID": 295439, "published": 1, "useBasePrice": 0 }, "1289": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1289, "groupName_de": "Warpbeschleuniger", "groupName_en-us": "Warp Accelerator", "groupName_es": "Acelerador de warp", "groupName_fr": "Accélérateur de warp", "groupName_it": "Warp Accelerator", "groupName_ja": "ワープ加速器", "groupName_ko": "워프 가속기", "groupName_ru": "Варп-ускоритель", "groupName_zh": "跃迁加速装置", "groupNameID": 295684, "published": 1, "useBasePrice": 0 }, "1292": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1292, "groupName_de": "Drohnen-Nachführungsverbesserungen", "groupName_en-us": "Drone Tracking Enhancer", "groupName_es": "Intensificador de rastreo de dron", "groupName_fr": "Optimisateur de poursuite de drone", "groupName_it": "Drone Tracking Enhancer", "groupName_ja": "ドローン追跡エンハンサー", "groupName_ko": "드론 트래킹 향상장치", "groupName_ru": "Drone Tracking Enhancer", "groupName_zh": "无人机索敌增强器", "groupNameID": 295847, "published": 1, "useBasePrice": 0 }, "1293": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1293, "groupName_de": "Blaupause für mobilen Scanblockierer", "groupName_en-us": "Mobile Scan Inhibitor Blueprint", "groupName_es": "Plano de inhibidor de escaneo móvil", "groupName_fr": "Plan de construction Inhibiteur de balayage mobile", "groupName_it": "Mobile Scan Inhibitor Blueprint", "groupName_ja": "移動式スキャン阻害機ブループリント", "groupName_ko": "이동식 스캔 방해장치 블루프린트", "groupName_ru": "Чертежи автономных генераторов помех разведсистемам", "groupName_zh": "移动式扫描抑制装置蓝图", "groupNameID": 295885, "published": 1, "useBasePrice": 1 }, "1294": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1294, "groupName_de": "Blaupause für mobile Mikrosprungeinheit", "groupName_en-us": "Mobile Micro Jump Unit Blueprint", "groupName_es": "Plano de unidad de microsalto móvil", "groupName_fr": "Plan de construction Unité de microsaut mobile", "groupName_it": "Mobile Micro Jump Unit Blueprint", "groupName_ja": "移動式マイクロジャンプユニットブループリント", "groupName_ko": "이동식 마이크로 점프 장치 블루프린트", "groupName_ru": "Чертежи автономных разгонных блоков", "groupName_zh": "移动式微型跳跃装置蓝图", "groupNameID": 295886, "published": 1, "useBasePrice": 1 }, "1295": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1295, "groupName_de": "Blaupause für mobile Scheinanlage", "groupName_en-us": "Mobile Decoy Unit Blueprint", "groupName_es": "Plano de unidad señuelo móvil", "groupName_fr": "Plan de construction Unité d'appât mobile", "groupName_it": "Mobile Decoy Unit Blueprint", "groupName_ja": "移動式デコイユニットブループリント", "groupName_ko": "이동식 유인 장치 블루프린트", "groupName_ru": "Чертежи автономного маскировочного блока", "groupName_zh": "移动式诱捕装置蓝图", "groupNameID": 295887, "published": 1, "useBasePrice": 0 }, "1297": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1297, "groupName_de": "Mobiler Tresor", "groupName_en-us": "Mobile Vault", "groupName_es": "Cámara móvil", "groupName_fr": "Coffre mobile", "groupName_it": "Mobile Vault", "groupName_ja": "移動式金庫", "groupName_ko": "이동식 금고", "groupName_ru": "Автономное убежище", "groupName_zh": "移动式保险库", "groupNameID": 296195, "published": 1, "useBasePrice": 0 }, "1299": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1299, "groupName_de": "Sprungantrieb-Vorwärmer", "groupName_en-us": "Jump Drive Economizer", "groupName_es": "Economizador de motor de salto", "groupName_fr": "Économiseur de propulseur hyperspatial", "groupName_it": "Jump Drive Economizer", "groupName_ja": "ジャンプドライブエコノマイザー", "groupName_ko": "점프 드라이브 연료 절감기", "groupName_ru": "Экономайзер топлива гипердвигателя", "groupName_zh": "跳跃引擎节能装置", "groupNameID": 296270, "published": 1, "useBasePrice": 0 }, "1301": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 1301, "groupName_de": "Dienste", "groupName_en-us": "Services", "groupName_es": "Servicios", "groupName_fr": "Services", "groupName_it": "Services", "groupName_ja": "サービス", "groupName_ko": "서비스", "groupName_ru": "Услуги", "groupName_zh": "服务", "groupNameID": 296307, "published": 1, "useBasePrice": 0 }, "1304": { "anchorable": 0, "anchored": 0, "categoryID": 35, "fittableNonSingleton": 0, "groupID": 1304, "groupName_de": "Allgemeiner Dekodierer", "groupName_en-us": "Generic Decryptor", "groupName_es": "Desencriptador genérico", "groupName_fr": "Décrypteur générique", "groupName_it": "Generic Decryptor", "groupName_ja": "汎用解読器", "groupName_ko": "일반 해독기", "groupName_ru": "Файлы данных", "groupName_zh": "通用解码器", "groupNameID": 296724, "published": 1, "useBasePrice": 0 }, "1305": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1305, "groupName_de": "Taktische Zerstörer", "groupName_en-us": "Tactical Destroyer", "groupName_es": "Destructor táctico", "groupName_fr": "Destroyer tactique", "groupName_it": "Tactical Destroyer", "groupName_ja": "戦術駆逐艦", "groupName_ko": "전술 디스트로이어", "groupName_ru": "Многорежимный эсминец", "groupName_zh": "战术驱逐舰", "groupNameID": 297285, "published": 1, "useBasePrice": 0 }, "1306": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1306, "groupName_de": "Schiffsmodifizierer", "groupName_en-us": "Ship Modifiers", "groupName_es": "Modificadores de nave", "groupName_fr": "Modificateurs de vaisseau", "groupName_it": "Ship Modifiers", "groupName_ja": "艦船修正乗数", "groupName_ko": "함선 모드", "groupName_ru": "Модификаторы корабля", "groupName_zh": "舰船模式切换器", "groupNameID": 297286, "published": 1, "useBasePrice": 0 }, "1307": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1307, "groupName_de": "Umherstreifende Sleeper-Kreuzer", "groupName_en-us": "Roaming Sleepers Cruiser", "groupName_es": "Crucero de Sleepers errante", "groupName_fr": "Croiseur sleepers itinérants", "groupName_it": "Roaming Sleepers Cruiser", "groupName_ja": "巡回中のスリーパー巡洋艦", "groupName_ko": "배회하는 슬리퍼 크루저", "groupName_ru": "Странствующие Спящие крейсерского тоннажа", "groupName_zh": "游荡的冬眠者巡洋舰", "groupNameID": 297412, "published": 1, "useBasePrice": 0 }, "1308": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1308, "groupName_de": "Modifikationsanker", "groupName_en-us": "Rig Anchor", "groupName_es": "Anclaje de complemento", "groupName_fr": "Ancrage optimisé", "groupName_it": "Rig Anchor", "groupName_ja": "リグアンカー", "groupName_ko": "앵커 리그", "groupName_ru": "Якорный тюнинг-модуль", "groupName_zh": "定锚改装件", "groupNameID": 297415, "published": 1, "useBasePrice": 0 }, "1309": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1309, "groupName_de": "Tactical Destroyer Blueprint", "groupName_en-us": "Tactical Destroyer Blueprint", "groupName_es": "Plano de destructor táctico", "groupName_fr": "Plan de construction Destroyer tactique", "groupName_it": "Tactical Destroyer Blueprint", "groupName_ja": "戦術駆逐艦のブループリント", "groupName_ko": "전술 디스트로이어 블루프린트", "groupName_ru": "Чертежи многорежимных эсминцев", "groupName_zh": "战术驱逐舰蓝图", "groupNameID": 298107, "published": 1, "useBasePrice": 1 }, "1310": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1310, "groupName_de": "Drifter-Schlachtschiff", "groupName_en-us": "Drifter Battleship", "groupName_es": "Acorazado drifter", "groupName_fr": "Cuirassé dérivant", "groupName_it": "Drifter Battleship", "groupName_ja": "漂流者の戦艦", "groupName_ko": "드리프터 배틀쉽", "groupName_ru": "Линкор Скитальцев", "groupName_zh": "流浪者战列舰", "groupNameID": 299806, "published": 1, "useBasePrice": 0 }, "1311": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 1311, "groupName_de": "Super Kerr-induzierten Nanobeschichtungen", "groupName_en-us": "Super Kerr-Induced Nanocoatings", "groupName_es": "Supernanorrevestimientos inducidos por Kerr", "groupName_fr": "Nanorevêtements générés par le super Kerr", "groupName_it": "Super Kerr-Induced Nanocoatings", "groupName_ja": "超カー誘発性ナノコーティング", "groupName_ko": "슈퍼커나노코팅", "groupName_ru": "Шаблоны для перекраски кораблей", "groupName_zh": "超级克尔诱导纳米涂层", "groupNameID": 305267, "published": 1, "useBasePrice": 0 }, "1312": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 1312, "groupName_de": "Beobachtungsstrukturen", "groupName_en-us": "Observatory Structures", "groupName_es": "Estructuras de observatorio", "groupName_fr": "Structures d'observation", "groupName_it": "Observatory Structures", "groupName_ja": "観測所のストラクチャ", "groupName_ko": "관측용 구조물", "groupName_ru": "Наблюдательные сооружения", "groupName_zh": "瞭望台建筑", "groupNameID": 305351, "published": 1, "useBasePrice": 0 }, "1313": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1313, "groupName_de": "Entosis-Netzwerk", "groupName_en-us": "Entosis Link", "groupName_es": "Enlace de entosis", "groupName_fr": "Interface Entosis", "groupName_it": "Entosis Link", "groupName_ja": "エントーシスリンク", "groupName_ko": "엔토시스 링크", "groupName_ru": "Энтоз-передатчик", "groupName_zh": "侵噬链接", "groupNameID": 305457, "published": 1, "useBasePrice": 0 }, "1314": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1314, "groupName_de": "Unbekannte Komponenten", "groupName_en-us": "Unknown Components", "groupName_es": "Componentes desconocidos", "groupName_fr": "Composants inconnus", "groupName_it": "Unknown Components", "groupName_ja": "不明な部品", "groupName_ko": "정체불명의 부품", "groupName_ru": "Неизвестные компоненты", "groupName_zh": "未知组件", "groupNameID": 306049, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1316": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1316, "groupName_de": "Entosis-Kommandoknoten", "groupName_en-us": "Entosis Command Node", "groupName_es": "Nodo de mando de entosis", "groupName_fr": "Nœud de commande Entosis", "groupName_it": "Entosis Command Node", "groupName_ja": "エントーシスコマンドのノード", "groupName_ko": "엔토시스 통제 노드", "groupName_ru": "Блоки энтоз-контроля", "groupName_zh": "侵噬指挥节点", "groupNameID": 306492, "published": 0, "useBasePrice": 0 }, "1317": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1317, "groupName_de": "Infrastruktur-Upgrade-Blaupause", "groupName_en-us": "Infrastructure Upgrade Blueprint", "groupName_es": "Plano de mejora de infraestructuras", "groupName_fr": "Plan de construction Amélioration d'infrastructure", "groupName_it": "Infrastructure Upgrade Blueprint", "groupName_ja": "インフラストラクチャアップグレードのブループリント", "groupName_ko": "인프라 업그레이드 블루프린트", "groupName_ru": "Чертежи расширений инфраструктуры", "groupName_zh": "基础设施升级件蓝图", "groupNameID": 306768, "published": 1, "useBasePrice": 1 }, "1318": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1318, "groupName_de": "Entosis-Netzwerk-Blaupause", "groupName_en-us": "Entosis Link Blueprint", "groupName_es": "Plano de enlace de entosis", "groupName_fr": "Plan de construction Interface Entosis", "groupName_it": "Entosis Link Blueprint", "groupName_ja": "エントーシスリンク設計図", "groupName_ko": "엔토시스 링크 블루프린트", "groupName_ru": "Чертежи энтоз-передатчиков", "groupName_zh": "侵噬链接蓝图", "groupNameID": 306840, "iconID": 107, "published": 1, "useBasePrice": 1 }, "1319": { "anchorable": 0, "anchored": 0, "categoryID": 29, "fittableNonSingleton": 0, "groupID": 1319, "groupName_de": "Verschiedenes", "groupName_en-us": "Miscellaneous", "groupName_es": "Varios", "groupName_fr": "Divers", "groupName_it": "Miscellaneous", "groupName_ja": "その他", "groupName_ko": "기타", "groupName_ru": "Разное", "groupName_zh": "其他", "groupNameID": 306931, "published": 0, "useBasePrice": 0 }, "1321": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1321, "groupName_de": "Struktur: Zitadellendienstmodul", "groupName_en-us": "Structure Citadel Service Module", "groupName_es": "Módulo de servicio de ciudadela para estructuras", "groupName_fr": "Module de service de citadelle (Structure)", "groupName_it": "Structure Citadel Service Module", "groupName_ja": "ストラクチャ ― 城塞サービスモジュール", "groupName_ko": "구조물 시타델 서비스 모듈", "groupName_ru": "Сооружения - служебные модули цитадели", "groupName_zh": "建筑堡垒服务装备", "groupNameID": 308385, "published": 1, "useBasePrice": 0 }, "1322": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1322, "groupName_de": "Struktur: Ressourcenverarbeitung-Dienstmodul", "groupName_en-us": "Structure Resource Processing Service Module", "groupName_es": "Módulos de servicio de procesamiento de recursos para estructuras", "groupName_fr": "Module de service de retraitement des ressources (Structure)", "groupName_it": "Structure Resource Processing Service Module", "groupName_ja": "ストラクチャリソース処理サービスモジュール", "groupName_ko": "구조물 자원 정제 서비스 모듈", "groupName_ru": "Служебный модуль переработки материалов", "groupName_zh": "建筑资源处理服务装备", "groupNameID": 308386, "published": 1, "useBasePrice": 0 }, "1323": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1323, "groupName_de": "Structure Observatory Service Module", "groupName_en-us": "Structure Observatory Service Module", "groupName_es": "Módulo de servicio de observatorio para estructuras", "groupName_fr": "Module de service d'observatoire (Structure)", "groupName_it": "Structure Observatory Service Module", "groupName_ja": "ストラクチャ ― 観測サービスモジュール", "groupName_ko": "구조물 관측 서비스 모듈", "groupName_ru": "Structure Observatory Service Module", "groupName_zh": "建筑瞭望服务装备", "groupNameID": 308387, "published": 0, "useBasePrice": 0 }, "1324": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1324, "groupName_de": "Struktur – FLEX-Dienstmodul", "groupName_en-us": "Structure FLEX Service Module", "groupName_es": "Módulo de servicio de FLEX para estructuras", "groupName_fr": "Module de service de structure FLEX", "groupName_it": "Structure FLEX Service Module", "groupName_ja": "ストラクチャ―FLEXサービスモジュール", "groupName_ko": "구조물 FLEX 서비스 모듈", "groupName_ru": "Служебный модуль «Флекс» для сооружений", "groupName_zh": "建筑快速部署服务装备", "groupNameID": 308388, "published": 0, "useBasePrice": 0 }, "1325": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1325, "groupName_de": "Structure Administration Service Module", "groupName_en-us": "Structure Administration Service Module", "groupName_es": "Módulo de servicio de gestión para estructuras", "groupName_fr": "Module de service de centre administratif (Structure)", "groupName_it": "Structure Administration Service Module", "groupName_ja": "ストラクチャ ― アドミニストレーションサービスモジュール", "groupName_ko": "구조물 행정 서비스 모듈", "groupName_ru": "Structure Administration Service Module", "groupName_zh": "建筑行政服务装备", "groupNameID": 308389, "published": 0, "useBasePrice": 0 }, "1326": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1326, "groupName_de": "Structure Advertisement Service Module", "groupName_en-us": "Structure Advertisement Service Module", "groupName_es": "Módulo de servicio de publicidad para estructuras", "groupName_fr": "Module de service d'agence publicitaire (Structure)", "groupName_it": "Structure Advertisement Service Module", "groupName_ja": "ストラクチャ ― 広告サービスモジュール", "groupName_ko": "구조물 홍보 서비스 모듈", "groupName_ru": "Structure Advertisement Service Module", "groupName_zh": "建筑宣传服务装备", "groupNameID": 308412, "published": 0, "useBasePrice": 0 }, "1327": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1327, "groupName_de": "Struktur: XL-Lenkwaffenwerfer", "groupName_en-us": "Structure XL Missile Launcher", "groupName_es": "Lanzamisiles de crucero para estructuras (XL)", "groupName_fr": "Lance-missiles XL pour structure", "groupName_it": "Structure XL Missile Launcher", "groupName_ja": "ストラクチャXLミサイルランチャー", "groupName_ko": "구조물 XL 미사일 런처", "groupName_ru": "Ракетная установка для сверхбольших сооружений", "groupName_zh": "建筑超大型导弹发射器", "groupNameID": 308413, "published": 1, "useBasePrice": 0 }, "1328": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1328, "groupName_de": "Struktur: Lenkbombenwerfer", "groupName_en-us": "Structure Guided Bomb Launcher", "groupName_es": "Lanzabombas guiado para estructuras", "groupName_fr": "Lanceur de bombe guidé par la structure", "groupName_it": "Structure Guided Bomb Launcher", "groupName_ja": "ストラクチャ ― 誘導爆弾ランチャー", "groupName_ko": "구조물 유도폭탄 런처", "groupName_ru": "Сооружение - ПУ ракет объёмного взрыва", "groupName_zh": "建筑制导炸弹发射器", "groupNameID": 308477, "published": 1, "useBasePrice": 0 }, "1329": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1329, "groupName_de": "Struktur: Energieneutralisierer", "groupName_en-us": "Structure Energy Neutralizer", "groupName_es": "Neutralizador energético para estructuras", "groupName_fr": "Neutraliseur d'énergie (Structure)", "groupName_it": "Structure Energy Neutralizer", "groupName_ja": "ストラクチャ ― エネルギーニュートライザー", "groupName_ko": "구조물 에너지 뉴트럴라이저", "groupName_ru": "Сооружения - дистанционные нейтрализаторы заряда накопителя", "groupName_zh": "建筑能量中和器", "groupNameID": 308478, "published": 1, "useBasePrice": 0 }, "1330": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1330, "groupName_de": "Struktur: Gebietsverweigerungsmodul", "groupName_en-us": "Structure Area Denial Module", "groupName_es": "Módulo de negación de zona para estructuras", "groupName_fr": "Module de barrage (Structure)", "groupName_it": "Structure Area Denial Module", "groupName_ja": "ストラクチャ ― エリア拒否モジュール", "groupName_ko": "구조물 지역 거부 모듈", "groupName_ru": "Сооружение - система точечной обороны", "groupName_zh": "建筑区域封锁装备", "groupNameID": 308479, "published": 1, "useBasePrice": 0 }, "1331": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1331, "groupName_de": "Struktur-Pulsprojektor", "groupName_en-us": "Structure Burst Projector", "groupName_es": "Proyector de estallido para estructuras", "groupName_fr": "Projecteur à salves pour structure", "groupName_it": "Structure Burst Projector", "groupName_ja": "ストラクチャバーストプロジェクター", "groupName_ko": "구조물 버스트 프로젝터", "groupName_ru": "Проектор объёмных помех для сооружений", "groupName_zh": "建筑脉冲波投射器", "groupNameID": 308480, "published": 1, "useBasePrice": 0 }, "1332": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1332, "groupName_de": "Struktur: ECM-Batterie", "groupName_en-us": "Structure ECM Battery", "groupName_es": "Batería de ECM para estructuras", "groupName_fr": "Batterie CME (Structure)", "groupName_it": "Structure ECM Battery", "groupName_ja": "ストラクチャECMバッテリー", "groupName_ko": "구조물 ECM 포탑", "groupName_ru": "Сооружения - батареи РЭП", "groupName_zh": "建筑ECM炮塔", "groupNameID": 308481, "published": 1, "useBasePrice": 0 }, "1333": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1333, "groupName_de": "Structure Doomsday Weapon", "groupName_en-us": "Structure Doomsday Weapon", "groupName_es": "Arma apocalíptica para estructuras", "groupName_fr": "Arme d'annihilation (Structure)", "groupName_it": "Structure Doomsday Weapon", "groupName_ja": "ストラクチャ ― ドゥームズデイ兵器", "groupName_ko": "구조물 둠스데이 무기", "groupName_ru": "Structure Doomsday Weapon", "groupName_zh": "建筑末日武器", "groupNameID": 308482, "published": 1, "useBasePrice": 0 }, "1395": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1395, "groupName_de": "Lenkwaffen-Leitverbesserung", "groupName_en-us": "Missile Guidance Enhancer", "groupName_es": "Intensificador de guiado de misiles", "groupName_fr": "Optimisateur de guidage de missiles", "groupName_it": "Missile Guidance Enhancer", "groupName_ja": "ミサイル誘導エンハンサー", "groupName_ko": "미사일 유도 향상장치", "groupName_ru": "Корректор траекторий ракет", "groupName_zh": "导弹制导增强器", "groupNameID": 505982, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1396": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1396, "groupName_de": "Lenkwaffen-Leitcomputer", "groupName_en-us": "Missile Guidance Computer", "groupName_es": "Ordenador de guiado de misiles", "groupName_fr": "Ordinateur de guidage de missiles", "groupName_it": "Missile Guidance Computer", "groupName_ja": "ミサイル誘導コンピューター", "groupName_ko": "미사일 유도 컴퓨터", "groupName_ru": "Вычислитель наведения ракет", "groupName_zh": "导弹制导计算机", "groupNameID": 505983, "published": 1, "useBasePrice": 0 }, "1397": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1397, "groupName_de": "Lenkwaffen-Leitverbesserungsblaupause", "groupName_en-us": "Missile Guidance Enhancer Blueprint", "groupName_es": "Plano de intensificador de guiado de misiles", "groupName_fr": "Plan de construction Optimisateur de guidage de missiles", "groupName_it": "Missile Guidance Enhancer Blueprint", "groupName_ja": "ミサイル誘導エンハンサーのブループリント", "groupName_ko": "미사일 유도 향상장치 블루프린트", "groupName_ru": "Чертежи корректора траекторий ракет", "groupName_zh": "导弹制导增强器蓝图", "groupNameID": 505988, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1399": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1399, "groupName_de": "Lenkwaffen-Leitcomputerblaupause", "groupName_en-us": "Missile Guidance Computer Blueprint", "groupName_es": "Plano de ordenador de guiado de misiles", "groupName_fr": "Plan de construction Ordinateur de guidage de missiles", "groupName_it": "Missile Guidance Computer Blueprint", "groupName_ja": "ミサイル誘導コンピューターのブループリント", "groupName_ko": "미사일 유도 컴퓨터 블루프린트", "groupName_ru": "Missile Guidance Computer Blueprint", "groupName_zh": "导弹制导计算机蓝图", "groupNameID": 506029, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1400": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 1400, "groupName_de": "Lenkwaffen-Leitverbesserung", "groupName_en-us": "Missile Guidance Script", "groupName_es": "Script de guiado de misiles", "groupName_fr": "Script de guidage de missile", "groupName_it": "Missile Guidance Script", "groupName_ja": "ミサイル誘導スクリプト", "groupName_ko": "미사일 유도 스크립트", "groupName_ru": "Прошивки вычислителей наведения ракет", "groupName_zh": "导弹制导脚本", "groupNameID": 506042, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1402": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1402, "groupName_de": "Amarr Navy Roaming-Schlachtschiff", "groupName_en-us": "Amarr Navy Roaming Battleship", "groupName_es": "Acorazado errante de la Armada Amarr", "groupName_fr": "Cuirassé itinérant de l'Amarr Navy", "groupName_it": "Amarr Navy Roaming Battleship", "groupName_ja": "巡洋中のアマー海軍戦艦", "groupName_ko": "배회하는 아마르 해군 배틀쉽", "groupName_ru": "Свободный линкор Амаррского Флота", "groupName_zh": "艾玛海军游荡的战列舰", "groupNameID": 506077, "published": 0, "useBasePrice": 0 }, "1404": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1404, "groupName_de": "Ingenieurskomplex", "groupName_en-us": "Engineering Complex", "groupName_es": "Complejo de ingeniería", "groupName_fr": "Complexe d'ingénierie", "groupName_it": "Engineering Complex", "groupName_ja": "エンジニアリング複合施設", "groupName_ko": "엔지니어링 시설", "groupName_ru": "Промышленные комплексы", "groupName_zh": "工程复合体", "groupNameID": 506142, "published": 1, "useBasePrice": 0 }, "1405": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1405, "groupName_de": "Labor", "groupName_en-us": "Laboratory", "groupName_es": "Laboratorio", "groupName_fr": "Laboratoire", "groupName_it": "Laboratory", "groupName_ja": "研究施設", "groupName_ko": "연구실", "groupName_ru": "Лаборатория", "groupName_zh": "实验室", "groupNameID": 506143, "published": 0, "useBasePrice": 0 }, "1406": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1406, "groupName_de": "Raffinerie", "groupName_en-us": "Refinery", "groupName_es": "Refinería", "groupName_fr": "Raffinerie", "groupName_it": "Refinery", "groupName_ja": "精錬所", "groupName_ko": "정제소", "groupName_ru": "Перерабатывающие комплексы", "groupName_zh": "精炼厂", "groupNameID": 506144, "published": 1, "useBasePrice": 0 }, "1407": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1407, "groupName_de": "Überwachungsanlage", "groupName_en-us": "Observatory Array", "groupName_es": "Plataforma de observatorio", "groupName_fr": "Observatoire", "groupName_it": "Observatory Array", "groupName_ja": "観測施設", "groupName_ko": "관측 시설", "groupName_ru": "Разведкомплекс", "groupName_zh": "瞭望阵列", "groupNameID": 506145, "published": 0, "useBasePrice": 0 }, "1408": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1408, "groupName_de": "Upwell-Sprungbrücke", "groupName_en-us": "Upwell Jump Bridge", "groupName_es": "Puente de salto Upwell", "groupName_fr": "Pont interstellaire Upwell", "groupName_it": "Upwell Jump Bridge", "groupName_ja": "アップウェルのジャンプブリッジ", "groupName_ko": "업웰 점프 브릿지", "groupName_ru": "Гипермост «Апвелл»", "groupName_zh": "昇威跳跃桥接", "groupNameID": 506146, "published": 1, "useBasePrice": 0 }, "1409": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1409, "groupName_de": "Verwaltungsknoten", "groupName_en-us": "Administration Hub", "groupName_es": "Centro de administración", "groupName_fr": "Centre administratif", "groupName_it": "Administration Hub", "groupName_ja": "アドミニストレーションハブ", "groupName_ko": "행정시설 허브", "groupName_ru": "Административное сооружение", "groupName_zh": "行政中心", "groupNameID": 506147, "published": 0, "useBasePrice": 0 }, "1410": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1410, "groupName_de": "Werbezentrum", "groupName_en-us": "Advertisement Center", "groupName_es": "Centro de publicidad", "groupName_fr": "Agence publicitaire", "groupName_it": "Advertisement Center", "groupName_ja": "広報センター", "groupName_ko": "광고 센터", "groupName_ru": "Центр пропаганды", "groupName_zh": "宣传中心", "groupNameID": 506148, "published": 0, "useBasePrice": 0 }, "1411": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1411, "groupName_de": "Amarr Navy Roaming-Kreuzer", "groupName_en-us": "Amarr Navy Roaming Cruiser", "groupName_es": "Crucero errante de la Armada Amarr", "groupName_fr": "Croiseur itinérant de l'Amarr Navy", "groupName_it": "Amarr Navy Roaming Cruiser", "groupName_ja": "巡洋中のアマー海軍巡洋艦", "groupName_ko": "배회하는 아마르 해군 크루저", "groupName_ru": "Свободный крейсер Амаррского Флота", "groupName_zh": "艾玛海军游荡的巡洋舰", "groupNameID": 506208, "published": 0, "useBasePrice": 0 }, "1412": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1412, "groupName_de": "Amarr Navy Roaming-Capitalschiff", "groupName_en-us": "Amarr Navy Roaming Capital", "groupName_es": "Nave capital errante de la Armada Amarr", "groupName_fr": "Vaisseau capital itinérant de l'Amarr Navy", "groupName_it": "Amarr Navy Roaming Capital", "groupName_ja": "巡洋中のアマー海軍母艦", "groupName_ko": "배회하는 아마르 해군 캐피탈 함선", "groupName_ru": "Свободный КБТ Амаррского Флота", "groupName_zh": "艾玛海军游荡的旗舰", "groupNameID": 506210, "published": 0, "useBasePrice": 0 }, "1413": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1413, "groupName_de": "Amarr Navy Roaming-Industrieschiff", "groupName_en-us": "Amarr Navy Roaming Logistics", "groupName_es": "Logística errante de la Armada Amarr", "groupName_fr": "Vaisseau logistique itinérant de l'Amarr Navy", "groupName_it": "Amarr Navy Roaming Logistics", "groupName_ja": "巡洋中のアマー海軍支援型巡洋艦", "groupName_ko": "배회하는 아마르 해군 로지스틱스", "groupName_ru": "Свободный корабль обеспечения Амаррского Флота", "groupName_zh": "艾玛海军游荡的后勤舰", "groupNameID": 506211, "published": 0, "useBasePrice": 0 }, "1414": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1414, "groupName_de": "Amarr Navy Roaming-Fregatte", "groupName_en-us": "Amarr Navy Roaming Frigate", "groupName_es": "Fragata errante de la Armada Amarr", "groupName_fr": "Frégate itinérante de l'Amarr Navy", "groupName_it": "Amarr Navy Roaming Frigate", "groupName_ja": "巡洋中のアマー海軍フリゲート", "groupName_ko": "배회하는 아마르 해군 프리깃", "groupName_ru": "Свободный фрегат Амаррского Флота", "groupName_zh": "艾玛海军游荡的护卫舰", "groupNameID": 506212, "published": 0, "useBasePrice": 0 }, "1415": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1415, "groupName_de": "Struktur: Industriedienstmodul", "groupName_en-us": "Structure Engineering Service Module", "groupName_es": "Módulo de servicio de ingeniería para estructuras", "groupName_fr": "Module de service d'ingénierie pour structure", "groupName_it": "Structure Engineering Service Module", "groupName_ja": "ストラクチャ エンジニアリングサービスモジュール", "groupName_ko": "구조물 엔지니어링 서비스 모듈", "groupName_ru": "Служебные модули промышленных сооружений", "groupName_zh": "建筑工程服务装备", "groupNameID": 506262, "published": 1, "useBasePrice": 0 }, "1416": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1416, "groupName_de": "Struktur: Forschungsdienstmodul", "groupName_en-us": "Structure Research Service Module", "groupName_es": "Módulo de servicio de investigación para estructuras", "groupName_fr": "Module de service de recherche (Structure)", "groupName_it": "Structure Research Service Module", "groupName_ja": "ストラクチャ ― 研究サービスモジュール", "groupName_ko": "구조물 연구 서비스 모듈", "groupName_ru": "Structure Research Service Module", "groupName_zh": "建筑研究服务装备", "groupNameID": 506263, "published": 0, "useBasePrice": 0 }, "1429": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1429, "groupName_de": "Struktur: Waffenupgrade", "groupName_en-us": "Structure Weapon Upgrade", "groupName_es": "Mejora de armas para estructuras", "groupName_fr": "Amélioration d'armement (Structure)", "groupName_it": "Structure Weapon Upgrade", "groupName_ja": "ストラクチャ ― 兵器の改良", "groupName_ko": "구조물 무기 업그레이드", "groupName_ru": "Сооружение - пакет модернизации вооружения", "groupName_zh": "建筑武器升级", "groupNameID": 506276, "published": 1, "useBasePrice": 0 }, "1430": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1430, "groupName_de": "Struktur: Ausrüstungsmodul", "groupName_en-us": "Structure Fitting Module", "groupName_es": "Módulo de equipamiento para estructuras", "groupName_fr": "Module de montage (Structure)", "groupName_it": "Structure Fitting Module", "groupName_ja": "ストラクチャ ― モジュール搭載", "groupName_ko": "구조물 피팅 모듈", "groupName_ru": "Сооружение - оснащение сооружений", "groupName_zh": "建筑装配装备", "groupNameID": 506277, "published": 1, "useBasePrice": 0 }, "1441": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1441, "groupName_de": "Struktur-Stasisnetz", "groupName_en-us": "Structure Stasis Webifier", "groupName_es": "Red ralentizadora para estructuras", "groupName_fr": "Générateur de stase (Structure)", "groupName_it": "Structure Stasis Webifier", "groupName_ja": "ストラクチャ ― ステイシスウェビファイア", "groupName_ko": "구조물 스테이시스 웹 생성기", "groupName_ru": "Structure Stasis Webifier", "groupName_zh": "建筑停滞缠绕光束", "groupNameID": 506446, "published": 1, "useBasePrice": 0 }, "1442": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1442, "groupName_de": "Struktur-Warpunterbrecher", "groupName_en-us": "Structure Warp Scrambler", "groupName_es": "Distorsionador de warp de estructuras", "groupName_fr": "Inhibiteur de warp (Structure)", "groupName_it": "Structure Warp Scrambler", "groupName_ja": "ストラクチャ ― ワープスクランブラー", "groupName_ko": "구조물 워프 스크램블러", "groupName_ru": "Тяжёлый варп-глушитель для сооружений", "groupName_zh": "建筑跃迁扰频器", "groupNameID": 506455, "published": 1, "useBasePrice": 0 }, "1452": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1452, "groupName_de": "Irregular-Drohne", "groupName_en-us": "Irregular Drone", "groupName_es": "Dron irregular", "groupName_fr": "Drone irrégulier", "groupName_it": "Irregular Drone", "groupName_ja": "非正規ドローン", "groupName_ko": "비정상적인 드론", "groupName_ru": "Необычный дрон", "groupName_zh": "叛道者无人机", "groupNameID": 508813, "published": 0, "useBasePrice": 0 }, "1453": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1453, "groupName_de": "Irregular-Drohne zur elektronischen Kriegsführung", "groupName_en-us": "Irregular EW Drone", "groupName_es": "Dron de GE irregular", "groupName_fr": "Drone de guerre électronique irrégulier", "groupName_it": "Irregular EW Drone", "groupName_ja": "非正規EWドローン", "groupName_ko": "비정상적인 전자전 드론", "groupName_ru": "Необычный дрон с системой электронного боя", "groupName_zh": "叛道者电子战无人机", "groupNameID": 508814, "published": 0, "useBasePrice": 0 }, "1454": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1454, "groupName_de": "Irregular-Jäger", "groupName_en-us": "Irregular Fighter", "groupName_es": "Caza irregular", "groupName_fr": "Chasseur irrégulier", "groupName_it": "Irregular Fighter", "groupName_ja": "非正規艦載戦闘機", "groupName_ko": "비정상적인 파이터", "groupName_ru": "Необычный истребитель", "groupName_zh": "叛道者铁骑舰载机", "groupNameID": 508815, "published": 0, "useBasePrice": 0 }, "1455": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1455, "groupName_de": "Irregular-Jägerstaffel", "groupName_en-us": "Irregular Fighter Squadron", "groupName_es": "Escuadrón de cazas irregulares", "groupName_fr": "Escadron de chasseurs irrégulier", "groupName_it": "Irregular Fighter Squadron", "groupName_ja": "非正規艦載戦闘機分隊", "groupName_ko": "비정상적인 파이터 편대", "groupName_ru": "Эскадрилья необычных истребителей", "groupName_zh": "叛道者铁骑舰载机中队", "groupNameID": 508816, "published": 0, "useBasePrice": 0 }, "1461": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1461, "groupName_de": "Unbekannte Blaupause", "groupName_en-us": "Unknown Blueprint", "groupName_es": "Plano desconocido", "groupName_fr": "Plan de construction inconnu", "groupName_it": "Unknown Blueprint", "groupName_ja": "未知のブループリント", "groupName_ko": "알 수 없는 블루프린트", "groupName_ru": "Неизвестные чертежи", "groupName_zh": "未知蓝图", "groupNameID": 508891, "iconID": 2703, "published": 0, "useBasePrice": 0 }, "1462": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1462, "groupName_de": "Struktur-Blaupausen", "groupName_en-us": "Structure Blueprints", "groupName_es": "Planos para estructuras", "groupName_fr": "Plans de construction Structure", "groupName_it": "Structure Blueprints", "groupName_ja": "ストラクチャのブループリント", "groupName_ko": "구조물 블루프린트", "groupName_ru": "Чертежи сооружений", "groupName_zh": "建筑蓝图", "groupNameID": 508924, "published": 1, "useBasePrice": 1 }, "1465": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1465, "groupName_de": "Missionen: Standard-Supercarrier", "groupName_en-us": "Mission Generic Supercarrier", "groupName_es": "Superportanaves de misión genérico", "groupName_fr": "Cuirassés génériques mission", "groupName_it": "Mission Generic Supercarrier", "groupName_ja": "汎用大型艦載機母艦", "groupName_ko": "미션 일반 슈퍼캐리어", "groupName_ru": "СуперКАР боевой группы", "groupName_zh": "任务通用超级航母", "groupNameID": 508996, "iconID": 0, "published": 0, "useBasePrice": 0 }, "1527": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1527, "groupName_de": "Logistik-Fregatte", "groupName_en-us": "Logistics Frigate", "groupName_es": "Fragata logística", "groupName_fr": "Frégate logistique", "groupName_it": "Logistics Frigate", "groupName_ja": "支援型フリゲート", "groupName_ko": "로지스틱스 프리깃", "groupName_ru": "Фрегаты обеспечения", "groupName_zh": "后勤护卫舰", "groupNameID": 510079, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1529": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1529, "groupName_de": "Raumverwerfung - Verbesserter Sleeper-Rächer", "groupName_en-us": "Deadspace Sleeper Upgraded Avenger", "groupName_es": "Vengador mejorado de sleepers del espacio muerto", "groupName_fr": "Avenger amélioré sleeper Deadspace", "groupName_it": "Deadspace Sleeper Upgraded Avenger", "groupName_ja": "デッドスペース スリーパーの改良型アベンジャー", "groupName_ko": "데드스페이스 슬리퍼 개량된 어벤져", "groupName_ru": "Усовершенствованный «мститель» Скитальцев «мёртвых зон»", "groupName_zh": "死亡空间冬眠者升级版复仇者", "groupNameID": 510145, "published": 0, "useBasePrice": 0 }, "1530": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1530, "groupName_de": "Drifter-Reaktionsschlachtschiff", "groupName_en-us": "Drifter Response Battleship", "groupName_es": "Acorazado de respuesta drifter", "groupName_fr": "Cuirassé de réponse drifter", "groupName_it": "Drifter Response Battleship", "groupName_ja": "ドリフターのレスポンス戦艦", "groupName_ko": "드리프터 대응함", "groupName_ru": "Линкор Скитальцев группы реагирования", "groupName_zh": "流浪者反击战列舰", "groupNameID": 510146, "published": 0, "useBasePrice": 0 }, "1533": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1533, "groupName_de": "Mikrosprungfeldgeneratoren", "groupName_en-us": "Micro Jump Field Generators", "groupName_es": "Generadores de campo de microsalto", "groupName_fr": "Générateurs de champ de microsaut", "groupName_it": "Micro Jump Field Generators", "groupName_ja": "マイクロジャンプフィールドジェネレーター", "groupName_ko": "마이크로 점프 필드 생성기", "groupName_ru": "Генераторы разгонного поля", "groupName_zh": "微型跳跃力场发生器", "groupNameID": 510190, "published": 1, "useBasePrice": 0 }, "1534": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1534, "groupName_de": "Kommandozerstörer", "groupName_en-us": "Command Destroyer", "groupName_es": "Destructor de mando", "groupName_fr": "Destroyer de commandement", "groupName_it": "Command Destroyer", "groupName_ja": "指揮型駆逐艦", "groupName_ko": "커맨드 디스트로이어", "groupName_ru": "Лидеры", "groupName_zh": "指挥驱逐舰", "groupNameID": 510191, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1535": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1535, "groupName_de": "Struktur: Signalverstärker", "groupName_en-us": "Structure Signal Amplifier", "groupName_es": "Amplificador de señal para estructuras", "groupName_fr": "Amplificateur de signal (Structure)", "groupName_it": "Structure Signal Amplifier", "groupName_ja": "ストラクチャシグナル増幅器", "groupName_ko": "구조물 신호 증폭기", "groupName_ru": "Structure Signal Amplifier", "groupName_zh": "建筑信号放大器", "groupNameID": 510273, "published": 1, "useBasePrice": 0 }, "1537": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 1537, "groupName_de": "Unterstützungsjäger", "groupName_en-us": "Support Fighter", "groupName_es": "Caza de apoyo", "groupName_fr": "Chasseur de support", "groupName_it": "Support Fighter", "groupName_ja": "支援戦闘機", "groupName_ko": "서포트 파이터", "groupName_ru": "Истребители поддержки", "groupName_zh": "后勤铁骑舰载机", "groupNameID": 510385, "published": 1, "useBasePrice": 0 }, "1538": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1538, "groupName_de": "Truppenunterstützer", "groupName_en-us": "Force Auxiliary", "groupName_es": "Nave auxiliar", "groupName_fr": "Auxiliaire d'armée", "groupName_it": "Force Auxiliary", "groupName_ja": "軍事力補強", "groupName_ko": "포스 악실리아", "groupName_ru": "Вспомогательные КБТ", "groupName_zh": "战力辅助舰", "groupNameID": 510410, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1542": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1542, "groupName_de": "Kommandozerstörer-Blaupause", "groupName_en-us": "Command Destroyer Blueprint", "groupName_es": "Plano de destructor de mando", "groupName_fr": "Plan de construction Destroyer de commandement", "groupName_it": "Command Destroyer Blueprint", "groupName_ja": "指揮型駆逐艦のブループリント", "groupName_ko": "커맨드 디스트로이어 블루프린트", "groupName_ru": "Чертежи лидеров", "groupName_zh": "指挥驱逐舰蓝图", "groupNameID": 510424, "published": 1, "useBasePrice": 0 }, "1543": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1543, "groupName_de": "Mikrosprungfeldgenerator-Blaupause", "groupName_en-us": "Micro Jump Field Generator Blueprint", "groupName_es": "Plano de generador de campo de microsalto", "groupName_fr": "Plan de construction Générateurs de champ de microsaut", "groupName_it": "Micro Jump Field Generator Blueprint", "groupName_ja": "マイクロジャンプフィールドジェネレーターのブループリント", "groupName_ko": "마이크로 점프 필드 생성기 블루프린트", "groupName_ru": "Чертежи генераторов разгонного поля", "groupName_zh": "微型跳跃力场发生器蓝图", "groupNameID": 510425, "published": 1, "useBasePrice": 1 }, "1545": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 1545, "groupName_de": "Strukturverwaltung", "groupName_en-us": "Structure Management", "groupName_es": "Gestión de estructuras", "groupName_fr": "Gestion de structure", "groupName_it": "Structure Management", "groupName_ja": "ストラクチャ管理", "groupName_ko": "구조물 관리", "groupName_ru": "Управление сооружениями", "groupName_zh": "建筑管理", "groupNameID": 510630, "published": 1, "useBasePrice": 1 }, "1546": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1546, "groupName_de": "Struktur: Anti-Capital-Lenkwaffe", "groupName_en-us": "Structure Anti-Capital Missile", "groupName_es": "Misil anticapital para estructuras", "groupName_fr": "Missile anti-capital (Structure)", "groupName_it": "Structure Anti-Capital Missile", "groupName_ja": "ストラクチャ ― 対母艦ミサイル", "groupName_ko": "구조물 대 캐피탈 미사일", "groupName_ru": "Ракеты сооружений против КБТ", "groupName_zh": "建筑反旗舰导弹", "groupNameID": 510635, "published": 1, "useBasePrice": 0 }, "1547": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1547, "groupName_de": "Struktur: Anti-Subcapital-Lenkwaffe", "groupName_en-us": "Structure Anti-Subcapital Missile", "groupName_es": "Misil antisubcapital para estructuras", "groupName_fr": "Missile anti sous-capital (Structure)", "groupName_it": "Structure Anti-Subcapital Missile", "groupName_ja": "ストラクチャ ― 対準母艦ミサイル", "groupName_ko": "구조물 대 서브캐피탈 미사일", "groupName_ru": "Ракеты сооружений против кораблей стандартного тоннажа", "groupName_zh": "建筑反非旗舰导弹", "groupNameID": 510636, "published": 1, "useBasePrice": 0 }, "1548": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1548, "groupName_de": "Lenkbombe", "groupName_en-us": "Guided Bomb", "groupName_es": "Bomba guiada", "groupName_fr": "Bombe ciblée", "groupName_it": "Guided Bomb", "groupName_ja": "誘導ボム", "groupName_ko": "유도 폭탄", "groupName_ru": "Направляемая бомба", "groupName_zh": "制导炸弹", "groupNameID": 510637, "published": 1, "useBasePrice": 0 }, "1549": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1549, "groupName_de": "Struktur-ECM-Skript", "groupName_en-us": "Structure ECM script", "groupName_es": "Script de ECM para estructuras", "groupName_fr": "Structure – Script CME", "groupName_it": "Structure ECM script", "groupName_ja": "ストラクチャ ECMスクリプト", "groupName_ko": "구조물 ECM 스크립트", "groupName_ru": "Сооружения - прошивка генераторов помех системам сопровождения целей", "groupName_zh": "建筑ECM脚本", "groupNameID": 510638, "published": 1, "useBasePrice": 0 }, "1550": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1550, "groupName_de": "Struktur-Stasisnetz-Skript", "groupName_en-us": "Structure Stasis Webifier Script", "groupName_es": "Script de red ralentizadora para estructuras", "groupName_fr": "Script de générateur de stase pour structure", "groupName_it": "Structure Stasis Webifier Script", "groupName_ja": "ストラクチャ ステイシスウェビファイヤーのスクリプト", "groupName_ko": "구조물 스테이시스 웹 생성기 스크립트", "groupName_ru": "Сооружения - прошивка для генератора стазис-поля", "groupName_zh": "建筑停滞缠绕光束脚本", "groupNameID": 510639, "published": 0, "useBasePrice": 0 }, "1551": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1551, "groupName_de": "Struktur-Warpstörer-Skript", "groupName_en-us": "Structure Warp Disruptor Script", "groupName_es": "Script de disruptor de warp para estructuras", "groupName_fr": "Script de perturbateur de warp pour structure", "groupName_it": "Structure Warp Disruptor Script", "groupName_ja": "ストラクチャ ワープ妨害器のスクリプト", "groupName_ko": "구조물 워프 디스럽터 스크립트", "groupName_ru": "Сооружения - прошивка для варп-глушителя", "groupName_zh": "建筑跃迁扰断器脚本", "groupNameID": 510640, "published": 1, "useBasePrice": 0 }, "1559": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1559, "groupName_de": "Struktur-Resistenzwechsler-Skript", "groupName_en-us": "Structure Resistance Switcher Script", "groupName_es": "Script de conmutador de resistencia de estructuras", "groupName_fr": "Script Aiguilleur de résistance de structure", "groupName_it": "Structure Resistance Switcher Script", "groupName_ja": "ストラクチャ レジスタンス切り替え装置のスクリプト", "groupName_ko": "구조물 저항 스위치 스크립트", "groupName_ru": "Сооружения - прошивка смены профиля сопротивлений", "groupName_zh": "建筑抗性切换器脚本", "groupNameID": 510648, "published": 0, "useBasePrice": 0 }, "1562": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1562, "groupName_de": "Struktur: Mehrzweck-Lenkwaffenwerfer", "groupName_en-us": "Structure Multirole Missile Launcher", "groupName_es": "Lanzamisiles multifunción para estructura", "groupName_fr": "Lance-missiles multirôle pour structure", "groupName_it": "Structure Multirole Missile Launcher", "groupName_ja": "ストラクチャ多目的ミサイルランチャー", "groupName_ko": "구조물 다용도 미사일 런처", "groupName_ru": "Многофункциональная ракетная установка для сооружений", "groupName_zh": "建筑多功能导弹发射器", "groupNameID": 510929, "published": 1, "useBasePrice": 0 }, "1566": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1566, "groupName_de": "Irregular-Shuttle", "groupName_en-us": "Irregular Shuttle", "groupName_es": "Lanzadera irregular", "groupName_fr": "Navette irrégulière", "groupName_it": "Irregular Shuttle", "groupName_ja": "非正規シャトル", "groupName_ko": "비정상적인 셔틀", "groupName_ru": "Необычный катер", "groupName_zh": "叛道者穿梭机", "groupNameID": 511820, "published": 0, "useBasePrice": 0 }, "1567": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1567, "groupName_de": "Irregular-Corvette", "groupName_en-us": "Irregular Corvette", "groupName_es": "Corbeta irregular", "groupName_fr": "Corvette irrégulière", "groupName_it": "Irregular Corvette", "groupName_ja": "非正規コルベット", "groupName_ko": "비정상적인 코르벳", "groupName_ru": "Необычный корвет", "groupName_zh": "叛道者轻型护卫舰", "groupNameID": 511821, "published": 0, "useBasePrice": 0 }, "1568": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1568, "groupName_de": "Irregular-Fregatte", "groupName_en-us": "Irregular Frigate", "groupName_es": "Fragata irregular", "groupName_fr": "Frégate irrégulière", "groupName_it": "Irregular Frigate", "groupName_ja": "非正規フリゲート", "groupName_ko": "비정상적인 프리깃", "groupName_ru": "Необычный фрегат", "groupName_zh": "叛道者护卫舰", "groupNameID": 511822, "published": 0, "useBasePrice": 0 }, "1569": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1569, "groupName_de": "Leitstörskript", "groupName_en-us": "Guidance Disruption Script", "groupName_es": "Script disruptor de guiado", "groupName_fr": "Script de perturbation de guidage", "groupName_it": "Guidance Disruption Script", "groupName_ja": "ガイダンス妨害スクリプト", "groupName_ko": "유도 디스럽터 스크립트", "groupName_ru": "Прошивка глушения систем наведения ракет", "groupName_zh": "制导干扰脚本", "groupNameID": 513663, "iconID": 1639, "published": 1, "useBasePrice": 0 }, "1570": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1570, "groupName_de": "Structure Assembly Rig M - Small Tech I Ship", "groupName_en-us": "Structure Assembly Rig M - Small Tech I Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T1 pequeña", "groupName_fr": "Optimisation d'assemblage M (Structure) – Petits vaisseaux de tech I", "groupName_it": "Structure Assembly Rig M - Small Tech I Ship", "groupName_ja": "ストラクチャ ― 組立リグM(小型Tech 1艦船)", "groupName_ko": "구조물 생산 리그 M - 소형 테크 I 함선", "groupName_ru": "Structure Assembly Rig M - Small Tech I Ship", "groupName_zh": "建筑装配中型改装件 - 一级科技小型舰船", "groupNameID": 513669, "published": 0, "useBasePrice": 0 }, "1579": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1579, "groupName_de": "Structure Assembly Rig M - Medium Tech I Ship", "groupName_en-us": "Structure Assembly Rig M - Medium Tech I Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T1 mediana", "groupName_fr": "Optimisation d'assemblage M (Structure) – Vaisseaux intermédiaires de tech I", "groupName_it": "Structure Assembly Rig M - Medium Tech I Ship", "groupName_ja": "ストラクチャ ― 組立リグM(中型Tech 1艦船)", "groupName_ko": "구조물 생산 리그 M - 중형 테크 I 함선", "groupName_ru": "Structure Assembly Rig M - Medium Tech I Ship", "groupName_zh": "建筑装配中型改装件 - 一级科技中型舰船", "groupNameID": 513670, "published": 0, "useBasePrice": 0 }, "1580": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1580, "groupName_de": "Structure Assembly Rig M - Large Tech I Ship", "groupName_en-us": "Structure Assembly Rig M - Large Tech I Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T1 grande", "groupName_fr": "Optimisation d'assemblage M (Structure) – Grands vaisseaux de tech I", "groupName_it": "Structure Assembly Rig M - Large Tech I Ship", "groupName_ja": "ストラクチャ ― 組立リグM(大型Tech 1艦船)", "groupName_ko": "구조물 생산 리그 M - 대형 테크 I 함선", "groupName_ru": "Structure Assembly Rig M - Large Tech I Ship", "groupName_zh": "建筑装配中型改装件 - 一级科技大型舰船", "groupNameID": 513671, "published": 0, "useBasePrice": 0 }, "1581": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1581, "groupName_de": "Structure Assembly Rig M - Small Tech II Ship", "groupName_en-us": "Structure Assembly Rig M - Small Tech II Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T2 pequeña", "groupName_fr": "Optimisation d'assemblage M (Structure) – Petits vaisseaux de tech II", "groupName_it": "Structure Assembly Rig M - Small Tech II Ship", "groupName_ja": "ストラクチャ ― 組立リグM(小型Tech 2艦船)", "groupName_ko": "구조물 생산 리그 M - 소형 테크 II 함선", "groupName_ru": "Structure Assembly Rig M - Small Tech II Ship", "groupName_zh": "建筑装配中型改装件 - 二级科技小型舰船", "groupNameID": 513672, "published": 0, "useBasePrice": 0 }, "1582": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1582, "groupName_de": "Structure Assembly Rig M - Medium Tech II Ship", "groupName_en-us": "Structure Assembly Rig M - Medium Tech II Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T2 mediana", "groupName_fr": "Optimisation d'assemblage M (Structure) – Vaisseaux intermédiaires de tech II", "groupName_it": "Structure Assembly Rig M - Medium Tech II Ship", "groupName_ja": "ストラクチャ ― 組立リグM(中型Tech 2艦船)", "groupName_ko": "구조물 생산 리그 M - 중형 테크 II 함선", "groupName_ru": "Structure Assembly Rig M - Medium Tech II Ship", "groupName_zh": "建筑装配中型改装件 - 二级科技中型舰船", "groupNameID": 513673, "published": 0, "useBasePrice": 0 }, "1583": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1583, "groupName_de": "Structure Assembly Rig M - Large Tech II Ship", "groupName_en-us": "Structure Assembly Rig M - Large Tech II Ship", "groupName_es": "Complemento de ensamblaje para estructuras (M): nave T2 grande", "groupName_fr": "Optimisation d'assemblage M (Structure) – Grands vaisseaux de tech II", "groupName_it": "Structure Assembly Rig M - Large Tech II Ship", "groupName_ja": "ストラクチャ ― 組立リグM(大型Tech 2艦船)", "groupName_ko": "구조물 생산 리그 M - 대형 테크 II 함선", "groupName_ru": "Structure Assembly Rig M - Large Tech II Ship", "groupName_zh": "建筑装配中型改装件 - 二级科技大型舰船", "groupNameID": 513674, "published": 0, "useBasePrice": 0 }, "1584": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1584, "groupName_de": "Struktur: Fertigungsanlage M - Drohne", "groupName_en-us": "Structure Assembly Rig M - Drone", "groupName_es": "Complemento de ensamblaje para estructuras (M): dron", "groupName_fr": "Optimisation d'assemblage M (Structure) – Drones", "groupName_it": "Structure Assembly Rig M - Drone", "groupName_ja": "ストラクチャ ― 組立リグM(ドローン)", "groupName_ko": "구조물 생산 리그 M - 드론", "groupName_ru": "Structure Assembly Rig M - Drone", "groupName_zh": "建筑装配中型改装件 - 无人机", "groupNameID": 513675, "published": 0, "useBasePrice": 0 }, "1585": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1585, "groupName_de": "Structure Assembly Rig M - Consumable", "groupName_en-us": "Structure Assembly Rig M - Consumable", "groupName_es": "Complemento de ensamblaje para estructuras (M): consumible", "groupName_fr": "Optimisation d'assemblage M (Structure) – Produits de consommation", "groupName_it": "Structure Assembly Rig M - Consumable", "groupName_ja": "ストラクチャ ― 組立リグM(消耗品)", "groupName_ko": "구조물 생산 리그 M - 소모품", "groupName_ru": "Structure Assembly Rig M - Consumable", "groupName_zh": "建筑装配中型改装件 - 消费品", "groupNameID": 513676, "published": 0, "useBasePrice": 0 }, "1586": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1586, "groupName_de": "Structure Assembly Rig M - Module", "groupName_en-us": "Structure Assembly Rig M - Module", "groupName_es": "Complemento de ensamblaje para estructuras (M): módulo", "groupName_fr": "Optimisation d'assemblage M (Structure) – Modules", "groupName_it": "Structure Assembly Rig M - Module", "groupName_ja": "ストラクチャ ― 組立リグM(モジュール)", "groupName_ko": "구조물 생산 리그 M - 모듈", "groupName_ru": "Structure Assembly Rig M - Module", "groupName_zh": "建筑装配中型改装件 - 装备", "groupNameID": 513677, "published": 0, "useBasePrice": 0 }, "1587": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1587, "groupName_de": "Structure Assembly Rig L - Module, Consumable, Drone", "groupName_en-us": "Structure Assembly Rig L - Module, Consumable, Drone", "groupName_es": "Complemento de ensamblaje para estructuras (L): módulo, consumible, dron", "groupName_fr": "Optimisation d'assemblage L (Structure) – Modules, produits de consommation, drones", "groupName_it": "Structure Assembly Rig L - Module, Consumable, Drone", "groupName_ja": "ストラクチャ ― 組立リグL(モジュール、消耗品、ドローン)", "groupName_ko": "구조물 생산 리그 L - 모듈, 소모품, 드론", "groupName_ru": "Structure Assembly Rig L - Module, Consumable, Drone", "groupName_zh": "建筑装配大型改装件 - 装备、消费品、无人机", "groupNameID": 513678, "published": 0, "useBasePrice": 0 }, "1588": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1588, "groupName_de": "Structure Assembly Rig L - Tech I Ship", "groupName_en-us": "Structure Assembly Rig L - Tech I Ship", "groupName_es": "Complemento de ensamblaje para estructuras (L): nave T1", "groupName_fr": "Optimisation d'assemblage L (Structure) – Vaisseaux de tech I", "groupName_it": "Structure Assembly Rig L - Tech I Ship", "groupName_ja": "ストラクチャ ― 組立リグL(Tech 1艦船)", "groupName_ko": "구조물 생산 리그 L - 테크 I 함선", "groupName_ru": "Structure Assembly Rig L - Tech I Ship", "groupName_zh": "建筑装配大型改装件 - 一级科技舰船", "groupNameID": 513679, "published": 0, "useBasePrice": 0 }, "1589": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1589, "groupName_de": "Structure Assembly Rig L - Tech II Ship", "groupName_en-us": "Structure Assembly Rig L - Tech II Ship", "groupName_es": "Complemento de ensamblaje para estructuras (L): nave T2", "groupName_fr": "Optimisation d'assemblage L (Structure) – Vaisseaux de tech II", "groupName_it": "Structure Assembly Rig L - Tech II Ship", "groupName_ja": "ストラクチャ ― 組立リグL(Tech 2艦船)", "groupName_ko": "구조물 생산 리그 L - 테크 II 함선", "groupName_ru": "Structure Assembly Rig L - Tech II Ship", "groupName_zh": "建筑装配大型改装件 - 二级科技舰船", "groupNameID": 513680, "published": 0, "useBasePrice": 0 }, "1590": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1590, "groupName_de": "Structure Assembly Rig L - Tech II Component", "groupName_en-us": "Structure Assembly Rig L - Tech II Component", "groupName_es": "Complemento de ensamblaje para estructuras (L): componente T2", "groupName_fr": "Optimisation d'assemblage L (Structure) – Composants de tech II", "groupName_it": "Structure Assembly Rig L - Tech II Component", "groupName_ja": "ストラクチャ ― 組立リグL(Tech 2コンポーネント)", "groupName_ko": "구조물 생산 리그 L - 테크 II 부품", "groupName_ru": "Structure Assembly Rig L - Tech II Component", "groupName_zh": "建筑装配大型改装件 - 二级科技组件", "groupNameID": 513681, "published": 0, "useBasePrice": 0 }, "1591": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1591, "groupName_de": "Structure Assembly Rig L - Tech I Capital Component", "groupName_en-us": "Structure Assembly Rig L - Tech I Capital Component", "groupName_es": "Complemento de ensamblaje para estructuras (L): componente de nave capital T1", "groupName_fr": "Optimisation d'assemblage L (Structure) – Composants capitaux de tech I", "groupName_it": "Structure Assembly Rig L - Tech I Capital Component", "groupName_ja": "ストラクチャ ― 組立リグL(Tech 1キャピタルコンポーネント)", "groupName_ko": "구조물 생산 리그 L - 테크 I 캐피탈 부품", "groupName_ru": "Structure Assembly Rig L - Tech I Capital Component", "groupName_zh": "建筑装配大型改装件 - 一级科技旗舰组件", "groupNameID": 513682, "published": 0, "useBasePrice": 0 }, "1592": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1592, "groupName_de": "Structure Assembly Rig L - Structure Component", "groupName_en-us": "Structure Assembly Rig L - Structure Component", "groupName_es": "Complemento de ensamblaje para estructuras (L): componente para estructura", "groupName_fr": "Optimisation d'assemblage L (Structure) – Composants de structure", "groupName_it": "Structure Assembly Rig L - Structure Component", "groupName_ja": "ストラクチャ ― 組立リグL(ストラクチャコンポーネント)", "groupName_ko": "구조물 생산 리그 L - 구조물 부품", "groupName_ru": "Structure Assembly Rig L - Structure Component", "groupName_zh": "建筑装配大型改装件 - 建筑组件", "groupNameID": 513683, "published": 0, "useBasePrice": 0 }, "1593": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1593, "groupName_de": "Structure Assembly Rig L - Subsystem", "groupName_en-us": "Structure Assembly Rig L - Subsystem", "groupName_es": "Complemento de ensamblaje para estructuras (L): subsistema", "groupName_fr": "Optimisation d'assemblage L (Structure) – Sous-systèmes", "groupName_it": "Structure Assembly Rig L - Subsystem", "groupName_ja": "ストラクチャ ― 組立リグL(サブシステム)", "groupName_ko": "구조물 생산 리그 L - 서브시스템", "groupName_ru": "Structure Assembly Rig L - Subsystem", "groupName_zh": "建筑装配大型改装件 - 子系统", "groupNameID": 513684, "published": 0, "useBasePrice": 0 }, "1594": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1594, "groupName_de": "Struktur: Fertigungsanlage XL - Ausrüstung", "groupName_en-us": "Structure Assembly Rig XL - Equipment", "groupName_es": "Complemento de ensamblaje para estructuras (XL): equipo", "groupName_fr": "Optimisation d'assemblage XL (Structure) – Équipement", "groupName_it": "Structure Assembly Rig XL - Equipment", "groupName_ja": "ストラクチャ ― 組立リグXL(装備)", "groupName_ko": "구조물 생산 리그 XL - 장비", "groupName_ru": "Structure Assembly Rig XL - Equipment", "groupName_zh": "建筑装配超大型改装件 - 设备", "groupNameID": 513685, "published": 0, "useBasePrice": 0 }, "1595": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1595, "groupName_de": "Struktur: Fertigungsanlage XL - Schiff", "groupName_en-us": "Structure Assembly Rig XL - Ship", "groupName_es": "Complemento de ensamblaje para estructuras (XL): nave", "groupName_fr": "Optimisation d'assemblage XL (Structure) – Vaisseaux", "groupName_it": "Structure Assembly Rig XL - Ship", "groupName_ja": "ストラクチャ ― 組立リグXL(艦船)", "groupName_ko": "구조물 생산 리그 XL - 함선", "groupName_ru": "Structure Assembly Rig XL - Ship", "groupName_zh": "建筑装配超大型改装件 - 舰船", "groupNameID": 513686, "published": 0, "useBasePrice": 0 }, "1596": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1596, "groupName_de": "Struktur: Fertigungsanlage XL - Alle Komponenten", "groupName_en-us": "Structure Assembly Rig XL - All Components", "groupName_es": "Complemento de ensamblaje para estructuras (XL): todos los componentes", "groupName_fr": "Optimisation d'assemblage XL (Structure) – Tous composants", "groupName_it": "Structure Assembly Rig XL - All Components", "groupName_ja": "ストラクチャ ― 組立リグXL(すべてのコンポーネント)", "groupName_ko": "구조물 생산 리그 XL - 모든 부품", "groupName_ru": "Тюнинг-модули сверхбольших сборочных цехов - все компоненты", "groupName_zh": "建筑装配超大型改装件 - 所有组件", "groupNameID": 513687, "published": 0, "useBasePrice": 0 }, "1598": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1598, "groupName_de": "Struktur: Laboranlage M - Kleines Schiff", "groupName_en-us": "Structure Laboratory Rig M - Small Ship", "groupName_es": "Complemento de laboratorio para estructuras (M): nave pequeña", "groupName_fr": "Optimisation de laboratoire M (Structure) – Petits vaisseaux", "groupName_it": "Structure Laboratory Rig M - Small Ship", "groupName_ja": "ストラクチャ ― 研究リグM(小型艦船)", "groupName_ko": "구조물 연구실 리그 M - 소형 함선", "groupName_ru": "Structure Laboratory Rig M - Small Ship", "groupName_zh": "建筑实验室中型改装件 - 小型舰船", "groupNameID": 513689, "published": 0, "useBasePrice": 0 }, "1599": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1599, "groupName_de": "Struktur: Laboranlage M - Mittelgroßes Schiff", "groupName_en-us": "Structure Laboratory Rig M - Medium Ship", "groupName_es": "Complemento de laboratorio para estructuras (M): nave mediana", "groupName_fr": "Optimisation de laboratoire M (Structure) – Vaisseaux intermédiaires", "groupName_it": "Structure Laboratory Rig M - Medium Ship", "groupName_ja": "ストラクチャ ― 研究リグM(中型艦船)", "groupName_ko": "구조물 연구실 리그 M - 중형 함선", "groupName_ru": "Structure Laboratory Rig M - Medium Ship", "groupName_zh": "建筑实验室中型改装件 - 中型舰船", "groupNameID": 513690, "published": 0, "useBasePrice": 0 }, "1600": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1600, "groupName_de": "Struktur: Laboranlage M - Großes Schiff", "groupName_en-us": "Structure Laboratory Rig M - Large Ship", "groupName_es": "Complemento de laboratorio para estructuras (M): nave grande", "groupName_fr": "Optimisation de laboratoire M (Structure) – Grands vaisseaux", "groupName_it": "Structure Laboratory Rig M - Large Ship", "groupName_ja": "ストラクチャ ― 研究リグM(大型艦船)", "groupName_ko": "구조물 연구실 리그 M - 대형 함선", "groupName_ru": "Structure Laboratory Rig M - Large Ship", "groupName_zh": "建筑实验室中型改装件 - 大型舰船", "groupNameID": 513691, "published": 0, "useBasePrice": 0 }, "1601": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1601, "groupName_de": "Struktur: Laboranlage M - Drohne", "groupName_en-us": "Structure Laboratory Rig M - Drone", "groupName_es": "Complemento de laboratorio para estructuras (M): dron", "groupName_fr": "Optimisation de laboratoire M (Structure) – Drones", "groupName_it": "Structure Laboratory Rig M - Drone", "groupName_ja": "ストラクチャ ― 研究リグM(ドローン)", "groupName_ko": "구조물 연구실 리그 M - 드론", "groupName_ru": "Structure Laboratory Rig M - Drone", "groupName_zh": "建筑实验室中型改装件 - 无人机", "groupNameID": 513692, "published": 0, "useBasePrice": 0 }, "1602": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1602, "groupName_de": "Struktur: Laboranlage M - Verbrauchsgut", "groupName_en-us": "Structure Laboratory Rig M - Consumable", "groupName_es": "Complemento de laboratorio para estructuras (M): consumible", "groupName_fr": "Optimisation de laboratoire M (Structure) – Produits de consommation", "groupName_it": "Structure Laboratory Rig M - Consumable", "groupName_ja": "ストラクチャ ― 研究リグM(消耗品)", "groupName_ko": "구조물 연구실 리그 M - 소모품", "groupName_ru": "Structure Laboratory Rig M - Consumable", "groupName_zh": "建筑实验室中型改装件 - 消费品", "groupNameID": 513693, "published": 0, "useBasePrice": 0 }, "1603": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1603, "groupName_de": "Struktur: Laboranlage M - Modul", "groupName_en-us": "Structure Laboratory Rig M - Module", "groupName_es": "Complemento de laboratorio para estructuras (M): módulo", "groupName_fr": "Optimisation de laboratoire M (Structure) – Modules", "groupName_it": "Structure Laboratory Rig M - Module", "groupName_ja": "ストラクチャ ― 研究リグM(モジュール)", "groupName_ko": "구조물 연구실 리그 M - 모듈", "groupName_ru": "Structure Laboratory Rig M - Module", "groupName_zh": "建筑实验室中型改装件 - 装备", "groupNameID": 513694, "published": 0, "useBasePrice": 0 }, "1604": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1604, "groupName_de": "Struktur: Laboranlage L - Modul, Verbrauchsgut, Drohne", "groupName_en-us": "Structure Laboratory Rig L - Module, Consumable, Drone", "groupName_es": "Complemento de laboratorio para estructuras (G): módulo, consumible, dron", "groupName_fr": "Optimisation de laboratoire L (Structure) – Modules, produits de consommation, drones", "groupName_it": "Structure Laboratory Rig L - Module, Consumable, Drone", "groupName_ja": "ストラクチャ ― 研究リグL(モジュール、消耗品、ドローン)", "groupName_ko": "구조물 연구실 리그 L - 모듈, 소모품, 드론", "groupName_ru": "Structure Laboratory Rig L - Module, Consumable, Drone", "groupName_zh": "建筑实验室大型改装件 - 装备、消费品、无人机", "groupNameID": 513695, "published": 0, "useBasePrice": 0 }, "1605": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1605, "groupName_de": "Struktur: Laboranlage L - Schiff", "groupName_en-us": "Structure Laboratory Rig L - Ship", "groupName_es": "Complemento de laboratorio para estructuras (G): nave", "groupName_fr": "Optimisation de laboratoire L (Structure) – Vaisseaux", "groupName_it": "Structure Laboratory Rig L - Ship", "groupName_ja": "ストラクチャ ― 研究リグL(艦船)", "groupName_ko": "구조물 연구실 리그 L - 함선", "groupName_ru": "Structure Laboratory Rig L - Ship", "groupName_zh": "建筑实验室大型改装件 - 舰船", "groupNameID": 513696, "published": 0, "useBasePrice": 0 }, "1606": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1606, "groupName_de": "Struktur: Laboranlage L - Komponente", "groupName_en-us": "Structure Laboratory Rig L - Component", "groupName_es": "Complemento de laboratorio para estructuras (G): componente", "groupName_fr": "Optimisation de laboratoire L (Structure) – Composants", "groupName_it": "Structure Laboratory Rig L - Component", "groupName_ja": "ストラクチャ ― 研究リグL(コンポーネント)", "groupName_ko": "구조물 연구실 리그 L - 부품", "groupName_ru": "Structure Laboratory Rig L - Component", "groupName_zh": "建筑实验室大型改装件 - 组件", "groupNameID": 513697, "published": 0, "useBasePrice": 0 }, "1607": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1607, "groupName_de": "Struktur: Laboranlage L - Capital-Komponente", "groupName_en-us": "Structure Laboratory Rig L - Capital Component", "groupName_es": "Complemento de laboratorio para estructuras (G): componente de nave capital", "groupName_fr": "Optimisation de laboratoire L (Structure) – Composants capitaux", "groupName_it": "Structure Laboratory Rig L - Capital Component", "groupName_ja": "ストラクチャ ― 研究リグL(キャピタルコンポーネント)", "groupName_ko": "구조물 연구실 리그 L - 캐피탈 부품", "groupName_ru": "Structure Laboratory Rig L - Capital Component", "groupName_zh": "建筑实验室大型改装件 - 旗舰组件", "groupNameID": 513698, "published": 0, "useBasePrice": 0 }, "1608": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1608, "groupName_de": "Struktur: Laboranlage L - Strukturkomponenten", "groupName_en-us": "Structure Laboratory Rig L - Structure Component", "groupName_es": "Complemento de laboratorio para estructura (L): componente para estructura", "groupName_fr": "Optimisation de laboratoire L (Structure) – Composants de structure", "groupName_it": "Structure Laboratory Rig L - Structure Component", "groupName_ja": "ストラクチャ ― 研究リグL(ストラクチャコンポーネント)", "groupName_ko": "구조물 연구실 리그 L - 구조물 부품", "groupName_ru": "Structure Laboratory Rig L - Structure Component", "groupName_zh": "建筑实验室大型改装件 - 建筑组件", "groupNameID": 513699, "published": 0, "useBasePrice": 0 }, "1609": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1609, "groupName_de": "Struktur: Laboranlage L - Subsystem", "groupName_en-us": "Structure Laboratory Rig L - Subsystem", "groupName_es": "Complemento de laboratorio para estructuras (G): subsistema", "groupName_fr": "Optimisation de laboratoire L (Structure) – Sous-systèmes", "groupName_it": "Structure Laboratory Rig L - Subsystem", "groupName_ja": "ストラクチャ ― 研究リグL(サブシステム)", "groupName_ko": "구조물 연구실 리그 L - 서브시스템", "groupName_ru": "Structure Laboratory Rig L - Subsystem", "groupName_zh": "建筑实验室大型改装件 - 子系统", "groupNameID": 513700, "published": 0, "useBasePrice": 0 }, "1610": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1610, "groupName_de": "Struktur: Laboranlage XL - Ausrüstung", "groupName_en-us": "Structure Laboratory Rig XL - Equipment", "groupName_es": "Complemento de laboratorio para estructuras (XL): equipo", "groupName_fr": "Optimisation de laboratoire XL (Structure) – Équipement", "groupName_it": "Structure Laboratory Rig XL - Equipment", "groupName_ja": "ストラクチャ ― 研究リグXL(装備)", "groupName_ko": "구조물 연구실 리그 XL - 장비", "groupName_ru": "Structure Laboratory Rig XL - Equipment", "groupName_zh": "建筑实验室超大型改装件 - 设备", "groupNameID": 513701, "published": 0, "useBasePrice": 0 }, "1611": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1611, "groupName_de": "Struktur: Laboranlage XL - Schiff", "groupName_en-us": "Structure Laboratory Rig XL - Ship", "groupName_es": "Complemento de laboratorio para estructuras (XL): nave", "groupName_fr": "Optimisation de laboratoire XL (Structure) – Vaisseaux", "groupName_it": "Structure Laboratory Rig XL - Ship", "groupName_ja": "ストラクチャ ― 研究リグXL(艦船)", "groupName_ko": "구조물 연구실 리그 XL - 함선", "groupName_ru": "Structure Laboratory Rig XL - Ship", "groupName_zh": "建筑实验室超大型改装件 - 舰船", "groupNameID": 513702, "published": 0, "useBasePrice": 0 }, "1612": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1612, "groupName_de": "Struktur: Laboranlage XL - Alle Komponenten", "groupName_en-us": "Structure Laboratory Rig XL - All Components", "groupName_es": "Complemento de laboratorio para estructuras (XL): todos los componentes", "groupName_fr": "Optimisation de laboratoire XL (Structure) – Tous composants", "groupName_it": "Structure Laboratory Rig XL - All Components", "groupName_ja": "ストラクチャ ― 研究リグXL(すべてのコンポーネント)", "groupName_ko": "구조물 연구실 리그 XL - 모든 부품", "groupName_ru": "Structure Laboratory Rig XL - All Components", "groupName_zh": "建筑实验室超大型改装件 - 所有组件", "groupNameID": 513703, "published": 0, "useBasePrice": 0 }, "1613": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1613, "groupName_de": "Struktur: Kampfmodifikation M - Lenkwaffenanwendung", "groupName_en-us": "Structure Combat Rig M - Missile Application", "groupName_es": "Complemento de combate para estructuras (M): uso de misiles", "groupName_fr": "Optimisation de combat M (Structure) – Dégâts des missiles", "groupName_it": "Structure Combat Rig M - Missile Application", "groupName_ja": "ストラクチャ ― コンバットリグM(ミサイルの導入)", "groupName_ko": "구조물 전투 리그 M - 미사일 개량", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - точность ракет", "groupName_zh": "建筑战斗中型改装件 - 导弹应用", "groupNameID": 513704, "published": 1, "useBasePrice": 0 }, "1614": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1614, "groupName_de": "Struktur: Kampfmodifikation M - Lenkwaffenprojektion", "groupName_en-us": "Structure Combat Rig M - Missile Projection", "groupName_es": "Complemento de combate para estructuras (M): proyección de misiles", "groupName_fr": "Optimisation de combat M (Structure) – Portée des missiles", "groupName_it": "Structure Combat Rig M - Missile Projection", "groupName_ja": "ストラクチャ ― コンバットリグM(ミサイルの発射)", "groupName_ko": "구조물 전투 리그 M - 미사일 궤도 예측", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - дальность ракет", "groupName_zh": "建筑战斗中型改装件 - 导弹投射", "groupNameID": 513705, "published": 1, "useBasePrice": 0 }, "1615": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1615, "groupName_de": "Struktur: Kampfmodifikation M - Energieneutralisiererprojektion", "groupName_en-us": "Structure Combat Rig M - Energy Neutralizer Projection", "groupName_es": "Complemento de combate para estructuras (M): proyección de neutralizador energético", "groupName_fr": "Optimisation de combat M (Structure) – Portée des neutraliseurs d'énergie", "groupName_it": "Structure Combat Rig M - Energy Neutralizer Projection", "groupName_ja": "ストラクチャ ― コンバットリグM(エネルギーニュートライザーの発動)", "groupName_ko": "구조물 전투 리그 M - 에너지 뉴트럴라이저 예측", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - дальность средств нейтрализации энергии", "groupName_zh": "建筑战斗中型改装件 - 能量中和投射", "groupNameID": 513706, "published": 1, "useBasePrice": 0 }, "1616": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1616, "groupName_de": "Struktur: Kampfmodifikation M - Energieneutralisierer-Energiespeicherreduktion", "groupName_en-us": "Structure Combat Rig M - Energy Neutralizer Cap Reduction", "groupName_es": "Complemento de combate para estructuras (M): reducción del condensador de neutralizador energético", "groupName_fr": "Optimisation de combat M (Structure) – Réduction de la consommation de capaciteur des neutraliseurs d'énergie", "groupName_it": "Structure Combat Rig M - Energy Neutralizer Cap Reduction", "groupName_ja": "ストラクチャ ― コンバットリグM(エネルギーニュートライザーのキャパシタ使用量削減)", "groupName_ko": "구조물 전투 리그 M - 에너지 뉴트럴라이저 캐패시터 사용량 감소", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - экономия энергии на работу средств нейтрализации энергии", "groupName_zh": "建筑战斗中型改装件 - 能量中和电容减耗", "groupNameID": 513707, "published": 1, "useBasePrice": 0 }, "1617": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1617, "groupName_de": "Struktur: Zitadellenmodifikation M - Drohnen-HP", "groupName_en-us": "Structure Citadel Rig M - Drone Hitpoints", "groupName_es": "Complemento de ciudadela para estructuras (M): puntos de vida de dron", "groupName_fr": "Optimisation de citadelle M (Structure) – Dégâts des drones", "groupName_it": "Structure Citadel Rig M - Drone Hitpoints", "groupName_ja": "ストラクチャ ― 城塞リグM(ドローンのヒットポイント)", "groupName_ko": "구조물 시타델 리그 M - 드론 내구성", "groupName_ru": "Тюнинг-модули средних цитаделей - прочность дронов", "groupName_zh": "建筑堡垒中型改装件 - 无人机HP", "groupNameID": 513708, "published": 0, "useBasePrice": 0 }, "1618": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1618, "groupName_de": "Struktur: Zitadellenmodifikation M - Drohnengeschwindigkeit", "groupName_en-us": "Structure Citadel Rig M - Drone Speed", "groupName_es": "Complemento de ciudadela para estructuras (M): velocidad de dron", "groupName_fr": "Optimisation de citadelle M (Structure) – Vitesse des drones", "groupName_it": "Structure Citadel Rig M - Drone Speed", "groupName_ja": "ストラクチャ ― 城塞リグM(ドローンの速度)", "groupName_ko": "구조물 시타델 리그 M - 드론 속도", "groupName_ru": "Тюнинг-модули средних цитаделей - скорость дронов", "groupName_zh": "建筑堡垒中型改装件 - 无人机速度", "groupNameID": 513709, "published": 0, "useBasePrice": 0 }, "1619": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1619, "groupName_de": "Struktur: Kampfmodifikation M - EW-Projektion", "groupName_en-us": "Structure Combat Rig M - EW projection", "groupName_es": "Complemento de combate para estructuras (M): proyección de GE", "groupName_fr": "Optimisation de combat M (Structure) – Portée des modules de guerre électronique", "groupName_it": "Structure Combat Rig M - EW projection", "groupName_ja": "ストラクチャ ― コンバットリグM(EW発動)", "groupName_ko": "구조물 전투 리그 M - 전자전 예측", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - дальность средств РЭБ", "groupName_zh": "建筑战斗中型改装件 - 电子战投射", "groupNameID": 513710, "published": 1, "useBasePrice": 0 }, "1620": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1620, "groupName_de": "Struktur: Kampfmodifikation M - EW-Energiespeicherreduktion", "groupName_en-us": "Structure Combat Rig M - EW Cap Reduction", "groupName_es": "Complemento de combate para estructuras (M): reducción del condensador de GE", "groupName_fr": "Optimisation de combat M (Structure) – Réduction de la consommation de capaciteur des modules de guerre électronique", "groupName_it": "Structure Combat Rig M - EW Cap Reduction", "groupName_ja": "ストラクチャ ― コンバットリグM(EWのキャパシタ使用量削減)", "groupName_ko": "구조물 전투 리그 M - 전자전 캐패시터 사용량 감소", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - экономия энергии на работу средств РЭБ", "groupName_zh": "建筑战斗中型改装件 - 电子战电容减耗", "groupNameID": 513711, "published": 1, "useBasePrice": 0 }, "1621": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1621, "groupName_de": "Struktur: Kampfmodifikation M - Max. Ziele", "groupName_en-us": "Structure Combat Rig M - Max Targets", "groupName_es": "Complemento de combate para estructuras (M): objetivos máximos", "groupName_fr": "Optimisation de combat M (Structure) – Cibles maximum", "groupName_it": "Structure Combat Rig M - Max Targets", "groupName_ja": "ストラクチャ ― コンバットリグM(最大捕捉数)", "groupName_ko": "구조물 전투 리그 M - 최대 타겟수", "groupName_ru": "Боевой тюнинг-модуль средних сооружений - количество целей", "groupName_zh": "建筑战斗中型改装件 - 最大锁定目标数", "groupNameID": 513712, "published": 1, "useBasePrice": 0 }, "1622": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1622, "groupName_de": "Struktur: Kampfmodifikation M - Sensorverstärkung", "groupName_en-us": "Structure Combat Rig M - Boosted Sensors", "groupName_es": "Complemento de combate para estructuras (M): sensores potenciados", "groupName_fr": "Optimisation de combat M pour structure – Amplification des détecteurs", "groupName_it": "Structure Combat Rig M - Boosted Sensors", "groupName_ja": "ストラクチャ戦闘リグM - ブーストセンサー", "groupName_ko": "구조물 전투 리그 M - 센서 강화", "groupName_ru": "Боевая надстройка для средних сооружений — усиленные сенсоры", "groupName_zh": "建筑中型战斗改装件 - 感应增强", "groupNameID": 513713, "published": 1, "useBasePrice": 0 }, "1629": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1629, "groupName_de": "Struktur: Kampfmodifikation L - Lenkwaffenanwendung und -projektion", "groupName_en-us": "Structure Combat Rig L - Missile Application and Projection", "groupName_es": "Complemento de combate para estructuras (G): uso y proyección de misiles", "groupName_fr": "Optimisation de combat L (Structure) – Portée et dégâts des missiles", "groupName_it": "Structure Combat Rig L - Missile Application and Projection", "groupName_ja": "ストラクチャ ― コンバットリグL(ミサイルの導入および発射)", "groupName_ko": "구조물 전투 리그 L - 미사일 운용 및 예측", "groupName_ru": "Боевой тюнинг-модуль больших сооружений - дальность и точность ракет", "groupName_zh": "建筑战斗大型改装件 - 导弹应用与投射", "groupNameID": 513720, "published": 1, "useBasePrice": 0 }, "1630": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1630, "groupName_de": "Struktur: Kampfmodifikation L - Energieneutralisierer-Projektion und Energiespeicherreduktion", "groupName_en-us": "Structure Combat Rig L - Energy Neutralizer Projection and Cap Reduction", "groupName_es": "Complemento de combate para estructuras (G): reducción de condensador y proyección de neutralizador energético", "groupName_fr": "Optimisation de combat L (Structure) – Portée et réduction de la consommation de capaciteur des neutraliseurs d'énergie", "groupName_it": "Structure Combat Rig L - Energy Neutralizer Projection and Cap Reduction", "groupName_ja": "ストラクチャ ― コンバットリグL(エネルギーニュートライザーの発動およびキャパシタ使用量削減)", "groupName_ko": "구조물 전투 리그 L - 에너지 뉴트럴라이저 예측 및 효율성 장치", "groupName_ru": "Боевой тюнинг-модуль больших сооружений - дальность и экономия энергии при работе дистанционных нейтрализаторов энергии", "groupName_zh": "建筑战斗大型改装件 - 能量中和投射与电容减耗", "groupNameID": 513721, "published": 1, "useBasePrice": 0 }, "1631": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1631, "groupName_de": "Structure Citadel Rig L - Drohnen-HP und -geschwindigkeit", "groupName_en-us": "Structure Citadel Rig L - Drone Hitpoints and Speed", "groupName_es": "Complemento de ciudadela para estructuras (G): puntos de vida y velocidad de dron", "groupName_fr": "Optimisation de citadelle L (Structure) – Dégâts et vitesse des drones", "groupName_it": "Structure Citadel Rig L - Drone Hitpoints and Speed", "groupName_ja": "ストラクチャ ― 城塞リグL(ドローンのヒットポイントおよび速度)", "groupName_ko": "구조물 시타델 리그 L - 드론 내구성 및 속도", "groupName_ru": "Тюнинг-модули больших цитаделей - скорость и прочность дронов", "groupName_zh": "建筑堡垒大型改装件 - 无人机HP和速度", "groupNameID": 513722, "published": 0, "useBasePrice": 0 }, "1632": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1632, "groupName_de": "Struktur: Kampfmodifikation L - EW-Projektion und Energiespeicherreduktion", "groupName_en-us": "Structure Combat Rig L - EW Projection and Cap Reduction", "groupName_es": "Complemento de combate para estructuras (G): reducción de condensador y proyección de GE", "groupName_fr": "Optimisation de combat L (Structure) – Portée et réduction de la consommation de capaciteur des modules de guerre électronique", "groupName_it": "Structure Combat Rig L - EW Projection and Cap Reduction", "groupName_ja": "ストラクチャ ― コンバットリグL(EW発動およびキャパシタ使用量削減)", "groupName_ko": "구조물 전투 리그 L - 전자전 예측 및 효율성 장치", "groupName_ru": "Боевой тюнинг-модуль больших сооружений - РЭБ, расстояние, экономия энергии", "groupName_zh": "建筑战斗大型改装件 - 电子战投射与电容减耗", "groupNameID": 513723, "published": 1, "useBasePrice": 0 }, "1633": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1633, "groupName_de": "Struktur: Kampfmodifikation L - AoE-Werferanwendung und -projektion", "groupName_en-us": "Structure Combat Rig L - AoE Launcher Application and Projection", "groupName_es": "Complemento de combate para estructuras (G): proyección y uso de lanzador de área de efecto", "groupName_fr": "Optimisation de combat L (Structure) – Portée et dégâts des lanceurs à effet de zone", "groupName_it": "Structure Combat Rig L - AoE Launcher Application and Projection", "groupName_ja": "ストラクチャ ― コンバットリグL(AoEランチャーの導入および発射)", "groupName_ko": "구조물 전투 리그 L - AoE 런처 운용 및 예측", "groupName_ru": "Боевой тюнинг-модуль больших сооружений - дальность и точность ракет объёмного взрыва", "groupName_zh": "建筑战斗大型改装件 - AoE导弹发射器应用与投射", "groupNameID": 513724, "published": 1, "useBasePrice": 0 }, "1634": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1634, "groupName_de": "Struktur: Kampfmodifikation L - Verteidigungsbatterie Anwendung und Projektion", "groupName_en-us": "Structure Combat Rig L - Point Defense Battery Application and Projection", "groupName_es": "Complemento de combate para estructuras (G): proyección y uso de batería de defensa de puntos", "groupName_fr": "Optimisation de combat L (Structure) – Portée et dégâts des batteries de défense ciblée", "groupName_it": "Structure Combat Rig L - Point Defense Battery Application and Projection", "groupName_ja": "ストラクチャ ― コンバットリグL(地点防衛バッテリーの導入および発動)", "groupName_ko": "구조물 전투 리그 L - 거점 방어 포탑 운용 및 예측", "groupName_ru": "Боевой тюнинг-модуль больших сооружений - дальность и точность систем точечной обороны", "groupName_zh": "建筑战斗大型改装件 - 定点防御炮塔应用与投射", "groupNameID": 513725, "published": 1, "useBasePrice": 0 }, "1635": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1635, "groupName_de": "Struktur: Kampfmodifikation L - Max. Ziele und Sensorverstärkung", "groupName_en-us": "Structure Combat Rig L - Max Targets and Sensor Boosting", "groupName_es": "Complemento de combate para estructuras (G): potenciadores máximos de objetivos y sensores", "groupName_fr": "Optimisation de combat L pour structure – Cibles maximum et amplification des détecteurs", "groupName_it": "Structure Combat Rig L - Max Targets and Sensor Boosting", "groupName_ja": "ストラクチャ戦闘リグL - 最大ターゲットとセンサーブースト", "groupName_ko": "구조물 전투 리그 L -최대 타겟수 및 센서 강화", "groupName_ru": "Боевая надстройка для больших сооружений — увеличено макс. число целей и усилены сенсоры", "groupName_zh": "建筑战斗大型改装件 - 最大锁定目标数与感应增强", "groupNameID": 513726, "published": 1, "useBasePrice": 0 }, "1639": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1639, "groupName_de": "Struktur: Kampfmodifikation XL - Lenkwaffe und AoE-Lenkwaffe", "groupName_en-us": "Structure Combat Rig XL - Missile and AoE Missile", "groupName_es": "Complemento de combate para estructuras (XL): misiles y área de efecto de misiles", "groupName_fr": "Optimisation de combat XL (Structure) – Missiles et missiles à effet de zone", "groupName_it": "Structure Combat Rig XL - Missile and AoE Missile", "groupName_ja": "ストラクチャ ― コンバットリグL(ミサイルおよびAoEミサイル)", "groupName_ko": "구조물 전투 리그 XL - 미사일 및 광역 미사일", "groupName_ru": "Боевой тюнинг-модуль сверхбольших сооружений - ракеты и ракеты объёмного взрыва", "groupName_zh": "建筑战斗超大型改装件 - 导弹与AoE导弹", "groupNameID": 513730, "published": 1, "useBasePrice": 0 }, "1640": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1640, "groupName_de": "Struktur: Zitadellenmodifikation XL - Drohnen und PDB", "groupName_en-us": "Structure Citadel Rig XL - Drone and PDB", "groupName_es": "Structure Citadel Rig XL - Drone and PDB", "groupName_fr": "Optimisation de citadelle XL (Structure) – Drones et PDB", "groupName_it": "Structure Citadel Rig XL - Drone and PDB", "groupName_ja": "ストラクチャ ― 城塞リグXL(ドローンおよびPDB)", "groupName_ko": "구조물 시타델 리그 XL - 드론 및 거점 방어 포탑", "groupName_ru": "Structure Citadel Rig XL - Drone and PDB", "groupName_zh": "建筑堡垒超大型改装件 - 无人机与定点防卫炮塔", "groupNameID": 513731, "published": 0, "useBasePrice": 0 }, "1641": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1641, "groupName_de": "Struktur: Kampfmodifikation XL - Energieneutralisierer und EW", "groupName_en-us": "Structure Combat Rig XL - Energy Neutralizer and EW", "groupName_es": "Complemento de combate para estructuras (XL): neutralizador energético y GE", "groupName_fr": "Optimisation de combat XL (Structure) – Neutraliseurs d'énergie et modules de guerre électronique", "groupName_it": "Structure Combat Rig XL - Energy Neutralizer and EW", "groupName_ja": "ストラクチャ ― コンバットリグXL(エネルギーニュートライザーおよびEW)", "groupName_ko": "구조물 전투 리그 XL - 에너지 뉴트럴라이저 및 전자전", "groupName_ru": "Боевой тюнинг-модуль сверхбольших сооружений - средства РЭБ, нейтрализация энергии", "groupName_zh": "建筑战斗超大型改装件 - 能量中和与电子战", "groupNameID": 513732, "published": 1, "useBasePrice": 0 }, "1642": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1642, "groupName_de": "Struktur: Kampfmodifikation XL - Doomsday und Zielerfassung", "groupName_en-us": "Structure Combat Rig XL - Doomsday and Targeting", "groupName_es": "Complemento de combate para estructuras (XL): apocalíptico y de adquisición de objetivos", "groupName_fr": "Optimisation de combat XL (Structure) – Annihilation et ciblage", "groupName_it": "Structure Combat Rig XL - Doomsday and Targeting", "groupName_ja": "ストラクチャ ― コンバットリグXL(ドゥームズデイおよびターゲット捕捉)", "groupName_ko": "구조물 전투 리그 XL - 둠스데이 및 타겟팅", "groupName_ru": "Боевой тюнинг-модуль сверхбольших сооружений - орудия Судного дня, целеуказание", "groupName_zh": "建筑战斗超大型改装件 - 末日武器和锁定", "groupNameID": 513733, "published": 1, "useBasePrice": 0 }, "1647": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1647, "groupName_de": "ALTE Struktur: Ressourcenmodifikation M - HS-Erzaufbereitung", "groupName_en-us": "OLD Structure Resource Rig M - HS Ore Reprocessing", "groupName_es": "OLD Structure Resource Rig M - HS Ore Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure M – Retraitement des minerais de HS", "groupName_it": "OLD Structure Resource Rig M - HS Ore Reprocessing", "groupName_ja": "旧ストラクチャリソースリグM - HS鉱石再処理", "groupName_ko": "OLD 구조물 자원 리그 M - HS 광물 정제", "groupName_ru": "СТАРАЯ надстройка для средних сооружений — переработка руд метрополий", "groupName_zh": "旧建筑资源中型改装件 - HS矿石提炼", "groupNameID": 513736, "published": 0, "useBasePrice": 0 }, "1648": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1648, "groupName_de": "ALTE Struktur: Ressourcenmodifikation L - Erzaufbereitung", "groupName_en-us": "OLD Structure Resource Rig L - Ore Reprocessing", "groupName_es": "OLD Structure Resource Rig L - Ore Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure L – Retraitement des minerais", "groupName_it": "OLD Structure Resource Rig L - Ore Reprocessing", "groupName_ja": "旧ストラクチャリソースリグL - 鉱石再処理", "groupName_ko": "OLD 구조물 자원 리그 L - 광물 정제", "groupName_ru": "СТАРАЯ надстройка для больших сооружений — переработка руды", "groupName_zh": "旧建筑资源大型改装件 - 矿石提炼", "groupNameID": 513737, "published": 0, "useBasePrice": 0 }, "1649": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1649, "groupName_de": "ALTE Struktur: Ressourcenmodifikation XL - Aufbereitung", "groupName_en-us": "OLD Structure Resource Rig XL - Reprocessing", "groupName_es": "OLD Structure Resource Rig XL - Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure XL – Retraitement", "groupName_it": "OLD Structure Resource Rig XL - Reprocessing", "groupName_ja": "旧ストラクチャリソースリグXL - 再処理", "groupName_ko": "OLD 구조물 자원 리그 XL - 정제", "groupName_ru": "СТАРАЯ надстройка для сверхбольших сооружений — переработка ресурсов", "groupName_zh": "旧建筑资源超大型改装件 - 提炼", "groupNameID": 513738, "published": 0, "useBasePrice": 0 }, "1652": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 1652, "groupName_de": "Leichter Jäger", "groupName_en-us": "Light Fighter", "groupName_es": "Caza ligero", "groupName_fr": "Chasseur léger", "groupName_it": "Light Fighter", "groupName_ja": "軽量級戦闘機", "groupName_ko": "라이트 파이터", "groupName_ru": "Лёгкие истребители", "groupName_zh": "轻型铁骑舰载机", "groupNameID": 514086, "published": 1, "useBasePrice": 0 }, "1653": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 1653, "groupName_de": "Schwerer Jäger", "groupName_en-us": "Heavy Fighter", "groupName_es": "Caza pesado", "groupName_fr": "Chasseur lourd", "groupName_it": "Heavy Fighter", "groupName_ja": "重量級戦闘機", "groupName_ko": "헤비 파이터", "groupName_ru": "Тяжёлые истребители", "groupName_zh": "重型铁骑舰载机", "groupNameID": 514087, "published": 1, "useBasePrice": 0 }, "1657": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1657, "groupName_de": "Zitadelle", "groupName_en-us": "Citadel", "groupName_es": "Ciudadela", "groupName_fr": "Citadelle", "groupName_it": "Citadel", "groupName_ja": "城塞", "groupName_ko": "시타델", "groupName_ru": "Цитадели", "groupName_zh": "堡垒", "groupNameID": 514422, "published": 1, "useBasePrice": 0 }, "1664": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1664, "groupName_de": "Irregular-Zerstörer", "groupName_en-us": "Irregular Destroyer", "groupName_es": "Destructor irregular", "groupName_fr": "Destroyer irrégulier", "groupName_it": "Irregular Destroyer", "groupName_ja": "非正規駆逐艦", "groupName_ko": "비정상적인 디스트로이어", "groupName_ru": "Необычный эсминец", "groupName_zh": "叛道者驱逐舰", "groupNameID": 514632, "published": 0, "useBasePrice": 0 }, "1665": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1665, "groupName_de": "Irregular-Kreuzer", "groupName_en-us": "Irregular Cruiser", "groupName_es": "Crucero irregular", "groupName_fr": "Croiseur irrégulier", "groupName_it": "Irregular Cruiser", "groupName_ja": "非正規巡洋艦", "groupName_ko": "비정상적인 크루저", "groupName_ru": "Необычный крейсер", "groupName_zh": "叛道者巡洋舰", "groupNameID": 514633, "published": 0, "useBasePrice": 0 }, "1666": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1666, "groupName_de": "Irregular-Schlachtkreuzer", "groupName_en-us": "Irregular Battlecruiser", "groupName_es": "Crucero de combate irregular", "groupName_fr": "Croiseur de bataille irrégulier", "groupName_it": "Irregular Battlecruiser", "groupName_ja": "非正規巡洋戦艦", "groupName_ko": "비정상적인 배틀크루저", "groupName_ru": "Необычный линейный крейсер", "groupName_zh": "叛道者战列巡洋舰", "groupNameID": 514634, "published": 0, "useBasePrice": 0 }, "1667": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1667, "groupName_de": "Irregular-Schlachtschiff", "groupName_en-us": "Irregular Battleship", "groupName_es": "Acorazado irregular", "groupName_fr": "Cuirassé irrégulier", "groupName_it": "Irregular Battleship", "groupName_ja": "非正規戦艦", "groupName_ko": "비정상적인 배틀쉽", "groupName_ru": "Необычный линкор", "groupName_zh": "叛道者战列舰", "groupNameID": 514635, "published": 0, "useBasePrice": 0 }, "1670": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 1670, "groupName_de": "Verbesserungen", "groupName_en-us": "Augmentations", "groupName_es": "Aumentos", "groupName_fr": "Augmentations", "groupName_it": "Augmentations", "groupName_ja": "オーグメンテーション", "groupName_ko": "개조", "groupName_ru": "Усовершенствования", "groupName_zh": "属性提升", "groupNameID": 515056, "published": 1, "useBasePrice": 0 }, "1672": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1672, "groupName_de": "Stasisgreifarm", "groupName_en-us": "Stasis Grappler", "groupName_es": "Anquilizador de estasis", "groupName_fr": "Grappler de stase", "groupName_it": "Stasis Grappler", "groupName_ja": "ステイシスグラップラー", "groupName_ko": "스테이시스 그래플러", "groupName_ru": "Высокомощные стазис-индукторы", "groupName_zh": "停滞捕捉光束", "groupNameID": 515060, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1673": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1673, "groupName_de": "Lenkwaffenwerfer: Schneller Torpedo", "groupName_en-us": "Missile Launcher Rapid Torpedo", "groupName_es": "Torpedo rápido de lanzamisiles", "groupName_fr": "Lance-missiles Torpille rapide", "groupName_it": "Missile Launcher Rapid Torpedo", "groupName_ja": "ミサイルランチャー・ラピッドトルピード", "groupName_ko": "급속 토피도 런처", "groupName_ru": "Скорострельные торпедные аппараты", "groupName_zh": "快速鱼雷发射器", "groupNameID": 515475, "iconID": 2839, "published": 1, "useBasePrice": 0 }, "1674": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1674, "groupName_de": "Lenkwaffenwerfer: XL Marschflugkörper", "groupName_en-us": "Missile Launcher XL Cruise", "groupName_es": "Crucero de lanzamisiles (XL)", "groupName_fr": "Lance-missiles croisière XL", "groupName_it": "Missile Launcher XL Cruise", "groupName_ja": "ミサイルランチャーXLクルーズ", "groupName_ko": "XL 크루즈 미사일 런처", "groupName_ru": "Пусковые установки ракет дальнего боя сверхбольшой мощности", "groupName_zh": "超大型巡航导弹发射器", "groupNameID": 515476, "iconID": 2839, "published": 1, "useBasePrice": 0 }, "1676": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 1676, "groupName_de": "Benannte Komponenten", "groupName_en-us": "Named Components", "groupName_es": "Componentes con nombre", "groupName_fr": "Composants nommés", "groupName_it": "Named Components", "groupName_ja": "指定コンポーネント", "groupName_ko": "특수 부품", "groupName_ru": "Именные компоненты", "groupName_zh": "已命名组件", "groupNameID": 515483, "published": 1, "useBasePrice": 0 }, "1677": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1677, "groupName_de": "Fortschrittlicher XL Torpedo", "groupName_en-us": "Advanced XL Torpedo", "groupName_es": "Torpedo XL avanzado", "groupName_fr": "Torpille avancée XL", "groupName_it": "Advanced XL Torpedo", "groupName_ja": "最新型XLトルピード", "groupName_ko": "상급 XL 토피도", "groupName_ru": "Спецторпеды сверхбольшой мощности", "groupName_zh": "高级超大型鱼雷", "groupNameID": 515499, "iconID": 1349, "published": 1, "useBasePrice": 0 }, "1678": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1678, "groupName_de": "Fortschrittlicher XL Marschflugkörper", "groupName_en-us": "Advanced XL Cruise Missile", "groupName_es": "Misil de crucero avanzado (XL)", "groupName_fr": "Missile de croisière avancé XL", "groupName_it": "Advanced XL Cruise Missile", "groupName_ja": "最新型XLクルーズミサイル", "groupName_ko": "상급 XL 크루즈 미사일", "groupName_ru": "Спецракеты дальнего боя сверхбольшой мощности", "groupName_zh": "高级超大型巡航导弹", "groupNameID": 515500, "iconID": 182, "published": 1, "useBasePrice": 0 }, "1679": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1679, "groupName_de": "Unterstützungsjäger-Blaupause", "groupName_en-us": "Support Fighter Blueprint", "groupName_es": "Plano de caza de apoyo", "groupName_fr": "Plan de construction Chasseur de soutien", "groupName_it": "Support Fighter Blueprint", "groupName_ja": "支援戦闘機のブループリント", "groupName_ko": "서포트 파이터 블루프린트", "groupName_ru": "Чертежи истребителей поддержки", "groupName_zh": "后勤铁骑舰载机蓝图", "groupNameID": 515623, "published": 1, "useBasePrice": 1 }, "1681": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1681, "groupName_de": "Asteroiden: Angel Cartel-Dreadnought", "groupName_en-us": "Asteroid Angel Cartel Dreadnought", "groupName_es": "Superacorazado de asteroide del Cártel de los Ángeles", "groupName_fr": "Dreadnought angel cartel astéroïde", "groupName_it": "Asteroid Angel Cartel Dreadnought", "groupName_ja": "アステロイド エンジェルカルテルの攻城艦", "groupName_ko": "소행성 벨트 엔젤 카르텔 드레드노트", "groupName_ru": "Дредноут астероидного патруля «ангелов»", "groupName_zh": "小行星天使联合企业无畏舰", "groupNameID": 515700, "published": 0, "useBasePrice": 0 }, "1682": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1682, "groupName_de": "Asteroiden: Angel Cartel-Titan", "groupName_en-us": "Asteroid Angel Cartel Titan", "groupName_es": "Titán de asteroide del Cártel de los Ángeles", "groupName_fr": "Titan angel cartel astéroïde", "groupName_it": "Asteroid Angel Cartel Titan", "groupName_ja": "アステロイド エンジェルカルテルのタイタン", "groupName_ko": "소행성 벨트 엔젤 카르텔 타이탄", "groupName_ru": "Титан астероидного патруля «ангелов»", "groupName_zh": "小行星天使联合企业泰坦", "groupNameID": 515701, "published": 0, "useBasePrice": 0 }, "1683": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1683, "groupName_de": "Asteroiden: Blood Raider-Dreadnought", "groupName_en-us": "Asteroid Blood Raider Dreadnought", "groupName_es": "Superacorazado de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Dreadnought blood raider astéroïde", "groupName_it": "Asteroid Blood Raider Dreadnought", "groupName_ja": "アステロイド ブラッドレイダーの攻城艦", "groupName_ko": "소행성 벨트 블러드 레이더 드레드노트", "groupName_ru": "Дредноут астероидного патруля «охотников»", "groupName_zh": "小行星血袭者无畏舰", "groupNameID": 515702, "published": 0, "useBasePrice": 0 }, "1684": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1684, "groupName_de": "Asteroiden: Blood Raider-Titan", "groupName_en-us": "Asteroid Blood Raider Titan", "groupName_es": "Titán de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Titan blood raider astéroïde", "groupName_it": "Asteroid Blood Raider Titan", "groupName_ja": "アステロイド ブラッドレイダーのタイタン", "groupName_ko": "소행성 벨트 블러드 레이더 타이탄", "groupName_ru": "Титан астероидного патруля «охотников»", "groupName_zh": "小行星血袭者泰坦", "groupNameID": 515703, "published": 0, "useBasePrice": 0 }, "1685": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1685, "groupName_de": "Asteroiden: Guristas-Dreadnought", "groupName_en-us": "Asteroid Guristas Dreadnought", "groupName_es": "Superacorazado de asteroide de los Guristas", "groupName_fr": "Dreadnought guristas astéroïde", "groupName_it": "Asteroid Guristas Dreadnought", "groupName_ja": "アステロイド ガリスタスの攻城艦", "groupName_ko": "소행성 벨트 구리스타스 드레드노트", "groupName_ru": "Дредноут астероидного патруля гуристас", "groupName_zh": "小行星古斯塔斯无畏舰", "groupNameID": 515704, "published": 0, "useBasePrice": 0 }, "1686": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1686, "groupName_de": "Asteroiden: Guristas-Titan", "groupName_en-us": "Asteroid Guristas Titan", "groupName_es": "Titán de asteroide de los Guristas", "groupName_fr": "Titan guristas astéroïde", "groupName_it": "Asteroid Guristas Titan", "groupName_ja": "アステロイド ガリスタスのタイタン", "groupName_ko": "소행성 벨트 구리스타스 타이탄", "groupName_ru": "Титан астероидного патруля гуристас", "groupName_zh": "小行星古斯塔斯泰坦", "groupNameID": 515705, "published": 0, "useBasePrice": 0 }, "1687": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1687, "groupName_de": "Asteroiden: Sansha's Nation Dreadnought", "groupName_en-us": "Asteroid Sansha's Nation Dreadnought", "groupName_es": "Superacorazado de asteroide de la Nación Sansha", "groupName_fr": "Dreadnought astéroïde de la Sansha's Nation", "groupName_it": "Asteroid Sansha's Nation Dreadnought", "groupName_ja": "アステロイド サンシャ国の攻城艦", "groupName_ko": "소행성 벨트 산샤 네이션 드레드노트", "groupName_ru": "Дредноут астероидного патруля «Нации Санши»", "groupName_zh": "小行星萨沙无畏舰", "groupNameID": 515706, "published": 0, "useBasePrice": 0 }, "1688": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1688, "groupName_de": "Asteroiden: Sansha's Nation Supercarrier", "groupName_en-us": "Asteroid Sansha's Nation Supercarrier", "groupName_es": "Superportanaves de asteroide de la Nación Sansha", "groupName_fr": "Super porte-vaisseau astéroïde de la Sansha's Nation", "groupName_it": "Asteroid Sansha's Nation Supercarrier", "groupName_ja": "アステロイド サンシャ国の大型艦載機母艦", "groupName_ko": "소행성 벨트 산샤 네이션 슈퍼캐리어", "groupName_ru": "СуперКАР астероидного патруля «Нации Санши»", "groupName_zh": "小行星萨沙超级航母", "groupNameID": 515707, "published": 0, "useBasePrice": 0 }, "1689": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1689, "groupName_de": "Asteroiden: Serpentis-Dreadnought", "groupName_en-us": "Asteroid Serpentis Dreadnought", "groupName_es": "Superacorazado de asteroide de Serpentis", "groupName_fr": "Dreadnought serpentis astéroïde", "groupName_it": "Asteroid Serpentis Dreadnought", "groupName_ja": "アステロイド サーペンティスの攻城艦", "groupName_ko": "소행성 벨트 서펜티스 드레드노트", "groupName_ru": "Дредноут астероидного патруля корпорации «Серпентис»", "groupName_zh": "小行星天蛇无畏舰", "groupNameID": 515708, "published": 0, "useBasePrice": 0 }, "1690": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1690, "groupName_de": "Asteroiden: Serpentis-Titan", "groupName_en-us": "Asteroid Serpentis Titan", "groupName_es": "Titán de asteroide de Serpentis", "groupName_fr": "Titan serpentis astéroïde", "groupName_it": "Asteroid Serpentis Titan", "groupName_ja": "アステロイド サーペンティスのタイタン", "groupName_ko": "소행성 벨트 서펜티스 타이탄", "groupName_ru": "Титан астероидного патруля корпорации «Серпентис»", "groupName_zh": "小行星天蛇泰坦", "groupNameID": 515710, "published": 0, "useBasePrice": 0 }, "1691": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1691, "groupName_de": "Asteroiden: Raubdrohnen-Trägerschiff", "groupName_en-us": "Asteroid Rogue Drone Carrier", "groupName_es": "Portadrones rebelde de asteroide", "groupName_fr": "Porte-drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Carrier", "groupName_ja": "アステロイド ローグドローンの艦載機母艦", "groupName_ko": "소행성 벨트 로그 드론 캐리어", "groupName_ru": "КАР астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机航空母舰", "groupNameID": 515711, "published": 0, "useBasePrice": 0 }, "1692": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1692, "groupName_de": "Asteroiden: Raubdrohnen-Supercarrier", "groupName_en-us": "Asteroid Rogue Drone Supercarrier", "groupName_es": "Superportanaves de asteroide de dron rebelde", "groupName_fr": "Super porte-drone renégat astéroïde", "groupName_it": "Asteroid Rogue Drone Supercarrier", "groupName_ja": "アステロイド ローグドローンの大型艦載機母艦", "groupName_ko": "소행성 벨트 로그 드론 슈퍼캐리어", "groupName_ru": "СуперКАР астероидного патруля восставших дронов", "groupName_zh": "小行星自由无人机超级航母", "groupNameID": 515712, "published": 0, "useBasePrice": 0 }, "1693": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1693, "groupName_de": "ALTE Struktur: Ressourcenmodifikation M - LNS-Erzaufbereitung", "groupName_en-us": "OLD Structure Resource Rig M - LNS Ore Reprocessing", "groupName_es": "OLD Structure Resource Rig M - LNS Ore Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure M – Retraitement des minerais de BS-SN", "groupName_it": "OLD Structure Resource Rig M - LNS Ore Reprocessing", "groupName_ja": "旧ストラクチャリソースリグM - LNS鉱石再処理", "groupName_ko": "OLD 구조물 자원 리그 M - LNS 광물 정제", "groupName_ru": "СТАРАЯ надстройка для средних сооружений — переработка руд фронтира и нулевого сектора", "groupName_zh": "旧建筑资源中型改装件 - LNS矿石提炼", "groupNameID": 515795, "published": 0, "useBasePrice": 0 }, "1694": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1694, "groupName_de": "ALTE Struktur: Ressourcenmodifikation M - Eisaufbereitung 1", "groupName_en-us": "OLD Structure Resource Rig M - Ice 1 Reprocessing", "groupName_es": "OLD Structure Resource Rig M - Ice 1 Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure M – Retraitement de la glace 1", "groupName_it": "OLD Structure Resource Rig M - Ice 1 Reprocessing", "groupName_ja": "旧ストラクチャリソースリグM - アイス1再処理", "groupName_ko": "OLD 구조물 자원 리그 M - Ice 1 정제", "groupName_ru": "СТАРАЯ надстройка для средних сооружений — переработка льда 1", "groupName_zh": "旧建筑资源中型改装件 - 冰矿提炼 1", "groupNameID": 515796, "published": 0, "useBasePrice": 0 }, "1695": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1695, "groupName_de": "ALTE Struktur: Ressourcenmodifikation M - Eisaufbereitung 2", "groupName_en-us": "OLD Structure Resource Rig M - Ice 2 Reprocessing", "groupName_es": "OLD Structure Resource Rig M - Ice 2 Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure M – Retraitement de la glace 2", "groupName_it": "OLD Structure Resource Rig M - Ice 2 Reprocessing", "groupName_ja": "旧ストラクチャリソースリグM - アイス2再処理", "groupName_ko": "OLD 구조물 자원 리그 M - Ice 2 정제", "groupName_ru": "СТАРАЯ надстройка для средних сооружений — переработка льда 2", "groupName_zh": "旧建筑资源中型改装件 - 冰矿提炼 2", "groupNameID": 515797, "published": 0, "useBasePrice": 0 }, "1696": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1696, "groupName_de": "ALTE Struktur: Ressourcenmodifikation L - Eisaufbereitung", "groupName_en-us": "OLD Structure Resource Rig L - Ice Reprocessing", "groupName_es": "OLD Structure Resource Rig L - Ice Reprocessing", "groupName_fr": "ANCIEN module d’optimisation des ressources pour structure L – Retraitement de la glace", "groupName_it": "OLD Structure Resource Rig L - Ice Reprocessing", "groupName_ja": "旧ストラクチャリソースリグL - アイス再処理", "groupName_ko": "OLD 구조물 자원 리그 L - Ice 정제", "groupName_ru": "СТАРАЯ надстройка для больших сооружений — переработка льда", "groupName_zh": "旧建筑资源大型改装件 - 冰矿提炼", "groupNameID": 515798, "published": 0, "useBasePrice": 0 }, "1697": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1697, "groupName_de": "Ancillary-Schildfernbooster", "groupName_en-us": "Ancillary Remote Shield Booster", "groupName_es": "Potenciador de escudo remoto auxiliar", "groupName_fr": "Booster de bouclier à distance", "groupName_it": "Ancillary Remote Shield Booster", "groupName_ja": "補助リモートシールドブースター", "groupName_ko": "보조 원격 실드 부스터", "groupName_ru": "Установки дистанционной вспомогательной накачки силового поля", "groupName_zh": "辅助远程护盾回充增量器", "groupNameID": 516084, "published": 1, "useBasePrice": 0 }, "1698": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1698, "groupName_de": "Ancillary-Panzerungs-Fernreparatursystem", "groupName_en-us": "Ancillary Remote Armor Repairer", "groupName_es": "Reparador de blindaje remoto auxiliar", "groupName_fr": "Réparateur de blindage annexe à distance", "groupName_it": "Ancillary Remote Armor Repairer", "groupName_ja": "補助リモートアーマーリペアラ", "groupName_ko": "보조 원격 장갑수리 장치", "groupName_ru": "Установки дистанционного вспомогательного ремонта брони", "groupName_zh": "辅助远程装甲维修器", "groupNameID": 516085, "published": 1, "useBasePrice": 0 }, "1699": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1699, "groupName_de": "Flex-Panzerungshärter", "groupName_en-us": "Flex Armor Hardener", "groupName_es": "Endurecedor de blindaje flexible", "groupName_fr": "Renforcement de blindage adaptatif", "groupName_it": "Flex Armor Hardener", "groupName_ja": "フレックスアーマーハードナー", "groupName_ko": "다목적 장갑 강화장치", "groupName_ru": "Программируемые системы укрепления брони", "groupName_zh": "弯曲装甲增强器", "groupNameID": 516110, "published": 1, "useBasePrice": 0 }, "1700": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1700, "groupName_de": "Flex-Schildhärter", "groupName_en-us": "Flex Shield Hardener", "groupName_es": "Endurecedor de escudo flexible", "groupName_fr": "Renforcement de bouclier adaptatif", "groupName_it": "Flex Shield Hardener", "groupName_ja": "フレックスシールドハードナー", "groupName_ko": "다목적 실드 강화장치", "groupName_ru": "Программируемые модуляторы сопротивляемости полей", "groupName_zh": "弯曲护盾增强器", "groupNameID": 516111, "published": 1, "useBasePrice": 0 }, "1701": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1701, "groupName_de": "Flex-Panzerungshärter-Skript", "groupName_en-us": "Flex Armor Hardener Script", "groupName_es": "Script de endurecedor de blindaje flexible", "groupName_fr": "Script de renforcement de blindage adaptatif", "groupName_it": "Flex Armor Hardener Script", "groupName_ja": "フレックスアーマーハードナーのスクリプト", "groupName_ko": "다목적 장갑 강화장치 스크립트", "groupName_ru": "Прошивки для систем укрепления брони", "groupName_zh": "弯曲装甲增强器脚本", "groupNameID": 516116, "published": 1, "useBasePrice": 0 }, "1702": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1702, "groupName_de": "Flex-Schildhärter-Skript", "groupName_en-us": "Flex Shield Hardener Script", "groupName_es": "Script de endurecedor de escudo flexible", "groupName_fr": "Script de renforcement de bouclier adaptatif", "groupName_it": "Flex Shield Hardener Script", "groupName_ja": "フレックスシールドハードナーのスクリプト", "groupName_ko": "다목적 실드 강화장치 스크립트", "groupName_ru": "Прошивки для модуляторов сопротивляемости полей", "groupName_zh": "弯曲护盾增强器脚本", "groupNameID": 516117, "published": 1, "useBasePrice": 0 }, "1703": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1703, "groupName_de": "Pulsprojektor-Blaupause", "groupName_en-us": "Burst Projector Blueprint", "groupName_es": "Plano de proyector de estallido", "groupName_fr": "Plan de construction Projecteur à salves", "groupName_it": "Burst Projector Blueprint", "groupName_ja": "バーストプロジェクターのブループリント", "groupName_ko": "버스트 프로젝터 블루프린트", "groupName_ru": "Чертежи генераторов объёмных помех", "groupName_zh": "脉冲波投射器蓝图", "groupNameID": 516332, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1704": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1704, "groupName_de": "Superwaffen-Signalfeuer", "groupName_en-us": "Super Weapon Beacon", "groupName_es": "Superbaliza de armas", "groupName_fr": "Balise de super arme", "groupName_it": "Super Weapon Beacon", "groupName_ja": "スーパーウェポン・ビーコン", "groupName_ko": "슈퍼웨폰 비컨", "groupName_ru": "Бакен супероружия", "groupName_zh": "超级武器信标", "groupNameID": 516410, "iconID": 0, "published": 0, "useBasePrice": 0 }, "1706": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1706, "groupName_de": "Capital-Sensoranlage", "groupName_en-us": "Capital Sensor Array", "groupName_es": "Red de sensores capital", "groupName_fr": "Module de détection capital", "groupName_it": "Capital Sensor Array", "groupName_ja": "キャピタルセンサー施設", "groupName_ko": "캐피탈 센서 설비", "groupName_ru": "Усилитель систем обнаружения целей КБТ-класса", "groupName_zh": "旗舰级感应器阵列", "groupNameID": 516574, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1707": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1707, "groupName_de": "Struktur: Modul-Blaupause", "groupName_en-us": "Structure Module Blueprint", "groupName_es": "Plano de módulo para estructuras", "groupName_fr": "Plan de construction Module de structure", "groupName_it": "Structure Module Blueprint", "groupName_ja": "ストラクチャモジュール設計図", "groupName_ko": "구조물 모듈 블루프린트", "groupName_ru": "Чертежи модулей сооружений", "groupName_zh": "建筑装备蓝图", "groupNameID": 516592, "published": 1, "useBasePrice": 1 }, "1708": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1708, "groupName_de": "Struktur: Modifikation-Blaupause", "groupName_en-us": "Structure Rig Blueprint", "groupName_es": "Plano de complemento para estructuras", "groupName_fr": "Plan de construction Module d’optimisation de structure", "groupName_it": "Structure Rig Blueprint", "groupName_ja": "ストラクチャリグ設計図", "groupName_ko": "구조물 리그 블루프린트", "groupName_ru": "Чертёж надстройки сооружения", "groupName_zh": "建筑改装件蓝图", "groupNameID": 516593, "published": 1, "useBasePrice": 1 }, "1709": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1709, "groupName_de": "Unpublished Structure Module and Rig Blueprints", "groupName_en-us": "Unpublished Structure Module and Rig Blueprints", "groupName_es": "Planos de complemento y módulo para estructuras sin publicar", "groupName_fr": "Plans de construction modules de structure et optimisations non publiés", "groupName_it": "Unpublished Structure Module and Rig Blueprints", "groupName_ja": "未公開のストラクチャモジュールおよびリグのブループリント", "groupName_ko": "미출시 구조물 모듈 및 리그 블루프린트", "groupName_ru": "Неопубликованные чертежи модулей и тюнинг-модулей сооружений", "groupName_zh": "未发布建筑装备和改装件蓝图", "groupNameID": 516594, "published": 0, "useBasePrice": 1 }, "1717": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1717, "groupName_de": "Nicht veröffentlichte Strukturmodule", "groupName_en-us": "Unpublished Structure Modules", "groupName_es": "Módulos para estructuras sin publicar", "groupName_fr": "Modules de structure non publiés", "groupName_it": "Unpublished Structure Modules", "groupName_ja": "未公開のストラクチャモジュール", "groupName_ko": "미출시 구조물 모듈", "groupName_ru": "Неопубликованные модули сооружений", "groupName_zh": "未发布建筑装备", "groupNameID": 516606, "published": 0, "useBasePrice": 0 }, "1718": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1718, "groupName_de": "Truppenunterstützer-Blaupause", "groupName_en-us": "Force Auxiliary Blueprint", "groupName_es": "Plano de naves auxiliares", "groupName_fr": "Plan de construction Force auxiliaire", "groupName_it": "Force Auxiliary Blueprint", "groupName_ja": "軍事力補強のブループリント", "groupName_ko": "포스 악실리아 블루프린트", "groupName_ru": "Чертежи вспомогательных КБТ", "groupName_zh": "战力辅助舰蓝图", "groupNameID": 516608, "iconID": 0, "published": 1, "useBasePrice": 1 }, "1719": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1719, "groupName_de": "Struktur: Störbatterie", "groupName_en-us": "Structure Disruption Battery", "groupName_es": "Batería de disrupción para estructuras", "groupName_fr": "Batterie de perturbation (Structure)", "groupName_it": "Structure Disruption Battery", "groupName_ja": "ストラクチャ妨害バッテリー", "groupName_ko": "구조물 디스럽션 포탑", "groupName_ru": "Сооружения - батареи постановки помех", "groupName_zh": "建筑扰断炮塔", "groupNameID": 516879, "published": 1, "useBasePrice": 0 }, "1720": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1720, "groupName_de": "Vagabund Serpentis-Schlachtschiff", "groupName_en-us": "Roaming Serpentis Battleship", "groupName_es": "Acorazado serpentis errante", "groupName_fr": "Cuirassé serpentis itinérant", "groupName_it": "Roaming Serpentis Battleship", "groupName_ja": "巡回中のサーペンティス戦艦", "groupName_ko": "배회하는 서펜티스 배틀쉽", "groupName_ru": "Свободный линкор «Серпентис»", "groupName_zh": "游荡的天蛇战列舰", "groupNameID": 517302, "published": 0, "useBasePrice": 0 }, "1721": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1721, "groupName_de": "Vagabund Serpentis-Kreuzer", "groupName_en-us": "Roaming Serpentis Cruiser", "groupName_es": "Crucero serpentis errante", "groupName_fr": "Croiseur serpentis itinérant", "groupName_it": "Roaming Serpentis Cruiser", "groupName_ja": "巡回中のサーペンティス巡洋艦", "groupName_ko": "배회하는 서펜티스 크루저", "groupName_ru": "Свободный крейсер «Серпентис»", "groupName_zh": "游荡的天蛇巡洋舰", "groupNameID": 517303, "published": 0, "useBasePrice": 0 }, "1722": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1722, "groupName_de": "Vagabund Serpentis-Fregatte", "groupName_en-us": "Roaming Serpentis Frigate", "groupName_es": "Fragata serpentis errante", "groupName_fr": "Frégate serpentis itinérante", "groupName_it": "Roaming Serpentis Frigate", "groupName_ja": "巡回中のサーペンティスフリゲート", "groupName_ko": "배회하는 서펜티스 프리깃", "groupName_ru": "Свободный фрегат «Серпентис»", "groupName_zh": "游荡的天蛇护卫舰", "groupNameID": 517304, "published": 0, "useBasePrice": 0 }, "1723": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1723, "groupName_de": "Blaupause für Schildresistenz mit Beständigkeitsanpassung", "groupName_en-us": "Shield Resistance Shift Hardener Blueprint", "groupName_es": "Plano de endurecedor de cambio de resistencia de escudo", "groupName_fr": "Plan de construction Renforcement de résistance de bouclier adaptatif", "groupName_it": "Shield Resistance Shift Hardener Blueprint", "groupName_ja": "シールドレジスタンスシフトハードナーブループリント", "groupName_ko": "실드 저항력 변환 강화장치 블루프린트", "groupName_ru": "Чертежи программируемых модуляторов сопротивляемости полей", "groupName_zh": "护盾抗性变换增强器蓝图", "groupNameID": 517329, "published": 1, "useBasePrice": 1 }, "1724": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1724, "groupName_de": "Irregular-Dreadnought", "groupName_en-us": "Irregular Dreadnought", "groupName_es": "Superacorazado irregular", "groupName_fr": "Dreadnought irrégulier", "groupName_it": "Irregular Dreadnought", "groupName_ja": "非正規攻城艦", "groupName_ko": "비정상적인 드레드노트", "groupName_ru": "Необычный дредноут", "groupName_zh": "叛道者无畏舰", "groupNameID": 517365, "published": 0, "useBasePrice": 0 }, "1725": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1725, "groupName_de": "Irregular-Truppenunterstützer", "groupName_en-us": "Irregular Force Auxiliary", "groupName_es": "Naves auxiliares irregulares", "groupName_fr": "Force auxiliaire irrégulier", "groupName_it": "Irregular Force Auxiliary", "groupName_ja": "非正規予備戦力", "groupName_ko": "비정상적인 포스 악실리아", "groupName_ru": "Необычные вспомогательные КБТ", "groupName_zh": "叛道者战力辅助舰", "groupNameID": 517366, "published": 0, "useBasePrice": 0 }, "1726": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1726, "groupName_de": "Irregular-Trägerschiff", "groupName_en-us": "Irregular Carrier", "groupName_es": "Portanaves irregular", "groupName_fr": "Porte-vaisseaux irrégulier", "groupName_it": "Irregular Carrier", "groupName_ja": "非正規艦載機母艦", "groupName_ko": "비정상적인 캐리어", "groupName_ru": "Необычный КАР", "groupName_zh": "叛道者航母", "groupNameID": 517367, "published": 0, "useBasePrice": 0 }, "1727": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1727, "groupName_de": "Vagabund Angel Cartel-Schlachtschiff", "groupName_en-us": "Roaming Angel Cartel Battleship", "groupName_es": "Acorazado del Cártel de los Ángeles errante", "groupName_fr": "Cuirassé angel cartel itinérant", "groupName_it": "Roaming Angel Cartel Battleship", "groupName_ja": "巡回中のエンジェルカルエル戦艦", "groupName_ko": "배회하는 엔젤 카르텔 배틀쉽", "groupName_ru": "Свободный линкор «ангелов»", "groupName_zh": "巡游天使联合企业战列舰", "groupNameID": 517494, "published": 0, "useBasePrice": 0 }, "1728": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1728, "groupName_de": "Vagabund Angel Cartel-Kreuzer", "groupName_en-us": "Roaming Angel Cartel Cruiser", "groupName_es": "Crucero del Cártel de los Ángeles errante", "groupName_fr": "Croiseur angel cartel itinérant", "groupName_it": "Roaming Angel Cartel Cruiser", "groupName_ja": "巡回中のエンジェルカルテル巡洋艦", "groupName_ko": "배회하는 엔젤 카르텔 크루저", "groupName_ru": "Свободный крейсер «ангелов»", "groupName_zh": "巡游天使巡洋舰", "groupNameID": 517495, "published": 0, "useBasePrice": 0 }, "1729": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1729, "groupName_de": "Vagabund Angel Cartel-Fregatte", "groupName_en-us": "Roaming Angel Cartel Frigate", "groupName_es": "Fragata del Cártel de los Ángeles errante", "groupName_fr": "Frégate angel cartel itinérante", "groupName_it": "Roaming Angel Cartel Frigate", "groupName_ja": "巡回中のエンジェルカルテルフリゲート", "groupName_ko": "배회하는 엔젤 카르텔 프리깃", "groupName_ru": "Свободный фрегат «ангелов»", "groupName_zh": "巡游天使护卫舰", "groupNameID": 517496, "published": 0, "useBasePrice": 0 }, "1730": { "anchorable": 0, "anchored": 0, "categoryID": 20, "fittableNonSingleton": 0, "groupID": 1730, "groupName_de": "Sonderversion-Implantat", "groupName_en-us": "Special Edition Implant", "groupName_es": "Implante de edición especial", "groupName_fr": "Implant édition spéciale", "groupName_it": "Special Edition Implant", "groupName_ja": "特別仕様インプラント", "groupName_ko": "스페셜 에디션 임플란트", "groupName_ru": "Имплантат спецвыпуска", "groupName_zh": "特别版植入体", "groupNameID": 517638, "published": 1, "useBasePrice": 1 }, "1731": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1731, "groupName_de": "Irregular-Superträgerschiff", "groupName_en-us": "Irregular Super Carrier", "groupName_es": "Superportanaves irregular", "groupName_fr": "Super porte-vaisseaux irrégulier", "groupName_it": "Irregular Super Carrier", "groupName_ja": "非正規大型艦載機母艦", "groupName_ko": "비정상적인 슈퍼캐리어", "groupName_ru": "Необычный суперКАР", "groupName_zh": "叛道者超级航母", "groupNameID": 517715, "published": 0, "useBasePrice": 0 }, "1734": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1734, "groupName_de": "Vagabund Blood Raider Fregatte", "groupName_en-us": "Roaming Blood Raider Frigate", "groupName_es": "Fragata de los Saqueadores Sanguinarios errante", "groupName_fr": "Frégate blood raider itinérante", "groupName_it": "Roaming Blood Raider Frigate", "groupName_ja": "巡回中のブラッドレイダーフリゲート", "groupName_ko": "배회하는 블러드 레이더 프리깃", "groupName_ru": "Свободный фрегат «охотников»", "groupName_zh": "游荡的血袭者护卫舰", "groupNameID": 517755, "published": 0, "useBasePrice": 0 }, "1735": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1735, "groupName_de": "Vagabund Blood Raider Kreuzer", "groupName_en-us": "Roaming Blood Raider Cruiser", "groupName_es": "Crucero de los Saqueadores Sanguinarios errante", "groupName_fr": "Croiseur blood raider itinérant", "groupName_it": "Roaming Blood Raider Cruiser", "groupName_ja": "巡回中のブラッドレイダー巡洋艦", "groupName_ko": "배회하는 블러드 레이더 크루저", "groupName_ru": "Свободный крейсер «охотников»", "groupName_zh": "游荡的血袭者巡洋舰", "groupNameID": 517756, "published": 0, "useBasePrice": 0 }, "1736": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1736, "groupName_de": "Vagabund Blood Raider Schlachtkreuzer", "groupName_en-us": "Roaming Blood Raider Battlecruiser", "groupName_es": "Crucero de combate de los Saqueadores Sanguinarios errante", "groupName_fr": "Croiseur de bataille blood raider itinérant", "groupName_it": "Roaming Blood Raider Battlecruiser", "groupName_ja": "巡回中のブラッドレイダー巡洋戦艦", "groupName_ko": "배회하는 블러드 레이더 배틀크루저", "groupName_ru": "Свободный линейный крейсер «охотников»", "groupName_zh": "游荡的血袭者战列巡洋舰", "groupNameID": 517757, "published": 0, "useBasePrice": 0 }, "1737": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1737, "groupName_de": "Vagabund Blood Raider Schlachtschiff", "groupName_en-us": "Roaming Blood Raider Battleship", "groupName_es": "Acorazado de los Saqueadores Sanguinarios errante", "groupName_fr": "Cuirassé blood raider itinérant", "groupName_it": "Roaming Blood Raider Battleship", "groupName_ja": "巡回中のブラッドレイダー戦艦", "groupName_ko": "배회하는 블러드 레이더 배틀쉽", "groupName_ru": "Свободный линкор «охотников»", "groupName_zh": "游荡的血袭者战列舰", "groupNameID": 517758, "published": 0, "useBasePrice": 0 }, "1739": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 1739, "groupName_de": "Skill-Injektoren", "groupName_en-us": "Skill Injectors", "groupName_es": "Inyectores de habilidad", "groupName_fr": "Injecteurs de compétences", "groupName_it": "Skill Injectors", "groupName_ja": "スキルインジェクター", "groupName_ko": "스킬 주입기", "groupName_ru": "СП-инъекторы", "groupName_zh": "技能注入器", "groupNameID": 518135, "published": 1, "useBasePrice": 0 }, "1759": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1759, "groupName_de": "Irregular-Titan", "groupName_en-us": "Irregular Titan", "groupName_es": "Titán irregular", "groupName_fr": "Titan irrégulier", "groupName_it": "Irregular Titan", "groupName_ja": "非正規タイタン", "groupName_ko": "비정상적인 타이탄", "groupName_ru": "Необычный «Титан»", "groupName_zh": "叛道者泰坦", "groupNameID": 518175, "published": 0, "useBasePrice": 0 }, "1761": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1761, "groupName_de": "Irregular-Bergbaufregatte", "groupName_en-us": "Irregular Mining Frigate", "groupName_es": "Fragata minera irregular", "groupName_fr": "Frégate d'extraction minière irrégulière", "groupName_it": "Irregular Mining Frigate", "groupName_ja": "非正規採掘用フリゲート", "groupName_ko": "비정상적인 채굴 프리깃", "groupName_ru": "Необычный буровой фрегат", "groupName_zh": "叛道者采矿护卫舰", "groupNameID": 518176, "published": 0, "useBasePrice": 0 }, "1762": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1762, "groupName_de": "Irregular-Bergbaubarkasse", "groupName_en-us": "Irregular Mining Barge", "groupName_es": "Gabarra minera irregular", "groupName_fr": "Barge d'extraction minière irrégulière", "groupName_it": "Irregular Mining Barge", "groupName_ja": "非正規採掘艦", "groupName_ko": "비정상적인 채광선", "groupName_ru": "Необычный буровой корабль", "groupName_zh": "叛道者采矿驳船", "groupNameID": 518177, "published": 0, "useBasePrice": 0 }, "1764": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1764, "groupName_de": "♦ Bergbaufregatte", "groupName_en-us": "♦ Mining Frigate", "groupName_es": "♦ Fragata minera", "groupName_fr": "♦ Frégate d'extraction minière", "groupName_it": "♦ Mining Frigate", "groupName_ja": "♦ 採掘用フリゲート", "groupName_ko": "♦ 채굴 프리깃", "groupName_ru": "♦ Буровые фрегаты", "groupName_zh": "♦ 采矿护卫舰", "groupNameID": 518357, "published": 0, "useBasePrice": 0 }, "1765": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1765, "groupName_de": "♦ Bergbaubarkasse", "groupName_en-us": "♦ Mining Barge", "groupName_es": "♦ Gabarra minera", "groupName_fr": "♦ Barge d'extraction minière", "groupName_it": "♦ Mining Barge", "groupName_ja": "♦ 採掘艦", "groupName_ko": "♦ 채광선", "groupName_ru": "♦ Буровые корабли", "groupName_zh": "♦ 采矿驳船", "groupNameID": 518600, "published": 0, "useBasePrice": 0 }, "1766": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1766, "groupName_de": "♦ Bergbau-Ausgrabungsschiff", "groupName_en-us": "♦ Mining Exhumer", "groupName_es": "♦ Exhumador de minería", "groupName_fr": "♦ Exhumer", "groupName_it": "♦ Mining Exhumer", "groupName_ja": "♦ 特化型採掘艦", "groupName_ko": "♦ 채광용 익스허머", "groupName_ru": "♦ Тяжёлые буровые корабли", "groupName_zh": "♦ 采掘者", "groupNameID": 518601, "published": 0, "useBasePrice": 0 }, "1767": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1767, "groupName_de": "♦ Bergbautransporter", "groupName_en-us": "♦ Mining Hauler", "groupName_es": "♦ Nave de mercancías de minería", "groupName_fr": "♦ Transport minier", "groupName_it": "♦ Mining Hauler", "groupName_ja": "♦ 採掘用輸送業者", "groupName_ko": "♦ 채광용 수송선", "groupName_ru": "♦ Буровые транспорты", "groupName_zh": "♦ 采矿运载舰", "groupNameID": 518602, "published": 0, "useBasePrice": 0 }, "1768": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1768, "groupName_de": "Seeker-Späher", "groupName_en-us": "Seeker Scouts", "groupName_es": "Exploradores seeker", "groupName_fr": "Éclaireurs Seeker", "groupName_it": "Seeker Scouts", "groupName_ja": "シーカー偵察", "groupName_ko": "시커 스카우트", "groupName_ru": "Разведчики Искателей", "groupName_zh": "探寻者 侦察兵", "groupNameID": 518607, "published": 0, "useBasePrice": 0 }, "1769": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1769, "groupName_de": "Schild-Kommandosalven", "groupName_en-us": "Shield Command Burst Charges", "groupName_es": "Cargas de estallido de mando de escudo", "groupName_fr": "Charges de salve commandante de boucliers", "groupName_it": "Shield Command Burst Charges", "groupName_ja": "シールドコマンドバーストチャージ", "groupName_ko": "실드 버스트 차지", "groupName_ru": "Заряды импульсных оптимизаторов силовой защиты", "groupName_zh": "护盾指挥脉冲波弹药", "groupNameID": 518625, "published": 1, "useBasePrice": 0 }, "1770": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1770, "groupName_de": "Kommandosalven", "groupName_en-us": "Command Burst", "groupName_es": "Estallido de mando", "groupName_fr": "Salve commandante", "groupName_it": "Command Burst", "groupName_ja": "コマンドバースト", "groupName_ko": "커맨드 버스트", "groupName_ru": "Импульсные оптимизаторы", "groupName_zh": "指挥脉冲波", "groupNameID": 518819, "published": 1, "useBasePrice": 0 }, "1771": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1771, "groupName_de": "Bergbauvorarbeiter-Salven", "groupName_en-us": "Mining Foreman Burst Charges", "groupName_es": "Cargas de estallido de capataz minero", "groupName_fr": "Charges de salve de contremaîtrise d'extraction minière", "groupName_it": "Mining Foreman Burst Charges", "groupName_ja": "採掘支援バーストチャージ", "groupName_ko": "채광 버스트 차지", "groupName_ru": "Заряды импульсных оптимизаторов добычи сырья", "groupName_zh": "开采先锋脉冲波弹药", "groupNameID": 518824, "published": 1, "useBasePrice": 0 }, "1772": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1772, "groupName_de": "Kampf-Kommandosalven", "groupName_en-us": "Skirmish Command Burst Charges", "groupName_es": "Cargas de estallido de mando de escaramuza", "groupName_fr": "Charges de salve commandante de guérilla", "groupName_it": "Skirmish Command Burst Charges", "groupName_ja": "機動戦コマンドバーストチャージ", "groupName_ko": "스커미시 버스트 차지", "groupName_ru": "Заряды импульсных оптимизаторов боевого маневрирования", "groupName_zh": "游击战指挥脉冲波弹药", "groupNameID": 518822, "published": 1, "useBasePrice": 0 }, "1773": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1773, "groupName_de": "Informations-Kommandosalven", "groupName_en-us": "Information Command Burst Charges", "groupName_es": "Cargas de estallido de mando de información", "groupName_fr": "Charges de salve commandante d'information", "groupName_it": "Information Command Burst Charges", "groupName_ja": "情報戦コマンドバーストチャージ", "groupName_ko": "정보전 버스트 차지", "groupName_ru": "Заряды импульсных оптимизаторов мер РЭБ", "groupName_zh": "信息指挥脉冲波弹药", "groupNameID": 518821, "published": 1, "useBasePrice": 0 }, "1774": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1774, "groupName_de": "Kommandostrahlenmunition: Panzerung", "groupName_en-us": "Armor Command Burst Charges", "groupName_es": "Cargas de estallido de mando de blindaje", "groupName_fr": "Charges de salve commandante de blindage", "groupName_it": "Armor Command Burst Charges", "groupName_ja": "アーマーコマンドバーストチャージ", "groupName_ko": "장갑 버스트 차지", "groupName_ru": "Брони", "groupName_zh": "装甲指挥脉冲波弹药", "groupNameID": 518820, "published": 1, "useBasePrice": 0 }, "1788": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1788, "groupName_de": "Hidden Zenith Drifter", "groupName_en-us": "Hidden Zenith Drifters", "groupName_es": "Drifters de Zenith ocultos", "groupName_fr": "Drifters Hidden Zenith", "groupName_it": "Hidden Zenith Drifters", "groupName_ja": "隠されたゼニスのドリフターズ", "groupName_ko": "숨겨진 제니스 드리프터", "groupName_ru": "Скитальцы «Скрытого зенита»", "groupName_zh": "隐藏的天穹流浪者", "groupNameID": 518827, "published": 0, "useBasePrice": 0 }, "1789": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1789, "groupName_de": "Hidden Zenith Amarr Schlachtschiff", "groupName_en-us": "Hidden Zenith Amarr Battleship", "groupName_es": "Acorazado amarriano de Zenith oculto", "groupName_fr": "Cuirassé amarr Hidden Zenith", "groupName_it": "Hidden Zenith Amarr Battleship", "groupName_ja": "隠されたゼニスのアマー戦艦", "groupName_ko": "숨겨진 제니스 아마르 배틀쉽", "groupName_ru": "Амаррский линкор «Скрытого зенита»", "groupName_zh": "隐藏的天穹艾玛战列舰", "groupNameID": 518828, "published": 0, "useBasePrice": 0 }, "1790": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1790, "groupName_de": "Hidden Zenith Amarr Kreuzer", "groupName_en-us": "Hidden Zenith Amarr Cruiser", "groupName_es": "Crucero de Zenith oculto amarriano", "groupName_fr": "Croiseur amarr Hidden Zenith", "groupName_it": "Hidden Zenith Amarr Cruiser", "groupName_ja": "隠されたゼニスのアマー巡洋艦", "groupName_ko": "숨겨진 제니스 아마르 크루저", "groupName_ru": "Амаррский крейсер «Скрытого зенита»", "groupName_zh": "隐藏的天穹艾玛巡洋舰", "groupNameID": 518829, "published": 0, "useBasePrice": 0 }, "1791": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1791, "groupName_de": "Hidden Zenith Amarr Fregatte", "groupName_en-us": "Hidden Zenith Amarr Frigate", "groupName_es": "Fragata amarriana de Zenith oculta", "groupName_fr": "Frégate amarr Hidden Zenith", "groupName_it": "Hidden Zenith Amarr Frigate", "groupName_ja": "隠されたゼニスのアマーフリゲート", "groupName_ko": "숨겨진 제니스 아마르 프리깃", "groupName_ru": "Амаррский фрегат «Скрытого зенита»", "groupName_zh": "隐藏的天穹艾玛护卫舰", "groupNameID": 518830, "published": 0, "useBasePrice": 0 }, "1792": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1792, "groupName_de": "Hidden Zenith Caldari Schlachtschiff", "groupName_en-us": "Hidden Zenith Caldari Battleship", "groupName_es": "Acorazado caldari de Zenith oculto", "groupName_fr": "Cuirassé caldari Hidden Zenith", "groupName_it": "Hidden Zenith Caldari Battleship", "groupName_ja": "隠されたゼニスのカルダリ戦艦", "groupName_ko": "숨겨진 제니스 칼다리 배틀쉽", "groupName_ru": "Калдарский линкор «Скрытого зенита»", "groupName_zh": "隐藏的天穹加达里战列舰", "groupNameID": 518831, "published": 0, "useBasePrice": 0 }, "1793": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1793, "groupName_de": "Hidden Zenith Caldari Kreuzer", "groupName_en-us": "Hidden Zenith Caldari Cruiser", "groupName_es": "Crucero de Zenith oculto caldari", "groupName_fr": "Croiseur caldari Hidden Zenith", "groupName_it": "Hidden Zenith Caldari Cruiser", "groupName_ja": "隠されたゼニスのカルダリ巡洋艦", "groupName_ko": "숨겨진 제니스 칼다리 크루저", "groupName_ru": "Калдарский крейсер «Скрытого зенита»", "groupName_zh": "隐藏的天穹加达里巡洋舰", "groupNameID": 518832, "published": 0, "useBasePrice": 0 }, "1794": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1794, "groupName_de": "Hidden Zenith Caldari Fregatte", "groupName_en-us": "Hidden Zenith Caldari Frigate", "groupName_es": "Fragata caldari de Zenith oculta", "groupName_fr": "Frégate caldari Hidden Zenith", "groupName_it": "Hidden Zenith Caldari Frigate", "groupName_ja": "隠されたゼニスのカルダリフリゲート", "groupName_ko": "숨겨진 제니스 칼다리 프리깃", "groupName_ru": "Калдарский фрегат «Скрытого зенита»", "groupName_zh": "隐藏的天穹加达里护卫舰", "groupNameID": 518833, "published": 0, "useBasePrice": 0 }, "1795": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1795, "groupName_de": "Hidden Zenith Gallente Schlachtschiff", "groupName_en-us": "Hidden Zenith Gallente Battleship", "groupName_es": "Acorazado gallente de Zenith oculto", "groupName_fr": "Cuirassé gallente Hidden Zenith", "groupName_it": "Hidden Zenith Gallente Battleship", "groupName_ja": "隠されたゼニス・ガレンテ戦艦", "groupName_ko": "숨겨진 제니스 갈란테 배틀쉽", "groupName_ru": "Галлентский линкор «Скрытого зенита»", "groupName_zh": "隐匿天穹盖伦特战列舰", "groupNameID": 518834, "published": 0, "useBasePrice": 0 }, "1796": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1796, "groupName_de": "Hidden Zenith Gallente Kreuzer", "groupName_en-us": "Hidden Zenith Gallente Cruiser", "groupName_es": "Crucero gallente de Zenith oculto", "groupName_fr": "Croiseur gallente Hidden Zenith", "groupName_it": "Hidden Zenith Gallente Cruiser", "groupName_ja": "隠されたゼニスのガレンテ巡洋艦", "groupName_ko": "숨겨진 제니스 갈란테 크루저", "groupName_ru": "Галлентский крейсер «Скрытого зенита»", "groupName_zh": "隐藏的天穹盖伦特巡洋舰", "groupNameID": 518835, "published": 0, "useBasePrice": 0 }, "1797": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1797, "groupName_de": "Hidden Zenith Gallente Fregatte", "groupName_en-us": "Hidden Zenith Gallente Frigate", "groupName_es": "Fragata gallente de Zenith oculta", "groupName_fr": "Frégate gallente Hidden Zenith", "groupName_it": "Hidden Zenith Gallente Frigate", "groupName_ja": "隠されたゼニスのガレンテフリゲート", "groupName_ko": "숨겨진 제니스 갈란테 프리깃", "groupName_ru": "Галлентский фрегат «Скрытого зенита»", "groupName_zh": "隐藏的天穹盖伦特护卫舰", "groupNameID": 518836, "published": 0, "useBasePrice": 0 }, "1798": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1798, "groupName_de": "Hidden Zenith Minmatar Schlachtschiff", "groupName_en-us": "Hidden Zenith Minmatar Battleship", "groupName_es": "Acorazado minmatariano de Zenith oculto", "groupName_fr": "Cuirassé minmatar Hidden Zenith", "groupName_it": "Hidden Zenith Minmatar Battleship", "groupName_ja": "隠されたゼニスのミンマター戦艦", "groupName_ko": "숨겨진 제니스 민마타 배틀쉽", "groupName_ru": "Минматарский линкор «Скрытого зенита»", "groupName_zh": "隐藏的天穹米玛塔尔战列舰", "groupNameID": 518837, "published": 0, "useBasePrice": 0 }, "1799": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1799, "groupName_de": "Hidden Zenith Minmatar Kreuzer", "groupName_en-us": "Hidden Zenith Minmatar Cruiser", "groupName_es": "Crucero minmatariano de Zenith oculto", "groupName_fr": "Croiseur minmatar Hidden Zenith", "groupName_it": "Hidden Zenith Minmatar Cruiser", "groupName_ja": "隠されたゼニスのミンマター巡洋艦", "groupName_ko": "숨겨진 제니스 민마타 크루저", "groupName_ru": "Минматарский крейсер «Скрытого зенита»", "groupName_zh": "隐藏的天穹米玛塔尔巡洋舰", "groupNameID": 518838, "published": 0, "useBasePrice": 0 }, "1800": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1800, "groupName_de": "Hidden Zenith Minmatar Fregatte", "groupName_en-us": "Hidden Zenith Minmatar Frigate", "groupName_es": "Fragata minmatariana de Zenith oculta", "groupName_fr": "Frégate minmatar Hidden Zenith", "groupName_it": "Hidden Zenith Minmatar Frigate", "groupName_ja": "隠されたゼニスのミンマターフリゲート", "groupName_ko": "숨겨진 제니스 민마타 프리깃", "groupName_ru": "Минматарский фрегат «Скрытого зенита»", "groupName_zh": "隐藏的天穹米玛塔尔护卫舰", "groupNameID": 518839, "published": 0, "useBasePrice": 0 }, "1803": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1803, "groupName_de": "♦ Fregatte", "groupName_en-us": "♦ Frigate", "groupName_es": "♦ Fragata", "groupName_fr": "♦ Frégate", "groupName_it": "♦ Frigate", "groupName_ja": "♦ フリゲート", "groupName_ko": "♦ 프리깃", "groupName_ru": "♦ Фрегаты", "groupName_zh": "♦ 护卫舰", "groupNameID": 518967, "published": 0, "useBasePrice": 0 }, "1804": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1804, "groupName_de": "Hidden Zenith Amarr Capital-Schiff", "groupName_en-us": "Hidden Zenith Amarr Capital", "groupName_es": "Nave capital amarriana de Zenith oculta", "groupName_fr": "Capital amarr Hidden Zenith", "groupName_it": "Hidden Zenith Amarr Capital", "groupName_ja": "隠されたゼニスのアマー主力艦", "groupName_ko": "숨겨진 제니스 아마르 캐피탈", "groupName_ru": "Амаррский КБТ «Скрытого зенита»", "groupName_zh": "隐藏的天穹艾玛旗舰", "groupNameID": 518975, "published": 0, "useBasePrice": 0 }, "1805": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1805, "groupName_de": "Hidden Zenith Caldari Capital-Schiff", "groupName_en-us": "Hidden Zenith Caldari Capital", "groupName_es": "Nave capital caldari de Zenith oculta", "groupName_fr": "Capital caldari Hidden Zenith", "groupName_it": "Hidden Zenith Caldari Capital", "groupName_ja": "隠されたゼニスのカルダリ主力艦", "groupName_ko": "숨겨진 제니스 칼다리 캐피탈", "groupName_ru": "Калдарский КБТ «Скрытого зенита»", "groupName_zh": "隐藏的天穹加达里旗舰", "groupNameID": 518976, "published": 0, "useBasePrice": 0 }, "1806": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1806, "groupName_de": "Hidden Zenith Gallente Capital-Schiff", "groupName_en-us": "Hidden Zenith Gallente Capital", "groupName_es": "Nave capital gallente de Zenith oculta", "groupName_fr": "Capital gallente Hidden Zenith", "groupName_it": "Hidden Zenith Gallente Capital", "groupName_ja": "隠されたゼニスのガレンテ主力艦", "groupName_ko": "숨겨진 제니스 갈란테 캐피탈", "groupName_ru": "Галлентский КБТ «Скрытого зенита»", "groupName_zh": "隐藏的天穹盖伦特旗舰", "groupNameID": 518977, "published": 0, "useBasePrice": 0 }, "1807": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1807, "groupName_de": "Hidden Zenith Minmatar Capital-Schiff", "groupName_en-us": "Hidden Zenith Minmatar Capital", "groupName_es": "Nave capital minmatariana de Zenith oculta", "groupName_fr": "Capital minmatar Hidden Zenith", "groupName_it": "Hidden Zenith Minmatar Capital", "groupName_ja": "隠されたゼニスのミンマター主力艦", "groupName_ko": "숨겨진 제니스 민마타 캐피탈", "groupName_ru": "Минматарский КБТ «Скрытого зенита»", "groupName_zh": "隐藏的天穹米玛塔尔旗舰", "groupNameID": 518978, "published": 0, "useBasePrice": 0 }, "1810": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1810, "groupName_de": "Kommandosalven Blaupause", "groupName_en-us": "Command Burst Charge Blueprint", "groupName_es": "Plano de carga de estallido de mando", "groupName_fr": "Plan de construction Charges de salve commandante", "groupName_it": "Command Burst Charge Blueprint", "groupName_ja": "コマンドバーストチャージブループリント", "groupName_ko": "커맨드 버스트 차지 블루프린트", "groupName_ru": "Чертежи зарядов импульсных оптимизаторов", "groupName_zh": "指挥脉冲波弹药蓝图", "groupNameID": 519234, "published": 1, "useBasePrice": 1 }, "1812": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1812, "groupName_de": "Kommandostrahlen Blaupause", "groupName_en-us": "Command Burst Blueprint", "groupName_es": "Plano de estallido de mando", "groupName_fr": "Plan de construction Salve de commandement", "groupName_it": "Command Burst Blueprint", "groupName_ja": "コマンドバーストのブループリント", "groupName_ko": "커맨드 버스트 블루프린트", "groupName_ru": "Чертежи импульсных оптимизаторов", "groupName_zh": "指挥脉冲波蓝图", "groupNameID": 520609, "published": 1, "useBasePrice": 1 }, "1813": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1813, "groupName_de": "♦ Kreuzer", "groupName_en-us": "♦ Cruiser", "groupName_es": "♦ Crucero", "groupName_fr": "♦ Croiseur", "groupName_it": "♦ Cruiser", "groupName_ja": "♦ 巡洋艦", "groupName_ko": "♦ 크루저", "groupName_ru": "♦ Крейсеры", "groupName_zh": "♦ 巡洋舰", "groupNameID": 521274, "published": 0, "useBasePrice": 0 }, "1814": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1814, "groupName_de": "♦ Schlachtschiff", "groupName_en-us": "♦ Battleship", "groupName_es": "♦ Acorazado", "groupName_fr": "♦ Cuirassé", "groupName_it": "♦ Battleship", "groupName_ja": "♦ 戦艦", "groupName_ko": "♦ 배틀쉽", "groupName_ru": "♦ Линкоры", "groupName_zh": "♦ 战列舰", "groupNameID": 521275, "published": 0, "useBasePrice": 0 }, "1815": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1815, "groupName_de": "Titan-Phänomengenerator", "groupName_en-us": "Titan Phenomena Generator", "groupName_es": "Generador de fenómenos titán", "groupName_fr": "Générateur d'effet pour titan", "groupName_it": "Titan Phenomena Generator", "groupName_ja": "タイタンフェノメナジェネレーター", "groupName_ko": "타이탄 특이점 생성기", "groupName_ru": "Генератор воздействия титана", "groupName_zh": "泰坦现象发生器", "groupNameID": 521648, "published": 1, "useBasePrice": 0 }, "1816": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1816, "groupName_de": "Struktur: Ingenieursanlage M - Ausrüstung ME", "groupName_en-us": "Structure Engineering Rig M - Equipment ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de equipo", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM équipements", "groupName_it": "Structure Engineering Rig M - Equipment ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 装置ME", "groupName_ko": "구조물 엔지니어링 리그 M - 장비 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства оборудования", "groupName_zh": "建筑工程中型改装件 - 装备材料效率", "groupNameID": 521978, "published": 1, "useBasePrice": 0 }, "1818": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1818, "groupName_de": "Tresore", "groupName_en-us": "Strong Boxes", "groupName_es": "Cajas fuertes", "groupName_fr": "Coffres-forts", "groupName_it": "Strong Boxes", "groupName_ja": "金庫", "groupName_ko": "금고", "groupName_ru": "Спецконтейнеры", "groupName_zh": "保险柜", "groupNameID": 521973, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1819": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1819, "groupName_de": "Struktur: Ingenieursanlage M - Ausrüstung ZE", "groupName_en-us": "Structure Engineering Rig M - Equipment TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de equipo", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH équipements", "groupName_it": "Structure Engineering Rig M - Equipment TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 装置TE", "groupName_ko": "구조물 엔지니어링 리그 M - 장비 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства боеприпасов и зарядов", "groupName_zh": "建筑工程中型改装件 - 装备时间效率", "groupNameID": 521979, "published": 1, "useBasePrice": 0 }, "1820": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1820, "groupName_de": "Struktur: Ingenieursanlage M - Munition ME", "groupName_en-us": "Structure Engineering Rig M - Ammunition ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de munición", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM munitions", "groupName_it": "Structure Engineering Rig M - Ammunition ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 弾薬ME", "groupName_ko": "구조물 엔지니어링 리그 M - 탄약 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства боеприпасов и зарядов", "groupName_zh": "建筑工程中型改装件 - 弹药材料效率", "groupNameID": 521980, "published": 1, "useBasePrice": 0 }, "1821": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1821, "groupName_de": "Struktur: Ingenieursanlage M - Munition ZE", "groupName_en-us": "Structure Engineering Rig M - Ammunition TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de munición", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH munitions", "groupName_it": "Structure Engineering Rig M - Ammunition TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 弾薬TE", "groupName_ko": "구조물 엔지니어링 리그 M - 탄약 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства боеприпасов и зарядов", "groupName_zh": "建筑工程中型改装件 - 弹药时间效率", "groupNameID": 521981, "published": 1, "useBasePrice": 0 }, "1822": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1822, "groupName_de": "Struktur: Ingenieursanlage L - Drohnen- und Jäger ME", "groupName_en-us": "Structure Engineering Rig M - Drone and Fighter ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de caza y dron", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM drones et chasseurs", "groupName_it": "Structure Engineering Rig M - Drone and Fighter ME", "groupName_ja": "ストラクチャエンジニアリングリグM - ドローンと戦闘機ME", "groupName_ko": "구조물 엔지니어링 리그 M - 드론 및 파이터 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства дронов и истребителей", "groupName_zh": "建筑工程中型改装件 - 无人机和铁骑舰载机材料效率", "groupNameID": 521982, "published": 1, "useBasePrice": 0 }, "1823": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1823, "groupName_de": "Struktur: Ingenieursanlage L - Drohnen- und Jäger ZE", "groupName_en-us": "Structure Engineering Rig M - Drone and Fighter TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de caza y dron", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH drones et chasseurs", "groupName_it": "Structure Engineering Rig M - Drone and Fighter TE", "groupName_ja": "ストラクチャエンジニアリングリグM - ドローンと戦闘機TE", "groupName_ko": "구조물 엔지니어링 리그 M - 드론 및 파이터 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства дронов и истребителей", "groupName_zh": "建筑工程中型改装件 - 无人机和铁骑舰载机时间效率", "groupNameID": 521983, "published": 1, "useBasePrice": 0 }, "1824": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1824, "groupName_de": "Struktur: Ingenieursanlage M - Kleines Standardschiff ME", "groupName_en-us": "Structure Engineering Rig M - Basic Small Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave pequeña básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM petits vaisseaux standards", "groupName_it": "Structure Engineering Rig M - Basic Small Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準小型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 소형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства малых типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础小型舰船材料效率", "groupNameID": 521984, "published": 1, "useBasePrice": 0 }, "1825": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1825, "groupName_de": "Struktur: Ingenieursanlage M - Kleines Standardschiff ZE", "groupName_en-us": "Structure Engineering Rig M - Basic Small Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave pequeña básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH petits vaisseaux standards", "groupName_it": "Structure Engineering Rig M - Basic Small Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準小型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 소형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства малых типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础小型舰船时间效率", "groupNameID": 521985, "published": 1, "useBasePrice": 0 }, "1826": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1826, "groupName_de": "Struktur: Ingenieursanlage M - Mittelgroßes Standardschiff ME", "groupName_en-us": "Structure Engineering Rig M - Basic Medium Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave mediana básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM vaisseaux intermédiaires standards", "groupName_it": "Structure Engineering Rig M - Basic Medium Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準中型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 중형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства средних типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础中型舰船材料效率", "groupNameID": 521986, "published": 1, "useBasePrice": 0 }, "1827": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1827, "groupName_de": "Struktur: Ingenieursanlage M - Mittelgroßes Standardschiff ZE", "groupName_en-us": "Structure Engineering Rig M - Basic Medium Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave mediana básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH vaisseaux intermédiaires standards", "groupName_it": "Structure Engineering Rig M - Basic Medium Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準中型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 중형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства средних типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础中型舰船时间效率", "groupNameID": 521987, "published": 1, "useBasePrice": 0 }, "1828": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1828, "groupName_de": "Struktur: Ingenieursanlage M - Großes Standardschiff ME", "groupName_en-us": "Structure Engineering Rig M - Basic Large Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave grande básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM grands vaisseaux standards", "groupName_it": "Structure Engineering Rig M - Basic Large Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準大型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 대형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства больших типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础大型舰船材料效率", "groupNameID": 521988, "published": 1, "useBasePrice": 0 }, "1829": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1829, "groupName_de": "Struktur: Ingenieursanlage M - Großes Standardschiff ZE", "groupName_en-us": "Structure Engineering Rig M - Basic Large Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave grande básica", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH grands vaisseaux standards", "groupName_it": "Structure Engineering Rig M - Basic Large Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準大型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 대형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства больших типовых кораблей", "groupName_zh": "建筑工程中型改装件 - 基础大型舰船时间效率", "groupNameID": 521989, "published": 1, "useBasePrice": 0 }, "1830": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1830, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches kleines Schiff ME", "groupName_en-us": "Structure Engineering Rig M - Advanced Small Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave pequeña avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM petits vaisseaux avancés", "groupName_it": "Structure Engineering Rig M - Advanced Small Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新小型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 소형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства малых специализированных кораблей", "groupName_zh": "建筑工程中型改装件 - 高级小型舰船材料效率", "groupNameID": 521990, "published": 1, "useBasePrice": 0 }, "1831": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1831, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches kleines Schiff ZE", "groupName_en-us": "Structure Engineering Rig M - Advanced Small Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave pequeña avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH petits vaisseaux avancés", "groupName_it": "Structure Engineering Rig M - Advanced Small Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新小型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 소형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства малых специализированных кораблей", "groupName_zh": "建筑工程中型改装件 - 高级小型舰船时间效率", "groupNameID": 521991, "published": 1, "useBasePrice": 0 }, "1832": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1832, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches mittelgroßes Schiff ME", "groupName_en-us": "Structure Engineering Rig M - Advanced Medium Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave mediana avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM vaisseaux intermédiaires avancés", "groupName_it": "Structure Engineering Rig M - Advanced Medium Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新中型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 중형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства средних специализированных кораблей", "groupName_zh": "建筑工程改装件中型 - 高级中型舰船材料效率", "groupNameID": 521992, "published": 1, "useBasePrice": 0 }, "1833": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1833, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches mittelgroßes Schiff ZE", "groupName_en-us": "Structure Engineering Rig M - Advanced Medium Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave mediana avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH vaisseaux intermédiaires avancés", "groupName_it": "Structure Engineering Rig M - Advanced Medium Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新中型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 중형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства средних специализированных кораблей", "groupName_zh": "建筑工程改装件中型 - 高级中型舰船时间效率", "groupNameID": 521993, "published": 1, "useBasePrice": 0 }, "1834": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1834, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches großes Schiff ME", "groupName_en-us": "Structure Engineering Rig M - Advanced Large Ship ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de nave grande avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM grands vaisseaux avancés", "groupName_it": "Structure Engineering Rig M - Advanced Large Ship ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新大型艦ME", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 대형 함선 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства больших специализированных кораблей", "groupName_zh": "建筑工程中型改装件 - 高级大型舰船材料效率", "groupNameID": 521994, "published": 1, "useBasePrice": 0 }, "1835": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1835, "groupName_de": "Struktur: Ingenieursanlage M - Fortschrittliches großes Schiff ZE", "groupName_en-us": "Structure Engineering Rig M - Advanced Large Ship TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de nave grande avanzada", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH grands vaisseaux avancés", "groupName_it": "Structure Engineering Rig M - Advanced Large Ship TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新大型艦TE", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 대형 함선 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства больших специализированных кораблей", "groupName_zh": "建筑工程中型改装件 - 高级大型舰船时间效率", "groupNameID": 521995, "published": 1, "useBasePrice": 0 }, "1836": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1836, "groupName_de": "Struktur: Ingenieursanlage M - Hochentwickelte Komponente ME", "groupName_en-us": "Structure Engineering Rig M - Advanced Component ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de componente avanzado", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM composants avancés", "groupName_it": "Structure Engineering Rig M - Advanced Component ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新型コンポーネントME", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 부품 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства усовершенствованных компонентов", "groupName_zh": "建筑工程中型改装件 - 高级组件材料效率", "groupNameID": 521998, "published": 1, "useBasePrice": 0 }, "1837": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1837, "groupName_de": "Struktur: Ingenieursanlage M - Hochentwickelte Komponente ZE", "groupName_en-us": "Structure Engineering Rig M - Advanced Component TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de componente avanzado", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH composants avancés", "groupName_it": "Structure Engineering Rig M - Advanced Component TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 最新型コンポーネントTE", "groupName_ko": "구조물 엔지니어링 리그 M - 상급 부품 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства усовершенствованных компонентов", "groupName_zh": "建筑工程中型改装件 - 高级组件时间效率", "groupNameID": 521999, "published": 1, "useBasePrice": 0 }, "1838": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1838, "groupName_de": "Struktur: Ingenieursanlage M - Standard-Capital-Komponente ZE", "groupName_en-us": "Structure Engineering Rig M - Basic Capital Component TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de componente de nave capital básico", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH composants capitaux standards", "groupName_it": "Structure Engineering Rig M - Basic Capital Component TE", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準キャピタルコンポーネントTE", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 캐피탈 부품 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства основных компонентов КБТ", "groupName_zh": "建筑工程中型改装件 - 普通旗舰组件时间效率", "groupNameID": 522000, "published": 1, "useBasePrice": 0 }, "1839": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1839, "groupName_de": "Struktur: Ingenieursanlage M - Standard-Capital-Komponente ME", "groupName_en-us": "Structure Engineering Rig M - Basic Capital Component ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de componente de nave capital básico", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM composants capitaux standards", "groupName_it": "Structure Engineering Rig M - Basic Capital Component ME", "groupName_ja": "ストラクチャエンジニアリングリグM - 標準キャピタルコンポーネントME", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 캐피탈 부품 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства основных компонентов КБТ", "groupName_zh": "建筑工程中型改装件 - 普通旗舰组件材料效率", "groupNameID": 522001, "published": 1, "useBasePrice": 0 }, "1840": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1840, "groupName_de": "Struktur: Ingenieursanlage M - Struktur ME", "groupName_en-us": "Structure Engineering Rig M - Structure ME", "groupName_es": "Complemento de ingeniería para estructuras (M): EM de estructura", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PM structures", "groupName_it": "Structure Engineering Rig M - Structure ME", "groupName_ja": "ストラクチャエンジニアリングリグM - ストラクチャME", "groupName_ko": "구조물 엔지니어링 리그 M - 구조물 자원효율성", "groupName_ru": "Промышленный модификатор средних сооружений - материалоэффективность производства сооружений", "groupName_zh": "建筑工程中型改装件 - 建筑材料效率", "groupNameID": 522002, "published": 1, "useBasePrice": 0 }, "1841": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1841, "groupName_de": "Struktur: Ingenieursanlage M - Struktur ZE", "groupName_en-us": "Structure Engineering Rig M - Structure TE", "groupName_es": "Complemento de ingeniería para estructuras (M): ET de estructura", "groupName_fr": "Optimisation d'ingénierie M (Structure) – PH structures", "groupName_it": "Structure Engineering Rig M - Structure TE", "groupName_ja": "ストラクチャエンジニアリングリグM - ストラクチャTE", "groupName_ko": "구조물 엔지니어링 리그 M - 구조물 시간효율성", "groupName_ru": "Промышленный модификатор средних сооружений - скорость производства сооружений", "groupName_zh": "建筑工程中型改装件 - 建筑时间效率", "groupNameID": 522003, "published": 1, "useBasePrice": 0 }, "1842": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1842, "groupName_de": "Struktur: Ingenieursanlage M - Erfindungskostenoptimierung", "groupName_en-us": "Structure Engineering Rig M - Invention Cost Optimization", "groupName_es": "Complemento de ingeniería para estructuras (M): optimización del coste de invención", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Optimisation des coûts d'invention", "groupName_it": "Structure Engineering Rig M - Invention Cost Optimization", "groupName_ja": "ストラクチャエンジニアリングリグM - 発明コスト最適化", "groupName_ko": "구조물 엔지니어링 리그 M - 기본 비용 최적화", "groupName_ru": "Промышленный модификатор средних сооружений - оптимизация стоимости модернизации", "groupName_zh": "建筑工程中型改装件 - 发明成本优化", "groupNameID": 522026, "published": 1, "useBasePrice": 0 }, "1843": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1843, "groupName_de": "Struktur: Ingenieursanlage M - Erfindungsbeschleuniger", "groupName_en-us": "Structure Engineering Rig M - Invention Accelerator", "groupName_es": "Complemento de ingeniería para estructuras (M): aceleración de invención", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Accélérateur d'invention", "groupName_it": "Structure Engineering Rig M - Invention Accelerator", "groupName_ja": "ストラクチャエンジニアリングリグM - 発明加速装置", "groupName_ko": "구조물 엔지니어링 리그 M - 인벤션 가속", "groupName_ru": "Промышленный модификатор средних сооружений - скорость модернизации", "groupName_zh": "建筑工程中型改装件 - 发明加速", "groupNameID": 522035, "published": 1, "useBasePrice": 0 }, "1844": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1844, "groupName_de": "Struktur: Ingenieursanlage M - ME Forschungskostenoptimierung", "groupName_en-us": "Structure Engineering Rig M - ME Research Cost Optimization", "groupName_es": "Complemento de ingeniería para estructuras (M): optimización del coste de investigación de EM", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Optimisation des coûts de recherche en PM", "groupName_it": "Structure Engineering Rig M - ME Research Cost Optimization", "groupName_ja": "ストラクチャエンジニアリングリグM - ME研究コスト最適化", "groupName_ko": "구조물 엔지니어링 리그 M - 자원효율성 연구 비용 최적화", "groupName_ru": "Промышленный модификатор средних сооружений - оптимизация стоимости проектов по повышению материалоэффективности", "groupName_zh": "建筑工程中型改装件 - 材料效率研究成本优化", "groupNameID": 522036, "published": 1, "useBasePrice": 0 }, "1845": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1845, "groupName_de": "Struktur: Ingenieursanlage M - ME Forschungsbeschleuniger", "groupName_en-us": "Structure Engineering Rig M - ME Research Accelerator", "groupName_es": "Complemento de ingeniería para estructuras (M): aceleración de investigación de EM", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Accélérateur de recherche en PM", "groupName_it": "Structure Engineering Rig M - ME Research Accelerator", "groupName_ja": "ストラクチャエンジニアリングリグM - ME研究加速装置", "groupName_ko": "구조물 엔지니어링 리그 M - 자원효율성 연구 가속", "groupName_ru": "Промышленный модификатор средних сооружений - ускорение проектов по повышению материалоэффективности производства", "groupName_zh": "建筑工程中型改装件 - 材料效率研究加速", "groupNameID": 522037, "published": 1, "useBasePrice": 0 }, "1846": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1846, "groupName_de": "Struktur: Ingenieursanlage M - ZE Forschungskostenoptimierung", "groupName_en-us": "Structure Engineering Rig M - TE Research Cost Optimization", "groupName_es": "Complemento de ingeniería para estructuras (M): optimización del coste de investigación de ET", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Optimisation des coûts de recherche en PH", "groupName_it": "Structure Engineering Rig M - TE Research Cost Optimization", "groupName_ja": "ストラクチャエンジニアリングリグM - TE研究コスト最適化", "groupName_ko": "구조물 엔지니어링 리그 M - 시간효율성 연구 비용 최적화", "groupName_ru": "Промышленный модификатор средних сооружений - оптимизация стоимости проектов по повышению стоимости производства", "groupName_zh": "建筑工程中型改装件 - 时间效率研究成本优化", "groupNameID": 522038, "published": 1, "useBasePrice": 0 }, "1847": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1847, "groupName_de": "Struktur: Ingenieursanlage M - TE Forschungsbeschleuniger", "groupName_en-us": "Structure Engineering Rig M - TE Research Accelerator", "groupName_es": "Complemento de ingeniería para estructuras (M): acelerador de investigación de ET", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Accélérateur de recherche en PH", "groupName_it": "Structure Engineering Rig M - TE Research Accelerator", "groupName_ja": "ストラクチャエンジニアリングリグM - TE研究加速装置", "groupName_ko": "구조물 엔지니어링 리그 M - 시간효율성 연구 가속", "groupName_ru": "Промышленный модификатор средних сооружений - ускорение проектов по повышению скорости производства", "groupName_zh": "建筑工程中型改装件 - 时间效率研究加速", "groupNameID": 522039, "published": 1, "useBasePrice": 0 }, "1848": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1848, "groupName_de": "Struktur: Ingenieursanlage M - Blaupausenkopie-Kostenoptimierung", "groupName_en-us": "Structure Engineering Rig M - Blueprint Copy Cost Optimization", "groupName_es": "Complemento de ingeniería para estructuras (M): optimización de coste de copia de planos", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Optimisation des coûts de copie des plans de construction", "groupName_it": "Structure Engineering Rig M - Blueprint Copy Cost Optimization", "groupName_ja": "ストラクチャエンジニアリングリグM - ブループリントコピーコスト最適化", "groupName_ko": "구조물 엔지니어링 리그 M - 블루프린트 복제 비용 최적화", "groupName_ru": "Промышленный модификатор средних сооружений - оптимизация стоимости копирования чертежей", "groupName_zh": "建筑工程中型改装件 - 蓝图拷贝成本优化", "groupNameID": 522040, "published": 1, "useBasePrice": 0 }, "1849": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1849, "groupName_de": "Struktur: Ingenieursanlage M - Blaupausenkopie-Beschleuniger", "groupName_en-us": "Structure Engineering Rig M - Blueprint Copy Accelerator", "groupName_es": "Complemento de ingeniería para estructuras (M): acelerador de copia de planos", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Accélérateur de copie de plan de construction", "groupName_it": "Structure Engineering Rig M - Blueprint Copy Accelerator", "groupName_ja": "ストラクチャエンジニアリングリグM - ブループリントコピー加速装置", "groupName_ko": "구조물 엔지니어링 리그 M - 블루프린트 복제 가속", "groupName_ru": "Промышленный модификатор средних сооружений - ускорение копирования чертежей", "groupName_zh": "建筑工程中型改装件 - 蓝图拷贝加速", "groupNameID": 522041, "published": 1, "useBasePrice": 0 }, "1850": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1850, "groupName_de": "Struktur: Ingenieursanlage L - Ausrüstungseffizienz", "groupName_en-us": "Structure Engineering Rig L - Equipment Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de equipo", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Efficacité industrielle équipements", "groupName_it": "Structure Engineering Rig L - Equipment Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 装置効率", "groupName_ko": "구조물 엔지니어링 리그 L - 장비 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства оборудования", "groupName_zh": "建筑工程大型改装件 - 装备效率", "groupNameID": 522042, "published": 1, "useBasePrice": 0 }, "1851": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1851, "groupName_de": "Struktur: Ingenieursanlage L - Munitionseffizienz", "groupName_en-us": "Structure Engineering Rig L - Ammunition Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de munición", "groupName_fr": "Optimisation d'ingénierie M (Structure) – Efficacité industrielle munitions", "groupName_it": "Structure Engineering Rig L - Ammunition Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 弾薬効率", "groupName_ko": "구조물 엔지니어링 리그 L - 탄약 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства боеприпасов и зарядов", "groupName_zh": "建筑工程大型改装件 - 弹药效率", "groupNameID": 522054, "published": 1, "useBasePrice": 0 }, "1852": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1852, "groupName_de": "Struktur: Ingenieursanlage L - Drohnen- und Jägereffizienz", "groupName_en-us": "Structure Engineering Rig L - Drone and Fighter Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de caza y dron", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle drones et chasseurs", "groupName_it": "Structure Engineering Rig L - Drone and Fighter Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - ドローンと戦闘機効率", "groupName_ko": "구조물 엔지니어링 리그 L - 드론 및 파이터 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства дронов и истребителей", "groupName_zh": "建筑工程大型改装件 - 无人机和铁骑舰载机效率", "groupNameID": 522057, "published": 1, "useBasePrice": 0 }, "1853": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1853, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz kleiner Standardschiffe", "groupName_en-us": "Structure Engineering Rig L - Basic Small Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave pequeña básica", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle petits vaisseaux standards", "groupName_it": "Structure Engineering Rig L - Basic Small Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 標準小型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 기본 소형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства малых типовых кораблей", "groupName_zh": "建筑工程大型改装件 - 基础小型舰船效率", "groupNameID": 522058, "published": 1, "useBasePrice": 0 }, "1854": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1854, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz mittelgroßer Standardschiffe", "groupName_en-us": "Structure Engineering Rig L - Basic Medium Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave mediana básica", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle vaisseaux intermédiaires standards", "groupName_it": "Structure Engineering Rig L - Basic Medium Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 標準中型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 기본 중형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства средних типовых кораблей", "groupName_zh": "建筑工程大型改装件 - 基础中型舰船效率", "groupNameID": 522059, "published": 1, "useBasePrice": 0 }, "1855": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1855, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz großer Standardschiffe", "groupName_en-us": "Structure Engineering Rig L - Basic Large Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave grande básica", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle grands vaisseaux standards", "groupName_it": "Structure Engineering Rig L - Basic Large Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 標準大型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 기본 대형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства больших типовых кораблей", "groupName_zh": "建筑工程大型改装件 - 基础大型舰船效率", "groupNameID": 522062, "published": 1, "useBasePrice": 0 }, "1856": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1856, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz kleiner fortschrittlicher Schiffe", "groupName_en-us": "Structure Engineering Rig L - Advanced Small Ship Efficiency", "groupName_es": "Complemento de ingeniería de estructuras grande: eficiencia de naves pequeñas avanzada", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle petits vaisseaux avancés", "groupName_it": "Structure Engineering Rig L - Advanced Small Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 最新小型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 상급 소형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства малых типовых кораблей", "groupName_zh": "建筑工程大型改装件 - 高级小型舰船效率", "groupNameID": 522063, "published": 1, "useBasePrice": 0 }, "1857": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1857, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz mittelgroßer fortschrittlicher Schiffe", "groupName_en-us": "Structure Engineering Rig L - Advanced Medium Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave mediana avanzada", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle vaisseaux intermédiaires avancés", "groupName_it": "Structure Engineering Rig L - Advanced Medium Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 最新中型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 상급 중형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства средних специализированных кораблей", "groupName_zh": "建筑工程大型改装件 - 高级中型舰船效率", "groupNameID": 522064, "published": 1, "useBasePrice": 0 }, "1858": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1858, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz großer fortschrittlicher Schiffe", "groupName_en-us": "Structure Engineering Rig L - Advanced Large Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave grande avanzada", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle grands vaisseaux avancés", "groupName_it": "Structure Engineering Rig L - Advanced Large Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 最新大型艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 상급 대형 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства специализированных больших кораблей", "groupName_zh": "建筑工程大型改装件 - 高级大型舰船效率", "groupNameID": 522065, "published": 1, "useBasePrice": 0 }, "1859": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1859, "groupName_de": "Struktur: Ingenieursanlage L - Capital-Schiffseffizienz", "groupName_en-us": "Structure Engineering Rig L - Capital Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de nave capital", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle vaisseaux capitaux", "groupName_it": "Structure Engineering Rig L - Capital Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 母艦効率", "groupName_ko": "구조물 엔지니어링 리그 L - 캐피탈 함선 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства КБТ", "groupName_zh": "建筑工程大型改装件 - 旗舰效率", "groupNameID": 522066, "published": 1, "useBasePrice": 0 }, "1860": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1860, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz hochentwickelter Komponenten", "groupName_en-us": "Structure Engineering Rig L - Advanced Component Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de componente avanzado", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle composants avancés", "groupName_it": "Structure Engineering Rig L - Advanced Component Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 最新型コンポーネント効率", "groupName_ko": "구조물 엔지니어링 리그 L - 상급 부품 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства усовершенствованных компонентов", "groupName_zh": "建筑工程大型改装件 - 高级组件效率", "groupNameID": 522067, "published": 1, "useBasePrice": 0 }, "1861": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1861, "groupName_de": "Struktur: Ingenieursanlage L - Effizienz von Standard-Capital-Komponenten", "groupName_en-us": "Structure Engineering Rig L - Basic Capital Component Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia de componente de nave capital básica", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficience industrielle composants capitaux standards", "groupName_it": "Structure Engineering Rig L - Basic Capital Component Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - 標準型キャピタルコンポーネント効率", "groupName_ko": "구조물 엔지니어링 리그 L - 기본 캐피탈 부품 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства типовых компонентов КБТ", "groupName_zh": "建筑工程大型改装件 - 基础旗舰组件效率", "groupNameID": 522068, "published": 1, "useBasePrice": 0 }, "1862": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1862, "groupName_de": "Struktur: Ingenieursanlage L - Struktureffizienz", "groupName_en-us": "Structure Engineering Rig L - Structure Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (G): eficiencia para estructura", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Efficacité industrielle structures", "groupName_it": "Structure Engineering Rig L - Structure Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグL - ストラクチャ効率", "groupName_ko": "구조물 엔지니어링 리그 L - 구조물 효율성", "groupName_ru": "Промышленный модификатор больших сооружений - эффективность производства сооружений", "groupName_zh": "建筑工程大型改装件 - 建筑效率", "groupNameID": 522069, "published": 1, "useBasePrice": 0 }, "1863": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1863, "groupName_de": "Struktur: Ingenieursanlage L - Erfindungsoptimierung", "groupName_en-us": "Structure Engineering Rig L - Invention Optimization", "groupName_es": "Complemento de ingeniería para estructuras (G): optimización de invención", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Optimisation d'invention", "groupName_it": "Structure Engineering Rig L - Invention Optimization", "groupName_ja": "ストラクチャエンジニアリングリグL - 発明最適化", "groupName_ko": "구조물 엔지니어링 리그 L - 기본 최적화", "groupName_ru": "Промышленный модификатор больших сооружений - оптимизация модернизации", "groupName_zh": "建筑工程大型改装件 - 发明优化", "groupNameID": 522070, "published": 1, "useBasePrice": 0 }, "1864": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1864, "groupName_de": "Struktur: Ingenieursanlage L - ME Forschungsoptimierung", "groupName_en-us": "Structure Engineering Rig L - ME Research Optimization", "groupName_es": "Complemento de ingeniería para estructuras (G): optimización de investigación EM", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Optimisation de recherche en PM", "groupName_it": "Structure Engineering Rig L - ME Research Optimization", "groupName_ja": "ストラクチャエンジニアリングリグL - ME研究最適化", "groupName_ko": "구조물 엔지니어링 리그 L - 자원효율성 연구 최적화", "groupName_ru": "Промышленный модификатор больших сооружений - оптимизация проектов по повышению материалоэффективности", "groupName_zh": "建筑工程大型改装件 - 材料效率研究优化", "groupNameID": 522071, "published": 1, "useBasePrice": 0 }, "1865": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1865, "groupName_de": "Struktur: Ingenieursanlage L - ZE Forschungsoptimierung", "groupName_en-us": "Structure Engineering Rig L - TE Research Optimization", "groupName_es": "Complemento de ingeniería para estructuras (G): optimización de investigación ET", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Optimisation de recherche en PH", "groupName_it": "Structure Engineering Rig L - TE Research Optimization", "groupName_ja": "ストラクチャエンジニアリングリグL - TE研究最適化", "groupName_ko": "구조물 엔지니어링 리그 L - 시간효율성 연구 최적화", "groupName_ru": "Промышленный модификатор больших сооружений - оптимизация проектов по повышению скорости производства", "groupName_zh": "建筑工程大型改装件 - 时间效率研究优化", "groupNameID": 522072, "published": 1, "useBasePrice": 0 }, "1866": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1866, "groupName_de": "Struktur: Ingenieursanlage L - Blaupausenkopie-Optimierung", "groupName_en-us": "Structure Engineering Rig L - Blueprint Copy Optimization", "groupName_es": "Complemento de ingeniería para estructuras (G): optimización de copia de plano", "groupName_fr": "Optimisation d'ingénierie L (Structure) – Optimisation des copies de plans de construction", "groupName_it": "Structure Engineering Rig L - Blueprint Copy Optimization", "groupName_ja": "ストラクチャエンジニアリングリグL - ブループリントコピー最適化", "groupName_ko": "구조물 엔지니어링 리그 L - 블루프린트 Copy 최적화", "groupName_ru": "Промышленный модификатор больших сооружений - оптимизация копирования чертежей", "groupName_zh": "建筑工程大型改装件 - 蓝图拷贝优化", "groupNameID": 522073, "published": 1, "useBasePrice": 0 }, "1867": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1867, "groupName_de": "Struktur: Ingenieursanlage XL - Ausrüstungs- und Kosumgütereffizienz", "groupName_en-us": "Structure Engineering Rig XL - Equipment and Consumable Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (XL): eficiencia de consumible y equipo", "groupName_fr": "Optimisation d'ingénierie XL (Structure) – Efficience industrielle équipements et consommables", "groupName_it": "Structure Engineering Rig XL - Equipment and Consumable Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグXL - 機材と消耗品効率", "groupName_ko": "구조물 엔지니어링 리그 XL - 장비 및 소모품 효율성", "groupName_ru": "Промышленный модификатор сверхбольших сооружений - эффективность производства оборудования и расходников", "groupName_zh": "建筑工程超大型改装件 - 装备和消费品效率", "groupNameID": 522074, "published": 1, "useBasePrice": 0 }, "1868": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1868, "groupName_de": "Struktur: Ingenieursanlage XL - Schiffseffizienz", "groupName_en-us": "Structure Engineering Rig XL - Ship Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (XL): eficiencia de nave", "groupName_fr": "Optimisation d'ingénierie XL (Structure) – Efficience industrielle vaisseaux", "groupName_it": "Structure Engineering Rig XL - Ship Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグXL - 艦船効率", "groupName_ko": "구조물 엔지니어링 리그 XL - 함선 효율성", "groupName_ru": "Промышленный модификатор сверхбольших сооружений - эффективность производства кораблей", "groupName_zh": "建筑工程超大型改装件 - 舰船效率", "groupNameID": 522075, "published": 1, "useBasePrice": 0 }, "1869": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1869, "groupName_de": "Struktur: Ingenieursanlage XL - Ausrüstungs- und Komponenteneffizienz", "groupName_en-us": "Structure Engineering Rig XL - Structure and Component Efficiency", "groupName_es": "Complemento de ingeniería para estructuras (XL): eficiencia de componente y estructura", "groupName_fr": "Optimisation d'ingénierie XL (Structure) – Efficience industrielle structures et composants", "groupName_it": "Structure Engineering Rig XL - Structure and Component Efficiency", "groupName_ja": "ストラクチャエンジニアリングリグXL - ストラクチャとコンポーネント効率", "groupName_ko": "구조물 엔지니어링 리그 XL - 구조물 및 부품 효율성", "groupName_ru": "Промышленный модификатор сверхбольших сооружений - эффективность производства сооружений и компонентов", "groupName_zh": "建筑工程超大型改装件 - 建筑和组件效率", "groupNameID": 522076, "published": 1, "useBasePrice": 0 }, "1870": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1870, "groupName_de": "Struktur: Ingenieursanlage XL - Laboroptimierung", "groupName_en-us": "Structure Engineering Rig XL - Laboratory Optimization", "groupName_es": "Complemento de ingeniería para estructuras (XL): optimización de laboratorio", "groupName_fr": "Optimisation d'ingénierie XL (Structure) – Optimisation des laboratoires", "groupName_it": "Structure Engineering Rig XL - Laboratory Optimization", "groupName_ja": "ストラクチャエンジニアリングリグXL - 研究施設最適化", "groupName_ko": "구조물 엔지니어링 리그 XL - 연구실 최적화", "groupName_ru": "Промышленный модификатор сверхбольших сооружений - оптимизация проектов", "groupName_zh": "建筑工程超大型改装件 - 实验室优化", "groupNameID": 522077, "published": 1, "useBasePrice": 0 }, "1872": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1872, "groupName_de": "Struktureinheiten", "groupName_en-us": "Structure Entities", "groupName_es": "Entidades de estructura", "groupName_fr": "Entités de structure", "groupName_it": "Structure Entities", "groupName_ja": "ストラクチャーエンティティ", "groupName_ko": "구조물 객체", "groupName_ru": "Сооружения", "groupName_zh": "建筑实体", "groupNameID": 523854, "published": 0, "useBasePrice": 0 }, "1875": { "anchorable": 0, "anchored": 0, "categoryID": 5, "fittableNonSingleton": 0, "groupID": 1875, "groupName_de": "PLEX", "groupName_en-us": "PLEX", "groupName_es": "PLEX", "groupName_fr": "PLEX", "groupName_it": "PLEX", "groupName_ja": "PLEX", "groupName_ko": "PLEX", "groupName_ru": "Плексы", "groupName_zh": "伊甸币", "groupNameID": 525202, "published": 1, "useBasePrice": 0 }, "1876": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1876, "groupName_de": "♦ Ingenieurskomplex", "groupName_en-us": "♦ Engineering Complex", "groupName_es": "♦ Complejo de ingeniería", "groupName_fr": "♦ Complexe d'ingénierie", "groupName_it": "♦ Engineering Complex", "groupName_ja": "♦エンジニアリング複合施設", "groupName_ko": "♦ 엔지니어링 시설", "groupName_ru": "♦ Engineering Complex", "groupName_zh": "♦ 工程复合体", "groupNameID": 525289, "published": 0, "useBasePrice": 0 }, "1878": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1878, "groupName_de": "♦ Titan", "groupName_en-us": "♦ Titan", "groupName_es": "♦ Titán", "groupName_fr": "♦ Titan", "groupName_it": "♦ Titan", "groupName_ja": "♦ タイタン", "groupName_ko": "♦ 타이만", "groupName_ru": "♦ Титаны", "groupName_zh": "♦ 泰坦", "groupNameID": 526125, "published": 0, "useBasePrice": 0 }, "1879": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1879, "groupName_de": "♦ Truppenunterstützer", "groupName_en-us": "♦ Force Auxiliary", "groupName_es": "♦ Naves auxiliares", "groupName_fr": "♦ Force auxiliaire", "groupName_it": "♦ Force Auxiliary", "groupName_ja": "♦ 予備戦力", "groupName_ko": "♦ 포스 악실리아", "groupName_ru": "♦ Вспомогательные КБТ", "groupName_zh": "♦ 战力辅助舰", "groupNameID": 526124, "published": 0, "useBasePrice": 0 }, "1880": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1880, "groupName_de": "♦ Dreadnought", "groupName_en-us": "♦ Dreadnought", "groupName_es": "♦ Superacorazado", "groupName_fr": "♦ Dreadnought", "groupName_it": "♦ Dreadnought", "groupName_ja": "♦ 攻城艦", "groupName_ko": "♦ 드레드노트", "groupName_ru": "♦ Дредноуты", "groupName_zh": "♦ 无畏舰", "groupNameID": 526123, "published": 0, "useBasePrice": 0 }, "1882": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1882, "groupName_de": "MassiveEnvironments", "groupName_en-us": "MassiveEnvironments", "groupName_es": "Entornos masivos", "groupName_fr": "Environnements massifs", "groupName_it": "MassiveEnvironments", "groupName_ja": "MassiveEnvironments", "groupName_ko": "거대 환경", "groupName_ru": "Массивные среды", "groupName_zh": "宏观环境", "groupNameID": 526235, "published": 0, "useBasePrice": 0 }, "1884": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1884, "groupName_de": "Verbreitete Mondasteroiden", "groupName_en-us": "Ubiquitous Moon Asteroids", "groupName_es": "Asteroides lunares universales", "groupName_fr": "Astéroïdes lunaires ubiques", "groupName_it": "Ubiquitous Moon Asteroids", "groupName_ja": "偏在する衛星アステロイド", "groupName_ko": "저급 위성 조각", "groupName_ru": "Повсеместные лунные астероиды", "groupName_zh": "常见的卫星小行星", "groupNameID": 526296, "iconID": 15, "published": 1, "useBasePrice": 0 }, "1886": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1886, "groupName_de": "Technische Datenchips", "groupName_en-us": "Technical Data Chips", "groupName_es": "Chips de datos técnicos", "groupName_fr": "Puces de données techniques", "groupName_it": "Technical Data Chips", "groupName_ja": "技術データチップ", "groupName_ko": "기술 데이터 칩", "groupName_ru": "Технические ключ-схемы", "groupName_zh": "技术数据芯片", "groupNameID": 526463, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1887": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1887, "groupName_de": "Struktur - Mond-Bohrdienstmodul", "groupName_en-us": "Structure Moon Drilling Service Module", "groupName_es": "Módulo de servicio de perforación lunar para estructuras", "groupName_fr": "Module de service pour structure Foreuse lunaire", "groupName_it": "Structure Moon Drilling Service Module", "groupName_ja": "ストラクチャ衛星採掘サービスモジュール", "groupName_ko": "구조물 위성 채굴 서비스 모듈", "groupName_ru": "Сооружения - служебные модули бурения лун", "groupName_zh": "建筑卫星钻探服务装备", "groupNameID": 526632, "published": 1, "useBasePrice": 0 }, "1888": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1888, "groupName_de": "Komposit-Reaktionsformeln", "groupName_en-us": "Composite Reaction Formulas", "groupName_es": "Fórmulas reactivas compuestas", "groupName_fr": "Formules de réaction composite", "groupName_it": "Composite Reaction Formulas", "groupName_ja": "化合物反応フォーミュラ", "groupName_ko": "복합 반응식", "groupName_ru": "Формулы композитных реакций", "groupName_zh": "复合反应公式", "groupNameID": 526843, "published": 1, "useBasePrice": 1 }, "1889": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1889, "groupName_de": "Polymer-Reaktionsformeln", "groupName_en-us": "Polymer Reaction Formulas", "groupName_es": "Fórmulas reactivas poliméricas", "groupName_fr": "Formules de réaction polymère", "groupName_it": "Polymer Reaction Formulas", "groupName_ja": "重合体反応フォーミュラ", "groupName_ko": "폴리머 반응식", "groupName_ru": "Формулы полимерных реакций", "groupName_zh": "聚合物反应公式", "groupNameID": 526844, "published": 1, "useBasePrice": 1 }, "1890": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1890, "groupName_de": "Biochemische Reaktionsformeln", "groupName_en-us": "Biochemical Reaction Formulas", "groupName_es": "Fórmulas reactivas bioquímicas", "groupName_fr": "Formules de réaction biochimique", "groupName_it": "Biochemical Reaction Formulas", "groupName_ja": "有機化合反応フォーミュラ", "groupName_ko": "생화학 반응식", "groupName_ru": "Формулы биохимических реакций", "groupName_zh": "生化反应公式", "groupNameID": 526846, "published": 1, "useBasePrice": 1 }, "1891": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1891, "groupName_de": "Blaupausen für veraltete Subsysteme", "groupName_en-us": "Depricated Subsystem Blueprints", "groupName_es": "Planos de subsistemas obsoletos", "groupName_fr": "Plans de construction Sous-systèmes dévalorisés", "groupName_it": "Depricated Subsystem Blueprints", "groupName_ja": "沈静化したサブシステム設計図", "groupName_ko": "사용 중지된 서브시스템 블루프린트", "groupName_ru": "Чертежи устаревших подсистем", "groupName_zh": "废弃的子系统蓝图", "groupNameID": 527146, "published": 0, "useBasePrice": 0 }, "1894": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1894, "groupName_de": "Nicht wiederholbare Verstärker", "groupName_en-us": "Non-Repeating Hardeners", "groupName_es": "Endurecedores de no repetición", "groupName_fr": "Renforts sans répétition", "groupName_it": "Non-Repeating Hardeners", "groupName_ja": "非反復ハードナー", "groupName_ko": "비 반복 강화장치", "groupName_ru": "Укрепители без повтора", "groupName_zh": "非循环增强器", "groupNameID": 527203, "iconID": 0, "published": 0, "useBasePrice": 0 }, "1895": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1895, "groupName_de": "Irregular-Industrieschiff", "groupName_en-us": "Irregular Industrial", "groupName_es": "Nave industrial irregular", "groupName_fr": "Vaisseau industriel irrégulier", "groupName_it": "Irregular Industrial", "groupName_ja": "非正規工業", "groupName_ko": "비정상적인 인더스트리얼", "groupName_ru": "Необычный промышленный корабль", "groupName_zh": "叛道者工业舰", "groupNameID": 527940, "published": 0, "useBasePrice": 0 }, "1896": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1896, "groupName_de": "♦ Industrie-Kommandoschiff", "groupName_en-us": "♦ Industrial Command", "groupName_es": "♦ Mando de nave industrial", "groupName_fr": "♦ Commandement industriel", "groupName_it": "♦ Industrial Command", "groupName_ja": "♦ 指揮型輸送艦", "groupName_ko": "♦ 인더스트리얼 커맨드쉽", "groupName_ru": "♦ Буровой корабль", "groupName_zh": "♦ 工业指挥舰", "groupNameID": 528285, "published": 0, "useBasePrice": 0 }, "1909": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1909, "groupName_de": "♦ Schlachtkreuzer", "groupName_en-us": "♦ Battlecruiser", "groupName_es": "♦ Crucero de combate", "groupName_fr": "♦ Croiseur de bataille", "groupName_it": "♦ Battlecruiser", "groupName_ja": "♦ 巡洋戦艦", "groupName_ko": "♦ 배틀크루저", "groupName_ru": "♦ Линейный крейсер", "groupName_zh": "♦ 战列巡洋舰", "groupNameID": 528350, "published": 0, "useBasePrice": 0 }, "1911": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1911, "groupName_de": "Asteroiden des Imperiums", "groupName_en-us": "Empire Asteroids", "groupName_es": "Asteroides del Imperio", "groupName_fr": "Astéroïdes impériaux", "groupName_it": "Empire Asteroids", "groupName_ja": "帝国アステロイド", "groupName_ko": "국가별 소행성", "groupName_ru": "Астероиды метрополии", "groupName_zh": "帝国小行星", "groupNameID": 528621, "published": 0, "useBasePrice": 0 }, "1912": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1912, "groupName_de": "Struktur - Bohranlage M - Effizienz", "groupName_en-us": "Structure Drilling Rig M - Efficiency", "groupName_es": "Complemento de perforación para estructuras (M): eficiencia", "groupName_fr": "Optimisation de forage pour structure M – Efficience", "groupName_it": "Structure Drilling Rig M - Efficiency", "groupName_ja": "ストラクチャ採掘リグM - 性能", "groupName_ko": "구조물 채굴 리그 M - 효율성", "groupName_ru": "Буровой модификатор средних сооружений - эффективность", "groupName_zh": "建筑钻探中型改装件 - 效率", "groupNameID": 529224, "published": 1, "useBasePrice": 0 }, "1913": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1913, "groupName_de": "Struktur - Bohranlage M - Stabilität", "groupName_en-us": "Structure Drilling Rig M - Stability", "groupName_es": "Complemento de perforación para estructuras (M): estabilidad", "groupName_fr": "Optimisation de forage pour structure M – Stabilité", "groupName_it": "Structure Drilling Rig M - Stability", "groupName_ja": "ストラクチャ採掘リグM - 安定性", "groupName_ko": "구조물 채굴 리그 M - 안정성", "groupName_ru": "Буровой модификатор средних сооружений - стабильность", "groupName_zh": "建筑钻探中型改装件 - 耐久", "groupNameID": 529225, "published": 1, "useBasePrice": 0 }, "1914": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1914, "groupName_de": "Struktur - Bohranlage L - Fertigkeit", "groupName_en-us": "Structure Drilling Rig L - Proficiency", "groupName_es": "Complemento de perforación para estructuras (G): competencia", "groupName_fr": "Optimisation de forage pour structure L – Savoir-faire", "groupName_it": "Structure Drilling Rig L - Proficiency", "groupName_ja": "ストラクチャ採掘リグL - 習熟", "groupName_ko": "구조물 채굴 리그 L - 숙련도", "groupName_ru": "Буровой модуль больших сооружений - мастерство", "groupName_zh": "建筑钻探大型改装件 - 精通", "groupNameID": 529230, "published": 1, "useBasePrice": 0 }, "1915": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1915, "groupName_de": "Mond-Bergbausignalfeuer", "groupName_en-us": "Moon Mining Beacon", "groupName_es": "Baliza de minería lunar", "groupName_fr": "Balise d'extraction lunaire", "groupName_it": "Moon Mining Beacon", "groupName_ja": "衛星採掘ビーコン", "groupName_ko": "위성 채굴 비컨", "groupName_ru": "Маяк лунной добычи", "groupName_zh": "卫星开采信标", "groupNameID": 529250, "published": 0, "useBasePrice": 0 }, "1920": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1920, "groupName_de": "Gewöhnliche Mondasteroiden", "groupName_en-us": "Common Moon Asteroids", "groupName_es": "Asteroides lunares comunes", "groupName_fr": "Astéroïdes lunaires communs", "groupName_it": "Common Moon Asteroids", "groupName_ja": "コモン衛星アステロイド", "groupName_ko": "일반 위성 조각", "groupName_ru": "Обычные лунные астероиды", "groupName_zh": "普通的卫星小行星", "groupNameID": 529385, "iconID": 15, "published": 1, "useBasePrice": 0 }, "1921": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1921, "groupName_de": "Ungewöhnliche Mondasteroiden", "groupName_en-us": "Uncommon Moon Asteroids", "groupName_es": "Asteroides lunares inusuales", "groupName_fr": "Astéroïdes lunaires sporadiques", "groupName_it": "Uncommon Moon Asteroids", "groupName_ja": "アンコモン衛星アステロイド", "groupName_ko": "고급 위성 조각", "groupName_ru": "Необычные лунные астероиды", "groupName_zh": "罕见的卫星小行星", "groupNameID": 529386, "iconID": 15, "published": 1, "useBasePrice": 0 }, "1922": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1922, "groupName_de": "Seltene Mondasteroiden", "groupName_en-us": "Rare Moon Asteroids", "groupName_es": "Asteroides lunares poco comunes", "groupName_fr": "Astéroïdes lunaires rares", "groupName_it": "Rare Moon Asteroids", "groupName_ja": "レア衛星アステロイド", "groupName_ko": "희귀 위성 조각", "groupName_ru": "Редкие лунные астероиды", "groupName_zh": "稀有的卫星小行星", "groupNameID": 529387, "iconID": 15, "published": 1, "useBasePrice": 0 }, "1923": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 1923, "groupName_de": "Außerordentliche Mondasteroiden", "groupName_en-us": "Exceptional Moon Asteroids", "groupName_es": "Asteroides lunares excepcionales", "groupName_fr": "Astéroïdes lunaires exceptionnels", "groupName_it": "Exceptional Moon Asteroids", "groupName_ja": "エクセプショナル衛星アステロイド", "groupName_ko": "특별 위성 조각", "groupName_ru": "Исключительные лунные астероиды", "groupName_zh": "非凡的卫星小行星", "groupNameID": 529388, "iconID": 15, "published": 1, "useBasePrice": 0 }, "1924": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 1924, "groupName_de": "♦ Stützpunkt", "groupName_en-us": "♦ Stronghold", "groupName_es": "♦ Bastión", "groupName_fr": "♦ Forteresse", "groupName_it": "♦ Stronghold", "groupName_ja": "♦ 要塞", "groupName_ko": "♦ 요새", "groupName_ru": "♦ Крепость", "groupName_zh": "♦要塞", "groupNameID": 529405, "published": 0, "useBasePrice": 0 }, "1925": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1925, "groupName_de": "Irregular-Industrie-Kommandoschiff", "groupName_en-us": "Irregular Industrial Command Ship", "groupName_es": "Nave de mando industrial irregular", "groupName_fr": "Vaisseau de commandement industriel irrégulier", "groupName_it": "Irregular Industrial Command Ship", "groupName_ja": "非正規指揮型輸送艦", "groupName_ko": "비정상적인 인더스트리얼 커맨드쉽", "groupName_ru": "Необычный промышленный командный корабль", "groupName_zh": "叛道者工业指挥舰", "groupNameID": 529459, "published": 0, "useBasePrice": 0 }, "1926": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1926, "groupName_de": "Irregular-Frachter", "groupName_en-us": "Irregular Freighter", "groupName_es": "Carguero irregular", "groupName_fr": "Cargo irrégulier", "groupName_it": "Irregular Freighter", "groupName_ja": "非正規超大型輸送艦", "groupName_ko": "비정상적인 프레이터", "groupName_ru": "Необычный фрейтер", "groupName_zh": "叛道者货舰", "groupNameID": 529460, "published": 0, "useBasePrice": 0 }, "1927": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1927, "groupName_de": "Irregular-Struktur", "groupName_en-us": "Irregular Structure", "groupName_es": "Estructura irregular", "groupName_fr": "Structure irrégulière", "groupName_it": "Irregular Structure", "groupName_ja": "非正規ストラクチャ", "groupName_ko": "비정상적인 구조물", "groupName_ru": "Необычное сооружение", "groupName_zh": "叛道者建筑", "groupNameID": 529461, "published": 0, "useBasePrice": 0 }, "1928": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1928, "groupName_de": "Irregular-Container", "groupName_en-us": "Irregular Container", "groupName_es": "Contenedor irregular", "groupName_fr": "Conteneur irrégulier", "groupName_it": "Irregular Container", "groupName_ja": "非正規コンテナ", "groupName_ko": "비정상적인 컨테이너", "groupName_ru": "Необычный контейнер", "groupName_zh": "叛道者货柜", "groupNameID": 529462, "published": 0, "useBasePrice": 0 }, "1929": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1929, "groupName_de": "Irregular - Unbekannt", "groupName_en-us": "Irregular - Unidentified", "groupName_es": "Irregular: no identificado", "groupName_fr": "Irrégulier - non identifié", "groupName_it": "Irregular - Unidentified", "groupName_ja": "非正規 - 不明", "groupName_ko": "비정상적인 - 알 수 없음", "groupName_ru": "Необычный — Не определено", "groupName_zh": "叛道者 - 未识别", "groupNameID": 529463, "published": 0, "useBasePrice": 0 }, "1933": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1933, "groupName_de": "Struktur: Komposit-Reaktoranlage M - Zeiteffizienz", "groupName_en-us": "Structure Composite Reactor Rig M - TE", "groupName_es": "Complemento de reactor compuesto para estructuras (M): ET", "groupName_fr": "Optimisation de réacteur composite pour structure M – PH", "groupName_it": "Structure Composite Reactor Rig M - TE", "groupName_ja": "ストラクチャ化合物リアクターリグM - TE", "groupName_ko": "구조물 복합 반응로 리그 M - 시간효율성", "groupName_ru": "Надстройка для средних сооружений — композитный реактор: скорость производства", "groupName_zh": "建筑复合反应堆中型改装件 - 时间效率", "groupNameID": 529745, "published": 1, "useBasePrice": 0 }, "1934": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1934, "groupName_de": "Struktur: Komposit-Reaktoranlage M - Materialeffizienz", "groupName_en-us": "Structure Composite Reactor Rig M - ME", "groupName_es": "Complemento de reactor compuesto para estructuras (M): EM", "groupName_fr": "Optimisation de réacteur composite pour structure M – PM", "groupName_it": "Structure Composite Reactor Rig M - ME", "groupName_ja": "ストラクチャ化合物リアクターリグM - ME", "groupName_ko": "구조물 복합 반응로 리그 M - 자원효율성", "groupName_ru": "Надстройка для средних сооружений — композитный реактор: материалоэффективность", "groupName_zh": "建筑复合反应堆中型改装件 - 材料效率", "groupNameID": 529746, "published": 1, "useBasePrice": 0 }, "1935": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1935, "groupName_de": "Struktur: Hybridreaktoranlage M - Zeiteffizienz", "groupName_en-us": "Structure Hybrid Reactor Rig M - TE", "groupName_es": "Complemento de reactor híbrido para estructuras (M): ET", "groupName_fr": "Optimisation de réacteur hybride pour structure M – PH", "groupName_it": "Structure Hybrid Reactor Rig M - TE", "groupName_ja": "ストラクチャハイブリッドリアクターリグM - TE", "groupName_ko": "구조물 하이브리드 반응로 리그 M - 시간효율성", "groupName_ru": "Надстройка для средних сооружений — гибридный реактор: скорость производства", "groupName_zh": "建筑混合反应堆中型改装件 - 时间效率", "groupNameID": 529747, "published": 1, "useBasePrice": 0 }, "1936": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1936, "groupName_de": "Struktur: Hybridreaktoranlage M - Materialeffizienz", "groupName_en-us": "Structure Hybrid Reactor Rig M - ME", "groupName_es": "Complemento de reactor híbrido para estructuras (M): EM", "groupName_fr": "Optimisation de réacteur hybride pour structure M – PM", "groupName_it": "Structure Hybrid Reactor Rig M - ME", "groupName_ja": "ストラクチャハイブリッドリアクターリグM - ME", "groupName_ko": "구조물 하이브리드 반응로 리그 M - 자원효율성", "groupName_ru": "Надстройка для средних сооружений — гибридный реактор: материалоэффективность", "groupName_zh": "建筑混合反应堆中型改装件 - 材料效率", "groupNameID": 529748, "published": 1, "useBasePrice": 0 }, "1937": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1937, "groupName_de": "Struktur: Biochemische Reaktoranlage M - Zeiteffizienz", "groupName_en-us": "Structure Biochemical Reactor Rig M - TE", "groupName_es": "Complemento de reactor bioquímico para estructuras (M): ET", "groupName_fr": "Optimisation de réacteur biochimique pour structure M – PH", "groupName_it": "Structure Biochemical Reactor Rig M - TE", "groupName_ja": "ストラクチャ有機化合リアクターリグM - TE", "groupName_ko": "구조물 생화학 반응로 리그 M - 시간효율성", "groupName_ru": "Надстройка для средних сооружений — биохимический реактор: скорость производства", "groupName_zh": "建筑生化反应堆中型改装件 - 时间效率", "groupNameID": 529749, "published": 1, "useBasePrice": 0 }, "1938": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1938, "groupName_de": "Struktur: Biochemische Reaktoranlage M - Materialeffizienz", "groupName_en-us": "Structure Biochemical Reactor Rig M - ME", "groupName_es": "Complemento de reactor bioquímico para estructuras (M): EM", "groupName_fr": "Optimisation de réacteur biochimique pour structure M – PM", "groupName_it": "Structure Biochemical Reactor Rig M - ME", "groupName_ja": "ストラクチャ有機化合リアクターリグM - ME", "groupName_ko": "구조물 생화학 반응로 리그 M - 자원효율성", "groupName_ru": "Надстройка для средних сооружений — биохимический реактор: материалоэффективность", "groupName_zh": "建筑生化反应堆中型改装件 - 材料效率", "groupNameID": 529750, "published": 1, "useBasePrice": 0 }, "1939": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1939, "groupName_de": "Struktur: Reaktoranlage L - Effizienz", "groupName_en-us": "Structure Reactor Rig L - Efficiency", "groupName_es": "Complemento de reactor para estructuras (G): competencia", "groupName_fr": "Optimisation de réacteur pour structure L – Efficacité industrielle", "groupName_it": "Structure Reactor Rig L - Efficiency", "groupName_ja": "ストラクチャリアクターリグL - 性能", "groupName_ko": "구조물 반응로 리그 L - 효율성", "groupName_ru": "Надстройка для больших сооружений — реактор: эффективность", "groupName_zh": "建筑反应堆大型改装件 - 效率", "groupNameID": 529751, "published": 1, "useBasePrice": 0 }, "1940": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1940, "groupName_de": "Mondbrocken", "groupName_en-us": "Moon Chunk", "groupName_es": "Fragmento lunar", "groupName_fr": "Monolithe de lune", "groupName_it": "Moon Chunk", "groupName_ja": "衛星の岩塊", "groupName_ko": "위성 파편", "groupName_ru": "Порода спутника", "groupName_zh": "卫星区块", "groupNameID": 529956, "published": 0, "useBasePrice": 0 }, "1941": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1941, "groupName_de": "Struktur: Ressourcenmodifikation M - Asteroidenerzaufbereitung", "groupName_en-us": "Structure Resource Rig M - Asteroid Ore Reprocessing", "groupName_es": "Complemento de recurso para estructuras (M): reprocesamiento de mena asteroidal", "groupName_fr": "Optimisation des ressources pour structure M – Retraitement des minerais astéroïdaux", "groupName_it": "Structure Resource Rig M - Asteroid Ore Reprocessing", "groupName_ja": "ストラクチャリソースリグM - アステロイド鉱石再処理", "groupName_ko": "구조물 자원 리그 M - 소행성 광물 정제", "groupName_ru": "Надстройка для средних сооружений — переработка руды со спутников", "groupName_zh": "建筑资源中型改装件 - 小行星矿石提炼", "groupNameID": 530204, "published": 1, "useBasePrice": 0 }, "1942": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1942, "groupName_de": "Struktur: Ressourcenmodifikation M - Eisaufbereitung", "groupName_en-us": "Structure Resource Rig M - Ice Reprocessing", "groupName_es": "Complemento de recurso para estructuras (M): reprocesamiento de hielo", "groupName_fr": "Optimisation des ressources pour structure M – Retraitement de la glace", "groupName_it": "Structure Resource Rig M - Ice Reprocessing", "groupName_ja": "ストラクチャリソースリグM - アイス再処理", "groupName_ko": "구조물 자원 리그 M - 아이스 정제", "groupName_ru": "Надстройка для средних сооружений — переработка льда", "groupName_zh": "建筑资源中型改装件 - 冰矿提炼", "groupNameID": 530205, "published": 1, "useBasePrice": 0 }, "1943": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1943, "groupName_de": "Struktur: Ressourcenmodifikation M - Monderzaufbereitung", "groupName_en-us": "Structure Resource Rig M - Moon Ore Reprocessing", "groupName_es": "Complemento de recurso para estructuras (M): reprocesamiento de mena lunar", "groupName_fr": "Optimisation des ressources pour structure M – Retraitement des minerais lunaires", "groupName_it": "Structure Resource Rig M - Moon Ore Reprocessing", "groupName_ja": "ストラクチャリソースリグM - 衛星鉱石再処理", "groupName_ko": "구조물 자원 리그 M - 위성 광물 정제", "groupName_ru": "Надстройка для средних сооружений — переработка руды с астероидов", "groupName_zh": "建筑资源中型改装件 - 卫星矿石提炼", "groupNameID": 530206, "published": 1, "useBasePrice": 0 }, "1944": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1944, "groupName_de": "Struktur: Ressourcenmodifikation L - Aufbereitung", "groupName_en-us": "Structure Resource Rig L - Reprocessing", "groupName_es": "Complemento de recurso para estructuras (G): reprocesamiento", "groupName_fr": "Optimisation des ressources pour structure L – Retraitement", "groupName_it": "Structure Resource Rig L - Reprocessing", "groupName_ja": "ストラクチャリソースリグL - 再処理", "groupName_ko": "구조물 자원 리그 L - 정제", "groupName_ru": "Надстройка для больших сооружений — переработка ресурсов", "groupName_zh": "建筑资源大型改装件 - 提炼", "groupNameID": 530207, "published": 1, "useBasePrice": 0 }, "1945": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1945, "groupName_de": "Struktur: Ressourcenmodifikation XL - Aufbereitung", "groupName_en-us": "Structure Resource Rig XL - Reprocessing", "groupName_es": "Complemento de recurso para estructuras (XL): reprocesamiento", "groupName_fr": "Optimisation des ressources pour structure XL – Retraitement", "groupName_it": "Structure Resource Rig XL - Reprocessing", "groupName_ja": "ストラクチャリソースリグXL - 再処理", "groupName_ko": "구조물 자원 리그 XL - 정제", "groupName_ru": "Тюнинг-модуль переработки, сверхбольшие сооружения - переработка", "groupName_zh": "建筑资源超大型改装件 - 提炼", "groupNameID": 530208, "published": 1, "useBasePrice": 0 }, "1948": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1948, "groupName_de": "Blaupausen für Cyberscanimplantate", "groupName_en-us": "Cyber Scanning Implant Blueprints", "groupName_es": "Planos de ciberimplantes de escaneo", "groupName_fr": "Plans de construction Implant de cyberscan", "groupName_it": "Cyber Scanning Implant Blueprints", "groupName_ja": "サイバースキャン・インプラント設計図", "groupName_ko": "사이버 스캐닝 임플란트 블루프린트", "groupName_ru": "Чертежи кибернетического сканер-импланта", "groupName_zh": "脑控扫描植入体蓝图", "groupNameID": 531101, "iconID": 0, "published": 1, "useBasePrice": 0 }, "1950": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1950, "groupName_de": "Permanenter SKIN", "groupName_en-us": "Permanent SKIN", "groupName_es": "SKIN permanente", "groupName_fr": "SKIN permanent", "groupName_it": "Permanent SKIN", "groupName_ja": "永続SKIN", "groupName_ko": "무기한 SKIN", "groupName_ru": "Бессрочный шаблон", "groupName_zh": "永久涂装", "groupNameID": 531346, "published": 1, "useBasePrice": 0 }, "1951": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1951, "groupName_de": "Vergänglicher SKIN", "groupName_en-us": "Volatile SKIN", "groupName_es": "SKIN volátil", "groupName_fr": "SKIN volatile", "groupName_it": "Volatile SKIN", "groupName_ja": "揮発性SKIN", "groupName_ko": "일회용 SKIN", "groupName_ru": "Хрупкий шаблон", "groupName_zh": "不稳定的涂装", "groupNameID": 531348, "published": 1, "useBasePrice": 0 }, "1952": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1952, "groupName_de": "SKIN 7 Tage", "groupName_en-us": "7-Day SKIN", "groupName_es": "SKIN de 7 días", "groupName_fr": "SKIN de 7 jours", "groupName_it": "7-Day SKIN", "groupName_ja": "7日間SKIN", "groupName_ko": "SKIN (7일)", "groupName_ru": "7-дневный шаблон", "groupName_zh": "7天涂装", "groupNameID": 531349, "published": 1, "useBasePrice": 0 }, "1953": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1953, "groupName_de": "SKIN 30 Tage", "groupName_en-us": "30-Day SKIN", "groupName_es": "SKIN de 30 días", "groupName_fr": "SKIN de 30 jours", "groupName_it": "30-Day SKIN", "groupName_ja": "30日間SKIN", "groupName_ko": "SKIN (30일)", "groupName_ru": "30-дневный шаблон", "groupName_zh": "30天涂装", "groupNameID": 531350, "published": 1, "useBasePrice": 0 }, "1954": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1954, "groupName_de": "SKIN 90 Tage", "groupName_en-us": "90-Day SKIN", "groupName_es": "SKIN de 90 días", "groupName_fr": "SKIN de 90 jours", "groupName_it": "90-Day SKIN", "groupName_ja": "90日間SKIN", "groupName_ko": "SKIN (90일)", "groupName_ru": "90-дневный шаблон", "groupName_zh": "90天涂装", "groupNameID": 531351, "published": 1, "useBasePrice": 0 }, "1955": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 1955, "groupName_de": "SKIN 1 Jahr", "groupName_en-us": "1-Year SKIN", "groupName_es": "SKIN de 1 año", "groupName_fr": "SKIN de 1 an", "groupName_it": "1-Year SKIN", "groupName_ja": "1年間SKIN", "groupName_ko": "SKIN (1년)", "groupName_ru": "Годовой шаблон", "groupName_zh": "1年涂装", "groupNameID": 531352, "published": 1, "useBasePrice": 0 }, "1956": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1956, "groupName_de": "Drifter-Verstärkung", "groupName_en-us": "Drifter Reinforcements", "groupName_es": "Refuerzos de drifter", "groupName_fr": "Renforcements drifter", "groupName_it": "Drifter Reinforcements", "groupName_ja": "ドリフター援軍", "groupName_ko": "드리프터 지원군", "groupName_ru": "Укрепления Скитальцев", "groupName_zh": "流浪者增援部队", "groupNameID": 531454, "published": 0, "useBasePrice": 0 }, "1962": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1962, "groupName_de": "Struktur-QA-Module", "groupName_en-us": "Structure QA Modules", "groupName_es": "Módulos de control de calidad para estructuras", "groupName_fr": "Modules de structure QA", "groupName_it": "Structure QA Modules", "groupName_ja": "ストラクチャQAモジュール", "groupName_ko": "구조물 QA 모듈", "groupName_ru": "Structure QA Modules", "groupName_zh": "建筑QA装备", "groupNameID": 532364, "published": 0, "useBasePrice": 0 }, "1964": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1964, "groupName_de": "Mutaplasmide", "groupName_en-us": "Mutaplasmids", "groupName_es": "Mutaplásmidos", "groupName_fr": "Mutaplasmides", "groupName_it": "Mutaplasmids", "groupName_ja": "変異プラスミド", "groupName_ko": "뮤타플라즈미드", "groupName_ru": "Мутаплазмиды", "groupName_zh": "突变质体", "groupNameID": 532367, "published": 1, "useBasePrice": 0 }, "1966": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1966, "groupName_de": "Struktur: Energiespeicher-Batterie", "groupName_en-us": "Structure Capacitor Battery", "groupName_es": "Batería de condensador para estructuras", "groupName_fr": "Batterie de capaciteur pour structure", "groupName_it": "Structure Capacitor Battery", "groupName_ja": "ストラクチャ・キャパシタバッテリー", "groupName_ko": "구조물 캐패시터 배터리", "groupName_ru": "Накопительная батарея для сооружений", "groupName_zh": "建筑电容电池", "groupNameID": 532473, "published": 1, "useBasePrice": 0 }, "1967": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1967, "groupName_de": "Struktur: Energiespeicher-Stromrelais", "groupName_en-us": "Structure Capacitor Power Relay", "groupName_es": "Relé de potencia de condensador para estructuras", "groupName_fr": "Relais de puissance du capaciteur pour structure", "groupName_it": "Structure Capacitor Power Relay", "groupName_ja": "ストラクチャ・キャパシタパワーリレー", "groupName_ko": "구조물 캐패시터 릴레이", "groupName_ru": "Силовые реле накопителя для сооружений", "groupName_zh": "建筑电容能源继电器", "groupNameID": 532474, "iconID": 26455, "published": 1, "useBasePrice": 0 }, "1968": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1968, "groupName_de": "Struktur: Panzerungsverstärker", "groupName_en-us": "Structure Armor Reinforcer", "groupName_es": "Reforzador de blindaje para estructuras", "groupName_fr": "Renforçateur de blindage pour structure", "groupName_it": "Structure Armor Reinforcer", "groupName_ja": "ストラクチャ・アーマーレインフォーサー", "groupName_ko": "구조물 장갑 강화기", "groupName_ru": "Усилитель брони для сооружений", "groupName_zh": "建筑装甲强化装置", "groupNameID": 532475, "published": 1, "useBasePrice": 0 }, "1969": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1969, "groupName_de": "Abgrundmodule", "groupName_en-us": "Abyssal Modules", "groupName_es": "Módulos abisales", "groupName_fr": "Modules abyssaux", "groupName_it": "Abyssal Modules", "groupName_ja": "アビサルモジュール", "groupName_ko": "어비설 모듈", "groupName_ru": "Модули Бездны", "groupName_zh": "深渊装备", "groupNameID": 532741, "published": 0, "useBasePrice": 0 }, "1971": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1971, "groupName_de": "Gefahren des Abgrunds", "groupName_en-us": "Abyssal Hazards", "groupName_es": "Peligros abisales", "groupName_fr": "Dangers abyssaux", "groupName_it": "Abyssal Hazards", "groupName_ja": "アビサルハザード", "groupName_ko": "어비설 위험 요소", "groupName_ru": "Опасности бездны", "groupName_zh": "深渊危险效果", "groupNameID": 532779, "published": 0, "useBasePrice": 0 }, "1972": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 1972, "groupName_de": "Flaggenkreuzer", "groupName_en-us": "Flag Cruiser", "groupName_es": "Crucero insignia", "groupName_fr": "Croiseur amiral", "groupName_it": "Flag Cruiser", "groupName_ja": "指揮巡洋艦", "groupName_ko": "플래그 크루저", "groupName_ru": "Флагманский крейсер", "groupName_zh": "战地巡洋舰", "groupNameID": 532793, "published": 1, "useBasePrice": 0 }, "1973": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1973, "groupName_de": "Locators", "groupName_en-us": "Locators", "groupName_es": "Localizador", "groupName_fr": "Localisateurs", "groupName_it": "Locators", "groupName_ja": "位置探知", "groupName_ko": "위치표시기", "groupName_ru": "Локаторы", "groupName_zh": "定位器", "groupNameID": 532858, "published": 0, "useBasePrice": 0 }, "1974": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1974, "groupName_de": "Struktur-Festivalwerfer", "groupName_en-us": "Structure Festival Launcher", "groupName_es": "Lanzador festivalero para estructuras", "groupName_fr": "Lanceur de festival pour structure", "groupName_it": "Structure Festival Launcher", "groupName_ja": "ストラクチャ・フェスティバルランチャー", "groupName_ko": "구조물 축제용 런처", "groupName_ru": "Салютная ПУ для сооружений", "groupName_zh": "建筑节日发射器", "groupNameID": 532880, "published": 1, "useBasePrice": 0 }, "1975": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1975, "groupName_de": "Nicht interagierbares Objekt", "groupName_en-us": "Non-Interactable Object", "groupName_es": "Objeto no interactivo", "groupName_fr": "Objet non interactif", "groupName_it": "Non-Interactable Object", "groupName_ja": "非相互オブジェクト", "groupName_ko": "상호작용 불가 오브젝트", "groupName_ru": "Неинтерактивный объект", "groupName_zh": "不可交互物品", "groupNameID": 532897, "published": 0, "useBasePrice": 0 }, "1976": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 1976, "groupName_de": "Struktur-Festivalladungen", "groupName_en-us": "Structure Festival Charges", "groupName_es": "Cargas de festival para estructura", "groupName_fr": "Charges de festival pour structure", "groupName_it": "Structure Festival Charges", "groupName_ja": "ストラクチャ・フェスティバル弾", "groupName_ko": "구조물 축제용 차지", "groupName_ru": "Салютные снаряды для сооружений", "groupName_zh": "建筑节日弹药", "groupNameID": 533138, "published": 1, "useBasePrice": 0 }, "1977": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1977, "groupName_de": "Trinärer Datentresor", "groupName_en-us": "Trinary Data Vaults", "groupName_es": "Depósitos de datos trinarios", "groupName_fr": "Coffres-forts de données trinaires", "groupName_it": "Trinary Data Vaults", "groupName_ja": "トライナリーデータ金庫", "groupName_ko": "트라이너리 데이터 저장장치", "groupName_ru": "Тринарные хранилища данных", "groupName_zh": "三重数据仓库", "groupNameID": 533608, "published": 0, "useBasePrice": 0 }, "1978": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1978, "groupName_de": "Industrie-Unterstützungsanlage", "groupName_en-us": "Industrial Support Facility", "groupName_es": "Centro de apoyo industrial", "groupName_fr": "Site de maintenance de l'industrie", "groupName_it": "Industrial Support Facility", "groupName_ja": "工業サポート施設", "groupName_ko": "산업 지원 시설", "groupName_ru": "Центр промышленной поддержки", "groupName_zh": "工业后勤设施", "groupNameID": 534589, "published": 0, "useBasePrice": 0 }, "1979": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1979, "groupName_de": "Abgrundfilamente", "groupName_en-us": "Abyssal Filaments", "groupName_es": "Filamentos abisales", "groupName_fr": "Filaments abyssaux", "groupName_it": "Abyssal Filaments", "groupName_ja": "アビサルフィラメント", "groupName_ko": "어비설 필라멘트", "groupName_ru": "Нити бездны", "groupName_zh": "深渊纤维", "groupNameID": 534967, "published": 1, "useBasePrice": 0 }, "1980": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1980, "groupName_de": "Nicht skalierbare Wolken", "groupName_en-us": "Non-Scalable Clouds", "groupName_es": "Nubes no escalables", "groupName_fr": "Nuages non-extensibles", "groupName_it": "Non-Scalable Clouds", "groupName_ja": "非スケーラブル雲", "groupName_ko": "크기 조정이 불가능한 성운", "groupName_ru": "Немасштабируемые облака", "groupName_zh": "不可测量气云", "groupNameID": 534978, "published": 0, "useBasePrice": 0 }, "1981": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1981, "groupName_de": "Triglavianische Unterstützungsmasten", "groupName_en-us": "Triglavian Support Pylons", "groupName_es": "Pilones de apoyo triglavianos", "groupName_fr": "Pylônes de soutien triglavian", "groupName_it": "Triglavian Support Pylons", "groupName_ja": "トリグラビアン・サポートパイロン", "groupName_ko": "트리글라비안 지원형 파일론", "groupName_ru": "Пилоны поддержки Триглава", "groupName_zh": "三神裔后勤塔", "groupNameID": 535050, "published": 0, "useBasePrice": 0 }, "1982": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1982, "groupName_de": "Abgrundraumschiffeinheiten", "groupName_en-us": "Abyssal Spaceship Entities", "groupName_es": "Entidades de nave espacial abisal", "groupName_fr": "Entités-vaisseaux abyssales", "groupName_it": "Abyssal Spaceship Entities", "groupName_ja": "アビサル宇宙船エンティティ", "groupName_ko": "어비설 우주선 객체", "groupName_ru": "Корабли бездны", "groupName_zh": "深渊舰船实体", "groupNameID": 535182, "published": 0, "useBasePrice": 0 }, "1983": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1983, "groupName_de": "Abgrundumgebung", "groupName_en-us": "Abyssal Environment", "groupName_es": "Ambiente abisal", "groupName_fr": "Environnement abyssal", "groupName_it": "Abyssal Environment", "groupName_ja": "アビサル環境", "groupName_ko": "어비설 환경", "groupName_ru": "Пространство бездны", "groupName_zh": "深渊环境", "groupNameID": 535250, "published": 0, "useBasePrice": 0 }, "1984": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 1984, "groupName_de": "Outpost Conversion Rigs", "groupName_en-us": "Outpost Conversion Rigs", "groupName_es": "Complementos de conversión de puesto avanzado", "groupName_fr": "Optimisations de conversion d'avant-poste", "groupName_it": "Outpost Conversion Rigs", "groupName_ja": "アウトポスト変換リグ", "groupName_ko": "전초기지 개조 리그", "groupName_ru": "Надстройки для конверсии форпоста", "groupName_zh": "哨站转化改装件", "groupNameID": 535351, "published": 1, "useBasePrice": 0 }, "1986": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1986, "groupName_de": "Precursor-Waffe", "groupName_en-us": "Precursor Weapon", "groupName_es": "Arma precursora", "groupName_fr": "Arme de précursion", "groupName_it": "Precursor Weapon", "groupName_ja": "プリカーサー兵器", "groupName_ko": "프리커서 무기", "groupName_ru": "Оружие Предтечей", "groupName_zh": "先驱者武器", "groupNameID": 535357, "published": 1, "useBasePrice": 0 }, "1987": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 1987, "groupName_de": "Exotische Plasmaladung", "groupName_en-us": "Exotic Plasma Charge", "groupName_es": "Carga de plasma exótico", "groupName_fr": "Charge à plasma exotique", "groupName_it": "Exotic Plasma Charge", "groupName_ja": "エキゾチックプラズマチャージ", "groupName_ko": "엑조틱 플라즈마 차지", "groupName_ru": "Заряд экзотической плазмы", "groupName_zh": "异种等离子弹药", "groupNameID": 535358, "published": 1, "useBasePrice": 0 }, "1988": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 1988, "groupName_de": "Entropischer Strahlungskühler", "groupName_en-us": "Entropic Radiation Sink", "groupName_es": "Disipador de radiación entrópica", "groupName_fr": "Dissipateur de radiations entropiques", "groupName_it": "Entropic Radiation Sink", "groupName_ja": "エントロピック放射線シンク", "groupName_ko": "엔트로픽 방사능 싱크", "groupName_ru": "Поглотитель энтропического излучения", "groupName_zh": "熵辐射槽", "groupNameID": 535393, "published": 1, "useBasePrice": 0 }, "1989": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 1989, "groupName_de": "Fortgeschrittene exotische Plasmaladung", "groupName_en-us": "Advanced Exotic Plasma Charge", "groupName_es": "Carga avanzada de plasma exótico", "groupName_fr": "Charge à plasma exotique avancée", "groupName_it": "Advanced Exotic Plasma Charge", "groupName_ja": "高性能エキゾチックプラズマチャージ", "groupName_ko": "상급 엑조틱 플라즈마 차지", "groupName_ru": "Улучшенный заряд экзотической плазмы", "groupName_zh": "高级异种等离子弹药", "groupNameID": 535425, "published": 1, "useBasePrice": 0 }, "1990": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1990, "groupName_de": "Blaupause für Precursor-Waffen", "groupName_en-us": "Precursor Weapon Blueprint", "groupName_es": "Plano de arma precursora", "groupName_fr": "Plan de construction Arme de précursion", "groupName_it": "Precursor Weapon Blueprint", "groupName_ja": "プリカーサー兵器設計図", "groupName_ko": "프리커서 무기 블루프린트", "groupName_ru": "Чертёж оружия Предтечей", "groupName_zh": "先驱者武器蓝图", "groupNameID": 535694, "published": 1, "useBasePrice": 1 }, "1991": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1991, "groupName_de": "Filamentspur", "groupName_en-us": "Filament Trace", "groupName_es": "Rastro de filamento", "groupName_fr": "Trace de filament", "groupName_it": "Filament Trace", "groupName_ja": "フィラメントの痕跡", "groupName_ko": "필라멘트 흔적", "groupName_ru": "След нити", "groupName_zh": "纤维痕迹", "groupNameID": 536427, "published": 0, "useBasePrice": 0 }, "1992": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1992, "groupName_de": "Blaupause für entropische Strahlungskühler", "groupName_en-us": "Entropic Radiation Sink Blueprint", "groupName_es": "Plano de disipador de radiación entrópica", "groupName_fr": "Plan de construction Dissipateur de radiations entropiques", "groupName_it": "Entropic Radiation Sink Blueprint", "groupName_ja": "エントロピックレディエーション・シンク設計図", "groupName_ko": "엔트로픽 방사능 싱크 블루프린트", "groupName_ru": "Чертёж поглотителя энтропического излучения", "groupName_zh": "熵辐射槽蓝图", "groupNameID": 536430, "published": 1, "useBasePrice": 1 }, "1993": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1993, "groupName_de": "Blaupause für exotische Plasmaladungen", "groupName_en-us": "Exotic Plasma Charge Blueprint", "groupName_es": "Plano de carga de plasma exótico", "groupName_fr": "Plan de construction Charge à plasma exotique", "groupName_it": "Exotic Plasma Charge Blueprint", "groupName_ja": "エキゾチックプラズマチャージ設計図", "groupName_ko": "엑조틱 플라즈마 차지 블루프린트", "groupName_ru": "Чертёж заряда экзотической плазмы", "groupName_zh": "异种等离子弹药蓝图", "groupNameID": 536432, "published": 1, "useBasePrice": 1 }, "1994": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 1994, "groupName_de": "Blaupause für fortgeschrittene exotische Plasmaladungen", "groupName_en-us": "Advanced Exotic Plasma Charge Blueprint", "groupName_es": "Plano de carga de plasma exótico avanzada", "groupName_fr": "Plan de construction Charge à plasma exotique avancée", "groupName_it": "Advanced Exotic Plasma Charge Blueprint", "groupName_ja": "高性能エキゾチックプラズマチャージ設計図", "groupName_ko": "상급 엑조틱 플라즈마 차지 블루프린트", "groupName_ru": "Чертёж улучшенного заряда экзотической плазмы", "groupName_zh": "高级异种等离子弹药蓝图", "groupNameID": 536433, "published": 1, "useBasePrice": 1 }, "1995": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 1995, "groupName_de": "Triglavianische Daten", "groupName_en-us": "Triglavian Data", "groupName_es": "Datos triglavianos", "groupName_fr": "Données triglavian", "groupName_it": "Triglavian Data", "groupName_ja": "トリグラビアンデータ", "groupName_ko": "트리글라비안 데이터", "groupName_ru": "Сведения о Триглаве", "groupName_zh": "三神裔数据", "groupNameID": 536625, "published": 1, "useBasePrice": 1 }, "1996": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 1996, "groupName_de": "Materialien des Abgrunds", "groupName_en-us": "Abyssal Materials", "groupName_es": "Materiales abisales", "groupName_fr": "Matériaux abyssaux", "groupName_it": "Abyssal Materials", "groupName_ja": "アビサル資源", "groupName_ko": "어비설 자원", "groupName_ru": "Материалы бездны", "groupName_zh": "深渊材料", "groupNameID": 536626, "published": 1, "useBasePrice": 0 }, "1997": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 1997, "groupName_de": "Abgrunddrohneneinheiten", "groupName_en-us": "Abyssal Drone Entities", "groupName_es": "Entidades de drones abisales", "groupName_fr": "Entités-drones abyssales", "groupName_it": "Abyssal Drone Entities", "groupName_ja": "アビサルドローンエンティティ", "groupName_ko": "어비설 드론 객체", "groupName_ru": "Дроны бездны", "groupName_zh": "深渊无人机实体", "groupNameID": 536644, "published": 0, "useBasePrice": 0 }, "1998": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 1998, "groupName_de": "Denkmäler für Stationsumwandlungen", "groupName_en-us": "Station Conversion Monuments", "groupName_es": "Monumentos de transformación de estación", "groupName_fr": "Monuments de conversion de station", "groupName_it": "Station Conversion Monuments", "groupName_ja": "ステーション変換記念碑", "groupName_ko": "정거장 전환 기념비", "groupName_ru": "Монументы преобразования станций", "groupName_zh": "空间站转换纪念碑", "groupNameID": 537031, "published": 0, "useBasePrice": 0 }, "2001": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 2001, "groupName_de": "Citizen-Schiffe", "groupName_en-us": "Citizen Ships", "groupName_es": "Naves civiles", "groupName_fr": "Vaisseaux civils", "groupName_it": "Citizen Ships", "groupName_ja": "市民用艦船", "groupName_ko": "민수용 함선", "groupName_ru": "Гражданские корабли", "groupName_zh": "公民舰船", "groupNameID": 539344, "published": 0, "useBasePrice": 0 }, "2002": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 2002, "groupName_de": "Triglavia-Datenströme", "groupName_en-us": "Triglavian Datastreams", "groupName_es": "Flujo de datos triglavianos", "groupName_fr": "Flux de données triglavian", "groupName_it": "Triglavian Datastreams", "groupName_ja": "トリグラビアン・データストリーム", "groupName_ko": "트리글라비안 데이터스트림", "groupName_ru": "Потоки данных Триглава", "groupName_zh": "三神裔数据流", "groupNameID": 540058, "published": 1, "useBasePrice": 0 }, "2003": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 2003, "groupName_de": "Citizen-Module", "groupName_en-us": "Citizen Modules", "groupName_es": "Módulos civiles", "groupName_fr": "Modules civils", "groupName_it": "Citizen Modules", "groupName_ja": "市民用モジュール", "groupName_ko": "민수용 모듈", "groupName_ru": "Гражданские модули", "groupName_zh": "公民装备", "groupNameID": 540203, "published": 0, "useBasePrice": 0 }, "2004": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 2004, "groupName_de": "Citizen Mining Laser", "groupName_en-us": "Citizen Mining Laser", "groupName_es": "Láser minero civil", "groupName_fr": "Laser d'extraction civil", "groupName_it": "Citizen Mining Laser", "groupName_ja": "市民用採掘レーザー", "groupName_ko": "민수용 채굴 레이저", "groupName_ru": "Citizen Mining Laser", "groupName_zh": "公民采矿激光器", "groupNameID": 540917, "published": 0, "useBasePrice": 0 }, "2005": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 2005, "groupName_de": "Stationierbare Werbung", "groupName_en-us": "Deployable Advertisement", "groupName_es": "Anuncio desplegable", "groupName_fr": "Publicité déployable", "groupName_it": "Deployable Advertisement", "groupName_ja": "配置可能な広告", "groupName_ko": "배치식 홍보 시설", "groupName_ru": "Развёртываемая реклама", "groupName_zh": "可部署广告", "groupNameID": 540934, "published": 1, "useBasePrice": 0 }, "2006": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 2006, "groupName_de": "Raumverwerfungsasteroiden", "groupName_en-us": "Deadspace Asteroids", "groupName_es": "Asteroides del espacio muerto", "groupName_fr": "Astéroïdes Deadspace", "groupName_it": "Deadspace Asteroids", "groupName_ja": "デッドスペースアステロイド", "groupName_ko": "데드스페이스 소행성", "groupName_ru": "Астероиды Мёртвой бездны", "groupName_zh": "死亡空间小行星", "groupNameID": 540968, "published": 0, "useBasePrice": 0 }, "2008": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 2008, "groupName_de": "Massenumschließer", "groupName_en-us": "Mass Entanglers", "groupName_es": "Entrelazadores másicos", "groupName_fr": "Intricateurs de masse", "groupName_it": "Mass Entanglers", "groupName_ja": "質量エンタングラー", "groupName_ko": "매스 인탱글러", "groupName_ru": "Модуляторы массы", "groupName_zh": "质量纠缠装置", "groupNameID": 541740, "iconID": 97, "published": 1, "useBasePrice": 0 }, "2009": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 2009, "groupName_de": "Precursor-Cache", "groupName_en-us": "Precursor Cache", "groupName_es": "Alijo precursor", "groupName_fr": "Cache de précursion", "groupName_it": "Precursor Cache", "groupName_ja": "プリカーサーキャッシュ", "groupName_ko": "프리커서 저장고", "groupName_ru": "Тайник Предтечей", "groupName_zh": "先驱者贮藏", "groupNameID": 541741, "iconID": 0, "published": 0, "useBasePrice": 0 }, "2010": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 2010, "groupName_de": "Blaupausen für Massenumschließer", "groupName_en-us": "Mass Entangler Blueprints", "groupName_es": "Planos de entrelazador másico", "groupName_fr": "Plans de construction Intricateur de masse", "groupName_it": "Mass Entangler Blueprints", "groupName_ja": "質量エンタングラー設計図", "groupName_ko": "매스 인탱글러 블루프린트", "groupName_ru": "Чертежи модуляторов массы", "groupName_zh": "质量纠缠装置蓝图", "groupNameID": 541742, "iconID": 0, "published": 1, "useBasePrice": 1 }, "2013": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 2013, "groupName_de": "Antistasis", "groupName_en-us": "Stasis Nullifiers", "groupName_es": "Anuladores ralentizadores", "groupName_fr": "Anéantisseur de stase", "groupName_it": "Stasis Nullifiers", "groupName_ja": "ステイシスナリファイヤー", "groupName_ko": "정지장 무효화 장치", "groupName_ru": "Стазисные нейтрализаторы", "groupName_zh": "停滞无效光束", "groupNameID": 542675, "published": 1, "useBasePrice": 0 }, "2015": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 2015, "groupName_de": "Upwell-Monument", "groupName_en-us": "Upwell Monument", "groupName_es": "Monumento Upwell", "groupName_fr": "Monument Upwell", "groupName_it": "Upwell Monument", "groupName_ja": "アップウェル記念碑", "groupName_ko": "업웰 기념비", "groupName_ru": "Монумент консорциума «Апвелл»", "groupName_zh": "昇威纪念碑", "groupNameID": 542786, "published": 0, "useBasePrice": 0 }, "2016": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 2016, "groupName_de": "Upwell-Anziehungsstörsender", "groupName_en-us": "Upwell Cyno Jammer", "groupName_es": "Cinoperturbador de Upwell", "groupName_fr": "Brouilleur cynosural Upwell", "groupName_it": "Upwell Cyno Jammer", "groupName_ja": "アップウェル・サイノジャマー", "groupName_ko": "업웰 사이노 재머", "groupName_ru": "Генератор помех приводному маяку «Апвелл»", "groupName_zh": "昇威诱导干扰塔", "groupNameID": 542787, "published": 1, "useBasePrice": 0 }, "2017": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 2017, "groupName_de": "Upwell-Anziehungssignalfeuer", "groupName_en-us": "Upwell Cyno Beacon", "groupName_es": "Cinobaliza de Upwell", "groupName_fr": "Balise cynosurale Upwell", "groupName_it": "Upwell Cyno Beacon", "groupName_ja": "アップウェル・サイノビーコン", "groupName_ko": "업웰 사이노 비컨", "groupName_ru": "Приводной маяк «Апвелл»", "groupName_zh": "昇威诱导信标", "groupNameID": 542788, "published": 1, "useBasePrice": 0 }, "2018": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 2018, "groupName_de": "Mutadaptive Panzerungs-Fernreparatursysteme", "groupName_en-us": "Mutadaptive Remote Armor Repairer", "groupName_es": "Reparador de blindaje remoto mutadaptativo", "groupName_fr": "Réparateur de blindage à distance muta-adaptatif", "groupName_it": "Mutadaptive Remote Armor Repairer", "groupName_ja": "変異順応性リモートアーマーリペアラ", "groupName_ko": "뮤타적응성 원격 장갑수리 장치", "groupName_ru": "Мутадаптивный модуль дистанционного ремонта брони", "groupName_zh": "突变适应远程装甲维修器", "groupNameID": 543772, "iconID": 0, "published": 1, "useBasePrice": 0 }, "2019": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 2019, "groupName_de": "Mutadaptive Panzerungs-Fernreparatursysteme Blaupause", "groupName_en-us": "Mutadaptive Remote Armor Repairer Blueprint", "groupName_es": "Plano de reparador de blindaje remoto mutadaptativo", "groupName_fr": "Plan de construction Réparateur de blindage à distance muta-adaptatif", "groupName_it": "Mutadaptive Remote Armor Repairer Blueprint", "groupName_ja": "変異順応性リモートアーマーリペアラ設計図", "groupName_ko": "뮤타적응성 원격 장갑수리 장치 블루프린트", "groupName_ru": "Чертёж мутадаптивного модуля дистанционного ремонта брони", "groupName_zh": "突变适应远程装甲维修器蓝图", "groupNameID": 543773, "iconID": 0, "published": 1, "useBasePrice": 1 }, "2020": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 2020, "groupName_de": "Cynosural Fields", "groupName_en-us": "Cynosural Fields", "groupName_es": "Campos cinosurales", "groupName_fr": "Champs cynosuraux", "groupName_it": "Cynosural Fields", "groupName_ja": "サイノシュラルフィールド", "groupName_ko": "사이노슈럴 필드", "groupName_ru": "Поля приводных маяков", "groupName_zh": "诱导力场", "groupNameID": 543951, "published": 0, "useBasePrice": 0 }, "2022": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 2022, "groupName_de": "Temporalressourcen", "groupName_en-us": "Temporal Resources", "groupName_es": "Recursos temporales", "groupName_fr": "Ressources temporelles", "groupName_it": "Temporal Resources", "groupName_ja": "一時的資源", "groupName_ko": "임시 자원", "groupName_ru": "Временные ресурсы", "groupName_zh": "临时资源", "groupNameID": 544772, "published": 0, "useBasePrice": 1 }, "2023": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 2023, "groupName_de": "Cyber Electronics Implant Blueprints", "groupName_en-us": "Cyber Electronics Implant Blueprints", "groupName_es": "Planos de ciberimplantes electrónicos", "groupName_fr": "Plans de construction Implant électronique cybernétique", "groupName_it": "Cyber Electronics Implant Blueprints", "groupName_ja": "サイバーエレクトロニクス・インプラント設計図", "groupName_ko": "사이버 전자기기 임플란트 블루프린트", "groupName_ru": "Чертежи электронного киберимпланта", "groupName_zh": "网络电子植入体蓝图", "groupNameID": 545577, "iconID": 0, "published": 1, "useBasePrice": 0 }, "2024": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 2024, "groupName_de": "Fluorit", "groupName_en-us": "Fluorite", "groupName_es": "Fluorita", "groupName_fr": "Fluorite", "groupName_it": "Fluorite", "groupName_ja": "フローライト", "groupName_ko": "플루오라이트", "groupName_ru": "Флюорит", "groupName_zh": "萤石", "groupNameID": 545621, "published": 0, "useBasePrice": 0 }, "2026": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 2026, "groupName_de": "Triglavia-Artefakte", "groupName_en-us": "Triglavian Artifacts", "groupName_es": "Artefactos triglavianos", "groupName_fr": "Artefacts triglavian", "groupName_it": "Triglavian Artifacts", "groupName_ja": "トリグラビアンの遺物", "groupName_ko": "트리글라비안 유물", "groupName_ru": "Артефакты Триглава", "groupName_zh": "三神裔古物", "groupNameID": 546328, "published": 0, "useBasePrice": 0 }, "4028": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4028, "groupName_de": "Triglavia-Entitäten", "groupName_en-us": "Triglavian Entities", "groupName_es": "Entidades triglavianas", "groupName_fr": "Entités triglavian", "groupName_it": "Triglavian Entities", "groupName_ja": "トリグラビアンエンティティ", "groupName_ko": "트리글라비안 객체", "groupName_ru": "Объекты Триглава", "groupName_zh": "三神裔实体", "groupNameID": 549007, "published": 0, "useBasePrice": 0 }, "4029": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4029, "groupName_de": "Talassonit", "groupName_en-us": "Talassonite", "groupName_es": "Talasonita", "groupName_fr": "Talassonite", "groupName_it": "Talassonite", "groupName_ja": "タラソナイト", "groupName_ko": "탈라소나이트", "groupName_ru": "Talassonite", "groupName_zh": "塔拉岩", "groupNameID": 549008, "published": 1, "useBasePrice": 0 }, "4030": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4030, "groupName_de": "Rakovene", "groupName_en-us": "Rakovene", "groupName_es": "Rakovena", "groupName_fr": "Rakovene", "groupName_it": "Rakovene", "groupName_ja": "ラコベネ", "groupName_ko": "라코벤", "groupName_ru": "Rakovene", "groupName_zh": "拉克岩", "groupNameID": 549009, "published": 1, "useBasePrice": 0 }, "4031": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4031, "groupName_de": "Bezdnazin", "groupName_en-us": "Bezdnacine", "groupName_es": "Bezdnacina", "groupName_fr": "Bezdnacine", "groupName_it": "Bezdnacine", "groupName_ja": "ベズドナシン", "groupName_ko": "베즈드나신", "groupName_ru": "Bezdnacine", "groupName_zh": "贝兹岩", "groupNameID": 549010, "published": 1, "useBasePrice": 0 }, "4033": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4033, "groupName_de": "Zerstörungseffekt-Signalfeuer", "groupName_en-us": "Destructible Effect Beacon", "groupName_es": "Baliza de efecto destructible", "groupName_fr": "Balise d'effet destructible", "groupName_it": "Destructible Effect Beacon", "groupName_ja": "破壊効果ビーコン", "groupName_ko": "파괴 효과 비컨", "groupName_ru": "Маяк разрушительного эффекта", "groupName_zh": "可摧毁的效果信标", "groupNameID": 551791, "published": 0, "useBasePrice": 0 }, "4034": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4034, "groupName_de": "EDENCOM-Entitäten", "groupName_en-us": "EDENCOM Entities", "groupName_es": "Entidades de EDENCOM", "groupName_fr": "Entités EDENCOM", "groupName_it": "EDENCOM Entities", "groupName_ja": "EDENCOMエンティティ", "groupName_ko": "EDENCOM 객체", "groupName_ru": "Объекты ЭДЕНКОМа", "groupName_zh": "伊甸联合防御阵线实体", "groupNameID": 552396, "published": 0, "useBasePrice": 0 }, "4035": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4035, "groupName_de": "Drifter-Entitäten", "groupName_en-us": "Drifter Entities", "groupName_es": "Entidades de drifter", "groupName_fr": "Entités drifter", "groupName_it": "Drifter Entities", "groupName_ja": "ドリフターエンティティ", "groupName_ko": "드리프터 객체", "groupName_ru": "Объекты скитальцев", "groupName_zh": "流浪者实体", "groupNameID": 552397, "published": 0, "useBasePrice": 0 }, "4036": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4036, "groupName_de": "Sleeper-Entitäten", "groupName_en-us": "Sleeper Entities", "groupName_es": "Entidades de Sleepers", "groupName_fr": "Entités sleeper", "groupName_it": "Sleeper Entities", "groupName_ja": "スリーパーエンティティ", "groupName_ko": "슬리퍼 객체", "groupName_ru": "Объекты Спящих", "groupName_zh": "冬眠者实体", "groupNameID": 552398, "published": 0, "useBasePrice": 0 }, "4037": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4037, "groupName_de": "Raubdrohnen-Entitäten", "groupName_en-us": "Rogue Drone Entities", "groupName_es": "Entidades de drones rebeldes", "groupName_fr": "Entités drones renégats", "groupName_it": "Rogue Drone Entities", "groupName_ja": "ローグドローンエンティティ", "groupName_ko": "로그 드론 객체", "groupName_ru": "Объекты восставших дронов", "groupName_zh": "自由无人机实体", "groupNameID": 552399, "published": 0, "useBasePrice": 0 }, "4040": { "anchorable": 0, "anchored": 0, "categoryID": 91, "fittableNonSingleton": 0, "groupID": 4040, "groupName_de": "180-Tage-SKIN", "groupName_en-us": "180-Day SKIN", "groupName_es": "SKIN de 180 días", "groupName_fr": "SKIN 180 jours", "groupName_it": "180-Day SKIN", "groupName_ja": "180日間SKIN", "groupName_ko": "180일 SKIN", "groupName_ru": "Окраска на 180 дней", "groupName_zh": "180天涂装", "groupNameID": 553262, "published": 1, "useBasePrice": 0 }, "4041": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4041, "groupName_de": "Sprungfilamente", "groupName_en-us": "Jump Filaments", "groupName_es": "Filamentos de salto", "groupName_fr": "Filaments de saut", "groupName_it": "Jump Filaments", "groupName_ja": "ジャンプフィラメント", "groupName_ko": "점프 필라멘트", "groupName_ru": "Прыжковые нити", "groupName_zh": "跳跃纤维", "groupNameID": 553695, "published": 1, "useBasePrice": 0 }, "4050": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4050, "groupName_de": "Testfilamente des Abgrunds", "groupName_en-us": "Abyssal Proving Filaments", "groupName_es": "Filamento de pruebas abisal", "groupName_fr": "Filaments d'expérimentation abyssaux", "groupName_it": "Abyssal Proving Filaments", "groupName_ja": "アビサル試験用フィラメント", "groupName_ko": "어비설 격전 필라멘트", "groupName_ru": "Полигонные нити Бездны", "groupName_zh": "深渊试炼纤维", "groupNameID": 559431, "published": 1, "useBasePrice": 0 }, "4052": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4052, "groupName_de": "Sprungfilament-Blaupause", "groupName_en-us": "Jump Filament Blueprint", "groupName_es": "Plano de filamento de salto", "groupName_fr": "Plan de construction de filament de saut", "groupName_it": "Jump Filament Blueprint", "groupName_ja": "ジャンプフィラメント設計図", "groupName_ko": "점프 필라멘트 블루프린트", "groupName_ru": "Чертеж прыжковых нитей", "groupName_zh": "跳跃纤维蓝图", "groupNameID": 560666, "published": 1, "useBasePrice": 0 }, "4053": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4053, "groupName_de": "Irregular Capsule", "groupName_en-us": "Irregular Capsule", "groupName_es": "Cápsula irregular", "groupName_fr": "Capsule Irregular", "groupName_it": "Irregular Capsule", "groupName_ja": "非正規カプセル", "groupName_ko": "비정상적인 캡슐", "groupName_ru": "Irregular Capsule", "groupName_zh": "异常太空舱", "groupNameID": 561629, "published": 0, "useBasePrice": 0 }, "4055": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4055, "groupName_de": "Unsichtbares Signalfeuer", "groupName_en-us": "Invisible Beacon", "groupName_es": "Baliza invisible", "groupName_fr": "Balise invisible", "groupName_it": "Invisible Beacon", "groupName_ja": "不可視ビーコン", "groupName_ko": "투명 비컨", "groupName_ru": "Невидимый маяк", "groupName_zh": "看不见的信标", "groupNameID": 562903, "published": 0, "useBasePrice": 0 }, "4057": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 4057, "groupName_de": "Masken", "groupName_en-us": "Masks", "groupName_es": "Máscaras", "groupName_fr": "Masques", "groupName_it": "Masks", "groupName_ja": "マスク", "groupName_ko": "마스크", "groupName_ru": "Маски", "groupName_zh": "面具", "groupNameID": 563630, "published": 1, "useBasePrice": 0 }, "4060": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4060, "groupName_de": "Vorton-Projektor", "groupName_en-us": "Vorton Projector", "groupName_es": "Proyector vortónico", "groupName_fr": "Projecteur de vortons", "groupName_it": "Vorton Projector", "groupName_ja": "ヴォートンプロジェクター", "groupName_ko": "보르톤 프로젝터", "groupName_ru": "Вортонный проектор", "groupName_zh": "电弧弦投射器", "groupNameID": 563701, "published": 1, "useBasePrice": 0 }, "4061": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 4061, "groupName_de": "Fortschrittliches Kondensator-Paket", "groupName_en-us": "Advanced Condenser Pack", "groupName_es": "Paquete de condensadores avanzados", "groupName_fr": "Pack de condensateur avancé", "groupName_it": "Advanced Condenser Pack", "groupName_ja": "高性能コンデンサーパック", "groupName_ko": "상급 콘덴서 팩", "groupName_ru": "Улучшенный набор конденсаторов", "groupName_zh": "高级电容包", "groupNameID": 563793, "published": 1, "useBasePrice": 0 }, "4062": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 0, "groupID": 4062, "groupName_de": "Kondensator-Paket", "groupName_en-us": "Condenser Pack", "groupName_es": "Paquete de condensadores", "groupName_fr": "Pack de condensateur", "groupName_it": "Condenser Pack", "groupName_ja": "コンデンサーパック", "groupName_ko": "콘덴서 팩", "groupName_ru": "Набор конденсаторов", "groupName_zh": "电容包", "groupNameID": 563792, "published": 1, "useBasePrice": 0 }, "4064": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4064, "groupName_de": "Vorton-Projektor-Blaupause", "groupName_en-us": "Vorton Projector Blueprint", "groupName_es": "Plano de proyector vortónico", "groupName_fr": "Plan de construction Projecteur de vortons", "groupName_it": "Vorton Projector Blueprint", "groupName_ja": "ヴォートンプロジェクター設計図", "groupName_ko": "보르톤 프로젝터 블루프린트", "groupName_ru": "Чертёж вортонного проектора", "groupName_zh": "电弧弦投射器蓝图", "groupNameID": 564057, "published": 1, "useBasePrice": 0 }, "4065": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4065, "groupName_de": "Blaupause für Kondensator-Paket", "groupName_en-us": "Condenser Pack Blueprint", "groupName_es": "Plano de paquete de condensadores", "groupName_fr": "Plan de construction Pack de condensateur", "groupName_it": "Condenser Pack Blueprint", "groupName_ja": "コンデンサーパック設計図", "groupName_ko": "콘덴서 팩 블루프린트", "groupName_ru": "Чертёж набора конденсаторов", "groupName_zh": "电容包蓝图", "groupNameID": 564058, "published": 1, "useBasePrice": 0 }, "4066": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4066, "groupName_de": "Blaupause für fortschrittliches Kondensator-Paket", "groupName_en-us": "Advanced Condenser Pack Blueprint", "groupName_es": "Plano de paquete de condensadores avanzados", "groupName_fr": "Plan de construction Pack de condensateur avancé", "groupName_it": "Advanced Condenser Pack Blueprint", "groupName_ja": "高性能コンデンサーパック設計図", "groupName_ko": "상급 콘덴서 팩 블루프린트", "groupName_ru": "Чертёж улучшенного набора конденсаторов", "groupName_zh": "高级电容包蓝图", "groupNameID": 564059, "published": 1, "useBasePrice": 0 }, "4067": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4067, "groupName_de": "Vorton-Projektor-Upgrade", "groupName_en-us": "Vorton Projector Upgrade", "groupName_es": "Mejora de proyector vortónico", "groupName_fr": "Amélioration de projecteur de vortons", "groupName_it": "Vorton Projector Upgrade", "groupName_ja": "ヴォートンプロジェクターアップグレード", "groupName_ko": "보르톤 프로젝터 업그레이드", "groupName_ru": "Улучшение вортонного проектора", "groupName_zh": "电弧弦投射器升级装备", "groupNameID": 564488, "published": 1, "useBasePrice": 0 }, "4069": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4069, "groupName_de": "Blaupausen für Vorton-Projektor-Upgrade", "groupName_en-us": "Vorton Projector Upgrade Blueprints", "groupName_es": "Plano de mejora de proyector vortónico", "groupName_fr": "Plans de construction Amélioration de projecteur de vortons", "groupName_it": "Vorton Projector Upgrade Blueprints", "groupName_ja": "ヴォートンプロジェクターアップグレード設計図", "groupName_ko": "보르톤 프로젝터 업그레이드 블루프린트", "groupName_ru": "Чертежи улучшения вортонного проектора", "groupName_zh": "电弧弦投射器升级装备蓝图", "groupNameID": 564489, "published": 1, "useBasePrice": 0 }, "4070": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4070, "groupName_de": "Exotisches Artefakt", "groupName_en-us": "Exotic Artefact", "groupName_es": "Artefacto exótico", "groupName_fr": "Artéfact exotique", "groupName_it": "Exotic Artefact", "groupName_ja": "エキゾチック遺物", "groupName_ko": "신비한 아티팩트", "groupName_ru": "Экзотический артефакт", "groupName_zh": "异种手工制品", "groupNameID": 564553, "published": 1, "useBasePrice": 0 }, "4071": { "anchorable": 0, "anchored": 0, "categoryID": 29, "fittableNonSingleton": 0, "groupID": 4071, "groupName_de": "Type Graveyard", "groupName_en-us": "Type Graveyard", "groupName_es": "Cementerio de tipos", "groupName_fr": "Type Graveyard", "groupName_it": "Type Graveyard", "groupName_ja": "タイプ墓地", "groupName_ko": "무덤 종류", "groupName_ru": "Типовое кладбище", "groupName_zh": "物品坟场", "groupNameID": 567090, "published": 0, "useBasePrice": 0 }, "4072": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4072, "groupName_de": "Abgelaufene Sprungfilamente", "groupName_en-us": "Expired Jump Filaments", "groupName_es": "Filamentos de salto caducados", "groupName_fr": "Filaments de saut expirés", "groupName_it": "Expired Jump Filaments", "groupName_ja": "期限切れジャンプフィラメント", "groupName_ko": "만료된 점프 필라멘트", "groupName_ru": "Просроченные прыжковые нити", "groupName_zh": "过期的跳跃纤维", "groupNameID": 567348, "published": 1, "useBasePrice": 0 }, "4073": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4073, "groupName_de": "Temporäre, statische Struktur", "groupName_en-us": "Temporary Collidable Structure", "groupName_es": "Estructura colisionable temporal", "groupName_fr": "Structure solide temporaire", "groupName_it": "Temporary Collidable Structure", "groupName_ja": "一時破壊可能なストラクチャ", "groupName_ko": "임시 충돌체 (구조물)", "groupName_ru": "Временное разрушаемое сооружение", "groupName_zh": "临时性可碰撞建筑", "groupNameID": 567507, "iconID": 0, "published": 0, "useBasePrice": 0 }, "4079": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4079, "groupName_de": "Gefechtsüberwachungssystem", "groupName_en-us": "Encounter Surveillance System", "groupName_es": "Sistema de vigilancia de encuentros", "groupName_fr": "Système de surveillance des affrontements", "groupName_it": "Encounter Surveillance System", "groupName_ja": "対戦監視システム", "groupName_ko": "교전 감시 시스템", "groupName_ru": "Система наблюдения за столкновениями", "groupName_zh": "事件监测装置", "groupNameID": 567933, "published": 1, "useBasePrice": 0 }, "4081": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4081, "groupName_de": "Gestörtes Tor", "groupName_en-us": "Disrupted Gate", "groupName_es": "Portal interrumpido", "groupName_fr": "Portail perturbé", "groupName_it": "Disrupted Gate", "groupName_ja": "不通になったゲート", "groupName_ko": "교란된 게이트", "groupName_ru": "Нестабильные гиперврата", "groupName_zh": "受干扰的星门", "groupNameID": 568254, "published": 0, "useBasePrice": 0 }, "4086": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 4086, "groupName_de": "Quantumkerne", "groupName_en-us": "Quantum Cores", "groupName_es": "Núcleos cuánticos", "groupName_fr": "Réacteurs quantiques", "groupName_it": "Quantum Cores", "groupName_ja": "クアンタムコア", "groupName_ko": "양자코어", "groupName_ru": "Квантовые ядра", "groupName_zh": "量子芯", "groupNameID": 569641, "published": 1, "useBasePrice": 1 }, "4087": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4087, "groupName_de": "Triglavia-Weltraum-Filamente", "groupName_en-us": "Triglavian Space Filaments", "groupName_es": "Filamentos del espacio triglaviano", "groupName_fr": "Filaments de l'espace triglavian", "groupName_it": "Triglavian Space Filaments", "groupName_ja": "トリグラビアン宙域フィラメント", "groupName_ko": "트리글라비안 우주 필라멘트", "groupName_ru": "Нити пространства Триглава", "groupName_zh": "三神裔星系纤维", "groupNameID": 571069, "published": 1, "useBasePrice": 1 }, "4088": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 4088, "groupName_de": "Burst-Unterbrechungssonden", "groupName_en-us": "Interdiction Burst Probes", "groupName_es": "Sondas de ráfaga de interdicción", "groupName_fr": "Sondes de salves d'interdiction", "groupName_it": "Interdiction Burst Probes", "groupName_ja": "インターディクション・バーストプローブ", "groupName_ko": "인터딕션 버스트 프로브", "groupName_ru": "Заградительные импульсные зонды", "groupName_zh": "拦截脉冲波探针", "groupNameID": 571813, "iconID": 1721, "published": 1, "useBasePrice": 0 }, "4090": { "anchorable": 0, "anchored": 0, "categoryID": 2100, "fittableNonSingleton": 0, "groupID": 4090, "groupName_de": "QA Expert Systems", "groupName_en-us": "QA Expert Systems", "groupName_es": "Sistemas expertos de control de calidad", "groupName_fr": "QA Expert Systems", "groupName_it": "QA Expert Systems", "groupName_ja": "QA Expert Systems", "groupName_ko": "QA Expert Systems", "groupName_ru": "QA Expert Systems", "groupName_zh": "QA专家系统", "groupNameID": 573417, "published": 0, "useBasePrice": 0 }, "4091": { "anchorable": 0, "anchored": 0, "categoryID": 2100, "fittableNonSingleton": 0, "groupID": 4091, "groupName_de": "Standard-Expertensysteme", "groupName_en-us": "Standard Expert Systems", "groupName_es": "Sistemas expertos estándar", "groupName_fr": "Systèmes experts standards", "groupName_it": "Standard Expert Systems", "groupName_ja": "標準エキスパートシステム", "groupName_ko": "일반 전문가 시스템", "groupName_ru": "Стандартные экспертные системы", "groupName_zh": "标准专家系统", "groupNameID": 573608, "published": 1, "useBasePrice": 0 }, "4093": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4093, "groupName_de": "Mobiles Anziehungssignalfeuer", "groupName_en-us": "Mobile Cynosural Beacon", "groupName_es": "Baliza cinosural móvil", "groupName_fr": "Balise cynosurale mobile", "groupName_it": "Mobile Cynosural Beacon", "groupName_ja": "移動式サイノシュラルビーコン", "groupName_ko": "이동식 사이노슈럴 비컨", "groupName_ru": "Мобильный приводной маяк", "groupName_zh": "移动式诱导信标", "groupNameID": 574152, "published": 1, "useBasePrice": 0 }, "4094": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4094, "groupName_de": "Skalierbarer dekorativer Asteroid", "groupName_en-us": "Scalable Decorative Asteroid", "groupName_es": "Asteroide decorativo escalable", "groupName_fr": "Astéroïde décoratif ajustable", "groupName_it": "Scalable Decorative Asteroid", "groupName_ja": "拡張可能な装飾用アステロイド", "groupName_ko": "확장형 소행성", "groupName_ru": "Масштабируемый декоративный астероид", "groupName_zh": "可调整装饰性小行星", "groupNameID": 574662, "published": 0, "useBasePrice": 0 }, "4095": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4095, "groupName_de": "Blaupause für mobile Anziehungssignalfeuer", "groupName_en-us": "Mobile Cynosural Beacon Blueprint", "groupName_es": "Plano de baliza cinosural móvil", "groupName_fr": "Plan de construction Balise cynosurale mobile", "groupName_it": "Mobile Cynosural Beacon Blueprint", "groupName_ja": "移動式サイノシュラルビーコン設計図", "groupName_ko": "이동식 사이노슈럴 비컨 블루프린트", "groupName_ru": "Чертёж мобильного приводного маяка", "groupName_zh": "移动式诱导信标蓝图", "groupNameID": 574835, "published": 1, "useBasePrice": 1 }, "4096": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 4096, "groupName_de": "Molekulargeschmiedete Materialien", "groupName_en-us": "Molecular-Forged Materials", "groupName_es": "Materiales de forja molecular", "groupName_fr": "Matériaux issus du forgeage moléculaire", "groupName_it": "Molecular-Forged Materials", "groupName_ja": "分子加工型資源", "groupName_ko": "분자 결합 재료", "groupName_ru": "Молекулярно модифицированные материалы", "groupName_zh": "分子熔铸材料", "groupNameID": 575002, "published": 1, "useBasePrice": 1 }, "4097": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4097, "groupName_de": "Molekulargeschmiedete Reaktionsformeln", "groupName_en-us": "Molecular-Forged Reaction Formulas", "groupName_es": "Fórmulas reactivas de forja molecular", "groupName_fr": "Formules de réaction par forgeage moléculaire", "groupName_it": "Molecular-Forged Reaction Formulas", "groupName_ja": "分子加工型反応フォーミュラ", "groupName_ko": "분자 결합 반응식", "groupName_ru": "Формулы молекулярной реакции", "groupName_zh": "分子熔铸反应配方", "groupNameID": 575003, "published": 1, "useBasePrice": 1 }, "4098": { "anchorable": 0, "anchored": 0, "categoryID": 2100, "fittableNonSingleton": 0, "groupID": 4098, "groupName_de": "Expertensysteme im Angebot", "groupName_en-us": "Promotional Expert Systems", "groupName_es": "Sistemas expertos promocionales", "groupName_fr": "Systèmes experts promotionnels", "groupName_it": "Promotional Expert Systems", "groupName_ja": "プロモーション用エキスパートシステム", "groupName_ko": "홍보용 전문가 시스템", "groupName_ru": "Особые экспертные системы", "groupName_zh": "推广专家系统", "groupNameID": 575183, "published": 1, "useBasePrice": 0 }, "4100": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4100, "groupName_de": "Logo Display-Monument", "groupName_en-us": "Logo Display Monument", "groupName_es": "Monumento de pantalla con logo", "groupName_fr": "Monument d'affichage du logo", "groupName_it": "Logo Display Monument", "groupName_ja": "ロゴディスプレイ記念碑", "groupName_ko": "로고 표시 기념비", "groupName_ru": "Монумент для отображения логотипа", "groupName_zh": "图标展示纪念碑", "groupNameID": 575536, "published": 0, "useBasePrice": 0 }, "4102": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4102, "groupName_de": "ESS-Reservebank-Schlüssel", "groupName_en-us": "ESS Reserve Bank Keys", "groupName_es": "Llaves del Banco de Reserva del SVE", "groupName_fr": "Clés de la banque de réserve du SSA", "groupName_it": "ESS Reserve Bank Keys", "groupName_ja": "ESS予備バンクキー", "groupName_ko": "ESS 예비 저장고 보안키", "groupName_ru": "Ключи от резервного банка СНС", "groupName_zh": "事件监测装置赏金池密钥", "groupNameID": 575815, "published": 1, "useBasePrice": 0 }, "4105": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4105, "groupName_de": "Unidentifizierte Entitäten", "groupName_en-us": "Unidentified Entities", "groupName_es": "Entidades no identificadas", "groupName_fr": "Entités non identifiées", "groupName_it": "Unidentified Entities", "groupName_ja": "未確認エンティティ", "groupName_ko": "미확인 객체", "groupName_ru": "Неопознанные объекты", "groupName_zh": "不明实体", "groupNameID": 576839, "published": 0, "useBasePrice": 0 }, "4106": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4106, "groupName_de": "AIR-Entitäten I", "groupName_en-us": "AIR Entities I", "groupName_es": "Entidades de AIR I", "groupName_fr": "Entités de l'AIR I", "groupName_it": "AIR Entities I", "groupName_ja": "AIRエンティティI", "groupName_ko": "AIR 객체 I", "groupName_ru": "Объекты АМИ I", "groupName_zh": "星空会实体 I", "groupNameID": 576840, "published": 0, "useBasePrice": 0 }, "4107": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4107, "groupName_de": "Mobile Observatory", "groupName_en-us": "Mobile Observatory", "groupName_es": "Observatorio móvil", "groupName_fr": "Observatoire mobile", "groupName_it": "Mobile Observatory", "groupName_ja": "移動式観測所", "groupName_ko": "이동식 관측소", "groupName_ru": "Mobile Observatory", "groupName_zh": "移动观测站", "groupNameID": 580887, "published": 1, "useBasePrice": 0 }, "4108": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4108, "groupName_de": "Mobile Observatory Blueprint", "groupName_en-us": "Mobile Observatory Blueprint", "groupName_es": "Plano de observatorio móvil", "groupName_fr": "Plan de construction Observatoire mobile", "groupName_it": "Mobile Observatory Blueprint", "groupName_ja": "移動式観測所設計図", "groupName_ko": "이동식 관측소 블루프린트", "groupName_ru": "Mobile Observatory Blueprint", "groupName_zh": "移动观测站蓝图", "groupNameID": 580889, "published": 1, "useBasePrice": 1 }, "4117": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4117, "groupName_de": "Anti-Unterbrecher", "groupName_en-us": "Interdiction Nullifier", "groupName_es": "Anulador de interdicción", "groupName_fr": "Contremesure d’interdiction", "groupName_it": "Interdiction Nullifier", "groupName_ja": "インターディクション無効化", "groupName_ko": "인터딕션 무효화 장치", "groupName_ru": "Нейтрализатор варп-заграждений", "groupName_zh": "拦截失效装置", "groupNameID": 581418, "published": 1, "useBasePrice": 0 }, "4118": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4118, "groupName_de": "Anti-Unterbrecher-Blaupause", "groupName_en-us": "Interdiction Nullifier Blueprint", "groupName_es": "Plano de anulador de interdicción", "groupName_fr": "Plan de construction Contremesure d’interdiction", "groupName_it": "Interdiction Nullifier Blueprint", "groupName_ja": "インターディクション無効化設計図", "groupName_ko": "인터딕션 무효화 장치 블루프린트", "groupName_ru": "Чертёж нейтрализатора варп-заграждений", "groupName_zh": "拦截失效装置蓝图", "groupNameID": 581436, "iconID": 0, "published": 1, "useBasePrice": 1 }, "4127": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4127, "groupName_de": "Generator für getarnte Sprungtore", "groupName_en-us": "Covert Jump Portal Generator", "groupName_es": "Generador de portales de salto encubierto", "groupName_fr": "Générateur de portail interstellaire furtif", "groupName_it": "Covert Jump Portal Generator", "groupName_ja": "潜伏用ジャンプポータルジェネレーター", "groupName_ko": "코버트 점프 포탈 생성기", "groupName_ru": "Диверсионный генератор гиперпорталов", "groupName_zh": "隐秘跳跃通道发生器", "groupNameID": 582723, "iconID": 0, "published": 1, "useBasePrice": 0 }, "4128": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4128, "groupName_de": "AIR-Entitäten II", "groupName_en-us": "AIR Entities II", "groupName_es": "Entidades de AIR II", "groupName_fr": "Entités de l'AIR II", "groupName_it": "AIR Entities II", "groupName_ja": "AIRエンティティII", "groupName_ko": "AIR 객체 II", "groupName_ru": "Объекты АМИ II", "groupName_zh": "星空会实体 II", "groupNameID": 582726, "published": 0, "useBasePrice": 0 }, "4130": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4130, "groupName_de": "Unidentifizierte Entitäten II", "groupName_en-us": "Unidentified Entities II", "groupName_es": "Entidades no identificadas II", "groupName_fr": "Entités non identifiées II", "groupName_it": "Unidentified Entities II", "groupName_ja": "未確認エンティティII", "groupName_ko": "미확인 객체 II", "groupName_ru": "Неопознанные объекты II", "groupName_zh": "不明实体 II", "groupNameID": 583913, "published": 0, "useBasePrice": 0 }, "4137": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4137, "groupName_de": "Mobiles Analysesignalfeuer", "groupName_en-us": "Mobile Analysis Beacon", "groupName_es": "Baliza de análisis móvil", "groupName_fr": "Balise d'analyse mobile", "groupName_it": "Mobile Analysis Beacon", "groupName_ja": "移動式解析ビーコン", "groupName_ko": "이동식 분석 비컨", "groupName_ru": "Мобильный маяк анализа", "groupName_zh": "移动式分析信标", "groupNameID": 586787, "published": 1, "useBasePrice": 1 }, "4138": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4138, "groupName_de": "Gaswolken-Extraktoren", "groupName_en-us": "Gas Cloud Harvesters", "groupName_es": "Cosechadoras de nubes de gas", "groupName_fr": "Collecteurs de nuages de gaz", "groupName_it": "Gas Cloud Harvesters", "groupName_ja": "ガス雲採掘機", "groupName_ko": "가스 하베스터", "groupName_ru": "Сборщики газовых облаков", "groupName_zh": "气云采集器", "groupNameID": 587196, "published": 1, "useBasePrice": 0 }, "4139": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4139, "groupName_de": "Gas-Extraktor-Blaupause", "groupName_en-us": "Gas Harvester Blueprint", "groupName_es": "Plano de cosechadora de gas", "groupName_fr": "Plan de construction Collecteur de gaz", "groupName_it": "Gas Harvester Blueprint", "groupName_ja": "ガス採掘機設計図", "groupName_ko": "가스 하베스터 블루프린트", "groupName_ru": "Чертёж установки для сбора газа", "groupName_zh": "气云采集器蓝图", "groupNameID": 587314, "published": 1, "useBasePrice": 1 }, "4141": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4141, "groupName_de": "Blaupause für mobile Analysesignalfeuer", "groupName_en-us": "Mobile Analysis Beacon Blueprint", "groupName_es": "Plano de baliza de análisis móvil", "groupName_fr": "Plan de construction Balise d'analyse mobile", "groupName_it": "Mobile Analysis Beacon Blueprint", "groupName_ja": "移動式解析ビーコン設計図", "groupName_ko": "이동식 분석 비컨 블루프린트", "groupName_ru": "Чертёж мобильного маяка анализа", "groupName_zh": "移动式分析信标蓝图", "groupNameID": 588137, "published": 1, "useBasePrice": 1 }, "4142": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4142, "groupName_de": "Raubdrohnen-Analysedaten", "groupName_en-us": "Rogue Drone Analysis Data", "groupName_es": "Datos de análisis de drones rebeldes", "groupName_fr": "Données d'analyse de drone renégat", "groupName_it": "Rogue Drone Analysis Data", "groupName_ja": "ローグドローン解析データ", "groupName_ko": "로그 드론 분석 데이터", "groupName_ru": "Данные анализа восставших дронов", "groupName_zh": "自由无人机分析数据", "groupNameID": 588315, "published": 1, "useBasePrice": 1 }, "4145": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4145, "groupName_de": "Warp-Matrix-Filamente", "groupName_en-us": "Warp Matrix Filaments", "groupName_es": "Filamentos de matriz de warp", "groupName_fr": "Filaments de matrice de warp", "groupName_it": "Warp Matrix Filaments", "groupName_ja": "ワープマトリクス・フィラメント", "groupName_ko": "워프 매트릭스 필라멘트", "groupName_ru": "Варп-матричные нити", "groupName_zh": "跃迁矩阵纤维", "groupNameID": 588713, "published": 1, "useBasePrice": 1 }, "4161": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4161, "groupName_de": "AIR-Erzasteroid-Ressourcen", "groupName_en-us": "AIR Ore Asteroid Resources", "groupName_es": "Recursos asteroidales de menas de AIR", "groupName_fr": "Ressources d'astéroïde à minerai de l'AIR", "groupName_it": "AIR Ore Asteroid Resources", "groupName_ja": "AIR鉱石アステロイド資源", "groupName_ko": "AIR 소행성 광물", "groupName_ru": "AIR Ore Asteroid Resources", "groupName_zh": "星空会矿石小行星资源", "groupNameID": 592233, "published": 0, "useBasePrice": 1 }, "4165": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4165, "groupName_de": "Eigenartige Materialien", "groupName_en-us": "Peculiar Materials", "groupName_es": "Materiales peculiares", "groupName_fr": "Matériaux étranges", "groupName_it": "Peculiar Materials", "groupName_ja": "奇妙な資源", "groupName_ko": "기묘한 재료", "groupName_ru": "Любопытные материалы", "groupName_zh": "奇特材料", "groupNameID": 592992, "published": 1, "useBasePrice": 1 }, "4168": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4168, "groupName_de": "Komprimiertes Gas", "groupName_en-us": "Compressed Gas", "groupName_es": "Gas comprimido", "groupName_fr": "Gaz comprimé", "groupName_it": "Compressed Gas", "groupName_ja": "圧縮ガス", "groupName_ko": "압축된 가스", "groupName_ru": "Сжатый газ", "groupName_zh": "高密度气云", "groupNameID": 594612, "iconID": 25169, "published": 1, "useBasePrice": 0 }, "4174": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4174, "groupName_de": "Kompressoren", "groupName_en-us": "Compressors", "groupName_es": "Compresores", "groupName_fr": "Compresseurs", "groupName_it": "Compressors", "groupName_ja": "圧縮装置", "groupName_ko": "압축기", "groupName_ru": "Компрессоры", "groupName_zh": "压缩装置", "groupNameID": 595063, "iconID": 25152, "published": 1, "useBasePrice": 1 }, "4175": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4175, "groupName_de": "Kompressor-Blaupausen", "groupName_en-us": "Compressors Blueprints", "groupName_es": "Planos de compresores", "groupName_fr": "Plans de construction Compresseurs", "groupName_it": "Compressors Blueprints", "groupName_ja": "圧縮装置設計図", "groupName_ko": "압축기 블루프린트", "groupName_ru": "Чертежи компрессоров", "groupName_zh": "压缩装置蓝图", "groupNameID": 595230, "published": 1, "useBasePrice": 1 }, "4184": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4184, "groupName_de": "Industrieller Sprungtorgenerator", "groupName_en-us": "Industrial Jump Portal Generator", "groupName_es": "Generador de portales de salto industrial", "groupName_fr": "Générateur de portail interstellaire industriel", "groupName_it": "Industrial Jump Portal Generator", "groupName_ja": "インダストリアル・ジャンプポータルジェネレーター", "groupName_ko": "인더스트리얼 점프 포탈 생성기", "groupName_ru": "Industrial Jump Portal Generator", "groupName_zh": "工业舰跳跃通道发生器", "groupNameID": 596753, "iconID": 0, "published": 1, "useBasePrice": 0 }, "4186": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 4186, "groupName_de": "Struktur: Flächenverteidigungsmunition", "groupName_en-us": "Structure Area Denial Ammunition", "groupName_es": "Munición de negación de área de estructura", "groupName_fr": "Munition d'interdiction de zone de structure", "groupName_it": "Structure Area Denial Ammunition", "groupName_ja": "ストラクチャ領域拒否弾薬", "groupName_ko": "구조물 반접근 탄약", "groupName_ru": "Боеприпасы для систем обороны сооружений", "groupName_zh": "建筑区域拒止弹药", "groupNameID": 597623, "iconID": 1304, "published": 1, "useBasePrice": 0 }, "4188": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4188, "groupName_de": "Blaupause für Struktur: Flächenverteidigungsmunition", "groupName_en-us": "Structure Area Denial Ammo Blueprint", "groupName_es": "Plano de munición de negación de zona para estructuras", "groupName_fr": "Plan de construction Munition d'interdiction de zone de structure", "groupName_it": "Structure Area Denial Ammo Blueprint", "groupName_ja": "ストラクチャ領域拒否弾薬設計図", "groupName_ko": "구조물 반접근 탄약 블루프린트", "groupName_ru": "Structure Area Denial Ammo Blueprint", "groupName_zh": "建筑区域拒止弹药蓝图", "groupNameID": 597627, "published": 1, "useBasePrice": 1 }, "4430": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4430, "groupName_de": "Asteroidengürtel", "groupName_en-us": "Asteroid Belt", "groupName_es": "Cinturón de asteroides", "groupName_fr": "Ceinture d'astéroïdes", "groupName_it": "Asteroid Belt", "groupName_ja": "アステロイドベルト", "groupName_ko": "소행성 벨트", "groupName_ru": "Asteroid Belt", "groupName_zh": "小行星带", "groupNameID": 623561, "published": 0, "useBasePrice": 0 }, "4431": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4431, "groupName_de": "FW Schlachtschiff des Imperiums der Amarr", "groupName_en-us": "FW Amarr Empire Battleship", "groupName_es": "Acorazado de GF del Imperio Amarr", "groupName_fr": "Cuirassé de l'Empire amarr GF", "groupName_it": "FW Amarr Empire Battleship", "groupName_ja": "FWアマー帝国戦艦", "groupName_ko": "FW 아마르 배틀쉽", "groupName_ru": "FW Amarr Empire Battleship", "groupName_zh": "势力战争艾玛帝国战列舰", "groupNameID": 623607, "published": 1, "useBasePrice": 0 }, "4432": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4432, "groupName_de": "FW Schlachtschiff des Staats der Caldari", "groupName_en-us": "FW Caldari State Battleship", "groupName_es": "Acorazado de GF del Estado Caldari", "groupName_fr": "Cuirassé de l'État caldari GF", "groupName_it": "FW Caldari State Battleship", "groupName_ja": "FWカルダリ連合戦艦", "groupName_ko": "FW 칼다리 배틀쉽", "groupName_ru": "FW Caldari State Battleship", "groupName_zh": "势力战争加达里合众国战列舰", "groupNameID": 623608, "published": 1, "useBasePrice": 0 }, "4433": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4433, "groupName_de": "FW Schlachtschiff der Föderation der Gallente", "groupName_en-us": "FW Gallente Federation Battleship", "groupName_es": "Acorazado de GF de la Federación Gallente", "groupName_fr": "Cuirassé de la Fédération gallente GF", "groupName_it": "FW Gallente Federation Battleship", "groupName_ja": "FWガレンテ連邦戦艦", "groupName_ko": "FW 갈란테 배틀쉽", "groupName_ru": "FW Gallente Federation Battleship", "groupName_zh": "势力战争盖伦特联邦战列舰", "groupNameID": 623609, "published": 1, "useBasePrice": 0 }, "4434": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4434, "groupName_de": "FW Schlachtschiff der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Battleship", "groupName_es": "Acorazado de GF de la República Minmatar", "groupName_fr": "Cuirassé de la République minmatar GF", "groupName_it": "FW Minmatar Republic Battleship", "groupName_ja": "FWミンマター共和国戦艦", "groupName_ko": "FW 민마타 배틀쉽", "groupName_ru": "FW Minmatar Republic Battleship", "groupName_zh": "势力战争米玛塔尔共和国战列舰", "groupNameID": 623610, "published": 1, "useBasePrice": 0 }, "4471": { "anchorable": 0, "anchored": 0, "categoryID": 2118, "fittableNonSingleton": 0, "groupID": 4471, "groupName_de": "Schiffsembleme", "groupName_en-us": "Ship Emblems", "groupName_es": "Emblemas para naves", "groupName_fr": "Emblèmes de vaisseaux", "groupName_it": "Ship Emblems", "groupName_ja": "艦船用エンブレム", "groupName_ko": "함선 문장", "groupName_ru": "Эмблемы для кораблей", "groupName_zh": "舰船徽章", "groupNameID": 631767, "published": 1, "useBasePrice": 0 }, "4477": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4477, "groupName_de": "FK-Propaganda-Sendeanlage", "groupName_en-us": "FW Propaganda Broadcast Structure", "groupName_es": "Estructura de transmisión de propaganda de la GF", "groupName_fr": "Structure de diffusion de propagande de GF", "groupName_it": "FW Propaganda Broadcast Structure", "groupName_ja": "国家間戦争プロパガンダ放送ストラクチャ", "groupName_ko": "팩션 전쟁 선전용 방송시설", "groupName_ru": "Сооружение для передачи пропаганды МВ", "groupName_zh": "势力战争广播宣传建筑", "groupNameID": 635229, "published": 1, "useBasePrice": 1 }, "4493": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4493, "groupName_de": "Blaupause für mobile Ziele", "groupName_en-us": "Mobile Objective Blueprint", "groupName_es": "Plano de objetivo móvil", "groupName_fr": "Plan de construction Objectif mobile", "groupName_it": "Mobile Objective Blueprint", "groupName_ja": "移動式施設設計図", "groupName_ko": "이동형 목표물 블루프린트", "groupName_ru": "Чертёж подвижной цели", "groupName_zh": "移动目标蓝图", "groupNameID": 636346, "published": 1, "useBasePrice": 1 }, "4494": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4494, "groupName_de": "Kontrollpunkt", "groupName_en-us": "Control Point", "groupName_es": "Punto de control", "groupName_fr": "Point de contrôle", "groupName_it": "Control Point", "groupName_ja": "コントロールポイント", "groupName_ko": "컨트롤 포인트", "groupName_ru": "Контрольная точка", "groupName_zh": "控制点", "groupNameID": 637132, "published": 0, "useBasePrice": 0 }, "4499": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4499, "groupName_de": "FK-Horchaußenposten", "groupName_en-us": "FW Listening Outpost", "groupName_es": "Puesto avanzado de escucha de la GF", "groupName_fr": "Avant-poste d'écoute de la GF", "groupName_it": "FW Listening Outpost", "groupName_ja": "国家間戦争のリスニングアウトポスト", "groupName_ko": "팩션 전쟁 감청기지", "groupName_ru": "Прослушивающий форпост МВ", "groupName_zh": "势力战争监听站", "groupNameID": 638199, "published": 1, "useBasePrice": 1 }, "4501": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4501, "groupName_de": "Missionen: Standard-Kapseln", "groupName_en-us": "Mission Generic Capsules", "groupName_es": "Capsulas de misión genéricas", "groupName_fr": "Capsules standard de mission", "groupName_it": "Mission Generic Capsules", "groupName_ja": "ミッション一般カプセル", "groupName_ko": "미션 일반 캡슐", "groupName_ru": "Mission Generic Capsules", "groupName_zh": "任务通用太空舱", "groupNameID": 639247, "published": 0, "useBasePrice": 0 }, "4513": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4513, "groupName_de": "Mordunium", "groupName_en-us": "Mordunium", "groupName_es": "Mordunium", "groupName_fr": "Mordunium", "groupName_it": "Mordunium", "groupName_ja": "モードゥニウム", "groupName_ko": "모르두늄", "groupName_ru": "Mordunium", "groupName_zh": "莫德合金", "groupNameID": 640735, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4514": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4514, "groupName_de": "Ytirium", "groupName_en-us": "Ytirium", "groupName_es": "Ytirium", "groupName_fr": "Ytirium", "groupName_it": "Ytirium", "groupName_ja": "イティリウム", "groupName_ko": "이티륨", "groupName_ru": "Ютирий", "groupName_zh": "耶利合金", "groupNameID": 640736, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4515": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4515, "groupName_de": "Eifyrium", "groupName_en-us": "Eifyrium", "groupName_es": "Eifyrium", "groupName_fr": "Eifyrium", "groupName_it": "Eifyrium", "groupName_ja": "エイフィリウム", "groupName_ko": "에이피륨", "groupName_ru": "Эйфирий", "groupName_zh": "埃菲尔合金", "groupNameID": 640737, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4516": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4516, "groupName_de": "Ducinium", "groupName_en-us": "Ducinium", "groupName_es": "Ducinium", "groupName_fr": "Ducinium", "groupName_it": "Ducinium", "groupName_ja": "ドゥシニウム", "groupName_ko": "두시늄", "groupName_ru": "Дачиний", "groupName_zh": "杜厦合金", "groupNameID": 640738, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4547": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4547, "groupName_de": "Interstellarer Schiffswerfer Signalfeuer", "groupName_en-us": "Interstellar Shipcaster Beacon", "groupName_es": "Baliza de lanzador interestelar", "groupName_fr": "Balise de lance-vaisseaux interstellaire", "groupName_it": "Interstellar Shipcaster Beacon", "groupName_ja": "惑星間艦艇キャスターのビーコン", "groupName_ko": "성간 함선전송기 비컨", "groupName_ru": "Маяк межзвёздного кораблепускателя", "groupName_zh": "星际舰船弹射台信标", "groupNameID": 647116, "published": 0, "useBasePrice": 0 }, "4548": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4548, "groupName_de": "Schiffswerfer-Signalfeuer-Konstrukteur", "groupName_en-us": "Shipcaster Beacon Constructor", "groupName_es": "Constructor de balizas de lanzadores interestelares", "groupName_fr": "Constructeur de balise de lance-vaisseaux", "groupName_it": "Shipcaster Beacon Constructor", "groupName_ja": "艦艇キャスタービーコン・コンストラクター", "groupName_ko": "함선전송기 비컨 제조기", "groupName_ru": "Конструктор маяка кораблепускателя", "groupName_zh": "舰船弹射台信标建造器", "groupNameID": 647117, "published": 0, "useBasePrice": 0 }, "4549": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4549, "groupName_de": "Interstellarer Schiffswerfer", "groupName_en-us": "Interstellar Shipcaster", "groupName_es": "Lanzador interestelar", "groupName_fr": "Lance-vaisseaux interstellaires", "groupName_it": "Interstellar Shipcaster", "groupName_ja": "惑星間艦艇キャスター", "groupName_ko": "성간 함선전송기", "groupName_ru": "Межзвёздный кораблепускатель", "groupName_zh": "星际舰船弹射台", "groupNameID": 647118, "published": 0, "useBasePrice": 0 }, "4568": { "anchorable": 0, "anchored": 0, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4568, "groupName_de": "Mutanite", "groupName_en-us": "Mutanite", "groupName_es": "Mutanita", "groupName_fr": "Mutanite", "groupName_it": "Mutanite", "groupName_ja": "ミュータナイト", "groupName_ko": "뮤타나이트", "groupName_ru": "Мутанит", "groupName_zh": "突变石", "groupNameID": 656418, "published": 1, "useBasePrice": 1 }, "4569": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4569, "groupName_de": "Heimatfront-Operationen – Feindliche Fregatte", "groupName_en-us": "Homefront Operations Enemy Frigate", "groupName_es": "Fragata enemiga de operaciones del frente interno", "groupName_fr": "Frégate ennemie des opérations arrières", "groupName_it": "Homefront Operations Enemy Frigate", "groupName_ja": "ホームフロント・オペレーション敵フリゲート", "groupName_ko": "전략 지원 작전 적 프리깃", "groupName_ru": "Вражеский фрегат в тыловом районе", "groupName_zh": "国土行动敌军护卫舰", "groupNameID": 657368, "published": 0, "useBasePrice": 0 }, "4570": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4570, "groupName_de": "Heimatfront-Operationen – Feindlicher Zerstörer", "groupName_en-us": "Homefront Operations Enemy Destroyer", "groupName_es": "Destructor enemigo de operaciones del frente interno", "groupName_fr": "Destroyer ennemi des opérations arrières", "groupName_it": "Homefront Operations Enemy Destroyer", "groupName_ja": "ホームフロント・オペレーション敵駆逐艦", "groupName_ko": "전략 지원 작전 적 디스트로이어", "groupName_ru": "Вражеский эсминец в тыловом районе", "groupName_zh": "国土行动敌军驱逐舰", "groupNameID": 657496, "published": 0, "useBasePrice": 0 }, "4571": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4571, "groupName_de": "Heimatfront-Operationen – Feindlicher Kreuzer", "groupName_en-us": "Homefront Operations Enemy Cruiser", "groupName_es": "Crucero enemigo de operaciones del frente interno", "groupName_fr": "Croiseur ennemi des opérations arrières", "groupName_it": "Homefront Operations Enemy Cruiser", "groupName_ja": "ホームフロント・オペレーション敵巡洋艦", "groupName_ko": "전략 지원 작전 적 크루저", "groupName_ru": "Вражеский крейсер в тыловом районе", "groupName_zh": "国土行动敌军巡洋舰", "groupNameID": 657497, "published": 0, "useBasePrice": 0 }, "4572": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4572, "groupName_de": "Heimatfront-Operationen – Verbündeter Dreadnought", "groupName_en-us": "Homefront Operations Allied Dreadnought", "groupName_es": "Superacorazado aliado de operaciones del frente interno", "groupName_fr": "Supercuirassé allié des opérations arrières", "groupName_it": "Homefront Operations Allied Dreadnought", "groupName_ja": "ホームフロント・オペレーション味方攻城艦", "groupName_ko": "전략 지원 작전 아군 드레드노트", "groupName_ru": "Союзный дредноут в тыловом районе", "groupName_zh": "国土行动盟军无畏舰", "groupNameID": 657513, "published": 0, "useBasePrice": 0 }, "4573": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4573, "groupName_de": "Heimatfront-Operationen – Feindlicher Schlachtkreuzer", "groupName_en-us": "Homefront Operations Enemy Battlecruiser", "groupName_es": "Crucero de combate enemigo de operaciones del frente interno", "groupName_fr": "Croiseur cuirassé ennemi des opérations arrières", "groupName_it": "Homefront Operations Enemy Battlecruiser", "groupName_ja": "ホームフロント・オペレーション敵巡洋戦艦", "groupName_ko": "전략 지원 작전 적 배틀크루저", "groupName_ru": "Вражеский линейный крейсер в тыловом районе", "groupName_zh": "国土行动敌军战列巡洋舰", "groupNameID": 659180, "published": 0, "useBasePrice": 0 }, "4574": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4574, "groupName_de": "Heimatfront-Operationen – Feindliches Schlachtschiff", "groupName_en-us": "Homefront Operations Enemy Battleship", "groupName_es": "Acorazado enemigo de operaciones del frente interno", "groupName_fr": "Cuirassé ennemi des opérations arrières", "groupName_it": "Homefront Operations Enemy Battleship", "groupName_ja": "ホームフロント・オペレーション敵戦艦", "groupName_ko": "전략 지원 작전 적 배틀쉽", "groupName_ru": "Вражеский линкор в тыловом районе", "groupName_zh": "国土行动敌军战列舰", "groupNameID": 659181, "published": 0, "useBasePrice": 0 }, "4575": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4575, "groupName_de": "Heimatfront-Operationen – Ressource", "groupName_en-us": "Homefront Operations Commodity", "groupName_es": "Mercancía de operaciones del frente interno", "groupName_fr": "Marchandise des opérations arrières", "groupName_it": "Homefront Operations Commodity", "groupName_ja": "ホームフロント・オペレーション商品", "groupName_ko": "전략 지원 작전 물품", "groupName_ru": "Ценный груз в тыловом районе", "groupName_zh": "国土行动物品", "groupNameID": 659287, "published": 1, "useBasePrice": 1 }, "4576": { "anchorable": 0, "anchored": 1, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4576, "groupName_de": "Heimatfront-Operationen – Struktur", "groupName_en-us": "Homefront Operations Structure", "groupName_es": "Estructura de operaciones del frente interno", "groupName_fr": "Structure des opérations arrières", "groupName_it": "Homefront Operations Structure", "groupName_ja": "ホームフロント・オペレーション・ストラクチャ", "groupName_ko": "전략 지원 작전 구조물", "groupName_ru": "Сооружение в тыловом районе", "groupName_zh": "国土行动建筑", "groupNameID": 660753, "published": 0, "useBasePrice": 0 }, "4577": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4577, "groupName_de": "Homefront Operations Hauler", "groupName_en-us": "Homefront Operations Hauler", "groupName_es": "Nave de mercancías de operaciones del frente interno", "groupName_fr": "Transporteur des opérations arrières", "groupName_it": "Homefront Operations Hauler", "groupName_ja": "ホームフロント・オペレーション・ハウラー", "groupName_ko": "전략 지원 작전 운반선", "groupName_ru": "Перевозчик тылового обеспечения", "groupName_zh": "国土行动运载舰", "groupNameID": 660754, "published": 0, "useBasePrice": 0 }, "4579": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4579, "groupName_de": "Skalierbares nicht interagierbares Objekt", "groupName_en-us": "Scalable Non-Interactable Object", "groupName_es": "Objeto no interactivo escalable", "groupName_fr": "Objet non interactif ajustable", "groupName_it": "Scalable Non-Interactable Object", "groupName_ja": "スケーラブル非相互オブジェクト", "groupName_ko": "확장형 상호작용 불가 오브젝트", "groupName_ru": "Масштабируемый неинтерактивный объект", "groupName_zh": "可扩展不可交互物体", "groupNameID": 660808, "published": 0, "useBasePrice": 0 }, "4594": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 4594, "groupName_de": "Lancer-Dreadnought", "groupName_en-us": "Lancer Dreadnought", "groupName_es": "Superacorazado lancer", "groupName_fr": "Supercuirassé lancier", "groupName_it": "Lancer Dreadnought", "groupName_ja": "ランサー攻城艦", "groupName_ko": "랜서 드레드노트", "groupName_ru": "Дредноут-лансер", "groupName_zh": "枪骑兵级无畏舰", "groupNameID": 662671, "published": 1, "useBasePrice": 0 }, "4599": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4599, "groupName_de": "Warpvektor-Daten", "groupName_en-us": "Warp Vector Data", "groupName_es": "Datos de vector de warp", "groupName_fr": "Données de vecteur de warp", "groupName_it": "Warp Vector Data", "groupName_ja": "ワープベクターデータ", "groupName_ko": "워프 벡터 데이터", "groupName_ru": "Warp Vector Data", "groupName_zh": "跃迁矢量数据", "groupNameID": 662939, "published": 1, "useBasePrice": 1 }, "4603": { "anchorable": 0, "anchored": 0, "categoryID": 66, "fittableNonSingleton": 0, "groupID": 4603, "groupName_de": "VEB-Dienste", "groupName_en-us": "FOB services", "groupName_es": "Servicios de BOA", "groupName_fr": "Services de BOA", "groupName_it": "FOB services", "groupName_ja": "前哨基地サービス", "groupName_ko": "전방 작전기지 서비스", "groupName_ru": "Службы передовой базы", "groupName_zh": "FOB服务", "groupNameID": 664686, "published": 0, "useBasePrice": 0 }, "4636": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4636, "groupName_de": "Piraten", "groupName_en-us": "Pirate Entities", "groupName_es": "Entidades piratas", "groupName_fr": "Entités pirates", "groupName_it": "Pirate Entities", "groupName_ja": "海賊エンティティ", "groupName_ko": "해적 개체", "groupName_ru": "Объекты пиратов", "groupName_zh": "海盗实体", "groupNameID": 671872, "published": 0, "useBasePrice": 0 }, "4637": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4637, "groupName_de": "Aufständische Piraten", "groupName_en-us": "Insurgency Roaming Pirates", "groupName_es": "Piratas errantes de insurgencia", "groupName_fr": "Patrouilles de pirates d'insurrection", "groupName_it": "Insurgency Roaming Pirates", "groupName_ja": "反乱宙域の徘徊海賊", "groupName_ko": "배회하는 해적 반군", "groupName_ru": "Патруль пиратов-интервентов", "groupName_zh": "游荡的叛乱海盗", "groupNameID": 695931, "published": 0, "useBasePrice": 0 }, "4638": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4638, "groupName_de": "Aufständische Enforcer", "groupName_en-us": "Insurgency Roaming Enforcers", "groupName_es": "Ejecutores errantes de insurgencia", "groupName_fr": "Patrouilles d'exécuteurs d'insurrection", "groupName_it": "Insurgency Roaming Enforcers", "groupName_ja": "反乱宙域の巡回エンフォーサー", "groupName_ko": "배회하는 반군 집행관", "groupName_ru": "Патруль бойцов интервенции", "groupName_zh": "游荡的叛乱执法者", "groupNameID": 696092, "published": 0, "useBasePrice": 0 }, "4644": { "anchorable": 0, "anchored": 0, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 4644, "groupName_de": "Piraten Vorgelagerte Einsatzbasis", "groupName_en-us": "Pirate Forward Operating Base", "groupName_es": "Base de operaciones de avanzada pirata", "groupName_fr": "Base d'opérations avancée pirate", "groupName_it": "Pirate Forward Operating Base", "groupName_ja": "海賊の前哨基地", "groupName_ko": "해적 전방 작전기지", "groupName_ru": "Пиратская передовая база", "groupName_zh": "海盗前线作战基地", "groupNameID": 693278, "published": 0, "useBasePrice": 0 }, "4647": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4647, "groupName_de": "Aufständische Piratenfregatte", "groupName_en-us": "Insurgency Pirate Frigate", "groupName_es": "Fragata pirata de insurgencia", "groupName_fr": "Frégate d'insurrection pirate", "groupName_it": "Insurgency Pirate Frigate", "groupName_ja": "反乱宙域の海賊フリゲート", "groupName_ko": "해적 반군 프리깃", "groupName_ru": "Фрегат пирата-интервента", "groupName_zh": "海盗叛乱护卫舰", "groupNameID": 696170, "published": 1, "useBasePrice": 0 }, "4648": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4648, "groupName_de": "Aufständischer Piratenzerstörer", "groupName_en-us": "Insurgency Pirate Destroyer", "groupName_es": "Destructor pirata de insurgencia", "groupName_fr": "Destroyer d'insurrection pirate", "groupName_it": "Insurgency Pirate Destroyer", "groupName_ja": "反乱宙域の海賊駆逐艦", "groupName_ko": "해적 반군 디스트로이어", "groupName_ru": "Эсминец пирата-интервента", "groupName_zh": "海盗叛乱驱逐舰", "groupNameID": 696171, "published": 1, "useBasePrice": 0 }, "4649": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4649, "groupName_de": "Aufständischer Piratenkreuzer", "groupName_en-us": "Insurgency Pirate Cruiser", "groupName_es": "Crucero pirata de insurgencia", "groupName_fr": "Croiseur d'insurrection pirate", "groupName_it": "Insurgency Pirate Cruiser", "groupName_ja": "反乱宙域の海賊巡洋艦", "groupName_ko": "해적 반군 크루저", "groupName_ru": "Крейсер пирата-интервента", "groupName_zh": "海盗叛乱巡洋舰", "groupNameID": 696172, "published": 1, "useBasePrice": 0 }, "4650": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4650, "groupName_de": "Aufständischer Piratenschlachtkreuzer", "groupName_en-us": "Insurgency Pirate Battlecruiser", "groupName_es": "Crucero de combate pirata de insurgencia", "groupName_fr": "Croiseur cuirassé d'insurrection pirate", "groupName_it": "Insurgency Pirate Battlecruiser", "groupName_ja": "反乱宙域の海賊巡洋戦艦", "groupName_ko": "해적 반군 배틀크루저", "groupName_ru": "Линейный крейсер пирата-интервента", "groupName_zh": "海盗叛乱战列巡洋舰", "groupNameID": 696173, "published": 1, "useBasePrice": 0 }, "4651": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4651, "groupName_de": "Aufständisches Piratenschlachtschiff", "groupName_en-us": "Insurgency Pirate Battleship", "groupName_es": "Acorazado pirata de insurgencia", "groupName_fr": "Cuirassé pirate d'insurrection", "groupName_it": "Insurgency Pirate Battleship", "groupName_ja": "反乱宙域の海賊戦艦", "groupName_ko": "해적 반군 배틀쉽", "groupName_ru": "Линкор пирата-интервента", "groupName_zh": "海盗叛乱战列舰", "groupNameID": 696174, "published": 1, "useBasePrice": 0 }, "4652": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4652, "groupName_de": "Aufständische Mordu-Fregatte", "groupName_en-us": "Insurgency Mordu Frigate", "groupName_es": "Fragata de Mordu de insurgencia", "groupName_fr": "Frégate d'insurrection mordu", "groupName_it": "Insurgency Mordu Frigate", "groupName_ja": "反乱宙域のモードゥフリゲート", "groupName_ko": "모르두 반군 프리깃", "groupName_ru": "Фрегат бойца интервенции из Морду", "groupName_zh": "莫德团叛乱护卫舰", "groupNameID": 696175, "published": 1, "useBasePrice": 0 }, "4653": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4653, "groupName_de": "Aufständischer Mordu-Zerstörer", "groupName_en-us": "Insurgency Mordu Destroyer", "groupName_es": "Destructor de Mordu de insurgencia", "groupName_fr": "Destroyer d'insurrection mordu", "groupName_it": "Insurgency Mordu Destroyer", "groupName_ja": "反乱宙域のモードゥ駆逐艦", "groupName_ko": "모르두 반군 디스트로이어", "groupName_ru": "Эсминец бойца интервенции из Морду", "groupName_zh": "莫德团叛乱驱逐舰", "groupNameID": 696176, "published": 1, "useBasePrice": 0 }, "4654": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4654, "groupName_de": "Aufständischer Mordu-Kreuzer", "groupName_en-us": "Insurgency Mordu Cruiser", "groupName_es": "Crucero de Mordu de insurgencia", "groupName_fr": "Croiseur d'insurrection mordu", "groupName_it": "Insurgency Mordu Cruiser", "groupName_ja": "反乱宙域のモードゥ巡洋艦", "groupName_ko": "모르두 반군 크루저", "groupName_ru": "Крейсер бойца интервенции из Морду", "groupName_zh": "莫德团叛乱巡洋舰", "groupNameID": 696177, "published": 1, "useBasePrice": 0 }, "4655": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4655, "groupName_de": "Aufständischer Mordu-Schlachtkreuzer", "groupName_en-us": "Insurgency Mordu Battlecruiser", "groupName_es": "Crucero de combate de Mordu de insurgencia", "groupName_fr": "Croiseur cuirassé d'insurrection mordu", "groupName_it": "Insurgency Mordu Battlecruiser", "groupName_ja": "反乱宙域のモードゥ巡洋戦艦", "groupName_ko": "모르두 반군 배틀크루저", "groupName_ru": "Линейный крейсер бойца интервенции из Морду", "groupName_zh": "莫德团叛乱战列巡洋舰", "groupNameID": 696178, "published": 1, "useBasePrice": 0 }, "4656": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4656, "groupName_de": "Aufständisches Mordu-Schlachtschiff", "groupName_en-us": "Insurgency Mordu Battleship", "groupName_es": "Acorazado de Mordu de insurgencia", "groupName_fr": "Cuirassé d'insurrection mordu", "groupName_it": "Insurgency Mordu Battleship", "groupName_ja": "反乱宙域のモードゥ戦艦", "groupName_ko": "모르두 반군 배틀쉽", "groupName_ru": "Линкор бойца интервенции из Морду", "groupName_zh": "莫德团叛乱战列舰", "groupNameID": 696179, "published": 1, "useBasePrice": 0 }, "4673": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4673, "groupName_de": "Insurgency Mining Ship", "groupName_en-us": "Insurgency Mining Ship", "groupName_es": "Nave minera de insurgencia", "groupName_fr": "Vaisseau d'extraction minière d'insurrection", "groupName_it": "Insurgency Mining Ship", "groupName_ja": "反乱採掘船", "groupName_ko": "반란 채굴선", "groupName_ru": "Insurgency Mining Ship", "groupName_zh": "叛乱采矿船", "groupNameID": 697213, "published": 1, "useBasePrice": 0 }, "4712": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4712, "groupName_de": "Gelenkte Entitäten", "groupName_en-us": "Guided Entities", "groupName_es": "Entidades guiadas", "groupName_fr": "Entités guidées", "groupName_it": "Guided Entities", "groupName_ja": "誘導対象", "groupName_ko": "경로 인도 대상", "groupName_ru": "Контролируемые объекты", "groupName_zh": "Guided Entities", "groupNameID": 699162, "published": 0, "useBasePrice": 0 }, "4713": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4713, "groupName_de": "Lenkungsziele", "groupName_en-us": "Guidance Objectives", "groupName_es": "Objetivos de guiado", "groupName_fr": "Objectifs de guidage", "groupName_it": "Guidance Objectives", "groupName_ja": "誘導目標", "groupName_ko": "경로 인도 목적지", "groupName_ru": "Цели для контроля", "groupName_zh": "Guidance Objectives", "groupNameID": 699250, "published": 0, "useBasePrice": 0 }, "4714": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4714, "groupName_de": "Nicht interaktive Asteroiden", "groupName_en-us": "Non-Interactable Asteroids", "groupName_es": "Asteroides no interactivos", "groupName_fr": "Astéroïdes non-interactifs", "groupName_it": "Non-Interactable Asteroids", "groupName_ja": "非相互アステロイド", "groupName_ko": "상호작용 불가 소행성", "groupName_ru": "Неинтерактивные астероиды", "groupName_zh": "Non-Interactable Asteroids", "groupNameID": 701099, "published": 0, "useBasePrice": 0 }, "4716": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4716, "groupName_de": "Schlachtfeld-Filament-Materialien des Abgrunds", "groupName_en-us": "Abyssal Battlefield Filament Materials", "groupName_es": "Materiales de filamento de campo de batalla abisal", "groupName_fr": "Matériaux de filament de champ de bataille abyssal", "groupName_it": "Abyssal Battlefield Filament Materials", "groupName_ja": "アビスの戦場フィラメントの素材", "groupName_ko": "어비설 전장 필라멘트 재료", "groupName_ru": "Материалы для нитей боевых зон Бездны", "groupName_zh": "深渊战场纤维材料", "groupNameID": 706043, "published": 1, "useBasePrice": 1 }, "4717": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4717, "groupName_de": "CD-Filamente", "groupName_en-us": "CD Filaments", "groupName_es": "Filamentos del Día de los Capsulistas", "groupName_fr": "Filaments CD", "groupName_it": "CD Filaments", "groupName_ja": "CDフィラメント", "groupName_ko": "CD 필라멘트", "groupName_ru": "Нити боевых подземелий", "groupName_zh": "CD纤维", "groupNameID": 706149, "published": 1, "useBasePrice": 0 }, "4719": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4719, "groupName_de": "Spalte", "groupName_en-us": "Rift", "groupName_es": "Grieta", "groupName_fr": "Faille", "groupName_it": "Rift", "groupName_ja": "リフト", "groupName_ko": "균열", "groupName_ru": "Разлом", "groupName_zh": "裂隙", "groupNameID": 706696, "published": 0, "useBasePrice": 0 }, "4725": { "anchorable": 0, "anchored": 0, "categoryID": 2118, "fittableNonSingleton": 0, "groupID": 4725, "groupName_de": "Sequence Binders", "groupName_en-us": "Sequence Binders", "groupName_es": "Carpetas de secuencias", "groupName_fr": "Fixateurs de séquence", "groupName_it": "Sequence Binders", "groupName_ja": "シーケンスバインダー", "groupName_ko": "각인기", "groupName_ru": "Фиксаторы для окрасок", "groupName_zh": "序列绑定器", "groupNameID": 709243, "published": 1, "useBasePrice": 0 }, "4726": { "anchorable": 0, "anchored": 0, "categoryID": 2118, "fittableNonSingleton": 0, "groupID": 4726, "groupName_de": "Ship SKIN Design Element", "groupName_en-us": "Ship SKIN Design Element", "groupName_es": "Elemento de diseño de SKIN para naves", "groupName_fr": "Élément de design de SKIN pour vaisseau", "groupName_it": "Ship SKIN Design Element", "groupName_ja": "艦船用SKINデザイン要素", "groupName_ko": "함선 SKIN 디자인 요소", "groupName_ru": "Декоративные элементы окрасок", "groupName_zh": "舰船涂装设计元素", "groupNameID": 709245, "published": 1, "useBasePrice": 0 }, "4729": { "anchorable": 0, "anchored": 0, "categoryID": 2143, "fittableNonSingleton": 0, "groupID": 4729, "groupName_de": "Kolonialreagenzien", "groupName_en-us": "Colony Reagents", "groupName_es": "Reactivos de colonia", "groupName_fr": "Réactifs de colonie", "groupName_it": "Colony Reagents", "groupName_ja": "コロニーの反応試剤", "groupName_ko": "콜로니 촉매", "groupName_ru": "Реагенты колоний", "groupName_zh": "殖民地试剂", "groupNameID": 709448, "published": 1, "useBasePrice": 1 }, "4734": { "anchorable": 0, "anchored": 0, "categoryID": 16, "fittableNonSingleton": 0, "groupID": 4734, "groupName_de": "Sequencing", "groupName_en-us": "Sequencing", "groupName_es": "Secuenciación", "groupName_fr": "Séquençage", "groupName_it": "Sequencing", "groupName_ja": "シーケンシング", "groupName_ko": "각인 생성", "groupName_ru": "Производство окрасок", "groupName_zh": "排序", "groupNameID": 709915, "published": 1, "useBasePrice": 1 }, "4736": { "anchorable": 1, "anchored": 0, "categoryID": 46, "fittableNonSingleton": 0, "groupID": 4736, "groupName_de": "Skyhook", "groupName_en-us": "Skyhook", "groupName_es": "Gancho", "groupName_fr": "Grappin orbital", "groupName_it": "Skyhook", "groupName_ja": "スカイフック", "groupName_ko": "궤도 스카이훅", "groupName_ru": "Подъёмник", "groupName_zh": "天钩", "groupNameID": 709917, "published": 1, "useBasePrice": 0 }, "4737": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4737, "groupName_de": "Homefront Operations Shuttle", "groupName_en-us": "Homefront Operations Shuttle", "groupName_es": "Lanzadera de operaciones del frente interno", "groupName_fr": "Navette des opérations arrière", "groupName_it": "Homefront Operations Shuttle", "groupName_ja": "ホームフロント・オペレーション・シャトル", "groupName_ko": "전략 지원 작전 셔틀", "groupName_ru": "Шаттл тылового обеспечения", "groupName_zh": "国土行动穿梭机", "groupNameID": 710534, "published": 0, "useBasePrice": 0 }, "4743": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4743, "groupName_de": "Schlachtfeld-Filamente des Abgrunds", "groupName_en-us": "Abyssal Battlefield Filaments", "groupName_es": "Filamentos de campo de batalla abisal", "groupName_fr": "Filaments de champ de bataille abyssal", "groupName_it": "Abyssal Battlefield Filaments", "groupName_ja": "アビスの戦場フィラメント", "groupName_ko": "어비설 전장 필라멘트", "groupName_ru": "Нити боевых зон Бездны", "groupName_zh": "深渊战场纤维", "groupNameID": 710745, "published": 1, "useBasePrice": 1 }, "4744": { "anchorable": 0, "anchored": 1, "categoryID": 65, "fittableNonSingleton": 0, "groupID": 4744, "groupName_de": "Upwell Moon Drill", "groupName_en-us": "Upwell Moon Drill", "groupName_es": "Perforación lunar Upwell", "groupName_fr": "Foreuse lunaire Upwell", "groupName_it": "Upwell Moon Drill", "groupName_ja": "アップウェル衛星ドリル", "groupName_ko": "업웰 위성 드릴", "groupName_ru": "Спутниковый бур от «Апвелл»", "groupName_zh": "昇威卫星钻探", "groupNameID": 710827, "published": 1, "useBasePrice": 0 }, "4745": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4745, "groupName_de": "Skyhook-Reagenz-Silo", "groupName_en-us": "Skyhook Reagent Silo", "groupName_es": "Depósito de reactivos de gancho orbital", "groupName_fr": "Silo de réactif du grappin orbital", "groupName_it": "Skyhook Reagent Silo", "groupName_ja": "スカイフック反応試剤サイロ", "groupName_ko": "스카이훅 촉매 사일로", "groupName_ru": "Хранилище реагентов подъёмника", "groupName_zh": "天钩试剂储藏库", "groupNameID": 711268, "published": 0, "useBasePrice": 0 }, "4755": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4755, "groupName_de": "Kylixium", "groupName_en-us": "Kylixium", "groupName_es": "Kylixium", "groupName_fr": "Kylixium", "groupName_it": "Kylixium", "groupName_ja": "キリクシウム", "groupName_ko": "카일릭슘", "groupName_ru": "Kylixium", "groupName_zh": "克里石", "groupNameID": 712212, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4756": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4756, "groupName_de": "Nocxite", "groupName_en-us": "Nocxite", "groupName_es": "Nocxita", "groupName_fr": "Nocxite", "groupName_it": "Nocxite", "groupName_ja": "ノキサイト", "groupName_ko": "녹사이트", "groupName_ru": "Нокцит", "groupName_zh": "诺克希特", "groupNameID": 712213, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4757": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4757, "groupName_de": "Ueganite", "groupName_en-us": "Ueganite", "groupName_es": "Ueganita", "groupName_fr": "Ueganite", "groupName_it": "Ueganite", "groupName_ja": "ユイグナイト", "groupName_ko": "유가나이트", "groupName_ru": "Уэганит", "groupName_zh": "尤加石", "groupNameID": 712214, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4758": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4758, "groupName_de": "Hezorime", "groupName_en-us": "Hezorime", "groupName_es": "Hezorima", "groupName_fr": "Hezorime", "groupName_it": "Hezorime", "groupName_ja": "ヘゾライム", "groupName_ko": "헤조라임", "groupName_ru": "Hezorime", "groupName_zh": "赫佐利姆", "groupNameID": 712215, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4759": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4759, "groupName_de": "Griemeer", "groupName_en-us": "Griemeer", "groupName_es": "Griemeer", "groupName_fr": "Griemeer", "groupName_it": "Griemeer", "groupName_ja": "グリーミーア", "groupName_ko": "그리미어", "groupName_ru": "Griemeer", "groupName_zh": "格里米尔", "groupNameID": 712216, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4768": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 4768, "groupName_de": "Sovereignty Hub Site Detection Upgrades", "groupName_en-us": "Sovereignty Hub Site Detection Upgrades", "groupName_es": "Mejoras de detección de zonas del centro de soberanía", "groupName_fr": "Améliorations de détection de site du pôle de souveraineté", "groupName_it": "Sovereignty Hub Site Detection Upgrades", "groupName_ja": "領有権ハブのサイト探知アップグレード", "groupName_ko": "소버린티 허브 사이트 탐지 업그레이드", "groupName_ru": "Улучшения поиска районов для штаба владений", "groupName_zh": "主权中心地点探测升级件", "groupNameID": 720415, "published": 1, "useBasePrice": 1 }, "4769": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4769, "groupName_de": "Capital-Mobilitätsmodule", "groupName_en-us": "Capital Mobility Modules", "groupName_es": "Módulos de movilidad capitales", "groupName_fr": "Modules de mobilité capitaux", "groupName_it": "Capital Mobility Modules", "groupName_ja": "キャピタル機動性モジュール", "groupName_ko": "캐피탈 기동성 모듈", "groupName_ru": "Ускоряющие модули КБТ", "groupName_zh": "旗舰级机动装备", "groupNameID": 720661, "published": 1, "useBasePrice": 0 }, "4771": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4771, "groupName_de": "Homefront Operations Noncombatant", "groupName_en-us": "Homefront Operations Noncombatant", "groupName_es": "No combatiente de operaciones del frente interno", "groupName_fr": "Non-combattant des opérations arrière", "groupName_it": "Homefront Operations Noncombatant", "groupName_ja": "ホームフロント・オペレーション非戦闘員", "groupName_ko": "전략 지원 작전 비전투원", "groupName_ru": "Небоевой корабль тылового обеспечения", "groupName_zh": "国土行动非战斗人员", "groupNameID": 721700, "published": 0, "useBasePrice": 0 }, "4772": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 4772, "groupName_de": "Souveränitätshub-Serviceinfrastruktur-Upgrade", "groupName_en-us": "Sovereignty Hub Service Infrastructure Upgrade", "groupName_es": "Mejora de infraestructura de servicio del centro de soberanía", "groupName_fr": "Amélioration d'infrastructure de service du pôle de souveraineté", "groupName_it": "Sovereignty Hub Service Infrastructure Upgrade", "groupName_ja": "領有権ハブのサービスインフラアップグレード", "groupName_ko": "소버린티 허브 서비스 인프라 업그레이드", "groupName_ru": "Улучшение служебной инфраструктуры штаба владений", "groupName_zh": "主权中心服务基础设施升级件", "groupNameID": 722226, "published": 1, "useBasePrice": 1 }, "4776": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4776, "groupName_de": "Abgelaufene Schlachtfeld-Filamente des Abgrunds", "groupName_en-us": "Expired Abyssal Battlefields Filaments", "groupName_es": "Filamentos de campo de batalla abisal caducados", "groupName_fr": "Filaments de champ de bataille abyssal expirés", "groupName_it": "Expired Abyssal Battlefields Filaments", "groupName_ja": "アビスの戦場フィラメント(期限切れ)", "groupName_ko": "만료된 어비설 전장 필라멘트", "groupName_ru": "Просроченные нити боевых зон Бездны", "groupName_zh": "过期的深渊战场纤维", "groupNameID": 722902, "published": 1, "useBasePrice": 1 }, "4777": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 4777, "groupName_de": "Struktur Leichte Jäger", "groupName_en-us": "Structure Light Fighter", "groupName_es": "Caza ligero de estructura", "groupName_fr": "Chasseur léger de structure", "groupName_it": "Structure Light Fighter", "groupName_ja": "ストラクチャの軽戦闘機", "groupName_ko": "구조물 라이트 파이터", "groupName_ru": "Лёгкий истребитель сооружения", "groupName_zh": "建筑轻型铁骑舰载机", "groupNameID": 723473, "published": 1, "useBasePrice": 0 }, "4778": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 4778, "groupName_de": "Struktur Unterstützungsjäger", "groupName_en-us": "Structure Support Fighter", "groupName_es": "Caza de apoyo de estructuras", "groupName_fr": "Chasseur de secours de structure", "groupName_it": "Structure Support Fighter", "groupName_ja": "ストラクチャのサポート戦闘機", "groupName_ko": "구조물 서포트 파이터", "groupName_ru": "Истребитель поддержки сооружения", "groupName_zh": "建筑后勤铁骑舰载机", "groupNameID": 723474, "published": 1, "useBasePrice": 0 }, "4779": { "anchorable": 0, "anchored": 0, "categoryID": 87, "fittableNonSingleton": 0, "groupID": 4779, "groupName_de": "Struktur Schwere Jäger", "groupName_en-us": "Structure Heavy Fighter", "groupName_es": "Caza pesado de estructura", "groupName_fr": "Chasseur lourd de structure", "groupName_it": "Structure Heavy Fighter", "groupName_ja": "ストラクチャの重戦闘機", "groupName_ko": "구조물 헤비 파이터", "groupName_ru": "Тяжёлый истребитель сооружения", "groupName_zh": "建筑重型铁骑舰载机", "groupNameID": 723475, "published": 1, "useBasePrice": 0 }, "4795": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4795, "groupName_de": "Asteroiden-Angel Cartel Offizierskreuzer", "groupName_en-us": "Asteroid Angel Cartel Officer Cruiser", "groupName_es": "Crucero de oficial de asteroide del Cártel de los Ángeles", "groupName_fr": "Croiseur d'officier du cartel Angel des astéroïdes", "groupName_it": "Asteroid Angel Cartel Officer Cruiser", "groupName_ja": "アステロイドエンジェルカルテル士官の巡洋艦", "groupName_ko": "소행성 엔젤 카르텔 장교 크루저", "groupName_ru": "Крейсер командира «ангелов» в поясе астероидов", "groupName_zh": "小行星天使军官巡洋舰", "groupNameID": 726309, "published": 0, "useBasePrice": 0 }, "4796": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4796, "groupName_de": "Asteroiden-Angel Cartel Offiziersfregatte", "groupName_en-us": "Asteroid Angel Cartel Officer Frigate", "groupName_es": "Fragata de oficial de asteroide del Cártel de los Ángeles", "groupName_fr": "Frégate d'officier du cartel Angel des astéroïdes", "groupName_it": "Asteroid Angel Cartel Officer Frigate", "groupName_ja": "アステロイドエンジェルカルテル士官のフリゲート", "groupName_ko": "소행성 엔젤 카르텔 장교 프리깃", "groupName_ru": "Фрегат командира «ангелов» в поясе астероидов", "groupName_zh": "小行星天使军官护卫舰", "groupNameID": 726310, "published": 0, "useBasePrice": 0 }, "4797": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4797, "groupName_de": "Asteroiden-Blood Raiders Offizierskreuzer", "groupName_en-us": "Asteroid Blood Raiders Officer Cruiser", "groupName_es": "Crucero de oficial de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Croiseur d'officier des Blood Raiders des astéroïdes", "groupName_it": "Asteroid Blood Raiders Officer Cruiser", "groupName_ja": "アステロイドブラッドレイダー士官の巡洋艦", "groupName_ko": "소행성 블러드 레이더 장교 크루저", "groupName_ru": "Крейсер командира «Охотников» в поясе астероидов", "groupName_zh": "小行星血袭者军官巡洋舰", "groupNameID": 726311, "published": 0, "useBasePrice": 0 }, "4798": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4798, "groupName_de": "Asteroiden-Blood Raiders Offiziersfregatte", "groupName_en-us": "Asteroid Blood Raiders Officer Frigate", "groupName_es": "Fragata de oficial de asteroide de los Saqueadores Sanguinarios", "groupName_fr": "Frégate d'officier des Blood Raiders des astéroïdes", "groupName_it": "Asteroid Blood Raiders Officer Frigate", "groupName_ja": "アステロイドブラッドレイダー士官のフリゲート", "groupName_ko": "소행성 블러드 레이더 장교 프리깃", "groupName_ru": "Фрегат командира «Охотников» в поясе астероидов", "groupName_zh": "小行星血袭者军官护卫舰", "groupNameID": 726312, "published": 0, "useBasePrice": 0 }, "4799": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4799, "groupName_de": "Asteroiden-Guristas Offizierskreuzer", "groupName_en-us": "Asteroid Guristas Officer Cruiser", "groupName_es": "Crucero de oficial de asteroide de los Guristas", "groupName_fr": "Croiseur d'officier guristas des astéroïdes", "groupName_it": "Asteroid Guristas Officer Cruiser", "groupName_ja": "アステロイドガリスタス士官の巡洋艦", "groupName_ko": "소행성 구리스타스 장교 크루저", "groupName_ru": "Крейсер командира «Гуристас» в поясе астероидов", "groupName_zh": "小行星古斯塔斯军官巡洋舰", "groupNameID": 726313, "published": 0, "useBasePrice": 0 }, "4800": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4800, "groupName_de": "Asteroiden-Guristas Offiziersfregatte", "groupName_en-us": "Asteroid Guristas Officer Frigate", "groupName_es": "Fragata de oficial de asteroide de los Guristas", "groupName_fr": "Frégate d'officier guristas des astéroïdes", "groupName_it": "Asteroid Guristas Officer Frigate", "groupName_ja": "アステロイドガリスタス士官のフリゲート", "groupName_ko": "소행성 구리스타스 장교 프리깃", "groupName_ru": "Фрегат командира «Гуристас» в поясе астероидов", "groupName_zh": "小行星古斯塔斯军官护卫舰", "groupNameID": 726314, "published": 0, "useBasePrice": 0 }, "4801": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4801, "groupName_de": "Asteroiden-Sansha's Nation Offizierskreuzer", "groupName_en-us": "Asteroid Sansha's Nation Officer Cruiser", "groupName_es": "Crucero de oficial de asteroide de la Nación Sansha", "groupName_fr": "Croiseur d'officier de la Sansha's Nation des astéroïdes", "groupName_it": "Asteroid Sansha's Nation Officer Cruiser", "groupName_ja": "アステロイドサンシャ国士官の巡洋艦", "groupName_ko": "소행성 산샤 네이션 장교 크루저", "groupName_ru": "Крейсер командира «Нации Санши» в поясе астероидов", "groupName_zh": "小行星萨沙军官巡洋舰", "groupNameID": 726317, "published": 0, "useBasePrice": 0 }, "4802": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4802, "groupName_de": "Asteroiden-Sansha's Nation Offiziersfregatte", "groupName_en-us": "Asteroid Sansha's Nation Officer Frigate", "groupName_es": "Fragata de oficial de asteroide de la Nación Sansha", "groupName_fr": "Frégate d'officier de la Sansha's Nation des astéroïdes", "groupName_it": "Asteroid Sansha's Nation Officer Frigate", "groupName_ja": "アステロイドサンシャ国士官のフリゲート", "groupName_ko": "소행성 산샤 네이션 장교 프리깃", "groupName_ru": "Фрегат командира «Нации Санши» в поясе астероидов", "groupName_zh": "小行星萨沙军官护卫舰", "groupNameID": 726319, "published": 0, "useBasePrice": 0 }, "4803": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4803, "groupName_de": "Asteroiden-Serpentis Offizierskreuzer", "groupName_en-us": "Asteroid Serpentis Officer Cruiser", "groupName_es": "Crucero de oficial de asteroide de Serpentis", "groupName_fr": "Croiseur d'officier serpentis des astéroïdes", "groupName_it": "Asteroid Serpentis Officer Cruiser", "groupName_ja": "アステロイドサーペンティス士官の巡洋艦", "groupName_ko": "소행성 서펜티스 장교 크루저", "groupName_ru": "Крейсер командира «Серпентис» в поясе астероидов", "groupName_zh": "小行星天蛇军官巡洋舰", "groupNameID": 726320, "published": 0, "useBasePrice": 0 }, "4804": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4804, "groupName_de": "Asteroiden-Serpentis Offiziersfregatte", "groupName_en-us": "Asteroid Serpentis Officer Frigate", "groupName_es": "Fragata de oficial de asteroide de Serpentis", "groupName_fr": "Frégate d'officier serpentis des astéroïdes", "groupName_it": "Asteroid Serpentis Officer Frigate", "groupName_ja": "アステロイドサーペンティス士官のフリゲート", "groupName_ko": "소행성 서펜티스 장교 프리깃", "groupName_ru": "Фрегат командира «Серпентис» в поясе астероидов", "groupName_zh": "小行星天蛇军官护卫舰", "groupNameID": 726321, "published": 0, "useBasePrice": 0 }, "4807": { "anchorable": 0, "anchored": 0, "categoryID": 7, "fittableNonSingleton": 0, "groupID": 4807, "groupName_de": "Kapselbrecher-Werfer", "groupName_en-us": "Breacher Pod Launchers", "groupName_es": "Lanzacápsulas de ataque", "groupName_fr": "Lanceurs de capsules de brèche", "groupName_it": "Breacher Pod Launchers", "groupName_ja": "突入ポッドランチャー", "groupName_ko": "침투 포드 런처", "groupName_ru": "Пусковая установка внедряющихся капсул", "groupName_zh": "突破者座舱发射器", "groupNameID": 726805, "published": 1, "useBasePrice": 0 }, "4808": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 4808, "groupName_de": "SCARAB-Kapselbrecher", "groupName_en-us": "SCARAB Breacher Pods", "groupName_es": "Lanzacápsulas SCARAB", "groupName_fr": "Capsules de brèche SCARAB", "groupName_it": "SCARAB Breacher Pods", "groupName_ja": "突入ポッド「SCARAB」", "groupName_ko": "스캐럽 침투 포드", "groupName_ru": "Внедряющиеся капсулы «Скарабей»", "groupName_zh": "圣甲虫突破者逃生舱", "groupNameID": 726814, "published": 1, "useBasePrice": 0 }, "4810": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4810, "groupName_de": "Mercenary Den", "groupName_en-us": "Mercenary Den", "groupName_es": "Guarida de mercenarios", "groupName_fr": "Repaire de mercenaires", "groupName_it": "Mercenary Den", "groupName_ja": "傭兵の隠れ家", "groupName_ko": "용병 소굴", "groupName_ru": "Mercenary Den", "groupName_zh": "雇佣兵巢穴", "groupNameID": 727344, "published": 1, "useBasePrice": 0 }, "4811": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4811, "groupName_de": "Mercenary Den Blueprint", "groupName_en-us": "Mercenary Den Blueprint", "groupName_es": "Plano de guarida de mercenarios", "groupName_fr": "Plan de construction Repaire de mercenaires", "groupName_it": "Mercenary Den Blueprint", "groupName_ja": "傭兵の隠れ家の設計図", "groupName_ko": "용병 소굴 블루프린트", "groupName_ru": "Mercenary Den Blueprint", "groupName_zh": "雇佣兵巢穴蓝图", "groupNameID": 727376, "published": 1, "useBasePrice": 1 }, "4820": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4820, "groupName_de": "Mutaplasmid-Blaupause", "groupName_en-us": "Mutaplasmid Blueprint", "groupName_es": "Plano de mutaplásmido", "groupName_fr": "Plan de construction de mutaplasmide", "groupName_it": "Mutaplasmid Blueprint", "groupName_ja": "変異プラスミドの設計図", "groupName_ko": "뮤타플라즈미드 블루프린트", "groupName_ru": "Чертёж мутаплазмида", "groupName_zh": "突变质体蓝图", "groupNameID": 863197, "published": 1, "useBasePrice": 1 }, "4821": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4821, "groupName_de": "Atavum", "groupName_en-us": "Atavum", "groupName_es": "Atavum", "groupName_fr": "Atavum", "groupName_it": "Atavum", "groupName_ja": "アタヴァム", "groupName_ko": "아타붐", "groupName_ru": "Atavum", "groupName_zh": "阿塔文", "groupNameID": 869759, "published": 1, "useBasePrice": 1 }, "4824": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4824, "groupName_de": "Infomorph-Systeme", "groupName_en-us": "Infomorph Systems", "groupName_es": "Sistemas de infomorfos", "groupName_fr": "Systèmes d'infomorphes", "groupName_it": "Infomorph Systems", "groupName_ja": "インフォモーフのシステム", "groupName_ko": "정신체 시스템", "groupName_ru": "Системы для инфоморфов", "groupName_zh": "电子意识星系", "groupNameID": 896315, "published": 1, "useBasePrice": 1 }, "4825": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4825, "groupName_de": "Lokales Signalfeuer", "groupName_en-us": "Local Beacon", "groupName_es": "Baliza local", "groupName_fr": "Balise locale", "groupName_it": "Local Beacon", "groupName_ja": "ローカルビーコン", "groupName_ko": "지역 비컨", "groupName_ru": "Местный маяк", "groupName_zh": "本地信标", "groupNameID": 896728, "published": 0, "useBasePrice": 0 }, "4827": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4827, "groupName_de": "EDENCOM-Daten", "groupName_en-us": "EDENCOM Data", "groupName_es": "Datos de EDENCOM", "groupName_fr": "Données EDENCOM", "groupName_it": "EDENCOM Data", "groupName_ja": "EDENCOMのデータ", "groupName_ko": "EDENCOM 데이터", "groupName_ru": "Данные ЭДЕНКОМа", "groupName_zh": "伊甸联合防御阵线数据", "groupNameID": 1005117, "published": 1, "useBasePrice": 1 }, "4828": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4828, "groupName_de": "Piraten-Spawner", "groupName_en-us": "Pirate Spawners", "groupName_es": "Generadores piratas", "groupName_fr": "Spawners de pirates", "groupName_it": "Pirate Spawners", "groupName_ja": "海賊スポーナー", "groupName_ko": "패적 생성기", "groupName_ru": "Источники пиратов", "groupName_zh": "海盗生成器", "groupNameID": 1005118, "published": 0, "useBasePrice": 0 }, "4838": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 4838, "groupName_de": "Sovereignty Hub Colony Resources Management Upgrades", "groupName_en-us": "Sovereignty Hub Colony Resources Management Upgrades", "groupName_es": "Mejoras de gestión de recursos de la colonia del centro de soberanía", "groupName_fr": "Améliorations de gestion des ressources de colonie du pôle de souveraineté", "groupName_it": "Sovereignty Hub Colony Resources Management Upgrades", "groupName_ja": "領有権ハブのコロニーリソース管理アップグレード", "groupName_ko": "소버린티 허브 콜로니 자원 관리 업그레이드", "groupName_ru": "Улучшения управления ресурсами колоний для штаба владений", "groupName_zh": "主权中心殖民地资源管理升级件", "groupNameID": 1009927, "published": 1, "useBasePrice": 1 }, "4839": { "anchorable": 0, "anchored": 0, "categoryID": 39, "fittableNonSingleton": 0, "groupID": 4839, "groupName_de": "Sovereignty Hub System Effect Generator Upgrades", "groupName_en-us": "Sovereignty Hub System Effect Generator Upgrades", "groupName_es": "Mejoras del generador de efectos de sistema del centro de soberanía", "groupName_fr": "Améliorations de générateur d'effet de système du pôle de souveraineté", "groupName_it": "Sovereignty Hub System Effect Generator Upgrades", "groupName_ja": "領有権ハブのシステム効果ジェネレーターアップグレード", "groupName_ko": "소버린티 허브 성계 영향 발생기 업그레이드", "groupName_ru": "Улучшения генератора эффектов системы для штаба владений", "groupName_zh": "主权中心星系影响生成器升级件", "groupNameID": 1010226, "published": 1, "useBasePrice": 1 }, "4843": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4843, "groupName_de": "Begrenzte Seltenheitsgrade", "groupName_en-us": "Limited Rarities", "groupName_es": "Rarezas limitadas", "groupName_fr": "Raretés limitées", "groupName_it": "Limited Rarities", "groupName_ja": "限定アイテム", "groupName_ko": "희귀도 제한", "groupName_ru": "Эксклюзивные редкости", "groupName_zh": "限量珍品", "groupNameID": 1010659, "published": 1, "useBasePrice": 1 }, "4857": { "anchorable": 0, "anchored": 1, "categoryID": 25, "fittableNonSingleton": 0, "groupID": 4857, "groupName_de": "Tyranite", "groupName_en-us": "Tyranite", "groupName_es": "Tiranita", "groupName_fr": "Tyranite", "groupName_it": "Tyranite", "groupName_ja": "ティラナイト", "groupName_ko": "타이라나이트", "groupName_ru": "Tyranite", "groupName_zh": "泰拉石", "groupNameID": 1011290, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4900": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4900, "groupName_de": "Stability Telemetry", "groupName_en-us": "Stability Telemetry", "groupName_es": "Telemetría de estabilidad", "groupName_fr": "Télémétrie de stabilité", "groupName_it": "Stability Telemetry", "groupName_ja": "安定性テレメトリデータ", "groupName_ko": "안정화 텔레미터", "groupName_ru": "Stability Telemetry", "groupName_zh": "稳定性遥测", "groupNameID": 1016597, "published": 1, "useBasePrice": 1 }, "4902": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 4902, "groupName_de": "Expeditionskommandoschiff", "groupName_en-us": "Expedition Command Ship", "groupName_es": "Nave de mando de expedición", "groupName_fr": "Vaisseau de commandement d'expédition", "groupName_it": "Expedition Command Ship", "groupName_ja": "指揮型探査船", "groupName_ko": "탐사 커맨드쉽", "groupName_ru": "Экспедиционный флагман", "groupName_zh": "远征指挥舰", "groupNameID": 1017831, "published": 1, "useBasePrice": 0 }, "4905": { "anchorable": 0, "anchored": 0, "categoryID": 8, "fittableNonSingleton": 1, "groupID": 4905, "groupName_de": "Expeditionskommandostrahlenladungen", "groupName_en-us": "Expedition Command Burst Charges", "groupName_es": "Cargas de estallido de mando de expedición", "groupName_fr": "Charges de salve de commandement d'expédition", "groupName_it": "Expedition Command Burst Charges", "groupName_ja": "探査コマンドバーストチャージ", "groupName_ko": "탐사 커맨드 버스트 차지", "groupName_ru": "Заряды экспедиционного импульсного оптимизатора", "groupName_zh": "远征指挥脉冲波弹药", "groupNameID": 1017847, "published": 1, "useBasePrice": 0 }, "4906": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4906, "groupName_de": "Bauplan für Expeditionskommandoschiff", "groupName_en-us": "Expedition Command Ship Blueprint", "groupName_es": "Plano de nave de mando de expedición", "groupName_fr": "Plan de construction Vaisseau de commandement d'expédition", "groupName_it": "Expedition Command Ship Blueprint", "groupName_ja": "指揮型探査船設計図", "groupName_ko": "탐사 커맨드쉽 블루프린트", "groupName_ru": "Чертёж экспедиционного флагмана", "groupName_zh": "远征指挥舰蓝图", "groupNameID": 1017929, "published": 1, "useBasePrice": 1 }, "4909": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4909, "groupName_de": "Vorhuteinheiten", "groupName_en-us": "Vanguard Entities", "groupName_es": "Entidades de vanguardia", "groupName_fr": "Entités Vanguard", "groupName_it": "Vanguard Entities", "groupName_ja": "ヴァンガードエンティティ", "groupName_ko": "Vanguard 개체", "groupName_ru": "Боевые единицы авангарда", "groupName_zh": "先锋实体", "groupNameID": 1018583, "published": 0, "useBasePrice": 0 }, "4913": { "anchorable": 0, "anchored": 0, "categoryID": 22, "fittableNonSingleton": 0, "groupID": 4913, "groupName_de": "Mobiler Phasenanker", "groupName_en-us": "Mobile Phase Anchor", "groupName_es": "Anclaje de fase móvil", "groupName_fr": "Ancrage de phase mobile", "groupName_it": "Mobile Phase Anchor", "groupName_ja": "移動式位相アンカー", "groupName_ko": "이동식 위상 고정기", "groupName_ru": "Мобильный фазовый якорь", "groupName_zh": "移动相位锚标", "groupNameID": 1019003, "published": 1, "useBasePrice": 0 }, "4914": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4914, "groupName_de": "Bauplan für mobilen Phasenanker", "groupName_en-us": "Mobile Phase Anchor Blueprint", "groupName_es": "Plano de anclaje de fase móvil", "groupName_fr": "Plan de construction Ancrage de phase mobile", "groupName_it": "Mobile Phase Anchor Blueprint", "groupName_ja": "移動式位相アンカー設計図", "groupName_ko": "이동식 위상 고정기 블루프린트", "groupName_ru": "Чертёж мобильного фазового якоря", "groupName_zh": "移动相锚蓝图", "groupNameID": 1019014, "published": 1, "useBasePrice": 1 }, "4915": { "anchorable": 0, "anchored": 1, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 4915, "groupName_de": "Prismatizit", "groupName_en-us": "Prismaticite", "groupName_es": "Prismaticita", "groupName_fr": "Prismaticite", "groupName_it": "Prismaticite", "groupName_ja": "プリズマティサイト", "groupName_ko": "프리즈마티사이트", "groupName_ru": "Призматицит", "groupName_zh": "棱柱岩", "groupNameID": 1019022, "iconID": 15, "published": 1, "useBasePrice": 0 }, "4916": { "anchorable": 0, "anchored": 1, "categoryID": 2152, "fittableNonSingleton": 0, "groupID": 4916, "groupName_de": "Phasenasteroid", "groupName_en-us": "Phased Asteroid", "groupName_es": "Asteroide fásico", "groupName_fr": "Astéroïde phasique", "groupName_it": "Phased Asteroid", "groupName_ja": "位相偏移アステロイド", "groupName_ko": "위상 소행성", "groupName_ru": "Фазовый астероид", "groupName_zh": "相位小行星", "groupNameID": 1019025, "iconID": 15, "published": 0, "useBasePrice": 0 }, "4917": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4917, "groupName_de": "♦ Industrie-Kommandoschiffe", "groupName_en-us": "♦ Industrial Command Ship", "groupName_es": "♦ Nave de mando industrial", "groupName_fr": "♦ Vaisseau de commandement industriel", "groupName_it": "♦ Industrial Command Ship", "groupName_ja": "♦ 指揮型輸送艦", "groupName_ko": "♦ 인더스트리얼 커맨드쉽", "groupName_ru": "♦ Флагман бурового флота", "groupName_zh": "♦ 工业指挥舰", "groupNameID": 1019368, "published": 0, "useBasePrice": 0 }, "4918": { "anchorable": 0, "anchored": 0, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4918, "groupName_de": "Phasenasteroid", "groupName_en-us": "Phased Asteroid", "groupName_es": "Asteroide fásico", "groupName_fr": "Astéroïde phasique", "groupName_it": "Phased Asteroid", "groupName_ja": "位相偏移アステロイド", "groupName_ko": "위상 소행성", "groupName_ru": "Фазовый астероид", "groupName_zh": "相位小行星", "groupNameID": 1019374, "published": 0, "useBasePrice": 0 }, "4924": { "anchorable": 0, "anchored": 0, "categoryID": 9, "fittableNonSingleton": 0, "groupID": 4924, "groupName_de": "Erratische Erzformel", "groupName_en-us": "Erratic Ore Formula", "groupName_es": "Fórmula de mena errática", "groupName_fr": "Formule de minerai erratique", "groupName_it": "Erratic Ore Formula", "groupName_ja": "不安定鉱石のフォーミュラ", "groupName_ko": "불안정한 광물 계산식", "groupName_ru": "Формула неустойчивой руды", "groupName_zh": "不稳定矿石配方", "groupNameID": 1019501, "published": 1, "useBasePrice": 1 }, "4930": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4930, "groupName_de": "Managed Asteroid Belt", "groupName_en-us": "Managed Asteroid Belt", "groupName_es": "Cinturón de asteroides controlado", "groupName_fr": "Ceinture d'astéroïdes gérée", "groupName_it": "Managed Asteroid Belt", "groupName_ja": "管理アステロイドベルト", "groupName_ko": "소속 소행성 벨트", "groupName_ru": "Managed Asteroid Belt", "groupName_zh": "受管理的小行星带", "groupNameID": 1019556, "published": 0, "useBasePrice": 0 }, "4932": { "anchorable": 0, "anchored": 0, "categoryID": 4, "fittableNonSingleton": 0, "groupID": 4932, "groupName_de": "Unraffiniertes Mineral", "groupName_en-us": "Unrefined Mineral", "groupName_es": "Mineral sin refinar", "groupName_fr": "Minéral non raffiné", "groupName_it": "Unrefined Mineral", "groupName_ja": "未精錬無機物", "groupName_ko": "미가공 미네랄", "groupName_ru": "Необработанный минерал", "groupName_zh": "粗糙矿物", "groupNameID": 1019559, "published": 1, "useBasePrice": 1 }, "4935": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4935, "groupName_de": "Eisgürtel", "groupName_en-us": "Ice Belt", "groupName_es": "Cinturón de hielo", "groupName_fr": "Ceintures de glace", "groupName_it": "Ice Belt", "groupName_ja": "アイスベルト", "groupName_ko": "아이스 벨트", "groupName_ru": "Ледяной пояс", "groupName_zh": "冰带", "groupNameID": 1019732, "published": 0, "useBasePrice": 0 }, "4936": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4936, "groupName_de": "Phasenasteroidenfeld", "groupName_en-us": "Phased Asteroid Field", "groupName_es": "Campo de asteroides fásico", "groupName_fr": "Champ d'astéroïdes phasique", "groupName_it": "Phased Asteroid Field", "groupName_ja": "位相偏移アステロイドフィールド", "groupName_ko": "위상 소행성 지대", "groupName_ru": "Скопление фазовых астероидов", "groupName_zh": "相位小行星带", "groupNameID": 1019734, "published": 0, "useBasePrice": 0 }, "4937": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4937, "groupName_de": "Seltenes Asteroidenfeld", "groupName_en-us": "Rare Asteroid Field", "groupName_es": "Campo de asteroides poco común", "groupName_fr": "Champ d'astéroïdes rare", "groupName_it": "Rare Asteroid Field", "groupName_ja": "希少なアステロイドフィールド", "groupName_ko": "희귀한 소행성 지대", "groupName_ru": "Редкое скопление астероидов", "groupName_zh": "稀有的小行星带", "groupNameID": 1019736, "published": 0, "useBasePrice": 0 }, "4938": { "anchorable": 0, "anchored": 1, "categoryID": 2, "fittableNonSingleton": 0, "groupID": 4938, "groupName_de": "Erzblagerung", "groupName_en-us": "Ore Deposit", "groupName_es": "Depósito de mena", "groupName_fr": "Gisement de minerai", "groupName_it": "Ore Deposit", "groupName_ja": "鉱床", "groupName_ko": "광물 매장지", "groupName_ru": "Залежи руды", "groupName_zh": "矿床", "groupNameID": 1019737, "published": 0, "useBasePrice": 0 }, "4941": { "anchorable": 0, "anchored": 0, "categoryID": 2152, "fittableNonSingleton": 0, "groupID": 4941, "groupName_de": "QA-Phasenasteroiden", "groupName_en-us": "QA Phased Asteroids", "groupName_es": "Control de calidad de asteroides fásicos", "groupName_fr": "Astéroïdes phasiques QA", "groupName_it": "QA Phased Asteroids", "groupName_ja": "QA位相偏移アステロイド", "groupName_ko": "QA Phased Asteroids", "groupName_ru": "Тестовые фазовые астероиды", "groupName_zh": "QA相位小行星", "groupNameID": 1021186, "published": 0, "useBasePrice": 0 }, "4945": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4945, "groupName_de": "Regelwidriges Expeditionskommandoschiff", "groupName_en-us": "Irregular Expedition Command Ship", "groupName_es": "Nave de mando de expedición irregular", "groupName_fr": "Vaisseau de commandement d'expédition irrégulier", "groupName_it": "Irregular Expedition Command Ship", "groupName_ja": "非正規指揮型探査船", "groupName_ko": "비정상적인 탐사 커맨드쉽", "groupName_ru": "Необычный экспедиционный флагман", "groupName_zh": "叛道者远征指挥舰", "groupNameID": 1021410, "published": 0, "useBasePrice": 0 }, "4949": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4949, "groupName_de": "Interbus-Yoiul-LADs", "groupName_en-us": "InterBus Yoiul LADs", "groupName_es": "MAL de Yoiul de InterBus", "groupName_fr": "LUTINs de Yoiul d'InterBus", "groupName_it": "InterBus Yoiul LADs", "groupName_ja": "インターバス・ヨイウルLAD", "groupName_ko": "인터버스 요이얼 LAD", "groupName_ru": "Йольские ГАДы консорциума «ИнтерБас»", "groupName_zh": "星际捷运尤尔节自动化物流配送舰", "groupNameID": 1025585, "published": 0, "useBasePrice": 0 }, "4972": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 4972, "groupName_de": "Verity-Kryo-Technologie", "groupName_en-us": "Verity Cryo Tech", "groupName_es": "Tecnología criogénica de Verity", "groupName_fr": "Cryotechnologie de Verity", "groupName_it": "Verity Cryo Tech", "groupName_ja": "ヴェリティ・クライオテック", "groupName_ko": "베리티 크라이오 장비", "groupName_ru": "Криотехнология «Подлинных улучшений»", "groupName_zh": "真理低温技术", "groupNameID": 1028940, "published": 1, "useBasePrice": 1 }, "4975": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 4975, "groupName_de": "Irreguläre Capital-Industrieschiffe", "groupName_en-us": "Irregular Capital Industrial Ship", "groupName_es": "Nave industrial capital irregular", "groupName_fr": "Vaisseau industriel capital irrégulier", "groupName_it": "Irregular Capital Industrial Ship", "groupName_ja": "非正規採掘支援母艦", "groupName_ko": "소속 불명 캐피탈 인더스트리얼", "groupName_ru": "Необычный промышленный КБТ", "groupName_zh": "异常旗舰级工业舰", "groupNameID": 1030693, "published": 0, "useBasePrice": 0 }, "5032": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5032, "groupName_de": "Fertiger-Raubdrohnen", "groupName_en-us": "Fabricator Rogue Drones", "groupName_es": "Drones rebeldes de fabricador", "groupName_fr": "Drones renégats Fabricateurs", "groupName_it": "Fabricator Rogue Drones", "groupName_ja": "ファブリケーターローグドローン", "groupName_ko": "제작기 로그 드론", "groupName_ru": "Восставшие дроны из сборщика", "groupName_zh": "巢穴自由无人机", "groupNameID": 1034374, "published": 0, "useBasePrice": 0 }, "5063": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5063, "groupName_de": "FK-Transporter des Imperiums der Amarr", "groupName_en-us": "FW Amarr Empire Hauler", "groupName_es": "Nave de mercancías de GF del Imperio Amarr", "groupName_fr": "Cargo de l'Empire amarr de la GF", "groupName_it": "FW Amarr Empire Hauler", "groupName_ja": "FWアマー帝国ハウラー", "groupName_ko": "FW 아마르 제국 운반선", "groupName_ru": "Амаррский перевозчик в МВ", "groupName_zh": "势力战争艾玛帝国运载舰", "groupNameID": 1035583, "published": 0, "useBasePrice": 0 }, "5064": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5064, "groupName_de": "FK-Transporter des Staats der Caldari", "groupName_en-us": "FW Caldari State Hauler", "groupName_es": "Nave de mercancías de GF del Estado Caldari", "groupName_fr": "Cargo de l'État caldari de la GF", "groupName_it": "FW Caldari State Hauler", "groupName_ja": "FWカルダリ連合ハウラー", "groupName_ko": "FW 칼다리 연합 운반선", "groupName_ru": "Калдарский перевозчик в МВ", "groupName_zh": "势力战争加达里合众国运载舰", "groupNameID": 1035584, "published": 0, "useBasePrice": 0 }, "5065": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5065, "groupName_de": "FK-Transporter der Föderation der Gallente", "groupName_en-us": "FW Gallente Federation Hauler", "groupName_es": "Nave de mercancías de GF de la Federación Gallente", "groupName_fr": "Cargo de la Fédération gallente de la GF", "groupName_it": "FW Gallente Federation Hauler", "groupName_ja": "FWガレンテ連邦ハウラー", "groupName_ko": "FW 갈란테 연방 운반선", "groupName_ru": "Галлентский перевозчик в МВ", "groupName_zh": "势力战争盖伦特联邦运载舰", "groupNameID": 1035585, "published": 0, "useBasePrice": 0 }, "5066": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5066, "groupName_de": "FK-Transporter der Republik Minmatar", "groupName_en-us": "FW Minmatar Republic Hauler", "groupName_es": "Nave de mercancías de GF de la República Minmatar", "groupName_fr": "Cargo de la République minmatar de la GF", "groupName_it": "FW Minmatar Republic Hauler", "groupName_ja": "FWミンマター共和国ハウラー", "groupName_ko": "FW 민마타 공화국 운반선", "groupName_ru": "Минматарский перевозчик в МВ", "groupName_zh": "势力战争米玛塔尔共和国运载舰", "groupNameID": 1035586, "published": 0, "useBasePrice": 0 }, "5067": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 5067, "groupName_de": "Fertigerdaten", "groupName_en-us": "Fabricator Data", "groupName_es": "Datos de fabricador", "groupName_fr": "Données de Fabricateur", "groupName_it": "Fabricator Data", "groupName_ja": "ファブリケーターのデータ", "groupName_ko": "제작기 데이터", "groupName_ru": "Данные сборщика", "groupName_zh": "巢穴数据", "groupNameID": 1035590, "published": 1, "useBasePrice": 1 }, "5068": { "anchorable": 0, "anchored": 0, "categoryID": 17, "fittableNonSingleton": 0, "groupID": 5068, "groupName_de": "Vigilanzpunktdaten", "groupName_en-us": "Vigilance Point Data", "groupName_es": "Datos de punto de vigilancia", "groupName_fr": "Données de point de Vigilance", "groupName_it": "Vigilance Point Data", "groupName_ja": "ヴィジランスポイントのデータ", "groupName_ko": "비질런스 포인트 데이터", "groupName_ru": "Данные из района Vigilance Spire", "groupName_zh": "警戒点数据", "groupNameID": 1035692, "published": 1, "useBasePrice": 1 }, "5078": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5078, "groupName_de": "Moreaus Kapselpiloten- und Reichweitezentrum – Entitäten", "groupName_en-us": "Moreau’s Capsuleer Outreach Center Entities", "groupName_es": "Entidades del centro de campaña de capsulistas de Moreau", "groupName_fr": "Entités de l'antenne de mobilisation des capsuliers pour Moreau", "groupName_it": "Moreau’s Capsuleer Outreach Center Entities", "groupName_ja": "モローのカプセラ向けアウトリーチセンターのエンティティ", "groupName_ko": "모라우의 캡슐리어 선거 사무소 등록 개체", "groupName_ru": "Центры поддержки Моро", "groupName_zh": "莫罗的克隆飞行员外展中心实体", "groupNameID": 1037219, "published": 0, "useBasePrice": 0 }, "5079": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5079, "groupName_de": "Tenzins Kapselpiloten- und Reichweitezentrum – Entitäten", "groupName_en-us": "Tenzin’s Capsuleer Outreach Center Entities", "groupName_es": "Entidades del centro de campaña de capsulistas de Tenzin", "groupName_fr": "Entités de l'antenne de mobilisation des capsuliers pour Tenzin", "groupName_it": "Tenzin’s Capsuleer Outreach Center Entities", "groupName_ja": "テンジンのカプセラ向けアウトリーチセンターのエンティティ", "groupName_ko": "텐진의 캡슐리어 선거 사무소 등록 개체", "groupName_ru": "Центры поддержки Тендзина", "groupName_zh": "丹增的克隆飞行员外展中心实体", "groupNameID": 1037221, "published": 0, "useBasePrice": 0 }, "5080": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5080, "groupName_de": "Rodens Kapselpiloten- und Reichweitezentrum – Entitäten", "groupName_en-us": "Roden’s Capsuleer Outreach Center Entities", "groupName_es": "Entidades del centro de campaña de capsulistas de Roden", "groupName_fr": "Entités de l'antenne de mobilisation des capsuliers pour Roden", "groupName_it": "Roden’s Capsuleer Outreach Center Entities", "groupName_ja": "ローデンのカプセラ向けアウトリーチセンターのエンティティ", "groupName_ko": "로덴의 캡슐리어 선거 사무소 등록 개체", "groupName_ru": "Центры поддержки Роден", "groupName_zh": "莱登的克隆飞行员外展中心实体", "groupNameID": 1037222, "published": 0, "useBasePrice": 0 }, "5082": { "anchorable": 0, "anchored": 0, "categoryID": 30, "fittableNonSingleton": 0, "groupID": 5082, "groupName_de": "Porträthintergründe", "groupName_en-us": "Portrait Backgrounds", "groupName_es": "Fondos de retrato", "groupName_fr": "Arrière-plans de portrait", "groupName_it": "Portrait Backgrounds", "groupName_ja": "ポートレイト背景", "groupName_ko": "초상화 배경", "groupName_ru": "Фоны для портретов", "groupName_zh": "人像背景", "groupNameID": 1037307, "published": 1, "useBasePrice": 0 }, "5087": { "anchorable": 0, "anchored": 0, "categoryID": 6, "fittableNonSingleton": 0, "groupID": 5087, "groupName_de": "Sonderversion Yachten", "groupName_en-us": "Special Edition Yachts", "groupName_es": "Yates de edición especial", "groupName_fr": "Yacht édition spéciale", "groupName_it": "Special Edition Yachts", "groupName_ja": "特別版ヨット", "groupName_ko": "스페셜 에디션 요트", "groupName_ru": "Яхты ограниченной серии", "groupName_zh": "特别版运载舰游艇", "groupNameID": 1038882, "published": 1, "useBasePrice": 0 }, "5089": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5089, "groupName_de": "Warpath Invaders - Battlecruisers", "groupName_en-us": "Warpath Invaders - Battlecruisers", "groupName_es": "Warpath Invaders - Battlecruisers", "groupName_fr": "Warpath Invaders - Battlecruisers", "groupName_it": "Warpath Invaders - Battlecruisers", "groupName_ja": "Warpath Invaders - Battlecruisers", "groupName_ko": "Warpath Invaders - Battlecruisers", "groupName_ru": "Warpath Invaders - Battlecruisers", "groupName_zh": "Warpath Invaders - Battlecruisers", "groupNameID": 1039572, "published": 0, "useBasePrice": 0 }, "5090": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5090, "groupName_de": "Warpath Defenders - Battlecruisers", "groupName_en-us": "Warpath Defenders - Battlecruisers", "groupName_es": "Warpath Defenders - Battlecruisers", "groupName_fr": "Warpath Defenders - Battlecruisers", "groupName_it": "Warpath Defenders - Battlecruisers", "groupName_ja": "Warpath Defenders - Battlecruisers", "groupName_ko": "Warpath Defenders - Battlecruisers", "groupName_ru": "Warpath Defenders - Battlecruisers", "groupName_zh": "Warpath Defenders - Battlecruisers", "groupNameID": 1039573, "published": 0, "useBasePrice": 0 }, "5096": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5096, "groupName_de": "Warpath Elite Mercenaries - Battleships", "groupName_en-us": "Warpath Elite Mercenaries - Battleships", "groupName_es": "Warpath Elite Mercenaries - Battleships", "groupName_fr": "Warpath Elite Mercenaries - Battleships", "groupName_it": "Warpath Elite Mercenaries - Battleships", "groupName_ja": "Warpath Elite Mercenaries - Battleships", "groupName_ko": "Warpath Elite Mercenaries - Battleships", "groupName_ru": "Warpath Elite Mercenaries - Battleships", "groupName_zh": "Warpath Elite Mercenaries - Battleships", "groupNameID": 1040320, "published": 0, "useBasePrice": 0 }, "5097": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5097, "groupName_de": "Warpath Elite Mercenaries - Cruisers", "groupName_en-us": "Warpath Elite Mercenaries - Cruisers", "groupName_es": "Warpath Elite Mercenaries - Cruisers", "groupName_fr": "Warpath Elite Mercenaries - Cruisers", "groupName_it": "Warpath Elite Mercenaries - Cruisers", "groupName_ja": "Warpath Elite Mercenaries - Cruisers", "groupName_ko": "Warpath Elite Mercenaries - Cruisers", "groupName_ru": "Warpath Elite Mercenaries - Cruisers", "groupName_zh": "Warpath Elite Mercenaries - Cruisers", "groupNameID": 1041279, "published": 0, "useBasePrice": 0 }, "5098": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5098, "groupName_de": "Warpath Elite Mercenaries - Frigates", "groupName_en-us": "Warpath Elite Mercenaries - Frigates", "groupName_es": "Warpath Elite Mercenaries - Frigates", "groupName_fr": "Warpath Elite Mercenaries - Frigates", "groupName_it": "Warpath Elite Mercenaries - Frigates", "groupName_ja": "Warpath Elite Mercenaries - Frigates", "groupName_ko": "Warpath Elite Mercenaries - Frigates", "groupName_ru": "Warpath Elite Mercenaries - Frigates", "groupName_zh": "Warpath Elite Mercenaries - Frigates", "groupNameID": 1041280, "published": 0, "useBasePrice": 0 }, "5099": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5099, "groupName_de": "Warpath Defenders - Cruisers", "groupName_en-us": "Warpath Defenders - Cruisers", "groupName_es": "Warpath Defenders - Cruisers", "groupName_fr": "Warpath Defenders - Cruisers", "groupName_it": "Warpath Defenders - Cruisers", "groupName_ja": "Warpath Defenders - Cruisers", "groupName_ko": "Warpath Defenders - Cruisers", "groupName_ru": "Warpath Defenders - Cruisers", "groupName_zh": "Warpath Defenders - Cruisers", "groupNameID": 1041326, "published": 0, "useBasePrice": 0 }, "5100": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5100, "groupName_de": "Warpath Invaders - Cruisers", "groupName_en-us": "Warpath Invaders - Cruisers", "groupName_es": "Warpath Invaders - Cruisers", "groupName_fr": "Warpath Invaders - Cruisers", "groupName_it": "Warpath Invaders - Cruisers", "groupName_ja": "Warpath Invaders - Cruisers", "groupName_ko": "Warpath Invaders - Cruisers", "groupName_ru": "Warpath Invaders - Cruisers", "groupName_zh": "Warpath Invaders - Cruisers", "groupNameID": 1041327, "published": 0, "useBasePrice": 0 }, "5101": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5101, "groupName_de": "Warpath Defenders - Frigates", "groupName_en-us": "Warpath Defenders - Frigates", "groupName_es": "Warpath Defenders - Frigates", "groupName_fr": "Warpath Defenders - Frigates", "groupName_it": "Warpath Defenders - Frigates", "groupName_ja": "Warpath Defenders - Frigates", "groupName_ko": "Warpath Defenders - Frigates", "groupName_ru": "Warpath Defenders - Frigates", "groupName_zh": "Warpath Defenders - Frigates", "groupNameID": 1041328, "published": 0, "useBasePrice": 0 }, "5102": { "anchorable": 0, "anchored": 0, "categoryID": 11, "fittableNonSingleton": 0, "groupID": 5102, "groupName_de": "Warpath Invaders - Frigates", "groupName_en-us": "Warpath Invaders - Frigates", "groupName_es": "Warpath Invaders - Frigates", "groupName_fr": "Warpath Invaders - Frigates", "groupName_it": "Warpath Invaders - Frigates", "groupName_ja": "Warpath Invaders - Frigates", "groupName_ko": "Warpath Invaders - Frigates", "groupName_ru": "Warpath Invaders - Frigates", "groupName_zh": "Warpath Invaders - Frigates", "groupNameID": 1041329, "published": 0, "useBasePrice": 0 }, "350858": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 350858, "groupName_de": "Infanteriewaffen", "groupName_en-us": "Infantry Weapons", "groupName_es": "Armas de infantería", "groupName_fr": "Armes d'infanterie", "groupName_it": "Infantry Weapons", "groupName_ja": "歩兵武器", "groupName_ko": "보병 무기", "groupName_ru": "Пехотное оружие", "groupName_zh": "Infantry Weapons", "groupNameID": 278207, "published": 0, "useBasePrice": 1 }, "351064": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 351064, "groupName_de": "Infanterie-Dropsuits", "groupName_en-us": "Infantry Dropsuits", "groupName_es": "Trajes de infantería", "groupName_fr": "Combinaison d'infanterie", "groupName_it": "Infantry Dropsuits", "groupName_ja": "歩兵降下スーツ", "groupName_ko": "보병 강하슈트", "groupName_ru": "Десантные скафандры", "groupName_zh": "Infantry Dropsuits", "groupNameID": 278208, "published": 0, "useBasePrice": 1 }, "351121": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 351121, "groupName_de": "Infanteriemodule", "groupName_en-us": "Infantry Modules", "groupName_es": "Módulos de infantería", "groupName_fr": "Modules d'infanterie", "groupName_it": "Infantry Modules", "groupName_ja": "歩兵モジュール", "groupName_ko": "보병 모듈", "groupName_ru": "Пехотные модули", "groupName_zh": "Infantry Modules", "groupNameID": 278209, "published": 0, "useBasePrice": 1 }, "351210": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 351210, "groupName_de": "Infanteriefahrzeuge", "groupName_en-us": "Infantry Vehicles", "groupName_es": "Vehículos de infantería", "groupName_fr": "Véhicules d'infanterie", "groupName_it": "Infantry Vehicles", "groupName_ja": "歩兵ビークル", "groupName_ko": "보병 차량", "groupName_ru": "Пехотный транспорт", "groupName_zh": "Infantry Vehicles", "groupNameID": 278211, "published": 0, "useBasePrice": 1 }, "351648": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 351648, "groupName_de": "Infanterie-Skills", "groupName_en-us": "Infantry Skills", "groupName_es": "Habilidades de infantería", "groupName_fr": "Compétences d'infanterie", "groupName_it": "Infantry Skills", "groupName_ja": "歩兵スキル", "groupName_ko": "보병 스킬", "groupName_ru": "Пехотные навыки", "groupName_zh": "Infantry Skills", "groupNameID": 278210, "published": 0, "useBasePrice": 1 }, "351844": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 351844, "groupName_de": "Infanterieausrüstung", "groupName_en-us": "Infantry Equipment", "groupName_es": "Equipo de infantería", "groupName_fr": "Équipement d'infanterie", "groupName_it": "Infantry Equipment", "groupName_ja": "歩兵装備", "groupName_ko": "보병 장비", "groupName_ru": "Пехотное оборудование", "groupName_zh": "Infantry Equipment", "groupNameID": 278206, "published": 0, "useBasePrice": 1 }, "354641": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 354641, "groupName_de": "Infanterie-Skill-Verbesserer", "groupName_en-us": "Infantry Skill Enhancers", "groupName_es": "Intensificadores de habilidad de infantería", "groupName_fr": "Optimisateur de compétences d'infanterie", "groupName_it": "Infantry Skill Enhancers", "groupName_ja": "歩兵スキルエンハンサー", "groupName_ko": "보병 스킬 향상장치", "groupName_ru": "Пехотные усилители навыков", "groupName_zh": "Infantry Skill Enhancers", "groupNameID": 278213, "published": 0, "useBasePrice": 1 }, "354753": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 354753, "groupName_de": "Infanterieinstallationen", "groupName_en-us": "Infantry Installations", "groupName_es": "Instalaciones de infantería", "groupName_fr": "Installations d'infanterie", "groupName_it": "Infantry Installations", "groupName_ja": "歩兵施設", "groupName_ko": "보병 시설", "groupName_ru": "Пехотные установки", "groupName_zh": "Infantry Installations", "groupNameID": 278212, "published": 0, "useBasePrice": 1 }, "364204": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 364204, "groupName_de": "Oberflächen-Infrastruktur", "groupName_en-us": "Surface Infrastructure", "groupName_es": "Infraestructura de superficie", "groupName_fr": "Infrastructure", "groupName_it": "Infrastruttura di superficie", "groupName_ja": "サーフェス領域管理", "groupName_ko": "지표면 인프라", "groupName_ru": "Инфраструктура на поверхности", "groupName_zh": "地表设施", "groupNameID": 286999, "published": 0, "useBasePrice": 1 }, "367487": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 367487, "groupName_de": "Leistungen", "groupName_en-us": "Services", "groupName_es": "Servicios", "groupName_fr": "Services", "groupName_it": "Servizi", "groupName_ja": "サービス", "groupName_ko": "서비스", "groupName_ru": "Услуги", "groupName_zh": "服务", "groupNameID": 296571, "published": 0, "useBasePrice": 0 }, "367580": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 367580, "groupName_de": "Agenten", "groupName_en-us": "Agents", "groupName_es": "Agentes", "groupName_fr": "Agents", "groupName_it": "Agenti", "groupName_ja": "エージェント", "groupName_ko": "에이전트", "groupName_ru": "Агенты", "groupName_zh": "代理人", "groupNameID": 296701, "published": 0, "useBasePrice": 0 }, "367594": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 367594, "groupName_de": "Visuelle Anpassung", "groupName_en-us": "Visual Customization", "groupName_es": "Personalización visual", "groupName_fr": "Personnalisation visuelle", "groupName_it": "Personalizzazione visiva", "groupName_ja": "ビジュアルカスタマイズ", "groupName_ko": "외관 커스터마이징", "groupName_ru": "Кастомизация внешнего вида", "groupName_zh": "视觉效果自定义", "groupNameID": 296754, "published": 0, "useBasePrice": 1 }, "367774": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 367774, "groupName_de": "Materialbergungs-Container", "groupName_en-us": "Salvage Containers", "groupName_es": "Contenedores de los objetos recuperados", "groupName_fr": "Récupérer conteneurs", "groupName_it": "Container materiale recuperato", "groupName_ja": "回収品コンテナ", "groupName_ko": "샐비지 컨테이너", "groupName_ru": "Контейнеры для добычи", "groupName_zh": "打捞货柜", "groupNameID": 297341, "published": 0, "useBasePrice": 0 }, "367776": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 367776, "groupName_de": "Materialbergungs-Decodierer", "groupName_en-us": "Salvage Decryptors", "groupName_es": "Desencriptadores de los objetos recuperados", "groupName_fr": "Récupérer décrypteurs", "groupName_it": "Chiavi crittografiche materiale recuperato", "groupName_ja": "回収品ディクリプタ", "groupName_ko": "샐비지 해독기", "groupName_ru": "Дешифраторы для добычи", "groupName_zh": "打捞解码器", "groupNameID": 297343, "published": 0, "useBasePrice": 0 }, "368656": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 368656, "groupName_de": "Schlacht-Materialbergung", "groupName_en-us": "Battle Salvage", "groupName_es": "Despojos de batalla", "groupName_fr": "Récupération de la bataille", "groupName_it": "Materiale recuperato in battaglia", "groupName_ja": "バトルサルベージ", "groupName_ko": "전투 샐비지", "groupName_ru": "Боевые трофеи", "groupName_zh": "Battle Salvage", "groupNameID": 299923, "published": 0, "useBasePrice": 1 }, "368666": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 368666, "groupName_de": "ANGRIFFSTRANSPORTER", "groupName_en-us": "Warbarge", "groupName_es": "TRANSPORTADOR DE GUERRA", "groupName_fr": "BARGE DE GUERRE", "groupName_it": "VASCELLO DA GUERRA", "groupName_ja": "将官艇", "groupName_ko": "전투선", "groupName_ru": "ДЕСАНТНАЯ БАРЖА", "groupName_zh": "Warbarge", "groupNameID": 299981, "published": 0, "useBasePrice": 1 }, "368726": { "anchorable": 0, "anchored": 0, "categoryID": 350001, "fittableNonSingleton": 0, "groupID": 368726, "groupName_de": "Infanterie: Skinfarbe", "groupName_en-us": "Infantry Color Skin", "groupName_es": "Color de infantería", "groupName_fr": "Couleur de peau de l'infanterie", "groupName_it": "Colore skin fanteria", "groupName_ja": "歩兵カラースキン", "groupName_ko": "보병 컬러 스킨", "groupName_ru": "Цветной скин пехоты", "groupName_zh": "Infantry Color Skin", "groupNameID": 305415, "published": 0, "useBasePrice": 1 } } ================================================ FILE: staticdata/fsd_built/iconids.0.json ================================================ { "0": { "iconFile": "res:/ui/texture/icons/7_64_15.png" }, "15": { "iconFile": "res:/ui/texture/icons/5_64_11.png" }, "16": { "iconFile": "res:/ui/texture/icons/26_64_11.png" }, "21": { "iconFile": "res:/ui/texture/icons/6_64_3.png" }, "22": { "iconFile": "res:/ui/texture/icons/6_64_14.png" }, "26": { "iconFile": "res:/ui/texture/icons/6_64_5.png" }, "27": { "iconFile": "res:/ui/texture/icons/6_64_11.png" }, "28": { "iconFile": "res:/ui/texture/icons/6_64_9.png" }, "29": { "iconFile": "res:/ui/texture/icons/6_64_6.png" }, "30": { "iconFile": "res:/ui/texture/icons/11_64_8.png" }, "31": { "iconFile": "res:/ui/texture/icons/6_64_10.png" }, "33": { "iconFile": "res:/ui/texture/icons/50_64_11.png" }, "34": { "iconFile": "res:/ui/texture/icons/8_64_16.png" }, "67": { "iconFile": "res:/ui/texture/icons/2_64_9.png" }, "68": { "iconFile": "res:/ui/texture/icons/1_64_9.png" }, "69": { "iconFile": "res:/ui/texture/icons/1_64_13.png" }, "70": { "iconFile": "res:/ui/texture/icons/2_64_7.png" }, "71": { "iconFile": "res:/ui/texture/icons/3_64_13.png" }, "72": { "iconFile": "res:/ui/texture/icons/3_64_1.png" }, "73": { "iconFile": "res:/ui/texture/icons/2_64_14.png" }, "74": { "iconFile": "res:/ui/texture/icons/3_64_9.png" }, "75": { "iconFile": "res:/ui/texture/icons/2_64_13.png" }, "76": { "iconFile": "res:/ui/texture/icons/2_64_10.png" }, "77": { "iconFile": "res:/ui/texture/icons/2_64_11.png" }, "78": { "iconFile": "res:/ui/texture/icons/1_64_12.png" }, "79": { "iconFile": "res:/ui/texture/icons/1_64_10.png" }, "80": { "iconFile": "res:/ui/texture/icons/1_64_11.png" }, "81": { "iconFile": "res:/ui/texture/icons/2_64_2.png" }, "82": { "iconFile": "res:/ui/texture/icons/2_64_4.png" }, "83": { "iconFile": "res:/ui/texture/icons/1_64_15.png" }, "84": { "iconFile": "res:/ui/texture/icons/2_64_3.png" }, "85": { "iconFile": "res:/ui/texture/icons/2_64_1.png" }, "86": { "iconFile": "res:/ui/texture/icons/1_64_16.png" }, "87": { "iconFile": "res:/ui/texture/icons/1_64_14.png" }, "88": { "iconFile": "res:/ui/texture/icons/4_64_8.png" }, "89": { "iconFile": "res:/ui/texture/icons/1_64_4.png" }, "90": { "iconFile": "res:/ui/texture/icons/1_64_1.png" }, "91": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/tether.png" }, "92": { "iconFile": "res:/ui/texture/icons/4_64_13.png" }, "93": { "iconFile": "res:/ui/texture/icons/3_64_15.png" }, "94": { "iconFile": "res:/ui/texture/icons/4_64_14.png" }, "95": { "iconFile": "res:/ui/texture/icons/3_64_14.png" }, "96": { "iconFile": "res:/ui/texture/icons/3_64_2.png" }, "97": { "iconFile": "res:/ui/texture/icons/3_64_8.png" }, "98": { "iconFile": "res:/ui/texture/icons/3_64_5.png" }, "104": { "iconFile": "res:/ui/texture/icons/4_64_10.png" }, "105": { "iconFile": "res:/ui/texture/icons/4_64_11.png" }, "106": { "iconFile": "res:/ui/texture/icons/3_64_11.png" }, "107": { "iconFile": "res:/ui/texture/icons/3_64_10.png" }, "109": { "iconFile": "res:/ui/texture/icons/4_64_12.png" }, "110": { "iconFile": "res:/ui/texture/icons/5_64_1.png" }, "111": { "iconFile": "res:/ui/texture/icons/4_64_9.png" }, "112": { "iconFile": "res:/ui/texture/icons/3_64_4.png" }, "138": { "iconFile": "res:/ui/texture/icons/4_64_1.png" }, "168": { "iconFile": "res:/ui/texture/icons/12_64_12.png" }, "169": { "iconFile": "res:/ui/texture/icons/21_64_12.png" }, "170": { "iconFile": "res:/ui/texture/icons/21_64_16.png" }, "182": { "iconFile": "res:/ui/texture/icons/20_64_16.png" }, "183": { "iconFile": "res:/ui/texture/icons/20_64_4.png" }, "184": { "iconFile": "res:/ui/texture/icons/20_64_8.png" }, "185": { "iconFile": "res:/ui/texture/icons/20_64_12.png" }, "186": { "iconFile": "res:/ui/texture/icons/20_64_10.png" }, "187": { "iconFile": "res:/ui/texture/icons/20_64_14.png" }, "188": { "iconFile": "res:/ui/texture/icons/20_64_6.png" }, "189": { "iconFile": "res:/ui/texture/icons/20_64_2.png" }, "190": { "iconFile": "res:/ui/texture/icons/13_64_4.png" }, "191": { "iconFile": "res:/ui/texture/icons/13_64_8.png" }, "192": { "iconFile": "res:/ui/texture/icons/13_64_16.png" }, "193": { "iconFile": "res:/ui/texture/icons/13_64_12.png" }, "230": { "iconFile": "res:/ui/texture/icons/24_64_2.png" }, "231": { "iconFile": "res:/ui/texture/icons/23_64_16.png" }, "232": { "iconFile": "res:/ui/texture/icons/24_64_1.png" }, "293": { "iconFile": "res:/ui/texture/icons/8_64_11.png" }, "294": { "iconFile": "res:/ui/texture/icons/8_64_10.png" }, "295": { "iconFile": "res:/ui/texture/icons/8_64_9.png" }, "349": { "iconFile": "res:/ui/texture/icons/13_64_5.png" }, "350": { "iconFile": "res:/ui/texture/icons/13_64_13.png" }, "352": { "iconFile": "res:/ui/texture/icons/13_64_9.png" }, "355": { "iconFile": "res:/ui/texture/icons/13_64_10.png" }, "356": { "iconFile": "res:/ui/texture/icons/13_64_14.png" }, "360": { "iconFile": "res:/ui/texture/icons/13_64_15.png" }, "361": { "iconFile": "res:/ui/texture/icons/13_64_11.png" }, "365": { "iconFile": "res:/ui/texture/icons/13_64_3.png" }, "366": { "iconFile": "res:/ui/texture/icons/13_64_7.png" }, "370": { "iconFile": "res:/ui/texture/icons/13_64_6.png" }, "371": { "iconFile": "res:/ui/texture/icons/13_64_2.png" }, "376": { "iconFile": "res:/ui/texture/icons/13_64_1.png" }, "379": { "iconFile": "res:/ui/texture/icons/12_64_15.png" }, "381": { "iconFile": "res:/ui/texture/icons/12_64_11.png" }, "384": { "iconFile": "res:/ui/texture/icons/12_64_14.png" }, "386": { "iconFile": "res:/ui/texture/icons/12_64_10.png" }, "387": { "iconFile": "res:/ui/texture/icons/12_64_9.png" }, "389": { "iconFile": "res:/ui/texture/icons/12_64_13.png" }, "398": { "iconFile": "res:/ui/texture/icons/11_64_5.png" }, "400": { "iconFile": "res:/ui/texture/icons/6_64_15.png" }, "401": { "iconFile": "res:/ui/texture/icons/6_64_12.png" }, "402": { "iconFile": "res:/ui/texture/icons/6_64_16.png" }, "404": { "iconFile": "res:/ui/texture/icons/11_64_11.png" }, "405": { "iconFile": "res:/ui/texture/icons/11_64_10.png" }, "413": { "iconFile": "res:/ui/texture/icons/8_64_12.png" }, "998": { "iconFile": "res:/ui/texture/icons/9_64_9.png" }, "999": { "iconFile": "res:/ui/texture/icons/9_64_11.png" }, "1001": { "iconFile": "res:/ui/texture/icons/9_64_10.png" }, "1002": { "iconFile": "res:/ui/texture/icons/9_64_8.png" }, "1004": { "iconFile": "res:/ui/texture/icons/14_64_1.png" }, "1007": { "iconFile": "res:/ui/texture/icons/21_64_8.png" }, "1029": { "iconFile": "res:/ui/texture/icons/1_64_3.png" }, "1030": { "iconFile": "res:/ui/texture/icons/1_64_8.png" }, "1031": { "iconFile": "res:/ui/texture/icons/1_64_6.png" }, "1033": { "iconFile": "res:/ui/texture/icons/1_64_7.png" }, "1035": { "iconFile": "res:/ui/texture/icons/1_64_2.png" }, "1036": { "iconFile": "res:/ui/texture/icons/2_64_6.png" }, "1041": { "iconFile": "res:/ui/texture/icons/3_64_6.png" }, "1042": { "iconFile": "res:/ui/texture/icons/2_64_12.png" }, "1044": { "iconFile": "res:/ui/texture/icons/2_64_5.png" }, "1046": { "iconFile": "res:/ui/texture/icons/5_64_12.png" }, "1047": { "iconFile": "res:/ui/texture/icons/15_64_9.png" }, "1061": { "iconFile": "res:/ui/texture/icons/12_64_8.png" }, "1063": { "iconFile": "res:/ui/texture/icons/5_64_16.png" }, "1084": { "iconFile": "res:/ui/texture/icons/11_64_16.png" }, "1131": { "iconFile": "res:/ui/texture/icons/8_64_1.png" }, "1139": { "iconFile": "res:/ui/texture/icons/8_64_2.png" }, "1140": { "iconFile": "res:/ui/texture/icons/8_64_3.png" }, "1141": { "iconFile": "res:/ui/texture/icons/8_64_4.png" }, "1142": { "iconFile": "res:/ui/texture/icons/8_64_5.png" }, "1143": { "iconFile": "res:/ui/texture/icons/8_64_6.png" }, "1144": { "iconFile": "res:/ui/texture/icons/8_64_7.png" }, "1145": { "iconFile": "res:/ui/texture/icons/8_64_8.png" }, "1156": { "iconFile": "res:/ui/texture/icons/26_64_14.png" }, "1157": { "iconFile": "res:/ui/texture/icons/27_64_8.png" }, "1158": { "iconFile": "res:/ui/texture/icons/27_64_7.png" }, "1159": { "iconFile": "res:/ui/texture/icons/27_64_6.png" }, "1162": { "iconFile": "res:/ui/texture/icons/27_64_12.png" }, "1163": { "iconFile": "res:/ui/texture/icons/27_64_11.png" }, "1164": { "iconFile": "res:/ui/texture/icons/27_64_10.png" }, "1168": { "iconFile": "res:/ui/texture/icons/27_64_16.png" }, "1169": { "iconFile": "res:/ui/texture/icons/27_64_15.png" }, "1170": { "iconFile": "res:/ui/texture/icons/27_64_14.png" }, "1171": { "iconFile": "res:/ui/texture/icons/27_64_5.png" }, "1172": { "iconFile": "res:/ui/texture/icons/26_64_16.png" }, "1173": { "iconFile": "res:/ui/texture/icons/26_64_15.png" }, "1174": { "iconFile": "res:/ui/texture/icons/26_64_13.png" }, "1175": { "iconFile": "res:/ui/texture/icons/26_64_12.png" }, "1177": { "iconFile": "res:/ui/texture/icons/10_64_5.png" }, "1178": { "iconFile": "res:/ui/texture/icons/10_64_4.png" }, "1179": { "iconFile": "res:/ui/texture/icons/10_64_3.png" }, "1180": { "iconFile": "res:/ui/texture/icons/10_64_1.png" }, "1181": { "iconFile": "res:/ui/texture/icons/10_64_2.png" }, "1182": { "iconFile": "res:/ui/texture/icons/10_64_6.png" }, "1183": { "iconFile": "res:/ui/texture/icons/10_64_7.png" }, "1184": { "iconFile": "res:/ui/texture/icons/10_64_8.png" }, "1185": { "iconFile": "res:/ui/texture/icons/10_64_9.png" }, "1186": { "iconFile": "res:/ui/texture/icons/10_64_10.png" }, "1187": { "iconFile": "res:/ui/texture/icons/10_64_11.png" }, "1188": { "iconFile": "res:/ui/texture/icons/10_64_12.png" }, "1189": { "iconFile": "res:/ui/texture/icons/10_64_13.png" }, "1190": { "iconFile": "res:/ui/texture/icons/10_64_14.png" }, "1191": { "iconFile": "res:/ui/texture/icons/10_64_15.png" }, "1192": { "iconFile": "res:/ui/texture/icons/10_64_16.png" }, "1193": { "iconFile": "res:/ui/texture/icons/11_64_1.png" }, "1194": { "iconFile": "res:/ui/texture/icons/11_64_2.png" }, "1195": { "iconFile": "res:/ui/texture/icons/11_64_3.png" }, "1196": { "iconFile": "res:/ui/texture/icons/11_64_4.png" }, "1198": { "iconFile": "res:/ui/texture/icons/11_64_6.png" }, "1199": { "iconFile": "res:/ui/texture/icons/11_64_7.png" }, "1200": { "iconFile": "res:/ui/texture/icons/6_64_13.png" }, "1201": { "iconFile": "res:/ui/texture/icons/11_64_9.png" }, "1204": { "iconFile": "res:/ui/texture/icons/11_64_12.png" }, "1205": { "iconFile": "res:/ui/texture/icons/11_64_13.png" }, "1206": { "iconFile": "res:/ui/texture/icons/11_64_14.png" }, "1207": { "iconFile": "res:/ui/texture/icons/11_64_15.png" }, "1209": { "iconFile": "res:/ui/texture/icons/7_64_16.png" }, "1269": { "iconFile": "res:/ui/texture/icons/23_64_9.png" }, "1270": { "iconFile": "res:/ui/texture/icons/23_64_12.png" }, "1271": { "iconFile": "res:/ui/texture/icons/23_64_13.png" }, "1272": { "iconFile": "res:/ui/texture/icons/23_64_7.png" }, "1273": { "iconFile": "res:/ui/texture/icons/23_64_6.png" }, "1274": { "iconFile": "res:/ui/texture/icons/23_64_14.png" }, "1275": { "iconFile": "res:/ui/texture/icons/23_64_8.png" }, "1277": { "iconFile": "res:/ui/texture/icons/23_64_5.png" }, "1279": { "iconFile": "res:/ui/texture/icons/23_64_11.png" }, "1282": { "iconFile": "res:/ui/texture/icons/23_64_10.png" }, "1283": { "iconFile": "res:/ui/texture/icons/12_64_4.png" }, "1284": { "iconFile": "res:/ui/texture/icons/12_64_6.png" }, "1285": { "iconFile": "res:/ui/texture/icons/14_64_2.png" }, "1286": { "iconFile": "res:/ui/texture/icons/14_64_3.png" }, "1287": { "iconFile": "res:/ui/texture/icons/14_64_4.png" }, "1288": { "iconFile": "res:/ui/texture/icons/14_64_5.png" }, "1289": { "iconFile": "res:/ui/texture/icons/14_64_6.png" }, "1290": { "iconFile": "res:/ui/texture/icons/14_64_7.png" }, "1291": { "iconFile": "res:/ui/texture/icons/14_64_8.png" }, "1292": { "iconFile": "res:/ui/texture/icons/14_64_9.png" }, "1293": { "iconFile": "res:/ui/texture/icons/14_64_10.png" }, "1294": { "iconFile": "res:/ui/texture/icons/14_64_11.png" }, "1295": { "iconFile": "res:/ui/texture/icons/14_64_12.png" }, "1296": { "iconFile": "res:/ui/texture/icons/14_64_13.png" }, "1297": { "iconFile": "res:/ui/texture/icons/14_64_14.png" }, "1298": { "iconFile": "res:/ui/texture/icons/14_64_15.png" }, "1299": { "iconFile": "res:/ui/texture/icons/14_64_16.png" }, "1300": { "iconFile": "res:/ui/texture/icons/15_64_1.png" }, "1301": { "iconFile": "res:/ui/texture/icons/15_64_2.png" }, "1302": { "iconFile": "res:/ui/texture/icons/15_64_3.png" }, "1303": { "iconFile": "res:/ui/texture/icons/15_64_4.png" }, "1304": { "iconFile": "res:/ui/texture/icons/15_64_5.png" }, "1305": { "iconFile": "res:/ui/texture/icons/15_64_6.png" }, "1306": { "iconFile": "res:/ui/texture/icons/15_64_7.png" }, "1307": { "iconFile": "res:/ui/texture/icons/15_64_8.png" }, "1310": { "iconFile": "res:/ui/texture/icons/15_64_10.png" }, "1311": { "iconFile": "res:/ui/texture/icons/15_64_11.png" }, "1312": { "iconFile": "res:/ui/texture/icons/15_64_12.png" }, "1313": { "iconFile": "res:/ui/texture/icons/15_64_13.png" }, "1314": { "iconFile": "res:/ui/texture/icons/15_64_14.png" }, "1315": { "iconFile": "res:/ui/texture/icons/15_64_15.png" }, "1316": { "iconFile": "res:/ui/texture/icons/15_64_16.png" }, "1317": { "iconFile": "res:/ui/texture/icons/16_64_1.png" }, "1318": { "iconFile": "res:/ui/texture/icons/16_64_2.png" }, "1319": { "iconFile": "res:/ui/texture/icons/16_64_3.png" }, "1320": { "iconFile": "res:/ui/texture/icons/16_64_4.png" }, "1321": { "iconFile": "res:/ui/texture/icons/16_64_5.png" }, "1322": { "iconFile": "res:/ui/texture/icons/16_64_6.png" }, "1323": { "iconFile": "res:/ui/texture/icons/16_64_7.png" }, "1324": { "iconFile": "res:/ui/texture/icons/16_64_8.png" }, "1325": { "iconFile": "res:/ui/texture/icons/16_64_9.png" }, "1326": { "iconFile": "res:/ui/texture/icons/16_64_10.png" }, "1327": { "iconFile": "res:/ui/texture/icons/16_64_11.png" }, "1328": { "iconFile": "res:/ui/texture/icons/16_64_12.png" }, "1329": { "iconFile": "res:/ui/texture/icons/16_64_13.png" }, "1330": { "iconFile": "res:/ui/texture/icons/16_64_14.png" }, "1331": { "iconFile": "res:/ui/texture/icons/16_64_15.png" }, "1332": { "iconFile": "res:/ui/texture/icons/16_64_16.png" }, "1333": { "iconFile": "res:/ui/texture/icons/20_64_1.png" }, "1334": { "iconFile": "res:/ui/texture/icons/20_64_5.png" }, "1335": { "iconFile": "res:/ui/texture/icons/20_64_9.png" }, "1336": { "iconFile": "res:/ui/texture/icons/20_64_13.png" }, "1337": { "iconFile": "res:/ui/texture/icons/20_64_7.png" }, "1338": { "iconFile": "res:/ui/texture/icons/20_64_11.png" }, "1339": { "iconFile": "res:/ui/texture/icons/20_64_15.png" }, "1340": { "iconFile": "res:/ui/texture/icons/20_64_3.png" }, "1341": { "iconFile": "res:/ui/texture/icons/21_64_1.png" }, "1342": { "iconFile": "res:/ui/texture/icons/21_64_5.png" }, "1343": { "iconFile": "res:/ui/texture/icons/21_64_9.png" }, "1344": { "iconFile": "res:/ui/texture/icons/21_64_13.png" }, "1345": { "iconFile": "res:/ui/texture/icons/12_64_16.png" }, "1346": { "iconFile": "res:/ui/texture/icons/21_64_2.png" }, "1347": { "iconFile": "res:/ui/texture/icons/21_64_6.png" }, "1348": { "iconFile": "res:/ui/texture/icons/21_64_10.png" }, "1349": { "iconFile": "res:/ui/texture/icons/21_64_14.png" }, "1350": { "iconFile": "res:/ui/texture/icons/21_64_3.png" }, "1351": { "iconFile": "res:/ui/texture/icons/21_64_7.png" }, "1352": { "iconFile": "res:/ui/texture/icons/21_64_15.png" }, "1353": { "iconFile": "res:/ui/texture/icons/21_64_11.png" }, "1356": { "iconFile": "res:/ui/texture/icons/23_64_15.png" }, "1357": { "iconFile": "res:/ui/texture/icons/24_64_3.png" }, "1358": { "iconFile": "res:/ui/texture/icons/24_64_4.png" }, "1359": { "iconFile": "res:/ui/texture/icons/24_64_5.png" }, "1360": { "iconFile": "res:/ui/texture/icons/24_64_6.png" }, "1361": { "iconFile": "res:/ui/texture/icons/24_64_7.png" }, "1362": { "iconFile": "res:/ui/texture/icons/24_64_8.png" }, "1363": { "iconFile": "res:/ui/texture/icons/24_64_9.png" }, "1364": { "iconFile": "res:/ui/texture/icons/24_64_10.png" }, "1365": { "iconFile": "res:/ui/texture/icons/24_64_11.png" }, "1366": { "iconFile": "res:/ui/texture/icons/24_64_12.png" }, "1367": { "iconFile": "res:/ui/texture/icons/24_64_13.png" }, "1368": { "iconFile": "res:/ui/texture/icons/24_64_14.png" }, "1369": { "iconFile": "res:/ui/texture/icons/24_64_15.png" }, "1370": { "iconFile": "res:/ui/texture/icons/24_64_16.png" }, "1377": { "iconFile": "res:/ui/texture/icons/25_64_1.png" }, "1378": { "iconFile": "res:/ui/texture/icons/22_32_1.png" }, "1379": { "iconFile": "res:/ui/texture/icons/22_32_2.png" }, "1380": { "iconFile": "res:/ui/texture/icons/22_32_3.png" }, "1381": { "iconFile": "res:/ui/texture/icons/22_32_4.png" }, "1382": { "iconFile": "res:/ui/texture/icons/22_32_5.png" }, "1383": { "iconFile": "res:/ui/texture/icons/22_32_6.png" }, "1384": { "iconFile": "res:/ui/texture/icons/22_32_7.png" }, "1385": { "iconFile": "res:/ui/texture/icons/22_32_9.png" }, "1386": { "iconFile": "res:/ui/texture/icons/22_32_10.png" }, "1387": { "iconFile": "res:/ui/texture/icons/22_32_11.png" }, "1388": { "iconFile": "res:/ui/texture/icons/22_32_12.png" }, "1389": { "iconFile": "res:/ui/texture/icons/22_32_13.png" }, "1390": { "iconFile": "res:/ui/texture/icons/22_32_14.png" }, "1391": { "iconFile": "res:/ui/texture/icons/22_32_15.png" }, "1392": { "iconFile": "res:/ui/texture/icons/22_32_16.png" }, "1393": { "iconFile": "res:/ui/texture/icons/22_32_9.png" }, "1394": { "iconFile": "res:/ui/texture/icons/22_32_10.png" }, "1395": { "iconFile": "res:/ui/texture/icons/22_32_11.png" }, "1396": { "iconFile": "res:/ui/texture/icons/22_32_12.png" }, "1397": { "iconFile": "res:/ui/texture/icons/22_32_21.png" }, "1398": { "iconFile": "res:/ui/texture/icons/22_32_22.png" }, "1399": { "iconFile": "res:/ui/texture/icons/22_32_23.png" }, "1400": { "iconFile": "res:/ui/texture/icons/2_64_7.png" }, "1401": { "iconFile": "res:/ui/texture/icons/22_32_24.png" }, "1405": { "iconFile": "res:/ui/texture/icons/12_64_7.png" }, "1406": { "iconFile": "res:/ui/texture/icons/25_64_2.png" }, "1432": { "iconFile": "res:/ui/texture/icons/26_64_1.png" }, "1433": { "iconFile": "res:/ui/texture/icons/26_64_2.png" }, "1434": { "iconFile": "res:/ui/texture/icons/26_64_3.png" }, "1435": { "iconFile": "res:/ui/texture/icons/26_64_4.png" }, "1436": { "iconFile": "res:/ui/texture/icons/27_64_1.png" }, "1437": { "iconFile": "res:/ui/texture/icons/27_64_2.png" }, "1438": { "iconFile": "res:/ui/texture/icons/27_64_3.png" }, "1439": { "iconFile": "res:/ui/texture/icons/19_128_1.png" }, "1440": { "iconFile": "res:/ui/texture/icons/19_128_2.png" }, "1441": { "iconFile": "res:/ui/texture/icons/19_128_3.png" }, "1442": { "iconFile": "res:/ui/texture/icons/19_128_4.png" }, "1443": { "iconFile": "res:/ui/texture/icons/9_64_5.png" }, "1444": { "iconFile": "res:/ui/texture/icons/25_64_4.png" }, "1445": { "iconFile": "res:/ui/texture/icons/3_64_7.png" }, "1446": { "iconFile": "res:/ui/texture/icons/9_64_16.png" }, "1447": { "iconFile": "res:/ui/texture/corps/42_128_3.png" }, "1448": { "iconFile": "res:/ui/texture/corps/43_128_1.png" }, "1449": { "iconFile": "res:/ui/texture/corps/39_128_4.png" }, "1450": { "iconFile": "res:/ui/texture/corps/43_128_2.png" }, "1451": { "iconFile": "res:/ui/texture/corps/43_128_3.png" }, "1452": { "iconFile": "res:/ui/texture/corps/42_128_1.png" }, "1453": { "iconFile": "res:/ui/texture/corps/10_128_2.png" }, "1454": { "iconFile": "res:/ui/texture/corps/42_128_4.png" }, "1455": { "iconFile": "res:/ui/texture/corps/10_128_1.png" }, "1456": { "iconFile": "res:/ui/texture/corps/39_128_1.png" }, "1457": { "iconFile": "res:/ui/texture/corps/41_128_4.png" }, "1458": { "iconFile": "res:/ui/texture/corps/43_128_4.png" }, "1459": { "iconFile": "res:/ui/texture/icons/25_64_5.png" }, "1460": { "iconFile": "res:/ui/texture/icons/25_64_6.png" }, "1461": { "iconFile": "res:/ui/texture/icons/25_64_7.png" }, "1462": { "iconFile": "res:/ui/texture/icons/25_64_8.png" }, "1463": { "iconFile": "res:/ui/texture/icons/25_64_9.png" }, "1464": { "iconFile": "res:/ui/texture/icons/25_64_10.png" }, "1465": { "iconFile": "res:/ui/texture/corps/7_128_4.png" }, "1466": { "iconFile": "res:/ui/texture/corps/41_128_3.png" }, "1467": { "iconFile": "res:/ui/texture/corps/22_128_2.png" }, "1468": { "iconFile": "res:/ui/texture/corps/22_128_1.png" }, "1469": { "iconFile": "res:/ui/texture/corps/23_128_1.png" }, "1470": { "iconFile": "res:/ui/texture/corps/22_128_4.png" }, "1471": { "iconFile": "res:/ui/texture/corps/21_128_2.png" }, "1472": { "iconFile": "res:/ui/texture/corps/23_128_2.png" }, "1473": { "iconFile": "res:/ui/texture/corps/21_128_3.png" }, "1474": { "iconFile": "res:/ui/texture/corps/23_128_3.png" }, "1475": { "iconFile": "res:/ui/texture/corps/21_128_4.png" }, "1476": { "iconFile": "res:/ui/texture/corps/22_128_3.png" }, "1477": { "iconFile": "res:/ui/texture/corps/23_128_4.png" }, "1478": { "iconFile": "res:/ui/texture/corps/21_128_1.png" }, "1479": { "iconFile": "res:/ui/texture/corps/14_128_3.png" }, "1480": { "iconFile": "res:/ui/texture/corps/15_128_2.png" }, "1481": { "iconFile": "res:/ui/texture/corps/14_128_2.png" }, "1482": { "iconFile": "res:/ui/texture/corps/19_128_4.png" }, "1483": { "iconFile": "res:/ui/texture/corps/16_128_1.png" }, "1484": { "iconFile": "res:/ui/texture/corps/18_128_3.png" }, "1485": { "iconFile": "res:/ui/texture/corps/17_128_2.png" }, "1486": { "iconFile": "res:/ui/texture/corps/19_128_1.png" }, "1487": { "iconFile": "res:/ui/texture/corps/17_128_4.png" }, "1488": { "iconFile": "res:/ui/texture/corps/16_128_2.png" }, "1489": { "iconFile": "res:/ui/texture/corps/13_128_2.png" }, "1490": { "iconFile": "res:/ui/texture/corps/15_128_4.png" }, "1491": { "iconFile": "res:/ui/texture/corps/17_128_3.png" }, "1492": { "iconFile": "res:/ui/texture/corps/13_128_3.png" }, "1494": { "iconFile": "res:/ui/texture/corps/18_128_4.png" }, "1495": { "iconFile": "res:/ui/texture/corps/14_128_4.png" }, "1496": { "iconFile": "res:/ui/texture/corps/17_128_1.png" }, "1497": { "iconFile": "res:/ui/texture/corps/18_128_2.png" }, "1498": { "iconFile": "res:/ui/texture/corps/16_128_3.png" }, "1499": { "iconFile": "res:/ui/texture/corps/15_128_1.png" }, "1500": { "iconFile": "res:/ui/texture/corps/16_128_4.png" }, "1501": { "iconFile": "res:/ui/texture/corps/18_128_1.png" }, "1502": { "iconFile": "res:/ui/texture/corps/12_128_1.png" }, "1503": { "iconFile": "res:/ui/texture/corps/13_128_1.png" }, "1504": { "iconFile": "res:/ui/texture/corps/12_128_3.png" }, "1505": { "iconFile": "res:/ui/texture/corps/12_128_2.png" }, "1506": { "iconFile": "res:/ui/texture/corps/12_128_4.png" }, "1507": { "iconFile": "res:/ui/texture/corps/15_128_3.png" }, "1508": { "iconFile": "res:/ui/texture/corps/13_128_4.png" }, "1509": { "iconFile": "res:/ui/texture/corps/19_128_2.png" }, "1510": { "iconFile": "res:/ui/texture/corps/33_128_1.png" }, "1511": { "iconFile": "res:/ui/texture/corps/33_128_3.png" }, "1512": { "iconFile": "res:/ui/texture/corps/26_128_1.png" }, "1513": { "iconFile": "res:/ui/texture/corps/31_128_3.png" }, "1514": { "iconFile": "res:/ui/texture/corps/28_128_2.png" }, "1515": { "iconFile": "res:/ui/texture/corps/27_128_3.png" }, "1516": { "iconFile": "res:/ui/texture/corps/34_128_3.png" }, "1517": { "iconFile": "res:/ui/texture/corps/32_128_3.png" }, "1518": { "iconFile": "res:/ui/texture/corps/29_128_4.png" }, "1519": { "iconFile": "res:/ui/texture/corps/25_128_4.png" }, "1520": { "iconFile": "res:/ui/texture/corps/25_128_2.png" }, "1521": { "iconFile": "res:/ui/texture/corps/38_128_2.png" }, "1522": { "iconFile": "res:/ui/texture/corps/25_128_3.png" }, "1523": { "iconFile": "res:/ui/texture/corps/31_128_2.png" }, "1524": { "iconFile": "res:/ui/texture/corps/32_128_1.png" }, "1525": { "iconFile": "res:/ui/texture/corps/32_128_4.png" }, "1526": { "iconFile": "res:/ui/texture/corps/33_128_2.png" }, "1527": { "iconFile": "res:/ui/texture/corps/30_128_1.png" }, "1528": { "iconFile": "res:/ui/texture/corps/31_128_4.png" }, "1529": { "iconFile": "res:/ui/texture/corps/32_128_2.png" }, "1530": { "iconFile": "res:/ui/texture/corps/25_128_1.png" }, "1532": { "iconFile": "res:/ui/texture/corps/30_128_2.png" }, "1533": { "iconFile": "res:/ui/texture/corps/30_128_4.png" }, "1534": { "iconFile": "res:/ui/texture/corps/29_128_1.png" }, "1535": { "iconFile": "res:/ui/texture/corps/29_128_2.png" }, "1536": { "iconFile": "res:/ui/texture/corps/29_128_3.png" }, "1537": { "iconFile": "res:/ui/texture/corps/10_128_3.png" }, "1538": { "iconFile": "res:/ui/texture/corps/31_128_1.png" }, "1539": { "iconFile": "res:/ui/texture/corps/35_128_2.png" }, "1540": { "iconFile": "res:/ui/texture/corps/24_128_3.png" }, "1541": { "iconFile": "res:/ui/texture/corps/26_128_3.png" }, "1542": { "iconFile": "res:/ui/texture/corps/35_128_3.png" }, "1543": { "iconFile": "res:/ui/texture/corps/28_128_3.png" }, "1544": { "iconFile": "res:/ui/texture/corps/34_128_2.png" }, "1545": { "iconFile": "res:/ui/texture/corps/27_128_4.png" }, "1546": { "iconFile": "res:/ui/texture/corps/14_128_1.png" }, "1547": { "iconFile": "res:/ui/texture/corps/36_128_2.png" }, "1548": { "iconFile": "res:/ui/texture/corps/3_128_4.png" }, "1549": { "iconFile": "res:/ui/texture/corps/24_128_1.png" }, "1550": { "iconFile": "res:/ui/texture/corps/19_128_3.png" }, "1551": { "iconFile": "res:/ui/texture/corps/38_128_1.png" }, "1552": { "iconFile": "res:/ui/texture/corps/24_128_2.png" }, "1553": { "iconFile": "res:/ui/texture/corps/4_128_1.png" }, "1554": { "iconFile": "res:/ui/texture/corps/24_128_4.png" }, "1555": { "iconFile": "res:/ui/texture/corps/35_128_4.png" }, "1556": { "iconFile": "res:/ui/texture/corps/40_128_2.png" }, "1557": { "iconFile": "res:/ui/texture/corps/28_128_4.png" }, "1558": { "iconFile": "res:/ui/texture/corps/40_128_4.png" }, "1559": { "iconFile": "res:/ui/texture/corps/26_128_4.png" }, "1560": { "iconFile": "res:/ui/texture/corps/26_128_2.png" }, "1561": { "iconFile": "res:/ui/texture/corps/27_128_1.png" }, "1562": { "iconFile": "res:/ui/texture/corps/28_128_1.png" }, "1563": { "iconFile": "res:/ui/texture/corps/27_128_2.png" }, "1564": { "iconFile": "res:/ui/texture/corps/3_128_2.png" }, "1565": { "iconFile": "res:/ui/texture/corps/40_128_3.png" }, "1566": { "iconFile": "res:/ui/texture/corps/39_128_3.png" }, "1567": { "iconFile": "res:/ui/texture/corps/11_128_4.png" }, "1568": { "iconFile": "res:/ui/texture/corps/11_128_2.png" }, "1569": { "iconFile": "res:/ui/texture/corps/11_128_3.png" }, "1570": { "iconFile": "res:/ui/texture/corps/35_128_1.png" }, "1571": { "iconFile": "res:/ui/texture/corps/41_128_1.png" }, "1572": { "iconFile": "res:/ui/texture/corps/11_128_1.png" }, "1573": { "iconFile": "res:/ui/texture/corps/33_128_4.png" }, "1574": { "iconFile": "res:/ui/texture/corps/40_128_1.png" }, "1575": { "iconFile": "res:/ui/texture/corps/36_128_3.png" }, "1576": { "iconFile": "res:/ui/texture/corps/36_128_1.png" }, "1577": { "iconFile": "res:/ui/texture/corps/34_128_4.png" }, "1578": { "iconFile": "res:/ui/texture/corps/34_128_1.png" }, "1579": { "iconFile": "res:/ui/texture/corps/36_128_4.png" }, "1580": { "iconFile": "res:/ui/texture/corps/41_128_2.png" }, "1581": { "iconFile": "res:/ui/texture/corps/1_128_3.png" }, "1582": { "iconFile": "res:/ui/texture/corps/8_128_1.png" }, "1583": { "iconFile": "res:/ui/texture/corps/1_128_4.png" }, "1584": { "iconFile": "res:/ui/texture/corps/4_128_4.png" }, "1585": { "iconFile": "res:/ui/texture/corps/38_128_3.png" }, "1586": { "iconFile": "res:/ui/texture/corps/39_128_2.png" }, "1587": { "iconFile": "res:/ui/texture/corps/3_128_3.png" }, "1588": { "iconFile": "res:/ui/texture/corps/3_128_1.png" }, "1589": { "iconFile": "res:/ui/texture/corps/6_128_2.png" }, "1590": { "iconFile": "res:/ui/texture/corps/10_128_4.png" }, "1591": { "iconFile": "res:/ui/texture/corps/9_128_4.png" }, "1592": { "iconFile": "res:/ui/texture/corps/7_128_2.png" }, "1593": { "iconFile": "res:/ui/texture/corps/1_128_1.png" }, "1594": { "iconFile": "res:/ui/texture/corps/5_128_4.png" }, "1595": { "iconFile": "res:/ui/texture/corps/2_128_4.png" }, "1596": { "iconFile": "res:/ui/texture/corps/5_128_3.png" }, "1597": { "iconFile": "res:/ui/texture/corps/6_128_1.png" }, "1598": { "iconFile": "res:/ui/texture/corps/2_128_1.png" }, "1599": { "iconFile": "res:/ui/texture/corps/2_128_3.png" }, "1600": { "iconFile": "res:/ui/texture/corps/5_128_2.png" }, "1601": { "iconFile": "res:/ui/texture/corps/9_128_1.png" }, "1602": { "iconFile": "res:/ui/texture/corps/7_128_3.png" }, "1604": { "iconFile": "res:/ui/texture/corps/8_128_4.png" }, "1605": { "iconFile": "res:/ui/texture/corps/9_128_2.png" }, "1606": { "iconFile": "res:/ui/texture/corps/9_128_3.png" }, "1607": { "iconFile": "res:/ui/texture/corps/4_128_2.png" }, "1608": { "iconFile": "res:/ui/texture/corps/5_128_1.png" }, "1609": { "iconFile": "res:/ui/texture/corps/8_128_2.png" }, "1610": { "iconFile": "res:/ui/texture/corps/7_128_1.png" }, "1611": { "iconFile": "res:/ui/texture/corps/8_128_3.png" }, "1612": { "iconFile": "res:/ui/texture/corps/4_128_3.png" }, "1613": { "iconFile": "res:/ui/texture/corps/37_128_3.png" }, "1614": { "iconFile": "res:/ui/texture/corps/1_128_2.png" }, "1615": { "iconFile": "res:/ui/texture/corps/2_128_2.png" }, "1616": { "iconFile": "res:/ui/texture/corps/6_128_3.png" }, "1617": { "iconFile": "res:/ui/texture/corps/37_128_2.png" }, "1618": { "iconFile": "res:/ui/texture/corps/37_128_1.png" }, "1619": { "iconFile": "res:/ui/texture/corps/38_128_4.png" }, "1620": { "iconFile": "res:/ui/texture/corps/6_128_4.png" }, "1621": { "iconFile": "res:/ui/texture/corps/37_128_4.png" }, "1624": { "iconFile": "res:/ui/texture/corps/20_128_3.png" }, "1625": { "iconFile": "res:/ui/texture/corps/20_128_1.png" }, "1626": { "iconFile": "res:/ui/texture/corps/20_128_4.png" }, "1627": { "iconFile": "res:/ui/texture/corps/20_128_2.png" }, "1628": { "iconFile": "res:/ui/texture/icons/28_128_1.png" }, "1629": { "iconFile": "res:/ui/texture/icons/28_128_2.png" }, "1630": { "iconFile": "res:/ui/texture/icons/28_128_3.png" }, "1631": { "iconFile": "res:/ui/texture/icons/28_128_4.png" }, "1632": { "iconFile": "res:/ui/texture/icons/29_128_1.png" }, "1633": { "iconFile": "res:/ui/texture/icons/29_128_2.png" }, "1634": { "iconFile": "res:/ui/texture/icons/29_128_3.png" }, "1635": { "iconFile": "res:/ui/texture/icons/29_128_4.png" }, "1639": { "iconFile": "res:/ui/texture/icons/5_64_7.png" }, "1640": { "iconFile": "res:/ui/texture/icons/5_64_14.png" }, "1641": { "iconFile": "res:/ui/texture/icons/30_64_1.png" }, "1642": { "iconFile": "res:/ui/texture/icons/30_64_2.png" }, "1643": { "iconFile": "res:/ui/texture/icons/30_64_3.png" }, "1644": { "iconFile": "res:/ui/texture/icons/30_64_4.png" }, "1645": { "iconFile": "res:/ui/texture/icons/31_64_3.png" }, "1647": { "iconFile": "res:/ui/texture/icons/30_64_5.png" }, "1648": { "iconFile": "res:/ui/texture/icons/30_64_8.png" }, "1649": { "iconFile": "res:/ui/texture/icons/30_64_7.png" }, "1650": { "iconFile": "res:/ui/texture/icons/30_64_13.png" }, "1651": { "iconFile": "res:/ui/texture/icons/30_64_12.png" }, "1652": { "iconFile": "res:/ui/texture/icons/31_64_5.png" }, "1653": { "iconFile": "res:/ui/texture/icons/31_64_7.png" }, "1654": { "iconFile": "res:/ui/texture/icons/30_64_14.png" }, "1655": { "iconFile": "res:/ui/texture/icons/30_64_9.png" }, "1656": { "iconFile": "res:/ui/texture/icons/31_64_6.png" }, "1657": { "iconFile": "res:/ui/texture/icons/31_64_8.png" }, "1658": { "iconFile": "res:/ui/texture/icons/30_64_11.png" }, "1659": { "iconFile": "res:/ui/texture/icons/30_64_10.png" }, "1660": { "iconFile": "res:/ui/texture/icons/31_64_2.png" }, "1661": { "iconFile": "res:/ui/texture/icons/31_64_4.png" }, "1662": { "iconFile": "res:/ui/texture/icons/31_64_1.png" }, "1663": { "iconFile": "res:/ui/texture/icons/30_64_15.png" }, "1664": { "iconFile": "res:/ui/texture/icons/30_64_16.png" }, "1665": { "iconFile": "res:/ui/texture/icons/5_64_6.png" }, "1666": { "iconFile": "res:/ui/texture/icons/5_64_2.png" }, "1667": { "iconFile": "res:/ui/texture/icons/4_64_5.png" }, "1668": { "iconFile": "res:/ui/texture/icons/1_64_5.png" }, "1700": { "iconFile": "res:/ui/texture/icons/9_64_1.png" }, "1720": { "iconFile": "res:/ui/texture/icons/27_64_4.png" }, "1721": { "iconFile": "res:/ui/texture/icons/34_64_1.png" }, "1722": { "iconFile": "res:/ui/texture/icons/34_64_2.png" }, "1723": { "iconFile": "res:/ui/texture/icons/27_64_9.png" }, "1724": { "iconFile": "res:/ui/texture/icons/33_128_2.png" }, "2028": { "iconFile": "res:/ui/texture/icons/22_32_25.png" }, "2029": { "iconFile": "res:/ui/texture/icons/22_32_26.png" }, "2030": { "iconFile": "res:/ui/texture/icons/22_32_27.png" }, "2031": { "iconFile": "res:/ui/texture/icons/22_32_28.png" }, "2036": { "iconFile": "res:/ui/texture/icons/33_128_4.png" }, "2037": { "iconFile": "res:/ui/texture/icons/34_64_5.png" }, "2038": { "iconFile": "res:/ui/texture/icons/34_64_6.png" }, "2039": { "iconFile": "res:/ui/texture/icons/34_64_7.png" }, "2040": { "iconFile": "res:/ui/texture/icons/34_64_8.png" }, "2041": { "iconFile": "res:/ui/texture/icons/34_64_9.png" }, "2042": { "iconFile": "res:/ui/texture/icons/34_64_10.png" }, "2052": { "iconFile": "res:/ui/texture/icons/34_64_11.png" }, "2053": { "iconFile": "res:/ui/texture/icons/34_64_12.png" }, "2054": { "iconFile": "res:/ui/texture/icons/34_64_15.png" }, "2055": { "iconFile": "res:/ui/texture/icons/31_64_9.png" }, "2056": { "iconFile": "res:/ui/texture/icons/31_64_10.png" }, "2057": { "iconFile": "res:/ui/texture/icons/31_64_11.png" }, "2058": { "iconFile": "res:/ui/texture/icons/31_64_12.png" }, "2059": { "iconFile": "res:/ui/texture/icons/31_64_13.png" }, "2060": { "iconFile": "res:/ui/texture/icons/31_64_14.png" }, "2061": { "iconFile": "res:/ui/texture/icons/31_64_15.png" }, "2062": { "iconFile": "res:/ui/texture/icons/31_64_16.png" }, "2066": { "iconFile": "res:/ui/texture/icons/34_64_16.png" }, "2070": { "iconFile": "res:/Texture/Landmark/A33colonialruins.jpg" }, "2071": { "iconFile": "res:/Texture/Landmark/amarr.jpg" }, "2072": { "iconFile": "res:/Texture/Landmark/caldari.jpg" }, "2073": { "iconFile": "res:/Texture/Landmark/cityofgod.jpg" }, "2074": { "iconFile": "res:/Texture/Landmark/Curse.jpg" }, "2075": { "iconFile": "res:/Texture/Landmark/emperor.jpg" }, "2076": { "iconFile": "res:/Texture/Landmark/galente.jpg" }, "2077": { "iconFile": "res:/Texture/Landmark/ginnungagap.jpg" }, "2078": { "iconFile": "res:/Texture/Landmark/golgothanfields.jpg" }, "2079": { "iconFile": "res:/Texture/Landmark/jove.jpg" }, "2080": { "iconFile": "res:/Texture/Landmark/khanidkingdom.jpg" }, "2081": { "iconFile": "res:/Texture/Landmark/minmatar.jpg" }, "2082": { "iconFile": "res:/Texture/Landmark/myridianstrip.jpg" }, "2083": { "iconFile": "res:/Texture/Landmark/outerring.jpg" }, "2084": { "iconFile": "res:/Texture/Landmark/pointofnoreturn.jpg" }, "2085": { "iconFile": "res:/Texture/Landmark/serpentscoil.jpg" }, "2086": { "iconFile": "res:/Texture/Landmark/stain.jpg" }, "2087": { "iconFile": "res:/Texture/Landmark/thesyndicate.jpg" }, "2088": { "iconFile": "res:/Texture/Landmark/traumark.jpg" }, "2089": { "iconFile": "res:/Texture/Landmark/venal.jpg" }, "2093": { "iconFile": "res:/ui/texture/icons/35_64_5.png" }, "2094": { "iconFile": "res:/ui/texture/icons/35_64_6.png" }, "2095": { "iconFile": "res:/ui/texture/icons/35_64_7.png" }, "2096": { "iconFile": "res:/ui/texture/icons/35_64_9.png" }, "2100": { "iconFile": "res:/ui/texture/icons/35_64_8.png" }, "2101": { "iconFile": "res:/ui/texture/icons/35_64_1.png" }, "2102": { "iconFile": "res:/ui/texture/icons/35_64_11.png" }, "2103": { "iconFile": "res:/ui/texture/icons/35_64_2.png" }, "2104": { "iconFile": "res:/ui/texture/icons/35_64_15.png" }, "2105": { "iconFile": "res:/ui/texture/icons/35_64_14.png" }, "2106": { "iconFile": "res:/ui/texture/icons/35_64_12.png" }, "2176": { "iconFile": "res:/ui/texture/icons/35_64_4.png" }, "2177": { "iconFile": "res:/ui/texture/icons/37_64_1.png" }, "2178": { "iconFile": "res:/ui/texture/icons/37_64_2.png" }, "2179": { "iconFile": "res:/ui/texture/icons/37_64_3.png" }, "2180": { "iconFile": "res:/ui/texture/icons/37_64_4.png" }, "2181": { "iconFile": "res:/ui/texture/icons/37_64_5.png" }, "2182": { "iconFile": "res:/ui/texture/icons/37_64_6.png" }, "2183": { "iconFile": "res:/ui/texture/icons/37_64_7.png" }, "2184": { "iconFile": "res:/ui/texture/icons/37_64_8.png" }, "2185": { "iconFile": "res:/ui/texture/icons/37_64_9.png" }, "2186": { "iconFile": "res:/ui/texture/icons/37_64_10.png" }, "2187": { "iconFile": "res:/ui/texture/icons/37_64_11.png" }, "2188": { "iconFile": "res:/ui/texture/icons/37_64_12.png" }, "2189": { "iconFile": "res:/ui/texture/icons/37_64_13.png" }, "2190": { "iconFile": "res:/ui/texture/icons/37_64_14.png" }, "2191": { "iconFile": "res:/ui/texture/icons/37_64_15.png" }, "2192": { "iconFile": "res:/ui/texture/icons/37_64_16.png" }, "2193": { "iconFile": "res:/ui/texture/icons/39_64_1.png" }, "2194": { "iconFile": "res:/ui/texture/icons/39_64_2.png" }, "2195": { "iconFile": "res:/ui/texture/icons/39_64_3.png" }, "2196": { "iconFile": "res:/ui/texture/icons/39_64_4.png" }, "2197": { "iconFile": "res:/ui/texture/icons/39_64_5.png" }, "2198": { "iconFile": "res:/ui/texture/icons/39_64_6.png" }, "2199": { "iconFile": "res:/ui/texture/icons/39_64_7.png" }, "2200": { "iconFile": "res:/ui/texture/icons/39_64_8.png" }, "2201": { "iconFile": "res:/ui/texture/icons/39_64_9.png" }, "2202": { "iconFile": "res:/ui/texture/icons/39_64_10.png" }, "2203": { "iconFile": "res:/ui/texture/icons/39_64_11.png" }, "2204": { "iconFile": "res:/ui/texture/icons/39_64_12.png" }, "2205": { "iconFile": "res:/ui/texture/icons/39_64_13.png" }, "2206": { "iconFile": "res:/ui/texture/icons/39_64_14.png" }, "2207": { "iconFile": "res:/ui/texture/icons/39_64_15.png" }, "2208": { "iconFile": "res:/ui/texture/icons/39_64_16.png" }, "2209": { "iconFile": "res:/ui/texture/icons/40_64_1.png" }, "2210": { "iconFile": "res:/ui/texture/icons/40_64_2.png" }, "2211": { "iconFile": "res:/ui/texture/icons/40_64_3.png" }, "2212": { "iconFile": "res:/ui/texture/icons/40_64_4.png" }, "2213": { "iconFile": "res:/ui/texture/icons/40_64_5.png" }, "2214": { "iconFile": "res:/ui/texture/icons/40_64_6.png" }, "2215": { "iconFile": "res:/ui/texture/icons/40_64_7.png" }, "2216": { "iconFile": "res:/ui/texture/icons/40_64_8.png" }, "2217": { "iconFile": "res:/ui/texture/icons/40_64_9.png" }, "2218": { "iconFile": "res:/ui/texture/icons/40_64_10.png" }, "2219": { "iconFile": "res:/ui/texture/icons/40_64_11.png" }, "2220": { "iconFile": "res:/ui/texture/icons/40_64_12.png" }, "2221": { "iconFile": "res:/ui/texture/icons/40_64_13.png" }, "2222": { "iconFile": "res:/ui/texture/icons/40_64_14.png" }, "2223": { "iconFile": "res:/ui/texture/icons/40_64_15.png" }, "2224": { "iconFile": "res:/ui/texture/icons/40_64_16.png" }, "2225": { "iconFile": "res:/ui/texture/icons/41_64_1.png" }, "2226": { "iconFile": "res:/ui/texture/icons/41_64_2.png" }, "2227": { "iconFile": "res:/ui/texture/icons/41_64_5.png" }, "2228": { "iconFile": "res:/ui/texture/icons/41_64_7.png" }, "2229": { "iconFile": "res:/ui/texture/icons/41_64_9.png" }, "2230": { "iconFile": "res:/ui/texture/icons/41_64_10.png" }, "2231": { "iconFile": "res:/ui/texture/icons/41_64_11.png" }, "2232": { "iconFile": "res:/ui/texture/icons/41_64_12.png" }, "2233": { "iconFile": "res:/ui/texture/icons/41_64_6.png" }, "2234": { "iconFile": "res:/ui/texture/icons/41_64_8.png" }, "2243": { "iconFile": "res:/ui/texture/icons/27_64_13.png" }, "2244": { "iconFile": "res:/ui/texture/icons/41_64_3.png" }, "2302": { "iconFile": "res:/ui/texture/icons/25_64_15.png" }, "2304": { "iconFile": "res:/ui/texture/icons/41_64_4.png" }, "2309": { "iconFile": "res:/ui/texture/icons/36_64_15.png" }, "2310": { "iconFile": "res:/ui/texture/icons/41_64_15.png" }, "2311": { "iconFile": "res:/ui/texture/icons/41_64_16.png" }, "2312": { "iconFile": "res:/ui/texture/icons/42_64_1.png" }, "2313": { "iconFile": "res:/ui/texture/icons/42_64_2.png" }, "2314": { "iconFile": "res:/ui/texture/icons/42_64_3.png" }, "2315": { "iconFile": "res:/ui/texture/icons/42_64_4.png" }, "2316": { "iconFile": "res:/ui/texture/icons/42_64_5.png" }, "2317": { "iconFile": "res:/ui/texture/icons/42_64_6.png" }, "2318": { "iconFile": "res:/ui/texture/icons/42_64_7.png" }, "2319": { "iconFile": "res:/ui/texture/icons/42_64_8.png" }, "2320": { "iconFile": "res:/ui/texture/icons/42_64_9.png" }, "2321": { "iconFile": "res:/ui/texture/icons/42_64_10.png" }, "2322": { "iconFile": "res:/ui/texture/icons/42_64_11.png" }, "2323": { "iconFile": "res:/ui/texture/icons/42_64_12.png" }, "2324": { "iconFile": "res:/ui/texture/icons/42_64_13.png" }, "2325": { "iconFile": "res:/ui/texture/icons/42_64_14.png" }, "2326": { "iconFile": "res:/ui/texture/icons/42_64_15.png" }, "2327": { "iconFile": "res:/ui/texture/icons/42_64_16.png" }, "2328": { "iconFile": "res:/ui/texture/icons/43_64_1.png" }, "2329": { "iconFile": "res:/ui/texture/icons/43_64_2.png" }, "2330": { "iconFile": "res:/ui/texture/icons/43_64_3.png" }, "2331": { "iconFile": "res:/ui/texture/icons/43_64_4.png" }, "2332": { "iconFile": "res:/ui/texture/icons/43_64_5.png" }, "2333": { "iconFile": "res:/ui/texture/icons/43_64_6.png" }, "2334": { "iconFile": "res:/ui/texture/icons/43_64_7.png" }, "2335": { "iconFile": "res:/ui/texture/icons/43_64_8.png" }, "2336": { "iconFile": "res:/ui/texture/icons/43_64_9.png" }, "2337": { "iconFile": "res:/ui/texture/icons/43_64_10.png" }, "2338": { "iconFile": "res:/ui/texture/icons/43_64_11.png" }, "2339": { "iconFile": "res:/ui/texture/icons/43_64_12.png" }, "2340": { "iconFile": "res:/ui/texture/icons/43_64_13.png" }, "2355": { "iconFile": "res:/ui/texture/icons/7_64_4.png" }, "2512": { "iconFile": "res:/ui/texture/icons/7_64_12.png" }, "2526": { "iconFile": "res:/ui/texture/icons/49_64_6.png" }, "2527": { "iconFile": "res:/ui/texture/icons/49_64_5.png" }, "2528": { "iconFile": "res:/ui/texture/icons/45_64_9.png" }, "2529": { "iconFile": "res:/ui/texture/icons/45_64_10.png" }, "2530": { "iconFile": "res:/ui/texture/icons/45_64_11.png" }, "2531": { "iconFile": "res:/ui/texture/icons/45_64_12.png" }, "2532": { "iconFile": "res:/ui/texture/icons/45_64_13.png" }, "2533": { "iconFile": "res:/ui/texture/icons/45_64_14.png" }, "2534": { "iconFile": "res:/ui/texture/icons/45_64_15.png" }, "2535": { "iconFile": "res:/ui/texture/icons/45_64_16.png" }, "2536": { "iconFile": "res:/ui/texture/icons/46_64_1.png" }, "2537": { "iconFile": "res:/ui/texture/icons/46_64_2.png" }, "2538": { "iconFile": "res:/ui/texture/icons/46_64_3.png" }, "2539": { "iconFile": "res:/ui/texture/icons/46_64_4.png" }, "2540": { "iconFile": "res:/ui/texture/icons/46_64_5.png" }, "2541": { "iconFile": "res:/ui/texture/icons/46_64_6.png" }, "2542": { "iconFile": "res:/ui/texture/icons/46_64_7.png" }, "2543": { "iconFile": "res:/ui/texture/icons/46_64_8.png" }, "2544": { "iconFile": "res:/ui/texture/icons/46_64_9.png" }, "2545": { "iconFile": "res:/ui/texture/icons/46_64_10.png" }, "2546": { "iconFile": "res:/ui/texture/icons/46_64_11.png" }, "2547": { "iconFile": "res:/ui/texture/icons/46_64_13.png" }, "2548": { "iconFile": "res:/ui/texture/icons/46_64_14.png" }, "2549": { "iconFile": "res:/ui/texture/icons/46_64_15.png" }, "2550": { "iconFile": "res:/ui/texture/icons/46_64_16.png" }, "2551": { "iconFile": "res:/ui/texture/icons/43_64_14.png" }, "2552": { "iconFile": "res:/ui/texture/icons/43_64_15.png" }, "2553": { "iconFile": "res:/ui/texture/icons/43_64_16.png" }, "2554": { "iconFile": "res:/ui/texture/icons/51_64_5.png" }, "2555": { "iconFile": "res:/ui/texture/icons/51_64_4.png" }, "2556": { "iconFile": "res:/ui/texture/icons/51_64_2.png" }, "2557": { "iconFile": "res:/ui/texture/icons/51_64_3.png" }, "2558": { "iconFile": "res:/ui/texture/icons/51_64_6.png" }, "2559": { "iconFile": "res:/ui/texture/icons/51_64_1.png" }, "2560": { "iconFile": "res:/ui/texture/icons/51_64_9.png" }, "2561": { "iconFile": "res:/ui/texture/icons/51_64_8.png" }, "2562": { "iconFile": "res:/ui/texture/icons/12_64_3.png" }, "2563": { "iconFile": "res:/ui/texture/icons/2_64_16.png" }, "2567": { "iconFile": "res:/ui/texture/icons/47_64_1.png" }, "2568": { "iconFile": "res:/ui/texture/icons/47_64_2.png" }, "2569": { "iconFile": "res:/ui/texture/icons/47_64_3.png" }, "2570": { "iconFile": "res:/ui/texture/icons/47_64_4.png" }, "2571": { "iconFile": "res:/ui/texture/icons/47_64_5.png" }, "2572": { "iconFile": "res:/ui/texture/icons/47_64_6.png" }, "2573": { "iconFile": "res:/ui/texture/icons/47_64_7.png" }, "2574": { "iconFile": "res:/ui/texture/icons/47_64_8.png" }, "2575": { "iconFile": "res:/ui/texture/icons/47_64_9.png" }, "2576": { "iconFile": "res:/ui/texture/icons/47_64_10.png" }, "2577": { "iconFile": "res:/ui/texture/icons/47_64_11.png" }, "2578": { "iconFile": "res:/ui/texture/icons/47_64_12.png" }, "2579": { "iconFile": "res:/ui/texture/icons/47_64_13.png" }, "2580": { "iconFile": "res:/ui/texture/icons/47_64_14.png" }, "2581": { "iconFile": "res:/ui/texture/icons/47_64_15.png" }, "2582": { "iconFile": "res:/ui/texture/icons/47_64_16.png" }, "2645": { "iconFile": "res:/ui/texture/icons/48_64_14.png" }, "2646": { "iconFile": "res:/ui/texture/icons/48_64_13.png" }, "2647": { "iconFile": "res:/ui/texture/icons/48_64_12.png" }, "2648": { "iconFile": "res:/ui/texture/icons/48_64_11.png" }, "2649": { "iconFile": "res:/ui/texture/icons/48_64_10.png" }, "2650": { "iconFile": "res:/ui/texture/icons/48_64_9.png" }, "2651": { "iconFile": "res:/ui/texture/icons/48_64_8.png" }, "2652": { "iconFile": "res:/ui/texture/icons/48_64_7.png" }, "2653": { "iconFile": "res:/ui/texture/icons/48_64_6.png" }, "2654": { "iconFile": "res:/ui/texture/icons/48_64_16.png" }, "2655": { "iconFile": "res:/ui/texture/icons/48_64_5.png" }, "2656": { "iconFile": "res:/ui/texture/icons/48_64_4.png" }, "2657": { "iconFile": "res:/ui/texture/icons/48_64_3.png" }, "2658": { "iconFile": "res:/ui/texture/icons/48_64_2.png" }, "2659": { "iconFile": "res:/ui/texture/icons/48_64_15.png" }, "2660": { "iconFile": "res:/ui/texture/icons/48_64_1.png" }, "2661": { "iconFile": "res:/ui/texture/icons/50_64_1.png" }, "2662": { "iconFile": "res:/ui/texture/icons/50_64_2.png" }, "2663": { "iconFile": "res:/ui/texture/icons/50_64_3.png" }, "2664": { "iconFile": "res:/ui/texture/icons/50_64_4.png" }, "2665": { "iconFile": "res:/ui/texture/icons/50_64_5.png" }, "2666": { "iconFile": "res:/ui/texture/icons/50_64_6.png" }, "2667": { "iconFile": "res:/ui/texture/icons/50_64_7.png" }, "2668": { "iconFile": "res:/ui/texture/icons/50_64_8.png" }, "2669": { "iconFile": "res:/ui/texture/icons/50_64_9.png" }, "2670": { "iconFile": "res:/ui/texture/icons/50_64_10.png" }, "2671": { "iconFile": "res:/ui/texture/icons/49_64_1.png" }, "2672": { "iconFile": "res:/ui/texture/icons/49_64_2.png" }, "2673": { "iconFile": "res:/ui/texture/icons/49_64_3.png" }, "2674": { "iconFile": "res:/ui/texture/icons/49_64_4.png" }, "2677": { "iconFile": "res:/ui/texture/icons/49_64_7.png" }, "2678": { "iconFile": "res:/ui/texture/icons/49_64_8.png" }, "2679": { "iconFile": "res:/ui/texture/icons/49_64_9.png" }, "2680": { "iconFile": "res:/ui/texture/icons/49_64_10.png" }, "2681": { "iconFile": "res:/ui/texture/icons/49_64_11.png" }, "2682": { "iconFile": "res:/ui/texture/icons/49_64_12.png" }, "2683": { "iconFile": "res:/ui/texture/icons/49_64_13.png" }, "2684": { "iconFile": "res:/ui/texture/icons/49_64_14.png" }, "2685": { "iconFile": "res:/ui/texture/icons/49_64_15.png" }, "2686": { "iconFile": "res:/ui/texture/icons/49_64_16.png" }, "2693": { "iconFile": "res:/ui/texture/icons/51_64_7.png" }, "2696": { "iconFile": "res:/ui/texture/icons/51_64_10.png" }, "2697": { "iconFile": "res:/ui/texture/icons/51_64_11.png" }, "2698": { "iconFile": "res:/ui/texture/icons/51_64_12.png" }, "2699": { "iconFile": "res:/ui/texture/icons/51_64_13.png" }, "2700": { "iconFile": "res:/ui/texture/icons/51_64_14.png" }, "2701": { "iconFile": "res:/ui/texture/icons/51_64_15.png" }, "2702": { "iconFile": "res:/ui/texture/icons/51_64_16.png" }, "2703": { "iconFile": "res:/ui/texture/icons/9_64_15.png" }, "2705": { "iconFile": "res:/ui/texture/icons/50_64_16.png" }, "2732": { "iconFile": "res:/ui/texture/icons/3_64_12.png" }, "2733": { "iconFile": "res:/ui/texture/icons/22_32_49.png" }, "2734": { "iconFile": "res:/ui/texture/icons/22_32_50.png" }, "2735": { "iconFile": "res:/ui/texture/icons/22_32_51.png" }, "2736": { "iconFile": "res:/ui/texture/icons/22_32_52.png" }, "2754": { "iconFile": "res:/ui/texture/icons/7_64_13.png" }, "2827": { "iconFile": "res:/ui/texture/icons/52_64_1.png" }, "2828": { "iconFile": "res:/ui/texture/icons/52_64_2.png" }, "2829": { "iconFile": "res:/ui/texture/icons/52_64_3.png" }, "2830": { "iconFile": "res:/ui/texture/icons/52_64_4.png" }, "2831": { "iconFile": "res:/ui/texture/icons/52_64_5.png" }, "2832": { "iconFile": "res:/ui/texture/icons/52_64_6.png" }, "2833": { "iconFile": "res:/ui/texture/icons/52_64_7.png" }, "2834": { "iconFile": "res:/ui/texture/icons/52_64_8.png" }, "2835": { "iconFile": "res:/ui/texture/icons/52_64_9.png" }, "2836": { "iconFile": "res:/ui/texture/icons/52_64_10.png" }, "2837": { "iconFile": "res:/ui/texture/icons/52_64_11.png" }, "2838": { "iconFile": "res:/ui/texture/icons/52_64_12.png" }, "2839": { "iconFile": "res:/ui/texture/icons/52_64_13.png" }, "2840": { "iconFile": "res:/ui/texture/icons/52_64_14.png" }, "2841": { "iconFile": "res:/ui/texture/icons/52_64_15.png" }, "2842": { "iconFile": "res:/ui/texture/icons/52_64_16.png" }, "2843": { "iconFile": "res:/ui/texture/icons/53_64_1.png" }, "2844": { "iconFile": "res:/ui/texture/icons/53_64_2.png" }, "2845": { "iconFile": "res:/ui/texture/icons/53_64_3.png" }, "2846": { "iconFile": "res:/ui/texture/icons/53_64_4.png" }, "2847": { "iconFile": "res:/ui/texture/icons/53_64_5.png" }, "2848": { "iconFile": "res:/ui/texture/icons/53_64_6.png" }, "2849": { "iconFile": "res:/ui/texture/icons/53_64_7.png" }, "2850": { "iconFile": "res:/ui/texture/icons/53_64_8.png" }, "2851": { "iconFile": "res:/ui/texture/icons/53_64_9.png" }, "2852": { "iconFile": "res:/ui/texture/icons/53_64_10.png" }, "2853": { "iconFile": "res:/ui/texture/icons/53_64_11.png" }, "2854": { "iconFile": "res:/ui/texture/icons/53_64_12.png" }, "2855": { "iconFile": "res:/ui/texture/icons/53_64_13.png" }, "2856": { "iconFile": "res:/ui/texture/icons/53_64_14.png" }, "2857": { "iconFile": "res:/ui/texture/icons/53_64_15.png" }, "2858": { "iconFile": "res:/ui/texture/icons/53_64_16.png" }, "2859": { "iconFile": "res:/ui/texture/icons/54_64_1.png" }, "2860": { "iconFile": "res:/ui/texture/icons/54_64_2.png" }, "2861": { "iconFile": "res:/ui/texture/icons/54_64_3.png" }, "2862": { "iconFile": "res:/ui/texture/icons/54_64_4.png" }, "2863": { "iconFile": "res:/ui/texture/icons/54_64_5.png" }, "2864": { "iconFile": "res:/ui/texture/icons/54_64_6.png" }, "2865": { "iconFile": "res:/ui/texture/icons/54_64_7.png" }, "2866": { "iconFile": "res:/ui/texture/icons/54_64_8.png" }, "2867": { "iconFile": "res:/ui/texture/icons/54_64_9.png" }, "2868": { "iconFile": "res:/ui/texture/icons/54_64_10.png" }, "2869": { "iconFile": "res:/ui/texture/icons/54_64_11.png" }, "2870": { "iconFile": "res:/ui/texture/icons/54_64_12.png" }, "2871": { "iconFile": "res:/ui/texture/icons/54_64_13.png" }, "2872": { "iconFile": "res:/ui/texture/icons/54_64_14.png" }, "2873": { "iconFile": "res:/ui/texture/icons/54_64_15.png" }, "2874": { "iconFile": "res:/ui/texture/icons/54_64_16.png" }, "2875": { "iconFile": "res:/ui/texture/icons/55_64_1.png" }, "2876": { "iconFile": "res:/ui/texture/icons/55_64_2.png" }, "2877": { "iconFile": "res:/ui/texture/icons/55_64_3.png" }, "2878": { "iconFile": "res:/ui/texture/icons/55_64_4.png" }, "2879": { "iconFile": "res:/ui/texture/icons/55_64_5.png" }, "2880": { "iconFile": "res:/ui/texture/icons/55_64_6.png" }, "2881": { "iconFile": "res:/ui/texture/icons/55_64_7.png" }, "2882": { "iconFile": "res:/ui/texture/icons/55_64_8.png" }, "2883": { "iconFile": "res:/ui/texture/icons/55_64_9.png" }, "2884": { "iconFile": "res:/ui/texture/icons/55_64_10.png" }, "2885": { "iconFile": "res:/ui/texture/icons/55_64_11.png" }, "2886": { "iconFile": "res:/ui/texture/icons/55_64_12.png" }, "2887": { "iconFile": "res:/ui/texture/icons/55_64_13.png" }, "2888": { "iconFile": "res:/ui/texture/icons/55_64_14.png" }, "2889": { "iconFile": "res:/ui/texture/icons/55_64_15.png" }, "2890": { "iconFile": "res:/ui/texture/icons/55_64_16.png" }, "2891": { "iconFile": "res:/ui/texture/icons/46_64_12.png" }, "2893": { "iconFile": "res:/ui/texture/icons/4_64_16.png" }, "2908": { "iconFile": "res:/ui/texture/icons/7_64_3.png" }, "2934": { "iconFile": "res:/ui/texture/icons/56_64_2.png" }, "2943": { "iconFile": "res:/ui/texture/icons/57_64_4.png" }, "2971": { "iconFile": "res:/ui/texture/icons/36_64_13.png" }, "2974": { "iconFile": "res:/ui/texture/icons/36_64_16.png" }, "2983": { "iconFile": "res:/ui/texture/icons/56_64_1.png" }, "2985": { "iconFile": "res:/ui/texture/icons/56_64_3.png" }, "2986": { "iconFile": "res:/ui/texture/icons/56_64_4.png" }, "2987": { "iconFile": "res:/ui/texture/icons/56_64_5.png" }, "2988": { "iconFile": "res:/ui/texture/icons/56_64_6.png" }, "2989": { "iconFile": "res:/ui/texture/icons/56_64_7.png" }, "2990": { "iconFile": "res:/ui/texture/icons/56_64_8.png" }, "2991": { "iconFile": "res:/ui/texture/icons/56_64_9.png" }, "2992": { "iconFile": "res:/ui/texture/icons/56_64_10.png" }, "2993": { "iconFile": "res:/ui/texture/icons/56_64_11.png" }, "2994": { "iconFile": "res:/ui/texture/icons/56_64_12.png" }, "2995": { "iconFile": "res:/ui/texture/icons/56_64_13.png" }, "2996": { "iconFile": "res:/ui/texture/icons/56_64_14.png" }, "2997": { "iconFile": "res:/ui/texture/icons/56_64_15.png" }, "2998": { "iconFile": "res:/ui/texture/icons/56_64_16.png" }, "2999": { "iconFile": "res:/ui/texture/icons/57_64_1.png" }, "3000": { "iconFile": "res:/ui/texture/icons/57_64_2.png" }, "3001": { "iconFile": "res:/ui/texture/icons/57_64_3.png" }, "3003": { "iconFile": "res:/ui/texture/icons/57_64_6.png" }, "3004": { "iconFile": "res:/ui/texture/icons/57_64_7.png" }, "3005": { "iconFile": "res:/ui/texture/icons/57_64_8.png" }, "3006": { "iconFile": "res:/ui/texture/icons/57_64_9.png" }, "3007": { "iconFile": "res:/ui/texture/icons/57_64_10.png" }, "3008": { "iconFile": "res:/ui/texture/icons/57_64_11.png" }, "3009": { "iconFile": "res:/ui/texture/icons/57_64_12.png" }, "3010": { "iconFile": "res:/ui/texture/icons/57_64_13.png" }, "3011": { "iconFile": "res:/ui/texture/icons/57_64_14.png" }, "3012": { "iconFile": "res:/ui/texture/icons/57_64_15.png" }, "3013": { "iconFile": "res:/ui/texture/icons/57_64_16.png" }, "3019": { "iconFile": "res:/ui/texture/icons/58_64_1.png" }, "3021": { "iconFile": "res:/ui/texture/icons/59_128_1.png" }, "3022": { "iconFile": "res:/ui/texture/icons/59_128_2.png" }, "3023": { "iconFile": "res:/ui/texture/icons/59_128_3.png" }, "3024": { "iconFile": "res:/ui/texture/icons/59_128_4.png" }, "3025": { "iconFile": "res:/ui/texture/icons/58_64_2.png" }, "3026": { "iconFile": "res:/ui/texture/icons/58_64_3.png" }, "3027": { "iconFile": "res:/ui/texture/icons/58_64_4.png" }, "3028": { "iconFile": "res:/ui/texture/icons/58_64_5.png" }, "3029": { "iconFile": "res:/ui/texture/icons/58_64_6.png" }, "3030": { "iconFile": "res:/ui/texture/icons/58_64_7.png" }, "3031": { "iconFile": "res:/ui/texture/icons/58_64_9.png" }, "3032": { "iconFile": "res:/ui/texture/icons/58_64_10.png" }, "3033": { "iconFile": "res:/ui/texture/icons/58_64_11.png" }, "3034": { "iconFile": "res:/ui/texture/icons/58_64_14.png" }, "3035": { "iconFile": "res:/ui/texture/icons/58_64_15.png" }, "3036": { "iconFile": "res:/ui/texture/icons/58_64_13.png" }, "3038": { "iconFile": "res:/ui/texture/icons/17_128_3.png" }, "3074": { "iconFile": "res:/ui/texture/icons/35_64_3.png" }, "3127": { "iconFile": "res:/ui/texture/icons/60_128_1.png" }, "3128": { "iconFile": "res:/ui/texture/icons/60_128_2.png" }, "3129": { "iconFile": "res:/ui/texture/icons/60_128_3.png" }, "3130": { "iconFile": "res:/ui/texture/icons/60_128_4.png" }, "3131": { "iconFile": "res:/ui/texture/icons/61_128_1.png" }, "3172": { "iconFile": "res:/ui/texture/icons/67_128_1.png" }, "3173": { "iconFile": "res:/ui/texture/icons/67_128_2.png" }, "3174": { "iconFile": "res:/ui/texture/icons/67_128_4.png" }, "3175": { "iconFile": "res:/ui/texture/icons/65_128_1.png" }, "3176": { "iconFile": "res:/ui/texture/icons/65_128_2.png" }, "3177": { "iconFile": "res:/ui/texture/icons/65_128_4.png" }, "3178": { "iconFile": "res:/ui/texture/icons/66_128_1.png" }, "3179": { "iconFile": "res:/ui/texture/icons/66_128_2.png" }, "3180": { "iconFile": "res:/ui/texture/icons/66_128_4.png" }, "3181": { "iconFile": "res:/ui/texture/icons/63_64_1.png" }, "3182": { "iconFile": "res:/ui/texture/icons/63_64_2.png" }, "3183": { "iconFile": "res:/ui/texture/icons/63_64_3.png" }, "3184": { "iconFile": "res:/ui/texture/icons/63_64_4.png" }, "3185": { "iconFile": "res:/ui/texture/icons/63_64_5.png" }, "3186": { "iconFile": "res:/ui/texture/icons/63_64_6.png" }, "3187": { "iconFile": "res:/ui/texture/icons/63_64_7.png" }, "3188": { "iconFile": "res:/ui/texture/icons/63_64_8.png" }, "3189": { "iconFile": "res:/ui/texture/icons/63_64_9.png" }, "3190": { "iconFile": "res:/ui/texture/icons/63_64_10.png" }, "3191": { "iconFile": "res:/ui/texture/icons/63_64_11.png" }, "3192": { "iconFile": "res:/ui/texture/icons/63_64_12.png" }, "3193": { "iconFile": "res:/ui/texture/icons/68_64_9.png" }, "3194": { "iconFile": "res:/ui/texture/icons/68_64_10.png" }, "3195": { "iconFile": "res:/ui/texture/icons/68_64_11.png" }, "3196": { "iconFile": "res:/ui/texture/icons/68_64_12.png" }, "3197": { "iconFile": "res:/ui/texture/icons/68_64_13.png" }, "3198": { "iconFile": "res:/ui/texture/icons/68_64_14.png" }, "3199": { "iconFile": "res:/ui/texture/icons/68_64_15.png" }, "3200": { "iconFile": "res:/ui/texture/icons/68_64_16.png" }, "3201": { "iconFile": "res:/ui/texture/icons/68_64_2.png" }, "3202": { "iconFile": "res:/ui/texture/icons/68_64_3.png" }, "3203": { "iconFile": "res:/ui/texture/icons/68_64_4.png" }, "3208": { "iconFile": "res:/ui/texture/icons/61_128_2.png" }, "3210": { "iconFile": "res:/ui/texture/icons/62_64_1.png" }, "3211": { "iconFile": "res:/ui/texture/icons/62_64_2.png" }, "3212": { "iconFile": "res:/ui/texture/icons/62_64_3.png" }, "3213": { "iconFile": "res:/ui/texture/icons/62_64_4.png" }, "3214": { "iconFile": "res:/ui/texture/icons/62_64_5.png" }, "3215": { "iconFile": "res:/ui/texture/icons/62_64_6.png" }, "3216": { "iconFile": "res:/ui/texture/icons/62_64_7.png" }, "3217": { "iconFile": "res:/ui/texture/icons/62_64_8.png" }, "3218": { "iconFile": "res:/ui/texture/icons/62_64_9.png" }, "3219": { "iconFile": "res:/ui/texture/icons/62_64_10.png" }, "3220": { "iconFile": "res:/ui/texture/icons/62_64_11.png" }, "3221": { "iconFile": "res:/ui/texture/icons/62_64_12.png" }, "3222": { "iconFile": "res:/ui/texture/icons/62_64_13.png" }, "3223": { "iconFile": "res:/ui/texture/icons/62_64_14.png" }, "3224": { "iconFile": "res:/ui/texture/icons/62_64_15.png" }, "3225": { "iconFile": "res:/ui/texture/icons/62_64_16.png" }, "3226": { "iconFile": "res:/ui/texture/icons/63_64_13.png" }, "3227": { "iconFile": "res:/ui/texture/icons/63_64_14.png" }, "3228": { "iconFile": "res:/ui/texture/icons/63_64_15.png" }, "3229": { "iconFile": "res:/ui/texture/icons/63_64_16.png" }, "3230": { "iconFile": "res:/ui/texture/icons/64_64_1.png" }, "3231": { "iconFile": "res:/ui/texture/icons/64_64_2.png" }, "3232": { "iconFile": "res:/ui/texture/icons/64_64_3.png" }, "3233": { "iconFile": "res:/ui/texture/icons/64_64_4.png" }, "3234": { "iconFile": "res:/ui/texture/icons/64_64_5.png" }, "3235": { "iconFile": "res:/ui/texture/icons/64_64_6.png" }, "3236": { "iconFile": "res:/ui/texture/icons/64_64_7.png" }, "3237": { "iconFile": "res:/ui/texture/icons/64_64_8.png" }, "3238": { "iconFile": "res:/ui/texture/icons/64_64_9.png" }, "3239": { "iconFile": "res:/ui/texture/icons/64_64_10.png" }, "3240": { "iconFile": "res:/ui/texture/icons/64_64_11.png" }, "3241": { "iconFile": "res:/ui/texture/icons/64_64_12.png" }, "3242": { "iconFile": "res:/ui/texture/icons/64_64_13.png" }, "3243": { "iconFile": "res:/ui/texture/icons/64_64_14.png" }, "3244": { "iconFile": "res:/ui/texture/icons/64_64_15.png" }, "3245": { "iconFile": "res:/ui/texture/icons/64_64_16.png" }, "3246": { "iconFile": "res:/ui/texture/icons/68_64_5.png" }, "3247": { "iconFile": "res:/ui/texture/icons/68_64_6.png" }, "3248": { "iconFile": "res:/ui/texture/icons/68_64_7.png" }, "3249": { "iconFile": "res:/ui/texture/icons/68_64_8.png" }, "3250": { "iconFile": "res:/ui/texture/icons/69_64_1.png" }, "3251": { "iconFile": "res:/ui/texture/icons/69_64_2.png" }, "3252": { "iconFile": "res:/ui/texture/icons/69_64_3.png" }, "3253": { "iconFile": "res:/ui/texture/icons/69_64_4.png" }, "3254": { "iconFile": "res:/ui/texture/icons/69_64_5.png" }, "3255": { "iconFile": "res:/ui/texture/icons/69_64_6.png" }, "3256": { "iconFile": "res:/ui/texture/icons/69_64_7.png" }, "3257": { "iconFile": "res:/ui/texture/icons/69_64_8.png" }, "3258": { "iconFile": "res:/ui/texture/icons/69_64_9.png" }, "3259": { "iconFile": "res:/ui/texture/icons/69_64_10.png" }, "3260": { "iconFile": "res:/ui/texture/icons/69_64_11.png" }, "3261": { "iconFile": "res:/ui/texture/icons/69_64_12.png" }, "3262": { "iconFile": "res:/ui/texture/icons/69_64_13.png" }, "3263": { "iconFile": "res:/ui/texture/icons/69_64_14.png" }, "3264": { "iconFile": "res:/ui/texture/icons/69_64_15.png" }, "3265": { "iconFile": "res:/ui/texture/icons/69_64_16.png" }, "3266": { "iconFile": "res:/ui/texture/icons/68_64_1.png" }, "3267": { "iconFile": "res:/ui/texture/icons/70_64_1.png" }, "3268": { "iconFile": "res:/ui/texture/icons/70_64_2.png" }, "3278": { "iconFile": "res:/ui/texture/icons/70_64_5.png" }, "3279": { "iconFile": "res:/ui/texture/icons/70_64_8.png" }, "3280": { "iconFile": "res:/ui/texture/icons/70_64_6.png" }, "3281": { "iconFile": "res:/ui/texture/icons/70_64_7.png" }, "3282": { "iconFile": "res:/ui/texture/icons/70_64_3.png" }, "3283": { "iconFile": "res:/ui/texture/icons/70_64_4.png" }, "3299": { "iconFile": "res:/ui/texture/icons/70_64_9.png" }, "3300": { "iconFile": "res:/ui/texture/icons/70_64_10.png" }, "3301": { "iconFile": "res:/ui/texture/icons/70_64_11.png" }, "3302": { "iconFile": "res:/ui/texture/icons/70_64_12.png" }, "3303": { "iconFile": "res:/ui/texture/icons/70_64_13.png" }, "3304": { "iconFile": "res:/ui/texture/icons/70_64_14.png" }, "3305": { "iconFile": "res:/ui/texture/icons/70_64_15.png" }, "3306": { "iconFile": "res:/ui/texture/icons/70_64_16.png" }, "3307": { "iconFile": "res:/ui/texture/icons/71_64_1.png" }, "3308": { "iconFile": "res:/ui/texture/icons/71_64_2.png" }, "3309": { "iconFile": "res:/ui/texture/icons/71_64_3.png" }, "3310": { "iconFile": "res:/ui/texture/icons/71_64_4.png" }, "3311": { "iconFile": "res:/ui/texture/icons/71_64_5.png" }, "3312": { "iconFile": "res:/ui/texture/icons/71_64_6.png" }, "3313": { "iconFile": "res:/ui/texture/icons/71_64_7.png" }, "3314": { "iconFile": "res:/ui/texture/icons/71_64_8.png" }, "3315": { "iconFile": "res:/ui/texture/icons/71_64_9.png" }, "3316": { "iconFile": "res:/ui/texture/icons/71_64_10.png" }, "3317": { "iconFile": "res:/ui/texture/icons/71_64_11.png" }, "3318": { "iconFile": "res:/ui/texture/icons/71_64_12.png" }, "3319": { "iconFile": "res:/ui/texture/icons/71_64_13.png" }, "3320": { "iconFile": "res:/ui/texture/icons/71_64_14.png" }, "3321": { "iconFile": "res:/ui/texture/icons/71_64_15.png" }, "3322": { "iconFile": "res:/ui/texture/icons/71_64_16.png" }, "3323": { "iconFile": "res:/ui/texture/icons/72_64_1.png" }, "3324": { "iconFile": "res:/ui/texture/icons/72_64_2.png" }, "3325": { "iconFile": "res:/ui/texture/icons/72_64_3.png" }, "3326": { "iconFile": "res:/ui/texture/icons/72_64_4.png" }, "3327": { "iconFile": "res:/ui/texture/icons/72_64_5.png" }, "3328": { "iconFile": "res:/ui/texture/icons/72_64_6.png" }, "3329": { "iconFile": "res:/ui/texture/icons/72_64_8.png" }, "3330": { "iconFile": "res:/ui/texture/icons/72_64_9.png" }, "3333": { "iconFile": "res:/ui/texture/icons/72_64_10.png" }, "3334": { "iconFile": "res:/ui/texture/icons/72_64_11.png" }, "3335": { "iconFile": "res:/ui/texture/icons/72_64_12.png" }, "3336": { "iconFile": "res:/ui/texture/icons/72_64_13.png" }, "3337": { "iconFile": "res:/ui/texture/icons/72_64_14.png" }, "3338": { "iconFile": "res:/ui/texture/icons/72_64_15.png" }, "3339": { "iconFile": "res:/ui/texture/icons/74_64_1.png" }, "3340": { "iconFile": "res:/ui/texture/icons/74_64_2.png" }, "3341": { "iconFile": "res:/ui/texture/icons/74_64_3.png" }, "3342": { "iconFile": "res:/ui/texture/icons/74_64_4.png" }, "3343": { "iconFile": "res:/ui/texture/icons/74_64_5.png" }, "3344": { "iconFile": "res:/ui/texture/icons/74_64_6.png" }, "3345": { "iconFile": "res:/ui/texture/icons/74_64_7.png" }, "3346": { "iconFile": "res:/ui/texture/icons/74_64_8.png" }, "3347": { "iconFile": "res:/ui/texture/icons/74_64_9.png" }, "3348": { "iconFile": "res:/ui/texture/icons/74_64_10.png" }, "3369": { "iconFile": "res:/ui/texture/corps/47_128_1.png" }, "3370": { "iconFile": "res:/ui/texture/corps/47_128_2.png" }, "3371": { "iconFile": "res:/ui/texture/corps/47_128_3.png" }, "3372": { "iconFile": "res:/ui/texture/corps/47_128_4.png" }, "3433": { "iconFile": "res:/ui/texture/icons/76_64_1.png" }, "3435": { "iconFile": "res:/ui/texture/icons/78_64_1.png" }, "3436": { "iconFile": "res:/ui/texture/icons/78_64_2.png" }, "3437": { "iconFile": "res:/ui/texture/icons/78_64_3.png" }, "3438": { "iconFile": "res:/ui/texture/icons/78_64_4.png" }, "3439": { "iconFile": "res:/ui/texture/icons/78_64_5.png" }, "3440": { "iconFile": "res:/ui/texture/icons/78_64_6.png" }, "3441": { "iconFile": "res:/ui/texture/icons/78_64_7.png" }, "3442": { "iconFile": "res:/ui/texture/icons/78_64_8.png" }, "3443": { "iconFile": "res:/ui/texture/icons/78_64_9.png" }, "3444": { "iconFile": "res:/ui/texture/icons/78_64_10.png" }, "3445": { "iconFile": "res:/ui/texture/icons/78_64_11.png" }, "3446": { "iconFile": "res:/ui/texture/icons/78_64_12.png" }, "3447": { "iconFile": "res:/ui/texture/icons/78_64_13.png" }, "3448": { "iconFile": "res:/ui/texture/icons/78_64_14.png" }, "3449": { "iconFile": "res:/ui/texture/icons/78_64_15.png" }, "3450": { "iconFile": "res:/ui/texture/icons/78_64_16.png" }, "3626": { "iconFile": "res:/ui/texture/icons/76_64_9.png" }, "3631": { "iconFile": "res:/ui/texture/icons/76_64_6.png" }, "3636": { "iconFile": "res:/ui/texture/icons/76_64_7.png" }, "3641": { "iconFile": "res:/ui/texture/icons/76_64_5.png" }, "3646": { "iconFile": "res:/ui/texture/icons/76_64_8.png" }, "3716": { "iconFile": "res:/ui/texture/icons/76_64_14.png" }, "3717": { "iconFile": "res:/ui/texture/icons/76_64_12.png" }, "3718": { "iconFile": "res:/ui/texture/icons/76_64_15.png" }, "3719": { "iconFile": "res:/ui/texture/icons/76_64_10.png" }, "3720": { "iconFile": "res:/ui/texture/icons/76_64_13.png" }, "3721": { "iconFile": "res:/ui/texture/icons/76_64_11.png" }, "3722": { "iconFile": "res:/ui/texture/icons/82_64_10.png" }, "3723": { "iconFile": "res:/ui/texture/icons/82_64_9.png" }, "3724": { "iconFile": "res:/ui/texture/icons/82_64_7.png" }, "3725": { "iconFile": "res:/ui/texture/icons/82_64_8.png" }, "3726": { "iconFile": "res:/ui/texture/icons/82_64_4.png" }, "3727": { "iconFile": "res:/ui/texture/icons/82_64_3.png" }, "3728": { "iconFile": "res:/ui/texture/icons/82_64_1.png" }, "3729": { "iconFile": "res:/ui/texture/icons/82_64_2.png" }, "3730": { "iconFile": "res:/ui/texture/icons/82_64_11.png" }, "3731": { "iconFile": "res:/ui/texture/icons/82_64_12.png" }, "3732": { "iconFile": "res:/ui/texture/icons/82_64_5.png" }, "3733": { "iconFile": "res:/ui/texture/icons/82_64_6.png" }, "3734": { "iconFile": "res:/ui/texture/icons/84_64_6.png" }, "3735": { "iconFile": "res:/ui/texture/icons/84_64_4.png" }, "3736": { "iconFile": "res:/ui/texture/icons/84_64_2.png" }, "3737": { "iconFile": "res:/ui/texture/icons/84_64_3.png" }, "3738": { "iconFile": "res:/ui/texture/icons/84_64_7.png" }, "3739": { "iconFile": "res:/ui/texture/icons/83_64_1.png" }, "3740": { "iconFile": "res:/ui/texture/icons/83_64_2.png" }, "3741": { "iconFile": "res:/ui/texture/icons/83_64_3.png" }, "3742": { "iconFile": "res:/ui/texture/icons/83_64_4.png" }, "3743": { "iconFile": "res:/ui/texture/icons/84_64_1.png" }, "3744": { "iconFile": "res:/ui/texture/icons/83_64_5.png" }, "3745": { "iconFile": "res:/ui/texture/icons/83_64_6.png" }, "3746": { "iconFile": "res:/ui/texture/icons/83_64_7.png" }, "3747": { "iconFile": "res:/ui/texture/icons/83_64_8.png" }, "3748": { "iconFile": "res:/ui/texture/icons/84_64_5.png" }, "3749": { "iconFile": "res:/ui/texture/icons/83_64_9.png" }, "3750": { "iconFile": "res:/ui/texture/icons/83_64_10.png" }, "3751": { "iconFile": "res:/ui/texture/icons/83_64_11.png" }, "3752": { "iconFile": "res:/ui/texture/icons/83_64_12.png" }, "3753": { "iconFile": "res:/ui/texture/icons/84_64_9.png" }, "3754": { "iconFile": "res:/ui/texture/icons/83_64_13.png" }, "3755": { "iconFile": "res:/ui/texture/icons/84_64_8.png" }, "3756": { "iconFile": "res:/ui/texture/icons/76_64_4.png" }, "3759": { "iconFile": "res:/ui/texture/icons/76_64_16.png" }, "3762": { "iconFile": "res:/ui/texture/icons/89_128_1.png" }, "3763": { "iconFile": "res:/ui/texture/icons/89_128_2.png" }, "3764": { "iconFile": "res:/ui/texture/icons/89_128_3.png" }, "3765": { "iconFile": "res:/ui/texture/icons/89_128_4.png" }, "3766": { "iconFile": "res:/ui/texture/icons/84_64_16.png" }, "3801": { "iconFile": "res:/UI/netres/mission_content/agent_interaction.png" }, "3802": { "iconFile": "res:/UI/netres/mission_content/agent_talkto.png" }, "3803": { "iconFile": "res:/UI/netres/mission_content/arc_amarr.png" }, "3804": { "iconFile": "res:/UI/netres/mission_content/arc_caldari.png" }, "3805": { "iconFile": "res:/UI/netres/mission_content/arc_gallente.png" }, "3806": { "iconFile": "res:/UI/netres/mission_content/arc_minmatar.png" }, "3807": { "iconFile": "res:/UI/netres/mission_content/blood_stained.png" }, "3838": { "iconFile": "res:/UI/netres/mission_content/angels_and_artifacts.png" }, "3839": { "iconFile": "res:/UI/netres/mission_content/smash_and_grab.png" }, "3943": { "iconFile": "res:/ui/texture/icons/95_64_11.png" }, "3945": { "iconFile": "res:/ui/texture/icons/95_64_2.png" }, "3946": { "iconFile": "res:/ui/texture/icons/95_64_3.png" }, "3947": { "iconFile": "res:/ui/texture/icons/95_64_4.png" }, "3948": { "iconFile": "res:/ui/texture/icons/95_64_6.png" }, "3949": { "iconFile": "res:/ui/texture/icons/95_64_7.png" }, "3950": { "iconFile": "res:/ui/texture/icons/95_64_8.png" }, "3951": { "iconFile": "res:/ui/texture/icons/95_64_10.png" }, "3952": { "iconFile": "res:/ui/texture/icons/95_64_12.png" }, "3953": { "iconFile": "res:/ui/texture/icons/95_64_14.png" }, "3954": { "iconFile": "res:/ui/texture/icons/95_64_15.png" }, "3955": { "iconFile": "res:/ui/texture/icons/95_64_5.png" }, "5003": { "iconFile": "res:/Texture/Landmark/amarr.jpg" }, "5005": { "iconFile": "res:/Texture/Landmark/minmatar.jpg" }, "5006": { "iconFile": "res:/Texture/Landmark/caldari.jpg" }, "5007": { "iconFile": "res:/Texture/Landmark/galente.jpg" }, "5008": { "iconFile": "res:/Texture/Landmark/jove.jpg" }, "5010": { "iconFile": "res:/Texture/Landmark/khanidkingdom.jpg" }, "5012": { "iconFile": "res:/Texture/Landmark/Curse.jpg" }, "5015": { "iconFile": "res:/Texture/Landmark/outerring.jpg" }, "5016": { "iconFile": "res:/Texture/Landmark/stain.jpg" }, "5017": { "iconFile": "res:/Texture/Landmark/venal.jpg" }, "5020": { "iconFile": "res:/Texture/Landmark/pointofnoreturn.jpg" }, "5026": { "iconFile": "res:/Texture/Landmark/ginnungagap.jpg" }, "5027": { "iconFile": "res:/Texture/Landmark/golgothanfields.jpg" }, "5029": { "iconFile": "res:/Texture/Landmark/myridianstrip.jpg" }, "5030": { "iconFile": "res:/Texture/Landmark/A33colonialruins.jpg" }, "5031": { "iconFile": "res:/Texture/Landmark/serpentscoil.jpg" }, "5032": { "iconFile": "res:/Texture/Landmark/traumark.jpg" }, "5033": { "iconFile": "res:/Texture/Landmark/cityofgod.jpg" }, "10012": { "iconFile": "res:/ui/texture/icons/96_64_2.png" }, "10013": { "iconFile": "res:/ui/texture/icons/96_64_3.png" }, "10014": { "iconFile": "res:/ui/texture/icons/96_64_4.png" }, "10015": { "iconFile": "res:/ui/texture/icons/96_64_5.png" }, "10016": { "iconFile": "res:/ui/texture/icons/96_64_6.png" }, "10017": { "iconFile": "res:/ui/texture/icons/96_64_7.png" }, "10018": { "iconFile": "res:/ui/texture/icons/96_64_8.png" }, "10019": { "iconFile": "res:/ui/texture/icons/96_64_9.png" }, "10020": { "iconFile": "res:/ui/texture/icons/96_64_10.png" }, "10021": { "iconFile": "res:/ui/texture/icons/96_64_11.png" }, "10022": { "iconFile": "res:/ui/texture/icons/96_64_12.png" }, "10023": { "iconFile": "res:/ui/texture/icons/96_64_13.png" }, "10024": { "iconFile": "res:/ui/texture/icons/96_64_14.png" }, "10025": { "iconFile": "res:/ui/texture/icons/96_64_15.png" }, "10026": { "iconFile": "res:/ui/texture/icons/96_64_16.png" }, "10027": { "iconFile": "res:/ui/texture/icons/97_64_1.png" }, "10028": { "iconFile": "res:/ui/texture/icons/97_64_2.png" }, "10029": { "iconFile": "res:/ui/texture/icons/97_64_3.png" }, "10030": { "iconFile": "res:/ui/texture/icons/97_64_4.png" }, "10031": { "iconFile": "res:/ui/texture/icons/97_64_5.png" }, "10032": { "iconFile": "res:/ui/texture/icons/97_64_6.png" }, "10033": { "iconFile": "res:/ui/texture/icons/97_64_7.png" }, "10034": { "iconFile": "res:/ui/texture/icons/97_64_8.png" }, "10035": { "iconFile": "res:/ui/texture/icons/97_64_9.png" }, "10036": { "iconFile": "res:/ui/texture/icons/97_64_10.png" }, "10037": { "iconFile": "res:/ui/texture/icons/97_64_11.png" }, "10038": { "iconFile": "res:/ui/texture/icons/97_64_12.png" }, "10039": { "iconFile": "res:/ui/texture/icons/97_64_13.png" }, "10040": { "iconFile": "res:/ui/texture/icons/97_64_14.png" }, "10041": { "iconFile": "res:/ui/texture/icons/97_64_15.png" }, "10042": { "iconFile": "res:/ui/texture/icons/97_64_16.png" }, "10043": { "iconFile": "res:/ui/texture/icons/98_64_1.png" }, "10044": { "iconFile": "res:/ui/texture/icons/98_64_2.png" }, "10045": { "iconFile": "res:/ui/texture/icons/98_64_3.png" }, "10046": { "iconFile": "res:/ui/texture/icons/98_64_4.png" }, "10047": { "iconFile": "res:/ui/texture/icons/98_64_5.png" }, "10048": { "iconFile": "res:/ui/texture/icons/98_64_6.png" }, "10049": { "iconFile": "res:/ui/texture/icons/98_64_7.png" }, "10050": { "iconFile": "res:/ui/texture/icons/98_64_8.png" }, "10051": { "iconFile": "res:/ui/texture/icons/98_64_9.png" }, "10052": { "iconFile": "res:/ui/texture/icons/98_64_10.png" }, "10053": { "iconFile": "res:/ui/texture/icons/98_64_11.png" }, "10054": { "iconFile": "res:/ui/texture/icons/98_64_12.png" }, "10055": { "iconFile": "res:/ui/texture/icons/98_64_13.png" }, "10056": { "iconFile": "res:/ui/texture/icons/98_64_14.png" }, "10057": { "iconFile": "res:/ui/texture/icons/98_64_15.png" }, "10058": { "iconFile": "res:/ui/texture/icons/98_64_16.png" }, "10059": { "iconFile": "res:/ui/texture/icons/99_64_1.png" }, "10060": { "iconFile": "res:/ui/texture/icons/99_64_2.png" }, "10061": { "iconFile": "res:/ui/texture/icons/99_64_3.png" }, "10062": { "iconFile": "res:/ui/texture/icons/99_64_4.png" }, "10063": { "iconFile": "res:/ui/texture/icons/99_64_5.png" }, "10064": { "iconFile": "res:/ui/texture/icons/99_64_6.png" }, "10065": { "iconFile": "res:/ui/texture/icons/99_64_7.png" }, "10066": { "iconFile": "res:/ui/texture/icons/99_64_8.png" }, "10071": { "iconFile": "res:/ui/texture/icons/99_64_7.png" }, "10073": { "iconFile": "res:/ui/texture/icons/99_64_6.png" }, "10074": { "iconFile": "res:/ui/texture/icons/99_64_2.png" }, "10075": { "iconFile": "res:/ui/texture/icons/99_64_5.png" }, "10076": { "iconFile": "res:/ui/texture/icons/99_64_3.png" }, "10077": { "iconFile": "res:/ui/texture/icons/99_64_8.png" }, "10078": { "iconFile": "res:/ui/texture/icons/99_64_1.png" }, "10079": { "iconFile": "res:/ui/texture/icons/99_64_4.png" }, "10081": { "iconFile": "res:/ui/texture/icons/96_64_2.png" }, "10082": { "iconFile": "res:/ui/texture/icons/96_64_3.png" }, "10083": { "iconFile": "res:/ui/texture/icons/96_64_4.png" }, "10084": { "iconFile": "res:/ui/texture/icons/96_64_6.png" }, "10085": { "iconFile": "res:/ui/texture/icons/96_64_5.png" }, "10086": { "iconFile": "res:/ui/texture/icons/96_64_7.png" }, "10087": { "iconFile": "res:/ui/texture/icons/96_64_8.png" }, "10088": { "iconFile": "res:/ui/texture/icons/96_64_9.png" }, "10089": { "iconFile": "res:/ui/texture/icons/96_64_10.png" }, "10090": { "iconFile": "res:/ui/texture/icons/96_64_11.png" }, "10091": { "iconFile": "res:/ui/texture/icons/96_64_12.png" }, "10092": { "iconFile": "res:/ui/texture/icons/96_64_13.png" }, "10093": { "iconFile": "res:/ui/texture/icons/96_64_14.png" }, "10094": { "iconFile": "res:/ui/texture/icons/96_64_15.png" }, "10095": { "iconFile": "res:/ui/texture/icons/96_64_16.png" }, "10096": { "iconFile": "res:/ui/texture/icons/97_64_1.png" }, "10097": { "iconFile": "res:/ui/texture/icons/97_64_2.png" }, "10098": { "iconFile": "res:/ui/texture/icons/97_64_3.png" }, "10099": { "iconFile": "res:/ui/texture/icons/97_64_4.png" }, "10100": { "iconFile": "res:/ui/texture/icons/97_64_5.png" }, "10101": { "iconFile": "res:/ui/texture/icons/97_64_6.png" }, "10102": { "iconFile": "res:/ui/texture/icons/97_64_7.png" }, "10103": { "iconFile": "res:/ui/texture/icons/97_64_8.png" }, "10104": { "iconFile": "res:/ui/texture/icons/97_64_9.png" }, "10105": { "iconFile": "res:/ui/texture/icons/97_64_10.png" }, "10106": { "iconFile": "res:/ui/texture/icons/97_64_11.png" }, "10107": { "iconFile": "res:/ui/texture/icons/97_64_12.png" }, "10108": { "iconFile": "res:/ui/texture/icons/97_64_13.png" }, "10109": { "iconFile": "res:/ui/texture/icons/97_64_14.png" }, "10110": { "iconFile": "res:/ui/texture/icons/97_64_15.png" }, "10111": { "iconFile": "res:/ui/texture/icons/97_64_16.png" }, "10113": { "iconFile": "res:/ui/texture/icons/98_64_2.png" }, "10115": { "iconFile": "res:/ui/texture/icons/98_64_4.png" }, "10116": { "iconFile": "res:/ui/texture/icons/98_64_5.png" }, "10117": { "iconFile": "res:/ui/texture/icons/98_64_6.png" }, "10118": { "iconFile": "res:/ui/texture/icons/98_64_7.png" }, "10119": { "iconFile": "res:/ui/texture/icons/98_64_8.png" }, "10120": { "iconFile": "res:/ui/texture/icons/98_64_9.png" }, "10121": { "iconFile": "res:/ui/texture/icons/98_64_10.png" }, "10122": { "iconFile": "res:/ui/texture/icons/98_64_11.png" }, "10123": { "iconFile": "res:/ui/texture/icons/98_64_12.png" }, "10124": { "iconFile": "res:/ui/texture/icons/98_64_13.png" }, "10125": { "iconFile": "res:/ui/texture/icons/98_64_14.png" }, "10126": { "iconFile": "res:/ui/texture/icons/98_64_15.png" }, "10127": { "iconFile": "res:/ui/texture/icons/98_64_16.png" }, "10132": { "iconFile": "res:/ui/texture/icons/96_64_1.png" }, "10133": { "iconFile": "res:/ui/texture/icons/102_128_1.png" }, "10134": { "iconFile": "res:/ui/texture/icons/102_128_2.png" }, "10135": { "iconFile": "res:/ui/texture/icons/102_128_3.png" }, "10136": { "iconFile": "res:/ui/texture/icons/102_128_4.png" }, "10137": { "iconFile": "res:/ui/texture/icons/103_128_1.png" }, "10138": { "iconFile": "res:/ui/texture/icons/103_128_2.png" }, "10139": { "iconFile": "res:/ui/texture/icons/103_128_3.png" }, "10140": { "iconFile": "res:/ui/texture/icons/103_128_4.png" }, "10141": { "iconFile": "res:/ui/texture/icons/104_128_1.png" }, "10142": { "iconFile": "res:/ui/texture/icons/104_128_2.png" }, "10144": { "iconFile": "res:/ui/texture/icons/99_64_9.png" }, "10149": { "iconFile": "res:/ui/texture/icons/79_64_9.png" }, "10150": { "iconFile": "res:/ui/texture/icons/100_64_5.png" }, "10151": { "iconFile": "res:/ui/texture/icons/101_64_10.png" }, "10152": { "iconFile": "res:/ui/texture/icons/100_64_7.png" }, "10153": { "iconFile": "res:/ui/texture/icons/100_64_8.png" }, "10154": { "iconFile": "res:/ui/texture/icons/100_64_12.png" }, "10155": { "iconFile": "res:/ui/texture/icons/101_64_1.png" }, "10156": { "iconFile": "res:/ui/texture/icons/101_64_2.png" }, "10157": { "iconFile": "res:/ui/texture/icons/101_64_3.png" }, "10158": { "iconFile": "res:/ui/texture/icons/101_64_4.png" }, "10159": { "iconFile": "res:/ui/texture/icons/101_64_5.png" }, "10160": { "iconFile": "res:/ui/texture/icons/101_64_6.png" }, "10161": { "iconFile": "res:/ui/texture/icons/101_64_7.png" }, "10162": { "iconFile": "res:/ui/texture/icons/101_64_8.png" }, "10163": { "iconFile": "res:/ui/texture/icons/101_64_9.png" }, "10164": { "iconFile": "res:/ui/texture/icons/101_64_11.png" }, "10165": { "iconFile": "res:/ui/texture/icons/101_64_12.png" }, "10166": { "iconFile": "res:/ui/texture/icons/101_64_13.png" }, "10172": { "iconFile": "res:/ui/texture/icons/44_32_4.png" }, "10173": { "iconFile": "res:/ui/texture/icons/45_64_3.png" }, "10174": { "iconFile": "res:/ui/texture/icons/45_64_2.png" }, "10175": { "iconFile": "res:/ui/texture/icons/44_32_3.png" }, "10176": { "iconFile": "res:/ui/texture/icons/36_64_2.png" }, "10177": { "iconFile": "res:/ui/texture/icons/44_32_2.png" }, "10178": { "iconFile": "res:/ui/texture/icons/45_64_1.png" }, "10180": { "iconFile": "res:/ui/texture/corps/43_128_1.png" }, "10181": { "iconFile": "res:/ui/texture/corps/42_128_3.png" }, "10182": { "iconFile": "res:/ui/texture/corps/42_128_1.png" }, "10183": { "iconFile": "res:/ui/texture/corps/42_128_4.png" }, "10184": { "iconFile": "res:/ui/texture/corps/41_128_4.png" }, "10185": { "iconFile": "res:/ui/texture/corps/43_128_2.png" }, "10186": { "iconFile": "res:/ui/texture/corps/43_128_3.png" }, "10187": { "iconFile": "res:/ui/texture/corps/43_128_4.png" }, "10190": { "iconFile": "res:/ui/texture/icons/79_64_13.png" }, "10191": { "iconFile": "res:/ui/texture/corps/46_128_2.png" }, "10192": { "iconFile": "res:/ui/texture/corps/45_128_4.png" }, "10204": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png", "iconType": "png" }, "10205": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png", "iconType": "png" }, "10206": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png", "iconType": "png" }, "10207": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png", "iconType": "png" }, "10208": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png", "iconType": "png" }, "10209": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png", "iconType": "png" }, "10210": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png", "iconType": "png" }, "10214": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4037_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightDark.png", "iconType": "png" }, "10215": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4038_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGray.png", "iconType": "png" }, "10216": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4039_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGold.png", "iconType": "png" }, "10219": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4042_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGray.png", "iconType": "png" }, "10220": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4043_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftDark.png", "iconType": "png" }, "10221": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4046_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGold.png", "iconType": "png" }, "10222": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4048_female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGray.png", "iconType": "png" }, "10223": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4050_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGold.png", "iconType": "png" }, "10224": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4052_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGray.png", "iconType": "png" }, "10231": { "iconFile": "res:/UI/Asset/mannequin/hair_4086_947.png", "iconType": "png\r" }, "10232": { "iconFile": "res:/UI/Asset/mannequin/hair_4088_949.png", "iconType": "png\r" }, "10233": { "iconFile": "res:/UI/Asset/mannequin/hair_4096_1005.png", "iconType": "png\r" }, "10234": { "iconFile": "res:/UI/Asset/mannequin/outer/4054_female_Outer_JacketMilF01_Types_JacketMilF01_blackgray.png", "iconType": "png" }, "10235": { "iconFile": "res:/UI/Asset/mannequin/outer/4097_male_outer_JacketMilM01_Types_JacketMilM01_blackyellow.png", "iconType": "png" }, "10236": { "iconFile": "res:/UI/Asset/mannequin/outer/4098_male_outer_JacketMilM02_Types_JacketMilM02_blackgray.png", "iconType": "png" }, "10237": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4066_female_TopMiddle_ShirtQF01_Types_shirtqf01.png", "iconType": "png" }, "10238": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4067_male_TopMiddle_ShirtQM01_Types_shirtqm01.png", "iconType": "png" }, "10239": { "iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png", "iconType": "png" }, "10240": { "iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png", "iconType": "png" }, "10241": { "iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png", "iconType": "png" }, "10242": { "iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png", "iconType": "png" }, "10243": { "iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png", "iconType": "png" }, "10244": { "iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png", "iconType": "png" }, "10245": { "iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png", "iconType": "png" }, "10246": { "iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png", "iconType": "png" }, "10247": { "iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png", "iconType": "png" }, "10248": { "iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png", "iconType": "png" }, "10249": { "iconFile": "res:/UI/Asset/mannequin/outer/3975_female_Outer_JacketMilF02_Types_JacketMilF02_blue.png", "iconType": "png" }, "10250": { "iconFile": "res:/UI/Asset/mannequin/feet/4002_female_Feet_BootsMilF01_Types_BootsMilF01_black.png", "iconType": "png" }, "10251": { "iconFile": "res:/UI/Asset/mannequin/feet/4003_female_Feet_BootsMilF02_Types_BootsMilF02_black.png", "iconType": "png" }, "10252": { "iconFile": "res:/UI/Asset/mannequin/feet/4004_female_Feet_BootsMilF03_Types_BootsMilF03_black.png", "iconType": "png" }, "10253": { "iconFile": "res:/UI/Asset/mannequin/feet/4008_male_Feet_BootsMilM01_Types_BootsMilM01_black.png", "iconType": "png" }, "10254": { "iconFile": "res:/UI/Asset/mannequin/feet/3966_male_Feet_BootsMilM02_Types_BootsMilM02_black.png", "iconType": "png" }, "10255": { "iconFile": "res:/UI/Asset/mannequin/feet/4001_male_Feet_BootsMilM03_Types_BootsMilM03_black.png", "iconType": "png" }, "10256": { "iconFile": "res:/ui/texture/icons/65_128_3.png" }, "10257": { "iconFile": "res:/UI/netres/mission_content/arc_npe.png" }, "10545": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png", "iconType": "png" }, "10546": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png", "iconType": "png" }, "10547": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png", "iconType": "png" }, "10548": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png", "iconType": "png" }, "10549": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png", "iconType": "png" }, "10550": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png", "iconType": "png" }, "10551": { "iconFile": "res:/UI/Asset/mannequin/feet/3966_male_Feet_BootsMilM02_Types_BootsMilM02_black.png", "iconType": "png" }, "10552": { "iconFile": "res:/UI/Asset/mannequin/feet/4001_male_Feet_BootsMilM03_Types_BootsMilM03_black.png", "iconType": "png" }, "10553": { "iconFile": "res:/UI/Asset/mannequin/feet/4002_female_Feet_BootsMilF01_Types_BootsMilF01_black.png", "iconType": "png" }, "10554": { "iconFile": "res:/UI/Asset/mannequin/feet/4003_female_Feet_BootsMilF02_Types_BootsMilF02_black.png", "iconType": "png" }, "10555": { "iconFile": "res:/UI/Asset/mannequin/feet/4004_female_Feet_BootsMilF03_Types_BootsMilF03_black.png", "iconType": "png" }, "10556": { "iconFile": "res:/UI/Asset/mannequin/feet/4008_male_Feet_BootsMilM01_Types_BootsMilM01_black.png", "iconType": "png" }, "10557": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftDark.png", "iconType": "png\r" }, "10558": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGold.png", "iconType": "png\r" }, "10559": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_LeftGray.png", "iconType": "png\r" }, "10560": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightDark.png", "iconType": "png\r" }, "10561": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGold.png", "iconType": "png\r" }, "10562": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_RightGray.png", "iconType": "png\r" }, "10563": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Goggles_01_Types_goggles_01.png", "iconType": "png\r" }, "10564": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGold.png", "iconType": "png\r" }, "10565": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_LeftGray.png", "iconType": "png\r" }, "10566": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGold.png", "iconType": "png\r" }, "10567": { "iconFile": "res:/UI/Asset/mannequin/Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGray.png", "iconType": "png\r" }, "10568": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4016_female_bottomOuter_PantsMilF01_Types_PantsMilF01_black.png", "iconType": "png" }, "10569": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4017_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackbluegold.png", "iconType": "png" }, "10570": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4018_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgold.png", "iconType": "png" }, "10571": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4019_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgoldline.png", "iconType": "png" }, "10572": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3997_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackgray.png", "iconType": "png" }, "10573": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4020_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blackredgold.png", "iconType": "png" }, "10574": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4021_female_bottomOuter_PantsMilF01_Types_PantsMilF01_blacksilver.png", "iconType": "png" }, "10575": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4022_female_bottomOuter_PantsMilF01_Types_PantsMilF01_gold.png", "iconType": "png" }, "10576": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4026_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matblue.png", "iconType": "png" }, "10577": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4028_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matgreen.png", "iconType": "png" }, "10578": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4030_female_bottomOuter_PantsMilF01_Types_PantsMilF01_matred.png", "iconType": "png" }, "10579": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4032_female_bottomOuter_PantsMilF01_Types_PantsMilF01_silver.png", "iconType": "png" }, "10580": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4033_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_blackleather.png", "iconType": "png" }, "10581": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3999_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Blackwax.png", "iconType": "png" }, "10582": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4034_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_brownleather.png", "iconType": "png" }, "10583": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4035_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_graphite.png", "iconType": "png" }, "10584": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3998_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_Gray.png", "iconType": "png" }, "10585": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4036_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_greengold.png", "iconType": "png" }, "10586": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4069_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_marine.png", "iconType": "png" }, "10587": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4070_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matblack.png", "iconType": "png" }, "10588": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4071_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matblue.png", "iconType": "png" }, "10589": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4072_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_matred.png", "iconType": "png" }, "10590": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4073_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_redgold.png", "iconType": "png" }, "10591": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4074_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_silver.png", "iconType": "png" }, "10592": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4075_female_bottomOuter_SkirtMilF01_Types_SkirtMilF01_white.png", "iconType": "png" }, "10593": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4085_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Black.png", "iconType": "png" }, "10594": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4076_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blackred.png", "iconType": "png" }, "10595": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4101_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blackwhite.png", "iconType": "png" }, "10596": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4102_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_blue.png", "iconType": "png" }, "10597": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4078_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_Camo.png", "iconType": "png" }, "10598": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4103_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_graphite.png", "iconType": "png" }, "10599": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4104_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_gray.png", "iconType": "png" }, "10600": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4105_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_graystripes.png", "iconType": "png" }, "10601": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4106_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_green.png", "iconType": "png" }, "10602": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4107_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_greenblack.png", "iconType": "png" }, "10603": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4108_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_greenstripes.png", "iconType": "png" }, "10604": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4109_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_khaki.png", "iconType": "png" }, "10605": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4110_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_marine.png", "iconType": "png" }, "10606": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4111_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_matblack.png", "iconType": "png" }, "10607": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4112_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_red.png", "iconType": "png" }, "10608": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4113_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_redleather.png", "iconType": "png" }, "10609": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4114_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_redstripes.png", "iconType": "png" }, "10610": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4115_female_bottomOuter_SkirtMilF02_Types_SkirtMilF02_whitestripes.png", "iconType": "png" }, "10612": { "iconFile": "res:/UI/Asset/mannequin/feet/4116_female_Feet_BootsMilF01_Types_BootsMilF01_blackgold.png", "iconType": "png" }, "10613": { "iconFile": "res:/UI/Asset/mannequin/feet/4117_female_Feet_BootsMilF01_Types_BootsMilF01_blackred.png", "iconType": "png" }, "10614": { "iconFile": "res:/UI/Asset/mannequin/feet/4118_female_Feet_BootsMilF01_Types_BootsMilF01_blue.png", "iconType": "png" }, "10615": { "iconFile": "res:/UI/Asset/mannequin/feet/4119_female_Feet_BootsMilF01_Types_BootsMilF01_gold.png", "iconType": "png" }, "10616": { "iconFile": "res:/UI/Asset/mannequin/feet/4120_female_Feet_BootsMilF01_Types_BootsMilF01_graphwhite.png", "iconType": "png" }, "10617": { "iconFile": "res:/UI/Asset/mannequin/feet/4121_female_Feet_BootsMilF01_Types_BootsMilF01_greenblack.png", "iconType": "png" }, "10618": { "iconFile": "res:/UI/Asset/mannequin/feet/4122_female_Feet_BootsMilF01_Types_BootsMilF01_matblack.png", "iconType": "png" }, "10619": { "iconFile": "res:/UI/Asset/mannequin/feet/4123_female_Feet_BootsMilF01_Types_BootsMilF01_matred.png", "iconType": "png" }, "10620": { "iconFile": "res:/UI/Asset/mannequin/feet/4124_female_Feet_BootsMilF01_Types_BootsMilF01_red.png", "iconType": "png" }, "10621": { "iconFile": "res:/UI/Asset/mannequin/feet/4125_female_Feet_BootsMilF01_Types_BootsMilF01_silver.png", "iconType": "png" }, "10622": { "iconFile": "res:/UI/Asset/mannequin/feet/4126_female_Feet_BootsMilF01_Types_BootsMilF01_turquoise.png", "iconType": "png" }, "10624": { "iconFile": "res:/UI/Asset/mannequin/feet/4127_female_Feet_BootsMilF02_Types_BootsMilF02_blackgold.png", "iconType": "png" }, "10625": { "iconFile": "res:/UI/Asset/mannequin/feet/4128_female_Feet_BootsMilF02_Types_BootsMilF02_brown.png", "iconType": "png" }, "10626": { "iconFile": "res:/UI/Asset/mannequin/feet/4129_female_Feet_BootsMilF02_Types_BootsMilF02_matbrown.png", "iconType": "png" }, "10627": { "iconFile": "res:/UI/Asset/mannequin/feet/4130_female_Feet_BootsMilF02_Types_BootsMilF02_matgray.png", "iconType": "png" }, "10628": { "iconFile": "res:/UI/Asset/mannequin/feet/4131_female_Feet_BootsMilF02_Types_BootsMilF02_red.png", "iconType": "png" }, "10630": { "iconFile": "res:/UI/Asset/mannequin/feet/4132_female_Feet_BootsMilF03_Types_BootsMilF03_blackwhite.png", "iconType": "png" }, "10631": { "iconFile": "res:/UI/Asset/mannequin/feet/4133_female_Feet_BootsMilF03_Types_BootsMilF03_brownblack.png", "iconType": "png" }, "10632": { "iconFile": "res:/UI/Asset/mannequin/feet/4134_female_Feet_BootsMilF03_Types_BootsMilF03_red.png", "iconType": "png" }, "10633": { "iconFile": "res:/UI/Asset/mannequin/feet/4135_female_Feet_BootsMilF03_Types_BootsMilF03_whiteblack.png", "iconType": "png" }, "10634": { "iconFile": "res:/UI/Asset/mannequin/Female_hair_Hair_CurlyShoulderLength_01_Types_hair_curlyshoulderlength_01.png", "iconType": "png\r" }, "10635": { "iconFile": "res:/UI/Asset/mannequin/Female_hair_Hair_ShortPixieTop_01_Types_hair_shortpixietop_01.png", "iconType": "png\r" }, "10636": { "iconFile": "res:/UI/Asset/mannequin/outer/4136_female_Outer_JacketMilF01_Types_JacketMilF01_black.png", "iconType": "png" }, "10638": { "iconFile": "res:/UI/Asset/mannequin/outer/4137_female_Outer_JacketMilF01_Types_JacketMilF01_graphite.png", "iconType": "png" }, "10639": { "iconFile": "res:/UI/Asset/mannequin/outer/4138_female_Outer_JacketMilF01_Types_JacketMilF01_greengold.png", "iconType": "png" }, "10640": { "iconFile": "res:/UI/Asset/mannequin/outer/4139_female_Outer_JacketMilF01_Types_JacketMilF01_matblue.png", "iconType": "png" }, "10641": { "iconFile": "res:/UI/Asset/mannequin/outer/4140_female_Outer_JacketMilF01_Types_JacketMilF01_matred.png", "iconType": "png" }, "10642": { "iconFile": "res:/UI/Asset/mannequin/outer/4141_female_Outer_JacketMilF01_Types_JacketMilF01_redgold.png", "iconType": "png" }, "10643": { "iconFile": "res:/UI/Asset/mannequin/outer/4142_female_Outer_JacketMilF01_Types_JacketMilF01_silver.png", "iconType": "png" }, "10644": { "iconFile": "res:/UI/Asset/mannequin/outer/4143_female_Outer_JacketMilF02_Types_JacketMilF02_black.png", "iconType": "png" }, "10645": { "iconFile": "res:/UI/Asset/mannequin/outer/4144_female_Outer_JacketMilF02_Types_JacketMilF02_blackwhite.png", "iconType": "png" }, "10647": { "iconFile": "res:/UI/Asset/mannequin/outer/4145_female_Outer_JacketMilF02_Types_JacketMilF02_brown.png", "iconType": "png" }, "10648": { "iconFile": "res:/UI/Asset/mannequin/outer/4146_female_Outer_JacketMilF02_Types_JacketMilF02_goldblack.png", "iconType": "png" }, "10649": { "iconFile": "res:/UI/Asset/mannequin/outer/4149_female_Outer_JacketMilF02_Types_JacketMilF02_graphite.png", "iconType": "png" }, "10650": { "iconFile": "res:/UI/Asset/mannequin/outer/4150_female_Outer_JacketMilF02_Types_JacketMilF02_green.png", "iconType": "png" }, "10651": { "iconFile": "res:/UI/Asset/mannequin/outer/4151_female_Outer_JacketMilF02_Types_JacketMilF02_matblue.png", "iconType": "png" }, "10652": { "iconFile": "res:/UI/Asset/mannequin/outer/4152_female_Outer_JacketMilF02_Types_JacketMilF02_matred.png", "iconType": "png" }, "10653": { "iconFile": "res:/UI/Asset/mannequin/outer/4153_female_Outer_JacketMilF02_Types_JacketMilF02_red.png", "iconType": "png" }, "10654": { "iconFile": "res:/UI/Asset/mannequin/outer/4154_female_Outer_JacketMilF02_Types_JacketMilF02_turquoise.png", "iconType": "png" }, "10655": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4201_female_TopMiddle_ShirtGF01_Types_ShirtGF01_black.png", "iconType": "png" }, "10656": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4202_female_TopMiddle_ShirtGF01_Types_ShirtGF01_blue2.png", "iconType": "png" }, "10657": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4203_female_TopMiddle_ShirtGF01_Types_ShirtGF01_brown.png", "iconType": "png" }, "10658": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4204_female_TopMiddle_ShirtGF01_Types_ShirtGF01_cream.png", "iconType": "png" }, "10659": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4205_female_TopMiddle_ShirtGF01_Types_ShirtGF01_darkblue.png", "iconType": "png" }, "10660": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4206_female_TopMiddle_ShirtGF01_Types_ShirtGF01_darkred.png", "iconType": "png" }, "10661": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4207_female_TopMiddle_ShirtGF01_Types_ShirtGF01_gray.png", "iconType": "png" }, "10662": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4208_female_TopMiddle_ShirtGF01_Types_ShirtGF01_green.png", "iconType": "png" }, "10663": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4209_female_TopMiddle_ShirtGF01_Types_ShirtGF01_khaki.png", "iconType": "png" }, "10664": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4210_female_TopMiddle_ShirtGF01_Types_ShirtGF01_olive.png", "iconType": "png" }, "10665": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4211_female_TopMiddle_ShirtGF01_Types_ShirtGF01_orange.png", "iconType": "png" }, "10666": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4212_female_TopMiddle_ShirtGF01_Types_ShirtGF01_p_darkcaldari.png", "iconType": "png" }, "10667": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4213_female_TopMiddle_ShirtGF01_Types_ShirtGF01_p_desertcamo.png", "iconType": "png" }, "10668": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4214_female_TopMiddle_ShirtGF01_Types_ShirtGF01_red.png", "iconType": "png" }, "10669": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4215_female_TopMiddle_ShirtGF01_Types_ShirtGF01_white.png", "iconType": "png" }, "10671": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4216_female_TopMiddle_TanktopF01_Types_TanktopF01_black.png", "iconType": "png" }, "10672": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4217_female_TopMiddle_TanktopF01_Types_TanktopF01_blackleather.png", "iconType": "png" }, "10673": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4218_female_TopMiddle_TanktopF01_Types_TanktopF01_blue.png", "iconType": "png" }, "10674": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4219_female_TopMiddle_TanktopF01_Types_TanktopF01_brown.png", "iconType": "png" }, "10675": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4220_female_TopMiddle_TanktopF01_Types_TanktopF01_gray.png", "iconType": "png" }, "10676": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4221_female_TopMiddle_TanktopF01_Types_TanktopF01_green.png", "iconType": "png" }, "10677": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4222_female_TopMiddle_TanktopF01_Types_TanktopF01_orange.png", "iconType": "png" }, "10678": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4223_female_TopMiddle_TanktopF01_Types_TanktopF01_p01.png", "iconType": "png" }, "10679": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4224_female_TopMiddle_TanktopF01_Types_TanktopF01_p02.png", "iconType": "png" }, "10680": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4225_female_TopMiddle_TanktopF01_Types_TanktopF01_p03.png", "iconType": "png" }, "10681": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4226_female_TopMiddle_TanktopF01_Types_TanktopF01_p04.png", "iconType": "png" }, "10682": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4227_female_TopMiddle_TanktopF01_Types_TanktopF01_p05.png", "iconType": "png" }, "10683": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4228_female_TopMiddle_TanktopF01_Types_TanktopF01_p06.png", "iconType": "png" }, "10684": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4229_female_TopMiddle_TanktopF01_Types_TanktopF01_p07.png", "iconType": "png" }, "10685": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4230_female_TopMiddle_TanktopF01_Types_TanktopF01_p08.png", "iconType": "png" }, "10686": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4231_female_TopMiddle_TanktopF01_Types_TanktopF01_red.png", "iconType": "png" }, "10687": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4232_female_TopMiddle_TanktopF01_Types_TanktopF01_white.png", "iconType": "png" }, "10688": { "iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png", "iconType": "png" }, "10689": { "iconFile": "res:/UI/Asset/mannequin/topouter/4155_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blackleather.png", "iconType": "png" }, "10690": { "iconFile": "res:/UI/Asset/mannequin/topouter/4156_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blackwhite.png", "iconType": "png" }, "10691": { "iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png", "iconType": "png" }, "10692": { "iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png", "iconType": "png" }, "10693": { "iconFile": "res:/UI/Asset/mannequin/topouter/4157_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_gold.png", "iconType": "png" }, "10694": { "iconFile": "res:/UI/Asset/mannequin/topouter/4158_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_graphite.png", "iconType": "png" }, "10695": { "iconFile": "res:/UI/Asset/mannequin/topouter/4159_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_greensatin.png", "iconType": "png" }, "10696": { "iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png", "iconType": "png" }, "10697": { "iconFile": "res:/UI/Asset/mannequin/topouter/4160_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matblack.png", "iconType": "png" }, "10698": { "iconFile": "res:/UI/Asset/mannequin/topouter/4161_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matblue.png", "iconType": "png" }, "10699": { "iconFile": "res:/UI/Asset/mannequin/topouter/4162_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_matolive.png", "iconType": "png" }, "10700": { "iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png", "iconType": "png" }, "10701": { "iconFile": "res:/UI/Asset/mannequin/topouter/4163_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_orangesatin.png", "iconType": "png" }, "10702": { "iconFile": "res:/UI/Asset/mannequin/topouter/4164_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_redsatin.png", "iconType": "png" }, "10703": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png", "iconType": "png" }, "10704": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/3958_female_Accessories_Glasses_Goggles_01_Types_goggles_01.png", "iconType": "png" }, "10736": { "iconFile": "res:/UI/Asset/mannequin/hair_4086_947.png", "iconType": "png\r" }, "10737": { "iconFile": "res:/UI/Asset/mannequin/hair_4088_949.png", "iconType": "png\r" }, "10738": { "iconFile": "res:/UI/Asset/mannequin/hair_4096_1005.png", "iconType": "png\r" }, "10739": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftDark.png", "iconType": "png\r" }, "10740": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftGold.png", "iconType": "png\r" }, "10741": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_LeftGray.png", "iconType": "png\r" }, "10742": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightDark.png", "iconType": "png\r" }, "10743": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightGold.png", "iconType": "png\r" }, "10744": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_RightGray.png", "iconType": "png\r" }, "10745": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Goggles_01_Types_goggles_01.png", "iconType": "png\r" }, "10746": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_LeftGold.png", "iconType": "png\r" }, "10747": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_LefttGray.png", "iconType": "png\r" }, "10748": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_RightGold.png", "iconType": "png\r" }, "10749": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_RightGray.png", "iconType": "png\r" }, "10750": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4165_male_bottomOuter_PantsMilM01_Types_PantsMilM01_black.png", "iconType": "png" }, "10751": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/3992_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blackwaxed.png", "iconType": "png" }, "10752": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4166_male_bottomOuter_PantsMilM01_Types_PantsMilM01_blue.png", "iconType": "png" }, "10753": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4167_male_bottomOuter_PantsMilM01_Types_PantsMilM01_goldblack.png", "iconType": "png" }, "10754": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4168_male_bottomOuter_PantsMilM01_Types_PantsMilM01_grayblack.png", "iconType": "png" }, "10755": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4169_male_bottomOuter_PantsMilM01_Types_PantsMilM01_p_browncamo.png", "iconType": "png" }, "10756": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4170_male_bottomOuter_PantsMilM01_Types_PantsMilM01_p_greencamo.png", "iconType": "png" }, "10757": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/4171_male_bottomOuter_PantsMilM01_Types_PantsMilM01_redblack.png", "iconType": "png" }, "10758": { "iconFile": "res:/UI/Asset/mannequin/Male_Feet_BootsMilM01_Types_BootsMilM01_black.png", "iconType": "png\r" }, "10759": { "iconFile": "res:/UI/Asset/mannequin/feet/4172_male_Feet_BootsMilM01_Types_BootsMilM01_trueblack.png", "iconType": "png" }, "10760": { "iconFile": "res:/UI/Asset/mannequin/feet/4173_male_Feet_BootsMilM01_Types_BootsMilM01_wornbrown.png", "iconType": "png" }, "10762": { "iconFile": "res:/UI/Asset/mannequin/feet/4174_male_Feet_BootsMilM02_Types_BootsMilM02_brown.png", "iconType": "png" }, "10763": { "iconFile": "res:/UI/Asset/mannequin/feet/4175_male_Feet_BootsMilM02_Types_BootsMilM02_gray.png", "iconType": "png" }, "10764": { "iconFile": "res:/UI/Asset/mannequin/feet/4176_male_Feet_BootsMilM02_Types_BootsMilM02_tan.png", "iconType": "png" }, "10765": { "iconFile": "res:/UI/Asset/mannequin/Male_Feet_BootsMilM03_Types_BootsMilM03_black.png", "iconType": "png\r" }, "10766": { "iconFile": "res:/UI/Asset/mannequin/feet/4177_male_Feet_BootsMilM03_Types_BootsMilM03_brown.png", "iconType": "png" }, "10767": { "iconFile": "res:/UI/Asset/mannequin/feet/4178_male_Feet_BootsMilM03_Types_BootsMilM03_gray.png", "iconType": "png" }, "10768": { "iconFile": "res:/UI/Asset/mannequin/feet/4179_male_Feet_BootsMilM03_Types_BootsMilM03_tan.png", "iconType": "png" }, "10769": { "iconFile": "res:/UI/Asset/mannequin/Male_hair_Hair_Stubble_01_Types_Hair_Stubble_01.png", "iconType": "png\r" }, "10771": { "iconFile": "res:/UI/Asset/mannequin/outer/4244_male_outer_JacketMilM01_Types_JacketMilM01_green.png", "iconType": "png" }, "10772": { "iconFile": "res:/UI/Asset/mannequin/outer/4245_male_outer_JacketMilM01_Types_JacketMilM01_silver.png", "iconType": "png" }, "10773": { "iconFile": "res:/UI/Asset/mannequin/outer/4233_male_outer_JacketMilM02_Types_JacketMilM02_black.png", "iconType": "png" }, "10775": { "iconFile": "res:/UI/Asset/mannequin/outer/4234_male_outer_JacketMilM02_Types_JacketMilM02_greengold.png", "iconType": "png" }, "10776": { "iconFile": "res:/UI/Asset/mannequin/outer/4235_male_outer_JacketMilM02_Types_JacketMilM02_matgraphite.png", "iconType": "png" }, "10777": { "iconFile": "res:/UI/Asset/mannequin/outer/4236_male_outer_JacketMilM02_Types_JacketMilM02_matgray.png", "iconType": "png" }, "10778": { "iconFile": "res:/UI/Asset/mannequin/outer/4237_male_outer_JacketMilM02_Types_JacketMilM02_matgreen.png", "iconType": "png" }, "10779": { "iconFile": "res:/UI/Asset/mannequin/outer/4238_male_outer_JacketMilM02_Types_JacketMilM02_redgold.png", "iconType": "png" }, "10780": { "iconFile": "res:/UI/Asset/mannequin/outer/4239_male_outer_JacketMilM02_Types_JacketMilM02_silver.png", "iconType": "png" }, "10781": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4180_male_TopMiddle_ShirtGM01_Types_ShirtGM01_black.png", "iconType": "png" }, "10782": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4181_male_TopMiddle_ShirtGM01_Types_ShirtGM01_blue2.png", "iconType": "png" }, "10783": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4182_male_TopMiddle_ShirtGM01_Types_ShirtGM01_brown.png", "iconType": "png" }, "10784": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4183_male_TopMiddle_ShirtGM01_Types_ShirtGM01_darkblue.png", "iconType": "png" }, "10785": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4184_male_TopMiddle_ShirtGM01_Types_ShirtGM01_darkred.png", "iconType": "png" }, "10786": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4185_male_TopMiddle_ShirtGM01_Types_ShirtGM01_khaki.png", "iconType": "png" }, "10787": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4186_male_TopMiddle_ShirtGM01_Types_ShirtGM01_lightgray.png", "iconType": "png" }, "10788": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4187_male_TopMiddle_ShirtGM01_Types_ShirtGM01_olive.png", "iconType": "png" }, "10789": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4188_male_TopMiddle_ShirtGM01_Types_ShirtGM01_p_darkcaldari.png", "iconType": "png" }, "10790": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4189_male_TopMiddle_ShirtGM01_Types_ShirtGM01_p_desertcamo.png", "iconType": "png" }, "10791": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4190_male_TopMiddle_ShirtGM01_Types_ShirtGM01_white.png", "iconType": "png" }, "10793": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4191_male_TopMiddle_TanktopM01_Types_TanktopM01_black.png", "iconType": "png" }, "10794": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4192_male_TopMiddle_TanktopM01_Types_TanktopM01_blue.png", "iconType": "png" }, "10795": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4193_male_TopMiddle_TanktopM01_Types_TanktopM01_brown.png", "iconType": "png" }, "10796": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4194_male_TopMiddle_TanktopM01_Types_TanktopM01_gray.png", "iconType": "png" }, "10797": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4195_male_TopMiddle_TanktopM01_Types_TanktopM01_green.png", "iconType": "png" }, "10798": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4196_male_TopMiddle_TanktopM01_Types_TanktopM01_p01.png", "iconType": "png" }, "10799": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4197_male_TopMiddle_TanktopM01_Types_TanktopM01_p02.png", "iconType": "png" }, "10800": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4198_male_TopMiddle_TanktopM01_Types_TanktopM01_p03.png", "iconType": "png" }, "10801": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4199_male_TopMiddle_TanktopM01_Types_TanktopM01_p04.png", "iconType": "png" }, "10802": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4200_male_TopMiddle_TanktopM01_Types_TanktopM01_white.png", "iconType": "png" }, "10803": { "iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png", "iconType": "png" }, "10804": { "iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png", "iconType": "png" }, "10805": { "iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png", "iconType": "png" }, "10806": { "iconFile": "res:/UI/Asset/mannequin/topouter/4240_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_goldleather.png", "iconType": "png" }, "10807": { "iconFile": "res:/UI/Asset/mannequin/topouter/4241_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_gray.png", "iconType": "png" }, "10808": { "iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png", "iconType": "png" }, "10809": { "iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png", "iconType": "png" }, "10810": { "iconFile": "res:/UI/Asset/mannequin/topouter/4242_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_redblackleather.png", "iconType": "png" }, "10811": { "iconFile": "res:/UI/Asset/mannequin/topouter/4243_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_whiteblue.png", "iconType": "png" }, "10812": { "iconFile": "res:/UI/Asset/mannequin/outer/3975_female_Outer_JacketMilF02_Types_JacketMilF02_blue.png", "iconType": "png" }, "10813": { "iconFile": "res:/UI/Asset/mannequin/outer/4054_female_Outer_JacketMilF01_Types_JacketMilF01_blackgray.png", "iconType": "png" }, "10814": { "iconFile": "res:/UI/Asset/mannequin/outer/4097_male_outer_JacketMilM01_Types_JacketMilM01_blackyellow.png", "iconType": "png" }, "10815": { "iconFile": "res:/UI/Asset/mannequin/outer/4098_male_outer_JacketMilM02_Types_JacketMilM02_blackgray.png", "iconType": "png" }, "10816": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4066_female_TopMiddle_ShirtQF01_Types_shirtqf01.png", "iconType": "png" }, "10817": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4067_male_TopMiddle_ShirtQM01_Types_shirtqm01.png", "iconType": "png" }, "10818": { "iconFile": "res:/UI/Asset/mannequin/topouter/4057_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_black.png", "iconType": "png" }, "10819": { "iconFile": "res:/UI/Asset/mannequin/topouter/4058_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_blue.png", "iconType": "png" }, "10820": { "iconFile": "res:/UI/Asset/mannequin/topouter/4059_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_dust.png", "iconType": "png" }, "10821": { "iconFile": "res:/UI/Asset/mannequin/topouter/4060_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_olive.png", "iconType": "png" }, "10822": { "iconFile": "res:/UI/Asset/mannequin/topouter/4061_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_black.png", "iconType": "png" }, "10823": { "iconFile": "res:/UI/Asset/mannequin/topouter/4062_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_blue.png", "iconType": "png" }, "10824": { "iconFile": "res:/UI/Asset/mannequin/topouter/4063_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_dust.png", "iconType": "png" }, "10825": { "iconFile": "res:/UI/Asset/mannequin/topouter/4064_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_olive.png", "iconType": "png" }, "10826": { "iconFile": "res:/UI/Asset/mannequin/topouter/4065_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_lightgrey.png", "iconType": "png" }, "10827": { "iconFile": "res:/UI/Asset/mannequin/topouter/4068_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_ishukone.png", "iconType": "png" }, "10828": { "iconFile": "res:/UI/Texture/market/apparel_accessories_glasses_3958_1065.png", "iconType": "png" }, "10829": { "iconFile": "res:/UI/Texture/market/apparel_mens_topouter_4058_1000.png", "iconType": "png" }, "10830": { "iconFile": "res:/UI/Texture/market/apparel_womens_outer_4054_1011.png", "iconType": "png" }, "10831": { "iconFile": "res:/UI/Texture/Icons/aurcoin.png", "iconType": "png" }, "10833": { "iconFile": "res:/UI/Texture/Icons/ComprFuel_Gallente.png" }, "10834": { "iconFile": "res:/UI/Texture/Icons/ComprFuel_Caldari.png" }, "10835": { "iconFile": "res:/UI/Texture/Icons/ComprFuel_Amarr.png" }, "10836": { "iconFile": "res:/UI/Texture/Icons/ComprFuel_Minmatar.png" }, "10838": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/4009_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightGold.png", "iconType": "png" }, "10840": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4366_female_TopMiddle_ShirtQF01_Types_shirtqf02.png", "iconType": "png" }, "10841": { "iconFile": "res:/UI/Asset/mannequin/topouter/4368_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_whiteblacknexon.png", "iconType": "png" }, "10842": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/4365_male_TopMiddle_ShirtQM01_Types_shirtqm02.png", "iconType": "png" }, "10843": { "iconFile": "res:/UI/Asset/mannequin/topouter/4367_male_TopOuter_ShirtMilM01_Types_ShirtMilM01_whiteblacknexon.png", "iconType": "png" }, "10847": { "iconFile": "res:/UI/Texture/Icons/infantry_gear.png" }, "10848": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_dropuplink.png" }, "10849": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_forgegun.png" }, "10850": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_nanohive.png" }, "10851": { "iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_logistics.png" }, "10852": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_default.png" }, "10853": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_overdrive.png" }, "10854": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldhardener.png" }, "10855": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_railgun_s.png" }, "10856": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_railgun_l.png" }, "10857": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster_l.png" }, "10858": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster_s.png" }, "10859": { "iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_heavy.png" }, "10860": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_remotearmorrepair.png" }, "10861": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_scramblerpistol.png" }, "10862": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_grenade.png" }, "10863": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_miasmagrenade.png" }, "10864": { "iconFile": "res:/UI/Texture/Icons/dust_icon_skill.png" }, "10866": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_unit_scanner.png" }, "10867": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_sinperrifle.png" }, "10868": { "iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_scout.png" }, "10869": { "iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_assult.png" }, "10870": { "iconFile": "res:/UI/Texture/Icons/dust_icon_dropsuit_default.png" }, "10871": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_assultrifle.png" }, "10872": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_mobilecru.png" }, "10873": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_rl_std.png" }, "10874": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthbooster.png" }, "10875": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_mcc.png" }, "10876": { "iconFile": "res:/UI/Texture/Icons/dust_icon_inst_capacitor.png" }, "10877": { "iconFile": "res:/UI/Texture/Icons/dust_icon_inst_clonereserveunit.png" }, "10878": { "iconFile": "res:/UI/Texture/Icons/dust_icon_inst_default.png" }, "10879": { "iconFile": "res:/UI/Texture/Icons/dust_icon_inst_supplydepot.png" }, "10880": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile_l.png" }, "10881": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile_s.png" }, "10882": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_default.png" }, "10883": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_wpnupg_damagemodifier.png" }, "10884": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldextender.png" }, "10885": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldrecharger.png" }, "10886": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_imp_movement.png" }, "10887": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthextender.png" }, "10888": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_bio_healthregenerator.png" }, "10889": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_lav_ca.png" }, "10890": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_submachinegun.png" }, "10891": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_hmg_std.png" }, "10892": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_cpuupgrade.png" }, "10893": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_pgupgrade.png" }, "10894": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_swarmlauncher.png" }, "10895": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_hav_ca.png" }, "10896": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_nanohive_armor.png" }, "10897": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_remotearmorrepair.png" }, "10898": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_powerdiagnostic.png" }, "10899": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_lav_ga.png" }, "10900": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_blaster.png" }, "10901": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_rdv.png" }, "10902": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_dropship_ca.png" }, "10903": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_dropship_ga.png" }, "10904": { "iconFile": "res:/UI/Texture/Icons/dust_icon_booster_skillgain.png" }, "10905": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_afterburner.png" }, "10906": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_armorplates.png" }, "10907": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_lightweightchassis.png" }, "10908": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_locusgrenade.png" }, "10909": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_reactorcoreunit.png" }, "10910": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_armorrepair.png" }, "10911": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_avgrenade.png" }, "10912": { "iconFile": "res:/UI/Texture/Icons/dust_icon_veh_hav_ga.png" }, "10913": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_remoteshieldrecharger.png" }, "10914": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_shieldbooster.png" }, "10915": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_armor_resistance.png" }, "10916": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_resistance.png" }, "10917": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_damagecontrol.png" }, "10926": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_shotgun.png" }, "10927": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_laserrifle.png" }, "10928": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_naniteinjector.png" }, "10929": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_heavymachinegun.png" }, "10930": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_booster.png" }, "10932": { "iconFile": "res:/ui/texture/icons/105_32_46.png" }, "10933": { "iconFile": "res:/ui/texture/icons/105_32_47.png" }, "10934": { "iconFile": "res:/ui/texture/icons/105_32_48.png" }, "10935": { "iconFile": "res:/ui/texture/icons/105_32_49.png" }, "10936": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_remoteexplosive.png" }, "10937": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_massdriver.png" }, "10939": { "iconFile": "res:/UI/Texture/Icons/dust_icon_tur_missile.png" }, "10940": { "iconFile": "res:/ui/texture/icons/107_64_1.png" }, "10941": { "iconFile": "res:/ui/texture/icons/107_64_2.png" }, "10942": { "iconFile": "res:/ui/texture/icons/107_64_3.png" }, "10946": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_codebreaker.png" }, "10947": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_shield_regulator.png" }, "10948": { "iconFile": "res:/UI/Texture/Icons/dust_icon_aug_voicetransmitter.png" }, "20939": { "iconFile": "res:/ui/texture/icons/108_64_5.png" }, "20940": { "iconFile": "res:/ui/texture/icons/108_64_6.png" }, "20941": { "iconFile": "res:/ui/texture/icons/108_64_7.png" }, "20942": { "iconFile": "res:/ui/texture/icons/108_64_8.png" }, "20943": { "iconFile": "res:/ui/texture/icons/108_64_12.png" }, "20944": { "iconFile": "res:/ui/texture/icons/108_64_13.png" }, "20945": { "iconFile": "res:/ui/texture/icons/108_64_10.png" }, "20946": { "iconFile": "res:/ui/texture/icons/108_64_11.png" }, "20947": { "iconFile": "res:/ui/texture/icons/108_64_3.png" }, "20948": { "iconFile": "res:/ui/texture/icons/108_64_4.png" }, "20949": { "iconFile": "res:/ui/texture/icons/108_64_1.png" }, "20950": { "iconFile": "res:/ui/texture/icons/108_64_2.png" }, "20951": { "iconFile": "res:/ui/texture/icons/108_64_20.png" }, "20952": { "iconFile": "res:/ui/texture/icons/108_64_21.png" }, "20953": { "iconFile": "res:/ui/texture/icons/108_64_18.png" }, "20954": { "iconFile": "res:/ui/texture/icons/108_64_19.png" }, "20955": { "iconFile": "res:/ui/texture/icons/108_64_16.png" }, "20956": { "iconFile": "res:/ui/texture/icons/108_64_17.png" }, "20957": { "iconFile": "res:/ui/texture/icons/108_64_14.png" }, "20958": { "iconFile": "res:/ui/texture/icons/108_64_15.png" }, "20959": { "iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Amarr.png" }, "20966": { "iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Caldari.png" }, "20967": { "iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Gallente.png" }, "20968": { "iconFile": "res:/UI/Texture/Icons/MarketIcon_16px_Minmatar.png" }, "20969": { "iconFile": "res:/UI/Texture/Icons/94_64_9.png" }, "20970": { "iconFile": "res:/UI/Texture/Icons/53_64_16.png" }, "20971": { "iconFile": "res:/UI/Texture/Icons/108_64_22.png" }, "20973": { "iconFile": "res:/UI/Texture/Icons/Icon_64px_Fireworks.png" }, "20974": { "iconFile": "res:/UI/Texture/Icons/Icon_64px_NEO.png" }, "20976": { "iconFile": "res:/UI/Texture/Icons/DudeYourChin_64px_Icon.jpg" }, "20977": { "iconFile": "res:/UI/Asset/mannequin/feet/33064_female_Feet_BootsMilF02_Types_BootsMilF02_bootini.png", "iconType": "png" }, "20979": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33063_female_TopMiddle_ShirtQF01_Types_shirtredstarf01.png", "iconType": "png" }, "20980": { "iconFile": "res:/UI/Texture/Corps/algintal_core.png" }, "20981": { "iconFile": "res:/UI/Texture/Corps/amarr_templars.png" }, "20982": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33062_male_TopMiddle_ShirtQM01_Types_shirtredstarm01.png", "iconType": "png" }, "20984": { "iconFile": "res:/UI/Texture/Corps/arkombine.png" }, "20985": { "iconFile": "res:/UI/Texture/Corps/bragian_order.png" }, "20986": { "iconFile": "res:/UI/Texture/Corps/circle_of_huskarl.png" }, "20987": { "iconFile": "res:/UI/Texture/Corps/crux_special_tasks_group.png" }, "20988": { "iconFile": "res:/UI/Texture/Corps/osmon_surveillance.png" }, "20989": { "iconFile": "res:/UI/Texture/Corps/royal_uhlans.png" }, "20990": { "iconFile": "res:/UI/Texture/Corps/sanmatar_kelkoons.png" }, "20991": { "iconFile": "res:/UI/Texture/Corps/seituoda_taskforce.png" }, "20992": { "iconFile": "res:/UI/Texture/Corps/templis_dragonaurs.png" }, "20993": { "iconFile": "res:/UI/Texture/Corps/tronhadar_free_guard.png" }, "20994": { "iconFile": "res:/UI/Texture/Corps/villore_sec_ops.png" }, "20995": { "iconFile": "res:/UI/Texture/Corps/zumari_force_projection.png" }, "20996": { "iconFile": "res:/UI/Texture/Corps/default.png" }, "20997": { "iconFile": "res:/UI/Texture/Corps/imperial_guard.png" }, "21000": { "iconFile": "res:/UI/Texture/Icons/dust_icon_wpn_knife.png", "iconType": "png" }, "21001": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_rangeamplifier.png", "iconType": "png" }, "21002": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_precisionenhancer.png", "iconType": "png" }, "21003": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_prop_boost.png", "iconType": "png" }, "21004": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_scanning_activescanner.png", "iconType": "png" }, "21005": { "iconFile": "res:/UI/Texture/Icons/dust_icon_eq_activescanner.png", "iconType": "png" }, "21006": { "iconFile": "res:/UI/Texture/Icons/dust_icon_mod_eng_profiledampener.png", "iconType": "png" }, "21011": { "iconFile": "res:/UI/Asset/mannequin/Male_Accessories_Glasses_Monocle_M_T02_Types_Monocle_M_T02_black_right.png" }, "21012": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/32853_female_Accessories_Glasses_Monocle_F_T02_Types_Monocle_F_T02_black_right.png" }, "21013": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33107_male_TopMiddle_ShirtQM01_Types_shirtqm03.png", "iconType": "png" }, "21014": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33109_female_TopMiddle_ShirtQF01_Types_shirtqf03.png", "iconType": "png" }, "21021": { "iconFile": "res:/UI/Texture/Icons/110_128_01.png" }, "21022": { "iconFile": "res:/UI/Texture/Icons/110_128_02.png" }, "21023": { "iconFile": "res:/UI/Texture/Icons/110_128_03.png" }, "21025": { "iconFile": "res:/ui/texture/icons/107_64_10.png" }, "21026": { "iconFile": "res:/ui/texture/icons/107_64_11.png" }, "21027": { "iconFile": "res:/ui/texture/icons/107_64_12.png" }, "21028": { "iconFile": "res:/UI/Texture/Icons/icons111_02.png" }, "21029": { "iconFile": "res:/UI/Texture/Icons/icons111_03.png" }, "21030": { "iconFile": "res:/UI/Texture/Icons/icons111_04.png" }, "21031": { "iconFile": "res:/UI/Texture/Icons/icons111_05.png" }, "21032": { "iconFile": "res:/UI/Texture/Icons/icons111_06.png" }, "21047": { "iconFile": "res:/UI/Texture/Icons/107_64_4.png" }, "21048": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33377_male_tattoo_armleft_sleeve04__.png", "iconType": "png" }, "21050": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33378_male_tattoo_armleft_sleeve05__.png", "iconType": "png" }, "21051": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33379_male_tattoo_armleft_sleeve14__.png", "iconType": "png" }, "21052": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33380_male_tattoo_armleft_sleeve08__.png", "iconType": "png" }, "21053": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33381_male_tattoo_armright_sleeve04__.png", "iconType": "png" }, "21054": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33382_male_tattoo_armright_sleeve05__.png", "iconType": "png" }, "21055": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33383_male_tattoo_armright_sleeve14__.png", "iconType": "png" }, "21056": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/33384_male_tattoo_armright_sleeve08__.png", "iconType": "png" }, "21057": { "iconFile": "res:/UI/Texture/Icons/113_64_1.png" }, "21058": { "iconFile": "res:/UI/Texture/Icons/113_64_2.png" }, "21059": { "iconFile": "res:/UI/Texture/Icons/113_64_3.png" }, "21060": { "iconFile": "res:/ui/texture/icons/115_64_1.png" }, "21061": { "iconFile": "res:/ui/texture/icons/115_64_2.png" }, "21062": { "iconFile": "res:/ui/texture/icons/115_64_3.png" }, "21063": { "iconFile": "res:/ui/texture/icons/115_64_4.png" }, "21064": { "iconFile": "res:/ui/texture/icons/115_64_5.png" }, "21065": { "iconFile": "res:/ui/texture/icons/114_64_1.png" }, "21066": { "iconFile": "res:/ui/texture/icons/114_64_2.png" }, "21070": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33487_female_TopMiddle_ShirtQF01_Types_lvf01.png", "iconType": "png" }, "21071": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33488_male_TopMiddle_ShirtQM01_Types_lvm01.png", "iconType": "png" }, "21074": { "iconFile": "res:/ui/texture/icons/109_64_1.png" }, "21075": { "iconFile": "res:/ui/texture/icons/109_64_2.png" }, "21078": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/33551_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_White.png", "iconType": "png" }, "21080": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/33549_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_WhiteGray.png", "iconType": "png" }, "21081": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/33550_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_WhiteGray.png", "iconType": "png" }, "21082": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/33552_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_White.png", "iconType": "png" }, "21084": { "iconFile": "res:/UI/Texture/Icons/icons111_07.png" }, "21085": { "iconFile": "res:/UI/Texture/Icons/icons111_08.png" }, "21086": { "iconFile": "res:/UI/Texture/Icons/icons111_09.png" }, "21089": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33579_female_TopMiddle_ShirtQF01_Types_soerff01.png", "iconType": "png" }, "21090": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33578_male_TopMiddle_ShirtQM01_Types_soerfm01.png", "iconType": "png" }, "21092": { "iconFile": "res:/UI/Texture/Corps/state_peacekeepers.png" }, "21093": { "iconFile": "res:/UI/Texture/Corps/federal_marines.png" }, "21094": { "iconFile": "res:/UI/Texture/Corps/republic_command.png" }, "21095": { "iconFile": "res:/ui/texture/icons/107_64_14.png" }, "21096": { "iconFile": "res:/ui/texture/icons/107_64_13.png" }, "21097": { "iconFile": "res:/ui/texture/icons/107_64_16.png" }, "21098": { "iconFile": "res:/ui/texture/icons/107_64_15.png" }, "21100": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33744_female_bottomOuter_PantsALF_01_Types_PantsALF_01_blackleather.png", "iconType": "png" }, "21101": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33745_female_bottomOuter_PantsALF_01_Types_PantsALF_01_blackmatte.png", "iconType": "png" }, "21102": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33746_female_bottomOuter_PantsALF_01_Types_PantsALF_01_brownpattern.png", "iconType": "png" }, "21103": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33747_female_bottomOuter_PantsALF_01_Types_PantsALF_01_cream.png", "iconType": "png" }, "21104": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33748_female_bottomOuter_PantsALF_01_Types_PantsALF_01_green.png", "iconType": "png" }, "21105": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33749_female_bottomOuter_PantsALF_01_Types_PantsALF_01_gunpattern.png", "iconType": "png" }, "21106": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33750_female_bottomOuter_PantsALF_01_Types_PantsALF_01_gunshiny.png", "iconType": "png" }, "21107": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33751_female_bottomOuter_PantsALF_01_Types_PantsALF_01_navy.png", "iconType": "png" }, "21108": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33752_female_bottomOuter_PantsALF_01_Types_PantsALF_01_red.png", "iconType": "png" }, "21109": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33753_female_bottomOuter_PantsALF_01_Types_PantsALF_01_redleather.png", "iconType": "png" }, "21110": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33754_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_black.png", "iconType": "png" }, "21111": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33755_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_blue.png", "iconType": "png" }, "21112": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33756_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_camo.png", "iconType": "png" }, "21113": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33757_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_greyflat.png", "iconType": "png" }, "21114": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33758_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_orangegloss.png", "iconType": "png" }, "21115": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33759_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_red.png", "iconType": "png" }, "21116": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33760_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_reddark.png", "iconType": "png" }, "21117": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33761_female_bottomOuter_PantsSLF_01_Types_PantsSLF_01_yellowgloss.png", "iconType": "png" }, "21118": { "iconFile": "res:/UI/Asset/mannequin/feet/33714_female_Feet_BootsALF_01_Types_BootsALF_01_blackgold.png", "iconType": "png" }, "21119": { "iconFile": "res:/UI/Asset/mannequin/feet/33716_female_Feet_BootsALF_01_Types_BootsALF_01_brown.png", "iconType": "png" }, "21120": { "iconFile": "res:/UI/Asset/mannequin/feet/33717_female_Feet_BootsALF_01_Types_BootsALF_01_cream.png", "iconType": "png" }, "21121": { "iconFile": "res:/UI/Asset/mannequin/feet/33718_female_Feet_BootsALF_01_Types_BootsALF_01_navy.png", "iconType": "png" }, "21122": { "iconFile": "res:/UI/Asset/mannequin/feet/33719_female_Feet_BootsALF_01_Types_BootsALF_01_red.png", "iconType": "png" }, "21123": { "iconFile": "res:/UI/Asset/mannequin/feet/33720_female_Feet_BootsSLF_01_Types_BootsSLF_01_black.png", "iconType": "png" }, "21124": { "iconFile": "res:/UI/Asset/mannequin/feet/33721_female_Feet_BootsSLF_01_Types_BootsSLF_01_blue.png", "iconType": "png" }, "21125": { "iconFile": "res:/UI/Asset/mannequin/feet/33722_female_Feet_BootsSLF_01_Types_BootsSLF_01_brown.png", "iconType": "png" }, "21126": { "iconFile": "res:/UI/Asset/mannequin/feet/33723_female_Feet_BootsSLF_01_Types_BootsSLF_01_felt.png", "iconType": "png" }, "21127": { "iconFile": "res:/UI/Asset/mannequin/feet/33724_female_Feet_BootsSLF_01_Types_BootsSLF_01_mouse.png", "iconType": "png" }, "21128": { "iconFile": "res:/UI/Asset/mannequin/feet/33725_female_Feet_BootsSLF_01_Types_BootsSLF_01_red.png", "iconType": "png" }, "21129": { "iconFile": "res:/UI/Asset/mannequin/outer/33726_female_Outer_JacketALF_01_Types_JacketALF_01_blackgold.png", "iconType": "png" }, "21130": { "iconFile": "res:/UI/Asset/mannequin/outer/33728_female_Outer_JacketALF_01_Types_JacketALF_01_bluesilver.png", "iconType": "png" }, "21131": { "iconFile": "res:/UI/Asset/mannequin/outer/33727_female_Outer_JacketALF_01_Types_JacketALF_01_brownpattern.png", "iconType": "png" }, "21132": { "iconFile": "res:/UI/Asset/mannequin/outer/33715_female_Outer_JacketALF_01_Types_JacketALF_01_creamgold.png", "iconType": "png" }, "21133": { "iconFile": "res:/UI/Asset/mannequin/outer/33729_female_Outer_JacketALF_01_Types_JacketALF_01_darkgreen.png", "iconType": "png" }, "21134": { "iconFile": "res:/UI/Asset/mannequin/outer/33730_female_Outer_JacketALF_01_Types_JacketALF_01_darkredgun.png", "iconType": "png" }, "21135": { "iconFile": "res:/UI/Asset/mannequin/outer/33731_female_Outer_JacketALF_01_Types_JacketALF_01_greengold.png", "iconType": "png" }, "21136": { "iconFile": "res:/UI/Asset/mannequin/outer/33732_female_Outer_JacketALF_01_Types_JacketALF_01_redsilver.png", "iconType": "png" }, "21137": { "iconFile": "res:/UI/Asset/mannequin/outer/33733_female_Outer_JacketSLF_01_Types_JacketSLF_01_black.png", "iconType": "png" }, "21138": { "iconFile": "res:/UI/Asset/mannequin/outer/33734_female_Outer_JacketSLF_01_Types_JacketSLF_01_blackv1.png", "iconType": "png" }, "21139": { "iconFile": "res:/UI/Asset/mannequin/outer/33735_female_Outer_JacketSLF_01_Types_JacketSLF_01_blue.png", "iconType": "png" }, "21140": { "iconFile": "res:/UI/Asset/mannequin/outer/33736_female_Outer_JacketSLF_01_Types_JacketSLF_01_coppstars.png", "iconType": "png" }, "21141": { "iconFile": "res:/UI/Asset/mannequin/outer/33738_female_Outer_JacketSLF_01_Types_JacketSLF_01_copv1.png", "iconType": "png" }, "21142": { "iconFile": "res:/UI/Asset/mannequin/outer/33737_female_Outer_JacketSLF_01_Types_JacketSLF_01_darkgrey.png", "iconType": "png" }, "21143": { "iconFile": "res:/UI/Asset/mannequin/outer/33739_female_Outer_JacketSLF_01_Types_JacketSLF_01_green.png", "iconType": "png" }, "21144": { "iconFile": "res:/UI/Asset/mannequin/outer/33740_female_Outer_JacketSLF_01_Types_JacketSLF_01_movcircles.png", "iconType": "png" }, "21145": { "iconFile": "res:/UI/Asset/mannequin/outer/33741_female_Outer_JacketSLF_01_Types_JacketSLF_01_redv1.png", "iconType": "png" }, "21146": { "iconFile": "res:/UI/Asset/mannequin/outer/33742_female_Outer_JacketSLF_01_Types_JacketSLF_01_white.png", "iconType": "png" }, "21147": { "iconFile": "res:/UI/Asset/mannequin/outer/33743_female_Outer_JacketSLF_01_Types_JacketSLF_01_whitegreen.png", "iconType": "png" }, "21148": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33767_female_TopMiddle_ShirtQF01_Types_neof2014A.png", "iconType": "png" }, "21149": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33768_female_TopMiddle_ShirtQF01_Types_neof2014B.png", "iconType": "png" }, "21150": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33790_male_bottomOuter_PantsALM01_Types_PantsALM01_BlackSilver.png", "iconType": "png" }, "21152": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33789_male_bottomOuter_PantsALM01_Types_PantsALM01_BlueShiny.png", "iconType": "png" }, "21153": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33788_male_bottomOuter_PantsALM01_Types_PantsALM01_DarkredBlackGold.png", "iconType": "png" }, "21154": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33787_male_bottomOuter_PantsALM01_Types_PantsALM01_Royal.png", "iconType": "png" }, "21155": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33786_male_bottomOuter_PantsALM01_Types_PantsALM01_WhiteBlackGold.png", "iconType": "png" }, "21156": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33785_male_bottomOuter_PantsCLM01_Types_PantsCLM01_BlackLeather.png", "iconType": "png" }, "21157": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33784_male_bottomOuter_PantsCLM01_Types_PantsCLM01_DarkRed.png", "iconType": "png" }, "21158": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33783_male_bottomOuter_PantsCLM01_Types_PantsCLM01_Graphite.png", "iconType": "png" }, "21159": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33782_male_bottomOuter_PantsCLM01_Types_PantsCLM01_GreenCamo.png", "iconType": "png" }, "21160": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/33781_male_bottomOuter_PantsCLM01_Types_PantsCLM01_White.png", "iconType": "png" }, "21161": { "iconFile": "res:/UI/Asset/mannequin/feet/33780_male_Feet_BootsALM01_Types_BootsALM01_BrownGold.png", "iconType": "png" }, "21162": { "iconFile": "res:/UI/Asset/mannequin/feet/33779_male_Feet_BootsALM01_Types_BootsALM01_DarkRedBlack.png", "iconType": "png" }, "21163": { "iconFile": "res:/UI/Asset/mannequin/feet/33778_male_Feet_BootsALM01_Types_BootsALM01_GreySilver.png", "iconType": "png" }, "21164": { "iconFile": "res:/UI/Asset/mannequin/feet/33777_male_Feet_BootsALM01_Types_BootsALM01_Royal.png", "iconType": "png" }, "21165": { "iconFile": "res:/UI/Asset/mannequin/feet/33776_male_Feet_BootsALM01_Types_BootsALM01_WhiteGold.png", "iconType": "png" }, "21166": { "iconFile": "res:/UI/Asset/mannequin/feet/33775_male_Feet_BootsCLM01_Types_BootsCLM01_Black.png", "iconType": "png" }, "21167": { "iconFile": "res:/UI/Asset/mannequin/feet/33774_male_Feet_BootsCLM01_Types_BootsCLM01_BlueShiny.png", "iconType": "png" }, "21168": { "iconFile": "res:/UI/Asset/mannequin/feet/33773_male_Feet_BootsCLM01_Types_BootsCLM01_Brown.png", "iconType": "png" }, "21169": { "iconFile": "res:/UI/Asset/mannequin/feet/33772_male_Feet_BootsCLM01_Types_BootsCLM01_Graphite.png", "iconType": "png" }, "21170": { "iconFile": "res:/UI/Asset/mannequin/feet/33771_male_Feet_BootsCLM01_Types_BootsCLM01_White.png", "iconType": "png" }, "21171": { "iconFile": "res:/UI/Asset/mannequin/outer/33800_male_outer_JacketALM01_Types_JacketALM01_BlackSilver.png", "iconType": "png" }, "21172": { "iconFile": "res:/UI/Asset/mannequin/outer/33799_male_outer_JacketALM01_Types_JacketALM01_BrownBlackGold.png", "iconType": "png" }, "21173": { "iconFile": "res:/UI/Asset/mannequin/outer/33798_male_outer_JacketALM01_Types_JacketALM01_RedGold.png", "iconType": "png" }, "21174": { "iconFile": "res:/UI/Asset/mannequin/outer/33797_male_outer_JacketALM01_Types_JacketALM01_Royal.png", "iconType": "png" }, "21175": { "iconFile": "res:/UI/Asset/mannequin/outer/33796_male_outer_JacketALM01_Types_JacketALM01_WhiteGold.png", "iconType": "png" }, "21176": { "iconFile": "res:/UI/Asset/mannequin/outer/33795_male_outer_JacketCLM01_Types_JacketCLM01_BlueShiny.png", "iconType": "png" }, "21177": { "iconFile": "res:/UI/Asset/mannequin/outer/33794_male_outer_JacketCLM01_Types_JacketCLM01_DarkRed.png", "iconType": "png" }, "21178": { "iconFile": "res:/UI/Asset/mannequin/outer/33793_male_outer_JacketCLM01_Types_JacketCLM01_Graphite.png", "iconType": "png" }, "21179": { "iconFile": "res:/UI/Asset/mannequin/outer/33792_male_outer_JacketCLM01_Types_JacketCLM01_GreenCamo.png", "iconType": "png" }, "21180": { "iconFile": "res:/UI/Asset/mannequin/outer/33791_male_outer_JacketCLM01_Types_JacketCLM01_White.png", "iconType": "png" }, "21181": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33769_male_TopMiddle_ShirtQM01_Types_neom2014A.png", "iconType": "png" }, "21182": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33770_male_TopMiddle_ShirtQM01_Types_neom2014B.png", "iconType": "png" }, "21183": { "iconFile": "res:/UI/Asset/mannequin/outer/33804_female_Outer_JacketMilF01_Types_JacketMilF01_silverV2.png", "iconType": "png" }, "21184": { "iconFile": "res:/UI/Asset/mannequin/outer/33803_male_outer_JacketMilM02_Types_JacketMilM02_blackV2.png", "iconType": "png" }, "21186": { "iconFile": "res:/UI/Texture/Icons/sourceBook.png", "iconType": "png" }, "21192": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33813_female_TopMiddle_ShirtQF01_Types_shirtqf04.png", "iconType": "png" }, "21193": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/33812_male_TopMiddle_ShirtQM01_Types_shirtqm04.png", "iconType": "png" }, "21195": { "iconFile": "res:/UI/Asset/mannequin/hair/34056_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Black.png", "iconType": "png" }, "21197": { "iconFile": "res:/UI/Asset/mannequin/hair/34057_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_Black.png", "iconType": "png" }, "21198": { "iconFile": "res:/UI/Asset/mannequin/hair/34058_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_White.png", "iconType": "png" }, "21199": { "iconFile": "res:/UI/Asset/mannequin/hair/34059_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Silver.png", "iconType": "png" }, "21200": { "iconFile": "res:/UI/Asset/mannequin/hair/34060_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Gold.png", "iconType": "png" }, "21201": { "iconFile": "res:/UI/Asset/mannequin/hair/34061_male_hair_HeadWear_Amarr_Types_HeadWear_Amarr_Bronze.png", "iconType": "png" }, "21202": { "iconFile": "res:/UI/Asset/mannequin/hair/34062_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_Metal.png", "iconType": "png" }, "21203": { "iconFile": "res:/UI/Asset/mannequin/hair/34063_male_hair_HeadWear_Caldari_Types_HeadWear_Caldari_BlackShiny.png", "iconType": "png" }, "21204": { "iconFile": "res:/UI/Asset/mannequin/hair/34064_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Cyan.png", "iconType": "png" }, "21205": { "iconFile": "res:/UI/Asset/mannequin/hair/34065_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Gunmetal.png", "iconType": "png" }, "21206": { "iconFile": "res:/UI/Asset/mannequin/hair/34066_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Blue.png", "iconType": "png" }, "21207": { "iconFile": "res:/UI/Asset/mannequin/hair/34067_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Platinum.png", "iconType": "png" }, "21208": { "iconFile": "res:/UI/Asset/mannequin/hair/34068_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Black.png", "iconType": "png" }, "21209": { "iconFile": "res:/UI/Asset/mannequin/hair/34069_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Gold.png", "iconType": "png" }, "21210": { "iconFile": "res:/UI/Asset/mannequin/hair/34070_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Orange.png", "iconType": "png" }, "21211": { "iconFile": "res:/UI/Asset/mannequin/hair/34071_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Black.png", "iconType": "png" }, "21212": { "iconFile": "res:/UI/Asset/mannequin/hair/34072_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Copper.png", "iconType": "png" }, "21213": { "iconFile": "res:/UI/Asset/mannequin/hair/34073_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Metallic.png", "iconType": "png" }, "21214": { "iconFile": "res:/UI/Asset/mannequin/hair/34074_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Jade.png", "iconType": "png" }, "21215": { "iconFile": "res:/UI/Asset/mannequin/hair/34075_female_hair_Hair_Medium_Hp_01_Types_Hair_Medium_Hp_01_Simple.png", "iconType": "png" }, "21216": { "iconFile": "res:/UI/Asset/mannequin/hair/34076_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Clear.png", "iconType": "png" }, "21217": { "iconFile": "res:/UI/Asset/mannequin/hair/34077_female_hair_Hair_Lace_01_Types_Hair_Lace_01_Gold.png", "iconType": "png" }, "21218": { "iconFile": "res:/UI/Asset/mannequin/hair/34078_female_hair_Hair_Bun_Hp_02_Types_Hair_Bun_Hp_02_Black.png", "iconType": "png" }, "21219": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34006_male_tattoo_armright_sleeve01__.png", "iconType": "png" }, "21220": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34007_male_tattoo_armright_sleeve02__.png", "iconType": "png" }, "21221": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34008_male_tattoo_armright_sleeve03__.png", "iconType": "png" }, "21222": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34009_male_tattoo_armright_sleeve06__.png", "iconType": "png" }, "21223": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34010_male_tattoo_armright_sleeve07__.png", "iconType": "png" }, "21224": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34011_male_tattoo_armright_sleeve09__.png", "iconType": "png" }, "21225": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34012_male_tattoo_armright_sleeve10__.png", "iconType": "png" }, "21226": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34013_male_tattoo_armright_sleeve11__.png", "iconType": "png" }, "21227": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34014_male_tattoo_armright_sleeve12__.png", "iconType": "png" }, "21228": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34015_male_tattoo_armright_sleeve13__.png", "iconType": "png" }, "21229": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armright/34016_male_tattoo_armright_sleeve15__.png", "iconType": "png" }, "21230": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33995_male_tattoo_armleft_sleeve01__.png", "iconType": "png" }, "21231": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33996_male_tattoo_armleft_sleeve02__.png", "iconType": "png" }, "21232": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33997_male_tattoo_armleft_sleeve03__.png", "iconType": "png" }, "21233": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33998_male_tattoo_armleft_sleeve06__.png", "iconType": "png" }, "21234": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/33999_male_tattoo_armleft_sleeve07__.png", "iconType": "png" }, "21235": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34000_male_tattoo_armleft_sleeve09__.png", "iconType": "png" }, "21236": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34001_male_tattoo_armleft_sleeve10__.png", "iconType": "png" }, "21237": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34002_male_tattoo_armleft_sleeve11__.png", "iconType": "png" }, "21238": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34003_male_tattoo_armleft_sleeve12__.png", "iconType": "png" }, "21239": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34004_male_tattoo_armleft_sleeve13__.png", "iconType": "png" }, "21240": { "iconFile": "res:/UI/Asset/mannequin/tattoo_armleft/34005_male_tattoo_armleft_sleeve15__.png", "iconType": "png" }, "21241": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34031_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_Black.png", "iconType": "png" }, "21242": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34032_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackOrangeMech.png", "iconType": "png" }, "21243": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34033_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackShinyMech.png", "iconType": "png" }, "21244": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34034_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlackYellow.png", "iconType": "png" }, "21245": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34035_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlueBlackShinyMech.png", "iconType": "png" }, "21246": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34036_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_BlueWhite.png", "iconType": "png" }, "21247": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34037_female_Makeup_ArmRight_CyborgArmF01_R_Types_CyborgArmF01_R_WhiteGrayMech.png", "iconType": "png" }, "21248": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34038_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackOrange.png", "iconType": "png" }, "21249": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34039_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackRed.png", "iconType": "png" }, "21250": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34040_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlackYellow.png", "iconType": "png" }, "21251": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34041_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_BlueWhite.png", "iconType": "png" }, "21252": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34042_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_GreenCamo.png", "iconType": "png" }, "21253": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34043_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_GreenYellow.png", "iconType": "png" }, "21254": { "iconFile": "res:/UI/Asset/mannequin/makeup_armright/34044_male_Makeup_ArmRight_CyborgArmM01_R_Types_CyborgArmM01_R_Gunmetal.png", "iconType": "png" }, "21255": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34017_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_Black.png", "iconType": "png" }, "21256": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34018_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackOrangeMech.png", "iconType": "png" }, "21257": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34019_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackShinyMech.png", "iconType": "png" }, "21258": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34020_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlackYellow.png", "iconType": "png" }, "21259": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34021_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlueBlackShinyMech.png", "iconType": "png" }, "21260": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34022_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_BlueWhite.png", "iconType": "png" }, "21261": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34023_female_Makeup_ArmLeft_CyborgArmF01_L_Types_CyborgArmF01_L_WhiteGrayMech.png", "iconType": "png" }, "21262": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34024_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackOrange.png", "iconType": "png" }, "21263": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34025_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackRed.png", "iconType": "png" }, "21264": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34026_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlackYellow.png", "iconType": "png" }, "21265": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34027_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_BlueWhite.png", "iconType": "png" }, "21266": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34028_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_GreenCamo.png", "iconType": "png" }, "21267": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34029_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_GreenYellow.png", "iconType": "png" }, "21268": { "iconFile": "res:/UI/Asset/mannequin/makeup_armleft/34030_male_Makeup_ArmLeft_CyborgArmM01_L_Types_CyborgArmM01_L_Gunmetal.png", "iconType": "png" }, "21269": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/33992_female_Accessories_Glasses_Monocle_01_Types_MonocleF01_RightBlack.png", "iconType": "png" }, "21270": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/33993_female_Accessories_Glasses_Monocle_F_T02_Types_Monocle_F_T02_black_left.png", "iconType": "png" }, "21271": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/33989_female_bottomMiddle_TightsF01_Types_TightsF01_black.png", "iconType": "png" }, "21272": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34045_female_bottomMiddle_TightsF01_Types_TightsF01_light.png", "iconType": "png" }, "21273": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34046_female_bottomMiddle_TightsF01_Types_TightsF01_orange.png", "iconType": "png" }, "21274": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34047_female_bottomMiddle_TightsF01_Types_TightsF01_pink.png", "iconType": "png" }, "21275": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34048_female_bottomMiddle_TightsF01_Types_TightsF01_red.png", "iconType": "png" }, "21276": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34049_female_bottomMiddle_TightsF01_Types_TightsF01_thickblack.png", "iconType": "png" }, "21277": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34051_female_bottomMiddle_TightsF01_Types_TightsF01_thickgray.png", "iconType": "png" }, "21278": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34053_female_bottomMiddle_TightsF01_Types_TightsF01_thickpurple.png", "iconType": "png" }, "21279": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34054_female_bottomMiddle_TightsF01_Types_TightsF01_white.png", "iconType": "png" }, "21280": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34055_female_bottomMiddle_TightsF01_Types_TightsF01_yellow.png", "iconType": "png" }, "21281": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34050_female_bottomMiddle_TightsF01_Types_TightsF01_thickblue.png", "iconType": "png" }, "21282": { "iconFile": "res:/UI/Asset/mannequin/bottommiddle/34052_female_bottomMiddle_TightsF01_Types_TightsF01_thickmatblack.png", "iconType": "png" }, "21283": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34101_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_black.png", "iconType": "png" }, "21284": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34102_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_blackgold.png", "iconType": "png" }, "21285": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34103_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_blue.png", "iconType": "png" }, "21286": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34104_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_brown.png", "iconType": "png" }, "21287": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34105_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_greengold.png", "iconType": "png" }, "21288": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34106_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_orange.png", "iconType": "png" }, "21289": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34107_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_red.png", "iconType": "png" }, "21290": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34108_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_redblack.png", "iconType": "png" }, "21291": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34109_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_stealth.png", "iconType": "png" }, "21292": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34110_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_white.png", "iconType": "png" }, "21293": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34111_female_bottomOuter_SpaceSuit_01_Types_spacesuit_01_f_yellow.png", "iconType": "png" }, "21294": { "iconFile": "res:/UI/Asset/mannequin/feet/34079_female_Feet_SpaceBoots01F_Types_spaceboots01f_black.png", "iconType": "png" }, "21295": { "iconFile": "res:/UI/Asset/mannequin/feet/34080_female_Feet_SpaceBoots01F_Types_spaceboots01f_blackgold.png", "iconType": "png" }, "21296": { "iconFile": "res:/UI/Asset/mannequin/feet/34081_female_Feet_SpaceBoots01F_Types_spaceboots01f_blue.png", "iconType": "png" }, "21297": { "iconFile": "res:/UI/Asset/mannequin/feet/34082_female_Feet_SpaceBoots01F_Types_spaceboots01f_brown.png", "iconType": "png" }, "21298": { "iconFile": "res:/UI/Asset/mannequin/feet/34083_female_Feet_SpaceBoots01F_Types_spaceboots01f_greengold.png", "iconType": "png" }, "21299": { "iconFile": "res:/UI/Asset/mannequin/feet/34084_female_Feet_SpaceBoots01F_Types_spaceboots01f_orange.png", "iconType": "png" }, "21300": { "iconFile": "res:/UI/Asset/mannequin/feet/34085_female_Feet_SpaceBoots01F_Types_spaceboots01f_red.png", "iconType": "png" }, "21301": { "iconFile": "res:/UI/Asset/mannequin/feet/34086_female_Feet_SpaceBoots01F_Types_spaceboots01f_redblack.png", "iconType": "png" }, "21302": { "iconFile": "res:/UI/Asset/mannequin/feet/34087_female_Feet_SpaceBoots01F_Types_spaceboots01f_stealth.png", "iconType": "png" }, "21303": { "iconFile": "res:/UI/Asset/mannequin/feet/34088_female_Feet_SpaceBoots01F_Types_spaceboots01f_white.png", "iconType": "png" }, "21304": { "iconFile": "res:/UI/Asset/mannequin/feet/34089_female_Feet_SpaceBoots01F_Types_spaceboots01f_yellow.png", "iconType": "png" }, "21305": { "iconFile": "res:/UI/Asset/mannequin/outer/34090_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_black.png", "iconType": "png" }, "21306": { "iconFile": "res:/UI/Asset/mannequin/outer/34091_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_blackgold.png", "iconType": "png" }, "21307": { "iconFile": "res:/UI/Asset/mannequin/outer/34092_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_blue.png", "iconType": "png" }, "21308": { "iconFile": "res:/UI/Asset/mannequin/outer/34093_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_brown.png", "iconType": "png" }, "21309": { "iconFile": "res:/UI/Asset/mannequin/outer/34094_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_greengold.png", "iconType": "png" }, "21310": { "iconFile": "res:/UI/Asset/mannequin/outer/34095_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_orange.png", "iconType": "png" }, "21311": { "iconFile": "res:/UI/Asset/mannequin/outer/34096_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_red.png", "iconType": "png" }, "21312": { "iconFile": "res:/UI/Asset/mannequin/outer/34097_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_redblack.png", "iconType": "png" }, "21313": { "iconFile": "res:/UI/Asset/mannequin/outer/34098_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_stealth.png", "iconType": "png" }, "21314": { "iconFile": "res:/UI/Asset/mannequin/outer/34099_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_white.png", "iconType": "png" }, "21315": { "iconFile": "res:/UI/Asset/mannequin/outer/34100_female_Outer_SpaceSuit_Top_01_Types_spacesuit_01_top_f_yellow.png", "iconType": "png" }, "21335": { "iconFile": "res:/UI/Texture/Icons/character_resculpt.png", "iconType": "png" }, "21336": { "iconFile": "res:/UI/Texture/Icons/multiple_training.png", "iconType": "png" }, "21347": { "iconFile": "res:/UI/Asset/mannequin/outer/34156_male_outer_JacketMFBR01_Types_JacketMFBR01_Caldari.png", "iconType": "png" }, "21348": { "iconFile": "res:/UI/Asset/mannequin/outer/34157_male_outer_JacketMFBR01_Types_JacketMFBR01_Amarr.png", "iconType": "png" }, "21349": { "iconFile": "res:/UI/Asset/mannequin/outer/34158_male_outer_JacketMFBR01_Types_JacketMFBR01_Minmatar.png", "iconType": "png" }, "21350": { "iconFile": "res:/UI/Asset/mannequin/outer/34159_male_outer_JacketMFBR01_Types_JacketMFBR01_Gallente.png", "iconType": "png" }, "21351": { "iconFile": "res:/UI/Asset/mannequin/outer/34160_male_outer_JacketMFBR01_Types_JacketMFBR01_ORE.png", "iconType": "png" }, "21352": { "iconFile": "res:/UI/Asset/mannequin/outer/34161_male_outer_JacketMFBR01_Types_JacketMFBR01_SOE.png", "iconType": "png" }, "21353": { "iconFile": "res:/UI/Asset/mannequin/outer/34162_male_outer_JacketMFBR01_Types_JacketMFBR01_Mordus.png", "iconType": "png" }, "21354": { "iconFile": "res:/UI/Asset/mannequin/outer/34163_male_outer_JacketMFBR01_Types_JacketMFBR01_Interbus.png", "iconType": "png" }, "21355": { "iconFile": "res:/UI/Asset/mannequin/outer/34164_male_outer_JacketMFBR01_Types_JacketMFBR01_Angel.png", "iconType": "png" }, "21356": { "iconFile": "res:/UI/Asset/mannequin/outer/34165_male_outer_JacketMFBR01_Types_JacketMFBR01_Sansha.png", "iconType": "png" }, "21357": { "iconFile": "res:/UI/Asset/mannequin/outer/34166_male_outer_JacketMFBR01_Types_JacketMFBR01_Bloodraiders.png", "iconType": "png" }, "21358": { "iconFile": "res:/UI/Asset/mannequin/outer/34167_male_outer_JacketMFBR01_Types_JacketMFBR01_Guristas.png", "iconType": "png" }, "21359": { "iconFile": "res:/UI/Asset/mannequin/outer/34168_male_outer_JacketMFBR01_Types_JacketMFBR01_Serpentis.png", "iconType": "png" }, "21360": { "iconFile": "res:/UI/Asset/mannequin/outer/34169_female_Outer_JacketFBR01_Types_JacketFBR01_caldari.png", "iconType": "png" }, "21361": { "iconFile": "res:/UI/Asset/mannequin/outer/34170_female_Outer_JacketFBR01_Types_JacketFBR01_amarr.png", "iconType": "png" }, "21362": { "iconFile": "res:/UI/Asset/mannequin/outer/34171_female_Outer_JacketFBR01_Types_JacketFBR01_minmatar.png", "iconType": "png" }, "21363": { "iconFile": "res:/UI/Asset/mannequin/outer/34173_female_Outer_JacketFBR01_Types_JacketFBR01_ore.png", "iconType": "png" }, "21364": { "iconFile": "res:/UI/Asset/mannequin/outer/34174_female_Outer_JacketFBR01_Types_JacketFBR01_soe.png", "iconType": "png" }, "21365": { "iconFile": "res:/UI/Asset/mannequin/outer/34175_female_Outer_JacketFBR01_Types_JacketFBR01_mordus.png", "iconType": "png" }, "21366": { "iconFile": "res:/UI/Asset/mannequin/outer/34176_female_Outer_JacketFBR01_Types_JacketFBR01_interbus.png", "iconType": "png" }, "21367": { "iconFile": "res:/UI/Asset/mannequin/outer/34177_female_Outer_JacketFBR01_Types_JacketFBR01_angel.png", "iconType": "png" }, "21368": { "iconFile": "res:/UI/Asset/mannequin/outer/34178_female_Outer_JacketFBR01_Types_JacketFBR01_sansha.png", "iconType": "png" }, "21369": { "iconFile": "res:/UI/Asset/mannequin/outer/34179_female_Outer_JacketFBR01_Types_JacketFBR01_bloodraiders.png", "iconType": "png" }, "21370": { "iconFile": "res:/UI/Asset/mannequin/outer/34180_female_Outer_JacketFBR01_Types_JacketFBR01_guristas.png", "iconType": "png" }, "21371": { "iconFile": "res:/UI/Asset/mannequin/outer/34181_female_Outer_JacketFBR01_Types_JacketFBR01_serpentis.png", "iconType": "png" }, "21373": { "iconFile": "res:/UI/Asset/mannequin/outer/34172_female_Outer_JacketFBR01_Types_JacketFBR01_gallente.png" }, "21375": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34210_male_TopMiddle_ShirtQM01_Types_lvm02.png", "iconType": "png" }, "21376": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34211_female_TopMiddle_ShirtQF01_Types_lvf02.png", "iconType": "png" }, "21378": { "iconFile": "res:/ui/texture/icons/1337_64_22.png" }, "21379": { "iconFile": "res:/ui/texture/icons/1337_64_21.png" }, "21380": { "iconFile": "res:/UI/Texture/Icons/commendationAmarr.png" }, "21381": { "iconFile": "res:/UI/Texture/Icons/commendationCaldari.png" }, "21382": { "iconFile": "res:/UI/Texture/Icons/commendationGallente.png" }, "21383": { "iconFile": "res:/UI/Texture/Icons/commendationMinmatar.png" }, "21384": { "iconFile": "res:/UI/Asset/mannequin/outer/34347_male_outer_JacketPrtm01_Types_JacketPrtm01_bloodraiders.png", "iconType": "png" }, "21385": { "iconFile": "res:/UI/Asset/mannequin/outer/34348_male_outer_JacketPrtm01_Types_JacketPrtm01_sansha.png", "iconType": "png" }, "21386": { "iconFile": "res:/UI/Asset/mannequin/outer/34349_male_outer_JacketPrtm01_Types_JacketPrtm01_guristas.png", "iconType": "png" }, "21387": { "iconFile": "res:/UI/Asset/mannequin/outer/34393_male_outer_JacketPrtm01_Types_JacketPrtm01_orange.png", "iconType": "png" }, "21388": { "iconFile": "res:/UI/Asset/mannequin/outer/34350_female_Outer_JacketPrtF01_Types_JacketPrtF01_sansha.png", "iconType": "png" }, "21389": { "iconFile": "res:/UI/Asset/mannequin/outer/34353_female_Outer_JacketPrtF01_Types_JacketPrtF01_bloodraiders.png", "iconType": "png" }, "21390": { "iconFile": "res:/UI/Asset/mannequin/outer/34394_female_Outer_JacketPrtF01_Types_JacketPrtF01_orange.png", "iconType": "png" }, "21391": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34354_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_bloodraiders.png", "iconType": "png" }, "21392": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34355_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_sansha.png", "iconType": "png" }, "21393": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34356_male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_guristas.png", "iconType": "png" }, "21394": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34357_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_bloodraiders.png", "iconType": "png" }, "21395": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34358_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_sansha.png", "iconType": "png" }, "21396": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/34359_female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_guristas.png", "iconType": "png" }, "21397": { "iconFile": "res:/UI/Asset/mannequin/feet/34360_male_Feet_BootsPrtm01_Types_BootsPrtm01_bloodraiders.png", "iconType": "png" }, "21398": { "iconFile": "res:/UI/Asset/mannequin/feet/34361_male_Feet_BootsPrtm01_Types_BootsPrtm01_sansha.png", "iconType": "png" }, "21399": { "iconFile": "res:/UI/Asset/mannequin/feet/34362_male_Feet_BootsPrtm01_Types_BootsPrtm01_guristas.png", "iconType": "png" }, "21400": { "iconFile": "res:/UI/Asset/mannequin/feet/34363_female_Feet_BootsPrtF01_Types_BootsPrtF01_bloodraiders.png", "iconType": "png" }, "21401": { "iconFile": "res:/UI/Asset/mannequin/feet/34364_female_Feet_BootsPrtF01_Types_BootsPrtF01_sansha.png", "iconType": "png" }, "21402": { "iconFile": "res:/UI/Asset/mannequin/feet/34365_female_Feet_BootsPrtF01_Types_BootsPrtF01_guristas.png", "iconType": "png" }, "21403": { "iconFile": "res:/UI/Asset/mannequin/outer/34351_female_Outer_JacketPrtF01_Types_JacketPrtF01_guristas.png", "iconType": "png" }, "21404": { "iconFile": "res:/ui/texture/icons/117_64_2.png", "iconType": "" }, "21408": { "iconFile": "res:/ui/texture/icons/118_64_1.png" }, "21409": { "iconFile": "res:/ui/texture/icons/119_64_1.png" }, "21412": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34824_male_topMiddle_ShirtQM01_Types_ff2015m01.png", "iconType": "png" }, "21413": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34825_female_TopMiddle_ShirtQF01_Types_ff2015f01.png", "iconType": "png" }, "21414": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34824_male_topMiddle_ShirtQM01_Types_ff2015m01.png", "iconType": "png" }, "21415": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/34825_female_TopMiddle_ShirtQF01_Types_ff2015f01.png", "iconType": "png" }, "21417": { "iconFile": "res:/ui/texture/icons/99_64_10.png" }, "21418": { "iconFile": "res:/ui/texture/icons/99_64_11.png" }, "21419": { "iconFile": "res:/ui/texture/icons/99_64_12.png" }, "21420": { "iconFile": "res:/UI/Texture/Icons/skin-icon-16.png", "iconType": "png" }, "21421": { "iconFile": "res:/UI/Texture/Icons/118_64_7.png" }, "21424": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/35681_male_topMiddle_ShirtQM01_Types_soerfm02.png", "iconType": "png" }, "21425": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/35682_female_TopMiddle_ShirtQF01_Types_soerff02.png", "iconType": "png" }, "21426": { "iconFile": "res:/UI/Texture/Icons/remote_armor_repair.png" }, "21428": { "iconFile": "res:/UI/Texture/Icons/remote_hull_repairer.png" }, "21430": { "iconFile": "res:/UI/Texture/classes/Sov/stationServiceResearch.png", "iconType": "png" }, "21431": { "iconFile": "res:/UI/Texture/WindowIcons/fitting.png", "iconType": "png" }, "21432": { "iconFile": "res:/UI/Texture/WindowIcons/Reprocess.png", "iconType": "png" }, "21433": { "iconFile": "res:/UI/Texture/WindowIcons/Industry.png", "iconType": "png" }, "21434": { "iconFile": "res:/UI/Texture/WindowIcons/cloneBay.png", "iconType": "png" }, "21435": { "iconFile": "res:/UI/Texture/WindowIcons/repairshop.png", "iconType": "png" }, "21437": { "iconFile": "res:/UI/Texture/Icons/5_64_17.png" }, "21439": { "iconFile": "res:/UI/Texture/Icons/5_64_18.png" }, "21440": { "iconFile": "res:/UI/Texture/Icons/5_64_19.png" }, "21441": { "iconFile": "res:/UI/Texture/Icons/5_64_20.png" }, "21442": { "iconFile": "res:/UI/Texture/Icons/5_64_21.png" }, "21445": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36480_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_blueorange.png", "iconType": "png" }, "21446": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36481_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_redwhite.png", "iconType": "png" }, "21447": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36482_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_camo.png", "iconType": "png" }, "21448": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36483_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_cyan.png", "iconType": "png" }, "21449": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36484_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_oregreen.png", "iconType": "png" }, "21450": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36485_male_topMiddle_ShirtEngM01_Types_ShirtEngM01_oreorange.png", "iconType": "png" }, "21451": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36486_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_BlueOrange.png", "iconType": "png" }, "21452": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36487_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_RedWhite.png", "iconType": "png" }, "21453": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36488_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_Camo.png", "iconType": "png" }, "21454": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36489_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_Cyan.png", "iconType": "png" }, "21455": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36490_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_OreGreen.png", "iconType": "png" }, "21456": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/36491_female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_OreOrange.png", "iconType": "png" }, "21457": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36493_male_bottomOuter_PantsEngM01_Types_PantsEngM01_blueorange.png", "iconType": "png" }, "21458": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36494_male_bottomOuter_PantsEngM01_Types_PantsEngM01_redwhite.png", "iconType": "png" }, "21459": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36495_male_bottomOuter_PantsEngM01_Types_PantsEngM01_camo.png", "iconType": "png" }, "21460": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36496_male_bottomOuter_PantsEngM01_Types_PantsEngM01_cyan.png", "iconType": "png" }, "21461": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36497_male_bottomOuter_PantsEngM01_Types_PantsEngM01_oregreen.png", "iconType": "png" }, "21462": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36498_male_bottomOuter_PantsEngM01_Types_PantsEngM01_oreorange.png", "iconType": "png" }, "21463": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36499_female_bottomOuter_PantsEngF01_Types_PantsEngF01_BlueOrange.png", "iconType": "png" }, "21464": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36500_female_bottomOuter_PantsEngF01_Types_PantsEngF01_RedWhite.png", "iconType": "png" }, "21465": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36501_female_bottomOuter_PantsEngF01_Types_PantsEngF01_Camo.png", "iconType": "png" }, "21466": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36502_female_bottomOuter_PantsEngF01_Types_PantsEngF01_Cyan.png", "iconType": "png" }, "21467": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36503_female_bottomOuter_PantsEngF01_Types_PantsEngF01_OreGreen.png", "iconType": "png" }, "21468": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/36504_female_bottomOuter_PantsEngF01_Types_PantsEngF01_OreOrange.png", "iconType": "png" }, "21469": { "iconFile": "res:/UI/Asset/mannequin/feet/36505_male_Feet_ShoesEngM01_Types_ShoesEngM01_blueorange.png", "iconType": "png" }, "21470": { "iconFile": "res:/UI/Asset/mannequin/feet/36506_male_Feet_ShoesEngM01_Types_ShoesEngM01_redwhite.png", "iconType": "png" }, "21471": { "iconFile": "res:/UI/Asset/mannequin/feet/36507_male_Feet_ShoesEngM01_Types_ShoesEngM01_camo.png", "iconType": "png" }, "21472": { "iconFile": "res:/UI/Asset/mannequin/feet/36508_male_Feet_ShoesEngM01_Types_ShoesEngM01_cyan.png", "iconType": "png" }, "21473": { "iconFile": "res:/UI/Asset/mannequin/feet/36509_male_Feet_ShoesEngM01_Types_ShoesEngM01_oregreen.png", "iconType": "png" }, "21474": { "iconFile": "res:/UI/Asset/mannequin/feet/36510_male_Feet_ShoesEngM01_Types_ShoesEngM01_oreorange.png", "iconType": "png" }, "21475": { "iconFile": "res:/UI/Asset/mannequin/feet/36511_female_Feet_ShoesEngF01_Types_ShoesEngF01_BlueOrange.png", "iconType": "png" }, "21476": { "iconFile": "res:/UI/Asset/mannequin/feet/36512_female_Feet_ShoesEngF01_Types_ShoesEngF01_RedWhite.png", "iconType": "png" }, "21477": { "iconFile": "res:/UI/Asset/mannequin/feet/36513_female_Feet_ShoesEngF01_Types_ShoesEngF01_Camo.png", "iconType": "png" }, "21478": { "iconFile": "res:/UI/Asset/mannequin/feet/36514_female_Feet_ShoesEngF01_Types_ShoesEngF01_Cyan.png", "iconType": "png" }, "21479": { "iconFile": "res:/UI/Asset/mannequin/feet/36515_female_Feet_ShoesEngF01_Types_ShoesEngF01_OreGreen.png", "iconType": "png" }, "21480": { "iconFile": "res:/UI/Asset/mannequin/feet/36516_female_Feet_ShoesEngF01_Types_ShoesEngF01_OreOrange.png", "iconType": "png" }, "21481": { "iconFile": "res:/UI/Texture/Plex/plex_128_gradient_yellow.png" }, "21482": { "iconFile": "res:/ui/texture/icons/118_64_5.png" }, "21483": { "iconFile": "res:/ui/texture/icons/118_64_9.png" }, "21484": { "iconFile": "res:/ui/texture/icons/118_64_10.png" }, "21485": { "iconFile": "res:/ui/texture/icons/118_64_11.png" }, "21486": { "iconFile": "res:/ui/texture/icons/118_64_13.png" }, "21487": { "iconFile": "res:/ui/texture/icons/118_64_14.png" }, "21489": { "iconFile": "res:/ui/texture/icons/118_64_2.png" }, "21493": { "iconFile": "res:/UI/Asset/mannequin/outer/37600_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Black.png", "iconType": "png" }, "21494": { "iconFile": "res:/UI/Asset/mannequin/outer/37601_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Blue.png", "iconType": "png" }, "21495": { "iconFile": "res:/UI/Asset/mannequin/outer/37602_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Copper.png", "iconType": "png" }, "21496": { "iconFile": "res:/UI/Asset/mannequin/outer/37603_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_SOERed.png", "iconType": "png" }, "21497": { "iconFile": "res:/UI/Asset/mannequin/outer/37863_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_BlueWhite.png", "iconType": "png" }, "21498": { "iconFile": "res:/UI/Asset/mannequin/outer/37810_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Black.png", "iconType": "png" }, "21499": { "iconFile": "res:/UI/Asset/mannequin/outer/37811_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Copper.png", "iconType": "png" }, "21500": { "iconFile": "res:/UI/Asset/mannequin/outer/37815_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_SOERed.png", "iconType": "png" }, "21501": { "iconFile": "res:/UI/Asset/mannequin/outer/37818_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Blue.png", "iconType": "png" }, "21502": { "iconFile": "res:/UI/Asset/mannequin/outer/37864_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_BlueWhite.png", "iconType": "png" }, "21503": { "iconFile": "res:/UI/Asset/mannequin/outer/37816_female_Outer_JacketSLF_01_Types_JacketSLF_01_redcicles.png", "iconType": "png" }, "21504": { "iconFile": "res:/UI/Asset/mannequin/outer/37817_male_outer_JacketALM01_Types_JacketALM01_PurpleGold.png", "iconType": "png" }, "21505": { "iconFile": "res:/UI/Asset/mannequin/outer/37806_female_Outer_JacketFBR01_Types_JacketFBR01_concord.png", "iconType": "png" }, "21506": { "iconFile": "res:/UI/Asset/mannequin/outer/37807_male_outer_JacketCLM01_Types_JacketCLM01_Concord.png", "iconType": "png" }, "21507": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/37808_female_TopMiddle_ShirtQF01_Types_ShirtQF01_Concord.png", "iconType": "png" }, "21508": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/37809_male_topMiddle_ShirtQM01_Types_ShirtQM01_Concord.png", "iconType": "png" }, "21509": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/37865_female_TopMiddle_ShirtCF01_Types_ShirtF01_Serpentis.png", "iconType": "png" }, "21510": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/37866_male_topMiddle_ShirtCM01_Types_ShirtM01_Serpentis.png", "iconType": "png" }, "21512": { "iconFile": "res:/UI/Texture/classes/Fitting/stationServiceSlot.png", "iconType": "png" }, "21513": { "iconFile": "res:/ui/texture/icons/118_64_12.png" }, "21514": { "iconFile": "res:/UI/Asset/mannequin/outer/40522_male_outer_JacketMilM02_Types_JacketMilM02_upwell.png" }, "21515": { "iconFile": "res:/UI/Asset/mannequin/outer/40523_female_Outer_JacketMilF01_Types_JacketMilF01_upwell.png" }, "21517": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/40526_male_topMiddle_ShirtQM01_Types_shirtqm01_upwell.png" }, "21518": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/40527_female_TopMiddle_ShirtQF01_Types_shirtqf01_upwell.png" }, "21519": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/40524_male_bottomOuter_PantsMilM01_Types_PantsMilM01_upwell.png" }, "21520": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/40525_female_bottomOuter_PantsMilF01_Types_PantsMilF01_upwell.png" }, "21522": { "iconFile": "res:/UI/Asset/mannequin/outer/40457_female_Outer_LabCoatF01_Types_LabCoatF01_BlackRed.png" }, "21523": { "iconFile": "res:/UI/Asset/mannequin/outer/40458_female_Outer_LabCoatF01_Types_LabCoatF01_Cyan.png" }, "21524": { "iconFile": "res:/UI/Asset/mannequin/outer/40459_female_Outer_LabCoatF01_Types_LabCoatF01_Orange.png" }, "21525": { "iconFile": "res:/UI/Asset/mannequin/outer/40460_female_Outer_LabCoatF01_Types_LabCoatF01_Green.png" }, "21526": { "iconFile": "res:/UI/Asset/mannequin/outer/40461_male_outer_LabCoatM01_Types_LabCoatM01_BlackRed.png" }, "21527": { "iconFile": "res:/UI/Asset/mannequin/outer/40462_male_outer_LabCoatM01_Types_LabCoatM01_Cyan.png" }, "21528": { "iconFile": "res:/UI/Asset/mannequin/outer/40463_male_outer_LabCoatM01_Types_LabCoatM01_Green.png" }, "21529": { "iconFile": "res:/UI/Asset/mannequin/outer/40464_male_outer_LabCoatM01_Types_LabCoatM01_Orange.png" }, "21530": { "iconFile": "res:/UI/Texture/Icons/skillExtractor_64.png", "iconType": "png" }, "21531": { "iconFile": "res:/UI/Texture/Icons/skillInjector_64.png", "iconType": "png" }, "21532": { "iconFile": "res:/ui/texture/icons/118_64_3.png" }, "21533": { "iconFile": "res:/ui/texture/icons/118_64_4.png" }, "21534": { "iconFile": "res:/ui/texture/icons/118_64_8.png" }, "21560": { "iconFile": "res:/ui/texture/icons/123_64_5.png" }, "21561": { "iconFile": "res:/ui/texture/icons/123_64_6.png" }, "21562": { "iconFile": "res:/ui/texture/icons/123_64_7.png" }, "21563": { "iconFile": "res:/ui/texture/icons/123_64_8.png" }, "21564": { "iconFile": "res:/ui/texture/icons/123_64_9.png" }, "21565": { "iconFile": "res:/ui/texture/icons/123_64_10.png" }, "21566": { "iconFile": "res:/ui/texture/icons/123_64_11.png" }, "21567": { "iconFile": "res:/ui/texture/icons/124_64_5.png" }, "21568": { "iconFile": "res:/ui/texture/icons/124_64_6.png" }, "21569": { "iconFile": "res:/ui/texture/icons/124_64_7.png" }, "21570": { "iconFile": "res:/ui/texture/icons/124_64_9.png" }, "21571": { "iconFile": "res:/ui/texture/icons/124_64_10.png" }, "21572": { "iconFile": "res:/ui/texture/icons/124_64_11.png" }, "21573": { "iconFile": "res:/ui/texture/icons/124_64_13.png" }, "21574": { "iconFile": "res:/ui/texture/icons/124_64_14.png" }, "21575": { "iconFile": "res:/ui/texture/icons/124_64_15.png" }, "21578": { "iconFile": "res:/ui/texture/icons/1337_64_23.png" }, "21579": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41049_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V0_.png", "iconType": "png" }, "21581": { "iconFile": "res:/UI/Texture/Icons/125_64_1.png" }, "21582": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41036_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V2_.png", "iconType": "png" }, "21583": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41050_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V4_.png", "iconType": "png" }, "21584": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41051_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V3_.png", "iconType": "png" }, "21585": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41047_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V1_.png", "iconType": "png" }, "21586": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41052_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V1_.png", "iconType": "png" }, "21587": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41053_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V5_.png", "iconType": "png" }, "21588": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41046_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V5_.png", "iconType": "png" }, "21589": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41043_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V4_.png", "iconType": "png" }, "21590": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41044_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V3_.png", "iconType": "png" }, "21591": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41048_female_Makeup_Augmentations_Face_01_Types_Face_01_F_V2_.png", "iconType": "png" }, "21592": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/41045_male_Makeup_Augmentations_Face_01_Types_Face_01_M_V0_.png", "iconType": "png" }, "21593": { "iconFile": "res:/UI/Texture/Icons/126_64_1.png" }, "21594": { "iconFile": "res:/ui/texture/icons/127_64_9.png" }, "21595": { "iconFile": "res:/ui/texture/icons/127_64_2.png" }, "21596": { "iconFile": "res:/ui/texture/icons/127_64_1.png" }, "21597": { "iconFile": "res:/ui/texture/icons/127_64_3.png" }, "21598": { "iconFile": "res:/ui/texture/icons/127_64_4.png" }, "21599": { "iconFile": "res:/ui/texture/icons/127_64_5.png" }, "21600": { "iconFile": "res:/ui/texture/icons/127_64_6.png" }, "21601": { "iconFile": "res:/ui/texture/icons/127_64_10.png" }, "21602": { "iconFile": "res:/ui/texture/icons/127_64_7.png" }, "21603": { "iconFile": "res:/UI/Texture/Icons/Modules/emergencyHullEnergizer.png" }, "21604": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorECM.png" }, "21605": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorEnergyNeutralization.png" }, "21606": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorGuidanceDisruption.png" }, "21607": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorSensorDampening.png" }, "21608": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorStasisWebification.png" }, "21609": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorTargetIllumination.png" }, "21610": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorTrackingDisruption.png" }, "21611": { "iconFile": "res:/UI/Texture/Icons/Modules/burstProjectorWarpDisruption.png" }, "21613": { "iconFile": "res:/ui/texture/icons/4_64_9.png" }, "21614": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/41575_female_Accessories_Glasses_Glasses_Citadel_F01_Types_GlassesCitadelF01_black.png" }, "21615": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/41576_male_Accessories_Glasses_Glasses_Citadel_M01_Types_GlassesCitadelM01_black.png" }, "21617": { "iconFile": "res:/UI/Texture/Icons/Modules/emergencyHullEnergizer.png" }, "21618": { "iconFile": "res:/UI/Texture/Icons/Modules/multiUseAnalyzer_64.png" }, "21620": { "iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerBronze_64.png" }, "21621": { "iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerSilver_64.png" }, "21622": { "iconFile": "res:/UI/Texture/Icons/Inventory/serpentisContainerGold_64.png" }, "21624": { "iconFile": "res:/UI/Asset/mannequin/hair/42698_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01B.png" }, "21626": { "iconFile": "res:/UI/Asset/mannequin/hair/42699_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01B.png" }, "21627": { "iconFile": "res:/UI/Asset/mannequin/hair/42708_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_BloodraidersM01.png" }, "21628": { "iconFile": "res:/UI/Asset/mannequin/hair/42709_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GallenteF01.png" }, "21629": { "iconFile": "res:/UI/Asset/mannequin/hair/42710_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Gallente.png" }, "21630": { "iconFile": "res:/UI/Asset/mannequin/hair/42711_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Green.png" }, "21631": { "iconFile": "res:/UI/Asset/mannequin/hair/42712_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_MinmatarM01.png" }, "21632": { "iconFile": "res:/UI/Asset/mannequin/hair/42713_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Orange.png" }, "21633": { "iconFile": "res:/UI/Asset/mannequin/hair/42714_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_WhiteBlack.png" }, "21634": { "iconFile": "res:/UI/Asset/mannequin/hair/42715_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Minmatar.png" }, "21635": { "iconFile": "res:/UI/Asset/mannequin/hair/42716_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_WhiteBlack.png" }, "21636": { "iconFile": "res:/UI/Asset/mannequin/hair/42717_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasF01.png" }, "21637": { "iconFile": "res:/UI/Asset/mannequin/hair/42718_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Blood.png" }, "21638": { "iconFile": "res:/UI/Asset/mannequin/hair/42719_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Concord.png" }, "21640": { "iconFile": "res:/UI/Asset/mannequin/hair/42720_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Caldari.png" }, "21641": { "iconFile": "res:/UI/Asset/mannequin/hair/42721_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasM01.png" }, "21642": { "iconFile": "res:/UI/Asset/mannequin/hair/42722_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Guristas.png" }, "21643": { "iconFile": "res:/UI/Asset/mannequin/hair/42723_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Black.png" }, "21644": { "iconFile": "res:/UI/Asset/mannequin/hair/42724_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_ConcordM01.png" }, "21645": { "iconFile": "res:/UI/Asset/mannequin/hair/42725_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Amarr.png" }, "21646": { "iconFile": "res:/UI/Asset/mannequin/hair/42726_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Blood.png" }, "21647": { "iconFile": "res:/UI/Asset/mannequin/hair/42727_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Green.png" }, "21648": { "iconFile": "res:/UI/Asset/mannequin/hair/42728_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Amarr.png" }, "21649": { "iconFile": "res:/UI/Asset/mannequin/hair/42729_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Camo.png" }, "21650": { "iconFile": "res:/UI/Asset/mannequin/hair/42730_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Minmatar.png" }, "21651": { "iconFile": "res:/UI/Asset/mannequin/hair/42731_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Caldari.png" }, "21652": { "iconFile": "res:/UI/Asset/mannequin/hair/42732_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Camo.png" }, "21654": { "iconFile": "res:/UI/Asset/mannequin/hair/42733_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_BloodraidersF01.png" }, "21655": { "iconFile": "res:/UI/Asset/mannequin/hair/42734_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Black.png" }, "21656": { "iconFile": "res:/UI/Asset/mannequin/hair/42735_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Orange.png" }, "21657": { "iconFile": "res:/UI/Asset/mannequin/hair/42736_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_CaldariM01.png" }, "21658": { "iconFile": "res:/UI/Asset/mannequin/hair/42737_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_ConcordF01.png" }, "21659": { "iconFile": "res:/UI/Asset/mannequin/hair/42738_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_MinmatarF01.png" }, "21660": { "iconFile": "res:/UI/Asset/mannequin/hair/42739_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GallenteM01.png" }, "21661": { "iconFile": "res:/UI/Asset/mannequin/hair/42740_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_CaldariF01.png" }, "21662": { "iconFile": "res:/UI/Asset/mannequin/hair/42741_male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_AmarrM01.png" }, "21663": { "iconFile": "res:/UI/Asset/mannequin/hair/42742_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Concord.png" }, "21664": { "iconFile": "res:/UI/Asset/mannequin/hair/42743_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Guristas.png" }, "21665": { "iconFile": "res:/UI/Asset/mannequin/hair/42744_female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_AmarrF01.png" }, "21666": { "iconFile": "res:/UI/Asset/mannequin/hair/42745_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Gallente.png" }, "21667": { "iconFile": "res:/UI/Asset/mannequin/topouter/42707_female_TopOuter_ShirtMilF01_Types_ShirtMilF01_bloodraiders.png" }, "21668": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/42700_female_TopMiddle_ShirtQF01_Types_ShirtBloodraidersF01.png" }, "21669": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/42704_male_topMiddle_ShirtQM01_Types_ShirtBloodraidersM01.png" }, "21670": { "iconFile": "res:/UI/Asset/mannequin/outer/42702_male_outer_JacketMFBR01_Types_JacketMFBR02_Bloodraiders.png" }, "21671": { "iconFile": "res:/UI/Asset/mannequin/outer/42703_female_Outer_JacketFBR01_Types_JacketFBR02_bloodraiders.png" }, "21672": { "iconFile": "res:/UI/Asset/mannequin/outer/42705_male_outer_JacketPrtm01_Types_JacketPrtm01_bloodraiders_spec.png" }, "21673": { "iconFile": "res:/UI/Asset/mannequin/outer/42706_female_Outer_JacketPrtF01_Types_JacketPrtF01_bloodraiders_spec.png" }, "21674": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/42701_female_bottomOuter_PantsMilF01_Types_PantsMilF01_bloodraiders.png" }, "21675": { "iconFile": "res:/ui/texture/icons/cmd_brst_info_ph.png" }, "21676": { "iconFile": "res:/ui/texture/icons/cmd_brst_skrmsh_ph.png" }, "21677": { "iconFile": "res:/ui/texture/icons/cmd_brst_mine_ph.png" }, "21678": { "iconFile": "res:/ui/texture/icons/cmd_brst_armor_ph.png" }, "21679": { "iconFile": "res:/ui/texture/icons/cmd_brst_shield_ph.png" }, "21680": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/42905_female_Accessories_Glasses_Goggles_01_Types_goggles_01_orange.png" }, "21681": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/42906_male_Accessories_Glasses_Goggles_01_Types_goggles_01_orange.png" }, "21683": { "iconFile": "res:/UI/Texture/Icons/Modules/titanGeneratorAmarr.png" }, "21684": { "iconFile": "res:/UI/Texture/Icons/Modules/titanGeneratorCaldari.png" }, "21685": { "iconFile": "res:/UI/Texture/Icons/Modules/titanGeneratorGallente.png" }, "21686": { "iconFile": "res:/UI/Texture/Icons/Modules/titanGeneratorMinmatar.png" }, "21687": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ArmorBase.png" }, "21688": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ArmorBuffer.png" }, "21689": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ArmorRepair.png" }, "21690": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ArmorResists.png" }, "21691": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_InfoBase.png" }, "21692": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_InfoEwar.png" }, "21693": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_InfoSensors.png" }, "21694": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_InfoTargeting.png" }, "21695": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_MiningBase.png" }, "21696": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_MiningCrystal.png" }, "21698": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_MiningCycle.png" }, "21699": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_MiningRange.png" }, "21700": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ShieldBase.png" }, "21701": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ShieldBuffer.png" }, "21702": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ShieldRepair.png" }, "21703": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ShieldResists.png" }, "21704": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishBase.png" }, "21705": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishSignature.png" }, "21706": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishSpeed.png" }, "21707": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_SkirmishWeb.png" }, "21708": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorBuffer.png" }, "21709": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorRepair.png" }, "21710": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ArmorResists.png" }, "21711": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_Base.png" }, "21712": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoEwar.png" }, "21713": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoSensors.png" }, "21714": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_InfoTargeting.png" }, "21715": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningCrystal.png" }, "21716": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningCycle.png" }, "21717": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_MiningRange.png" }, "21718": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldBuffer.png" }, "21719": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldRepair.png" }, "21720": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_ShieldResists.png" }, "21721": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishSignature.png" }, "21722": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishSpeed.png" }, "21723": { "iconFile": "res:/UI/Texture/Shared/Effects/fleetBoostEffect_SkirmishWeb.png" }, "21724": { "iconFile": "res:/UI/Texture/Icons/Modules/titanGeneratorMultiple.png" }, "21725": { "iconFile": "res:/ui/texture/icons/inventory/empireCrate.png" }, "21729": { "iconFile": "res:/ui/texture/icons/127_64_8.png" }, "21730": { "iconFile": "res:/UI/Texture/Icons/Modules/panicModule.png" }, "21731": { "iconFile": "res:/UI/texture/icons/inventory/skillInjectorMini_64.png", "iconType": "png" }, "21732": { "iconFile": "res:/ui/texture/icons/50_64_11.png" }, "21734": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/44121_female_bottomOuter_PantsMilF01_Types_PantsMilF01_C16.png", "iconType": "png" }, "21735": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/44124_male_bottomOuter_PantsMilM01_Types_PantsMilM01_C16.png", "iconType": "png" }, "21736": { "iconFile": "res:/UI/Asset/mannequin/hair/44122_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_C16.png", "iconType": "png" }, "21738": { "iconFile": "res:/UI/Asset/mannequin/hair/44125_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_C16.png", "iconType": "png" }, "21739": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/44120_female_TopMiddle_TshirtF01_Types_TshirtF01_C16.png", "iconType": "png" }, "21740": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/44123_male_topMiddle_TshirtM01_Types_TshirtM01_C16.png", "iconType": "png" }, "21741": { "iconFile": "res:/UI/Texture/Icons/Inventory/starterPack.png" }, "21742": { "iconFile": "res:/UI/Texture/Icons/Inventory/holidayCrate.png" }, "21743": { "iconFile": "res:/ui/texture/icons/118_64_15.png" }, "21744": { "iconFile": "res:/UI/Asset/mannequin/outer/45514_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_SOE.png", "iconType": "png" }, "21745": { "iconFile": "res:/UI/Asset/mannequin/outer/45515_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Caldari.png", "iconType": "png" }, "21746": { "iconFile": "res:/UI/Asset/mannequin/outer/45516_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Minmatar.png", "iconType": "png" }, "21747": { "iconFile": "res:/UI/Asset/mannequin/outer/45517_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Gallente.png", "iconType": "png" }, "21748": { "iconFile": "res:/UI/Asset/mannequin/outer/45518_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Amarr.png", "iconType": "png" }, "21749": { "iconFile": "res:/UI/Asset/mannequin/outer/45519_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_CaldariOrange.png", "iconType": "png" }, "21750": { "iconFile": "res:/UI/Asset/mannequin/outer/45520_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_ORE.png", "iconType": "png" }, "21751": { "iconFile": "res:/UI/Asset/mannequin/outer/45521_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Gallente.png", "iconType": "png" }, "21752": { "iconFile": "res:/UI/Asset/mannequin/outer/45522_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_ORE.png", "iconType": "png" }, "21753": { "iconFile": "res:/UI/Asset/mannequin/outer/45523_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_SOE.png", "iconType": "png" }, "21754": { "iconFile": "res:/UI/Asset/mannequin/outer/45524_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Caldari.png", "iconType": "png" }, "21755": { "iconFile": "res:/UI/Asset/mannequin/outer/45525_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Minmatar.png", "iconType": "png" }, "21756": { "iconFile": "res:/UI/Asset/mannequin/outer/45526_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Amarr.png", "iconType": "png" }, "21757": { "iconFile": "res:/UI/Asset/mannequin/outer/45527_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_CaldariOrange.png", "iconType": "png" }, "21760": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/ProjectDiscoveryPlaceholder.png" }, "21763": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/45734_female_TopMiddle_TshirtF01_Types_TshirtF01_Exo.png", "iconType": "png" }, "21764": { "iconFile": "res:/UI/Asset/mannequin/outer/45735_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Exo.png", "iconType": "png" }, "21765": { "iconFile": "res:/UI/Asset/mannequin/outer/45737_female_Outer_LabCoatF01_Types_LabCoatF01_Exo.png", "iconType": "png" }, "21766": { "iconFile": "res:/UI/Asset/mannequin/outer/45738_female_Outer_JacketMilF01_Types_JacketMilF01_exo.png", "iconType": "png" }, "21767": { "iconFile": "res:/UI/Asset/mannequin/hair/45739_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Exo.png", "iconType": "png" }, "21768": { "iconFile": "res:/UI/Asset/mannequin/hair/45740_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Exo.png", "iconType": "png" }, "21769": { "iconFile": "res:/UI/Asset/mannequin/outer/45741_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Exo.png", "iconType": "png" }, "21770": { "iconFile": "res:/UI/Asset/mannequin/outer/45742_male_outer_JacketMilM02_Types_JacketMilM02_exo.png", "iconType": "png" }, "21771": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/45743_male_TopMiddle_TshirtM01_Types_TshirtM01_Exo.png", "iconType": "png", "obsolete": 0 }, "21772": { "iconFile": "res:/UI/Asset/mannequin/outer/45744_male_outer_LabCoatM01_Types_LabCoatM01_Exo.png", "iconType": "png" }, "21773": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/45745_male_Accessories_Glasses_Glasses_Exo_M01_Types_Glasses_Exo_M01_clear.png", "iconType": "png" }, "21774": { "iconFile": "res:/UI/Texture/Icons/128_64_1.png", "iconType": "png" }, "21775": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/45736_female_Accessories_Glasses_Glasses_Exo_F01_Types_Glasses_Exo_F01_clear.png", "iconType": "png" }, "21778": { "iconFile": "res:/UI/Asset/mannequin/outer/46038_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_IGC.png", "iconType": "png" }, "21779": { "iconFile": "res:/UI/Asset/mannequin/outer/46039_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_IGC.png", "iconType": "png" }, "21780": { "iconFile": "res:/UI/Asset/mannequin/outer/46274_male_outer_JacketPrtm01_Types_JacketPrtm01_valkyrie.png", "iconType": "png" }, "21781": { "iconFile": "res:/UI/Asset/mannequin/outer/46273_female_Outer_JacketPrtF01_Types_JacketPrtF01_valkyrie.png", "iconType": "png" }, "21783": { "iconFile": "res:/ui/texture/icons/reaction.png" }, "21784": { "iconFile": "res:/UI/Texture/Icons/Inventory/dataCore.png", "iconType": "png" }, "21785": { "iconFile": "res:/UI/Texture/Icons/Inventory/relicVault.png", "iconType": "png" }, "21787": { "iconFile": "res:/UI/Texture/Icons/Modules/refinery_ChunkStabilization.png" }, "21788": { "iconFile": "res:/UI/Texture/Icons/Modules/refinery_MiningYield.png" }, "21789": { "iconFile": "res:/UI/Texture/Icons/Modules/refinery_BoosterReactions.png" }, "21790": { "iconFile": "res:/UI/Texture/Icons/Modules/refinery_HybridReactions.png" }, "21791": { "iconFile": "res:/UI/Texture/Icons/Modules/refinery_T2Reactions.png" }, "21792": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_R4.png" }, "21793": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_R8.png" }, "21794": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_R16.png" }, "21795": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_R32.png" }, "21796": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_R64.png" }, "21797": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR4.png" }, "21798": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR8.png" }, "21799": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR16.png" }, "21800": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR32.png" }, "21801": { "iconFile": "res:/UI/Texture/Icons/Inventory/moonAsteroid_JackpotR64.png" }, "21802": { "iconFile": "res:/ui/texture/corps/federalStrategicMateriel.png" }, "21803": { "iconFile": "res:/ui/texture/corps/imperialWarReserves.png" }, "21804": { "iconFile": "res:/ui/texture/corps/republicFleetOrdnance.png" }, "21805": { "iconFile": "res:/ui/texture/corps/stateMilitaryStockpile.png" }, "21807": { "iconFile": "res:/UI/Asset/mannequin/outer/46658_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente_RW.png", "iconType": "png" }, "21808": { "iconFile": "res:/UI/Asset/mannequin/outer/46659_male_outer_JacketCMM01_Types_JacketCMM01_Caldari.png", "iconType": "png" }, "21809": { "iconFile": "res:/UI/Asset/mannequin/outer/46660_female_Outer_JacketAGF01_Types_JacketAGF01_Gallente.png", "iconType": "png" }, "21810": { "iconFile": "res:/UI/Asset/mannequin/outer/46661_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar_RW.png", "iconType": "png" }, "21811": { "iconFile": "res:/UI/Asset/mannequin/outer/46662_male_outer_JacketAGM01_Types_JacketAGM01_Amarr.png", "iconType": "png" }, "21812": { "iconFile": "res:/UI/Asset/mannequin/outer/46663_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr.png", "iconType": "png" }, "21813": { "iconFile": "res:/UI/Asset/mannequin/outer/46664_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar.png", "iconType": "png" }, "21814": { "iconFile": "res:/UI/Asset/mannequin/outer/46665_male_outer_JacketAGM01_Types_JacketAGM01_Gallente.png", "iconType": "png" }, "21815": { "iconFile": "res:/UI/Asset/mannequin/outer/46666_male_outer_JacketAGM01_Types_JacketAGM01_Amarr_RW.png", "iconType": "png" }, "21816": { "iconFile": "res:/UI/Asset/mannequin/outer/46667_male_outer_JacketAGM01_Types_JacketAGM01_Gallente_RW.png", "iconType": "png" }, "21817": { "iconFile": "res:/UI/Asset/mannequin/outer/46668_female_Outer_JacketAGF01_Types_JacketAGF01_Amarr_RW.png", "iconType": "png" }, "21818": { "iconFile": "res:/UI/Asset/mannequin/outer/46669_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari.png", "iconType": "png" }, "21819": { "iconFile": "res:/UI/Asset/mannequin/outer/46674_male_outer_JacketCMM01_Types_JacketCMM01_Minmatar_RW.png", "iconType": "png", "obsolete": 0 }, "21820": { "iconFile": "res:/UI/Asset/mannequin/outer/46671_female_Outer_JacketCMF01_Types_JacketCMF01_Caldari_RW.png", "iconType": "png" }, "21821": { "iconFile": "res:/UI/Asset/mannequin/outer/46672_male_outer_JacketCMM01_Types_JacketCMM01_Caldari_RW.png", "iconType": "png" }, "21822": { "iconFile": "res:/UI/Asset/mannequin/outer/46673_female_Outer_JacketCMF01_Types_JacketCMF01_Minmatar.png", "iconType": "png" }, "21823": { "iconFile": "res:/UI/Texture/Icons/Inventory/rwAsteroid.png" }, "21829": { "iconFile": "res:/ui/texture/icons/Inventory/biochemMaterials.png" }, "21830": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateAmarr.png" }, "21831": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateCaldari.png" }, "21832": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateGallente.png" }, "21833": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateMinmatar.png" }, "21835": { "iconFile": "res:/UI/Texture/Icons/Inventory/skillInjectorAlpha.png" }, "21836": { "iconFile": "res:/UI/Asset/mannequin/outer/47031_female_Outer_JacketSLF_01_Types_JacketSLF_01_JinMeiOpera.png", "iconType": "png" }, "21837": { "iconFile": "res:/UI/Asset/mannequin/outer/47032_male_outer_JacketALM01_Types_JacketALM01_JinMeiOpera.png", "iconType": "png" }, "21839": { "iconFile": "res:/UI/Texture/Icons/Inventory/boosterAgencyDamage.png" }, "21840": { "iconFile": "res:/UI/Texture/Icons/Inventory/boosterAgencySpeed.png" }, "21841": { "iconFile": "res:/UI/Texture/Icons/Inventory/boosterAgencyTank.png" }, "21843": { "iconFile": "res:/ui/texture/icons/25_64_16.png" }, "21844": { "iconFile": "res:/ui/texture/icons/25_64_3.png" }, "21845": { "iconFile": "res:/UI/Asset/mannequin/hair/47191_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_XV_BlackOrange.png", "iconType": "png" }, "21846": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47192_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_StarOrange.png", "iconType": "png" }, "21847": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47182_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_Amarr.png", "iconType": "png" }, "21848": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47183_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_Minmatar.png", "iconType": "png" }, "21849": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47184_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_Gallente.png", "iconType": "png" }, "21850": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47185_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_Gallente.png", "iconType": "png" }, "21851": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47186_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_Amarr.png", "iconType": "png" }, "21853": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47188_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_Caldari.png", "iconType": "png" }, "21854": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47189_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_Caldari.png", "iconType": "png" }, "21855": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47190_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_StarOrange.png", "iconType": "png" }, "21857": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47187_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_Minmatar.png", "iconType": "png" }, "21858": { "iconFile": "res:/UI/Asset/mannequin/hair/47193_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_XV_BlackOrange.png", "iconType": "png" }, "21860": { "iconFile": "res:/UI/Texture/Icons/Modules/AssaultDamageControl.png" }, "21872": { "iconFile": "res:/UI/Asset/mannequin/outer/47287_female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_SWAT.png", "iconType": "png" }, "21873": { "iconFile": "res:/UI/Asset/mannequin/outer/47286_male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_SWAT.png", "iconType": "png" }, "21877": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/tetherDisabled.png" }, "21878": { "iconFile": "res:/UI/Asset/mannequin/hair/47477_female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_XV_FF.png", "iconType": "png" }, "21879": { "iconFile": "res:/UI/Asset/mannequin/hair/47478_male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_XV_FF.png", "iconType": "png" }, "21880": { "iconFile": "res:/UI/Asset/mannequin/outer/47475_female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_XV.png", "iconType": "png" }, "21881": { "iconFile": "res:/UI/Asset/mannequin/outer/47476_male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_XV.png", "iconType": "png" }, "21882": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47479_female_TopMiddle_TshirtF01_Types_TshirtF01_XV_FF.png", "iconType": "png" }, "21883": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/47480_male_TopMiddle_TshirtM01_Types_TshirtM01_XV_FF.png", "iconType": "png" }, "21888": { "iconFile": "res:/ui/texture/icons/Modules/mutatorDecayed.png" }, "21890": { "iconFile": "res:/ui/texture/icons/Modules/mutatorGravid.png" }, "21891": { "iconFile": "res:/ui/texture/icons/Modules/mutatorUnstable.png" }, "21892": { "iconFile": "res:/ui/texture/icons/Modules/abyssalAfterburner.png" }, "21893": { "iconFile": "res:/ui/texture/icons/Modules/abyssalMWD.png" }, "21894": { "iconFile": "res:/ui/texture/icons/Modules/abyssalPlate.png" }, "21895": { "iconFile": "res:/ui/texture/icons/Modules/abyssalRepairer.png" }, "21896": { "iconFile": "res:/ui/texture/icons/Modules/abyssalNeut.png" }, "21897": { "iconFile": "res:/ui/texture/icons/Modules/abyssalNosferatu.png" }, "21898": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateCapsuleerDay.png" }, "21899": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateChristmas.png" }, "21900": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateCrimsonHarvest.png" }, "21901": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateGuardiansGala.png" }, "21902": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateNewYears.png" }, "21903": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/weatherLightning.png" }, "21904": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/weatherXenonGas.png" }, "21905": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/weatherCaustic.png" }, "21906": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/weatherDarkness.png" }, "21907": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/weatherInfernal.png" }, "21909": { "iconFile": "res:/ui/texture/icons/Modules/abyssalPlate.png" }, "21910": { "iconFile": "res:/ui/texture/icons/Modules/abyssalStasisWebifier.png" }, "21911": { "iconFile": "res:/ui/texture/icons/Modules/abyssalWarpScrambler.png" }, "21912": { "iconFile": "res:/ui/texture/icons/Modules/abyssalWarpDisruptor.png" }, "21913": { "iconFile": "res:/ui/texture/icons/Modules/abyssalShieldBooster.png" }, "21914": { "iconFile": "res:/ui/texture/icons/Modules/abyssalShieldExtender.png" }, "21916": { "iconFile": "res:/ui/texture/icons/ammo/disintegratorChargeGluon.png" }, "21917": { "iconFile": "res:/ui/texture/icons/ammo/disintegratorChargeLepton.png" }, "21918": { "iconFile": "res:/ui/texture/icons/ammo/disintegratorChargeQuark.png" }, "21919": { "iconFile": "res:/ui/texture/icons/ammo/disintegratorChargeMystic.png" }, "21920": { "iconFile": "res:/ui/texture/icons/ammo/disintegratorChargeOccult.png" }, "21921": { "iconFile": "res:/ui/texture/icons/Modules/Disintegrator_L.png", "iconType": "png" }, "21922": { "iconFile": "res:/ui/texture/icons/Modules/Disintegrator_M.png", "iconType": "png" }, "21923": { "iconFile": "res:/ui/texture/icons/Modules/Disintegrator_S.png", "iconType": "png" }, "21924": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL1.png" }, "21925": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL2.png" }, "21926": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL3.png" }, "21927": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL4.png" }, "21928": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL5.png" }, "21931": { "iconFile": "res:/UI/Asset/mannequin/outer/48081_female_Outer_VanguardF01_Types_VanguardF01_TG.png", "iconType": "png" }, "21932": { "iconFile": "res:/UI/Asset/mannequin/outer/48082_male_outer_VanguardM01_Types_VanguardM01_TG.png", "iconType": "png" }, "21933": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/48083_male_bottomOuter_PantsEngM01_Types_PantsEngM01_silver.png", "iconType": "png" }, "21934": { "iconFile": "res:/ui/texture/icons/86_64_2.png" }, "21936": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/bioluminescence.png" }, "21937": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/causticCloud.png" }, "21938": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/filamentCloud.png" }, "21939": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/pointDefenseBattery.png" }, "21941": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/pulseBattery.png" }, "21980": { "iconFile": "res:/UI/Texture/Icons/Inventory/crystallineIsogen10.png" }, "21981": { "iconFile": "res:/UI/Texture/Icons/Inventory/mutaPlasmidResidue.png" }, "21982": { "iconFile": "res:/UI/Texture/Icons/Inventory/triglavianSurveyData.png" }, "21983": { "iconFile": "res:/UI/Texture/Icons/Inventory/zeroPointCondensate.png" }, "21984": { "iconFile": "res:/ui/texture/icons/modules/mutaDecayedAfterburner.png" }, "21985": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedExtender.png" }, "21986": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedMWD.png" }, "21987": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedNeut.png" }, "21988": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedNosferatu.png" }, "21989": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedPlate.png" }, "21990": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedRepairer.png" }, "21991": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedShieldBooster.png" }, "21992": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedStasisWebifier.png" }, "21993": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedWarpDisruptor.png" }, "21994": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedWarpScrambler.png" }, "21995": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidAfterburner.png" }, "21996": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidExtender.png" }, "21997": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidMWD.png" }, "21998": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidNeut.png" }, "21999": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidNosferatu.png" }, "22000": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidPlate.png" }, "22001": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidRepairer.png" }, "22002": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidShieldBooster.png" }, "22003": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidStasisWebifier.png" }, "22004": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidWarpDisruptor.png" }, "22005": { "iconFile": "res:/ui/texture/icons/modules/mutaGravidWarpScrambler.png" }, "22006": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableAfterburner.png" }, "22007": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableExtender.png" }, "22008": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableMWD.png" }, "22009": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableNeut.png" }, "22010": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableNosferatu.png" }, "22011": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstablePlate.png" }, "22012": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableRepairer.png" }, "22013": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableShieldBooster.png" }, "22014": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableStasisWebifier.png" }, "22016": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableWarpDisruptor.png" }, "22018": { "iconFile": "res:/ui/texture/icons/modules/mutaUnstableWarpScrambler.png" }, "22020": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/boundary.png" }, "22021": { "iconFile": "res:/UI/Asset/mannequin/outer/48386_female_Outer_VanguardF01_Types_VanguardF01_RED.png", "iconType": "png" }, "22022": { "iconFile": "res:/UI/Asset/mannequin/outer/48380_female_Outer_VanguardF01_Types_VanguardF01_GREEN.png", "iconType": "png" }, "22023": { "iconFile": "res:/UI/Asset/mannequin/outer/48381_female_Outer_VanguardF01_Types_VanguardF01_GOLD.png", "iconType": "png" }, "22024": { "iconFile": "res:/UI/Asset/mannequin/outer/48382_female_Outer_VanguardF01_Types_VanguardF01_BLUE.png", "iconType": "png" }, "22025": { "iconFile": "res:/UI/Asset/mannequin/outer/48383_male_outer_VanguardM01_Types_VanguardM01_GREEN.png", "iconType": "png" }, "22026": { "iconFile": "res:/UI/Asset/mannequin/outer/48384_male_outer_VanguardM01_Types_VanguardM01_GOLD.png", "iconType": "png" }, "22027": { "iconFile": "res:/UI/Asset/mannequin/outer/48385_male_outer_VanguardM01_Types_VanguardM01_BLUE.png", "iconType": "png" }, "22028": { "iconFile": "res:/UI/Asset/mannequin/outer/48387_male_outer_VanguardM01_Types_VanguardM01_RED.png", "iconType": "png" }, "22029": { "iconFile": "res:/ui/texture/icons/Modules/mutaDecayedCapBattery.png" }, "22030": { "iconFile": "res:/ui/texture/icons/Modules/mutaGravidCapBattery.png" }, "22031": { "iconFile": "res:/ui/texture/icons/Modules/mutaUnstableCapBattery.png" }, "22034": { "iconFile": "res:/ui/texture/icons/25_64_13.png" }, "22036": { "iconFile": "res:/ui/texture/icons/medicinal_herbs.png" }, "22037": { "iconFile": "res:/ui/texture/icons/soda_pop_brown.png" }, "22038": { "iconFile": "res:/ui/texture/icons/soda_pop_green.png" }, "22039": { "iconFile": "res:/ui/texture/icons/soft_drink_bottles.png" }, "22040": { "iconFile": "res:/ui/texture/icons/tea_service.png" }, "22041": { "iconFile": "res:/ui/texture/icons/4_64_4.png" }, "22042": { "iconFile": "res:/ui/texture/icons/1337_64_15.png" }, "22043": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49668_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V0.png", "iconType": "png" }, "22044": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49669_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V1.png", "iconType": "png" }, "22045": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49670_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V2.png", "iconType": "png" }, "22046": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49671_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V3.png", "iconType": "png" }, "22047": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49672_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V4.png", "iconType": "png" }, "22048": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49673_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V5.png", "iconType": "png" }, "22049": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49674_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V6.png", "iconType": "png" }, "22050": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49675_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V7.png", "iconType": "png" }, "22051": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49676_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V8.png", "iconType": "png" }, "22052": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49677_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V0.png", "iconType": "png" }, "22053": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49678_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V1.png", "iconType": "png" }, "22054": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49679_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V2.png", "iconType": "png" }, "22055": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49680_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V3.png", "iconType": "png" }, "22056": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49681_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V4.png", "iconType": "png" }, "22057": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49682_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V5.png", "iconType": "png" }, "22058": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49683_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V6.png", "iconType": "png" }, "22059": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49684_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V7.png", "iconType": "png" }, "22060": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49685_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V8.png", "iconType": "png" }, "22061": { "iconFile": "res:/UI/Texture/Icons/Inventory/FacialAugmentOrange.png", "iconType": "png" }, "22062": { "iconFile": "res:/UI/Texture/Icons/Inventory/FacialAugmentBlue.png", "iconType": "png" }, "22063": { "iconFile": "res:/UI/Texture/Icons/Inventory/FacialAugmentsPackBlue.png", "iconType": "png" }, "22064": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaDecayedGyro.png", "iconType": "png" }, "22065": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaGravidGyro.png", "iconType": "png" }, "22066": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaUnstableGyro.png", "iconType": "png" }, "22067": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaUnstableBallisticControl.png", "iconType": "png" }, "22068": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaGravidBallisticControl.png", "iconType": "png" }, "22069": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaDecayedBallisticControl.png", "iconType": "png" }, "22070": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaDecayedDroneDamage.png", "iconType": "png" }, "22071": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaGravidDroneDamage.png", "iconType": "png" }, "22072": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaUnstableDroneDamage.png", "iconType": "png" }, "22073": { "iconFile": "res:/UI/Texture/Icons/Modules/navigation_CynoBeacon.png", "iconType": "png" }, "22074": { "iconFile": "res:/UI/Texture/Icons/Modules/navigation_CynoJammer.png", "iconType": "png" }, "22075": { "iconFile": "res:/UI/Texture/Icons/Modules/navigation_JumpGate.png", "iconType": "png" }, "22076": { "iconFile": "res:/ui/texture/icons/76_64_3.png" }, "22077": { "iconFile": "res:/UI/Asset/mannequin/outer/49978_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_W.png", "iconType": "png" }, "22078": { "iconFile": "res:/UI/Asset/mannequin/outer/49980_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_W.png", "iconType": "png" }, "22079": { "iconFile": "res:/UI/Texture/Icons/RewardTrack/reward_Holiday2018_Augmentation1.png", "iconType": "png" }, "22080": { "iconFile": "res:/UI/Texture/Icons/RewardTrack/reward_Holiday2018_Augmentation2.png", "iconType": "png" }, "22081": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_Holiday2018_DrakeRupture.png", "iconType": "png" }, "22082": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_Holiday2018_ExplorationSuits.png", "iconType": "png" }, "22084": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_Holiday2018_FaceAugmentation1.png", "iconType": "png" }, "22085": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_Holiday2018_FaceAugmentation2.png", "iconType": "png" }, "22086": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_Holiday2018_GnosisPunisher.png", "iconType": "png" }, "22087": { "iconFile": "res:/UI/Asset/mannequin/outer/49978_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_W.png", "iconType": "png" }, "22088": { "iconFile": "res:/UI/Asset/mannequin/outer/49980_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_W.png", "iconType": "png" }, "22089": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49984_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V0_Blue.png", "iconType": "png" }, "22090": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49985_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V10_W.png", "iconType": "png" }, "22091": { "iconFile": "res:/ui/texture/icons/modules/abyssalRemoteRepairer.png", "iconType": "png" }, "22092": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49987_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V6_Blue.png", "iconType": "png" }, "22093": { "iconFile": "res:/UI/Texture/Icons/RewardTrack/crateSkinContainer.png", "iconType": "png" }, "22094": { "iconFile": "res:/UI/Texture/Icons/RewardTrack/crateWinterExplorationSuit.png", "iconType": "png" }, "22095": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/49986_male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V10_W.png", "iconType": "png" }, "22096": { "iconFile": "res:/UI/Texture/LoginCampaigns/Winter_2018.png", "iconType": "png" }, "22097": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50043_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V30_ChOper.png", "iconType": "png" }, "22098": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50044_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V5_Purple.png", "iconType": "png" }, "22099": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50049_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V5_Purple.png", "iconType": "png" }, "22100": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50051_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V5_Purple.png", "iconType": "png" }, "22101": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50052_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V5_Purple.png", "iconType": "png" }, "22102": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/50050_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V30_ChOper.png", "iconType": "png" }, "22103": { "iconFile": "res:/UI/Texture/classes/ItemPacks/SplashImages/Holiday2018/splash_GuardiansGala_FaceAugmentation1.png", "iconType": "png" }, "22104": { "iconFile": "res:/UI/Texture/Icons/Inventory/FacialAugmentPurple.png", "iconType": "png" }, "22105": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/50130_Female_TopMiddle_TshirtF01_Types_TshirtF01_PWT.png", "iconType": "png" }, "22106": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/50131_Male_topMiddle_TshirtM01_Types_TshirtM01_PWT.png", "iconType": "png" }, "22107": { "iconFile": "res:/UI/Asset/mannequin/hair/50132_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_PWT.png", "iconType": "png" }, "22108": { "iconFile": "res:/UI/Asset/mannequin/hair/50133_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_PWT.png", "iconType": "png" }, "22111": { "iconFile": "res:/ui/texture/icons/inventory/triglavianCommunicator_Perun.png", "iconType": "png" }, "22112": { "iconFile": "res:/ui/texture/icons/inventory/triglavianCommunicator_Svarog.png", "iconType": "png" }, "22114": { "iconFile": "res:/ui/texture/icons/inventory/triglavianCommunicator_Veles.png", "iconType": "png" }, "22115": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/52188_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V31_XVI_FF.png", "iconType": "png" }, "22116": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/52189_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V32_XVI_FF.png", "iconType": "png" }, "22117": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/52198_Female_TopMiddle_TshirtF01_Types_TshirtF01_XVI.png", "iconType": "png" }, "22119": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/52200_Male_topMiddle_TshirtM01_Types_TshirtM01_XVI.png", "iconType": "png" }, "22120": { "iconFile": "res:/UI/Asset/mannequin/hair/52201_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_XVI.png", "iconType": "png" }, "22121": { "iconFile": "res:/UI/Asset/mannequin/hair/52202_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_XVI.png", "iconType": "png" }, "24116": { "iconFile": "res:/UI/Texture/Icons/Inventory/cratePermabandCap.png", "iconType": "png" }, "24117": { "iconFile": "res:/UI/Texture/Icons/Inventory/cratePermabandShirt.png", "iconType": "png" }, "24118": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateSilverMonocle.png", "iconType": "png" }, "24119": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateXVICap.png", "iconType": "png" }, "24120": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateXVIShirt.png", "iconType": "png" }, "24121": { "iconFile": "res:/UI/Texture/Icons/Inventory/FacialAugmentXVI.png", "iconType": "png" }, "24122": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateApotheosis+SKIN.png", "iconType": "png" }, "24123": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateGnosis+SKIN.png", "iconType": "png" }, "24124": { "iconFile": "res:/UI/Texture/Icons/Inventory/cratePraxis+SKIN.png", "iconType": "png" }, "24125": { "iconFile": "res:/UI/Texture/Icons/Inventory/crateSunesis+SKIN.png", "iconType": "png" }, "24128": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaDecayedAssaultDamageControl.png" }, "24129": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaDecayedDamageControl.png" }, "24130": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaGravidAssaultDamageControl.png" }, "24131": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaGravidDamageControl.png" }, "24132": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaUnstableAssaultDamageControl.png" }, "24133": { "iconFile": "res:/UI/Texture/Icons/Modules/mutaUnstableDamageControl.png" }, "24135": { "iconFile": "res:/ui/texture/icons/triglavianCollective.png" }, "24136": { "iconFile": "res:/UI/Texture/Icons/Inventory/Asteroid_Talassonite.png", "iconType": "png" }, "24137": { "iconFile": "res:/UI/Texture/Icons/Inventory/IndustryDatacore.png", "iconType": "png" }, "24138": { "iconFile": "res:/UI/Texture/Icons/Inventory/Radiation_absorption_thruster.png", "iconType": "png" }, "24139": { "iconFile": "res:/UI/Texture/Icons/Inventory/Lattice_locked_dekaisogen.png", "iconType": "png" }, "24140": { "iconFile": "res:/UI/Texture/Icons/Inventory/Singularity_radiation_convertor.png", "iconType": "png" }, "24141": { "iconFile": "res:/UI/Texture/Icons/Inventory/Trinary_state_processor.png", "iconType": "png" }, "24142": { "iconFile": "res:/UI/Texture/Icons/Inventory/Zero_point_field_manipulator.png", "iconType": "png" }, "24143": { "iconFile": "res:/UI/Texture/Icons/Inventory/Asteroid_Bezdnacine.png", "iconType": "png" }, "24144": { "iconFile": "res:/UI/Texture/Icons/Inventory/Asteroid_Rakovene.png", "iconType": "png" }, "24146": { "iconFile": "res:/UI/Texture/Icons/73_16_246.png" }, "24147": { "iconFile": "res:/UI/Texture/Icons/73_16_245.png" }, "24148": { "iconFile": "res:/UI/Texture/Icons/73_16_247.png" }, "24149": { "iconFile": "res:/UI/Texture/Icons/73_16_248.png" }, "24150": { "iconFile": "res:/UI/Texture/Icons/73_16_242.png" }, "24151": { "iconFile": "res:/UI/Texture/Icons/73_16_243.png" }, "24152": { "iconFile": "res:/UI/Texture/Icons/ItemOverlay/abyssal.png" }, "24153": { "iconFile": "res:/UI/Texture/Icons/ItemOverlay/nes.png" }, "24154": { "iconFile": "res:/UI/Texture/Icons/ItemOverlay/timeLimited.png" }, "24155": { "iconFile": "res:/UI/Texture/Shared/structureOverlayFaction.png" }, "24156": { "iconFile": "res:/UI/Texture/Shared/structureOverlayT2.png" }, "24157": { "iconFile": "res:/UI/Texture/Shared/structureOverlay.png" }, "24158": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/25k.png", "iconType": "png" }, "24159": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/50k.png", "iconType": "png" }, "24160": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/100k.png", "iconType": "png" }, "24161": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/150k.png", "iconType": "png" }, "24162": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/250k.png", "iconType": "png" }, "24163": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/500k.png", "iconType": "png" }, "24164": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/10k.png", "iconType": "png" }, "24165": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/750k.png", "iconType": "png" }, "24166": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/1m.png", "iconType": "png" }, "24167": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53038_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_Black.png", "iconType": "png" }, "24168": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53039_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_Blue.png", "iconType": "png" }, "24169": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53040_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_GoldDesign.png", "iconType": "png" }, "24170": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53041_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_Red.png", "iconType": "png" }, "24171": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53042_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_WhiteDesign.png", "iconType": "png" }, "24172": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53043_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_YellowDesign.png", "iconType": "png" }, "24175": { "iconFile": "res:/UI/Texture/Icons/Inventory/halloweenCrate.png", "iconType": "png" }, "24192": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53226_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_Black.png", "iconType": "png" }, "24193": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53227_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_Blue.png", "iconType": "png" }, "24194": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53228_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_GoldCamo.png", "iconType": "png" }, "24195": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53229_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_Red.png", "iconType": "png" }, "24196": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53230_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_WhiteCamo.png", "iconType": "png" }, "24197": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/53231_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_YellowCamo.png", "iconType": "png" }, "24205": { "iconFile": "res:/ui/texture/icons/inventory/hypercore.png", "iconType": "png" }, "24228": { "iconFile": "res:/UI/Texture/Icons/Inventory/capitalLauncherHardpoint.png", "iconType": "png" }, "24229": { "iconFile": "res:/UI/Texture/Icons/Inventory/capitalPowerGenerator_64.png", "iconType": "png" }, "24230": { "iconFile": "res:/UI/Texture/Icons/Inventory/capitalPropulsionEngine_64.png", "iconType": "png" }, "24237": { "iconFile": "res:/ui/texture/icons/Modules/Disintegrator_XL.png" }, "24240": { "iconFile": "res:/ui/texture/shared/brackets/station_32.png", "iconType": "png" }, "24242": { "iconFile": "res:/ui/texture/windowicons/theagency.png", "iconType": "png" }, "24243": { "iconFile": "res:/ui/texture/icons/44_32_18.png", "iconType": "png" }, "24244": { "iconFile": "res:/ui/texture/shared/brackets/warpgate_32.png", "iconType": "png" }, "24246": { "iconFile": "res:/ui/texture/shared/brackets/npccruiser_32.png", "iconType": "png" }, "24247": { "iconFile": "res:/ui/texture/shared/brackets/stargate_32.png", "iconType": "png" }, "24248": { "iconFile": "res:/ui/texture/classes/achievements/mouseBtnLeft.png", "iconType": "png" }, "24250": { "iconFile": "res:/ui/texture/icons/44_32_12.png", "iconType": "png" }, "24251": { "iconFile": "res:/UI/Texture/Icons/9_64_6.png", "iconType": "png" }, "24252": { "iconFile": "res:/ui/texture/icons/13_64_13.png", "iconType": "png" }, "24253": { "iconFile": "res:/ui/texture/icons/1_64_11.png", "iconType": "png" }, "24254": { "iconFile": "res:/UI/Texture/Shared/Brackets/Wreck_Large.png", "iconType": "png" }, "24256": { "iconFile": "res:/UI/Asset/mannequin/outer/53357_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Aurora.png", "iconType": "png" }, "24257": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/53380_Female_TopMiddle_TshirtF01_Types_TshirtF01_Aurora.png", "iconType": "png" }, "24258": { "iconFile": "res:/UI/Asset/mannequin/hair/53381_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Aurora.png", "iconType": "png" }, "24259": { "iconFile": "res:/UI/Asset/mannequin/outer/53382_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_ Aurora.png", "iconType": "png" }, "24260": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/53383_Male_topMiddle_TshirtM01_Types_TshirtM01_ Aurora.png", "iconType": "png" }, "24261": { "iconFile": "res:/UI/Asset/mannequin/hair/53384_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_ Aurora.png", "iconType": "png" }, "24262": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/53385_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V10_Red.png", "iconType": "png" }, "24263": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/53386_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V32_Aurora.png", "iconType": "png" }, "24264": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/53393_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V33_ Aurora.png", "iconType": "png" }, "24265": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/53394_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V10_Red.png", "iconType": "png" }, "24266": { "iconFile": "res:/UI/Texture/Icons/Inventory/FilamentAllOtherReindeer.png" }, "24267": { "iconFile": "res:/UI/Texture/Icons/Inventory/FilamentRudolph.png" }, "24268": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha1.png", "iconType": "png" }, "24270": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha2.png", "iconType": "png" }, "24271": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha3.png", "iconType": "png" }, "24272": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha4.png", "iconType": "png" }, "24273": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha5.png", "iconType": "png" }, "24274": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha6.png", "iconType": "png" }, "24275": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha7.png", "iconType": "png" }, "24276": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha8.png", "iconType": "png" }, "24277": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha9.png", "iconType": "png" }, "24278": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha10.png", "iconType": "png" }, "24279": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha11.png", "iconType": "png" }, "24280": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha12.png", "iconType": "png" }, "24281": { "iconFile": "res:/UI/Texture/Icons/Inventory/Alpha13.png", "iconType": "png" }, "24283": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega1.png", "iconType": "png" }, "24284": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega2.png", "iconType": "png" }, "24285": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega3.png", "iconType": "png" }, "24286": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega4.png", "iconType": "png" }, "24287": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega5.png", "iconType": "png" }, "24288": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega6.png", "iconType": "png" }, "24289": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega7.png", "iconType": "png" }, "24290": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega8.png", "iconType": "png" }, "24291": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega9.png", "iconType": "png" }, "24292": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega10.png", "iconType": "png" }, "24293": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega11.png", "iconType": "png" }, "24294": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega12.png", "iconType": "png" }, "24295": { "iconFile": "res:/UI/Texture/Icons/Inventory/Omega13.png", "iconType": "png" }, "24296": { "iconFile": "res:/ui/texture/icons/celestial/planetaryLaunchContainer.png" }, "24297": { "iconFile": "res:/ui/texture/icons/inventory/CoercerBundleCrate.png" }, "24298": { "iconFile": "res:/ui/texture/icons/inventory/CatalystBundleCrate.png" }, "24299": { "iconFile": "res:/ui/texture/icons/inventory/CormorantBundleCrate.png" }, "24300": { "iconFile": "res:/ui/texture/icons/inventory/ThrasherBundleCrate.png" }, "24303": { "iconFile": "res:/ui/texture/icons/StatusEffects/blackHole.png" }, "24304": { "iconFile": "res:/ui/texture/icons/StatusEffects/cataclysmicVariable.png" }, "24305": { "iconFile": "res:/ui/texture/icons/StatusEffects/magnatar.png" }, "24306": { "iconFile": "res:/ui/texture/icons/StatusEffects/pulsae.png" }, "24307": { "iconFile": "res:/ui/texture/icons/StatusEffects/redGiant.png" }, "24308": { "iconFile": "res:/ui/texture/icons/StatusEffects/wolfRayet.png" }, "24309": { "iconFile": "res:/ui/texture/icons/StatusEffects/triglavianInvasions.png" }, "24310": { "iconFile": "res:/ui/texture/icons/StatusEffects/sanshaIncursion.png" }, "24312": { "iconFile": "res:/UI/Asset/mannequin/outer/54158_Female_Outer_LabCoatF01_Types_LabCoatF01_ConcordFF.png", "iconType": "png" }, "24319": { "iconFile": "res:/UI/Asset/mannequin/outer/54177_Male_outer_LabCoatM01_Types_LabCoatM01_ConcordFF.png", "iconType": "png" }, "24320": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54193_Female_TopMiddle_TshirtF01_Types_TshirtF01_RFS.png", "iconType": "png" }, "24321": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54194_Male_topMiddle_TshirtM01_Types_TshirtM01_RFS.png", "iconType": "png" }, "24322": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L1.png" }, "24323": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L1Active.png" }, "24324": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L3.png" }, "24325": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L3Active.png" }, "24326": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L5.png" }, "24327": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalRandomFilament_L5Active.png" }, "24328": { "iconFile": "res:/UI/Texture/Shared/mouse_button_middle.png", "iconType": "png" }, "24329": { "iconFile": "res:/UI/Asset/mannequin/outer/54299_Female_Outer_JacketPrtF01_Types_JacketPrtF01_guristashunt.png", "iconType": "png" }, "24330": { "iconFile": "res:/UI/Asset/mannequin/feet/54303_Female_Feet_BootsPrtF01_Types_BootsPrtF01_guristashunt.png", "iconType": "png" }, "24331": { "iconFile": "res:/UI/Asset/mannequin/hair/54304_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GuristasHuntF01.png", "iconType": "png" }, "24332": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54306_Female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_guristashunt.png", "iconType": "png" }, "24343": { "iconFile": "res:/UI/Asset/mannequin/outer/54307_Male_outer_JacketPrtm01_Types_JacketPrtm01_guristashunt.png", "iconType": "png" }, "24344": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54308_Male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_guristashunt.png", "iconType": "png" }, "24345": { "iconFile": "res:/UI/Asset/mannequin/feet/54309_Male_Feet_BootsPrtm01_Types_BootsPrtm01_guristashunt.png", "iconType": "png" }, "24346": { "iconFile": "res:/UI/Asset/mannequin/hair/54310_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GuristasHuntM01.png", "iconType": "png" }, "24350": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54320_Female_TopMiddle_TshirtF01_Types_TshirtF01_XVII.png", "iconType": "png" }, "24351": { "iconFile": "res:/UI/Asset/mannequin/hair/54322_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_XVII.png", "iconType": "png" }, "24352": { "iconFile": "res:/UI/Asset/mannequin/hair/54327_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_XVII.png", "iconType": "png" }, "24353": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54328_Male_topMiddle_TshirtM01_Types_TshirtM01_XVII.png", "iconType": "png" }, "24363": { "iconFile": "res:/UI/Asset/mannequin/outer/54359_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_Black.png", "iconType": "png" }, "24364": { "iconFile": "res:/UI/Asset/mannequin/outer/54360_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_Blue_Tie.png", "iconType": "png" }, "24365": { "iconFile": "res:/UI/Asset/mannequin/outer/54361_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_BrownStripes.png", "iconType": "png" }, "24366": { "iconFile": "res:/UI/Asset/mannequin/outer/54362_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_GrayDark_Tie.png", "iconType": "png" }, "24367": { "iconFile": "res:/UI/Asset/mannequin/outer/54363_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_Red.png", "iconType": "png" }, "24368": { "iconFile": "res:/UI/Asset/mannequin/outer/54364_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_White_Tie.png", "iconType": "png" }, "24369": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54365_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_Black.png", "iconType": "png" }, "24370": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54366_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_Blue.png", "iconType": "png" }, "24371": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54367_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_BrownStripes.png", "iconType": "png" }, "24372": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54368_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_GrayDark.png", "iconType": "png" }, "24373": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54369_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_Red.png", "iconType": "png" }, "24374": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54370_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_White.png", "iconType": "png" }, "24375": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54371_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_Black.png", "iconType": "png" }, "24376": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54372_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_Blue.png", "iconType": "png" }, "24377": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54373_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_BrownStripes.png", "iconType": "png" }, "24378": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54374_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_GrayDark.png", "iconType": "png" }, "24379": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54375_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_Red.png", "iconType": "png" }, "24380": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/54376_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_White.png", "iconType": "png" }, "24381": { "iconFile": "res:/UI/Asset/mannequin/outer/54377_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_Black.png", "iconType": "png" }, "24382": { "iconFile": "res:/UI/Asset/mannequin/outer/54378_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_Blue_Tie.png", "iconType": "png" }, "24383": { "iconFile": "res:/UI/Asset/mannequin/outer/54379_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_BrownStripes.png", "iconType": "png" }, "24384": { "iconFile": "res:/UI/Asset/mannequin/outer/54380_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_GreyDark_Tie.png", "iconType": "png" }, "24385": { "iconFile": "res:/UI/Asset/mannequin/outer/54381_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_Red.png", "iconType": "png" }, "24386": { "iconFile": "res:/UI/Asset/mannequin/outer/54382_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_White_Tie.png", "iconType": "png" }, "24387": { "iconFile": "res:/UI/Asset/mannequin/feet/54383_Male_Feet_ShoesCorpBusinessM01_Types_ShoesCorpBusinessM01_black.png", "iconType": "png" }, "24388": { "iconFile": "res:/UI/Asset/mannequin/feet/54384_Male_Feet_ShoesCorpBusinessM01_Types_ShoesCorpBusinessM01_brown.png", "iconType": "png" }, "24389": { "iconFile": "res:/UI/Asset/mannequin/feet/54385_Male_Feet_ShoesCorpBusinessM01_Types_ShoesCorpBusinessM01_darkbrown.png", "iconType": "png" }, "24390": { "iconFile": "res:/UI/Asset/mannequin/feet/54386_Male_Feet_ShoesCorpBusinessM01_Types_ShoesCorpBusinessM01_white.png", "iconType": "png" }, "24392": { "iconFile": "res:/ui/texture/icons/inventory/DLI_blue_1.png" }, "24393": { "iconFile": "res:/ui/texture/icons/inventory/DLI_blue_2.png" }, "24394": { "iconFile": "res:/ui/texture/icons/inventory/DLI_blue_3.png" }, "24395": { "iconFile": "res:/ui/texture/icons/inventory/DLI_extra_1.png" }, "24396": { "iconFile": "res:/ui/texture/icons/inventory/DLI_extra_2.png" }, "24397": { "iconFile": "res:/ui/texture/icons/inventory/DLI_extra_3.png" }, "24398": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gold_1.png" }, "24399": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gold_2.png" }, "24400": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gold_3.png" }, "24401": { "iconFile": "res:/ui/texture/icons/inventory/DLI_green_1.png" }, "24402": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gray_1.png" }, "24403": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gray_2.png" }, "24404": { "iconFile": "res:/ui/texture/icons/inventory/DLI_gray_3.png" }, "24405": { "iconFile": "res:/ui/texture/icons/inventory/DLI_green_2.png" }, "24406": { "iconFile": "res:/ui/texture/icons/inventory/DLI_green_3.png" }, "24407": { "iconFile": "res:/ui/texture/icons/inventory/DLI_purple_1.png" }, "24408": { "iconFile": "res:/ui/texture/icons/inventory/DLI_purple_2.png" }, "24409": { "iconFile": "res:/ui/texture/icons/inventory/DLI_purple_3.png" }, "24411": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54714_Female_Accessories_Masks_Mask_F_Types_Mask_F_cyan.png", "iconType": "png" }, "24412": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54715_Female_Accessories_Masks_Mask_F_Types_Mask_F_blackredsoe.png", "iconType": "png" }, "24413": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54716_Female_Accessories_Masks_Mask_F_Types_Mask_F_darkblue.png", "iconType": "png" }, "24415": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54718_Male_Accessories_Masks_Mask_M_Types_Mask_M_blue.png", "iconType": "png" }, "24416": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54719_Male_Accessories_Masks_Mask_M_Types_Mask_M_blackredsoe.png", "iconType": "png" }, "24417": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54720_Male_Accessories_Masks_Mask_M_Types_Mask_M_darkblue.png", "iconType": "png" }, "24418": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/54830_Male_Accessories_Masks_Mask_M_Types_Mask_M_cyan.png", "iconType": "png" }, "24419": { "iconFile": "res:/UI/Texture/Corps/edencom.png", "iconType": "png" }, "24421": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/54926_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V3_GoldBlue.png", "iconType": "png" }, "24422": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/54927_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V7_Blue.png", "iconType": "png" }, "24429": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54943_Male_topMiddle_TshirtM01_Types_TshirtM01_Covid.png", "iconType": "png" }, "24430": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/54944_Female_TopMiddle_TshirtF01_Types_TshirtF01_Covid.png", "iconType": "png" }, "24434": { "iconFile": "res:/UI/Asset/mannequin/hair/54948_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Covid.png", "iconType": "png" }, "24435": { "iconFile": "res:/UI/Asset/mannequin/hair/54949_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Covid.png", "iconType": "png" }, "24457": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/54965_Female_Accessories_Glasses_Glasses_Slick_01_Types_Glasses_Slick_01_clear.png", "iconType": "png" }, "24458": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/54966_Male_Accessories_Glasses_Glasses_Slick_01_Types_Glasses_Slick_01_clear.png", "iconType": "png" }, "24460": { "iconFile": "res:/UI/Texture/Icons/SkillPoints/Broken_Skill_Canister.png", "iconType": "png" }, "24462": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/55627_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V6_White.png", "iconType": "png" }, "24463": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/55636_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V7_White.png", "iconType": "png" }, "24464": { "iconFile": "res:/UI/Texture/Icons/Modules/upwell_weapon_small.png" }, "24465": { "iconFile": "res:/UI/Texture/Icons/Modules/upwell_weapon_medium.png" }, "24466": { "iconFile": "res:/UI/Texture/Icons/Modules/upwell_weapon_large.png" }, "24467": { "iconFile": "res:/UI/Texture/Icons/Modules/upwell_modifier_amplifier.png" }, "24468": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_black.png" }, "24469": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_blue.png" }, "24470": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_green.png" }, "24471": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_orange.png" }, "24472": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_white.png" }, "24473": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_small_yellow.png" }, "24474": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_black.png" }, "24475": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_blue.png" }, "24476": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_green.png" }, "24477": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_orange.png" }, "24478": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_white.png" }, "24479": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_medium_yellow.png" }, "24480": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_black.png" }, "24481": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_blue.png" }, "24482": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_green.png" }, "24483": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_orange.png" }, "24484": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_white.png" }, "24485": { "iconFile": "res:/UI/Texture/Icons/Ammo/upwell_ammo_large_yellow.png" }, "24486": { "iconFile": "res:/UI/Texture/Icons/Inventory/upwell_industry_array.png" }, "24487": { "iconFile": "res:/UI/Texture/Icons/Inventory/upwell_industry_electricsheeting.png" }, "24488": { "iconFile": "res:/UI/Texture/Icons/Inventory/upwell_industry_nanocable.png" }, "24489": { "iconFile": "res:/UI/Asset/mannequin/hair/55751_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_AmarrFoundationF01.png", "iconType": "png" }, "24490": { "iconFile": "res:/UI/Asset/mannequin/hair/55752_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_CaldariUnionF01.png", "iconType": "png" }, "24491": { "iconFile": "res:/UI/Asset/mannequin/hair/55753_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_GallenteFederationF01.png", "iconType": "png" }, "24492": { "iconFile": "res:/UI/Asset/mannequin/hair/55754_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_MinmatarLiberationF01.png", "iconType": "png" }, "24493": { "iconFile": "res:/UI/Asset/mannequin/hair/55755_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_AmarrFoundationM01.png", "iconType": "png" }, "24494": { "iconFile": "res:/UI/Asset/mannequin/hair/55756_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_CaldariUnionM01.png", "iconType": "png" }, "24495": { "iconFile": "res:/UI/Asset/mannequin/hair/55757_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_GallenteFederationM01.png", "iconType": "png" }, "24496": { "iconFile": "res:/UI/Asset/mannequin/hair/55758_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_MinmatarLiberationM01.png", "iconType": "png" }, "24497": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalArenaFilaments_1v1.png" }, "24498": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalArenaFilaments_2v2.png" }, "24499": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalArenaFilaments_3v3.png" }, "24501": { "iconFile": "res:/UI/Texture/Icons/Inventory/AbyssalArenaFilaments_5v5.png" }, "24502": { "iconFile": "res:/UI/Asset/mannequin/outer/55855_Female_Outer_VanguardF01_Types_VanguardF01_TG_PVP_Arena.png", "iconType": "png" }, "24503": { "iconFile": "res:/UI/Asset/mannequin/outer/55856_Female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_TG_PVP_Arena.png", "iconType": "png" }, "24504": { "iconFile": "res:/UI/Asset/mannequin/outer/55857_Male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_TG_PVP_Arena.png", "iconType": "png" }, "24505": { "iconFile": "res:/UI/Asset/mannequin/outer/55858_Male_outer_VanguardM01_Types_VanguardM01_TG_PVP_Arena.png", "iconType": "png" }, "24506": { "iconFile": "res:/UI/Asset/mannequin/hair/56144_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_EdencomF01.png", "iconType": "png" }, "24507": { "iconFile": "res:/UI/Asset/mannequin/hair/56145_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_EdencomM01.png", "iconType": "png" }, "24508": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56146_Female_TopMiddle_TshirtF01_Types_TshirtF01_Edencom.png", "iconType": "png" }, "24509": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56147_Male_topMiddle_TshirtM01_Types_TshirtM01_Edencom.png", "iconType": "png" }, "24510": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL0.png" }, "24511": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalFilamentL6.png" }, "24512": { "iconFile": "res:/UI/Asset/mannequin/hair/56209_Female_hair_HeadWear_Beret_F01_Types_HeadWear_Beret_TriglavianF01.png", "iconType": "png" }, "24513": { "iconFile": "res:/UI/Asset/mannequin/hair/56210_Male_hair_HeadWear_Beret_M01_Types_HeadWear_Beret_TriglavianM01.png", "iconType": "png" }, "24514": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56211_Female_TopMiddle_TshirtF01_Types_TshirtF01_Triglavian.png", "iconType": "png" }, "24515": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56212_Male_topMiddle_TshirtM01_Types_TshirtM01_Triglavian.png", "iconType": "png" }, "24516": { "iconFile": "res:/UI/Asset/mannequin/outer/56223_Female_Outer_JacketCMF01_Types_JacketCMF01_Edencom.png", "iconType": "png" }, "24517": { "iconFile": "res:/UI/Asset/mannequin/outer/56224_Male_outer_JacketCMM01_Types_JacketCMM01_Edencom.png", "iconType": "png" }, "24518": { "iconFile": "res:/UI/Asset/mannequin/outer/56225_Female_Outer_VanguardF01_Types_VanguardF01_TG_LP.png", "iconType": "png" }, "24519": { "iconFile": "res:/UI/Asset/mannequin/outer/56226_Male_outer_VanguardM01_Types_VanguardM01_TG_LP.png", "iconType": "png" }, "24525": { "iconFile": "res:/UI/Asset/mannequin/outer/56264_Female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_TG_LP.png", "iconType": "png" }, "24526": { "iconFile": "res:/UI/Asset/mannequin/outer/56265_Female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Edencom.png", "iconType": "png" }, "24527": { "iconFile": "res:/UI/Asset/mannequin/outer/56266_Male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_TG_LP.png", "iconType": "png" }, "24528": { "iconFile": "res:/UI/Asset/mannequin/outer/56267_Male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Edencom.png", "iconType": "png" }, "24529": { "iconFile": "res:/UI/Texture/Icons/Conversations/theAgency.png", "iconType": "png" }, "24530": { "iconFile": "res:/UI/Texture/Icons/Inventory/FilamentTSpace1.png", "iconType": "png" }, "24531": { "iconFile": "res:/UI/Texture/Icons/Inventory/FilamentTSpace2.png", "iconType": "png" }, "24532": { "iconFile": "res:/UI/Texture/Icons/Inventory/FilamentTSpace3.png", "iconType": "png" }, "24533": { "iconFile": "res:/ui/texture/icons/upwell/QuantumCoreM.png", "iconType": "png" }, "24534": { "iconFile": "res:/ui/texture/icons/upwell/QuantumCoreL.png", "iconType": "png" }, "24535": { "iconFile": "res:/ui/texture/icons/upwell/QuantumCoreXL.png", "iconType": "png" }, "24536": { "iconFile": "res:/UI/Asset/mannequin/hair/56634_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_BR_CrimonHarvest.png", "iconType": "png" }, "24537": { "iconFile": "res:/UI/Asset/mannequin/outer/56635_Female_Outer_JacketFBR01_Types_JacketFBR01_BR_CrimsonHarvest.png", "iconType": "png" }, "24538": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56636_Female_TopMiddle_TshirtF01_Types_TshirtF01_BR_CrimsonHarvest.png", "iconType": "png" }, "24539": { "iconFile": "res:/UI/Asset/mannequin/hair/56637_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_BR_CrimsonHarvest.png", "iconType": "png" }, "24540": { "iconFile": "res:/UI/Asset/mannequin/outer/56638_Male_outer_JacketMFBR01_Types_JacketMFBR01_BR_CrimsonHarvest.png", "iconType": "png" }, "24541": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56639_Male_topMiddle_TshirtM01_Types_TshirtM01_BR_CrimsonHarvest.png", "iconType": "png" }, "24543": { "iconFile": "res:/UI/Texture/Icons/Ammo/probe_charge_green.png" }, "24544": { "iconFile": "res:/UI/Texture/Icons/Ammo/probe_charge_coral.png" }, "24545": { "iconFile": "res:/UI/Texture/Icons/Ammo/probe_charge_olive.png" }, "24546": { "iconFile": "res:/UI/Texture/Icons/Ammo/probe_charge_violet.png" }, "24547": { "iconFile": "res:/UI/Texture/Icons/Modules/SuperCarrierCloneBay.png" }, "24548": { "iconFile": "res:/UI/Asset/mannequin/feet/56844_Female_Feet_ShoesEngF01_Types_ShoesEngF01_Jita.png", "iconType": "png" }, "24549": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56845_Female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_Jita.png", "iconType": "png" }, "24550": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/56846_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_Jita.png", "iconType": "png" }, "24551": { "iconFile": "res:/UI/Asset/mannequin/feet/56847_Male_Feet_ShoesEngM01_Types_ShoesEngM01_jita.png", "iconType": "png" }, "24552": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/56848_Male_topMiddle_ShirtEngM01_Types_ShirtEngM01_jita.png", "iconType": "png" }, "24553": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/56849_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_jita.png", "iconType": "png" }, "24554": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/56850_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_Jita.png", "iconType": "png" }, "24555": { "iconFile": "res:/UI/Asset/mannequin/outer/56851_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_Jita_Tie.png", "iconType": "png" }, "24556": { "iconFile": "res:/UI/Asset/mannequin/outer/56852_Female_Outer_JacketCorpBusinessF01_Types_JacketCorpBusinessF01_Jita_Tie.png", "iconType": "png" }, "24557": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/56853_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_Jita.png", "iconType": "png" }, "24558": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/56854_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V33_Japan.png", "iconType": "png" }, "24559": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/56855_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V34_Japan.png", "iconType": "png" }, "24560": { "iconFile": "res:/UI/Asset/mannequin/outer/56856_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Japan.png", "iconType": "png" }, "24561": { "iconFile": "res:/UI/Asset/mannequin/outer/56857_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Japan.png", "iconType": "png" }, "24562": { "iconFile": "res:/UI/Texture/Icons/Inventory/encrypted_bond_1.png" }, "24563": { "iconFile": "res:/UI/Texture/Icons/Inventory/encrypted_bond_2.png" }, "24564": { "iconFile": "res:/UI/Texture/Icons/Inventory/encrypted_bond_3.png" }, "24565": { "iconFile": "res:/UI/Texture/Icons/Inventory/encrypted_bond_4.png" }, "24566": { "iconFile": "res:/UI/Texture/Icons/Inventory/StormChaserFilamentHighSec_64.png", "iconType": "png" }, "24567": { "iconFile": "res:/UI/Texture/Icons/Inventory/StormChaserFilamentLowSec_64.png", "iconType": "png" }, "24568": { "iconFile": "res:/UI/Texture/Icons/Inventory/StormChaserFilamentNullSec_64.png", "iconType": "png" }, "24569": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/57073_Male_topMiddle_TshirtM01_Types_TshirtM01_Yoiul.png", "iconType": "png" }, "24570": { "iconFile": "res:/UI/Asset/mannequin/hair/57074_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Yoiul.png", "iconType": "png" }, "24571": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/57075_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_Yoiul.png", "iconType": "png" }, "24572": { "iconFile": "res:/UI/Asset/mannequin/outer/57076_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Yoiul.png", "iconType": "png" }, "24573": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/57077_Female_TopMiddle_TshirtF01_Types_TshirtF01_Yoiul.png", "iconType": "png" }, "24574": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/57078_Female_bottomOuter_PantsMilF01_Types_PantsMilF01_Yoiul.png", "iconType": "png" }, "24575": { "iconFile": "res:/UI/Asset/mannequin/hair/57079_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Yoiul.png", "iconType": "png" }, "24576": { "iconFile": "res:/UI/Asset/mannequin/outer/57080_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Yoiul.png", "iconType": "png" }, "24577": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/YoiulMetaliminalStorm.png" }, "24578": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Xin.png", "iconType": "png" }, "24579": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Nian.png", "iconType": "png" }, "24580": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Kuai.png", "iconType": "png" }, "24581": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Le.png", "iconType": "png" }, "24582": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Bull20.png", "iconType": "png" }, "24583": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_Bull21.png", "iconType": "png" }, "24584": { "iconFile": "res:/UI/Texture/Icons/Inventory/BullCrate_64.png", "iconType": "png" }, "24585": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/BaseSystem.png", "iconType": "png" }, "24587": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_ZN_A.png", "iconType": "png" }, "24588": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_ZN_B.png", "iconType": "png" }, "24589": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_ZN_C.png", "iconType": "png" }, "24590": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_ZN_X.png", "iconType": "png" }, "24591": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_ZN01.png", "iconType": "png" }, "24592": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_ZN02.png", "iconType": "png" }, "24593": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_ZN03.png", "iconType": "png" }, "24594": { "iconFile": "res:/UI/Texture/Icons/Inventory/Crate_NewYear_64.png", "iconType": "png" }, "24595": { "iconFile": "res:/UI/Texture/Icons/Inventory/Crate_ShipSkin_64.png", "iconType": "png" }, "24597": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/CoreShipSystems.png", "iconType": "png" }, "24600": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/HighSecuritySpaceExplorer.png", "iconType": "png" }, "24601": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/InterceptorEventSystem.png", "iconType": "png" }, "24602": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/MiningBargeSystem.png", "iconType": "png" }, "24603": { "iconFile": "res:/UI/Texture/Icons/Inventory/ExpertSystems/Science.png", "iconType": "png" }, "24604": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Capital_Core_Temperature_Regulator.png", "iconType": "png" }, "24605": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Core_Temperature_Regulator.png", "iconType": "png" }, "24606": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Counter-Subversion_Sensor_Array.png", "iconType": "png" }, "24607": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/CV-Composite_Molecular_Condenser.png", "iconType": "png" }, "24608": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Electro-Neural_Signaller.png", "iconType": "png" }, "24609": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Enhanced_Electro-Neural_Signaller.png", "iconType": "png" }, "24610": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/G-O_Trigger_Neurolink_Conduit.png", "iconType": "png" }, "24611": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Genetic_Lock_Preserver.png", "iconType": "png" }, "24612": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Genetic_Mutation_Inhibiter.png", "iconType": "png" }, "24613": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Genetic_Safeguard_Filter.png", "iconType": "png" }, "24614": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Genetic_Structure_Repairer.png", "iconType": "png" }, "24615": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Goal-Orienting_Neurolink_Stabilizer.png", "iconType": "png" }, "24616": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Gravimetric-FTL_Interlink_Communicator.png", "iconType": "png" }, "24617": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Isotropic_Neofullerene_Alpha-3.png", "iconType": "png" }, "24618": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Isotropic_Neofullerene_Beta-6.png", "iconType": "png" }, "24619": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Isotropic_Neofullerene_Gamma-9.png", "iconType": "png" }, "24620": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Ladar-FTL_Interlink_Communicator.png", "iconType": "png" }, "24621": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/LM-Composite_Molecular_Condenser.png", "iconType": "png" }, "24622": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Magnetometric-FTL_Interlink_Communicator.png", "iconType": "png" }, "24623": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Meta-Molecular_Combiner.png", "iconType": "png" }, "24624": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Meta-Operant_Neurolink_Booster.png", "iconType": "png" }, "24625": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Nanoscale_Filter_Plate.png", "iconType": "png" }, "24626": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Nano_Regulation_Gate.png", "iconType": "png" }, "24627": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Neurolink_Booster_Reservoir.png", "iconType": "png" }, "24628": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Programmable_Purification_Membrane.png", "iconType": "png" }, "24629": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/R-O_Trigger_Neurolink_Conduit.png", "iconType": "png" }, "24630": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Radar-FTL_Interlink_Communicator.png", "iconType": "png" }, "24631": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Reaction-Orienting_Neurolink_Stabilizer.png", "iconType": "png" }, "24632": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/S-R_Trigger_Neurolink_Conduit.png", "iconType": "png" }, "24633": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Solid_Gas_Merger.png", "iconType": "png" }, "24634": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Stress-Responding_Neurolink_Stabilizer.png", "iconType": "png" }, "24635": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/U-C_Trigger_Neurolink_Conduit.png", "iconType": "png" }, "24636": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Ultradian-Cycling_Neurolink_Stabilizer.png", "iconType": "png" }, "24637": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/AG-Composite_Molecular_Condenser.png", "iconType": "png" }, "24638": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Auto-Preservation_Component.png", "iconType": "png" }, "24639": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/AV-Composite_Molecular_Condenser.png", "iconType": "png" }, "24640": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/LifeSupport_unit.png", "iconType": "LifeSupport_unit.png" }, "24641": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Neurolink_Cell.png", "iconType": "png" }, "24642": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Neurolink_Cell_Enhanced.png", "iconType": "png" }, "24643": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Fortitude_liquid_A.png", "iconType": "png" }, "24644": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Fortitude_liquid_B.png", "iconType": "png" }, "24645": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Fortitude_liquid_C.png", "iconType": "png" }, "24646": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Fortitude_liquid_D.png", "iconType": "png" }, "24655": { "iconFile": "res:/ui/Texture/Shared/hamburgerMenu_Large.png", "iconType": "png" }, "24656": { "iconFile": "res:/UI/Texture/classes/Industry/activity/manufacturing.png", "iconType": "png" }, "24657": { "iconFile": "res:/UI/Texture/classes/Industry/activity/copying.png", "iconType": "png" }, "24658": { "iconFile": "res:/UI/Texture/classes/Industry/activity/researchMaterial.png", "iconType": "png" }, "24659": { "iconFile": "res:/UI/Texture/classes/Industry/activity/researchTime.png", "iconType": "png" }, "24660": { "iconFile": "res:/UI/Texture/classes/Industry/activity/invention.png", "iconType": "png" }, "24661": { "iconFile": "res:/UI/Texture/classes/Industry/activity/reaction.png", "iconType": "png" }, "24662": { "iconFile": "res:/UI/Texture/SettingsCogwheel.png", "iconType": "png" }, "24663": { "iconFile": "res:/UI/Texture/classes/MapView/focusIcon.png", "iconType": "png" }, "24664": { "iconFile": "res:/UI/Texture/classes/Fitting/tabSkins.png", "iconType": "png" }, "24665": { "iconFile": "res:/UI/Texture/classes/Fitting/tabHardware.png", "iconType": "png" }, "24666": { "iconFile": "res:/UI/Texture/Icons/d-scan.png", "iconType": "png" }, "24667": { "iconFile": "res:/UI/Texture/Icons/probe_scan.png", "iconType": "png" }, "24668": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_Anniversary_I.png", "iconType": "png" }, "24669": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_Anniversary_II.png", "iconType": "png" }, "24670": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_Anniversary_III.png", "iconType": "png" }, "24671": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_Anniversary_IV.png", "iconType": "png" }, "24672": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_Anniversary_TP.png", "iconType": "png" }, "24673": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_Anniversary_YK.png", "iconType": "png" }, "24674": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_Anniversary_HQ.png", "iconType": "png" }, "24675": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_Anniversary_XN.png", "iconType": "png" }, "24676": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_Anniversary_MM.png", "iconType": "png" }, "24677": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_ShipSkin02_64.png", "iconType": "png" }, "24678": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_TravellingGallery_Amarr.png", "iconType": "png" }, "24679": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_TravellingGallery_Caldari.png", "iconType": "png" }, "24680": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_TravellingGallery_Gallente.png", "iconType": "png" }, "24681": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_TravellingGallery_Minmatar.png", "iconType": "png" }, "24682": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_TravellingGallery_StarMap.png", "iconType": "png" }, "24683": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58757_Male_topMiddle_TshirtM01_Types_TshirtM01_XVIII.png", "iconType": "png" }, "24684": { "iconFile": "res:/UI/Asset/mannequin/hair/58767_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_XVIII.png", "iconType": "png" }, "24685": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58768_Female_TopMiddle_TshirtF01_Types_TshirtF01_XVIII.png", "iconType": "png" }, "24686": { "iconFile": "res:/UI/Asset/mannequin/hair/58769_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_XVIII.png", "iconType": "png" }, "24687": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58785_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_amarr.png", "iconType": "png" }, "24688": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58786_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_caldari.png", "iconType": "png" }, "24689": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58787_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_gallente.png", "iconType": "png" }, "24690": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58788_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_minmatar.png", "iconType": "png" }, "24691": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58791_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_amarr.png", "iconType": "png" }, "24692": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58792_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_caldari.png", "iconType": "png" }, "24693": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58793_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_gallente.png", "iconType": "png" }, "24694": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58794_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_minmatar.png", "iconType": "png" }, "24695": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58809_Female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_amarr.png", "iconType": "png" }, "24696": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58810_Female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_caldari.png", "iconType": "png" }, "24697": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58811_Female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_gallente.png", "iconType": "png" }, "24698": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58812_Female_TopMiddle_ShirtEngF01_Types_ShirtEngF01_minmatar.png", "iconType": "png" }, "24699": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58813_Male_topMiddle_ShirtEngM01_Types_ShirtEngM01_amarr.png", "iconType": "png" }, "24700": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58814_Male_topMiddle_ShirtEngM01_Types_ShirtEngM01_caldari.png", "iconType": "png" }, "24701": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58815_Male_topMiddle_ShirtEngM01_Types_ShirtEngM01_gallente.png", "iconType": "png" }, "24702": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/58816_Male_topMiddle_ShirtEngM01_Types_ShirtEngM01_minmatar.png", "iconType": "png" }, "24703": { "iconFile": "res:/UI/Asset/mannequin/feet/58817_Female_Feet_ShoesEngF01_Types_ShoesEngF01_amarr.png", "iconType": "png" }, "24704": { "iconFile": "res:/UI/Asset/mannequin/feet/58818_Female_Feet_ShoesEngF01_Types_ShoesEngF01_caldari.png", "iconType": "png" }, "24705": { "iconFile": "res:/UI/Asset/mannequin/feet/58819_Female_Feet_ShoesEngF01_Types_ShoesEngF01_gallente.png", "iconType": "png" }, "24706": { "iconFile": "res:/UI/Asset/mannequin/feet/58820_Female_Feet_ShoesEngF01_Types_ShoesEngF01_minmatar.png", "iconType": "png" }, "24707": { "iconFile": "res:/UI/Asset/mannequin/feet/58821_Female_Feet_ShoesEngF01_Types_ShoesEngF01_redblack.png", "iconType": "png" }, "24708": { "iconFile": "res:/UI/Asset/mannequin/feet/58825_Male_Feet_ShoesEngM01_Types_ShoesEngM01_amarr.png", "iconType": "png" }, "24709": { "iconFile": "res:/UI/Asset/mannequin/feet/58826_Male_Feet_ShoesEngM01_Types_ShoesEngM01_caldari.png", "iconType": "png" }, "24710": { "iconFile": "res:/UI/Asset/mannequin/feet/58827_Male_Feet_ShoesEngM01_Types_ShoesEngM01_gallente.png", "iconType": "png" }, "24711": { "iconFile": "res:/UI/Asset/mannequin/feet/58828_Male_Feet_ShoesEngM01_Types_ShoesEngM01_minmatar.png", "iconType": "png" }, "24712": { "iconFile": "res:/UI/Asset/mannequin/feet/58829_Male_Feet_ShoesEngM01_Types_ShoesEngM01_redblack.png", "iconType": "png" }, "24713": { "iconFile": "res:/UI/Asset/mannequin/outer/58933_Male_outer_JacketFormalMilM01_Types_JacketFormalMilM01_BlueCal.png", "iconType": "png" }, "24714": { "iconFile": "res:/UI/Asset/mannequin/outer/58934_Male_outer_JacketFormalMilM01_Types_JacketFormalMilM01_BrownAmarr.png", "iconType": "png" }, "24715": { "iconFile": "res:/UI/Asset/mannequin/outer/58935_Male_outer_JacketFormalMilM01_Types_JacketFormalMilM01_GreenGallente.png", "iconType": "png" }, "24716": { "iconFile": "res:/UI/Asset/mannequin/outer/58936_Male_outer_JacketFormalMilM01_Types_JacketFormalMilM01_BrownMinmatar.png", "iconType": "png" }, "24717": { "iconFile": "res:/UI/Asset/mannequin/outer/58941_Female_Outer_JacketFormalMilF01_Types_JacketFormalMilF01_Caldari.png", "iconType": "png" }, "24718": { "iconFile": "res:/UI/Asset/mannequin/outer/58942_Female_Outer_JacketFormalMilF01_Types_JacketFormalMilF01_Amarr.png", "iconType": "png" }, "24719": { "iconFile": "res:/UI/Asset/mannequin/outer/58943_Female_Outer_JacketFormalMilF01_Types_JacketFormalMilF01_Gallente.png", "iconType": "png" }, "24720": { "iconFile": "res:/UI/Asset/mannequin/outer/58944_Female_Outer_JacketFormalMilF01_Types_JacketFormalMilF01_Minmatar.png", "iconType": "png" }, "24721": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58946_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_CaldariMil.png", "iconType": "png" }, "24722": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58947_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_AmarrMil.png", "iconType": "png" }, "24723": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58948_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_GallenteMil.png", "iconType": "png" }, "24724": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58949_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_MinmatarMil.png", "iconType": "png" }, "24725": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58951_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_BlueCalMil.png", "iconType": "png" }, "24726": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58952_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_BrownAmarrMil.png", "iconType": "png" }, "24727": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58953_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_GreenGallenteMil.png", "iconType": "png" }, "24728": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/58954_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_BrownMinmatarMil.png", "iconType": "png" }, "24730": { "iconFile": "res:/ui/texture/icons/modules/interdictionNullifier.png" }, "24731": { "iconFile": "res:/UI/Asset/mannequin/outer/59178_Male_outer_JacketMFBR01_Types_JacketMFBR01_MinmatarLiberation.png", "iconType": "png" }, "24732": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59179_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_MinmatarLiberation.png", "iconType": "png" }, "24733": { "iconFile": "res:/UI/Asset/mannequin/outer/59180_Female_Outer_JacketFBR01_Types_JacketFBR01_MinmatarLiberation.png", "iconType": "png" }, "24734": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59181_Female_bottomOuter_PantsMilF01_Types_PantsMilF01_MinmatarLiberation.png", "iconType": "png" }, "24735": { "iconFile": "res:/UI/Asset/mannequin/outer/59185_Male_outer_JacketMFBR01_Types_JacketMFBR01_GallenteFederation.png", "iconType": "png" }, "24737": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59187_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_GallenteFederation.png", "iconType": "png" }, "24738": { "iconFile": "res:/UI/Asset/mannequin/outer/59196_Female_Outer_JacketFBR01_Types_JacketFBR01_GallenteFederation.png", "iconType": "png" }, "24739": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59198_Female_bottomOuter_PantsMilF01_Types_PantsMilF01_GallenteFederation.png", "iconType": "png" }, "24740": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59199_Male_Tattoo_Head_TattooElabM_LD_01_Types_TattooElabM_LD_01.png", "iconType": "png" }, "24741": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59200_Female_Tattoo_Head_TattooElabM_LD_01_Types_TattooElabM_LD_01.png", "iconType": "png" }, "24742": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59201_Male_Tattoo_Head_TattooElabM_LD_02_Types_TattooElabM_LD_02.png", "iconType": "png" }, "24743": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59202_Female_Tattoo_Head_TattooElabM_LD_02_Types_TattooElabM_LD_02.png", "iconType": "png" }, "24744": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59221_Male_Tattoo_Head_TattooElabM_LD_03_Types_TattooElabM_LD_03.png", "iconType": "png" }, "24745": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59223_Female_Tattoo_Head_TattooElabM_LD_03_Types_TattooElabM_LD_03.png", "iconType": "png" }, "24746": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59226_Male_Tattoo_Head_TattooElabM_LD_04_Types_TattooElabM_LD_04.png", "iconType": "png" }, "24747": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59227_Female_Tattoo_Head_TattooElabM_LD_04_Types_TattooElabM_LD_04.png", "iconType": "png" }, "24748": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59228_Male_Tattoo_Head_TattooElabM_LD_05_Types_TattooElabM_LD_05.png", "iconType": "png" }, "24749": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59229_Female_Tattoo_Head_TattooElabM_LD_05_Types_TattooElabM_LD_05.png", "iconType": "png" }, "24750": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59230_Male_Tattoo_Head_TattooElabM_LD_06_Types_TattooElabM_LD_06.png", "iconType": "png" }, "24751": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59231_Female_Tattoo_Head_TattooElabM_LD_06_Types_TattooElabM_LD_06.png", "iconType": "png" }, "24752": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59232_Male_Tattoo_Head_TattooElabM_LD_07_Types_TattooElabM_LD_07.png", "iconType": "png" }, "24753": { "iconFile": "res:/UI/Asset/mannequin/tattoo_head/59233_Female_Tattoo_Head_TattooElabM_LD_07_Types_TattooElabM_LD_07.png", "iconType": "png" }, "24754": { "iconFile": "res:/UI/Asset/mannequin/outer/59366_Male_outer_JacketMFBR01_Types_JacketMFBR01_AmarrFoundation.png", "iconType": "png" }, "24755": { "iconFile": "res:/UI/Asset/mannequin/outer/59367_Female_Outer_JacketFBR01_Types_JacketFBR01_AmarrFoundation.png", "iconType": "png" }, "24756": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59368_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_AmarrFoundation.png", "iconType": "png" }, "24757": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59370_Female_bottomOuter_PantsMilF01_Types_PantsMilF01_AmarrFoundation.png", "iconType": "png" }, "24758": { "iconFile": "res:/UI/Asset/mannequin/outer/59405_Male_outer_JacketMFBR01_Types_JacketMFBR01_CaldariUnion.png", "iconType": "png" }, "24759": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59406_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_CaldariUnion.png", "iconType": "png" }, "24760": { "iconFile": "res:/UI/Asset/mannequin/outer/59407_Female_Outer_JacketFBR01_Types_JacketFBR01_CaldariUnion.png", "iconType": "png" }, "24761": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/59408_Female_bottomOuter_PantsMilF01_Types_PantsMilF01_CaldariUnion.png", "iconType": "png" }, "24770": { "iconFile": "res:/UI/Texture/Icons/44_32_23.png", "iconType": "png" }, "24771": { "iconFile": "res:/UI/Texture/Icons/44_32_40.png", "iconType": "png" }, "24773": { "iconFile": "res:/UI/Texture/Icons/44_32_21.png", "iconType": "png" }, "24774": { "iconFile": "res:/UI/Texture/Icons/44_32_17.png", "iconType": "png" }, "24776": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_NE.png" }, "24777": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_NE_large.png" }, "24778": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_NW.png" }, "24779": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_NW_large.png" }, "24780": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_SE.png" }, "24781": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_SE_large.png" }, "24782": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_SW.png" }, "24783": { "iconFile": "res:/UI/Texture/Icons/Inventory/ESS_reserveKey_64_SW_large.png" }, "24785": { "iconFile": "res:/ui/texture/icons/items.png" }, "24786": { "iconFile": "res:/ui/texture/icons/itemHangar.png" }, "24787": { "iconFile": "res:/ui/texture/icons/theAgency.png" }, "24788": { "iconFile": "res:/ui/texture/icons/[AIR] Online Button.png" }, "24789": { "iconFile": "res:/ui/texture/icons/applySkillpoints.png" }, "24790": { "iconFile": "res:/ui/texture/icons/filterIconLowSlot.png" }, "24791": { "iconFile": "res:/ui/texture/icons/[AIR] Neocom Menu Button.png" }, "24792": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_FrekiGacha_I.png", "iconType": "png" }, "24793": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_FrekiGacha_II.png", "iconType": "png" }, "24794": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_FrekiGacha_III.png", "iconType": "png" }, "24795": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_FrekiGacha_IV.png", "iconType": "png" }, "24796": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconLicense_FrekiGacha_01.png", "iconType": "png" }, "24797": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconLicense_FrekiGacha_02.png", "iconType": "png" }, "24798": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconLicense_FrekiGacha_03.png", "iconType": "png" }, "24799": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_MC108.png", "iconType": "png" }, "24800": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_MC308.png", "iconType": "png" }, "24801": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_MC708.png", "iconType": "png" }, "24802": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_RP108.png", "iconType": "png" }, "24803": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_RP308.png", "iconType": "png" }, "24804": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconZXJ_FrekiGacha_RP708.png", "iconType": "png" }, "24805": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_FrekiGacha_01.png", "iconType": "png" }, "24806": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_FrekiGacha_02.png", "iconType": "png" }, "24807": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_FrekiGacha_03.png", "iconType": "png" }, "24808": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_FrekiGacha_04.png", "iconType": "png" }, "24809": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/Linked_Status_Icon.png" }, "24810": { "iconFile": "res:/ui/texture/icons/[AIR] Docking.png" }, "24811": { "iconFile": "res:/ui/texture/icons/[AIR] Jump.png" }, "24812": { "iconFile": "res:/ui/texture/icons/[AIR] Stargate.png" }, "24813": { "iconFile": "res:/ui/texture/shared/brackets/Homestation_Icon.png" }, "24815": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_ShipCertification_01.png", "iconType": "png" }, "24816": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_ShipCertification_02.png", "iconType": "png" }, "24817": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_ShipCertification_03.png", "iconType": "png" }, "24818": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_ShipInsurance.png", "iconType": "png" }, "24819": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_ShipSkin03_64.png", "iconType": "png" }, "24820": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_ShipSkin04_64.png", "iconType": "png" }, "24821": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconCrate_ShipSkin05_64.png", "iconType": "png" }, "24823": { "iconFile": "res:/ui/texture/icons/[AIR] Jump Button.png" }, "24824": { "iconFile": "res:/UI/Texture/Icons/Inventory/IconAccelerator_Orange.png", "iconType": "png" }, "24826": { "iconFile": "res:/ui/texture/icons/Inventory/[AIR] Small Skill Injector.png" }, "24827": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60160_Male_Accessories_Glasses_EyeImp01_Types_EyeImpM01_Right_Ep.png", "iconType": "png" }, "24828": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/60161_Male_bottomOuter_PantsEngM01_Types_PantsEngM01_Ep.png", "iconType": "png" }, "24829": { "iconFile": "res:/UI/Asset/mannequin/feet/60162_Male_Feet_ShoesEngM01_Types_ShoesEngM01_Ep.png", "iconType": "png" }, "24830": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/60163_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V7_Ep.png", "iconType": "png" }, "24831": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/60164_Male_Makeup_BodyAugmentations_BodyAugmentation_M01_Types_BodyAugmentationM01_Ep.png", "iconType": "png" }, "24832": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60165_Male_Accessories_Glasses_Monocle_01_Types_MonocleM01_Right_Ep.png", "iconType": "png" }, "24833": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60166_Female_Accessories_Glasses_EyeImp01_Types_EyeImpF01_Right_Ep.png", "iconType": "png" }, "24834": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/60167_Female_bottomOuter_PantsEngF01_Types_PantsEngF01_Ep.png", "iconType": "png" }, "24835": { "iconFile": "res:/UI/Asset/mannequin/feet/60168_Female_Feet_ShoesEngF01_Types_ShoesEngF01_Ep.png", "iconType": "png" }, "24836": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/60169_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_Ep.png", "iconType": "png" }, "24837": { "iconFile": "res:/UI/Asset/mannequin/makeup_bodyaugmentations/60170_Female_Makeup_BodyAugmentations_BodyAugmentation_F01_Types_BodyAugmentationF01_Ep.png", "iconType": "png" }, "24838": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60171_Female_Accessories_Glasses_Monocle_01_Types_MonocleF01_Right_EP.png", "iconType": "png" }, "24839": { "iconFile": "res:/UI/Asset/mannequin/outer/60175_Male_outer_JacketMilM02_Types_JacketMilM02_AIR.png", "iconType": "png" }, "24840": { "iconFile": "res:/UI/Asset/mannequin/outer/60176_Female_Outer_JacketSLF_01_Types_JacketSLF_01_air.png", "iconType": "png" }, "24841": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_04a.png", "iconType": "png" }, "24842": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_05a.png", "iconType": "png" }, "24843": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_02a.png", "iconType": "png" }, "24844": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_03a.png", "iconType": "png" }, "24845": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_01a.png", "iconType": "png" }, "24846": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_04b.png", "iconType": "png" }, "24847": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_05b.png", "iconType": "png" }, "24848": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_02b.png", "iconType": "png" }, "24849": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_03b.png", "iconType": "png" }, "24850": { "iconFile": "res:/UI/Texture/Icons/Inventory/ZXJ_CSYQ_01b.png", "iconType": "png" }, "24851": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_CSYQ_I.png", "iconType": "png" }, "24852": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_CSYQ_II.png", "iconType": "png" }, "24853": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_CSYQ_III.png", "iconType": "png" }, "24854": { "iconFile": "res:/UI/Texture/Icons/Inventory/Accelerator_CSYQ_IV.png", "iconType": "png" }, "24855": { "iconFile": "res:/UI/Texture/Icons/Inventory/Crate_ShipSkin_Sakura.png", "iconType": "png" }, "24856": { "iconFile": "res:/UI/Texture/Icons/Inventory/Crate_Vangel.png", "iconType": "png" }, "24857": { "iconFile": "res:/ui/texture/icons/[AIR] PlusIcon.png" }, "24858": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_BattleshipCer_Amarr.png", "iconType": "png" }, "24859": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_BattleshipCer_Caldari.png", "iconType": "png" }, "24860": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_BattleshipCer_Gallente.png", "iconType": "png" }, "24861": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_BattleshipCer_Minmatar.png", "iconType": "png" }, "24862": { "iconFile": "res:/UI/Texture/Icons/Inventory/Icon_BattleshipCer_AdvancedWeaponUpgrade.png", "iconType": "png" }, "24872": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/60432_Male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_redblack.png", "iconType": "png" }, "24874": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/60434_Female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_redblack.png", "iconType": "png" }, "24875": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/60435_Male_topMiddle_TshirtM01_Types_TshirtM01_BR_CH.png", "iconType": "png" }, "24876": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/60436_Female_TopMiddle_TshirtF01_Types_TshirtF01_BR_CH.png", "iconType": "png" }, "24892": { "iconFile": "res:/ui/texture/icons/Modules/mutaDroneDamage.png" }, "24893": { "iconFile": "res:/ui/texture/icons/Modules/mutaDroneRange.png" }, "24894": { "iconFile": "res:/ui/texture/icons/Modules/mutaDroneSpeed.png" }, "24895": { "iconFile": "res:/ui/texture/icons/Modules/mutaDroneTank.png" }, "24904": { "iconFile": "res:/ui/texture/icons/quafe_green.png" }, "24905": { "iconFile": "res:/ui/texture/icons/Modules/mutaDroneModules.png" }, "24908": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60639_Male_Accessories_Glasses_Goggles_01_Types_goggles_01_min.png", "iconType": "png" }, "24914": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/60645_Female_Accessories_Glasses_Goggles_01_Types_goggles_01_min.png", "iconType": "png" }, "24916": { "iconFile": "res:/UI/Asset/mannequin/outer/60647_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_Min.png", "iconType": "png" }, "24924": { "iconFile": "res:/UI/Asset/mannequin/outer/60655_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Min.png", "iconType": "png" }, "24926": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/Linked_To_Beaon_Icon.png" }, "24968": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_blue.png" }, "24969": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_green.png" }, "24970": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_red.png" }, "24971": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_purple.png" }, "24972": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_orange.png" }, "24973": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_white.png" }, "24974": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_blue.png" }, "24975": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_green.png" }, "24976": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_red.png" }, "24977": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_purple.png" }, "24978": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_orange.png" }, "24979": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_white.png" }, "24980": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_blue.png" }, "24981": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_green.png" }, "24982": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_red.png" }, "24983": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_purple.png" }, "24984": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_orange.png" }, "24985": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_white.png" }, "24986": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_blue.png" }, "24987": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_green.png" }, "24988": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_red.png" }, "24989": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_purple.png" }, "24990": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_orange.png" }, "24991": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_white.png" }, "24992": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_blue.png" }, "24993": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_green.png" }, "24994": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_red.png" }, "24995": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_purple.png" }, "24996": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_orange.png" }, "24997": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_white.png" }, "24998": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_blue.png" }, "24999": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_green.png" }, "25000": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_red.png" }, "25001": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_purple.png" }, "25002": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_orange.png" }, "25003": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_white.png" }, "25021": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_blue_moon.png" }, "25022": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_blue_moon.png" }, "25023": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_blue_moon.png" }, "25024": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_blue_moon.png" }, "25025": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_blue_moon.png" }, "25026": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_blue_moon.png" }, "25027": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_white_moon.png" }, "25028": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_white_moon.png" }, "25029": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_white_moon.png" }, "25030": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_white_moon.png" }, "25031": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_white_moon.png" }, "25032": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_white_moon.png" }, "25033": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_purple_moon.png" }, "25034": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_purple_moon.png" }, "25035": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_purple_moon.png" }, "25036": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_purple_moon.png" }, "25037": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_purple_moon.png" }, "25038": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_purple_moon.png" }, "25039": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_red_moon.png" }, "25040": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_red_moon.png" }, "25041": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_red_moon.png" }, "25042": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_red_moon.png" }, "25043": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_red_moon.png" }, "25044": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_red_moon.png" }, "25045": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_1_orange_moon.png" }, "25046": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_1_orange_moon.png" }, "25047": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_1_orange_moon.png" }, "25048": { "iconFile": "res:/UI/Texture/Icons/Ammo/a_2_orange_moon.png" }, "25049": { "iconFile": "res:/UI/Texture/Icons/Ammo/b_2_orange_moon.png" }, "25050": { "iconFile": "res:/UI/Texture/Icons/Ammo/c_2_orange_moon.png" }, "25051": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/61532_Female_TopMiddle_ShirtQF01_Types_shirtqf01_drw.png", "iconType": "png" }, "25052": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/61533_Male_topMiddle_ShirtQM01_Types_shirtqm01_drw.png", "iconType": "png" }, "25054": { "iconFile": "res:/UI/Asset/mannequin/outer/61535_Female_Outer_ScarfF01_Types_ScarfF01_drw.png", "iconType": "png" }, "25055": { "iconFile": "res:/UI/Asset/mannequin/outer/61536_Male_outer_ScarfM01_Types_ScarfM01_drw.png", "iconType": "png" }, "25060": { "iconFile": "res:/ui/texture/icons/5_64_12.png" }, "25068": { "iconFile": "res:/UI/Texture/Icons/Inventory/WMFilamentSmall.png", "iconType": "png" }, "25069": { "iconFile": "res:/UI/Texture/Icons/Inventory/WMFilamentLarge.png", "iconType": "png" }, "25076": { "iconFile": "res:/UI/Asset/mannequin/outer/61848_Female_Outer_OutfitDW_F01_Types_OutfitDW_F01.png", "iconType": "png" }, "25090": { "iconFile": "res:/UI/Asset/mannequin/outer/61949_Male_outer_OutfitDW_M01_Types_OutfitDW_M01.png", "iconType": "png" }, "25091": { "iconFile": "res:/ui/texture/icons/Inventory/AIR-NPE/air_blackbox.png" }, "25092": { "iconFile": "res:/ui/texture/icons/Inventory/AIR-NPE/air_asteroid.png" }, "25117": { "iconFile": "res:/ui/texture/icons/1337_64_11.png" }, "25120": { "iconFile": "res:/ui/texture/WindowIcons/wallet.png" }, "25127": { "iconFile": "res:/ui/texture/classes/Fitting/warningSkills.png" }, "25128": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket01.png", "iconType": "png" }, "25129": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket02.png", "iconType": "png" }, "25130": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket03.png", "iconType": "png" }, "25131": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket04.png", "iconType": "png" }, "25132": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket05.png", "iconType": "png" }, "25133": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket06.png", "iconType": "png" }, "25134": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket07.png", "iconType": "png" }, "25135": { "iconFile": "res:/UI/Texture/Icons/Inventory/DWTrinket08.png", "iconType": "png" }, "25137": { "iconFile": "res:/ui/texture/classes/DockPanel/closeButton.png" }, "25138": { "iconFile": "res:/ui/texture/classes/Window/btnClose.png" }, "25139": { "iconFile": "res:/ui/texture/shared/Brackets/Asteroid_Small.png" }, "25140": { "iconFile": "res:/ui/texture/icons/44_32_35.png" }, "25141": { "iconFile": "res:/ui/texture/icons/44_32_59.png" }, "25143": { "iconFile": "res:/ui/texture/shared/actions/startConversation.png" }, "25148": { "iconFile": "res:/UI/Texture/classes/industry/centerbar/arrows.png" }, "25149": { "iconFile": "res:/UI/Asset/mannequin/outer/62750_Male_outer_ExplorationSuit_M01_Types_ExplorationSuit_M01_AIR.png", "iconType": "png" }, "25150": { "iconFile": "res:/UI/Texture/Icons/Modules/asteroid_M.png" }, "25151": { "iconFile": "res:/UI/Texture/Icons/Modules/asteroid_L.png" }, "25152": { "iconFile": "res:/UI/Texture/Icons/Modules/asteroid_XL.png" }, "25153": { "iconFile": "res:/UI/Texture/Icons/Modules/gas_M.png" }, "25154": { "iconFile": "res:/UI/Texture/Icons/Modules/gas_L.png" }, "25155": { "iconFile": "res:/UI/Texture/Icons/Modules/gas_XL.png" }, "25156": { "iconFile": "res:/UI/Texture/Icons/Modules/ice_L.png" }, "25157": { "iconFile": "res:/UI/Texture/Icons/Modules/ice_XL.png" }, "25158": { "iconFile": "res:/UI/Texture/Icons/Modules/mercoxit_L.png" }, "25159": { "iconFile": "res:/UI/Texture/Icons/Modules/mercoxit_XL.png" }, "25160": { "iconFile": "res:/UI/Texture/Icons/Modules/moon_L.png" }, "25161": { "iconFile": "res:/UI/Texture/Icons/Modules/moon_XL.png" }, "25163": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Aqua.png" }, "25164": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Blue.png" }, "25165": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Green.png" }, "25166": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Lime.png" }, "25167": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Orange.png" }, "25168": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Purple.png" }, "25169": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Red.png" }, "25170": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Yellow.png" }, "25171": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Asteroid_Bezdnacine.png" }, "25172": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Asteroid_Rakovene.png" }, "25173": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_Asteroid_Talassonite.png" }, "25174": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_R4.png" }, "25175": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_R8.png" }, "25176": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_R16.png" }, "25177": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_R32.png" }, "25178": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_R64.png" }, "25179": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_JackpotR4.png" }, "25180": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_JackpotR8.png" }, "25181": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_JackpotR16.png" }, "25182": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_JackpotR32.png" }, "25183": { "iconFile": "res:/UI/Texture/Icons/Inventory/compressed_moonAsteroid_JackpotR64.png" }, "25185": { "iconFile": "res:/UI/Asset/mannequin/outer/63051_Male_outer_JacketCMM01_Types_JacketCMM01_ep.png", "iconType": "png" }, "25186": { "iconFile": "res:/UI/Asset/mannequin/outer/63052_Female_Outer_JacketCMF01_Types_JacketCMF01_ep.png", "iconType": "png" }, "25188": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63054_Male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_ep.png", "iconType": "png" }, "25189": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63055_Female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_ep.png", "iconType": "png" }, "25190": { "iconFile": "res:/UI/Asset/mannequin/outer/63056_Female_Outer_ExplorationSuit_F01_Types_ExplorationSuit_F01_Air.png", "iconType": "png" }, "25192": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/63058_Male_Accessories_Glasses_Glasses_Slick_01_Types_Glasses_Slick_01_Ep.png", "iconType": "png" }, "25195": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/63061_Female_Accessories_Glasses_Glasses_Slick_01_Types_Glasses_Slick_01_Ep.png", "iconType": "png" }, "25197": { "iconFile": "res:/UI/Texture/Shared/Brackets/WreckNPC_Large_.png", "iconType": "png" }, "25198": { "iconFile": "res:/UI/Asset/mannequin/outer/63112_Male_outer_JacketPrtm01_Types_JacketPrtm01_guristashunt_b.png", "iconType": "png" }, "25199": { "iconFile": "res:/UI/Asset/mannequin/feet/63113_Male_Feet_BootsPrtm01_Types_BootsPrtm01_guristashunt_b.png", "iconType": "png" }, "25200": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63114_Male_bottomOuter_PantsPrtm01_Types_PantsPrtm01_guristashunt_b.png", "iconType": "png" }, "25201": { "iconFile": "res:/UI/Asset/mannequin/outer/63115_Female_Outer_JacketPrtF01_Types_JacketPrtF01_guristashunt_b.png", "iconType": "png" }, "25209": { "iconFile": "res:/UI/Asset/mannequin/feet/63123_Female_Feet_BootsPrtF01_Types_BootsPrtF01_guristashunt_b.png", "iconType": "png" }, "25210": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63124_Female_bottomOuter_PantsPrtF01_Types_PantsPrtF01_guristashunt_b.png", "iconType": "png" }, "25215": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/63135_Male_Accessories_Masks_Mask_Cyberpunk_M01_Types_Mask_Cyberpunk_M01.png", "iconType": "png" }, "25218": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/63138_Female_Accessories_Masks_Mask_Cyberpunk_F01_Types_Mask_Cyberpunk_F01.png", "iconType": "png" }, "25220": { "iconFile": "res:/UI/Asset/mannequin/outer/63246_Male_outer_Hoodie_M01_Types_Hoodie_M01_XIX.png", "iconType": "png" }, "25227": { "iconFile": "res:/UI/Asset/mannequin/outer/63253_Male_outer_Hoodie_M01_Types_Hoodie_M01_XIX_HQ.png", "iconType": "png" }, "25231": { "iconFile": "res:/UI/Asset/mannequin/outer/63257_Female_Outer_Hoodie_F01_Types_Hoodie_F01_XIX.png", "iconType": "png" }, "25234": { "iconFile": "res:/UI/Asset/mannequin/outer/63260_Female_Outer_Hoodie_F01_Types_Hoodie_F01_XIX_HQ.png", "iconType": "png" }, "25235": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAGreenI.png", "iconType": "png" }, "25236": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAGreenII.png", "iconType": "png" }, "25237": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAGreenIII.png", "iconType": "png" }, "25238": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAGreenIV.png", "iconType": "png" }, "25239": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAGreenV.png", "iconType": "png" }, "25240": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterABlueI.png", "iconType": "png" }, "25241": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterABlueII.png", "iconType": "png" }, "25242": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterABlueIII.png", "iconType": "png" }, "25243": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterABlueIV.png", "iconType": "png" }, "25244": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterABlueV.png", "iconType": "png" }, "25245": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterARedI.png", "iconType": "png", "obsolete": 0 }, "25246": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterARedII.png", "iconType": "png" }, "25247": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterARedIII.png", "iconType": "png" }, "25248": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterARedIV.png", "iconType": "png" }, "25249": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterARedV.png", "iconType": "png" }, "25250": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAYellowI.png", "iconType": "png" }, "25251": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAYellowII.png", "iconType": "png" }, "25252": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAYellowIII.png", "iconType": "png" }, "25253": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAYellowIV.png", "iconType": "png" }, "25254": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterAYellowV.png", "iconType": "png" }, "25255": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBGreenI.png", "iconType": "png" }, "25256": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBGreenII.png", "iconType": "png" }, "25257": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBGreenIII.png", "iconType": "png" }, "25258": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBGreenIV.png", "iconType": "png" }, "25259": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBGreenV.png", "iconType": "png" }, "25260": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBBlueI.png", "iconType": "png" }, "25261": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBBlueII.png", "iconType": "png" }, "25262": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBBlueIII.png", "iconType": "png" }, "25263": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBBlueIV.png", "iconType": "png" }, "25264": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBBlueV.png", "iconType": "png" }, "25265": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBRedI.png", "iconType": "png" }, "25266": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBRedII.png", "iconType": "png" }, "25267": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBRedIII.png", "iconType": "png" }, "25268": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBRedIV.png", "iconType": "png" }, "25269": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBRedV.png", "iconType": "png" }, "25270": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBYellowI.png", "iconType": "png" }, "25271": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBYellowII.png", "iconType": "png" }, "25272": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBYellowIII.png", "iconType": "png" }, "25273": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBYellowIV.png", "iconType": "png" }, "25274": { "iconFile": "res:/UI/Texture/Icons/Inventory/BoosterBYellowV.png", "iconType": "png" }, "25277": { "iconFile": "res:/ui/texture/icons/inventory/dli_booster_icon.png" }, "25278": { "iconFile": "res:/ui/texture/icons/inventory/dli_filament_icon.png" }, "25279": { "iconFile": "res:/ui/texture/icons/inventory/dli_isk_icon.png" }, "25280": { "iconFile": "res:/ui/texture/icons/inventory/dli_skin_icon.png" }, "25281": { "iconFile": "res:/ui/texture/icons/inventory/dli_sp_icon.png" }, "25283": { "iconFile": "res:/ui/texture/icons/5_64_3.png" }, "25284": { "iconFile": "res:/ui/texture/icons/inventory/dli_booster_icon_green.png", "iconType": "png" }, "25285": { "iconFile": "res:/ui/texture/icons/inventory/dli_booster_icon_blue.png", "iconType": "png" }, "25286": { "iconFile": "res:/ui/texture/icons/inventory/dli_booster_icon_purple.png", "iconType": "png" }, "25287": { "iconFile": "res:/ui/texture/icons/inventory/dli_filament_icon_green.png", "iconType": "png" }, "25288": { "iconFile": "res:/ui/texture/icons/inventory/dli_filament_icon_blue.png", "iconType": "png" }, "25289": { "iconFile": "res:/ui/texture/icons/inventory/dli_filament_icon_purple.png", "iconType": "png" }, "25290": { "iconFile": "res:/ui/texture/icons/inventory/dli_isk_icon_green.png", "iconType": "png" }, "25291": { "iconFile": "res:/ui/texture/icons/inventory/dli_isk_icon_blue.png", "iconType": "png" }, "25292": { "iconFile": "res:/ui/texture/icons/inventory/dli_isk_icon_purple.png", "iconType": "png" }, "25293": { "iconFile": "res:/ui/texture/icons/inventory/dli_skin_icon_green.png", "iconType": "png" }, "25294": { "iconFile": "res:/ui/texture/icons/inventory/dli_skin_icon_blue.png", "iconType": "png" }, "25295": { "iconFile": "res:/ui/texture/icons/inventory/dli_skin_icon_purple.png", "iconType": "png" }, "25296": { "iconFile": "res:/ui/texture/icons/inventory/dli_sp_icon_green.png", "iconType": "png" }, "25297": { "iconFile": "res:/ui/texture/icons/inventory/dli_sp_icon_blue.png", "iconType": "png" }, "25298": { "iconFile": "res:/ui/texture/icons/inventory/dli_sp_icon_purple.png", "iconType": "png" }, "25299": { "iconFile": "res:/UI/Asset/mannequin/outer/63747_Male_outer_JacketFormalMilM01_Types_JacketFormalMilM01_Caldari_FF.png", "iconType": "png" }, "25300": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63748_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_BlackFF.png", "iconType": "png" }, "25301": { "iconFile": "res:/UI/Asset/mannequin/outer/63749_Female_Outer_JacketFormalMilF01_Types_JacketFormalMilF01_Caldari_FF.png", "iconType": "png" }, "25302": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/63750_Female_bottomOuter_PantsCorpBusinessF01_Types_PantsCorpBusinessF01_BlackFF.png", "iconType": "png" }, "25303": { "iconFile": "res:/UI/Asset/mannequin/outer/63789_Male_outer_JacketMFBR01_Types_JacketMFBR01_Race.png", "iconType": "png" }, "25304": { "iconFile": "res:/UI/Asset/mannequin/outer/63790_Female_Outer_JacketFBR01_Types_JacketFBR01_race.png", "iconType": "png" }, "25305": { "iconFile": "res:/UI/Texture/Shared/Brackets/largeCollidableStructure.png" }, "25311": { "iconFile": "res:/dx9/model/ship/caldari/shuttle/cs1/icons/317_128.png", "iconType": "png" }, "25314": { "iconFile": "res:/UI/Asset/mannequin/outer/64195_Female_Outer_JacketFBR01_Types_JacketFBR01_race_hq.png", "iconType": "png" }, "25315": { "iconFile": "res:/UI/Asset/mannequin/outer/64196_Male_outer_JacketMFBR01_Types_JacketMFBR01_Race_HQ.png", "iconType": "png" }, "25328": { "iconFile": "res:/ui/texture/icons/inventory/CareerPortal/loot_crate64_enforcer.png", "iconType": "png" }, "25329": { "iconFile": "res:/ui/texture/icons/inventory/CareerPortal/loot_crate64_explorer.png", "iconType": "png" }, "25330": { "iconFile": "res:/ui/texture/icons/inventory/CareerPortal/loot_crate64_industrial.png", "iconType": "png" }, "25331": { "iconFile": "res:/ui/texture/icons/inventory/CareerPortal/loot_crate64_sof.png", "iconType": "png" }, "25336": { "iconFile": "res:/UI/Asset/mannequin/hair/64201_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Lib_HQ.png", "iconType": "png" }, "25337": { "iconFile": "res:/UI/Asset/mannequin/hair/64202_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Lib_HQ.png", "iconType": "png" }, "25338": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/64203_Female_TopMiddle_TshirtF01_Types_TshirtF01_Lib_HQ.png", "iconType": "png" }, "25339": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/64204_Male_topMiddle_TshirtM01_Types_TshirtM01_Lib_HQ.png", "iconType": "png" }, "25340": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/64268_Male_topMiddle_TshirtM01_Types_TshirtM01_Lib.png", "iconType": "png" }, "25341": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/64269_Female_TopMiddle_TshirtF01_Types_TshirtF01_Lib.png", "iconType": "png" }, "25342": { "iconFile": "res:/UI/Asset/mannequin/hair/64270_Male_hair_HeadWear_Cap_M01_Types_HeadWear_Cap_M01_Lib.png", "iconType": "png" }, "25343": { "iconFile": "res:/UI/Asset/mannequin/hair/64271_Female_hair_HeadWear_Cap_F01_Types_HeadWear_Cap_F01_Lib.png", "iconType": "png" }, "25348": { "iconFile": "res:/UI/Asset/mannequin/outer/64377_Female_Outer_RobeF01_Types_RobeAF01_AmarrFoundation.png", "iconType": "png" }, "25349": { "iconFile": "res:/UI/Asset/mannequin/outer/64378_Female_Outer_RobeF01_Types_RobeAF01_AmarrFoundation_HQ.png", "iconType": "png" }, "25350": { "iconFile": "res:/UI/Asset/mannequin/outer/64379_Male_outer_RobeAM01_Types_RobeAM01_AmarrFoundation.png", "iconType": "png" }, "25351": { "iconFile": "res:/UI/Asset/mannequin/outer/64380_Male_outer_RobeAM01_Types_RobeAM01_AmarrFoundation_HQ.png", "iconType": "png" }, "25354": { "iconFile": "res:/UI/Texture/WindowIcons/airCareerProgram.png", "iconType": "png" }, "25355": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Pressurized_Oxygen_64.png" }, "25356": { "iconFile": "res:/UI/Texture/Icons/CapitalShipProduction/Reinforce_Carbon_Fibre_64.png" }, "25368": { "iconFile": "res:/UI/Asset/mannequin/outer/70838_Male_outer_JacketCM01_R_Types_JacketCM01_R_Commerce.png", "iconType": "png" }, "25369": { "iconFile": "res:/UI/Asset/mannequin/outer/70839_Male_outer_JacketCM01_R_Types_JacketCM01_R_Ishukone.png", "iconType": "png" }, "25370": { "iconFile": "res:/UI/Asset/mannequin/outer/70840_Male_outer_JacketCM01_R_Types_JacketCM01_R_CBD.png", "iconType": "png" }, "25371": { "iconFile": "res:/UI/Asset/mannequin/outer/70841_Male_outer_JacketCM01_R_Types_JacketCM01_R_Hyasyoda.png", "iconType": "png" }, "25372": { "iconFile": "res:/UI/Asset/mannequin/outer/70842_Male_outer_JacketCM01_R_Types_JacketCM01_R_Kaalakiota.png", "iconType": "png" }, "25373": { "iconFile": "res:/UI/Asset/mannequin/outer/70843_Male_outer_JacketCM01_R_Types_JacketCM01_R_Wiyrkomi.png", "iconType": "png" }, "25374": { "iconFile": "res:/UI/Asset/mannequin/outer/70844_Male_outer_JacketCM01_R_Types_JacketCM01_R_LaiDai.png", "iconType": "png" }, "25375": { "iconFile": "res:/UI/Asset/mannequin/outer/70845_Male_outer_JacketCM01_R_Types_JacketCM01_R_Sukuuvestaa.png", "iconType": "png" }, "25376": { "iconFile": "res:/UI/Asset/mannequin/outer/70846_Male_outer_JacketCM01_R_Types_JacketCM01_R_Nugoeihuvi.png", "iconType": "png" }, "25377": { "iconFile": "res:/UI/Asset/mannequin/outer/70847_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Commerce.png", "iconType": "png" }, "25378": { "iconFile": "res:/UI/Asset/mannequin/outer/70848_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Ishukone.png", "iconType": "png" }, "25379": { "iconFile": "res:/UI/Asset/mannequin/outer/70849_Female_Outer_JacketCF01_R_Types_JacketCF01_R_CBD.png", "iconType": "png" }, "25380": { "iconFile": "res:/UI/Asset/mannequin/outer/70850_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Hyasyoda.png", "iconType": "png" }, "25381": { "iconFile": "res:/UI/Asset/mannequin/outer/70851_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Kaalakiota.png", "iconType": "png" }, "25382": { "iconFile": "res:/UI/Asset/mannequin/outer/70852_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Wiyrkomi.png", "iconType": "png" }, "25383": { "iconFile": "res:/UI/Asset/mannequin/outer/70853_Female_Outer_JacketCF01_R_Types_JacketCF01_R_LaiDai.png", "iconType": "png" }, "25384": { "iconFile": "res:/UI/Asset/mannequin/outer/70854_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Sukuuvestaa.png", "iconType": "png" }, "25385": { "iconFile": "res:/UI/Asset/mannequin/outer/70855_Female_Outer_JacketCF01_R_Types_JacketCF01_R_Nugoeihuvi.png", "iconType": "png" }, "25447": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/73395_Male_bottomOuter_PantsCorpBusinessM01_Types_PantsCorpBusinessM01_DarkTurquoise.png", "iconType": "png" }, "25448": { "iconFile": "res:/UI/Asset/mannequin/outer/73396_Male_outer_JacketCorpBusinessM01_Types_JacketCorpBusinessM01_DarkTurquoise.png", "iconType": "png" }, "25451": { "iconFile": "res:/UI/Asset/mannequin/outer/73407_Female_Outer_JacketMilF02_Types_JacketMilF02_WhiteTurquoise.png", "iconType": "png" }, "25452": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/73423_Female_Accessories_Masks_Mask_Cyberpunk_F01_Types_Mask_Cyberpunk_F01_Tan_Worn.png", "iconType": "png" }, "25453": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/73424_Female_Accessories_Glasses_Goggles_01_Types_goggles_01_tan_worn.png", "iconType": "png" }, "25454": { "iconFile": "res:/UI/Asset/mannequin/accessories_masks/73425_Male_Accessories_Masks_Mask_Cyberpunk_M01_Types_Mask_Cyberpunk_M01_Tan_Worn.png", "iconType": "png" }, "25455": { "iconFile": "res:/UI/Asset/mannequin/accessories_glasses/73426_Male_Accessories_Glasses_Goggles_01_Types_goggles_01_tan_worn.png", "iconType": "png" }, "25456": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/73436_Male_Makeup_Augmentations_Face_Paint_M01_Types_Face_Paint_M01_V7_Red.png", "iconType": "png" }, "25457": { "iconFile": "res:/UI/Asset/mannequin/makeup_augmentations/73437_Female_Makeup_Augmentations_Face_Paint_F01_Types_Face_Paint_F01_V3_Red.png", "iconType": "png" }, "25463": { "iconFile": "res:/ui/texture/corps/EverMore.png", "iconType": "png" }, "25465": { "iconFile": "res:/ui/texture/corps/paragon.png", "iconType": "png" }, "25467": { "iconFile": "res:/ui/texture/classes/fitting/cosmetics/alliance_logo_128px.png", "iconType": "png" }, "25468": { "iconFile": "res:/ui/texture/classes/fitting/cosmetics/corp_logo_128px.png", "iconType": "png" }, "25475": { "iconFile": "res:/ui/texture/icons/evermarks.png" }, "25547": { "iconFile": "res:/ui/texture/WindowIcons/assets.png" }, "25621": { "iconFile": "res:/UI/Texture/Icons/Modules/amarrLance.png" }, "25622": { "iconFile": "res:/UI/Texture/Icons/Modules/caldariLance.png" }, "25624": { "iconFile": "res:/UI/Texture/Icons/Modules/gallenteLance.png" }, "25625": { "iconFile": "res:/UI/Texture/Icons/Modules/minmatarLance.png" }, "25629": { "iconFile": "res:/ui/texture/icons/35_64_13.png" }, "25631": { "iconFile": "res:/ui/texture/icons/35_64_11.png" }, "25632": { "iconFile": "res:/ui/texture/icons/36_64_6.png" }, "25633": { "iconFile": "res:/ui/texture/icons/36_64_7.png" }, "25634": { "iconFile": "res:/ui/texture/icons/35_64_16.png" }, "25666": { "iconFile": "res:/ui/texture/icons/43_64_12_d.png" }, "25668": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_1.png" }, "25669": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_2.png" }, "25670": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_3.png" }, "25671": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_4.png" }, "25672": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_5.png" }, "25673": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_6.png" }, "25674": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_7.png" }, "25675": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_17.png" }, "25676": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_8.png" }, "25677": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_9.png" }, "25678": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_10.png" }, "25679": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_11.png" }, "25680": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_12.png" }, "25681": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_13.png" }, "25682": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_14.png" }, "25683": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_15.png" }, "25684": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_16.png" }, "25685": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_18.png" }, "25686": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_19.png" }, "25687": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_20.png" }, "25688": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_21.png" }, "25689": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_22.png" }, "25690": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_23.png" }, "25691": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_24.png" }, "25692": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_25.png" }, "25693": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_26.png" }, "25694": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_27.png" }, "25695": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_28.png" }, "25696": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_29.png" }, "25697": { "iconFile": "res:/ui/texture/icons/Inventory/WVItems/64/wv_64_30.png" }, "25801": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/safeZone.png" }, "25802": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/deathZoneGracePeriod.png" }, "25803": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/deathZone.png" }, "25833": { "iconFile": "res:/UI/Texture/Corps/deathlessCircleBase.png" }, "25849": { "iconFile": "res:/ui/texture/icons/84_64_15.png" }, "25862": { "iconFile": "res:/ui/texture/icons/26_64_5.png" }, "25870": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/towed_status_icon.png" }, "25874": { "iconFile": "res:/UI/Texture/classes/Seasons/omega_32x32.png", "iconType": "png" }, "25994": { "iconFile": "res:/ui/texture/icons/10_64_17.png" }, "25998": { "iconFile": "res:/ui/texture/icons/43_64_12_n.png" }, "26002": { "iconFile": "res:/ui/texture/icons/10_64_18.png" }, "26004": { "iconFile": "res:/ui/texture/icons/129_reagentice_64.png" }, "26005": { "iconFile": "res:/ui/texture/icons/129_reagentlava_64.png" }, "26016": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalBattlefieldFilamentL1.png" }, "26017": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalBattlefieldFilamentL2.png" }, "26018": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalBattlefieldFilamentL3.png" }, "26019": { "iconFile": "res:/UI/Texture/Icons/Inventory/abyssalBattlefieldFilamentL4.png" }, "26025": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/82040_Female_bottomOuter_PantsALF_01_Types_PantsALF_01_jeansblue.png", "iconType": "png" }, "26026": { "iconFile": "res:/UI/Asset/mannequin/bottomouter/82041_Male_bottomOuter_PantsMilM01_Types_PantsMilM01_jeansblue.png", "iconType": "png" }, "26038": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/angel_neurolink_64.png" }, "26039": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/bloodraider_neurolink_64.png" }, "26040": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/guristas_neurolink_64.png" }, "26041": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/morduslegion_neurolink_64.png" }, "26042": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/sansha_neurolink_64.png" }, "26043": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/serpentis_neurolink_64.png" }, "26044": { "iconFile": "res:/ui/texture/icons/pirateshipneurolinks/soe_neurolink_64.png" }, "26048": { "iconFile": "res:/UI/Texture/Icons/Inventory/resource_icon_alignment_64.png" }, "26049": { "iconFile": "res:/UI/Texture/Icons/Inventory/resource_icon_fermonics_64.png" }, "26050": { "iconFile": "res:/UI/Texture/Icons/Inventory/resource_icon_Kerr_64.png" }, "26051": { "iconFile": "res:/ui/texture/icons/inventory/resource_icon_bulk_64.png" }, "26052": { "iconFile": "res:/UI/Texture/Icons/Inventory/metallic_64.png" }, "26053": { "iconFile": "res:/UI/Texture/Icons/Inventory/nanocoating_64.png" }, "26054": { "iconFile": "res:/UI/Texture/Icons/Inventory/pattern_64.png" }, "26055": { "iconFile": "res:/UI/Texture/Icons/Inventory/resource_icon_bulk_64.png" }, "26056": { "iconFile": "res:/UI/Texture/Icons/SKINR.png" }, "26062": { "iconFile": "res:/UI/Texture/eveicon/category_icons/sov_hub_32px.png" }, "26063": { "iconFile": "res:/UI/Texture/eveicon/category_icons/skyhook_32px.png" }, "26064": { "iconFile": "res:/UI/Texture/eveicon/category_icons/reagents_skyhook_32px.png" }, "26065": { "iconFile": "res:/UI/Texture/eveicon/category_icons/auto_moon_miner_32px.png" }, "26069": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_metallic_000_080_100.png" }, "26070": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_satin_000_100_100.png" }, "26071": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_green_satin_000_100_050.png" }, "26072": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_lavender_satin_000_100_050.png" }, "26073": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_satin_000_080_100.png" }, "26074": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_satin_000_100_010.png" }, "26075": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_satin_000_100_100.png" }, "26076": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_plum_satin_000_100_010.png" }, "26077": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_purple_satin_000_100_050.png" }, "26078": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_satin_000_080_100.png" }, "26079": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_satin_000_100_010.png" }, "26080": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_satin_000_100_100.png" }, "26081": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_redorange_satin_000_100_100.png" }, "26082": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_rosered_satin_000_080_100.png" }, "26083": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_satin_000_060_100.png" }, "26084": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_satin_000_100_010.png" }, "26085": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_turmeric_satin_000_100_100.png" }, "26086": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_violet_satin_000_060_100.png" }, "26087": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_brass_rough_013_051_089.png" }, "26088": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_gloss_000_100_100.png" }, "26089": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_berry_gloss_000_100_100.png" }, "26090": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_gloss_000_080_100.png" }, "26091": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_gloss_000_100_001.png" }, "26092": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_gloss_000_100_050.png" }, "26093": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_gloss_000_000_000.png" }, "26094": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_gloss_000_000_030.png" }, "26095": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_gloss_000_000_100.png" }, "26096": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_chartreuse_gloss_000_100_001.png" }, "26097": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_gloss_000_100_050.png" }, "26098": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_clover_gloss_000_100_100.png" }, "26099": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cyan_gloss_000_100_100.png" }, "26100": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_gloss_000_100_010.png" }, "26101": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_gloss_000_100_100.png" }, "26102": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_green_gloss_000_100_050.png" }, "26103": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_lavender_gloss_000_100_050.png" }, "26104": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_gloss_000_080_100.png" }, "26105": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_gloss_000_100_010.png" }, "26106": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_gloss_000_100_100.png" }, "26107": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_plum_gloss_000_100_010.png" }, "26108": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_purple_gloss_000_100_050.png" }, "26109": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_gloss_000_080_100.png" }, "26110": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_gloss_000_100_010.png" }, "26111": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_gloss_000_100_100.png" }, "26112": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_redorange_gloss_000_100_100.png" }, "26113": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_rosered_gloss_000_080_100.png" }, "26114": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_gloss_000_060_100.png" }, "26115": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_gloss_000_100_010.png" }, "26116": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_turmeric_gloss_000_100_100.png" }, "26117": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_violet_gloss_000_060_100.png" }, "26118": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_brushed_000_000_030.png" }, "26119": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_brushed_000_100_001.png" }, "26120": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cobalt_polished_023_004_070.png" }, "26121": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_gold_polished_012_060_094.png" }, "26122": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_lavender_brushed_000_100_050.png" }, "26123": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_pea_metallic_000_100_010.png" }, "26124": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_rosered_brushed_000_030_100.png" }, "26125": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_turquoise_polished_000_100_001.png" }, "26126": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_AngledStripe_01_128.png" }, "26127": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Camo_01_128.png" }, "26128": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Camo_Dazzle_02_128.png" }, "26129": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Checker_01_128.png" }, "26130": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Curves_01_128.png" }, "26131": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Gradient_128.png" }, "26132": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Gradient_Crystal_128.png" }, "26133": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_gradient_random_square_128.png" }, "26134": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Halfcut_Stripes_14_128.png" }, "26135": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Hex_Hex_128.png" }, "26136": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Paint_Rough_01_128.png" }, "26137": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_rustGradient_02_128.png" }, "26138": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/patterns/cosm_Squares_01_128.png" }, "26139": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_matt_000_100_010.png" }, "26140": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_matt_000_100_100.png" }, "26141": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_berry_matt_000_100_100.png" }, "26142": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_matt_000_080_100.png" }, "26143": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_matt_000_100_001.png" }, "26144": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_matt_000_100_050.png" }, "26145": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_matt_000_000_000.png" }, "26146": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_matt_000_000_030.png" }, "26147": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_matt_000_000_100.png" }, "26148": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_chartreuse_matt_000_100_001.png" }, "26149": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_matt_000_100_050.png" }, "26150": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_clover_matt_000_100_100.png" }, "26151": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cyan_matt_000_100_100.png" }, "26152": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_matt_000_100_010.png" }, "26153": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_matt_000_100_100.png" }, "26154": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_green_matt_000_100_050.png" }, "26155": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_lavender_matt_000_100_050.png" }, "26156": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_matt_000_080_100.png" }, "26157": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_matt_000_100_010.png" }, "26158": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_orange_matt_000_100_100.png" }, "26159": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_plum_matt_000_100_010.png" }, "26160": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_purple_matt_000_100_050.png" }, "26161": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_matt_000_080_100.png" }, "26162": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_matt_000_100_010.png" }, "26163": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_red_matt_000_100_100.png" }, "26164": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_redorange_matt_000_100_100.png" }, "26165": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_rosered_matt_000_080_100.png" }, "26166": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_matt_000_060_100.png" }, "26167": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royal_matt_000_100_010.png" }, "26168": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_turmeric_matt_000_100_100.png" }, "26169": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_violet_matt_000_060_100.png" }, "26170": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_satin_000_100_010.png" }, "26171": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_satin_000_100_100.png" }, "26172": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_berry_satin_000_100_100.png" }, "26173": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_satin_000_080_100.png" }, "26174": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_satin_000_100_001.png" }, "26175": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_blue_satin_000_100_050.png" }, "26176": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_satin_000_000_000.png" }, "26177": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_satin_000_000_030.png" }, "26178": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_bw_satin_000_000_100.png" }, "26179": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_chartreuse_satin_000_100_001.png" }, "26180": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_satin_000_100_050.png" }, "26181": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_clover_satin_000_100_100.png" }, "26182": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cyan_satin_000_100_100.png" }, "26183": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_grape_satin_000_100_010.png" }, "26184": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_azure_gloss_000_100_010.png" }, "26200": { "iconFile": "res:/ui/texture/icons/inventory/CareerPortal/loot_crate64_air.png" }, "26201": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royalpurple_gloss_072_061_065.png" }, "26202": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royalpurple_matt_072_061_065.png" }, "26203": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_royalpurple_satin_072_061_065.png" }, "26207": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_emerald_matt_000_060_100.png" }, "26208": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_redorange_matt_000_100_050.png" }, "26209": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_emerald_metallic_000_100_001.png" }, "26210": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/race_gallente_02a_128.png" }, "26211": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/race_gallente_01a_128.png" }, "26215": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_satin_000_100_010.png" }, "26216": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_satin_000_030_100.png" }, "26217": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26218": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26219": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26220": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26221": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26222": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26223": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26224": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/component_items/materials/cosm_cherryred_metallic_000_100_010.png" }, "26229": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_brushed_000_080_100.png" }, "26230": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_rough_000_100_050.png" }, "26231": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_satin_000_060_100.png" }, "26232": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_Min_Lvl1_01a_128.png" }, "26233": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_matt_000_100_010.png" }, "26234": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_030_100.png" }, "26235": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_metallic_000_100_010.png" }, "26236": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_Ama_Lvl1_01a_128.png" }, "26237": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turmeric_metallic_000_080_100.png" }, "26238": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turmeric_gloss_000_080_100.png" }, "26239": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turmeric_gloss_000_100_001.png" }, "26240": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_Cal_Lvl1_01a_128.png" }, "26241": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_polished_000_060_100.png" }, "26243": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_030_100.png" }, "26244": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_matt_000_100_100.png" }, "26245": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_100_001.png" }, "26246": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_Min_Lvl1_02a_128.png" }, "26255": { "iconFile": "res:/ui/texture/icons/130_SES1_64.png" }, "26256": { "iconFile": "res:/ui/texture/icons/130_SES3_64.png" }, "26257": { "iconFile": "res:/ui/texture/icons/130_SES2_64.png" }, "26266": { "iconFile": "res:/UI/Texture/Icons/Inventory/Abyssal_Salvage_Crate_64.png", "iconType": "png" }, "26274": { "iconFile": "res:/UI/Texture/Classes/HelpPointer/agencyCardFlat.png", "iconType": "png" }, "26275": { "iconFile": "res:/UI/Texture/Classes/HelpPointer/buttonFlat.png", "iconType": "png" }, "26276": { "iconFile": "res:/UI/Texture/Classes/HelpPointer/genericCardFlat.png", "iconType": "png" }, "26277": { "iconFile": "res:/UI/Texture/Classes/HelpPointer/skillCardFlat.png", "iconType": "png" }, "26278": { "iconFile": "res:/UI/Texture/Classes/HelpPointer/tabFlat.png", "iconType": "png" }, "26279": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_gloss_000_100_010.png" }, "26280": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_matt_000_100_010.png" }, "26281": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_gloss_000_100_050.png" }, "26282": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_100_001.png" }, "26283": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_satin_000_100_050.png" }, "26284": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_100_100.png" }, "26285": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_vibrant_bright_matt_21_79_80.png" }, "26286": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_gloss_000_100_100.png" }, "26287": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_pale_bright_matt_177_12_65.png" }, "26288": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_vibrant_bright_satin_14_94_100.png" }, "26289": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/scatter_flat_01_128.png" }, "26290": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/blood_skull_01_128.png" }, "26291": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_metallic_000_000_010.png" }, "26292": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_lavender_metallic_000_100_001.png" }, "26293": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_violet_metallic_000_100_010.png" }, "26298": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_ASES_Line_02_128.png" }, "26299": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_ASES_Square_128.png" }, "26300": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Camo_Dazzle_01_2K_128.png" }, "26301": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Camo_NOH_128.png" }, "26302": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Ch19_countdown_arrows_128.png" }, "26303": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Checker_02_128.png" }, "26304": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Circles_Stripes_04_128.png" }, "26305": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Cross_05_128.png" }, "26306": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Diamond_Lines_128.png" }, "26307": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_04_128.png" }, "26308": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_Crystal_128.png" }, "26309": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_Hex_01_128.png" }, "26310": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tile_hexagon_01_128.png" }, "26311": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_Hex_03_128.png" }, "26312": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tile_hexagon_02_128.png" }, "26313": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_hexagon_128.png" }, "26314": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_circle_01_128.png" }, "26315": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_Spheres_03_128.png" }, "26316": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Gradient_Star_01_128.png" }, "26317": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Asteroids_01_128.png" }, "26318": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_01_128.png" }, "26319": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_03_128.png" }, "26320": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_05_128.png" }, "26321": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_12_128.png" }, "26322": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_27_128.png" }, "26323": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_32_128.png" }, "26324": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_34_128.png" }, "26325": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_36_128.png" }, "26326": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Halfcut_Stripes_37_128.png" }, "26327": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_hexagon_01_128.png" }, "26329": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_hexagon_02_128.png" }, "26330": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tile_hexagon_03_128.png" }, "26331": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Hexes_Stripe_01_128.png" }, "26332": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_petal_pattern_01_128.png" }, "26333": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Pinstripe_01_128.png" }, "26334": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_random_hardedges_05_128.png" }, "26335": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_random_hardedgeshape_04_128.png" }, "26336": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Snowfall_01_128.png" }, "26337": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_SOE_unity_02_128.png" }, "26338": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Stripe_04_128.png" }, "26339": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Stripe_Double_09_128.png" }, "26340": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Stripe_union_day_02_128.png" }, "26341": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tiger_01_128.png" }, "26342": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_element_wing_01_128.png" }, "26343": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_Wedge_05_128.png" }, "26344": { "iconFile": "res:/ui/texture/icons/35_64_7.png" }, "26345": { "iconFile": "res:/ui/texture/icons/8_64_16.png" }, "26346": { "iconFile": "res:/ui/texture/icons/25_64_15.png" }, "26351": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_gloss_000_100_050.png" }, "26352": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_satin_000_000_010.png" }, "26353": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_yellow_matt_000_100_100.png" }, "26354": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_metallic_000_100_001.png" }, "26355": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/scatter_depth_01_128.png" }, "26356": { "iconFile": "res:/ui/texture/icons/131_atavum_1_64.png" }, "26357": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_matt_000_100_001.png" }, "26358": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_matt_000_060_100.png" }, "26359": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_purple_metallic_000_100_010.png" }, "26360": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_tickets_01_128.png" }, "26371": { "iconFile": "res:/UI/Texture/Icons/132_infomorph_64.png" }, "26372": { "iconFile": "res:/ui/texture/icons/breacher_pod_small_64.png" }, "26373": { "iconFile": "res:/ui/texture/icons/breacher_pod_medium_64.png" }, "26374": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_gloss_000_100_100.png" }, "26375": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_pale_dark_satin_0_0_5.png" }, "26376": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_080_100.png" }, "26377": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_metallic_000_100_010.png" }, "26378": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_eclipse_01_128.png" }, "26380": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_matt_000_030_100.png" }, "26381": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_matt_000_100_010.png" }, "26382": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_matt_000_100_100.png" }, "26383": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_satin_000_060_100.png" }, "26384": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_satin_000_100_010.png" }, "26385": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_satin_000_100_100.png" }, "26386": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_gloss_000_030_100.png" }, "26387": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_gloss_000_060_100.png" }, "26388": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_100_100.png" }, "26389": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_080_100.png" }, "26390": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_100_010.png" }, "26391": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_metallic_000_080_100.png" }, "26392": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_metallic_000_060_100.png" }, "26393": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_WN2024_02_128.png" }, "26394": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_WN2024_03_128.png" }, "26395": { "iconFile": "res:/ui/texture/icons/modules/breacher_launcher_S_64.png" }, "26396": { "iconFile": "res:/ui/texture/icons/modules/breacher_launcher_M_64.png" }, "26397": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_gloss_000_100_100.png" }, "26398": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_pale_bright_satin_177_12_65.png" }, "26399": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_metallic_000_100_050.png" }, "26400": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_lavender_matt_000_080_100.png" }, "26401": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_WN2024_01_128.png" }, "26402": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_vibrant_bright_satin_0_95_80.png" }, "26403": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_satin_000_100_001.png" }, "26404": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_metallic_000_100_100.png" }, "26406": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_moneyfriday_01_128.png" }, "26409": { "iconFile": "res:/ui/texture/icons/Inventory/BluePill_64.png" }, "26410": { "iconFile": "res:/ui/texture/icons/Inventory/BluePill_64_1.png" }, "26411": { "iconFile": "res:/ui/texture/icons/Inventory/BluePill_64_2.png" }, "26412": { "iconFile": "res:/ui/texture/icons/Inventory/BluePill_64_3.png" }, "26413": { "iconFile": "res:/ui/texture/icons/Inventory/BluePill_64_4.png" }, "26414": { "iconFile": "res:/ui/texture/icons/Inventory/Crash_64.png" }, "26415": { "iconFile": "res:/ui/texture/icons/Inventory/Crash_64_1.png" }, "26416": { "iconFile": "res:/ui/texture/icons/Inventory/Crash_64_2.png" }, "26417": { "iconFile": "res:/ui/texture/icons/Inventory/Crash_64_3.png" }, "26418": { "iconFile": "res:/ui/texture/icons/Inventory/Crash_64_4.png" }, "26419": { "iconFile": "res:/ui/texture/icons/Inventory/Drop_64.png" }, "26420": { "iconFile": "res:/ui/texture/icons/Inventory/Drop_64_1.png" }, "26421": { "iconFile": "res:/ui/texture/icons/Inventory/Drop_64_2.png" }, "26422": { "iconFile": "res:/ui/texture/icons/Inventory/Drop_64_3.png" }, "26423": { "iconFile": "res:/ui/texture/icons/Inventory/Drop_64_4.png" }, "26424": { "iconFile": "res:/ui/texture/icons/Inventory/Exile_64.png" }, "26425": { "iconFile": "res:/ui/texture/icons/Inventory/Exile_64_1.png" }, "26426": { "iconFile": "res:/ui/texture/icons/Inventory/Exile_64_2.png" }, "26427": { "iconFile": "res:/ui/texture/icons/Inventory/Exile_64_3.png" }, "26428": { "iconFile": "res:/ui/texture/icons/Inventory/Exile_64_4.png" }, "26429": { "iconFile": "res:/ui/texture/icons/Inventory/Frentix_64.png" }, "26430": { "iconFile": "res:/ui/texture/icons/Inventory/Frentix_64_1.png" }, "26431": { "iconFile": "res:/ui/texture/icons/Inventory/Frentix_64_2.png" }, "26432": { "iconFile": "res:/ui/texture/icons/Inventory/Frentix_64_3.png" }, "26433": { "iconFile": "res:/ui/texture/icons/Inventory/Frentix_64_4.png" }, "26434": { "iconFile": "res:/ui/texture/icons/Inventory/Mindflood_64.png" }, "26435": { "iconFile": "res:/ui/texture/icons/Inventory/Mindflood_64_1.png" }, "26436": { "iconFile": "res:/ui/texture/icons/Inventory/Mindflood_64_2.png" }, "26437": { "iconFile": "res:/ui/texture/icons/Inventory/Mindflood_64_3.png" }, "26438": { "iconFile": "res:/ui/texture/icons/Inventory/Mindflood_64_4.png" }, "26439": { "iconFile": "res:/ui/texture/icons/Inventory/SoothSayer_64.png" }, "26440": { "iconFile": "res:/ui/texture/icons/Inventory/SoothSayer_64_1.png" }, "26441": { "iconFile": "res:/ui/texture/icons/Inventory/SoothSayer_64_2.png" }, "26442": { "iconFile": "res:/ui/texture/icons/Inventory/SoothSayer_64_3.png" }, "26443": { "iconFile": "res:/ui/texture/icons/Inventory/SoothSayer_64_4.png" }, "26444": { "iconFile": "res:/ui/texture/icons/Inventory/X-Instinct_64.png" }, "26445": { "iconFile": "res:/ui/texture/icons/Inventory/X-Instinct_64_1.png" }, "26446": { "iconFile": "res:/ui/texture/icons/Inventory/X-Instinct_64_2.png" }, "26447": { "iconFile": "res:/ui/texture/icons/Inventory/X-Instinct_64_3.png" }, "26448": { "iconFile": "res:/ui/texture/icons/Inventory/X-Instinct_64_4.png" }, "26449": { "iconFile": "res:/ui/texture/icons/modules/ShieldFluxcoil_64.png" }, "26450": { "iconFile": "res:/ui/texture/icons/modules/ShieldPowerRelay_64.png" }, "26451": { "iconFile": "res:/ui/texture/icons/modules/ShieldRecharger_64.png" }, "26452": { "iconFile": "res:/ui/texture/icons/modules/GyroStabilizer_64.png" }, "26453": { "iconFile": "res:/ui/texture/icons/modules/HeatSink_64.png" }, "26454": { "iconFile": "res:/ui/texture/icons/modules/MagneticFieldStabilizer_64.png" }, "26455": { "iconFile": "res:/ui/texture/icons/modules/CapacitorPowerRelay_64.png" }, "26456": { "iconFile": "res:/ui/texture/icons/modules/CapactorFluxcoil_64.png" }, "26457": { "iconFile": "res:/ui/texture/icons/modules/CapactorRecharger_64.png" }, "26459": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_Armor_64.png" }, "26460": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_Astronautic_64.png" }, "26461": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_DamageControl_64.png" }, "26462": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_Drone_64.png" }, "26463": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_Engineering_64.png" }, "26464": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_Shield_64.png" }, "26465": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_StasisWebifier_64.png" }, "26466": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_WarpDisruption_64.png" }, "26467": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaPlasmidResidue_WeaponUpgrade_64.png" }, "26468": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_matt_000_100_050.png" }, "26469": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_matt_000_100_050.png" }, "26470": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_brushed_000_100_050.png" }, "26471": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_deathless_1_128.png" }, "26472": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaplasmid_s_64.png" }, "26473": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaplasmid_m_64.png" }, "26474": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaplasmid_l_64.png" }, "26475": { "iconFile": "res:/UI/Texture/MutaplasmidResidue/mutaplasmid_xl_64.png" }, "26478": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_matt_000_100_010.png" }, "26479": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_metallic_000_100_050.png" }, "26483": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/dotStatusEffect.png" }, "26518": { "iconFile": "res:/UI/Texture/Icons/Inventory/Deathless_Crate_64.png" }, "26521": { "iconFile": "res:/ui/texture/icons/modules/EntropicRadiationSink_64.png" }, "26525": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_vanguard_black.png" }, "26526": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_vanguard_red.png" }, "26527": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_vanguard_white.png" }, "26529": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/vanguard_pattern_128.png" }, "26531": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/Pattern_WN2024_04_128.png" }, "26534": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyDamage_64_1.png" }, "26535": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyDamage_64_2.png" }, "26536": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyDamage_64_3.png" }, "26537": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyDamage_64_4.png" }, "26538": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencySpeed_64_1.png" }, "26539": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencySpeed_64_2.png" }, "26540": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencySpeed_64_3.png" }, "26541": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencySpeed_64_4.png" }, "26542": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyTank_64_1.png" }, "26543": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyTank_64_2.png" }, "26544": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyTank_64_3.png" }, "26545": { "iconFile": "res:/ui/texture/icons/AgencyBoosters/BoosterAgencyTank_64_4.png" }, "26546": { "iconFile": "res:/ui/texture/icons/PowerDiagnosticSystem_64.png" }, "26547": { "iconFile": "res:/ui/texture/icons/ReactorControlUnit_64.png" }, "26548": { "iconFile": "res:/ui/texture/icons/boosters/BluePill_64_1.png" }, "26549": { "iconFile": "res:/ui/texture/icons/boosters/BluePill_64_2.png" }, "26550": { "iconFile": "res:/ui/texture/icons/boosters/BluePill_64_3.png" }, "26551": { "iconFile": "res:/ui/texture/icons/boosters/BluePill_64_4.png" }, "26552": { "iconFile": "res:/ui/texture/icons/boosters/Frentix_64_1.png" }, "26553": { "iconFile": "res:/ui/texture/icons/boosters/Frentix_64_2.png" }, "26554": { "iconFile": "res:/ui/texture/icons/boosters/Frentix_64_3.png" }, "26555": { "iconFile": "res:/ui/texture/icons/boosters/Frentix_64_4.png" }, "26556": { "iconFile": "res:/ui/texture/icons/boosters/Mindflood_64_1.png" }, "26557": { "iconFile": "res:/ui/texture/icons/boosters/Mindflood_64_2.png" }, "26558": { "iconFile": "res:/ui/texture/icons/boosters/Mindflood_64_3.png" }, "26559": { "iconFile": "res:/ui/texture/icons/boosters/Mindflood_64_4.png" }, "26584": { "iconFile": "res:/UI/Texture/Icons/Inventory/Drifter_loot_crate64.png", "iconType": "png" }, "26585": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_satin_000_100_100.png" }, "26586": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_blue_metallic_000_100_001.png" }, "26587": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_snakescales_01_128.png" }, "26589": { "iconFile": "res:/ui/texture/icons/spectral_vision_capture.png" }, "26597": { "iconFile": "res:/UI/Asset/mannequin/outer/87572_Female_Outer_CostumeJF01_Types_CostumeJF01_Drifter.png", "iconType": "png" }, "26598": { "iconFile": "res:/UI/Asset/mannequin/outer/87573_Male_outer_CostumeJM01_Types_CostumeJM01_Drifter.png", "iconType": "png" }, "26604": { "iconFile": "res:/ui/texture/icons/boosters/Crash_64_1.png" }, "26605": { "iconFile": "res:/ui/texture/icons/boosters/Crash_64_2.png" }, "26606": { "iconFile": "res:/ui/texture/icons/boosters/Crash_64_3.png" }, "26607": { "iconFile": "res:/ui/texture/icons/boosters/Crash_64_4.png" }, "26608": { "iconFile": "res:/ui/texture/icons/boosters/Drop_64_1.png" }, "26609": { "iconFile": "res:/ui/texture/icons/boosters/Drop_64_2.png" }, "26610": { "iconFile": "res:/ui/texture/icons/boosters/Drop_64_3.png" }, "26611": { "iconFile": "res:/ui/texture/icons/boosters/Drop_64_4.png" }, "26612": { "iconFile": "res:/ui/texture/icons/boosters/Exile_64_1.png" }, "26613": { "iconFile": "res:/ui/texture/icons/boosters/Exile_64_2.png" }, "26614": { "iconFile": "res:/ui/texture/icons/boosters/Exile_64_3.png" }, "26615": { "iconFile": "res:/ui/texture/icons/boosters/Exile_64_4.png" }, "26616": { "iconFile": "res:/ui/texture/icons/boosters/SoothSayer_64_1.png" }, "26617": { "iconFile": "res:/ui/texture/icons/boosters/SoothSayer_64_2.png" }, "26618": { "iconFile": "res:/ui/texture/icons/boosters/SoothSayer_64_3.png" }, "26619": { "iconFile": "res:/ui/texture/icons/boosters/SoothSayer_64_4.png" }, "26620": { "iconFile": "res:/ui/texture/icons/boosters/X-Instinct_64_1.png" }, "26621": { "iconFile": "res:/ui/texture/icons/boosters/X-Instinct_64_2.png" }, "26622": { "iconFile": "res:/ui/texture/icons/boosters/X-Instinct_64_3.png" }, "26623": { "iconFile": "res:/ui/texture/icons/boosters/X-Instinct_64_4.png" }, "26631": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_matt_000_100_010.png" }, "26632": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_matt_000_100_001.png" }, "26633": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_100_001.png" }, "26634": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_satin_000_060_100.png" }, "26635": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_gloss_000_060_100.png" }, "26636": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_matt_000_060_100.png" }, "26637": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_matt_000_080_100.png" }, "26638": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_satin_000_100_010.png" }, "26639": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_080_100.png" }, "26640": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_gloss_000_060_100.png" }, "26641": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_polished_000_080_100.png" }, "26642": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_polished_000_030_100.png" }, "26643": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_polished_000_080_100.png" }, "26644": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t3_03_128.png" }, "26645": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t3_01_128.png" }, "26646": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t3_02_128.png" }, "26672": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_dark_blue.png" }, "26673": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_dark_blue_metallic.png" }, "26674": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_dark_green.png" }, "26675": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_dark_green_metallic.png" }, "26676": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_mint.png" }, "26677": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_mint_metallic.png" }, "26678": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_white.png" }, "26679": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_drifter_white_metallic.png" }, "26680": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_circletwirl_t1_04_128.png" }, "26681": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t1_03_128.png" }, "26682": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t3_04_128.png" }, "26683": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_spikes_t1_01_128.png" }, "26684": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/linkedToTrace.png" }, "26707": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_yellow_satin_000_100_100.png" }, "26708": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_matt_000_100_050.png" }, "26709": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_coincamo_t2_01_128.png" }, "26710": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_satin_000_080_100.png" }, "26711": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_guristas_camo_t1_01_128.png" }, "26712": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_gloss_000_100_100.png" }, "26713": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_satin_000_060_100.png" }, "26714": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_metallic_000_030_100.png" }, "26715": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_XXII_t1_01_128.png" }, "26716": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_satin_000_100_050.png" }, "26717": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_100_100.png" }, "26718": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_gloss_000_080_100.png" }, "26719": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_polished_000_060_100.png" }, "26720": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_geo_t2_01_128.png" }, "26721": { "iconFile": "res:/ui/texture/icons/modules/AutoTargetingSystem_64.png" }, "26722": { "iconFile": "res:/ui/texture/icons/modules/NetworkedSensorArray_64.png" }, "26723": { "iconFile": "res:/ui/texture/icons/modules/PassiveTargetingArray_64.png" }, "26724": { "iconFile": "res:/ui/texture/icons/modules/PassiveTargetingSystem_64.png" }, "26725": { "iconFile": "res:/ui/texture/icons/modules/RemoteSensorBooster_64.png" }, "26726": { "iconFile": "res:/ui/texture/icons/modules/SensorBooster_64.png" }, "26727": { "iconFile": "res:/ui/texture/icons/modules/SignalAmplifier_64.png" }, "26729": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MajorThreatDetectionArray_I.png" }, "26730": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MajorThreatDetectionArray_II.png" }, "26731": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MajorThreatDetectionArray_III.png" }, "26732": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MinorThreatDetectionArray_I.png" }, "26733": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MinorThreatDetectionArray_II.png" }, "26734": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/MinorThreatDetectionArray_III.png" }, "26735": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Tritanium_I.png" }, "26736": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Tritanium_II.png" }, "26737": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Tritanium_III.png" }, "26738": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Pyerite_I.png" }, "26739": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Pyerite_II.png" }, "26740": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Pyerite_III.png" }, "26741": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Mexallon_I.png" }, "26742": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Mexallon_II.png" }, "26743": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Mexallon_III.png" }, "26744": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Isogen_I.png" }, "26745": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Isogen_II.png" }, "26746": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Isogen_III.png" }, "26747": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Nocxium_I.png" }, "26748": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Nocxium_II.png" }, "26749": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Nocxium_III.png" }, "26750": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Zydrine_I.png" }, "26751": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Zydrine_II.png" }, "26752": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Zydrine_III.png" }, "26753": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Megacyte_I.png" }, "26754": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Megacyte_II.png" }, "26755": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Upgrade_Megacyte_III.png" }, "26757": { "iconFile": "res:/UI/Texture/Icons/Exploration_Upgrade_I.png" }, "26758": { "iconFile": "res:/UI/Texture/Icons/Exploration_Upgrade_II.png" }, "26759": { "iconFile": "res:/UI/Texture/Icons/Exploration_Upgrade_III.png" }, "26775": { "iconFile": "res:/ui/texture/icons/PowerGeneration_Upgrade.png" }, "26776": { "iconFile": "res:/UI/Texture/Icons/WorkforceGeneration_Upgrade.png" }, "26777": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Gamma_SystemWideModifier_Upgrade.png" }, "26778": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Plasma_SystemWideModifier_Upgrade.png" }, "26779": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Electric_SystemWideModifier_Upgrade.png" }, "26780": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Exotic_SystemWideModifier_Upgrade.png" }, "26781": { "iconFile": "res:/ui/texture/icons/modules/SensorBooster_Script01_64.png" }, "26782": { "iconFile": "res:/ui/texture/icons/modules/SensorBooster_Script02_64.png" }, "26783": { "iconFile": "res:/ui/texture/icons/modules/SensorBooster_Script03_64.png" }, "26784": { "iconFile": "res:/ui/texture/icons/Tyranite_E_Mineral_64.png" }, "26785": { "iconFile": "res:/ui/texture/icons/Tyranite_Ore_64.png" }, "26788": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Workforce_Conversion_Upgrade_I.png" }, "26789": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Workforce_Conversion_Upgrade_II.png" }, "26790": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Workforce_Conversion_Upgrade_III.png" }, "26791": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Power_Conversion_Upgrade_I.png" }, "26792": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Power_Conversion_Upgrade_II.png" }, "26793": { "iconFile": "res:/UI/Texture/Icons/Inventory/SovHubUpgrades/Power_Conversion_Upgrade_III.png" }, "26796": { "iconFile": "res:/UI/Asset/mannequin/outer/88186_Male_outer_AugmentationSuitM01_Types_AugmentationSuitM01_Black.png", "iconType": "png" }, "26797": { "iconFile": "res:/UI/Asset/mannequin/outer/88187_Female_Outer_AugmentationSuitF01_Types_AugmentationSuitF01_Black.png", "iconType": "png" }, "26798": { "iconFile": "res:/ui/texture/icons/Inventory/Drifter_Filament_64.png" }, "26799": { "iconFile": "res:/UI/Texture/Icons/expert_system_64.png" }, "26801": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_100_050.png" }, "26802": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_100_050.png" }, "26808": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_metallic_000_100_010.png" }, "26809": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_metallic_000_100_010.png" }, "26819": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_01_128.png" }, "26820": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_01_128.png" }, "26821": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_01_128.png" }, "26822": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_01_128.png" }, "26823": { "iconFile": "res:/ui/texture/icons/Inventory/SovHubUpgrades/Triglavian_Scanner_Upgrade.png" }, "26824": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_100_050.png" }, "26825": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_100_050.png" }, "26826": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_satin_000_100_050.png" }, "26827": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_satin_000_100_050.png" }, "26828": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_100_050.png" }, "26829": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_100_050.png" }, "26830": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_gloss_000_100_100.png" }, "26831": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_gloss_000_100_100.png" }, "26832": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_satin_000_100_100.png" }, "26833": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_satin_000_100_100.png" }, "26834": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_matt_000_100_100.png" }, "26835": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_matt_000_100_100.png" }, "26836": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_matt_000_060_100.png" }, "26837": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_matt_000_060_100.png" }, "26838": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_gloss_000_100_100.png" }, "26839": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_gloss_000_100_100.png" }, "26840": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_satin_000_100_100.png" }, "26841": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_satin_000_100_100.png" }, "26842": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_highgloss_000_100_100.png" }, "26843": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_highgloss_000_100_100.png" }, "26844": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_gloss_000_100_050.png" }, "26845": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_gloss_000_100_050.png" }, "26846": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_gloss_000_080_100.png" }, "26847": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_gloss_000_080_100.png" }, "26848": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_gloss_000_060_100.png" }, "26849": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_gloss_000_060_100.png" }, "26850": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_matt_000_030_100.png" }, "26851": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_matt_000_030_100.png" }, "26852": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_satin_000_060_100.png" }, "26853": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_satin_000_060_100.png" }, "26854": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_satin_000_030_100.png" }, "26855": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_satin_000_030_100.png" }, "26856": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_satin_000_030_100.png" }, "26857": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_satin_000_030_100.png" }, "26858": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_080_100.png" }, "26859": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_080_100.png" }, "26860": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_satin_000_060_100.png" }, "26861": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_satin_000_060_100.png" }, "26862": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_satin_000_000_050.png" }, "26863": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_satin_000_000_050.png" }, "26864": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_matt_000_000_010.png" }, "26865": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_matt_000_000_010.png" }, "26866": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_grape_matt_000_080_100.png" }, "26867": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_grape_matt_000_080_100.png" }, "26868": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_100_010.png" }, "26869": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_100_010.png" }, "26870": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_matt_000_080_100.png" }, "26871": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_matt_000_080_100.png" }, "26872": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_gloss_000_100_050.png" }, "26873": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_gloss_000_100_050.png" }, "26874": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_berry_gloss_000_100_010.png" }, "26875": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_berry_gloss_000_100_010.png" }, "26876": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_gloss_000_100_010.png" }, "26877": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_gloss_000_100_010.png" }, "26878": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_gloss_000_100_010.png" }, "26879": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_gloss_000_100_010.png" }, "26880": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_gloss_000_100_050.png" }, "26881": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_gloss_000_100_050.png" }, "26882": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_metallic_000_100_001.png" }, "26883": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_metallic_000_100_001.png" }, "26884": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_metallic_000_100_001.png" }, "26885": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_metallic_000_100_001.png" }, "26886": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_metallic_000_100_010.png" }, "26887": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_metallic_000_100_010.png" }, "26888": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_metallic_000_100_010.png" }, "26889": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_metallic_000_100_010.png" }, "26890": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_metallic_000_100_010.png" }, "26891": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_metallic_000_100_010.png" }, "26892": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_metallic_000_100_010.png" }, "26893": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_metallic_000_100_010.png" }, "26894": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_metallic_000_100_010.png" }, "26895": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_metallic_000_100_010.png" }, "26896": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_grape_metallic_000_100_010.png" }, "26897": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_grape_metallic_000_100_010.png" }, "26898": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_brushed_000_100_050.png" }, "26899": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_brushed_000_100_050.png" }, "26900": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_rough_000_100_050.png" }, "26901": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_rough_000_100_050.png" }, "26902": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_brushed_000_100_050.png" }, "26903": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_brushed_000_100_050.png" }, "26904": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_brushed_000_100_100.png" }, "26905": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_brushed_000_100_100.png" }, "26906": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_rough_000_060_100.png" }, "26907": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_rough_000_060_100.png" }, "26908": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_rough_000_100_010.png" }, "26909": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_rough_000_100_010.png" }, "26910": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_brushed_000_100_001.png" }, "26911": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_brushed_000_100_001.png" }, "26912": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_rough_000_100_100.png" }, "26913": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_rough_000_100_100.png" }, "26914": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_brushed_000_080_100.png" }, "26915": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_pea_brushed_000_080_100.png" }, "26916": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_rough_000_080_100.png" }, "26917": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_chartreuse_rough_000_080_100.png" }, "26918": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_brushed_000_100_001.png" }, "26919": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_brushed_000_100_001.png" }, "26920": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_polished_000_100_001.png" }, "26921": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_green_polished_000_100_001.png" }, "26922": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_brushed_000_100_001.png" }, "26923": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_brushed_000_100_001.png" }, "26924": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_rough_000_030_100.png" }, "26925": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_rough_000_030_100.png" }, "26926": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_rough_000_100_050.png" }, "26927": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_rough_000_100_050.png" }, "26928": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_04_128.png" }, "26929": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_04_128.png" }, "26930": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_02_128.png" }, "26931": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_02_128.png" }, "26932": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_03_128.png" }, "26933": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_03_128.png" }, "26934": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_15_128.png" }, "26935": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_15_128.png" }, "26936": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_05_128.png" }, "26937": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_05_128.png" }, "26938": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_07_128.png" }, "26939": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_07_128.png" }, "26940": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_13_128.png" }, "26941": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_13_128.png" }, "26942": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_14_128.png" }, "26943": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_stripe_14_128.png" }, "26944": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_leaf_01_128.png" }, "26945": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_leaf_01_128.png" }, "26946": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_decorative_01_128.png" }, "26947": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_decorative_01_128.png" }, "26948": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_arrows_01_128.png" }, "26949": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_arrows_01_128.png" }, "26950": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_arrows_02_128.png" }, "26951": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_arrows_02_128.png" }, "26952": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_tactical_01_128.png" }, "26953": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_tactical_01_128.png" }, "26954": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_circletwirl_01_128.png" }, "26955": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_circletwirl_01_128.png" }, "26956": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_twirl_01_128.png" }, "26957": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_twirl_01_128.png" }, "26958": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_camo_wave_01_128.png" }, "26959": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_camo_wave_01_128.png" }, "26960": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_03_128.png" }, "26961": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_03_128.png" }, "26962": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_02_128.png" }, "26963": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_gradient_02_128.png" }, "26964": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_hex_02_128.png" }, "26965": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_hex_02_128.png" }, "26966": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_hex_01_128.png" }, "26967": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_hex_01_128.png" }, "26968": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_square_01_128.png" }, "26969": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_gradient_square_01_128.png" }, "26970": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_camo_01_128.png" }, "26971": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_lines_camo_01_128.png" }, "26972": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_art_03_128.png" }, "26973": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_art_03_128.png" }, "26974": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_art_02_128.png" }, "26975": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_art_02_128.png" }, "26976": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_Art_01_128.png" }, "26977": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_Art_01_128.png" }, "26978": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_abstract_06_128.png" }, "26979": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_abstract_06_128.png" }, "26980": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_abstract_08_128.png" }, "26981": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_abstract_08_128.png" }, "26982": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_cosm_abstract_08_128.png" }, "26983": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_metallic_000_100_010.png" }, "26984": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_metallic_000_100_010.png" }, "26985": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_100_001.png" }, "26986": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_100_001.png" }, "27043": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_highgloss_000_100_100.png" }, "27044": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_satin_000_100_100.png" }, "27045": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cheese_matt_000_100_100.png" }, "27046": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_polished_000_100_050.png" }, "27047": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_brushed_000_100_100.png" }, "27048": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_camo_wave_02_128.png" }, "27049": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_symbol_01A_128.png" }, "27050": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_twirl_04_128.png" }, "27051": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_highgloss_000_060_100_cs180.png" }, "27053": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ExpeditionBase.png" }, "27054": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ExpeditionProbeStrength.png" }, "27055": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ExpeditionDscanRange.png" }, "27056": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_ExpeditionProbeDeviation.png" }, "27058": { "iconFile": "res:/ui/texture/icons/marketicon_16px_ORE.png" }, "27059": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_02_128.png" }, "27060": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_02_128.png" }, "27061": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_03_128.png" }, "27062": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_03_128.png" }, "27063": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_04_128.png" }, "27064": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tech_04_128.png" }, "27065": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_polished_000_100_050.png" }, "27066": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_polished_000_100_050.png" }, "27067": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_brushed_000_100_010.png" }, "27068": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_brushed_000_100_010.png" }, "27069": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_brushed_000_100_100.png" }, "27070": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_redorange_brushed_000_100_100.png" }, "27072": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_rough_000_100_100.png" }, "27073": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_rough_000_100_100.png" }, "27074": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_matt_000_100_050.png" }, "27075": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_matt_000_100_050.png" }, "27076": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_matt_000_030_100.png" }, "27077": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_matt_000_030_100.png" }, "27078": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_030_100_cs180.png" }, "27079": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_030_100_cs180.png" }, "27080": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_100_010_cs180.png" }, "27081": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_100_010_cs180.png" }, "27094": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_berry_brushed_000_100_001.png" }, "27095": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_highgloss_000_100_100.png" }, "27096": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_rough_000_030_100.png" }, "27097": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_rough_000_080_100.png" }, "27098": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_satin_000_100_050_cs180.png" }, "27099": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_satin_000_100_100_cs180.png" }, "27100": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_magenta_metallic_000_030_100.png" }, "27101": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cherryred_metallic_000_100_050.png" }, "27102": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_metallic_000_100_001.png" }, "27103": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_metallic_000_000_050.png" }, "27104": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_skull_t1_01_128.png" }, "27105": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_leak_01_128.png" }, "27106": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_organic_01_128.png" }, "27109": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_groovy_01_128.png" }, "27110": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_groovy_02_128.png" }, "27135": { "iconFile": "res:/ui/texture/icons/88_128_3.png", "iconType": "png" }, "27136": { "iconFile": "res:/ui/texture/icons/88_128_4.png", "iconType": "png" }, "27137": { "iconFile": "res:/ui/texture/icons/88_128_2.png", "iconType": "png" }, "27138": { "iconFile": "res:/ui/texture/icons/88_128_1.png", "iconType": "png" }, "27139": { "iconFile": "res:/ui/texture/icons/Prismaticite_Ore_64.png" }, "27154": { "iconFile": "res:/ui/texture/icons/Prismaticite_Ore_Compressed_64.png" }, "27155": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_metallic_000_100_100.png" }, "27156": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_metallic_000_100_100.png" }, "27157": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_purple_polished_holo_001_100_010.png" }, "27158": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_purple_polished_holo_001_100_010.png" }, "27159": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_gloss_000_100_050.png" }, "27160": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_gloss_000_100_050.png" }, "27161": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_gloss_000_100_050.png" }, "27162": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_gloss_000_100_050.png" }, "27163": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_matt_000_100_010.png" }, "27164": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_safetyorange_matt_000_100_010.png" }, "27165": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_matt_000_100_001.png" }, "27166": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_red_matt_000_100_001.png" }, "27167": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_080_100.png" }, "27168": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_080_100.png" }, "27169": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_gloss_000_100_050.png" }, "27170": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_gloss_000_100_050.png" }, "27171": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_flat_000_000_000.png" }, "27172": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_flat_000_000_000.png" }, "27173": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_030_100_cs180.png" }, "27174": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_gloss_000_030_100_cs180.png" }, "27175": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_gloss_000_100_010_cs180.png" }, "27176": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_gloss_000_100_010_cs180.png" }, "27177": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_01_128.png" }, "27178": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_01_128.png" }, "27179": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_02_128.png" }, "27180": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_02_128.png" }, "27181": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_03_128.png" }, "27182": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rock_03_128.png" }, "27183": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_geometric_01_128.png" }, "27184": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_geometric_01_128.png" }, "27185": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_dazzle_03_128.png" }, "27186": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_dazzle_03_128.png" }, "27187": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rust_01_128.png" }, "27188": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_rust_01_128.png" }, "27189": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_leaf_03_128.png" }, "27190": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_leaf_03_128.png" }, "27191": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_circle_01_128.png" }, "27192": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_drifter_circle_01_128.png" }, "27193": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_abstract_01_128.png" }, "27194": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_abstract_01_128.png" }, "27195": { "iconFile": "res:/UI/Texture/Icons/StatusEffects/mining_phase_stabilizer_64.png" }, "27198": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_harvester_decayed.png" }, "27199": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_harvester_gravid.png" }, "27200": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_harvester_unstable.png" }, "27201": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_scoop_decayed.png" }, "27202": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_scoop_gravid.png" }, "27203": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/gas_cloud_scoop_unstable.png" }, "27204": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_harvester.png" }, "27205": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_harvester_decayed.png" }, "27206": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_harvester_gravid.png" }, "27207": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_harvester_unstable.png" }, "27208": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_mining_laser_decayed.png" }, "27209": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_mining_laser_gravid.png" }, "27210": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/ice_mining_laser_unstable.png" }, "27211": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/mining.png" }, "27212": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/mining_laser_decayed.png" }, "27213": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/mining_laser_gravid.png" }, "27214": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/mining_laser_unstable.png" }, "27215": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/strip_mining_laser_decayed.png" }, "27216": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/strip_mining_laser_gravid.png" }, "27217": { "iconFile": "res:/UI/Texture/MiningMutaplasmids/strip_mining_laser_unstable.png" }, "27218": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_a_t1.png" }, "27219": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_a_t2.png" }, "27220": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_b_t1.png" }, "27221": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_b_t2.png" }, "27222": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_c_t1.png" }, "27223": { "iconFile": "res:/UI/Texture/Icons/Ammo/erraticOreMiningCrystal_c_t2.png" }, "27224": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_080_100.png" }, "27225": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_080_100.png" }, "27226": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_080_100.png" }, "27227": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_080_100.png" }, "27228": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_caldari_tournament_XXI_128.png" }, "27229": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_caldari_tournament_XXI_128.png" }, "27230": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_caldari_tournament_XXI_128.png" }, "27247": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_tritanium.png" }, "27248": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_pyerite.png" }, "27249": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_isogen.png" }, "27250": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_nocxium.png" }, "27251": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_morphite.png" }, "27252": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_mexallon.png" }, "27253": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_zydrine.png" }, "27254": { "iconFile": "res:/ui/texture/icons/inventory/mineral_unrefined_megacyte.png" }, "27255": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_tritanium.png" }, "27256": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_pyerite.png" }, "27257": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_mexallon.png" }, "27258": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_isogen.png" }, "27259": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_nocxium.png" }, "27260": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_zydrine.png" }, "27261": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_megacyte.png" }, "27262": { "iconFile": "res:/ui/texture/icons/inventory/mineral_formula_morphite.png" }, "27266": { "iconFile": "res:/UI/Texture/Icons/Modules/fleetBoost_MiningCrit.png" }, "27267": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_ama_05_128.png" }, "27268": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_ama_05_128.png" }, "27269": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_ama_05_128.png" }, "27270": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_ornament_01_128.png" }, "27271": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_ornament_01_128.png" }, "27272": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_art_deco_01_2K_128.png" }, "27273": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_10_128.png" }, "27274": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_10_128.png" }, "27275": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_08_128.png" }, "27276": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_08_128.png" }, "27277": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_05_128.png" }, "27278": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_05_128.png" }, "27279": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_16_128.png" }, "27280": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_16_128.png" }, "27281": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_12_128.png" }, "27282": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_12_128.png" }, "27283": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_07_128.png" }, "27284": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_07_128.png" }, "27285": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_11_128.png" }, "27286": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_11_128.png" }, "27287": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_organic_10_128.png" }, "27288": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_09_128.png" }, "27289": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_06_128.png" }, "27290": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_14_128.png" }, "27291": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_winter_14_128.png" }, "27292": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_turquoise_gloss_000_060_100_cs180.png" }, "27293": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_highgloss_000_100_010_cs180.png" }, "27294": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_orange_matt_000_100_010_cs180.png" }, "27295": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_brushed_000_060_100.png" }, "27296": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_brushed_000_060_100.png" }, "27297": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_polished_000_080_100.png" }, "27298": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_polished_000_080_100.png" }, "27299": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_polished_000_100_010.png" }, "27300": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_emerald_polished_000_100_010.png" }, "27301": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_030_100.png" }, "27302": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_gloss_000_030_100.png" }, "27303": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_highgloss_000_100_001.png" }, "27304": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_highgloss_000_100_001.png" }, "27305": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_satin_000_100_050.png" }, "27306": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_rosered_satin_000_100_050.png" }, "27307": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_royal_metallic_000_100_100.png" }, "27309": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_brass_metallic_013_051_089.png" }, "27334": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_azure_metallic_000_100_001.png" }, "27335": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_geomask_01_128.png" }, "27336": { "iconFile": "res:/UI/Texture/Icons/Inventory/Drifter_Data_64.png", "iconType": "png" }, "27337": { "iconFile": "res:/UI/Texture/Icons/Inventory/Drifter_Key_64.png", "iconType": "png" }, "27345": { "iconFile": "res:/ui/texture/icons/inventory/icon_background_03.png" }, "27354": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_voteday_128.png" }, "27355": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_voteday_128.png" }, "27356": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_voteday_today_128.png" }, "27357": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_voteday_today_128.png" }, "27358": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_highgloss_000_030_100_cs180.png" }, "27359": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_highgloss_000_030_100_cs180.png" }, "27360": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_matt_000_100_010_cs180.png" }, "27361": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_matt_000_100_010_cs180.png" }, "27362": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_100_100_cs180.png" }, "27363": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_malachite_matt_000_100_100_cs180.png" }, "27364": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_brushed_000_100_001.png" }, "27365": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_brushed_000_100_001.png" }, "27366": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_brushed_000_100_010.png" }, "27367": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_cyan_brushed_000_100_010.png" }, "27368": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_brushed_000_100_010.png" }, "27369": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_clover_brushed_000_100_010.png" }, "27370": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_vanadium_brushed_057_004_054.png" }, "27371": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_vanadium_brushed_057_004_054.png" }, "27372": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_brushed_000_000_000.png" }, "27373": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/materials/cosm_bw_brushed_000_000_000.png" }, "27383": { "iconFile": "res:/UI/Asset/mannequin/outer/92631_Female_Outer_ArmorSuitCF01_Types_ArmorSuitCF01_Glam.png", "iconType": "png" }, "27384": { "iconFile": "res:/UI/Asset/mannequin/outer/92644_Male_outer_ArmorSuitMM01_Types_ArmorSuitMM01_Glem.png", "iconType": "png" }, "27385": { "iconFile": "res:/ui/texture/icons/inventory/trading_token_elite_128.png" }, "27386": { "iconFile": "res:/ui/texture/icons/inventory/trading_token_regular_128.png" }, "27387": { "iconFile": "res:/ui/texture/icons/inventory/Gallente_crate_splashscreen_512.png" }, "27388": { "iconFile": "res:/ui/texture/icons/inventory/FabricatorData.png", "iconType": "png" }, "27414": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_anger_games_01_128.png" }, "27415": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_ama_logo_01_128.png" }, "27416": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_ama_logo_01_128.png" }, "27417": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_logo_01_128.png" }, "27418": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gallente_logo_01_128.png" }, "27419": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_cal_logo_01_128.png" }, "27420": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_cal_logo_01_128.png" }, "27421": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_minmatar_logo_01_128.png" }, "27422": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_minmatar_logo_01_128.png" }, "27423": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_jita44_01_128.png" }, "27424": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_jita44_01_128.png" }, "27425": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_jita444_01_128.png" }, "27426": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_jita444_01_128.png" }, "27427": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_groovy_03_128.png" }, "27428": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_groovy_03_128.png" }, "27429": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_circle_02_128.png" }, "27430": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_gradient_circle_02_128.png" }, "27431": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tactical_10_128.png" }, "27432": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_tactical_10_128.png" }, "27433": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_splatter_04_128.png" }, "27434": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_splatter_04_128.png" }, "27435": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_gal_08b_128.png" }, "27436": { "iconFile": "res:/UI/Texture/classes/Cosmetics/Ship/patterns/cosm_racial_gal_08b_128.png" }, "27463": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/93589_Female_TopMiddle_ShirtQF01_Types_soerff03.png", "iconType": "png" }, "27464": { "iconFile": "res:/UI/Asset/mannequin/topmiddle/93590_Male_topMiddle_ShirtQM01_Types_soerfm03.png", "iconType": "png" }, "27466": { "iconFile": "res:/UI/Texture/Icons/Inventory/warpath_regular_token.png" }, "27467": { "iconFile": "res:/UI/Texture/Icons/Inventory/warpath_elite_token.png" }, "27471": { "iconFile": "res:/ui/texture/icons/inventory/EmpireCrate_Amarr.png" }, "27472": { "iconFile": "res:/ui/texture/icons/inventory/EmpireCrate_Caldari.png" }, "27473": { "iconFile": "res:/ui/texture/icons/inventory/EmpireCrate_Gallente.png" }, "27474": { "iconFile": "res:/ui/texture/icons/inventory/EmpireCrate_Minmatar.png" } } ================================================ FILE: staticdata/fsd_built/marketgroups.0.json ================================================ { "2": { "description_de": "Blaupausen sind Datengegenstände, die in der Industrie bei Fertigungs-, Forschungs- und Erfindungsaufträgen verwendet werden.", "description_en-us": "Blueprints are data items used in industry for manufacturing, research and invention jobs", "description_es": "Los planos son elementos de datos usados en la industria para los trabajos de fabricación, investigación e invención.", "description_fr": "Les plans de construction sont des objets utilisés dans l'industrie pour réaliser des travaux de production, de recherche et d'invention", "description_it": "Blueprints are data items used in industry for manufacturing, research and invention jobs", "description_ja": "ブループリントは製造業、研究・発明アクティビティで使用するデータアイテムです", "description_ko": "데이터베이스의 일종으로 제조, 연구, 그리고 인벤션에 사용됩니다.", "description_ru": "Чертежи используются в промышленности для производства предметов, во время исследовательских работ и в различных научно-исследовательских проектах.", "description_zh": "蓝图是一种工业物品,可用于制造、研究和发明项目", "descriptionID": 64450, "hasTypes": 0, "iconID": 2703, "name_de": "Blaupausen & Reaktionen", "name_en-us": "Blueprints & Reactions", "name_es": "Planos y procesos reactivos", "name_fr": "Plans de construction & Réactions", "name_it": "Blueprints & Reactions", "name_ja": "ブループリント", "name_ko": "블루프린트 및 반응식", "name_ru": "Чертежи и реакции", "name_zh": "蓝图和反应", "nameID": 65524 }, "4": { "description_de": "Raumschiffe aller Größen und Funktionen für Kapselpiloten. Dazu gehören fortschrittliche und Fraktionsvarianten von vielen Rumpftypen.", "description_en-us": "Capsuleer spaceships of all sizes and roles, including advanced and faction variants of many hull types", "description_es": "Pilota naves para capsulistas de todos los tamaños y funciones, incluidos modelos faccionarios avanzados de muchos tipos de casco.", "description_fr": "Vaisseaux spatiaux de capsulier de tout rôle et de toute taille, y compris les variantes avancées et spécifiques à certaines factions avec plusieurs types de coques", "description_it": "Capsuleer spaceships of all sizes and roles, including advanced and faction variants of many hull types", "description_ja": "カプセラの宇宙船の全サイズおよび機能(性能別、各勢力仕様別船体タイプなど)", "description_ko": "캡슐리어가 탑승할 수 있는 모든 종류의 함선입니다. (상급 및 팩션 함선 포함)", "description_ru": "Капсулёрские корабли всех назначений, классов, типов и размеров, включая корабли усовершенствованных проектов и корабли из арсеналов сверхдержав и независимых организаций", "description_zh": "各种型号和用途的太空飞船,涵盖了高级和势力衍生型号", "descriptionID": 64451, "hasTypes": 0, "iconID": 1443, "name_de": "Schiffe", "name_en-us": "Ships", "name_es": "Naves", "name_fr": "Vaisseaux", "name_it": "Ships", "name_ja": "艦船", "name_ko": "함선", "name_ru": "Корабли", "name_zh": "舰船", "nameID": 65525 }, "5": { "description_de": "Kleine, schnelle Schiffe mit vielseitigen Verwendungszwecken.", "description_en-us": "Small, fast vessels suited to a variety of purposes.", "description_es": "Naves pequeñas y rápidas adecuadas para varios fines.", "description_fr": "Petits vaisseaux rapides pouvant accomplir diverses tâches.", "description_it": "Small, fast vessels suited to a variety of purposes.", "description_ja": "幅広い任務に適した小型高速艦船。", "description_ko": "작지만 빠른 기체들로 다양한 임무를 수행할 수 있습니다.", "description_ru": "Это малые быстрые корабли, хорошо подходящие для самых разных задач.", "description_zh": "护卫舰能满足多种需求和目的。", "descriptionID": 65245, "hasTypes": 0, "iconID": 1443, "name_de": "Standardfregatten", "name_en-us": "Standard Frigates", "name_es": "Fragatas estándar", "name_fr": "Frégates standards", "name_it": "Standard Frigates", "name_ja": "標準型フリゲート", "name_ko": "일반 프리깃", "name_ru": "Типовые", "name_zh": "标准护卫舰", "nameID": 66319, "parentGroupID": 1361 }, "6": { "description_de": "Die Zweitgeborenen der Raumschiff-Industrie. Sie sollten jedoch nicht unterschätzt werden.", "description_en-us": "The middle children of the starship industry, but not to be underestimated.", "description_es": "No son ni los más grandes ni los más pequeños, pero no hay que subestimarlos.", "description_fr": "Cadets de l'industrie astronavale, à ne pas sous-estimer pour autant.", "description_it": "The middle children of the starship industry, but not to be underestimated.", "description_ja": "宇宙船としては目立たない位置付けだが、あなどれない。", "description_ko": "함선 제조산업의 중견급 함선으로 무시할 수 없는 화력을 지니고 있습니다.", "description_ru": "Это настоящие рабочие лошадки космоса, которые ни в коем случае нельзя недооценивать.", "description_zh": "星舰工业的中级产物,但不能因此而被忽视。", "descriptionID": 65250, "hasTypes": 0, "iconID": 1443, "name_de": "Standardkreuzer", "name_en-us": "Standard Cruisers", "name_es": "Cruceros estándar", "name_fr": "Croiseurs standards", "name_it": "Standard Cruisers", "name_ja": "標準型巡洋艦", "name_ko": "일반 크루저", "name_ru": "Типовые", "name_zh": "标准巡洋舰", "nameID": 66324, "parentGroupID": 1367 }, "7": { "description_de": "Der Grundstein einer jeden respektablen Streitmacht.", "description_en-us": "The foundations of any respectable fighting force.", "description_es": "Los cimientos de cualquier fuerza bélica respetable.", "description_fr": "Le fondement de toute force de combat qui se respecte.", "description_it": "The foundations of any respectable fighting force.", "description_ja": "艦隊編成の基本となる戦闘艦。", "description_ko": "강력한 화력을 추구하는 함대 구성에 필수적인 함선입니다.", "description_ru": "Это ― основа любого уважающего себя флота.", "description_zh": "任何一支令人生畏的舰队中最根本的中流砥柱。", "descriptionID": 65258, "hasTypes": 0, "iconID": 1443, "name_de": "Standardschlachtschiffe", "name_en-us": "Standard Battleships", "name_es": "Acorazados estándar", "name_fr": "Cuirassés standards", "name_it": "Standard Battleships", "name_ja": "標準型戦艦", "name_ko": "일반 배틀쉽", "name_ru": "Типовые", "name_zh": "标准战列舰", "nameID": 66332, "parentGroupID": 1376 }, "8": { "description_de": "Für den Transport von enormen Frachtmengen gebaut.", "description_en-us": "Built for the transportation of vast amounts of cargo.", "description_es": "Construidas para transportar inmensas cantidades de carga.", "description_fr": "Conçus pour transporter de grandes quantités de marchandises.", "description_it": "Built for the transportation of vast amounts of cargo.", "description_ja": "大量の貨物を輸送できるように設計されている。", "description_ko": "대량의 화물을 운송하기 위해 제작된 함선입니다.", "description_ru": "Эти корабли предназначены для транспортировки большого количества грузов.", "description_zh": "建造用于运输巨量的货物。", "descriptionID": 65267, "hasTypes": 0, "iconID": 1443, "name_de": "Standardtransporter", "name_en-us": "Standard Haulers", "name_es": "Naves de mercancías estándar", "name_fr": "Cargos standards", "name_it": "Standard Haulers", "name_ja": "標準型ハウラー", "name_ko": "일반 운반선", "name_ru": "Стандартные перевозчики", "name_zh": "标准运载舰", "nameID": 66341, "parentGroupID": 1382 }, "9": { "description_de": "Ausrüstungsmodule für Raumschiffe. Dazu gehören viele Arten von Waffen, Elektronik-, Technik-, Panzerungs-, Schild- und Antriebssystemen.", "description_en-us": "Equipment modules for spaceships, including many types of weapon, electronic, engineering, armor, shield and propulsion systems", "description_es": "Módulos de aparatos para naves, incluidos muchos tipos de armas y sistemas de propulsión, electrónicos, de ingeniería, de blindaje y de escudo.", "description_fr": "Modules d'équipement pour vaisseaux spatiaux, y compris de nombreux types d'armes, de systèmes électroniques, de systèmes d'ingénierie, de blindage, de bouclier et de propulsion", "description_it": "Equipment modules for spaceships, including many types of weapon, electronic, engineering, armor, shield and propulsion systems", "description_ja": "宇宙船モジュール(武器系、電子系、電子工学系、アーマー系、シールド系、推進力系など)", "description_ko": "함선 장비 탭에는 각종 무기, 전자 장비, 엔지니어링 장비, 장갑, 실드, 그리고 추진 시스템이 포함되어 있습니다.", "description_ru": "Оборудование для кораблей: орудия, электроника, броня, щиты, различная аппаратура и двигательные подсистемы.", "description_zh": "舰船使用的各种装备,包括武器、电子类、工程类、装甲、护盾和推进系统", "descriptionID": 64452, "hasTypes": 0, "iconID": 1432, "name_de": "Schiffsausrüstung", "name_en-us": "Ship Equipment", "name_es": "Instrumental de la nave", "name_fr": "Équipement de vaisseau", "name_it": "Ship Equipment", "name_ja": "艦船装備", "name_ko": "함선 장비", "name_ru": "Оборудование кораблей", "name_zh": "舰船装备", "nameID": 65526 }, "10": { "description_de": "Waffensysteme um feindlichen Zielen Schaden zuzfügen.", "description_en-us": "Weapon systems to inflict damage on enemy targets", "description_es": "Sistemas de armas para infligir daño a los objetivos enemigos.", "description_fr": "Systèmes d'armement pour infliger des dégâts aux cibles ennemies.", "description_it": "Weapon systems to inflict damage on enemy targets", "description_ja": "敵にダメージを与える兵器システム", "description_ko": "적 함선에 피해를 입히기 위해 제작된 무기 시스템입니다.", "description_ru": "Орудийные установки, предназначенные для уничтожения врагов", "description_zh": "可对敌对目标造成伤害的武器系统", "descriptionID": 64453, "hasTypes": 0, "iconID": 365, "name_de": "Waffentürme & Launcher", "name_en-us": "Turrets & Launchers", "name_es": "Torretas y lanzadores", "name_fr": "Tourelles et lance-missiles", "name_it": "Turrets & Launchers", "name_ja": "タレットとランチャー", "name_ko": "터렛 및 런처 효과", "name_ru": "Турели и пусковые установки", "name_zh": "炮台和发射器", "nameID": 65527, "parentGroupID": 9 }, "11": { "description_de": "In dieser Kategorie befinden sich Munition für Geschütztürme, Lenkwaffen und Bombensysteme, sowie Cap Booster-Ladungen, Bergbaukristalle, Sonden, Nanobot-Reparaturpaste und Skripte.", "description_en-us": "Ammunition for turret, missile and bomb systems can be found in this category, together with cap booster charges, mining crystals, probes, nanite repair paste and module scripts", "description_es": "Aquí hay munición para torretas, misiles y bombas, así como cargas de potenciador del condensador, cristales de minería, sondas, fluido reparador de nanobots y scripts de módulos.", "description_fr": "Vous trouverez dans cette catégorie des munitions pour les systèmes de tourelles, de missiles et de bombes ainsi que des charges de capaciteur, des cristaux d'extraction, des sondes, des nanites de réparation et des scripts de module", "description_it": "Ammunition for turret, missile and bomb systems can be found in this category, together with cap booster charges, mining crystals, probes, nanite repair paste and module scripts", "description_ja": "タレットの弾薬、ミサイル、ボムシステムは、キャップブースターチャージ、採掘クリスタル、プローブ、ナノマシンリペアペイスト、モジュールスクリプトとともにこのカテゴリの中から探すことができます", "description_ko": "터렛, 미사일, 폭탄, 채광용 크리스탈, 프로브, 나나이트 용액, 모듈 스크립트 등이 포함되어 있습니다.", "description_ru": "Здесь находятся боеприпасы для различных орудий, ракеты, бомбы, заряды системы подзарядки накопителя, буровые кристаллы, зонды, ремонтная нанопаста и прошивки для оборудования.", "description_zh": "这里包括了炮台使用的弹药、导弹和立体炸弹,另外还有电容注电装料、采矿晶体、探针、纳米体修复粘合剂和脚本", "descriptionID": 64454, "hasTypes": 0, "iconID": 1299, "name_de": "Munition & Ladungen", "name_en-us": "Ammunition & Charges", "name_es": "Munición y cargas", "name_fr": "Munitions et charges", "name_it": "Ammunition & Charges", "name_ja": "弾薬", "name_ko": "탄약 및 차지", "name_ru": "Боеприпасы и расходники", "name_zh": "军火和弹药", "nameID": 65528 }, "14": { "description_de": "Module die den materiellen Rahmen eines Raumschiffs gegen externe Gefahren stärken", "description_en-us": "Modules that strengthen the physical frame of a spaceship against external dangers", "description_es": "Módulos que refuerzan la coraza de la nave espacial frente a los peligros externos.", "description_fr": "Modules qui renforcent la structure physique d'un vaisseau contre les dangers extérieurs", "description_it": "Modules that strengthen the physical frame of a spaceship against external dangers", "description_ja": "外部からの攻撃に備え、艦船を物理的に強化するモジュール", "description_ko": "함선의 선체 및 장갑을 강화하는 모듈입니다.", "description_ru": "Модули. усиливающие сопротивляемость защитных систем корабля различным поражающим факторам", "description_zh": "可以强化舰船物理结构的装备,助其抵抗外来的危险因素", "descriptionID": 64455, "hasTypes": 0, "iconID": 68, "name_de": "Rumpf & Panzerung", "name_en-us": "Hull & Armor", "name_es": "Casco y blindaje", "name_fr": "Coque et blindage", "name_it": "Hull & Armor", "name_ja": "船体とアーマー", "name_ko": "선체 및 장갑", "name_ru": "Модули корпуса и брони", "name_zh": "船体和装甲", "nameID": 65529, "parentGroupID": 9 }, "19": { "description_de": "Viele ungewöhnliche Güter werden zwischen den Kapselpiloten gehandelt. Dazu gehören verschiedene Erkennungsmarken, Chips, Wertmarken, Codes und Werkzeuge, die bei bestimmten Aktivitäten verwendet werden oder einen Tauschwert bei Nicht-Kapselpiloten haben.", "description_en-us": "Many unusual goods are traded by capsuleers, including various tags, chips, tokens, charters and tools that are used in special activities or have exchange value with non-capsuleers", "description_es": "Los capsulistas intercambian muchos artículos poco comunes, incluidas chapas identificativas, chips, fichas, tokens, patentes y herramientas de diversa índole que se usan en actividades especiales o pueden intercambiarse con pilotos no capsulistas.", "description_fr": "Les capsuliers s'échangent de nombreux objets rares, à savoir des insignes, des puces, des jetons, des chartes et des outils nécessaires dans certaines activités particulières ou qui représentent de la valeur pour des non capsuliers", "description_it": "Many unusual goods are traded by capsuleers, including various tags, chips, tokens, charters and tools that are used in special activities or have exchange value with non-capsuleers", "description_ja": "特殊活動に使用するツール、各種タグ、チップ、トークン、許可証などの珍しいグッズはカプセラとトレードするか、カプセラ以外との取引で入手します", "description_ko": "인식표, 계급장, 칩, 토큰, 부품 등의 각종 물품은 특수한 상황 또는 비캡슐리어와의 거래에 주로 사용됩니다.", "description_ru": "Капсулёры торгуют странными вещицами: личными жетонами, схемами, значками, разрешениями и инструментами, которые имеют особое назначение или высоко ценятся среди не-капсулёров.", "description_zh": "这里是一些飞行员互相交易的特殊货物,包括各种铭牌、芯片、令牌、宪章和工具。这些东西可用于特殊目的,也可拿给NPC换取奖励", "descriptionID": 64457, "hasTypes": 0, "iconID": 2340, "name_de": "Handelsgüter", "name_en-us": "Trade Goods", "name_es": "Mercancías comerciables", "name_fr": "Vente de marchandises", "name_it": "Trade Goods", "name_ja": "トレード品", "name_ko": "무역 상품", "name_ru": "Товары", "name_zh": "贸易货物", "nameID": 65531 }, "20": { "description_de": "Verschiedene Produkte, die in verschiedenen Branchen Verwendung finden.", "description_en-us": "Various products used in a variety of industries", "description_es": "Varios productos usados en diversos sectores.", "description_fr": "Divers produits utilisés dans différents types d'industrie", "description_it": "Various products used in a variety of industries", "description_ja": "各種の産業で使用される製品", "description_ko": "다양한 산업 분야에 사용되는 물품입니다.", "description_ru": "Товары, используемые в различных производственных отраслях", "description_zh": "用于多种工业领域的各种产品", "descriptionID": 64458, "hasTypes": 1, "iconID": 1192, "name_de": "Industriegüter", "name_en-us": "Industrial Goods", "name_es": "Mercancías industriales", "name_fr": "Biens industriels", "name_it": "Industrial Goods", "name_ja": "工業用品", "name_ko": "공산품", "name_ru": "Промышленные товары", "name_zh": "工业货物", "nameID": 65532, "parentGroupID": 19 }, "22": { "description_de": "Chemikalien und Abfall, die vor Strahlung pulsieren. Können gekauft und mit Profit verkauft werden", "description_en-us": "Chemicals and waste, pulsing with radiation. Can be bought and sold for profit", "description_es": "Productos químicos y residuos que emiten radiación. Se pueden comprar y vender para ganar dinero.", "description_fr": "Produits chimiques et autres déchets très irradiants. Peuvent être achetés ou vendus à profit", "description_it": "Chemicals and waste, pulsing with radiation. Can be bought and sold for profit", "description_ja": "放射能を発する化学物質や廃棄物売買を通して利益を得られる", "description_ko": "방사능을 발산하는 화학 폐기물로 다양한 용도로 거래됩니다.", "description_ru": "Химические вещества и отходы, светящиеся от радиоактивного излучения. Их можно покупать и продавать ради выгоды", "description_zh": "具有放射性的化学物及废料,可以用来卖钱。", "descriptionID": 64459, "hasTypes": 1, "iconID": 29, "name_de": "Radioaktive Güter", "name_en-us": "Radioactive Goods", "name_es": "Mercancías radiactivas", "name_fr": "Biens radioactifs", "name_it": "Radioactive Goods", "name_ja": "放射性物質", "name_ko": "방사성 물질", "name_ru": "Радиоактивные вещества", "name_zh": "放射性货物", "nameID": 65533, "parentGroupID": 19 }, "23": { "description_de": "Passiege können einen netten Profit abwerfen", "description_en-us": "Ferrying passengers can give a nice profit", "description_es": "El transporte de pasajeros puede ser un negocio redondo.", "description_fr": "Le transport de passagers peut s'avérer très lucratif", "description_it": "Ferrying passengers can give a nice profit", "description_ja": "乗客を運べば、ちょっとした利益を得られる", "description_ko": "운송 사업은 높은 수익을 보장합니다.", "description_ru": "На пассажирских перевозках можно сколотить целое состояние", "description_zh": "从来来往往的行人身上总能赚到大钱", "descriptionID": 64460, "hasTypes": 1, "iconID": 2543, "name_de": "Passagiere", "name_en-us": "Passengers", "name_es": "Pasajeros", "name_fr": "Passagers", "name_it": "Passengers", "name_ja": "乗客", "name_ko": "사람 및 동물", "name_ru": "Пассажиры", "name_zh": "乘客", "nameID": 65534, "parentGroupID": 19 }, "24": { "description_de": "Kapselpiloten haben unterschiedliche Möglichkeiten, um ihre persönlichen Fähigkeiten zu modifizieren. Dazu gehören kybernetische Implantate und biochemische Booster.", "description_en-us": "Capsuleers have several options for modifying their personal capabilities, including cybernetic implants and biochemical boosters", "description_es": "Los capsulistas tienen varias opciones para modificar sus capacidades personales, incluidos implantes cibernéticos y potenciadores bioquímicos.", "description_fr": "Tout capsulier a plusieurs possibilités de modifier ses aptitudes personnelles, y compris par le biais d'implants cybernétiques et de boosters biochimiques", "description_it": "Capsuleers have several options for modifying their personal capabilities, including cybernetic implants and biochemical boosters", "description_ja": "カプセラはサイバネティックインプラントやバイオケミカルブースターなど、様々なオプションを用いてキャラクターの能力を高めることができます", "description_ko": "캡슐리어들은 사이버네틱 임플란트 및 생화학 부스터를 통해 개인의 능력을 향상할 수 있습니다.", "description_ru": "Капсулёры могут расширить горизонт возможностей своего организма с помощью кибернетических имплантатов и биохимических стимуляторов", "description_zh": "飞行员可以通过几种方式来增强个人能力,比如植入体和增效剂", "descriptionID": 64461, "hasTypes": 0, "iconID": 2563, "name_de": "Implantate & Booster", "name_en-us": "Implants & Boosters", "name_es": "Implantes y potenciadores", "name_fr": "Implants et boosters", "name_it": "Implants & Boosters", "name_ja": "インプラントとブースター", "name_ko": "임플란트 및 부스터", "name_ru": "Импланты и стимуляторы", "name_zh": "植入体和增效剂", "nameID": 65535 }, "27": { "description_de": "Implantate verbessern die Leistung eines Piloten in verschiedenen Bereichen. Einmal eingesetzt können Sie nicht wieder entfernt werden", "description_en-us": "Implants improve a pilot's performance in various areas. They cannot be removed once inserted", "description_es": "Los implantes mejoran el rendimiento de los pilotos en varios ámbitos. Una vez insertados, no se pueden quitar.", "description_fr": "Les implants améliorent les performances d'un pilote dans différents domaines. Une fois installés ils ne peuvent plus être enlevés", "description_it": "Implants improve a pilot's performance in various areas. They cannot be removed once inserted", "description_ja": "インプラントは、パイロットのパフォーマンスを様々な点で向上させる。一度埋め込むと除去できない", "description_ko": "임플란트는 다양한 분야에서 파일럿의 실력을 향상시켜줄 수 있지만 한번 이식이 완료되면 제거가 불가능합니다.", "description_ru": "Имплантаты позволяют увеличить возможности капсулёров. Их нельзя удалить из разъёма", "description_zh": "植入体可以提高飞行员多方面的表现。一旦插入就无法移除", "descriptionID": 64462, "hasTypes": 0, "iconID": 2062, "name_de": "Implantate", "name_en-us": "Implants", "name_es": "Implantes", "name_fr": "Implants", "name_it": "Implants", "name_ja": "インプラント", "name_ko": "임플란트", "name_ru": "Импланты", "name_zh": "植入体", "nameID": 65536, "parentGroupID": 24 }, "52": { "description_de": "Module die einen Einfluss auf die Navigation eines Raumschiffs haben", "description_en-us": "Modules that affect the navigational properties of a spaceship", "description_es": "Módulos que afectan a la capacidad de navegación de las naves.", "description_fr": "Modules qui affectent les propriétés de navigation d'un vaisseau", "description_it": "Modules that affect the navigational properties of a spaceship", "description_ja": "艦船の航行特性に影響を及ぼすモジュール", "description_ko": "추진기는 함선의 비행 속도에 영향을 줍니다.", "description_ru": "Модули, влияющие на навигационные характеристики корабля", "description_zh": "影响舰船导航性能的装备", "descriptionID": 64463, "hasTypes": 0, "iconID": 72, "name_de": "Schiffsantrieb", "name_en-us": "Propulsion", "name_es": "Propulsión", "name_fr": "Propulsion", "name_it": "Propulsion", "name_ja": "推進力", "name_ko": "추진기", "name_ru": "Двигательные установки", "name_zh": "推进器", "nameID": 65537, "parentGroupID": 9 }, "54": { "description_de": "Brocken von Rohmaterial, das von Asteroiden abgebaut wurde.", "description_en-us": "Chunks of raw material harvested from asteroids.", "description_es": "Trozos de materia prima extraída de los asteroides.", "description_fr": "Des morceaux de matière première collectés sur les astéroïdes.", "description_it": "Chunks of raw material harvested from asteroids.", "description_ja": "アステロイドから採掘された原鉱の塊。", "description_ko": "소행성에서 추출할 수 있는 원재료입니다.", "description_ru": "Сырьевые материалы, добываемые на астероидах.", "description_zh": "从小行星上采集的大块原始物质。", "descriptionID": 64464, "hasTypes": 0, "iconID": 1277, "name_de": "Standarderze", "name_en-us": "Standard Ores", "name_es": "Menas estándar", "name_fr": "Minerais standards", "name_it": "Standard Ores", "name_ja": "鉱石", "name_ko": "일반 광물", "name_ru": "Стандартные руды", "name_zh": "标准矿石", "nameID": 65538, "parentGroupID": 1031 }, "61": { "description_de": "Caldari-Fregatten-Designs.", "description_en-us": "Caldari frigate designs.", "description_es": "Diseños de fragatas caldaris.", "description_fr": "Modèles de frégates caldari.", "description_it": "Caldari frigate designs.", "description_ja": "カルダリフリゲート設計図。", "description_ko": "칼다리의 프리깃입니다.", "description_ru": "Фрегаты разработки Государства Caldari.", "description_zh": "加达里护卫舰设计", "descriptionID": 64465, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65539, "parentGroupID": 5 }, "64": { "description_de": "Minmatar-Fregatten-Designs.", "description_en-us": "Minmatar frigate designs.", "description_es": "Diseños de fragatas minmatarianas.", "description_fr": "Modèles de frégates minmatar.", "description_it": "Minmatar frigate designs.", "description_ja": "ミンマターフリゲート設計図。", "description_ko": "민마타의 프리깃입니다.", "description_ru": "Фрегаты разработки Республики Minmatar.", "description_zh": "米玛塔尔护卫舰设计", "descriptionID": 64466, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65540, "parentGroupID": 5 }, "65": { "description_de": "Komponenten, die bei der Produktion von Tech II-Schiffen und -Ausrüstung verwendet werden.", "description_en-us": "Components used in the manufacture of Tech II vessels and equipment.", "description_es": "Componentes usados para fabricar naves y aparatos T2.", "description_fr": "Composants utilisés dans la fabrication de vaisseaux et d'équipements de niveau technologique II.", "description_it": "Components used in the manufacture of Tech II vessels and equipment.", "description_ja": "アマーT2の艦船および装備の製造に使用される部品。", "description_ko": "테크 II 함선 및 장비 제작에 사용되는 부품입니다.", "description_ru": "Компоненты, используемые для производства кораблей и оборудования категории Tech II.", "description_zh": "用来制造二级科技舰船和装备的部件。", "descriptionID": 64467, "hasTypes": 0, "iconID": 2199, "name_de": "Fortschrittliche Komponenten", "name_en-us": "Advanced Components", "name_es": "Componentes avanzados", "name_fr": "Composants avancés", "name_it": "Advanced Components", "name_ja": "高性能部品", "name_ko": "상급 부품", "name_ru": "Усовершенствованные компоненты", "name_zh": "高级组件", "nameID": 65541, "parentGroupID": 1035 }, "72": { "description_de": "Amarr-Fregatten-Designs.", "description_en-us": "Amarr frigate designs.", "description_es": "Diseños de fragatas amarrianas.", "description_fr": "Modèles de frégates amarr.", "description_it": "Amarr frigate designs.", "description_ja": "アマーフリゲート設計図。", "description_ko": "아마르의 프리깃입니다.", "description_ru": "Фрегаты разработки Империи Amarr.", "description_zh": "艾玛护卫舰设计", "descriptionID": 64468, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65542, "parentGroupID": 5 }, "73": { "description_de": "Minmatar-Kreuzer-Designs.", "description_en-us": "Minmatar cruiser designs.", "description_es": "Diseños de cruceros minmatarianos.", "description_fr": "Modèles de croiseurs minmatar.", "description_it": "Minmatar cruiser designs.", "description_ja": "ミンマター巡洋艦設計図。", "description_ko": "민마타의 크루저입니다.", "description_ru": "Крейсеры разработки Республики Minmatar.", "description_zh": "米玛塔尔巡洋舰设计", "descriptionID": 64469, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65543, "parentGroupID": 6 }, "74": { "description_de": "Amarr-Kreuzer-Designs.", "description_en-us": "Amarr cruiser designs.", "description_es": "Diseños de cruceros amarrianos.", "description_fr": "Modèles de croiseurs amarr.", "description_it": "Amarr cruiser designs.", "description_ja": "アマー巡洋艦設計図。", "description_ko": "아마르의 크루저입니다.", "description_ru": "Крейсеры разработки Империи Amarr.", "description_zh": "艾玛巡洋舰设计", "descriptionID": 64470, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65544, "parentGroupID": 6 }, "75": { "description_de": "Caldari-Kreuzer-Designs.", "description_en-us": "Caldari cruiser designs.", "description_es": "Diseños de cruceros caldaris.", "description_fr": "Modèles de croiseurs caldari.", "description_it": "Caldari cruiser designs.", "description_ja": "カルダリ巡洋艦設計図。", "description_ko": "칼다리의 크루저입니다.", "description_ru": "Крейсеры разработки Государства Caldari.", "description_zh": "加达里巡洋舰设计", "descriptionID": 64471, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65545, "parentGroupID": 6 }, "76": { "description_de": "Gallente-Kreuzer-Designs.", "description_en-us": "Gallente cruiser designs.", "description_es": "Diseños de cruceros gallentes.", "description_fr": "Modèles de croiseurs gallente.", "description_it": "Gallente cruiser designs.", "description_ja": "ガレンテ巡洋艦設計図。", "description_ko": "갈란테의 크루저입니다.", "description_ru": "Крейсеры разработки Федерации Gallente.", "description_zh": "盖伦特巡洋舰设计", "descriptionID": 64472, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65546, "parentGroupID": 6 }, "77": { "description_de": "Gallente-Fregatten-Designs.", "description_en-us": "Gallente frigate designs.", "description_es": "Diseños de fragatas gallentes.", "description_fr": "Modèles de frégates gallente.", "description_it": "Gallente frigate designs.", "description_ja": "ガレンテフリゲート設計図。", "description_ko": "갈란테의 프리깃입니다.", "description_ru": "Фрегаты разработки Федерации Gallente.", "description_zh": "盖伦特护卫舰设计", "descriptionID": 64473, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65547, "parentGroupID": 5 }, "78": { "description_de": "Minmatar-Schlachtschiff-Designs.", "description_en-us": "Minmatar battleship designs.", "description_es": "Diseños de acorazados minmatarianos.", "description_fr": "Modèles de cuirassés minmatar.", "description_it": "Minmatar battleship designs.", "description_ja": "ミンマター戦艦設計図。", "description_ko": "민마타의 배틀쉽입니다.", "description_ru": "Линейные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔战列舰设计", "descriptionID": 64474, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65548, "parentGroupID": 7 }, "79": { "description_de": "Amarr-Schlachtschiff-Designs.", "description_en-us": "Amarr battleship designs.", "description_es": "Diseños de acorazados amarrianos.", "description_fr": "Modèles de cuirassés amarr.", "description_it": "Amarr battleship designs.", "description_ja": "アマー戦艦設計図。", "description_ko": "아마르의 배틀쉽입니다.", "description_ru": "Линейные корабли разработки Империи Amarr.", "description_zh": "艾玛战列舰设计", "descriptionID": 64475, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65549, "parentGroupID": 7 }, "80": { "description_de": "Caldari-Schlachtschiff-Designs.", "description_en-us": "Caldari battleship designs.", "description_es": "Diseños de acorazados caldaris.", "description_fr": "Modèles de cuirassés caldari.", "description_it": "Caldari battleship designs.", "description_ja": "カルダリ戦艦の設計図。", "description_ko": "칼다리의 배틀쉽입니다.", "description_ru": "Линейные корабли разработки Государства Caldari.", "description_zh": "加达里战列舰设计", "descriptionID": 64476, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65550, "parentGroupID": 7 }, "81": { "description_de": "Gallente-Schlachtschiff-Designs.", "description_en-us": "Gallente battleship designs.", "description_es": "Diseños de acorazados gallentes.", "description_fr": "Modèles de cuirassés gallente.", "description_it": "Gallente battleship designs.", "description_ja": "ガレンテ戦艦設計図。", "description_ko": "갈란테의 배틀쉽입니다.", "description_ru": "Линейные корабли разработки Федерации Gallente.", "description_zh": "盖伦特战列舰设计", "descriptionID": 64477, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65551, "parentGroupID": 7 }, "82": { "description_de": "Minmatar-Industrial-Designs.", "description_en-us": "Minmatar industrial designs.", "description_es": "Diseños industriales minmatarianos.", "description_fr": "Modèles de vaisseaux industriels minmatar.", "description_it": "Minmatar industrial designs.", "description_ja": "ミンマター輸送艦設計図。", "description_ko": "민마타의 인더스트리얼입니다.", "description_ru": "Промышленные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔工业舰设计", "descriptionID": 64478, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65552, "parentGroupID": 8 }, "83": { "description_de": "Gallente-Industrial-Designs.", "description_en-us": "Gallente industrial designs.", "description_es": "Diseños industriales gallentes.", "description_fr": "Modèles de vaisseaux industriels gallente.", "description_it": "Gallente industrial designs.", "description_ja": "ガレンテ輸送艦設計図。。", "description_ko": "갈란테의 인더스트리얼입니다.", "description_ru": "Промышленные корабли разработки Федерации Gallente.", "description_zh": "盖伦特工业舰设计", "descriptionID": 64479, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65553, "parentGroupID": 8 }, "84": { "description_de": "Caldari-Industrial-Designs.", "description_en-us": "Caldari industrial designs.", "description_es": "Diseños industriales caldaris.", "description_fr": "Modèles de vaisseaux industriels caldari.", "description_it": "Caldari industrial designs.", "description_ja": "カルダリ輸送艦設計図。", "description_ko": "칼다리의 인더스트리얼입니다.", "description_ru": "Промышленные корабли разработки Государства Caldari.", "description_zh": "加达里工业舰设计", "descriptionID": 64480, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65554, "parentGroupID": 8 }, "85": { "description_de": "Amarr-Industrial-Designs.", "description_en-us": "Amarr industrial designs.", "description_es": "Diseños industriales amarrianos.", "description_fr": "Modèles de vaisseaux industriels amarr.", "description_it": "Amarr industrial designs.", "description_ja": "アマー輸送艦設計図。", "description_ko": "아마르의 인더스트리얼입니다.", "description_ru": "Промышленные корабли разработки Империи Amarr.", "description_zh": "艾玛工业舰设计", "descriptionID": 64481, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65555, "parentGroupID": 8 }, "86": { "description_de": "Hybridgeschütztürme sind speziell für den Einbau von Railguns und Blastern entwickelt.", "description_en-us": "Hybrid turrets are specifically designed to house railguns and blasters.", "description_es": "Las torretas híbridas están diseñadas específicamente para albergar cañones electromagnéticos y blásteres.", "description_fr": "Les tourelles hybrides sont spécifiquement conçues pour accueillir des canons à rail et des blasters.", "description_it": "Hybrid turrets are specifically designed to house railguns and blasters.", "description_ja": "ハイブリッドタレットは、レールガンとブラスターを搭載できるように設計されている。", "description_ko": "하이브리드 터렛은 레일건 및 블라스터를 탑재하기 위해 설계되었습니다.", "description_ru": "Турели гибридного действия специально разрабатываются для установки рейлганов и бластеров.", "description_zh": "混合炮塔专用于安装磁轨炮和疾速炮。", "descriptionID": 64482, "hasTypes": 0, "iconID": 376, "name_de": "Hybridgeschütztürme", "name_en-us": "Hybrid Turrets", "name_es": "Torretas híbridas", "name_fr": "Tourelles hybrides", "name_it": "Hybrid Turrets", "name_ja": "ハイブリッドタレット", "name_ko": "하이브리드 터렛", "name_ru": "Гибридные орудия", "name_zh": "混合炮台", "nameID": 65556, "parentGroupID": 10 }, "87": { "description_de": "Gebaut für den Gebrauch von Kanonen, die überhitzte Geschützgranaten abfeuern können.", "description_en-us": "Built to house cannons capable of firing superheated gunshells.", "description_es": "Construidas para albergar cañones capaces de disparar proyectiles sobrecalentados.", "description_fr": "Conçues pour accueillir des canons capables de tirer des obus à très haute température.", "description_it": "Built to house cannons capable of firing superheated gunshells.", "description_ja": "過熱状態の砲弾を発射可能なキャノン砲を搭載できる。", "description_ko": "초고열 포탄을 발사할 수 있도록 설계되었습니다.", "description_ru": "Разработаны для установки артиллерийских орудий, способных вести огонь снарядами с огромной начальной скоростью.", "description_zh": "用来安装发射高温弹丸的加农炮。", "descriptionID": 64483, "hasTypes": 0, "iconID": 387, "name_de": "Projektilgeschütztürme", "name_en-us": "Projectile Turrets", "name_es": "Torretas de proyectiles", "name_fr": "Tourelles à projectiles", "name_it": "Projectile Turrets", "name_ja": "プロジェクタイルタレット", "name_ko": "발사체 터렛", "name_ru": "Баллистические орудия", "name_zh": "射弹炮台", "nameID": 65557, "parentGroupID": 10 }, "88": { "description_de": "Lasergeschütztürme sind für die Unterbringung von Strahl- und Impulslasern gebaut.", "description_en-us": "Laser turrets are built to house beam and pulse lasers.", "description_es": "Las torretas láser albergan láseres de pulsos y de rayos.", "description_fr": "Les tourelles laser sont conçues pour accueillir des lasers à rayons et des lasers à impulsions.", "description_it": "Laser turrets are built to house beam and pulse lasers.", "description_ja": "ビームレーザーとパルスレーザーを搭載できるレーザータレット。", "description_ko": "레이저 터렛은 빔 레이저 및 펄스 레이저를 탑재하기 위해 설계되었습니다.", "description_ru": "Лазерные турели специально разрабатываются для установки непрерывных и импульсных лазеров.", "description_zh": "用来安装集束或者脉冲激光器的激光炮台。", "descriptionID": 64484, "hasTypes": 0, "iconID": 352, "name_de": "Energiegeschütztürme", "name_en-us": "Energy Turrets", "name_es": "Torretas de energía", "name_fr": "Tourelles à énergie", "name_it": "Energy Turrets", "name_ja": "エネルギータレット", "name_ko": "에너지 터렛", "name_ru": "Лазерные орудия", "name_zh": "能量炮台", "nameID": 65558, "parentGroupID": 10 }, "99": { "description_de": "Metallummantelte Granaten, die von Artilleriegeschützen und Maschinenkanonen abgefeuert werden", "description_en-us": "Metal-cased shells, fired by artillery guns and autocannons", "description_es": "Proyectiles con vaina metálica aptos para cañones de artillería y cañones automáticos.", "description_fr": "Obus gainés de métal qui peuvent être tirés par les canons d'artillerie et les canons automatiques", "description_it": "Metal-cased shells, fired by artillery guns and autocannons", "description_ja": "アーティレリ砲やオートキャノンに用いる金属薬莢弾", "description_ko": "함포 및 기관포에 사용되는 철갑탄입니다.", "description_ru": "Снаряды в цельнометаллической оболочке, предназначенные для использования в артиллерийских орудиях и автоматических пушках.", "description_zh": "火炮和自动加农炮使用的金属外壳弹药", "descriptionID": 64485, "hasTypes": 0, "iconID": 1004, "name_de": "Projektilmunition", "name_en-us": "Projectile Ammo", "name_es": "Munición de proyectiles", "name_fr": "Munition de projectile", "name_it": "Projectile Ammo", "name_ja": "プロジェクタイル弾", "name_ko": "발사체 탄약", "name_ru": "Боеприпасы баллистических орудий", "name_zh": "射弹弹药", "nameID": 65559, "parentGroupID": 11 }, "100": { "description_de": "Plasma-Kern-Ladungen, die für Railguns und Blaster entwickelt wurden", "description_en-us": "Charges with a plasma core designed for railguns and blasters", "description_es": "Cargas con núcleo de plasma para cañones electromagnéticos y blásteres.", "description_fr": "Charges contenant un noyau plasma conçues pour les canons à rail et les blasters.", "description_it": "Charges with a plasma core designed for railguns and blasters", "description_ja": "レールガンやブラスターで使用するプラズマコア弾の弾箱", "description_ko": "레일건 및 블라스터에 사용되는 플라즈마 코어입니다.", "description_ru": "Заряды с ловушкой для плазмы, разработанные для рельсотронов и бластеров", "description_zh": "磁轨炮和疾速炮使用的等离子核心弹药", "descriptionID": 64486, "hasTypes": 0, "iconID": 1047, "name_de": "Hybridmunition", "name_en-us": "Hybrid Charges", "name_es": "Cargas híbridas", "name_fr": "Charges hybrides", "name_it": "Hybrid Charges", "name_ja": "ハイブリッド弾", "name_ko": "하이브리드탄", "name_ru": "Гибридные боеприпасы", "name_zh": "混合弹药", "nameID": 65560, "parentGroupID": 11 }, "101": { "description_de": "Passen Energie in verschiedene Frequenzen für Langstreckenlaser und Impulslaser an.", "description_en-us": "Modulate energy into several different frequencies for beam lasers and pulse lasers", "description_es": "Modulan la energía en distintas frecuencias para láseres de rayos y de pulsos.", "description_fr": "Modulent l'énergie en différentes fréquences pour les lasers à rayons et les lasers à impulsions", "description_it": "Modulate energy into several different frequencies for beam lasers and pulse lasers", "description_ja": "エネルギーの周波数を変調させ、ビームレーザーやパルスレーザーを生成する", "description_ko": "빔 레이저 및 펄스 레이저에 사용되는 프리퀀시 크리스탈입니다.", "description_ru": "Изменяют частоту лучей импульсных лазеров и лазеров непрерывного действия", "description_zh": "集束激光器和脉冲激光器使用的多种频率的能量晶体", "descriptionID": 64487, "hasTypes": 0, "iconID": 1131, "name_de": "Frequenzkristalle", "name_en-us": "Frequency Crystals", "name_es": "Cristales de frecuencia", "name_fr": "Cristaux de fréquence", "name_it": "Frequency Crystals", "name_ja": "フリーケンシークリスタル", "name_ko": "프리퀀시 크리스탈", "name_ru": "Кристаллы для лазеров", "name_zh": "频率晶体", "nameID": 65561, "parentGroupID": 11 }, "102": { "description_de": "Kleine Frequenzkristalle, für die Benutzung mit für Fregatten typischen Lasern.", "description_en-us": "Small frequency crystals, for use with frigate-sized lasers.", "description_es": "Cristales de frecuencia pequeños para usarlos con láseres de naves de tamaño fragata.", "description_fr": "Petits cristaux de fréquence utilisés, par exemple, sur les lasers des frégates.", "description_it": "Small frequency crystals, for use with frigate-sized lasers.", "description_ja": "フリゲート級レーザーで使用される小型フリーケンシークリスタル。", "description_ko": "소형 프리퀀시 크리스탈로 프리깃급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Частотные кристаллы малого калибра для лазеров, устанавливаемых на фрегаты.", "description_zh": "护卫舰等级的舰炮使用的小型频率晶体。", "descriptionID": 64488, "hasTypes": 1, "iconID": 1142, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65562, "parentGroupID": 851 }, "103": { "description_de": "Mittlere Frequenzkristalle, für die Benutzung von für Kreuzer typischen Lasern.", "description_en-us": "Medium frequency crystals, for use with cruiser-sized lasers.", "description_es": "Cristales de frecuencia medianos para usarlos con láseres de naves de tamaño crucero.", "description_fr": "Cristaux de fréquence de taille intermédiaire utilisés, par exemple, sur les lasers des croiseurs.", "description_it": "Medium frequency crystals, for use with cruiser-sized lasers.", "description_ja": "巡洋艦級レーザーで使用される中型フリーケンシークリスタル。", "description_ko": "중형 프리퀀시 크리스탈로 크루저급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Частотные кристаллы среднего калибра для лазеров, устанавливаемых на крейсеры.", "description_zh": "巡洋舰级别激光器使用的频率水晶。", "descriptionID": 64489, "hasTypes": 1, "iconID": 1142, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65563, "parentGroupID": 851 }, "105": { "description_de": "Große Frequenzkristalle, für die Benutzung von für Schlachtschiffe typischen Lasern.", "description_en-us": "Large frequency crystals, for use with battleship-sized lasers.", "description_es": "Cristales de frecuencia grandes para usarlos con láseres de naves de tamaño acorazado.", "description_fr": "Grands cristaux de fréquence utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Large frequency crystals, for use with battleship-sized lasers.", "description_ja": "戦艦級レーザーで使用される大型のフリーケンシークリスタル。", "description_ko": "대형 프리퀀시 크리스탈로 배틀쉽급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Частотные кристаллы большого калибра для лазеров, устанавливаемых на линкоры.", "description_zh": "战列舰级别的激光武器使用的大型频率晶体。", "descriptionID": 64490, "hasTypes": 1, "iconID": 1142, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65564, "parentGroupID": 851 }, "106": { "description_de": "Große Hybridgranaten, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large hybrid shells, fired by battleship-sized guns.", "description_es": "Proyectiles híbridos de gran calibre aptos para cañones de naves de tamaño acorazado.", "description_fr": "Obus hybrides de grande taille tirés, par exemple, par les canons des cuirassés.", "description_it": "Large hybrid shells, fired by battleship-sized guns.", "description_ja": "戦艦級銃砲で使用される大型ハイブリッド弾。", "description_ko": "대형 하이브리드 포탄으로 배틀쉽급 함포에서 사용되고 있습니다.", "description_ru": "Гибридные заряды большого калибра для орудий, устанавливаемых на линкоры.", "description_zh": "战列舰级别的炮台发射的大型混合弹药。", "descriptionID": 64491, "hasTypes": 1, "iconID": 1047, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65565, "parentGroupID": 848 }, "107": { "description_de": "Kleine Hybridgranaten, aus für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small hybrid shells, fired by frigate-sized guns.", "description_es": "Proyectiles híbridos de pequeño calibre aptos para cañones de naves de tamaño fragata.", "description_fr": "Obus hybrides de petite taille tirés, par exemple, par les canons des frégates.", "description_it": "Small hybrid shells, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される小型ハイブリッド弾。", "description_ko": "소형 하이브리드 포탄으로 프리깃급 함포에서 사용되고 있습니다.", "description_ru": "Гибридные снаряды малого калибра для орудий, устанавливаемых на фрегаты.", "description_zh": "护卫舰等级的舰炮使用的小型混合弹药。", "descriptionID": 64492, "hasTypes": 1, "iconID": 1047, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65566, "parentGroupID": 848 }, "108": { "description_de": "Mittlere Hybridgranaten, für die Benutzung von für Kreuzer typischen Geschützen.", "description_en-us": "Medium hybrid shells, fired by cruiser-sized guns.", "description_es": "Proyectiles híbridos de medio calibre aptos para cañones de naves de tamaño crucero.", "description_fr": "Obus hybrides de taille moyenne tirés, par exemple, par les canons des croiseurs.", "description_it": "Medium hybrid shells, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型ハイブリッド弾", "description_ko": "중형 하이브리드 포탄으로 크루저급 함포에서 사용되고 있습니다.", "description_ru": "Гибридные заряды среднего калибра для орудий, устанавливаемых на крейсеры.", "description_zh": "由巡洋舰级别舰炮发射的混合弹药。", "descriptionID": 64493, "hasTypes": 1, "iconID": 1047, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65567, "parentGroupID": 848 }, "109": { "description_de": "Große Projektilgranaten, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large projectile shells, fired by battleship-sized guns.", "description_es": "Proyectiles de gran calibre aptos para cañones de naves de tamaño acorazado.", "description_fr": "Obus de grande taille tirés, par exemple, par les canons des cuirassés.", "description_it": "Large projectile shells, fired by battleship-sized guns.", "description_ja": "戦艦級銃砲で使用される大型プロジェクタイル弾。", "description_ko": "대형 발사체 포탄으로 배틀쉽급 함포에서 사용되고 있습니다.", "description_ru": "Огнестрельные боеприпасы большого калибра для орудий, устанавливаемых на линкоры.", "description_zh": "战列舰级别的炮台发射的大型射弹弹药。", "descriptionID": 64494, "hasTypes": 1, "iconID": 1004, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65568, "parentGroupID": 845 }, "112": { "description_de": "Mittlere Projektilgranaten, für die Benutzung von für Kreuzer typischen Geschützen.", "description_en-us": "Medium projectile shells, fired by cruiser-sized guns.", "description_es": "Proyectiles de medio calibre aptos para cañones de naves de tamaño crucero.", "description_fr": "Obus de taille moyenne tirés, par exemple, par les canons des croiseurs.", "description_it": "Medium projectile shells, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型プロジェクタイル弾。", "description_ko": "중형 발사체 포탄으로 크루저급 함포에서 사용되고 있습니다.", "description_ru": "Огнестрельные боеприпасы среднего калибра для орудий, устанавливаемых на крейсеры.", "description_zh": "由巡洋舰级别舰炮发射的射弹弹药。", "descriptionID": 64495, "hasTypes": 1, "iconID": 1004, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65569, "parentGroupID": 845 }, "113": { "description_de": "Kleine Projektilgranaten, aus für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small projectile shells, fired by frigate-sized guns.", "description_es": "Proyectiles de pequeño calibre aptos para cañones de naves de tamaño fragata.", "description_fr": "Obus de petite taille tirés, par exemple, par les canons des frégates.", "description_it": "Small projectile shells, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される小型プロジェクタイル弾。", "description_ko": "소형 발사체 포탄으로 프리깃급 함포에서 사용되고 있습니다.", "description_ru": "Огнестрельные снаряды малого калибра для орудий, устанавливаемых на фрегаты.", "description_zh": "护卫舰等级的舰炮使用的小型射弹弹药。", "descriptionID": 64496, "hasTypes": 1, "iconID": 1004, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65570, "parentGroupID": 845 }, "114": { "description_de": "Projektile mit Selbstantrieb und verschiedener Sprengladung", "description_en-us": "Self-propelled projectiles with various payloads", "description_es": "Proyectiles autopropulsados con varias cargas útiles.", "description_fr": "Projectiles autopropulsés de différentes charges.", "description_it": "Self-propelled projectiles with various payloads", "description_ja": "様々な破壊力を持つ自己推進型ミサイル", "description_ko": "다양한 탄두가 탑재된 제트 추진 미사일입니다.", "description_ru": "Реактивные снаряды с различной поражающей частью.", "description_zh": "具有多种载荷的自推进式弹药", "descriptionID": 64497, "hasTypes": 0, "iconID": 1334, "name_de": "Lenkwaffen", "name_en-us": "Missiles", "name_es": "Misiles", "name_fr": "Missiles", "name_it": "Missiles", "name_ja": "ミサイル", "name_ko": "미사일", "name_ru": "Ракеты", "name_zh": "导弹", "nameID": 65571, "parentGroupID": 11 }, "115": { "description_de": "Falls die Zielerfassungssysteme versagen.", "description_en-us": "For when targeting systems fail.", "description_es": "Para cuando los sistemas de adquisición de objetivos fallan.", "description_fr": "À utiliser quand les systèmes de visée ne fonctionnent plus.", "description_it": "For when targeting systems fail.", "description_ja": "ターゲットシステムの故障に備えて。", "description_ko": "자동 유도 기능이 탑재된 미사일입니다.", "description_ru": "Используются в случаях, когда системы наведения отказывают.", "description_zh": "可在锁定系统失灵时使用。", "descriptionID": 64498, "hasTypes": 0, "iconID": 1335, "name_de": "Auto-Zielerfassung", "name_en-us": "Auto-Targeting", "name_es": "Adquisición automática de objetivos", "name_fr": "Ciblage automatique", "name_it": "Auto-Targeting", "name_ja": "自動捕捉型", "name_ko": "오토 타겟팅 미사일", "name_ru": "Ракеты с автономным наведением", "name_zh": "自动锁定", "nameID": 65572, "parentGroupID": 114 }, "116": { "description_de": "Die Raketenabwehr-Missile.", "description_en-us": "The anti-missile missile.", "description_es": "El misil antimisiles.", "description_fr": "Le missile anti-missile.", "description_it": "The anti-missile missile.", "description_ja": "ミサイル迎撃ミサイル。", "description_ko": "탄도탄 요격 미사일입니다.", "description_ru": "Ракеты, применяющиеся против других ракет.", "description_zh": "反弹道导弹", "descriptionID": 64499, "hasTypes": 1, "iconID": 192, "name_de": "Abfangraketen", "name_en-us": "Defender", "name_es": "De defensa", "name_fr": "Défenseur", "name_it": "Defender", "name_ja": "ディフェンダー", "name_ko": "디펜더", "name_ru": "Противоракеты", "name_zh": "反弹道导弹", "nameID": 65573, "parentGroupID": 114 }, "117": { "description_de": "Düsenangetriebene Projektile für normalgroße Abschussgeräte.", "description_en-us": "Jet-propelled projectiles for standard-sized launchers.", "description_es": "Proyectiles autopropulsados para lanzadores de tamaño estándar.", "description_fr": "Projectiles autopropulsés pour des lanceurs de taille standard.", "description_it": "Jet-propelled projectiles for standard-sized launchers.", "description_ja": "標準型ランチャーで用いられるジェット推進式プロジェクタイル。", "description_ko": "제트로 추진되는 미사일로 일반 런처에 탑재할 수 있습니다.", "description_ru": "Реактивные снаряды для стандартных пусковых установок.", "description_zh": "标准发射器使用的喷气推进的导弹。", "descriptionID": 64500, "hasTypes": 0, "iconID": 192, "name_de": "Leichte Lenkwaffen", "name_en-us": "Light Missiles", "name_es": "Misiles ligeros", "name_fr": "Missiles légers", "name_it": "Light Missiles", "name_ja": "ライトミサイル", "name_ko": "라이트 미사일", "name_ru": "Лёгкие ракеты", "name_zh": "轻型导弹", "nameID": 65574, "parentGroupID": 114 }, "118": { "description_de": "Hunderte von kleinen Bissen werden sogar den stärksten Gegner wegschleifen.", "description_en-us": "Hundreds of tiny bites will wear away even the toughest opponent.", "description_es": "Cientos de pequeños impactos pueden incluso con el rival más duro.", "description_fr": "Plusieurs centaines de petites morsures viendront toujours à bout de l'adversaire, aussi solide qu'il soit.", "description_it": "Hundreds of tiny bites will wear away even the toughest opponent.", "description_ja": "小さなダメージの積み重ねで無敵の戦艦ですら消耗させる。", "description_ko": "아무리 굳센 적도 수 백개의 파편을 맞게 되면 파괴될 수 밖에 없습니다.", "description_ru": "Сотни крошечных укусов измотают даже самого сильного противника.", "description_zh": "不计其数的蚂蚁也能将最强的对手削成骨架。", "descriptionID": 64501, "hasTypes": 0, "iconID": 1352, "name_de": "Raketen", "name_en-us": "Rockets", "name_es": "Cohetes", "name_fr": "Roquettes", "name_it": "Rockets", "name_ja": "ロケット", "name_ko": "로켓", "name_ru": "Лёгкие штурмовые ракеты", "name_zh": "火箭", "nameID": 65575, "parentGroupID": 114 }, "120": { "description_de": "Im All zum Scannen oder Unterbrechen stationiert.", "description_en-us": "Deployed into space for scanning or disruption purposes", "description_es": "Se lanzan al espacio para actividades de escaneo o disrupción.", "description_fr": "Déployées dans l'espace pour effectuer des opérations de scan ou de perturbation.", "description_it": "Deployed into space for scanning or disruption purposes", "description_ja": "宙域に配置し、スキャンや妨害を行える", "description_ko": "스캔 및 각종 교란 임무에 사용되는 프로브입니다.", "description_ru": "Выпускаются в космос для сбора разведданных или создания помех", "description_zh": "出于扫描或干扰目的而部署到太空中的物体", "descriptionID": 65198, "hasTypes": 0, "iconID": 1723, "name_de": "Sonden", "name_en-us": "Probes", "name_es": "Sondas", "name_fr": "Sondes", "name_it": "Probes", "name_ja": "プローブ", "name_ko": "프로브", "name_ru": "Зонды", "name_zh": "探针", "nameID": 66272, "parentGroupID": 11 }, "126": { "description_de": "Steigerung der Wiederaufladerate des Schilds.", "description_en-us": "Provide an increase to the shield's recharge rate.", "description_es": "Aumentan la velocidad de carga del escudo.", "description_fr": "Permettent une recharge plus rapide du bouclier.", "description_it": "Provide an increase to the shield's recharge rate.", "description_ja": "シールド自動回復効率を向上させる。", "description_ko": "실드 회복률을 증가시키는 장치입니다.", "description_ru": "Увеличивают скорость подзарядки щита.", "description_zh": "增加护盾的回充速度。", "descriptionID": 64502, "hasTypes": 1, "iconID": 26451, "name_de": "Schildladegeräte", "name_en-us": "Shield Rechargers", "name_es": "Cargadores de escudo", "name_fr": "Rechargeurs de bouclier", "name_it": "Shield Rechargers", "name_ja": "シールドリチャージャー", "name_ko": "실드 회복장치", "name_ru": "Регенераторы щитов", "name_zh": "护盾回充器", "nameID": 65576, "parentGroupID": 554 }, "128": { "description_de": "Übertragen Schilde auf andere Schiffe.", "description_en-us": "Transfer shields to another ship.", "description_es": "Transferencia de escudos a otra nave.", "description_fr": "Transfèrent des boucliers vers un autre vaisseau.", "description_it": "Transfer shields to another ship.", "description_ja": "他の船のシールドを回復させる。", "description_ko": "대상 함선으로 실드를 전송합니다.", "description_ru": "Дистанционное восстановление щита дружественного корабля.", "description_zh": "将护盾量输送给另外的舰船。", "descriptionID": 64503, "hasTypes": 0, "iconID": 86, "name_de": "Schildfernbooster", "name_en-us": "Remote Shield Boosters", "name_es": "Potenciadores de escudo remotos", "name_fr": "Boosters de bouclier à distance", "name_it": "Remote Shield Boosters", "name_ja": "リモートシールドブースター", "name_ko": "원격 실드 부스터", "name_ru": "Установки дистанционной накачки щитов", "name_zh": "远程护盾回充增量器", "nameID": 65577, "parentGroupID": 554 }, "131": { "description_de": "Ultrafortschrittliche Antriebsuntersysteme, die einen massiven Geschwindigkeitszuwachs ermöglichen.", "description_en-us": "Ultra-advanced propulsion subsystems giving a massive speed boost.", "description_es": "Subsistemas de propulsión ultraavanzados que proporcionan un gran impulso de velocidad.", "description_fr": "Sous-systèmes de propulsion technologiquement très avancés qui fournissent un formidable surplus de vitesse.", "description_it": "Ultra-advanced propulsion subsystems giving a massive speed boost.", "description_ja": "爆発的にスピードを向上させる超高性能推進力サブシステム。", "description_ko": "최첨단 추진기 서브시스템으로 막대한 속도 증가를 부여합니다.", "description_ru": "Ультрасовершенные подсистемы силовой установки, дающие значительный прирост скорости.", "description_zh": "超先进的推进器子系统,能够提供极强的推力增量。", "descriptionID": 64504, "hasTypes": 1, "iconID": 10149, "name_de": "Mikrowarpantriebe", "name_en-us": "Microwarpdrives", "name_es": "Motores de microwarp", "name_fr": "Propulseurs de microwarp", "name_it": "Microwarpdrives", "name_ja": "マイクロワープドライブ", "name_ko": "마이크로 워프 드라이브", "name_ru": "Микроварп-ускорители", "name_zh": "微型跃迁推进器", "nameID": 65578, "parentGroupID": 52 }, "132": { "description_de": "Hüllenmodifikationen für schnellere Geschwindigkeit des Schiffs.", "description_en-us": "Hull modifications designed to increase a ship's speed.", "description_es": "Modificaciones de casco diseñadas para aumentar la velocidad de una nave.", "description_fr": "Modifications de la coque conçues pour augmenter la vitesse du vaisseau.", "description_it": "Hull modifications designed to increase a ship's speed.", "description_ja": "航行速度をアップさせる船体改造。", "description_ko": "함선의 속도를 향상할 수 있는 선체 개조입니다.", "description_ru": "Модификация корпуса, разработанная для увеличения скорости корабля.", "description_zh": "通过对舰船船体进行改造来达到提高舰船速度的目的。", "descriptionID": 64505, "hasTypes": 0, "iconID": 97, "name_de": "Antriebsupgrades", "name_en-us": "Propulsion Upgrades", "name_es": "Mejoras de propulsión", "name_fr": "Améliorations de la propulsion", "name_it": "Propulsion Upgrades", "name_ja": "推進力強化", "name_ko": "추진기 업그레이드", "name_ru": "Улучшения двигательных установок", "name_zh": "推进器改良", "nameID": 65579, "parentGroupID": 52 }, "133": { "description_de": "Verstärkte Panzerplatten für zusätzlichen Schutz.", "description_en-us": "Reinforced armor plates for additional protection.", "description_es": "Placas de blindaje reforzadas para protección adicional.", "description_fr": "Revêtement de blindage renforcé fournissant une protection supplémentaire.", "description_it": "Reinforced armor plates for additional protection.", "description_ja": "防御を高めるための強化アーマープレート。", "description_ko": "추가적인 보호를 위해 장착할 수 있는 강화 장갑 플레이트입니다.", "description_ru": "Усиленные бронеплиты, обеспечивающие дополнительную защиту.", "description_zh": "加强的装甲附甲板以提供更多的防护能力。", "descriptionID": 64506, "hasTypes": 0, "iconID": 79, "name_de": "Panzerplatten", "name_en-us": "Armor Plates", "name_es": "Placas de blindaje", "name_fr": "Revêtement de blindage", "name_it": "Armor Plates", "name_ja": "アーマープレート", "name_ko": "장갑 플레이팅", "name_ru": "Бронеплиты", "name_zh": "装甲附甲板", "nameID": 65580, "parentGroupID": 14 }, "134": { "description_de": "Das Beste der Nano-Robotik; Panzerungssofortreparatur.", "description_en-us": "Nano-assembler technology at its best. Repair armor on the fly.", "description_es": "La tecnología de nanoensamblaje en todo su esplendor. Repara el blindaje sobre la marcha.", "description_fr": "Le meilleur du nano-assemblage. Réparez votre blindage sur-le-champ.", "description_it": "Nano-assembler technology at its best. Repair armor on the fly.", "description_ja": "最高水準のナノアセンブラー技術。航行中でもアーマーの修復が可能。", "description_ko": "최첨단 나노 어셈블러 기술입니다. 우주공간에서 장갑수리가 가능합니다.", "description_ru": "Последнее слово в технологии наносборки. Ремонтируйте броню на ходу.", "description_zh": "纳米装配技术让装甲的维修能在飞行中进行。", "descriptionID": 64507, "hasTypes": 0, "iconID": 80, "name_de": "Panzerungsreparatursysteme", "name_en-us": "Armor Repairers", "name_es": "Reparadores de blindaje", "name_fr": "Réparateurs de blindage", "name_it": "Armor Repairers", "name_ja": "アーマーリペアラ", "name_ko": "장갑수리 장치", "name_ru": "Системы ремонта брони", "name_zh": "装甲维修器", "nameID": 65581, "parentGroupID": 14 }, "135": { "description_de": "Schiffsrumpfmodifikationen mit verschiedensten Anwendungen.", "description_en-us": "Hull modifications with various applications.", "description_es": "Modificaciones de casco con varias aplicaciones.", "description_fr": "Modifications de la coque ayant diverses applications.", "description_it": "Hull modifications with various applications.", "description_ja": "様々な目的のための船体改造。", "description_ko": "다양한 목적의 선체 개조 업그레이드입니다.", "description_ru": "Эти системы позволяют вносить в корпус корабля различные изменения.", "description_zh": "多种改造船体的附加设备。", "descriptionID": 65197, "hasTypes": 0, "iconID": 92, "name_de": "Rumpfupgrades", "name_en-us": "Hull Upgrades", "name_es": "Mejoras del casco", "name_fr": "Améliorations de coque", "name_it": "Hull Upgrades", "name_ja": "船体強化", "name_ko": "선체 업그레이드", "name_ru": "Улучшения корпуса", "name_zh": "船体加固", "nameID": 66271, "parentGroupID": 14 }, "139": { "description_de": "Gibt dem Energiespeicher eines Raumschiffs einen sofortigen Schub", "description_en-us": "Give an instant boost to a spaceship's capacitor", "description_es": "Potencia brevemente un condensador de nave.", "description_fr": "Donner un coup de boost instantané au capaciteur d'un vaisseau", "description_it": "Give an instant boost to a spaceship's capacitor", "description_ja": "艦船のキャパシタを瞬時にブーストする", "description_ko": "캐패시터를 일시적으로 증폭시키는 부스터입니다.", "description_ru": "Мгновенно пополняют запас энергии в накопителе корабля", "description_zh": "立即增加舰船的电容", "descriptionID": 64509, "hasTypes": 1, "iconID": 1033, "name_de": "Cap Booster-Ladungen", "name_en-us": "Cap Booster Charges", "name_es": "Cargas de potenciador de condensador", "name_fr": "Charges d’appoint de capaciteur", "name_it": "Cap Booster Charges", "name_ja": "キャップブースターチャージ", "name_ko": "캐패시터 부스터", "name_ru": "Заряды пополнения накопителя", "name_zh": "电容注电装料", "nameID": 65583, "parentGroupID": 11 }, "140": { "description_de": "Zum Abschuss von düsenbetriebenen Lenkraketen.", "description_en-us": "For the launching of jet-propelled guided missiles.", "description_es": "Para lanzar misiles autopropulsados por chorro.", "description_fr": "Pour lancer des missiles guidés autopropulsés.", "description_it": "For the launching of jet-propelled guided missiles.", "description_ja": "ジェット推進式誘導ミサイルの発射用。", "description_ko": "유도 미사일을 발사하는 런처입니다.", "description_ru": "Установки для пуска управляемых ракет на реактивной тяге.", "description_zh": "用于发射喷气推进导弹的发射器。", "descriptionID": 64510, "hasTypes": 0, "iconID": 168, "name_de": "Lenkwaffenwerfer", "name_en-us": "Missile Launchers", "name_es": "Lanzamisiles", "name_fr": "Lance-missiles", "name_it": "Missile Launchers", "name_ja": "ミサイルランチャー", "name_ko": "미사일 런처", "name_ru": "Пусковые установки", "name_zh": "导弹发射器", "nameID": 65584, "parentGroupID": 10 }, "141": { "description_de": "Rundstrahlende Energiestöße, die allem innerhalb des Radius Schaden zufügen. Gut gegen Drohnen", "description_en-us": "Omnidirectional energy blasts that damage everything in a radius. Good against drones", "description_es": "Liberan descargas de energía omnidireccional que infligen daño a todo lo que se encuentra en su radio de explosión. Efectivas contra drones.", "description_fr": "Explosion d'énergie omnidirectionnelle qui inflige des dégâts à tout ce qui se trouve dans son rayon d'action. Efficace contre les drones", "description_it": "Omnidirectional energy blasts that damage everything in a radius. Good against drones", "description_ja": "範囲内のすべてのものにダメージを与える全方位型のエネルギー爆発。ドローンに対し効果的", "description_ko": "전방위 에너지 폭발을 일으켜 범위 내 모든 대상에게 피해를 입힙니다. 드론을 대상으로 효과적입니다.", "description_ru": "Всенаправленные энергетические взрывы, наносящие урон всем объектам в радиусе действия. Особенно хороши против дронов", "description_zh": "立体式能量冲击波,可攻击半径内的一切物体。对无人机尤其有效", "descriptionID": 64511, "hasTypes": 0, "iconID": 112, "name_de": "Smartbombs", "name_en-us": "Smartbombs", "name_es": "Bombas inteligentes", "name_fr": "Bombes intelligentes", "name_it": "Smartbombs", "name_ja": "スマートボム", "name_ko": "스마트폭탄", "name_ru": "Импульсные излучатели", "name_zh": "立体炸弹", "nameID": 65585, "parentGroupID": 9 }, "143": { "description_de": "Untersysteme, die zur Verbesserung der Waffeneffizienz gedacht sind.", "description_en-us": "Subsystems designed to improve weapon efficiency.", "description_es": "Subsistemas diseñados para mejorar la eficiencia de las armas.", "description_fr": "Sous-systèmes conçus pour améliorer l'efficacité de l'armement.", "description_it": "Subsystems designed to improve weapon efficiency.", "description_ja": "武器の効率を高めるサブシステム。", "description_ko": "무기 효율성을 향상할 수 있는 서브시스템입니다.", "description_ru": "Подсистемы, разработанные для повышения эффективности вооружений.", "description_zh": "用于提升武器性能的子系统。", "descriptionID": 64512, "hasTypes": 0, "iconID": 21440, "name_de": "Waffenupgrades", "name_en-us": "Weapon Upgrades", "name_es": "Mejoras de armas", "name_fr": "Améliorations de l'armement", "name_it": "Weapon Upgrades", "name_ja": "兵器強化", "name_ko": "무기 업그레이드", "name_ru": "Улучшения систем вооружения", "name_zh": "武器升级", "nameID": 65586, "parentGroupID": 10 }, "150": { "description_de": "Skills werden von Kapselpiloten mithilfe von speziellen Datenchips erlernt, die als Skillbücher bekannt sind. Diese sind für fast jede vorstellbare Aktivität erhältlich, die im Weltraum durchgeführt werden kann.", "description_en-us": "Skills are learned by capsuleer pilots using special data chips known as skillbooks, and these are available for almost any imaginable activity that can be carried out in space", "description_es": "Los pilotos capsulistas pueden aprender habilidades con chips de datos especiales, conocidos como habilidarios. Existen tantos tipos como actividades se llevan a cabo en el espacio.", "description_fr": "Les capsuliers apprennent les compétences à l'aide de puces de données spécifiques appelées des livres de compétence, celles-ci peuvent traiter de quasiment n'importe quelle activité rencontrée dans l'espace", "description_it": "Skills are learned by capsuleer pilots using special data chips known as skillbooks, and these are available for almost any imaginable activity that can be carried out in space", "description_ja": "カプセラはスキルブックと呼ばれる特殊なデータチップを使用してスキルを習得します。また、宇宙空間で想像しうるほとんどのアクティビティが実行可能です", "description_ko": "캡슐리어는 스킬북이라 불리는 특수 데이터칩을 통해 기술을 습득할 수 있습니다.", "description_ru": "Пилоты-капсулёры осваивают навыки прямой загрузкой навыков в сознание при помощи особых схем — обучающих программ. Такие схемы разработаны и доступны практически для всех мыслимых видов деятельности обитателей космоса.", "description_zh": "克隆飞行员使用名为“技能书”的特殊数据芯片来学习技能,而技能可以用在宇宙中几乎任何你能想到的活动中", "descriptionID": 64513, "hasTypes": 0, "iconID": 33, "name_de": "Skills", "name_en-us": "Skills", "name_es": "Habilidades", "name_fr": "Compétences", "name_it": "Skills", "name_ja": "スキル", "name_ko": "스킬", "name_ru": "Навыки", "name_zh": "技能", "nameID": 65587 }, "157": { "description_de": "Drohnen sind semi-autonome Robotereinheiten, die für militärische und industrielle Zwecke im Weltraum genutzt werden können.", "description_en-us": "Drones are semi-autonomous robotic devices used for military and industrial purposes throughout space", "description_es": "Los drones son dispositivos robóticos semiautónomos usados para fines militares e industriales en el espacio.", "description_fr": "Les drones sont des appareils robotisés semi-autonomes conçus pour des usages militaires et industriels dans l'espace", "description_it": "Drones are semi-autonomous robotic devices used for military and industrial purposes throughout space", "description_ja": "ドローンは、宇宙空間で軍事や産業に使用される半自律型ロボット装置です", "description_ko": "첨단 로봇공학의 집합체로 각종 군사 및 산업 분야에 사용되고 있습니다.", "description_ru": "Дроны — полуавтоматические роботизированные устройства, используемые в военных и промышленных целях по всему космосу.", "description_zh": "无人机是一种半自主式机器设备,可以用于军事和工业领域", "descriptionID": 64514, "hasTypes": 0, "iconID": 1084, "name_de": "Drohnen", "name_en-us": "Drones", "name_es": "Drones", "name_fr": "Drones", "name_it": "Drones", "name_ja": "ドローン", "name_ko": "드론", "name_ru": "Дроны", "name_zh": "无人机", "nameID": 65588 }, "158": { "description_de": "Drohnen die Asteroiden für Rohmaterial abbauen können", "description_en-us": "Drones capable of mining asteroids for raw materials", "description_es": "Drones que pueden extraer materias primas de los asteroides.", "description_fr": "Drones capables d'extraire des matières premières des astéroïdes", "description_it": "Drones capable of mining asteroids for raw materials", "description_ja": "小惑星を採掘し、原料を収集できるドローン", "description_ko": "자원 추출에 특화된 드론입니다.", "description_ru": "Дроны, используемые для добычи сырья", "description_zh": "擅长从小行星中采集原材料的无人机", "descriptionID": 64515, "hasTypes": 1, "iconID": 1084, "name_de": "Bergbaudrohnen", "name_en-us": "Mining Drones", "name_es": "Drones mineros", "name_fr": "Drones d’extraction", "name_it": "Mining Drones", "name_ja": "採掘専門ドローン", "name_ko": "채굴 드론", "name_ru": "Буровые дроны", "name_zh": "采矿无人机", "nameID": 65589, "parentGroupID": 157 }, "159": { "description_de": "Drohnen mit Kampfpotential", "description_en-us": "Drones with combat capabilities", "description_es": "Drones con capacidades de combate.", "description_fr": "Drones disposant de capacités de combat", "description_it": "Drones with combat capabilities", "description_ja": "戦闘能力を持つドローン", "description_ko": "전투용 드론입니다.", "description_ru": "Дроны, используемые в боевых целях", "description_zh": "具有战斗能力的无人机", "descriptionID": 64516, "hasTypes": 0, "iconID": 1084, "name_de": "Kampfdrohnen", "name_en-us": "Combat Drones", "name_es": "Drones de combate", "name_fr": "Drones de combat", "name_it": "Combat Drones", "name_ja": "戦闘用ドローン", "name_ko": "공격 드론", "name_ru": "Боевые дроны", "name_zh": "战斗无人机", "nameID": 65590, "parentGroupID": 157 }, "204": { "description_de": "Blaupausen von Kapselpiloten-Raumschiffen", "description_en-us": "Blueprints of capsuleer spaceships", "description_es": "Planos de naves de capsulistas.", "description_fr": "Plans de construction de vaisseaux de capsulier", "description_it": "Blueprints of capsuleer spaceships", "description_ja": "カプセラ艦船のブループリント", "description_ko": "함선 블루프린트입니다.", "description_ru": "Чертежи проектов кораблей капсулёров", "description_zh": "各种舰船的蓝图", "descriptionID": 64517, "hasTypes": 0, "iconID": 2703, "name_de": "Schiffe", "name_en-us": "Ships", "name_es": "Naves", "name_fr": "Vaisseaux", "name_it": "Ships", "name_ja": "艦船", "name_ko": "함선", "name_ru": "Корабли", "name_zh": "舰船", "nameID": 65591, "parentGroupID": 2 }, "205": { "description_de": "Blueprints von Schiffen der Fregatten-Klasse.", "description_en-us": "Blueprints of frigate-class vessels.", "description_es": "Planos de naves de clase fragata.", "description_fr": "Plans de construction de vaisseaux de classe frégate.", "description_it": "Blueprints of frigate-class vessels.", "description_ja": "フリゲート級艦船のブループリント。", "description_ko": "프리깃급 함선 블루프린트입니다.", "description_ru": "Чертежи фрегатов.", "description_zh": "护卫舰级别舰船蓝图", "descriptionID": 64518, "hasTypes": 0, "iconID": 2703, "name_de": "Fregatten", "name_en-us": "Frigates", "name_es": "Fragatas", "name_fr": "Frégates", "name_it": "Frigates", "name_ja": "フリゲート", "name_ko": "프리깃", "name_ru": "Фрегаты", "name_zh": "护卫舰", "nameID": 65592, "parentGroupID": 204 }, "206": { "description_de": "Blueprints von Schiffen der Kreuzer-Klasse.", "description_en-us": "Blueprints of cruiser-class vessels.", "description_es": "Planos de naves de clase crucero.", "description_fr": "Plans de construction de vaisseaux de classe croiseur.", "description_it": "Blueprints of cruiser-class vessels.", "description_ja": "巡洋艦級艦船のブループリント。", "description_ko": "크루저급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей крейсерского класса.", "description_zh": "巡洋舰等级舰船的蓝图。", "descriptionID": 64519, "hasTypes": 0, "iconID": 2703, "name_de": "Kreuzer", "name_en-us": "Cruisers", "name_es": "Cruceros", "name_fr": "Croiseurs", "name_it": "Cruisers", "name_ja": "巡洋艦", "name_ko": "크루저", "name_ru": "Крейсеры", "name_zh": "巡洋舰", "nameID": 65593, "parentGroupID": 204 }, "207": { "description_de": "Bluerprints von Schiffen der Schlachtschiff-Klasse.", "description_en-us": "Blueprints of battleship-class vessels.", "description_es": "Planos de naves de clase acorazado.", "description_fr": "Plans de construction de vaisseaux de classe cuirassé.", "description_it": "Blueprints of battleship-class vessels.", "description_ja": "戦艦級の艦船のブループリント。", "description_ko": "배틀쉽급 함선 블루프린트입니다.", "description_ru": "Чертежи линейных кораблей.", "description_zh": "战列舰蓝图", "descriptionID": 64520, "hasTypes": 0, "iconID": 2703, "name_de": "Schlachtschiffe", "name_en-us": "Battleships", "name_es": "Acorazados", "name_fr": "Cuirassés", "name_it": "Battleships", "name_ja": "戦艦", "name_ko": "배틀쉽", "name_ru": "Линкоры", "name_zh": "战列舰", "nameID": 65594, "parentGroupID": 204 }, "208": { "description_de": "Blaupausen für Transporter", "description_en-us": "Blueprints of haulers", "description_es": "Planos de naves de mercancías.", "description_fr": "Plans de construction de cargos", "description_it": "Blueprints of haulers", "description_ja": "輸送艇の設計図", "description_ko": "운반선 블루프린트", "description_ru": "Чертежи перевозчиков", "description_zh": "运载舰的蓝图", "descriptionID": 64521, "hasTypes": 0, "iconID": 2703, "name_de": "Transporter", "name_en-us": "Haulers", "name_es": "Naves de mercancías", "name_fr": "Cargos", "name_it": "Haulers", "name_ja": "ハウラー", "name_ko": "운반선", "name_ru": "Перевозчики", "name_zh": "运载舰", "nameID": 65595, "parentGroupID": 204 }, "209": { "description_de": "Blaupausen von Modulen und Ausrüstung von Kapselpiloten-Raumschiffen", "description_en-us": "Blueprints of modules and equipment for capsuleer spaceships", "description_es": "Planos de módulos y equipo para naves de capsulistas.", "description_fr": "Plans de construction de modules et d'équipement pour vaisseaux de capsulier", "description_it": "Blueprints of modules and equipment for capsuleer spaceships", "description_ja": "カプセラ艦船用のモジュールおよび装備のブループリント", "description_ko": "함선 장비 관련 블루프린트입니다.", "description_ru": "Чертежи модулей и оборудования для кораблей капсулёров", "description_zh": "各种舰船装备的蓝图", "descriptionID": 64522, "hasTypes": 0, "iconID": 2703, "name_de": "Schiffsausrüstung", "name_en-us": "Ship Equipment", "name_es": "Instrumental de la nave", "name_fr": "Équipement de vaisseau", "name_it": "Ship Equipment", "name_ja": "艦船装備", "name_ko": "함선 장비", "name_ru": "Оборудование кораблей", "name_zh": "舰船装备", "nameID": 65596, "parentGroupID": 2 }, "210": { "description_de": "Blueprints von Waffensystemen von auf Kapseln zugeschnittenen Schiffen.", "description_en-us": "Blueprints of weapons systems for capsule-fitted vessels.", "description_es": "Planos de sistemas de armas para naves equipadas con cápsulas.", "description_fr": "Plans de construction de systèmes d'armement de vaisseaux équipés de capsule.", "description_it": "Blueprints of weapons systems for capsule-fitted vessels.", "description_ja": "カプセル搭載型艦船用武器システムのブループリント。", "description_ko": "캡슐 시스템을 사용하는 함선의 무기 시스템 블루프린트입니다.", "description_ru": "Чертежи оружейных систем для капсульных кораблей.", "description_zh": "舰载武器系统蓝图。", "descriptionID": 64523, "hasTypes": 0, "iconID": 2703, "name_de": "Geschütztürme & -buchten", "name_en-us": "Turrets & Bays", "name_es": "Torretas y plataformas", "name_fr": "Tourelles et lanceurs", "name_it": "Turrets & Bays", "name_ja": "タレットと装備", "name_ko": "터렛 및 무기", "name_ru": "Орудийные и пусковые установки", "name_zh": "炮台和发射器", "nameID": 65597, "parentGroupID": 209 }, "211": { "description_de": "Blaupausen von Munition und Ladungen", "description_en-us": "Blueprints of ammunition and charges", "description_es": "Planos de munición y cargas.", "description_fr": "Plans de construction de munitions et de charges", "description_it": "Blueprints of ammunition and charges", "description_ja": "弾薬とチャージのブループリント", "description_ko": "탄약 및 차지 관련 블루프린트", "description_ru": "Чертежи боеприпасов и зарядов", "description_zh": "各种弹药和装料的蓝图", "descriptionID": 64524, "hasTypes": 0, "iconID": 2703, "name_de": "Munition & Ladungen", "name_en-us": "Ammunition & Charges", "name_es": "Munición y cargas", "name_fr": "Munitions et charges", "name_it": "Ammunition & Charges", "name_ja": "弾薬とチャージ", "name_ko": "탄약 및 차지", "name_ru": "Боеприпасы и расходники", "name_zh": "军火和弹药", "nameID": 65598, "parentGroupID": 2 }, "214": { "description_de": "Blueprints von Schiffsrumpf- und Panzerungssystemen.", "description_en-us": "Blueprints of hull and armor systems.", "description_es": "Planos de sistemas de casco y blindaje.", "description_fr": "Plans de construction de coques et de systèmes de blindage.", "description_it": "Blueprints of hull and armor systems.", "description_ja": "船体およびアーマーシステムのブループリント。", "description_ko": "선체 및 장갑 시스템 블루프린트입니다.", "description_ru": "Чертежи систем корпуса и брони.", "description_zh": "船体和装甲系统蓝图", "descriptionID": 64527, "hasTypes": 0, "iconID": 2703, "name_de": "Rumpf & Panzerung", "name_en-us": "Hull & Armor", "name_es": "Casco y blindaje", "name_fr": "Coque et blindage", "name_it": "Hull & Armor", "name_ja": "船体とアーマー", "name_ko": "선체 및 장갑", "name_ru": "Элементы корпуса и брони", "name_zh": "船体和装甲", "nameID": 65601, "parentGroupID": 209 }, "252": { "description_de": "Blueprints von Antriebssystemen.", "description_en-us": "Blueprints of propulsion systems.", "description_es": "Planos de sistemas de propulsión.", "description_fr": "Plans de construction de systèmes de propulsion.", "description_it": "Blueprints of propulsion systems.", "description_ja": "推進力システムのブループリント。", "description_ko": "추진기 시스템 블루프린트입니다.", "description_ru": "Чертежи двигательных установок.", "description_zh": "推进系统的蓝图。", "descriptionID": 64528, "hasTypes": 0, "iconID": 2703, "name_de": "Schiffsantrieb", "name_en-us": "Propulsion", "name_es": "Propulsión", "name_fr": "Propulsion", "name_it": "Propulsion", "name_ja": "推進力", "name_ko": "추진기", "name_ru": "Двигательные установки", "name_zh": "推进器", "nameID": 65602, "parentGroupID": 209 }, "261": { "description_de": "Blueprints von Caldari-Fregatten-Designs.", "description_en-us": "Blueprints of Caldari frigate designs.", "description_es": "Planos de diseños de fragatas caldaris.", "description_fr": "Plans de construction de modèles de frégates caldari.", "description_it": "Blueprints of Caldari frigate designs.", "description_ja": "カルダリフリゲート設計図のブループリント。", "description_ko": "칼다리 프리깃 블루프린트입니다.", "description_ru": "Чертежи фрегатов разработки Государства Caldari.", "description_zh": "加达里护卫舰设计蓝图", "descriptionID": 64529, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65603, "parentGroupID": 205 }, "264": { "description_de": "Blueprints von Minmatar-Fregatten-Designs.", "description_en-us": "Blueprints of Minmatar frigate designs.", "description_es": "Planos de diseños de fragatas minmatarianas.", "description_fr": "Plans de construction de modèles de frégates minmatar.", "description_it": "Blueprints of Minmatar frigate designs.", "description_ja": "ミンマターフリゲート設計図のブループリント。", "description_ko": "민마타 프리깃 블루프린트입니다.", "description_ru": "Чертежи фрегатов разработки Республики Minmatar.", "description_zh": "米玛塔尔护卫舰设计蓝图。", "descriptionID": 64530, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65604, "parentGroupID": 205 }, "272": { "description_de": "Blueprints von Amarr-Fregatten-Designs.", "description_en-us": "Blueprints of Amarr frigate designs.", "description_es": "Planos de diseños de fragatas amarrianas.", "description_fr": "Plans de construction de modèles de frégates amarr.", "description_it": "Blueprints of Amarr frigate designs.", "description_ja": "アマーフリゲート設計図のブループリント。", "description_ko": "아마르 프리깃 블루프린트입니다.", "description_ru": "Чертежи фрегатов разработки Империи Amarr.", "description_zh": "艾玛护卫舰设计蓝图", "descriptionID": 64531, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65605, "parentGroupID": 205 }, "273": { "description_de": "Blueprints von Minmatar-Kreuzer-Designs.", "description_en-us": "Blueprints of Minmatar cruiser designs.", "description_es": "Planos de diseños de cruceros minmatarianos.", "description_fr": "Plans de construction de modèles de croiseurs minmatar.", "description_it": "Blueprints of Minmatar cruiser designs.", "description_ja": "ミンマター巡洋艦設計図のブループリント。", "description_ko": "민마타 크루저 블루프린트입니다.", "description_ru": "Чертежи крейсеров разработки Республики Minmatar.", "description_zh": "米玛塔尔巡洋舰设计蓝图。", "descriptionID": 64532, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65606, "parentGroupID": 206 }, "274": { "description_de": "Blueprints von Amarr-Kreuzer-Designs.", "description_en-us": "Blueprints of Amarr cruiser designs.", "description_es": "Planos de diseños de cruceros amarrianos.", "description_fr": "Plans de construction de modèles de croiseurs amarr.", "description_it": "Blueprints of Amarr cruiser designs.", "description_ja": "アマー巡洋艦設計図のブループリント", "description_ko": "아마르 크루저 블루프린트입니다.", "description_ru": "Чертежи крейсеров разработки Империи Amarr.", "description_zh": "艾玛巡洋舰设计蓝图", "descriptionID": 64533, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65607, "parentGroupID": 206 }, "275": { "description_de": "Blueprints von Caldari-Kreuzer-Designs.", "description_en-us": "Blueprints of Caldari cruiser designs.", "description_es": "Planos de diseños de cruceros caldaris.", "description_fr": "Plans de construction de modèles de croiseurs caldari.", "description_it": "Blueprints of Caldari cruiser designs.", "description_ja": "カルダリ巡洋艦設計書のブループリント。", "description_ko": "칼다리 크루저 블루프린트입니다.", "description_ru": "Чертежи крейсеров разработки Государства Caldari.", "description_zh": "加达里巡洋舰设计蓝图", "descriptionID": 64534, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65608, "parentGroupID": 206 }, "276": { "description_de": "Blueprints von Gallente-Kreuzer-Designs.", "description_en-us": "Blueprints of Gallente cruiser designs.", "description_es": "Planos de diseños de cruceros gallentes.", "description_fr": "Plans de construction de modèles de croiseurs gallente.", "description_it": "Blueprints of Gallente cruiser designs.", "description_ja": "ガレンテ巡洋艦設計書のブループリント。", "description_ko": "갈란테 크루저 블루프린트입니다.", "description_ru": "Чертежи крейсеров разработки Федерации Gallente.", "description_zh": "盖伦特巡洋舰设计蓝图。", "descriptionID": 64535, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65609, "parentGroupID": 206 }, "277": { "description_de": "Blueprints von Gallente-Fregatten-Designs.", "description_en-us": "Blueprints of Gallente frigate designs.", "description_es": "Planos de diseños de fragatas gallentes.", "description_fr": "Plans de construction de modèles de frégates gallente.", "description_it": "Blueprints of Gallente frigate designs.", "description_ja": "ガレンテフリゲート設計図のブループリント。", "description_ko": "갈란테 프리깃 블루프린트입니다.", "description_ru": "Чертежи фрегатов разработки Федерации Gallente.", "description_zh": "盖伦特护卫舰设计蓝图。", "descriptionID": 64536, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65610, "parentGroupID": 205 }, "278": { "description_de": "Blueprints von Minmatar-Schlachtschiff-Designs.", "description_en-us": "Blueprints of Minmatar battleship designs.", "description_es": "Planos de diseños de acorazados minmatarianos.", "description_fr": "Plans de construction de modèles de cuirassés minmatar.", "description_it": "Blueprints of Minmatar battleship designs.", "description_ja": "ミンマター戦艦設計図のブループリント。", "description_ko": "민마타 배틀쉽 블루프린트입니다.", "description_ru": "Чертежи линкоров разработки Республики Minmatar.", "description_zh": "米玛塔尔战列舰设计蓝图。", "descriptionID": 64537, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65611, "parentGroupID": 207 }, "279": { "description_de": "Blueprints von Amarr-Schlachtschiff-Designs.", "description_en-us": "Blueprints of Amarr battleship designs.", "description_es": "Planos de diseños de acorazados amarrianos.", "description_fr": "Plans de construction de modèles de cuirassés amarr.", "description_it": "Blueprints of Amarr battleship designs.", "description_ja": "アマー戦艦設計図のブループリント。", "description_ko": "아마르 배틀쉽 블루프린트입니다.", "description_ru": "Чертежи линкоров разработки Империи Amarr.", "description_zh": "艾玛战列舰设计蓝图", "descriptionID": 64538, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65612, "parentGroupID": 207 }, "280": { "description_de": "Blueprints von Caldari-Schlachtschiff-Designs.", "description_en-us": "Blueprints of Caldari battleship designs.", "description_es": "Planos de diseños de acorazados caldaris.", "description_fr": "Plans de construction de modèles de cuirassés caldari.", "description_it": "Blueprints of Caldari battleship designs.", "description_ja": "カルダリ戦艦設計図のブループリント。", "description_ko": "칼다리 배틀쉽 블루프린트입니다.", "description_ru": "Чертежи линкоров разработки Государства Caldari.", "description_zh": "加达里战列舰设计蓝图", "descriptionID": 64539, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65613, "parentGroupID": 207 }, "281": { "description_de": "Blueprints von Gallente-Schlachtschiff-Designs.", "description_en-us": "Blueprints of Gallente battleship designs.", "description_es": "Planos de diseños de acorazados gallentes.", "description_fr": "Plans de construction de modèles de cuirassés gallente.", "description_it": "Blueprints of Gallente battleship designs.", "description_ja": "カルダリ戦艦の設計図のブループリント。", "description_ko": "갈란테 배틀쉽 블루프린트입니다.", "description_ru": "Чертежи линкоров разработки Федерации Gallente.", "description_zh": "盖伦特战列舰设计蓝图。", "descriptionID": 64540, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65614, "parentGroupID": 207 }, "282": { "description_de": "Blueprints von Minmatar-Industrial-Designs.", "description_en-us": "Blueprints of Minmatar industrial designs.", "description_es": "Planos de diseños de naves industriales minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux industriels minmatar.", "description_it": "Blueprints of Minmatar industrial designs.", "description_ja": "ミンマター輸送艦設計図のブループリント。", "description_ko": "민마타 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи промышленных кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔工业舰设计", "descriptionID": 64541, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65615, "parentGroupID": 208 }, "283": { "description_de": "Blueprints von Gallente-Industrial-Designs.", "description_en-us": "Blueprints of Gallente industrial designs.", "description_es": "Planos de diseños de naves industriales gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux industriels gallente.", "description_it": "Blueprints of Gallente industrial designs.", "description_ja": "ガレンテ輸送艦設計図のブループリント。", "description_ko": "갈란테 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи промышленных кораблей разработки Федерации Gallente.", "description_zh": "盖伦特工业舰设计蓝图。", "descriptionID": 64542, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65616, "parentGroupID": 208 }, "284": { "description_de": "Blueprints von Caldari-Industrial-Designs.", "description_en-us": "Blueprints of Caldari industrial designs.", "description_es": "Planos de diseños industriales caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux industriels caldari.", "description_it": "Blueprints of Caldari industrial designs.", "description_ja": "カルダリ輸送艦設計図のブループリント。", "description_ko": "칼다리 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи промышленных кораблей разработки Государства Caldari.", "description_zh": "加达里工业舰设计蓝图", "descriptionID": 64543, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65617, "parentGroupID": 208 }, "285": { "description_de": "Blueprints von Amarr-Industrial-Designs.", "description_en-us": "Blueprints of Amarr industrial designs.", "description_es": "Planos de diseños de naves industriales amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux industriels amarr.", "description_it": "Blueprints of Amarr industrial designs.", "description_ja": "アマー輸送艦設計図のブループリント。", "description_ko": "아마르 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи промышленных кораблей разработки Империи Amarr.", "description_zh": "艾玛工业舰设计蓝图", "descriptionID": 64544, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65618, "parentGroupID": 208 }, "286": { "description_de": "Blueprints von Hybridgeschütztürmen für auf Kapseln zugeschnittene Schiffe.", "description_en-us": "Blueprints of hybrid turrets for capsule-fitted vessels.", "description_es": "Planos de torretas híbridas para naves equipadas con cápsulas.", "description_fr": "Plans de construction de tourelles hybrides pour vaisseaux équipés de capsule.", "description_it": "Blueprints of hybrid turrets for capsule-fitted vessels.", "description_ja": "カプセル搭載型艦船用ハイブリッドタレットのブループリント。", "description_ko": "캡슐 시스템을 이용하는 함선의 하이브리드 터렛 블루프린트입니다.", "description_ru": "Чертежи турелей гибридного действия для капсульных кораблей.", "description_zh": "混合炮台蓝图。", "descriptionID": 64545, "hasTypes": 0, "iconID": 2703, "name_de": "Hybridgeschütztürme", "name_en-us": "Hybrid Turrets", "name_es": "Torretas híbridas", "name_fr": "Tourelles hybrides", "name_it": "Hybrid Turrets", "name_ja": "ハイブリッドタレット", "name_ko": "하이브리드 터렛", "name_ru": "Гибридные орудия", "name_zh": "混合炮台", "nameID": 65619, "parentGroupID": 210 }, "287": { "description_de": "Blueprints von Projektilgeschütztürmen von auf Kapseln zugeschnittenen Schiffen.", "description_en-us": "Blueprints of projectile turrets for capsule-fitted vessels.", "description_es": "Planos de torretas de proyectiles para naves equipadas con cápsulas.", "description_fr": "Plans de construction de tourelles à projectiles pour vaisseaux équipés de capsule.", "description_it": "Blueprints of projectile turrets for capsule-fitted vessels.", "description_ja": "カプセル搭載型艦船用プロジェクタイルタレットのブループリント。", "description_ko": "캡슐 시스템을 이용하는 함선의 발사체 터렛 블루프린트입니다.", "description_ru": "Чертежи баллистических орудий, которыми оснащаются корабли капсулёров.", "description_zh": "射弹炮台的蓝图", "descriptionID": 64546, "hasTypes": 0, "iconID": 2703, "name_de": "Projektilgeschütztürme", "name_en-us": "Projectile Turrets", "name_es": "Torretas de proyectiles", "name_fr": "Tourelles à projectiles", "name_it": "Projectile Turrets", "name_ja": "プロジェクタイルタレット", "name_ko": "발사체 터렛", "name_ru": "Баллистические орудия", "name_zh": "射弹炮台", "nameID": 65620, "parentGroupID": 210 }, "288": { "description_de": "Blaupausen von Energiegeschütztürmen für von Kapselpiloten geflogenen Schiffen.", "description_en-us": "Blueprints of energy turrets for capsule-fitted ships.", "description_es": "Planos de torretas de energía para naves equipadas con cápsulas.", "description_fr": "Plans de construction de tourelles à énergie pour vaisseaux équipés de capsule.", "description_it": "Blueprints of energy turrets for capsule-fitted ships.", "description_ja": "カプセル搭載艦用のエネルギータレットのブループリント。", "description_ko": "캡슐 시스템을 이용하는 함선의 에너지 터렛 블루프린트입니다.", "description_ru": "Чертежи лазерных орудий для кораблей капсулёров.", "description_zh": "舰船使用的能量炮台蓝图。", "descriptionID": 64547, "hasTypes": 0, "iconID": 2703, "name_de": "Energiegeschütztürme", "name_en-us": "Energy Turrets", "name_es": "Torretas de energía", "name_fr": "Tourelles à énergie", "name_it": "Energy Turrets", "name_ja": "エネルギータレット", "name_ko": "에너지 터렛", "name_ru": "Лазерные орудия", "name_zh": "能量炮台", "nameID": 65621, "parentGroupID": 210 }, "289": { "description_de": "Blueprints von großen Hybridgeschütztürmen.", "description_en-us": "Blueprints of large hybrid turrets.", "description_es": "Planos de torretas híbridas grandes.", "description_fr": "Plans de construction de grandes tourelles hybrides.", "description_it": "Blueprints of large hybrid turrets.", "description_ja": "大型ハイブリッドタレットのブループリント。", "description_ko": "대형 하이브리드 터렛 블루프린트입니다.", "description_ru": "Чертежи турелей гибридного действия большого калибра.", "description_zh": "大型混合炮台蓝图。", "descriptionID": 64548, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65622, "parentGroupID": 286 }, "290": { "description_de": "Blueprints von mittleren Hybridgeschütztürmen.", "description_en-us": "Blueprints of medium hybrid turrets.", "description_es": "Planos de torretas híbridas de medio calibre.", "description_fr": "Plans de construction de tourelles hybrides moyennes.", "description_it": "Blueprints of medium hybrid turrets.", "description_ja": "中型ハイブリッドタレットのブループリント。", "description_ko": "중형 하이브리드 터렛 블루프린트입니다.", "description_ru": "Чертежи турелей гибридного действия среднего калибра.", "description_zh": "中型混合炮台蓝图。", "descriptionID": 64549, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65623, "parentGroupID": 286 }, "291": { "description_de": "Blueprints von kleinen Hybridgeschütztürmen.", "description_en-us": "Blueprints of small hybrid turrets.", "description_es": "Planos de torretas híbridas de pequeño calibre.", "description_fr": "Plans de construction de petites tourelles hybrides.", "description_it": "Blueprints of small hybrid turrets.", "description_ja": "小型ハイブリッドタレットのブループリント。", "description_ko": "소형 하이브리드 터렛 블루프린트입니다.", "description_ru": "Чертежи турелей гибридного действия малого калибра.", "description_zh": "小型混合炮台蓝图。", "descriptionID": 64550, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65624, "parentGroupID": 286 }, "292": { "description_de": "Blueprints von kleinen Lasergeschütztürmen.", "description_en-us": "Blueprints of small laser turrets.", "description_es": "Planos de torretas láser de pequeño calibre.", "description_fr": "Plans de construction de petites tourelles laser.", "description_it": "Blueprints of small laser turrets.", "description_ja": "小型レーザータレットのブループリント。", "description_ko": "소형 레이저 터렛 블루프린트입니다.", "description_ru": "Чертежи лазерных турелей малого калибра.", "description_zh": "小型激光炮台蓝图。", "descriptionID": 64551, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65625, "parentGroupID": 288 }, "293": { "description_de": "Blueprints von mittleren Lasergeschütztürmen.", "description_en-us": "Blueprints of medium laser turrets.", "description_es": "Planos de torretas láser de medio calibre.", "description_fr": "Plans de construction de tourelles laser moyennes.", "description_it": "Blueprints of medium laser turrets.", "description_ja": "中型レーザータレットのブループリント。", "description_ko": "중형 레이저 터렛 블루프린트입니다.", "description_ru": "Чертежи лазерных турелей среднего калибра.", "description_zh": "中型激光炮台蓝图。", "descriptionID": 64552, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65626, "parentGroupID": 288 }, "295": { "description_de": "Blueprints von großen Lasergeschütztürmen.", "description_en-us": "Blueprints of large laser turrets.", "description_es": "Planos de torretas láser de gran calibre.", "description_fr": "Plans de construction de grandes tourelles laser.", "description_it": "Blueprints of large laser turrets.", "description_ja": "大型レーザータレットのブループリント。", "description_ko": "대형 레이저 터렛 블루프린트입니다.", "description_ru": "Чертежи лазерных турелей большого калибра.", "description_zh": "大型激光炮台蓝图。", "descriptionID": 64553, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65627, "parentGroupID": 288 }, "296": { "description_de": "Blueprints von kleinen Projektilgeschütztürmen.", "description_en-us": "Blueprints of small projectile turrets.", "description_es": "Planos de torretas de proyectiles de pequeño calibre.", "description_fr": "Plans de construction de petites tourelles à projectiles.", "description_it": "Blueprints of small projectile turrets.", "description_ja": "小型プロジェクタイルタレットのブループリント。", "description_ko": "소형 발사체 터렛 블루프린트입니다.", "description_ru": "Чертежи баллистических орудий малого калибра.", "description_zh": "小型射弹炮台蓝图。", "descriptionID": 64554, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65628, "parentGroupID": 287 }, "297": { "description_de": "Blueprints von mittleren Projektilgeschütztürmen.", "description_en-us": "Blueprints of medium projectile turrets.", "description_es": "Planos de torretas de proyectiles de medio calibre.", "description_fr": "Plans de construction de tourelles à projectiles intermédiaires.", "description_it": "Blueprints of medium projectile turrets.", "description_ja": "中型プロジェクタイルタレットのブループリント。", "description_ko": "중형 발사체 터렛 블루프린트입니다.", "description_ru": "Чертежи баллистических орудий среднего калибра.", "description_zh": "中型射弹炮台蓝图。", "descriptionID": 64555, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65629, "parentGroupID": 287 }, "298": { "description_de": "Blueprints von großen Projektilgeschütztürmen.", "description_en-us": "Blueprints of large projectile turrets.", "description_es": "Planos de torretas de proyectiles de gran calibre.", "description_fr": "Plans de construction de grandes tourelles à projectiles.", "description_it": "Blueprints of large projectile turrets.", "description_ja": "大型プロジェクタイルタレットのブループリント。", "description_ko": "대형 발사체 터렛 블루프린트입니다.", "description_ru": "Чертежи баллистических орудий большого калибра.", "description_zh": "大型射弹炮塔的蓝图。", "descriptionID": 64556, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65630, "parentGroupID": 287 }, "299": { "description_de": "Blueprints von Projektilmunition.", "description_en-us": "Projectile ammo blueprints.", "description_es": "Planos de munición de proyectiles.", "description_fr": "Plans de construction de munitions de projectiles.", "description_it": "Projectile ammo blueprints.", "description_ja": "プロジェクタイル弾のブループリント。", "description_ko": "발사체 탄약 블루프린트입니다.", "description_ru": "Чертежи снарядов.", "description_zh": "射弹弹药蓝图。", "descriptionID": 64557, "hasTypes": 0, "iconID": 2703, "name_de": "Projektilmunition", "name_en-us": "Projectile Ammo", "name_es": "Munición de proyectiles", "name_fr": "Munition de projectile", "name_it": "Projectile Ammo", "name_ja": "プロジェクタイル弾", "name_ko": "발사체 탄약", "name_ru": "Боеприпасы баллистических орудий", "name_zh": "射弹弹药", "nameID": 65631, "parentGroupID": 211 }, "300": { "description_de": "Blueprints von Hybridladungen.", "description_en-us": "Hybrid charge blueprints.", "description_es": "Planos de cargas híbridas.", "description_fr": "Plans de construction de charges hybrides.", "description_it": "Hybrid charge blueprints.", "description_ja": "ハイブリッド弾のブループリント。", "description_ko": "하이브리드탄 블루프린트입니다.", "description_ru": "Чертежи гибридных боеприпасов.", "description_zh": "混合弹药蓝图。", "descriptionID": 64558, "hasTypes": 0, "iconID": 2703, "name_de": "Hybridmunition", "name_en-us": "Hybrid Charges", "name_es": "Cargas híbridas", "name_fr": "Charges hybrides", "name_it": "Hybrid Charges", "name_ja": "ハイブリッド弾", "name_ko": "하이브리드탄", "name_ru": "Гибридные боеприпасы", "name_zh": "混合弹药", "nameID": 65632, "parentGroupID": 211 }, "301": { "description_de": "Blueprints von Frequenzkristallen.", "description_en-us": "Frequency crystal blueprints.", "description_es": "Planos de cristales de frecuencia.", "description_fr": "Plans de construction de cristaux de fréquence.", "description_it": "Frequency crystal blueprints.", "description_ja": "フリーケンシークリスタルのブループリント。", "description_ko": "프리퀀시 크리스탈 블루프린트입니다.", "description_ru": "Чертежи частотных кристаллов.", "description_zh": "频率晶体蓝图", "descriptionID": 64559, "hasTypes": 0, "iconID": 2703, "name_de": "Frequenzkristalle", "name_en-us": "Frequency Crystals", "name_es": "Cristales de frecuencia", "name_fr": "Cristaux de fréquence", "name_it": "Frequency Crystals", "name_ja": "フリーケンシークリスタル", "name_ko": "프리퀀시 크리스탈", "name_ru": "Кристаллы для лазеров", "name_zh": "频率晶体", "nameID": 65633, "parentGroupID": 211 }, "302": { "description_de": "Blueprints von kleinen Frequenzkristallen.", "description_en-us": "Blueprints of small frequency crystals.", "description_es": "Planos de cristales de frecuencia de pequeño calibre.", "description_fr": "Plans de construction de petits cristaux de fréquence.", "description_it": "Blueprints of small frequency crystals.", "description_ja": "小型フリーケンシークリスタルのブループリント。", "description_ko": "소형 프리퀀시 크리스탈 블루프린트입니다.", "description_ru": "Чертежи частотных кристаллов малого калибра.", "description_zh": "小型频率晶体蓝图。", "descriptionID": 64560, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65634, "parentGroupID": 301 }, "303": { "description_de": "Blueprints von mittleren Frequenzkristallen.", "description_en-us": "Blueprints of medium frequency crystals.", "description_es": "Planos de cristales de frecuencia de medio calibre.", "description_fr": "Plans de construction de cristaux de fréquence intermédiaires.", "description_it": "Blueprints of medium frequency crystals.", "description_ja": "中型フリーケンシークリスタルのブループリント。", "description_ko": "중형 프리퀀시 크리스탈 블루프린트입니다.", "description_ru": "Чертежи частотных кристаллов среднего калибра.", "description_zh": "中型频率晶体蓝图。", "descriptionID": 64561, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65635, "parentGroupID": 301 }, "305": { "description_de": "Blueprints von großen Frequenzkristallen.", "description_en-us": "Blueprints of large frequency crystals.", "description_es": "Planos de cristales de frecuencia de gran calibre.", "description_fr": "Plans de construction de grands cristaux de fréquence.", "description_it": "Blueprints of large frequency crystals.", "description_ja": "大型フリーケンシークリスタルのブループリント。", "description_ko": "대형 프리퀀시 크리스탈 블루프린트입니다.", "description_ru": "Чертежи частотных кристаллов большого калибра.", "description_zh": "大型频率晶体的蓝图。", "descriptionID": 64562, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65636, "parentGroupID": 301 }, "306": { "description_de": "Blueprints von großer Hybridmunition.", "description_en-us": "Blueprints of large hybrid ammunition.", "description_es": "Planos de munición híbrida de gran calibre.", "description_fr": "Plans de construction de grandes munitions hybrides.", "description_it": "Blueprints of large hybrid ammunition.", "description_ja": "大型ハイブリッド弾のブループリント。", "description_ko": "대형 하이브리드탄 블루프린트입니다.", "description_ru": "Чертежи гибридных зарядов большого калибра.", "description_zh": "大型混合弹药的蓝图。", "descriptionID": 64563, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65637, "parentGroupID": 300 }, "307": { "description_de": "Blueprints von kleiner Hybridmunition.", "description_en-us": "Blueprints of small hybrid ammunition.", "description_es": "Planos de munición híbrida de pequeño calibre.", "description_fr": "Plans de construction de petites munitions hybrides.", "description_it": "Blueprints of small hybrid ammunition.", "description_ja": "小型ハイブリッド弾のブループリント。", "description_ko": "소형 하이브리탄 블루프린트입니다.", "description_ru": "Чертежи гибридных боеприпасов малого калибра.", "description_zh": "小型混合弹药蓝图。", "descriptionID": 64564, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65638, "parentGroupID": 300 }, "308": { "description_de": "Blueprints von mittlerer Hybrid-Munition.", "description_en-us": "Blueprints of medium hybrid ammunition.", "description_es": "Planos de munición híbrida de medio calibre.", "description_fr": "Plans de construction de munitions hybrides intermédiaires.", "description_it": "Blueprints of medium hybrid ammunition.", "description_ja": "ミディアムハイブリッド弾のブループリント。", "description_ko": "중형 하이브리드탄 블루프린트입니다.", "description_ru": "Чертежи гибридных зарядов среднего калибра.", "description_zh": "中型混合弹药蓝图。", "descriptionID": 64565, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65639, "parentGroupID": 300 }, "309": { "description_de": "Blueprints von großer Projektilmunition.", "description_en-us": "Blueprints of large projectile ammunition.", "description_es": "Planos de munición de proyectiles de gran calibre.", "description_fr": "Plans de construction de grandes munitions de projectiles.", "description_it": "Blueprints of large projectile ammunition.", "description_ja": "大型プロジェクタイル弾のブループリント。", "description_ko": "대형 발사체 탄약 블루프린트입니다.", "description_ru": "Чертежи артиллерийских снарядов большого калибра.", "description_zh": "大型射弹弹药的蓝图。", "descriptionID": 64566, "hasTypes": 1, "iconID": 2703, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65640, "parentGroupID": 299 }, "312": { "description_de": "Blueprints von mittlerer Projektil-Munition.", "description_en-us": "Blueprints of medium projectile ammunition.", "description_es": "Planos de munición de proyectiles de medio calibre.", "description_fr": "Plans de construction de munitions moyennes de projectiles.", "description_it": "Blueprints of medium projectile ammunition.", "description_ja": "中型プロジェクタイル弾のブループリント。", "description_ko": "중형 발사체 탄약 블루프린트입니다.", "description_ru": "Чертежи огнестрельных боеприпасов среднего калибра.", "description_zh": "中型射弹弹药蓝图。", "descriptionID": 64567, "hasTypes": 1, "iconID": 2703, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65641, "parentGroupID": 299 }, "313": { "description_de": "Blueprints von kleiner Projektilmunition.", "description_en-us": "Blueprints of small projectile ammunition.", "description_es": "Planos de munición de proyectiles de pequeño calibre.", "description_fr": "Plans de construction de petites munitions de projectiles.", "description_it": "Blueprints of small projectile ammunition.", "description_ja": "小型プロジェクタイル弾のブループリント。", "description_ko": "소형 발사체 탄약 블루프린트입니다.", "description_ru": "Чертежи огнестрельных боеприпасов малого калибра.", "description_zh": "小型射弹弹药蓝图。", "descriptionID": 64568, "hasTypes": 1, "iconID": 2703, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65642, "parentGroupID": 299 }, "314": { "description_de": "Blueprints von Flugkörpern.", "description_en-us": "Missile blueprints.", "description_es": "Planos de misiles.", "description_fr": "Plans de construction de missiles.", "description_it": "Missile blueprints.", "description_ja": "ミサイルのブループリント。", "description_ko": "미사일 블루프린트입니다.", "description_ru": "Чертежи ракет.", "description_zh": "导弹蓝图。", "descriptionID": 64569, "hasTypes": 0, "iconID": 2703, "name_de": "Lenkwaffen", "name_en-us": "Missiles", "name_es": "Misiles", "name_fr": "Missiles", "name_it": "Missiles", "name_ja": "ミサイル", "name_ko": "미사일", "name_ru": "Ракеты", "name_zh": "导弹", "nameID": 65643, "parentGroupID": 211 }, "315": { "description_de": "Blueprints von Freund/Feind-Raketen.", "description_en-us": "Blueprints of friend-or-foe missiles.", "description_es": "Planos de misiles con identificación de amigo o enemigo (IFF).", "description_fr": "Plans de construction de missiles F.O.F.", "description_it": "Blueprints of friend-or-foe missiles.", "description_ja": "敵と味方を識別するミサイルのブループリント。", "description_ko": "자동으로 적을 추적하는 미사일 블루프린트입니다.", "description_ru": "Чертежи ракет с системой распознавания «свой-чужой».", "description_zh": "FOF导弹蓝图", "descriptionID": 64570, "hasTypes": 1, "iconID": 2703, "name_de": "Auto-Zielerfassung", "name_en-us": "Auto-Targeting", "name_es": "Adquisición automática de objetivos", "name_fr": "Ciblage automatique", "name_it": "Auto-Targeting", "name_ja": "自動捕捉型ミサイル", "name_ko": "오토 타겟팅 미사일", "name_ru": "Ракеты с автономным наведением", "name_zh": "自动锁定", "nameID": 65644, "parentGroupID": 314 }, "316": { "description_de": "Blueprints von Raketenabwehr-Missiles.", "description_en-us": "Blueprints of defender missiles.", "description_es": "Planos de misiles de defensa.", "description_fr": "Plans de construction de missiles défenseurs.", "description_it": "Blueprints of defender missiles.", "description_ja": "防御ミサイルのブループリント。", "description_ko": "디펜더 미사일 블루프린트입니다.", "description_ru": "Чертежи противоракет.", "description_zh": "反弹道导弹蓝图", "descriptionID": 64571, "hasTypes": 1, "iconID": 2703, "name_de": "Abfangraketen", "name_en-us": "Defender", "name_es": "De defensa", "name_fr": "Défenseur", "name_it": "Defender", "name_ja": "ディフェンダー", "name_ko": "디펜더", "name_ru": "Противоракеты", "name_zh": "反弹道导弹", "nameID": 65645, "parentGroupID": 314 }, "318": { "description_de": "Blueprints von Raketen.", "description_en-us": "Blueprints of rockets.", "description_es": "Planos de cohetes.", "description_fr": "Plans de construction de roquettes.", "description_it": "Blueprints of rockets.", "description_ja": "ロケットのブループリント。", "description_ko": "로켓 블루프린트입니다.", "description_ru": "Чертежи ракет ближнего боя.", "description_zh": "火箭蓝图。", "descriptionID": 64573, "hasTypes": 1, "iconID": 2703, "name_de": "Raketen", "name_en-us": "Rockets", "name_es": "Cohetes", "name_fr": "Roquettes", "name_it": "Rockets", "name_ja": "ロケット", "name_ko": "로켓", "name_ru": "Лёгкие штурмовые ракеты", "name_zh": "火箭", "nameID": 65647, "parentGroupID": 314 }, "320": { "description_de": "Blueprints von Scansonden.", "description_en-us": "Blueprints of scan probes.", "description_es": "Planos de sondas de escaneo.", "description_fr": "Plans de construction de sondes de balayage.", "description_it": "Blueprints of scan probes.", "description_ja": "スキャンプローブのブループリント。", "description_ko": "스캔 프로브 블루프린트입니다.", "description_ru": "Чертежи сканирующих зондов.", "description_zh": "扫描探针蓝图。", "descriptionID": 64574, "hasTypes": 1, "iconID": 2703, "name_de": "Scansonden", "name_en-us": "Scan Probes", "name_es": "Sondas de escaneo", "name_fr": "Sondes de balayage", "name_it": "Scan Probes", "name_ja": "スキャンプローブ", "name_ko": "스캔 프로브", "name_ru": "Разведзонды", "name_zh": "扫描探针", "nameID": 65648, "parentGroupID": 1520 }, "325": { "description_de": "Blueprints von Scannern.", "description_en-us": "Blueprints of scanners.", "description_es": "Planos de escáneres.", "description_fr": "Plans de construction de scanners.", "description_it": "Blueprints of scanners.", "description_ja": "スキャナーのブループリント。", "description_ko": "스캐너 블루프린트입니다.", "description_ru": "Чертежи сканеров", "description_zh": "扫描器蓝图。", "descriptionID": 64578, "hasTypes": 1, "iconID": 2703, "name_de": "Scanner", "name_en-us": "Scanners", "name_es": "Escáneres", "name_fr": "Scanners", "name_it": "Scanners", "name_ja": "スキャナー", "name_ko": "스캐너", "name_ru": "Бортовые разведсистемы", "name_zh": "扫描器", "nameID": 65652, "parentGroupID": 1710 }, "331": { "description_de": "Blueprints für Mikro-Warp-Antrieb.", "description_en-us": "Blueprints of microwarpdrives.", "description_es": "Planos de motores de microwarp.", "description_fr": "Plans de construction de propulseurs de microwarp.", "description_it": "Blueprints of microwarpdrives.", "description_ja": "マイクロワープドライブのブループリント。", "description_ko": "마이크로 워프 드라이브 블루프린트입니다.", "description_ru": "Чертежи микроварп-ускорителей.", "description_zh": "微型跃迁引擎的蓝图。", "descriptionID": 64582, "hasTypes": 1, "iconID": 2703, "name_de": "Mikrowarpantriebe", "name_en-us": "Microwarpdrives", "name_es": "Motores de microwarp", "name_fr": "Propulseurs de microwarp", "name_it": "Microwarpdrives", "name_ja": "マイクロワープドライブ", "name_ko": "마이크로 워프 드라이브", "name_ru": "Микроварп-ускорители", "name_zh": "微型跃迁推进器", "nameID": 65656, "parentGroupID": 252 }, "332": { "description_de": "Blueprints von Antrieb-Upgrades.", "description_en-us": "Blueprints of propulsion upgrades.", "description_es": "Planos de mejoras de propulsión.", "description_fr": "Plans de construction d'améliorations de la propulsion.", "description_it": "Blueprints of propulsion upgrades.", "description_ja": "推進力強化のブループリント。", "description_ko": "추진기 업그레이드 블루프린트입니다.", "description_ru": "Чертежи пакетов модернизации двигательных установок.", "description_zh": "推进器改良设备蓝图。", "descriptionID": 64583, "hasTypes": 1, "iconID": 2703, "name_de": "Antriebsupgrades", "name_en-us": "Propulsion Upgrades", "name_es": "Mejoras de propulsión", "name_fr": "Améliorations de la propulsion", "name_it": "Propulsion Upgrades", "name_ja": "推進力強化", "name_ko": "추진기 업그레이드", "name_ru": "Улучшения двигательных установок", "name_zh": "推进器改良", "nameID": 65657, "parentGroupID": 252 }, "335": { "description_de": "Blueprints von Schiffsrumpf-Upgrades.", "description_en-us": "Blueprints of hull upgrades.", "description_es": "Planos de mejoras de casco.", "description_fr": "Plans de construction d'améliorations de coque.", "description_it": "Blueprints of hull upgrades.", "description_ja": "船体強化のブループリント。", "description_ko": "선체 업그레이드 블루프린트입니다.", "description_ru": "Чертежи пакетов модернизации корпуса.", "description_zh": "船体加固装置蓝图。", "descriptionID": 64586, "hasTypes": 1, "iconID": 2703, "name_de": "Rumpfupgrades", "name_en-us": "Hull Upgrades", "name_es": "Mejoras del casco", "name_fr": "Améliorations de coque", "name_it": "Hull Upgrades", "name_ja": "船体強化", "name_ko": "선체 업그레이드", "name_ru": "Оптимизация корпуса", "name_zh": "船体加固", "nameID": 65660, "parentGroupID": 214 }, "338": { "description_de": "Blueprints von Bergbaulasern.", "description_en-us": "Blueprints of mining lasers.", "description_es": "Planos de láseres mineros.", "description_fr": "Plans de construction de lasers d'extraction.", "description_it": "Blueprints of mining lasers.", "description_ja": "採掘レーザーのブループリント。", "description_ko": "채굴 레이저 블루프린트입니다.", "description_ru": "Чертежи экстракторов.", "description_zh": "采矿激光器蓝图。", "descriptionID": 64587, "hasTypes": 1, "iconID": 2703, "name_de": "Bergbaulaser", "name_en-us": "Mining Lasers", "name_es": "Láseres mineros", "name_fr": "Lasers d’extraction", "name_it": "Mining Lasers", "name_ja": "採掘レーザー", "name_ko": "채굴 레이저", "name_ru": "Буровые лазеры", "name_zh": "采矿激光器", "nameID": 65661, "parentGroupID": 1711 }, "339": { "description_de": "Blueprints für Cap Booster-Ladungen.", "description_en-us": "Blueprints of cap booster charges.", "description_es": "Planos de cargas de potenciador de condensador.", "description_fr": "Plans de construction de charges de booster.", "description_it": "Blueprints of cap booster charges.", "description_ja": "キャップブースターチャージのブループリント。", "description_ko": "캐패시터 부스터 차지 블루프린트", "description_ru": "Чертежи зарядов для инжекторов.", "description_zh": "电容注电装料蓝图。", "descriptionID": 64588, "hasTypes": 1, "iconID": 2703, "name_de": "Cap Booster-Ladungen", "name_en-us": "Cap Booster Charges", "name_es": "Cargas de potenciador de condensador", "name_fr": "Charges d’appoint de capaciteur", "name_it": "Cap Booster Charges", "name_ja": "キャップブースターチャージ", "name_ko": "캐패시터 부스터", "name_ru": "Заряды пополнения накопителя", "name_zh": "电容注电装料", "nameID": 65662, "parentGroupID": 211 }, "340": { "description_de": "Blueprints von Missile Launchern.", "description_en-us": "Blueprints of missile launchers.", "description_es": "Planos de lanzamisiles.", "description_fr": "Plans de construction de lance-missiles.", "description_it": "Blueprints of missile launchers.", "description_ja": "ミサイルランチャーのブループリント。", "description_ko": "미사일 런처 블루프린트입니다.", "description_ru": "Чертежи пусковых установок.", "description_zh": "导弹发射器蓝图。", "descriptionID": 64589, "hasTypes": 1, "iconID": 2703, "name_de": "Lenkwaffenwerfer", "name_en-us": "Missile Launchers", "name_es": "Lanzamisiles", "name_fr": "Lance-missiles", "name_it": "Missile Launchers", "name_ja": "ミサイルランチャー", "name_ko": "미사일 런처", "name_ru": "Пусковые установки", "name_zh": "导弹发射器", "nameID": 65663, "parentGroupID": 210 }, "341": { "description_de": "Blueprints von Smartbombs.", "description_en-us": "Blueprints of smartbombs.", "description_es": "Planos de bombas inteligentes.", "description_fr": "Plans de construction de bombes de proximité.", "description_it": "Blueprints of smartbombs.", "description_ja": "スマートボムのブループリント。", "description_ko": "스마트폭탄 블루프린트입니다.", "description_ru": "Чертежи импульсных излучателей.", "description_zh": "立体炸弹蓝图", "descriptionID": 64590, "hasTypes": 1, "iconID": 2703, "name_de": "Smartbombs", "name_en-us": "Smartbombs", "name_es": "Bombas inteligentes", "name_fr": "Bombes intelligentes", "name_it": "Smartbombs", "name_ja": "スマートボム", "name_ko": "스마트폭탄", "name_ru": "Импульсные излучатели", "name_zh": "立体炸弹", "nameID": 65664, "parentGroupID": 209 }, "343": { "description_de": "Blueprints von Waffen-Upgrades.", "description_en-us": "Blueprints of weapon upgrades.", "description_es": "Planos de mejoras de armas.", "description_fr": "Plans de construction d'améliorations de l'armement.", "description_it": "Blueprints of weapon upgrades.", "description_ja": "兵器強化のブループリント。", "description_ko": "무기 업그레이드 블루프린트입니다.", "description_ru": "Чертежи пакетов модернизации оружейных систем.", "description_zh": "武器升级设备蓝图。", "descriptionID": 64591, "hasTypes": 1, "iconID": 2703, "name_de": "Waffenupgrades", "name_en-us": "Weapon Upgrades", "name_es": "Mejoras de armas", "name_fr": "Améliorations de l'armement", "name_it": "Weapon Upgrades", "name_ja": "兵器強化", "name_ko": "무기 업그레이드", "name_ru": "Улучшения систем вооружения", "name_zh": "武器升级", "nameID": 65665, "parentGroupID": 210 }, "357": { "description_de": "Blaupausen von Drohnen-Designs.", "description_en-us": "Blueprints of drone designs", "description_es": "Planos de diseños de drones.", "description_fr": "Plans de construction de modèles de drones", "description_it": "Blueprints of drone designs", "description_ja": "ドローンのブループリント", "description_ko": "드론 블루프린트", "description_ru": "Чертежи дронов", "description_zh": "各种无人机的蓝图", "descriptionID": 64592, "hasTypes": 0, "iconID": 2703, "name_de": "Drohnen", "name_en-us": "Drones", "name_es": "Drones", "name_fr": "Drones", "name_it": "Drones", "name_ja": "ドローン", "name_ko": "드론", "name_ru": "Дроны", "name_zh": "无人机", "nameID": 65666, "parentGroupID": 2 }, "358": { "description_de": "Blueprints von Bergbaudrohnen-Designs.", "description_en-us": "Blueprints of mining drone designs.", "description_es": "Planos de diseños de drones mineros.", "description_fr": "Plans de construction de modèles de drones d'extraction.", "description_it": "Blueprints of mining drone designs.", "description_ja": "採掘専門ドローン設計図のブループリント。", "description_ko": "채굴 드론 블루프린트입니다.", "description_ru": "Чертежи планов дронов-экстракторов.", "description_zh": "采矿无人机蓝图。", "descriptionID": 64593, "hasTypes": 1, "iconID": 2703, "name_de": "Bergbaudrohnen", "name_en-us": "Mining Drones", "name_es": "Drones mineros", "name_fr": "Drones d’extraction", "name_it": "Mining Drones", "name_ja": "採掘専門ドローン", "name_ko": "채굴 드론", "name_ru": "Буровые дроны", "name_zh": "采矿无人机", "nameID": 65667, "parentGroupID": 357 }, "359": { "description_de": "Blueprints für schwere Versorgungsdrohnen-Designs.", "description_en-us": "Blueprints of heavy attack drone designs.", "description_es": "Planos de diseños de drones de asalto pesados.", "description_fr": "Plans de construction de modèles de drones d'attaque lourds.", "description_it": "Blueprints of heavy attack drone designs.", "description_ja": "ヘビーアタックドローン設計図のブループリント。", "description_ko": "헤비 어택 드론 블루프린트입니다.", "description_ru": "Чертежи тяжелых боевых дронов.", "description_zh": "重型攻击无人机的设计蓝图。", "descriptionID": 64594, "hasTypes": 1, "iconID": 2703, "name_de": "Schwere Angriffsdrohnen", "name_en-us": "Heavy Attack Drones", "name_es": "Drones de asalto pesados", "name_fr": "Drones d’attaque lourds", "name_it": "Heavy Attack Drones", "name_ja": "ヘビーアタックドローン", "name_ko": "헤비 어택 드론", "name_ru": "Тяжёлые боевые дроны", "name_zh": "重型攻击无人机", "nameID": 65668, "parentGroupID": 1530 }, "364": { "description_de": "Skills zur effizienten Benutzung von geschützbasierten Waffensystemen", "description_en-us": "Skills pertaining to the efficient use of turret-based weapon systems", "description_es": "Habilidades para usar con eficacia los sistemas de armas basados en torretas.", "description_fr": "Compétences relatives à l'utilisation efficace de systèmes utilisant des armes à tourelles", "description_it": "Skills pertaining to the efficient use of turret-based weapon systems", "description_ja": "タレット式の兵器システムを効果的に使用するスキル", "description_ko": "터렛 기반 무기 시스템을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, необходимые для эффективного применения орудийных установок", "description_zh": "熟练使用炮台类武器系统的技能", "descriptionID": 64596, "hasTypes": 1, "iconID": 33, "name_de": "Waffenkunde", "name_en-us": "Gunnery", "name_es": "Artillería", "name_fr": "Armement", "name_it": "Gunnery", "name_ja": "ガンナリー", "name_ko": "터렛 조작", "name_ru": "Ведение орудийного огня", "name_zh": "射击学", "nameID": 65670, "parentGroupID": 150 }, "365": { "description_de": "Skills zur Verwaltung großer sozialer Gruppen", "description_en-us": "Skills pertaining to management of large social groups", "description_es": "Habilidades para gestionar grupos sociales grandes.", "description_fr": "Compétences relatives à la gestion d'importants groupes sociaux", "description_it": "Skills pertaining to management of large social groups", "description_ja": "大規模なソーシャルグループを管理するスキル", "description_ko": "대규모 조직을 관리할 수 있는 스킬입니다.", "description_ru": "Навыки, необходимые для эффективного управления большими социальными группами", "description_zh": "管理大型社交团体的技能", "descriptionID": 64597, "hasTypes": 1, "iconID": 33, "name_de": "Unternehmensführung", "name_en-us": "Corporation Management", "name_es": "Gestión de corporaciones", "name_fr": "Gestion de corporation", "name_it": "Gestione corporazione", "name_ja": "コーポレーションマネージメント", "name_ko": "코퍼레이션 관리", "name_ru": "Руководство корпорацией", "name_zh": "军团管理", "nameID": 65671, "parentGroupID": 150 }, "366": { "description_de": "Skills zur effizienten Handhabung von Drohnen", "description_en-us": "Skills pertaining to the efficient operation of drones", "description_es": "Habilidades relacionadas con el uso eficiente de los drones.", "description_fr": "Compétences relatives à l'utilisation efficace des drones", "description_it": "Skills pertaining to the efficient operation of drones", "description_ja": "ドローンを効果的に操縦するスキル", "description_ko": "드론을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, необходимые для эффективного управления дронами.", "description_zh": "熟练操控无人机的技能", "descriptionID": 64598, "hasTypes": 1, "iconID": 33, "name_de": "Drohnen", "name_en-us": "Drones", "name_es": "Drones", "name_fr": "Drones", "name_it": "Drones", "name_ja": "ドローン", "name_ko": "드론", "name_ru": "Управление дронами", "name_zh": "无人机", "nameID": 65672, "parentGroupID": 150 }, "367": { "description_de": "Skill zur Verwaltung der elektronischen Systeme eines Raumschiffs", "description_en-us": "Skills pertaining to management of a spaceship's electronic systems", "description_es": "Habilidades relacionadas con la gestión de los sistemas electrónicos de una nave.", "description_fr": "Compétences relatives à la gestion des systèmes électroniques d'un vaisseau spatial", "description_it": "Skills pertaining to management of a spaceship's electronic systems", "description_ja": "艦船の電子システムを管理するスキル", "description_ko": "함선 전자시스템을 보다 효율적으로 관리할 수 있습니다.", "description_ru": "Навыки, необходимые для управления электронными системами межзвездных кораблей", "description_zh": "管理舰船电子系统的技能", "descriptionID": 64599, "hasTypes": 1, "iconID": 33, "name_de": "Elektroniksysteme", "name_en-us": "Electronic Systems", "name_es": "Sistemas electrónicos", "name_fr": "Systèmes électroniques", "name_it": "Electronic Systems", "name_ja": "電子システム", "name_ko": "전자 시스템", "name_ru": "Работа с бортовой электроникой", "name_zh": "电子系统", "nameID": 65673, "parentGroupID": 150 }, "368": { "description_de": "Skill zur Verwaltung der Hardware eines Raumschiffs", "description_en-us": "Skills pertaining to management of a spaceship's hardware", "description_es": "Habilidades para gestionar el hardware de una nave.", "description_fr": "Compétences relatives à la gestion du matériel d'un vaisseau spatial", "description_it": "Skills pertaining to management of a spaceship's hardware", "description_ja": "艦船のハードウェア装置を管理するスキル", "description_ko": "함선 하드웨어를 보다 효율적으로 관리할 수 있습니다.", "description_ru": "Навыки, необходимые для эффективной эксплуатации бортового оборудования", "description_zh": "管理舰船硬件的技能", "descriptionID": 64600, "hasTypes": 1, "iconID": 33, "name_de": "Ingenieurwesen", "name_en-us": "Engineering", "name_es": "Ingeniería", "name_fr": "Ingénierie", "name_it": "Engineering", "name_ja": "エンジニアリング", "name_ko": "엔지니어링", "name_ru": "Эксплуатация инженерных систем", "name_zh": "工程学", "nameID": 65674, "parentGroupID": 150 }, "369": { "description_de": "Skills zur effizienten Benutzung von Fertigungsanlagen und Industriegeräten", "description_en-us": "Skills pertaining to the efficient use of manufacturing facilities and industrial devices", "description_es": "Habilidades relacionadas con el uso eficiente de las fábricas y los servicios industriales.", "description_fr": "Compétences relatives à la bonne utilisation des usines de production et des équipements industriels", "description_it": "Skills pertaining to the efficient use of manufacturing facilities and industrial devices", "description_ja": "製造施設と輸送装置を効率的に利用するスキル", "description_ko": "산업장비 및 제조시설을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, определяющие эффективность использования производственных объектов и перерабатывающих заводов.", "description_zh": "熟练使用生产设施和工业设备的技能", "descriptionID": 64601, "hasTypes": 1, "iconID": 33, "name_de": "Produktion", "name_en-us": "Production", "name_es": "Producción", "name_fr": "Production", "name_it": "Production", "name_ja": "生産", "name_ko": "생산", "name_ru": "Организация производства", "name_zh": "生产", "nameID": 65675, "parentGroupID": 150 }, "370": { "description_de": "Skills zur Verwendung von Kommandostrahl-Modulen", "description_en-us": "Skills pertaining to the operation of Command Burst modules", "description_es": "Habilidades relacionadas con el uso de los módulos de estallido de mando.", "description_fr": "Compétences liées à l'opération des salves de commandement.", "description_it": "Skills pertaining to the operation of Command Burst modules", "description_ja": "コマンドバーストモジュールの運用に関するスキル。", "description_ko": "커맨드 버스트 모듈을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, требуемые для использования и повышения эффективности импульсных оптимизаторов, улучшающих ТТХ союзников по флоту", "description_zh": "操作指挥脉冲波装备的相关技能", "descriptionID": 64602, "hasTypes": 1, "iconID": 33, "name_de": "Flottenunterstützung", "name_en-us": "Fleet Support", "name_es": "Apoyo a la flota", "name_fr": "Soutien de flotte", "name_it": "Fleet Support", "name_ja": "艦隊支援", "name_ko": "함대 지원", "name_ru": "Усиление флотов", "name_zh": "舰队支援理论", "nameID": 65676, "parentGroupID": 150 }, "372": { "description_de": "Skill zur Feinanpassung der installierten Systeme eines Raumschiffs", "description_en-us": "Skills pertaining to the fine tuning of a spaceship's installed systems", "description_es": "Habilidades relacionadas con el ajuste de los sistemas instalados en una nave.", "description_fr": "Compétences relatives au réglage fin des systèmes installés sur un vaisseau spatial", "description_it": "Skills pertaining to the fine tuning of a spaceship's installed systems", "description_ja": "艦船のシステムを適切にメンテナンスするスキル", "description_ko": "함선 시스템 및 리그 관련 스킬입니다.", "description_ru": "Навыки, необходимые для точной настройки систем, установленных на корабле", "description_zh": "熟练调试舰船已安装系统的技能", "descriptionID": 64603, "hasTypes": 1, "iconID": 33, "name_de": "Modifizierungen", "name_en-us": "Rigging", "name_es": "Complementos", "name_fr": "Optimisation", "name_it": "Rigging", "name_ja": "リグ", "name_ko": "리그", "name_ru": "Установка модификаторов", "name_zh": "改装件", "nameID": 65677, "parentGroupID": 150 }, "373": { "description_de": "Skills zur effizienten Benutzung von Sprengköpfen mit Selbstantrieb", "description_en-us": "Skills pertaining to the efficient use of self-propelled warheads", "description_es": "Habilidades relacionadas con el uso eficiente de las ojivas autopropulsadas.", "description_fr": "Compétences relatives à l'utilisation efficace des ogives autopropulsées", "description_it": "Skills pertaining to the efficient use of self-propelled warheads", "description_ja": "自己推進型ミサイルを効果的に使用するスキル", "description_ko": "미사일을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, необходимые для эффективного применения ракетного вооружения", "description_zh": "熟练使用自推进式弹头的技能", "descriptionID": 64604, "hasTypes": 1, "iconID": 33, "name_de": "Lenkwaffen", "name_en-us": "Missiles", "name_es": "Misiles", "name_fr": "Missiles", "name_it": "Missiles", "name_ja": "ミサイル", "name_ko": "미사일", "name_ru": "Ведение ракетного огня", "name_zh": "导弹", "nameID": 65678, "parentGroupID": 150 }, "374": { "description_de": "Skills zur möglichst schnellen und effizienten Navigation Ihres Raumschiffs", "description_en-us": "Skills pertaining to navigating your spaceship as quickly and efficiently as possible", "description_es": "Habilidades relacionadas con la navegación rápida y eficiente.", "description_fr": "Compétences relatives à l'optimisation de la vitesse et de l'efficacité de votre vaisseau", "description_it": "Skills pertaining to navigating your spaceship as quickly and efficiently as possible", "description_ja": "艦船の操縦性能をフルに活かし素早く操縦するスキル", "description_ko": "함선을 빠르고 효율적으로 기동할 수 있습니다.", "description_ru": "Навыки, позволяющие быстро и эффективно прокладывать путь в космическом пространстве", "description_zh": "迅速而熟练地驾驶舰船的技能", "descriptionID": 64605, "hasTypes": 1, "iconID": 33, "name_de": "Navigation", "name_en-us": "Navigation", "name_es": "Navegación", "name_fr": "Navigation", "name_it": "Navigation", "name_ja": "航行技術", "name_ko": "운항", "name_ru": "Эксплуатация двигателей", "name_zh": "导航学", "nameID": 65679, "parentGroupID": 150 }, "375": { "description_de": "Skills zu verschiedenen Gebieten des wissenschaftlichen Wissens", "description_en-us": "Skills pertaining to various fields of scientific knowledge", "description_es": "Habilidades relacionadas con distintos campos de conocimiento científico.", "description_fr": "Compétences relatives à divers domaines scientifiques", "description_it": "Skills pertaining to various fields of scientific knowledge", "description_ja": "幅広い科学知識に関するスキル", "description_ko": "다양한 과학 지식을 습득할 수 있습니다.", "description_ru": "Навыки, имеющие отношение к различным отраслям науки", "description_zh": "涵盖各项科学领域知识的技能", "descriptionID": 64606, "hasTypes": 1, "iconID": 33, "name_de": "Wissenschaft", "name_en-us": "Science", "name_es": "Ciencia", "name_fr": "Science", "name_it": "Science", "name_ja": "サイエンス", "name_ko": "과학", "name_ru": "Научные дисциплины", "name_zh": "科学", "nameID": 65680, "parentGroupID": 150 }, "376": { "description_de": "Skills zur effizienten Navigation durch die soziale Landschaft", "description_en-us": "Skills pertaining to efficient navigation through the social landscape", "description_es": "Habilidades relacionadas con la navegación eficiente por el ámbito social.", "description_fr": "Compétences destinées à évoluer de manière efficace dans son environnement social", "description_it": "Skills pertaining to efficient navigation through the social landscape", "description_ja": "社会を生き抜く処世術に関するスキル", "description_ko": "정치 및 사회 네트워크를 형성합니다.", "description_ru": "Навыки, необходимые для эффективного ориентирования в социальной среде", "description_zh": "自如地穿梭于社交场合的技能", "descriptionID": 64607, "hasTypes": 1, "iconID": 33, "name_de": "Soziales", "name_en-us": "Social", "name_es": "Social", "name_fr": "Social", "name_it": "Social", "name_ja": "ソーシャル", "name_ko": "사회 커넥션", "name_ru": "Развитие деловых отношений", "name_zh": "社会学", "nameID": 65681, "parentGroupID": 150 }, "377": { "description_de": "Skills zum Kommando von Raumschiffen aller Formen und Größen", "description_en-us": "Skills required for commanding all shapes and sizes of spaceships", "description_es": "Habilidades necesarias para pilotar naves de todas las formas y tamaños.", "description_fr": "Compétences requises pour le commandement de toute taille et de tout type de vaisseau.", "description_it": "Skills required for commanding all shapes and sizes of spaceships", "description_ja": "形、大きさに関わらず、あらゆる艦船を指揮するのに必要となるスキル", "description_ko": "함선 운용에 필수적인 스킬입니다.", "description_ru": "Навыки, необходимые для управления кораблями всех форм и размеров", "description_zh": "驾驶各种型号舰船所必需的技能", "descriptionID": 65072, "hasTypes": 1, "iconID": 33, "name_de": "Raumschiffkommando", "name_en-us": "Spaceship Command", "name_es": "Manejo de naves espaciales", "name_fr": "Pilotage de vaisseau", "name_it": "Spaceship Command", "name_ja": "宇宙船操作", "name_ko": "함선 운용", "name_ru": "Допуски к управлению кораблями", "name_zh": "飞船操控学", "nameID": 66146, "parentGroupID": 150 }, "378": { "description_de": "Skills zur Verwaltung von kommerziellen Aktivitäten", "description_en-us": "Skills pertaining to managing commercial activities", "description_es": "Habilidades relacionadas con la gestión de las actividades comerciales.", "description_fr": "Compétences relatives à la gestion des activités commerciales", "description_it": "Skills pertaining to managing commercial activities", "description_ja": "商業活動を管理するスキル", "description_ko": "상업 활동을 보다 효과적으로 수행할 수 있습니다.", "description_ru": "Навыки, необходимые для торговой деятельности", "description_zh": "管理商业活动的技能", "descriptionID": 64608, "hasTypes": 1, "iconID": 33, "name_de": "Handel", "name_en-us": "Trade", "name_es": "Comercio", "name_fr": "Commerce", "name_it": "Trade", "name_ja": "トレード", "name_ko": "거래", "name_ru": "Торговля", "name_zh": "贸易学", "nameID": 65682, "parentGroupID": 150 }, "379": { "description_de": "Zur Lagerung von wertvollen Rohstoffen im All.", "description_en-us": "For deep-space storage of valuable materials.", "description_es": "Para almacenar materiales valiosos en el espacio profundo.", "description_fr": "Pour le stockage de marchandises de valeur dans l'espace profond.", "description_it": "For deep-space storage of valuable materials.", "description_ja": "貴重な資源の深宇宙保管庫。", "description_ko": "귀중한 물품을 보관할 수 있는 컨테이너입니다.", "description_ru": "Для хранения ценных материалов в глубоком космосе.", "description_zh": "用来在深空中储存有用的物资。", "descriptionID": 64609, "hasTypes": 0, "iconID": 16, "name_de": "Frachtcontainer", "name_en-us": "Cargo Containers", "name_es": "Contenedores de carga", "name_fr": "Conteneurs de fret", "name_it": "Cargo Containers", "name_ja": "カーゴコンテナ", "name_ko": "화물 컨테이너", "name_ru": "Грузовые контейнеры", "name_zh": "货柜", "nameID": 65683, "parentGroupID": 404 }, "380": { "description_de": "Die kleinsten verfügbaren Smartbombs, für den Fall, dass Stromnetz und CPU Mangelware sind.", "description_en-us": "The smallest smartbombs available, for when powergrid and CPU are scarce.", "description_es": "Las bombas inteligentes más pequeñas que hay para cuando el sistema de potencia y la CPU se queden cortos.", "description_fr": "Les plus petites bombes de proximité disponibles, pour ceux et celles dont le CPU et le réseau d'alimentation sont réduits.", "description_it": "The smallest smartbombs available, for when powergrid and CPU are scarce.", "description_ja": "入手可能な最小のスマートボム。パワーグリッドと CPU が乏しいときのために。", "description_ko": "초소형 스마트폭탄으로 파워그리드 및 CPU가 부족할 시 유용합니다.", "description_ru": "Самые маленькие импульсные излучатели, потребляющие минимальное количество ресурсов процессора и мощности энергосети.", "description_zh": "最小型的一种立体炸弹,在能量栅格和CPU不够充足的情况下使用。", "descriptionID": 64610, "hasTypes": 1, "iconID": 112, "name_de": "Mikro", "name_en-us": "Micro", "name_es": "Micro", "name_fr": "Micro", "name_it": "Micro", "name_ja": "超小型", "name_ko": "마이크로", "name_ru": "Сверхмалые", "name_zh": "微型", "nameID": 65684, "parentGroupID": 141 }, "381": { "description_de": "Für Schlachtschiffe typische Smartbombs.", "description_en-us": "Battleship-sized smartbombs.", "description_es": "Bombas inteligentes para naves de tamaño acorazado.", "description_fr": "Des bombes de proximité destinées à une utilisation par les cuirassés.", "description_it": "Battleship-sized smartbombs.", "description_ja": "戦艦級スマートボム。", "description_ko": "배틀쉽급 스마트폭탄입니다.", "description_ru": "Импульсные излучатели, предназначенные для установки на линкоры.", "description_zh": "战列舰使用的立体炸弹。", "descriptionID": 64611, "hasTypes": 1, "iconID": 112, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65685, "parentGroupID": 141 }, "382": { "description_de": "Für Fregatten typische Smartbombs.", "description_en-us": "Frigate-sized smartbombs.", "description_es": "Bombas inteligentes para naves de tamaño fragata.", "description_fr": "Des bombes de proximité destinées à une utilisation par les frégates.", "description_it": "Frigate-sized smartbombs.", "description_ja": "フリゲート級向けのスマートボム。", "description_ko": "프리깃급 스마트폭탄입니다.", "description_ru": "Импульсные излучатели, предназначенные для установки на фрегаты.", "description_zh": "护卫舰等级的立体炸弹。", "descriptionID": 64612, "hasTypes": 1, "iconID": 112, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65686, "parentGroupID": 141 }, "383": { "description_de": "Für Kreuzer typische Smartbombs.", "description_en-us": "Cruiser-sized smartbombs.", "description_es": "Bombas inteligentes para naves de tamaño crucero.", "description_fr": "Des bombes de proximité destinées à une utilisation par les croiseurs.", "description_it": "Cruiser-sized smartbombs.", "description_ja": "巡洋艦級スマートボム。", "description_ko": "크루저급 스마트폭탄입니다.", "description_ru": "Импульсные излучатели, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别立体炸弹。", "descriptionID": 64613, "hasTypes": 1, "iconID": 112, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65687, "parentGroupID": 141 }, "387": { "description_de": "Verheerende, düsenangetriebene Projektile, die große Sprengladungen tragen.", "description_en-us": "Devastating jet-propelled projectiles carrying huge payloads.", "description_es": "Proyectiles autopropulsados de efecto devastador que llevan enormes cargas útiles.", "description_fr": "Projectiles autopropulsés de forte puissance à l'effet dévastateur.", "description_it": "Devastating jet-propelled projectiles carrying huge payloads.", "description_ja": "巨大な弾頭を搭載した、破壊的なジェット推進式プロジェクタイル。", "description_ko": "막대한 피해를 입힐 수 있는 제트 추진 토피도입니다.", "description_ru": "Разрушительные реактивные снаряды с мощной боевой начинкой.", "description_zh": "破坏力极大的喷气推进导弹,装有巨大载荷。", "descriptionID": 64614, "hasTypes": 0, "iconID": 1349, "name_de": "Torpedos", "name_en-us": "Torpedoes", "name_es": "Torpedos", "name_fr": "Torpilles", "name_it": "Torpedoes", "name_ja": "トルピード", "name_ko": "토피도", "name_ru": "Торпеды", "name_zh": "鱼雷", "nameID": 65688, "parentGroupID": 114 }, "390": { "description_de": "Blueprints von Torpedos.", "description_en-us": "Blueprints of torpedoes.", "description_es": "Planos de torpedos.", "description_fr": "Plans de construction de torpilles.", "description_it": "Blueprints of torpedoes.", "description_ja": "トルピードのブループリント。", "description_ko": "토피도 블루프린트입니다.", "description_ru": "Чертежи торпед.", "description_zh": "鱼雷蓝图。", "descriptionID": 65069, "hasTypes": 1, "iconID": 2703, "name_de": "Torpedos", "name_en-us": "Torpedoes", "name_es": "Torpedos", "name_fr": "Torpilles", "name_it": "Torpedoes", "name_ja": "トルピード", "name_ko": "토피도", "name_ru": "Торпеды", "name_zh": "鱼雷", "nameID": 66143, "parentGroupID": 314 }, "391": { "description_de": "Schnelle und günstige Schiffe für einfachen Transport", "description_en-us": "Fast and cheap vessels for easy transport", "description_es": "Naves rápidas y baratas para transporte sencillo.", "description_fr": "Vaisseaux rapides et peu coûteux permettant de se déplacer facilement", "description_it": "Fast and cheap vessels for easy transport", "description_ja": "簡易輸送のための高速で安価な艦船", "description_ko": "빠르고 저렴한 운송 수단입니다.", "description_ru": "Быстрые и дешевые корабли для транспортировки небольших грузов", "description_zh": "快速而廉价的舰船,用于简单的运输任务", "descriptionID": 64615, "hasTypes": 0, "iconID": 1443, "name_de": "Shuttles", "name_en-us": "Shuttles", "name_es": "Lanzaderas", "name_fr": "Navettes", "name_it": "Shuttles", "name_ja": "シャトル", "name_ko": "셔틀", "name_ru": "Катера", "name_zh": "穿梭机", "nameID": 65689, "parentGroupID": 4 }, "393": { "description_de": "Amarr-Shuttle-Designs.", "description_en-us": "Amarr shuttle designs.", "description_es": "Diseños de lanzaderas amarrianas.", "description_fr": "Modèles de navettes amarr.", "description_it": "Amarr shuttle designs.", "description_ja": "アマーシャトル設計図。", "description_ko": "아마르의 셔틀입니다.", "description_ru": "Челноки разработки Империи Amarr.", "description_zh": "艾玛穿梭机设计", "descriptionID": 64616, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65690, "parentGroupID": 391 }, "394": { "description_de": "Minmatar-Shuttle-Designs.", "description_en-us": "Minmatar shuttle designs.", "description_es": "Diseños de lanzaderas minmatarianas.", "description_fr": "Modèles de navettes minmatar.", "description_it": "Minmatar shuttle designs.", "description_ja": "ミンマターシャトル設計図。", "description_ko": "민마타의 셔틀입니다.", "description_ru": "Челноки разработки Республики Minmatar.", "description_zh": "米玛塔尔穿梭机设计", "descriptionID": 64617, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65691, "parentGroupID": 391 }, "395": { "description_de": "Gallente-Shuttle-Designs.", "description_en-us": "Gallente shuttle designs.", "description_es": "Diseños de lanzaderas gallentes.", "description_fr": "Modèles de navettes gallente.", "description_it": "Gallente shuttle designs.", "description_ja": "ガレンテシャトル設計図。", "description_ko": "갈란테의 셔틀입니다.", "description_ru": "Челноки разработки Федерации Gallente.", "description_zh": "盖伦特穿梭机设计", "descriptionID": 64618, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65692, "parentGroupID": 391 }, "396": { "description_de": "Caldari-Shuttle-Designs.", "description_en-us": "Caldari shuttle designs.", "description_es": "Diseños de lanzaderas caldaris.", "description_fr": "Modèles de navettes caldari.", "description_it": "Caldari shuttle designs.", "description_ja": "カルダリシャトル設計図。", "description_ko": "칼다리의 셔틀입니다.", "description_ru": "Челноки разработки Государства Caldari.", "description_zh": "加达里穿梭机设计", "descriptionID": 64619, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65693, "parentGroupID": 391 }, "399": { "description_de": "Blitzschnelle, höchst manövrierfähige Fregatten.", "description_en-us": "Lightning-fast, highly maneuverable frigates.", "description_es": "Fragatas extremadamente rápidas y de fácil manejo.", "description_fr": "Frégates très maniables et rapides comme l'éclair.", "description_it": "Lightning-fast, highly maneuverable frigates.", "description_ja": "スピードと機動性に優れたフリゲート。", "description_ko": "고속 고기동 성능을 보유한 프리깃입니다.", "description_ru": "Молниеносные и сверхманевренные фрегаты.", "description_zh": "这种专门制造的护卫舰级别舰船拥有闪电般的速度,超强的机动性。", "descriptionID": 65249, "hasTypes": 0, "iconID": 1443, "name_de": "Abfangjäger", "name_en-us": "Interceptors", "name_es": "Interceptores", "name_fr": "Intercepteurs", "name_it": "Interceptors", "name_ja": "要撃型フリゲート", "name_ko": "인터셉터", "name_ru": "Перехватчики", "name_zh": "截击舰", "nameID": 66323, "parentGroupID": 1364 }, "400": { "description_de": "Amarr-Abfangjäger-Designs.", "description_en-us": "Amarr interceptor designs.", "description_es": "Diseños de interceptores amarrianos.", "description_fr": "Modèles d'intercepteurs amarr.", "description_it": "Amarr interceptor designs.", "description_ja": "アマー要撃型フリゲート設計図。", "description_ko": "아마르의 인터셉터입니다.", "description_ru": "Перехватчики разработки Империи Amarr.", "description_zh": "艾玛截击舰设计", "descriptionID": 64621, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65695, "parentGroupID": 399 }, "401": { "description_de": "Caldari-Abfangjäger-Designs.", "description_en-us": "Caldari interceptor designs.", "description_es": "Diseños de interceptores caldaris.", "description_fr": "Modèles d'intercepteurs caldari.", "description_it": "Caldari interceptor designs.", "description_ja": "カルダリ要撃型フリゲート設計図。", "description_ko": "칼다리의 인터셉터입니다.", "description_ru": "Перехватчики разработки Государства Caldari.", "description_zh": "加达里截击舰设计", "descriptionID": 64622, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65696, "parentGroupID": 399 }, "402": { "description_de": "Gallente-Abfangjäger-Designs.", "description_en-us": "Gallente interceptor designs.", "description_es": "Diseños de interceptores gallentes.", "description_fr": "Modèles d'intercepteurs gallente.", "description_it": "Gallente interceptor designs.", "description_ja": "ガレンテ要撃型フリゲート設計図。", "description_ko": "갈란테의 인터셉터입니다.", "description_ru": "Перехватчики разработки Федерации Gallente.", "description_zh": "盖伦特截击舰设计", "descriptionID": 64623, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65697, "parentGroupID": 399 }, "403": { "description_de": "Minmatar-Abfangjäger-Designs.", "description_en-us": "Minmatar interceptor designs.", "description_es": "Diseños de interceptores minmatarianos.", "description_fr": "Modèles d'intercepteurs minmatar.", "description_it": "Minmatar interceptor designs.", "description_ja": "ミンマター要撃型フリゲート設計図。", "description_ko": "민마타의 인터셉터입니다.", "description_ru": "Перехватчики разработки Республики Minmatar.", "description_zh": "米玛塔尔截击舰设计", "descriptionID": 64624, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65698, "parentGroupID": 399 }, "404": { "description_de": "Verschiedene Strukturen die im Auftrag eines einzelnen Kapselpiloten oder eine Gruppe errichtet werden können", "description_en-us": "Various structures that can be deployed on behalf of an individual or group of capsuleers", "description_es": "Varias estructuras que se pueden desplegar en nombre de una persona o un grupo de capsulistas.", "description_fr": "Différentes structures qui peuvent être déployées au nom d'un individu ou d'un groupe de capsuliers", "description_it": "Various structures that can be deployed on behalf of an individual or group of capsuleers", "description_ja": "単体あるいは複数のカプセラのために配置できる建造物", "description_ko": "개인 또는 단체가 운용할 수 있는 전개형 구조물입니다.", "description_ru": "Сооружения, развёртываемые в космосе капсулёром в одиночку или группой пилотов", "description_zh": "各种太空建筑,玩家或军团都可以部署", "descriptionID": 64625, "hasTypes": 0, "iconID": 16, "name_de": "Stationierbare Strukturen", "name_en-us": "Deployable Structures", "name_es": "Estructuras desplegables", "name_fr": "Structures déployables", "name_it": "Deployable Structures", "name_ja": "配置可能な建造物", "name_ko": "전개형 구조물", "name_ru": "Полевые блоки", "name_zh": "可部署建筑", "nameID": 65699, "parentGroupID": 477 }, "405": { "description_de": "Fangen Sie in Ihrem Netz eine Fliege ein.", "description_en-us": "Trap a fly in your web.", "description_es": "Atrapa una mosca en tu red.", "description_fr": "Attrapez une mouche dans votre toile.", "description_it": "Trap a fly in your web.", "description_ja": "クモの巣のように敵を捕らえる。", "description_ko": "덫을 놓아 적을 잡을 수 있습니다.", "description_ru": "Поймайте муху в свою паутину.", "description_zh": "织起网来捉苍蝇。", "descriptionID": 64626, "hasTypes": 1, "iconID": 16, "name_de": "Warpstörfelder", "name_en-us": "Warp Disruption Fields", "name_es": "Campos disruptores de warp", "name_fr": "Champs perturbateurs de warp", "name_it": "Warp Disruption Fields", "name_ja": "ワープ妨害フィールド", "name_ko": "워프 디스럽터", "name_ru": "Полевые варп-заградители", "name_zh": "跃迁扰断力场", "nameID": 65700, "parentGroupID": 404 }, "406": { "description_de": "Blaupausen für stationierbare Strukturen.", "description_en-us": "Blueprints of deployable structures.", "description_es": "Planos de estructuras desplegables.", "description_fr": "Plans de construction des structures déployables.", "description_it": "Blueprints of deployable structures.", "description_ja": "配置可能な建造物のブループリント。", "description_ko": "전개형 구조물을 위한 블루프린트입니다.", "description_ru": "Чертежи автономных блоков.", "description_zh": "可部署建筑蓝图", "descriptionID": 64627, "hasTypes": 0, "iconID": 2703, "name_de": "Stationierbare Strukturen", "name_en-us": "Deployable Structures", "name_es": "Estructuras desplegables", "name_fr": "Structures déployables", "name_it": "Deployable Structures", "name_ja": "配置可能な建造物", "name_ko": "전개형 구조물", "name_ru": "Полевые блоки", "name_zh": "可部署建筑", "nameID": 65701, "parentGroupID": 1338 }, "407": { "description_de": "Blueprints für Warp-Unterbrechungsfelder.", "description_en-us": "Blueprints of Warp disruption fields.", "description_es": "Planos de campos disruptores de warp.", "description_fr": "Plans de construction de champs de perturbation de warp.", "description_it": "Blueprints of Warp disruption fields.", "description_ja": "ワーク妨害磁場のブループリント。", "description_ko": "워프 디스럽션 필드 블루프린트입니다.", "description_ru": "Чертежи систем ненаправленного подавления варп-режима.", "description_zh": "跃迁扰断力场蓝图。", "descriptionID": 65300, "hasTypes": 1, "iconID": 2703, "name_de": "Warpstörfelder", "name_en-us": "Warp Disruption Fields", "name_es": "Campos disruptores de warp", "name_fr": "Champs perturbateurs de warp", "name_it": "Warp Disruption Fields", "name_ja": "ワープ妨害フィールド", "name_ko": "워프 디스럽터", "name_ru": "Полевые варп-заградители", "name_zh": "跃迁扰断力场", "nameID": 66374, "parentGroupID": 406 }, "408": { "description_de": "Blueprints von Schiffen der Abfangjäger-Klasse.", "description_en-us": "Blueprints of interceptor-class vessels.", "description_es": "Planos de naves de clase interceptor.", "description_fr": "Plans de construction de vaisseaux de classe intercepteur.", "description_it": "Blueprints of interceptor-class vessels.", "description_ja": "ワープ妨害型駆逐艦級艦船のブループリント。", "description_ko": "인터셉터급 함선 블루프린트입니다.", "description_ru": "Чертежи перехватчиков.", "description_zh": "截击舰蓝图", "descriptionID": 64628, "hasTypes": 0, "iconID": 2703, "name_de": "Abfangjäger", "name_en-us": "Interceptors", "name_es": "Interceptores", "name_fr": "Intercepteurs", "name_it": "Interceptors", "name_ja": "要撃型フリゲート", "name_ko": "인터셉터", "name_ru": "Перехватчики", "name_zh": "截击舰", "nameID": 65702, "parentGroupID": 204 }, "410": { "description_de": "Blueprints von Amarr-Abfangjäger-Designs.", "description_en-us": "Blueprints of Amarr interceptor designs.", "description_es": "Planos de diseños de interceptores amarrianos.", "description_fr": "Plans de construction de modèles d'intercepteurs amarr.", "description_it": "Blueprints of Amarr interceptor designs.", "description_ja": "アマー要撃型フリゲート設計図のブループリント。", "description_ko": "아마르 인터셉터 블루프린트입니다.", "description_ru": "Чертежи перехватчиков разработки Империи Amarr.", "description_zh": "艾玛截击舰设计蓝图", "descriptionID": 64629, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65703, "parentGroupID": 408 }, "411": { "description_de": "Blueprints von Caldari-Abfangjäger-Designs.", "description_en-us": "Blueprints of Caldari interceptor designs.", "description_es": "Planos de diseños de interceptores caldaris.", "description_fr": "Plans de construction de modèles d'intercepteurs caldari.", "description_it": "Blueprints of Caldari interceptor designs.", "description_ja": "カルダリ要撃型フリゲート設計図のブループリント。", "description_ko": "칼다리 인터셉터 설계 블루프린트입니다.", "description_ru": "Чертежи перехватчиков разработки Государства Caldari.", "description_zh": "加达里截击舰设计蓝图", "descriptionID": 64630, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65704, "parentGroupID": 408 }, "412": { "description_de": "Blueprints von Gallente-Abfangjäger-Designs.", "description_en-us": "Blueprints of Gallente interceptor designs.", "description_es": "Planos de diseños de interceptores gallentes.", "description_fr": "Plans de construction de modèles d'intercepteurs gallente.", "description_it": "Blueprints of Gallente interceptor designs.", "description_ja": "ガレンテ要撃型フリゲート設計図のブループリント。", "description_ko": "갈란테 인터셉터 블루프린트입니다.", "description_ru": "Чертежи перехватчиков разработки Федерации Gallente.", "description_zh": "盖伦特截击舰设计蓝图。", "descriptionID": 64631, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65705, "parentGroupID": 408 }, "413": { "description_de": "Blueprints von Minmatar-Abfangjäger-Designs.", "description_en-us": "Blueprints of Minmatar interceptor designs.", "description_es": "Planos de diseños de interceptores minmatarianos.", "description_fr": "Plans de construction de modèles d'intercepteurs minmatar.", "description_it": "Blueprints of Minmatar interceptor designs.", "description_ja": "ミンマター要撃型フリゲート設計図のブループリント。", "description_ko": "민마타 인터셉터 블루프린트입니다.", "description_ru": "Чертежи перехватчиков разработки Республики Minmatar.", "description_zh": "米玛塔尔截击舰设计蓝图。", "descriptionID": 64632, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65706, "parentGroupID": 408 }, "414": { "description_de": "Blueprints von Schiffen der Shuttle-Klasse.", "description_en-us": "Blueprints of shuttle-class vessels.", "description_es": "Planos de naves de clase lanzadera.", "description_fr": "Plans de construction de vaisseaux de classe navette.", "description_it": "Blueprints of shuttle-class vessels.", "description_ja": "シャトル級艦船のブループリント。", "description_ko": "셔틀급 함선 블루프린트입니다.", "description_ru": "Чертежи челноков.", "description_zh": "穿梭机蓝图。", "descriptionID": 64633, "hasTypes": 0, "iconID": 2703, "name_de": "Shuttles", "name_en-us": "Shuttles", "name_es": "Lanzaderas", "name_fr": "Navettes", "name_it": "Shuttles", "name_ja": "シャトル", "name_ko": "셔틀", "name_ru": "Катера", "name_zh": "穿梭机", "nameID": 65707, "parentGroupID": 204 }, "415": { "description_de": "Blueprints von Amarr-Shuttle-Designs.", "description_en-us": "Blueprints of Amarr shuttle designs.", "description_es": "Planos de diseños de lanzaderas amarrianas.", "description_fr": "Plans de construction de modèles de navettes amarr.", "description_it": "Blueprints of Amarr shuttle designs.", "description_ja": "アマーシャトル設計図のブループリント。", "description_ko": "아마르 셔틀 블루프린트입니다.", "description_ru": "Чертежи челноков разработки Империи Amarr.", "description_zh": "艾玛穿梭机设计蓝图", "descriptionID": 64634, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65708, "parentGroupID": 414 }, "416": { "description_de": "Blueprints von Caldari-Shuttle-Designs.", "description_en-us": "Blueprints of Caldari shuttle designs.", "description_es": "Planos de diseños de lanzaderas caldaris.", "description_fr": "Plans de construction de modèles de navettes caldari.", "description_it": "Blueprints of Caldari shuttle designs.", "description_ja": "カルダリシャトル設計図のブループリント。", "description_ko": "칼다리 셔틀 블루프린트입니다.", "description_ru": "Чертежи челноков разработки Государства Caldari.", "description_zh": "加达里穿梭机设计蓝图", "descriptionID": 64635, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65709, "parentGroupID": 414 }, "417": { "description_de": "Blueprints von Gallente-Shuttle-Designs.", "description_en-us": "Blueprints of Gallente shuttle designs.", "description_es": "Planos de diseños de lanzaderas gallentes.", "description_fr": "Plans de construction de modèles de navettes gallente.", "description_it": "Blueprints of Gallente shuttle designs.", "description_ja": "カルダリシャトル設計図のブループリント。", "description_ko": "갈란테 셔틀 블루프린트입니다.", "description_ru": "Чертежи челноков разработки Федерации Gallente.", "description_zh": "盖伦特穿梭机设计蓝图。", "descriptionID": 64636, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65710, "parentGroupID": 414 }, "418": { "description_de": "Blueprints von Minmatar-Industrial-Designs.", "description_en-us": "Blueprints of Minmatar shuttle designs.", "description_es": "Planos de diseños de lanzaderas minmatarianas.", "description_fr": "Plans de construction de modèles de navettes minmatar.", "description_it": "Blueprints of Minmatar shuttle designs.", "description_ja": "ミンマターシャトル設計図のブループリント。", "description_ko": "민마타 셔틀 블루프린트입니다.", "description_ru": "Чертежи челноков разработки Республики Minmatar.", "description_zh": "米玛塔尔穿梭机设计蓝图。", "descriptionID": 64637, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65711, "parentGroupID": 414 }, "419": { "description_de": "Blueprints von Schiffen der Covert Ops-Klasse.", "description_en-us": "Blueprints of covert ops-class vessels.", "description_es": "Planos de naves de clase operaciones encubiertas.", "description_fr": "Plans de construction de vaisseaux de classe opérations secrètes.", "description_it": "Blueprints of covert ops-class vessels.", "description_ja": "隠密行動フリゲート級艦船のブループリント。", "description_ko": "코버트 옵스급 함선 블루프린트입니다.", "description_ru": "Чертежи спецкораблей.", "description_zh": "隐形特勤舰蓝图", "descriptionID": 64638, "hasTypes": 0, "iconID": 2703, "name_de": "Covert Ops", "name_en-us": "Covert Ops", "name_es": "Operaciones encubiertas", "name_fr": "Opérations secrètes", "name_it": "Covert Ops", "name_ja": "隠密行動艦", "name_ko": "코버트 옵스", "name_ru": "Диверсионные фрегаты", "name_zh": "隐形特勤舰", "nameID": 65712, "parentGroupID": 204 }, "420": { "description_de": "Fregatten, konzipiert für Geheimoperationen.", "description_en-us": "Frigates designed for clandestine operations.", "description_es": "Fragatas diseñadas para operaciones clandestinas.", "description_fr": "Frégates conçues pour mener des opérations clandestines.", "description_it": "Frigates designed for clandestine operations.", "description_ja": "密偵活動を主な任務とするフリゲート。", "description_ko": "비밀 임무에 투입되는 프리깃입니다.", "description_ru": "Это фрегаты, созданные для тайных операций.", "description_zh": "专用于执行秘密任务的护卫舰设计方案。", "descriptionID": 65248, "hasTypes": 0, "iconID": 1443, "name_de": "Covert Ops", "name_en-us": "Covert Ops", "name_es": "Operaciones encubiertas", "name_fr": "Opérations secrètes", "name_it": "Covert Ops", "name_ja": "隠密行動艦", "name_ko": "코버트 옵스", "name_ru": "Диверсионные фрегаты", "name_zh": "隐形特勤舰", "nameID": 66322, "parentGroupID": 1364 }, "421": { "description_de": "Amarr-Covert Ops-Designs.", "description_en-us": "Amarr covert ops designs.", "description_es": "Diseños de operaciones encubiertas amarrianas.", "description_fr": "Modèles de vaisseaux d'opérations secrètes amarr.", "description_it": "Amarr covert ops designs.", "description_ja": "アマー隠密行動艦。", "description_ko": "아마르의 코버트 옵스입니다.", "description_ru": "Спецкорабли разработки Империи Amarr.", "description_zh": "艾玛隐形特勤舰设计", "descriptionID": 64639, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65713, "parentGroupID": 420 }, "422": { "description_de": "Caldari-Covert Ops-Designs.", "description_en-us": "Caldari covert ops designs.", "description_es": "Diseños de operaciones encubiertas caldaris.", "description_fr": "Modèles de vaisseaux d'opérations secrètes caldari.", "description_it": "Caldari covert ops designs.", "description_ja": "カルダリ隠密行動艦。", "description_ko": "칼다리의 코버트 옵스입니다.", "description_ru": "Спецкорабли разработки Государства Caldari.", "description_zh": "加达里隐形特勤舰设计", "descriptionID": 64640, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65714, "parentGroupID": 420 }, "423": { "description_de": "Gallente-Covert Ops-Designs.", "description_en-us": "Gallente covert ops designs.", "description_es": "Diseños de operaciones encubiertas gallentes.", "description_fr": "Modèles de vaisseaux d'opérations secrètes gallente.", "description_it": "Gallente covert ops designs.", "description_ja": "ガレンテ隠密行動艦。", "description_ko": "갈란테의 코버트 옵스입니다.", "description_ru": "Спецкорабли разработки Федерации Gallente.", "description_zh": "盖伦特隐形特勤舰设计", "descriptionID": 64641, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65715, "parentGroupID": 420 }, "424": { "description_de": "Minmatar-Covers-Ops-Designs", "description_en-us": "Minmatar covert ops designs.", "description_es": "Diseños de operaciones encubiertas minmatarianas.", "description_fr": "Modèles de vaisseaux d'opérations secrètes minmatar.", "description_it": "Minmatar covert ops designs.", "description_ja": "ミンマター隠密行動艦。", "description_ko": "민마타의 코버트 옵스입니다.", "description_ru": "Спецкорабли разработки Республики Minmatar.", "description_zh": "米玛塔尔隐形特勤舰设计", "descriptionID": 64642, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65716, "parentGroupID": 420 }, "425": { "description_de": "Blueprints von Amarr-Covert Ops-Designs.", "description_en-us": "Blueprints of Amarr covert ops designs.", "description_es": "Planos de diseños de operaciones encubiertas amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux d'opérations secrètes amarr.", "description_it": "Blueprints of Amarr covert ops designs.", "description_ja": "アマー隠密行動艦のブループリント。", "description_ko": "아마르 코버트 옵스 블루프린트입니다.", "description_ru": "Чертежи спецкораблей разработки Империи Amarr.", "description_zh": "艾玛隐形特勤舰设计蓝图", "descriptionID": 64643, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65717, "parentGroupID": 419 }, "427": { "description_de": "Blueprints von Caldari-Covert Ops-Designs.", "description_en-us": "Blueprints of Caldari covert ops designs.", "description_es": "Planos de diseños de operaciones encubiertas caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux d'opérations secrètes caldari.", "description_it": "Blueprints of Caldari covert ops designs.", "description_ja": "カルダリ隠密行動艦のブループリント。", "description_ko": "칼다리 코버트 옵스 블루프린트입니다.", "description_ru": "Чертежи спецкораблей разработки Государства Caldari.", "description_zh": "加达里隐形特勤舰设计蓝图", "descriptionID": 64644, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65718, "parentGroupID": 419 }, "428": { "description_de": "Blueprints von Gallente-Covert Ops-Designs.", "description_en-us": "Blueprints of Gallente covert ops designs.", "description_es": "Planos de diseños de operaciones encubiertas gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux d'opérations secrètes gallente.", "description_it": "Blueprints of Gallente covert ops designs.", "description_ja": "ガレンテ隠密行動艦のブループリント。", "description_ko": "갈란테 코버트 옵스 블루프린트입니다.", "description_ru": "Чертежи спецкораблей разработки Федерации Gallente.", "description_zh": "盖伦特隐形特勤舰设计蓝图。", "descriptionID": 64645, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65719, "parentGroupID": 419 }, "429": { "description_de": "Blueprints von Minmatar-Covert Ops-Designs.", "description_en-us": "Blueprints of Minmatar covert ops designs.", "description_es": "Planos de diseños de operaciones encubiertas minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux d'opérations secrètes minmatar.", "description_it": "Blueprints of Minmatar covert ops designs.", "description_ja": "ミンマター隠密行動艦のブループリント。", "description_ko": "민마타 코버트 옵스 블루프린트입니다.", "description_ru": "Чертежи спецкораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔隐形特勤舰设计蓝图。", "descriptionID": 64646, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65720, "parentGroupID": 419 }, "430": { "description_de": "Blueprints von Tarnvorrichtungen.", "description_en-us": "Blueprints of cloaking devices.", "description_es": "Planos de dispositivos de camuflaje.", "description_fr": "Plans de construction de dispositifs de camouflage.", "description_it": "Blueprints of cloaking devices.", "description_ja": "遮蔽装置のブループリント。", "description_ko": "클로킹 장치 블루프린트입니다.", "description_ru": "Чертежи систем маскировки.", "description_zh": "隐形装置蓝图", "descriptionID": 64647, "hasTypes": 1, "iconID": 2703, "name_de": "Tarnvorrichtungen", "name_en-us": "Cloaking Devices", "name_es": "Dispositivos de camuflaje", "name_fr": "Dispositifs de camouflage", "name_it": "Cloaking Devices", "name_ja": "遮蔽装置", "name_ko": "클로킹 장치", "name_ru": "Системы маскировки", "name_zh": "隐形装置", "nameID": 65721, "parentGroupID": 1578 }, "432": { "description_de": "Robuste, mächtige Fregatten, die für uneingeschränkte Gefechte gebaut wurden.", "description_en-us": "Sturdy and powerful frigates built for all-out combat.", "description_es": "Fragatas resistentes y poderosas construidas para los combates sin cuartel.", "description_fr": "Frégates robustes et puissantes conçues pour le combat.", "description_it": "Sturdy and powerful frigates built for all-out combat.", "description_ja": "総力戦で活躍する頑丈かつ強力なフリゲート。", "description_ko": "견고하면서도 강력한 프리깃으로 공격적인 전투를 위해 설계된 함선입니다.", "description_ru": "Прочные и мощные фрегаты, созданные для ведения масштабных военных действий.", "description_zh": "坚固强大的全天候战斗护卫舰。", "descriptionID": 65246, "hasTypes": 0, "iconID": 1443, "name_de": "Angriffsfregatten", "name_en-us": "Assault Frigates", "name_es": "Fragatas de asalto", "name_fr": "Frégates d'assaut", "name_it": "Assault Frigates", "name_ja": "強襲型フリゲート", "name_ko": "어썰트 프리깃", "name_ru": "Ударные фрегаты", "name_zh": "突击护卫舰", "nameID": 66320, "parentGroupID": 1364 }, "433": { "description_de": "Amarr-Designs für Angriffsfregatten.", "description_en-us": "Amarr assault frigate designs.", "description_es": "Diseños de fragatas de asalto amarrianas.", "description_fr": "Modèles de frégates d'assaut amarr.", "description_it": "Amarr assault frigate designs.", "description_ja": "アマーの強襲型フリゲート。", "description_ko": "아마르의 어썰트 프리깃입니다.", "description_ru": "Проектная документация на ударный фрегат разработки империи Амарр.", "description_zh": "艾玛突击护卫舰设计。", "descriptionID": 64648, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65722, "parentGroupID": 432 }, "434": { "description_de": "Caldari-Designs für Angriffsfregatten.", "description_en-us": "Caldari assault frigate designs.", "description_es": "Diseños de fragatas de asalto caldaris.", "description_fr": "Modèles de frégates d'assaut caldari.", "description_it": "Caldari assault frigate designs.", "description_ja": "カルダリ強襲型フリゲート。", "description_ko": "칼다리의 어썰트 프리깃입니다.", "description_ru": "Ударные фрегаты разработки государства Калдари.", "description_zh": "加达里突击护卫舰设计。", "descriptionID": 64649, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65723, "parentGroupID": 432 }, "435": { "description_de": "Gallente-Designs für Angriffsfregatten.", "description_en-us": "Gallente assault frigate designs.", "description_es": "Diseños de fragatas de asalto gallentes.", "description_fr": "Modèles de frégates d'assaut gallente.", "description_it": "Gallente assault frigate designs.", "description_ja": "ガレンテ強襲型フリゲート。", "description_ko": "갈란테의 어썰트 프리깃입니다.", "description_ru": "Проектная документация на ударный фрегат разработки государства Калдари.", "description_zh": "盖伦特突击护卫舰设计。", "descriptionID": 64650, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65724, "parentGroupID": 432 }, "436": { "description_de": "Minmatar-Designs für Angriffsfregatten.", "description_en-us": "Minmatar assault frigate designs.", "description_es": "Diseños de fragatas de asalto minmatarianas.", "description_fr": "Modèles de frégates d'assaut minmatar.", "description_it": "Minmatar assault frigate designs.", "description_ja": "ミンマター強襲型フリゲート。", "description_ko": "민마타의 어썰트 프리깃입니다.", "description_ru": "Проектная документация на ударный фрегат разработки республики Минматар.", "description_zh": "米玛塔尔突击护卫舰设计。", "descriptionID": 64651, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65725, "parentGroupID": 432 }, "437": { "description_de": "Unterstützungsschiffe, die für die Assistenz bei großen Gefechten entwickelt wurden.", "description_en-us": "Support ships, engineered for field assistance in large engagements.", "description_es": "Naves de apoyo creadas para ayudar en combate en grandes enfrentamientos.", "description_fr": "Vaisseaux de soutien, conçus pour l'assistance sur le terrain dans les engagements à grande échelle.", "description_it": "Support ships, engineered for field assistance in large engagements.", "description_ja": "大規模な戦闘時にサポート役を務めるサポート船。", "description_ko": "대규모 전투를 지원하기 위해 설계된 함선입니다.", "description_ru": "Ремонтные корабли специально разрабатываются для оказания поддержки союзникам в ходе крупных боевых действий.", "description_zh": "在大型作战中提供支援和工程协助。", "descriptionID": 65254, "hasTypes": 0, "iconID": 1443, "name_de": "Logistik-Kreuzer", "name_en-us": "Logistics", "name_es": "Logística", "name_fr": "Logistique", "name_it": "Logistics", "name_ja": "支援型巡洋艦", "name_ko": "로지스틱스", "name_ru": "Крейсеры обеспечения", "name_zh": "后勤舰", "nameID": 66328, "parentGroupID": 1368 }, "438": { "description_de": "Amarr-Logistikschiff-Designs.", "description_en-us": "Amarr logistics vessel designs.", "description_es": "Diseños de naves logísticas amarrianas.", "description_fr": "Modèles de vaisseaux logistiques amarr.", "description_it": "Amarr logistics vessel designs.", "description_ja": "アマー支援型巡洋艦設計図。", "description_ko": "아마르의 로지스틱스입니다.", "description_ru": "Ремонтные корабли разработки Империи Amarr.", "description_zh": "艾玛后勤舰设计", "descriptionID": 64652, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65726, "parentGroupID": 437 }, "439": { "description_de": "Caldari-Logistikschiff-Designs.", "description_en-us": "Caldari logistics vessel designs.", "description_es": "Diseños de naves logísticas caldaris.", "description_fr": "Modèles de vaisseaux logistiques caldari.", "description_it": "Caldari logistics vessel designs.", "description_ja": "カルダリ支援型巡洋艦設計図。", "description_ko": "칼다리의 로지스틱스입니다.", "description_ru": "Транспортные корабли разработки Государства Caldari.", "description_zh": "加达里后勤舰设计", "descriptionID": 64653, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65727, "parentGroupID": 437 }, "440": { "description_de": "Gallente-Logistikschiff-Designs.", "description_en-us": "Gallente logistics vessel designs.", "description_es": "Diseños de naves logísticas gallentes.", "description_fr": "Modèles de vaisseaux logistiques gallente.", "description_it": "Gallente logistics vessel designs.", "description_ja": "ガレンテ支援型巡洋艦設計図。", "description_ko": "갈란테의 로지스틱스입니다.", "description_ru": "Ремонтные корабли разработки Федерации Gallente.", "description_zh": "盖伦特后勤舰设计", "descriptionID": 64654, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65728, "parentGroupID": 437 }, "441": { "description_de": "Minmatar-Logistikschiff-Designs.", "description_en-us": "Minmatar logistics vessel designs.", "description_es": "Diseños de naves logísticas minmatarianas.", "description_fr": "Modèles de vaisseaux logistiques minmatar.", "description_it": "Minmatar logistics vessel designs.", "description_ja": "ミンマター支援型巡洋艦設計図。", "description_ko": "민마타의 로지스틱스입니다.", "description_ru": "Ремонтные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔后勤舰设计", "descriptionID": 64655, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65729, "parentGroupID": 437 }, "442": { "description_de": "Blueprints von Schiffen der Logistik-Klasse.", "description_en-us": "Blueprints of Logistics-class vessels.", "description_es": "Planos de naves logísticas.", "description_fr": "Plans de construction de vaisseaux de classe logistique.", "description_it": "Blueprints of Logistics-class vessels.", "description_ja": "支援型巡洋艦級艦船のブループリント。", "description_ko": "로지스틱스급 블루프린트입니다.", "description_ru": "Чертежи ремонтных кораблей.", "description_zh": "后勤舰蓝图", "descriptionID": 64656, "hasTypes": 0, "iconID": 2703, "name_de": "Logistik-Kreuzer", "name_en-us": "Logistics", "name_es": "Logística", "name_fr": "Logistique", "name_it": "Logistics", "name_ja": "支援型巡洋艦", "name_ko": "지원", "name_ru": "Крейсеры обеспечения", "name_zh": "后勤舰", "nameID": 65730, "parentGroupID": 204 }, "443": { "description_de": "Blueprints von Amarr-Logistikschiff-Designs.", "description_en-us": "Blueprints of Amarr logistics designs.", "description_es": "Planos de diseños de naves logísticas amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux logistiques amarr.", "description_it": "Blueprints of Amarr logistics designs.", "description_ja": "アマー支援型巡洋艦設計図のブループリント。", "description_ko": "아마르 로지스틱스 블루프린트입니다.", "description_ru": "Чертежи ремонтных кораблей разработки Империи Amarr.", "description_zh": "艾玛后勤舰设计蓝图", "descriptionID": 64657, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65731, "parentGroupID": 442 }, "444": { "description_de": "Blueprints von Caldari-Logistikschiff-Designs.", "description_en-us": "Blueprints of Caldari logistics designs.", "description_es": "Planos de diseños de naves logísticas caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux logistiques caldari.", "description_it": "Blueprints of Caldari logistics designs.", "description_ja": "カルダリ支援型巡洋艦設計図のブループリント。", "description_ko": "칼다리 로지스틱스 블루프린트입니다.", "description_ru": "Чертежи ремонтных кораблей разработки Государства Caldari.", "description_zh": "加达里后勤舰设计蓝图", "descriptionID": 64658, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65732, "parentGroupID": 442 }, "445": { "description_de": "Blueprints von Gallente-Logistikschiff-Designs.", "description_en-us": "Blueprints of Gallente logistics designs.", "description_es": "Planos de diseños de naves logísticas gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux logistiques gallente.", "description_it": "Blueprints of Gallente logistics designs.", "description_ja": "ガレンテ支援型巡洋艦設計図のブループリント。", "description_ko": "갈란테 로지스틱스 블루프린트입니다.", "description_ru": "Чертежи ремонтных кораблей разработки Федерации Gallente.", "description_zh": "盖伦特后勤舰设计蓝图。", "descriptionID": 64659, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65733, "parentGroupID": 442 }, "446": { "description_de": "Blueprints von Minmatar-Logistikschiff-Designs.", "description_en-us": "Blueprints of Minmatar logistics designs.", "description_es": "Planos de diseños de naves logísticas minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux logistiques minmatar.", "description_it": "Blueprints of Minmatar logistics designs.", "description_ja": "ミンマター支援型巡洋艦設計図のブループリント。", "description_ko": "민마타 로지스틱스 블루프린트입니다.", "description_ru": "Чертежи ремонтных кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔后勤舰设计蓝图。", "descriptionID": 64660, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65734, "parentGroupID": 442 }, "448": { "description_de": "Robuste und mächtige Kreuzer für den uneingeschränkten Kampf.", "description_en-us": "Sturdy and powerful cruisers built for all-out combat.", "description_es": "Cruceros resistentes y poderosos construidos para los combates sin cuartel.", "description_fr": "Croiseurs solides et puissants conçus pour le combat.", "description_it": "Sturdy and powerful cruisers built for all-out combat.", "description_ja": "総力戦で活躍する頑丈かつ強力な巡洋艦。", "description_ko": "전투를 목적으로 설계된 강력한 크루저입니다.", "description_ru": "Прочные и мощные крейсеры, предназначенные для ведения интенсивных боевых действий.", "description_zh": "坚固强大的全天候战斗巡洋舰。", "descriptionID": 65253, "hasTypes": 0, "iconID": 1443, "name_de": "Schwere Angriffskreuzer", "name_en-us": "Heavy Assault Cruisers", "name_es": "Cruceros de asalto pesados", "name_fr": "Croiseurs d'assaut lourds", "name_it": "Heavy Assault Cruisers", "name_ja": "強襲型巡洋艦", "name_ko": "어썰트 크루저", "name_ru": "Ударные крейсеры", "name_zh": "重型突击巡洋舰", "nameID": 66327, "parentGroupID": 1368 }, "449": { "description_de": "Amarr-Designs für schwere Angriffskreuzer.", "description_en-us": "Amarr heavy assault cruiser designs.", "description_es": "Diseños de cruceros de asalto pesados amarrianos.", "description_fr": "Modèles de croiseurs d'assaut lourds amarr.", "description_it": "Amarr heavy assault cruiser designs.", "description_ja": "アマーの強襲型巡洋艦。", "description_ko": "아마르의 어썰트 크루저입니다.", "description_ru": "Тяжелые ударные крейсеры разработки империи Амарр.", "description_zh": "艾玛重型突击巡洋舰设计。", "descriptionID": 64661, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65735, "parentGroupID": 448 }, "450": { "description_de": "Caldari-Designs für schwere Angriffskreuzer.", "description_en-us": "Caldari heavy assault cruiser designs.", "description_es": "Diseños de cruceros de asalto pesados caldaris.", "description_fr": "Modèles de croiseurs d'assaut lourds caldari.", "description_it": "Caldari heavy assault cruiser designs.", "description_ja": "カルダリの強襲型巡洋艦。", "description_ko": "칼다리의 어썰트 크루저입니다.", "description_ru": "Тяжелые ударные крейсеры разработки государства Калдари.", "description_zh": "加达里重型突击巡洋舰设计。", "descriptionID": 64662, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65736, "parentGroupID": 448 }, "451": { "description_de": "Gallente-Designs für schwere Angriffskreuzer.", "description_en-us": "Gallente heavy assault cruiser designs.", "description_es": "Diseños de cruceros de asalto pesados gallentes.", "description_fr": "Modèles de croiseurs d'assaut lourds gallente.", "description_it": "Gallente heavy assault cruiser designs.", "description_ja": "ガレンテ強襲型巡洋艦。", "description_ko": "갈란테 어썰트 크루저입니다.", "description_ru": "Тяжелые ударные крейсеры разработки федерации Галленте.", "description_zh": "盖伦特重型突击巡洋舰设计。", "descriptionID": 64663, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65737, "parentGroupID": 448 }, "452": { "description_de": "Minmatar-Designs für schwere Angriffskreuzer.", "description_en-us": "Minmatar heavy assault cruiser designs.", "description_es": "Diseños de cruceros de asalto pesados minmatarianos.", "description_fr": "Modèles de croiseurs d'assaut lourds minmatar.", "description_it": "Minmatar heavy assault cruiser designs.", "description_ja": "ミンマター強襲型巡洋艦。", "description_ko": "민마타 어썰트 크루저입니다.", "description_ru": "Тяжелые ударные крейсеры разработки республики Минматар.", "description_zh": "米玛塔尔重型突击巡洋舰设计。", "descriptionID": 64664, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65738, "parentGroupID": 448 }, "453": { "description_de": "Blueprints von schweren Angriffsklasse-Schiffen.", "description_en-us": "Blueprints of heavy assault-class vessels.", "description_es": "Planos de naves pesadas de asalto.", "description_fr": "Plans de construction de vaisseaux d'assaut lourds.", "description_it": "Blueprints of heavy assault-class vessels.", "description_ja": "大型アサルト級艦船のブループリント。", "description_ko": "어썰트 크루저 블루프린트입니다.", "description_ru": "Чертежи тяжелых ударных кораблей.", "description_zh": "重型突击舰蓝图", "descriptionID": 64665, "hasTypes": 0, "iconID": 2703, "name_de": "Schwere Angriffskreuzer", "name_en-us": "Heavy Assault Cruisers", "name_es": "Cruceros de asalto pesados", "name_fr": "Croiseurs d'assaut lourds", "name_it": "Heavy Assault Cruisers", "name_ja": "強襲型巡洋艦", "name_ko": "어썰트 크루저", "name_ru": "Ударные крейсеры", "name_zh": "重型突击巡洋舰", "nameID": 65739, "parentGroupID": 204 }, "454": { "description_de": "Blueprints von Amarr-Designs für schwere Angriffskreuzer.", "description_en-us": "Blueprints of Amarr heavy assault cruiser designs.", "description_es": "Planos de cruceros de asalto pesados amarrianos.", "description_fr": "Plans de construction de modèles de croiseurs d'assaut lourds amarr.", "description_it": "Blueprints of Amarr heavy assault cruiser designs.", "description_ja": "アマー強襲型巡洋艦のブループリント。", "description_ko": "아마르 어썰트 크루저 블루프린트입니다.", "description_ru": "Чертежи проектов тяжелых ударных крейсеров разработки империи Амарр.", "description_zh": "艾玛重型突击巡洋舰设计蓝图。", "descriptionID": 64666, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65740, "parentGroupID": 453 }, "455": { "description_de": "Blueprints von Caldari-Designs für schwere Angriffskreuzer.", "description_en-us": "Blueprints of Caldari heavy assault cruiser designs.", "description_es": "Planos de diseños de cruceros de asalto pesados caldaris.", "description_fr": "Plans de construction de modèles de croiseurs d'assaut lourds caldari.", "description_it": "Blueprints of Caldari heavy assault cruiser designs.", "description_ja": "カルダリ強襲型巡洋艦のブループリント。", "description_ko": "칼다리 어썰트 크루저 블루프린트입니다.", "description_ru": "Чертежи тяжелых ударных крейсеров разработки государства Калдари.", "description_zh": "加达里重型突击巡洋舰设计蓝图。", "descriptionID": 64667, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65741, "parentGroupID": 453 }, "456": { "description_de": "Blueprints von Gallente-Designs für schwere Angriffskreuzer.", "description_en-us": "Blueprints of Gallente heavy assault cruiser designs.", "description_es": "Planos de diseños de cruceros de asalto pesados gallentes.", "description_fr": "Plans de construction de modèles de croiseurs d'assaut lourds gallente.", "description_it": "Blueprints of Gallente heavy assault cruiser designs.", "description_ja": "ガレンテ強襲型巡洋艦のブループリント。", "description_ko": "갈란테 어썰트 크루저 블루프린트입니다.", "description_ru": "Чертежи тяжелых ударных крейсеров разработки государства Галленте.", "description_zh": "盖伦特重型突击巡洋舰设计蓝图。", "descriptionID": 64668, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65742, "parentGroupID": 453 }, "457": { "description_de": "Blueprints von Minmatar-Designs für schwere Angriffskreuzer.", "description_en-us": "Blueprints of Minmatar heavy assault cruiser designs.", "description_es": "Planos de diseños de cruceros de asalto pesados minmatarianos.", "description_fr": "Plans de construction de modèles de croiseurs d'assaut lourds minmatar.", "description_it": "Blueprints of Minmatar heavy assault cruiser designs.", "description_ja": "ミンマター強襲型巡洋艦のブループリント。", "description_ko": "민마타 어썰트 크루저 블루프린트입니다.", "description_ru": "Чертежи проектов тяжелых ударных крейсеров разработки республики Минматар.", "description_zh": "米玛塔尔重型突击巡洋舰设计蓝图。", "descriptionID": 64669, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65743, "parentGroupID": 453 }, "458": { "description_de": "Blueprints von Schiffen der Angriffsklasse.", "description_en-us": "Blueprints of assault-class vessels.", "description_es": "Planos de naves de asalto.", "description_fr": "Plans de construction de vaisseaux d'assaut.", "description_it": "Blueprints of assault-class vessels.", "description_ja": "アサルト級艦船のブループリント。", "description_ko": "어썰트급 함선 블루프린트입니다.", "description_ru": "Чертежи ударных кораблей.", "description_zh": "突击舰等级舰只蓝图", "descriptionID": 64670, "hasTypes": 0, "iconID": 2703, "name_de": "Angriffsfregatten", "name_en-us": "Assault Frigates", "name_es": "Fragatas de asalto", "name_fr": "Frégates d'assaut", "name_it": "Assault Frigates", "name_ja": "強襲型フリゲート", "name_ko": "어썰트 프리깃", "name_ru": "Ударные фрегаты", "name_zh": "突击护卫舰", "nameID": 65744, "parentGroupID": 204 }, "459": { "description_de": "Blueprints von Amarr-Designs für Angriffsfregatten.", "description_en-us": "Blueprints of Amarr assault frigate designs.", "description_es": "Planos de diseños de fragatas de asalto amarrianas.", "description_fr": "Plans de construction de modèles de frégates d'assaut amarr.", "description_it": "Blueprints of Amarr assault frigate designs.", "description_ja": "アマー強襲型フリゲートのブループリント。", "description_ko": "아마르 어썰트 프리깃 블루프린트입니다.", "description_ru": "Чертежи проектов ударных фрегатов разработки империи Амарр.", "description_zh": "艾玛突击护卫舰设计蓝图。", "descriptionID": 64671, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65745, "parentGroupID": 458 }, "461": { "description_de": "Blueprints von Caldari-Designs für Angriffsfregatten.", "description_en-us": "Blueprints of Caldari assault frigate designs.", "description_es": "Planos de diseños de fragatas de asalto caldaris.", "description_fr": "Plans de construction de modèles de frégates d'assaut caldari.", "description_it": "Blueprints of Caldari assault frigate designs.", "description_ja": "カルダリ強襲型フリゲートのブループリント。", "description_ko": "칼다리 어썰트 프리깃 블루프린트입니다.", "description_ru": "Чертежи проектов ударных фрегатов разработки государства Калдари.", "description_zh": "加达里突击护卫舰设计蓝图。", "descriptionID": 64672, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65746, "parentGroupID": 458 }, "462": { "description_de": "Blueprints von Gallente-Designs für Angriffsfregatten.", "description_en-us": "Blueprints of Gallente assault frigate designs.", "description_es": "Planos de diseños de fragatas de asalto gallentes.", "description_fr": "Plans de construction de modèles de frégates d'assaut gallente.", "description_it": "Blueprints of Gallente assault frigate designs.", "description_ja": "ガレンテ強襲型フリゲートのブループリント。", "description_ko": "갈란테 어썰트 프리깃 블루프린트입니다.", "description_ru": "Чертежи проектов ударных фрегатов разработки федерации Галленте.", "description_zh": "盖伦特突击护卫舰设计蓝图。", "descriptionID": 64673, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65747, "parentGroupID": 458 }, "463": { "description_de": "Blueprints von Minmatar-Designs für Angriffsfregatten.", "description_en-us": "Blueprints of Minmatar assault frigate designs.", "description_es": "Planos de diseños de fragatas de asalto minmatarianas.", "description_fr": "Plans de construction de modèles de frégates d'assaut minmatar.", "description_it": "Blueprints of Minmatar assault frigate designs.", "description_ja": "ミンマター強襲型フリゲートのブループリント。", "description_ko": "민마타 어썰트 프리깃 블루프린트입니다", "description_ru": "Чертежи проектов ударных фрегатов разработки республики Минматар.", "description_zh": "米玛塔尔突击护卫舰设计蓝图。", "descriptionID": 64674, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65748, "parentGroupID": 458 }, "464": { "description_de": "Fregattenabwehr-Kanonenboote. Die Zwischenstufe zwischen Fregatte und Kreuzer.", "description_en-us": "Anti-frigate gunboats. The middle ground between a frigate and a cruiser.", "description_es": "Cañoneras antifragatas. A medio camino entre las fragatas y los cruceros.", "description_fr": "Canonnières anti-frégates. Le compromis entre la frégate et le croiseur.", "description_it": "Anti-frigate gunboats. The middle ground between a frigate and a cruiser.", "description_ja": "対フリゲートガンボート。フリゲートと巡洋艦の中間的存在。", "description_ko": "프리깃 대처에 효율적인 디스트로이어입니다. 프리깃과 크루저의 사이에 위치한 함급입니다.", "description_ru": "Боевые корабли, предназначенные для уничтожения фрегатов. Занимают нишу между фрегатами и крейсерами.", "description_zh": "专门对付护卫舰的炮舰,级别位于护卫舰和巡洋舰之间。", "descriptionID": 65255, "hasTypes": 0, "iconID": 1443, "name_de": "Standardzerstörer", "name_en-us": "Standard Destroyers", "name_es": "Destructores estándar", "name_fr": "Destroyers standards", "name_it": "Standard Destroyers", "name_ja": "標準型駆逐艦", "name_ko": "일반 디스트로이어", "name_ru": "Типовые", "name_zh": "标准驱逐舰", "nameID": 66329, "parentGroupID": 1372 }, "465": { "description_de": "Amarr-Zerstörer-Designs.", "description_en-us": "Amarr destroyer designs.", "description_es": "Diseños de destructores amarrianos.", "description_fr": "Modèles de destroyers amarr.", "description_it": "Amarr destroyer designs.", "description_ja": "アマー駆逐艦設計図。", "description_ko": "아마르의 디스트로이어입니다.", "description_ru": "Эсминцы разработки Империи Amarr.", "description_zh": "艾玛驱逐舰设计", "descriptionID": 64675, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65749, "parentGroupID": 464 }, "466": { "description_de": "Caldari-Zerstörer-Designs.", "description_en-us": "Caldari destroyer designs.", "description_es": "Diseños de destructores caldaris.", "description_fr": "Modèles de destroyers caldari.", "description_it": "Caldari destroyer designs.", "description_ja": "カルダリ駆逐艦設計図。", "description_ko": "칼다리의 디스트로이어입니다.", "description_ru": "Эсминцы разработки Государства Caldari.", "description_zh": "加达里驱逐舰设计", "descriptionID": 64676, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65750, "parentGroupID": 464 }, "467": { "description_de": "Gallente-Zerstörer-Designs.", "description_en-us": "Gallente destroyer designs.", "description_es": "Diseños de destructores gallentes.", "description_fr": "Modèles de destroyers gallente.", "description_it": "Gallente destroyer designs.", "description_ja": "ガレンテ駆逐艦設計図。", "description_ko": "갈란테의 디스트로이어입니다.", "description_ru": "Эсминцы разработки Федерации Gallente.", "description_zh": "盖伦特驱逐舰设计", "descriptionID": 64677, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65751, "parentGroupID": 464 }, "468": { "description_de": "Minmatar-Zerstörer-Designs.", "description_en-us": "Minmatar destroyer designs.", "description_es": "Diseños de destructores minmatarianos.", "description_fr": "Modèles de destroyers minmatar.", "description_it": "Minmatar destroyer designs.", "description_ja": "ミンマター駆逐艦設計図。", "description_ko": "민마타의 디스트로이어입니다.", "description_ru": "Эсминцы разработки Республики Minmatar.", "description_zh": "米玛塔尔驱逐舰设计", "descriptionID": 64678, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65752, "parentGroupID": 464 }, "469": { "description_de": "Eine Klasse mächtiger Schlachtschiffe, in der Mitte zwischen Kreuzern und Schlachtschiffen.", "description_en-us": "A class of powerful combat vessels midway between cruisers and battleships.", "description_es": "Una clase de poderosas naves de combate a medio camino entre los cruceros y los acorazados.", "description_fr": "Puissants vaisseaux de combat à mi-chemin entre les croiseurs et les cuirassés.", "description_it": "A class of powerful combat vessels midway between cruisers and battleships.", "description_ja": "巡洋艦と戦艦の中間に位置する強さの戦闘艦。", "description_ko": "크루저와 배틀쉽의 사이에 위치한 함급으로 강력한 전투 성능을 보유하고 있습니다.", "description_ru": "Это мощные боевые корабли, занимающие нишу между крейсерами и линкорами.", "description_zh": "巡洋舰和战列舰之间的一种强大战斗舰种。", "descriptionID": 65256, "hasTypes": 0, "iconID": 1443, "name_de": "Standardschlachtkreuzer", "name_en-us": "Standard Battlecruisers", "name_es": "Cruceros de combate estándar", "name_fr": "Croiseurs de bataille standards", "name_it": "Standard Battlecruisers", "name_ja": "標準型巡洋戦艦", "name_ko": "일반 배틀크루저", "name_ru": "Типовые", "name_zh": "标准战列巡洋舰", "nameID": 66330, "parentGroupID": 1374 }, "470": { "description_de": "Amarr-Schlachtkreuzer-Designs.", "description_en-us": "Amarr battlecruiser designs.", "description_es": "Diseños de cruceros de combate amarrianos.", "description_fr": "Modèles de croiseurs de bataille amarr.", "description_it": "Amarr battlecruiser designs.", "description_ja": "アマー巡洋戦艦設計図。", "description_ko": "아마르의 배틀크루저입니다.", "description_ru": "Линейные крейсеры разработки Империи Amarr.", "description_zh": "艾玛战列巡洋舰设计", "descriptionID": 64679, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65753, "parentGroupID": 469 }, "471": { "description_de": "Caldari-Schlachtkreuzer-Designs.", "description_en-us": "Caldari battlecruiser designs.", "description_es": "Diseños de cruceros de combate caldaris.", "description_fr": "Modèles de croiseurs de bataille caldari.", "description_it": "Caldari battlecruiser designs.", "description_ja": "カルダリ巡洋戦艦設計図。", "description_ko": "칼다리의 배틀크루저입니다.", "description_ru": "Линейные крейсеры разработки Государства Caldari.", "description_zh": "加达里战列巡洋舰设计", "descriptionID": 64680, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65754, "parentGroupID": 469 }, "472": { "description_de": "Gallente-Schlachtkreuzer-Designs.", "description_en-us": "Gallente battlecruiser designs.", "description_es": "Diseños de cruceros de combate gallentes.", "description_fr": "Modèles de croiseurs de bataille gallente.", "description_it": "Gallente battlecruiser designs.", "description_ja": "ガレンテ巡洋戦艦設計図。", "description_ko": "갈란테의 배틀크루저입니다.", "description_ru": "Линейные крейсеры разработки Федерации Gallente.", "description_zh": "盖伦特战列巡洋舰设计", "descriptionID": 64681, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65755, "parentGroupID": 469 }, "473": { "description_de": "Minmatar-Schlachtkreuzer-Designs.", "description_en-us": "Minmatar battlecruiser designs.", "description_es": "Diseños de cruceros de combate minmatarianos.", "description_fr": "Modèles de croiseurs de bataille minmatar.", "description_it": "Minmatar battlecruiser designs.", "description_ja": "ミンマター巡洋戦艦設計図.", "description_ko": "민마타의 배틀크루저입니다.", "description_ru": "Линейные крейсеры разработки Республики Minmatar.", "description_zh": "米玛塔尔战列巡洋舰设计", "descriptionID": 64682, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65756, "parentGroupID": 469 }, "475": { "description_de": "Die ständig laufende Maschinerie der Weltraumindustrie wird von unvorstellbaren Mengen an Materialien, Komponenten und Forschungsausrüstungen angetrieben, die laufend auf dem Markt für Kapselpiloten gehandelt werden.", "description_en-us": "The perpetual engine of space industry is driven by vast quantities of materials, components and research equipment that are constantly being traded on the capsuleer market", "description_es": "El perpetuo motor de la industria espacial se alimenta de ingentes cantidades de materiales, componentes y aparatos de investigación con los que se comercia constantemente en el mercado capsulista.", "description_fr": "La dynamique perpétuelle de l'industrie spatiale est régie par le commerce de vastes quantités de matières, de composants et de matériel de recherche se déroulant sur le marché dédié aux capsuliers", "description_it": "The perpetual engine of space industry is driven by vast quantities of materials, components and research equipment that are constantly being traded on the capsuleer market", "description_ja": "宇宙産業の繁栄は、カプセラのマーケットで活発にトレードされる鉱物、部品、研究装置などによって支えられています", "description_ko": "우주 산업의 원동력은 시장에서 거래되는 대량의 자원, 부품, 그리고 연구용 장비로부터 비롯됩니다.", "description_ru": "Вечный двигатель космической промышленности работает на огромном количестве сырья, компонентов и исследовательского оборудования — всё это можно приобрести у других капсулёров", "description_zh": "太空工业体系永不停歇的发动机是由数不尽的材料、组件和研究设备推动的,这些东西不断地在市场中交易流通", "descriptionID": 64683, "hasTypes": 0, "iconID": 1436, "name_de": "Fertigung & Forschung", "name_en-us": "Manufacture & Research", "name_es": "Fabricación e investigación", "name_fr": "Fabrication et recherche", "name_it": "Manufacture & Research", "name_ja": "生産と研究", "name_ko": "제조 및 연구", "name_ru": "Промышленные комплектующие", "name_zh": "制造和研究", "nameID": 65757 }, "477": { "description_de": "Kapselpiloten haben viele Möglichkeiten wenn sie sich dafür entscheiden, ein Heim im Weltraum aufzuschlagen, von persönlichen Strukturen bis hin zu von Kapselpiloten kontrollierten Außenposten.", "description_en-us": "Capsuleers have many options when they decide to set up a home in space, from personal deployables to capsuleer-controlled outpost stations", "description_es": "Existen numerosas opciones a la hora de establecer una base en el espacio, desde desplegables personales hasta puestos avanzados controlados por capsulistas.", "description_fr": "Lorsqu'ils veulent s'installer quelque part, les capsuliers disposent de plusieurs options : de la station personnelle déployable dans l'espace jusqu'à l'avant-poste contrôlé par des capsuliers", "description_it": "Capsuleers have many options when they decide to set up a home in space, from personal deployables to capsuleer-controlled outpost stations", "description_ja": "カプセラは宙域に拠点を構えることにより、自分用の設備を配置したり、アウトポストステーションを統制したりと、多くのことができるようになります", "description_ko": "캡슐리어 구조물은 개인용 거주 모듈, 전초기지, 그리고 정거장에 이르기까지 다양한 형태로 판매됩니다.", "description_ru": "Пилоты вольны выбирать себе пристанище на просторах космоса: от малых автономных сооружений до форпостов, находящихся под управлением капсулёров.", "description_zh": "飞行员可以有多种方式在太空中建造自己的“家园”,个人可部署建筑和飞行员掌控的空间站都可以。", "descriptionID": 65220, "hasTypes": 0, "iconID": 2222, "name_de": "Strukturen", "name_en-us": "Structures", "name_es": "Estructuras", "name_fr": "Structures", "name_it": "Structures", "name_ja": "建造物", "name_ko": "구조물", "name_ru": "Cооружения", "name_zh": "建筑", "nameID": 66294 }, "478": { "description_de": "Das Rückgrat der Starbase.", "description_en-us": "The starbase's backbone.", "description_es": "El pilar fundamental de la base estelar.", "description_fr": "La colonne vertébrale de la base stellaire.", "description_it": "The starbase's backbone.", "description_ja": "スターベースの屋台骨。", "description_ko": "스타베이스의 중추 역할을 하고 있는 시설입니다.", "description_ru": "Основа звездной базы.", "description_zh": "母星的脊梁。", "descriptionID": 65221, "hasTypes": 1, "iconID": 2222, "name_de": "Kontrolltürme", "name_en-us": "Control Towers", "name_es": "Torres de control", "name_fr": "Tours de contrôle", "name_it": "Control Towers", "name_ja": "コントロールタワー", "name_ko": "관제타워", "name_ru": "Башни управления ПОСами", "name_zh": "控制塔", "nameID": 66295, "parentGroupID": 1285 }, "479": { "description_de": "Stationäre Raketenbatterien für die Verteidigung von Starbases.", "description_en-us": "Stationary missile batteries for starbase defense.", "description_es": "Baterías de misiles estacionarias para la defensa de bases estelares.", "description_fr": "Batteries de missiles stationnaires destinées à la défense des bases stellaires.", "description_it": "Stationary missile batteries for starbase defense.", "description_ja": "スターベース防衛のための固定型ミサイルバッテリー。", "description_ko": "고정형 미사일 포대는 스타베이스 방어 시설로 사용됩니다.", "description_ru": "Стационарные ракетные батареи для защиты звездных баз.", "description_zh": "用于母星防御的固定导弹炮塔。", "descriptionID": 65222, "hasTypes": 1, "iconID": 2222, "name_de": "Lenkwaffenbatterien", "name_en-us": "Missile Batteries", "name_es": "Baterías de misiles", "name_fr": "Batteries de missiles", "name_it": "Missile Batteries", "name_ja": "ミサイル兵器", "name_ko": "미사일 포탑", "name_ru": "Ракетные батареи", "name_zh": "导弹炮塔", "nameID": 66296, "parentGroupID": 480 }, "480": { "description_de": "Stationäre Waffenbatterien für die Verteidigung von Starbases.", "description_en-us": "Stationary weapon batteries for starbase defense.", "description_es": "Baterías de armas estáticas para la defensa de bases estelares.", "description_fr": "Batteries d'armes stationnaires destinées à la défense des bases stellaires.", "description_it": "Stationary weapon batteries for starbase defense.", "description_ja": "スターベース防衛のための固定型タレット兵器。", "description_ko": "스타베이스 방어에 사용되는 고정 포탑입니다.", "description_ru": "Стационарные батареи, применяемые для обороны ПОСов.", "description_zh": "用于母星防御的固定武器炮塔。", "descriptionID": 65223, "hasTypes": 0, "iconID": 2222, "name_de": "Waffenbatterien", "name_en-us": "Weapon Batteries", "name_es": "Baterías de armas", "name_fr": "Batteries d'arme", "name_it": "Weapon Batteries", "name_ja": "兵器砲台", "name_ko": "포탑", "name_ru": "Оборонительные батареи", "name_zh": "武器炮塔", "nameID": 66297, "parentGroupID": 1285 }, "481": { "description_de": "Batterien, die elektronische Gegenmaßnahmen für die Starbase-Verteidigung ermöglichen.", "description_en-us": "Batteries providing electronic countermeasures for starbase defense.", "description_es": "Las baterías proporcionan contramedidas electrónicas para la defensa de bases estelares.", "description_fr": "Batteries fournissant des contre-mesures électroniques pour la défense des bases stellaires.", "description_it": "Batteries providing electronic countermeasures for starbase defense.", "description_ja": "スターベース防衛のための電子妨害機器を備えたバッテリー。", "description_ko": "스타베이스 방어에 사용되는 ECM 전력 공급 장치입니다.", "description_ru": "Батареи электронного противодействия для звездных баз.", "description_zh": "电子战炮塔为母星防御提供电子防御力量。", "descriptionID": 65224, "hasTypes": 1, "iconID": 2222, "name_de": "Batterien zur elektronischen Kriegsführung", "name_en-us": "Electronic Warfare Batteries", "name_es": "Baterías de guerra electrónica", "name_fr": "Batteries de guerre électronique", "name_it": "Electronic Warfare Batteries", "name_ja": "電子戦兵器", "name_ko": "전자전 포탑", "name_ru": "Батареи РЭБ", "name_zh": "电子战炮塔", "nameID": 66298, "parentGroupID": 480 }, "482": { "description_de": "Verankerbare Aufbereitungsanlagen.", "description_en-us": "Anchorable reprocessing structures.", "description_es": "Estructuras de reprocesamiento anclables.", "description_fr": "Structures de retraitement ancrables.", "description_it": "Anchorable reprocessing structures.", "description_ja": "係留可能な再処理建造物。", "description_ko": "고정형 정제시설입니다", "description_ru": "Передвижные блоки для переработки сырья.", "description_zh": "可锚定的提炼建筑。", "descriptionID": 65225, "hasTypes": 1, "iconID": 2222, "name_de": "Aufbereitungsanlagen", "name_en-us": "Reprocessing Arrays", "name_es": "Matrices de reprocesamiento", "name_fr": "Modules de retraitement", "name_it": "Reprocessing Arrays", "name_ja": "再処理施設", "name_ko": "정제시설", "name_ru": "Цеха переработки", "name_zh": "提炼阵列", "nameID": 66299, "parentGroupID": 1285 }, "483": { "description_de": "Für die Aufbewahrung oder Versorgung von Ressourcen oder die Regulierung des Materialflusses in industriellen Prozessen.", "description_en-us": "For storing or providing resources, or regulating material flow in industrial processes.", "description_es": "Para almacenar o proporcionar recursos, o bien regular el flujo de materiales en procesos industriales.", "description_fr": "Pour stocker et distribuer des ressources, ou bien pour réguler le flux de matériaux dans les processus industriels.", "description_it": "For storing or providing resources, or regulating material flow in industrial processes.", "description_ja": "資源の保管や供給、生産過程における資源フローの調節を行う。", "description_ko": "자원 보관에 사용되는 시설로 산업 활동의 물자흐름을 조절합니다.", "description_ru": "Используются для хранения ресурсов или регулирования потока материалов в промышленных процессах.", "description_zh": "用于存储或提供资源,或调节工业生产过程中的物料流。", "descriptionID": 65226, "hasTypes": 1, "iconID": 2222, "name_de": "Silos", "name_en-us": "Silos", "name_es": "Depósitos", "name_fr": "Silos", "name_it": "Silos", "name_ja": "貯蔵庫", "name_ko": "사일로", "name_ru": "Хранилища", "name_zh": "储藏库", "nameID": 66300, "parentGroupID": 1285 }, "484": { "description_de": "Mobile Hangar- und Ausrüstungsstrukturen.", "description_en-us": "Mobile hangar and fitting structures.", "description_es": "Estructuras móviles de equipamiento y hangar.", "description_fr": "Structures mobiles de type hangar et montage.", "description_it": "Mobile hangar and fitting structures.", "description_ja": "移動式のハンガーと整備設備。", "description_ko": "이동식 격납고 및 피팅 시설이 갖추어져 있습니다.", "description_ru": "Передвижные ангары для хранения и переоснащения кораблей.", "description_zh": "移动机库与装配结构", "descriptionID": 65227, "hasTypes": 1, "iconID": 2222, "name_de": "Schiffwartungsanlagen", "name_en-us": "Ship Maintenance Arrays", "name_es": "Dársenas de mantenimiento de naves", "name_fr": "Module de maintenance de vaisseaux", "name_it": "Ship Maintenance Arrays", "name_ja": "船舶調整施設", "name_ko": "함선 정비 시설", "name_ru": "Ангарные блоки", "name_zh": "舰船维护阵列", "nameID": 66301, "parentGroupID": 1285 }, "485": { "description_de": "Verankerbare Strukturen für die Verstärkung der Widerstandsfähigkeit des Schilds von einem Kontrollturm.", "description_en-us": "Anchorable structures for the boosting of a control tower's shield resistances.", "description_es": "Estructuras anclables para potenciar las resistencias de escudo de una torre de control.", "description_fr": "Structures ancrables permettant d'améliorer la résistance des boucliers d'une tour de contrôle.", "description_it": "Anchorable structures for the boosting of a control tower's shield resistances.", "description_ja": "コントロールタワーのシールドレジスタンスを高める固定可能な建造物。", "description_ko": "관제타워의 실드 저항력을 향상하는 고정 가능 구조물입니다.", "description_ru": "Передвижные установки, повышающие сопротивляемость силового щита башни управления базой различным видам ущерба.", "description_zh": "可以部署并锚定在太空中的设施,用以增强控制塔护盾抵抗能力。", "descriptionID": 65228, "hasTypes": 1, "iconID": 2222, "name_de": "Schildhärtungsanlagen", "name_en-us": "Shield Hardening Arrays", "name_es": "Plataformas endurecedoras de escudo", "name_fr": "Modules de renforcement de bouclier", "name_it": "Shield Hardening Arrays", "name_ja": "シールドハードニング施設", "name_ko": "실드 강화시설", "name_ru": "Блоки укрепления щитов", "name_zh": "护盾强化阵列", "nameID": 66302, "parentGroupID": 1285 }, "488": { "description_de": "Stationierbare Anlagen, die zum Einsammeln von Mineralien von Monden geschaffen wurden.", "description_en-us": "Deployable arrays designed to gather minerals from moons.", "description_es": "Estructuras desplegables diseñadas para obtener minerales de las lunas.", "description_fr": "Modules déployables conçus pour collecter des minerais sur les lunes.", "description_it": "Deployable arrays designed to gather minerals from moons.", "description_ja": "衛星から無機物を回収するために開発された配置可能施設。", "description_ko": "위성에서 미네랄을 추출하기 위해 제작된 전개 가능한 시설입니다.", "description_ru": "Стационарные комплексы для добычи минералов с поверхности лун.", "description_zh": "可以释放并固定在太空中的卫星开采阵列。", "descriptionID": 65229, "hasTypes": 1, "iconID": 2222, "name_de": "Mondabbauanlagen", "name_en-us": "Moon Harvesting Arrays", "name_es": "Plataformas recolectoras lunares", "name_fr": "Modules de collecte lunaire", "name_it": "Moon Harvesting Arrays", "name_ja": "衛星採掘施設", "name_ko": "위성 채굴 시설", "name_ru": "Блоки добычи со спутников", "name_zh": "卫星开采阵列", "nameID": 66303, "parentGroupID": 1285 }, "490": { "description_de": "Stationierbare Strukturen, in denen chemische Prozesse stattfinden.", "description_en-us": "Deployable structures where chemical processes take place.", "description_es": "Estructuras desplegables en las que se producen procesos químicos.", "description_fr": "Structures déployables qui abritent des processus chimiques.", "description_it": "Deployable structures where chemical processes take place.", "description_ja": "内部で化学反応を発生させるための、ディプロイ可能な建造物。", "description_ko": "전개형 화학시설입니다.", "description_ru": "Передвижные сооружения, используемые для проведения химических реакций.", "description_zh": "可进行化学反应的地方", "descriptionID": 65230, "hasTypes": 1, "iconID": 2222, "name_de": "Reaktoren", "name_en-us": "Reactors", "name_es": "Reactores", "name_fr": "Réacteurs", "name_it": "Reactors", "name_ja": "リアクター", "name_ko": "반응로", "name_ru": "Химические реакторы", "name_zh": "反应堆", "nameID": 66304, "parentGroupID": 1285 }, "491": { "description_de": "Illegale Substanzen, die die Hirnchemie verändern - zum Guten oder Schlechten. Mit Vorsicht transportieren", "description_en-us": "Illegal substances that alter brain chemistry, for good or ill. Transport with caution", "description_es": "Sustancias ilegales que alteran la química cerebral, para bien o para mal. Requieren transportarlas con precaución.", "description_fr": "Substances illégales qui altèrent le fonctionnement chimique du cerveau, en bien ou en mal. Transporter avec précaution", "description_it": "Illegal substances that alter brain chemistry, for good or ill. Transport with caution", "description_ja": "脳の化学的な性質を良い方向へも悪い方向へも変えてしまう違法な物質。輸送には注意が必要", "description_ko": "뇌내 신경망을 재배열하기 위해 사용되는 불법 약물로 수송 시 상당한 주의가 요망됩니다.", "description_ru": "Запрещённые препараты, оказывающие влияние на мозг пилота в хороших или плохих целях. Перевозить с осторожностью", "description_zh": "可以改变大脑化学结构的非法物品。请小心运输", "descriptionID": 64685, "hasTypes": 1, "iconID": 1194, "name_de": "Narkotika", "name_en-us": "Narcotics", "name_es": "Narcóticos", "name_fr": "Stupéfiants", "name_it": "Narcotics", "name_ja": "麻薬", "name_ko": "약물 및 약품", "name_ru": "Наркотики", "name_zh": "药品", "nameID": 65759, "parentGroupID": 19 }, "492": { "description_de": "Produkte die bei der materialistischen Öffentlichkeit sehr gefragt sind. Können gekauft und mit Profit verkauft werden", "description_en-us": "Products in high demand with the materialistic public. Can be bought and sold for profit", "description_es": "Productos de enorme demanda entre el público materialista. Se pueden comprar y vender para ganar dinero.", "description_fr": "Produits en forte demande auprès d'un public matérialiste. Peuvent être achetés ou vendus à profit", "description_it": "Products in high demand with the materialistic public. Can be bought and sold for profit", "description_ja": "物を求めてやまない社会において、需要の高い製品。売買を通して利益を得られる", "description_ko": "물질만능 사회에서 높은 수요를 지닌 물품들로 활발한 판매가 이루어집니다.", "description_ru": "Товары, пользующиеся большим спросом у покупателей. Их можно покупать и продавать ради выгоды", "description_zh": "社会需求量很大的物品,可以用来卖钱", "descriptionID": 64686, "hasTypes": 1, "iconID": 1182, "name_de": "Produkte für Konsumenten", "name_en-us": "Consumer Products", "name_es": "Productos de consumo", "name_fr": "Produits de grande consommation", "name_it": "Consumer Products", "name_ja": "消耗品", "name_ko": "생산품", "name_ru": "Товары общего потребления", "name_zh": "消费品", "nameID": 65760, "parentGroupID": 19 }, "494": { "description_de": "Trampelige, gefräßige Kolosse, die speziell für das Einsammeln von Erzen geschaffen wurden.", "description_en-us": "Lumbering, voracious hulks, expressly created for ore accumulation.", "description_es": "Mastodontes voraces creados expresamente para acumular menas.", "description_fr": "Mastodontes voraces spécialement conçus pour accumuler du minerai.", "description_it": "Lumbering, voracious hulks, expressly created for ore accumulation.", "description_ja": "鉱石を集める目的で開発されたため、大きな船体を持つ。", "description_ko": "육중한 덩치로 인해 느리지만 거대한 적재량을 지녀 대규모 광물 수송에 적합한 함선입니다.", "description_ru": "Неуклюжие, прожорливые корабли, созданные исключительно для добычи руды.", "description_zh": "体型笨重,载重能力强大,专门用于积累矿石。", "descriptionID": 65269, "hasTypes": 1, "iconID": 1443, "name_de": "Bergbaubarkassen", "name_en-us": "Mining Barges", "name_es": "Gabarras mineras", "name_fr": "Barges d'extraction minière", "name_it": "Mining Barges", "name_ja": "採掘艦", "name_ko": "채광선", "name_ru": "Буровые корабли", "name_zh": "采矿驳船", "nameID": 66343, "parentGroupID": 1384 }, "496": { "description_de": "Blueprints von Schiffen der Bergbaubarkassen-Klasse.", "description_en-us": "Blueprints of mining barge-class vessels.", "description_es": "Planos de gabarras mineras.", "description_fr": "Plans de construction de barges d'extraction minière.", "description_it": "Blueprints of mining barge-class vessels.", "description_ja": "採掘艦級艦船のブループリント。", "description_ko": "채광선 블루프린트입니다.", "description_ru": "Чертежи шахтерских барж.", "description_zh": "采矿驳船蓝图", "descriptionID": 64689, "hasTypes": 0, "iconID": 2703, "name_de": "Bergbaubarkassen", "name_en-us": "Mining Barges", "name_es": "Gabarras mineras", "name_fr": "Barges d'extraction minière", "name_it": "Mining Barges", "name_ja": "採掘艦", "name_ko": "채광선", "name_ru": "Буровые корабли", "name_zh": "采矿驳船", "nameID": 65763, "parentGroupID": 204 }, "497": { "description_de": "Blueprints von ORE-Bergbaubarkassen-Designs.", "description_en-us": "Blueprints of ORE mining barge designs.", "description_es": "Planos de diseños de gabarras mineras de ORE.", "description_fr": "Plans de construction de modèles de barges d'extraction minière ORE.", "description_it": "Blueprints of ORE mining barge designs.", "description_ja": "ORE採掘艦設計図のブループリント。", "description_ko": "ORE 채광선 블루프린트입니다.", "description_ru": "Чертежи шахтерских барж разработки синдиката ORE.", "description_zh": "联合矿业采矿驳船的设计蓝图。", "descriptionID": 64690, "hasTypes": 1, "iconID": 2703, "name_de": "Erze", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 65764, "parentGroupID": 496 }, "499": { "description_de": "Rohstoffe für die Produktion von Tech II-Schiffen und -Ausrüstung.", "description_en-us": "Materials used for Tech II vessel and equipment production.", "description_es": "Materiales usados para la fabricación de naves y equipos T2.", "description_fr": "Matériaux utilisés pour la production de vaisseaux et d'équipement de niveau technologique II.", "description_it": "Materials used for Tech II vessel and equipment production.", "description_ja": "T2艦と装備の生産に用いられる資源。", "description_ko": "테크 II 함선 및 장비 제작에 사용되는 위성 자원입니다.", "description_ru": "Материалы, используемые для производства кораблей и оборудования категории Tech II.", "description_zh": "用于生产二级科技的舰船和装备的材料。", "descriptionID": 64691, "hasTypes": 1, "iconID": 2679, "name_de": "Fortschrittliche Materialien", "name_en-us": "Advanced Moon Materials", "name_es": "Materiales lunares avanzados", "name_fr": "Matières lunaires avancées", "name_it": "Advanced Moon Materials", "name_ja": "衛星2次加工品", "name_ko": "상급 위성 자원", "name_ru": "Технологичные лунные материалы", "name_zh": "高级卫星材料", "nameID": 65765, "parentGroupID": 1034 }, "500": { "description_de": "Verbindungen, die in komplexen Reaktionen verwendet werden.", "description_en-us": "Compounds used in complex reactions.", "description_es": "Compuestos usados en procesos reactivos complejos.", "description_fr": "Composés utilisés pour des réactions complexes.", "description_it": "Compounds used in complex reactions.", "description_ja": "複合反応で使用される化合物。", "description_ko": "복합 합성에 사용되는 분자 반응식입니다.", "description_ru": "Компоненты, использующиеся при проведении сложных реакций.", "description_zh": "在复杂化学反应中使用的化合物。", "descriptionID": 64692, "hasTypes": 1, "iconID": 2664, "name_de": "Weiterverarbeitete Materialien", "name_en-us": "Processed Moon Materials", "name_es": "Materiales lunares procesados", "name_fr": "Matières lunaires traitées", "name_it": "Processed Moon Materials", "name_ja": "衛星1次加工品", "name_ko": "정제된 위성 자원", "name_ru": "Обработанные лунные материалы", "name_zh": "加工过的卫星材料", "nameID": 65766, "parentGroupID": 1034 }, "501": { "description_de": "Reine Elemente und andere Rohmaterialien der Natur.", "description_en-us": "Pure elements and other raw materials from nature.", "description_es": "Elementos puros y otras materias primas de la naturaleza.", "description_fr": "Éléments purs et matières premières naturels.", "description_it": "Pure elements and other raw materials from nature.", "description_ja": "自然界から採取した純粋な元素やその他の原料。", "description_ko": "자연에서 생성되는 물질입니다.", "description_ru": "Чистые элементы и другие природные сырьевые материалы.", "description_zh": "自然界中获取的元素和其他原始材料。", "descriptionID": 64693, "hasTypes": 1, "iconID": 2668, "name_de": "Rohmaterialien", "name_en-us": "Raw Moon Materials", "name_es": "Materias primas lunares", "name_fr": "Matières lunaires brutes", "name_it": "Raw Moon Materials", "name_ja": "衛星原料", "name_ko": "위성 자원 - 원재료", "name_ru": "Необработанные лунные материалы", "name_zh": "卫星原材料", "nameID": 65767, "parentGroupID": 1034 }, "502": { "description_de": "Wird von Dreadnought-Geschützen und Verteidigungsanlagen von Stationen abgefeuert.", "description_en-us": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_ja": "攻城艦級銃砲および常備防衛軍システムから発射される。", "description_ko": "드레드노트급 함포 및 고정 방어 시스템에서 사용합니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 64694, "hasTypes": 1, "iconID": 1004, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65768, "parentGroupID": 845 }, "503": { "description_de": "Zur Verwendung mit Dreadnought-Lasern und Verteidigungsanlagen von Stationen.", "description_en-us": "For use with dreadnought-sized lasers and stationary defense systems.", "description_es": "Para usarlos con láseres de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des dreadnoughts et sur les systèmes de défense stationnaires.", "description_it": "For use with dreadnought-sized lasers and stationary defense systems.", "description_ja": "攻城艦級レーザーおよび常備防衛システムで使用される。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 레이저의 프리퀀시 크리스탈입니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级激光武器或者固定防御系统进行发射。", "descriptionID": 64695, "hasTypes": 1, "iconID": 1142, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65769, "parentGroupID": 851 }, "504": { "description_de": "Wird von Dreadnought-Geschützen und Verteidigungsanlagen von Stationen abgefeuert.", "description_en-us": "Fired by dreadnought-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des dreadnoughts et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnought-sized guns and stationary defense systems.", "description_ja": "攻城艦級銃砲および常備防衛軍システムから発射される。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 함포의 탄약입니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 64696, "hasTypes": 1, "iconID": 1047, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65770, "parentGroupID": 848 }, "505": { "description_de": "Die stärksten Torpedos, die man finden kann.", "description_en-us": "The most powerful missiles to be found anywhere.", "description_es": "Los misiles más potentes que existen.", "description_fr": "Les missiles les plus puissants disponibles sur le marché.", "description_it": "The most powerful missiles to be found anywhere.", "description_ja": "現存する最強のミサイル。", "description_ko": "뉴에덴에서 가장 강력한 토피도입니다.", "description_ru": "Это самые мощные торпеды из существующих.", "description_zh": "在宇宙中能够找到的最强威力的导弹。", "descriptionID": 65196, "hasTypes": 0, "iconID": 1346, "name_de": "XL Torpedos", "name_en-us": "XL Torpedoes", "name_es": "Torpedos XL", "name_fr": "Torpilles XL", "name_it": "XL Torpedoes", "name_ja": "XLトルピード", "name_ko": "XL 토피도", "name_ru": "Сверхбольшие торпеды", "name_zh": "超大型鱼雷", "nameID": 66270, "parentGroupID": 114 }, "506": { "description_de": "Kommunale Hangar-Strukturen mit divisionalen Abteilungen.", "description_en-us": "Communal hangar structures with divisional compartments.", "description_es": "Estructuras de hangares comunitarios con subdivisiones.", "description_fr": "Hangar commun divisé en plusieurs compartiments.", "description_it": "Communal hangar structures with divisional compartments.", "description_ja": "部門ごとに区画分けされた共有のハンガー建造物。", "description_ko": "구획이 나뉘어진 공용 격납고입니다.", "description_ru": "Общий ангар с разделением по отсекам.", "description_zh": "公共的机库设施,设计有按部门分隔的内部结构。", "descriptionID": 65231, "hasTypes": 1, "iconID": 2222, "name_de": "Corporation-Hangaranlage", "name_en-us": "Corporate Hangar Array", "name_es": "Dársenas de hangares corporativos", "name_fr": "Module du hangar corporatif", "name_it": "Corporate Hangar Array", "name_ja": "コーポハンガー施設", "name_ko": "코퍼레이션 공용창고", "name_ru": "Внешние корпоративные ангары", "name_zh": "军团机库阵列", "nameID": 66305, "parentGroupID": 1285 }, "512": { "description_de": "Unterarten von Arkonor-Erzen.", "description_en-us": "Sub-types of arkonor ore.", "description_es": "Subtipos de la mena arkonor.", "description_fr": "Sous-catégories du minerai arkonor.", "description_it": "Sub-types of arkonor ore.", "description_ja": "アーコナー鉱石の亜種。", "description_ko": "다양한 부류의 아르카노르 광석입니다.", "description_ru": "Подвиды руды Arkonor.", "description_zh": "艾克诺岩的各分支种类。", "descriptionID": 64700, "hasTypes": 1, "iconID": 1277, "name_de": "Arkonor", "name_en-us": "Arkonor", "name_es": "Arkonor", "name_fr": "Arkonor", "name_it": "Arkonor", "name_ja": "アーコナー", "name_ko": "아르카노르", "name_ru": "Арконор", "name_zh": "艾克诺岩", "nameID": 65774, "parentGroupID": 54 }, "514": { "description_de": "Unterarten von Bistot-Erzen.", "description_en-us": "Sub-types of bistot ore.", "description_es": "Subtipos de la mena bistotina.", "description_fr": "Sous-catégories du minerai bistot.", "description_it": "Sub-types of bistot ore.", "description_ja": "ビストット鉱石の亜種。", "description_ko": "다양한 부류의 비스토트 광석입니다.", "description_ru": "Подвиды руды Bistot", "description_zh": "双多特石的各分支种类。", "descriptionID": 64701, "hasTypes": 1, "iconID": 1273, "name_de": "Bistot", "name_en-us": "Bistot", "name_es": "Bistotina", "name_fr": "Bistot", "name_it": "Bistot", "name_ja": "ビストット", "name_ko": "비스토트", "name_ru": "Бистот", "name_zh": "双多特石", "nameID": 65775, "parentGroupID": 54 }, "515": { "description_de": "Unterarten von Pyroxeres-Erzen.", "description_en-us": "Sub-types of Pyroxeres ore.", "description_es": "Subtipos de la mena piroxeno.", "description_fr": "Sous-catégories du minerai pyroxeres.", "description_it": "Sub-types of Pyroxeres ore.", "description_ja": "パイロゼリーズ鉱石の亜種。", "description_ko": "다양한 부류의 파이로제레스 광석입니다.", "description_ru": "Подвиды руды Pyroxeres.", "description_zh": "干焦岩的分支。", "descriptionID": 64702, "hasTypes": 1, "iconID": 231, "name_de": "Pyroxeres", "name_en-us": "Pyroxeres", "name_es": "Piroxeno", "name_fr": "Pyroxeres", "name_it": "Pyroxeres", "name_ja": "パイロゼリーズ", "name_ko": "파이로제레스", "name_ru": "Пироксер", "name_zh": "干焦岩", "nameID": 65776, "parentGroupID": 54 }, "516": { "description_de": "Unterarten von Plagioclase-Erz.", "description_en-us": "Sub-types of plagioclase ore.", "description_es": "Subtipos de la mena plagioclasa.", "description_fr": "Sous-catégories du minerai plagioclase.", "description_it": "Sub-types of plagioclase ore.", "description_ja": "プラジオクレイス鉱石の亜種。", "description_ko": "다양한 부류의 플레지오클레이스 광석입니다.", "description_ru": "Подвиды руды Plagioclase.", "description_zh": "斜长岩的分支。", "descriptionID": 64703, "hasTypes": 1, "iconID": 230, "name_de": "Plagioclase", "name_en-us": "Plagioclase", "name_es": "Plagioclasa", "name_fr": "Plagioclase", "name_it": "Plagioclase", "name_ja": "プラジオクレイス", "name_ko": "플레지오클레이스", "name_ru": "Плагиоклаз", "name_zh": "斜长岩", "nameID": 65777, "parentGroupID": 54 }, "517": { "description_de": "Unterarten von Spodumain-Erzen.", "description_en-us": "Sub-types of spodumain ore.", "description_es": "Subtipos de la mena espodumain.", "description_fr": "Sous-catégories du minerai spodumain.", "description_it": "Sub-types of spodumain ore.", "description_ja": "スポンデュメイン鉱石の亜種。", "description_ko": "다양한 부류의 스포듀마인 광석입니다.", "description_ru": "Подвиды руды Spodumain.", "description_zh": "灰岩的分支。", "descriptionID": 64704, "hasTypes": 1, "iconID": 1274, "name_de": "Spodumain", "name_en-us": "Spodumain", "name_es": "Espodumain", "name_fr": "Spodumain", "name_it": "Spodumain", "name_ja": "スポデュメイン", "name_ko": "스포듀마인", "name_ru": "Сподумейн", "name_zh": "灰岩", "nameID": 65778, "parentGroupID": 54 }, "518": { "description_de": "Unterarten von Veldspar-Erzen.", "description_en-us": "Sub-types of veldspar ore.", "description_es": "Subtipos de la mena veldspar.", "description_fr": "Sous-catégories du minerai veldspar.", "description_it": "Sub-types of veldspar ore.", "description_ja": "ベルドスパー鉱石の亜種。", "description_ko": "다양한 부류의 벨드스파 광석입니다.", "description_ru": "Подвиды руды Veldspar.", "description_zh": "凡晶石的分支。", "descriptionID": 64705, "hasTypes": 1, "iconID": 232, "name_de": "Veldspar", "name_en-us": "Veldspar", "name_es": "Veldspar", "name_fr": "Veldspar", "name_it": "Veldspar", "name_ja": "ベルドスパー", "name_ko": "벨드스파", "name_ru": "Велдспар", "name_zh": "凡晶石", "nameID": 65779, "parentGroupID": 54 }, "519": { "description_de": "Unterarten von Scordite-Erz.", "description_en-us": "Sub-types of scordite ore.", "description_es": "Subtipos de la mena escordita.", "description_fr": "Sous-catégories du minerai scordite.", "description_it": "Sub-types of scordite ore.", "description_ja": "スコダイト鉱石の亜種。", "description_ko": "다양한 부류의 스코다이트 광석입니다.", "description_ru": "Подвиды руды Scordite.", "description_zh": "灼烧岩的分支。", "descriptionID": 64706, "hasTypes": 1, "iconID": 1356, "name_de": "Scordite", "name_en-us": "Scordite", "name_es": "Escordita", "name_fr": "Scordite", "name_it": "Scordite", "name_ja": "スコダイト", "name_ko": "스코다이트", "name_ru": "Скордит", "name_zh": "灼烧岩", "nameID": 65780, "parentGroupID": 54 }, "521": { "description_de": "Unterarten von Crokite-Erz.", "description_en-us": "Sub-types of crokite ore.", "description_es": "Subtipos de la mena crokitio.", "description_fr": "Sous-catégories du minerai crokite.", "description_it": "Sub-types of crokite ore.", "description_ja": "クロカイト鉱石の亜種。", "description_ko": "다양한 부류의 크로카이트 광석입니다.", "description_ru": "Подвиды руды Crokite.", "description_zh": "克洛基石的分支。", "descriptionID": 64707, "hasTypes": 1, "iconID": 1272, "name_de": "Crokite", "name_en-us": "Crokite", "name_es": "Crokitio", "name_fr": "Crokite", "name_it": "Crokite", "name_ja": "クロカイト", "name_ko": "크로카이트", "name_ru": "Крокит", "name_zh": "克洛基石", "nameID": 65781, "parentGroupID": 54 }, "522": { "description_de": "Unterarten von Dark Ochre-Erzen.", "description_en-us": "Sub-types of dark ochre ore.", "description_es": "Subtipos de la mena ocre oscuro.", "description_fr": "Sous-catégories du minerai ochre foncé.", "description_it": "Sub-types of dark ochre ore.", "description_ja": "ダークオークル鉱石の亜種。", "description_ko": "다양한 부류의 다크 오커 광석입니다.", "description_ru": "Подвиды руды Dark Ochre.", "description_zh": "黑赭石的分支。", "descriptionID": 64708, "hasTypes": 1, "iconID": 1275, "name_de": "Dark Ochre", "name_en-us": "Dark Ochre", "name_es": "Ocre oscuro", "name_fr": "Ochre foncé", "name_it": "Dark Ochre", "name_ja": "ダークオークル", "name_ko": "다크 오커", "name_ru": "Тёмная охра", "name_zh": "黑赭石", "nameID": 65782, "parentGroupID": 54 }, "523": { "description_de": "Unterarten von Kernite-Erzen.", "description_en-us": "Sub-types of kernite ore.", "description_es": "Subtipos de la mena kernita.", "description_fr": "Sous-catégories du minerai kernite.", "description_it": "Sub-types of kernite ore.", "description_ja": "ケルナイト鉱石の亜種。", "description_ko": "다양한 부류의 커나이트 광석입니다.", "description_ru": "Подвиды руды Kernite.", "description_zh": "水硼砂的分支。", "descriptionID": 64709, "hasTypes": 1, "iconID": 1270, "name_de": "Kernite", "name_en-us": "Kernite", "name_es": "Kernita", "name_fr": "Kernite", "name_it": "Kernite", "name_ja": "ケルナイト", "name_ko": "커나이트", "name_ru": "Кернит", "name_zh": "水硼砂", "nameID": 65783, "parentGroupID": 54 }, "525": { "description_de": "Unterarten von Gneiss-Erzen.", "description_en-us": "Sub-types of gneiss ore.", "description_es": "Subtipos de la mena gneiss.", "description_fr": "Sous-catégories du minerai gneiss.", "description_it": "Sub-types of gneiss ore.", "description_ja": "ナエス鉱石の亜種。", "description_ko": "다양한 부류의 니스 광석입니다.", "description_ru": "Подвиды руды Gneiss.", "description_zh": "片麻岩的分支。", "descriptionID": 64710, "hasTypes": 1, "iconID": 1377, "name_de": "Gneiss", "name_en-us": "Gneiss", "name_es": "Gneiss", "name_fr": "Gneiss", "name_it": "Gneiss", "name_ja": "ナエス", "name_ko": "니스", "name_ru": "Гнейсс", "name_zh": "片麻岩", "nameID": 65784, "parentGroupID": 54 }, "526": { "description_de": "Unterarten von Omber-Erzen.", "description_en-us": "Sub-types of omber ore.", "description_es": "Subtipos de la mena ómber.", "description_fr": "Sous-catégories du minerai omber.", "description_it": "Sub-types of omber ore.", "description_ja": "オンバー鉱石の亜種。", "description_ko": "다양한 부류의 옴버 광석입니다.", "description_ru": "Подвиды руды Omber.", "description_zh": "奥贝尔石的分支。", "descriptionID": 64711, "hasTypes": 1, "iconID": 1271, "name_de": "Omber", "name_en-us": "Omber", "name_es": "Ómber", "name_fr": "Omber", "name_it": "Omber", "name_ja": "オンバー", "name_ko": "옴버", "name_ru": "Омбер", "name_zh": "奥贝尔石", "nameID": 65785, "parentGroupID": 54 }, "527": { "description_de": "Unterarten von Hedbergite-Erzen.", "description_en-us": "Sub-types of hedbergite ore.", "description_es": "Subtipos de la mena hedbergita.", "description_fr": "Sous-catégories du minerai hedbergite.", "description_it": "Sub-types of hedbergite ore.", "description_ja": "ヘッドバーガイト鉱石の亜種。", "description_ko": "다양한 부류의 헤버자이트 광석입니다.", "description_ru": "Подвиды руды Hedbergite.", "description_zh": "同位原矿的分支。", "descriptionID": 64712, "hasTypes": 1, "iconID": 1269, "name_de": "Hedbergite", "name_en-us": "Hedbergite", "name_es": "Hedbergita", "name_fr": "Hedbergite", "name_it": "Hedbergite", "name_ja": "ヘッドバーガイト", "name_ko": "헤버자이트", "name_ru": "Хедбергит", "name_zh": "同位原矿", "nameID": 65786, "parentGroupID": 54 }, "528": { "description_de": "Unterarten von Hemorphite-Erzen.", "description_en-us": "Sub-types of hemorphite ore.", "description_es": "Subtipos de la mena hemorfita.", "description_fr": "Sous-catégories du minerai hemorphite.", "description_it": "Sub-types of hemorphite ore.", "description_ja": "ヘモファイト鉱石の亜種。", "description_ko": "다양한 부류의 헤모르파이트 광석입니다.", "description_ru": "Подвиды руды Hemorphite.", "description_zh": "希莫非特的分支。", "descriptionID": 64713, "hasTypes": 1, "iconID": 1282, "name_de": "Hemorphite", "name_en-us": "Hemorphite", "name_es": "Hemorfita", "name_fr": "Hemorphite", "name_it": "Hemorphite", "name_ja": "ヘモファイト", "name_ko": "헤모르파이트", "name_ru": "Хеморфит", "name_zh": "希莫非特", "nameID": 65787, "parentGroupID": 54 }, "529": { "description_de": "Unterarten von Jaspet-Erzen.", "description_en-us": "Sub-types of jaspet ore.", "description_es": "Subtipos de la mena jaspetita.", "description_fr": "Sous-catégories du minerai jaspet.", "description_it": "Sub-types of jaspet ore.", "description_ja": "ジャスペット鉱石の亜種。", "description_ko": "다양한 부류의 자스페트 광석입니다.", "description_ru": "Подвиды руды Jaspet.", "description_zh": "杰斯贝矿的分支。", "descriptionID": 64714, "hasTypes": 1, "iconID": 1279, "name_de": "Jaspet", "name_en-us": "Jaspet", "name_es": "Jaspetita", "name_fr": "Jaspet", "name_it": "Jaspet", "name_ja": "ジャスペット", "name_ko": "자스페트", "name_ru": "Джаспет", "name_zh": "杰斯贝矿", "nameID": 65788, "parentGroupID": 54 }, "530": { "description_de": "Ein extrem rares und wertvolles Erz, das ein einzigartiges Mineral hervorbringt.", "description_en-us": "An extremely rare and valuable ore, yielding a unique mineral.", "description_es": "Una mena extremadamente poco común y valiosa que produce un mineral único.", "description_fr": "Un minerai très rare et très précieux qui renferme un seul et unique minéral.", "description_it": "An extremely rare and valuable ore, yielding a unique mineral.", "description_ja": "珍しい無機物を抽出できる、極めて希少価値の高い鉱石。", "description_ko": "매우 희소한 광석으로 독특한 미네랄을 함유하고 있습니다.", "description_ru": "Очень редкая и ценная руда, содержащая уникальные минералы.", "description_zh": "一种非常有价值的矿石,能够提炼出一种独特的矿物。", "descriptionID": 64715, "hasTypes": 1, "iconID": 2102, "name_de": "Mercoxit", "name_en-us": "Mercoxit", "name_es": "Mercoxita", "name_fr": "Mercoxit", "name_it": "Mercoxit", "name_ja": "メロコキサイト", "name_ko": "메르코시트", "name_ru": "Меркоцит", "name_zh": "基腹断岩", "nameID": 65789, "parentGroupID": 54 }, "531": { "description_de": "Implantate, die zur Verbesserung des Geschicks eines Piloten in bestimmten Gebieten geschaffen sind.", "description_en-us": "Implants designed to increase a pilot's aptitude in a specialized area.", "description_es": "Implantes diseñados para aumentar la aptitud de los pilotos en un ámbito especializado.", "description_fr": "Implants conçus pour augmenter les capacités d'un pilote dans un domaine particulier.", "description_it": "Implants designed to increase a pilot's aptitude in a specialized area.", "description_ja": "ある専門分野におけるパイロットの才能を高めるインプラント。", "description_ko": "파일럿의 능력을 향상할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, созданные для повышения способностей пилота в отдельно взятой области.", "description_zh": "用于增强飞行员在特殊领域能力的植入体。", "descriptionID": 64716, "hasTypes": 0, "iconID": 2224, "name_de": "Skill-Vernetzung", "name_en-us": "Skill Hardwiring", "name_es": "Hardware de habilidades", "name_fr": "Extension neurale d'augmentation des compétences", "name_it": "Skill Hardwiring", "name_ja": "スキルハードワイヤリング", "name_ko": "스킬 하드와이어링", "name_ru": "Импланты навыков", "name_zh": "技能增强", "nameID": 65790, "parentGroupID": 27 }, "532": { "description_de": "Implantate, die zur Steigerung bestimmter Merkmale der geistigen Beschaffenheit des Piloten konzipiert wurden.", "description_en-us": "Implants designed to augment specific aspects of the pilot's mental make-up.", "description_es": "Implantes diseñados para potenciar aspectos específicos de la estructura mental de los pilotos.", "description_fr": "Implants conçus pour améliorer certains traits des attributs mentaux du pilote.", "description_it": "Implants designed to augment specific aspects of the pilot's mental make-up.", "description_ja": "パイロットの精神構造を部分的に強化するインプラント。", "description_ko": "파일럿의 정신을 강화할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, разработанные для усиления отдельных аспектов ментальных способностей пилота.", "description_zh": "为飞行员专门定制的各种增强精神与能力的植入体。", "descriptionID": 64717, "hasTypes": 0, "iconID": 2062, "name_de": "Attributsverbesserungen", "name_en-us": "Attribute Enhancers", "name_es": "Intensificadores de atributos", "name_fr": "Optimisateurs d’attribut", "name_it": "Attribute Enhancers", "name_ja": "属性エンハンサー", "name_ko": "능력 향상 임플란트", "name_ru": "Импланты характеристик", "name_zh": "属性增强体", "nameID": 65791, "parentGroupID": 27 }, "533": { "description_de": "Verschiedene Materialien, die in der Fertigung Verwendung finden", "description_en-us": "Various materials used in manufacturing", "description_es": "Materiales de diversa índole usados en la fabricación.", "description_fr": "Différents matériaux utilisés dans la fabrication", "description_it": "Various materials used in manufacturing", "description_ja": "製造に用いる各種材料", "description_ko": "제조 분야에 사용되는 재료입니다.", "description_ru": "Различные материалы, используемые в производстве", "description_zh": "生产制造中用到的各种材料", "descriptionID": 64718, "hasTypes": 0, "iconID": 1201, "name_de": "Materialien", "name_en-us": "Materials", "name_es": "Materiales", "name_fr": "Matériaux", "name_it": "Materials", "name_ja": "資源", "name_ko": "자원 및 재료", "name_ru": "Материалы", "name_zh": "材料", "nameID": 65792, "parentGroupID": 475 }, "535": { "description_de": "Elektronisch verbesserter Panzerplatten-Zusatz.", "description_en-us": "Electronically enhanced armor plating augmentation.", "description_es": "Aumento de las placas de blindaje mejoradas electrónicamente.", "description_fr": "Renforcement de blindage amélioré électroniquement.", "description_it": "Electronically enhanced armor plating augmentation.", "description_ja": "最新電子技術を応用したアーマープレート補強。", "description_ko": "장갑 플레이팅을 강화할 수 있는 장치입니다.", "description_ru": "Покрытие брони с встроенными электронными системами.", "description_zh": "通过电子设备对装甲附甲进行增强。", "descriptionID": 64719, "hasTypes": 0, "iconID": 1030, "name_de": "Panzerungshärter", "name_en-us": "Armor Hardeners", "name_es": "Endurecedores de blindaje", "name_fr": "Renforcements de blindage", "name_it": "Temprature corazza", "name_ja": "アーマーハードナー", "name_ko": "장갑 강화장치", "name_ru": "Укрепители брони", "name_zh": "装甲增强器", "nameID": 65793, "parentGroupID": 14 }, "537": { "description_de": "Verarzten Sie Ihre Kameraden aus der Ferne.", "description_en-us": "Patch up your comrades at a distance.", "description_es": "Repara a distancia las naves de tus camaradas.", "description_fr": "Rafistolez vos camarades à distance.", "description_it": "Patch up your comrades at a distance.", "description_ja": "離れている仲間の船を修理する。", "description_ko": "원격으로 동료의 장갑을 회복시킬 수 있는 장치입니다.", "description_ru": "Залатайте своего товарища на расстоянии.", "description_zh": "在一定距离上对你的战友进行修复。", "descriptionID": 64720, "hasTypes": 0, "iconID": 80, "name_de": "Panzerungs-Fernreparatursysteme", "name_en-us": "Remote Armor Repairers", "name_es": "Reparadores de blindaje remotos", "name_fr": "Réparateurs de blindage à distance", "name_it": "Remote Armor Repairers", "name_ja": "リモートアーマーリペアラ", "name_ko": "원격 장갑수리 장치", "name_ru": "Установки дистанционного ремонта брони", "name_zh": "远程装甲维修器", "nameID": 65794, "parentGroupID": 14 }, "538": { "description_de": "Für Instandsetzung der Struktur während des Flugs.", "description_en-us": "For on-the-fly structural restoration.", "description_es": "Para reparaciones estructurales sobre la marcha.", "description_fr": "Pour remettre la structure de votre vaisseau en état en plein vol.", "description_it": "For on-the-fly structural restoration.", "description_ja": "航行中ストラクチャ修復機。", "description_ko": "원격으로 선체를 회복시킬 수 있는 장치입니다.", "description_ru": "Для ремонта структурных повреждений на лету.", "description_zh": "用于在飞行中进行的结构维修。", "descriptionID": 64721, "hasTypes": 0, "iconID": 80, "name_de": "Rumpfreparatursysteme", "name_en-us": "Hull Repairers", "name_es": "Reparadores de casco", "name_fr": "Réparateurs de coque", "name_it": "Hull Repairers", "name_ja": "船体リペアラ", "name_ko": "선체수리 장치", "name_ru": "Установки ремонта корпуса", "name_zh": "结构维修器", "nameID": 65795, "parentGroupID": 14 }, "540": { "description_de": "Panzerungsresistenz-Beschichtungen", "description_en-us": "Armor Resistance Coatings", "description_es": "Recubrimientos de resistencia de blindaje.", "description_fr": "Surcouches de résistance de blindage", "description_it": "Armor Resistance Coatings", "description_ja": "アーマーレジスタンスコーティング", "description_ko": "장갑 저항력 코팅", "description_ru": "Покрытия сопротивляемости брони", "description_zh": "装甲抗性涂层", "descriptionID": 64722, "hasTypes": 0, "iconID": 1030, "name_de": "Panzerungsresistenz-Beschichtungen", "name_en-us": "Armor Resistance Coatings", "name_es": "Recubrimientos de resistencia de blindaje", "name_fr": "Surcouches de résistance de blindage", "name_it": "Armor Resistance Coatings", "name_ja": "アーマーレジスタンスコーティング", "name_ko": "장갑 저항력 코팅", "name_ru": "Покрытия сопротивляемости брони", "name_zh": "装甲抗性涂层", "nameID": 65796, "parentGroupID": 14 }, "541": { "description_de": "Spannungsunterstützte Panzerungsresistenzmembranen", "description_en-us": "Energized Armor Resistance Membranes", "description_es": "Membranas energizadas de resistencia de blindaje.", "description_fr": "Membranes de résistance de blindage énergétiques", "description_it": "Energized Armor Resistance Membranes", "description_ja": "電磁加工アーマーレジスタンス装甲", "description_ko": "장갑 저항력 에너지 멤브레인", "description_ru": "Заряжаемые мембраны сопротивляемости брони", "description_zh": "电压装甲抗性薄膜", "descriptionID": 64723, "hasTypes": 0, "iconID": 2066, "name_de": "Spannungsunterstützte Panzerungsresistenzmembranen", "name_en-us": "Energized Armor Resistance Membranes", "name_es": "Membranas energizadas de resistencia de blindaje", "name_fr": "Membranes de résistance de blindage énergétiques", "name_it": "Energized Armor Resistance Membranes", "name_ja": "電磁加工アーマーレジスタンス装甲", "name_ko": "장갑 저항력 에너지 멤브레인", "name_ru": "Заряжаемые мембраны сопротивляемости брони", "name_zh": "电压装甲抗性薄膜", "nameID": 65797, "parentGroupID": 14 }, "542": { "description_de": "Geben dem Antrieb des Schiffes zusätzlichen Schub.", "description_en-us": "Provide additional thrust to the ship's engines.", "description_es": "Proporcionan un impulso adicional a los motores de la nave.", "description_fr": "Pour fournir une source de propulsion supplémentaire aux moteurs du vaisseau.", "description_it": "Provide additional thrust to the ship's engines.", "description_ja": "搭載エンジンの推進力を強化。", "description_ko": "함선 엔진에 추가적인 추진력을 부여하는 장치입니다.", "description_ru": "Обеспечивают дополнительную тягу для двигателей корабля.", "description_zh": "为舰船的引擎提供额外的推力。", "descriptionID": 64724, "hasTypes": 1, "iconID": 96, "name_de": "Nachbrenner", "name_en-us": "Afterburners", "name_es": "Posquemadores", "name_fr": "Systèmes de post-combustion", "name_it": "Afterburners", "name_ja": "アフターバーナー", "name_ko": "애프터버너", "name_ru": "Форсажные ускорители", "name_zh": "加力燃烧器", "nameID": 65798, "parentGroupID": 52 }, "550": { "description_de": "Stärken verschiedene Aspekte des subatomaren Eindämmungsfelds eines Schiffs.", "description_en-us": "Strengthen various aspects of the shields' subatomic containment fields.", "description_es": "Refuerzan varios aspectos de los campos de contención subatómica de los escudos.", "description_fr": "De quoi renforcer de diverses manières les champs de confinement subatomique des boucliers.", "description_it": "Strengthen various aspects of the shields' subatomic containment fields.", "description_ja": "シールドの素粒子コンテインメントフィールドの様々な面を強化する。", "description_ko": "실드의 분자 차단 필드를 강화하는 증폭기입니다.", "description_ru": "Увеличивает эффективность различных генераторов полей субатомного сдерживания щита.", "description_zh": "增强护盾的各种抗性。", "descriptionID": 64725, "hasTypes": 0, "iconID": 20939, "name_de": "Schildresistenzverstärker", "name_en-us": "Shield Resistance Amplifiers", "name_es": "Amplificadores de resistencia de escudo", "name_fr": "Amplificateurs de résistance de bouclier", "name_it": "Shield Resistance Amplifiers", "name_ja": "シールドレジスタンス増幅器", "name_ko": "실드 저항력 증폭기", "name_ru": "Пассивные модуляторы щитов", "name_zh": "护盾抗性增效器", "nameID": 65799, "parentGroupID": 554 }, "551": { "description_de": "Steigerung der maximalen Sträke des Schildsystems eines Schiffs.", "description_en-us": "Boost the maximum strength of the ship's shield system.", "description_es": "Potencian la fuerza máxima del sistema de escudos de la nave.", "description_fr": "Augmentent la puissance maximale du système de bouclier du vaisseau.", "description_it": "Boost the maximum strength of the ship's shield system.", "description_ja": "艦船のシールドシステムの最大強度を高める。", "description_ko": "함선의 실드 시스템을 확장하는 장치입니다.", "description_ru": "Увеличивают максимальную мощность щита корабля.", "description_zh": "增加舰船护盾系统的最大强度。", "descriptionID": 64726, "hasTypes": 0, "iconID": 1044, "name_de": "Schilderweiterungen", "name_en-us": "Shield Extenders", "name_es": "Extensores de escudo", "name_fr": "Extenseurs de bouclier", "name_it": "Estensori scudo", "name_ja": "シールドエクステンダー", "name_ko": "실드 확장장치", "name_ru": "Дополнительные источники щитов", "name_zh": "护盾扩展装置", "nameID": 65800, "parentGroupID": 554 }, "552": { "description_de": "Konvertiert Energie des Energiekerns des Schiffs zu zusätzlicher Schildstärke.", "description_en-us": "Convert energy from the ship's core into additional shield power.", "description_es": "Convierten energía del núcleo de la nave en potencia de escudo adicional.", "description_fr": "Convertissent l'énergie centrale du vaisseau en puissance supplémentaire pour le bouclier.", "description_it": "Convert energy from the ship's core into additional shield power.", "description_ja": "艦船のコアエネルギーをシールドパワーに転換してシールドを強化する。", "description_ko": "코어의 전력을 실드로 송출하여 실드량을 증가시킵니다.", "description_ru": "Передают энергию от силового ядра корабля на щит.", "description_zh": "从舰船的能源核心提取能量,然后用于增强护盾。", "descriptionID": 64727, "hasTypes": 0, "iconID": 84, "name_de": "Schildbooster", "name_en-us": "Shield Boosters", "name_es": "Potenciadores de escudo", "name_fr": "Boosters de bouclier", "name_it": "Shield Boosters", "name_ja": "シールドブースター", "name_ko": "실드 부스터", "name_ru": "Установки накачки щитов", "name_zh": "护盾回充增量器", "nameID": 65801, "parentGroupID": 554 }, "553": { "description_de": "Computerisierte Systeme, die zur temporären Verbesserung der Widerstandsfähigkeit des Schilds geschaffen sind.", "description_en-us": "Computerized systems designed to give a temporary increase in shield resistance.", "description_es": "Sistemas informatizados diseñados para proporcionar un aumento temporal de la resistencia de escudo.", "description_fr": "Systèmes gérés par ordinateur conçus pour accroître temporairement la résistance du bouclier.", "description_it": "Computerized systems designed to give a temporary increase in shield resistance.", "description_ja": "シールドレジスタンスを一時的に高めるコンピュータシステム。", "description_ko": "실드 저항력이 일시적으로 증가시키기 위해 설계된 시스템입니다.", "description_ru": "Компьютеризированные системы, временно увеличивающие сопротивляемость щита различным видам ущерба.", "description_zh": "用于暂时性增强护盾抵抗能力的电脑控制系统。", "descriptionID": 64728, "hasTypes": 0, "iconID": 81, "name_de": "Schildhärter", "name_en-us": "Shield Hardeners", "name_es": "Endurecedores de escudo", "name_fr": "Renforcements de bouclier", "name_it": "Tempratura scudo", "name_ja": "シールドハードナー", "name_ko": "실드 강화장치", "name_ru": "Активные модуляторы щитов", "name_zh": "护盾增强系统", "nameID": 65802, "parentGroupID": 554 }, "554": { "description_de": "Module, die die Energiebarriere stärken, die Raumschiffe gegen externe Gefahren umgibt", "description_en-us": "Modules that strengthen the energy barrier surrounding spaceships against external dangers", "description_es": "Módulos que refuerzan la barrera de energía que protege las naves frente a los peligros externos.", "description_fr": "Modules qui renforcent la barrière énergétique entourant les vaisseaux pour les protéger des dangers extérieurs", "description_it": "Modules that strengthen the energy barrier surrounding spaceships against external dangers", "description_ja": "外部からの攻撃に備え、艦船の周囲のシールドを強化するモジュール", "description_ko": "에너지 배리어를 전개하여 함선을 보호합니다.", "description_ru": "Системы, повышающие защиту кораблей от воздействия внешних факторов.", "description_zh": "可以强化舰船周围的能量障壁的装备,助其抵抗外来的危险因素", "descriptionID": 64729, "hasTypes": 0, "iconID": 69, "name_de": "Schilde", "name_en-us": "Shield", "name_es": "Escudo", "name_fr": "Bouclier", "name_it": "Shield", "name_ja": "シールド", "name_ko": "실드", "name_ru": "Модули щитов", "name_zh": "护盾", "nameID": 65803, "parentGroupID": 9 }, "555": { "description_de": "Railguns verwenden magnetische Gleise, um solide Materiebrocken in hypersonischer Geschwindigkeit abzufeuern.", "description_en-us": "Railguns use magnetic rails to fire solid chunks of matter at hypersonic speed.", "description_es": "Los cañones electromagnéticos usan carriles imantados para disparar fragmentos sólidos de materia a velocidad hipersónica.", "description_fr": "Les canons à rail font appel à des rails magnétiques pour envoyer de gros morceaux de matières à des vitesses hypersoniques.", "description_it": "Railguns use magnetic rails to fire solid chunks of matter at hypersonic speed.", "description_ja": "レールガンは、磁気レールを利用して超音速で弾を発射する。", "description_ko": "레일건은 전자기력을 이용하여 초음속 고체 탄자를 발사합니다.", "description_ru": "Рейлганы используют магнитные направляющие, чтобы разгонять заряды до сверхзвуковых скоростей.", "description_zh": "使用电磁轨道将实心的弹丸以超高音速发射出去。", "descriptionID": 64730, "hasTypes": 0, "iconID": 366, "name_de": "Schienengeschütze", "name_en-us": "Railguns", "name_es": "Cañones electromagnéticos", "name_fr": "Canons à rail", "name_it": "Railguns", "name_ja": "レールガン", "name_ko": "레일건", "name_ru": "Рельсотроны", "name_zh": "磁轨炮", "nameID": 65804, "parentGroupID": 86 }, "556": { "description_de": "Blaster feuern magnetisch gebundene Kugeln subatomarer Partikel ab.", "description_en-us": "Blasters fire magnetically contained balls of subatomic particles.", "description_es": "Los blásteres disparan bolas de partículas subatómicas.", "description_fr": "Les blasters tirent des sphères de particules subatomiques confinées magnétiquement.", "description_it": "Blasters fire magnetically contained balls of subatomic particles.", "description_ja": "ブラスターは、素粒子を磁気によって封じ込めた球を発射する兵器。", "description_ko": "블라스터는 자기력으로 구성된 분자 단위의 입자를 발사합니다.", "description_ru": "Бластеры стреляют заключенными в магнитное поле сгустками субатомных частиц.", "description_zh": "疾速炮发射由磁场包合的球状亚原子粒子。", "descriptionID": 64731, "hasTypes": 0, "iconID": 365, "name_de": "Blaster", "name_en-us": "Blasters", "name_es": "Blásteres", "name_fr": "Blasters", "name_it": "Blasters", "name_ja": "ブラスター", "name_ko": "블라스터", "name_ru": "Бластеры", "name_zh": "疾速炮", "nameID": 65805, "parentGroupID": 86 }, "557": { "description_de": "Strahllaser feuern einen konzentrierten, stetigen Strahl aus Energie auf ihre Ziele.", "description_en-us": "Beam lasers fire a concentrated, persistent stream of energy at their target.", "description_es": "Los láseres de rayos disparan un haz concentrado y persistente de energía hacia el objetivo.", "description_fr": "Les lasers à rayons envoient un flux d'énergie concentré et continu sur leur cible.", "description_it": "Beam lasers fire a concentrated, persistent stream of energy at their target.", "description_ja": "ビームレーザーは、高密度エネルギー波をターゲットに発射し続ける兵器。", "description_ko": "빔 레이저는 적에게 집속 에너지를 연속적으로 발사합니다.", "description_ru": "Непрерывные лазеры способны направлять на цель концентрированный устойчивый поток энергии.", "description_zh": "集束激光器能将高能量集中,持续的输出到目标上。", "descriptionID": 64732, "hasTypes": 0, "iconID": 361, "name_de": "Langstreckenlaser", "name_en-us": "Beam Lasers", "name_es": "Láseres de rayos", "name_fr": "Lasers à rayons", "name_it": "Beam Lasers", "name_ja": "ビームレーザー", "name_ko": "빔 레이저", "name_ru": "Лучевые лазеры", "name_zh": "集束激光器", "nameID": 65806, "parentGroupID": 88 }, "558": { "description_de": "Impulslaser stoßen einen Strahl schwingender Energie auf ihr Ziel ab.", "description_en-us": "Pulse lasers emit an oscillating energy beam at their target.", "description_es": "Los láseres de pulsos emiten un haz de energía oscilante hacia el objetivo.", "description_fr": "Les lasers à impulsions émettent un rayon d'énergie oscillant sur leur cible.", "description_it": "Pulse lasers emit an oscillating energy beam at their target.", "description_ja": "パルスレーザーは、ターゲットに振動エネルギー波を発射する兵器。", "description_ko": "펄스 레이저는 진동하는 에너지 빔을 적에게 발사합니다.", "description_ru": "Импульсные лазеры выпускают в цель осциллирующие лучи энергии.", "description_zh": "脉冲激光器能向目标舰只发射一束震荡脉冲能量波。", "descriptionID": 64733, "hasTypes": 0, "iconID": 360, "name_de": "Impulslaser", "name_en-us": "Pulse Lasers", "name_es": "Láseres de pulsos", "name_fr": "Lasers à impulsions", "name_it": "Pulse Lasers", "name_ja": "パルスレーザー", "name_ko": "펄스 레이저", "name_ru": "Импульсные лазеры", "name_zh": "脉冲激光器", "nameID": 65807, "parentGroupID": 88 }, "559": { "description_de": "Maschinenkanonen sind effektiv auf kurze Entfernungen und verfügen über ein großartiges Nachführvermögen.", "description_en-us": "Autocannons are effective at close ranges and possess great tracking ability.", "description_es": "Los cañones automáticos son efectivos a corta distancia y tienen una gran capacidad de rastreo.", "description_fr": "Les canons automatiques sont efficaces à courte portée et disposent d'une excellente capacité de poursuite.", "description_it": "Autocannons are effective at close ranges and possess great tracking ability.", "description_ja": "オートキャノンは至近距離で威力を発揮し、追跡能力にも優れている。", "description_ko": "기관포는 근거리 교전에서 효과적인 무기로 트래킹 성능이 매우 뛰어납니다.", "description_ru": "Автоматичные пушки эффективны на ближней дистанции и обладают превосходной скоростью слежения.", "description_zh": "自动加农炮在近距离的火力打击上非常有效,并有拥有不错的目标追踪性能。", "descriptionID": 64734, "hasTypes": 0, "iconID": 381, "name_de": "Maschinenkanonen", "name_en-us": "Autocannons", "name_es": "Cañones automáticos", "name_fr": "Canons automatiques", "name_it": "Autocannons", "name_ja": "オートキャノン", "name_ko": "기관포", "name_ru": "Автопушки", "name_zh": "自动加农炮", "nameID": 65808, "parentGroupID": 87 }, "560": { "description_de": "Langsam feuernde Langstrecken-Kanone, die in der Lage ist, mit großer Wirtschaftlichkeit verheerende Schläge auszuteilen.", "description_en-us": "Slow-firing long-range cannons, able to deal crippling blows with great economy.", "description_es": "Cañones de largo alcance y disparo lento, capaces de infligir impactos incapacitantes sin consumir mucha energía.", "description_fr": "Des canons longue portée à la cadence de tir lente, capables de porter des coups durs à un moindre coût.", "description_it": "Slow-firing long-range cannons, able to deal crippling blows with great economy.", "description_ja": "長射程キャノン。速射は利かないが、少ない弾薬で大きな打撃を与える。", "description_ko": "저속으로 발사하는 장거리 캐논으로 적을 효율적으로 타격할 수 있습니다.", "description_ru": "Дальнобойные орудия с низкой скорострельности, способные наносить сокрушительные повреждения без особых материальных затрат.", "description_zh": "开火速度慢但是射击距离远的加农火炮,在较低的消耗上制造极端的伤害。", "descriptionID": 64735, "hasTypes": 0, "iconID": 381, "name_de": "Artilleriekanonen", "name_en-us": "Artillery Cannons", "name_es": "Cañones de artillería", "name_fr": "Canons d'artillerie", "name_it": "Artillery Cannons", "name_ja": "アーティレリキャノン", "name_ko": "함포", "name_ru": "Артиллерийские орудия", "name_zh": "加农火炮", "nameID": 65809, "parentGroupID": 87 }, "561": { "description_de": "Schnell nachführende Blaster mit niedrigem Schadenswert für den Gebrauch auf Fregatten.", "description_en-us": "Fast-tracking, low-damage blasters, for use on frigates.", "description_es": "Blásteres de rastreo rápido y poca potencia para usarlos en fragatas.", "description_fr": "Blasters disposant d'une poursuite rapide de la cible et infligeant peu de dégâts, à utiliser sur les frégates.", "description_it": "Fast-tracking, low-damage blasters, for use on frigates.", "description_ja": "高速で敵を追跡して小さいダメージを与えるブラスター。フリゲート用。", "description_ko": "트래킹 속도는 빠른 반면 피해량은 낮은 프리깃용 블라스터입니다.", "description_ru": "Маломощные бластеры с высокой скоростью слежения, предназначенные для установки на фрегаты.", "description_zh": "跟踪速度快,伤害较低的疾速炮,专用于护卫舰。", "descriptionID": 64736, "hasTypes": 1, "iconID": 376, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65810, "parentGroupID": 556 }, "562": { "description_de": "Mittelgroße Blaster für den Gebrauch auf Kreuzern.", "description_en-us": "Medium-sized blasters, for use on cruisers.", "description_es": "Blásteres de medio calibre para usarlos en cruceros.", "description_fr": "Blasters de taille intermédiaire, à utiliser sur les croiseurs.", "description_it": "Medium-sized blasters, for use on cruisers.", "description_ja": "巡洋艦で使用するための中型ブラスター。", "description_ko": "중형 블라스터로 크루저급 함선에서 사용됩니다.", "description_ru": "Бластеры среднего калибра, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰使用的中型疾速炮。", "descriptionID": 64737, "hasTypes": 1, "iconID": 371, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65811, "parentGroupID": 556 }, "563": { "description_de": "Langsam nachführende Blaster mit hohem Schadenswert für den Gebrauch auf Schlachtschiffen.", "description_en-us": "Slow-tracking, high-damage blasters, for use on battleships.", "description_es": "Blásteres de rastreo lento y mucha potencia para usarlos en acorazados.", "description_fr": "Blasters disposant d'une poursuite lente de la cible et infligeant de lourds dégâts, à utiliser sur les cuirassés.", "description_it": "Slow-tracking, high-damage blasters, for use on battleships.", "description_ja": "戦艦で使用するための、追跡速度は遅いが破壊力の大きいブラスター。", "description_ko": "트래킹 속도는 느린 반면 피해량은 높은 배틀쉽용 블라스터입니다.", "description_ru": "Бластеры большой мощности с низкой скоростью слежения, предназначенные для установки на линкоры.", "description_zh": "跟踪速度慢,伤害高的疾速炮,用于战列舰。", "descriptionID": 64738, "hasTypes": 1, "iconID": 365, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65812, "parentGroupID": 556 }, "564": { "description_de": "Schnell nachführende Railguns mit niedrigem Schadenswert für den Gebrauch auf Fregatten.", "description_en-us": "Fast-tracking, low-damage railguns, for use on frigates.", "description_es": "Cañones electromagnéticos de rastreo rápido y poca potencia para usarlos en fragatas.", "description_fr": "Canons à rail permettant une poursuite rapide de la cible et infligeant peu de dégâts, à utiliser sur les frégates.", "description_it": "Fast-tracking, low-damage railguns, for use on frigates.", "description_ja": "高速で敵を追跡して小さいダメージを与えるレールガン。フリゲート用。", "description_ko": "트래킹 속도는 빠른 반면 피해량은 낮은 프리깃용 레일건입니다.", "description_ru": "Маломощные рейлганы с высокой скоростью слежения, предназначенные для установки на фрегаты.", "description_zh": "跟踪速度快,伤害较低的磁轨炮,专用于护卫舰。", "descriptionID": 64739, "hasTypes": 1, "iconID": 349, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65813, "parentGroupID": 555 }, "565": { "description_de": "Mittelgroße Railguns für den Gebrauch auf Kreuzern.", "description_en-us": "Medium-sized railguns, for use on cruisers.", "description_es": "Cañones electromagnéticos de medio calibre para usarlos en cruceros.", "description_fr": "Canons à rail de taille intermédiaire, à utiliser sur les croiseurs.", "description_it": "Medium-sized railguns, for use on cruisers.", "description_ja": "巡洋艦で使用するための中型レールガン。", "description_ko": "중형 레일건으로 크루저급 함선에서 사용됩니다.", "description_ru": "Рейлганы среднего калибра, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰使用的中型磁轨炮。", "descriptionID": 64740, "hasTypes": 1, "iconID": 370, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65814, "parentGroupID": 555 }, "566": { "description_de": "Langsam nachführende Railguns mit hohem Schadenswert für den Gebrauch auf Schlachtschiffen.", "description_en-us": "Slow-tracking, high-damage railguns, for use on battleships.", "description_es": "Cañones electromagnéticos de rastreo lento y mucha potencia para usarlos en acorazados.", "description_fr": "Canons à rail permettant une poursuite lente de la cible et infligeant de lourds dégâts, à utiliser sur les cuirassés.", "description_it": "Slow-tracking, high-damage railguns, for use on battleships.", "description_ja": "戦艦で使用するための、追跡速度は低いが破壊力の大きいレールガン。", "description_ko": "트래킹 속도는 느린 반면 피해량은 높은 배틀쉽용 레일건입니다.", "description_ru": "Рейлганы большой мощности с низкой скоростью слежения, предназначенные для установки на линкоры.", "description_zh": "跟踪速度慢,伤害高的磁轨炮,用于战列舰。", "descriptionID": 64741, "hasTypes": 1, "iconID": 366, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65815, "parentGroupID": 555 }, "567": { "description_de": "Kleine Strahllaser, passend für den Gebrauch auf Fregatten.", "description_en-us": "Small beam lasers, suitable for frigate use.", "description_es": "Láseres de rayos de pequeño calibre aptos para fragatas.", "description_fr": "Petits lasers à rayons, adaptés à une utilisation sur les frégates.", "description_it": "Small beam lasers, suitable for frigate use.", "description_ja": "フリゲートでの使用に適した小型のビームレーザー。", "description_ko": "소형 빔 레이저로 프리깃급 함선에서 사용됩니다.", "description_ru": "Непрерывные лазеры малого калибра, предназначенные для установки на фрегаты.", "description_zh": "专用于护卫舰的小型集束激光器。", "descriptionID": 64742, "hasTypes": 1, "iconID": 352, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65816, "parentGroupID": 557 }, "568": { "description_de": "Mittlere Strahllaser für Schiffe der Kreuzer-Klasse.", "description_en-us": "Medium beam lasers, suitable for cruiser use.", "description_es": "Láseres de rayos de medio calibre aptos para cruceros.", "description_fr": "Laser à rayons intermédiaires, adaptés à une utilisation sur les croiseurs.", "description_it": "Medium beam lasers, suitable for cruiser use.", "description_ja": "巡洋艦での使用に適したミディアムビームレーザー。", "description_ko": "중형 빔 레이저로 크루저급 함선에서 사용됩니다.", "description_ru": "Непрерывные лазеры среднего калибра, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰使用的中型集束激光器。", "descriptionID": 64743, "hasTypes": 1, "iconID": 355, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65817, "parentGroupID": 557 }, "569": { "description_de": "Große Strahllaser, passend für den Gebrauch auf Schlachtschiffen.", "description_en-us": "Large beam lasers, suitable for battleship use.", "description_es": "Láseres de rayos de gran calibre aptos para acorazados.", "description_fr": "Grands lasers à rayons, adaptés à une utilisation sur les cuirassés.", "description_it": "Large beam lasers, suitable for battleship use.", "description_ja": "戦艦での使用に適した大型ビームレーザー。", "description_ko": "대형 빔 레이저로 배틀쉽급 함선에서 사용됩니다.", "description_ru": "Большие непрерывные лазеры, предназначенные для установки на линкоры.", "description_zh": "战列舰级别舰船使用的大型集束激光器。", "descriptionID": 64744, "hasTypes": 1, "iconID": 361, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65818, "parentGroupID": 557 }, "570": { "description_de": "Kleine Impulslaser, passend für den Gebrauch auf Fregatten.", "description_en-us": "Small pulse lasers, suitable for frigate use.", "description_es": "Láseres de pulsos de pequeño calibre aptos para fragatas.", "description_fr": "Petits lasers à impulsions, adaptés à une utilisation sur les frégates.", "description_it": "Small pulse lasers, suitable for frigate use.", "description_ja": "フリゲートでの使用に適した小型のパルスレーザー。", "description_ko": "소형 펄스 레이저로 프리깃급 함선에서 사용됩니다.", "description_ru": "Импульсные лазеры малого калибра, предназначенные для установки на фрегаты.", "description_zh": "护卫舰使用的小型脉冲激光器。", "descriptionID": 64745, "hasTypes": 1, "iconID": 350, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65819, "parentGroupID": 558 }, "572": { "description_de": "Mittlere Impulslaser für Schiffe der Kreuzer-Klasse.", "description_en-us": "Medium pulse lasers, suitable for cruiser use.", "description_es": "Láseres de pulsos de medio calibre aptos para cruceros.", "description_fr": "Lasers à impulsions intermédiaires, adaptés à une utilisation sur les croiseurs.", "description_it": "Medium pulse lasers, suitable for cruiser use.", "description_ja": "巡洋艦での使用に適した中型のパルスレーザー。", "description_ko": "중형 펄스 레이저로 크루저급 함선에서 사용됩니다.", "description_ru": "Импульсные лазеры среднего калибра, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰使用的中型脉冲激光器。", "descriptionID": 64746, "hasTypes": 1, "iconID": 356, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65820, "parentGroupID": 558 }, "573": { "description_de": "Große Impulslaser, passend für den Gebrauch auf Schlachtschiffen.", "description_en-us": "Large pulse lasers, suitable for battleship use.", "description_es": "Láseres de pulsos de gran calibre aptos para acorazados.", "description_fr": "Grands lasers à impulsions, adaptés à une utilisation sur les cuirassés.", "description_it": "Large pulse lasers, suitable for battleship use.", "description_ja": "戦艦での使用に適した大型パルスレーザー。", "description_ko": "대형 펄스 레이저로 배틀쉽급 함선에서 사용됩니다.", "description_ru": "Большие импульсные лазеры, предназначенные для установки на линкоры.", "description_zh": "战列舰级别舰船使用的大型脉冲激光器。", "descriptionID": 64747, "hasTypes": 1, "iconID": 360, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65821, "parentGroupID": 558 }, "574": { "description_de": "Für Fregatten typische Maschinenkanonen, bei kurzen Entfernungen sehr effektiv.", "description_en-us": "Frigate-sized autocannons, effective at very close ranges.", "description_es": "Cañones automáticos para naves de tamaño fragata, efectivos a muy corta distancia.", "description_fr": "Canons automatiques adaptés aux frégates, efficaces à très courte portée.", "description_it": "Frigate-sized autocannons, effective at very close ranges.", "description_ja": "フリゲート級オートキャノン。至近距離での効果が高い。", "description_ko": "프리깃급 함선에 탑재되는 오토캐넌으로 근거리에서 효과적입니다.", "description_ru": "Автопушки, предназначенные для установки на фрегаты и эффективные на очень близких дистанциях.", "description_zh": "护卫舰级别自动加农炮,在非常近的距离上有效。", "descriptionID": 64748, "hasTypes": 1, "iconID": 387, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65822, "parentGroupID": 559 }, "575": { "description_de": "Für Kreuzer typische Waffen. Liefern ein schnelles Sperrfeuer von Granaten auf kurze Entfernung.", "description_en-us": "Cruiser-sized weapons. Deliver a rapid-fire barrage of shells at close ranges.", "description_es": "Armas para naves de tamaño crucero. Disparan una barrera de fuego nutrido a corta distancia.", "description_fr": "Armes conçues pour être utilisées par les croiseurs. Fournissent un tir de barrage rapide d'obus à courte portée.", "description_it": "Cruiser-sized weapons. Deliver a rapid-fire barrage of shells at close ranges.", "description_ja": "巡洋艦級兵器。至近距離で集中砲火を浴びせる。", "description_ko": "크루저급 함선에 탑재되는 무기입니다. 근거리에서 급속으로 발사하는 함포입니다.", "description_ru": "Орудия, устанавливаемые на крейсеры. Предназначены для ведения шквального огня на ближней дистанции.", "description_zh": "巡洋舰使用的武器,射速很快的一种近距离武器。", "descriptionID": 64749, "hasTypes": 1, "iconID": 386, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65823, "parentGroupID": 559 }, "576": { "description_de": "Für Schlachtschiffe typische Maschinenkanonen. Verteilen aus der Nähe und personengebunden massiven Schaden.", "description_en-us": "Battleship-sized autocannons. Deal massive damage, up close and personal.", "description_es": "Cañones automáticos para naves de tamaño acorazado. Infligen un daño brutal a corta distancia.", "description_fr": "Canons automatiques conçus pour être utilisés par les cuirassés. Infligent de lourds dégâts, pour des règlements de compte en toute intimité.", "description_it": "Battleship-sized autocannons. Deal massive damage, up close and personal.", "description_ja": "戦艦級のオートキャノン。接近戦で致命的なダメージを与える。", "description_ko": "배틀쉽급 오토캐넌입니다. 근거리에서 막대한 피해량을 입힐 수 있습니다.", "description_ru": "Автопушки, предназначенные для установки на линкоры. Наносят большой ущерб в ближнем бою.", "description_zh": "战列舰使用的自动加农炮,近距离,大威力。", "descriptionID": 64750, "hasTypes": 1, "iconID": 381, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65824, "parentGroupID": 559 }, "577": { "description_de": "Kleine Artilleriekanonen, passend für den Gebrauch auf Fregatten.", "description_en-us": "Small artillery cannons, suitable for frigate use.", "description_es": "Cañones de artillería de pequeño calibre aptos para fragatas.", "description_fr": "Petits canons d'artillerie, adaptés à une utilisation sur les frégates.", "description_it": "Small artillery cannons, suitable for frigate use.", "description_ja": "フリゲートでの使用に適した小型のアーティレリキャノン。", "description_ko": "소형 함포로 프리깃급 함선에서 사용됩니다.", "description_ru": "Артиллерийские орудия малого калибра, предназначенные для установки на фрегаты.", "description_zh": "护卫舰舰炮使用的小型加农火炮弹药。", "descriptionID": 64751, "hasTypes": 1, "iconID": 389, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65825, "parentGroupID": 560 }, "578": { "description_de": "Mittlere Artilleriekanonen für Schiffe der Kreuzer-Klasse.", "description_en-us": "Medium artillery cannons, suitable for cruiser use.", "description_es": "Cañones de artillería de medio calibre aptos para cruceros.", "description_fr": "Canons d'artillerie intermédiaires, adaptés à une utilisation sur les croiseurs.", "description_it": "Medium artillery cannons, suitable for cruiser use.", "description_ja": "巡洋艦での使用に適した中型のアーティレリキャノン。", "description_ko": "중형 함포로 크루저급 함선에서 사용됩니다.", "description_ru": "Артиллерийские орудия среднего калибра, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰使用的中型加农火炮。", "descriptionID": 64752, "hasTypes": 1, "iconID": 384, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65826, "parentGroupID": 560 }, "579": { "description_de": "Große Artilleriekanonen, passend für den Gebrauch auf Schlachtschiffen.", "description_en-us": "Large artillery cannons, suitable for battleship use.", "description_es": "Cañones de artillería de gran calibre aptos para acorazados.", "description_fr": "Grands canons d'artillerie, adaptés à une utilisation sur les cuirassés.", "description_it": "Large artillery cannons, suitable for battleship use.", "description_ja": "戦艦での使用に適した大型のアーティレリキャノン。", "description_ko": "배틀쉽에 장착할 수 있는 대형 함포입니다.", "description_ru": "Большие артиллерийские орудия, предназначенные для установки на линкоры.", "description_zh": "战列舰级别舰船使用的加农火炮。", "descriptionID": 64753, "hasTypes": 1, "iconID": 379, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65827, "parentGroupID": 560 }, "580": { "description_de": "Mit Flügeln versehene, düsengetriebene, ferngelenkte Raketen mit schwerer Sprengladung.", "description_en-us": "Lifting-wing, jet-propelled guided missiles with heavy payloads.", "description_es": "Misiles autopropulsados por chorro con sustentación de ala y cargas útiles pesadas.", "description_fr": "Missiles guidés autopropulsés à aile portante à la puissance dévastatrice.", "description_it": "Lifting-wing, jet-propelled guided missiles with heavy payloads.", "description_ja": "絶大な威力を誇る、有翼ジェット推進式誘導ミサイル。", "description_ko": "날개형 제트 추진 미사일로 막대한 피해를 입힐 수 있는 탄두를 탑재하고 있습니다.", "description_ru": "Управляемые ракеты на реактивной тяге, оснащенные боеголовками большой мощности.", "description_zh": "有翼、喷气推进、并装载有高爆弹头的制导导弹。", "descriptionID": 64754, "hasTypes": 0, "iconID": 184, "name_de": "Marschflugkörper", "name_en-us": "Cruise Missiles", "name_es": "Misiles de crucero", "name_fr": "Missiles de croisière", "name_it": "Cruise Missiles", "name_ja": "クルーズミサイル", "name_ko": "크루즈 미사일", "name_ru": "Дальнобойные ракеты", "name_zh": "巡航导弹", "nameID": 65828, "parentGroupID": 114 }, "581": { "description_de": "Düsenangetriebene Projektile für schwere Abfeueranlagen.", "description_en-us": "Jet-propelled projectiles for heavy launchers.", "description_es": "Proyectiles autopropulsados para lanzadores de armamento pesado.", "description_fr": "Projectiles autopropulsés pour des lanceurs lourds.", "description_it": "Jet-propelled projectiles for heavy launchers.", "description_ja": "ヘビーランチャー用のジェット推進式ミサイル。", "description_ko": "제트 추진 미사일로 헤비 런처에 탑재할 수 있습니다.", "description_ru": "Реактивные снаряды для тяжёлых пусковых установок.", "description_zh": "重型发射器使用的喷气推进导弹。", "descriptionID": 64755, "hasTypes": 0, "iconID": 186, "name_de": "Schwere Lenkwaffen", "name_en-us": "Heavy Missiles", "name_es": "Misiles pesados", "name_fr": "Missiles lourds", "name_it": "Heavy Missiles", "name_ja": "ヘビーミサイル", "name_ko": "헤비 미사일", "name_ru": "Тяжёлые ракеты", "name_zh": "重型导弹", "nameID": 65829, "parentGroupID": 114 }, "582": { "description_de": "Blueprints von Schiffen der Zerstörer-Klasse.", "description_en-us": "Blueprints of destroyer-class vessels.", "description_es": "Planos de naves de clase destructor.", "description_fr": "Plans de construction de vaisseaux de classe destroyer.", "description_it": "Blueprints of destroyer-class vessels.", "description_ja": "駆逐艦級艦船のブループリント。", "description_ko": "디스트로이어급 함선 블루프린트입니다.", "description_ru": "Чертежи эсминцев.", "description_zh": "驱逐舰等级舰船蓝图", "descriptionID": 64756, "hasTypes": 0, "iconID": 2703, "name_de": "Zerstörer", "name_en-us": "Destroyers", "name_es": "Destructores", "name_fr": "Destroyers", "name_it": "Destroyers", "name_ja": "駆逐艦", "name_ko": "디스트로이어", "name_ru": "Эсминцы", "name_zh": "驱逐舰", "nameID": 65830, "parentGroupID": 204 }, "583": { "description_de": "Blueprints von Amarr-Zerstörer-Designs.", "description_en-us": "Blueprints of Amarr destroyer designs.", "description_es": "Planos de diseños de destructores amarrianos.", "description_fr": "Plans de construction de modèles de destroyers amarr.", "description_it": "Blueprints of Amarr destroyer designs.", "description_ja": "アマー駆逐艦設計図のブループリント。", "description_ko": "아마르 디스트로이어 블루프린트입니다.", "description_ru": "Чертежи эсминцев разработки Империи Amarr", "description_zh": "艾玛驱逐舰设计蓝图", "descriptionID": 64757, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65831, "parentGroupID": 582 }, "584": { "description_de": "Blueprints von Caldari-Zerstörer-Designs.", "description_en-us": "Blueprints of Caldari destroyer designs.", "description_es": "Planos de diseños de destructores caldaris.", "description_fr": "Plans de construction de modèles de destroyers caldari.", "description_it": "Blueprints of Caldari destroyer designs.", "description_ja": "カルダリ駆逐艦設計図のブループリント。", "description_ko": "칼다리 디스트로이어 블루프린트입니다.", "description_ru": "Чертежи эсминцев разработки Государства Caldari.", "description_zh": "加达里驱逐舰设计蓝图", "descriptionID": 64758, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65832, "parentGroupID": 582 }, "585": { "description_de": "Blueprints von Gallente-Zerstörer-Designs.", "description_en-us": "Blueprints of Gallente destroyer designs.", "description_es": "Planos de diseños de destructores gallentes.", "description_fr": "Plans de construction de modèles de destroyers gallente.", "description_it": "Blueprints of Gallente destroyer designs.", "description_ja": "ガレンテ駆逐艦設計図のブループリント。", "description_ko": "갈란테 디스트로이어 블루프린트입니다.", "description_ru": "Чертежи эсминцев разработки Федерации Gallente.", "description_zh": "盖伦特驱逐舰设计蓝图。", "descriptionID": 64759, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65833, "parentGroupID": 582 }, "586": { "description_de": "Blueprints von Minmatar-Zerstörer-Designs.", "description_en-us": "Blueprints of Minmatar destroyer designs.", "description_es": "Planos de diseños de destructores minmatarianos.", "description_fr": "Plans de construction de modèles de destroyers minmatar.", "description_it": "Blueprints of Minmatar destroyer designs.", "description_ja": "ミンマターデストロイヤー設計図のブループリント。", "description_ko": "민마타 디스트로이어 블루프린트입니다.", "description_ru": "Чертежи эсминцев разработки Республики Minmatar.", "description_zh": "米玛塔尔驱逐舰设计蓝图。", "descriptionID": 64760, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65834, "parentGroupID": 582 }, "588": { "description_de": "Blueprints von Schiffen der Schlachtkreuzer-Klasse.", "description_en-us": "Blueprints of battlecruiser-class vessels.", "description_es": "Planos de naves de clase crucero de combate.", "description_fr": "Plans de construction de vaisseaux de classe croiseur de bataille.", "description_it": "Blueprints of battlecruiser-class vessels.", "description_ja": "巡洋戦艦級艦船のブループリント。", "description_ko": "배틀크루저급 함선 블루프린트입니다.", "description_ru": "Чертежи линейных крейсеров.", "description_zh": "战列巡洋舰蓝图", "descriptionID": 64761, "hasTypes": 0, "iconID": 2703, "name_de": "Schlachtkreuzer", "name_en-us": "Battlecruisers", "name_es": "Cruceros de combate", "name_fr": "Croiseurs de bataille", "name_it": "Battlecruisers", "name_ja": "巡洋戦艦", "name_ko": "배틀크루저", "name_ru": "Линейные крейсеры", "name_zh": "战列巡洋舰", "nameID": 65835, "parentGroupID": 204 }, "589": { "description_de": "Blueprints von Amarr-Schlachtkreuzer-Designs.", "description_en-us": "Blueprints of Amarr battlecruiser designs.", "description_es": "Planos de diseños de cruceros de combate amarrianos.", "description_fr": "Plans de construction de modèles de croiseurs de bataille amarr.", "description_it": "Blueprints of Amarr battlecruiser designs.", "description_ja": "アマー巡洋戦艦設計図のブループリント。", "description_ko": "아마르 배틀크루저 블루프린트입니다.", "description_ru": "Чертежи линейных крейсеров разработки Империи Amarr.", "description_zh": "艾玛战列巡洋舰设计蓝图", "descriptionID": 64762, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65836, "parentGroupID": 588 }, "590": { "description_de": "Blueprints von Caldari-Schlachtkreuzer-Designs.", "description_en-us": "Blueprints of Caldari battlecruiser designs.", "description_es": "Planos de diseños de cruceros de combate caldaris.", "description_fr": "Plans de construction de modèles de croiseurs de bataille caldari.", "description_it": "Blueprints of Caldari battlecruiser designs.", "description_ja": "カルダリ巡洋戦艦設計図のブループリント。", "description_ko": "칼다리 배틀크루저 블루프린트입니다.", "description_ru": "Чертежи линейных крейсеров разработки Государства Caldari.", "description_zh": "加达里战列巡洋舰设计蓝图", "descriptionID": 64763, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65837, "parentGroupID": 588 }, "591": { "description_de": "Blueprints von Gallente-Schlachtkreuzer-Designs.", "description_en-us": "Blueprints of Gallente battlecruiser designs.", "description_es": "Planos de diseños de cruceros de combate gallentes.", "description_fr": "Plans de construction de modèles de croiseurs de bataille gallente.", "description_it": "Blueprints of Gallente battlecruiser designs.", "description_ja": "ガレンテ巡洋戦艦設計図のブループリント。", "description_ko": "갈란테 배틀크루저 블루프린트입니다.", "description_ru": "Чертежи линейных крейсеров разработки Федерации Gallente.", "description_zh": "盖伦特战列巡洋舰设计蓝图。", "descriptionID": 64764, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65838, "parentGroupID": 588 }, "592": { "description_de": "Blueprints von Minmatar-Schlachtkreuzer-Designs.", "description_en-us": "Blueprints of Minmatar battlecruiser designs.", "description_es": "Planos de diseños de cruceros de combate minmatarianos.", "description_fr": "Plans de construction de modèles de croiseurs de bataille minmatar.", "description_it": "Blueprints of Minmatar battlecruiser designs.", "description_ja": "ミンマター巡洋戦艦設計図のブループリント。", "description_ko": "민마타 배틀크루저 블루프린트입니다.", "description_ru": "Чертежи линейных крейсеров разработки Республики Minmatar.", "description_zh": "米玛塔尔战列巡洋舰设计蓝图。", "descriptionID": 64765, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65839, "parentGroupID": 588 }, "593": { "description_de": "Frequenzkristalle, die auf verschiedene Erz-Typen zugeschnitten sind", "description_en-us": "Frequency crystals custom-cut for different ore types", "description_es": "Cristales de frecuencia personalizados para distintos tipos de menas.", "description_fr": "Cristaux de fréquence taillés sur mesure pour différents types de minerai", "description_it": "Frequency crystals custom-cut for different ore types", "description_ja": "鉱石のタイプに合わせてカスタムカットされたフリーケンシークリスタル", "description_ko": "광물 채굴에 사용되는 프리퀀시 크리스탈입니다.", "description_ru": "Частотные кристаллы, специально созданные для добычи определенного вида руды.", "description_zh": "专为采集不同的矿石所定制的频率晶体", "descriptionID": 64766, "hasTypes": 0, "iconID": 24968, "name_de": "Bergbaukristalle", "name_en-us": "Mining Crystals", "name_es": "Cristales de minería", "name_fr": "Cristaux d’extraction", "name_it": "Mining Crystals", "name_ja": "採掘用クリスタル", "name_ko": "채광용 크리스탈", "name_ru": "Буровые кристаллы", "name_zh": "采矿晶体", "nameID": 65840, "parentGroupID": 11 }, "594": { "description_de": "Batterien von Projektilgeschütztürmen.", "description_en-us": "Projectile turret batteries.", "description_es": "Baterías de torretas de proyectiles.", "description_fr": "Batteries de tourelles à projectiles.", "description_it": "Projectile turret batteries.", "description_ja": "プロジェクタイルタレット兵器。", "description_ko": "발사체 포탑입니다.", "description_ru": "Батареи, оснащённые баллистическими орудиями.", "description_zh": "射弹炮台。", "descriptionID": 64767, "hasTypes": 1, "iconID": 2222, "name_de": "Projektilbatterien", "name_en-us": "Projectile Batteries", "name_es": "Baterías de proyectiles", "name_fr": "Batteries à projectiles", "name_it": "Projectile Batteries", "name_ja": "プロジェクタイル砲台", "name_ko": "발사체 포탑", "name_ru": "Батареи баллистических орудий", "name_zh": "射弹炮塔", "nameID": 65841, "parentGroupID": 480 }, "595": { "description_de": "Batterien von Hybridgeschütztürmen.", "description_en-us": "Hybrid turret batteries.", "description_es": "Baterías de torretas híbridas.", "description_fr": "Batteries de tourelles hybrides.", "description_it": "Hybrid turret batteries.", "description_ja": "ハイブリッドタレット兵器。", "description_ko": "하이브리드 포탑입니다.", "description_ru": "Батареи орудий гибридного действия.", "description_zh": "混合弹药类别的炮台。", "descriptionID": 64768, "hasTypes": 1, "iconID": 2222, "name_de": "Hybridbatterien", "name_en-us": "Hybrid Batteries", "name_es": "Baterías híbridas", "name_fr": "Batteries hybrides", "name_it": "Hybrid Batteries", "name_ja": "ハイブリッド砲台", "name_ko": "하이브리드 포탑", "name_ru": "Батареи гибридных орудий", "name_zh": "混合炮塔", "nameID": 65842, "parentGroupID": 480 }, "596": { "description_de": "Batterien von Lasergeschütztürmen.", "description_en-us": "Laser turret batteries.", "description_es": "Baterías de torretas láser.", "description_fr": "Batteries de tourelles à laser.", "description_it": "Laser turret batteries.", "description_ja": "レーザータレット兵器。", "description_ko": "레이저 포탑입니다.", "description_ru": "Батареи лазерных орудий.", "description_zh": "激光炮台。", "descriptionID": 64769, "hasTypes": 1, "iconID": 2222, "name_de": "Laserbatterien", "name_en-us": "Laser Batteries", "name_es": "Baterías láser", "name_fr": "Batteries de lasers", "name_it": "Laser Batteries", "name_ja": "レーザー砲台", "name_ko": "레이저 포탑", "name_ru": "Батареи лазерных орудий", "name_zh": "激光炮塔", "nameID": 65843, "parentGroupID": 480 }, "597": { "description_de": "Blueprints von für Capital-Schiffe typischer Projektilmunition.", "description_en-us": "Blueprints of capital-sized projectile ammunition.", "description_es": "Planos de munición de proyectiles para naves de tamaño capital.", "description_fr": "Plans de construction de projectiles adaptés aux armes des vaisseaux capitaux.", "description_it": "Blueprints of capital-sized projectile ammunition.", "description_ja": "キャピタル級プロジェクタイル弾のブループリント。", "description_ko": "캐피탈함급 발사체 탄약 블루프린트입니다.", "description_ru": "Чертежи огнестрельных боеприпасов для кораблей большого тоннажа.", "description_zh": "旗舰级舰炮使用的射弹弹药蓝图。", "descriptionID": 64770, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65844, "parentGroupID": 299 }, "598": { "description_de": "Blueprints von für Capital-Schiffe typischer Hybridmunition.", "description_en-us": "Blueprints of capital-sized hybrid ammunition.", "description_es": "Planos de munición híbrida para naves de tamaño capital.", "description_fr": "Plans de construction de munitions hybrides adaptées aux armes des vaisseaux capitaux.", "description_it": "Blueprints of capital-sized hybrid ammunition.", "description_ja": "キャピタル級ハイブリッド弾のブループリント。", "description_ko": "캐피탈함급 하이브리드 탄약 블루프린트입니다.", "description_ru": "Чертежи гибридных боеприпасов для кораблей большого тоннажа.", "description_zh": "旗舰级舰炮使用的混合弹药蓝图。", "descriptionID": 64771, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65845, "parentGroupID": 300 }, "599": { "description_de": "Blueprints von für Capital-Schiffe typischen Frequenzkristallen.", "description_en-us": "Blueprints of capital-sized frequency crystals.", "description_es": "Planos de cristales de frecuencia para naves de tamaño capital.", "description_fr": "Plans de construction de cristaux de fréquence adaptés aux armes des vaisseaux capitaux.", "description_it": "Blueprints of capital-sized frequency crystals.", "description_ja": "母艦級周波数クリスタルのブループリント。", "description_ko": "캐피탈함급 프리퀀시 크리스탈 블루프린트입니다.", "description_ru": "Чертежи частотных кристаллов для кораблей большого тоннажа.", "description_zh": "旗舰级激光器使用的频率晶体蓝图。", "descriptionID": 64772, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65846, "parentGroupID": 301 }, "600": { "description_de": "Für Capital-Schiffe typische Schildtransporteinheiten.", "description_en-us": "Capital ship-sized shield transport units.", "description_es": "Unidades de transporte de escudo para naves capitales.", "description_fr": "Unités de transport de bouclier pour vaisseau capital.", "description_it": "Capital ship-sized shield transport units.", "description_ja": "主力艦級シールドトランスポートユニット。", "description_ko": "캐피탈함급 실드 전송 장치입니다.", "description_ru": "Системы дистанционной накачки щита КБТ-класса.", "description_zh": "旗舰级别护盾传送单元。", "descriptionID": 64773, "hasTypes": 1, "iconID": 86, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 65847, "parentGroupID": 128 }, "601": { "description_de": "Für Schlachtschiffe typische Schildtransporteinheiten.", "description_en-us": "Battleship-sized shield transport units.", "description_es": "Unidades de transporte de escudo para naves de tamaño acorazado.", "description_fr": "Unités de transport de bouclier pour cuirassé.", "description_it": "Battleship-sized shield transport units.", "description_ja": "戦艦級シールドトランスポートユニット。", "description_ko": "배틀쉽급 실드 전송 장치입니다.", "description_ru": "Системы дистанционной накачки щита, предназначенные для установки на линкоры.", "description_zh": "战列舰级别护盾传送单元。", "descriptionID": 64774, "hasTypes": 1, "iconID": 86, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65848, "parentGroupID": 128 }, "602": { "description_de": "Für Kreuzer typische Schildtransporteinheiten.", "description_en-us": "Cruiser-sized shield transport units.", "description_es": "Unidades de transporte de escudo para naves de tamaño crucero.", "description_fr": "Unités de transport de bouclier pour croiseur.", "description_it": "Cruiser-sized shield transport units.", "description_ja": "巡洋艦級のシールドトランスポートユニット。", "description_ko": "크루저급 실드 전송 장치입니다.", "description_ru": "Системы дистанционной накачки щита, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别护盾传送单元。", "descriptionID": 64775, "hasTypes": 1, "iconID": 86, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65849, "parentGroupID": 128 }, "603": { "description_de": "Für Fregatten typische Schildtransporteinheiten.", "description_en-us": "Frigate-sized shield transport units.", "description_es": "Unidades de transporte de escudo para naves de tamaño fragata.", "description_fr": "Unités de transport de bouclier pour frégate.", "description_it": "Frigate-sized shield transport units.", "description_ja": "フリゲート級シールドトランスポートユニット。", "description_ko": "프리깃급 실드 전송 장치입니다.", "description_ru": "Системы дистанционной накачки щита, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别护盾传送单元。", "descriptionID": 64776, "hasTypes": 1, "iconID": 86, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65850, "parentGroupID": 128 }, "604": { "description_de": "Die kleinsten aller Schildtransporter, für den Fall, dass Stromnetz und CPU Mangelware sind.", "description_en-us": "The smallest of the shield transporters, for when CPU and powergrid are scarce.", "description_es": "El transportador de escudo más pequeño, para cuando la CPU y el sistema de potencia escasean.", "description_fr": "Le plus petit des transporteurs de bouclier, pour ceux et celles dont le CPU et le réseau d'alimentation sont réduits.", "description_it": "The smallest of the shield transporters, for when CPU and powergrid are scarce.", "description_ja": "最も小型のシールドトランスポーター。CPUとパワーグリッドが乏しいときのために。", "description_ko": "가장 작은 실드 전송기로 CPU 및 파워그리드가 부족할 시 사용됩니다.", "description_ru": "Самые маленькие системы дистанционной накачки щита, потребляющие минимальное количество ресурсов процессора и мощности энергосети.", "description_zh": "最小型的一种护盾转移装置,在能量栅格和CPU不够充足的情况下使用。", "descriptionID": 64777, "hasTypes": 1, "iconID": 86, "name_de": "Mikro", "name_en-us": "Micro", "name_es": "Micro", "name_fr": "Micro", "name_it": "Micro", "name_ja": "超小型", "name_ko": "마이크로", "name_ru": "Сверхмалые", "name_zh": "微型", "nameID": 65851, "parentGroupID": 128 }, "605": { "description_de": "Schildvergrößerungssysteme der Fregatten-Klasse.", "description_en-us": "Frigate-class shield extension systems.", "description_es": "Sistemas de extensión de escudo para fragatas.", "description_fr": "Systèmes d'extension de bouclier de classe frégate.", "description_it": "Frigate-class shield extension systems.", "description_ja": "フリゲート級シールド拡張システム。", "description_ko": "프리깃급 함선에서 사용되는 실드 확장장치입니다.", "description_ru": "Системы расширения щита, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别护盾扩展系统。", "descriptionID": 64778, "hasTypes": 1, "iconID": 1044, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65852, "parentGroupID": 551 }, "606": { "description_de": "Schildvergrößerungssysteme der Kreuzer-Klasse.", "description_en-us": "Cruiser-class shield extension systems.", "description_es": "Sistemas de extensión de escudo para cruceros.", "description_fr": "Systèmes d'extension de bouclier de classe croiseur.", "description_it": "Cruiser-class shield extension systems.", "description_ja": "巡洋艦級シールド拡張システム。", "description_ko": "크루저급 함선에서 사용되는 실드 확장장치입니다.", "description_ru": "Системы расширения щита, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别的护盾扩展系统。", "descriptionID": 64779, "hasTypes": 1, "iconID": 1044, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65853, "parentGroupID": 551 }, "608": { "description_de": "Schildvergrößerungssysteme der Schlachtschiff-Klasse.", "description_en-us": "Battleship-class shield extension systems.", "description_es": "Sistemas de extensión de escudo para acorazados.", "description_fr": "Systèmes d'extension de bouclier de classe cuirassé.", "description_it": "Battleship-class shield extension systems.", "description_ja": "戦艦級シールド拡張システム。", "description_ko": "배틀쉽급 함선에서 사용되는 실드 확장장치입니다.", "description_ru": "Системы расширения щита, предназначенные для установки на линкоры.", "description_zh": "战列舰级别护盾扩展系统。", "descriptionID": 64781, "hasTypes": 1, "iconID": 1044, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65855, "parentGroupID": 551 }, "609": { "description_de": "Schild-Verstärker der Fregatten-Klasse.", "description_en-us": "Frigate-class shield boosters.", "description_es": "Potenciadores de escudo para fragatas.", "description_fr": "Boosters de bouclier de classe frégate.", "description_it": "Frigate-class shield boosters.", "description_ja": "フリゲート級シールドブースター。", "description_ko": "프리깃급 함선에서 사용되는 실드 부스터입니다.", "description_ru": "Системы накачки щита, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别护盾回充增量器。", "descriptionID": 64782, "hasTypes": 1, "iconID": 84, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65856, "parentGroupID": 552 }, "610": { "description_de": "Schild-Verstärker der Kreuzer-Klasse.", "description_en-us": "Cruiser-class shield boosters.", "description_es": "Potenciadores de escudo para cruceros.", "description_fr": "Boosters de bouclier de classe croiseur.", "description_it": "Cruiser-class shield boosters.", "description_ja": "巡洋艦級シールドブースター。", "description_ko": "크루저급 함선에서 사용되는 실드 부스터입니다.", "description_ru": "Системы накачки щита, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别的护盾回充增量器。", "descriptionID": 64783, "hasTypes": 1, "iconID": 84, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65857, "parentGroupID": 552 }, "611": { "description_de": "Schildverstärker der Schlachtschiff-Klasse.", "description_en-us": "Battleship-class shield boosters.", "description_es": "Potenciadores de escudo para acorazados.", "description_fr": "Boosters de bouclier de classe cuirassé.", "description_it": "Battleship-class shield boosters.", "description_ja": "戦艦級シールドブースター。", "description_ko": "배틀쉽급 함선에서 사용되는 실드 부스터입니다.", "description_ru": "Системы накачки щита, предназначенные для установки на линкоры.", "description_zh": "战列舰级别护盾回充增量器。", "descriptionID": 64784, "hasTypes": 1, "iconID": 84, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65858, "parentGroupID": 552 }, "612": { "description_de": "Überladener Schild-Verstärker für fortschrittliche Schlachtschiff-Piloten.", "description_en-us": "Supercharged shield boosting units for advanced battleship pilots.", "description_es": "Unidades potenciadoras supercargadas para escudos de acorazados avanzados.", "description_fr": "Boosters de bouclier ultra puissants destinés aux pilotes de cuirassés expérimentés.", "description_it": "Supercharged shield boosting units for advanced battleship pilots.", "description_ja": "高性能戦艦パイロット用のスーパーチャージシールドブースターユニット。", "description_ko": "상급 배틀쉽 파일럿들이 사용하는 과속 실드 부스터 장치입니다.", "description_ru": "Сверхпроизводительные системы накачки щита для пилотов усовершенствованных линкоров.", "description_zh": "先进战舰飞行员使用的超载荷护盾增效单元。", "descriptionID": 64785, "hasTypes": 1, "iconID": 84, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Большие-плюс", "name_zh": "超大型", "nameID": 65859, "parentGroupID": 552 }, "613": { "description_de": "Konzentrieren und vergrößern die Effektivität von Schild verstärkenden Modulen.", "description_en-us": "Focus and amplify the efficiency of shield boosting modules.", "description_es": "Amplifican la eficiencia de los módulos potenciadores de escudos.", "description_fr": "Concentre et optimise l'efficacité des modules d'amplification des boucliers.", "description_it": "Focus and amplify the efficiency of shield boosting modules.", "description_ja": "シールドブースター用モジュールの効果を集結させて、威力を高める。", "description_ko": "실드 부스터 모듈을 증폭하는 장치입니다.", "description_ru": "Фокусирует и увеличивает эффективность действия модулей накачки щита.", "description_zh": "集中并增强护盾回充增量设备的效能。", "descriptionID": 64786, "hasTypes": 1, "iconID": 84, "name_de": "Boostverstärker", "name_en-us": "Boost Amplifiers", "name_es": "Amplificadores de potenciador", "name_fr": "Amplificateurs de boost", "name_it": "Boost Amplifiers", "name_ja": "ブースト増幅器", "name_ko": "부스터 증폭기", "name_ru": "Усилители накачки", "name_zh": "护盾回充增量放大器", "nameID": 65860, "parentGroupID": 552 }, "614": { "description_de": "Beleg für die erfolgreiche Arbeit eines Kopfgeldjägers", "description_en-us": "Proof positive of a bounty hunter's job well done", "description_es": "Prueba fehaciente de que el cazarrecompensas ha hecho bien su trabajo.", "description_fr": "Preuves attestant que le travail du chasseur de prime a bien été fait", "description_it": "Proof positive of a bounty hunter's job well done", "description_ja": "賞金稼ぎが無事に仕事を終えた証", "description_ko": "현상금 사냥꾼이 의뢰를 완수했음을 알리는 증거품입니다.", "description_ru": "Веское доказательство выполненной работы охотника за головами.", "description_zh": "证明赏金猎人成功完成任务的证据", "descriptionID": 64787, "hasTypes": 0, "iconID": 2302, "name_de": "Beweismaterial", "name_en-us": "Criminal Evidence", "name_es": "Pruebas criminales", "name_fr": "Preuves criminelles", "name_it": "Criminal Evidence", "name_ja": "犯罪証拠品", "name_ko": "범죄자 관련 증거품", "name_ru": "Вещественные доказательства", "name_zh": "犯罪证物", "nameID": 65861, "parentGroupID": 19 }, "615": { "description_de": "Eindämmungsfeld-Emitter und Entlastungssysteme zur Vermeidung kritischen Systemschadens.", "description_en-us": "Containment field emitters and redundancy systems for prevention of critical system damage.", "description_es": "Emisores de campo de contención y sistemas redundantes para la prevención de daños críticos al sistema.", "description_fr": "Des émetteurs de champ de confinement et des systèmes redondants permettant d’éviter tout dégât critique de l'appareil.", "description_it": "Containment field emitters and redundancy systems for prevention of critical system damage.", "description_ja": "システムへの深刻なダメージを防ぐ、コンテインメントフィールドエミッタおよび冗長システム。", "description_ko": "시스템에 대한 치명적인 손상을 방지하기 위한 차단 필드 생성기 및 보조 시스템입니다.", "description_ru": "Содержат источники поля сдерживания и резервные системы для предотвращения критичных повреждений.", "description_zh": "包围力场发射装置,配备有冗余系统来防止严重的系统损伤。", "descriptionID": 64788, "hasTypes": 1, "iconID": 77, "name_de": "Schadensregulierer", "name_en-us": "Damage Controls", "name_es": "Controles de daños", "name_fr": "Contrôles des dégâts", "name_it": "Damage Controls", "name_ja": "ダメージ制御機", "name_ko": "데미지 컨트롤", "name_ru": "Модули боевой живучести", "name_zh": "损伤控制", "nameID": 65862, "parentGroupID": 14 }, "616": { "description_de": "Auf DNS geprägte, persönliche Erkennungsmarken, die von den imperialen Navies benutzt werden. Mit Vorsicht transportieren", "description_en-us": "DNA-imprinted personal insignias, used by empire navies. Transport with caution", "description_es": "Insignias personales con la impronta genética que usan las armadas imperiales. Hay que transportarlas con precaución.", "description_fr": "Insignes personnels gravés sur l'ADN et utilisés par les navy impériales Transporter avec précaution", "description_it": "DNA-imprinted personal insignias, used by empire navies. Transport with caution", "description_ja": "DNAが組み込まれた、帝国海軍の記章。輸送には注意が必要", "description_ko": "DNA가 각인된 휘장으로 각 국가의 해군에서 사용합니다. 수송 시 상당한 주의가 요망됩니다.", "description_ru": "Личные жетоны с ДНК-шифром, используемые во флотах сверхдержав. Перевозить с осторожностью", "description_zh": "帝国海军使用的记录有DNA特征的个人徽章。请小心运输", "descriptionID": 64789, "hasTypes": 0, "iconID": 2552, "name_de": "Erkennungsmarken", "name_en-us": "Insignias", "name_es": "Insignias", "name_fr": "Insignes", "name_it": "Insignias", "name_ja": "認識証", "name_ko": "계급장", "name_ru": "Идентификаторы", "name_zh": "徽章", "nameID": 65863, "parentGroupID": 19 }, "617": { "description_de": "Blaupausen von XL Torpedos.", "description_en-us": "Blueprints of XL torpedoes.", "description_es": "Planos de torpedos XL.", "description_fr": "Plans de construction de torpilles XL.", "description_it": "Blueprints of XL torpedoes.", "description_ja": "XLトルピードのブループリント。", "description_ko": "XL 토피도 블루프린트입니다.", "description_ru": "Чертежи торпед сверхбольшой мощности.", "description_zh": "超大型鱼雷", "descriptionID": 65070, "hasTypes": 1, "iconID": 2703, "name_de": "XL Torpedos", "name_en-us": "XL Torpedoes", "name_es": "Torpedos XL", "name_fr": "Torpilles XL", "name_it": "XL Torpedoes", "name_ja": "XLトルピード", "name_ko": "XL 토피도", "name_ru": "Сверхбольшие торпеды", "name_zh": "超大型鱼雷", "nameID": 66144, "parentGroupID": 314 }, "618": { "description_de": "Implantate für den Subcervical Processing-Slot 1.", "description_en-us": "Implants intended for Subcervical Processing Slot 1.", "description_es": "Implantes para la ranura de procesamiento subcervical 1.", "description_fr": "Implants destinés au point de traitement sous-cervical 1.", "description_it": "Implants intended for Subcervical Processing Slot 1.", "description_ja": "頚下部プロセッシングスロット 1 用インプラント。", "description_ko": "경추 프로세스 슬롯 1 에 장착할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, предназначенные для установки в подзатылочный разъем интерфейса №1.", "description_zh": "用于颈下植入体插槽1。", "descriptionID": 64790, "hasTypes": 1, "iconID": 2053, "name_de": "Implantat-Slot 01", "name_en-us": "Implant Slot 01", "name_es": "Ranura de implante 01", "name_fr": "Emplacement d'implant 01", "name_it": "Implant Slot 01", "name_ja": "インプラントスロット01", "name_ko": "임플란트 슬롯 01", "name_ru": "Для разъёма №1", "name_zh": "植入体插槽 01", "nameID": 65864, "parentGroupID": 532 }, "619": { "description_de": "Implantate für den Subcervical Processing-Slot 2.", "description_en-us": "Implants intended for Subcervical Processing Slot 2.", "description_es": "Implantes para la ranura de procesamiento subcervical 2.", "description_fr": "Implants destinés au point de traitement sous-cervical 2.", "description_it": "Implants intended for Subcervical Processing Slot 2.", "description_ja": "頚下部プロセッシングスロット 2 用インプラント。", "description_ko": "경추 프로세스 슬롯 2 에 장착할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, предназначенные для установки в подзатылочный разъем интерфейса №2.", "description_zh": "用于颈下植入体插槽2。", "descriptionID": 64791, "hasTypes": 1, "iconID": 2061, "name_de": "Implantat-Slot 02", "name_en-us": "Implant Slot 02", "name_es": "Ranura de implante 02", "name_fr": "Emplacement d'implant 02", "name_it": "Implant Slot 02", "name_ja": "インプラントスロット02", "name_ko": "임플란트 슬롯 02", "name_ru": "Для разъёма №2", "name_zh": "植入体插槽 02", "nameID": 65865, "parentGroupID": 532 }, "620": { "description_de": "Implantate für den Subcervical Processing-Slot 3.", "description_en-us": "Implants intended for Subcervical Processing Slot 3.", "description_es": "Implantes para la ranura de procesamiento subcervical 3.", "description_fr": "Implants destinés au point de traitement sous-cervical 3.", "description_it": "Implants intended for Subcervical Processing Slot 3.", "description_ja": "頚下部プロセッシングスロット 3 用インプラント。", "description_ko": "경추 프로세스 슬롯 3 에 장착할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, предназначенные для установки в подзатылочный разъем интерфейса №3.", "description_zh": "用于颈下植入体插槽3。", "descriptionID": 64792, "hasTypes": 1, "iconID": 2054, "name_de": "Implantat-Slot 03", "name_en-us": "Implant Slot 03", "name_es": "Ranura de implante 03", "name_fr": "Emplacement d'implant 03", "name_it": "Implant Slot 03", "name_ja": "インプラントスロット03", "name_ko": "임플란트 슬롯 03", "name_ru": "Для разъёма №3", "name_zh": "植入体插槽 03", "nameID": 65866, "parentGroupID": 532 }, "621": { "description_de": "Implantate für den Subcervical Processing-Slot 4.", "description_en-us": "Implants intended for Subcervical Processing Slot 4.", "description_es": "Implantes para la ranura de procesamiento subcervical 4.", "description_fr": "Implants destinés au point de traitement sous-cervical 4.", "description_it": "Implants intended for Subcervical Processing Slot 4.", "description_ja": "頚下部プロセッシングスロット 4 用インプラント。", "description_ko": "경추 프로세스 슬롯 4 에 장착할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, предназначенные для установки в подзатылочный разъем интерфейса №4.", "description_zh": "用于颈下植入体插槽4。", "descriptionID": 64793, "hasTypes": 1, "iconID": 2062, "name_de": "Implantat-Slot 04", "name_en-us": "Implant Slot 04", "name_es": "Ranura de implante 04", "name_fr": "Emplacement d'implant 04", "name_it": "Implant Slot 04", "name_ja": "インプラントスロット04", "name_ko": "임플란트 슬롯 04", "name_ru": "Для разъёма №4", "name_zh": "植入体插槽 04", "nameID": 65867, "parentGroupID": 532 }, "622": { "description_de": "Implantate für den Subcervical Processing-Slot 5.", "description_en-us": "Implants intended for Subcervical Processing Slot 5.", "description_es": "Implantes para la ranura de procesamiento subcervical 5.", "description_fr": "Implants destinés au point de traitement sous-cervical 5.", "description_it": "Implants intended for Subcervical Processing Slot 5.", "description_ja": "頚下部プロセッシングスロット 5 用インプラント。", "description_ko": "경추 프로세스 슬롯 5 에 장착할 수 있는 임플란트입니다.", "description_ru": "Имплантаты, предназначенные для установки в подзатылочный разъем интерфейса №5.", "description_zh": "用于颈下植入体插槽5。", "descriptionID": 64794, "hasTypes": 1, "iconID": 2060, "name_de": "Implantat-Slot 05", "name_en-us": "Implant Slot 05", "name_es": "Ranura de implante 05", "name_fr": "Emplacement d'implant 05", "name_it": "Implant Slot 05", "name_ja": "インプラントスロット05", "name_ko": "임플란트 슬롯 05", "name_ru": "Для разъёма №5", "name_zh": "植入体插槽 05", "nameID": 65868, "parentGroupID": 532 }, "629": { "description_de": "Fortgeschrittene Technologien für den Transport von wertvollen Materialien.", "description_en-us": "Advanced technologies for the transportation of valuable materials.", "description_es": "Tecnologías avanzadas para el transporte de materiales valiosos.", "description_fr": "Des technologies avancées au service du transport de marchandises de valeur.", "description_it": "Advanced technologies for the transportation of valuable materials.", "description_ja": "貴重な資源を輸送するための高度なテクノロジー。", "description_ko": "자원을 수송하기 위한 화물 운송 기술이 적용된 함선입니다.", "description_ru": "Современные технологии на службе транспортировки ценных материалов.", "description_zh": "运输宝贵物资所需的先进技术。", "descriptionID": 65268, "hasTypes": 0, "iconID": 1443, "name_de": "Transportschiffe", "name_en-us": "Transport Ships", "name_es": "Naves de transporte", "name_fr": "Vaisseaux de transport", "name_it": "Transport Ships", "name_ja": "特化型輸送艦", "name_ko": "트랜스포터", "name_ru": "Транспортные корабли", "name_zh": "运输舰", "nameID": 66342, "parentGroupID": 1385 }, "630": { "description_de": "Amarr-Transportschiff-Designs.", "description_en-us": "Amarr transport ship designs.", "description_es": "Diseños de naves de transporte amarrianas.", "description_fr": "Modèles de vaisseaux de transport amarr.", "description_it": "Amarr transport ship designs.", "description_ja": "アマー輸送船設計図。", "description_ko": "아마르 트랜스포터 설계입니다.", "description_ru": "Транспортные корабли разработки Империи Amarr.", "description_zh": "艾玛运输舰设计", "descriptionID": 64795, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65869, "parentGroupID": 629 }, "631": { "description_de": "Caldari-Transportschiff-Designs.", "description_en-us": "Caldari transport ship designs.", "description_es": "Diseños de naves de transporte caldaris.", "description_fr": "Modèles de vaisseaux de transport caldari.", "description_it": "Caldari transport ship designs.", "description_ja": "カルダリ特化型輸送艦設計図。", "description_ko": "칼다리 트랜스포터 설계입니다.", "description_ru": "Транспортные корабли разработки Государства Caldari.", "description_zh": "加达里运输舰设计", "descriptionID": 64796, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65870, "parentGroupID": 629 }, "632": { "description_de": "Gallente-Transportschiff-Designs.", "description_en-us": "Gallente transport ship designs.", "description_es": "Diseños de naves de transporte gallentes.", "description_fr": "Modèles de vaisseaux de transport gallente.", "description_it": "Gallente transport ship designs.", "description_ja": "ガレンテ輸送船設計図。", "description_ko": "갈란테 트랜스포터 설계입니다.", "description_ru": "Транспортные корабли разработки Федерации Gallente.", "description_zh": "盖伦特运输舰设计", "descriptionID": 64797, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65871, "parentGroupID": 629 }, "633": { "description_de": "Minmatar Transportschiff-Designs.", "description_en-us": "Minmatar transport ship designs.", "description_es": "Diseños de naves de transporte minmatarianas.", "description_fr": "Modèles de vaisseaux de transport minmatar.", "description_it": "Minmatar transport ship designs.", "description_ja": "ミンマター特化型輸送艦設計図。", "description_ko": "민마타 트랜스포터 설계입니다.", "description_ru": "Транспортные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔运输舰设计", "descriptionID": 64798, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65872, "parentGroupID": 629 }, "634": { "description_de": "Blueprints von Schiffen der Transport-Klasse.", "description_en-us": "Blueprints of transport-class vessels.", "description_es": "Planos de naves de transporte.", "description_fr": "Plans de construction de vaisseaux de transport.", "description_it": "Blueprints of transport-class vessels.", "description_ja": "輸送級艦船のブループリント。", "description_ko": "수송선급 함선 블루프린트입니다.", "description_ru": "Чертежи транспортных кораблей.", "description_zh": "运输舰级别船只的蓝图。", "descriptionID": 64799, "hasTypes": 0, "iconID": 2703, "name_de": "Transportschiffe", "name_en-us": "Transport Ships", "name_es": "Naves de transporte", "name_fr": "Vaisseaux de transport", "name_it": "Transport Ships", "name_ja": "特化型輸送艦", "name_ko": "트랜스포터", "name_ru": "Транспортные корабли", "name_zh": "运输舰", "nameID": 65873, "parentGroupID": 204 }, "635": { "description_de": "Blueprints von Amarr-Transportschiff-Designs.", "description_en-us": "Blueprints of Amarr transport designs.", "description_es": "Planos de diseños de naves de transporte amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux de transport amarr.", "description_it": "Blueprints of Amarr transport designs.", "description_ja": "アマートランスポート設計図のブループリント。", "description_ko": "아마르 수송선 블루프린트입니다.", "description_ru": "Чертежи транспортных кораблей разработки Империи Amarr.", "description_zh": "艾玛运输舰设计蓝图", "descriptionID": 64800, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65874, "parentGroupID": 634 }, "636": { "description_de": "Blueprints von Caldari-Transportschiff-Designs.", "description_en-us": "Blueprints of Caldari transport designs.", "description_es": "Planos de diseños de naves de transporte caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux de transport caldari.", "description_it": "Blueprints of Caldari transport designs.", "description_ja": "カルダリトランスポート設計図のブループリント。", "description_ko": "칼다리 수송선 블루프린트입니다.", "description_ru": "Чертежи транспортных кораблей разработки Государства Caldari.", "description_zh": "加达里运输舰设计蓝图", "descriptionID": 64801, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65875, "parentGroupID": 634 }, "637": { "description_de": "Blueprints von Gallente-Transportschiff-Designs.", "description_en-us": "Blueprints of Gallente transport designs.", "description_es": "Planos de diseños de naves de transporte gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux de transport gallente.", "description_it": "Blueprints of Gallente transport designs.", "description_ja": "ガレンテトランスポート設計図のブループリント。", "description_ko": "갈란테 수송선 블루프린트입니다.", "description_ru": "Чертежи транспортных кораблей разработки Федерации Gallente.", "description_zh": "盖伦特运输舰设计蓝图", "descriptionID": 64802, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65876, "parentGroupID": 634 }, "638": { "description_de": "Blueprints von Minmatar-Transport-Designs.", "description_en-us": "Blueprints of Minmatar transport designs.", "description_es": "Planos de diseños de naves de transporte minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux de transport minmatar.", "description_it": "Blueprints of Minmatar transport designs.", "description_ja": "ミンマタートランスポート設計図のブループリント。", "description_ko": "민마타 수송선 블루프린트입니다.", "description_ru": "Чертежи транспортных кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔运输舰设计蓝图。", "descriptionID": 64803, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65877, "parentGroupID": 634 }, "639": { "description_de": "Zum Abschuss von sich schnell bewegenden Raketen-Projektilen.", "description_en-us": "For the launching of swift-moving rocket projectiles.", "description_es": "Para lanzar proyectiles autopropulsados de gran velocidad.", "description_fr": "Pour lancer des projectiles rapides de type roquette.", "description_it": "For the launching of swift-moving rocket projectiles.", "description_ja": "高速ロケットプロジェクタイルの発射用。", "description_ko": "고속 로켓 미사일을 사출하는 런처입니다.", "description_ru": "Применяются для запуска быстрых ракет ближнего боя.", "description_zh": "火箭发射器", "descriptionID": 64804, "hasTypes": 1, "iconID": 1345, "name_de": "Raketenwerfer", "name_en-us": "Rocket Launchers", "name_es": "Lanzacohetes", "name_fr": "Lance-roquettes", "name_it": "Rocket Launchers", "name_ja": "ロケットランチャー", "name_ko": "로켓 런처", "name_ru": "Лёгкие штурмовые", "name_zh": "火箭发射器", "nameID": 65878, "parentGroupID": 140 }, "640": { "description_de": "Zum Abschuss von leichten Raketen.", "description_en-us": "For the launching of light missiles.", "description_es": "Para lanzar misiles ligeros.", "description_fr": "Pour lancer des missiles légers.", "description_it": "For the launching of light missiles.", "description_ja": "ライトミサイルの発射用。", "description_ko": "라이트 미사일을 발사하는 런처입니다.", "description_ru": "Предназначены для пуска легких ракет.", "description_zh": "用以发射轻型导弹。", "descriptionID": 64805, "hasTypes": 1, "iconID": 168, "name_de": "Leichte Lenkwaffenwerfer", "name_en-us": "Light Missile Launchers", "name_es": "Lanzamisiles ligeros", "name_fr": "Lance-missiles légers", "name_it": "Light Missile Launchers", "name_ja": "ライトミサイルランチャー", "name_ko": "라이트 미사일 런처", "name_ru": "Лёгкие", "name_zh": "轻型导弹发射器", "nameID": 65879, "parentGroupID": 140 }, "641": { "description_de": "Für Kreuzer typische, schnellfeuernde Standard-Missile-Geschütze.", "description_en-us": "Fast-launching, cruiser-sized standard missile bays.", "description_es": "Plataformas de lanzamiento rápido de misiles de crucero estándar.", "description_fr": "Plateformes de lancement de missiles standard adaptées aux croiseurs, à fréquence de tir rapide.", "description_it": "Fast-launching, cruiser-sized standard missile bays.", "description_ja": "巡洋艦級の標準速射式ミサイルベイ。", "description_ko": "크루저급에 탑재되는 급속 일반 미사일 런처입니다.", "description_ru": "Стандартные скорострельные пусковые остановки для использования на крейсерах.", "description_zh": "快速发射的、巡洋舰尺寸的标准导弹发射巢。", "descriptionID": 64806, "hasTypes": 1, "iconID": 1345, "name_de": "Schnelle leichte Lenkwaffenwerfer", "name_en-us": "Rapid Light Missile Launchers", "name_es": "Lanzamisiles ligeros rápidos", "name_fr": "Lance-missiles légers rapides", "name_it": "Rapid Light Missile Launchers", "name_ja": "高速ライトミサイルランチャー", "name_ko": "급속 라이트 미사일 런처", "name_ru": "Скорострельные лёгкие", "name_zh": "轻型快速导弹发射器", "nameID": 65880, "parentGroupID": 140 }, "642": { "description_de": "Zum Abschuss von schweren Raketen.", "description_en-us": "For the launching of heavy missiles.", "description_es": "Para lanzar misiles pesados.", "description_fr": "Pour lancer des missiles lourds.", "description_it": "For the launching of heavy missiles.", "description_ja": "ヘビーミサイルの発射用。", "description_ko": "헤비 미사일을 발사하는 런처입니다.", "description_ru": "Пусковые установки, предназначенные для пуска тяжелых ракет.", "description_zh": "用于发射重型导弹。", "descriptionID": 64807, "hasTypes": 1, "iconID": 169, "name_de": "Schwere Werfer", "name_en-us": "Heavy Launchers", "name_es": "Lanzadores pesados", "name_fr": "Lance-missiles lourds", "name_it": "Heavy Launchers", "name_ja": "ヘビーランチャー", "name_ko": "헤비 미사일 런처", "name_ru": "Тяжёлые", "name_zh": "重型发射器", "nameID": 65881, "parentGroupID": 140 }, "643": { "description_de": "Zum Abschuss von Cruise Missiles. Können auch mit Torpedos bestückt werden.", "description_en-us": "For the launching of cruise missiles. Can also fit torpedoes.", "description_es": "Para lanzar misiles de crucero. También funciona con torpedos.", "description_fr": "Pour lancer des missiles de croisière. Peut également s'adapter aux torpilles.", "description_it": "For the launching of cruise missiles. Can also fit torpedoes.", "description_ja": "クルーズミサイルの発射用。トルピードにも適合。", "description_ko": "크루즈 미사일을 발사하는 런처입니다. 토피도 또한 탑재할 수 있습니다.", "description_ru": "Служат для пуска ракет дальнего боя и, при необходимости, торпед.", "description_zh": "用来发射巡航导弹的发射器。", "descriptionID": 64808, "hasTypes": 1, "iconID": 2530, "name_de": "Marschflugkörperwerfer", "name_en-us": "Cruise Launchers", "name_es": "Lanzacruceros", "name_fr": "Lance-missiles de croisière", "name_it": "Cruise Launchers", "name_ja": "クルーズランチャー", "name_ko": "크루즈 미사일 런처", "name_ru": "Дальнобойные", "name_zh": "巡航导弹发射器", "nameID": 65882, "parentGroupID": 140 }, "644": { "description_de": "Zum Abschuss von Torpedos und Cruise Missiles.", "description_en-us": "For the launching of torpedoes and cruise missiles.", "description_es": "Para lanzar torpedos y misiles de crucero.", "description_fr": "Pour lancer des missiles de croisière et des torpilles.", "description_it": "For the launching of torpedoes and cruise missiles.", "description_ja": "トルピードおよびクルーズミサイルの発射用。", "description_ko": "토피도 및 크루즈 미사일을 발사하는 런처입니다.", "description_ru": "Для пуска торпед и ракет дальнего боя.", "description_zh": "用于发射鱼雷。", "descriptionID": 64809, "hasTypes": 1, "iconID": 170, "name_de": "Torpedowerfer", "name_en-us": "Torpedo Launchers", "name_es": "Lanzatorpedos", "name_fr": "Lance-torpilles", "name_it": "Torpedo Launchers", "name_ja": "トルピードランチャー", "name_ko": "토피도 런처", "name_ru": "Торпедные аппараты", "name_zh": "鱼雷发射器", "nameID": 65883, "parentGroupID": 140 }, "645": { "description_de": "Systeme, konzipiert zur Verbesserung der Effizienz der Raketenwerfer.", "description_en-us": "Systems designed to improve missile launcher efficiency.", "description_es": "Sistemas diseñados para mejorar la eficiencia de los lanzamisiles.", "description_fr": "Systèmes conçus pour améliorer l'efficacité des lance-missiles.", "description_it": "Systems designed to improve missile launcher efficiency.", "description_ja": "ミサイルランチャーの効率を高めるシステム。", "description_ko": "미사일 런처 효율성을 향상시키는 시스템입니다.", "description_ru": "Системы, разработанные для повышения эффективности пусковых ракетных установок.", "description_zh": "提升导弹发射器的效率。", "descriptionID": 64810, "hasTypes": 1, "iconID": 21440, "name_de": "Ballistikkontrollsysteme", "name_en-us": "Ballistic Control Systems", "name_es": "Sistemas de control balístico", "name_fr": "Systèmes de contrôle balistique", "name_it": "Ballistic Control Systems", "name_ja": "弾道制御装置", "name_ko": "탄도 제어시스템", "name_ru": "Приборы контроля траектории", "name_zh": "弹道控制系统", "nameID": 65884, "parentGroupID": 143 }, "646": { "description_de": "Systeme, um die Projektilwaffeneffizienz zu steigern.", "description_en-us": "Systems designed to improve projectile weapon efficiency.", "description_es": "Sistemas diseñados para mejorar la eficiencia de las armas de proyectiles.", "description_fr": "Systèmes conçus pour améliorer l'efficacité des armes à projectiles.", "description_it": "Systems designed to improve projectile weapon efficiency.", "description_ja": "プロジェクタイル兵器の効率を高めるシステム。", "description_ko": "발사체 무기 효율성을 향상시키는 시스템입니다.", "description_ru": "Системы, разработанные для повышения эффективности огнестрельного оружия.", "description_zh": "这个系统专门被设计用来增强射弹武器的效能。", "descriptionID": 64811, "hasTypes": 1, "iconID": 26452, "name_de": "Kreiselstabilisatoren", "name_en-us": "Gyrostabilizers", "name_es": "Giroestabilizadores", "name_fr": "Gyrostabilisateurs", "name_it": "Gyrostabilizers", "name_ja": "回転制御機", "name_ko": "자이로 안정기", "name_ru": "Гиростабилизаторы", "name_zh": "回转稳定器", "nameID": 65885, "parentGroupID": 143 }, "647": { "description_de": "Systeme, um die Laserwaffeneffizienz zu steigern.", "description_en-us": "Systems designed to improve laser weapon efficiency.", "description_es": "Sistemas diseñados para mejorar la eficiencia de los láseres.", "description_fr": "Systèmes conçus pour améliorer l'efficacité des armes laser.", "description_it": "Systems designed to improve laser weapon efficiency.", "description_ja": "レーザー兵器の効率を高めるシステム。", "description_ko": "레이저 무기 효율성을 향상시키는 시스템입니다.", "description_ru": "Системы, разработанные для повышения эффективности лазерного оружия.", "description_zh": "这个系统专门被设计用来增强激光武器的效能。", "descriptionID": 64812, "hasTypes": 1, "iconID": 26453, "name_de": "Kühlkörper", "name_en-us": "Heat Sinks", "name_es": "Disipadores de calor", "name_fr": "Dissipateurs thermiques", "name_it": "Heat Sinks", "name_ja": "放熱機", "name_ko": "방열판", "name_ru": "Радиаторы", "name_zh": "散热槽", "nameID": 65886, "parentGroupID": 143 }, "648": { "description_de": "Systeme, die zur Verbesserung der Effizienz von Hybridwaffen gedacht sind.", "description_en-us": "Systems designed to improve hybrid weapon efficiency.", "description_es": "Sistemas diseñados para mejorar la eficiencia de las armas híbridas.", "description_fr": "Systèmes conçus pour améliorer l'efficacité des armes hybrides.", "description_it": "Systems designed to improve hybrid weapon efficiency.", "description_ja": "ハイブリッド兵器の効率を高めるシステム。", "description_ko": "하이브리드 무기 효율성을 향상시키는 시스템입니다.", "description_ru": "Системы, разработанные для повышения эффективности орудий гибридного действия.", "description_zh": "用于提高混合武器的效能。", "descriptionID": 64813, "hasTypes": 1, "iconID": 26454, "name_de": "Magnetfeldstabilisatoren", "name_en-us": "Magnetic Field Stabilizers", "name_es": "Estabilizadores de campo magnético", "name_fr": "Stabilisateurs de champ magnétique", "name_it": "Magnetic Field Stabilizers", "name_ja": "磁場制御機", "name_ko": "자기장 안정기", "name_ru": "Стабилизаторы магнитного поля", "name_zh": "磁性力场稳定器", "nameID": 65887, "parentGroupID": 143 }, "655": { "description_de": "Module die den Energiespeicher eines Raumschiffs beeinflussen und die Ausrüstungsmöglichkeiten modifizieren", "description_en-us": "Modules that affect a spaceship's capacitor and modify fitting capabilities", "description_es": "Módulos que afectan al condensador de la nave y modifican las posibilidades de equipamiento.", "description_fr": "Modules qui affectent le capaciteur d'un vaisseau et modifient ses capacités de montage", "description_it": "Modules that affect a spaceship's capacitor and modify fitting capabilities", "description_ja": "艦船のキャパシタ、および装備に関する能力に影響を及ぼすモジュール", "description_ko": "함선 캐패시터 및 피팅 기능을 개선하는 모듈입니다.", "description_ru": "Модули, необходимые для модернизации силовой установки корабля", "description_zh": "可以影响舰船电容器及改变装配能力的装备", "descriptionID": 64814, "hasTypes": 0, "iconID": 70, "name_de": "Ausrüstung für Ingenieurwesen", "name_en-us": "Engineering Equipment", "name_es": "Equipo de ingeniería", "name_fr": "Équipement d'ingénierie", "name_it": "Engineering Equipment", "name_ja": "エンジニアリング系装備", "name_ko": "엔지니어링 장비", "name_ru": "Инженерное оборудование", "name_zh": "工程装备", "nameID": 65888, "parentGroupID": 9 }, "656": { "description_de": "Module, die die Sensorleistung eines Raumschiffs stärken", "description_en-us": "Modules that strengthen the sensory capabilities of a spaceship", "description_es": "Módulos que refuerzan las capacidades sensoriales de la nave.", "description_fr": "Modules qui renforcent les capacités de détection d'un vaisseau", "description_it": "Modules that strengthen the sensory capabilities of a spaceship", "description_ja": "艦船のセンサーの能力を強化するモジュール", "description_ko": "함선 센서 성능을 강화하는 모듈입니다.", "description_ru": "Модули, увеличивающие эффективность систем обнаружения и сопровождения целей", "description_zh": "可以强化舰船的感应能力的装备", "descriptionID": 64815, "hasTypes": 0, "iconID": 104, "name_de": "Elektronik- & Sensorupgrades", "name_en-us": "Electronics and Sensor Upgrades", "name_es": "Mejoras electrónicas y de sensores", "name_fr": "Améliorations des détecteurs et de l'électronique", "name_it": "Electronics and Sensor Upgrades", "name_ja": "エレクトロニクスとセンサー強化", "name_ko": "전자기기 및 센서 업그레이드", "name_ru": "Улучшения сенсоров и электронных систем", "name_zh": "电子学和感应器升级", "nameID": 65889, "parentGroupID": 9 }, "657": { "description_de": "Module die die Leistung feindlicher Ziele stören und gegen selbige schützen", "description_en-us": "Modules that can disrupt capabilities of enemy targets and defend against same", "description_es": "Módulos capaces de inutilizar objetivos enemigos y defenderse de ellos.", "description_fr": "Modules qui peuvent perturber les capacités des cibles ennemies et permettent de se défendre contre celles-ci", "description_it": "Modules that can disrupt capabilities of enemy targets and defend against same", "description_ja": "敵艦の何らかの機能を妨害する、防御用のモジュール", "description_ko": "전자전 모듈은 적 타겟팅을 교란하거나 타겟팅 교란에 대한 저항력을 향상합니다.", "description_ru": "Модули снижения эффективности враждебных целей и защиты от них", "description_zh": "可以干扰敌对目标及防御敌方干扰的装备", "descriptionID": 64816, "hasTypes": 0, "iconID": 111, "name_de": "Elektronische Kriegsführung", "name_en-us": "Electronic Warfare", "name_es": "Guerra electrónica", "name_fr": "Guerre électronique", "name_it": "Electronic Warfare", "name_ja": "電子戦", "name_ko": "전자전 장비", "name_ru": "Системы РЭБ", "name_zh": "电子战", "nameID": 65890, "parentGroupID": 9 }, "658": { "description_de": "Überwachen und optimieren die Stromnetz- und Energiespeichersysteme.", "description_en-us": "Monitor and optimize the power grid and capacitor systems.", "description_es": "Hacen un seguimiento del sistema de potencia y el condensador y los optimizan.", "description_fr": "Contrôlez et optimisez le réseau d'alimentation et le capaciteur.", "description_it": "Monitor and optimize the power grid and capacitor systems.", "description_ja": "パワーグリッドとキャパシタシステムをモニターし、最適化するシステム。", "description_ko": "파워그리드 및 캐패시터 시스템을 최적화하는 진단 시스템입니다.", "description_ru": "Системы, следящие за состоянием энергосети и конденсатора корабля и повышающие эффективность их работы.", "description_zh": "监控和优化能源栅格和电容器系统。", "descriptionID": 64817, "hasTypes": 1, "iconID": 26546, "name_de": "Leistungsdiagnosesysteme", "name_en-us": "Power Diagnostic Systems", "name_es": "Sistemas de diagnóstico de energía", "name_fr": "Systèmes de diagnostic de puissance", "name_it": "Power Diagnostic Systems", "name_ja": "パワー計測システム", "name_ko": "전력 진단 시스템", "name_ru": "Системы диагностики энергоснабжения", "name_zh": "能源诊断系统", "nameID": 65891, "parentGroupID": 655 }, "659": { "description_de": "Lassen Energie-Kernstück-Optimierungsunterroutinen laufen, um maximale Effizienz zu erzielen.", "description_en-us": "Run power core optimization subroutines for maximum efficiency.", "description_es": "Ejecuta subrutinas de optimización del núcleo de potencia para lograr una eficiencia máxima.", "description_fr": "Gère des routines d'optimisation du réacteur principal pour une efficacité maximale.", "description_it": "Run power core optimization subroutines for maximum efficiency.", "description_ja": "効率を最大化するために、パワーコア最適化サブルーチンを実行。", "description_ko": "파워코어 최적화 서브루틴을 실행하여 효율성을 극대화시키는 장치입니다.", "description_ru": "Выполняют процессы оптимизации силового ядра для достижения максимальной эффективности.", "description_zh": "通过能源核心优化子系统来达到最大效率。", "descriptionID": 64818, "hasTypes": 1, "iconID": 26547, "name_de": "Reaktorkontrolleinheiten", "name_en-us": "Reactor Control Units", "name_es": "Unidades de control de reactor", "name_fr": "Unité de contrôle du réacteur", "name_it": "Reactor Control Units", "name_ja": "リアクター制御装置", "name_ko": "반응로 제어유닛", "name_ru": "Системы управления реактором", "name_zh": "反应堆控制单元", "nameID": 65892, "parentGroupID": 655 }, "660": { "description_de": "Ergänzungssysteme, die für eine pauschale Verstärkung der Kern-Energie sorgen.", "description_en-us": "Supplementary systems providing a flat boost to powercore energy.", "description_es": "Sistemas suplementarios que proporcionan un impulso constante al núcleo de potencia.", "description_fr": "Systèmes supplémentaires fournissant une amplification énergétique stable au réacteur principal.", "description_it": "Supplementary systems providing a flat boost to powercore energy.", "description_ja": "パワーコアエネルギーを一時的に上昇させる補助システム。", "description_ko": "파워코어 에너지 출력을 높여주는 보조 시스템입니다.", "description_ru": "Дополнительные системы, обеспечивающие фиксированный прирост мощности силовой установки.", "description_zh": "为能源核心提供少量额外输出的辅助系统。", "descriptionID": 65071, "hasTypes": 1, "iconID": 2105, "name_de": "Energiehilfssteuerung", "name_en-us": "Auxiliary Power Controls", "name_es": "Controles de potencia auxiliar", "name_fr": "Réglages de l'alimentation auxiliaire", "name_it": "Auxiliary Power Controls", "name_ja": "補助パワー制御", "name_ko": "보조 파워코어", "name_ru": "Вспомогательные реакторы", "name_zh": "辅助能量控制", "nameID": 66145, "parentGroupID": 655 }, "661": { "description_de": "Neutralisiert einen Teil der Energie im Energiespeicher eines Ziel-Schiffes.", "description_en-us": "Neutralize a portion of the target ship's capacitor energy.", "description_es": "Neutraliza parte de la energía del condensador de la nave objetivo.", "description_fr": "Neutralise une partie de l'énergie du capaciteur du vaisseau cible.", "description_it": "Neutralize a portion of the target ship's capacitor energy.", "description_ja": "ターゲット艦船のキャパシタエネルギーの一部を無効化。", "description_ko": "대상 함선의 캐패시터 에너지를 일정량 무력화하는 장치입니다.", "description_ru": "Нейтрализует часть энергии конденсатора корабля-цели.", "description_zh": "中和目标舰船的部分电容器能量。", "descriptionID": 65276, "hasTypes": 0, "iconID": 1283, "name_de": "Energieneutralisierer", "name_en-us": "Energy Neutralizers", "name_es": "Neutralizadores energéticos", "name_fr": "Neutraliseurs d'énergie", "name_it": "Energy Neutralizers", "name_ja": "エネルギーニュートライザー", "name_ko": "에너지 뉴트럴라이저", "name_ru": "Дистанционные нейтрализаторы заряда", "name_zh": "能量中和器", "nameID": 66350, "parentGroupID": 655 }, "662": { "description_de": "Zapft einen Teil der Energie im Energiespeicher des Zielschiffes ab.", "description_en-us": "Steal a portion of the target ship's capacitor energy.", "description_es": "Roba parte de la energía del condensador de la nave objetivo.", "description_fr": "Vole une partie de l'énergie du capaciteur du vaisseau cible.", "description_it": "Steal a portion of the target ship's capacitor energy.", "description_ja": "対象の艦船のキャパシタエネルギーを一部吸収する。", "description_ko": "대상 함선의 캐패시터를 흡수합니다.", "description_ru": "Выкачивает часть энергии накопителя корабля-цели.", "description_zh": "吸取目标舰船的部分电容器能量。", "descriptionID": 64819, "hasTypes": 0, "iconID": 1029, "name_de": "Energie-Nosferatu", "name_en-us": "Energy Nosferatu", "name_es": "Nosferatu de energía", "name_fr": "Nosferatu à énergie", "name_it": "Energy Nosferatu", "name_ja": "エネルギーノスフェラトゥ", "name_ko": "에너지 노스페라투", "name_ru": "Устройства паразитной подзарядки", "name_zh": "掠能器", "nameID": 65893, "parentGroupID": 655 }, "663": { "description_de": "Systeme, die den Transfer von Energie aus dem Energiespeicher zu einem anderen Schiff ermöglichen.", "description_en-us": "Systems allowing transfer of capacitor energy to another ship.", "description_es": "Sistemas que permiten transferir energía del condensador a otra nave.", "description_fr": "Systèmes permettant de transférer de l'énergie de capaciteur vers un autre vaisseau.", "description_it": "Systems allowing transfer of capacitor energy to another ship.", "description_ja": "キャパシタエネルギーを別の船に転送するためのシステム。", "description_ko": "대상 함선에게 캐패시터 에너지를 전송할 수 있는 시스템입니다.", "description_ru": "Системы, позволяющие передавать энергию конденсатора на другой корабль.", "description_zh": "能量转移阵列系统能将能量转移到目标舰船上。", "descriptionID": 64820, "hasTypes": 0, "iconID": 1035, "name_de": "Energiespeicher-Ferntransmitter", "name_en-us": "Remote Capacitor Transmitters", "name_es": "Transmisores de condensador remotos", "name_fr": "Transmetteurs de capaciteur à distance", "name_it": "Remote Capacitor Transmitters", "name_ja": "リモートキャパシタトランスミッター", "name_ko": "원격 캐패시터 전송기", "name_ru": "Установки дистанционного энергоснабжения", "name_zh": "远程电容传输装置", "nameID": 65894, "parentGroupID": 655 }, "664": { "description_de": "Erlauben dem Energiespeicher, mehr Energie zu speichern.", "description_en-us": "Allow the capacitor to store more energy.", "description_es": "Permiten que el condensador almacene más energía.", "description_fr": "Permettent au capaciteur de stocker plus d'énergie.", "description_it": "Allow the capacitor to store more energy.", "description_ja": "キャパシタに蓄えられるエネルギー量が増加。", "description_ko": "장착 시 캐패시터에 더 많은 전력을 저장할 수 있습니다.", "description_ru": "Позволяют увеличивать емкость конденсатора.", "description_zh": "使电容器能储存更多的能量。", "descriptionID": 64821, "hasTypes": 0, "iconID": 89, "name_de": "Energiespeicherbatterien", "name_en-us": "Capacitor Batteries", "name_es": "Baterías de condensador", "name_fr": "Batteries de capaciteur", "name_it": "Capacitor Batteries", "name_ja": "キャパシタバッテリー", "name_ko": "캐패시터 배터리", "name_ru": "Дополнительные батареи накопителя", "name_zh": "电容电池", "nameID": 65895, "parentGroupID": 655 }, "665": { "description_de": "Tragen zur Steigerung der Wiederaufladerate des Energiespeichers bei.", "description_en-us": "Provide a boost to the capacitor's recharge rate.", "description_es": "Dan un impulso al índice de carga del condensador.", "description_fr": "Amplifient la vitesse de recharge du capaciteur.", "description_it": "Provide a boost to the capacitor's recharge rate.", "description_ja": "キャパシタの充電速度が向上する。", "description_ko": "캐패시터 충전속도가 증가하는 장치입니다.", "description_ru": "Увеличивают скорость подзарядки конденсатора.", "description_zh": "增加电容器的回充速度。", "descriptionID": 64822, "hasTypes": 1, "iconID": 26457, "name_de": "Energiespeicher-Ladegeräte", "name_en-us": "Capacitor Rechargers", "name_es": "Cargadores del condensador", "name_fr": "Rechargeurs de capaciteur", "name_it": "Capacitor Rechargers", "name_ja": "キャパシタリチャージャー", "name_ko": "캐패시터 충전기", "name_ru": "Системы пассивной подзарядки накопителя", "name_zh": "电容回充器", "nameID": 65896, "parentGroupID": 655 }, "666": { "description_de": "Steigerung der Energiespeicherladerate in Verbindung mit einer Senkung der max. Energiespeicherkapazität.", "description_en-us": "Increase capacitor recharge rate while lowering maximum capacitor capacity.", "description_es": "Aumentan el índice de carga del condensador al tiempo que reduce su capacidad máxima.", "description_fr": "Augmentent la fréquence de recharge du capaciteur tout en réduisant sa charge maximale.", "description_it": "Increase capacitor recharge rate while lowering maximum capacitor capacity.", "description_ja": "キャパシタ充電速度が向上するが、最大キャパシタ容量は低下する。", "description_ko": "캐패시터 충전 속도가 증가하는 반면 최대 캐패시터 용량이 감소합니다.", "description_ru": "Увеличивают скорость подзарядки конденсатора, понижая его максимальную емкость.", "description_zh": "以损失电容器最大电容量来增加电容器回充速度。", "descriptionID": 64823, "hasTypes": 1, "iconID": 26456, "name_de": "Energiespeicher-Flussspulen", "name_en-us": "Capacitor Flux Coils", "name_es": "Bobinas de flujo de condensador", "name_fr": "Bobines de flux pour capaciteur", "name_it": "Capacitor Flux Coils", "name_ja": "キャパシタフラックスコイル", "name_ko": "캐패시터 플럭스 코일", "name_ru": "Силовые петли накопителя", "name_zh": "电容通量线圈", "nameID": 65897, "parentGroupID": 655 }, "667": { "description_de": "Steigerung der Energiespeicherladerate auf Kosten der Schildverstärkungsmöglichkeiten.", "description_en-us": "Increase capacitor recharge rate at the expense of shield boosting capability.", "description_es": "Aumentan el índice de carga del condensador a costa de la capacidad de potenciación del escudo.", "description_fr": "Augmentent la vitesse de recharge du capaciteur tout en réduisant la possibilité de booster le bouclier.", "description_it": "Increase capacitor recharge rate at the expense of shield boosting capability.", "description_ja": "シールドブースト能力を犠牲にして、キャパシタ充電速度を向上させる。", "description_ko": "캐패시터 충전속도가 증가하는 반면 실드 부스트의 효율이 감소합니다.", "description_ru": "Увеличивают скорость перезарядки конденсатора за счет эффективности систем накачки щита.", "description_zh": "以损失护盾回充增量能力来加大电容器回充速度。", "descriptionID": 64824, "hasTypes": 1, "iconID": 26455, "name_de": "Energiespeicher-Stromrelais", "name_en-us": "Capacitor Power Relays", "name_es": "Relés de potencia de condensador", "name_fr": "Relais de puissance pour capaciteur", "name_it": "Capacitor Power Relays", "name_ja": "キャパシタパワーリレイ", "name_ko": "캐패시터 릴레이", "name_ru": "Силовые реле накопителя", "name_zh": "电容能源继电器", "nameID": 65898, "parentGroupID": 655 }, "668": { "description_de": "Ermöglichen schnelle Energieschübe für den Energiespeicher.", "description_en-us": "Provide quick injections of power into the capacitor.", "description_es": "Inyectan rápidamente potencia en el condensador.", "description_fr": "Fournissent des injections rapides de puissance au capaciteur.", "description_it": "Provide quick injections of power into the capacitor.", "description_ja": "キャパシタにパワーを素早く補充する。", "description_ko": "캐패시터에 추가 전력을 주입합니다.", "description_ru": "Обеспечивают быструю подкачку конденсатора.", "description_zh": "给电容器快速地注入能量。", "descriptionID": 64825, "hasTypes": 0, "iconID": 1031, "name_de": "Energiespeicherbooster", "name_en-us": "Capacitor Boosters", "name_es": "Potenciadores de condensador", "name_fr": "Boosters de capaciteur", "name_it": "Capacitor Boosters", "name_ja": "キャパシタブースター", "name_ko": "캐패시터 부스터", "name_ru": "Системы подачи зарядов накопителя", "name_zh": "电容注电器", "nameID": 65899, "parentGroupID": 655 }, "669": { "description_de": "Verbessern die Zielerfassungsreichweite und Zielerfassungsgeschwindigkeit eines Schiffs.", "description_en-us": "Augment a ship's targeting range and target acquisition time.", "description_es": "Mejoran la distancia-objetivo y el tiempo de adquisición de objetivos.", "description_fr": "Augmentent la portée de visée d'un vaisseau et son temps d'acquisition de cible.", "description_it": "Augment a ship's targeting range and target acquisition time.", "description_ja": "艦船のターゲティング範囲とターゲット捕捉時間を向上させる。", "description_ko": "함선의 타겟팅 사거리 및 타겟팅 속도를 강화하는 장치입니다.", "description_ru": "Увеличивают дальность прицеливания и уменьшают время захвата цели.", "description_zh": "改进舰船的目标锁定范围和目标锁定时间。", "descriptionID": 64826, "hasTypes": 1, "iconID": 26727, "name_de": "Signalverstärker", "name_en-us": "Signal Amplifiers", "name_es": "Amplificadores de señal", "name_fr": "Amplificateurs de signal", "name_it": "Signal Amplifiers", "name_ja": "シグナル増幅機", "name_ko": "신호 증폭기", "name_ru": "Усилители сигнала", "name_zh": "信号放大器", "nameID": 65900, "parentGroupID": 656 }, "670": { "description_de": "Zur automatischen Aufschaltung von Feinden.", "description_en-us": "For automated targeting of hostiles.", "description_es": "Permiten la adquisición automatizada de objetivos.", "description_fr": "Pour le ciblage automatique des vaisseaux hostiles.", "description_it": "For automated targeting of hostiles.", "description_ja": "敵を自動的にターゲットとして設定する。", "description_ko": "자동화 타겟팅 시스텝입니다.", "description_ru": "Для автоматического захвата противника в прицел.", "description_zh": "自动锁定敌对目标。", "descriptionID": 64827, "hasTypes": 1, "iconID": 26721, "name_de": "Automatische Zielsysteme", "name_en-us": "Automated Targeting Systems", "name_es": "Sistemas de adquisición automatizada de objetivos", "name_fr": "Systèmes de ciblage automatisés", "name_it": "Automated Targeting Systems", "name_ja": "全自動ターゲットシステム", "name_ko": "오토 타겟팅 시스템", "name_ru": "Системы автоматического захвата целей", "name_zh": "自动锁定系统", "nameID": 65901, "parentGroupID": 656 }, "671": { "description_de": "Verleihen der Zielerfassungsreichweite und Zielerfassungsgeschwindigkeit eines Schiffs eine Erhöhung.", "description_en-us": "Provide a boost to a ship's targeting range and target acquisition time.", "description_es": "Potencian la distancia-objetivo y el tiempo de adquisición de objetivos de la nave.", "description_fr": "Amplifient temporairement la portée du système de ciblage d'un vaisseau et son temps d'acquisition de cible.", "description_it": "Provide a boost to a ship's targeting range and target acquisition time.", "description_ja": "艦船のターゲティング範囲とターゲット捕捉時間を向上させる。", "description_ko": "함선의 타겟팅 사거리 및 타겟팅 속도를 향상하는 장치입니다.", "description_ru": "Увеличивают дальность прицеливания корабля и уменьшают время захвата цели.", "description_zh": "增加锁定范围,缩短锁定时间。", "descriptionID": 64828, "hasTypes": 1, "iconID": 26726, "name_de": "Sensorbooster", "name_en-us": "Sensor Boosters", "name_es": "Potenciadores de sensor", "name_fr": "Boosters de détection", "name_it": "Sensor Boosters", "name_ja": "センサーブースター", "name_ko": "센서 부스터", "name_ru": "Активные усилители систем захвата целей", "name_zh": "感应增强器", "nameID": 65902, "parentGroupID": 656 }, "672": { "description_de": "Erlauben die heimliche Zielerfassung von Feinden.", "description_en-us": "Allow for surreptitious targeting of hostiles.", "description_es": "Permiten la adquisición subrepticia de objetivos.", "description_fr": "Permettent le ciblage furtif des vaisseaux ennemis.", "description_it": "Allow for surreptitious targeting of hostiles.", "description_ja": "敵を密かにターゲットとして設定する。", "description_ko": "은밀하게 타겟팅 할 수 있는 시스템입니다.", "description_ru": "Позволяют осуществлять захват в цель незаметно.", "description_zh": "能够在敌方不察觉的情况下锁定对方。", "descriptionID": 64829, "hasTypes": 1, "iconID": 26724, "name_de": "Passive Zielsysteme", "name_en-us": "Passive Targeting Systems", "name_es": "Sistemas de adquisición pasiva de objetivos", "name_fr": "Systèmes de ciblage passif", "name_it": "Passive Targeting Systems", "name_ja": "パッシブターゲットシステム", "name_ko": "패시브 타겟팅 시스템", "name_ru": "Системы скрытого захвата целей", "name_zh": "被动索敌系统", "nameID": 65903, "parentGroupID": 656 }, "673": { "description_de": "Vergrößern die Zielerfassungsreichweite und die Zielerfassungszeit des Zielschiffs.", "description_en-us": "Augment target ship's targeting range and target acquisition time.", "description_es": "Mejoran la distancia-objetivo y el tiempo de adquisición de objetivos.", "description_fr": "Augmentent la portée du système de ciblage et le temps d'acquisition de cible du vaisseau cible.", "description_it": "Augment target ship's targeting range and target acquisition time.", "description_ja": "ターゲット艦船のターゲティング範囲とターゲット捕捉時間を向上させる。", "description_ko": "대상 함선의 타겟팅 사거리 및 타겟팅 속도를 강화하는 장치입니다.", "description_ru": "Улучшают дальность прицеливания и время захвата цели союзного корабля.", "description_zh": "增强目标舰船的锁定范围和锁定速度。", "descriptionID": 64830, "hasTypes": 1, "iconID": 26725, "name_de": "Sensorfernbooster", "name_en-us": "Remote Sensor Boosters", "name_es": "Potenciadores de sensor remotos", "name_fr": "Boosters de capteur à distance", "name_it": "Remote Sensor Boosters", "name_ja": "リモートセンサーブースター", "name_ko": "원격 센서 부스터", "name_ru": "Ретрансляторы для систем захвата целей", "name_zh": "远程感应增强器", "nameID": 65904, "parentGroupID": 656 }, "675": { "description_de": "Benutzen Sie eine fortschrittliche Raumkrümmungstechnologie, um Schiffe unsichtbar zu machen.", "description_en-us": "Use advanced spatial distortion technology to render ships invisible.", "description_es": "Emplean avanzada tecnología de distorsión espacial para que las naves se vuelvan invisibles.", "description_fr": "Utilisent une technologie de distorsion spatiale avancée pour rendre les vaisseaux invisibles.", "description_it": "Use advanced spatial distortion technology to render ships invisible.", "description_ja": "最新の空間歪曲技術により宇宙船を不可視化する装置。", "description_ko": "첨단 공간 왜곡 기술을 사용하여 클로킹할 수 있습니다.", "description_ru": "Используют современные технологии искривления пространства для обеспечения невидимости кораблей.", "description_zh": "采用先进的空间扭曲技术使舰船无法被侦测到。", "descriptionID": 64832, "hasTypes": 1, "iconID": 2106, "name_de": "Tarnvorrichtungen", "name_en-us": "Cloaking Devices", "name_es": "Dispositivos de camuflaje", "name_fr": "Dispositifs de camouflage", "name_it": "Cloaking Devices", "name_ja": "遮蔽装置", "name_ko": "클로킹 장치", "name_ru": "Системы маскировки", "name_zh": "隐形装置", "nameID": 65906, "parentGroupID": 656 }, "676": { "description_de": "Steigern die CPU-Leistung des Schiffes.", "description_en-us": "Provide an increase in the ship's CPU output.", "description_es": "Incrementan el rendimiento de la CPU de la nave.", "description_fr": "Fournissent une augmentation de rendement du CPU du vaisseau.", "description_it": "Provide an increase in the ship's CPU output.", "description_ja": "船の CPU 出力を増加させる。", "description_ko": "함선의 CPU 용량이 증가하는 프로세서입니다.", "description_ru": "Увеличивают доступные вычислительные мощности центрального корабельного процессора.", "description_zh": "增加舰船的CPU。", "descriptionID": 64833, "hasTypes": 1, "iconID": 1405, "name_de": "CPU-Upgrades", "name_en-us": "CPU Upgrades", "name_es": "Mejoras de CPU", "name_fr": "Améliorations de CPU", "name_it": "CPU Upgrades", "name_ja": "CPU強化", "name_ko": "CPU 업그레이드", "name_ru": "Улучшения ЦПУ", "name_zh": "CPU升级模块", "nameID": 65907, "parentGroupID": 656 }, "677": { "description_de": "Entwickelt, um feindliche Sensoren zu stören oder außer Gefecht zu setzen.", "description_en-us": "Designed to disrupt and lock down enemy ships' sensor arrays.", "description_es": "Sirven para inhibir la red de sensores de las naves enemigas y fijarlas en el punto de mira.", "description_fr": "Conçues pour perturber et bloquer les modules de détection des vaisseaux ennemis.", "description_it": "Designed to disrupt and lock down enemy ships' sensor arrays.", "description_ja": "敵船のセンサーアレイをかく乱し、封じ込める。", "description_ko": "대상 함선의 센서 장치를 교란하거나 중지시킬 수 있는 장치입니다.", "description_ru": "Системы, разработанные для нарушения работы сенсорных систем на вражеских кораблях.", "description_zh": "专门用于干扰和禁闭敌方舰船的感应器阵列。", "descriptionID": 64834, "hasTypes": 0, "iconID": 109, "name_de": "Elektronische Gegenmaßnahmen", "name_en-us": "Electronic Counter Measures", "name_es": "Contramedidas electrónicas", "name_fr": "Contre-mesures électroniques", "name_it": "Electronic Counter Measures", "name_ja": "エレクトロニクス妨害機器", "name_ko": "ECM", "name_ru": "Модули глушения захвата целей", "name_zh": "ECM", "nameID": 65908, "parentGroupID": 657 }, "678": { "description_de": "Multifrequenzielle Störsignale zur Beeinträchtigung der Zielerfassung.", "description_en-us": "Targeting jammers emitting multi-frequency disruptive signals.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que emiten señales disruptivas multifrecuencia.", "description_fr": "Brouilleurs de ciblage qui émettent des signaux perturbateurs multi-fréquences.", "description_it": "Targeting jammers emitting multi-frequency disruptive signals.", "description_ja": "マルチ周波数かく乱信号を放出するターゲティングジャマー。", "description_ko": "다중 프리퀀시 신호를 내보내는 타겟팅 재머입니다.", "description_ru": "Постановщики помех системам наведения, испускающие искажающие сигналы в широком диапазоне частот.", "description_zh": "释放多频干扰信号的目标干扰装置。", "descriptionID": 64835, "hasTypes": 1, "iconID": 109, "name_de": "ECM-Pulsgeneratoren", "name_en-us": "ECM Bursts", "name_es": "Ráfagas ECM", "name_fr": "Salves CME", "name_it": "ECM Bursts", "name_ja": "ECMバースト", "name_ko": "ECM 버스트", "name_ru": "Генераторы импульсных помех", "name_zh": "ECM脉冲波", "nameID": 65909, "parentGroupID": 657 }, "679": { "description_de": "Verringern die Zielerfassungsgeschwindigkeit und Reichweite des Zielschiffs.", "description_en-us": "Decrease the targeting speed and range of target ship.", "description_es": "Reducen la velocidad y el alcance de la adquisición de objetivos de la nave enemiga.", "description_fr": "Réduisent la vitesse et la portée de ciblage du vaisseau cible.", "description_it": "Decrease the targeting speed and range of target ship.", "description_ja": "ターゲット艦船の照準速度およびターゲティング範囲を低下させる。", "description_ko": "대상 함선의 타겟팅 속도 및 사거리를 감소시키는 장치입니다.", "description_ru": "Уменьшают скорость и дальность прицеливания корабля-цели.", "description_zh": "降低目标舰船的锁定范围和锁定速度。", "descriptionID": 64836, "hasTypes": 1, "iconID": 105, "name_de": "Sensorferndämpfer", "name_en-us": "Remote Sensor Dampeners", "name_es": "Atenuadores de sensor remotos", "name_fr": "Atténuateurs de détection à distance", "name_it": "Remote Sensor Dampeners", "name_ja": "リモートセンサーダンプナー", "name_ko": "원격 센서 댐프너", "name_ru": "Модули подавления захвата целей", "name_zh": "远程感应抑阻器", "nameID": 65910, "parentGroupID": 657 }, "680": { "description_de": "Waffenstörer", "description_en-us": "Weapon Disruptors", "description_es": "Disruptores de armas.", "description_fr": "Perturbateurs d'armement", "description_it": "Weapon Disruptors", "description_ja": "狙った艦船のタレットの射程と追跡速度を低下させる。", "description_ko": "무기 디스럽터", "description_ru": "Подавители оружия", "description_zh": "武器扰断器", "descriptionID": 64837, "hasTypes": 1, "iconID": 1639, "name_de": "Waffenstörer", "name_en-us": "Weapon Disruptors", "name_es": "Disruptores de armas", "name_fr": "Perturbateurs d'armement", "name_it": "Weapon Disruptors", "name_ja": "トラッキング妨害器", "name_ko": "무기 디스럽터", "name_ru": "Подавители оружия", "name_zh": "武器扰断器", "nameID": 65911, "parentGroupID": 657 }, "681": { "description_de": "Verstärken Ihre Sensoren, damit sie einer Zielerfassungsstörung widerstehen.", "description_en-us": "Beef up your sensor strength to resist target jamming.", "description_es": "Aumenta la intensidad de los sensores para resistir la perturbación de objetivos.", "description_fr": "Donnent du peps à vos détecteurs pour qu'ils résistent mieux au brouillage de cible.", "description_it": "Beef up your sensor strength to resist target jamming.", "description_ja": "センサー強度を高めてターゲットジャミングへの抵抗力を増す。", "description_ko": "타겟 재밍에 대한 저항력 향상 및 센서 강도를 강화할 수 있는 장치입니다.", "description_ru": "Увеличивает силу сенсоров вашего корабля для противодействия наводимым помехам.", "description_zh": "增强你的感应器强度以抵抗电子干扰。", "descriptionID": 64838, "hasTypes": 0, "iconID": 104, "name_de": "Sensorsicherungsanlagen", "name_en-us": "Sensor Backup Arrays", "name_es": "Sistemas de sensores de apoyo", "name_fr": "Modules de détection de secours", "name_it": "Sensor Backup Arrays", "name_ja": "センサー補助", "name_ko": "센서 백업 시설", "name_ru": "Пассивные системы захвата целей", "name_zh": "感应器备用阵列", "nameID": 65912, "parentGroupID": 657 }, "683": { "description_de": "Zuerst verlangsamen Sie sie und dann klatschen Sie sie herunter.", "description_en-us": "Slow them down, then smack them down.", "description_es": "Ralentízalos antes de fulminarlos.", "description_fr": "Ralentissez-les, puis écrasez-les.", "description_it": "Slow them down, then smack them down.", "description_ja": "敵をひねり潰すため、まず足止めする。", "description_ko": "적의 속도를 하락시켜 쉽게 타격할 수 있습니다.", "description_ru": "Заставьте их сбросить ход ― и берите их тепленькими.", "description_zh": "将目标减速,然后再想怎么处理它。", "descriptionID": 64840, "hasTypes": 1, "iconID": 1284, "name_de": "Stasisnetze", "name_en-us": "Stasis Webifiers", "name_es": "Redes ralentizadoras", "name_fr": "Générateurs de stase", "name_it": "Stasis Webifiers", "name_ja": "ステイシスウェビファイヤー", "name_ko": "스테이시스 웹 생성기", "name_ru": "Стазис-индукторы", "name_zh": "停滞缠绕光束", "nameID": 65914, "parentGroupID": 657 }, "685": { "description_de": "Hilfssysteme, die für kurze Zeit die Sensorstärke erhöhen.", "description_en-us": "Auxiliary systems giving a boost to sensor strength for a short time.", "description_es": "Sistemas auxiliares que incrementan brevemente la intensidad de los sensores.", "description_fr": "Systèmes auxiliaires amplifiant la puissance de détection pendant une courte période.", "description_it": "Auxiliary systems giving a boost to sensor strength for a short time.", "description_ja": "センサー強度を一時的に高める補助システム。", "description_ko": "센서 강도를 일시적으로 강화하는 보조 시스템입니다.", "description_ru": "Дополнительные системы, увеличивающие мощность сенсоров на короткое время.", "description_zh": "在较短时间内提高感应器强度的辅助装置。", "descriptionID": 64841, "hasTypes": 0, "iconID": 104, "name_de": "EGGM", "name_en-us": "ECCM", "name_es": "ECCM", "name_fr": "CCME", "name_it": "ECCM", "name_ja": "ECCM", "name_ko": "ECCM", "name_ru": "Усилители сенсоров", "name_zh": "ECCM", "nameID": 65915, "parentGroupID": 657 }, "686": { "description_de": "Verstärken die Sensoren des Zielschiffs für eine kurze Zeit.", "description_en-us": "Boost a target ship's sensor strength for a short time.", "description_es": "Aumentan brevemente la intensidad de los sensores de la nave objetivo.", "description_fr": "Amplifient la puissance de détection du vaisseau cible pendant une courte période.", "description_it": "Boost a target ship's sensor strength for a short time.", "description_ja": "ターゲット艦船のセンサー強度を一時的に向上させる。", "description_ko": "대상 함선의 센서 강도를 짧은 시간 동안 강화합니다.", "description_ru": "Усиливают на короткое время мощность сенсоров корабля-цели.", "description_zh": "在较短的时间内增强目标舰船的感应器强度。", "descriptionID": 64842, "hasTypes": 1, "iconID": 110, "name_de": "Projizierte EGGM", "name_en-us": "Projected ECCM", "name_es": "ECCM proyectadas", "name_fr": "CCME projetée", "name_it": "Projected ECCM", "name_ja": "ECCMプロジェクション", "name_ko": "ECCM 방출기", "name_ru": "Дистанционные усилители сенсоров", "name_zh": "投射型ECCM", "nameID": 65916, "parentGroupID": 657 }, "687": { "description_de": "Steigern die Wiederaufladerate des Schilds, setzen aber das Maximum der Schildkapazität herab.", "description_en-us": "Increase shield recharge rate while lowering maximum shield capacity.", "description_es": "Aumentan la velocidad de carga del escudo al tiempo que reduce su capacidad máxima.", "description_fr": "Augmentent la vitesse de recharge du bouclier tout en réduisant sa capacité maximale.", "description_it": "Increase shield recharge rate while lowering maximum shield capacity.", "description_ja": "シールド自動回復率が向上するが、最大シールド容量は低下する。", "description_ko": "실드 회복률이 증가하는 반면 최대 실드량이 감소하는 장치입니다.", "description_ru": "Увеличивают скорость перезарядки щита, понижая его максимальную мощность.", "description_zh": "护盾通量线圈能提升护盾回充速度,但是会减少护盾的最大强度。", "descriptionID": 64843, "hasTypes": 1, "iconID": 26449, "name_de": "Schildflussspulen", "name_en-us": "Shield Flux Coils", "name_es": "Bobinas de flujo de escudo", "name_fr": "Bobines de flux de bouclier", "name_it": "Shield Flux Coils", "name_ja": "シールドフラックスコイル", "name_ko": "실드 플럭스 코일", "name_ru": "Силовые петли щитов", "name_zh": "护盾通量线圈", "nameID": 65917, "parentGroupID": 554 }, "688": { "description_de": "Leiten Energie vom Energiekern des Schiffes ab, um die Wiederaufladerate des Schilds zu erhöhen.", "description_en-us": "Divert power from ship's core to shields, increasing shield recharge rate.", "description_es": "Desvían energía del núcleo de la nave a los escudos, lo que acelera la carga.", "description_fr": "Transfèrent la puissance du réacteur du vaisseau vers les boucliers pour augmenter leur vitesse de recharge.", "description_it": "Divert power from ship's core to shields, increasing shield recharge rate.", "description_ja": "艦船のコアからシールドにパワーを転換して、シールド自動回復効率を向上させる。", "description_ko": "코어의 전력을 실드로 송출하여 실드 회복 속도를 증가시킵니다.", "description_ru": "Отводят энергию от силовой установки корабля к щиту, повышая скорость его перезарядки.", "description_zh": "将舰船驱动核心中的能源输送给护盾,增加护盾的回充速度。", "descriptionID": 64844, "hasTypes": 1, "iconID": 26450, "name_de": "Schildstromrelais", "name_en-us": "Shield Power Relays", "name_es": "Relés de potencia de escudo", "name_fr": "Relais d’alimentation de bouclier", "name_it": "Shield Power Relays", "name_ja": "シールドパワーリレー", "name_ko": "실드 릴레이", "name_ru": "Силовые реле щитов", "name_zh": "护盾能源继电器", "nameID": 65918, "parentGroupID": 554 }, "689": { "description_de": "Für Fregatten typische Energie-Destabilisatoren.", "description_en-us": "Frigate-sized energy destabilizers.", "description_es": "Desestabilizadores energéticos para naves de tamaño fragata.", "description_fr": "Déstabilisateurs d'énergie adaptés aux frégates.", "description_it": "Frigate-sized energy destabilizers.", "description_ja": "フリゲート級エネルギーディスタビライザー。", "description_ko": "프리깃급 함선의 에너지 뉴트럴라이저입니다.", "description_ru": "Дестабилизаторы энергетических модулей, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别能量扰乱装置。", "descriptionID": 64845, "hasTypes": 1, "iconID": 1283, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "スモール", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65919, "parentGroupID": 661 }, "690": { "description_de": "Energie-Destabilisatoren für Schiffe der Kreuzer-Klasse.", "description_en-us": "Cruiser-sized energy destabilizers.", "description_es": "Desestabilizadores energéticos para naves de tamaño crucero.", "description_fr": "Déstabilisateurs d'énergie adaptés aux croiseurs.", "description_it": "Cruiser-sized energy destabilizers.", "description_ja": "巡洋艦級エネルギーディスタビライザー。", "description_ko": "크루저급 에너지 뉴트럴라이저입니다.", "description_ru": "Дестабилизаторы энергетических модулей, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别能量扰乱装置。", "descriptionID": 64846, "hasTypes": 1, "iconID": 1283, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "ミディアム", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65920, "parentGroupID": 661 }, "691": { "description_de": "Schlachtschiffgroße Energiedestabilisatoren.", "description_en-us": "Battleship-sized energy destabilizers.", "description_es": "Desestabilizadores energéticos para naves de tamaño acorazado.", "description_fr": "Déstabilisateurs d'énergie adaptés aux cuirassés.", "description_it": "Battleship-sized energy destabilizers.", "description_ja": "戦艦級エネルギーディスタビライザー。", "description_ko": "배틀쉽급 에너지 뉴트럴라이저입니다.", "description_ru": "Дестабилизаторы энергетических модулей, предназначенные для использования на линейных кораблях.", "description_zh": "战列舰级别能量扰乱装置。", "descriptionID": 64847, "hasTypes": 1, "iconID": 1283, "name_de": "Schwer", "name_en-us": "Heavy", "name_es": "Pesado", "name_fr": "Lourd", "name_it": "Heavy", "name_ja": "ヘビー", "name_ko": "대형", "name_ru": "Тяжёлые", "name_zh": "重型", "nameID": 65921, "parentGroupID": 661 }, "692": { "description_de": "Für Fregatten typische Energievampire.", "description_en-us": "Frigate-sized energy vampires.", "description_es": "Chupaenergía para naves de tamaño fragata.", "description_fr": "Vampires énergétiques adaptés aux frégates.", "description_it": "Frigate-sized energy vampires.", "description_ja": "フリゲート級エネルギーヴァンパイア。", "description_ko": "프리깃급 에너지 노스페라투입니다.", "description_ru": "Энергетические модули-вампиры, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别能量吸取装置。", "descriptionID": 64848, "hasTypes": 1, "iconID": 1029, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "スモール", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65922, "parentGroupID": 662 }, "693": { "description_de": "Energievampire für Schiffe der Kreuzer-Klasse.", "description_en-us": "Cruiser-sized energy vampires.", "description_es": "Chupaenergía para naves de tamaño crucero.", "description_fr": "Vampires énergétiques adaptés aux croiseurs.", "description_it": "Cruiser-sized energy vampires.", "description_ja": "巡洋艦級エネルギーヴァンパイア。", "description_ko": "크루저급 에너지 노스페라투입니다.", "description_ru": "Энергетические модули-вампиры, предназначенные для установки на корабли крейсерского класса.", "description_zh": "巡洋舰级别能量吸取装置。", "descriptionID": 64849, "hasTypes": 1, "iconID": 1029, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "ミディアム", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65923, "parentGroupID": 662 }, "694": { "description_de": "Schlachtschiffgroße Energievampire.", "description_en-us": "Battleship-sized energy vampires.", "description_es": "Chupaenergía para naves de tamaño acorazado.", "description_fr": "Vampires énergétiques adaptés aux cuirassés.", "description_it": "Battleship-sized energy vampires.", "description_ja": "戦艦級のエネルギーヴァンパイア。", "description_ko": "배틀쉽급 에너지 노스페라투입니다.", "description_ru": "Энергетические модули-вампиры, предназначенные для использования на линейных кораблях.", "description_zh": "战列舰级别能量吸取装置。", "descriptionID": 64850, "hasTypes": 1, "iconID": 1029, "name_de": "Schwer", "name_en-us": "Heavy", "name_es": "Pesado", "name_fr": "Lourd", "name_it": "Heavy", "name_ja": "ヘビー", "name_ko": "대형", "name_ru": "Тяжёлые", "name_zh": "重型", "nameID": 65924, "parentGroupID": 662 }, "695": { "description_de": "Für Fregatten typische Energietransferanlagen.", "description_en-us": "Frigate-sized energy transfer arrays.", "description_es": "Matrices de transferencia energética para naves de tamaño fragata.", "description_fr": "Modules de transfert d'énergie adaptés aux frégates.", "description_it": "Frigate-sized energy transfer arrays.", "description_ja": "フリゲート級エネルギートランスファーアレイ。", "description_ko": "프리깃급 함선의 에너지 전송기 시설입니다.", "description_ru": "Модули передачи энергии, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别能量传输阵列。", "descriptionID": 64851, "hasTypes": 1, "iconID": 1035, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65925, "parentGroupID": 663 }, "696": { "description_de": "Energietransferanlagen für Schiffe der Kreuzer-Klasse.", "description_en-us": "Cruiser-sized energy transfer arrays.", "description_es": "Matrices de transferencia energética para naves de tamaño crucero.", "description_fr": "Modules de transfert d'énergie adaptés aux croiseurs.", "description_it": "Cruiser-sized energy transfer arrays.", "description_ja": "巡洋艦級エネルギートランスファーアレイ。", "description_ko": "크루저급 에너지 전송 장치입니다.", "description_ru": "Модули передачи энергии, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别能量传输阵列。", "descriptionID": 64852, "hasTypes": 1, "iconID": 1035, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65926, "parentGroupID": 663 }, "697": { "description_de": "Für Schlachtschiffe typische Energietransferanlagen.", "description_en-us": "Battleship-sized energy transfer arrays.", "description_es": "Matrices de transferencia energética para naves de tamaño acorazado.", "description_fr": "Modules de transfert d'énergie adaptés aux cuirassés.", "description_it": "Battleship-sized energy transfer arrays.", "description_ja": "戦艦級のエネルギートランスファーアレイ。", "description_ko": "배틀쉽급 에너지 전송 장치입니다.", "description_ru": "Модули передачи энергии, предназначенные для установки на линкоры.", "description_zh": "战列舰级别能量转移阵列。", "descriptionID": 64853, "hasTypes": 1, "iconID": 1035, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65927, "parentGroupID": 663 }, "698": { "description_de": "Kleine Energiespeicher-Verstärker, für den Fall, dass Stromnetz und CPU Mangelware sind.", "description_en-us": "Small capacitor boosters, for when powergrid and CPU are scarce.", "description_es": "Potenciadores de condensador pequeños para cuando el sistema de potencia y la CPU se queden cortos.", "description_fr": "Petits boosters de capaciteur, pour ceux et celles dont le CPU et le réseau d'alimentation sont réduits.", "description_it": "Small capacitor boosters, for when powergrid and CPU are scarce.", "description_ja": "小型キャパシタブースター。CPU とパワーグリッドが乏しいときのために。", "description_ko": "파워그리드 및 CPU가 부족할 때 보충해주는 소형 캐패시터 부스터입니다.", "description_ru": "Малые системы пополнения накопителя, потребляющие минимальное количество мощностей ЦПУ и энергосети.", "description_zh": "小型电容注电器,当能量栅格和CPU较为紧张的时候可以使用。", "descriptionID": 64854, "hasTypes": 1, "iconID": 1031, "name_de": "Mikro", "name_en-us": "Micro", "name_es": "Micro", "name_fr": "Micro", "name_it": "Micro", "name_ja": "超小型", "name_ko": "마이크로", "name_ru": "Сверхмалые", "name_zh": "微型", "nameID": 65928, "parentGroupID": 668 }, "699": { "description_de": "Für Fregatten typische Energiespeicher-Verstärker.", "description_en-us": "Frigate-sized capacitor boosters.", "description_es": "Potenciadores de condensador para naves de tamaño fragata.", "description_fr": "Boosters de capaciteur adaptés aux frégates.", "description_it": "Frigate-sized capacitor boosters.", "description_ja": "フリゲート級キャパシタブースター。", "description_ko": "프리깃급 캐패시터 부스터입니다.", "description_ru": "Системы пополнения накопителя, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别电容注电器。", "descriptionID": 64855, "hasTypes": 1, "iconID": 1031, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65929, "parentGroupID": 668 }, "700": { "description_de": "Energiespeicher-Verstärker für Schiffe der Kreuzer-Klasse.", "description_en-us": "Cruiser-sized capacitor boosters.", "description_es": "Potenciadores de condensador para naves de tamaño crucero.", "description_fr": "Boosters de capaciteur adaptés aux croiseurs.", "description_it": "Cruiser-sized capacitor boosters.", "description_ja": "巡洋艦級のキャパシタブースター。", "description_ko": "크루저급 캐패시터 부스터입니다.", "description_ru": "Системы пополнения накопителя для установки на корабли линейного тоннажа.", "description_zh": "巡洋舰级别电容注电器。", "descriptionID": 64856, "hasTypes": 1, "iconID": 1031, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65930, "parentGroupID": 668 }, "701": { "description_de": "Schlachtschiffgroße Energiespeicher-Verstärker.", "description_en-us": "Battleship-sized capacitor boosters.", "description_es": "Potenciadores de condensador para naves de tamaño acorazado.", "description_fr": "Boosters de capaciteur adaptés aux cuirassés.", "description_it": "Battleship-sized capacitor boosters.", "description_ja": "戦艦級キャパシタブースター。", "description_ko": "배틀쉽급 캐패시터 부스터입니다.", "description_ru": "Системы пополнения накопителя для установки на корабли линейного тоннажа.", "description_zh": "战列舰级别电容注电器。", "descriptionID": 64857, "hasTypes": 1, "iconID": 1031, "name_de": "Schwer", "name_en-us": "Heavy", "name_es": "Pesado", "name_fr": "Lourd", "name_it": "Heavy", "name_ja": "大型", "name_ko": "대형", "name_ru": "Тяжёлые", "name_zh": "重型", "nameID": 65931, "parentGroupID": 668 }, "702": { "description_de": "Führen zu einem geringen Anstieg der Energie im Energiespeicher.", "description_en-us": "Give a small increase in capacitor energy.", "description_es": "Aumentan un poco la energía del condensador.", "description_fr": "Pour une légère augmentation de l'énergie du capaciteur.", "description_it": "Give a small increase in capacitor energy.", "description_ja": "キャパシタエネルギーがわずかに増加。", "description_ko": "장착 시 소량의 캐패시터 에너지가 증가합니다.", "description_ru": "Незначительно увеличивают объем энергии конденсатора.", "description_zh": "为电容器提供较小的能源补充。", "descriptionID": 64858, "hasTypes": 1, "iconID": 89, "name_de": "Mikro", "name_en-us": "Micro", "name_es": "Micro", "name_fr": "Micro", "name_it": "Micro", "name_ja": "超小型", "name_ko": "마이크로", "name_ru": "Сверхмалые", "name_zh": "微型", "nameID": 65932, "parentGroupID": 664 }, "703": { "description_de": "Für Fregatten typische Energiespeicher-Batterien.", "description_en-us": "Frigate-sized capacitor batteries.", "description_es": "Baterías de condensador para naves de tamaño fragata.", "description_fr": "Batteries de capaciteur adaptées aux frégates.", "description_it": "Frigate-sized capacitor batteries.", "description_ja": "フリゲート級キャパシタバッテリー。", "description_ko": "프리깃급 캐패시터 배터리입니다.", "description_ru": "Батареи конденсатора, предназначенные для установки на фрегаты.", "description_zh": "护卫舰级别电容器电池。", "descriptionID": 64859, "hasTypes": 1, "iconID": 89, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 65933, "parentGroupID": 664 }, "704": { "description_de": "Energiespeicher-Batterien für Schiffe der Kreuzer-Klasse.", "description_en-us": "Cruiser-sized capacitor batteries.", "description_es": "Baterías de condensador para naves de tamaño crucero.", "description_fr": "Batteries de capaciteur adaptées aux croiseurs.", "description_it": "Cruiser-sized capacitor batteries.", "description_ja": "巡洋艦級キャパシタバッテリー。", "description_ko": "크루저급 캐패시터 배터리입니다.", "description_ru": "Батареи конденсатора, предназначенные для установки на крейсеры.", "description_zh": "巡洋舰级别电容器电池。", "descriptionID": 64860, "hasTypes": 1, "iconID": 89, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 65934, "parentGroupID": 664 }, "705": { "description_de": "Für Schlachtschiffe typische Energiespeicher-Batterien.", "description_en-us": "Battleship-sized capacitor batteries.", "description_es": "Baterías de condensador para naves de tamaño acorazado.", "description_fr": "Batteries de capaciteur adaptées aux cuirassés.", "description_it": "Battleship-sized capacitor batteries.", "description_ja": "戦艦級のキャパシタバッテリー。", "description_ko": "배틀쉽급 캐패시터 배터리입니다.", "description_ru": "Батареи конденсатора, предназначенные для установки на линкоры.", "description_zh": "战列舰级别电容器电池。", "descriptionID": 64861, "hasTypes": 1, "iconID": 89, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 65935, "parentGroupID": 664 }, "706": { "description_de": "Computerisierte Systeme, die dazu entwickelt wurden, die Nachführgeschwindigkeit von Geschütztürmen zu erhöhen.", "description_en-us": "Computerized systems designed to improve turret tracking.", "description_es": "Sistemas informatizados diseñados para mejorar la capacidad de rastreo de las torretas.", "description_fr": "Systèmes informatisés conçus pour améliorer la poursuite des tourelles.", "description_it": "Computerized systems designed to improve turret tracking.", "description_ja": "タレット追跡を向上させるコンピュータシステム。", "description_ko": "터렛 트래킹 성능을 향상하는 컴퓨팅 시스템입니다.", "description_ru": "Компьютерные системы, разработанные для улучшения слежения орудий за целью.", "description_zh": "用于增强炮台跟踪能力的计算机系统。", "descriptionID": 64862, "hasTypes": 1, "iconID": 3346, "name_de": "Nachführungscomputer", "name_en-us": "Tracking Computers", "name_es": "Ordenadores de rastreo", "name_fr": "Ordinateurs de suivi", "name_it": "Tracking Computers", "name_ja": "トラッキングコンピューター", "name_ko": "트래킹 컴퓨터", "name_ru": "Вычислители наводки орудий", "name_zh": "索敌计算机", "nameID": 65936, "parentGroupID": 143 }, "707": { "description_de": "Fest verdrahtete Systeme, die dazu entwickelt wurden, die Nachführgeschwindigkeit von Geschütztürmen zu erhöhen.", "description_en-us": "Hardwired systems designed to improve turret tracking.", "description_es": "Sistemas integrados diseñados para mejorar la capacidad de rastreo de las torretas.", "description_fr": "Systèmes câblés conçus pour améliorer la poursuite des tourelles.", "description_it": "Hardwired systems designed to improve turret tracking.", "description_ja": "タレット追跡を向上させるシステム。", "description_ko": "터렛 트래킹 성능을 향상하는 하드와이어링 시스템입니다.", "description_ru": "Сложные системы, разработанные для улучшения слежения орудий за целью.", "description_zh": "增强炮台跟踪速度的固件系统。", "descriptionID": 64863, "hasTypes": 1, "iconID": 1640, "name_de": "Nachführungsverbesserungen", "name_en-us": "Tracking Enhancers", "name_es": "Intensificadores de rastreo", "name_fr": "Optimisateurs de suivi", "name_it": "Tracking Enhancers", "name_ja": "トラッキングエンハンサー", "name_ko": "트래킹 향상장치", "name_ru": "Приводы наводки орудий", "name_zh": "索敌增强器", "nameID": 65937, "parentGroupID": 143 }, "708": { "description_de": "Entwickelt um die Nachführgeschwindigkeit eines anderen Schiffs zu erhöhen.", "description_en-us": "Designed to give a boost to another ship's tracking speed.", "description_es": "Diseñados para potenciar la velocidad de rastreo de otra nave.", "description_fr": "Conçues pour amplifier la vitesse de poursuite d'un autre vaisseau.", "description_it": "Designed to give a boost to another ship's tracking speed.", "description_ja": "他の艦船の追跡速度を一時的に高める。", "description_ko": "대상 함선의 트래킹 속도를 향상할 수 있는 시스템입니다.", "description_ru": "Разработаны для увеличения скорости слежения орудий другого корабля за целью.", "description_zh": "增强另外一艘舰船炮台跟踪速度的链接系统。", "descriptionID": 64864, "hasTypes": 1, "iconID": 3346, "name_de": "Fern-Nachführungscomputer", "name_en-us": "Remote Tracking Computers", "name_es": "Ordenadores de rastreo remoto", "name_fr": "Ordinateurs de suivi à distance", "name_it": "Remote Tracking Computers", "name_ja": "リモートトラッキングコンピューター", "name_ko": "원격 트래킹 컴퓨터", "name_ru": "Передатчики данных наводки", "name_zh": "远距索敌计算机", "nameID": 65938, "parentGroupID": 143 }, "711": { "description_de": "Für Fernscans des Frachtraums eines Zielschiffes.", "description_en-us": "For remote scanning of a target ship's cargo hold.", "description_es": "Para escanear a distancia la bodega de una nave objetivo.", "description_fr": "Pour scanner à distance le contenu de la soute de chargement du vaisseau cible.", "description_it": "For remote scanning of a target ship's cargo hold.", "description_ja": "ターゲット艦船のカーゴホールドの遠隔スキャンが可能。", "description_ko": "대상 함선의 화물실을 원격으로 스캔할 수 있는 장치입니다.", "description_ru": "Для удаленного сканирования грузовых отсеков кораблей.", "description_zh": "可以在一定距离上对目标舰船的货柜舱进行扫描。", "descriptionID": 64865, "hasTypes": 1, "iconID": 106, "name_de": "Frachtscanner", "name_en-us": "Cargo Scanners", "name_es": "Escáneres de carga", "name_fr": "Scanners de soute", "name_it": "Cargo Scanners", "name_ja": "カーゴスキャナー", "name_ko": "화물 스캐너", "name_ru": "Комплексы досмотра груза", "name_zh": "货舱扫描器", "nameID": 65939, "parentGroupID": 1708 }, "712": { "description_de": "Abschusshangars, die für den Abschuss von Scan-Sonden für die stellare Dreiecksmethode geschaffen sind.", "description_en-us": "Launcher bays designed to fire scan probes for stellar triangulation.", "description_es": "Plataformas de lanzamiento diseñadas para disparar sondas de escaneo para la triangulación estelar.", "description_fr": "Plateformes de lancement conçues pour envoyer des sondes de balayage afin d'obtenir une triangulation stellaire.", "description_it": "Launcher bays designed to fire scan probes for stellar triangulation.", "description_ja": "恒星三角測量を行うためのスキャンプローブを打ち上げるランチャーベイ。", "description_ko": "삼각 측량 천문기술이 탑재된 스캔 프로브를 사출할 수 있는 런처입니다.", "description_ru": "Пусковые установки, предназначенные для запуска сканирующих зондов.", "description_zh": "进行空间三角扫描时,用于发射扫描探针的发射舱。", "descriptionID": 65188, "hasTypes": 1, "iconID": 2677, "name_de": "Scansondenwerfer", "name_en-us": "Scan Probe Launchers", "name_es": "Lanzasondas de escaneo", "name_fr": "Lanceurs de sondes de balayage", "name_it": "Scan Probe Launchers", "name_ja": "スキャンプローブランチャー", "name_ko": "스캔 프로브 런처", "name_ru": "Пусковые установки разведзондов", "name_zh": "扫描探针发射器", "nameID": 66262, "parentGroupID": 1708 }, "713": { "description_de": "Beschaffen taktische Analysen der Fähigkeiten eines Zielschiffs.", "description_en-us": "Provide tactical analysis of a target ship's capabilities.", "description_es": "Proporcionan análisis tácticos de las capacidades de la nave objetivo.", "description_fr": "Fournissent une analyse tactique des capacités du vaisseau cible.", "description_it": "Provide tactical analysis of a target ship's capabilities.", "description_ja": "ターゲット艦船の戦闘能力を解析する。", "description_ko": "대상 함선의 제원 및 성능을 확인할 수 있는 스캔 장치입니다.", "description_ru": "Производят тактический анализ характеристик корабля-цели.", "description_zh": "对目标舰船的战斗力进行战术分析。", "descriptionID": 64866, "hasTypes": 1, "iconID": 107, "name_de": "Schiffsscanner", "name_en-us": "Ship Scanners", "name_es": "Escáneres de nave", "name_fr": "Scanners du vaisseau", "name_it": "Ship Scanners", "name_ja": "シップスキャナー", "name_ko": "함선 스캐너", "name_ru": "Комплексы досмотра оснастки", "name_zh": "舰船扫描器", "nameID": 65940, "parentGroupID": 1708 }, "714": { "description_de": "Bergbausensor-Ausrüstung, die den integrierten Bergbauscanner verbessert und Vorteile für den kritischen Erfolg des Bergbaulasers sowie die Wahrscheinlichkeit von Rückständen bietet.", "description_en-us": "Mining sensor equipment that enhances the integrated mining scanner and provides benefits to mining laser critical success and residue chance.", "description_es": "Equipo de sensores mineros que mejora el escáner de minería integrado, aumentando las probabilidades de éxito crítico y reduciendo la generación de residuos en los láseres de minería.", "description_fr": "Équipement détecteur d'extraction minière qui améliore le scanner d'extraction intégré et offre des avantages pour le succès critique du laser d'extraction et la probabilité de résidus.", "description_it": "Mining sensor equipment that enhances the integrated mining scanner and provides benefits to mining laser critical success and residue chance.", "description_ja": "統合型採掘用スキャナーを強化し、採掘レーザーのクリティカル率と残留物率を改善する採掘センサー。", "description_ko": "채굴 스캐너를 강화하는 통합 채굴 센서 장비로 채굴 레이저 대량 채굴 확률 및 손실 확률을 조정합니다.", "description_ru": "Это оборудование увеличивает мощность интегрированного бурового сканера, а также усиливает буровой лазер, повышая шанс критического удара и снижая вероятность получения отходов.", "description_zh": "一种采矿传感器设备,可增强集成采矿勘探仪,同时提高采矿激光器的暴击率,减少出现残渣的几率。", "descriptionID": 64867, "hasTypes": 1, "iconID": 2732, "name_de": "Bergbauvermessungs-Chipsätze", "name_en-us": "Mining Survey Chipsets", "name_es": "Chipsets de prospección de minería", "name_fr": "Puces d'arpentage d'extraction minière", "name_it": "Mining Survey Chipsets", "name_ja": "採掘調査用チップセット", "name_ko": "채굴 조사 칩셋", "name_ru": "Считывающие буровые чипы", "name_zh": "采矿调查芯片组", "nameID": 65941, "parentGroupID": 1708 }, "715": { "description_de": "Zielerfassungsstörer, die auf den Gebrauch gegen magnetometrische Sensoren spezialisiert sind.", "description_en-us": "Targeting jammers specialized for use against magnetometric sensors.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que inhiben los sensores magnetométricos.", "description_fr": "Brouilleurs de ciblage spécifiquement destinés à être utilisés contre les détecteurs magnétométriques.", "description_it": "Targeting jammers specialized for use against magnetometric sensors.", "description_ja": "磁気測定センサーを妨害するためのターゲッティングジャマー。", "description_ko": "자기장 센서 교란에 사용되는 타겟팅 재머입니다.", "description_ru": "Постановщики помех системам наведения, применяющиеся против магнитометрических сенсоров.", "description_zh": "专门针对磁力计感应器的干扰设备。", "descriptionID": 64868, "hasTypes": 1, "iconID": 3227, "name_de": "Magnetometrische Störsender", "name_en-us": "Magnetometric Jammers", "name_es": "Perturbadores magnetométricos", "name_fr": "Brouilleurs magnétométriques", "name_it": "Magnetometric Jammers", "name_ja": "磁力ジャマー", "name_ko": "자기장 센서 재머", "name_ru": "Магнитометрические глушители", "name_zh": "磁力计干扰器", "nameID": 65942, "parentGroupID": 677 }, "716": { "description_de": "Zielerfassungsstörer, die für den Gebrauch gegen Ladar-Sensoren spezialisiert sind", "description_en-us": "Targeting jammers specialized for use against Ladar sensors.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que inhiben los lidares.", "description_fr": "Brouilleurs de ciblage spécifiquement destinés à être utilisés contre les détecteurs Ladar.", "description_it": "Targeting jammers specialized for use against Ladar sensors.", "description_ja": "光学センサーを妨害するためのターゲティングジャマー。", "description_ko": "라이다 센서 교란에 사용되는 타겟팅 재머장치입니다.", "description_ru": "Постановщики помех системам наведения, применяющиеся против ладарных сенсоров.", "description_zh": "专门针对光雷达感应器的干扰设备", "descriptionID": 64869, "hasTypes": 1, "iconID": 3228, "name_de": "Ladar-Störsender", "name_en-us": "Ladar Jammers", "name_es": "Perturbadores lidar", "name_fr": "Brouilleurs ladar", "name_it": "Ladar Jammers", "name_ja": "光学ジャマー", "name_ko": "라이다 센서 재머", "name_ru": "Ладарные глушители", "name_zh": "光雷达干扰器", "nameID": 65943, "parentGroupID": 677 }, "717": { "description_de": "Zielerfassungsstörer, spezialisiert auf den Einsatz gegen gravimetrische Sensoren.", "description_en-us": "Targeting jammers specialized for use against gravimetric sensors.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que inhiben los sensores gravimétricos.", "description_fr": "Brouilleurs de ciblage spécifiquement destinés à être utilisés contre les détecteurs gravimétriques.", "description_it": "Targeting jammers specialized for use against gravimetric sensors.", "description_ja": "重力センサーを妨害するためのターゲティングジャマー。", "description_ko": "중력장 센서 교란에 사용되는 타겟팅 재머장치입니다.", "description_ru": "Постановщики помех системам наведения, применяющиеся против гравиметрических сенсоров.", "description_zh": "专门针对引力计感应器的干扰设备。", "descriptionID": 64870, "hasTypes": 1, "iconID": 3226, "name_de": "Gravimetrische Störsender", "name_en-us": "Gravimetric Jammers", "name_es": "Perturbadores gravimétricos", "name_fr": "Brouilleurs gravimétriques", "name_it": "Gravimetric Jammers", "name_ja": "重力ジャマー", "name_ko": "중력장 센서 재머", "name_ru": "Гравиметрические глушители", "name_zh": "引力计干扰器", "nameID": 65944, "parentGroupID": 677 }, "718": { "description_de": "Zielerfassungsstörer, die auf den Gebrauch gegen Radar-Sensoren spezialisiert sind.", "description_en-us": "Targeting jammers specialized for use against radar sensors.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que inhiben los radares.", "description_fr": "Brouilleurs de ciblage spécifiquement destinés à être utilisés contre les détecteurs radar.", "description_it": "Targeting jammers specialized for use against radar sensors.", "description_ja": "レーダーセンサーを妨害するためのターゲットジャマー。", "description_ko": "레이더 센서 교란에 사용되는 타겟팅 재머장치입니다.", "description_ru": "Постановщики помех системам наведения, применяющиеся против радарных сенсоров.", "description_zh": "专门针对雷达感应器的干扰设备。", "descriptionID": 64871, "hasTypes": 1, "iconID": 3229, "name_de": "Radar-Störsender", "name_en-us": "Radar Jammers", "name_es": "Perturbadores de radares", "name_fr": "Brouilleurs radar", "name_it": "Radar Jammers", "name_ja": "電波ジャマー", "name_ko": "레이더 센서 재머", "name_ru": "Радарные глушители", "name_zh": "雷达干扰器", "nameID": 65945, "parentGroupID": 677 }, "719": { "description_de": "Zielerfassungsstörer, die für die Unterbrechung von multispektralen Sensoren sorgen.", "description_en-us": "Targeting jammers that induce multispectral sensor disruption.", "description_es": "Aparatos perturbadores de la adquisición de objetivos que provocan la disrupción multiespectral de los sensores.", "description_fr": "Brouilleurs de ciblage produisant une perturbation multispectrale des détecteurs.", "description_it": "Targeting jammers that induce multispectral sensor disruption.", "description_ja": "多重周波数センサーを妨害するためのターゲッティングジャマー。", "description_ko": "다중 센서 교란에 사용되는 타겟팅 재머장치입니다.", "description_ru": "Постановщики помех системам наведения, испускающие искажающие сигналы в широком диапазоне частот.", "description_zh": "对各个频谱的感应器都有效的干扰设备。", "descriptionID": 64872, "hasTypes": 1, "iconID": 109, "name_de": "Multispektrum-Störsender", "name_en-us": "Multi Spectrum Jammers", "name_es": "Perturbadores multiespectro", "name_fr": "Brouilleurs multispectraux", "name_it": "Multi Spectrum Jammers", "name_ja": "多重周波数ジャマー", "name_ko": "다중 스펙트럼 재머", "name_ru": "Универсальные глушители", "name_zh": "多谱干扰器", "nameID": 65946, "parentGroupID": 677 }, "720": { "description_de": "Reduziert die Empfindlichkeit von Sensoren auf gravimetrische Strörungen.", "description_en-us": "Reduces the sensors' vulnerability to gravimetric jamming.", "description_es": "Reduce la vulnerabilidad de los sensores a las perturbaciones gravimétricas.", "description_fr": "Réduisent la vulnérabilité des détecteurs au brouillage gravimétrique.", "description_it": "Reduces the sensors' vulnerability to gravimetric jamming.", "description_ja": "重量ジャミングに対するセンサーの脆弱性を軽減。", "description_ko": "중력장 재밍 관련 센서 저항력을 향상하는 장치입니다.", "description_ru": "Уменьшают уязвимость сенсоров корабля к гравиметрическим помехам.", "description_zh": "增强感应器对引力计类型干扰的抵抗能力。", "descriptionID": 65075, "hasTypes": 1, "iconID": 104, "name_de": "Gravimetrische Sicherungsanlagen", "name_en-us": "Gravimetric Backup Arrays", "name_es": "Sistemas gravimétricos de apoyo", "name_fr": "Modules de secours gravimétriques", "name_it": "Gravimetric Backup Arrays", "name_ja": "重力センサー補助", "name_ko": "중력장 백업 시설", "name_ru": "Резервные гравиметрические системы", "name_zh": "引力计备用阵列", "nameID": 66149, "parentGroupID": 681 }, "721": { "description_de": "Reduziert die Empfindlichkeit der Sensoren gegenüber Ladar-Störung.", "description_en-us": "Reduces the sensors' vulnerability to Ladar jamming.", "description_es": "Reduce la vulnerabilidad de los sensores a las perturbaciones de los lidares.", "description_fr": "Réduisent la vulnérabilité des détecteurs au brouillage ladar.", "description_it": "Reduces the sensors' vulnerability to Ladar jamming.", "description_ja": "レーダージャミングに対するセンサー脆弱性を軽減。", "description_ko": "라이다 재밍 관련 센서 저항력을 향상하는 장치입니다.", "description_ru": "Уменьшают уязвимость сенсоров корабля к ладарным помехам.", "description_zh": "增强感应器对光雷达类型干扰的抵抗能力。", "descriptionID": 65073, "hasTypes": 1, "iconID": 104, "name_de": "Ladar-Sicherungsanlagen", "name_en-us": "Ladar Backup Arrays", "name_es": "Sistemas de lidares de apoyo", "name_fr": "Modules de secours ladar", "name_it": "Ladar Backup Arrays", "name_ja": "光学センサー補助", "name_ko": "라이다 백업 시설", "name_ru": "Резервные ладарные системы", "name_zh": "光雷达备用阵列", "nameID": 66147, "parentGroupID": 681 }, "722": { "description_de": "Reduziert die Empfindlichkeit der Sensoren gegen Radar-Störung.", "description_en-us": "Reduces the sensors' vulnerability to Radar jamming.", "description_es": "Reduce la vulnerabilidad de los sensores a las perturbaciones del radar.", "description_fr": "Réduisent la vulnérabilité des détecteurs au brouillage radar.", "description_it": "Reduces the sensors' vulnerability to Radar jamming.", "description_ja": "レーダージャミングに対するセンサーの脆弱性を軽減。", "description_ko": "레이더 재밍에 대한 센서의 저항력을 향상합니다.", "description_ru": "Уменьшает уязвимость сенсоров корабля к радарным помехам.", "description_zh": "增强感应器对雷达类型干扰的抵抗能力。", "descriptionID": 65074, "hasTypes": 1, "iconID": 104, "name_de": "Radar-Sicherungsanlagen", "name_en-us": "Radar Backup Arrays", "name_es": "Sistemas de radares de apoyo", "name_fr": "Modules de secours radar", "name_it": "Radar Backup Arrays", "name_ja": "電波センサー補助", "name_ko": "레이더 백업 시설", "name_ru": "Резервные радарные системы", "name_zh": "雷达备用阵列", "nameID": 66148, "parentGroupID": 681 }, "723": { "description_de": "Reduziert die Empfindlichkeit des Sensors gegenüber magnetometrischen Störungen.", "description_en-us": "Reduces the sensors' vulnerability to magnetometric jamming.", "description_es": "Reduce la vulnerabilidad de los sensores a las perturbaciones magnetométricas.", "description_fr": "Réduisent la vulnérabilité des détecteurs au brouillage magnétométrique.", "description_it": "Reduces the sensors' vulnerability to magnetometric jamming.", "description_ja": "磁気測定ジャミングに対するセンサーの脆弱性を軽減。", "description_ko": "자기장 센서 재밍 저항력을 향상하는 장치입니다.", "description_ru": "Уменьшает уязвимость сенсоров корабля к магнитометрическим помехам.", "description_zh": "增强感应器对磁力计类型干扰的抵抗能力。", "descriptionID": 64873, "hasTypes": 1, "iconID": 104, "name_de": "Magnetometrische Sicherungsanlagen", "name_en-us": "Magnetometric Backup Arrays", "name_es": "Sistemas magnetométricos de apoyo", "name_fr": "Modules de secours magnétométrique", "name_it": "Magnetometric Backup Arrays", "name_ja": "磁力センサー補助", "name_ko": "자기장 센서 백업 시설", "name_ru": "Резервные магнитометрические системы", "name_zh": "磁力计备用阵列", "nameID": 65947, "parentGroupID": 681 }, "724": { "description_de": "Reduziert die Empfindlichkeit des Sensors gegenüber diversen Arten der Störung.", "description_en-us": "Reduces the sensors' vulnerability to multiple forms of jamming.", "description_es": "Reduce la vulnerabilidad de los sensores a varias formas de perturbación de la señal.", "description_fr": "Réduisent la vulnérabilité des détecteurs à diverses formes de brouillage.", "description_it": "Reduces the sensors' vulnerability to multiple forms of jamming.", "description_ja": "各種のジャミングに対するセンサーの脆弱性を軽減。", "description_ko": "다중 센서 재밍 저항력을 향상하는 장치입니다.", "description_ru": "Уменьшают уязвимость сенсоров корабля к различным типам помех.", "description_zh": "增强感应器对多谱干扰器的抵抗能力。", "descriptionID": 64874, "hasTypes": 1, "iconID": 104, "name_de": "Multifrequenz-Sicherungsanlagen", "name_en-us": "Multi-Frequency Backup Arrays", "name_es": "Sistemas multifrecuencia de apoyo", "name_fr": "Modules de secours multifréquence", "name_it": "Multi-Frequency Backup Arrays", "name_ja": "多重周波数センサー補助", "name_ko": "다중 프리퀀시 백업 시설", "name_ru": "Резервные мультичастотные системы", "name_zh": "多谱备用阵列", "nameID": 65948, "parentGroupID": 681 }, "725": { "description_de": "Erhöht die Stärke der gravimetrischen Sensoren eines Schiffes für kurze Zeit.", "description_en-us": "Boost a ship's gravimetric sensor strength for a short duration.", "description_es": "Aumenta brevemente la intensidad de los sensores gravimétricos de la nave.", "description_fr": "Amplifient la puissance de détection gravimétrique d'un vaisseau pendant une courte durée.", "description_it": "Boost a ship's gravimetric sensor strength for a short duration.", "description_ja": "艦船の重力センサー強度を一時的に向上させる。", "description_ko": "함선의 중력장 센서 강도를 짧은 시간 동안 강화합니다.", "description_ru": "Увеличивают мощность гравиметрических сенсоров корабля на короткое время.", "description_zh": "在较短的时间内增强舰船的引力计感应器强度。", "descriptionID": 64875, "hasTypes": 1, "iconID": 104, "name_de": "Gravimetrische Sensoren", "name_en-us": "Gravimetric Sensors", "name_es": "Sensores gravimétricos", "name_fr": "Détecteurs gravimétriques", "name_it": "Gravimetric Sensors", "name_ja": "重力センサー", "name_ko": "중력장 센서", "name_ru": "Гравиметрические сенсоры", "name_zh": "引力计感应器", "nameID": 65949, "parentGroupID": 685 }, "726": { "description_de": "Verstärkt den Ladar-Sensor eines Schiffs für eine kurze Zeit.", "description_en-us": "Boost a ship's Ladar sensor strength for a short duration.", "description_es": "Aumenta brevemente la intensidad de los lidares de la nave.", "description_fr": "Amplifient la puissance de détection Ladar d'un vaisseau pendant une courte durée.", "description_it": "Boost a ship's Ladar sensor strength for a short duration.", "description_ja": "艦船の光学センサー強度を一時的に向上させる。", "description_ko": "함선의 라이다 센서 강도를 짧은 시간 동안 강화합니다.", "description_ru": "Увеличивают мощность ладарных сенсоров корабля на короткое время.", "description_zh": "可在较短时间内增强舰船的光雷达感应器强度", "descriptionID": 64876, "hasTypes": 1, "iconID": 104, "name_de": "Ladar-Sensoren", "name_en-us": "Ladar Sensors", "name_es": "Sensores lidar", "name_fr": "Détecteurs ladar", "name_it": "Ladar Sensors", "name_ja": "光学センサー", "name_ko": "라이다 센서", "name_ru": "Ладарные сенсоры", "name_zh": "光雷达感应器", "nameID": 65950, "parentGroupID": 685 }, "727": { "description_de": "Verstärken die magnetometrischen Sensoren eines Schiffs für kurze Zeit.", "description_en-us": "Boost a ship's magnetometric sensor strength for a short duration.", "description_es": "Aumenta brevemente la intensidad de los sensores magnetométricos de la nave.", "description_fr": "Amplifient la puissance de détection magnétométrique d'un vaisseau pendant une courte durée.", "description_it": "Boost a ship's magnetometric sensor strength for a short duration.", "description_ja": "艦船の磁気センサー強度を一時的に向上させる。", "description_ko": "함선의 자기장 센서 강도를 짧은 시간 동안 강화합니다.", "description_ru": "Увеличивают мощность магнитометрических сенсоров корабля на короткое время.", "description_zh": "在较短时间内增加舰船磁力计感应器的强度。", "descriptionID": 64877, "hasTypes": 1, "iconID": 104, "name_de": "Magnetometrische Sensoren", "name_en-us": "Magnetometric Sensors", "name_es": "Sensores magnetométricos", "name_fr": "Détecteurs magnétométriques", "name_it": "Magnetometric Sensors", "name_ja": "磁力センサー", "name_ko": "자기장 센서", "name_ru": "Магнитометрические сенсоры", "name_zh": "磁力计感应器", "nameID": 65951, "parentGroupID": 685 }, "728": { "description_de": "Verstärken die Sensoren eines Schiffs über eine kurze Zeit über das ganze Spektrum.", "description_en-us": "Boost a ship's sensors across the spectrum for a short duration.", "description_es": "Aumenta brevemente los sensores de todo el espectro de la nave.", "description_fr": "Amplifient la puissance de tous les détecteurs d'un vaisseau pendant une courte durée.", "description_it": "Boost a ship's sensors across the spectrum for a short duration.", "description_ja": "艦船のセンサーを全帯域で一時的に向上させる。", "description_ko": "함선의 센서를 짧은 시간 동안 강화합니다.", "description_ru": "Увеличивают мощность всех сенсоров корабля на короткое время.", "description_zh": "在较短的时间内增强舰船的多频谱感应强度。", "descriptionID": 64878, "hasTypes": 1, "iconID": 104, "name_de": "Multispektrum-Sensoren", "name_en-us": "Multi-Spectrum Sensors", "name_es": "Sensores multiespectro", "name_fr": "Détecteurs multibandes", "name_it": "Multi-Spectrum Sensors", "name_ja": "多重周波数センサー", "name_ko": "다중 스펙트럼 센서", "name_ru": "Мультиспектральные сенсоры", "name_zh": "多谱感应器", "nameID": 65952, "parentGroupID": 685 }, "729": { "description_de": "Verstärken den Radar-Sensor des Schiffs für kurze Zeit.", "description_en-us": "Boost a ship's radar sensor strength for a short duration.", "description_es": "Aumenta brevemente la intensidad de los sensores de radar de la nave.", "description_fr": "Amplifient la puissance de détection radar d'un vaisseau pendant une courte durée.", "description_it": "Boost a ship's radar sensor strength for a short duration.", "description_ja": "艦船のレーダーセンサー強度を一時的に向上させる。", "description_ko": "함선의 레이더 센서 강도를 짧은 시간 동안 강화합니다.", "description_ru": "Увеличивают мощность радарных сенсоров корабля на короткое время.", "description_zh": "在较短时间内增强舰船的雷达感应器强度。", "descriptionID": 64879, "hasTypes": 1, "iconID": 104, "name_de": "Radar-Sensoren", "name_en-us": "Radar Sensors", "name_es": "Sensores de radar", "name_fr": "Détecteurs radar", "name_it": "Radar Sensors", "name_ja": "電波センサー", "name_ko": "레이더 센서", "name_ru": "Радарные сенсоры", "name_zh": "雷达感应器", "nameID": 65953, "parentGroupID": 685 }, "730": { "description_de": "Offiziell genehmigte Erkennungsmarken der Imperial Navy.", "description_en-us": "Officially sanctioned Imperial Navy insignias.", "description_es": "Insignias oficiales de la Armada Imperial.", "description_fr": "Insignes officiels de la Navy impériale.", "description_it": "Officially sanctioned Imperial Navy insignias.", "description_ja": "正式に授与された帝国海軍の認識証。", "description_ko": "제국 해군 정식 계급장입니다.", "description_ru": "Официальные идентификаторы флота Амаррской Империи.", "description_zh": "官方授予的帝国海军徽章。", "descriptionID": 64880, "hasTypes": 1, "iconID": 2552, "name_de": "Amarr Navy", "name_en-us": "Amarr Navy", "name_es": "Armada Amarr", "name_fr": "Amarr Navy", "name_it": "Amarr Navy", "name_ja": "アマー海軍", "name_ko": "아마르 해군", "name_ru": "Амаррского флота", "name_zh": "艾玛海军", "nameID": 65954, "parentGroupID": 616 }, "731": { "description_de": "Offiziell genehmigte Ammatar Navy-Abzeichen.", "description_en-us": "Officially sanctioned Ammatar Navy insignias.", "description_es": "Insignias oficiales de la Armada Ammatar.", "description_fr": "Insignes officiels de l'Ammatar Navy.", "description_it": "Officially sanctioned Ammatar Navy insignias.", "description_ja": "正式に授与されたアマター海軍認識証。", "description_ko": "민마타 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия Флота Ammatar.", "description_zh": "官方授予的艾玛达海军徽章", "descriptionID": 64881, "hasTypes": 1, "iconID": 2552, "name_de": "Ammatar Navy", "name_en-us": "Ammatar Navy", "name_es": "Armada Ammatar", "name_fr": "Ammatar Navy", "name_it": "Ammatar Navy", "name_ja": "アマター海軍", "name_ko": "아마타 해군", "name_ru": "Амматарского флота", "name_zh": "艾玛达海军", "nameID": 65955, "parentGroupID": 616 }, "732": { "description_de": "Offiziell genehmigte Caldari Navy-Erkennungsmarken.", "description_en-us": "Officially sanctioned Caldari Navy insignias.", "description_es": "Insignias oficiales de la Armada Caldari.", "description_fr": "Insignes officiels de la Caldari Navy.", "description_it": "Officially sanctioned Caldari Navy insignias.", "description_ja": "正式に授与されたカルダリ海軍の認識証。", "description_ko": "칼다리 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия Флота Caldari.", "description_zh": "官方授予的加达里海军徽章", "descriptionID": 64882, "hasTypes": 1, "iconID": 2552, "name_de": "Caldari Navy", "name_en-us": "Caldari Navy", "name_es": "Armada Caldari", "name_fr": "Caldari Navy", "name_it": "Caldari Navy", "name_ja": "カルダリ海軍", "name_ko": "칼다리 해군", "name_ru": "Калдарского флота", "name_zh": "加达里海军", "nameID": 65956, "parentGroupID": 616 }, "733": { "description_de": "Offiziell genehmigte CONCORD-Erkennungsmarken.", "description_en-us": "Officially sanctioned CONCORD insignias.", "description_es": "Insignias oficiales de CONCORD.", "description_fr": "Insignes officiels de CONCORD.", "description_it": "Officially sanctioned CONCORD insignias.", "description_ja": "正式に授与されたCONCORD認識証。", "description_ko": "CONCORD 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия CONCORD.", "description_zh": "官方授予的统合部徽章。", "descriptionID": 64883, "hasTypes": 1, "iconID": 2552, "name_de": "CONCORD", "name_en-us": "CONCORD", "name_es": "CONCORD", "name_fr": "CONCORD", "name_it": "CONCORD", "name_ja": "CONCORD", "name_ko": "CONCORD", "name_ru": "КОНКОРДа", "name_zh": "统一合作关系司令部", "nameID": 65957, "parentGroupID": 616 }, "734": { "description_de": "Offiziell genehmigte Gallente Navy-Erkennungsmarken.", "description_en-us": "Officially sanctioned Gallente Navy insignias.", "description_es": "Insignias oficiales de la Armada Gallente.", "description_fr": "Insignes officiels de la Gallente Navy.", "description_it": "Officially sanctioned Gallente Navy insignias.", "description_ja": "正式に授与されたガレンテ海軍認識証。", "description_ko": "갈란테 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия Флота Gallente.", "description_zh": "官方授予的盖伦特海军徽章。", "descriptionID": 64884, "hasTypes": 1, "iconID": 2552, "name_de": "Gallente Navy", "name_en-us": "Gallente Navy", "name_es": "Armada Gallente", "name_fr": "Gallente Navy", "name_it": "Gallente Navy", "name_ja": "ガレンテ海軍", "name_ko": "갈란테 해군", "name_ru": "Галлентского флота", "name_zh": "盖伦特海军", "nameID": 65958, "parentGroupID": 616 }, "735": { "description_de": "Offiziell genehmigte Khanid Navy-Erkennungsmarken.", "description_en-us": "Officially sanctioned Khanid Navy insignias.", "description_es": "Insignias oficiales de la Armada Khanid.", "description_fr": "Insignes officiels de la Khanid Navy.", "description_it": "Officially sanctioned Khanid Navy insignias.", "description_ja": "正式に授与されたクーニッド海軍の認識証。", "description_ko": "카니드 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия Флота Khanid.", "description_zh": "官方授予的卡尼迪海军徽章。", "descriptionID": 64885, "hasTypes": 1, "iconID": 2552, "name_de": "Khanid Navy", "name_en-us": "Khanid Navy", "name_es": "Armada Khanid", "name_fr": "Khanid Navy", "name_it": "Khanid Navy", "name_ja": "クーニッド海軍", "name_ko": "카니드 해군", "name_ru": "Ханидского флота", "name_zh": "卡尼迪海军", "nameID": 65959, "parentGroupID": 616 }, "736": { "description_de": "Offiziell genehmigte Minmatar-Flotten-Erkennungsmarken.", "description_en-us": "Officially sanctioned Minmatar Fleet insignias.", "description_es": "Insignias oficiales de la Flota Minmatariana.", "description_fr": "Insignes officiels de la flotte minmatar.", "description_it": "Officially sanctioned Minmatar Fleet insignias.", "description_ja": "正式に授与されたミンマターフリート認識証。", "description_ko": "민마타 해군 정식 계급장입니다.", "description_ru": "Официальные знаки отличия Флота Minmatar.", "description_zh": "官方授予的米玛塔尔舰队徽章。", "descriptionID": 64886, "hasTypes": 1, "iconID": 2552, "name_de": "Flotte der Minmatar", "name_en-us": "Minmatar Fleet", "name_es": "Flota Minmatariana", "name_fr": "Flotte minmatar", "name_it": "Minmatar Fleet", "name_ja": "ミンマター海軍", "name_ko": "민마타 함대", "name_ru": "Минматарского флота", "name_zh": "米玛塔尔舰队", "nameID": 65960, "parentGroupID": 616 }, "737": { "description_de": "Individuelle Erkennungsmarken.", "description_en-us": "Individual identification tags.", "description_es": "Chapas identificativas individuales.", "description_fr": "Plaques d'identification individuelles.", "description_it": "Individual identification tags.", "description_ja": "個人のIDタグ。", "description_ko": "개인 인식표입니다.", "description_ru": "Индивидуальные жетоны идентификации.", "description_zh": "特殊人物的身份名牌。", "descriptionID": 64887, "hasTypes": 1, "iconID": 2552, "name_de": "Individuen", "name_en-us": "Individuals", "name_es": "Individuales", "name_fr": "Individus", "name_it": "Individuals", "name_ja": "個人", "name_ko": "개인", "name_ru": "Частных лиц", "name_zh": "特殊人物", "nameID": 65961, "parentGroupID": 616 }, "738": { "description_de": "Speichert KI-Systeme. Wird eingesetzt, wenn Sie spezielle Schiffe aus dem Loyalitätspunkteladen erlangen", "description_en-us": "Stores artificial intelligence systems. Used when acquiring special ships from Loyalty Point stores", "description_es": "Almacenan sistemas de inteligencia artificial. Se usan al adquirir naves especiales en las tiendas de puntos de lealtad.", "description_fr": "Renferme les systèmes d'intelligence artificielle. Utilisée lors de l'acquisition de vaisseaux spéciaux dans les magasins de points de loyauté", "description_it": "Stores artificial intelligence systems. Used when acquiring special ships from Loyalty Point stores", "description_ja": "人工知能システムを保存する。ロイヤルティポイントストアで特殊な艦船を取得するときに使用する", "description_ko": "인공지능 시스템이 보관된 데이터 칩으로 로열티 포인트 스토어에서 특수 함선을 구매할 때 사용됩니다.", "description_ru": "Содержат в себе систему ИИ. Необходимы для приобретения особых кораблей в наградных отделах ополчения", "description_zh": "存储人工智能系统,用于在忠诚点商店中兑换特殊舰船", "descriptionID": 64888, "hasTypes": 1, "iconID": 2038, "name_de": "Nexus Chips", "name_en-us": "Nexus Chips", "name_es": "Chips Nexus", "name_fr": "Puces Nexus", "name_it": "Nexus Chips", "name_ja": "ネクサスチップ", "name_ko": "넥서스 칩", "name_ru": "Ключ-схемы «Нексус»", "name_zh": "关联芯片", "nameID": 65962, "parentGroupID": 19 }, "739": { "description_de": "Erkennungsmarken krimineller Organisationen. Können bei den Großreichen eingetauscht werden", "description_en-us": "Criminal organizations' identification tags. Can be traded to the empires", "description_es": "Chapas identificativas de organizaciones criminales. Se pueden vender a los imperios.", "description_fr": "Plaques d'identification d'organisations criminelles. Peuvent être échangées avec les empires", "description_it": "Criminal organizations' identification tags. Can be traded to the empires", "description_ja": "犯罪組織のIDタグ。各帝国とトレード可能", "description_ko": "범죄자 인식표로 국가기관과 거래할 수 있습니다.", "description_ru": "Личные жетоны пиратских организаций. Их можно выгодно продать", "description_zh": "犯罪组织的身份铭牌。可以交给帝国换取奖励", "descriptionID": 64889, "hasTypes": 0, "iconID": 2325, "name_de": "Erkennungsmarken von Verbrechern", "name_en-us": "Criminal Dog Tags", "name_es": "Chapas de criminales", "name_fr": "Plaques d'identification de criminels", "name_it": "Criminal Dog Tags", "name_ja": "犯罪者認識証", "name_ko": "범죄자 인식표", "name_ru": "Идентификаторы преступников", "name_zh": "罪犯铭牌", "nameID": 65963, "parentGroupID": 19 }, "740": { "description_de": "Angel Cartel-Erkennungsmarken.", "description_en-us": "Angel Cartel identification tags.", "description_es": "Chapas identificativas del Cártel de los Ángeles.", "description_fr": "Plaques d'identification du cartel angel.", "description_it": "Angel Cartel identification tags.", "description_ja": "エンジェルカルテルのIDタグ。", "description_ko": "엔젤 카르텔 인식표입니다.", "description_ru": "Идентификационные знаки Картеля Angel.", "description_zh": "天使联合企业识别标记牌", "descriptionID": 64890, "hasTypes": 1, "iconID": 2312, "name_de": "Angels", "name_en-us": "Angels", "name_es": "Ángeles", "name_fr": "Angels", "name_it": "Angels", "name_ja": "エンジェル", "name_ko": "엔젤 카르텔", "name_ru": "«Ангелов»", "name_zh": "天使联合企业", "nameID": 65964, "parentGroupID": 739 }, "741": { "description_de": "Blood Raider-Erkennungsmarken.", "description_en-us": "Blood Raider identification tags.", "description_es": "Chapas identificativas de los Saqueadores Sanguinarios.", "description_fr": "Plaques d'identification des Blood Raiders.", "description_it": "Blood Raider identification tags.", "description_ja": "ブラッドレイダーのIDタグ。", "description_ko": "블러드 레이더 인식표입니다.", "description_ru": "Жетоны идентификации Blood Raider.", "description_zh": "血袭者识别标记牌", "descriptionID": 64891, "hasTypes": 1, "iconID": 2317, "name_de": "Blood Raiders", "name_en-us": "Blood Raiders", "name_es": "Saqueadores Sanguinarios", "name_fr": "Blood Raiders", "name_it": "Blood Raiders", "name_ja": "ブラッドレイダー", "name_ko": "블러드 레이더", "name_ru": "«Охотников за кровью»", "name_zh": "血袭者", "nameID": 65965, "parentGroupID": 739 }, "742": { "description_de": "Dark Blood-Erkennungsmarken.", "description_en-us": "Dark Blood identification tags.", "description_es": "Chapas identificativas de los Sanguinarios Oscuros.", "description_fr": "Plaques d'identification des Dark Blood.", "description_it": "Dark Blood identification tags.", "description_ja": "ダークブラッドのIDタグ。", "description_ko": "다크 블러드 인식표입니다.", "description_ru": "Жетоны идентификации Dark Blood.", "description_zh": "黑暗血袭者身份名牌。", "descriptionID": 64892, "hasTypes": 1, "iconID": 2317, "name_de": "Dark Blood", "name_en-us": "Dark Blood", "name_es": "Sanguinarios Oscuros", "name_fr": "Dark Blood", "name_it": "Dark Blood", "name_ja": "ダークブラッド", "name_ko": "다크 블러드", "name_ru": "«Тёмных охотников»", "name_zh": "黑暗血袭者", "nameID": 65966, "parentGroupID": 739 }, "743": { "description_de": "Angel Domination-Erkennungsmarken.", "description_en-us": "Angel Dominations identification tags.", "description_es": "Chapas identificativas de los Ángeles Dominantes.", "description_fr": "Plaques d'identification des Dominations.", "description_it": "Angel Dominations identification tags.", "description_ja": "エンジェルドミネーションズのIDタグ。", "description_ko": "엔젤 도미네이션 인식표입니다.", "description_ru": "Жетоны идентификации Angel Domination.", "description_zh": "主天使的身份名牌", "descriptionID": 64893, "hasTypes": 1, "iconID": 2312, "name_de": "Domination", "name_en-us": "Domination", "name_es": "Dominantes", "name_fr": "Domination", "name_it": "Domination", "name_ja": "ドミネーション", "name_ko": "도미네이션", "name_ru": "«Владычеств»", "name_zh": "主天使", "nameID": 65967, "parentGroupID": 739 }, "744": { "description_de": "Dread Guristas-Erkennungsmarken.", "description_en-us": "Dread Guristas identification tags.", "description_es": "Chapas identificativas de los Guristas Aterradores.", "description_fr": "Plaques d'identification des Dread guristas.", "description_it": "Dread Guristas identification tags.", "description_ja": "ドレッドガリスタスのIDタグ。", "description_ko": "드레드 구리스타스 인식표입니다.", "description_ru": "Жетоны идентификации Dread Guristas.", "description_zh": "恐惧古斯塔斯的身份名牌", "descriptionID": 64894, "hasTypes": 1, "iconID": 2327, "name_de": "Dread Guristas", "name_en-us": "Dread Guristas", "name_es": "Guristas Aterradores", "name_fr": "Dread Guristas", "name_it": "Dread Guristas", "name_ja": "ドレッドガリスタス", "name_ko": "드레드 구리스타스", "name_ru": "«Ужасающих гуристас»", "name_zh": "恐惧古斯塔斯", "nameID": 65968, "parentGroupID": 739 }, "745": { "description_de": "Guristas-Erkennungsmarken.", "description_en-us": "Guristas identification tags.", "description_es": "Chapas identificativas de los Guristas.", "description_fr": "Plaques d'identification des Guristas.", "description_it": "Guristas identification tags.", "description_ja": "ガリスタスのIDタグ。", "description_ko": "구리스타스 인식표입니다.", "description_ru": "Жетоны идентификации Gurista.", "description_zh": "古斯塔斯身份名牌。", "descriptionID": 64895, "hasTypes": 1, "iconID": 2327, "name_de": "Guristas", "name_en-us": "Guristas", "name_es": "Guristas", "name_fr": "Guristas", "name_it": "Guristas", "name_ja": "ガリスタス", "name_ko": "구리스타스", "name_ru": "«Гуристас»", "name_zh": "古斯塔斯", "nameID": 65969, "parentGroupID": 739 }, "746": { "description_de": "Sanshas Nation-Erkennungsmarken.", "description_en-us": "Sansha's Nation identification tags.", "description_es": "Chapas identificativas de la Nación Sansha.", "description_fr": "Plaques d'identification des membres de la Sansha's Nation.", "description_it": "Sansha's Nation identification tags.", "description_ja": "サンシャ国のIDタグ。", "description_ko": "산샤 네이션 인식표입니다.", "description_ru": "Жетоны идентификации Нации Sansha.", "description_zh": "萨沙身份名牌。", "descriptionID": 64896, "hasTypes": 1, "iconID": 2332, "name_de": "Sansha", "name_en-us": "Sansha", "name_es": "Sansha", "name_fr": "Sansha", "name_it": "Sansha", "name_ja": "サンシャ", "name_ko": "산샤", "name_ru": "«Саншистов»", "name_zh": "萨沙", "nameID": 65970, "parentGroupID": 739 }, "747": { "description_de": "Serpentis-Erkennungsmarken.", "description_en-us": "Serpentis identification tags.", "description_es": "Chapas identificativas de Serpentis.", "description_fr": "Plaques d'identification des Serpentis.", "description_it": "Serpentis identification tags.", "description_ja": "サーペンティスの識別タグ。", "description_ko": "서펜티스 인식표입니다.", "description_ru": "Жетоны идентификации Serpentis.", "description_zh": "天蛇身份名牌。", "descriptionID": 64897, "hasTypes": 1, "iconID": 2322, "name_de": "Serpentis", "name_en-us": "Serpentis", "name_es": "Serpentis", "name_fr": "Serpentis", "name_it": "Serpentis", "name_ja": "サーペンティス", "name_ko": "서펜티스", "name_ru": "«Серпентис»", "name_zh": "天蛇", "nameID": 65971, "parentGroupID": 739 }, "748": { "description_de": "Shadow Serpentis-Erkennungsmarken.", "description_en-us": "Shadow Serpentis identification tags.", "description_es": "Chapas identificativas de la Sombra de Serpentis.", "description_fr": "Plaques d'identification des Shadow Serpentis.", "description_it": "Shadow Serpentis identification tags.", "description_ja": "シャドウサーペンティスのIDタグ。", "description_ko": "섀도우 서펜티스 인식표입니다.", "description_ru": "Жетоны идентификации Shadow Serpentis.", "description_zh": "暗影天蛇身份名牌。", "descriptionID": 64898, "hasTypes": 1, "iconID": 2322, "name_de": "Shadow Serpentis", "name_en-us": "Shadow Serpentis", "name_es": "Sombra de Serpentis", "name_fr": "Shadow Serpentis", "name_it": "Shadow Serpentis", "name_ja": "シャドウサーペンティス", "name_ko": "섀도우 서펜티스", "name_ru": "«Тени Серпентис»", "name_zh": "暗影天蛇", "nameID": 65972, "parentGroupID": 739 }, "749": { "description_de": "True Sansha-Erkennungsmarken.", "description_en-us": "True Sansha identification tags.", "description_es": "Chapas identificativas de los Sanshas Verdaderos.", "description_fr": "Plaques d'identification des True Sansha.", "description_it": "True Sansha identification tags.", "description_ja": "トゥルーサンシャ のIDタグ。", "description_ko": "트루 산샤 인식표입니다.", "description_ru": "Жетоны идентификации True Sansha.", "description_zh": "萨沙爱国者身份名牌", "descriptionID": 64899, "hasTypes": 1, "iconID": 2332, "name_de": "True Sansha", "name_en-us": "True Sansha", "name_es": "Sanshas Verdaderos", "name_fr": "True Sansha", "name_it": "True Sansha", "name_ja": "トゥルーサンシャ", "name_ko": "트루 산샤", "name_ru": "«Истинных саншистов»", "name_zh": "萨沙爱国者", "nameID": 65973, "parentGroupID": 739 }, "750": { "description_de": "Die Erkennungsmarken der von CONCORD Meistgesuchten.", "description_en-us": "The identification tags of CONCORD's most wanted.", "description_es": "Chapas identificativas de los más buscados de CONCORD.", "description_fr": "Plaques d'identification des pilotes CONCORD les plus recherchés.", "description_it": "The identification tags of CONCORD's most wanted.", "description_ja": "CONCORDの最重要指名手配対象を表すIDタグ。", "description_ko": "CONCORD의 악명 높은 현상 수배자들의 인식표입니다.", "description_ru": "Жетоны идентификации самых опасных преступников в списках CONCORD.", "description_zh": "统合部最高通缉者所佩戴的身份名牌。", "descriptionID": 64900, "hasTypes": 1, "iconID": 2319, "name_de": "Kommandanten", "name_en-us": "Commanders", "name_es": "Comandantes", "name_fr": "Commandants", "name_it": "Commanders", "name_ja": "司令官", "name_ko": "지휘관", "name_ru": "Командиров", "name_zh": "指挥官", "nameID": 65974, "parentGroupID": 739 }, "751": { "description_de": "Beweis, dass es in der Welt einen miesen Hundesohn weniger gibt.", "description_en-us": "Proof that there's one less evil bastard in the world.", "description_es": "Prueba de que hay un desgraciado menos en el mundo.", "description_fr": "La preuve qu'il y a un salopard de moins en ce bas monde.", "description_it": "Proof that there's one less evil bastard in the world.", "description_ja": "世界から悪人が 1 人消えたという証拠。", "description_ko": "세상에서 악당 한 명이 줄었다는 것을 보여주는 증거품입니다.", "description_ru": "Доказательство того, что еще одним злодеем стало меньше.", "description_zh": "这证明世界上又少了一个恶人。", "descriptionID": 64901, "hasTypes": 1, "iconID": 2039, "name_de": "Privateigentum von Aufsehern", "name_en-us": "Overseer's Personal Effects", "name_es": "Efectos personales del vigilante", "name_fr": "Effets personnels du surveillant", "name_it": "Overseer's Personal Effects", "name_ja": "監督者の私物", "name_ko": "오버시어 소지품", "name_ru": "Личные вещи смотрителей", "name_zh": "监察官的个人财产", "nameID": 65975, "parentGroupID": 614 }, "752": { "description_de": "Beweis für das Ableben eines feigen Schurken.", "description_en-us": "Physical proof of a dastardly villain's demise.", "description_es": "Prueba física de la muerte de un villano cruel.", "description_fr": "Preuve physique de la fin d'un vilain méchant.", "description_it": "Physical proof of a dastardly villain's demise.", "description_ja": "卑劣な悪人が死んだという物的証拠。", "description_ko": "범죄자의 말로를 증명해주는 물질적인 증거입니다.", "description_ru": "Физическое доказательство уничтожения отпетых злодеев.", "description_zh": "证明万恶的罪犯死亡的直接证据。", "descriptionID": 64902, "hasTypes": 1, "iconID": 2302, "name_de": "DNS-Muster von Verbrechern", "name_en-us": "Criminal DNA Patterns", "name_es": "Cadenas de ADN de criminales", "name_fr": "ADN du criminel", "name_it": "Criminal DNA Patterns", "name_ja": "犯罪者DNA配列", "name_ko": "범죄자 DNA 패턴", "name_ru": "ДНК преступников", "name_zh": "罪犯DNA样本", "nameID": 65976, "parentGroupID": 614 }, "753": { "description_de": "Blueprints von Bergbaukristallen.", "description_en-us": "Blueprints of mining crystals.", "description_es": "Planos de cristales de minería.", "description_fr": "Plans de construction de cristaux d'extraction.", "description_it": "Blueprints of mining crystals.", "description_ja": "採掘クリスタルのブループリント。", "description_ko": "채광용 크리스탈 블루프린트입니다.", "description_ru": "Чертежи кристаллов настройки экстрактора.", "description_zh": "采矿晶体蓝图。", "descriptionID": 64903, "hasTypes": 0, "iconID": 2703, "name_de": "Bergbaukristalle", "name_en-us": "Mining Crystals", "name_es": "Cristales de minería", "name_fr": "Cristaux d’extraction", "name_it": "Mining Crystals", "name_ja": "採掘クリスタル", "name_ko": "채광용 크리스탈", "name_ru": "Буровые кристаллы", "name_zh": "采矿晶体", "nameID": 65977, "parentGroupID": 211 }, "754": { "description_de": "Politpropaganda und deren Initiatoren.", "description_en-us": "Political propaganda and those that engage in it", "description_es": "Propaganda política y quienes participan en ella.", "description_fr": "Propagande politique et personnes impliquées", "description_it": "Political propaganda and those that engage in it", "description_ja": "政治的プロパガンダと、それに関わる者たち", "description_ko": "정치선전 도구입니다.", "description_ru": "Политическая пропаганда и всё, что к ней относится", "description_zh": "政治宣传及从事政治宣传的物品", "descriptionID": 65162, "hasTypes": 1, "iconID": 1204, "name_de": "Politische Utensilien", "name_en-us": "Political Paraphernalia", "name_es": "Parafernalia política", "name_fr": "Bazar politique", "name_it": "Political Paraphernalia", "name_ja": "政治用品", "name_ko": "정치 용품", "name_ru": "Пропагандистские материалы", "name_zh": "政治用品", "nameID": 66236, "parentGroupID": 19 }, "757": { "description_de": "Projizieren ein elektronisches Signal auf ein Ziel und vergrößern so dessen Signatur-Radius.", "description_en-us": "Project an electronic signal towards a target, increasing its signature radius.", "description_es": "Proyectan una señal electrónica hacia un objetivo, lo que aumenta el radio de detección.", "description_fr": "Projettent un signal électronique vers la cible afin d'augmenter son rayon de signature.", "description_it": "Project an electronic signal towards a target, increasing its signature radius.", "description_ja": "ターゲットに向けて電気信号を投射し、シグネチャ半径を広げる。", "description_ko": "대상 함선에 전자 신호를 부착하여 시그니처 반경을 증가시킵니다.", "description_ru": "Посылают электронный сигнал к цели, увеличивающий радиус сигнатуры.", "description_zh": "向目标投射一束电子信号,增加目标的信号半径。", "descriptionID": 64904, "hasTypes": 1, "iconID": 2983, "name_de": "Zielmarkierung", "name_en-us": "Target Painters", "name_es": "Reveladores de objetivo", "name_fr": "Marqueurs de cible", "name_it": "Target Painters", "name_ja": "ターゲットペインター", "name_ko": "타겟 페인터", "name_ru": "Системы подсветки целей", "name_zh": "目标标记装备", "nameID": 65978, "parentGroupID": 657 }, "761": { "description_de": "Capital-Schiffe, konzipiert für die ausgedehnte Belagerung von stationären Einrichtungen.", "description_en-us": "Capital ships created for extended sieges of stationary installations.", "description_es": "Naves capitales creadas para largos asedios de instalaciones estáticas.", "description_fr": "Vaisseaux capitaux créés pour assiéger des installations stationnaires de façon prolongée.", "description_it": "Capital ships created for extended sieges of stationary installations.", "description_ja": "散開して固定施設を包囲攻撃する主力艦。", "description_ko": "캐피탈급 함선으로 고정형 시설에 대한 장기 공성 임무를 수행할 수 있는 함선입니다.", "description_ru": "Корабли большого тоннажа, созданные для длительных бомбардировок стационарных объектов.", "description_zh": "用来在对固定空间设施的持久作战中发挥主力作用的旗舰战舰。", "descriptionID": 65264, "hasTypes": 0, "iconID": 1443, "name_de": "Dreadnoughts", "name_en-us": "Dreadnoughts", "name_es": "Superacorazados", "name_fr": "Dreadnoughts", "name_it": "Dreadnoughts", "name_ja": "攻城艦", "name_ko": "드레드노트", "name_ru": "Дредноуты", "name_zh": "无畏舰", "nameID": 66338, "parentGroupID": 1381 }, "762": { "description_de": "Amarr-Dreadnought-Designs.", "description_en-us": "Amarr dreadnought designs.", "description_es": "Diseños de superacorazados amarrianos.", "description_fr": "Modèles de dreadnoughts amarr.", "description_it": "Amarr dreadnought designs.", "description_ja": "アマード攻城艦設計図。", "description_ko": "아마르의 드레드노트입니다.", "description_ru": "Дредноуты разработки Империи Amarr.", "description_zh": "艾玛无畏舰设计", "descriptionID": 64907, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65981, "parentGroupID": 3509 }, "763": { "description_de": "Caldari-Dreadnought-Designs.", "description_en-us": "Caldari dreadnought designs.", "description_es": "Diseños de superacorazados caldaris.", "description_fr": "Modèles de dreadnoughts caldari.", "description_it": "Caldari dreadnought designs.", "description_ja": "カルダリ攻城艦設計図。", "description_ko": "칼다리의 드레드노트입니다.", "description_ru": "Дредноуты разработки Государства Caldari", "description_zh": "加达里无畏舰设计", "descriptionID": 64908, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65982, "parentGroupID": 3509 }, "764": { "description_de": "Gallente-Dreadnought-Designs.", "description_en-us": "Gallente dreadnought designs.", "description_es": "Diseños de superacorazados gallentes.", "description_fr": "Modèles de dreadnoughts gallente.", "description_it": "Gallente dreadnought designs.", "description_ja": "ガレンテ攻城艦設計図。", "description_ko": "갈란테의 드레드노트입니다.", "description_ru": "Дредноуты разработки Федерации Gallente.", "description_zh": "盖伦特无畏舰设计", "descriptionID": 64909, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65983, "parentGroupID": 3509 }, "765": { "description_de": "Mimatar-Dreadnought-Designs.", "description_en-us": "Minmatar dreadnought designs.", "description_es": "Diseños de superacorazados minmatarianos.", "description_fr": "Modèles de dreadnoughts minmatar.", "description_it": "Minmatar dreadnought designs.", "description_ja": "ミンマター攻城艦設計図。", "description_ko": "민마타의 드레드노트입니다.", "description_ru": "Дредноуты разработки Республики Minmatar.", "description_zh": "米玛塔尔无畏舰设计", "descriptionID": 64910, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65984, "parentGroupID": 3509 }, "766": { "description_de": "Capital-Schiffe, in der Lage, eineinhalb Welten und ein bisschen mehr zu transportieren.", "description_en-us": "Capital ships, able to transport a world and a half and then some.", "description_es": "Naves capitales capaces de transportar medio universo y un poco más.", "description_fr": "Vaisseaux capitaux capables de transporter toute une planète, ses lunes et les stations orbitales qui vont avec.", "description_it": "Capital ships, able to transport a world and a half and then some.", "description_ja": "宇宙を駆けめぐる輸送用主力艦。", "description_ko": "캐피탈급 함선으로 막대한 적재량이 장점인 함선입니다.", "description_ru": "Это корабли большого тоннажа, способные перевозить целые миры и половинку сверху.", "description_zh": "旗舰级船只,拥有不可思议的容量。", "descriptionID": 65266, "hasTypes": 0, "iconID": 1443, "name_de": "Frachter", "name_en-us": "Freighters", "name_es": "Cargueros", "name_fr": "Transports de fret", "name_it": "Freighters", "name_ja": "超大型輸送艦", "name_ko": "프레이터", "name_ru": "Фрейтеры", "name_zh": "货舰", "nameID": 66340, "parentGroupID": 1381 }, "767": { "description_de": "Amarr-Frachter-Designs.", "description_en-us": "Amarr freighter designs.", "description_es": "Diseños de cargueros amarrianos.", "description_fr": "Modèles de transports de fret amarr.", "description_it": "Amarr freighter designs.", "description_ja": "アマー超大型輸送艦設計図。", "description_ko": "아마르의 프레이터입니다.", "description_ru": "Грузовые корабли разработки Империи Amarr.", "description_zh": "艾玛货舰设计", "descriptionID": 64911, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 65985, "parentGroupID": 766 }, "768": { "description_de": "Caldari-Frachter-Designs.", "description_en-us": "Caldari freighter designs.", "description_es": "Diseños de cargueros caldaris.", "description_fr": "Modèles de transports de fret caldari.", "description_it": "Caldari freighter designs.", "description_ja": "カルダリ超大型輸送艦設計図。", "description_ko": "칼다리의 프레이터입니다.", "description_ru": "Грузовые корабли разработки Государства Caldari.", "description_zh": "加达里战略货舰设计", "descriptionID": 64912, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 65986, "parentGroupID": 766 }, "769": { "description_de": "Gallente-Frachter-Designs.", "description_en-us": "Gallente freighter designs.", "description_es": "Diseños de cargueros gallentes.", "description_fr": "Modèles de transports de fret gallente.", "description_it": "Gallente freighter designs.", "description_ja": "ガレンテ超大型輸送艦設計図。", "description_ko": "갈란테의 프레이터입니다.", "description_ru": "Грузовые корабли разработки Федерации Gallente.", "description_zh": "盖伦特货舰设计", "descriptionID": 64913, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 65987, "parentGroupID": 766 }, "770": { "description_de": "Minmatar-Frachter-Designs.", "description_en-us": "Minmatar freighter designs.", "description_es": "Diseños de cargueros minmatarianos.", "description_fr": "Modèles de transports de fret minmatar.", "description_it": "Minmatar freighter designs.", "description_ja": "ミンマター超大型輸送艦設計図。", "description_ko": "민마타의 프레이터입니다.", "description_ru": "Грузовые корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔货舰设计", "descriptionID": 64914, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 65988, "parentGroupID": 766 }, "771": { "description_de": "Blaster für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship blasters, for use on dreadnoughts and titans.", "description_es": "Blásteres de naves capitales para uso en superacorazados y titanes.", "description_fr": "Blasters pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship blasters, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦ブラスター。", "description_ko": "드레드노트 및 타이탄에 사용되는 캐피탈 함선 블라스터입니다.", "description_ru": "Бластеры для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载疾速炮,在无畏舰或者泰坦上使用。", "descriptionID": 64915, "hasTypes": 1, "iconID": 2836, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65989, "parentGroupID": 556 }, "772": { "description_de": "Railguns für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship railguns, for use on dreadnoughts and titans.", "description_es": "Cañones electromagnéticos de naves capitales para uso en superacorazados y titanes.", "description_fr": "Canons à rail pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship railguns, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦レールガン。", "description_ko": "드레드노트 및 타이탄에 사용되는 캐피탈 함선 레일건입니다.", "description_ru": "Рейлганы для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载磁轨炮,在无畏舰或者泰坦上使用。", "descriptionID": 64916, "hasTypes": 1, "iconID": 2840, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65990, "parentGroupID": 555 }, "773": { "description_de": "Strahllaser für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship beam lasers, for use on dreadnoughts and titans.", "description_es": "Láseres de rayos de naves capitales para uso en superacorazados y titanes.", "description_fr": "Lasers à rayons pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship beam lasers, for use on dreadnoughts and titans.", "description_ja": "攻城艦と旗艦級戦艦で使用される主力艦ビームレーザー。", "description_ko": "드레드노트 및 타이탄에서 사용하는 캐피탈 함선 빔 레이저입니다.", "description_ru": "Непрерывные лазеры для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载集束激光器,在无畏舰或者泰坦上使用。", "descriptionID": 64917, "hasTypes": 1, "iconID": 2837, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65991, "parentGroupID": 557 }, "774": { "description_de": "Impulslaser für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship pulse lasers, for use on dreadnoughts and titans.", "description_es": "Láseres de pulsos de naves capitales para uso en superacorazados y titanes.", "description_fr": "Lasers à impulsions pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship pulse lasers, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦パルスレーザー。", "description_ko": "드레드노트 및 타이탄에 사용되는 캐피탈 함선 펄스 레이저입니다.", "description_ru": "Импульсные лазеры для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载脉冲激光器,在无畏舰或者泰坦上使用。", "descriptionID": 64918, "hasTypes": 1, "iconID": 2841, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65992, "parentGroupID": 558 }, "775": { "description_de": "Artilleriekanonen für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship artillery cannons, for use on dreadnoughts and titans.", "description_es": "Cañones de artillería de naves capitales para uso en superacorazados y titanes.", "description_fr": "Canons d'artillerie pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship artillery cannons, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦アーティレリキャノン。", "description_ko": "드레드노트 및 타이탄에 사용되는 캐피탈 함선 함포입니다.", "description_ru": "Артиллерийские орудия для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载加农炮,在无畏舰或者泰坦上使用。", "descriptionID": 64919, "hasTypes": 1, "iconID": 2842, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65993, "parentGroupID": 560 }, "776": { "description_de": "Maschinenkanonen für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship autocannons, for use on dreadnoughts and titans.", "description_es": "Cañones automáticos de naves capitales para uso en superacorazados y titanes.", "description_fr": "Canons automatiques pour vaisseaux capitaux, utilisés sur les dreadnoughts et les titans.", "description_it": "Capital ship autocannons, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦オートキャノン。", "description_ko": "드레드노트 및 타이탄에 사용되는 캐피탈 함선 전용 기관포입니다.", "description_ru": "Автопушки для кораблей большого тоннажа, применяющиеся на титанах и дредноутах.", "description_zh": "旗舰级舰载自动加农炮,在无畏舰或者泰坦上使用。", "descriptionID": 64920, "hasTypes": 1, "iconID": 2838, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 65994, "parentGroupID": 559 }, "777": { "description_de": "Zum Abschuss von extragroßen Torpedos. Kann nur in Dreadnoughts und Titans ausgerüstet werden.", "description_en-us": "For the launching of XL torpedoes. Can only be fitted on dreadnoughts and titans.", "description_es": "Para lanzar torpedos XL. Solo se pueden equipar en superacorazados y titanes.", "description_fr": "Pour lancer des torpilles XL. Ne peut être installé que sur les supercuirassés et les titans.", "description_it": "For the launching of XL torpedoes. Can only be fitted on dreadnoughts and titans.", "description_ja": "XLトルピードの発射用。攻城艦およびタイタンにのみ搭載可能。", "description_ko": "XL 토피도를 발사하는 런처입니다. 드레드노트 및 타이탄에만 장착할 수 있습니다.", "description_ru": "Предназначены для пуска торпед сверхбольшой мощности. Оснащаемые классы кораблей: дредноуты и титаны.", "description_zh": "发射超大型鱼雷,只能装备在无畏舰和泰坦上。", "descriptionID": 64921, "hasTypes": 1, "iconID": 3955, "name_de": "XL Werfer", "name_en-us": "XL Launchers", "name_es": "Lanzadores XL", "name_fr": "Lanceurs XL", "name_it": "XL Launchers", "name_ja": "XLランチャー", "name_ko": "XL 런처", "name_ru": "Сверхбольшие", "name_zh": "堡垒级发射器", "nameID": 65995, "parentGroupID": 140 }, "778": { "description_de": "Schildverstärkungen für Capital-Schiffe.", "description_en-us": "Shield boosters for capital ships", "description_es": "Potenciadores de escudo para naves capitales.", "description_fr": "Boosters de bouclier pour vaisseaux capitaux", "description_it": "Shield boosters for capital ships", "description_ja": "主力艦用のシールドブースター。", "description_ko": "캐피탈 함선 실드 부스터", "description_ru": "Системы накачки щита для кораблей большого тоннажа.", "description_zh": "旗舰级护盾回充增量器", "descriptionID": 64922, "hasTypes": 1, "iconID": 84, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 65996, "parentGroupID": 552 }, "779": { "description_de": "Module zur Unterstützung von Flottenmitgliedern", "description_en-us": "Modules used to assist fleet members", "description_es": "Módulos usados para ayudar a miembros de la flota.", "description_fr": "Modules utilisés pour assister les membres de la flotte", "description_it": "Modules used to assist fleet members", "description_ja": "フリートメンバーを支援するモジュール", "description_ko": "함대 지원 모듈입니다.", "description_ru": "Модули, используемые для поддержки кораблей флота", "description_zh": "用于辅助舰队成员的装备", "descriptionID": 64923, "hasTypes": 0, "iconID": 20969, "name_de": "Module zur Flottenunterstützung", "name_en-us": "Fleet Assistance Modules", "name_es": "Módulos de asistencia de flotas", "name_fr": "Modules d'assistance de flotte", "name_it": "Fleet Assistance Modules", "name_ja": "フリート支援モジュール", "name_ko": "함대 지원 모듈", "name_ru": "Модули координации флотов", "name_zh": "舰队辅助装备", "nameID": 65997, "parentGroupID": 9 }, "781": { "description_de": "Baustein-Komponenten zur Produktion von Capital-Schiffen.", "description_en-us": "Modular components used in the manufacture of capital ships.", "description_es": "Componentes modulares usados en la fabricación de naves capitales.", "description_fr": "Objets modulaires utilisés pour la fabrication des vaisseaux capitaux.", "description_it": "Modular components used in the manufacture of capital ships.", "description_ja": "主力艦の製造に使用されるモジュール部品。", "description_ko": "캐피탈 함선 제작에 사용되는 모듈 부품입니다.", "description_ru": "Модульные компоненты, применяющиеся для строительства кораблей большого тоннажа.", "description_zh": "制造旗舰级舰船使用的模块化组件。", "descriptionID": 64925, "hasTypes": 1, "iconID": 2863, "name_de": "Standard", "name_en-us": "Standard Capital Ship Components", "name_es": "Componentes estándar de nave capital", "name_fr": "Composants de vaisseau capital standard", "name_it": "Standard Capital Ship Components", "name_ja": "標準型主力艦部品", "name_ko": "일반 캐피탈 함선 부품", "name_ru": "Компоненты КБТ", "name_zh": "标准旗舰组件", "nameID": 65999, "parentGroupID": 1035 }, "782": { "description_de": "Blueprints von Schiffen der Dreadnought-Klasse.", "description_en-us": "Blueprints of dreadnought-class vessels.", "description_es": "Planos de naves de clase superacorazado.", "description_fr": "Plans de construction de vaisseaux de classe dreadnought.", "description_it": "Blueprints of dreadnought-class vessels.", "description_ja": "攻城艦級艦船のブループリント。", "description_ko": "드레드노트급 함선 블루프린트입니다.", "description_ru": "Чертежи дредноутов.", "description_zh": "无畏舰蓝图。", "descriptionID": 64926, "hasTypes": 0, "iconID": 2703, "name_de": "Dreadnoughts", "name_en-us": "Dreadnoughts", "name_es": "Superacorazados", "name_fr": "Dreadnoughts", "name_it": "Dreadnoughts", "name_ja": "攻城艦", "name_ko": "드레드노트", "name_ru": "Дредноуты", "name_zh": "无畏舰", "nameID": 66000, "parentGroupID": 204 }, "783": { "description_de": "Blueprints von Amarr-Dreadnought-Designs.", "description_en-us": "Blueprints of Amarr dreadnought designs.", "description_es": "Planos de diseños de superacorazados amarrianos.", "description_fr": "Plans de construction de modèles de dreadnoughts amarr.", "description_it": "Blueprints of Amarr dreadnought designs.", "description_ja": "アマー攻城艦設計図のブループリント。", "description_ko": "아마르 드레드노트 블루프린트입니다.", "description_ru": "Чертежи дредноутов разработки Империи Amarr.", "description_zh": "艾玛无畏舰设计蓝图", "descriptionID": 64927, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66001, "parentGroupID": 782 }, "784": { "description_de": "Blueprints von Caldari-Dreadnought-Designs.", "description_en-us": "Blueprints of Caldari dreadnought designs.", "description_es": "Planos de diseños de superacorazados caldaris.", "description_fr": "Plans de construction de modèles de dreadnoughts caldari.", "description_it": "Blueprints of Caldari dreadnought designs.", "description_ja": "カルダリ攻城艦設計図のブループリント。", "description_ko": "칼다리 드레드노트 블루프린트입니다.", "description_ru": "Чертежи дредноутов разработки Государства Caldari.", "description_zh": "加达里无畏舰设计蓝图", "descriptionID": 64928, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66002, "parentGroupID": 782 }, "785": { "description_de": "Blueprints von Gallente-Dreadnought-Designs.", "description_en-us": "Blueprints of Gallente dreadnought designs.", "description_es": "Planos de diseños de superacorazados gallentes.", "description_fr": "Plans de construction de modèles de dreadnoughts gallente.", "description_it": "Blueprints of Gallente dreadnought designs.", "description_ja": "ガレンテ攻城艦設計図のブループリント。", "description_ko": "갈란테 드레드노트 블루프린트입니다.", "description_ru": "Чертежи дредноутов разработки Федерации Gallente.", "description_zh": "盖伦特无畏舰设计蓝图。", "descriptionID": 64929, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66003, "parentGroupID": 782 }, "786": { "description_de": "Blueprints von Minmatar-Dreadnought-Designs.", "description_en-us": "Blueprints of Minmatar dreadnought designs.", "description_es": "Planos de diseños de superacorazados minmatarianos.", "description_fr": "Plans de construction de modèles de dreadnoughts minmatar.", "description_it": "Blueprints of Minmatar dreadnought designs.", "description_ja": "ミンマター攻城艦のブループリント。", "description_ko": "민마타 드레드노트 블루프린트입니다.", "description_ru": "Чертежи дредноутов разработки Республики Minmatar.", "description_zh": "米玛塔尔无畏舰设计蓝图。", "descriptionID": 64930, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66004, "parentGroupID": 782 }, "787": { "description_de": "Blueprints von Schiffen der Frachter-Klasse.", "description_en-us": "Blueprints of freighter-class vessels.", "description_es": "Planos de naves de clase carguero.", "description_fr": "Plans de construction de vaisseaux de classe transport de fret.", "description_it": "Blueprints of freighter-class vessels.", "description_ja": "超大型輸送艦級艦船のブループリント。", "description_ko": "프레이터급 함선 블루프린트입니다.", "description_ru": "Чертежи грузовых кораблей.", "description_zh": "货舰级别舰船蓝图", "descriptionID": 64931, "hasTypes": 0, "iconID": 2703, "name_de": "Frachter", "name_en-us": "Freighters", "name_es": "Cargueros", "name_fr": "Transports de fret", "name_it": "Freighters", "name_ja": "超大型輸送艦", "name_ko": "프레이터", "name_ru": "Фрейтеры", "name_zh": "货舰", "nameID": 66005, "parentGroupID": 204 }, "788": { "description_de": "Blueprints von Amarr-Frachter-Designs.", "description_en-us": "Blueprints of Amarr freighter designs.", "description_es": "Planos de diseños de cargueros amarrianos.", "description_fr": "Plans de construction de modèles de transports de fret amarr.", "description_it": "Blueprints of Amarr freighter designs.", "description_ja": "アマー超大型輸送艦設計図のブループリント。", "description_ko": "아마르 프레이터 블루프린트입니다.", "description_ru": "Чертежи грузовых кораблей разработки Империи Amarr.", "description_zh": "艾玛货舰设计蓝图", "descriptionID": 64932, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66006, "parentGroupID": 787 }, "789": { "description_de": "Blueprints von Caldari-Frachter-Designs.", "description_en-us": "Blueprints of Caldari freighter designs.", "description_es": "Planos de diseños de cargueros caldaris.", "description_fr": "Plans de construction de modèles de transports de fret caldari.", "description_it": "Blueprints of Caldari freighter designs.", "description_ja": "カルダリ超大型輸送艦設計図のブループリント。", "description_ko": "칼다리 프레이터 블루프린트입니다.", "description_ru": "Чертежи грузовых кораблей разработки Государства Caldari.", "description_zh": "加达里战略货舰设计蓝图", "descriptionID": 64933, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66007, "parentGroupID": 787 }, "790": { "description_de": "Blueprints von Gallente-Frachter-Designs.", "description_en-us": "Blueprints of Gallente freighter designs.", "description_es": "Planos de diseños de cargueros gallentes.", "description_fr": "Plans de construction de modèles de transports de fret gallente.", "description_it": "Blueprints of Gallente freighter designs.", "description_ja": "ガレンテ超大型輸送艦設計図のブループリント。", "description_ko": "갈란테 프레이터 블루프린트입니다.", "description_ru": "Чертежи грузовых кораблей разработки Федерации Gallente.", "description_zh": "盖伦特货舰设计蓝图。", "descriptionID": 64934, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66008, "parentGroupID": 787 }, "791": { "description_de": "Blueprints von Minmatar-Frachter-Designs.", "description_en-us": "Blueprints of Minmatar freighter designs.", "description_es": "Planos de diseños de cargueros minmatarianos.", "description_fr": "Plans de construction de modèles de transports de fret minmatar.", "description_it": "Blueprints of Minmatar freighter designs.", "description_ja": "ミンマター超大型輸送艦設計図のブループリント。", "description_ko": "민마타 프리깃 블루프린트입니다.", "description_ru": "Чертежи грузовых кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔货舰设计蓝图。", "descriptionID": 64935, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66009, "parentGroupID": 787 }, "792": { "description_de": "Blueprints von für Capital-Schiffe typischen Hybridgeschütztürmen.", "description_en-us": "Blueprints of capital-sized hybrid turrets.", "description_es": "Planos de torretas híbridas para naves de tamaño capital.", "description_fr": "Plans de construction de tourelles hybrides adaptées aux vaisseaux capitaux.", "description_it": "Blueprints of capital-sized hybrid turrets.", "description_ja": "キャピタル級ハイブリッドタレットのブループリント。", "description_ko": "캐피탈급 함선용 하이브리드 터렛 블루프린트입니다.", "description_ru": "Чертежи гибридных орудий для кораблей большого тоннажа.", "description_zh": "旗舰级混合炮蓝图。", "descriptionID": 64936, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66010, "parentGroupID": 286 }, "793": { "description_de": "Blueprints von für Capital-Schiffe typischen Projektilgeschütztürmen.", "description_en-us": "Blueprints of capital-sized projectile turrets.", "description_es": "Planos de torretas de proyectiles para naves de tamaño capital.", "description_fr": "Plans de construction de tourelles à projectiles adaptées aux vaisseaux capitaux.", "description_it": "Blueprints of capital-sized projectile turrets.", "description_ja": "キャピタル級プロジェクタイルタレットのブループリント。", "description_ko": "캐피탈급 함선용 발사체 터렛 블루프린트입니다.", "description_ru": "Чертежи огнестрельных орудий для кораблей большого тоннажа.", "description_zh": "旗舰级射弹炮蓝图。", "descriptionID": 64937, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66011, "parentGroupID": 287 }, "794": { "description_de": "Blueprints von für Capital-Schiffe typischen Lasergeschütztürmen.", "description_en-us": "Blueprints of capital-sized laser turrets.", "description_es": "Planos de torretas láser para naves de tamaño capital.", "description_fr": "Plans de construction de tourelles à laser adaptées aux vaisseaux capitaux.", "description_it": "Blueprints of capital-sized laser turrets.", "description_ja": "キャピタル級レーザータレットのブループリント。", "description_ko": "캐피탈급 함선용 레이저 터렛 블루프린트입니다.", "description_ru": "Чертежи лазерных орудий для кораблей большого тоннажа.", "description_zh": "旗舰级激光炮蓝图。", "descriptionID": 64938, "hasTypes": 1, "iconID": 2703, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66012, "parentGroupID": 288 }, "796": { "description_de": "Blueprints für Capital Ship Components.", "description_en-us": "Blueprints of Capital Ship Components.", "description_es": "Planos de componentes de naves capitales.", "description_fr": "Plans de construction de composants de vaisseaux capitaux.", "description_it": "Blueprints of Capital Ship Components.", "description_ja": "主力艦部品のブループリント。", "description_ko": "캐피탈 함선 부품 블루프린트입니다.", "description_ru": "Чертежи компонентов, использующихся при строительстве кораблей большого тоннажа (КБТ).", "description_zh": "旗舰级舰船组件蓝图。", "descriptionID": 65304, "hasTypes": 1, "iconID": 2703, "name_de": "Standard", "name_en-us": "Standard Capital Ship Components", "name_es": "Componentes estándar de nave capital", "name_fr": "Composants de vaisseau capital standard", "name_it": "Standard Capital Ship Components", "name_ja": "標準型主力艦の部品", "name_ko": "일반 캐피탈 함선 부품", "name_ru": "Компоненты КБТ", "name_zh": "标准旗舰组件", "nameID": 66378, "parentGroupID": 800 }, "798": { "description_de": "Blueprints für Außenposten-Bauplattformen.", "description_en-us": "Blueprints of Outpost Construction Platforms.", "description_es": "Planos de plataformas de construcción de puestos avanzados.", "description_fr": "Plans de construction de plateformes de construction d'avant-poste.", "description_it": "Blueprints of Outpost Construction Platforms.", "description_ja": "アウトポスト建設プラットフォームのブループリント。", "description_ko": "전초기지 건설 플랫폼 블루프린트입니다.", "description_ru": "Чертежи строительных платформ для аванпостов.", "description_zh": "建筑平台的蓝图。", "descriptionID": 65305, "hasTypes": 0, "iconID": 2703, "name_de": "Außenposten-Komponenten", "name_en-us": "Outpost Components", "name_es": "Componentes de puestos avanzados", "name_fr": "Composants d'avant-poste", "name_it": "Outpost Components", "name_ja": "アウトポスト部品", "name_ko": "전초기지 부품", "name_ru": "Компоненты форпостов", "name_zh": "哨站组件", "nameID": 66379, "parentGroupID": 800 }, "799": { "description_de": "Blueprints of Fleet Assistance Modules", "description_en-us": "Blueprints of Fleet Assistance Modules.", "description_es": "Planos de módulos de asistencia de flotas.", "description_fr": "Plans de construction de modules d'assistance de flotte.", "description_it": "Blueprints of Fleet Assistance Modules.", "description_ja": "フリート支援モジュールのブループリント。", "description_ko": "함대 지원 모듈 블루프린트입니다.", "description_ru": "Чертежи модулей обеспечения флотского взаимодействия.", "description_zh": "舰队辅助装备的蓝图。", "descriptionID": 65302, "hasTypes": 1, "iconID": 2703, "name_de": "Module zur Flottenunterstützung", "name_en-us": "Fleet Assistance Modules", "name_es": "Módulos de asistencia de flotas", "name_fr": "Modules d'assistance de flotte", "name_it": "Fleet Assistance Modules", "name_ja": "フリート支援モジュール", "name_ko": "함대 지원 모듈", "name_ru": "Модули координации флотов", "name_zh": "舰队辅助装备", "nameID": 66376, "parentGroupID": 209 }, "800": { "description_de": "Blueprints von Mittelsgegenständen, welche bei der Produktion fortschrittlicherer Geräte Verwendung finden.", "description_en-us": "Blueprints for intermediary items used in the production of more advanced items.", "description_es": "Planos para productos intermediarios usados en la producción de objetos más avanzados.", "description_fr": "Plans de construction d'objets intermédiaires utilisés dans la production d'articles plus complexes.", "description_it": "Blueprints for intermediary items used in the production of more advanced items.", "description_ja": "より高性能なアイテムの生産に用いられる中間段階アイテムのブループリント。", "description_ko": "고급 아이템 제작에 사용되는 중급 아이템 블루프린트입니다.", "description_ru": "Чертежи промежуточных элементов, используемых для производства более сложных предметов.", "description_zh": "这些蓝图用来制造中间产品,这些中间产品再用来生产高级物品。", "descriptionID": 64939, "hasTypes": 0, "iconID": 2703, "name_de": "Komponenten", "name_en-us": "Components", "name_es": "Componentes", "name_fr": "Composants", "name_it": "Components", "name_ja": "部品", "name_ko": "부품", "name_ru": "Компоненты", "name_zh": "组件", "nameID": 66013, "parentGroupID": 1041 }, "801": { "description_de": "Module, die zur Vergrößerung und Verbesserung der Belagerungsfähigkeiten eines Capital-Schiffs geschaffen wurden.", "description_en-us": "Modules designed to augment and enhance a capital ship's siege warfare abilities.", "description_es": "Módulos diseñados para aumentar y mejorar las capacidades de guerra de asedio de la naves capitales.", "description_fr": "Modules conçus pour améliorer les tactiques de siège d'un vaisseau capital.", "description_it": "Modules designed to augment and enhance a capital ship's siege warfare abilities.", "description_ja": "主力艦の包囲戦能力を強化するモジュール。", "description_ko": "캐피탈 함선의 공성 능력을 강화하는 모듈입니다.", "description_ru": "Модули, разработанные для усиления и улучшения боевой мощи кораблей большого тоннажа.", "description_zh": "用于增强和改进旗舰级舰船的会战能力。", "descriptionID": 64940, "hasTypes": 1, "iconID": 2851, "name_de": "Belagerungsmodule", "name_en-us": "Siege Modules", "name_es": "Módulos de asedio", "name_fr": "Modules de siège", "name_it": "Siege Modules", "name_ja": "シージモジュール", "name_ko": "시즈모듈", "name_ru": "Реконфигураторы", "name_zh": "会战装备", "nameID": 66014, "parentGroupID": 143 }, "802": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66015, "parentGroupID": 65 }, "803": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66016, "parentGroupID": 65 }, "812": { "description_de": "Väter der Flotte, der größte der Großen.", "description_en-us": "Fathers of the fleet, the biggest of the big.", "description_es": "Los padres de la flota, los más grandes entre los grandes.", "description_fr": "Les patriarches de la flotte, des géants parmi les grands.", "description_it": "Fathers of the fleet, the biggest of the big.", "description_ja": "けた外れのスケールを誇る、フリートの最高峰。", "description_ko": "함대의 수장으로 가장 큰 규모를 자랑하는 함선입니다.", "description_ru": "Отцы флотов, самые большие корабли из существующих.", "description_zh": "舰队中的老大,老大中的老大。", "descriptionID": 65263, "hasTypes": 0, "iconID": 1443, "name_de": "Titans", "name_en-us": "Titans", "name_es": "Titanes", "name_fr": "Titans", "name_it": "Titans", "name_ja": "旗艦級戦艦", "name_ko": "타이탄", "name_ru": "Титаны", "name_zh": "泰坦", "nameID": 66337, "parentGroupID": 1381 }, "813": { "description_de": "Amarr-Titan-Designs.", "description_en-us": "Amarr titan designs.", "description_es": "Diseños de titanes amarrianos.", "description_fr": "Modèles de titans amarr.", "description_it": "Amarr titan designs.", "description_ja": "アマータイタン設計図。", "description_ko": "아마르의 타이탄입니다.", "description_ru": "Титаны разработки Империи Amarr.", "description_zh": "艾玛泰坦设计", "descriptionID": 64951, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66025, "parentGroupID": 812 }, "814": { "description_de": "Caldari-Titan-Designs.", "description_en-us": "Caldari titan designs.", "description_es": "Diseños de titanes caldaris.", "description_fr": "Modèles de titans caldari.", "description_it": "Caldari titan designs.", "description_ja": "カルダリタイタン設計図。", "description_ko": "칼다리의 타이탄입니다.", "description_ru": "Титаны разработки Государства Caldari.", "description_zh": "加达里泰坦设计", "descriptionID": 64952, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66026, "parentGroupID": 812 }, "815": { "description_de": "Gallente-Titan-Designs.", "description_en-us": "Gallente titan designs.", "description_es": "Diseños de titanes gallentes.", "description_fr": "Modèles de titans gallente.", "description_it": "Gallente titan designs.", "description_ja": "ガレンテタイタン設計図。", "description_ko": "갈란테의 타이탄입니다.", "description_ru": "Титаны разработки Федерации Gallente.", "description_zh": "盖伦特泰坦设计", "descriptionID": 64953, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66027, "parentGroupID": 812 }, "816": { "description_de": "Minmatar-Titan-Designs.", "description_en-us": "Minmatar titan designs.", "description_es": "Diseños de titanes minmatarianos.", "description_fr": "Modèles de titans minmatar.", "description_it": "Minmatar titan designs.", "description_ja": "ミンマタータイタン設計図。", "description_ko": "민마타의 타이탄입니다.", "description_ru": "Титаны разработки Республики Minmatar.", "description_zh": "米玛塔尔泰坦设计", "descriptionID": 64954, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66028, "parentGroupID": 812 }, "817": { "description_de": "Große Kriegsschiffe, die in der Lage sind, Horden kleinerer Schiffe zu transportieren und einzusetzen.", "description_en-us": "Capital warships, able to transport and deploy hordes of smaller vessels into the field.", "description_es": "Naves de guerra capitales, capaces de transportar hordas de naves más pequeñas para desplegarlas en el campo de batalla.", "description_fr": "Vaisseaux capitaux capables de transporter et de déployer des hordes de vaisseaux de taille inférieure sur le champ de bataille.", "description_it": "Capital warships, able to transport and deploy hordes of smaller vessels into the field.", "description_ja": "多数の小型艦船を輸送し、配置することが可能なキャピタル級戦闘艦。", "description_ko": "캐피탈급 함선으로 다수의 소형 기체들을 격납하고 전투 시 사출합니다.", "description_ru": "Это боевые корабли большого тоннажа, способные доставлять на поле боя целые соединения небольших кораблей.", "description_zh": "旗舰级战舰,可以装载、运输和投放小型舰只到战场执行任务。", "descriptionID": 65261, "hasTypes": 0, "iconID": 1443, "name_de": "Trägerschiffe", "name_en-us": "Carriers", "name_es": "Portanaves", "name_fr": "Porte-vaisseaux", "name_it": "Carriers", "name_ja": "艦載機母艦", "name_ko": "캐리어", "name_ru": "Корабли автономного развёртывания", "name_zh": "航空母舰", "nameID": 66335, "parentGroupID": 1381 }, "818": { "description_de": "Amarr-Träger-Designs.", "description_en-us": "Amarr carrier designs.", "description_es": "Diseños de portanaves amarrianos.", "description_fr": "Modèles de porte-vaisseaux amarr.", "description_it": "Amarr carrier designs.", "description_ja": "アマー艦載機母艦設計図。", "description_ko": "아마르의 캐리어입니다.", "description_ru": "Корабли-носители разработки Империи Amarr.", "description_zh": "艾玛航空母舰设计", "descriptionID": 64955, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66029, "parentGroupID": 817 }, "819": { "description_de": "Caldari-Träger-Designs.", "description_en-us": "Caldari carrier designs.", "description_es": "Diseños de portanaves caldaris.", "description_fr": "Modèles de porte-vaisseaux caldari.", "description_it": "Caldari carrier designs.", "description_ja": "カルダリ艦載機母艦設計図。", "description_ko": "칼다리의 캐리어입니다.", "description_ru": "Корабли-носители разработки Государства Caldari.", "description_zh": "加达里航空母舰设计", "descriptionID": 64956, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66030, "parentGroupID": 817 }, "820": { "description_de": "Gallente-Träger-Designs.", "description_en-us": "Gallente carrier designs.", "description_es": "Diseños de portanaves gallentes.", "description_fr": "Modèles de porte-vaisseaux gallente.", "description_it": "Gallente carrier designs.", "description_ja": "ガレンテ艦載機母艦設計図。", "description_ko": "갈란테의 캐리어입니다.", "description_ru": "Корабли-носители разработки Федерации Gallente.", "description_zh": "盖伦特航空母舰设计", "descriptionID": 64957, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66031, "parentGroupID": 817 }, "821": { "description_de": "Minmatar-Träger-Designs.", "description_en-us": "Minmatar carrier designs.", "description_es": "Diseños de portanaves minmatarianos.", "description_fr": "Modèles de porte-vaisseaux minmatar.", "description_it": "Minmatar carrier designs.", "description_ja": "ミンマター艦載機母艦設計図。", "description_ko": "민마타의 캐리어입니다.", "description_ru": "Корабли-носители разработки Республики Minmatar.", "description_zh": "米玛塔尔航空母舰设计", "descriptionID": 64958, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66032, "parentGroupID": 817 }, "822": { "description_de": "Schiffe der Schlachtkreuzer-Klasse, konzipiert, um ihren Verbündeten auf dem Schlachtfeld zu helfen.", "description_en-us": "Battlecruiser-class vessels, designed to aid their allies on the battlefield.", "description_es": "Cruceros de combate diseñados para ayudar a los aliados en el campo de batalla.", "description_fr": "Vaisseaux de classe croiseur de bataille, conçus pour assister leurs alliés sur le champ de bataille.", "description_it": "Battlecruiser-class vessels, designed to aid their allies on the battlefield.", "description_ja": "戦場での味方艦船のサポートを主任務とする巡洋戦艦級艦船。", "description_ko": "배틀크루저급 함선으로 전장의 아군을 지원하기 위해 제작되었습니다.", "description_ru": "Усовершенствованные линейные крейсеры, разработанные для оказания поддержки другим кораблям на поле боя.", "description_zh": "战列巡洋舰等级战舰,专门用来在战场对友军舰只提供支援。", "descriptionID": 65257, "hasTypes": 0, "iconID": 1443, "name_de": "Kommandoschiffe", "name_en-us": "Command Ships", "name_es": "Naves de mando", "name_fr": "Vaisseaux de commandement", "name_it": "Command Ships", "name_ja": "指揮型巡洋戦艦", "name_ko": "커맨드쉽", "name_ru": "Корабли управления", "name_zh": "指挥舰", "nameID": 66331, "parentGroupID": 1375 }, "823": { "description_de": "Schiffe der Zerstörer-Klasse, die dazu gebaut sind, andere Raumschiffe aus dem Warp zu ziehen.", "description_en-us": "Destroyer-class vessels designed to pull other starships out of warp.", "description_es": "Naves de clase destructor diseñadas para sacar a otras naves del warp.", "description_fr": "Vaisseaux de type destroyer, conçus pour empêcher les autres vaisseaux spatiaux de warper.", "description_it": "Destroyer-class vessels designed to pull other starships out of warp.", "description_ja": "敵船のワープを阻止するデストロイヤー級艦船。", "description_ko": "워프 교란 임무를 수행하는 디스트로이어급 함선입니다.", "description_ru": "Разработанные на базе эсминцев корабли, оснащенные системами глушения варп-приводов других кораблей.", "description_zh": "驱逐舰级别舰船,用于阻止其他船只的跃迁。", "descriptionID": 65376, "hasTypes": 0, "iconID": 1443, "name_de": "Unterbrecher", "name_en-us": "Interdictors", "name_es": "Interdictores", "name_fr": "Interdicteurs", "name_it": "Interdictors", "name_ja": "ワープ妨害型駆逐艦", "name_ko": "인터딕터", "name_ru": "Заградительные эсминцы", "name_zh": "拦截舰", "nameID": 66450, "parentGroupID": 1373 }, "824": { "description_de": "Kreuzer, die auf Aufklärungsmissionen und elektronische Kriegsführung spezialisiert sind.", "description_en-us": "Cruisers specialized in reconnaissance operations and electronic warfare.", "description_es": "Cruceros especializados en operaciones de reconocimiento y guerra electrónica.", "description_fr": "Croiseurs spécialisés dans les opérations de reconnaissance et la guerre électronique.", "description_it": "Cruisers specialized in reconnaissance operations and electronic warfare.", "description_ja": "偵察活動や電子戦を主任務とする巡洋艦。", "description_ko": "크루저는 정찰 작전 및 전자전에 특화된 함선입니다.", "description_ru": "Крейсеры, предназначенные для ведения разведки и электронной борьбы.", "description_zh": "专用于侦察任务和电子战的巡洋舰。", "descriptionID": 65252, "hasTypes": 0, "iconID": 1443, "name_de": "Aufklärungsschiffe", "name_en-us": "Recon Ships", "name_es": "Naves de reconocimiento", "name_fr": "Vaisseaux de reconnaissance", "name_it": "Recon Ships", "name_ja": "電子戦型巡洋艦", "name_ko": "리콘 크루저", "name_ru": "Дозорные крейсеры", "name_zh": "侦察舰", "nameID": 66326, "parentGroupID": 1368 }, "825": { "description_de": "Amarr-Kommandoschiff-Designs.", "description_en-us": "Amarr command ship designs.", "description_es": "Diseños de naves de mando amarrianas.", "description_fr": "Modèles de vaisseaux de commandement amarr.", "description_it": "Amarr command ship designs.", "description_ja": "アマー指揮型巡洋戦艦設計図。", "description_ko": "아마르의 커맨드쉽입니다.", "description_ru": "Корабли управления разработки Империи Amarr.", "description_zh": "艾玛指挥舰设计", "descriptionID": 64959, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66033, "parentGroupID": 822 }, "826": { "description_de": "Amarr-Unterbrecher-Designs.", "description_en-us": "Amarr interdictor designs.", "description_es": "Diseños de interdictores amarrianos.", "description_fr": "Modèles d'interdicteurs amarr.", "description_it": "Amarr interdictor designs.", "description_ja": "アマーワープ妨害型駆逐艦設計図。", "description_ko": "아마르의 인터딕터입니다.", "description_ru": "Заградительные корабли разработки Империи Amarr.", "description_zh": "艾玛拦截舰设计", "descriptionID": 64960, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66034, "parentGroupID": 823 }, "827": { "description_de": "Amarr-Aufklärungsschiff-Designs.", "description_en-us": "Amarr recon ship designs.", "description_es": "Diseños de naves de reconocimiento amarrianas.", "description_fr": "Modèles de vaisseaux de reconnaissance amarr.", "description_it": "Amarr recon ship designs.", "description_ja": "アマー偵察船設計図。", "description_ko": "아마르의 리콘 크루저입니다.", "description_ru": "Разведывательные корабли разработки Империи Amarr.", "description_zh": "艾玛侦察舰设计", "descriptionID": 64961, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66035, "parentGroupID": 824 }, "828": { "description_de": "Caldari-Kommandoschiff-Designs.", "description_en-us": "Caldari command ship designs.", "description_es": "Diseños de naves de mando caldaris.", "description_fr": "Modèles de vaisseaux de commandement caldari.", "description_it": "Caldari command ship designs.", "description_ja": "カルダリ指揮型巡洋戦艦設計図。", "description_ko": "칼다리의 커맨드쉽입니다.", "description_ru": "Корабли управления разработки Государства Caldari.", "description_zh": "加达里指挥舰设计", "descriptionID": 64962, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66036, "parentGroupID": 822 }, "829": { "description_de": "Caldari-Unterbrecher-Designs.", "description_en-us": "Caldari interdictor designs.", "description_es": "Diseños de interdictores caldaris.", "description_fr": "Modèles d'interdicteurs caldari.", "description_it": "Caldari interdictor designs.", "description_ja": "カルダリワープ妨害型駆逐艦設計図。", "description_ko": "칼다리의 인터딕터입니다.", "description_ru": "Заградительные корабли разработки Государства Caldari.", "description_zh": "加达里拦截舰设计", "descriptionID": 64963, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66037, "parentGroupID": 823 }, "830": { "description_de": "Caldari-Aufklärungsschiff-Designs.", "description_en-us": "Caldari recon ship designs.", "description_es": "Diseños de naves de reconocimiento caldaris.", "description_fr": "Modèles de vaisseaux de reconnaissance caldari.", "description_it": "Caldari recon ship designs.", "description_ja": "カルダリ偵察船設計図。", "description_ko": "칼다리의 리콘 크루저입니다.", "description_ru": "Разведывательные корабли разработки Государства Caldari.", "description_zh": "加达里侦察舰设计", "descriptionID": 64964, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66038, "parentGroupID": 824 }, "831": { "description_de": "Gallente-Kommandoschiff-Designs.", "description_en-us": "Gallente command ship designs.", "description_es": "Diseños de naves de mando gallentes.", "description_fr": "Modèles de vaisseaux de commandement gallente.", "description_it": "Gallente command ship designs.", "description_ja": "ガレンテ指揮型巡洋戦艦設計図。", "description_ko": "갈란테의 커맨드쉽입니다.", "description_ru": "Корабли управления разработки Федерации Gallente.", "description_zh": "盖伦特指挥舰设计", "descriptionID": 64965, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66039, "parentGroupID": 822 }, "832": { "description_de": "Gallente-Unterbrecher-Designs.", "description_en-us": "Gallente interdictor designs.", "description_es": "Diseño de interdictores gallentes.", "description_fr": "Modèles d'interdicteurs gallente.", "description_it": "Gallente interdictor designs.", "description_ja": "ガレンテワープ妨害型駆逐艦設計図。", "description_ko": "갈란테의 인터딕터입니다.", "description_ru": "Заградительные корабли разработки Федерации Gallente.", "description_zh": "盖伦特拦截舰设计", "descriptionID": 64966, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66040, "parentGroupID": 823 }, "833": { "description_de": "Gallente-Aufklärungsschiff-Designs.", "description_en-us": "Gallente recon ship designs.", "description_es": "Diseños de naves de reconocimiento gallentes.", "description_fr": "Modèles de vaisseaux de reconnaissance gallente.", "description_it": "Gallente recon ship designs.", "description_ja": "ガレンテ偵察船設計図。", "description_ko": "갈란테의 리콘 크루저입니다.", "description_ru": "Разведывательные корабли разработки Федерации Gallente.", "description_zh": "盖伦特侦察舰设计", "descriptionID": 64967, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66041, "parentGroupID": 824 }, "834": { "description_de": "Minmatar-Kommandoschiff-Designs.", "description_en-us": "Minmatar command ship designs.", "description_es": "Diseños de naves de mando minmatarianas.", "description_fr": "Modèles de vaisseaux de commandement minmatar.", "description_it": "Minmatar command ship designs.", "description_ja": "ミンマター指揮型巡洋戦艦設計図。", "description_ko": "민마타의 커맨드쉽입니다.", "description_ru": "Корабли управления разработки Республики Minmatar.", "description_zh": "米玛塔尔指挥舰设计", "descriptionID": 64968, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66042, "parentGroupID": 822 }, "835": { "description_de": "Minmatar-Unterbrecher-Designs.", "description_en-us": "Minmatar interdictor designs.", "description_es": "Diseño de interdictores minmatarianos.", "description_fr": "Modèles d'interdicteurs minmatar.", "description_it": "Minmatar interdictor designs.", "description_ja": "ミンマターワープ妨害型駆逐艦設計図。", "description_ko": "민마타의 인터딕터입니다.", "description_ru": "Заградительные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔拦截舰设计", "descriptionID": 64969, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66043, "parentGroupID": 823 }, "836": { "description_de": "Minmatar-Aufklärungsschiff-Designs.", "description_en-us": "Minmatar recon ship designs.", "description_es": "Diseños de naves de reconocimiento minmatarianas.", "description_fr": "Modèles de vaisseaux de reconnaissance minmatar.", "description_it": "Minmatar recon ship designs.", "description_ja": "ミンマター偵察船設計図。", "description_ko": "민마타의 리콘 크루저입니다.", "description_ru": "Разведывательные корабли разработки Республики Minmatar.", "description_zh": "米玛塔尔侦察舰设计", "descriptionID": 64970, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66044, "parentGroupID": 824 }, "837": { "description_de": "Leichte Aufklärungsdrohnen", "description_en-us": "Light Scout Drones", "description_es": "Drones de reconocimiento ligeros.", "description_fr": "Drones de reconnaissance légers", "description_it": "Light Scout Drones", "description_ja": "ライトスカウトドローン", "description_ko": "라이트 스카우트 드론", "description_ru": "Легкие разведывательные дроны", "description_zh": "轻型侦察无人机", "descriptionID": 64971, "hasTypes": 1, "iconID": 1084, "name_de": "Leichte Aufklärungsdrohnen", "name_en-us": "Light Scout Drones", "name_es": "Drones de reconocimiento ligeros", "name_fr": "Drones de reconnaissance légers", "name_it": "Light Scout Drones", "name_ja": "ライトスカウトドローン", "name_ko": "라이트 스카우트 드론", "name_ru": "Лёгкие боевые дроны", "name_zh": "轻型侦察无人机", "nameID": 66045, "parentGroupID": 159 }, "838": { "description_de": "Mittlere Aufklärungsdrohnen", "description_en-us": "Medium Scout Drones", "description_es": "Drones de reconocimiento medianos.", "description_fr": "Drones de reconnaissance intermédiaires", "description_it": "Medium Scout Drones", "description_ja": "ミディアムスカウトドローン", "description_ko": "미디움 스카우트 드론", "description_ru": "Средние разведывательные дроны", "description_zh": "中型侦察无人机", "descriptionID": 64972, "hasTypes": 1, "iconID": 1084, "name_de": "Mittlere Aufklärungsdrohnen", "name_en-us": "Medium Scout Drones", "name_es": "Drones de reconocimiento medianos", "name_fr": "Drones de reconnaissance intermédiaires", "name_it": "Medium Scout Drones", "name_ja": "ミディアムスカウトドローン", "name_ko": "미디움 스카우트 드론", "name_ru": "Средние боевые дроны", "name_zh": "中型侦察无人机", "nameID": 66046, "parentGroupID": 159 }, "839": { "description_de": "Schwere Angriffsdrohnen.", "description_en-us": "Heavy Attack Drones", "description_es": "Drones de asalto pesados.", "description_fr": "Drones d'attaque lourds", "description_it": "Heavy Attack Drones", "description_ja": "ヘビーアタックドローン", "description_ko": "헤비 어택 드론", "description_ru": "Тяжелые боевые дроны", "description_zh": "重型攻击无人机", "descriptionID": 64973, "hasTypes": 1, "iconID": 1084, "name_de": "Schwere Angriffsdrohnen", "name_en-us": "Heavy Attack Drones", "name_es": "Drones de asalto pesados", "name_fr": "Drones d’attaque lourds", "name_it": "Heavy Attack Drones", "name_ja": "ヘビーアタックドローン", "name_ko": "헤비 어택 드론", "name_ru": "Тяжёлые боевые дроны", "name_zh": "重型攻击无人机", "nameID": 66047, "parentGroupID": 159 }, "840": { "description_de": "Einpilotige Kampfschiffe, einsetzbar von Trägerschiffen und Supercarriern.", "description_en-us": "Single-pilot combat vessels, deployable from Carriers and Supercarriers.", "description_es": "Monoplazas de combate que se pueden desplegar desde portanaves y superportanaves.", "description_fr": "Vaisseaux de combat monoplaces pouvant être déployés depuis les porte-vaisseaux et super porte-vaisseaux.", "description_it": "Single-pilot combat vessels, deployable from Carriers and Supercarriers.", "description_ja": "艦載機母艦および大型艦載機母艦から配置可能な一人乗りコンバット船。", "description_ko": "캐리어 및 슈퍼캐리어에서 사출되는 단일 파일럿 전투 함선입니다.", "description_ru": "Одноместные пилотируемые боевые корабли, запускаемые с кораблей-носителей и суперкораблей-носителей.", "description_zh": "由一个驾驶员操作的战斗船只,可以从航母或者超级航母上进行部署。", "descriptionID": 65242, "hasTypes": 1, "iconID": 1084, "name_de": "Leichte Jäger", "name_en-us": "Light Fighters", "name_es": "Cazas ligeros", "name_fr": "Chasseurs léger", "name_it": "Light Fighters", "name_ja": "軽量級戦闘機", "name_ko": "라이트 파이터", "name_ru": "Лёгкие истребители", "name_zh": "轻型铁骑舰载机", "nameID": 66316, "parentGroupID": 2410 }, "841": { "description_de": "Drohnen, die die Nachführungs- und Sensorleistung von Schiffen beeinflussen", "description_en-us": "Drones that affect the tracking and sensor capabilities of ships", "description_es": "Drones que alteran los sensores y las capacidades de rastreo de las naves.", "description_fr": "Drones qui affectent les capacités de poursuite et de détection des vaisseaux", "description_it": "Drones that affect the tracking and sensor capabilities of ships", "description_ja": "船舶のトラッキングおよびセンサーに関する機能に影響を及ぼすドローン", "description_ko": "트래킹 및 센서 관련 드론입니다.", "description_ru": "Дроны, влияющие на системы целеуказания и наведения корабельных орудий", "description_zh": "可以影响舰船的跟踪和感应能力的无人机", "descriptionID": 64974, "hasTypes": 1, "iconID": 1084, "name_de": "Drohnen zur elektronischen Kriegsführung", "name_en-us": "Electronic Warfare Drones", "name_es": "Drones de guerra electrónica", "name_fr": "Drones de guerre électronique", "name_it": "Electronic Warfare Drones", "name_ja": "電子戦ドローン", "name_ko": "전자전 드론", "name_ru": "Дроны РЭБ", "name_zh": "电子战无人机", "nameID": 66048, "parentGroupID": 157 }, "842": { "description_de": "Drohnen, die verbündete Schiffe unterstützen", "description_en-us": "Drones that provide support to friendly ships", "description_es": "Drones que proporcionan apoyo a las naves aliadas.", "description_fr": "Drones qui apportent un soutien aux vaisseaux amis", "description_it": "Drones that provide support to friendly ships", "description_ja": "味方艦船をサポートするドローン", "description_ko": "함선 지원에 특화된 드론입니다.", "description_ru": "Дроны, оказывающие помощь дружественным кораблям", "description_zh": "为友方舰船提供支援的无人机", "descriptionID": 64975, "hasTypes": 1, "iconID": 1084, "name_de": "Versorgungsdrohnen", "name_en-us": "Logistic Drones", "name_es": "Drones logísticos", "name_fr": "Drones d'assistance", "name_it": "Logistic Drones", "name_ja": "支援専門ドローン", "name_ko": "로지스틱스 드론", "name_ru": "Ремонтные дроны", "name_zh": "后勤无人机", "nameID": 66049, "parentGroupID": 157 }, "843": { "description_de": "Drohnen, die die Leistung feindlicher Schiffe beeinträchtigen", "description_en-us": "Drones that interfere with the performance of enemy ships", "description_es": "Drones que interfieren en el rendimiento de las naves enemigas.", "description_fr": "Drones qui affectent les performances des vaisseaux ennemis", "description_it": "Drones that interfere with the performance of enemy ships", "description_ja": "敵艦の性能を低下させるドローン", "description_ko": "적 함선 방해에 특화된 드론입니다.", "description_ru": "Дроны, влияющие на работу систем вражеских кораблей", "description_zh": "破坏敌方舰船性能的无人机", "descriptionID": 64976, "hasTypes": 1, "iconID": 1084, "name_de": "Kampfunterstützungsdrohnen", "name_en-us": "Combat Utility Drones", "name_es": "Drones de utilidades de combate", "name_fr": "Drones de soutien au combat", "name_it": "Combat Utility Drones", "name_ja": "戦闘支援ドローン", "name_ko": "컴뱃 유틸리티 드론", "name_ru": "Вспомогательные дроны", "name_zh": "功能性战斗无人机", "nameID": 66050, "parentGroupID": 157 }, "845": { "description_de": "Normale Projektil-Patronen.", "description_en-us": "Standard projectile rounds.", "description_es": "Munición estándar de proyectiles.", "description_fr": "Cartouches de type standard.", "description_it": "Standard projectile rounds.", "description_ja": "標準型プロジェクタイル弾。", "description_ko": "일반 발사체 탄약입니다.", "description_ru": "Стандартные огнестрельные снаряды.", "description_zh": "标准射弹弹药。", "descriptionID": 64977, "hasTypes": 0, "iconID": 1004, "name_de": "Standardmunition", "name_en-us": "Standard Ammo", "name_es": "Munición estándar", "name_fr": "Munitions standard", "name_it": "Standard Ammo", "name_ja": "標準型弾薬", "name_ko": "일반 탄약", "name_ru": "Стандартные боеприпасы", "name_zh": "标准弹药", "nameID": 66051, "parentGroupID": 99 }, "846": { "description_de": "Sehr schwere Munition nach neusten Technologiestandards.", "description_en-us": "Ultra-heavy shells incorporating cutting-edge technology.", "description_es": "Proyectiles ultrapesados con tecnología de vanguardia.", "description_fr": "Coques ultra lourdes conçues grâce à une technologie de pointe.", "description_it": "Ultra-heavy shells incorporating cutting-edge technology.", "description_ja": "最新テクノロジーを取り入れた超重量級弾。", "description_ko": "초중량 포탄으로 최첨단 기술이 적용되었습니다.", "description_ru": "Сверхтяжелые снаряды, созданные с использованием самых современных технологий.", "description_zh": "采用先进工艺制造的超重型弹药。", "descriptionID": 64978, "hasTypes": 0, "iconID": 1287, "name_de": "Fortschrittliche Artilleriemunition", "name_en-us": "Advanced Artillery Ammo", "name_es": "Munición avanzada de artillería", "name_fr": "Munitions d’artillerie perfectionnées", "name_it": "Advanced Artillery Ammo", "name_ja": "高性能アーティレリ弾", "name_ko": "상급 함포 탄약", "name_ru": "Спецбоеприпасы для артиллерийских орудий", "name_zh": "高级火炮弹药", "nameID": 66052, "parentGroupID": 99 }, "847": { "description_de": "Fortgeschrittene Maschinenkanonen-Munition, die topaktuelle Technologien vereinigt.", "description_en-us": "Sophisticated autocannon munitions incorporating cutting-edge technology.", "description_es": "Municiones de cañón automático sofisticadas con tecnología de vanguardia.", "description_fr": "Munitions sophistiquées pour canon automatique conçues grâce à une technologie de pointe.", "description_it": "Sophisticated autocannon munitions incorporating cutting-edge technology.", "description_ja": "最新テクノロジーを取り入れた改良型オートキャノン弾。", "description_ko": "최첨단 기술이 적용된 기관포 탄약입니다.", "description_ru": "Спецбоеприпасы для автопушек, созданные с использованием самых современных технологий.", "description_zh": "采用先进工艺制造的高级自动加农炮弹药。", "descriptionID": 64979, "hasTypes": 0, "iconID": 1291, "name_de": "Fortschrittliche Maschinenkanonenmunition", "name_en-us": "Advanced Autocannon Ammo", "name_es": "Munición avanzada de cañón automático", "name_fr": "Munitions de canon automatique perfectionnées", "name_it": "Advanced Autocannon Ammo", "name_ja": "高性能オートキャノン弾", "name_ko": "상급 기관포 탄약", "name_ru": "Спецбоеприпасы для автопушек", "name_zh": "高级自动加农炮弹药", "nameID": 66053, "parentGroupID": 99 }, "848": { "description_de": "Normale Hybrid-Geschosse.", "description_en-us": "Standard hybrid slugs.", "description_es": "Proyectiles híbridos estándar.", "description_fr": "Balles hybrides standard.", "description_it": "Standard hybrid slugs.", "description_ja": "標準型ハイブリッド弾。", "description_ko": "일반 하이브리드입니다.", "description_ru": "Стандартные гибридные снаряды.", "description_zh": "标准混合弹药。", "descriptionID": 64980, "hasTypes": 0, "iconID": 1047, "name_de": "Standardmunition", "name_en-us": "Standard Charges", "name_es": "Cargas estándar", "name_fr": "Charges standards", "name_it": "Standard Charges", "name_ja": "標準型弾薬", "name_ko": "일반 하이브리드탄", "name_ru": "Стандартные заряды", "name_zh": "标准弹药", "nameID": 66054, "parentGroupID": 100 }, "849": { "description_de": "Technologisch fortschrittliche Blastermunition.", "description_en-us": "Technologically advanced blaster ammunition.", "description_es": "Munición de bláster tecnológicamente avanzada.", "description_fr": "Munitions de pointe pour blaster.", "description_it": "Technologically advanced blaster ammunition.", "description_ja": "先進技術を用いたブラスター弾。", "description_ko": "최첨단 상급 블라스터 탄약입니다.", "description_ru": "Усовершенствованные боеприпасы для бластеров, разработанные с использованием современных технологий.", "description_zh": "高级疾速炮弹药", "descriptionID": 64981, "hasTypes": 0, "iconID": 1310, "name_de": "Fortschrittliche Blastermunition", "name_en-us": "Advanced Blaster Charges", "name_es": "Cargas avanzadas de bláster", "name_fr": "Charges de blaster perfectionnées", "name_it": "Advanced Blaster Charges", "name_ja": "高性能ブラスター", "name_ko": "상급 블라스터 탄약", "name_ru": "Спецбоеприпасы для бластеров", "name_zh": "高级疾速炮弹药", "nameID": 66055, "parentGroupID": 100 }, "850": { "description_de": "Technologisch fortschrittliche Railgun-Munition.", "description_en-us": "Technologically advanced railgun ammunition.", "description_es": "Munición de cañones electromagnéticos de tecnología avanzada.", "description_fr": "Munitions de pointe pour canon à rail.", "description_it": "Technologically advanced railgun ammunition.", "description_ja": "先進技術を用いたレールガン弾。", "description_ko": "최첨단 상급 레일건 탄약입니다.", "description_ru": "Усовершенствованные боеприпасы для рейлганов, созданные с использованием современных технологий.", "description_zh": "技术先进的磁轨炮弹药。", "descriptionID": 64982, "hasTypes": 0, "iconID": 1311, "name_de": "Fortschrittliche Schienengeschützmunition", "name_en-us": "Advanced Railgun Charges", "name_es": "Cargas avanzadas de cañón electromagnético", "name_fr": "Charges de canon à rail perfectionnées", "name_it": "Advanced Railgun Charges", "name_ja": "高性能レールガン弾", "name_ko": "상급 레일건 탄약", "name_ru": "Спецбоеприпасы для рельсотронов", "name_zh": "高级磁轨炮弹药", "nameID": 66056, "parentGroupID": 100 }, "851": { "description_de": "Der Standard beim Modulieren von Energiestrahl-Frequenzen.", "description_en-us": "The standard in energy beam frequenzy modulation.", "description_es": "El estándar en la modulación de frecuencia de rayos de energía.", "description_fr": "Norme de la modulation de fréquence de rayons d'énergie.", "description_it": "The standard in energy beam frequenzy modulation.", "description_ja": "エネルギービームのフリーケンシー変調における標準。", "description_ko": "일반 에너지 빔 프리퀀시 크리스탈입니다.", "description_ru": "Стандартные кристаллы для модуляции частоты энергетического луча.", "description_zh": "标准能量束频率调制。", "descriptionID": 65144, "hasTypes": 0, "iconID": 1142, "name_de": "Standardkristalle", "name_en-us": "Standard Crystals", "name_es": "Cristales estándar", "name_fr": "Cristaux standard", "name_it": "Standard Crystals", "name_ja": "標準型クリスタル", "name_ko": "일반 크리스탈", "name_ru": "Стандартные кристаллы", "name_zh": "标准晶体", "nameID": 66218, "parentGroupID": 101 }, "852": { "description_de": "Technologisch fortschrittliche Strahllaser-Kristalle.", "description_en-us": "Technologically advanced beam laser crystals.", "description_es": "Cristales de láseres de rayos tecnológicamente avanzados.", "description_fr": "Cristaux de pointe pour laser à rayons.", "description_it": "Technologically advanced beam laser crystals.", "description_ja": "先進技術を用いたビームレーザークリスタル。", "description_ko": "최첨단 빔 레이저 크리스탈입니다.", "description_ru": "Усовершенствованные кристаллы для непрерывных лазеров, созданные с использованием современных технологий.", "description_zh": "高级集束激光晶体", "descriptionID": 64983, "hasTypes": 0, "iconID": 1145, "name_de": "Fortschrittliche Dauerstrahllaser-Kristalle", "name_en-us": "Advanced Beam Laser Crystals", "name_es": "Cristales avanzados de láseres de rayos", "name_fr": "Cristaux de laser à rayons perfectionnés", "name_it": "Advanced Beam Laser Crystals", "name_ja": "高性能ビームレーザークリスタル", "name_ko": "상급 빔 레이저 크리스탈", "name_ru": "Спецкристаллы для лучевых лазеров", "name_zh": "高级集束激光晶体", "nameID": 66057, "parentGroupID": 101 }, "853": { "description_de": "Technologisch fortschrittliche Impulslaser-Kristalle.", "description_en-us": "Technologically advanced pulse laser crystals.", "description_es": "Cristales de láseres de pulsos de tecnología avanzada.", "description_fr": "Cristaux de pointe pour laser à impulsions.", "description_it": "Technologically advanced pulse laser crystals.", "description_ja": "先進技術を用いたパルスレーザークリスタル。", "description_ko": "최첨단 상급 펄스 레이저 크리스탈입니다.", "description_ru": "Усовершенствованные кристаллы для импульсных лазеров, созданные с использованием современных технологий.", "description_zh": "技术先进的脉冲激光晶体。", "descriptionID": 64984, "hasTypes": 0, "iconID": 1140, "name_de": "Fortschrittliche Impulslaserkristalle", "name_en-us": "Advanced Pulse Laser Crystals", "name_es": "Cristales avanzados de láser de pulsos", "name_fr": "Cristaux de laser à impulsions perfectionnés", "name_it": "Advanced Pulse Laser Crystals", "name_ja": "高性能パルスレーザークリスタル", "name_ko": "상급 펄스 레이저 크리스탈", "name_ru": "Спецкристаллы для импульсных лазеров", "name_zh": "高级脉冲激光晶体", "nameID": 66058, "parentGroupID": 101 }, "854": { "description_de": "Große ADAR Munition, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large ADAR ammunition, fired by battleship-sized guns.", "description_es": "Munición de artillería avanzada de gran calibre apta para cañones de naves de tamaño acorazado.", "description_fr": "Munitions ADAR de grande taille tirées, par exemple, par les canons des cuirassés.", "description_it": "Large ADAR ammunition, fired by battleship-sized guns.", "description_ja": "戦艦級の銃砲で使用される大型ADAR弾。", "description_ko": "대형 라이다 탄약으로 배틀쉽급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные боеприпасы для артиллерийских орудий большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别炮台发射的大型ADAR弹药。", "descriptionID": 64985, "hasTypes": 1, "iconID": 1287, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66059, "parentGroupID": 846 }, "855": { "description_de": "Mittlere ADAR Munition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium ADAR ammunition, fired by cruiser-sized guns.", "description_es": "Munición de artillería avanzada de medio calibre apta para cañones de naves de tamaño crucero.", "description_fr": "Munitions ADAR de taille moyenne tirées, par exemple, par les canons des croiseurs.", "description_it": "Medium ADAR ammunition, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型ADAR弾。", "description_ko": "중형 ADAR 탄약으로 크루저급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные боеприпасы для артиллерийских орудий среднего калибра, устанавливаемых на крейсеры.", "description_zh": "巡洋舰级别舰炮使用的ADAR弹药。", "descriptionID": 64986, "hasTypes": 1, "iconID": 1287, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66060, "parentGroupID": 846 }, "856": { "description_de": "Kleine ADAR Munition, von für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small ADAR ammunition, fired by frigate-sized guns.", "description_es": "Munición de artillería avanzada de pequeño calibre apta para cañones de naves de tamaño fragata.", "description_fr": "Munitions ADAR de petite taille tirées, par exemple, par les canons des frégates.", "description_it": "Small ADAR ammunition, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される小型のADAR弾。", "description_ko": "소형 ADAR 탄약으로 프리깃급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные боеприпасы для артиллерийских орудий малого калибра, устанавливаемых на фрегаты.", "description_zh": "用于护卫舰级别舰炮使用的小型ADAR弹药。", "descriptionID": 64987, "hasTypes": 1, "iconID": 1287, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66061, "parentGroupID": 846 }, "857": { "description_de": "Große ADAC Munition, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large ADAC ammunition, fired by battleship-sized guns.", "description_es": "Munición avanzada de cañón automático de gran calibre apta para cañones de naves de tamaño acorazado.", "description_fr": "Munitions ADAC de grande taille tirées, par exemple, par les canons des cuirassés.", "description_it": "Large ADAC ammunition, fired by battleship-sized guns.", "description_ja": "戦艦級の銃砲で使用される大型ADAC弾。", "description_ko": "대형 ADAC 탄약으로 배틀쉽급 함포에서 사용됩니다.", "description_ru": "Спецбоеприпасы для автопушек большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别炮台发射的大型ADAC弹药。", "descriptionID": 64988, "hasTypes": 1, "iconID": 1291, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66062, "parentGroupID": 847 }, "858": { "description_de": "Mittlere ADAC Munition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium ADAC ammunition, fired by cruiser-sized guns.", "description_es": "Munición avanzada de cañón automático de medio calibre apta para cañones de naves de tamaño crucero.", "description_fr": "Munitions ADAC de taille moyenne tirées, par exemple, par les canons des croiseurs.", "description_it": "Medium ADAC ammunition, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型ADAC弾。", "description_ko": "중형 ADAC 탄약으로 크루저급 함포에서 사용됩니다.", "description_ru": "Спецбоеприпасы для автопушек среднего калибра, устанавливаемых на крейсеры.", "description_zh": "巡洋舰级别舰炮使用的中型ADAC弹药。", "descriptionID": 64989, "hasTypes": 1, "iconID": 1291, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66063, "parentGroupID": 847 }, "859": { "description_de": "Kleine ADAC Munition, von für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small ADAC ammunition, fired by frigate-sized guns.", "description_es": "Munición avanzada de cañón automático de pequeño calibre apta para cañones de naves de tamaño fragata.", "description_fr": "Munitions ADAC de petite taille tirées, par exemple, par les canons des frégates.", "description_it": "Small ADAC ammunition, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される小型のADAC弾。", "description_ko": "소형 ADAC 탄약으로 프리깃급 함포에서 사용됩니다.", "description_ru": "Спецбоеприпасы для автопушек малого калибра, устанавливаемых на фрегаты.", "description_zh": "用于护卫舰级别舰炮使用的小型ADAC弹药。", "descriptionID": 64990, "hasTypes": 1, "iconID": 1291, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66064, "parentGroupID": 847 }, "860": { "description_de": "Große fortschrittliche Hybridgranaten, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large advanced hybrid shells, fired by battleship-sized guns.", "description_es": "Proyectiles híbridos avanzados de gran calibre aptos para cañones de naves de tamaño acorazado.", "description_fr": "Obus hybrides perfectionnés de grande taille tirés, par exemple, par les canons des cuirassés.", "description_it": "Large advanced hybrid shells, fired by battleship-sized guns.", "description_ja": "戦艦級の銃砲で使用される大型高性能ハイブリッド弾。", "description_ko": "대형 상급 하이브리드 포탄으로 배틀쉽급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные заряды для гибридных турелей большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别炮台发射的大型高级混合弹药。", "descriptionID": 64991, "hasTypes": 1, "iconID": 1310, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66065, "parentGroupID": 849 }, "861": { "description_de": "Mittlere, fortschrittliche Hybridmunition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium advanced hybrid shells, fired by cruiser-sized guns.", "description_es": "Proyectiles híbridos avanzados de medio calibre aptos para cañones de naves de tamaño crucero.", "description_fr": "Obus hybrides perfectionnés de taille moyenne tirés, par exemple, par les canons des croiseurs.", "description_it": "Medium advanced hybrid shells, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型構成のハイブリッド弾。", "description_ko": "중형 상급 하이브리드 포탄으로 크루저급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные гибридные заряды для орудий среднего калибра, устанавливаемых на крейсеры.", "description_zh": "中型巡洋舰级别舰炮使用的中型高级混合炮炮弹。", "descriptionID": 64992, "hasTypes": 1, "iconID": 1310, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66066, "parentGroupID": 849 }, "862": { "description_de": "Kleine fortschrittliche Hybridgranaten, von für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small advanced hybrid shells, fired by frigate-sized guns.", "description_es": "Proyectiles híbridos avanzados de pequeño calibre aptos para cañones de naves de tamaño fragata.", "description_fr": "Obus hybrides perfectionnés de petite taille tirés, par exemple, par les canons des frégates.", "description_it": "Small advanced hybrid shells, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される高性能小型ハイブリッド弾。", "description_ko": "소형 상급 하이브리드 포탄으로 프리깃급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные боеприпасы для гибридных орудий малого калибра, устанавливаемых на фрегаты.", "description_zh": "用于护卫舰级别舰炮使用的小型先进混合弹药。", "descriptionID": 64993, "hasTypes": 1, "iconID": 1310, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66067, "parentGroupID": 849 }, "863": { "description_de": "Große fortschrittliche Railgunmunition, von für Schlachtschiffe typischen Geschützen abgefeuert.", "description_en-us": "Large advanced railgun ammunition, fired by battleship-sized guns.", "description_es": "Munición avanzada de cañones electromagnéticos de gran calibre para naves de tamaño acorazado.", "description_fr": "Munitions perfectionnées de grande taille pour canon à rail tirées, par exemple, par les canons des cuirassés.", "description_it": "Large advanced railgun ammunition, fired by battleship-sized guns.", "description_ja": "戦艦級の銃砲で使用される大型高性能レールガン弾。", "description_ko": "대형 상급 레일건 탄약으로 배틀쉽급 함포에서 사용됩니다.", "description_ru": "Спецбоеприпасы для рельсотронов большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别炮台发射的大型高级磁轨炮弹药。", "descriptionID": 64994, "hasTypes": 1, "iconID": 1311, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66068, "parentGroupID": 850 }, "864": { "description_de": "Mittlere, fortschrittliche Railgun-Munition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium advanced railgun ammunition, fired by cruiser-sized guns.", "description_es": "Munición avanzada de cañones electromagnéticos de medio calibre para naves de tamaño crucero.", "description_fr": "Munitions perfectionnées de taille moyenne pour canon à rail tirées, par exemple, par les canons des croiseurs.", "description_it": "Medium advanced railgun ammunition, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される中型高性能レールガン弾。", "description_ko": "중형 상급 레일건 탄약으로 크루저급 함포에서 사용됩니다.", "description_ru": "Усовершенствованные боеприпасы для рейлганов среднего калибра, устанавливаемых на крейсеры.", "description_zh": "巡洋舰级别舰炮使用的中型高级磁轨炮炮弹。", "descriptionID": 64995, "hasTypes": 1, "iconID": 1311, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66069, "parentGroupID": 850 }, "865": { "description_de": "Kleine fortschrittliche Railgunmunition, von für Fregatten typischen Geschützen abgefeuert.", "description_en-us": "Small advanced railgun ammunition, fired by frigate-sized guns.", "description_es": "Munición avanzada de cañones electromagnéticos de pequeño calibre para naves de tamaño fragata.", "description_fr": "Munitions perfectionnées de petite taille pour canon à rail tirées, par exemple, par les canons des frégates.", "description_it": "Small advanced railgun ammunition, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される小型の高性能レールガン弾。", "description_ko": "소형 상급 레일건 탄약으로 프리깃급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные боеприпасы для рейлганов малого калибра, устанавливаемых на фрегаты.", "description_zh": "用于护卫舰级别舰炮使用的小型先进磁轨炮弹药。", "descriptionID": 64996, "hasTypes": 1, "iconID": 1311, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66070, "parentGroupID": 850 }, "866": { "description_de": "Große fortschrittliche Strahllaser-Kristalle, für den Gebrauch mit für Schlachtschiffe typischen Lasern.", "description_en-us": "Large advanced beam laser crystals, for use with battleship-sized lasers.", "description_es": "Cristales avanzados de láseres de rayos de gran calibre para naves de tamaño acorazado.", "description_fr": "Cristaux perfectionnés de grande taille pour laser à rayons utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Large advanced beam laser crystals, for use with battleship-sized lasers.", "description_ja": "戦艦級レーザーで使用される大型高性能ビームレーザークリスタル。", "description_ko": "대형 상급 빔 레이저 크리스탈로 배틀쉽급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы для непрерывных лазеров большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别能量武器使用的大型高级激光晶体。", "descriptionID": 64997, "hasTypes": 1, "iconID": 1145, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66071, "parentGroupID": 852 }, "867": { "description_de": "Mittlere, fortschrittliche Strahllaser-Kristalle für Laser der Kreuzer-Klasse.", "description_en-us": "Medium advanced beam laser crystals, for use with cruiser-sized lasers.", "description_es": "Cristales avanzados de láseres de rayos de medio calibre para naves de tamaño crucero.", "description_fr": "Cristaux de laser à rayons perfectionnés de taille intermédiaire utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Medium advanced beam laser crystals, for use with cruiser-sized lasers.", "description_ja": "巡洋艦級レーザーで使用される中型高性能ビームレーザークリスタル。", "description_ko": "중형 상급 빔 레이저 크리스탈로 크루저급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы среднего калибра для непрерывных лазеров, устанавливаемых на крейсеры.", "description_zh": "用于巡洋舰级别激光器使用的高级集束激光晶体。", "descriptionID": 64998, "hasTypes": 1, "iconID": 1145, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66072, "parentGroupID": 852 }, "868": { "description_de": "Kleine fortschrittliche Strahllaser-Kristalle für den Gebrauch mit für Fregatten typischen Lasern.", "description_en-us": "Small advanced beam laser crystals, for use with frigate-sized lasers.", "description_es": "Cristales avanzados de láseres de rayos pequeños para usarlos con láseres de tamaño fragata.", "description_fr": "Cristaux perfectionnés de petite taille pour laser à rayons utilisés, par exemple, sur les lasers des frégates.", "description_it": "Small advanced beam laser crystals, for use with frigate-sized lasers.", "description_ja": "フリゲート級レーザーで使用される小型の高性能ビームレーザークリスタル。", "description_ko": "소형 상급 빔 레이저 크리스탈로 프리깃급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы для непрерывных лазеров малого калибра, устанавливаемых на фрегаты.", "description_zh": "小型先进脉冲激光晶体,专用于护卫舰等级的激光器。", "descriptionID": 64999, "hasTypes": 1, "iconID": 1145, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66073, "parentGroupID": 852 }, "869": { "description_de": "Große fortschrittliche Impulslaser-Kristalle, für den Gebrauch mit Schlachtschiffen typischen Lasern.", "description_en-us": "Large advanced pulse laser crystals, for use with battleship-sized lasers.", "description_es": "Cristales avanzados de láseres de pulsos de gran calibre para naves de tamaño acorazado.", "description_fr": "Cristaux perfectionnés de grande taille pour laser à impulsions utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Large advanced pulse laser crystals, for use with battleship-sized lasers.", "description_ja": "戦艦級銃砲を用途とする大型の高性能パルスレーザークリスタル。", "description_ko": "대형 상급 펄스 레이저 크리스탈로 배틀쉽급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы для импульсных лазеров большого калибра, устанавливаемых на линкоры.", "description_zh": "战列舰级别激光武器使用的先进科技大型脉冲激光晶体。", "descriptionID": 65000, "hasTypes": 1, "iconID": 1140, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66074, "parentGroupID": 853 }, "870": { "description_de": "Mittlere, fortschrittliche Impulslaser-Kristalle für Laser der Kreuzer-Klasse.", "description_en-us": "Medium advanced pulse laser crystals, for use with cruiser-sized lasers.", "description_es": "Cristales avanzados de láseres de pulsos de medio calibre para naves de tamaño crucero.", "description_fr": "Cristaux perfectionnés de taille moyenne pour laser à impulsions utilisés, par exemple, sur les lasers des croiseurs.", "description_it": "Medium advanced pulse laser crystals, for use with cruiser-sized lasers.", "description_ja": "巡洋艦級レーザーで使用される中型高性能パルスレーザークリスタル。", "description_ko": "중형 상급 펄스 레이저 크리스탈로 크루저급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы среднего калибра для импульсных лазеров, устанавливаемых на крейсеры.", "description_zh": "巡洋舰级别激光器使用的中型高级脉冲激光晶体。", "descriptionID": 65001, "hasTypes": 1, "iconID": 1140, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66075, "parentGroupID": 853 }, "871": { "description_de": "Kleine fortschrittliche Impulslaser-Kristalle für den Gebrauch mit für Fregatten typischen Lasern.", "description_en-us": "Small advanced pulse laser crystals, for use with frigate-sized lasers.", "description_es": "Cristales avanzados de láseres de pulsos de pequeño calibre para naves de tamaño fragata.", "description_fr": "Cristaux perfectionnés de petite taille pour laser à impulsions utilisés, par exemple, sur les lasers des frégates.", "description_it": "Small advanced pulse laser crystals, for use with frigate-sized lasers.", "description_ja": "フリゲート級レーザーで使用される小型高性能パルスレーザークリスタル。", "description_ko": "소형 상급 펄스 레이저 크리스탈로 프리깃급 함선에서 사용되고 있습니다.", "description_ru": "Усовершенствованные кристаллы для импульсных лазеров малого калибра, устанавливаемых на фрегаты.", "description_zh": "小型先进脉冲激光晶体,专用于护卫舰等级的激光器。", "descriptionID": 65002, "hasTypes": 1, "iconID": 1140, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66076, "parentGroupID": 853 }, "872": { "description_de": "Traktorstrahlen.", "description_en-us": "Tractor Beams", "description_es": "Rayos tractores.", "description_fr": "Rayons de tractage", "description_it": "Tractor Beams", "description_ja": "トラクタービーム", "description_ko": "트랙터 빔", "description_ru": "Гравизахваты", "description_zh": "牵引光束", "descriptionID": 65003, "hasTypes": 1, "iconID": 2986, "name_de": "Traktorstrahlen", "name_en-us": "Tractor Beams", "name_es": "Rayos tractores", "name_fr": "Rayons de tractage", "name_it": "Tractor Beams", "name_ja": "トラクタービーム", "name_ko": "트랙터 빔", "name_ru": "Гравизахваты", "name_zh": "牵引光束", "nameID": 66077, "parentGroupID": 656 }, "874": { "description_de": "Elite-Bergbau-Frachter", "description_en-us": "Elite Mining Barges", "description_es": "Gabarras mineras de élite.", "description_fr": "Barges d'extraction minière d'élite", "description_it": "Elite Mining Barges", "description_ja": "エリート採掘艦。", "description_ko": "엘리트 채광선", "description_ru": "Усовершенствованные шахтерские баржи", "description_zh": "精英采矿船。", "descriptionID": 65270, "hasTypes": 1, "iconID": 1443, "name_de": "Ausgrabungsschiffe", "name_en-us": "Exhumers", "name_es": "Exhumadores", "name_fr": "Exhumers", "name_it": "Exhumers", "name_ja": "特化型採掘艦", "name_ko": "익스허머", "name_ru": "Тяжёлые буровые корабли", "name_zh": "采掘者", "nameID": 66344, "parentGroupID": 1384 }, "878": { "description_de": "Blueprints von Schiffen der Titan-Klasse.", "description_en-us": "Blueprints of titan-class vessels.", "description_es": "Planos de naves de clase titán.", "description_fr": "Plans de construction de vaisseaux de classe titan.", "description_it": "Blueprints of titan-class vessels.", "description_ja": "旗艦級戦艦級艦船のブループリント。", "description_ko": "타이탄급 함선 블루프린트입니다.", "description_ru": "Чертежи титанов.", "description_zh": "泰坦蓝图", "descriptionID": 65005, "hasTypes": 0, "iconID": 2703, "name_de": "Titans", "name_en-us": "Titans", "name_es": "Titanes", "name_fr": "Titans", "name_it": "Titans", "name_ja": "旗艦級戦艦", "name_ko": "타이탄", "name_ru": "Титаны", "name_zh": "泰坦", "nameID": 66079, "parentGroupID": 204 }, "879": { "description_de": "Blueprints von Schiffen der Träger- und Mutterschiff-Klasse.", "description_en-us": "Blueprints of carrier- and mothership-class vessels.", "description_es": "Planos de portanaves y naves nodrizas.", "description_fr": "Plans de construction de vaisseaux de classe porte-vaisseaux et vaisseau mère.", "description_it": "Blueprints of carrier- and mothership-class vessels.", "description_ja": "戦艦および母艦級艦船の設計図。", "description_ko": "캐리어 및 모선급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей-носителей и материнских кораблей.", "description_zh": "航空母舰和母舰级舰船的蓝图", "descriptionID": 65006, "hasTypes": 0, "iconID": 2703, "name_de": "Trägerschiffe", "name_en-us": "Carriers", "name_es": "Portanaves", "name_fr": "Porte-vaisseaux", "name_it": "Carriers", "name_ja": "艦載機母艦", "name_ko": "캐리어", "name_ru": "Корабли автономного развёртывания", "name_zh": "航空母舰", "nameID": 66080, "parentGroupID": 204 }, "880": { "description_de": "Blueprints von Schiffen der Unterbrecher-Klasse.", "description_en-us": "Blueprints of interdictor-class vessels.", "description_es": "Planos de naves de clase interdictor.", "description_fr": "Plans de construction de vaisseaux de classe interdicteur.", "description_it": "Blueprints of interdictor-class vessels.", "description_ja": "ワープ妨害型駆逐艦級艦船のブループリント。", "description_ko": "인터딕터급 함선 블루프린트입니다.", "description_ru": "Чертежи заградительных кораблей.", "description_zh": "拦截舰蓝图。", "descriptionID": 65007, "hasTypes": 0, "iconID": 2703, "name_de": "Unterbrecher", "name_en-us": "Interdictors", "name_es": "Interdictores", "name_fr": "Interdicteurs", "name_it": "Interdictors", "name_ja": "ワープ妨害型駆逐艦", "name_ko": "인터딕터", "name_ru": "Заградительные эсминцы", "name_zh": "拦截舰", "nameID": 66081, "parentGroupID": 204 }, "881": { "description_de": "Blueprints von Schiffen der Kommandoschiff-Klasse.", "description_en-us": "Blueprints of command ship-class vessels.", "description_es": "Planos de naves de mando.", "description_fr": "Plans de construction de vaisseaux de classe vaisseau de commandement.", "description_it": "Blueprints of command ship-class vessels.", "description_ja": "指揮型巡洋戦艦級艦船のブループリント。", "description_ko": "커맨드쉽급 함선의 블루프린트입니다.", "description_ru": "Чертежи кораблей управления.", "description_zh": "指挥舰等级舰船蓝图", "descriptionID": 65008, "hasTypes": 0, "iconID": 2703, "name_de": "Kommandoschiffe", "name_en-us": "Command Ships", "name_es": "Naves de mando", "name_fr": "Vaisseaux de commandement", "name_it": "Command Ships", "name_ja": "指揮型巡洋戦艦", "name_ko": "커맨드쉽", "name_ru": "Корабли управления", "name_zh": "指挥舰", "nameID": 66082, "parentGroupID": 204 }, "882": { "description_de": "Blueprints von Aufklärungsschiff-Klasse-Designs.", "description_en-us": "Blueprints of recon ship-class designs.", "description_es": "Planos de diseños de naves de reconocimiento.", "description_fr": "Plans de construction de vaisseaux de classe de reconnaissance.", "description_it": "Blueprints of recon ship-class designs.", "description_ja": "電子戦型巡洋艦級の設計図のブループリント。", "description_ko": "리콘 크루저급 함선 블루프린트입니다.", "description_ru": "Чертежи разведывательных кораблей.", "description_zh": "侦察舰蓝图", "descriptionID": 65009, "hasTypes": 0, "iconID": 2703, "name_de": "Aufklärungsschiffe", "name_en-us": "Recon Ships", "name_es": "Naves de reconocimiento", "name_fr": "Vaisseaux de reconnaissance", "name_it": "Recon Ships", "name_ja": "電子戦型巡洋艦", "name_ko": "리콘 크루저", "name_ru": "Дозорные крейсеры", "name_zh": "侦察舰", "nameID": 66083, "parentGroupID": 204 }, "883": { "description_de": "Blueprints für Ausgrabungsschiffe.", "description_en-us": "Blueprints of Exhumers.", "description_es": "Planos de exhumadores.", "description_fr": "Plans de construction de fossoyeurs.", "description_it": "Blueprints of Exhumers.", "description_ja": "特化型採掘艦のブループリント。", "description_ko": "익스허머 블루프린트입니다.", "description_ru": "Чертежи тяжёлых буровых кораблей.", "description_zh": "采掘者蓝图", "descriptionID": 65296, "hasTypes": 0, "iconID": 2703, "name_de": "Ausgrabungsschiffe", "name_en-us": "Exhumers", "name_es": "Exhumadores", "name_fr": "Exhumers", "name_it": "Exhumers", "name_ja": "特化型採掘艦", "name_ko": "익스허머", "name_ru": "Тяжёлые буровые корабли", "name_zh": "采掘者", "nameID": 66370, "parentGroupID": 204 }, "884": { "description_de": "Blueprints von Amarr-Titan-Designs.", "description_en-us": "Blueprints of Amarr titan designs.", "description_es": "Planos de diseños de titanes amarrianos.", "description_fr": "Plans de construction de modèles de titans amarr.", "description_it": "Blueprints of Amarr titan designs.", "description_ja": "アマータイタン設計図のブループリント。", "description_ko": "아마르 타이탄 블루프린트입니다.", "description_ru": "Чертежи титанов разработки Империи Amarr.", "description_zh": "艾玛泰坦设计蓝图", "descriptionID": 65010, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66084, "parentGroupID": 878 }, "885": { "description_de": "Blueprints von Caldari-Titan-Designs.", "description_en-us": "Blueprints of Caldari titan designs.", "description_es": "Planos de diseños de titanes caldaris.", "description_fr": "Plans de construction de modèles de titans caldari.", "description_it": "Blueprints of Caldari titan designs.", "description_ja": "カルダリタイタン設計図のブループリント。", "description_ko": "칼다리 타이탄 블루프린트입니다.", "description_ru": "Чертежи титанов разработки Государства Caldari.", "description_zh": "加达里泰坦设计蓝图", "descriptionID": 65011, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66085, "parentGroupID": 878 }, "886": { "description_de": "Blueprints von Gallente-Titan-Designs.", "description_en-us": "Blueprints of Gallente titan designs.", "description_es": "Planos de diseños de titanes gallentes.", "description_fr": "Plans de construction de modèles de titans gallente.", "description_it": "Blueprints of Gallente titan designs.", "description_ja": "ガレンテタイタン設計図のブループリント。", "description_ko": "갈란테 타이탄 블루프린트입니다.", "description_ru": "Чертежи титанов разработки Федерации Gallente.", "description_zh": "盖伦特泰坦设计蓝图。", "descriptionID": 65012, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66086, "parentGroupID": 878 }, "887": { "description_de": "Blueprints von Minmatar-Titan-Designs.", "description_en-us": "Blueprints of Minmatar titan designs.", "description_es": "Planos de diseños de titanes minmatarianos.", "description_fr": "Plans de construction de modèles de titans minmatar.", "description_it": "Blueprints of Minmatar titan designs.", "description_ja": "ミンマタータイタン設計図のブループリント。", "description_ko": "민마타 타이탄 블루프린트입니다.", "description_ru": "Чертежи титанов разработки Республики Minmatar.", "description_zh": "米玛塔尔泰坦设计蓝图。", "descriptionID": 65013, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66087, "parentGroupID": 878 }, "888": { "description_de": "Blueprints von Amarr-Träger- und Amarr-Mutterschiff-Designs.", "description_en-us": "Blueprints of Amarr carrier and mothership designs.", "description_es": "Planos de diseños de portanaves y naves nodrizas amarrianas.", "description_fr": "Plans de construction de modèles de porte-vaisseaux et de vaisseaux mères amarr.", "description_it": "Blueprints of Amarr carrier and mothership designs.", "description_ja": "アマーの戦艦および母艦級艦船の設計図。", "description_ko": "아마르 캐리어 및 모선급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей-носителей разработки Империи Amarr.", "description_zh": "艾玛航空母舰和母舰设计蓝图", "descriptionID": 65014, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66088, "parentGroupID": 879 }, "889": { "description_de": "Blueprints von Caldari-Träger- und Caldari-Mutterschiff-Designs.", "description_en-us": "Blueprints of Caldari carrier and mothership designs.", "description_es": "Planos de diseños de portanaves y naves nodrizas caldaris.", "description_fr": "Plans de construction de modèles de porte-vaisseaux et de vaisseaux mères caldari.", "description_it": "Blueprints of Caldari carrier and mothership designs.", "description_ja": "カルダリの戦艦および母艦級艦船の設計図。", "description_ko": "칼다리 캐리어 및 모선급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей-носителей разработки Государства Caldari.", "description_zh": "加达里航空母舰和母舰设计蓝图", "descriptionID": 65015, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66089, "parentGroupID": 879 }, "890": { "description_de": "Blueprints von Gallente-Träger- und Gallente-Mutterschiff-Designs.", "description_en-us": "Blueprints of Gallente carrier and mothership designs.", "description_es": "Planos de diseños de portanaves y naves nodrizas gallentes.", "description_fr": "Plans de construction de modèles de porte-vaisseaux et de vaisseaux mères gallente.", "description_it": "Blueprints of Gallente carrier and mothership designs.", "description_ja": "ガレンテの戦艦および母艦級艦船の設計図。", "description_ko": "갈란테 캐리어 및 모선급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей-носителей разработки Федерации Gallente.", "description_zh": "盖伦特航母和母舰设计蓝图。", "descriptionID": 65016, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66090, "parentGroupID": 879 }, "891": { "description_de": "Blueprints von Minmatar-Träger- und Mutterschiff-Designs.", "description_en-us": "Blueprints of Minmatar carrier and mothership designs.", "description_es": "Planos de diseños de portanaves y naves nodrizas minmatarianas.", "description_fr": "Plans de construction de modèles de porte-vaisseaux et de vaisseaux mères minmatar.", "description_it": "Blueprints of Minmatar carrier and mothership designs.", "description_ja": "ミンマターの戦艦および母艦級艦船の設計図。", "description_ko": "민마타 캐리어 및 모선급 함선 블루프린트입니다.", "description_ru": "Чертежи кораблей-носителей разработки Республики Minmatar.", "description_zh": "米玛塔尔航空母舰和母舰设计蓝图。", "descriptionID": 65017, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66091, "parentGroupID": 879 }, "892": { "description_de": "Blueprints von Amarr-Unterbrecher-Designs.", "description_en-us": "Blueprints of Amarr interdictor designs.", "description_es": "Planos de diseños de interdictores amarrianos.", "description_fr": "Plans de construction de modèles d'interdicteurs amarr.", "description_it": "Blueprints of Amarr interdictor designs.", "description_ja": "アマーワープ妨害型駆逐艦設計図のブループリント。", "description_ko": "아마르 인터딕터 블루프린트입니다.", "description_ru": "Чертежи заградительных кораблей разработки Империи Amarr.", "description_zh": "艾玛拦截舰设计蓝图", "descriptionID": 65018, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66092, "parentGroupID": 880 }, "893": { "description_de": "Blueprints von Caldari-Unterbrecher-Designs.", "description_en-us": "Blueprints of Caldari interdictor designs.", "description_es": "Planos de diseños de interdictores caldaris.", "description_fr": "Plans de construction de modèles d'interdicteurs caldari.", "description_it": "Blueprints of Caldari interdictor designs.", "description_ja": "カルダリワープ妨害型駆逐艦設計図のブループリント。", "description_ko": "칼다리 인터딕터 블루프린트입니다.", "description_ru": "Чертежи заградительных кораблей разработки Государства Caldari.", "description_zh": "加达里拦截舰设计蓝图", "descriptionID": 65019, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66093, "parentGroupID": 880 }, "894": { "description_de": "Blueprints von Gallente-Unterbrecher-Designs.", "description_en-us": "Blueprints of Gallente interdictor designs.", "description_es": "Planos de diseños de interdictores gallentes.", "description_fr": "Plans de construction de modèles d'interdicteurs gallente.", "description_it": "Blueprints of Gallente interdictor designs.", "description_ja": "ガレンテワープ妨害型駆逐艦設計図のブループリント。", "description_ko": "갈란테 인터딕터 블루프린트입니다.", "description_ru": "Чертежи заградительных кораблей разработки Федерации Gallente.", "description_zh": "盖伦特拦截舰设计蓝图。", "descriptionID": 65020, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66094, "parentGroupID": 880 }, "895": { "description_de": "Blueprints von Minmatar-Unterbrecher-Designs.", "description_en-us": "Blueprints of Minmatar interdictor designs.", "description_es": "Planos de diseños de interdictores minmatarianos.", "description_fr": "Plans de construction de modèles d'interdicteurs minmatar.", "description_it": "Blueprints of Minmatar interdictor designs.", "description_ja": "ミンマターワープ妨害型駆逐艦設計図のブループリント。", "description_ko": "민마타 인터딕터 블루프린트입니다.", "description_ru": "Чертежи заградительных кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔拦截舰设计蓝图。", "descriptionID": 65021, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66095, "parentGroupID": 880 }, "896": { "description_de": "Blueprints von Amarr-Kommandoschiff-Designs.", "description_en-us": "Blueprints of Amarr command ship designs.", "description_es": "Planos de diseños de naves de mando amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux de commandement amarr.", "description_it": "Blueprints of Amarr command ship designs.", "description_ja": "アマー指揮型巡洋戦艦設計図のブループリント。", "description_ko": "아마르 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи кораблей управления разработки Империи Amarr.", "description_zh": "艾玛指挥舰设计蓝图", "descriptionID": 65022, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66096, "parentGroupID": 881 }, "897": { "description_de": "Blueprints von Caldari-Kommandoschiff-Designs.", "description_en-us": "Blueprints of Caldari command ship designs.", "description_es": "Planos de diseños de naves de mando caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux de commandement caldari.", "description_it": "Blueprints of Caldari command ship designs.", "description_ja": "カルダリ指揮型巡洋戦艦設計図のブループリント。", "description_ko": "칼다리 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи кораблей управления разработки Государства Caldari.", "description_zh": "加达里指挥舰设计蓝图", "descriptionID": 65023, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66097, "parentGroupID": 881 }, "898": { "description_de": "Blueprints von Gallente-Kommandoschiff-Designs.", "description_en-us": "Blueprints of Gallente command ship designs.", "description_es": "Planos de diseños de naves de mando gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux de commandement gallente.", "description_it": "Blueprints of Gallente command ship designs.", "description_ja": "ガレンテ指揮型巡洋戦艦設計図のブループリント。", "description_ko": "갈란테 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи кораблей управления разработки Федерации Gallente.", "description_zh": "盖伦特指挥舰设计蓝图。", "descriptionID": 65024, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66098, "parentGroupID": 881 }, "899": { "description_de": "Blueprints von Minmatar-Kommandoschiff-Designs.", "description_en-us": "Blueprints of Minmatar command ship designs.", "description_es": "Planos de diseños de naves de mando minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux de commandement minmatar.", "description_it": "Blueprints of Minmatar command ship designs.", "description_ja": "ミンマター指揮型巡洋戦艦設計図のブループリント。", "description_ko": "민마타 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи кораблей управления разработки Республики Minmatar.", "description_zh": "米玛塔尔指挥舰设计蓝图。", "descriptionID": 65025, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66099, "parentGroupID": 881 }, "900": { "description_de": "Blueprints von Amarr-Aufklärungsschiff-Designs.", "description_en-us": "Blueprints of Amarr recon ship designs.", "description_es": "Planos de diseños de naves de reconocimiento amarrianas.", "description_fr": "Plans de construction de modèles de vaisseaux de reconnaissance amarr.", "description_it": "Blueprints of Amarr recon ship designs.", "description_ja": "アマー電子戦型巡洋艦設計図のブループリント。", "description_ko": "아마르 리콘 크루저 블루프린트입니다.", "description_ru": "Чертежи разведывательных кораблей разработки Империи Amarr.", "description_zh": "艾玛侦察舰设计蓝图", "descriptionID": 65026, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66100, "parentGroupID": 882 }, "901": { "description_de": "Blueprints von Caldari-Aufklärungsschiff-Designs.", "description_en-us": "Blueprints of Caldari recon ship designs.", "description_es": "Planos de diseños de naves de reconocimiento caldaris.", "description_fr": "Plans de construction de modèles de vaisseaux de reconnaissance caldari.", "description_it": "Blueprints of Caldari recon ship designs.", "description_ja": "カルダリ偵察船設計図のブループリント。", "description_ko": "칼다리 리콘 크루저 블루프린트입니다.", "description_ru": "Чертежи разведывательных кораблей разработки Государства Caldari.", "description_zh": "加达里侦察舰设计蓝图", "descriptionID": 65027, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66101, "parentGroupID": 882 }, "902": { "description_de": "Blueprints von Gallente-Aufklärungsschiff-Designs.", "description_en-us": "Blueprints of Gallente recon ship designs.", "description_es": "Planos de diseños de naves de reconocimiento gallentes.", "description_fr": "Plans de construction de modèles de vaisseaux de reconnaissance gallente.", "description_it": "Blueprints of Gallente recon ship designs.", "description_ja": "ガレンテ電子戦型巡洋艦設計図のブループリント。", "description_ko": "갈란테 리콘 크루저 블루프린트입니다.", "description_ru": "Чертежи разведывательных кораблей разработки Федерации Gallente.", "description_zh": "盖伦特侦察舰设计蓝图。", "descriptionID": 65028, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66102, "parentGroupID": 882 }, "903": { "description_de": "Blueprints von Minmatar-Aufklärungsschiff-Designs.", "description_en-us": "Blueprints of Minmatar recon ship designs.", "description_es": "Planos de diseños de naves de reconocimiento minmatarianas.", "description_fr": "Plans de construction de modèles de vaisseaux de reconnaissance minmatar.", "description_it": "Blueprints of Minmatar recon ship designs.", "description_ja": "ミンマター電子戦型巡洋艦設計図のブループリント。", "description_ko": "민마타 리콘 크루저 블루프린트입니다.", "description_ru": "Чертежи разведывательных кораблей разработки Республики Minmatar.", "description_zh": "米玛塔尔侦察舰设计蓝图。", "descriptionID": 65029, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66103, "parentGroupID": 882 }, "904": { "description_de": "Blueprints von ORE-Exhumer-Designs.", "description_en-us": "Blueprints of ORE exhumer designs.", "description_es": "Planos de diseños de exhumadores de ORE.", "description_fr": "Plans de construction de fossoyeurs conçus par ORE.", "description_it": "Blueprints of ORE exhumer designs.", "description_ja": "ORE特化型採掘艦設計図のブループリント。", "description_ko": "ORE 익스허머 블루프린트입니다.", "description_ru": "Чертежи тяжёлых буровых кораблей Окраинной рудной экспедиции.", "description_zh": "联合矿业采掘者设计蓝图。", "descriptionID": 65030, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 66104, "parentGroupID": 883 }, "905": { "description_de": "Blueprints von Traktorstrahlen.", "description_en-us": "Blueprints of tractor beams.", "description_es": "Planos de rayos tractores.", "description_fr": "Plans de construction de rayons de tractage.", "description_it": "Blueprints of tractor beams.", "description_ja": "トラクタービームのブループリント。", "description_ko": "트랙터 빔 블루프린트입니다.", "description_ru": "Чертежи гравизахватов.", "description_zh": "牵引光束蓝图。", "descriptionID": 65031, "hasTypes": 1, "iconID": 2703, "name_de": "Traktorstrahlen", "name_en-us": "Tractor Beams", "name_es": "Rayos tractores", "name_fr": "Rayons de tractage", "name_it": "Tractor Beams", "name_ja": "トラクタービーム", "name_ko": "트랙터 빔", "name_ru": "Гравизахваты", "name_zh": "牵引光束", "nameID": 66105, "parentGroupID": 1578 }, "910": { "description_de": "Für Capital-Schiffe typische Energietransferanlagen.", "description_en-us": "Capital ship-sized energy transfer arrays.", "description_es": "Matrices de transferencia energética para naves capitales.", "description_fr": "Modules de transfert d'énergie adaptés aux vaisseaux capitaux.", "description_it": "Capital ship-sized energy transfer arrays.", "description_ja": "主力艦級エネルギートランスファーアレイ。", "description_ko": "캐피탈 함선급 에너지 전송기 시설입니다.", "description_ru": "Модули передачи энергии для кораблей большого тоннажа.", "description_zh": "旗舰级能量传送阵列。", "descriptionID": 65036, "hasTypes": 1, "iconID": 1035, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 66110, "parentGroupID": 663 }, "911": { "description_de": "Stationierbare Wachhunde.", "description_en-us": "Deployable watchdogs.", "description_es": "Naves vigilantes desplegables.", "description_fr": "Chiens de garde déployables.", "description_it": "Deployable watchdogs.", "description_ja": "配置可能な見張り。", "description_ko": "사출가능한 순찰 드론입니다.", "description_ru": "Верные «сторожевые псы», сбрасываемые в космос.", "description_zh": "可以在太空中部署的看门狗。", "descriptionID": 65037, "hasTypes": 1, "iconID": 1084, "name_de": "Wächterdrohnen", "name_en-us": "Sentry Drones", "name_es": "Drones centinela", "name_fr": "Drones sentinelles", "name_it": "Sentry Drones", "name_ja": "セントリードローン", "name_ko": "센트리 드론", "name_ru": "Стационарные боевые дроны", "name_zh": "岗哨无人机", "nameID": 66111, "parentGroupID": 159 }, "912": { "description_de": "Die Faust des Titanen.", "description_en-us": "The titan's fist.", "description_es": "El puño de los titanes.", "description_fr": "Le poing du titan.", "description_it": "The titan's fist.", "description_ja": "神の拳。", "description_ko": "타이탄의 궁극무기입니다.", "description_ru": "Основа мощи титана.", "description_zh": "泰坦的重拳", "descriptionID": 65038, "hasTypes": 0, "iconID": 2934, "name_de": "Superwaffen", "name_en-us": "Superweapons", "name_es": "Superarmas", "name_fr": "Super-armes", "name_it": "Superweapons", "name_ja": "スーパーウェポン", "name_ko": "슈퍼웨폰", "name_ru": "Орудия Судного дня", "name_zh": "超级武器", "nameID": 66112, "parentGroupID": 10 }, "913": { "description_de": "Blaupausen für Doomsday- und andere Superwaffen", "description_en-us": "Doomsday Device and other Superweapon blueprints", "description_es": "Planos de dispositivos apocalípticos y otras superarmas.", "description_fr": "Plans de construction d'armes d'annihilation et autres super-armes", "description_it": "Doomsday Device and other Superweapon blueprints", "description_ja": "ドゥームズデイ装置およびその他のスーパーウェポンのブループリント", "description_ko": "둠스데이 무기 및 슈퍼웨폰 블루프린트입니다.", "description_ru": "Чертежи орудий Судного дня и сходных орудий", "description_zh": "末日武器和其他超级武器的蓝图", "descriptionID": 65039, "hasTypes": 1, "iconID": 2703, "name_de": "Superwaffen", "name_en-us": "Superweapons", "name_es": "Superarmas", "name_fr": "Super-armes", "name_it": "Superweapons", "name_ja": "スーパーウェポン", "name_ko": "슈퍼웨폰", "name_ru": "Орудия Судного дня", "name_zh": "超级武器", "nameID": 66113, "parentGroupID": 210 }, "914": { "description_de": "Normale automatische Zielerfassung", "description_en-us": "Standard Auto-Targeting", "description_es": "Adquisición automática de objetivos estándar.", "description_fr": "Visée automatique standard", "description_it": "Standard Auto-Targeting", "description_ja": "標準自動捕捉型", "description_ko": "일반", "description_ru": "Стандартные ракеты с активным наведением", "description_zh": "标准自动锁定导弹", "descriptionID": 65040, "hasTypes": 1, "iconID": 1335, "name_de": "Standard", "name_en-us": "Standard Auto-Targeting", "name_es": "Adquisición automática de objetivos estándar", "name_fr": "Ciblage automatique standard", "name_it": "Standard Auto-Targeting", "name_ja": "標準自動捕捉型", "name_ko": "일반", "name_ru": "Стандартные", "name_zh": "标准自动锁定导弹", "nameID": 66114, "parentGroupID": 115 }, "917": { "description_de": "Fortgeschrittene, hoch-präzise leichte Raketen", "description_en-us": "Advanced High Precision Light Missiles", "description_es": "Misiles ligeros de alta precisión avanzados.", "description_fr": "Missiles légers perfectionnés à haute précision", "description_it": "Advanced High Precision Light Missiles", "description_ja": "命中精度特化型ライトミサイル", "description_ko": "정밀타격 라이트 미사일", "description_ru": "Усовершенствованные легкие ракеты повышенной точности", "description_zh": "高级高精度轻型导弹", "descriptionID": 65043, "hasTypes": 1, "iconID": 192, "name_de": "Fortschrittlich, hochpräzise", "name_en-us": "Advanced High Precision Light Missiles", "name_es": "Misiles ligeros de alta precisión avanzados", "name_fr": "Missiles légers perfectionnés à haute précision", "name_it": "Advanced High Precision Light Missiles", "name_ja": "命中精度特化型ライトミサイル", "name_ko": "정밀타격 라이트 미사일", "name_ru": "Высокоточные", "name_zh": "高级高精度轻型导弹", "nameID": 66117, "parentGroupID": 117 }, "918": { "description_de": "Fortgeschrittene, hoch-präzise Cruise Missiles", "description_en-us": "Advanced High Precision Cruise Missiles", "description_es": "Misiles de crucero de alta precisión avanzados.", "description_fr": "Missiles de croisière perfectionnés à haute précision", "description_it": "Advanced High Precision Cruise Missiles", "description_ja": "命中精度特化型クルーズミサイル", "description_ko": "정밀타격 크루즈 미사일", "description_ru": "Ракеты дальнего боя (повышенной точности)", "description_zh": "高级高精度巡航导弹", "descriptionID": 65044, "hasTypes": 1, "iconID": 184, "name_de": "Fortschrittlich, hochpräzise", "name_en-us": "Advanced High Precision Cruise Missiles", "name_es": "Misiles de crucero de alta precisión avanzados", "name_fr": "Missiles de croisière perfectionnés à haute précision", "name_it": "Advanced High Precision Cruise Missiles", "name_ja": "命中精度特化型クルーズミサイル", "name_ko": "정밀타격 크루즈 미사일", "name_ru": "Высокоточные", "name_zh": "高级高精度巡航导弹", "nameID": 66118, "parentGroupID": 580 }, "919": { "description_de": "Fortgeschrittene, hoch-präzise schwere Raketen", "description_en-us": "Advanced High Precision Heavy Missiles", "description_es": "Misiles pesados de alta precisión avanzados.", "description_fr": "Missiles lourds perfectionnés à haute précision", "description_it": "Advanced High Precision Heavy Missiles", "description_ja": "命中精度特化型", "description_ko": "정밀타격 헤비 미사일", "description_ru": "Усовершенствованные тяжелые ракеты повышенной точности", "description_zh": "高级高精度重型导弹", "descriptionID": 65045, "hasTypes": 1, "iconID": 186, "name_de": "Fortschrittlich, hochpräzise", "name_en-us": "Advanced High Precision Heavy Missiles", "name_es": "Misiles pesados de alta precisión avanzados", "name_fr": "Missiles lourds perfectionnés à haute précision", "name_it": "Advanced High Precision Heavy Missiles", "name_ja": "命中精度特化型ヘビーミサイル", "name_ko": "정밀타격 헤비 미사일", "name_ru": "Высокоточные", "name_zh": "高级高精度重型导弹", "nameID": 66119, "parentGroupID": 581 }, "920": { "description_de": "Normale leichte Raketen", "description_en-us": "Standard Light Missiles", "description_es": "Misiles ligeros estándar.", "description_fr": "Missiles légers standard", "description_it": "Standard Light Missiles", "description_ja": "標準型ライトミサイル", "description_ko": "일반 라이트 미사일", "description_ru": "Стандартные легкие ракеты", "description_zh": "标准轻型导弹", "descriptionID": 65046, "hasTypes": 1, "iconID": 192, "name_de": "Standard", "name_en-us": "Standard Light Missiles", "name_es": "Misiles ligeros estándar", "name_fr": "Missiles légers standard", "name_it": "Standard Light Missiles", "name_ja": "標準型ライトミサイル", "name_ko": "일반 라이트 미사일", "name_ru": "Стандартные", "name_zh": "标准轻型导弹", "nameID": 66120, "parentGroupID": 117 }, "921": { "description_de": "Normale Marschflugkörper", "description_en-us": "Standard Cruise Missiles", "description_es": "Misiles de crucero estándar.", "description_fr": "Missiles de croisière standard", "description_it": "Standard Cruise Missiles", "description_ja": "標準型クルーズミサイル", "description_ko": "일반 크루즈 미사일", "description_ru": "Стандартные ракеты дальнего боя", "description_zh": "标准巡航导弹", "descriptionID": 65047, "hasTypes": 1, "iconID": 184, "name_de": "Standard", "name_en-us": "Standard Cruise Missiles", "name_es": "Misiles de crucero estándar", "name_fr": "Missiles de croisière standard", "name_it": "Standard Cruise Missiles", "name_ja": "標準型クルーズミサイル", "name_ko": "일반 크루즈 미사일", "name_ru": "Стандартные", "name_zh": "标准巡航导弹", "nameID": 66121, "parentGroupID": 580 }, "922": { "description_de": "Normale Raketen.", "description_en-us": "Standard Rockets", "description_es": "Cohetes estándar.", "description_fr": "Roquettes standard", "description_it": "Standard Rockets", "description_ja": "標準型ロケット", "description_ko": "일반 로켓", "description_ru": "Стандартные ракеты ближнего боя", "description_zh": "标准火箭", "descriptionID": 65048, "hasTypes": 1, "iconID": 1352, "name_de": "Standard", "name_en-us": "Standard Rockets", "name_es": "Cohetes estándar", "name_fr": "Roquettes standard", "name_it": "Standard Rockets", "name_ja": "標準型ロケット", "name_ko": "일반 로켓", "name_ru": "Стандартные", "name_zh": "标准火箭", "nameID": 66122, "parentGroupID": 118 }, "923": { "description_de": "Normale Torpedos", "description_en-us": "Standard Torpedoes", "description_es": "Torpedos estándar.", "description_fr": "Torpilles standard", "description_it": "Standard Torpedoes", "description_ja": "標準型トルピード", "description_ko": "일반 토피도", "description_ru": "Стандартные торпеды", "description_zh": "标准鱼雷", "descriptionID": 65049, "hasTypes": 1, "iconID": 1349, "name_de": "Standard", "name_en-us": "Standard Torpedoes", "name_es": "Torpedos estándar", "name_fr": "Torpilles standard", "name_it": "Standard Torpedoes", "name_ja": "標準型トルピード", "name_ko": "일반 토피도", "name_ru": "Стандартные", "name_zh": "标准鱼雷", "nameID": 66123, "parentGroupID": 387 }, "924": { "description_de": "Normale schwere Raketen.", "description_en-us": "Standard Heavy Missiles", "description_es": "Misiles pesados estándar.", "description_fr": "Missiles lourds standard", "description_it": "Standard Heavy Missiles", "description_ja": "標準型ヘビーミサイル", "description_ko": "일반 헤비 미사일", "description_ru": "Стандартные тяжелые ракеты", "description_zh": "标准重型导弹", "descriptionID": 65050, "hasTypes": 1, "iconID": 186, "name_de": "Standard", "name_en-us": "Standard Heavy Missiles", "name_es": "Misiles pesados estándar", "name_fr": "Missiles lourds standard", "name_it": "Standard Heavy Missiles", "name_ja": "標準型ヘビーミサイル", "name_ko": "일반 헤비 미사일", "name_ru": "Стандартные", "name_zh": "标准重型导弹", "nameID": 66124, "parentGroupID": 581 }, "925": { "description_de": "Fortgeschrittene Cruise Missiles mit hohem Schaden", "description_en-us": "Advanced High Damage Cruise Missiles", "description_es": "Misiles de crucero de gran daño con tecnología avanzada.", "description_fr": "Missiles de croisière perfectionnés à dégâts élevés", "description_it": "Advanced High Damage Cruise Missiles", "description_ja": "高性能高ダメージクルーズミサイル", "description_ko": "고화력 크루즈 미사일", "description_ru": "Усовершенствованные ракеты дальнего боя с усиленным зарядом", "description_zh": "高级高伤害巡航导弹", "descriptionID": 65051, "hasTypes": 1, "iconID": 184, "name_de": "Fortschrittlich, hoher Schaden", "name_en-us": "Advanced High Damage Cruise Missiles", "name_es": "Misiles de crucero de gran daño avanzados", "name_fr": "Missiles de croisière perfectionnés à dégâts élevés", "name_it": "Advanced High Damage Cruise Missiles", "name_ja": "高性能高ダメージクルーズミサイル", "name_ko": "고화력 크루즈 미사일", "name_ru": "Высокомощные", "name_zh": "高级高伤害巡航导弹", "nameID": 66125, "parentGroupID": 580 }, "926": { "description_de": "Fortgeschrittene, schwere Raketen mit hohem Schaden", "description_en-us": "Advanced High Damage Heavy Missiles", "description_es": "Misiles pesados de gran daño con tecnología avanzada.", "description_fr": "Missiles lourds perfectionnés à dégâts élevés", "description_it": "Advanced High Damage Heavy Missiles", "description_ja": "高性能高ダメージヘビーミサイル", "description_ko": "고화력 헤비 미사일", "description_ru": "Усовершенствованные тяжелые ракеты с усиленным зарядом", "description_zh": "高级高伤害重型导弹", "descriptionID": 65052, "hasTypes": 1, "iconID": 186, "name_de": "Fortschrittlich, hoher Schaden", "name_en-us": "Advanced High Damage Heavy Missiles", "name_es": "Misiles pesados de gran daño avanzados", "name_fr": "Missiles lourds perfectionnés à dégâts élevés", "name_it": "Advanced High Damage Heavy Missiles", "name_ja": "高性能高ダメージヘビーミサイル", "name_ko": "고화력 헤비 미사일", "name_ru": "Высокомощные", "name_zh": "高级高伤害重型导弹", "nameID": 66126, "parentGroupID": 581 }, "927": { "description_de": "Fortgeschrittene, leichte Rakten mit hohem Schaden", "description_en-us": "Advanced High Damage Light Missiles", "description_es": "Misiles ligeros de gran daño con tecnología avanzada.", "description_fr": "Missiles légers perfectionnés à dégâts élevés", "description_it": "Advanced High Damage Light Missiles", "description_ja": "高性能高ダメージライトミサイル", "description_ko": "고화력 라이트 미사일", "description_ru": "Усовершенствованные легкие ракеты с усиленным зарядом", "description_zh": "高级高伤害轻型导弹", "descriptionID": 65053, "hasTypes": 1, "iconID": 192, "name_de": "Fortschrittlich, hoher Schaden", "name_en-us": "Advanced High Damage Light Missiles", "name_es": "Misiles ligeros de gran daño avanzados", "name_fr": "Missiles légers perfectionnés à dégâts élevés", "name_it": "Advanced High Damage Light Missiles", "name_ja": "高性能高ダメージライトミサイル", "name_ko": "고화력 라이트 미사일", "name_ru": "Высокомощные", "name_zh": "高级高伤害轻型导弹", "nameID": 66127, "parentGroupID": 117 }, "928": { "description_de": "Fortgeschrittene Langsteckenraketen", "description_en-us": "Advanced Long Range Rockets", "description_es": "Cohetes de largo alcance avanzados.", "description_fr": "Roquettes perfectionnées à longue portée", "description_it": "Advanced Long Range Rockets", "description_ja": "射程特化型", "description_ko": "장거리 로켓", "description_ru": "Усовершенствованные ракеты ближнего боя с увеличенной дальностью полета", "description_zh": "高级远距火箭", "descriptionID": 65054, "hasTypes": 1, "iconID": 1352, "name_de": "Fortschrittlich, Langstrecke", "name_en-us": "Advanced Long Range Rockets", "name_es": "Cohetes de largo alcance avanzados", "name_fr": "Roquettes perfectionnées à longue portée", "name_it": "Advanced Long Range Rockets", "name_ja": "射程特化型ロケット", "name_ko": "장거리 로켓", "name_ru": "Высокоскоростные", "name_zh": "高级远距火箭", "nameID": 66128, "parentGroupID": 118 }, "929": { "description_de": "Fortgeschrittene Langsteckentorpedos", "description_en-us": "Advanced Long Range Torpedoes", "description_es": "Torpedos de largo alcance avanzados.", "description_fr": "Torpilles perfectionnées à longue portée", "description_it": "Advanced Long Range Torpedoes", "description_ja": "射程特化型", "description_ko": "장거리 토피도", "description_ru": "Усовершенствованные торпеды с увеличенной дальностью полета", "description_zh": "高级远距鱼雷", "descriptionID": 65055, "hasTypes": 1, "iconID": 1349, "name_de": "Fortschrittlich, Langstrecke", "name_en-us": "Advanced Long Range Torpedoes", "name_es": "Torpedos de largo alcance avanzados", "name_fr": "Torpilles perfectionnées à longue portée", "name_it": "Advanced Long Range Torpedoes", "name_ja": "射程特化型トルピード", "name_ko": "장거리 토피도", "name_ru": "Высокоскоростные", "name_zh": "高级远距鱼雷", "nameID": 66129, "parentGroupID": 387 }, "930": { "description_de": "Fortgeschrittene Anti-Schiff-Raketen", "description_en-us": "Advanced Anti-Ship Rockets", "description_es": "Cohetes antinaves avanzados.", "description_fr": "Roquettes antivaisseau perfectionnées", "description_it": "Advanced Anti-Ship Rockets", "description_ja": "対艦特化型", "description_ko": "대함 로켓", "description_ru": "Ракеты ближнего боя (повышенной мощности)", "description_zh": "高级反舰火箭", "descriptionID": 65056, "hasTypes": 1, "iconID": 1352, "name_de": "Fortschrittlich, Anti-Schiff", "name_en-us": "Advanced Anti-Ship Rockets", "name_es": "Cohetes antinaves avanzados", "name_fr": "Roquettes anti-vaisseau perfectionnées", "name_it": "Advanced Anti-Ship Rockets", "name_ja": "対艦特化型ロケット", "name_ko": "대함 로켓", "name_ru": "Высокомощные", "name_zh": "高级反舰火箭", "nameID": 66130, "parentGroupID": 118 }, "931": { "description_de": "Fortgeschrittene Anti-Schiff-Torpedos", "description_en-us": "Advanced Anti-Ship Torpedoes", "description_es": "Torpedos antinaves avanzados.", "description_fr": "Torpilles antivaisseau perfectionnées", "description_it": "Advanced Anti-Ship Torpedoes", "description_ja": "対艦特化型", "description_ko": "대함 토피도", "description_ru": "Усовершенствованные противокорабельные торпеды", "description_zh": "高级反舰鱼雷", "descriptionID": 65057, "hasTypes": 1, "iconID": 1349, "name_de": "Fortschrittlich, Anti-Schiff", "name_en-us": "Advanced Anti-Ship Torpedoes", "name_es": "Torpedos antinaves avanzados", "name_fr": "Torpilles anti-vaisseau perfectionnées", "name_it": "Advanced Anti-Ship Torpedoes", "name_ja": "対艦特化型トルピード", "name_ko": "대함 토피도", "name_ru": "Высокомощные", "name_zh": "高级反舰鱼雷", "nameID": 66131, "parentGroupID": 387 }, "932": { "description_de": "Strukturen, die Produktionsanlagen beherbergen.", "description_en-us": "Structures which house manufacturing facilities.", "description_es": "Estructuras que acogen centros de fabricación.", "description_fr": "Structures abritant des usines de production.", "description_it": "Structures which house manufacturing facilities.", "description_ja": "製造施設が入っている建造物。", "description_ko": "제조시설 관련 구조물입니다.", "description_ru": "Сооружения, выполняющие производственные функции.", "description_zh": "容纳了生产设施的建筑。", "descriptionID": 65232, "hasTypes": 1, "iconID": 2222, "name_de": "Fertigungsanlagen", "name_en-us": "Assembly Arrays", "name_es": "Baterías de montaje", "name_fr": "Modules d'assemblage", "name_it": "Assembly Arrays", "name_ja": "組み立て施設", "name_ko": "생산시설", "name_ru": "Сборочные линии", "name_zh": "装配阵列", "nameID": 66306, "parentGroupID": 1285 }, "933": { "description_de": "Struktur mit Forschungsanlagen.", "description_en-us": "Structures with research facilities.", "description_es": "Estructuras con centros de investigación.", "description_fr": "Structures abritant des équipements de recherche.", "description_it": "Structures with research facilities.", "description_ja": "研究施設が入っている建造物。", "description_ko": "연구시설 관련 구조물입니다.", "description_ru": "Сооружения, предназначенные для выполнения исследовательских функций.", "description_zh": "移动实验室", "descriptionID": 65233, "hasTypes": 1, "iconID": 2222, "name_de": "Labor", "name_en-us": "Laboratory", "name_es": "Laboratorio", "name_fr": "Laboratoire", "name_it": "Laboratory", "name_ja": "研究施設", "name_ko": "연구실", "name_ru": "Лаборатории", "name_zh": "实验室", "nameID": 66307, "parentGroupID": 1285 }, "935": { "description_de": "Untersysteme, die dazu gebaut sind, die Effizienz von Bergbaulaser zu steigern.", "description_en-us": "Subsystems designed to improve mining laser efficiency.", "description_es": "Subsistemas diseñados para mejorar la eficiencia de los láseres mineros.", "description_fr": "Sous-systèmes conçus pour améliorer l'efficacité des lasers d'extraction.", "description_it": "Subsystems designed to improve mining laser efficiency.", "description_ja": "採掘レーザーの効率を高めるように設計されたサブシステム。", "description_ko": "채굴 레이저 효율성을 향상시키기 위한 서브시스템입니다.", "description_ru": "Подсистемы, разработанные для повышения эффективности экстракторов.", "description_zh": "用于加强采矿激光器工作效率的子系统。", "descriptionID": 65058, "hasTypes": 1, "iconID": 1046, "name_de": "Bergbau-Upgrades", "name_en-us": "Mining Upgrades", "name_es": "Mejoras de minería", "name_fr": "Améliorations de l'extraction minière", "name_it": "Mining Upgrades", "name_ja": "採掘強化", "name_ko": "채굴 업그레이드", "name_ru": "Оптимизация бурового оборудования", "name_zh": "采矿改良设备", "nameID": 66132, "parentGroupID": 1713 }, "937": { "description_de": "Blueprints von Bergbau-Upgrades.", "description_en-us": "Blueprints of mining upgrades.", "description_es": "Planos de mejoras mineras.", "description_fr": "Plans de construction d'améliorations de l'extraction minière.", "description_it": "Blueprints of mining upgrades.", "description_ja": "採掘強化のブループリント。", "description_ko": "채굴 업그레이드 블루프린트입니다.", "description_ru": "Чертежи пакетов модернизации экстракторов.", "description_zh": "采矿改良设备蓝图。", "descriptionID": 65059, "hasTypes": 1, "iconID": 2703, "name_de": "Bergbau-Upgrades", "name_en-us": "Mining Upgrades", "name_es": "Mejoras de minería", "name_fr": "Améliorations de l'extraction minière", "name_it": "Mining Upgrades", "name_ja": "採掘強化", "name_ko": "채굴 업그레이드", "name_ru": "Оптимизация бурового оборудования", "name_zh": "采矿改良设备", "nameID": 66133, "parentGroupID": 1711 }, "938": { "description_de": "Module die die Effektivität von Drohnen erhöhen", "description_en-us": "Modules that increase drone efficiency", "description_es": "Módulos que aumentan la eficiencia de los drones.", "description_fr": "Modules qui augmentent l'efficacité des drones", "description_it": "Modules that increase drone efficiency", "description_ja": "ドローンの効率を向上させるモジュール", "description_ko": "드론 효율성을 향상하는 모듈입니다.", "description_ru": "Модули, увеличивающие эффективность дронов", "description_zh": "可以增强无人机效率的装备", "descriptionID": 65060, "hasTypes": 1, "iconID": 2989, "name_de": "Drohnenupgrades", "name_en-us": "Drone Upgrades", "name_es": "Mejoras de drones", "name_fr": "Améliorations de drone", "name_it": "Drone Upgrades", "name_ja": "ドローン強化", "name_ko": "드론 업그레이드", "name_ru": "Улучшения систем управления дронами", "name_zh": "无人机升级模块", "nameID": 66134, "parentGroupID": 9 }, "939": { "description_de": "Blueprints von Drohnenupgrades", "description_en-us": "Blueprints of drone upgrades.", "description_es": "Planos de mejoras de drones.", "description_fr": "Plans de construction d'améliorations des drones.", "description_it": "Blueprints of drone upgrades.", "description_ja": "ドローン強化のブループリント。", "description_ko": "드론 업그레이드 블루프린트입니다.", "description_ru": "Чертежи пакетов модернизации систем управления дронами.", "description_zh": "无人机升级模块蓝图。", "descriptionID": 65061, "hasTypes": 1, "iconID": 2703, "name_de": "Drohnenupgrades", "name_en-us": "Drone Upgrades", "name_es": "Mejoras de drones", "name_fr": "Améliorations de drone", "name_it": "Drone Upgrades", "name_ja": "ドローン強化", "name_ko": "드론 업그레이드", "name_ru": "Улучшения систем управления дронами", "name_zh": "无人机升级模块", "nameID": 66135, "parentGroupID": 209 }, "940": { "description_de": "Die zum Betrieb von Sternenbasen innerhalb des Imperiums benötigten Lizenzen.", "description_en-us": "The required licenses to operate starbases within the borders of the empires", "description_es": "Las licencias necesarias para operar bases estelares dentro de las fronteras de los imperios.", "description_fr": "Permis requis pour faire fonctionner les bases stellaires à l'intérieur des frontières des empires", "description_it": "The required licenses to operate starbases within the borders of the empires", "description_ja": "帝国領内でスターベースを運営するために必要なライセンス", "description_ko": "제국 권역 내 스타베이스 운영을 위한 인가증입니다.", "description_ru": "Необходимые лицензии для работы ПОСов в космосе, принадлежащем сверхдержавам", "description_zh": "在帝国范围内使用母星所需要的执照", "descriptionID": 65163, "hasTypes": 1, "iconID": 1192, "name_de": "Sternenbasis-Freibriefe", "name_en-us": "Starbase Charters", "name_es": "Patentes de bases estelares", "name_fr": "Licences pour base stellaire", "name_it": "Starbase Charters", "name_ja": "基地運営許可証", "name_ko": "스타베이스 인가증", "name_ru": "Разрешения на эксплуатацию ПОСов", "name_zh": "母星宪章", "nameID": 66237, "parentGroupID": 19 }, "943": { "description_de": "Blaupause von Modifikationen, die benutzt werden, um die Leistung des Schiffs zu verändern", "description_en-us": "Blueprints of rigs used to modify ship performance", "description_es": "Planos de complementos usados para modificar el rendimiento de la nave.", "description_fr": "Plans de construction de modules d'optimisation servant à modifier les performances d'un vaisseau", "description_it": "Blueprints of rigs used to modify ship performance", "description_ja": "艦船の性能を変えるリグのブループリント", "description_ko": "함선 성능을 향상할 수 있는 리그의 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей, при установке влияющих на эффективность работы корабельных систем", "description_zh": "用来提升舰船性能的改装件的蓝图", "descriptionID": 65063, "hasTypes": 0, "iconID": 2703, "name_de": "Schiffsmodifikationen", "name_en-us": "Ship Modifications", "name_es": "Modificaciones de la nave", "name_fr": "Modifications de vaisseau", "name_it": "Ship Modifications", "name_ja": "艦船調整用パーツ", "name_ko": "함선 리그", "name_ru": "Модификации кораблей", "name_zh": "舰船改装", "nameID": 66137, "parentGroupID": 2 }, "944": { "description_de": "Permanente Veränderung der Panzerungseinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's armor facilities.", "description_es": "Modificación permanente de los sistemas de blindaje de una nave.", "description_fr": "Modification permanente de la structure de blindage d'un vaisseau.", "description_it": "Permanent modification of a ship's armor facilities.", "description_ja": "艦船のアーマー施設の永久改造。", "description_ko": "장갑 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем броневой защиты корабля.", "description_zh": "装甲设施永久性改装件。", "descriptionID": 65199, "hasTypes": 0, "iconID": 2703, "name_de": "Panzerungsmodifikationen", "name_en-us": "Armor Rigs", "name_es": "Complementos de blindaje", "name_fr": "Modifications de blindage", "name_it": "Armor Rigs", "name_ja": "アーマーリグ", "name_ko": "장갑 리그", "name_ru": "Модификаторы брони", "name_zh": "装甲改装件", "nameID": 66273, "parentGroupID": 943 }, "945": { "description_de": "Permanente Veränderung der astronautischen Einrichtugen eines Schiffes.", "description_en-us": "Permanent modification of a ship's astronautic facilities.", "description_es": "Modificación permanente de los sistemas de astronáutica de una nave.", "description_fr": "Modification permanente des installations astronautiques d'un vaisseau.", "description_it": "Permanent modification of a ship's astronautic facilities.", "description_ja": "艦船の宇宙航行施設の永久改造。", "description_ko": "항법 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу астронавигационных систем корабля.", "description_zh": "永久性舰船航天技术改装件", "descriptionID": 65211, "hasTypes": 0, "iconID": 2703, "name_de": "Astronautische Modifikationen", "name_en-us": "Astronautic Rigs", "name_es": "Complementos de astronáutica", "name_fr": "Modifications astronautiques", "name_it": "Astronautic Rigs", "name_ja": "宇宙航行リグ", "name_ko": "항법 리그", "name_ru": "Модификаторы двигательных систем", "name_zh": "航天技术改装件", "nameID": 66285, "parentGroupID": 943 }, "946": { "description_de": "Permanente Veränderung der Drohneneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's drone facilities.", "description_es": "Modificación permanente de los sistemas de drones de una nave.", "description_fr": "Modification permanente des installations liées aux drones d'un vaisseau.", "description_it": "Permanent modification of a ship's drone facilities.", "description_ja": "艦船のドローン施設の永久改造。", "description_ko": "드론 시설 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем управления дронами корабля.", "description_zh": "无人机相关设施的永久性改装件。", "descriptionID": 65212, "hasTypes": 0, "iconID": 2703, "name_de": "Drohnenmodifikationen", "name_en-us": "Drone Rigs", "name_es": "Complementos de drones", "name_fr": "Modifications de drone", "name_it": "Drone Rigs", "name_ja": "ドローンリグ", "name_ko": "드론 리그", "name_ru": "Модификаторы дронов", "name_zh": "无人机改装件", "nameID": 66286, "parentGroupID": 943 }, "948": { "description_de": "Permanente Veränderung der Elektronikhoheitssysteme eines Schiffes.", "description_en-us": "Permanent modification of a ship's electronics superiority facilities.", "description_es": "Modificación permanente de los sistemas de superioridad electrónica de una nave.", "description_fr": "Modification permanente des installations de supériorité électronique d'un vaisseau.", "description_it": "Permanent modification of a ship's electronics superiority facilities.", "description_ja": "艦船のエレクトロニクス強化施設の永久改造。", "description_ko": "상급 전자공학 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем электронного противодействия корабля.", "description_zh": "舰载电子压制装置永久性改装件。", "descriptionID": 65214, "hasTypes": 0, "iconID": 2703, "name_de": "Elektronische Höchstleistungsmodifikationen", "name_en-us": "Electronics Superiority Rigs", "name_es": "Complementos de superioridad electrónica", "name_fr": "Modifications de supériorité électronique", "name_it": "Electronics Superiority Rigs", "name_ja": "高性能エレクトロニクスリグ", "name_ko": "전자공학 리그", "name_ru": "Модификаторы РЭБ", "name_zh": "电子压制改装件", "nameID": 66288, "parentGroupID": 943 }, "949": { "description_de": "Permanente Veränderung der Stromversorgung eines Schiffes.", "description_en-us": "Permanent modification of a ship's energy grid facilities.", "description_es": "Modificación permanente de las capacidades del sistema de energía de una nave.", "description_fr": "Modification permanente du réseau d'alimentation d'un vaisseau.", "description_it": "Permanent modification of a ship's energy grid facilities.", "description_ja": "艦船のエネルギー回路施設の永久改造。", "description_ko": "에너지그리드 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу энергосети корабля.", "description_zh": "能量栅格永久性改装件。", "descriptionID": 65215, "hasTypes": 0, "iconID": 2703, "name_de": "Modifikationen für Ingenieurwesen", "name_en-us": "Engineering Rigs", "name_es": "Complementos de ingeniería", "name_fr": "Modifications d'ingénierie", "name_it": "Engineering Rigs", "name_ja": "エンジニアリングリグ", "name_ko": "엔지니어링 리그", "name_ru": "Модификаторы инженерных систем", "name_zh": "工程改装件", "nameID": 66289, "parentGroupID": 943 }, "950": { "description_de": "Permanente Veränderung der Energiewaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's energy weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas de energía de una nave.", "description_fr": "Modification permanente des installations d'armes à énergie d'un vaisseau.", "description_it": "Permanent modification of a ship's energy weapon facilities.", "description_ja": "艦船のエネルギー兵器施設の永久改造。", "description_ko": "에너지 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу высокоэнергетических орудий корабля.", "description_zh": "能量武器永久性改装件。", "descriptionID": 65216, "hasTypes": 0, "iconID": 2703, "name_de": "Energiewaffenmodifikationen", "name_en-us": "Energy Weapon Rigs", "name_es": "Complementos de armas de energía", "name_fr": "Modifications d’arme à énergie", "name_it": "Energy Weapon Rigs", "name_ja": "エネルギー兵器リグ", "name_ko": "에너지 무기 리그", "name_ru": "Модификаторы лазерного вооружения", "name_zh": "能量武器改装件", "nameID": 66290, "parentGroupID": 943 }, "951": { "description_de": "Permanente Veränderung der Hybridwaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's hybrid weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas híbridas de una nave.", "description_fr": "Modification permanente des installations d'armes hybrides d'un vaisseau.", "description_it": "Permanent modification of a ship's hybrid weapon facilities.", "description_ja": "艦船のハイブリッド兵器施設の永久改造。", "description_ko": "하이브리드 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу орудий гибридного действия корабля.", "description_zh": "混合武器永久性改装件。", "descriptionID": 65217, "hasTypes": 0, "iconID": 2703, "name_de": "Hybridwaffenmodifikationen", "name_en-us": "Hybrid Weapon Rigs", "name_es": "Complementos de armas híbridas", "name_fr": "Modifications d’arme hybride", "name_it": "Hybrid Weapon Rigs", "name_ja": "ハイブリッド兵器リグ", "name_ko": "하이브리드 무기 리그", "name_ru": "Модификаторы гибридного вооружения", "name_zh": "混合武器改装件", "nameID": 66291, "parentGroupID": 943 }, "952": { "description_de": "Permanente Veränderung der Raketenwerfereinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's missile launcher facilities.", "description_es": "Modificación permanente de las instalaciones de lanzamisiles de una nave.", "description_fr": "Modification permanente des installations de lance-missiles d'un vaisseau.", "description_it": "Permanent modification of a ship's missile launcher facilities.", "description_ja": "艦船のミサイルランチャー施設の永久改造。", "description_ko": "미사일 런처 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу пусковых установок корабля.", "description_zh": "导弹发射器永久性改装件。", "descriptionID": 65218, "hasTypes": 0, "iconID": 2703, "name_de": "Lenkwaffenwerfer-Modifikationen", "name_en-us": "Missile Launcher Rigs", "name_es": "Complementos de lanzamisiles", "name_fr": "Modifications de lance-missiles", "name_it": "Missile Launcher Rigs", "name_ja": "ミサイル兵器リグ", "name_ko": "미사일 런처 리그", "name_ru": "Модификаторы ракетного вооружения", "name_zh": "导弹发射器改装件", "nameID": 66292, "parentGroupID": 943 }, "953": { "description_de": "Permanente Veränderung der Projektilwaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's projectile weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas de proyectiles de una nave.", "description_fr": "Modification permanente des installations d'armes à projectiles d'un vaisseau.", "description_it": "Permanent modification of a ship's projectile weapon facilities.", "description_ja": "艦船のプロジェクタイル兵器施設の永久改造。", "description_ko": "함선 발사체 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу огнестрельных орудий корабля.", "description_zh": "射弹武器永久性改装件。", "descriptionID": 65240, "hasTypes": 0, "iconID": 2703, "name_de": "Projektilwaffenmodifikationen", "name_en-us": "Projectile Weapon Rigs", "name_es": "Complementos de armas de proyectiles", "name_fr": "Modifications d’arme à projectile", "name_it": "Projectile Weapon Rigs", "name_ja": "プロジェクタイル兵器リグ", "name_ko": "발사체 무기 리그", "name_ru": "Модификаторы баллистического вооружения", "name_zh": "射弹武器改装件", "nameID": 66314, "parentGroupID": 943 }, "954": { "description_de": "Permanente Veränderung der Schild-Einrichtungen eines Schiffs.", "description_en-us": "Permanent modification of a ship's shield facilities.", "description_es": "Modificación permanente de las instalaciones de escudo de una nave.", "description_fr": "Modification permanente de la structure de bouclier d'un vaisseau.", "description_it": "Permanent modification of a ship's shield facilities.", "description_ja": "艦船のシールド施設の永久改造。", "description_ko": "실드 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем поддержки щита корабля.", "description_zh": "护盾设备永久性改装件。", "descriptionID": 65219, "hasTypes": 0, "iconID": 2703, "name_de": "Schildmodifikationen", "name_en-us": "Shield Rigs", "name_es": "Complementos de escudo", "name_fr": "Modifications de bouclier", "name_it": "Shield Rigs", "name_ja": "シールドリグ", "name_ko": "실드 리그", "name_ru": "Модификаторы щитов", "name_zh": "护盾改装件", "nameID": 66293, "parentGroupID": 943 }, "955": { "description_de": "Modifikationen und Subsysteme, welche die Attribute eines Raumschiffs verändern, um es für seine zugewiesene Funktion effektiver zu machen. Mutaplasmide, welche die Attribute eines Moduls dauerhaft verändern", "description_en-us": "Rigs and subsystems that alter a starship's attributes in such a way as to make it more effective in its chosen role\r\n\r\nMutaplasmids that permanently alter a module's attributes", "description_es": "Complementos y subsistemas que alteran los atributos de una nave para que sea más efectiva en la función elegida.\n\nMutaplásmidos que alteran permanentemente los atributos de un módulo.", "description_fr": "Modules d'optimisation et sous-systèmes qui modifient les attributs d'un vaisseau de manière à le rendre plus efficace dans le rôle qui lui est attribué Mutaplasmides qui modifient de façon permanente les attributs d'un module.", "description_it": "Rigs and subsystems that alter a starship's attributes in such a way as to make it more effective in its chosen role\r\n\r\nMutaplasmids that permanently alter a module's attributes", "description_ja": "宇宙船の属性に調整を加え、特定用途に絞って効率を上げるリグとサブシステム", "description_ko": "리그 및 서브시스템은 함선의 기능을 향상합니다.

뮤타플라즈미드는 모듈의 성능을 영구적으로 변화시킵니다.", "description_ru": "Надстройки и подсистемы, изменяющие характеристики корабля таким образом, что он становится более эффективным с точки зрения выполнения задач в рамках выбранного профиля. Мутаплазмиды, навсегда меняющие характеристики модуля.", "description_zh": "可以改变舰船属性的改装件和子系统,能让舰船更好地发挥职能\n\n可以永久改变一个装备的属性的突变质体", "descriptionID": 65463, "hasTypes": 0, "iconID": 2887, "name_de": "Schiffs- und Modulmodifikationen", "name_en-us": "Ship and Module Modifications", "name_es": "Modificaciones de naves y módulos", "name_fr": "Modifications des vaisseaux et des modules", "name_it": "Ship and Module Modifications", "name_ja": "艦船調整用パーツ", "name_ko": "함선 및 모듈 개조", "name_ru": "Модификации корабля и модулей", "name_zh": "舰船和装备改装件", "nameID": 66538 }, "956": { "description_de": "Permanente Veränderung der Panzerungseinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's armor facilities.", "description_es": "Modificación permanente de los sistemas de blindaje de una nave.", "description_fr": "Modification permanente de la structure de blindage d'un vaisseau.", "description_it": "Permanent modification of a ship's armor facilities.", "description_ja": "艦船のアーマー施設の永久改造。", "description_ko": "장갑 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем броневой защиты корабля.", "description_zh": "对舰船装甲进行的永久性改造。", "descriptionID": 65200, "hasTypes": 0, "iconID": 3194, "name_de": "Panzerungsmodifikationen", "name_en-us": "Armor Rigs", "name_es": "Complementos de blindaje", "name_fr": "Modifications de blindage", "name_it": "Armor Rigs", "name_ja": "アーマーリグ", "name_ko": "장갑 리그", "name_ru": "Модификаторы брони", "name_zh": "装甲改装件", "nameID": 66274, "parentGroupID": 1111 }, "957": { "description_de": "Permanente Veränderung der astronautischen Einrichtugen eines Schiffes.", "description_en-us": "Permanent modification of a ship's astronautic facilities.", "description_es": "Modificación permanente de los sistemas de astronáutica de una nave.", "description_fr": "Modification permanente des installations astronautiques d'un vaisseau.", "description_it": "Permanent modification of a ship's astronautic facilities.", "description_ja": "艦船の宇宙航行施設の永久改造。", "description_ko": "항법 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу астронавигационных систем корабля.", "description_zh": "永久性舰船航天技术改装件", "descriptionID": 65201, "hasTypes": 0, "iconID": 3196, "name_de": "Astronautische Modifikationen", "name_en-us": "Astronautic Rigs", "name_es": "Complementos de astronáutica", "name_fr": "Modifications astronautiques", "name_it": "Astronautic Rigs", "name_ja": "宇宙航行リグ", "name_ko": "항법 리그", "name_ru": "Модификаторы двигательных систем", "name_zh": "航天技术改装件", "nameID": 66275, "parentGroupID": 1111 }, "958": { "description_de": "Permanente Veränderung der Drohneneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's drone facilities.", "description_es": "Modificación permanente de los sistemas de drones de una nave.", "description_fr": "Modification permanente des installations liées aux drones d'un vaisseau.", "description_it": "Permanent modification of a ship's drone facilities.", "description_ja": "艦船のドローン施設の永久改造。", "description_ko": "드론 시설 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем управления дронами корабля.", "description_zh": "无人机相关设施的永久性改装件。", "descriptionID": 65202, "hasTypes": 0, "iconID": 3200, "name_de": "Drohnenmodifikationen", "name_en-us": "Drone Rigs", "name_es": "Complementos de drones", "name_fr": "Modifications de drone", "name_it": "Drone Rigs", "name_ja": "ドローンリグ", "name_ko": "드론 리그", "name_ru": "Модификаторы дронов", "name_zh": "无人机改装件", "nameID": 66276, "parentGroupID": 1111 }, "960": { "description_de": "Permanente Veränderung der Elektronikhoheitssysteme eines Schiffes.", "description_en-us": "Permanent modification of a ship's electronics superiority facilities.", "description_es": "Modificación permanente de los sistemas de superioridad electrónica de una nave.", "description_fr": "Modification permanente des installations de supériorité électronique d'un vaisseau.", "description_it": "Permanent modification of a ship's electronics superiority facilities.", "description_ja": "艦船のエレクトロニクス強化施設の永久改造。", "description_ko": "상급 전자공학 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем электронного противодействия корабля.", "description_zh": "舰载电子压制装置永久性改装件。", "descriptionID": 65204, "hasTypes": 0, "iconID": 3198, "name_de": "Elektronische Höchstleistungsmodifikationen", "name_en-us": "Electronics Superiority Rigs", "name_es": "Complementos de superioridad electrónica", "name_fr": "Modifications de supériorité électronique", "name_it": "Electronics Superiority Rigs", "name_ja": "高性能エレクトロニクスリグ", "name_ko": "전자공학 리그", "name_ru": "Модификаторы РЭБ", "name_zh": "电子压制改装件", "nameID": 66278, "parentGroupID": 1111 }, "961": { "description_de": "Permanente Veränderung der Stromversorgung eines Schiffes.", "description_en-us": "Permanent modification of a ship's energy grid facilities.", "description_es": "Modificación permanente de las capacidades del sistema de energía de una nave.", "description_fr": "Modification permanente du réseau d'alimentation d'un vaisseau.", "description_it": "Permanent modification of a ship's energy grid facilities.", "description_ja": "艦船のエネルギー回路施設の永久改造。", "description_ko": "에너지그리드 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу энергосети корабля.", "description_zh": "能量栅格永久性改装件。", "descriptionID": 65205, "hasTypes": 0, "iconID": 3195, "name_de": "Modifikationen für Ingenieurwesen", "name_en-us": "Engineering Rigs", "name_es": "Complementos de ingeniería", "name_fr": "Modifications d'ingénierie", "name_it": "Engineering Rigs", "name_ja": "エンジニアリングリグ", "name_ko": "엔지니어링 리그", "name_ru": "Модификаторы инженерных систем", "name_zh": "工程改装件", "nameID": 66279, "parentGroupID": 1111 }, "962": { "description_de": "Permanente Veränderung der Energiewaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's energy weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas de energía de una nave.", "description_fr": "Modification permanente des installations d'armes à énergie d'un vaisseau.", "description_it": "Permanent modification of a ship's energy weapon facilities.", "description_ja": "艦船のエネルギー兵器施設の永久改造。", "description_ko": "에너지 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу высокоэнергетических орудий корабля.", "description_zh": "能量武器永久性改装件。", "descriptionID": 65206, "hasTypes": 0, "iconID": 3203, "name_de": "Energiewaffenmodifikationen", "name_en-us": "Energy Weapon Rigs", "name_es": "Complementos de armas de energía", "name_fr": "Modifications d’arme à énergie", "name_it": "Energy Weapon Rigs", "name_ja": "エネルギー兵器リグ", "name_ko": "에너지 무기 리그", "name_ru": "Модификаторы лазерного вооружения", "name_zh": "能量武器改装件", "nameID": 66280, "parentGroupID": 1111 }, "963": { "description_de": "Permanente Veränderung der Hybridwaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's hybrid weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas híbridas de una nave.", "description_fr": "Modification permanente des installations d'armes hybrides d'un vaisseau.", "description_it": "Permanent modification of a ship's hybrid weapon facilities.", "description_ja": "艦船のハイブリッド兵器施設の永久改造。", "description_ko": "하이브리드 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу орудий гибридного действия корабля.", "description_zh": "混合武器永久性改装件。", "descriptionID": 65207, "hasTypes": 0, "iconID": 3202, "name_de": "Hybridwaffenmodifikationen", "name_en-us": "Hybrid Weapon Rigs", "name_es": "Complementos de armas híbridas", "name_fr": "Modifications d’arme hybride", "name_it": "Hybrid Weapon Rigs", "name_ja": "ハイブリッド兵器リグ", "name_ko": "하이브리드 무기 리그", "name_ru": "Модификаторы гибридного вооружения", "name_zh": "混合武器改装件", "nameID": 66281, "parentGroupID": 1111 }, "964": { "description_de": "Permanente Veränderung der Raketenwerfereinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's missile launcher facilities.", "description_es": "Modificación permanente de los sistemas de lanzamisiles de una nave.", "description_fr": "Modification permanente des installations de lance-missiles d'un vaisseau.", "description_it": "Permanent modification of a ship's missile launcher facilities.", "description_ja": "艦船のミサイルランチャー施設の永久改造。", "description_ko": "미사일 런처 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу пусковых установок корабля.", "description_zh": "导弹发射器永久性改装件。", "descriptionID": 65208, "hasTypes": 0, "iconID": 3197, "name_de": "Lenkwaffenwerfer-Modifikationen", "name_en-us": "Missile Launcher Rigs", "name_es": "Complementos de lanzamisiles", "name_fr": "Modifications de lance-missiles", "name_it": "Missile Launcher Rigs", "name_ja": "ミサイル兵器リグ", "name_ko": "미사일 런처 리그", "name_ru": "Модификаторы ракетного вооружения", "name_zh": "导弹发射器改装件", "nameID": 66282, "parentGroupID": 1111 }, "965": { "description_de": "Permanente Veränderung der Schild-Einrichtungen eines Schiffs.", "description_en-us": "Permanent modification of a ship's shield facilities.", "description_es": "Modificación permanente de los sistemas de escudo de una nave.", "description_fr": "Modification permanente de la structure de bouclier d'un vaisseau.", "description_it": "Permanent modification of a ship's shield facilities.", "description_ja": "艦船のシールド施設の永久改造。", "description_ko": "실드 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем поддержки щита корабля.", "description_zh": "护盾设备永久性改装件。", "descriptionID": 65209, "hasTypes": 0, "iconID": 3193, "name_de": "Schildmodifikationen", "name_en-us": "Shield Rigs", "name_es": "Complementos de escudo", "name_fr": "Modifications de bouclier", "name_it": "Shield Rigs", "name_ja": "シールドリグ", "name_ko": "실드 리그", "name_ru": "Модификаторы щитов", "name_zh": "护盾改装件", "nameID": 66283, "parentGroupID": 1111 }, "967": { "description_de": "Schiffssysteme, die das Verzerrungssignal verstärken, welches Geräte für elektronische Gegenschläge erzeugen.", "description_en-us": "Ship systems that amplify the distortion signal generated by electronic counter measure systems.", "description_es": "Sistemas de a bordo que amplifican la señal distorsionadora que generan las contramedidas electrónicas.", "description_fr": "Systèmes des vaisseaux visant à amplifier le signal de distorsion généré par les systèmes de contre-mesures électroniques.", "description_it": "Ship systems that amplify the distortion signal generated by electronic counter measure systems.", "description_ja": "電子妨害機器システムが発する妨害信号を増幅するシップシステム。", "description_ko": "ECM에서 생성되는 왜곡 신호를 증폭시켜주는 시스템입니다.", "description_ru": "Корабельные системы, усиливающие шумовой сигнал, создаваемый системами радиоэлектронной борьбы.", "description_zh": "此舰载系统用于放大由ECM装备产生的扭曲信号。", "descriptionID": 65133, "hasTypes": 1, "iconID": 1046, "name_de": "Signalverzerrungsverstärker", "name_en-us": "Signal Distortion Amplifier", "name_es": "Amplificador de distorsión de señales", "name_fr": "Amplificateur de distorsion de signal", "name_it": "Signal Distortion Amplifier", "name_ja": "シグナル歪曲率増幅器", "name_ko": "신호 교란 증폭기", "name_ru": "Усилители искажения сигнала", "name_zh": "信号畸变放大器", "nameID": 66207, "parentGroupID": 677 }, "968": { "description_de": "Jet-Projektile für Schwere Angriffswerfer.", "description_en-us": "Jet-propelled projectiles for heavy assault launchers.", "description_es": "Proyectiles autopropulsados para lanzadores de asalto pesados.", "description_fr": "Projectiles autopropulsés pour des lanceurs d'assaut lourds.", "description_it": "Jet-propelled projectiles for heavy assault launchers.", "description_ja": "ヘビーアサルトランチャー用のジェット推進式ミサイル。", "description_ko": "헤비 어썰트 런처에서 발사하는 제트 추진 미사일입니다.", "description_ru": "Реактивные снаряды для тяжелых штурмовых пусковых установок.", "description_zh": "重型攻击导弹发射器使用的喷射推进弹头。", "descriptionID": 65065, "hasTypes": 0, "iconID": 186, "name_de": "Schwere Angriffslenkwaffen", "name_en-us": "Heavy Assault Missiles", "name_es": "Misiles de asalto pesados", "name_fr": "Missiles d'assaut lourds", "name_it": "Heavy Assault Missiles", "name_ja": "ヘビーアサルトミサイル", "name_ko": "헤비 어썰트 미사일", "name_ru": "Тяжёлые штурмовые ракеты", "name_zh": "重型攻击导弹", "nameID": 66139, "parentGroupID": 114 }, "971": { "description_de": "Schwere Standard-Angriffslenkwaffen.", "description_en-us": "Standard heavy assault missiles.", "description_es": "Misiles de asalto pesados estándar.", "description_fr": "Missiles d'assaut lourds standard.", "description_it": "Standard heavy assault missiles.", "description_ja": "標準的なヘビーアサルトミサイル。", "description_ko": "일반 헤비 어썰트 미사일입니다.", "description_ru": "Стандартные варианты оснащения тяжёлых ракет малой дальности.", "description_zh": "标准重型攻击导弹。", "descriptionID": 65155, "hasTypes": 1, "iconID": 186, "name_de": "Standard", "name_en-us": "Standard Heavy Assault Missiles", "name_es": "Misiles de asalto pesados estándar", "name_fr": "Missiles d'assaut lourds standards", "name_it": "Standard Heavy Assault Missiles", "name_ja": "標準型ヘビーアサルトミサイル", "name_ko": "일반 헤비 어썰트 미사일", "name_ru": "Стандартные", "name_zh": "标准重型攻击导弹", "nameID": 66229, "parentGroupID": 968 }, "972": { "description_de": "Schwere fortschrittliche Langstrecken-Angriffslenkwaffen.", "description_en-us": "Advanced long range heavy assault missiles.", "description_es": "Misiles de asalto pesados de largo alcance con tecnología avanzada.", "description_fr": "Missiles d'assaut lourds à longue portée avancée.", "description_it": "Advanced long range heavy assault missiles.", "description_ja": "高性能長距離ヘビーアサルトミサイル。", "description_ko": "장거리 헤비 어썰트 미사일", "description_ru": "Малогабаритные ракеты большой мощности, оснащённые усовершенствованными двигательными установками.", "description_zh": "高级远距重型攻击导弹。", "descriptionID": 65156, "hasTypes": 1, "iconID": 186, "name_de": "Fortschrittlich, Langstrecke", "name_en-us": "Advanced Long Range Heavy Assault Missiles", "name_es": "Misiles de asalto pesados de largo alcance avanzados", "name_fr": "Missiles d'assaut lourds à longue portée avancée", "name_it": "Advanced Long Range Heavy Assault Missiles", "name_ja": "高性能長距離ヘビーアサルトミサイル", "name_ko": "장거리 헤비 어썰트 미사일", "name_ru": "Высокоскоростные", "name_zh": "高级远距重型攻击导弹", "nameID": 66230, "parentGroupID": 968 }, "973": { "description_de": "Schwere fortschrittliche Anti-Schiff-Angriffslenkwaffen.", "description_en-us": "Advanced anti-ship heavy assault missiles.", "description_es": "Misiles de asalto pesados antinaves avanzados.", "description_fr": "Missiles d'assaut lourds anti-vaisseau à longue portée avancée.", "description_it": "Advanced anti-ship heavy assault missiles.", "description_ja": "高性能対艦特化型ヘビーアサルトミサイル。", "description_ko": "대함 헤비 어썰트 미사일입니다.", "description_ru": "Малогабаритные ракеты большой мощности, оснащённые усовершенствованными боевыми частями повышенной мощности.", "description_zh": "高级反舰重型攻击导弹。", "descriptionID": 65157, "hasTypes": 1, "iconID": 186, "name_de": "Fortschrittlich, Anti-Schiff", "name_en-us": "Advanced Anti-Ship Heavy Assault Missile", "name_es": "Misil de asalto pesado antinaves avanzado", "name_fr": "Missile d'assaut lourd anti-vaisseau avancé", "name_it": "Advanced Anti-Ship Heavy Assault Missile", "name_ja": "高性能対艦特化型ヘビーアサルトミサイル", "name_ko": "대함 헤비 어썰트 미사일", "name_ru": "Высокомощные", "name_zh": "高级反舰重型攻击导弹", "nameID": 66231, "parentGroupID": 968 }, "974": { "description_de": "Zum Abfeuern von Angriffsraketen.", "description_en-us": "For the launching of assault missiles.", "description_es": "Para lanzar misiles de asalto.", "description_fr": "Pour lancer des missiles d'assaut.", "description_it": "For the launching of assault missiles.", "description_ja": "アサルトミサイルの発射用。", "description_ko": "어썰트 미사일을 발사하는 런처입니다.", "description_ru": "Пусковые установки, предназначенные для пуска штурмовых ракет.", "description_zh": "重型攻击导弹发射器。", "descriptionID": 65112, "hasTypes": 1, "iconID": 3241, "name_de": "Schwere Angriffswerfer", "name_en-us": "Heavy Assault Launchers", "name_es": "Lanzamisiles de asalto pesados", "name_fr": "Lanceurs d’assaut lourds", "name_it": "Heavy Assault Launchers", "name_ja": "ヘビーアサルトランチャー", "name_ko": "헤비 어썰트 미사일 런처", "name_ru": "Тяжёлые штурмовые", "name_zh": "重型攻击导弹发射器", "nameID": 66186, "parentGroupID": 140 }, "975": { "description_de": "Blueprints von Schweren Angriffslenkwaffen.", "description_en-us": "Blueprints of heavy assault missiles.", "description_es": "Planos de misiles de asalto pesados.", "description_fr": "Plans de construction de missiles d'assaut lourds.", "description_it": "Blueprints of heavy assault missiles.", "description_ja": "ヘビーアサルトミサイルのブループリント。", "description_ko": "헤비 어썰트 미사일 블루프린트입니다.", "description_ru": "Чертежи тяжёлых ракет малой дальности.", "description_zh": "重型攻击导弹蓝图。", "descriptionID": 65079, "hasTypes": 1, "iconID": 2703, "name_de": "Schwere Angriffslenkwaffen", "name_en-us": "Heavy Assault Missiles", "name_es": "Misiles de asalto pesados", "name_fr": "Missiles d'assaut lourds", "name_it": "Heavy Assault Missiles", "name_ja": "ヘビーアサルトミサイル", "name_ko": "헤비 어썰트 미사일", "name_ru": "Тяжёлые штурмовые ракеты", "name_zh": "重型攻击导弹", "nameID": 66153, "parentGroupID": 314 }, "977": { "description_de": "Illegale Substanzen die temporäre Effekte, aber auch unschöne Nebenwirkungen bieten", "description_en-us": "Illegal substances that give temporary effects, but with adverse side-effects as well", "description_es": "Sustancias ilegales que conceden efectos temporales, pero con efectos secundarios adversos.", "description_fr": "Substances illégales qui produisent des effets temporaires, mais ayant également des effets secondaires indésirables", "description_it": "Illegal substances that give temporary effects, but with adverse side-effects as well", "description_ja": "一時的な効果とともに副作用もある違法な物質", "description_ko": "일시적인 효과를 불러일으키는 불법 약물로 부작용이 발생할 수 있습니다.", "description_ru": "Запрещённые препараты, позволяющие получить временные положительные эффекты с риском побочного действия", "description_zh": "可以提供临时性效果的非法物品,有较大的副作用", "descriptionID": 65066, "hasTypes": 0, "iconID": 3211, "name_de": "Booster", "name_en-us": "Booster", "name_es": "Potenciador", "name_fr": "Booster", "name_it": "Booster", "name_ja": "ブースター", "name_ko": "부스터", "name_ru": "Боевые стимуляторы", "name_zh": "增效剂", "nameID": 66140, "parentGroupID": 24 }, "979": { "description_de": "Permanente Veränderung der Projektilwaffeneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's projectile weapon facilities.", "description_es": "Modificación permanente de los sistemas de armas de proyectiles de una nave.", "description_fr": "Modification permanente des installations d'armes à projectiles d'un vaisseau.", "description_it": "Permanent modification of a ship's projectile weapon facilities.", "description_ja": "艦船のプロジェクタイル兵器施設の永久改造。", "description_ko": "함선 발사체 무기 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу огнестрельных орудий корабля.", "description_zh": "射弹武器永久性改装件。", "descriptionID": 65210, "hasTypes": 0, "iconID": 3201, "name_de": "Projektilwaffenmodifikationen", "name_en-us": "Projectile Weapon Rigs", "name_es": "Complementos de armas de proyectiles", "name_fr": "Modifications d’arme à projectile", "name_it": "Projectile Weapon Rigs", "name_ja": "プロジェクタイル兵器リグ", "name_ko": "발사체 무기 리그", "name_ru": "Модификаторы баллистического вооружения", "name_zh": "射弹武器改装件", "nameID": 66284, "parentGroupID": 1111 }, "983": { "description_de": "Riesige Wolken verschiedener Gase, die man im All antrifft.", "description_en-us": "Voluminous clouds of various gases that can be found in space.", "description_es": "Nubes voluminosas de varios gases presentes en el espacio.", "description_fr": "Immenses nuages flottant dans l'espace, composés de différents gaz.", "description_it": "Voluminous clouds of various gases that can be found in space.", "description_ja": "宇宙空間で見つかる様々なガスによる大きな雲。", "description_ko": "우주에서 발견되는 다양한 가스 성운입니다.", "description_ru": "В космосе можно найти огромные облака различных газов.", "description_zh": "可以在太空中找到的由各类气体构成的庞大气团。", "descriptionID": 65168, "hasTypes": 1, "iconID": 3220, "name_de": "Gaswolken-Booster", "name_en-us": "Booster Gas Clouds", "name_es": "Nubes de gas potenciador", "name_fr": "Nuages de gaz de boosters", "name_it": "Booster Gas Clouds", "name_ja": "ブースターガス資源", "name_ko": "부스터 가스", "name_ru": "Газы для производства стимуляторов", "name_zh": "增效剂气云", "nameID": 66242, "parentGroupID": 1032 }, "986": { "description_de": "Erweiterte Munition, entwickelt und produziert von den Fraktionen New Edens", "description_en-us": "Enhanced ammunition designed and manufactured by the factions of New Eden", "description_es": "Munición mejorada que han diseñado y fabricado las facciones de Nuevo Edén.", "description_fr": "Munitions perfectionnées conçues et produites par les factions de New Eden", "description_it": "Enhanced ammunition designed and manufactured by the factions of New Eden", "description_ja": "新エデンの勢力が設計し、製造した強化弾薬。", "description_ko": "뉴에덴 내 다양한 팩션들이 제작한 고성능 탄약입니다.", "description_ru": "Усовершенствованные боеприпасы, разработанные и произведенные различными фракциями New Eden для внутреннего использования.", "description_zh": "由新伊甸中各势力生产的加强型弹药。", "descriptionID": 65067, "hasTypes": 0, "iconID": 1288, "name_de": "Fraktionsmunition", "name_en-us": "Faction Ammo", "name_es": "Munición faccionaria", "name_fr": "Munitions de faction", "name_it": "Faction Ammo", "name_ja": "勢力別弾薬", "name_ko": "팩션 탄약", "name_ru": "Пиратские и армейские", "name_zh": "势力弹药", "nameID": 66141, "parentGroupID": 99 }, "987": { "description_de": "Große Fraktionsmunition für Kanonen der Schlachtschiff-Klasse.", "description_en-us": "Large faction ammunition, fired by battleship-sized guns.", "description_es": "Munición faccionaria de gran calibre apta para cañones de naves de tamaño acorazado.", "description_fr": "Munitions de faction de grande taille tirées, par exemple, par les canons des cuirassés.", "description_it": "Large faction ammunition, fired by battleship-sized guns.", "description_ja": "戦艦級銃砲で使用される勢力別の大型弾薬。", "description_ko": "대형 팩션 탄약으로 배틀쉽급 함포에서 사용됩니다.", "description_ru": "Фракционные боеприпасы для орудий большого калибра, устанавливаемых на линкоры.", "description_zh": "大型势力弹药,可以由战列舰级别的武器发射。", "descriptionID": 65135, "hasTypes": 1, "iconID": 1288, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66209, "parentGroupID": 986 }, "988": { "description_de": "Mittlere Fraktionsmunition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium faction ammunition, fired by cruiser-sized guns", "description_es": "Munición faccionaria de medio calibre apta para cañones de naves de tamaño crucero.", "description_fr": "Munitions de faction de taille intermédiaire tirées, par exemple, par les canons des croiseurs", "description_it": "Medium faction ammunition, fired by cruiser-sized guns", "description_ja": "巡洋艦級銃砲で使用される中型の勢力別弾薬。", "description_ko": "중형 팩션 탄약으로 크루저급 함포에서 사용됩니다.", "description_ru": "Фракционные боеприпасы среднего калибра для орудий, устанавливаемых на крейсеры.", "description_zh": "中型势力弹药,可以由巡洋舰级别的武器发射。", "descriptionID": 65136, "hasTypes": 1, "iconID": 1288, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66210, "parentGroupID": 986 }, "989": { "description_de": "Kleine Fraktions-Munition für Kanonen der Fregatten-Klasse.", "description_en-us": "Small faction ammunition, fired by frigate-sized guns", "description_es": "Munición faccionaria pequeña apta para cañones de naves de tamaño fragata.", "description_fr": "Munitions de faction de petite taille tirées, par exemple, par les canons des frégates", "description_it": "Small faction ammunition, fired by frigate-sized guns", "description_ja": "フリゲート級銃砲で使用される小型勢力別弾薬。", "description_ko": "소형 팩션 탄약으로 프리깃급 함선에서 사용됩니다.", "description_ru": "Фракционные боеприпасы для орудий малого калибра, устанавливаемых на фрегаты.", "description_zh": "小型势力弹药,可以由护卫舰级别的武器发射。", "descriptionID": 65137, "hasTypes": 1, "iconID": 1288, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66211, "parentGroupID": 986 }, "990": { "description_de": "Verbesserte Munition, erdacht und hergestellt von den Fraktionen New Edens", "description_en-us": "Enhanced ammunition designed and manufactured by the factions of New Eden", "description_es": "Munición mejorada que han diseñado y fabricado las facciones de Nuevo Edén.", "description_fr": "Munitions perfectionnées conçues et produites par les factions de New Eden", "description_it": "Enhanced ammunition designed and manufactured by the factions of New Eden", "description_ja": "新エデンの勢力が設計し、製造した強化弾薬。", "description_ko": "뉴에덴 내 다양한 팩션들이 제작한 고성능 탄약입니다.", "description_ru": "Усовершенствованные боеприпасы, разработанные и произведенные различными фракциями New Eden для внутреннего использования.", "description_zh": "由新伊甸中各个势力生产的加强型弹药。", "descriptionID": 65141, "hasTypes": 0, "iconID": 1313, "name_de": "Fraktionsmunition", "name_en-us": "Faction Charges", "name_es": "Cargas faccionarias", "name_fr": "Charges de faction", "name_it": "Faction Charges", "name_ja": "勢力別弾薬", "name_ko": "팩션 하이브리드탄", "name_ru": "Пиратские и армейские", "name_zh": "势力弹药", "nameID": 66215, "parentGroupID": 100 }, "991": { "description_de": "Große Faction-Issue-Hybridmunition für Kanonen der Schlachtschiff-Klasse.", "description_en-us": "Large faction issue hybrid shells, fired by battleship-sized guns.", "description_es": "Proyectiles híbridos faccionarios de gran calibre aptos para cañones de naves de tamaño acorazado.", "description_fr": "Obus hybrides de faction de grande taille tirés, par exemple, par les canons des cuirassés.", "description_it": "Large faction issue hybrid shells, fired by battleship-sized guns.", "description_ja": "戦艦級の銃砲で使用される勢力別仕様の大型ハイブリッド弾。", "description_ko": "대형 팩션 하이브리드 포탄으로 배틀쉽급 함포에서 사용되고 있습니다.", "description_ru": "Фракционные заряды для гибридных турелей большого калибра, устанавливаемых на линкоры.", "description_zh": "大型势力混合弹药,可以由战列舰级别的武器发射。", "descriptionID": 65140, "hasTypes": 1, "iconID": 1313, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66214, "parentGroupID": 990 }, "992": { "description_de": "Mittlere Faction-Issue-Hybridmunition für Kanonen der Kreuzer-Klasse.", "description_en-us": "Medium faction issue hybrid shells, fired by cruiser-sized guns.", "description_es": "Proyectiles híbridos faccionarios de medio calibre aptos para cañones de naves de tamaño crucero.", "description_fr": "Obus hybrides de faction de taille moyenne tirés, par exemple, par les canons des croiseurs.", "description_it": "Medium faction issue hybrid shells, fired by cruiser-sized guns.", "description_ja": "巡洋艦級銃砲で使用される勢力別仕様の中型ハイブリッド弾。", "description_ko": "중형 팩션 하이브리드 포탄으로 크루저급 함포에서 사용되고 있습니다.", "description_ru": "Фракционные гибридные снаряды среднего калибра для орудий, устанавливаемых на крейсеры.", "description_zh": "中型势力混合弹药,可以由巡洋舰级别的武器发射。", "descriptionID": 65142, "hasTypes": 1, "iconID": 1313, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66216, "parentGroupID": 990 }, "993": { "description_de": "Kleine Fraktions-Hybridmunition für Kanonen der Fregatten-Klasse.", "description_en-us": "Small faction issue hybrid shells, fired by frigate-sized guns.", "description_es": "Proyectiles híbridos faccionarios de pequeño calibre aptos para cañones de naves de tamaño fragata.", "description_fr": "Obus hybrides de faction de petite taille tirés, par exemple, par les canons des frégates.", "description_it": "Small faction issue hybrid shells, fired by frigate-sized guns.", "description_ja": "フリゲート級銃砲で使用される勢力別仕様の小型ハイブリッド弾。", "description_ko": "소형 팩션 하이브리드 포탄으로 프리깃급 함포에서 사용되고 있습니다.", "description_ru": "Фракционные гибридные боеприпасы для орудий малого калибра, устанавливаемых на фрегаты.", "description_zh": "小型势力混合弹药,可以由护卫舰级别的武器发射。", "descriptionID": 65143, "hasTypes": 1, "iconID": 1313, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66217, "parentGroupID": 990 }, "994": { "description_de": "Verbesserte Frequenzkristalle, erdacht und hergestellt von den Fraktionen New Edens", "description_en-us": "Enhanced frequenzy crystals designed and manufactured by the factions of New Eden", "description_es": "Cristales de frecuencia mejorados que han diseñado y fabricado las facciones de Nuevo Edén.", "description_fr": "Cristaux de fréquence perfectionnées conçus et produits par les factions de New Eden", "description_it": "Enhanced frequenzy crystals designed and manufactured by the factions of New Eden", "description_ja": "新エデンの勢力がが設計し、製造した強化フリーケンシークリスタル。", "description_ko": "뉴에덴 내 다양한 팩션들이 제작한 고성능 프리퀀시 크리스탈입니다.", "description_ru": "Усовершенствованные частотные кристаллы, разработанные и произведенные различными фракциями New Eden для внутреннего использования.", "description_zh": "由新伊甸中各个势力生产的加强型频率晶体。", "descriptionID": 65145, "hasTypes": 0, "iconID": 1141, "name_de": "Fraktionskristalle", "name_en-us": "Faction Crystals", "name_es": "Cristales faccionarios", "name_fr": "Cristaux de faction", "name_it": "Faction Crystals", "name_ja": "勢力別クリスタル", "name_ko": "팩션 크리스탈", "name_ru": "Пиратские и армейские", "name_zh": "势力晶体", "nameID": 66219, "parentGroupID": 101 }, "995": { "description_de": "Große Faction-Issue-Frequenzkristalle für Laser der Schlachtschiff-Klasse.", "description_en-us": "Large faction issue frequenzy crystals, for use with battleship-size lasers.", "description_es": "Cristales de frecuencia grandes creados por una facción para usarlos con láseres de tamaño acorazado.", "description_fr": "Grands cristaux de fréquence de faction utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Large faction issue frequenzy crystals, for use with battleship-size lasers.", "description_ja": "戦艦級レーザーで使用される勢力別仕様の大型フリーケンシークリスタル。", "description_ko": "대형 팩션 프리퀀시 크리스탈로 배틀쉽급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Фракционные кристаллы для лазеров большого калибра, устанавливаемых на линкоры.", "description_zh": "大型势力频率晶体,可以用于战列舰级别的激光器。", "descriptionID": 65146, "hasTypes": 1, "iconID": 1141, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66220, "parentGroupID": 994 }, "996": { "description_de": "Mittlere Faction-Issue-Frequenzkristalle für Schiffe der Kreuzer-Klasse.", "description_en-us": "Medium faction issue frequenzy crystals, for use with cruiser-size lasers.", "description_es": "Cristales de frecuencia medianos creados por una facción para usarlos con láseres de tamaño crucero.", "description_fr": "Cristaux de fréquence de faction de taille intermédiaire utilisés, par exemple, sur les lasers des cuirassés.", "description_it": "Medium faction issue frequenzy crystals, for use with cruiser-size lasers.", "description_ja": "巡洋艦級レーザーで使用される勢力別仕様の中型フリーケンシークリスタル。", "description_ko": "중형 팩션 프리퀀시 크리스탈로 크루저급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Фракционные частотные кристаллы для лазеров, устанавливаемых на крейсеры.", "description_zh": "中型势力频率晶体,可以用于巡洋舰级别的激光器。", "descriptionID": 65147, "hasTypes": 1, "iconID": 1141, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66221, "parentGroupID": 994 }, "997": { "description_de": "Kleine Faction-Issue-Frequenzkristalle für Laser der Fregatten-Klasse.", "description_en-us": "Small faction issue frequenzy crystals, for use with frigate-size lasers.", "description_es": "Cristales de frecuencia pequeños creados por una facción para usarlos con láseres de tamaño fragata.", "description_fr": "Petits cristaux de fréquence de faction de taille intermédiaire utilisés, par exemple, sur les lasers des frégates.", "description_it": "Small faction issue frequenzy crystals, for use with frigate-size lasers.", "description_ja": "フリゲート級レーザーで使用される小型の勢力別仕様フリーケンシークリスタル。", "description_ko": "소형 팩션 프리퀀시 크리스탈로 프리깃급 함선의 레이저 무기에서 사용되고 있습니다.", "description_ru": "Фракционные кристаллы для лазеров малого калибра, устанавливаемых на фрегаты.", "description_zh": "小型势力频率晶体,可以用于护卫舰级别的激光器。", "descriptionID": 65148, "hasTypes": 1, "iconID": 1141, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66222, "parentGroupID": 994 }, "998": { "description_de": "Faction Issue-leichte Raketen.", "description_en-us": "Faction issue light missiles.", "description_es": "Misiles ligeros de facción.", "description_fr": "Missiles légers de faction.", "description_it": "Faction issue light missiles.", "description_ja": "勢力別仕様のライトミサイル。", "description_ko": "팩션 라이트 미사일입니다.", "description_ru": "Легкие ракеты, производимые отдельными фракциями.", "description_zh": "势力轻型导弹。", "descriptionID": 65150, "hasTypes": 1, "iconID": 192, "name_de": "Fraktion", "name_en-us": "Faction Light Missiles", "name_es": "Misiles ligeros de facción", "name_fr": "Missiles légers de faction", "name_it": "Faction Light Missiles", "name_ja": "勢力別ライトミサイル", "name_ko": "팩션 라이트 미사일", "name_ru": "Пиратские и армейские", "name_zh": "势力轻型导弹", "nameID": 66224, "parentGroupID": 117 }, "999": { "description_de": "Faction Issue-Raketen.", "description_en-us": "Faction issue rockets.", "description_es": "Cohetes creados por las facciones.", "description_fr": "Roquettes de faction.", "description_it": "Faction issue rockets.", "description_ja": "勢力別仕様のロケット。", "description_ko": "팩션에서 제작한 로켓입니다.", "description_ru": "Ракеты ближнего боя, производимые отдельными фракциями.", "description_zh": "势力火箭。", "descriptionID": 65151, "hasTypes": 1, "iconID": 1352, "name_de": "Fraktion", "name_en-us": "Faction Rockets", "name_es": "Cohetes faccionarios", "name_fr": "Roquettes de faction", "name_it": "Faction Rockets", "name_ja": "勢力別ロケット", "name_ko": "팩션 로켓", "name_ru": "Пиратские и армейские", "name_zh": "势力火箭", "nameID": 66225, "parentGroupID": 118 }, "1000": { "description_de": "Faction Issue-Torpedos.", "description_en-us": "Faction issue torpedoes.", "description_es": "Torpedos creados por las facciones.", "description_fr": "Torpilles de faction.", "description_it": "Faction issue torpedoes.", "description_ja": "勢力別仕様のトルピード。", "description_ko": "팩션에서 제작한 토피도입니다.", "description_ru": "Торпеды, производимые отдельными фракциями.", "description_zh": "势力鱼雷。", "descriptionID": 65152, "hasTypes": 1, "iconID": 1349, "name_de": "Fraktion", "name_en-us": "Faction Torpedoes", "name_es": "Torpedos faccionarios", "name_fr": "Torpilles de faction", "name_it": "Faction Torpedoes", "name_ja": "勢力別トルピード", "name_ko": "팩션 토피도", "name_ru": "Пиратские и армейские", "name_zh": "势力鱼雷", "nameID": 66226, "parentGroupID": 387 }, "1001": { "description_de": "Faction Issue-Cruise Missiles.", "description_en-us": "Faction issue cruise missiles.", "description_es": "Misiles de crucero creados por las facciones.", "description_fr": "Missiles de croisière de faction.", "description_it": "Faction issue cruise missiles.", "description_ja": "勢力別仕様のクルーズミサイル。", "description_ko": "팩션에서 제작한 크루즈 미사일입니다.", "description_ru": "Фракционные ракеты дальнего боя.", "description_zh": "势力巡航导弹。", "descriptionID": 65153, "hasTypes": 1, "iconID": 184, "name_de": "Fraktion", "name_en-us": "Faction Cruise Missiles", "name_es": "Misiles de crucero faccionarios", "name_fr": "Missiles de croisière de faction", "name_it": "Faction Cruise Missiles", "name_ja": "勢力別クルーズミサイル", "name_ko": "팩션 크루즈 미사일", "name_ru": "Пиратские и армейские", "name_zh": "势力巡航导弹", "nameID": 66227, "parentGroupID": 580 }, "1002": { "description_de": "Faction Issue-schwere Raketen.", "description_en-us": "Faction issue heavy missiles.", "description_es": "Misiles pesados creados por las facciones.", "description_fr": "Missiles lourds de faction.", "description_it": "Faction issue heavy missiles.", "description_ja": "勢力別仕様のヘビーミサイル。", "description_ko": "팩션에서 제작한 헤비 미사일입니다.", "description_ru": "Тяжелые ракеты, производимые отдельными фракциями.", "description_zh": "势力重型导弹。", "descriptionID": 65154, "hasTypes": 1, "iconID": 186, "name_de": "Fraktion", "name_en-us": "Faction Heavy Missiles", "name_es": "Misiles pesados faccionarios", "name_fr": "Missiles lourds de faction", "name_it": "Faction Heavy Missiles", "name_ja": "勢力別ヘビーミサイル", "name_ko": "팩션 헤비 미사일", "name_ru": "Пиратские и армейские", "name_zh": "势力重型导弹", "nameID": 66228, "parentGroupID": 581 }, "1003": { "description_de": "Schwere fraktionsspezifische Angriffslenkwaffen.", "description_en-us": "Faction issue heavy assault missiles.", "description_es": "Misiles de asalto pesados creados por las facciones.", "description_fr": "Missiles d'assaut lourds de faction.", "description_it": "Faction issue heavy assault missiles.", "description_ja": "勢力別仕様のヘビーアサルトミサイル。", "description_ko": "팩션에서 제작한 헤비 어썰트 미사일입니다.", "description_ru": "Малогабаритные ракеты большой мощности, выпускаемые по заказу вооруженных сил государств галактики и различных пиратских организаций.", "description_zh": "势力重型攻击导弹。", "descriptionID": 65158, "hasTypes": 1, "iconID": 186, "name_de": "Fraktion", "name_en-us": "Faction Heavy Assault Missiles", "name_es": "Misiles de asalto pesados faccionarios", "name_fr": "Missiles d'assaut lourds de faction", "name_it": "Faction Heavy Assault Missiles", "name_ja": "勢力別ヘビーアサルトミサイル", "name_ko": "팩션 헤비 어썰트 미사일", "name_ru": "Пиратские и армейские", "name_zh": "势力重型攻击导弹", "nameID": 66232, "parentGroupID": 968 }, "1004": { "description_de": "Von Dreadnought-Kanonen und stationären Verteidigungssystemen abgefeuert.", "description_en-us": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_ja": "攻城艦級銃砲および常備防衛軍システムから発射される。", "description_ko": "드레드노트급 함포 및 고정 방어 시스템에서 사용합니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "由无畏舰级别武器或者固定防御系统发射。", "descriptionID": 65139, "hasTypes": 1, "iconID": 1313, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66213, "parentGroupID": 990 }, "1006": { "description_de": "Von Dreadnought-Kanonen und stationären Verteidigungssystemen abgefeuert.", "description_en-us": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_ja": "攻城艦級銃砲および常備防衛軍システムから発射される。", "description_ko": "드레드노트급 함포 및 고정 방어 시스템에서 사용합니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "由无畏舰级别武器或者固定防御系统发射。", "descriptionID": 65138, "hasTypes": 1, "iconID": 1288, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66212, "parentGroupID": 986 }, "1007": { "description_de": "Faction-Issue-Frequenz-Kristalle für Dreadnought-Laser und stationäre Verteidigungssysteme.", "description_en-us": "Faction issue frequenzy crystals for use with dreadnought-sized lasers and stationary defense systems.", "description_es": "Cristales de frecuencia faccionarios para usarlos con láseres de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Cristaux de fréquence de faction utilisés, par exemple, sur les canons des dreadnoughts et sur les systèmes de défense stationnaires.", "description_it": "Faction issue frequenzy crystals for use with dreadnought-sized lasers and stationary defense systems.", "description_ja": "攻城艦級レーザーおよび固定型防衛システムで使用される勢力別仕様のフリーケンシークリスタル。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 레이저의 팩션 프리퀀시 크리스탈입니다.", "description_ru": "Фракционные частотные кристаллы для лазеров дредноутов и стационарных оборонительных систем.", "description_zh": "无畏舰级别武器或者固定防御系统所使用的势力频率晶体。", "descriptionID": 65149, "hasTypes": 1, "iconID": 1141, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 66223, "parentGroupID": 994 }, "1008": { "description_de": "Blueprints für Frachtcontainer.", "description_en-us": "Blueprints of Cargo Containers.", "description_es": "Planos de contenedores de carga.", "description_fr": "Plans de construction de conteneurs de fret.", "description_it": "Blueprints of Cargo Containers.", "description_ja": "カーゴコンテナのブループリント。", "description_ko": "화물 컨테이너 블루프린트입니다.", "description_ru": "Чертежи грузовых контейнеров.", "description_zh": "货柜蓝图。", "descriptionID": 65301, "hasTypes": 1, "iconID": 2703, "name_de": "Frachtcontainer", "name_en-us": "Cargo Containers", "name_es": "Contenedores de carga", "name_fr": "Conteneurs de fret", "name_it": "Cargo Containers", "name_ja": "カーゴコンテナ", "name_ko": "화물 컨테이너", "name_ru": "Грузовые контейнеры", "name_zh": "货柜", "nameID": 66375, "parentGroupID": 406 }, "1009": { "description_de": "Ein Starbase-Areal, das den Energiespeicher feindlicher Schiffe im Gebiet neutralisiert.", "description_en-us": "A starbase array designed to neutralize the capacitor of hostile ships in the area.", "description_es": "Disposición de una base estelar diseñada para neutralizar el condensador de las naves hostiles del perímetro.", "description_fr": "Module de base stellaire visant à neutraliser le capaciteur des vaisseaux hostiles du secteur.", "description_it": "A starbase array designed to neutralize the capacitor of hostile ships in the area.", "description_ja": "エリア内にいる敵対する艦船のキャパシタを無効化するスターベース施設。", "description_ko": "범위 내 적 함선의 캐패시터를 무력하기 위해 건설된 스타베이스 시설입니다.", "description_ru": "Стационарные элементы звездных баз, созданные для нейтрализации конденсаторов кораблей противника.", "description_zh": "用来中和附近敌对舰船能量的母星阵列。", "descriptionID": 65234, "hasTypes": 1, "iconID": 2222, "name_de": "Energieneutralisierungsbatterien", "name_en-us": "Energy Neutralization Batteries", "name_es": "Baterías de neutralización de energía", "name_fr": "Batteries de neutralisation d'énergie", "name_it": "Energy Neutralization Batteries", "name_ja": "エネルギーニュートラライゼーション砲台", "name_ko": "에너지 뉴트럴라이제이션 포탑", "name_ru": "Стационарные нейтрализаторы заряда накопителей", "name_zh": "能量中和炮塔", "nameID": 66308, "parentGroupID": 480 }, "1010": { "description_de": "Eine systemumspannende Einrichtung zur Informationsgewinnung.", "description_en-us": "A system-wide intelligence gathering array.", "description_es": "Red de recopilación de datos de todo un sistema.", "description_fr": "Module collectant les renseignements de tout le système.", "description_it": "A system-wide intelligence gathering array.", "description_ja": "システム全体の情報を収集する施設。", "description_ko": "항성계 내 정보를 수집할 수 있는 시설입니다.", "description_ru": "Структура, предназначенная для сбора и анализа сведений в рамках звездной системы.", "description_zh": "恒星系范围的情报收集阵列。", "descriptionID": 65235, "hasTypes": 1, "iconID": 2222, "name_de": "Systemscananlage", "name_en-us": "System Scanning Array", "name_es": "Red de escaneo de sistemas", "name_fr": "Module de balayage système", "name_it": "System Scanning Array", "name_ja": "システムスキャンアレイ", "name_ko": "항성계 스캔 시설", "name_ru": "Блоки системной разведки", "name_zh": "星系扫描阵列", "nameID": 66309, "parentGroupID": 1285 }, "1011": { "description_de": "Eine Lichtbrücke, welche die kalte Leere zwischen den Sternen überspannt.", "description_en-us": "A bridge of light, spanning the cold and empty void between the stars.", "description_es": "Un puente de luz que salva el frío vacío del universo sideral.", "description_fr": "Passerelle lumineuse traversant le vide froid dans lequel sont plongés les étoiles.", "description_it": "A bridge of light, spanning the cold and empty void between the stars.", "description_ja": "星の間の冷たく空虚な空間に広がる光の橋。", "description_ko": "항성계 사이의 방대한 빈 공간 사이를 빠르게 이동할 수 있는 점프 브릿지입니다.", "description_ru": "Световой мост, пересекающий ледяную бездну меж звездами.", "description_zh": "一束遥远的光芒,跨越寒冷空寂的宇宙。", "descriptionID": 65236, "hasTypes": 1, "iconID": 2222, "name_de": "Sprungbrücke", "name_en-us": "Jump Bridge", "name_es": "Puente de salto", "name_fr": "Pont hyperspatial", "name_it": "Jump Bridge", "name_ja": "ジャンプブリッジ", "name_ko": "점프 브릿지", "name_ru": "Генераторы гипермостов", "name_zh": "跳跃桥接", "nameID": 66310, "parentGroupID": 1285 }, "1012": { "description_de": "Der Riegel und Schlüssel zum lichtgeführten Verkehr in jedem System.", "description_en-us": "The lock and key to a system's highway of cynosural passage.", "description_es": "La clave para controlar el tráfico cinosural de un sistema.", "description_fr": "Clé ouvrant la voie rapide d'un passage cynosural d'un système.", "description_it": "The lock and key to a system's highway of cynosural passage.", "description_ja": "サイノシュラル移動を行うシステムハイウェイへの錠と鍵。", "description_ko": "항성계 내 모든 사이노슈럴 활동을 제어할 수 있는 시설입니다.", "description_ru": "Замок и ключ для путеводных трасс в системе.", "description_zh": "诱导力场的障碍。", "descriptionID": 65237, "hasTypes": 1, "iconID": 2222, "name_de": "Anziehungssystem-Jammer", "name_en-us": "Cynosural System Jammer", "name_es": "Perturbador cinosural de sistemas", "name_fr": "Brouilleur de système cynosural", "name_it": "Cynosural System Jammer", "name_ja": "サイノシュラルシステムジャマー", "name_ko": "사이노슈럴 시스템 재머", "name_ru": "Генераторы помех приводным маякам", "name_zh": "诱导力场系统干扰器", "nameID": 66311, "parentGroupID": 1285 }, "1013": { "description_de": "Ein Leuchtturm im Meer des Nichts, der mit seinem Anziehungslicht weitab operierende Schiffe lotst.", "description_en-us": "A lighthouse in the sea of nothing, casting its cynosural light out to far-off ships.", "description_es": "Un faro en el mar de la nada que emite su luz cinosural hacia naves lejanas.", "description_fr": "Phare dans la mer du néant, émettant sa lumière cynosurale vers les vaisseaux au loin.", "description_it": "A lighthouse in the sea of nothing, casting its cynosural light out to far-off ships.", "description_ja": "何もない海に向かって、遠くの船からも見えるように光を投げかける灯台。", "description_ko": "우주의 어둠 속에서 사이노슈럴 광선으로 항로를 밝혀주는 등대입니다.", "description_ru": "Маяк среди океана пустоты, манящий далекие корабли своим путеводным огнем.", "description_zh": "黑暗中的灯塔,将诱导力场投向遥远的舰队。", "descriptionID": 65238, "hasTypes": 1, "iconID": 2222, "name_de": "Anziehungsgeneratoranlage", "name_en-us": "Cynosural Generator Array", "name_es": "Sistemas generadores cinosurales", "name_fr": "Module de génération cynosurale", "name_it": "Cynosural Generator Array", "name_ja": "サイノシュラル生成施設", "name_ko": "사이노슈럴 생성기", "name_ru": "Стационарные приводные маяки", "name_zh": "诱导力场发生阵列", "nameID": 66312, "parentGroupID": 1285 }, "1014": { "description_de": "Große Bombenwerfer für Tarnbomber zur Platzierung von Bomben.", "description_en-us": "Large launchers, designed for stealth bombers for bomb deployment.", "description_es": "Lanzadores de gran calibre diseñados para desplegar bombas desde bombarderos sigilosos.", "description_fr": "Grands lanceurs, conçus pour le déploiement de bombes par des bombardiers.", "description_it": "Large launchers, designed for stealth bombers for bomb deployment.", "description_ja": "ステルス爆撃艦が爆弾を発射するための大型ランチャー。", "description_ko": "스텔 폭격기에 탑재되는 대형 런처입니다.", "description_ru": "Большие пусковые установки, предназначенные для использования на малозаметных бомбардировщиках.", "description_zh": "大型发射器,专为投放炸弹的隐形轰炸舰设计。", "descriptionID": 65113, "hasTypes": 1, "iconID": 2677, "name_de": "Bombenwerfer", "name_en-us": "Bomb Launchers", "name_es": "Lanzabombas", "name_fr": "Lanceurs de bombes", "name_it": "Bomb Launchers", "name_ja": "ボムランチャー", "name_ko": "폭탄 런처", "name_ru": "Бомбомёты", "name_zh": "炸弹发射器", "nameID": 66187, "parentGroupID": 10 }, "1015": { "description_de": "Große Flächenwaffen, die von Tarnbombern genutzt werden.", "description_en-us": "Large, area of effect weapons, used by stealth bombers", "description_es": "Armas con radio de acción y gran calibre para bombarderos sigilosos.", "description_fr": "Grandes armes à zone d'effet, utilisées par les bombardiers furtifs", "description_it": "Large, area of effect weapons, used by stealth bombers", "description_ja": "ステルス爆撃機が使用する大型の範囲攻撃兵器", "description_ko": "스텔스 폭격기에서 사용하는 광역 타격 무기입니다.", "description_ru": "Мощное оружие с большой площадью поражения, используемое ударно-диверсионными бомбардировщиками", "description_zh": "大型范围效果武器,供隐形轰炸舰使用", "descriptionID": 65159, "hasTypes": 1, "iconID": 3281, "name_de": "Bomben", "name_en-us": "Bombs", "name_es": "Bombas", "name_fr": "Bombes", "name_it": "Bombs", "name_ja": "ボム", "name_ko": "폭탄", "name_ru": "Бомбы", "name_zh": "炸弹", "nameID": 66233, "parentGroupID": 11 }, "1016": { "description_de": "Blueprints von Bomben.", "description_en-us": "Blueprints of bombs.", "description_es": "Planos de bombas.", "description_fr": "Plans de construction de bombes.", "description_it": "Blueprints of bombs.", "description_ja": "爆弾のブループリント。", "description_ko": "폭탄 블루프린트입니다.", "description_ru": "Чертежи бомб.", "description_zh": "炸弹蓝图。", "descriptionID": 65080, "hasTypes": 1, "iconID": 2703, "name_de": "Bomben", "name_en-us": "Bombs", "name_es": "Bombas", "name_fr": "Bombes", "name_it": "Bombs", "name_ja": "ボム", "name_ko": "폭탄", "name_ru": "Бомбы", "name_zh": "炸弹", "nameID": 66154, "parentGroupID": 211 }, "1018": { "description_de": "Reparieren Sie die Hüllen Ihrer Verbündeten in Reichweite - immer praktisch, wenn es einmal wieder ziemlich eng geworden ist.", "description_en-us": "Repair the hulls of your allies at range, always handy after those close call situations.", "description_es": "Repara a distancia el casco de tus aliados, siempre útil después de vivir situaciones peliagudas.", "description_fr": "Réparent les coques de vos alliés à portée, très pratique pour les situations critiques.", "description_it": "Repair the hulls of your allies at range, always handy after those close call situations.", "description_ja": "範囲内にいる味方の艦船の船体を修理する。危機的な状況には欠かせない。", "description_ko": "원격 선체수리는 위급한 상황에서 많은 도움이 됩니다.", "description_ru": "Ремонтирует корпус союзного корабля на расстоянии, что бывает весьма полезно в пылу боя.", "description_zh": "为你的盟友维修受损的舰体结构,是危急时刻过后的好帮手。", "descriptionID": 65125, "hasTypes": 0, "iconID": 80, "name_de": "Rumpf-Fernreparatursysteme", "name_en-us": "Remote Hull Repairers", "name_es": "Reparadores de casco remotos", "name_fr": "Réparateurs de coque à distance", "name_it": "Remote Hull Repairers", "name_ja": "リモート船体リペアラ", "name_ko": "원격 선체수리 장치", "name_ru": "Установки дистанционного ремонта корпуса", "name_zh": "远程结构维修器", "nameID": 66199, "parentGroupID": 14 }, "1019": { "description_de": "Blueprints von Bombenwerfern.", "description_en-us": "Blueprints of bomb launchers.", "description_es": "Planos de lanzabombas.", "description_fr": "Plans de construction de lance-bombes.", "description_it": "Blueprints of bomb launchers.", "description_ja": "爆弾ランチャーのブループリント。", "description_ko": "폭탄 런처 블루프린트입니다.", "description_ru": "Чертежи бомбометов.", "description_zh": "炸弹发射器蓝图。", "descriptionID": 65078, "hasTypes": 1, "iconID": 2703, "name_de": "Bombenwerfer", "name_en-us": "Bomb Launchers", "name_es": "Lanzabombas", "name_fr": "Lanceurs de bombes", "name_it": "Bomb Launchers", "name_ja": "ボムランチャー", "name_ko": "폭탄 런처", "name_ru": "Бомбомёты", "name_zh": "炸弹发射器", "nameID": 66152, "parentGroupID": 210 }, "1021": { "description_de": "Komponenten für Außenposten, die glorreichen Zentren der Gemeinschaft.", "description_en-us": "Components to those glorious centers of community, outposts.", "description_es": "Componentes de los puestos avanzados, centros gloriosos de la comunidad.", "description_fr": "Composants de ces centres communautaires glorieux, les avant-postes.", "description_it": "Components to those glorious centers of community, outposts.", "description_ja": "コミュニティの華やかな中心であるアウトポスト用の部品。", "description_ko": "모든 우주개척 활동의 핵심을 맡고 있는 전초기지의 부품입니다.", "description_ru": "Компоненты для форпостов, прославленных центров цивилизации.", "description_zh": "哨站所使用的组件。", "descriptionID": 65173, "hasTypes": 0, "iconID": 3303, "name_de": "Außenposten-Komponenten", "name_en-us": "Outpost Components", "name_es": "Componentes de puestos avanzados", "name_fr": "Composants d'avant-poste", "name_it": "Outpost Components", "name_ja": "アウトポスト部品", "name_ko": "전초기지 부품", "name_ru": "Компоненты форпостов", "name_zh": "哨站组件", "nameID": 66247, "parentGroupID": 1035 }, "1022": { "hasTypes": 0, "iconID": 3303, "name_de": "Verbesserungsplattformen", "name_en-us": "Improvement Platforms", "name_es": "Plataformas de mejora", "name_fr": "Plateformes d'amélioration", "name_it": "Improvement Platforms", "name_ja": "専用プラットフォーム", "name_ko": "확장 플랫폼", "name_ru": "Расширения форпостов", "name_zh": "强化平台", "nameID": 66248, "parentGroupID": 1021 }, "1027": { "description_de": "Verbesserungsplattformen für Außenposten als Ausgangspunkt weiterer Upgrades.", "description_en-us": "Upgrade platforms for outposts, intended as a base for further improvements.", "description_es": "Plataformas de mejora diseñadas para los puestos avanzados que sirven de base para futuras mejoras.", "description_fr": "Plateformes d'amélioration des avant-postes servant de base aux mises à niveau à venir.", "description_it": "Upgrade platforms for outposts, intended as a base for further improvements.", "description_ja": "アウトポスト強化設備プラットフォーム。更なる改良の基礎として使用する。", "description_ko": "전초기지를 위한 업그레이드 플랫폼으로 이 시설 위에 추가로 설치할 수 있습니다.", "description_ru": "Модули расширения станции — основа для дальнейшего развития путем установки усовершенствованных блоков.", "description_zh": "哨站使用的升级平台,作为开展升级工作的基础平台。", "descriptionID": 65178, "hasTypes": 1, "iconID": 3303, "name_de": "Außenposten-Upgradeplattformen", "name_en-us": "Outpost Upgrade Platforms", "name_es": "Plataformas de mejora de puestos avanzados", "name_fr": "Plateformes d'amélioration d'avant-poste", "name_it": "Outpost Upgrade Platforms", "name_ja": "アウトポスト強化設備プラットフォーム", "name_ko": "전초기지 업그레이드 플랫폼", "name_ru": "Платформы форпостов", "name_zh": "哨站升级平台", "nameID": 66252, "parentGroupID": 1021 }, "1028": { "description_de": "Blaupausen leichter Jäger-Designs.", "description_en-us": "Blueprints of light fighter designs.", "description_es": "Planos de diseños de cazas ligeros.", "description_fr": "Plans de construction de modèles de chasseurs légers.", "description_it": "Blueprints of light fighter designs.", "description_ja": "軽量級戦闘機のブループリント。", "description_ko": "라이트 파이터 블루프린트입니다.", "description_ru": "Чертежи лёгких истребителей.", "description_zh": "轻型铁骑舰载机设计蓝图。", "descriptionID": 65082, "hasTypes": 1, "iconID": 2703, "name_de": "Leichte Jäger", "name_en-us": "Light Fighters", "name_es": "Cazas ligeros", "name_fr": "Chasseurs léger", "name_it": "Light Fighters", "name_ja": "軽量級戦闘機", "name_ko": "라이트 파이터", "name_ru": "Лёгкие истребители", "name_zh": "轻型铁骑舰载机", "nameID": 66156, "parentGroupID": 2237 }, "1029": { "description_de": "Blueprints von Designs von Drohnen zur elektronischen Kriegsführung.", "description_en-us": "Blueprints of electronic warfare drone designs.", "description_es": "Planos de diseños de drones de guerra electrónica.", "description_fr": "Plans de construction de drones de guerre électronique.", "description_it": "Blueprints of electronic warfare drone designs.", "description_ja": "電子戦用ドローン設計図のブループリント。", "description_ko": "전자전 드론 블루프린트입니다.", "description_ru": "Чертежи дронов электронного противодействия.", "description_zh": "电子战无人机蓝图", "descriptionID": 65083, "hasTypes": 1, "iconID": 2703, "name_de": "Drohnen zur elektronischen Kriegsführung", "name_en-us": "Electronic Warfare Drones", "name_es": "Drones de guerra electrónica", "name_fr": "Drones de guerre électronique", "name_it": "Electronic Warfare Drones", "name_ja": "電子戦ドローン", "name_ko": "전자전 드론", "name_ru": "Дроны РЭБ", "name_zh": "电子战无人机", "nameID": 66157, "parentGroupID": 357 }, "1030": { "description_de": "Blueprints für Versorgungsdrohnen-Designs.", "description_en-us": "Blueprints of logistics drone designs.", "description_es": "Planos de diseños de drones logísticos.", "description_fr": "Plans de construction de drones d'assistance.", "description_it": "Blueprints of logistics drone designs.", "description_ja": "支援専門ドローン設計図のブループリント。", "description_ko": "로지스틱스 드론 블루프린트입니다.", "description_ru": "Чертежи ремонтных дронов.", "description_zh": "后勤无人机蓝图", "descriptionID": 65084, "hasTypes": 1, "iconID": 2703, "name_de": "Versorgungsdrohnen", "name_en-us": "Logistic Drones", "name_es": "Drones logísticos", "name_fr": "Drones d'assistance", "name_it": "Logistic Drones", "name_ja": "支援専門ドローン", "name_ko": "로지스틱스 드론", "name_ru": "Ремонтные дроны", "name_zh": "后勤无人机", "nameID": 66158, "parentGroupID": 357 }, "1031": { "description_de": "Der Stoff, aus dem New Eden gebaut ist.", "description_en-us": "The building blocks of New Eden.", "description_es": "Los pilares básicos de Nuevo Edén.", "description_fr": "Blocs de construction de New Eden.", "description_it": "The building blocks of New Eden.", "description_ja": "新エデンの建築素材。", "description_ko": "뉴에덴 경제의 근간이 되는 재료 및 자원입니다.", "description_ru": "Строительные материалы Нового Эдема.", "description_zh": "新伊甸的基础建设物资。", "descriptionID": 65166, "hasTypes": 0, "iconID": 1277, "name_de": "Rohstoffe", "name_en-us": "Raw Materials", "name_es": "Materias primas", "name_fr": "Matières premières", "name_it": "Raw Materials", "name_ja": "原料", "name_ko": "원재료", "name_ru": "Сырьевые материалы", "name_zh": "原材料", "nameID": 66240, "parentGroupID": 533 }, "1032": { "description_de": "Riesige Wolken verschiedener Gase, die man im All antrifft. Die Gase können extrahiert und zur Herstellung biochemischer Booster verwendet werden.", "description_en-us": "Voluminous clouds of various gases, found in space, that can be extracted and used in the manufacturing of biochemical boosters.", "description_es": "Nubes voluminosas de varios gases presentes en el espacio que pueden extraerse y usarse en la fabricación de potenciadores bioquímicos.", "description_fr": "Immenses nuages flottant dans l'espace dont les différents gaz peuvent être récupérés et utilisés pour la production de boosters biochimiques.", "description_it": "Voluminous clouds of various gases, found in space, that can be extracted and used in the manufacturing of biochemical boosters.", "description_ja": "宇宙で見つかる様々なガスの大きな雲。ここから抽出したものは、バイオケミカルブースターの製造に使用される。", "description_ko": "우주에서 발견되는 다양한 가스 성운입니다. 추출되는 자원으로부터 생화학 부스터를 제작할 수 있습니다.", "description_ru": "Вещества, содержащиеся в космических газовых облаках, можно собирать и использовать для производства биохимических бустеров.", "description_zh": "可以在太空中找到的多种气团,通过加工可以用于生化增效剂的生产。", "descriptionID": 65167, "hasTypes": 0, "iconID": 3219, "name_de": "Gaswolken-Materialien", "name_en-us": "Gas Clouds Materials", "name_es": "Materiales de nubes de gas", "name_fr": "Matériaux de nuages de gaz", "name_it": "Gas Clouds Materials", "name_ja": "ガス雲資源", "name_ko": "가스 성운", "name_ru": "Продукты переработки газа", "name_zh": "气云材料", "nameID": 66241, "parentGroupID": 533 }, "1033": { "description_de": "Eis-Isotope, die von Eisasteroiden abgebaut wurden.", "description_en-us": "Ice isotopes harvested from ice asteroids.", "description_es": "Isótopos de hielo recogidos de los asteroides de hielo.", "description_fr": "Isotopes de glace collectés sur les astéroïdes de glace.", "description_it": "Ice isotopes harvested from ice asteroids.", "description_ja": "アイスアステロイドから採掘されたアイス同位体。", "description_ko": "아이스 동위원소는 아이스 소행성에서 추출할 수 있습니다.", "description_ru": "Изотопы льда, добываемые из ледяных астероидов", "description_zh": "从冰矿小行星带中采集到的冰矿同位素。", "descriptionID": 65170, "hasTypes": 1, "iconID": 2697, "name_de": "Eisprodukte", "name_en-us": "Ice Products", "name_es": "Productos de hielo", "name_fr": "Produits glaciaires", "name_it": "Ice Products", "name_ja": "アイス精錬品", "name_ko": "아이스 생산품", "name_ru": "Продукты переработки льда", "name_zh": "冰矿产物", "nameID": 66244, "parentGroupID": 533 }, "1034": { "description_de": "Die verschiedenen Rohstoffe, die auf den Monden New Edens abgebaut werden.", "description_en-us": "The various types of raw materials harvested from the moons of New Eden.", "description_es": "Los diversos tipos de materias primas cosechadas en las lunas de Nuevo Edén.", "description_fr": "Divers types de matières premières collectées sur les lunes de New Eden.", "description_it": "The various types of raw materials harvested from the moons of New Eden.", "description_ja": "新エデンの衛星から採掘される様々な原料。", "description_ko": "뉴에덴의 위성에서 추출할 수 있는 다양한 종류의 자원입니다.", "description_ru": "Различные сырьевые материалы, добываемые на лунах Нового Эдема.", "description_zh": "从卫星上采集的各种原始材料。", "descriptionID": 65171, "hasTypes": 0, "iconID": 2567, "name_de": "Reaktionsmaterialien", "name_en-us": "Reaction Materials", "name_es": "Materiales de reacción", "name_fr": "Matériaux de réaction", "name_it": "Reaction Materials", "name_ja": "化合資源", "name_ko": "반응식 재료", "name_ru": "Материалы реакций", "name_zh": "反应材料", "nameID": 66245, "parentGroupID": 533 }, "1035": { "description_de": "Komponenten sind hergestellte Gegenstände, die für verschiedene Industrieaktivitäten benutzt werden.", "description_en-us": "Components are manufactured items used in various industry activities", "description_es": "Los componentes son objetos fabricados en diversas actividades industriales.", "description_fr": "Les composants sont des objets manufacturés utilisés dans diverses activités industrielles", "description_it": "Components are manufactured items used in various industry activities", "description_ja": "様々な商業活動に役立つ製品である部品", "description_ko": "다양한 산업 분야에 사용되는 부품입니다.", "description_ru": "Серийно произведенные компоненты, необходимые для производственной деятельности", "description_zh": "组件是在各种工业活动中使用的制造物品", "descriptionID": 65172, "hasTypes": 0, "iconID": 1436, "name_de": "Komponenten", "name_en-us": "Components", "name_es": "Componentes", "name_fr": "Composants", "name_it": "Components", "name_ja": "部品", "name_ko": "부품", "name_ru": "Компоненты", "name_zh": "组件", "nameID": 66246, "parentGroupID": 475 }, "1037": { "description_de": "Designs für Gaswolken-Schaufeln.", "description_en-us": "Gas cloud scoops designs.", "description_es": "Diseños de succionadores de nubes de gas.", "description_fr": "Modèles de récupérateurs de nuages de gaz.", "description_it": "Gas cloud scoops designs.", "description_ja": "ガス雲スクープ設計図", "description_ko": "가스 수집기 모듈", "description_ru": "Газочерпатели.", "description_zh": "气云回收装备。", "descriptionID": 65108, "hasTypes": 1, "iconID": 3074, "name_de": "Gaswolken-Schaufeln", "name_en-us": "Gas Cloud Scoops", "name_es": "Succionadores de nubes de gas", "name_fr": "Récupérateurs de nuages de gaz", "name_it": "Gas Cloud Scoops", "name_ja": "ガス雲スクープ", "name_ko": "가스 수집기", "name_ru": "Газочерпатели", "name_zh": "气云回收", "nameID": 66182, "parentGroupID": 1713 }, "1038": { "description_de": "Ice Harvester-Designs.", "description_en-us": "Ice harvester designs.", "description_es": "Diseños de cosechadoras de hielo.", "description_fr": "Modèles de collecteurs de glace.", "description_it": "Ice harvester designs.", "description_ja": "アイス採掘機設計図。", "description_ko": "아이스 채굴기입니다.", "description_ru": "Чертежи экстракторов льда.", "description_zh": "冰矿采集器设计。", "descriptionID": 65109, "hasTypes": 1, "iconID": 2526, "name_de": "Eisschürfer", "name_en-us": "Ice Harvesters", "name_es": "Cosechadoras de hielo", "name_fr": "Collecteurs de glace", "name_it": "Ice Harvesters", "name_ja": "アイス採掘機", "name_ko": "아이스 채굴기", "name_ru": "Установки для бурения льда", "name_zh": "冰矿采集器", "nameID": 66183, "parentGroupID": 1713 }, "1039": { "description_de": "Bergbaulaser-Designs.", "description_en-us": "Mining laser designs.", "description_es": "Diseños de láseres mineros.", "description_fr": "Modèles de lasers d'extraction.", "description_it": "Mining laser designs.", "description_ja": "採掘レーザー設計図。", "description_ko": "채굴 레이저입니다.", "description_ru": "Различные модели экстракторов.", "description_zh": "采矿激光器设计。", "descriptionID": 65110, "hasTypes": 1, "iconID": 1061, "name_de": "Bergbaulaser", "name_en-us": "Mining Lasers", "name_es": "Láseres mineros", "name_fr": "Lasers d’extraction", "name_it": "Mining Lasers", "name_ja": "採掘レーザー", "name_ko": "채굴 레이저", "name_ru": "Буровые лазеры", "name_zh": "采矿激光器", "nameID": 66184, "parentGroupID": 1713 }, "1040": { "description_de": "Strip Miner-Designs.", "description_en-us": "Strip miner designs.", "description_es": "Diseños de extractores mineros.", "description_fr": "Modèles de lasers d'extraction minière.", "description_it": "Strip miner designs.", "description_ja": "ストリップマイナー設計図。", "description_ko": "가속 채굴기입니다.", "description_ru": "Чертежи экстракторов полной выработки.", "description_zh": "露天采矿器设计", "descriptionID": 65111, "hasTypes": 1, "iconID": 2527, "name_de": "Oberflächen-Bergbaulaser", "name_en-us": "Strip Miners", "name_es": "Extractores mineros", "name_fr": "Lasers d'extraction intensive", "name_it": "Strip Miners", "name_ja": "ストリップマイナー", "name_ko": "가속 채굴기", "name_ru": "Буровые лазеры валовой выемки", "name_zh": "露天采矿器", "nameID": 66185, "parentGroupID": 1713 }, "1041": { "description_de": "Blaupausen für Gegenstände, die für Fertigungs- und Forschungsabläufe eingesetzt werden", "description_en-us": "Blueprints of items used for manufacturing and research processes", "description_es": "Planos de objetos usados para procesos de fabricación e investigación.", "description_fr": "Plans de construction d'objets utilisés dans les processus de fabrication et de recherche", "description_it": "Blueprints of items used for manufacturing and research processes", "description_ja": "製造および研究の際に使用するアイテムのブループリント", "description_ko": "제조 및 연구 작업에 사용되는 블루프린트입니다.", "description_ru": "Чертежи компонентов, используемых в производстве и исследованиях", "description_zh": "用于制造及研究项目的物品的蓝图", "descriptionID": 65068, "hasTypes": 0, "iconID": 2703, "name_de": "Fertigung & Forschung", "name_en-us": "Manufacture & Research", "name_es": "Fabricación e investigación", "name_fr": "Fabrication et recherche", "name_it": "Manufacture & Research", "name_ja": "生産と研究", "name_ko": "제조 및 연구", "name_ru": "Промышленные комплектующие", "name_zh": "制造和研究", "nameID": 66142, "parentGroupID": 2 }, "1045": { "description_de": "Blueprints für Capital Industrial Ships.", "description_en-us": "Blueprints of Capital Industrial Ships.", "description_es": "Planos de naves industriales capitales.", "description_fr": "Plans de construction de vaisseaux industriel capitaux.", "description_it": "Blueprints of Capital Industrial Ships.", "description_ja": "採掘支援母艦のブループリント。", "description_ko": "캐피탈 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи кораблей большого тоннажа (КБТ).", "description_zh": "旗舰级工业舰蓝图。", "descriptionID": 65297, "hasTypes": 0, "iconID": 2703, "name_de": "Capital-Industrieschiffe", "name_en-us": "Capital Industrial Ships", "name_es": "Naves industriales capitales", "name_fr": "Vaisseaux industriels capitaux", "name_it": "Capital Industrial Ships", "name_ja": "採掘支援母艦", "name_ko": "캐피탈 인더스트리얼", "name_ru": "Промышленные корабли", "name_zh": "旗舰级工业舰", "nameID": 66371, "parentGroupID": 204 }, "1046": { "description_de": "Blueprints von ORE-Capital-Industrieschiffs-Designs.", "description_en-us": "Blueprints of ORE Capital Industrial Ship designs.", "description_es": "Planos de diseños de naves industriales capitales de ORE.", "description_fr": "Plans de construction de modèles de vaisseaux industriels capitaux ORE.", "description_it": "Blueprints of ORE Capital Industrial Ship designs.", "description_ja": "ORE採掘支援母艦のブループリント。", "description_ko": "ORE 캐피탈 인더스트리얼 블루프린트입니다.", "description_ru": "Чертеж промышленных кораблей большого тоннажа разработки синдиката ORE.", "description_zh": "联合矿业旗舰级工业舰设计蓝图。", "descriptionID": 65077, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 66151, "parentGroupID": 1045 }, "1047": { "description_de": "Capital-Schiffe, die als industrielles Rückgrat jeder Flotte konzipiert wurden.", "description_en-us": "Capital ships designed to be the industrial backbone of any fleet.", "description_es": "Naves capitales diseñadas para ser la columna vertebral industrial de cualquier flota.", "description_fr": "Vaisseaux capitaux utilisés comme épine dorsale d'une flotte.", "description_it": "Capital ships designed to be the industrial backbone of any fleet.", "description_ja": "あらゆるフリートの生産活動を支えるために設計された主力艦。", "description_ko": "함대의 중추 역할을 하고 있는 캐피탈 인더스트리얼입니다.", "description_ru": "Корабли большого тоннажа, являющиеся основой любого промышленного флота.", "description_zh": "旗舰级工业舰是舰队的工业脊梁。", "descriptionID": 65265, "hasTypes": 0, "iconID": 1443, "name_de": "Capital-Industrieschiffe", "name_en-us": "Capital Industrial Ships", "name_es": "Naves industriales capitales", "name_fr": "Vaisseaux industriels capitaux", "name_it": "Capital Industrial Ships", "name_ja": "採掘支援母艦", "name_ko": "캐피탈 인더스트리얼", "name_ru": "Промышленные корабли", "name_zh": "旗舰级工业舰", "nameID": 66339, "parentGroupID": 1381 }, "1048": { "description_de": "ORE-Capital-Industrieschiffs-Designs.", "description_en-us": "ORE capital industrial ship designs.", "description_es": "Diseños de naves capitales industriales de ORE.", "description_fr": "Modèles de vaisseaux industriels capitaux ORE.", "description_it": "ORE capital industrial ship designs.", "description_ja": "ORE採掘支援母艦設計図。", "description_ko": "ORE 캐피탈 인더스트리얼입니다.", "description_ru": "Промышленные корабли большого тоннажа разработки синдиката ORE.", "description_zh": "联合矿业旗舰级工业舰设计", "descriptionID": 65087, "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 66161, "parentGroupID": 1047 }, "1049": { "description_de": "Panzerungsreparatur-Designs für Schiffe der Fregatten-Klasse.", "description_en-us": "Armor repair designs, intended for frigate-class vessels.", "description_es": "Diseños de reparación de blindaje destinados a fragatas.", "description_fr": "Modèles de réparation de blindage, destinés aux vaisseaux de classe frégate.", "description_it": "Armor repair designs, intended for frigate-class vessels.", "description_ja": "フリゲート級艦船で使用するためのアーマーリペア設計図。", "description_ko": "프리깃급 함선에서 사용하는 장갑수리 장치입니다.", "description_ru": "Системы ремонта брони, предназначенные для установки на фрегаты.", "description_zh": "装甲维修系统,专为护卫舰级别的舰船设计。", "descriptionID": 65114, "hasTypes": 1, "iconID": 80, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66188, "parentGroupID": 134 }, "1050": { "description_de": "Panzerungsreparatur-Designs für Schiffe der Cruiser-Klasse.", "description_en-us": "Armor repair designs, intended for cruiser-class vessels.", "description_es": "Diseños de reparación de blindaje destinados a cruceros.", "description_fr": "Modèles de réparation de blindage, destinés aux vaisseaux de classe croiseur.", "description_it": "Armor repair designs, intended for cruiser-class vessels.", "description_ja": "巡洋艦級艦船で使用するためのアーマーリペア設計図。", "description_ko": "크루저급 함선에서 사용하는 장갑수리 장치입니다.", "description_ru": "Чертежи систем ремонта брони, устанавливаемых на крейсеры.", "description_zh": "装甲维修系统,专为巡洋舰级别的舰船设计。", "descriptionID": 65115, "hasTypes": 1, "iconID": 80, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66189, "parentGroupID": 134 }, "1051": { "description_de": "Panzerungsreparatur-Designs für Schiffe der Schlachtschiff-Klasse.", "description_en-us": "Armor repair designs, intended for battleship-class vessels.", "description_es": "Diseños de reparación de blindaje destinados a acorazados.", "description_fr": "Modèles de réparation de blindage, destinés aux vaisseaux de classe cuirassé.", "description_it": "Armor repair designs, intended for battleship-class vessels.", "description_ja": "戦艦級の艦船で使用するためのアーマーリペアの設計図。", "description_ko": "배틀쉽급 함선에서 사용하는 장갑수리 장치입니다.", "description_ru": "Системы ремонта брони, предназначенные для установки на линкоры.", "description_zh": "装甲维修系统,专为战列舰级别的舰船设计。", "descriptionID": 65116, "hasTypes": 1, "iconID": 80, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66190, "parentGroupID": 134 }, "1052": { "description_de": "Panzerungsreparatur-Designs für Schiffe der Capital-Klasse.", "description_en-us": "Armor repair designs, intended for capital-class vessels.", "description_es": "Diseños de reparación de blindaje destinados a naves capitales.", "description_fr": "Modèles de réparation de blindage, destinés aux vaisseaux capitaux.", "description_it": "Armor repair designs, intended for capital-class vessels.", "description_ja": "キャピタル級艦船で使用するためのアーマーリペア設計図。", "description_ko": "캐피탈급 함선에서 사용하는 장갑수리 장치입니다.", "description_ru": "Системы ремонта брони, разработанные для использования на кораблях большого тоннажа.", "description_zh": "装甲维修系统设计,为旗舰级舰船设计。", "descriptionID": 65117, "hasTypes": 1, "iconID": 80, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 66191, "parentGroupID": 134 }, "1053": { "description_de": "Hüllen-Reparatur-Designs für Schiffe der Fregatten-Klasse.", "description_en-us": "Hull repair system designs, intended for frigate-class vessels.", "description_es": "Diseños de sistemas de reparación del casco destinados a fragatas.", "description_fr": "Modèles de systèmes de réparation de la coque, destinés aux vaisseaux de classe frégate.", "description_it": "Hull repair system designs, intended for frigate-class vessels.", "description_ja": "フリゲート級の艦船で使用するための船体リペアシステムの設計図。", "description_ko": "프리깃급 함선에서 사용하는 선체수리 장치입니다.", "description_ru": "Системы ремонта корпуса, предназначенные для установки на фрегаты.", "description_zh": "结构维修系统,专为护卫舰级别的舰船设计。", "descriptionID": 65122, "hasTypes": 1, "iconID": 80, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66196, "parentGroupID": 538 }, "1054": { "description_de": "Hüllen-Reparatur-Designs für Schiffe der Kreuzer-Klasse.", "description_en-us": "Hull repair system designs, intended for cruiser-class vessels.", "description_es": "Diseños de sistemas de reparación del casco destinados a cruceros.", "description_fr": "Modèles de systèmes de réparation de la coque, destinés aux vaisseaux de classe croiseur.", "description_it": "Hull repair system designs, intended for cruiser-class vessels.", "description_ja": "巡洋艦級艦船で使用するための船体リペアシステム。", "description_ko": "크루저급 함선에서 사용하는 선체수리 장치입니다.", "description_ru": "Чертежи систем ремонта корпуса, устанавливаемых на крейсеры.", "description_zh": "结构维修系统,专为巡洋舰级别的舰船设计。", "descriptionID": 65123, "hasTypes": 1, "iconID": 80, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66197, "parentGroupID": 538 }, "1055": { "description_de": "Hüllen-Reparatur-Designs für Schiffe der Schlachtschiff-Klasse.", "description_en-us": "Hull repair system designs, intended for battleship-class vessels.", "description_es": "Diseños de sistemas de reparación del casco destinados a acorazados.", "description_fr": "Modèles de systèmes de réparation de la coque, destinés aux vaisseaux de classe cuirassé.", "description_it": "Hull repair system designs, intended for battleship-class vessels.", "description_ja": "戦艦級の艦船で使用するための船体リペアシステム。", "description_ko": "배틀쉽급 함선에서 사용하는 선체수리 장치입니다.", "description_ru": "Системы ремонта корпуса, предназначенные для установки на линкоры.", "description_zh": "结构维修系统,专为战列舰级别的舰船设计。", "descriptionID": 65124, "hasTypes": 1, "iconID": 80, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66198, "parentGroupID": 538 }, "1056": { "description_de": "Ferngesteuerte Panzerungsreparatur-Designs für Schiffe der Capital-Klasse.", "description_en-us": "Remote armor repair system designs, intended for capital-class vessels.", "description_es": "Diseños de sistemas de reparación remota de blindaje destinados a naves capitales.", "description_fr": "Modèles de systèmes de réparation de blindage à distance, destinés aux vaisseaux capitaux.", "description_it": "Remote armor repair system designs, intended for capital-class vessels.", "description_ja": "キャピタル級艦船で使用するためのリモートアーマーリペアシステム。", "description_ko": "캐피탈급 함선에서 사용하는 원격 장갑수리 장치입니다.", "description_ru": "Системы дистанционного ремонта брони, разработанные для использования на кораблях большого тоннажа.", "description_zh": "遥控装甲维修系统设计,为旗舰级舰船设计。", "descriptionID": 65118, "hasTypes": 1, "iconID": 80, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 66192, "parentGroupID": 537 }, "1057": { "description_de": "Ferngesteuerte Panzerungsreparatur-Designs für Schiffe der Battleship-Klasse.", "description_en-us": "Remote armor repair system designs, intended for battleship-class vessels.", "description_es": "Diseños de sistemas de reparación remota de blindaje destinados a acorazados.", "description_fr": "Modèles de systèmes de réparation de blindage à distance, destinés aux vaisseaux de classe cuirassé.", "description_it": "Remote armor repair system designs, intended for battleship-class vessels.", "description_ja": "戦艦級の艦船で使用するためのリモートアーマーリペアシステム設計図。", "description_ko": "배틀쉽급 함선에서 사용하는 원격 장갑수리 장치입니다.", "description_ru": "Системы дистанционного ремонта брони, предназначенные для установки на линкоры.", "description_zh": "遥控装甲维修系统,专为战列舰级别的舰船设计。", "descriptionID": 65119, "hasTypes": 1, "iconID": 80, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66193, "parentGroupID": 537 }, "1058": { "description_de": "Ferngesteuerte Panzerungsreparatur-Designs für Schiffe der Kreuzer-Klasse.", "description_en-us": "Remote armor repair system designs, intended for cruiser-class vessels.", "description_es": "Diseños de sistemas de reparación remota de blindaje destinados a cruceros.", "description_fr": "Modèles de systèmes de réparation de blindage à distance, destinés aux vaisseaux de classe croiseur.", "description_it": "Remote armor repair system designs, intended for cruiser-class vessels.", "description_ja": "巡洋艦級艦船で使用するためのリモートアーマーリペアシステム設計図。", "description_ko": "크루저급 함선에서 사용하는 원격 장갑수리 장치입니다.", "description_ru": "Чертежи систем дистанционного ремонта брони, устанавливаемых на крейсеры.", "description_zh": "遥控装甲维修系统,专为巡洋舰级别的舰船设计。", "descriptionID": 65120, "hasTypes": 1, "iconID": 80, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66194, "parentGroupID": 537 }, "1059": { "description_de": "Ferngesteuerte Panzerungsreparatur-Designs für Schiffe der Fregatten-Klasse.", "description_en-us": "Remote armor repair system designs, intended for frigate-class vessels.", "description_es": "Diseños de sistemas de reparación remota de blindaje destinados a fragatas.", "description_fr": "Modèles de systèmes de réparation de blindage à distance, destinés aux vaisseaux de classe frégate.", "description_it": "Remote armor repair system designs, intended for frigate-class vessels.", "description_ja": "フリゲート級艦船で使用するためのリモートアーマーリペアシステム。", "description_ko": "프리깃급 함선에서 사용하는 원격 장갑수리 장치입니다.", "description_ru": "Системы удаленного ремонта брони, предназначенные для установки на фрегаты.", "description_zh": "远距装甲维修系统,专为护卫舰级别的舰船设计。", "descriptionID": 65121, "hasTypes": 1, "iconID": 80, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66195, "parentGroupID": 537 }, "1060": { "description_de": "Ferngesteuerte Hüllen-Reparatur-Designs für Schiffe der Fregatten-Klasse.", "description_en-us": "Remote hull repair system designs, intended for use on frigate-class vessels.", "description_es": "Diseños de sistemas de reparación remota del casco destinados a fragatas.", "description_fr": "Modèles de systèmes de réparation de coque à distance, destinés aux vaisseaux de classe frégate.", "description_it": "Remote hull repair system designs, intended for use on frigate-class vessels.", "description_ja": "フリゲート級艦船で使用するためのリモート船体リペアシステムの設計図。", "description_ko": "프리깃급 함선에서 사용하는 원격 선체수리 장치입니다.", "description_ru": "Системы удаленного ремонта корпуса, предназначенные для установки на фрегаты.", "description_zh": "远距结构维修系统,专为护卫舰级别的舰船设计。", "descriptionID": 65126, "hasTypes": 1, "iconID": 80, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 66200, "parentGroupID": 1018 }, "1061": { "description_de": "Ferngesteuerte Hüllen-Reparatur-Designs für Schiffe der Kreuzer-Klasse.", "description_en-us": "Remote hull repair system designs, intended for use on cruiser-class vessels.", "description_es": "Diseños de sistemas de reparación remota del casco destinados a cruceros.", "description_fr": "Modèles de systèmes de réparation de coque à distance, destinés aux vaisseaux de classe croiseur.", "description_it": "Remote hull repair system designs, intended for use on cruiser-class vessels.", "description_ja": "巡洋艦級艦船で使用するためのリモート船体リペアシステム設計図。", "description_ko": "크루저급 함선에서 사용하는 원격 선체수리 장치입니다.", "description_ru": "Чертежи систем дистанционного ремонта корпуса, устанавливаемых на крейсеры.", "description_zh": "遥控结构维修系统,专为巡洋舰级别的舰船设计。", "descriptionID": 65127, "hasTypes": 1, "iconID": 80, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 66201, "parentGroupID": 1018 }, "1062": { "description_de": "Ferngesteuerte Panzerungsreparatur-Designs für Schiffe der Schlachtschiff-Klasse.", "description_en-us": "Remote hull repair system designs, intended for use on battleship-class vessels.", "description_es": "Diseños de sistemas de reparación remota del casco destinados a acorazados.", "description_fr": "Modèles de systèmes de réparation de coque à distance, destinés aux vaisseaux de classe cuirassé.", "description_it": "Remote hull repair system designs, intended for use on battleship-class vessels.", "description_ja": "戦艦級の艦船で使用するためのリモート船体リペアシステム。", "description_ko": "배틀쉽급 함선에서 사용하는 원격 선체수리 장치입니다.", "description_ru": "Системы дистанционного ремонта корпуса, предназначенные для установки на линкоры.", "description_zh": "遥控结构维修系统,专为战列舰级别的舰船设计。", "descriptionID": 65128, "hasTypes": 1, "iconID": 80, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 66202, "parentGroupID": 1018 }, "1063": { "description_de": "Ferngesteuerte Hüllenreparatursystem-Designs für Schiffe der Capital-Klasse.", "description_en-us": "Remote hull repair system designs, intended for use on capital-class vessels.", "description_es": "Diseños de sistemas de reparación remota del casco destinados a naves capitales.", "description_fr": "Modèles de systèmes de réparation de coque à distance, destinés aux vaisseaux capitaux.", "description_it": "Remote hull repair system designs, intended for use on capital-class vessels.", "description_ja": "キャピタル級艦船で使用するためのリモート船体リペアシステム設計図。", "description_ko": "캐피탈급 함선에서 사용하는 원격 선체수리 장치입니다.", "description_ru": "Системы дистанционного ремонта корпуса, разработанные для использования на кораблях большого тоннажа.", "description_zh": "遥控结构维修系统设计,为旗舰级舰船设计。", "descriptionID": 65129, "hasTypes": 1, "iconID": 80, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 66203, "parentGroupID": 1018 }, "1065": { "description_de": "Fregatten, die auf die elektronische Kriegsführung spezialisiert sind.", "description_en-us": "Frigates specialized in electronic warfare.", "description_es": "Fragatas especializadas en la guerra electrónica.", "description_fr": "Frégates spécialisées dans la guerre électronique.", "description_it": "Frigates specialized in electronic warfare.", "description_ja": "電子戦に特化したフリゲート。", "description_ko": "전자전에 특화된 프리깃입니다.", "description_ru": "Фрегаты, специально разработанные для ведения радиоэлектронной борьбы.", "description_zh": "电子攻击护卫舰。", "descriptionID": 65247, "hasTypes": 0, "iconID": 1443, "name_de": "Elektronische Angriffsfregatten", "name_en-us": "Electronic Attack Frigates", "name_es": "Fragatas de ataque electrónico", "name_fr": "Frégates d'attaque électronique", "name_it": "Electronic Attack Frigates", "name_ja": "電子攻撃フリゲート", "name_ko": "전자전 프리깃", "name_ru": "Дозорные фрегаты", "name_zh": "电子攻击护卫舰", "nameID": 66321, "parentGroupID": 1364 }, "1066": { "description_de": "Elektronische Amarr-Kampffregatten-Designs.", "description_en-us": "Amarr electronic attack frigate designs.", "description_es": "Diseños de fragatas de ataque electrónico amarrianas.", "description_fr": "Modèles de frégates d'attaque électronique amarr.", "description_it": "Amarr electronic attack frigate designs.", "description_ja": "アマー電子攻撃フリゲート設計図。", "description_ko": "아마르의 전자전 프리깃입니다.", "description_ru": "Фрегаты электронного противодействия разработки Империи Amarr.", "description_zh": "艾玛电子攻击护卫舰设计", "descriptionID": 65088, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66162, "parentGroupID": 1065 }, "1067": { "description_de": "Elektronische Caldari-Angriffsfregatten-Designs.", "description_en-us": "Caldari electronic attack frigate designs.", "description_es": "Diseños de fragatas de ataque electrónico caldaris.", "description_fr": "Modèles de frégates d'attaque électronique caldari.", "description_it": "Caldari electronic attack frigate designs.", "description_ja": "カルダリ電子攻撃フリゲート設計図。", "description_ko": "칼다리의 전자전 프리깃입니다.", "description_ru": "Фрегаты электронного противодействия разработки Государства Caldari.", "description_zh": "加达里电子攻击护卫舰", "descriptionID": 65089, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66163, "parentGroupID": 1065 }, "1068": { "description_de": "Elektronische Gallente-Angriffsfregatten-Designs.", "description_en-us": "Gallente electronic attack frigate designs.", "description_es": "Diseños de fragatas de ataque electrónico gallentes.", "description_fr": "Modèles de frégates d'attaque électronique gallente.", "description_it": "Gallente electronic attack frigate designs.", "description_ja": "ガレンテ電子攻撃フリゲート設計図。", "description_ko": "갈란테의 전자전 프리깃입니다.", "description_ru": "Фрегаты электронного противодействия разработки Федерации Gallente.", "description_zh": "盖伦特电子攻击护卫舰设计", "descriptionID": 65090, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66164, "parentGroupID": 1065 }, "1069": { "description_de": "Elektronische Minmatar-Angriffsfregatten-Designs.", "description_en-us": "Minmatar electronic attack frigate designs.", "description_es": "Diseños de fragatas de ataque electrónico minmatarianas.", "description_fr": "Modèles de frégates d'attaque électronique minmatar.", "description_it": "Minmatar electronic attack frigate designs.", "description_ja": "ミンマター電子攻撃フリゲート設計図。", "description_ko": "민마타의 전자전 프리깃입니다.", "description_ru": "Фрегаты электронного противодействия разработки Республики Minmatar.", "description_zh": "米玛塔尔电子攻击护卫舰设计。", "descriptionID": 65091, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66165, "parentGroupID": 1065 }, "1070": { "description_de": "Schiffe der Cruiser-Klasse, die andere Schiffe aus dem Warpraum ziehen können.", "description_en-us": "Cruiser-class vessels, designed to pull other vessels out of warp.", "description_es": "Naves de clase crucero diseñadas para interrumpir el warp de otras naves.", "description_fr": "Vaisseaux de type croiseur, conçus pour empêcher les autres vaisseaux de warper.", "description_it": "Cruiser-class vessels, designed to pull other vessels out of warp.", "description_ja": "敵船のワープを阻止するように設計された巡洋艦級艦船。", "description_ko": "크루저급 함선으로 대상 함선의 워프를 방해하기 위해 설계되었습니다.", "description_ru": "Корабли крейсерского класса, специально разработанные для глушения варп-двигателей других кораблей.", "description_zh": "巡洋舰级别舰船,设计用于将其他舰船从跃迁状态中截获。", "descriptionID": 65251, "hasTypes": 0, "iconID": 1443, "name_de": "Schwere Unterbrechungskreuzer", "name_en-us": "Heavy Interdiction Cruisers", "name_es": "Cruceros interdictores pesados", "name_fr": "Croiseurs d'interdiction lourds", "name_it": "Heavy Interdiction Cruisers", "name_ja": "ワープ妨害型巡洋艦", "name_ko": "인터딕터 크루저", "name_ru": "Заградительные крейсеры", "name_zh": "重型拦截巡洋舰", "nameID": 66325, "parentGroupID": 1368 }, "1071": { "description_de": "Amarr-Designs für schwere Unterbrechungskreuzer.", "description_en-us": "Amarr heavy interdiction cruiser designs.", "description_es": "Diseños de cruceros interdictores pesados amarrianos.", "description_fr": "Modèles de croiseurs d'interdiction lourds amarr.", "description_it": "Amarr heavy interdiction cruiser designs.", "description_ja": "アマーのワープ妨害型巡洋艦。", "description_ko": "아마르의 헤비 인터딕터 크루저입니다.", "description_ru": "Проектная документация на тяжелые заградительные крейсеры разработки империи Амарр.", "description_zh": "艾玛重型拦截巡洋舰设计蓝图。", "descriptionID": 65092, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66166, "parentGroupID": 1070 }, "1072": { "description_de": "Caldari-Designs für schwere Unterbrechungskreuzer.", "description_en-us": "Caldari heavy interdiction cruiser designs.", "description_es": "Diseños de cruceros interdictores pesados caldaris.", "description_fr": "Modèles de croiseurs d'interdiction lourds caldari.", "description_it": "Caldari heavy interdiction cruiser designs.", "description_ja": "カルダリのワープ妨害型巡洋艦。", "description_ko": "칼다리의 인터딕터 크루저입니다.", "description_ru": "Проектная документация на тяжелые заградительные крейсеры разработки государства Калдари.", "description_zh": "加达里重型拦截巡洋舰设计蓝图。", "descriptionID": 65093, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66167, "parentGroupID": 1070 }, "1073": { "description_de": "Gallente-Designs für schwere Unterbrechungskreuzer.", "description_en-us": "Gallente heavy interdiction cruiser designs.", "description_es": "Diseños de cruceros interdictores pesados gallentes.", "description_fr": "Modèles de croiseurs d'interdiction lourds gallente.", "description_it": "Gallente heavy interdiction cruiser designs.", "description_ja": "ガレンテワープ妨害型巡洋艦。", "description_ko": "갈란테의 헤비 인터딕터 크루저입니다.", "description_ru": "Проектная документация на тяжелые заградительные крейсеры разработки федерации Галленте.", "description_zh": "盖伦特重型拦截巡洋舰设计蓝图。", "descriptionID": 65094, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66168, "parentGroupID": 1070 }, "1074": { "description_de": "Minmatar-Designs für schwere Unterbrechungskreuzer.", "description_en-us": "Minmatar heavy interdiction cruiser designs.", "description_es": "Diseños de cruceros interdictores pesados minmatarianos.", "description_fr": "Modèles de croiseurs d'interdiction lourds minmatar.", "description_it": "Minmatar heavy interdiction cruiser designs.", "description_ja": "ミンマターワープ妨害型巡洋艦。", "description_ko": "민마타 인터딕터 크루저입니다.", "description_ru": "Проектная документация на тяжелые заградительные крейсеры разработки республики Минматар.", "description_zh": "米玛塔尔重型拦截巡洋舰设计蓝图。", "descriptionID": 65095, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66169, "parentGroupID": 1070 }, "1075": { "description_de": "Schiffe der Schlachtschiff-Klasse für Operationen im Feindgebiet.", "description_en-us": "Battleship-Class vessels, designed to operate behind enemy lines.", "description_es": "Acorazados pensados para operar detrás de las líneas enemigas.", "description_fr": "Vaisseaux de classe cuirassé, prévus pour mener des opérations derrière les lignes ennemies.", "description_it": "Battleship-Class vessels, designed to operate behind enemy lines.", "description_ja": "敵の前線の背後で活動するように設計された戦艦級艦船。", "description_ko": "배틀쉽급 함선으로 적진 후방에서 작전을 수행할 수 있도록 설계된 함선입니다.", "description_ru": "Линейные корабли, предназначенные для операций в тылу противника.", "description_zh": "战列舰级别的舰船,专门设计用于敌后作战。", "descriptionID": 65260, "hasTypes": 0, "iconID": 1443, "name_de": "Black Ops", "name_en-us": "Black Ops", "name_es": "Operaciones secretas", "name_fr": "Forces spéciales", "name_it": "Black Ops", "name_ja": "秘密工作戦艦", "name_ko": "블랙옵스", "name_ru": "Тяжёлые диверсионные корабли", "name_zh": "黑隐特勤舰", "nameID": 66334, "parentGroupID": 1377 }, "1076": { "description_de": "Amarr-Black-Ops-Designs.", "description_en-us": "Amarr black ops designs.", "description_es": "Diseños de operaciones secretas amarrianas.", "description_fr": "Modèles de vaisseaux des forces spéciales amarr.", "description_it": "Amarr black ops designs.", "description_ja": "アマー秘密工作戦艦。", "description_ko": "아마르의 블랙옵스입니다.", "description_ru": "Тяжелые корабли для спецопераций разработки Империи Amarr.", "description_zh": "艾玛黑隐特勤舰设计", "descriptionID": 65096, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66170, "parentGroupID": 1075 }, "1077": { "description_de": "Caldari-Black-Ops-Designs.", "description_en-us": "Caldari black ops designs.", "description_es": "Diseños de naves de operaciones secretas caldaris.", "description_fr": "Modèles de vaisseaux des forces spéciales caldari.", "description_it": "Caldari black ops designs.", "description_ja": "カルダリ秘密工作戦艦。", "description_ko": "칼다리의 블랙옵스입니다.", "description_ru": "Тяжелые корабли для спецопераций разработки Государства Caldari.", "description_zh": "加达里黑隐特勤舰设计", "descriptionID": 65097, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66171, "parentGroupID": 1075 }, "1078": { "description_de": "Gallente-Black-Ops-Designs.", "description_en-us": "Gallente black ops designs.", "description_es": "Diseños de naves de operaciones secretas gallentes.", "description_fr": "Modèles de vaisseaux des forces spéciales gallente.", "description_it": "Gallente black ops designs.", "description_ja": "ガレンテ秘密工作戦艦。", "description_ko": "갈란테의 블랙옵스입니다.", "description_ru": "Тяжелые корабли для спецопераций разработки Федерации Gallente.", "description_zh": "盖伦特黑隐特勤舰设计", "descriptionID": 65098, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66172, "parentGroupID": 1075 }, "1079": { "description_de": "Minmatar-Black-Ops-Designs.", "description_en-us": "Minmatar black ops designs.", "description_es": "Diseños de naves de operaciones secretas minmatarianas.", "description_fr": "Modèles de vaisseaux des forces spéciales minmatar.", "description_it": "Minmatar black ops designs.", "description_ja": "ミンマター秘密工作戦艦。", "description_ko": "민마타의 블랙옵스입니다.", "description_ru": "Тяжелые корабли для спецопераций разработки Республики Minmatar.", "description_zh": "米玛塔尔黑隐特勤舰设计", "descriptionID": 65099, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66173, "parentGroupID": 1075 }, "1080": { "description_de": "Schiffe der Schlachtschiff-Klasse, die lange an der Front operieren können.", "description_en-us": "Battleship-Class vessels, intended for prolonged frontline deployment.", "description_es": "Acorazados pensados para desplegarse en primera línea.", "description_fr": "Vaisseaux de classe cuirassé, prévus pour les déploiements de première ligne prolongés.", "description_it": "Battleship-Class vessels, intended for prolonged frontline deployment.", "description_ja": "長引く前線配置向けの戦艦級艦船。", "description_ko": "배틀쉽급 함선으로 전투 지속력이 뛰어나 전방에 배치되곤 합니다.", "description_ru": "Линейные корабли, разработанные для длительного пребывания на линии фронта.", "description_zh": "战列舰级别的舰船,为持久战斗而设计。", "descriptionID": 65259, "hasTypes": 0, "iconID": 1443, "name_de": "Marauder", "name_en-us": "Marauders", "name_es": "Depredadores", "name_fr": "Maraudeurs", "name_it": "Marauders", "name_ja": "襲撃型戦艦", "name_ko": "머라우더", "name_ru": "Рейдеры", "name_zh": "掠夺舰", "nameID": 66333, "parentGroupID": 1377 }, "1081": { "description_de": "Amarr-Marauder-Designs.", "description_en-us": "Amarr marauder designs.", "description_es": "Diseños de depredadores amarrianos.", "description_fr": "Modèles de maraudeurs amarr.", "description_it": "Amarr marauder designs.", "description_ja": "アマー襲撃型戦艦設計図。", "description_ko": "아마르의 머라우더입니다.", "description_ru": "Рейдеры разработки Империи Amarr.", "description_zh": "艾玛掠夺舰设计", "descriptionID": 65100, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66174, "parentGroupID": 1080 }, "1082": { "description_de": "Caldari-Maruader-Designs.", "description_en-us": "Caldari marauder designs", "description_es": "Diseños de depredadores caldaris.", "description_fr": "Modèles de maraudeurs caldari", "description_it": "Caldari marauder designs", "description_ja": "カルダリ襲撃型戦艦設計図", "description_ko": "칼다리 머라우더 설계", "description_ru": "Рейдеры разработки Государства Caldari", "description_zh": "加达里掠夺舰设计", "descriptionID": 65101, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66175, "parentGroupID": 1080 }, "1083": { "description_de": "Gallente-Marauder-Designs.", "description_en-us": "Gallente marauder designs.", "description_es": "Diseños de depredadores gallentes.", "description_fr": "Modèles de maraudeurs gallente.", "description_it": "Gallente marauder designs.", "description_ja": "ガレンテ襲撃型戦艦設計図。", "description_ko": "갈란테의 머라우더입니다.", "description_ru": "Рейдеры разработки Федерации Gallente.", "description_zh": "盖伦特掠夺舰设计", "descriptionID": 65102, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66176, "parentGroupID": 1080 }, "1084": { "description_de": "Minmatar-Marauder-Designs.", "description_en-us": "Minmatar marauder designs.", "description_es": "Diseños de depredadores minmatarianos.", "description_fr": "Modèles de maraudeurs minmatar.", "description_it": "Minmatar marauder designs.", "description_ja": "ミンマター襲撃型戦艦設計図。", "description_ko": "민마타의 머라우더입니다.", "description_ru": "Рейдеры разработки Республики Minmatar.", "description_zh": "米玛塔尔掠夺舰设计", "descriptionID": 65103, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66177, "parentGroupID": 1080 }, "1085": { "description_de": "Ein Schiffssystem, das Warpreisen durch ein lokales Warp-Unterbrechungsfeld verhindert.", "description_en-us": "A ship system that generates a local warp disruption field, preventing warp travel.", "description_es": "Sistema de a bordo que genera un campo disruptor de warp que impide warpear.", "description_fr": "Système du vaisseau qui génère un champ local de perturbation de warp, empêchant tout déplacement par warp.", "description_it": "A ship system that generates a local warp disruption field, preventing warp travel.", "description_ja": "局所的なワープ妨害フィールドを生成してワープ航行を阻止するシップシステム。", "description_ko": "워프 디스럽션 필드를 생성하는 시스템입니다.", "description_ru": "Модули, предназначенные для вывода из строя варп-двигателей всех кораблей, находящихся на определенном расстоянии от корабля-носителя.", "description_zh": "此设备能生成一个局部的跃迁干扰力场,阻止跃迁行为。", "descriptionID": 65134, "hasTypes": 1, "iconID": 21489, "name_de": "Warpstörfeld-Generatoren", "name_en-us": "Warp Disruption Field Generators", "name_es": "Generadores de campo disruptor de warp.", "name_fr": "Générateurs de champ perturbateurs de warp", "name_it": "Warp Disruption Field Generators", "name_ja": "ワープ妨害フィールド発生装置", "name_ko": "워프 디스럽션 필드 생성기", "name_ru": "Бортовые варп-заградители", "name_zh": "跃迁扰断力场发生器", "nameID": 66208, "parentGroupID": 657 }, "1086": { "description_de": "Schiffssysteme zur Stabilisation des Schiffs, die ein eleganteres Manövrieren ermöglichen.", "description_en-us": "Ship systems that stabilize the ship and allow for more graceful maneuvers.", "description_es": "Sistemas de a bordo que estabilizan la nave y permiten maniobrar con más elegancia.", "description_fr": "Système qui stabilise le vaisseau et permet des manœuvres sans heurts.", "description_it": "Ship systems that stabilize the ship and allow for more graceful maneuvers.", "description_ja": "艦船を安定させて静かな操作を可能にするシップシステム。", "description_ko": "함선의 안정성을 향상시켜주는 시스템입니다.", "description_ru": "Корабельные системы, облегчающие стабилизацию и позволяющие осуществлять более точное маневрирование.", "description_zh": "增强舰船稳定性,提供机动能力的装备。", "descriptionID": 65130, "hasTypes": 1, "iconID": 1041, "name_de": "Trägheitsstabilisatoren", "name_en-us": "Inertial Stabilizers", "name_es": "Estabilizadores inerciales", "name_fr": "Stabilisateurs d’inertie", "name_it": "Inertial Stabilizers", "name_ja": "慣性スタビライザー", "name_ko": "관성 안정기", "name_ru": "Инерционные стабилизаторы", "name_zh": "惯性稳定器", "nameID": 66204, "parentGroupID": 132 }, "1087": { "description_de": "Schiffssysteme für mehr Dampf auf den Schiffsmotoren.", "description_en-us": "Ship systems that add more raw power to the ship's engines.", "description_es": "Sistemas de a bordo que añaden más potencia bruta a los motores de la nave.", "description_fr": "Systèmes des vaisseaux pour ajouter davantage de puissance aux moteurs des vaisseaux.", "description_it": "Ship systems that add more raw power to the ship's engines.", "description_ja": "艦船のエンジンの出力を直接高めるシップシステム。", "description_ko": "엔진 추진력을 향상시켜주는 함선 시스템입니다.", "description_ru": "Корабельные системы, увеличивающие поступление энергии в двигатели корабля.", "description_zh": "为舰船引擎增加推力的舰载系统。", "descriptionID": 65131, "hasTypes": 1, "iconID": 98, "name_de": "Turbolader", "name_en-us": "Overdrives", "name_es": "Inyectores de sobrepotencia", "name_fr": "Overdrives", "name_it": "Overdrives", "name_ja": "オーバードライブ", "name_ko": "오버드라이브 시스템", "name_ru": "Дополнительные двигатели", "name_zh": "超载喷注器", "nameID": 66205, "parentGroupID": 132 }, "1088": { "description_de": "Schiffssysteme, die den Warpantrieb auch bei Interferenzen betriebsfähig halten.", "description_en-us": "Ship systems that help to keep the warp drive operational, despite interference.", "description_es": "Sistemas de a bordo que ayudan a mantener operativo el motor de warp a pesar de las interferencias.", "description_fr": "Systèmes des vaisseaux contribuant à maintenir le propulseur de warp opérationnel en dépit des interférences.", "description_it": "Ship systems that help to keep the warp drive operational, despite interference.", "description_ja": "妨害があってもワープドライブを動作させ続けるための艦船システム。", "description_ko": "교란에도 불구하고 워프 드라이브를 유지할 수 있는 시스템입니다.", "description_ru": "Модули, предназначенные для обеспечения бесперебойного функционирования варп-двигателей.", "description_zh": "在被干扰状态下,保持舰船跃迁引擎正常工作的系统。", "descriptionID": 65132, "hasTypes": 1, "iconID": 97, "name_de": "Warpkernstabilisatoren", "name_en-us": "Warp Core Stabilizers", "name_es": "Estabilizadores del núcleo de warp", "name_fr": "Stabilisateurs de réacteur de warp", "name_it": "Warp Core Stabilizers", "name_ja": "ワープコア制御装置", "name_ko": "워프 코어 안정기", "name_ru": "Варп-стабилизаторы", "name_zh": "跃迁稳定器", "nameID": 66206, "parentGroupID": 132 }, "1089": { "description_de": "Sprungfähige Frachtschiffe der Capital-Klasse, die kommerzielle Handelsgüter zu fernen Sternen bringen.", "description_en-us": "Capital cargo ships with jump drive capabilities, bringing trade and commerce to distant stars.", "description_es": "Naves de carga capitales con motores de salto y capaces de llevar negocios y comercios a estrellas lejanas.", "description_fr": "Vaisseaux cargo capitaux doté d'un propulseur hyperspatial, ouvrant les portes du commerce et les affaires aux étoiles distantes.", "description_it": "Capital cargo ships with jump drive capabilities, bringing trade and commerce to distant stars.", "description_ja": "ジャンプドライブ機能を備えたキャピタルカーゴ船。遠距離の貿易や商取引が可能。", "description_ko": "점프 능력을 지닌 캐피탈 화물선입니다. 장거리 물자 이송이 가능합니다.", "description_ru": "Грузовые корабли большого тоннажа, оснащенные гипердвигателями. Они приносят блага коммерции даже в самые отдаленные звездные системы.", "description_zh": "具有跳跃能力的旗舰级运输舰船,使得贸易能在相距遥远的星系之间快捷地进行。", "descriptionID": 65262, "hasTypes": 0, "iconID": 1443, "name_de": "Sprung-Frachter", "name_en-us": "Jump Freighters", "name_es": "Cargueros de salto", "name_fr": "Transports de fret hyperspatiaux", "name_it": "Jump Freighters", "name_ja": "ジャンプドライブ搭載型輸送艦", "name_ko": "점프 프레이터", "name_ru": "Джамп-фрейтеры", "name_zh": "战略货舰", "nameID": 66336, "parentGroupID": 1381 }, "1090": { "description_de": "Amarr-Sprung-Frachter-Designs.", "description_en-us": "Amarr jump freighter designs.", "description_es": "Diseños de cargueros de salto amarrianos.", "description_fr": "Modèles de transports de fret hyperspatiaux amarr.", "description_it": "Amarr jump freighter designs.", "description_ja": "アマージャンプドライブ搭載型輸送艦設計図。", "description_ko": "아마르의 점프 프레이터입니다.", "description_ru": "Грузовые корабли с гипердвигателями, разработанные империей Amarr.", "description_zh": "艾玛战略货舰设计", "descriptionID": 65104, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66178, "parentGroupID": 1089 }, "1091": { "description_de": "Caldari-Sprung-Frachter-Designs.", "description_en-us": "Caldari jump freighter designs.", "description_es": "Diseños de cargueros de salto caldaris.", "description_fr": "Modèles de transports de fret hyperspatiaux caldari.", "description_it": "Caldari jump freighter designs.", "description_ja": "カルダリジャンプドライブ搭載型輸送艦設計図。", "description_ko": "칼다리의 점프 프레이터입니다.", "description_ru": "Грузовые корабли с гипердвигателями, разработанные государством Caldari.", "description_zh": "加达里战略货舰设计", "descriptionID": 65105, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66179, "parentGroupID": 1089 }, "1092": { "description_de": "Gallente-Sprung-Frachter-Designs.", "description_en-us": "Gallente jump freighter designs.", "description_es": "Diseños de cargueros de salto gallentes.", "description_fr": "Modèles de transports de fret hyperspatiaux gallente.", "description_it": "Gallente jump freighter designs.", "description_ja": "ガレンテジャンプドライブ搭載型輸送艦設計図。", "description_ko": "갈란테의 점프 프레이터입니다.", "description_ru": "Грузовые корабли с гипердвигателями, разработанные федерацией Gallente.", "description_zh": "盖伦特战略货舰设计", "descriptionID": 65106, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66180, "parentGroupID": 1089 }, "1093": { "description_de": "Minmatar-Sprung-Frachter-Designs.", "description_en-us": "Minmatar jump freighter designs.", "description_es": "Diseños de cargueros de salto minmatarianos.", "description_fr": "Modèles de transports de fret hyperspatiaux minmatar.", "description_it": "Minmatar jump freighter designs.", "description_ja": "ミンマタージャンプドライブ搭載型輸送艦設計図。", "description_ko": "민마타의 점프 프레이터입니다.", "description_ru": "Грузовые корабли с гипердвигателями, разработанные республикой Minmatar.", "description_zh": "米玛塔尔战略货舰设计", "descriptionID": 65107, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66181, "parentGroupID": 1089 }, "1094": { "description_de": "Skripte zur Kalibrierung bestimmter Modulfunktionen.", "description_en-us": "Scripts that allow for tuning the effects of certain modules", "description_es": "Scripts que permiten ajustar los efectos de ciertos módulos.", "description_fr": "Scripts permettant de régler les effets de certains modules", "description_it": "Scripts that allow for tuning the effects of certain modules", "description_ja": "特定のモジュールの効果を調整するスクリプト", "description_ko": "모듈의 효과를 조정할 수 있는 스크립트입니다.", "description_ru": "Прошивки, позволяющие профилировать рабочий режим некоторых модулей", "description_zh": "用于调整特定装备的效果的脚本", "descriptionID": 65160, "hasTypes": 1, "iconID": 3345, "name_de": "Skripte", "name_en-us": "Scripts", "name_es": "Scripts", "name_fr": "Scripts", "name_it": "Scripts", "name_ja": "スクリプト", "name_ko": "스크립트", "name_ru": "Скрипты", "name_zh": "脚本", "nameID": 66234, "parentGroupID": 11 }, "1097": { "description_de": "Blueprints für fortschrittliche Komponenten von Capital Ships.", "description_en-us": "Blueprints of Advanced Capital Ship Components.", "description_es": "Planos de componentes de naves capitales avanzadas.", "description_fr": "Plans de construction de composants de vaisseaux capitaux avancés.", "description_it": "Blueprints of Advanced Capital Ship Components.", "description_ja": "高性能主力艦部品のブループリント。", "description_ko": "상급 캐피탈 함선 부품 블루프린트입니다.", "description_ru": "Чертежи компонентов для усовершенствованных кораблей большого тоннажа (КБТ).", "description_zh": "高级旗舰组件蓝图", "descriptionID": 65306, "hasTypes": 0, "iconID": 2703, "name_de": "Fortschrittliche Capital-Schiffskomponenten", "name_en-us": "Advanced Capital Ship Components", "name_es": "Componentes de naves capitales avanzadas", "name_fr": "Composants de vaisseau capital avancés", "name_it": "Advanced Capital Ship Components", "name_ja": "高性能主力艦の部品", "name_ko": "상급 캐피탈 함선 부품", "name_ru": "Усовершенствованные компоненты КБТ", "name_zh": "高级旗舰组件", "nameID": 66380, "parentGroupID": 800 }, "1103": { "description_de": "Eine Flüssigkeit voller Nanobots für Notreparaturen von Schiffsmodulen.", "description_en-us": "A nanite packed-fluid, used for emergency repairs of ship modules", "description_es": "Un fluido lleno de nanobots que se usa en reparaciones de emergencia de módulos de naves.", "description_fr": "Liquide saturé de nanites, utilisé pour les réparations d'urgence des modules de vaisseaux.", "description_it": "A nanite packed-fluid, used for emergency repairs of ship modules", "description_ja": "艦船のモジュールに緊急修理を施す際に使用するナノマシン入りの液体", "description_ko": "함선 긴급 수리에 사용되는 나나이트 용액입니다.", "description_ru": "Содержащая наниты жидкость, использующаяся для срочного ремонта корабельных модулей", "description_zh": "液态混合状的纳米机器人,用于舰船装备的紧急维修作业", "descriptionID": 65161, "hasTypes": 1, "iconID": 3302, "name_de": "Nanobot-Reparaturpaste", "name_en-us": "Nanite Repair Paste", "name_es": "Fluido reparador de nanobots", "name_fr": "Nanites de réparation", "name_it": "Nanite Repair Paste", "name_ja": "ナノマシンリペアペイスト", "name_ko": "나나이트 용액", "name_ru": "Ремонтная нанопаста", "name_zh": "纳米体修复粘合剂", "nameID": 66235, "parentGroupID": 11 }, "1105": { "description_de": "Blueprints von Skripten.", "description_en-us": "Blueprints of scripts.", "description_es": "Planos de scripts.", "description_fr": "Plans de construction de scripts.", "description_it": "Blueprints of scripts.", "description_ja": "スクリプトのブループリント。", "description_ko": "스크립트 블루프린트입니다.", "description_ru": "Чертежи программ.", "description_zh": "脚本蓝图", "descriptionID": 65081, "hasTypes": 1, "iconID": 2703, "name_de": "Skripte", "name_en-us": "Scripts", "name_es": "Scripts", "name_fr": "Scripts", "name_it": "Scripts", "name_ja": "スクリプト", "name_ko": "스크립트", "name_ru": "Скрипты", "name_zh": "脚本", "nameID": 66155, "parentGroupID": 211 }, "1109": { "description_de": "Mysteriöse Technologieteile mit Sleeper-Ursprung, heiß begehrt bei einigen Corporations im Imperium", "description_en-us": "Mysterious pieces of technology of Sleeper origin, coveted by some empire corporations", "description_es": "Misteriosos fragmentos de tecnología de origen sleeper, codiciados por algunas corporaciones imperiales.", "description_fr": "Composants technologiques mystérieux d'origine Sleeper convoités par certaines corporations impériales", "description_it": "Mysterious pieces of technology of Sleeper origin, coveted by some empire corporations", "description_ja": "スリーパーが生み出した奇怪な機器。帝国のコーポレーションのうちいくつかが求めてやまない。", "description_ko": "정체불명의 슬리퍼 부품으로 대형 코퍼레이션들이 몹시 탐내고 있습니다.", "description_ru": "Таинственные обломки устройств Спящих, высоко ценимые некоторыми корпорациями сверхдержав", "description_zh": "来自冬眠者神秘科技的残片,被一些帝国军团觊觎", "descriptionID": 65401, "hasTypes": 1, "iconID": 3755, "name_de": "Sleeper-Komponenten", "name_en-us": "Sleeper Components", "name_es": "Componentes de sleepers", "name_fr": "Composants sleeper", "name_it": "Sleeper Components", "name_ja": "スリーパーの部品", "name_ko": "슬리퍼 부품", "name_ru": "Компоненты Спящих", "name_zh": "冬眠者组件", "nameID": 66475, "parentGroupID": 19 }, "1110": { "description_de": "Skills zur Anwendung von Verfahren zur Identifizierung und Erkennung von Signaturen.", "description_en-us": "Skills pertaining to signature recognition and identification procedures", "description_es": "Habilidades relacionadas con los procedimientos de identificación y reconocimiento de señales.", "description_fr": "Compétences liées aux procédures d'identification et de reconnaissance des signatures.", "description_it": "Skills pertaining to signature recognition and identification procedures", "description_ja": "署名を認識し、個人を特定するスキル", "description_ko": "시그니처를 보다 효율적으로 감지 및 식별할 수 있습니다.", "description_ru": "Навыки, необходимые для распознавания и идентификации сигналов в космосе", "description_zh": "关于信号认定与识别的技能", "descriptionID": 65189, "hasTypes": 1, "iconID": 33, "name_de": "Scannen", "name_en-us": "Scanning", "name_es": "Escaneo", "name_fr": "Détection", "name_it": "Scanning", "name_ja": "スキャン", "name_ko": "스캔", "name_ru": "Сбор данных", "name_zh": "扫描", "nameID": 66263, "parentGroupID": 150 }, "1111": { "description_de": "Modifikationen verändern die Leistung von Schiffen, in denen Sie eingebaut sind. Sie werden zerstört, wenn sie aus einem Schiff entfernt werden.", "description_en-us": "Rigs modify the performance of ships in which they're installed. Destroyed if removed from a ship", "description_es": "Los complementos modifican el rendimiento de las naves en las que están instalados. Si se quitan, quedan destruidos.", "description_fr": "Les modules d'optimisation modifient les performances des vaisseaux dans lesquels ils sont installés. Ils sont détruits si on les enlève d'un vaisseau", "description_it": "Rigs modify the performance of ships in which they're installed. Destroyed if removed from a ship", "description_ja": "リグを装備することで、艦船の性能が変わってくる。艦船から撤去すると、再利用できなくなる", "description_ko": "리그를 탑재하여 함선의 전반적인 성능을 개선합니다. 장착을 해제할 경우 리그는 파괴됩니다.", "description_ru": "Установленные тюнинг-модули повышают эффективность работы корабельных систем. Уничтожаются, если демонтировать их из разъёмов", "description_zh": "改装件可以调整舰船的性能。舰船被摧毁后改装件也随之损坏", "descriptionID": 65190, "hasTypes": 0, "iconID": 3203, "name_de": "Modifikationen", "name_en-us": "Rigs", "name_es": "Complementos", "name_fr": "Modules d'optimisation", "name_it": "Rigs", "name_ja": "リグ", "name_ko": "리그", "name_ru": "Модификаторы", "name_zh": "改装件", "nameID": 66264, "parentGroupID": 955 }, "1112": { "description_de": "Komponenten, die dazu benutzt werden, fortschrittliche modulare Raumschiffe zusammenzustellen", "description_en-us": "Components used to piece together advanced modular spaceships", "description_es": "Componentes que sirven para ensamblar avanzadas naves modulares.", "description_fr": "Composants utilisés pour l'assemblage de vaisseaux modulaires avancés", "description_it": "Components used to piece together advanced modular spaceships", "description_ja": "モジュールベースの高性能な艦船を組み立てる際に使用する部品", "description_ko": "모듈식 함선 제작에 사용되는 서브시스템입니다.", "description_ru": "Компоненты, используемые при сборке кораблей усовершествованных проектов", "description_zh": "用来组装高度模块化舰船的组件", "descriptionID": 65497, "hasTypes": 0, "iconID": 3641, "name_de": "Subsysteme", "name_en-us": "Subsystems", "name_es": "Subsistemas", "name_fr": "Sous-systèmes", "name_it": "Subsystems", "name_ja": "サブシステム", "name_ko": "서브시스템", "name_ru": "Подсистемы", "name_zh": "子系统", "nameID": 66572, "parentGroupID": 955 }, "1122": { "description_de": "Amarr-Kernsubsysteme.", "description_en-us": "Amarr core subsystems.", "description_es": "Subsistemas nuclearios amarrianos.", "description_fr": "Sous-systèmes principaux amarr.", "description_it": "Amarr core subsystems.", "description_ja": "アマーエンジニアリングサブシステム", "description_ko": "아마르 코어 서브시스템", "description_ru": "Амаррские центральные подсистемы", "description_zh": "艾玛核心子系统。", "descriptionID": 65507, "hasTypes": 1, "iconID": 3636, "name_de": "Amarr-Kernsubsysteme", "name_en-us": "Amarr Core Subsystems", "name_es": "Subsistemas nuclearios amarrianos", "name_fr": "Sous-systèmes principaux amarr", "name_it": "Amarr Core Subsystems", "name_ja": "アマーエンジニアリングサブシステム", "name_ko": "코어 서브시스템", "name_ru": "Амаррские центральные подсистемы", "name_zh": "艾玛核心子系统", "nameID": 66582, "parentGroupID": 1610 }, "1123": { "description_de": "Caldari-Kernsubsysteme.", "description_en-us": "Caldari core subsystems.", "description_es": "Subsistemas nuclearios caldaris.", "description_fr": "Sous-systèmes principaux caldari.", "description_it": "Caldari core subsystems.", "description_ja": "カルダリエンジニアリングサブシステム。", "description_ko": "칼다리 코어 서브시스템", "description_ru": "Калдарские центральные подсистемы", "description_zh": "加达里核心子系统。", "descriptionID": 65508, "hasTypes": 1, "iconID": 3636, "name_de": "Caldari-Kernsubsysteme", "name_en-us": "Caldari Core Subsystems", "name_es": "Subsistemas nuclearios caldaris", "name_fr": "Sous-systèmes principaux caldari", "name_it": "Caldari Core Subsystems", "name_ja": "カルダリエンジニアリングサブシステム", "name_ko": "코어 서브시스템", "name_ru": "Калдарские центральные подсистемы", "name_zh": "加达里核心子系统", "nameID": 66583, "parentGroupID": 1625 }, "1124": { "description_de": "Gallente-Kernsubsysteme.", "description_en-us": "Gallente core subsystems.", "description_es": "Subsistemas nuclearios gallentes.", "description_fr": "Sous-systèmes principaux gallente.", "description_it": "Gallente core subsystems.", "description_ja": "ガレンテエンジニアリングサブシステム", "description_ko": "갈란테 코어 서브시스템", "description_ru": "Галлентские центральные подсистемы", "description_zh": "盖伦特核心子系统。", "descriptionID": 65509, "hasTypes": 1, "iconID": 3636, "name_de": "Gallente-Kernsubsysteme", "name_en-us": "Gallente Core Subsystems", "name_es": "Subsistemas nuclearios gallentes", "name_fr": "Sous-systèmes principaux gallente", "name_it": "Gallente Core Subsystems", "name_ja": "ガレンテエンジニアリングサブシステム", "name_ko": "코어 서브시스템", "name_ru": "Галлентские центральные подсистемы", "name_zh": "盖伦特核心子系统", "nameID": 66584, "parentGroupID": 1627 }, "1125": { "description_de": "Minmatar-Kernsubsysteme.", "description_en-us": "Minmatar core subsystems.", "description_es": "Subsistemas nuclearios minmatarianos.", "description_fr": "Sous-systèmes principaux minmatar.", "description_it": "Minmatar core subsystems.", "description_ja": "ミンマターエンジニアリングサブシステム", "description_ko": "민마타 코어 서브시스템", "description_ru": "Минматарские центральные подсистемы", "description_zh": "米玛塔尔核心子系统。", "descriptionID": 65510, "hasTypes": 1, "iconID": 3636, "name_de": "Minmatar-Kernsubsysteme", "name_en-us": "Minmatar Core Subsystems", "name_es": "Subsistemas nuclearios minmatarianos", "name_fr": "Sous-systèmes principaux minmatar", "name_it": "Minmatar Core Subsystems", "name_ja": "ミンマターエンジニアリングサブシステム", "name_ko": "코어 서브시스템", "name_ru": "Минматарские центральные подсистемы", "name_zh": "米玛塔尔核心子系统", "nameID": 66585, "parentGroupID": 1626 }, "1126": { "description_de": "Amarrianische Verteidigungs-Subsysteme.", "description_en-us": "Amarr defensive subsystems.", "description_es": "Subsistemas defensivos amarrianos.", "description_fr": "Sous-systèmes défensifs amarr.", "description_it": "Amarr defensive subsystems.", "description_ja": "アマーの防御サブシステム。", "description_ko": "아마르 방어용 서브시스템", "description_ru": "Оборонительные подсистемы Amarr.", "description_zh": "艾玛防御子系统。", "descriptionID": 65511, "hasTypes": 1, "iconID": 3631, "name_de": "Amarr-Verteidigungssubsysteme", "name_en-us": "Amarr Defensive Subsystems", "name_es": "Subsistemas defensivos amarrianos", "name_fr": "Sous-systèmes défensifs amarr", "name_it": "Amarr Defensive Subsystems", "name_ja": "アマー防御サブシステム", "name_ko": "방어용 서브시스템", "name_ru": "Амаррские оборонительные подсистемы", "name_zh": "艾玛防御子系统", "nameID": 66586, "parentGroupID": 1610 }, "1127": { "description_de": "Caldarische Verteidigungs-Subsysteme.", "description_en-us": "Caldari defensive subsystems.", "description_es": "Subsistemas defensivos caldaris.", "description_fr": "Sous-systèmes défensifs caldari.", "description_it": "Caldari defensive subsystems.", "description_ja": "カルダリの防御サブシステム。", "description_ko": "칼다리 방어용 서브시스템", "description_ru": "Оборонительные подсистемы Caldari.", "description_zh": "加达里防御子系统。", "descriptionID": 65512, "hasTypes": 1, "iconID": 3631, "name_de": "Caldari-Verteidigungssubsysteme", "name_en-us": "Caldari Defensive Subsystems", "name_es": "Subsistemas defensivos caldaris", "name_fr": "Sous-systèmes défensifs caldari", "name_it": "Caldari Defensive Subsystems", "name_ja": "カルダリ防御サブシステム", "name_ko": "방어용 서브시스템", "name_ru": "Калдарские оборонительные подсистемы", "name_zh": "加达里防御子系统", "nameID": 66587, "parentGroupID": 1625 }, "1128": { "description_de": "Minmatarische Verteidigungs-Subsysteme.", "description_en-us": "Minmatar defensive subsystems.", "description_es": "Subsistemas defensivos minmatarianos.", "description_fr": "Sous-systèmes défensifs minmatar.", "description_it": "Minmatar defensive subsystems.", "description_ja": "ミンマターの防御サブシステム。", "description_ko": "민마타 방어용 서브시스템", "description_ru": "Оборонительные подсистемы Minmatar.", "description_zh": "米玛塔尔防御子系统。", "descriptionID": 65513, "hasTypes": 1, "iconID": 3631, "name_de": "Minmatar-Verteidigungssubsysteme", "name_en-us": "Minmatar Defensive Subsystems", "name_es": "Subsistemas defensivos minmatarianos", "name_fr": "Sous-systèmes défensifs minmatar", "name_it": "Minmatar Defensive Subsystems", "name_ja": "ミンマター防御サブシステム", "name_ko": "방어용 서브시스템", "name_ru": "Минматарские оборонительные подсистемы", "name_zh": "米玛塔尔防御子系统", "nameID": 66588, "parentGroupID": 1626 }, "1129": { "description_de": "Gallentische Verteidigungs-Subsysteme.", "description_en-us": "Gallente defensive subsystems.", "description_es": "Subsistemas defensivos gallentes.", "description_fr": "Sous-systèmes défensifs gallente.", "description_it": "Gallente defensive subsystems.", "description_ja": "ガレンテの防御サブシステム。", "description_ko": "갈란테 방어용 서브시스템", "description_ru": "Оборонительные подсистемы Gallente.", "description_zh": "盖伦特防御子系统。", "descriptionID": 65514, "hasTypes": 1, "iconID": 3631, "name_de": "Gallente-Verteidigungssubsysteme", "name_en-us": "Gallente Defensive Subsystems", "name_es": "Subsistemas defensivos gallentes", "name_fr": "Sous-systèmes défensifs gallente", "name_it": "Gallente Defensive Subsystems", "name_ja": "ガレンテ防御サブシステム", "name_ko": "방어용 서브시스템", "name_ru": "Галлентские оборонительные подсистемы", "name_zh": "盖伦特防御子系统", "nameID": 66589, "parentGroupID": 1627 }, "1130": { "description_de": "Amarrianische Angriffs-Subsysteme.", "description_en-us": "Amarr offensive subsystems.", "description_es": "Subsistemas ofensivos amarrianos.", "description_fr": "Sous-systèmes offensifs amarr.", "description_it": "Amarr offensive subsystems.", "description_ja": "アマー攻撃サブシステム。", "description_ko": "아마르 공격용 서브시스템", "description_ru": "Наступательные подсистемы Amarr.", "description_zh": "艾玛攻击子系统。", "descriptionID": 65515, "hasTypes": 1, "iconID": 3641, "name_de": "Amarr-Angriffssubsysteme", "name_en-us": "Amarr Offensive Subsystems", "name_es": "Subsistemas ofensivos amarrianos", "name_fr": "Sous-systèmes offensifs amarr", "name_it": "Amarr Offensive Subsystems", "name_ja": "アマー攻撃サブシステム", "name_ko": "공격용 서브시스템", "name_ru": "Амаррские наступательные подсистемы", "name_zh": "艾玛攻击子系统", "nameID": 66590, "parentGroupID": 1610 }, "1131": { "description_de": "Caldarische Angriffs-Subsysteme.", "description_en-us": "Caldari offensive subsystems.", "description_es": "Subsistemas ofensivos caldaris.", "description_fr": "Sous-systèmes offensifs caldari.", "description_it": "Caldari offensive subsystems.", "description_ja": "カルダリの攻撃サブシステム。", "description_ko": "칼다리 공격용 서브시스템", "description_ru": "Наступательные подсистемы Caldari.", "description_zh": "加达里攻击子系统。", "descriptionID": 65516, "hasTypes": 1, "iconID": 3641, "name_de": "Caldari-Angriffssubsysteme", "name_en-us": "Caldari Offensive Subsystems", "name_es": "Subsistemas ofensivos caldaris", "name_fr": "Sous-systèmes offensifs caldari", "name_it": "Caldari Offensive Subsystems", "name_ja": "カルダリ攻撃サブシステム", "name_ko": "공격용 서브시스템", "name_ru": "Калдарские наступательные подсистемы", "name_zh": "加达里攻击子系统", "nameID": 66591, "parentGroupID": 1625 }, "1132": { "description_de": "Gallentische Angriffs-Subsysteme.", "description_en-us": "Gallente offensive subsystems.", "description_es": "Subsistemas ofensivos gallentes.", "description_fr": "Sous-systèmes offensifs gallente.", "description_it": "Gallente offensive subsystems.", "description_ja": "ガレンテ の攻撃サブシステム。", "description_ko": "갈란테 공격용 서브시스템", "description_ru": "Наступательные подсистемы Gallente.", "description_zh": "盖伦特攻击子系统。", "descriptionID": 65517, "hasTypes": 1, "iconID": 3641, "name_de": "Gallente-Angriffssubsysteme", "name_en-us": "Gallente Offensive Subsystems", "name_es": "Subsistemas ofensivos gallentes", "name_fr": "Sous-systèmes offensifs gallente", "name_it": "Gallente Offensive Subsystems", "name_ja": "ガレンテ攻撃サブシステム", "name_ko": "공격용 서브시스템", "name_ru": "Галлентские наступательные подсистемы", "name_zh": "盖伦特攻击子系统", "nameID": 66592, "parentGroupID": 1627 }, "1133": { "description_de": "Minmatarische Angriffs-Subsysteme.", "description_en-us": "Minmatar offensive subsystems.", "description_es": "Subsistemas ofensivos minmatarianos.", "description_fr": "Sous-systèmes offensifs minmatar.", "description_it": "Minmatar offensive subsystems.", "description_ja": "ミンマター攻撃サブシステム。", "description_ko": "민마타 공격용 서브시스템", "description_ru": "Наступательные подсистемы Minmatar.", "description_zh": "米玛塔尔攻击子系统。", "descriptionID": 65518, "hasTypes": 1, "iconID": 3641, "name_de": "Minmatar-Angriffssubsysteme", "name_en-us": "Minmatar Offensive Subsystems", "name_es": "Subsistemas ofensivos minmatarianos", "name_fr": "Sous-systèmes offensifs minmatar", "name_it": "Minmatar Offensive Subsystems", "name_ja": "ミンマター攻撃サブシステム", "name_ko": "공격용 서브시스템", "name_ru": "Минматарские наступательные подсистемы", "name_zh": "米玛塔尔攻击子系统", "nameID": 66593, "parentGroupID": 1626 }, "1134": { "description_de": "Amarrianische Antriebs-Subsysteme.", "description_en-us": "Amarr propulsion subsystems.", "description_es": "Subsistemas de propulsión amarrianos.", "description_fr": "Sous-systèmes de propulsion amarr.", "description_it": "Amarr propulsion subsystems.", "description_ja": "アマー推進力サブシステム。", "description_ko": "아마르 추진기 서브시스템", "description_ru": "Двигательные подсистемы Amarr.", "description_zh": "艾玛推进子系统。", "descriptionID": 65519, "hasTypes": 1, "iconID": 3646, "name_de": "Amarr-Antriebssubsysteme", "name_en-us": "Amarr Propulsion Subsystems", "name_es": "Subsistemas de propulsión amarrianos", "name_fr": "Sous-systèmes de propulsion amarr", "name_it": "Amarr Propulsion Subsystems", "name_ja": "アマー推進力サブシステム", "name_ko": "추진기 서브시스템", "name_ru": "Амаррские двигательные подсистемы", "name_zh": "艾玛推进子系统", "nameID": 66594, "parentGroupID": 1610 }, "1135": { "description_de": "Caldarische Antriebs-Subsysteme.", "description_en-us": "Caldari propulsion subsystems.", "description_es": "Subsistemas de propulsión caldaris.", "description_fr": "Sous-systèmes de propulsion caldari.", "description_it": "Caldari propulsion subsystems.", "description_ja": "カルダリ推進力サブシステム。", "description_ko": "칼다리 추진기 서브시스템", "description_ru": "Двигательные подсистемы Caldari.", "description_zh": "加达里推进子系统。", "descriptionID": 65520, "hasTypes": 1, "iconID": 3646, "name_de": "Caldari-Antriebssubsysteme", "name_en-us": "Caldari Propulsion Subsystems", "name_es": "Subsistemas de propulsión caldaris", "name_fr": "Sous-systèmes de propulsion caldari", "name_it": "Caldari Propulsion Subsystems", "name_ja": "カルダリ推進力サブシステム", "name_ko": "추진기 서브시스템", "name_ru": "Калдарские двигательные подсистемы", "name_zh": "加达里推进子系统", "nameID": 66595, "parentGroupID": 1625 }, "1136": { "description_de": "Gallentische Antriebs-Subsysteme.", "description_en-us": "Gallente propulsion subsystems.", "description_es": "Subsistemas de propulsión gallentes.", "description_fr": "Sous-systèmes de propulsion gallente.", "description_it": "Gallente propulsion subsystems.", "description_ja": "ガレンテ推進力サブシステム。", "description_ko": "갈란테 추진기 서브시스템", "description_ru": "Двигательные подсистемы Gallente.", "description_zh": "盖伦特推进子系统。", "descriptionID": 65521, "hasTypes": 1, "iconID": 3646, "name_de": "Gallente-Antriebssubsysteme", "name_en-us": "Gallente Propulsion Subsystems", "name_es": "Subsistemas de propulsión gallentes", "name_fr": "Sous-systèmes de propulsion gallente", "name_it": "Gallente Propulsion Subsystems", "name_ja": "ガレンテ推進力サブシステム", "name_ko": "추진기 서브시스템", "name_ru": "Галлентские двигательные подсистемы", "name_zh": "盖伦特推进子系统", "nameID": 66596, "parentGroupID": 1627 }, "1137": { "description_de": "Minmatarische Antriebs-Subsysteme.", "description_en-us": "Minmatar propulsion subsystems.", "description_es": "Subsistemas de propulsión minmatarianos.", "description_fr": "Sous-systèmes de propulsion minmatar.", "description_it": "Minmatar propulsion subsystems.", "description_ja": "ミンマター推進力サブシステム。", "description_ko": "민마타 추진기 서브시스템", "description_ru": "Двигательные подсистемы Minmatar.", "description_zh": "米玛塔尔推进子系统。", "descriptionID": 65522, "hasTypes": 1, "iconID": 3646, "name_de": "Minmatar-Antriebssubsysteme", "name_en-us": "Minmatar Propulsion Subsystems", "name_es": "Subsistemas de propulsión minmatarianos", "name_fr": "Sous-systèmes de propulsion minmatar", "name_it": "Minmatar Propulsion Subsystems", "name_ja": "ミンマター推進力サブシステム", "name_ko": "추진기 서브시스템", "name_ru": "Минматарские двигательные подсистемы", "name_zh": "米玛塔尔推进子系统", "nameID": 66597, "parentGroupID": 1626 }, "1138": { "description_de": "Fortschrittliche Kreuzer, die modulare Komponenten benutzen, um maximale Vielseitigkeit zu erreichen.", "description_en-us": "Highly advanced cruisers that use modular components to achieve maximum versatility.", "description_es": "Cruceros sumamente avanzados que usan componentes modulares para alcanzar la máxima versatilidad.", "description_fr": "Croiseurs ultra avancés qui utilisent des composants modulaires pour une plus grande polyvalence.", "description_it": "Highly advanced cruisers that use modular components to achieve maximum versatility.", "description_ja": "構成部品をモジュール化することで汎用性を最大限に引き出した極めて高性能な巡洋艦。", "description_ko": "모듈 개조를 통해 다양한 성능을 낼 수 있는 최첨단 크루저입니다.", "description_ru": "Высокотехнологичные крейсера, оптимизация которых для выполнения конкретных задач осуществляется путем изменения конфигурации модульного корпуса.", "description_zh": "非常先进的模块化巡洋舰,可以胜任多种用途。", "descriptionID": 65370, "hasTypes": 0, "iconID": 1443, "name_de": "Strategische Kreuzer", "name_en-us": "Strategic Cruisers", "name_es": "Cruceros estratégicos", "name_fr": "Croiseurs stratégiques", "name_it": "Strategic Cruisers", "name_ja": "戦略的巡洋艦", "name_ko": "전략 크루저", "name_ru": "Стратегические крейсеры", "name_zh": "战略巡洋舰", "nameID": 66444, "parentGroupID": 1368 }, "1139": { "description_de": "Designs amarrianischer stategischer Kreuzer.", "description_en-us": "Amarr strategic cruiser designs.", "description_es": "Diseños de cruceros estratégicos amarrianos.", "description_fr": "Modèles de croiseurs stratégiques amarr.", "description_it": "Amarr strategic cruiser designs.", "description_ja": "アマー戦略的巡洋艦設計図。", "description_ko": "아마르의 전략 크루저입니다.", "description_ru": "Стратегические крейсеры разработки Империи Amarr.", "description_zh": "艾玛战略巡洋舰设计", "descriptionID": 65271, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 66345, "parentGroupID": 1138 }, "1140": { "description_de": "Designs caldarischer strategischer Kreuzer.", "description_en-us": "Caldari strategic cruiser designs.", "description_es": "Diseños de cruceros estratégicos caldaris.", "description_fr": "Modèles de croiseurs stratégiques caldari.", "description_it": "Caldari strategic cruiser designs.", "description_ja": "ガレンテ戦略的巡洋艦設計図。", "description_ko": "칼다리의 전략 크루저입니다.", "description_ru": "Стратегические крейсеры разработки Государства Caldari.", "description_zh": "加达里战略巡洋舰设计", "descriptionID": 65272, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 66346, "parentGroupID": 1138 }, "1141": { "description_de": "Designs gallentischer strategischer Kreuzer.", "description_en-us": "Gallente strategic cruiser designs.", "description_es": "Diseños de cruceros estratégicos gallentes.", "description_fr": "Modèles de croiseurs stratégiques gallente.", "description_it": "Gallente strategic cruiser designs.", "description_ja": "ガレンテの戦略的な巡洋艦設計図。", "description_ko": "갈란테의 전략 크루저입니다.", "description_ru": "Стратегические крейсеры разработки Федерации Gallente.", "description_zh": "盖伦特战略巡洋舰设计", "descriptionID": 65273, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 66347, "parentGroupID": 1138 }, "1142": { "description_de": "Designs minmatarischer strategischer Kreuzer.", "description_en-us": "Minmatar strategic cruiser designs.", "description_es": "Diseños de cruceros estratégicos minmatarianos.", "description_fr": "Modèles de croiseurs stratégiques minmatar.", "description_it": "Minmatar strategic cruiser designs.", "description_ja": "ミンマター戦略的巡洋艦設計書。", "description_ko": "민마타의 전략 크루저입니다.", "description_ru": "Стратегические крейсеры разработки Республики Minmatar.", "description_zh": "米玛塔尔战略巡洋舰设计", "descriptionID": 65274, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 66348, "parentGroupID": 1138 }, "1147": { "description_de": "Die Bausteine fortschrittlicher Subsysteme.", "description_en-us": "The building blocks of advanced subsystems.", "description_es": "Los pilares básicos de los subsistemas avanzados.", "description_fr": "Blocs de construction des sous-systèmes avancés.", "description_it": "The building blocks of advanced subsystems.", "description_ja": "高性能サブシステムの建築素材。", "description_ko": "첨단 서브시스템의 근간을 이루는 부품입니다.", "description_ru": "Компоненты усовершенствованных подсистем.", "description_zh": "制造先进子系统所需的各种组件。", "descriptionID": 65454, "hasTypes": 1, "iconID": 3721, "name_de": "Subsystem-Komponenten", "name_en-us": "Subsystem Components", "name_es": "Componentes de subsistemas", "name_fr": "Composants de sous-système", "name_it": "Subsystem Components", "name_ja": "サブシステム部品", "name_ko": "서브시스템 부품", "name_ru": "Компоненты подсистем", "name_zh": "子系统组件", "nameID": 66529, "parentGroupID": 1035 }, "1191": { "description_de": "Blaupausen für Subsystem-Komponenten", "description_en-us": "Blueprints of Subsystem Components.", "description_es": "Planos de componentes de subsistemas.", "description_fr": "Plans de construction de composants de sous-système.", "description_it": "Blueprints of Subsystem Components.", "description_ja": "サブシステム部品のブループリント。", "description_ko": "서브시스템 부품 블루프린트입니다.", "description_ru": "Чертежи компонентов для подсистем.", "description_zh": "子系统组件的蓝图。", "descriptionID": 65308, "hasTypes": 1, "iconID": 2703, "name_de": "Subsystem-Komponenten", "name_en-us": "Subsystem Components", "name_es": "Componentes de subsistemas", "name_fr": "Composants de sous-système", "name_it": "Subsystem Components", "name_ja": "サブシステム部品", "name_ko": "서브시스템 부품", "name_ru": "Компоненты подсистем", "name_zh": "子系统组件", "nameID": 66382, "parentGroupID": 800 }, "1192": { "description_de": "Designs für Fraktions-Auto-Zielerfassung.", "description_en-us": "Faction auto-targeting designs.", "description_es": "Diseños faccionarios de adquisición automática de objetivos.", "description_fr": "Modèles de ciblages automatiques de faction.", "description_it": "Faction auto-targeting designs.", "description_ja": "勢力別自動捕捉型ミサイルの設計図。", "description_ko": "팩션 오토 타겟팅입니다.", "description_ru": "Модификации фракционных ракет, оборудованных системами самонаведения.", "description_zh": "势力自动锁导弹设计。", "descriptionID": 65392, "hasTypes": 1, "iconID": 1335, "name_de": "Fraktion", "name_en-us": "Faction Auto-Targeting", "name_es": "Adquisición automática de objetivos faccionaria", "name_fr": "Auto-ciblage de faction", "name_it": "Faction Auto-Targeting", "name_ja": "勢力別自動捕捉型", "name_ko": "팩션 오토 타겟팅 미사일", "name_ru": "Армейские", "name_zh": "势力自动锁定导弹", "nameID": 66466, "parentGroupID": 115 }, "1193": { "description_de": "Standard XL Torpedo-Designs.", "description_en-us": "Standard XL torpedo designs.", "description_es": "Diseños de torpedos XL estándar.", "description_fr": "Modèles de torpilles XL standard.", "description_it": "Standard XL torpedo designs.", "description_ja": "標準型XLトルピードの設計。", "description_ko": "일반 XL 토피도입니다.", "description_ru": "Проекты стандартных вариантов оснащения торпед.", "description_zh": "标准超大型鱼雷设计。", "descriptionID": 65393, "hasTypes": 1, "iconID": 1346, "name_de": "Standard XL Torpedos", "name_en-us": "Standard XL Torpedoes", "name_es": "Torpedos XL estándar", "name_fr": "Torpilles standard XL", "name_it": "Standard XL Torpedoes", "name_ja": "標準型XLトルピード", "name_ko": "일반 XL 토피도", "name_ru": "Стандартные", "name_zh": "标准超大型鱼雷", "nameID": 66467, "parentGroupID": 505 }, "1194": { "description_de": "Fraktion XL Torpedo-Designs.", "description_en-us": "Faction XL torpedo designs.", "description_es": "Diseños de torpedos XL faccionarios.", "description_fr": "Modèles de torpilles XL de faction.", "description_it": "Faction XL torpedo designs.", "description_ja": "ファクションXLトルピードの設計。", "description_ko": "팩션 XL 토피도입니다.", "description_ru": "Проекты пиратских и армейских торпед.", "description_zh": "势力超大型鱼雷设计。", "descriptionID": 65394, "hasTypes": 1, "iconID": 1346, "name_de": "Fraktion XL Torpedos", "name_en-us": "Faction XL Torpedoes", "name_es": "Torpedos XL faccionarios", "name_fr": "Torpilles de faction XL", "name_it": "Faction XL Torpedoes", "name_ja": "ファクションXLトルピード", "name_ko": "팩션 XL 토피도", "name_ru": "Пиратские и армейские", "name_zh": "势力超大型鱼雷", "nameID": 66468, "parentGroupID": 505 }, "1195": { "description_de": "Streben und Bänder, welche die strukturelle Haltbarkeit eines Raumschiffs verbessern.", "description_en-us": "Struts and braces that help improve a starship's structural integrity.", "description_es": "Montantes y soportes que ayudan a mejorar la integridad estructural de una nave.", "description_fr": "Traverses et supports contribuant à améliorer l'intégrité structurale d'un vaisseau spatial.", "description_it": "Struts and braces that help improve a starship's structural integrity.", "description_ja": "宇宙船の構造強度を向上させる補強材や固定具。", "description_ko": "함선의 선체 내구도를 향상하는 강화 격벽입니다.", "description_ru": "Распорки и стяжки, применяемые для укрепления несущих конструкций кораблей.", "description_zh": "提高舰船结构强度的各种支撑构架。", "descriptionID": 65389, "hasTypes": 1, "iconID": 76, "name_de": "Verstärkte Schotten", "name_en-us": "Reinforced Bulkheads", "name_es": "Mamparos reforzados", "name_fr": "Cloisons renforcées", "name_it": "Reinforced Bulkheads", "name_ja": "追加隔壁", "name_ko": "강화 격벽", "name_ru": "Усиленные переборки", "name_zh": "强化舱隔壁", "nameID": 66463, "parentGroupID": 135 }, "1196": { "description_de": "Leichte Materialien, die eine Geschwindigkeitsverbesserung auf Kosten der Stabilität der internen Struktur bewirken.", "description_en-us": "Lightweight materials that provide a boost in speed by weakening a starship's internal structure.", "description_es": "Materiales ligeros que mejoran la velocidad de la nave a costa de debilitar su estructura interna.", "description_fr": "Matériaux légers qui donnent une accélération en affaiblissant la structure interne d'un vaisseau spatial.", "description_it": "Lightweight materials that provide a boost in speed by weakening a starship's internal structure.", "description_ja": "軽量化素材で、船の速度が向上する一方、内部構造の強度は低下する。", "description_ko": "가볍지만 경도가 낮은 물질로 이루어져 함선의 속도가 증가하는 반면 함선의 선체 내구도가 감소합니다.", "description_ru": "Сверхлегкие материалы, обеспечивающие выигрыш в скорости за счет снижения веса несущих конструкций корабля и уменьшения их надежности.", "description_zh": "此类轻质材料通过牺牲舰船结构强度来提升舰船速度。", "descriptionID": 65390, "hasTypes": 1, "iconID": 1042, "name_de": "Interne Nanofaserstrukturen", "name_en-us": "Nanofiber Internal Structures", "name_es": "Estructuras internas de nanofibra", "name_fr": "Structures internes en nanofibre", "name_it": "Nanofiber Internal Structures", "name_ja": "ナノファイバー船内構造", "name_ko": "나노섬유 내부 스탠드업 구조물", "name_ru": "Нановолоконные несущие конструкции", "name_zh": "纳米纤维内部构架", "nameID": 66464, "parentGroupID": 135 }, "1197": { "description_de": "Der zusätzliche Stauraum, den diese Erweiterung einem Raumschiff hinzufügt, reduziert zwar dessen Geschwindigkeit, bietet aber auch mehr Platz, um Fracht zu lagern.", "description_en-us": "The extra bulk this expansion adds to a starship reduces its speed, but gives it more room to store cargo.", "description_es": "El volumen adicional que añade esta expansión a una nave reduce su velocidad, pero le proporciona más espacio de almacenamiento.", "description_fr": "Le volume supplémentaire qu'apporte cette extension à un vaisseau spatial réduit sa vitesse, mais offre plus d'espace de stockage des marchandises.", "description_it": "The extra bulk this expansion adds to a starship reduces its speed, but gives it more room to store cargo.", "description_ja": "この拡張パーツはかさばるので宇宙船の速度を鈍らせるが、カーゴ容量を増やしてくれる。", "description_ko": "화물실을 추가로 설치하면 적재량이 증가하는 반면 함선의 속도가 감소합니다.", "description_ru": "Установка этого модуля приводит к увеличению объема грузового отсека и снижению максимальной скорости движения корабля.", "description_zh": "这类船体扩展装备通过牺牲船只的速度来换取更大的货柜舱容量。", "descriptionID": 65391, "hasTypes": 1, "iconID": 92, "name_de": "Frachtraumerweiterungen", "name_en-us": "Expanded Cargoholds", "name_es": "Expansión de la bodega", "name_fr": "Expansions de soute", "name_it": "Expanded Cargoholds", "name_ja": "カーゴ容量追加", "name_ko": "화물적재량 확대장치", "name_ru": "Расширения грузового отсека", "name_zh": "扩充货柜舱", "nameID": 66465, "parentGroupID": 135 }, "1198": { "description_de": "Blueprints für Startvorrichtungen für Scansonden.", "description_en-us": "Blueprints of Scan Probe Launchers.", "description_es": "Planos de lanzasondas de escaneo.", "description_fr": "Plans de construction de lanceurs de sondes de balayage.", "description_it": "Blueprints of Scan Probe Launchers.", "description_ja": "スキャンプローブランチャーのブループリント。", "description_ko": "스캔 프로브 런처 블루프린트입니다.", "description_ru": "Чертежи пусковых установок сканирующих зондов.", "description_zh": "各种扫描探针发射器的蓝图。", "descriptionID": 65295, "hasTypes": 1, "iconID": 2703, "name_de": "Scansondenwerfer", "name_en-us": "Scan Probe Launchers", "name_es": "Lanzasondas de escaneo", "name_fr": "Lanceurs de sondes de balayage", "name_it": "Scan Probe Launchers", "name_ja": "スキャンプローブランチャー", "name_ko": "스캔 프로브 런처", "name_ru": "Пусковые установки разведзондов", "name_zh": "扫描探针发射器", "nameID": 66369, "parentGroupID": 1710 }, "1199": { "description_de": "Scansondendesigns.", "description_en-us": "Scan probe designs.", "description_es": "Diseños de sondas de escaneo.", "description_fr": "Modèles de sondes de balayage.", "description_it": "Scan probe designs.", "description_ja": "スキャンプローブの設計図。", "description_ko": "스캔 프로브입니다.", "description_ru": "Модификации сканирующих зондов.", "description_zh": "扫描探针设计。", "descriptionID": 65398, "hasTypes": 1, "iconID": 1722, "name_de": "Scansonden", "name_en-us": "Scan Probes", "name_es": "Sondas de escaneo", "name_fr": "Sondes de balayage", "name_it": "Scan Probes", "name_ja": "スキャンプローブ", "name_ko": "스캔 프로브", "name_ru": "Разведзонды", "name_zh": "扫描探针", "nameID": 66472, "parentGroupID": 120 }, "1200": { "description_de": "Überwachungssondendesigns.", "description_en-us": "Survey probe designs.", "description_es": "Diseños de sondas de prospección.", "description_fr": "Modèles de sondes d'inspection.", "description_it": "Survey probe designs.", "description_ja": "衛星調査プローブの設計図。", "description_ko": "조사 프로브입니다.", "description_ru": "Модификации исследовательских зондов.", "description_zh": "测量探针设计。", "descriptionID": 65399, "hasTypes": 1, "iconID": 2663, "name_de": "Vermessungssonden", "name_en-us": "Survey Probes", "name_es": "Sondas de prospección", "name_fr": "Sondes d'inspection", "name_it": "Survey Probes", "name_ja": "衛星調査プローブ", "name_ko": "조사 프로브", "name_ru": "Зонды луноразведки", "name_zh": "测量探针", "nameID": 66473, "parentGroupID": 120 }, "1201": { "description_de": "Unterbrechungssondendesigns.", "description_en-us": "Interdiction probe designs.", "description_es": "Diseños de sondas de interdicción.", "description_fr": "Modèles de sondes d'interdiction.", "description_it": "Interdiction probe designs.", "description_ja": "インターディクションプローブ設計図。", "description_ko": "인터딕션 프로브입니다.", "description_ru": "Модификации заградительных зондов", "description_zh": "拦截探针设计。", "descriptionID": 65400, "hasTypes": 1, "iconID": 1721, "name_de": "Unterbrechungssonden", "name_en-us": "Interdiction Probes", "name_es": "Sondas de interdicción", "name_fr": "Sondes d'interdiction", "name_it": "Interdiction Probes", "name_ja": "インターディクションプローブ", "name_ko": "인터딕션 프로브", "name_ru": "Зонды варп-заграждения", "name_zh": "拦截探针", "nameID": 66474, "parentGroupID": 120 }, "1202": { "description_de": "Blueprints für große Panzerungsausrüstung.", "description_en-us": "Blueprints of Large Armor Rigs.", "description_es": "Planos de complementos grandes de blindaje.", "description_fr": "Plans de construction de grands modules d'optimisation de blindage.", "description_it": "Blueprints of Large Armor Rigs.", "description_ja": "大型アーマーリグのブループリント。", "description_ko": "대형 장갑 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на броневую защиту корабля.", "description_zh": "各种大型装甲改装件的蓝图。", "descriptionID": 65310, "hasTypes": 1, "iconID": 2703, "name_de": "Große Panzerungsmodifikationen", "name_en-us": "Large Armor Rigs", "name_es": "Complementos grandes de blindaje", "name_fr": "Grandes modifications de blindage", "name_it": "Large Armor Rigs", "name_ja": "大型アーマーリグ", "name_ko": "대형 장갑 리그", "name_ru": "Большие", "name_zh": "大型装甲改装件", "nameID": 66384, "parentGroupID": 944 }, "1203": { "description_de": "Blueprints für kleine Panzerungsausrüstung", "description_en-us": "Blueprints of Small Armor Rigs.", "description_es": "Planos de complementos pequeños de blindaje.", "description_fr": "Plans de construction de petits modules d'optimisation de blindage.", "description_it": "Blueprints of Small Armor Rigs.", "description_ja": "小型アーマーリグのブループリント。", "description_ko": "소형 장갑 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на броневую защиту корабля.", "description_zh": "各种小型装甲改装件的蓝图。", "descriptionID": 65311, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Panzerungsmodifikationen", "name_en-us": "Small Armor Rigs", "name_es": "Complementos pequeños de blindaje", "name_fr": "Petites modifications de blindage", "name_it": "Small Armor Rigs", "name_ja": "小型アーマーリグ", "name_ko": "소형 장갑 리그", "name_ru": "Малые", "name_zh": "小型装甲改装件", "nameID": 66385, "parentGroupID": 944 }, "1204": { "description_de": "Blueprints für mittlere Panzerungsausrüstung.", "description_en-us": "Blueprints of Medium Armor Rigs.", "description_es": "Planos de complementos medianos de blindaje.", "description_fr": "Plans de construction de modules d'optimisation de blindage de taille intermédiaire.", "description_it": "Blueprints of Medium Armor Rigs.", "description_ja": "中型アーマーリグのブループリント。", "description_ko": "중형 장갑 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на броневую защиту корабля.", "description_zh": "各种中型装甲改装件的蓝图。", "descriptionID": 65312, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Panzerungsmodifikationen", "name_en-us": "Medium Armor Rigs", "name_es": "Complementos medianos de blindaje", "name_fr": "Modifications de blindage intermédiaires", "name_it": "Medium Armor Rigs", "name_ja": "中型アーマーリグ", "name_ko": "중형 장갑 리그", "name_ru": "Средние", "name_zh": "中型装甲改装件", "nameID": 66386, "parentGroupID": 944 }, "1206": { "description_de": "Modifikationen, welche die Panzerung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's armor.", "description_es": "Modificaciones que afectan al blindaje de una nave pequeña.", "description_fr": "Modifications qui affectent le blindage d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's armor.", "description_ja": "小型宇宙船のアーマーに影響する改造。", "description_ko": "소형 함선의 장갑을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на броневую защиту кораблей малых размеров.", "description_zh": "小型舰船所用的装甲改装件。", "descriptionID": 65464, "hasTypes": 1, "iconID": 3194, "name_de": "Kleine Panzerungsmodifikationen", "name_en-us": "Small Armor Rigs", "name_es": "Complementos pequeños de blindaje", "name_fr": "Petites modifications de blindage", "name_it": "Small Armor Rigs", "name_ja": "小型アーマーリグ", "name_ko": "소형 장갑 리그", "name_ru": "Малые", "name_zh": "小型装甲改装件", "nameID": 66539, "parentGroupID": 956 }, "1207": { "description_de": "Modifikationen, welche die Panzerung eines mittleren Raumschiffs betreffen.", "description_en-us": "Modifications that affect a medium starship's armor.", "description_es": "Modificaciones que afectan al blindaje de una nave mediana.", "description_fr": "Modifications qui affectent le blindage d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's armor.", "description_ja": "中型宇宙船のアーマーに影響する改造。", "description_ko": "중형 함선의 장갑을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на броневую защиту кораблей среднего тоннажа.", "description_zh": "中型舰船所用的装甲改装件。", "descriptionID": 65465, "hasTypes": 1, "iconID": 3194, "name_de": "Mittlere Panzerungsmodifikationen", "name_en-us": "Medium Armor Rigs", "name_es": "Complementos medianos de blindaje", "name_fr": "Modifications de blindage intermédiaires", "name_it": "Medium Armor Rigs", "name_ja": "中型アーマーリグ", "name_ko": "중형 장갑 리그", "name_ru": "Средние", "name_zh": "中型装甲改装件", "nameID": 66540, "parentGroupID": 956 }, "1208": { "description_de": "Modifikationen, welche die Panzerung eines großen Raumschiffs anpassen.", "description_en-us": "Modifications that affect a large starship's armor.", "description_es": "Modificaciones que afectan al blindaje de una nave grande.", "description_fr": "Modifications qui affectent le blindage d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's armor.", "description_ja": "大型艦船のアーマーに影響する改造。", "description_ko": "대형 함선의 장갑을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на броневую защиту тяжелых кораблей.", "description_zh": "大型舰船所用的装甲改装件。", "descriptionID": 65466, "hasTypes": 1, "iconID": 3194, "name_de": "Große Panzerungsmodifikationen", "name_en-us": "Large Armor Rigs", "name_es": "Complementos grandes de blindaje", "name_fr": "Grandes modifications de blindage", "name_it": "Large Armor Rigs", "name_ja": "大型アーマーリグ", "name_ko": "대형 장갑 리그", "name_ru": "Большие", "name_zh": "大型装甲改装件", "nameID": 66541, "parentGroupID": 956 }, "1210": { "description_de": "Modifikationen, welche die Astronautik kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's astronautics.", "description_es": "Modificaciones que afectan a la astronáutica de una nave pequeña.", "description_fr": "Modifications qui affectent les éléments astronautiques d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's astronautics.", "description_ja": "小型宇宙船の宇宙航行性能に影響する改造。", "description_ko": "소형 함선의 항법 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на пилотажные качества кораблей малых размеров.", "description_zh": "小型舰船所用的航天技术改装件。", "descriptionID": 65467, "hasTypes": 1, "iconID": 3196, "name_de": "Kleine Astronautische Modifikationen", "name_en-us": "Small Astronautic Rigs", "name_es": "Complementos pequeños de astronáutica", "name_fr": "Petites modifications astronautiques", "name_it": "Small Astronautic Rigs", "name_ja": "小型宇宙航行リグ", "name_ko": "소형 항법 리그", "name_ru": "Малые", "name_zh": "小型航天技术改装件", "nameID": 66542, "parentGroupID": 957 }, "1211": { "description_de": "Modifikationen, welche die Astronautik eines mittleren Raumschiffs betreffen.", "description_en-us": "Modifications that affect a medium starship's astronautics.", "description_es": "Modificaciones que afectan a la astronáutica de una nave mediana.", "description_fr": "Modifications qui affectent les éléments astronautiques d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's astronautics.", "description_ja": "中型宇宙船の宇宙航行性能に影響する改造。", "description_ko": "중형 함선의 항법 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на пилотажные качества кораблей среднего тоннажа.", "description_zh": "中型舰船所用的航天技术改装件。", "descriptionID": 65468, "hasTypes": 1, "iconID": 3196, "name_de": "Mittlere Astronautische Modifikationen", "name_en-us": "Medium Astronautic Rigs", "name_es": "Complementos medianos de astronáutica", "name_fr": "Modifications astronautiques intermédiaires", "name_it": "Medium Astronautic Rigs", "name_ja": "中型宇宙航行リグ", "name_ko": "중형 항법 리그", "name_ru": "Средние", "name_zh": "中型航天技术改装件", "nameID": 66543, "parentGroupID": 957 }, "1212": { "description_de": "Modifikationen, welche die Astronautik eines großen Raumschiffs anpassen.", "description_en-us": "Modifications that affect a large starship's astronautics.", "description_es": "Modificaciones que afectan a la astronáutica de una nave grande.", "description_fr": "Modifications qui affectent les éléments astronautiques d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's astronautics.", "description_ja": "大型艦船の宇宙飛行性能に影響する改造。", "description_ko": "대형 함선의 항법 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на пилотажные качества тяжелых кораблей.", "description_zh": "大型舰船所用的航天技术改装件。", "descriptionID": 65469, "hasTypes": 1, "iconID": 3196, "name_de": "Große Astronautische Modifikationen", "name_en-us": "Large Astronautic Rigs", "name_es": "Complementos grandes de astronáutica", "name_fr": "Grandes modifications astronautiques", "name_it": "Large Astronautic Rigs", "name_ja": "大型宇宙航行リグ", "name_ko": "대형 항법 리그", "name_ru": "Большие", "name_zh": "大型航天技术改装件", "nameID": 66544, "parentGroupID": 957 }, "1213": { "description_de": "Modifikationen, welche die Drohnen kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's drones.", "description_es": "Modificaciones que afectan a los drones de una nave pequeña.", "description_fr": "Modifications qui affectent les drones d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's drones.", "description_ja": "小型艦船のドローンに影響する改造。", "description_ko": "소형 함선의 드론 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу дронов, запускаемых с борта кораблей малых размеров.", "description_zh": "小型舰船所用的无人机改装件。", "descriptionID": 65470, "hasTypes": 1, "iconID": 3200, "name_de": "Kleine Drohnenmodifikationen", "name_en-us": "Small Drone Rigs", "name_es": "Complementos pequeños de drones", "name_fr": "Petites modifications de drone", "name_it": "Small Drone Rigs", "name_ja": "小型ドローンリグ", "name_ko": "소형 드론 리그", "name_ru": "Малые", "name_zh": "小型无人机改装件", "nameID": 66545, "parentGroupID": 958 }, "1214": { "description_de": "Modifikationen, welche die Drohnen eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's drones.", "description_es": "Modificaciones que afectan a los drones de una nave mediana.", "description_fr": "Modifications qui affectent les drones d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's drones.", "description_ja": "中型宇宙船のドローンに影響する改造。", "description_ko": "중형 함선의 드론 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу дронов, запускаемых с борта кораблей среднего тоннажа.", "description_zh": "中型舰船所用的无人机改装件。", "descriptionID": 65471, "hasTypes": 1, "iconID": 3200, "name_de": "Mittlere Drohnenmodifikationen", "name_en-us": "Medium Drone Rigs", "name_es": "Complementos medianos de drones", "name_fr": "Modifications de drone intermédiaires", "name_it": "Medium Drone Rigs", "name_ja": "中型ドローンリグ", "name_ko": "중형 드론 리그", "name_ru": "Средние", "name_zh": "中型无人机改装件", "nameID": 66546, "parentGroupID": 958 }, "1215": { "description_de": "Modifikationen, welche die Drohnen eines großen Raumschiffes betreffen.", "description_en-us": "Modifications that affect a large starship's drones.", "description_es": "Modificaciones que afectan a los drones de una nave grande.", "description_fr": "Modifications qui affectent les drones d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's drones.", "description_ja": "大型宇宙船のドローンに影響する改造。", "description_ko": "대형 함선의 드론 시스템을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу дронов, запускаемых с борта тяжелых кораблей.", "description_zh": "大型舰船所用的无人机改装件。", "descriptionID": 65472, "hasTypes": 1, "iconID": 3200, "name_de": "Große Drohnenmodifikationen", "name_en-us": "Large Drone Rigs", "name_es": "Complementos grandes de drones", "name_fr": "Grandes modifications de drone", "name_it": "Large Drone Rigs", "name_ja": "大型ドローンリグ", "name_ko": "대형 드론 리그", "name_ru": "Большие", "name_zh": "大型无人机改装件", "nameID": 66547, "parentGroupID": 958 }, "1219": { "description_de": "Modifikationen, welche die Fähigkeit zur elektronischen Kriegsführung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's electronic warfare capabilities.", "description_es": "Modificaciones que afectan a las capacidades de guerra electrónica de una nave pequeña.", "description_fr": "Modifications qui affectent les capacités de guerre électronique d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's electronic warfare capabilities.", "description_ja": "小型宇宙船の電子戦性能に影響するブループリント。", "description_ko": "소형 함선의 전자전 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу систем электронного противодействия кораблей малых размеров.", "description_zh": "小型舰船所用的电子战改装件。", "descriptionID": 65476, "hasTypes": 1, "iconID": 3198, "name_de": "Kleine Elektronische Höchstleistungsmodifikationen", "name_en-us": "Small Electronics Superiority Rigs", "name_es": "Complementos pequeños de superioridad electrónica", "name_fr": "Petites modifications de supériorité électronique", "name_it": "Small Electronics Superiority Rigs", "name_ja": "小型高性能エレクトロニクスリグ", "name_ko": "소형 전자공학 리그", "name_ru": "Малые", "name_zh": "小型电子压制改装件", "nameID": 66551, "parentGroupID": 960 }, "1220": { "description_de": "Modifikationen, welche die Fähigkeit zur elektronischen Kriegsführung eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's electronic warfare capabilities.", "description_es": "Modificaciones que afectan a las capacidades de guerra electrónica de una nave mediana.", "description_fr": "Modifications qui affectent les capacités de guerre électronique d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's electronic warfare capabilities.", "description_ja": "中型宇宙船の電子戦性能に影響する改造。", "description_ko": "중형 함선의 전자전 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу систем электронного противодействия кораблей среднего тоннажа.", "description_zh": "中型舰船所用的电子战改装件。", "descriptionID": 65477, "hasTypes": 1, "iconID": 3198, "name_de": "Mittlere Elektronische Höchstleistungsmodifikationen", "name_en-us": "Medium Electronics Superiority Rigs", "name_es": "Complementos medianos de superioridad electrónica", "name_fr": "Modifications de supériorité électronique intermédiaires", "name_it": "Medium Electronics Superiority Rigs", "name_ja": "中型高性能エレクトロニクスリグ", "name_ko": "중형 전자공학 리그", "name_ru": "Средние", "name_zh": "中型电子压制改装件", "nameID": 66552, "parentGroupID": 960 }, "1221": { "description_de": "Modifikationen, welche die Fähigkeiten zur elektronischen Kriegsführung eines großen Raumschiffes betreffen.", "description_en-us": "Modifications that affect a large starship's electronic warfare capabilities.", "description_es": "Modificaciones que afectan a las capacidades de guerra electrónica de una nave grande.", "description_fr": "Modifications qui affectent les capacités de guerre électronique d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's electronic warfare capabilities.", "description_ja": "大型艦船の電子戦性能に影響する改造。", "description_ko": "대형 함선의 전자전 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу систем электронного противодействия тяжелых кораблей.", "description_zh": "大型舰船所用的电子战改装件。", "descriptionID": 65478, "hasTypes": 1, "iconID": 3198, "name_de": "Große Elektronische Höchstleistungsmodifikationen", "name_en-us": "Large Electronics Superiority Rigs", "name_es": "Complementos grandes de superioridad electrónica", "name_fr": "Grandes modifications de supériorité électronique", "name_it": "Large Electronics Superiority Rigs", "name_ja": "大型高性能エレクトロニクスリグ", "name_ko": "대형 전자공학 리그", "name_ru": "Большие", "name_zh": "大型电子压制改装件", "nameID": 66553, "parentGroupID": 960 }, "1222": { "description_de": "Modifikationen, welche die Stromversorgung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's energy grid.", "description_es": "Modificaciones que afectan al sistema de energía de una nave pequeña.", "description_fr": "Modifications qui affectent le réseau d'alimentation d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's energy grid.", "description_ja": "小型宇宙船のエネルギー回路に影響する改造。", "description_ko": "소형 함선의 에너지그리드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовых энергетических установок кораблей малых размеров.", "description_zh": "小型舰船所用的能量栅格改装件。", "descriptionID": 65479, "hasTypes": 1, "iconID": 3195, "name_de": "Kleine Modifikationen für Ingenieurwesen", "name_en-us": "Small Engineering Rigs", "name_es": "Complementos pequeños de ingeniería", "name_fr": "Petites modifications d'ingénierie", "name_it": "Small Engineering Rigs", "name_ja": "小型エンジニアリングリグ", "name_ko": "소형 엔지니어링 리그", "name_ru": "Малые", "name_zh": "小型工程改装件", "nameID": 66554, "parentGroupID": 961 }, "1223": { "description_de": "Modifikationen, welche die Stromversorgung eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's energy grid.", "description_es": "Modificaciones que afectan al sistema de energía de una nave mediana.", "description_fr": "Modifications qui affectent le réseau d'alimentation d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's energy grid.", "description_ja": "中型宇宙船のエネルギー回路に影響する改造。", "description_ko": "중형 함선의 에너지그리드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовых энергетических установок кораблей среднего тоннажа.", "description_zh": "中型舰船所用的能量栅格改装件。", "descriptionID": 65480, "hasTypes": 1, "iconID": 3195, "name_de": "Mittlere Modifikationen für Ingenieurwesen", "name_en-us": "Medium Engineering Rigs", "name_es": "Complementos medianos de ingeniería", "name_fr": "Modifications d'ingénierie intermédiaires", "name_it": "Medium Engineering Rigs", "name_ja": "中型エンジニアリングリグ", "name_ko": "중형 엔지니어링 리그", "name_ru": "Средние", "name_zh": "中型工程改装件", "nameID": 66555, "parentGroupID": 961 }, "1224": { "description_de": "Modifikationen, welche die Stromversorgung eines großen Raumschiffes betreffen.", "description_en-us": "Modifications that affect a large starship's energy grid.", "description_es": "Modificaciones que afectan al sistema de energía de una nave grande.", "description_fr": "Modifications qui affectent le réseau d'alimentation d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's energy grid.", "description_ja": "大型艦船のエネルギー回路に影響する改造。", "description_ko": "대형 함선의 에너지그리드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовых энергетических установок тяжелых кораблей.", "description_zh": "大型舰船所用的能量栅格改装件。", "descriptionID": 65481, "hasTypes": 1, "iconID": 3195, "name_de": "Große Modifikationen für Ingenieurwesen", "name_en-us": "Large Engineering Rigs", "name_es": "Complementos grandes de ingeniería", "name_fr": "Grandes modifications d'ingénierie", "name_it": "Large Engineering Rigs", "name_ja": "大型エンジニアリングリグ", "name_ko": "대형 엔지니어링 리그", "name_ru": "Большие", "name_zh": "大型工程改装件", "nameID": 66556, "parentGroupID": 961 }, "1225": { "description_de": "Modifikationen, welche die Energiewaffen kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's energy weapons.", "description_es": "Modificaciones que afectan a las armas de energía de una nave pequeña.", "description_fr": "Modifications qui affectent les armes à énergie d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's energy weapons.", "description_ja": "小型宇宙船のエネルギー兵器に影響する改造。", "description_ko": "소형 함선의 에너지 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового энергетического оружия кораблей малых размеров.", "description_zh": "小型舰船所用的能量武器改装件。", "descriptionID": 65482, "hasTypes": 1, "iconID": 3203, "name_de": "Kleine Energiewaffenmodifikationen", "name_en-us": "Small Energy Weapon Rigs", "name_es": "Complementos pequeños de armas de energía", "name_fr": "Petites modifications d'arme à énergie", "name_it": "Small Energy Weapon Rigs", "name_ja": "小型エネルギー兵器リグ", "name_ko": "소형 에너지 무기 리그", "name_ru": "Малые", "name_zh": "小型能量武器改装件", "nameID": 66557, "parentGroupID": 962 }, "1226": { "description_de": "Modifikationen, welche die Energiewaffen eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's energy weapons.", "description_es": "Modificaciones que afectan a las armas de energía de una nave mediana.", "description_fr": "Modifications qui affectent les armes à énergie d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's energy weapons.", "description_ja": "中型宇宙船のエネルギー兵器に影響する改造パーツ。", "description_ko": "중형 함선의 에너지 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового энергетического оружия кораблей среднего тоннажа.", "description_zh": "中型舰船所用的能量武器改装件。", "descriptionID": 65483, "hasTypes": 1, "iconID": 3203, "name_de": "Mittlere Energiewaffenmodifikationen", "name_en-us": "Medium Energy Weapon Rigs", "name_es": "Complementos medianos de armas de energía", "name_fr": "Modifications d'arme à énergie intermédiaires", "name_it": "Medium Energy Weapon Rigs", "name_ja": "中型エネルギー兵器リグ", "name_ko": "중형 에너지 무기 리그", "name_ru": "Средние", "name_zh": "中型能量武器改装件", "nameID": 66558, "parentGroupID": 962 }, "1227": { "description_de": "Modifikationen, welche die Energiewaffen eines großen Raumschiffs betreffen.", "description_en-us": "Modifications that affect a large starship's energy weapons.", "description_es": "Modificaciones que afectan a las armas de energía de una nave grande.", "description_fr": "Modifications qui affectent les armes à énergie d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's energy weapons.", "description_ja": "大型宇宙船のエネルギー兵器に影響する改造。", "description_ko": "대형 함선의 에너지 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового энергетического оружия тяжелых кораблей.", "description_zh": "大型舰船所用的能量武器改装件。", "descriptionID": 65484, "hasTypes": 1, "iconID": 3203, "name_de": "Große Energiewaffenmodifikationen", "name_en-us": "Large Energy Weapon Rigs", "name_es": "Complementos grandes de armas de energía", "name_fr": "Grandes modifications d'arme à énergie", "name_it": "Large Energy Weapon Rigs", "name_ja": "大型エネルギー兵器リグ", "name_ko": "대형 에너지 무기 리그", "name_ru": "Большие", "name_zh": "大型能量武器改装件", "nameID": 66559, "parentGroupID": 962 }, "1228": { "description_de": "Modifikationen, welche die Hybridwaffen kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's hybrid weapons.", "description_es": "Modificaciones que afectan a las armas híbridas de una nave pequeña.", "description_fr": "Modifications qui affectent les armes hybrides d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's hybrid weapons.", "description_ja": "小型宇宙船のハイブリッド兵器に影響する改造。", "description_ko": "소형 함선의 하이브리드 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового оружия гибридного действия кораблей малых размеров.", "description_zh": "小型舰船所用的混合武器改装件。", "descriptionID": 65485, "hasTypes": 1, "iconID": 3202, "name_de": "Kleine Hybridwaffenmodifikationen", "name_en-us": "Small Hybrid Weapon Rigs", "name_es": "Complementos pequeños de armas híbridas", "name_fr": "Petites modifications d'arme hybride", "name_it": "Small Hybrid Weapon Rigs", "name_ja": "小型ハイブリッド兵器リグ", "name_ko": "소형 하이브리드 무기 리그", "name_ru": "Малые", "name_zh": "小型混合武器改装件", "nameID": 66560, "parentGroupID": 963 }, "1229": { "description_de": "Modifikationen, welche die Hybridwaffen eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's hybrid weapons.", "description_es": "Modificaciones que afectan a las armas híbridas de una nave mediana.", "description_fr": "Modifications qui affectent les armes hybrides d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's hybrid weapons.", "description_ja": "中型宇宙船のハイブリッド兵器に影響する改造。", "description_ko": "중형 함선의 하이브리드 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового оружия гибридного действия кораблей среднего тоннажа.", "description_zh": "中型舰船所用的混合武器改装件。", "descriptionID": 65486, "hasTypes": 1, "iconID": 3202, "name_de": "Mittlere Hybridwaffenmodifikationen", "name_en-us": "Medium Hybrid Weapon Rigs", "name_es": "Complementos medianos de armas híbridas", "name_fr": "Modifications d'arme hybride intermédiaires", "name_it": "Medium Hybrid Weapon Rigs", "name_ja": "中型ハイブリッド兵器リグ", "name_ko": "중형 하이브리드 무기 리그", "name_ru": "Средние", "name_zh": "中型混合武器改装件", "nameID": 66561, "parentGroupID": 963 }, "1230": { "description_de": "Modifikationen, welche die Hybridwaffen eines großen Raumschiffs betreffen.", "description_en-us": "Modifications that affect a large starship's hybrid weapons.", "description_es": "Modificaciones que afectan a las armas híbridas de una nave grande.", "description_fr": "Modifications qui affectent les armes hybrides d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's hybrid weapons.", "description_ja": "大型宇宙船のハイブリッド兵器に影響する改造。", "description_ko": "대형 함선 하이브리드 무기 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортового оружия гибридного действия тяжелых кораблей.", "description_zh": "大型舰船所用的混合武器改装件。", "descriptionID": 65487, "hasTypes": 1, "iconID": 3202, "name_de": "Große Hybridwaffenmodifikationen", "name_en-us": "Large Hybrid Weapon Rigs", "name_es": "Complementos grandes de armas híbridas", "name_fr": "Grandes modifications d'arme hybride", "name_it": "Large Hybrid Weapon Rigs", "name_ja": "大型ハイブリッド兵器リグ", "name_ko": "대형 하이브리드 무기", "name_ru": "Большие", "name_zh": "大型混合武器改装件", "nameID": 66562, "parentGroupID": 963 }, "1231": { "description_de": "Modifikationen, welche die Raketenwerfer kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's missile launchers.", "description_es": "Modificaciones que afectan a los lanzamisiles de una nave pequeña.", "description_fr": "Modifications qui affectent les lance-missiles d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's missile launchers.", "description_ja": "小型宇宙船のミサイルランチャーに影響する改造。", "description_ko": "소형 함선의 미사일 런처 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу ракетных установок кораблей малых размеров.", "description_zh": "小型舰船所用的导弹发射器改装件。", "descriptionID": 65488, "hasTypes": 1, "iconID": 3197, "name_de": "Kleine Lenkwaffenwerfer-Modifikationen", "name_en-us": "Small Missile Launcher Rigs", "name_es": "Complementos pequeños de lanzamisiles", "name_fr": "Petites modifications de lance-missiles", "name_it": "Small Missile Launcher Rigs", "name_ja": "小型ミサイル兵器リグ", "name_ko": "소형 미사일 런처 리그", "name_ru": "Малые", "name_zh": "小型导弹发射器改装件", "nameID": 66563, "parentGroupID": 964 }, "1232": { "description_de": "Modifikationen, welche die Raketenwerfer eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's missile launchers.", "description_es": "Modificaciones que afectan a los lanzamisiles de una nave mediana.", "description_fr": "Modifications qui affectent les lance-missiles d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's missile launchers.", "description_ja": "中型艦船のミサイルランチャーに影響する改造。", "description_ko": "중형 함선의 미사일 런처 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу ракетных установок кораблей среднего тоннажа.", "description_zh": "中型舰船所用的导弹发射器改装件。", "descriptionID": 65489, "hasTypes": 1, "iconID": 3197, "name_de": "Mittlere Lenkwaffenwerfer-Modifikationen", "name_en-us": "Medium Missile Launcher Rigs", "name_es": "Complementos medianos de lanzamisiles", "name_fr": "Modifications de lance-missiles intermédiaires", "name_it": "Medium Missile Launcher Rigs", "name_ja": "中型ミサイル兵器リグ", "name_ko": "중형 미사일 런처 리그", "name_ru": "Средние", "name_zh": "中型导弹发射器改装件", "nameID": 66564, "parentGroupID": 964 }, "1233": { "description_de": "Modifikationen, welche die Raketenwerfer eines großen Raumschiffs betreffen.", "description_en-us": "Modifications that affect a large starship's missile launchers.", "description_es": "Modificaciones que afectan a los lanzamisiles de una nave grande.", "description_fr": "Modifications qui affectent les lance-missiles d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's missile launchers.", "description_ja": "大型宇宙船のミサイルランチャーに影響する改造。", "description_ko": "대형 함선의 미사일 런처 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу ракетных установок тяжелых кораблей.", "description_zh": "大型舰船所用的导弹发射器改装件。", "descriptionID": 65490, "hasTypes": 1, "iconID": 3197, "name_de": "Große Lenkwaffenwerfer-Modifikationen", "name_en-us": "Large Missile Launcher Rigs", "name_es": "Complementos grandes de lanzamisiles", "name_fr": "Grandes modifications de lance-missiles", "name_it": "Large Missile Launcher Rigs", "name_ja": "大型ミサイル兵器リグ", "name_ko": "대형 미사일 런처 리그", "name_ru": "Большие", "name_zh": "大型导弹发射器改装件", "nameID": 66565, "parentGroupID": 964 }, "1234": { "description_de": "Modifikationen, welche die Schilde kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's shields.", "description_es": "Modificaciones que afectan a los escudos de una nave pequeña.", "description_fr": "Modifications qui affectent les boucliers d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's shields.", "description_ja": "小型宇宙船のシールドに影響する改造。", "description_ko": "소형 함선의 실드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу силовых щитов кораблей малых размеров.", "description_zh": "小型舰船所用的护盾改装件。", "descriptionID": 65491, "hasTypes": 1, "iconID": 3193, "name_de": "Kleine Schildmodifikationen", "name_en-us": "Small Shield Rigs", "name_es": "Complementos pequeños de escudo", "name_fr": "Petites modifications de bouclier", "name_it": "Small Shield Rigs", "name_ja": "小型シールドリグ", "name_ko": "소형 실드 리그", "name_ru": "Малые", "name_zh": "小型护盾改装件", "nameID": 66566, "parentGroupID": 965 }, "1235": { "description_de": "Modifikationen, welche die Schilde eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's shields.", "description_es": "Modificaciones que afectan a los escudos de una nave mediana.", "description_fr": "Modifications qui affectent les boucliers d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's shields.", "description_ja": "中型宇宙船のシールドを調整する改造。", "description_ko": "중형 함선의 실드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу силовых щитов кораблей среднего тоннажа.", "description_zh": "中型舰船所用的护盾改装件。", "descriptionID": 65492, "hasTypes": 1, "iconID": 3193, "name_de": "Mittlere Schildmodifikationen", "name_en-us": "Medium Shield Rigs", "name_es": "Complementos medianos de escudo", "name_fr": "Modifications de bouclier intermédiaires", "name_it": "Medium Shield Rigs", "name_ja": "中型シールドリグ", "name_ko": "중형 실드 리그", "name_ru": "Средние", "name_zh": "中型护盾改装件", "nameID": 66567, "parentGroupID": 965 }, "1236": { "description_de": "Modifikationen, welche die Schilde eines großen Raumschiffs betreffen.", "description_en-us": "Modifications that affect a large starship's shields.", "description_es": "Modificaciones que afectan a los escudos de una nave grande.", "description_fr": "Modifications qui affectent les boucliers d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's shields.", "description_ja": "大型宇宙船のシールドに影響する改造。", "description_ko": "대형 함선의 실드 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу силовых щитов тяжелых кораблей.", "description_zh": "大型舰船所用的护盾改装件。", "descriptionID": 65493, "hasTypes": 1, "iconID": 3193, "name_de": "Große Schildmodifikationen", "name_en-us": "Large Shield Rigs", "name_es": "Complementos grandes de escudo", "name_fr": "Grandes modifications de bouclier", "name_it": "Large Shield Rigs", "name_ja": "大型シールドリグ", "name_ko": "대형 실드 리그", "name_ru": "Большие", "name_zh": "大型护盾改装件", "nameID": 66568, "parentGroupID": 965 }, "1237": { "description_de": "Modifikationen, welche die Projektilwaffen kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's projectile weapons.", "description_es": "Modificaciones que afectan a las armas de proyectiles de una nave pequeña.", "description_fr": "Modifications qui affectent les armes à projectiles d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's projectile weapons.", "description_ja": "小型宇宙船のプロジェクタイル兵器に影響する改造。", "description_ko": "소형 함선의 발사체 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовой артиллерии кораблей малых размеров.", "description_zh": "小型舰船所用的射弹武器改装件。", "descriptionID": 65494, "hasTypes": 1, "iconID": 3201, "name_de": "Kleine Projektilwaffenmodifikationen", "name_en-us": "Small Projectile Weapon Rigs", "name_es": "Complementos pequeños de armas de proyectiles", "name_fr": "Petites modifications d'arme à projectiles", "name_it": "Small Projectile Weapon Rigs", "name_ja": "小型プロジェクタイル兵器リグ", "name_ko": "소형 발사체 무기 리그", "name_ru": "Малые", "name_zh": "小型射弹武器改装件", "nameID": 66569, "parentGroupID": 979 }, "1238": { "description_de": "Modifikationen, welche die Projektilwaffen eines mittleren Raumschiffes betreffen.", "description_en-us": "Modifications that affect a medium starship's projectile weapons.", "description_es": "Modificaciones que afectan a las armas de proyectiles de una nave mediana.", "description_fr": "Modifications qui affectent les armes à projectiles d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's projectile weapons.", "description_ja": "中型艦船のプロジェクタイル兵器に影響する改造。", "description_ko": "중형 함선의 발사체 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовой артиллерии кораблей среднего тоннажа.", "description_zh": "中型舰船所用的射弹武器改装件。", "descriptionID": 65495, "hasTypes": 1, "iconID": 3201, "name_de": "Mittlere Projektilwaffenmodifikationen", "name_en-us": "Medium Projectile Weapon Rigs", "name_es": "Complementos medianos de armas de proyectiles", "name_fr": "Modifications d'arme à projectiles intermédiaires", "name_it": "Medium Projectile Weapon Rigs", "name_ja": "中型プロジェクタイル兵器リグ", "name_ko": "중형 발사체 무기 리그", "name_ru": "Средние", "name_zh": "中型射弹武器改装件", "nameID": 66570, "parentGroupID": 979 }, "1239": { "description_de": "Modifikationen, welche die Projektilwaffen eines großen Raumschiffs betreffen.", "description_en-us": "Modifications that affect a large starship's projectile weapons.", "description_es": "Modificaciones que afectan a las armas de proyectiles de una nave grande.", "description_fr": "Modifications qui affectent les armes à projectiles d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's projectile weapons.", "description_ja": "大型宇宙船のプロジェクタイル兵器に影響する改造。", "description_ko": "대형 함선의 발사체 무기 성능을 개조하는 리그입니다.", "description_ru": "Тюнинг-модули, влияющие на работу бортовой артиллерии тяжелых кораблей.", "description_zh": "大型舰船所用的射弹武器改装件。", "descriptionID": 65496, "hasTypes": 1, "iconID": 3201, "name_de": "Große Projektilwaffenmodifikationen", "name_en-us": "Large Projectile Weapon Rigs", "name_es": "Complementos grandes de armas de proyectiles", "name_fr": "Grandes modifications d'arme à projectiles", "name_it": "Large Projectile Weapon Rigs", "name_ja": "大型プロジェクタイル兵器リグ", "name_ko": "대형 발사체 무기 리그", "name_ru": "Большие", "name_zh": "大型射弹武器改装件", "nameID": 66571, "parentGroupID": 979 }, "1240": { "description_de": "Blueprints für kleine astronautische Ausrüstung.", "description_en-us": "Blueprints of Small Astronautic Rigs.", "description_es": "Planos de complementos pequeños de astronáutica.", "description_fr": "Plans de construction de petits modules d'optimisation astronautiques.", "description_it": "Blueprints of Small Astronautic Rigs.", "description_ja": "小型宇宙航行関連リグのブループリント。", "description_ko": "소형 항법 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на пилотажные качества корабля.", "description_zh": "各种小型航天技术改装件的蓝图。", "descriptionID": 65313, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Astronautische Modifikationen", "name_en-us": "Small Astronautic Rigs", "name_es": "Complementos pequeños de astronáutica", "name_fr": "Petites modifications astronautiques", "name_it": "Small Astronautic Rigs", "name_ja": "小型宇宙航行リグ", "name_ko": "소형 항법 리그", "name_ru": "Малые", "name_zh": "小型航天技术改装件", "nameID": 66387, "parentGroupID": 945 }, "1241": { "description_de": "Blueprints für mittlere astronautische Ausrüstung.", "description_en-us": "Blueprints of Medium Astronautic Rigs.", "description_es": "Planos de complementos medianos de astronáutica.", "description_fr": "Plans de construction de modules d'optimisation astronautiques de taille intermédiaire.", "description_it": "Blueprints of Medium Astronautic Rigs.", "description_ja": "中型宇宙航行関連リグのブループリント。", "description_ko": "중형 항법 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на пилотажные качества корабля.", "description_zh": "各种中型航天技术改装件的蓝图。", "descriptionID": 65314, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Astronautische Modifikationen", "name_en-us": "Medium Astronautic Rigs", "name_es": "Complementos medianos de astronáutica", "name_fr": "Modifications astronautiques intermédiaires", "name_it": "Medium Astronautic Rigs", "name_ja": "中型宇宙航行リグ", "name_ko": "중형 항법 리그", "name_ru": "Средние", "name_zh": "中型航天技术改装件", "nameID": 66388, "parentGroupID": 945 }, "1242": { "description_de": "Blueprints für große astronautische Ausrüstung.", "description_en-us": "Blueprints of Large Astronautic Rigs.", "description_es": "Planos de complementos grandes de astronáutica.", "description_fr": "Plans de construction de grands modules d'optimisation astronautiques.", "description_it": "Blueprints of Large Astronautic Rigs.", "description_ja": "大型宇宙航行関連リグのブループリント。", "description_ko": "대형 항법 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на пилотажные качества корабля.", "description_zh": "各种大型航天技术改装件的蓝图。", "descriptionID": 65315, "hasTypes": 1, "iconID": 2703, "name_de": "Große Astronautische Modifikationen", "name_en-us": "Large Astronautic Rigs", "name_es": "Complementos grandes de astronáutica", "name_fr": "Grandes modifications astronautiques", "name_it": "Large Astronautic Rigs", "name_ja": "大型宇宙航行リグ", "name_ko": "대형 항법 리그", "name_ru": "Большие", "name_zh": "大型航天技术改装件", "nameID": 66389, "parentGroupID": 945 }, "1243": { "description_de": "Blueprints für kleine Drohnen-Ausstattung.", "description_en-us": "Blueprints of Small Drone Rigs.", "description_es": "Planos de complementos pequeños de drones.", "description_fr": "Plans de construction de petits modules d'optimisation de drones.", "description_it": "Blueprints of Small Drone Rigs.", "description_ja": "小型ドローンリグのブループリント。", "description_ko": "소형 드론 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу запускаемых с борта корабля дронов.", "description_zh": "各种小型无人机改装件的蓝图。", "descriptionID": 65316, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Drohnenmodifikationen", "name_en-us": "Small Drone Rigs", "name_es": "Complementos pequeños de drones", "name_fr": "Petites modifications de drone", "name_it": "Small Drone Rigs", "name_ja": "小型ドローンリグ", "name_ko": "소형 드론 리그", "name_ru": "Малые", "name_zh": "小型无人机改装件", "nameID": 66390, "parentGroupID": 946 }, "1244": { "description_de": "Blueprints für mittlere Drohnen-Ausstattung", "description_en-us": "Blueprints of Medium Drone Rigs.", "description_es": "Planos de complementos medianos de drones.", "description_fr": "Plans de construction de modules d'optimisation de drones de taille intermédiaire.", "description_it": "Blueprints of Medium Drone Rigs.", "description_ja": "中型ドローンリグのブループリント。", "description_ko": "중형 드론 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу запускаемых с борта корабля дронов.", "description_zh": "各种中型无人机改装件的蓝图。", "descriptionID": 65317, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Drohnenmodifikationen", "name_en-us": "Medium Drone Rigs", "name_es": "Complementos medianos de drones", "name_fr": "Modifications de drone intermédiaires", "name_it": "Medium Drone Rigs", "name_ja": "中型ドローンリグ", "name_ko": "중형 드론 리그", "name_ru": "Средние", "name_zh": "中型无人机改装件", "nameID": 66391, "parentGroupID": 946 }, "1245": { "description_de": "Blueprints für große Drohnen-Ausstattung.", "description_en-us": "Blueprints of Large Drone Rigs.", "description_es": "Planos de complementos grandes de drones.", "description_fr": "Plans de construction de grands modules d'optimisation de drones.", "description_it": "Blueprints of Large Drone Rigs.", "description_ja": "大型ドローンリグのブループリント。", "description_ko": "대형 드론 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу запускаемых с борта корабля дронов.", "description_zh": "各种大型无人机改装件的蓝图。", "descriptionID": 65318, "hasTypes": 1, "iconID": 2703, "name_de": "Große Drohnenmodifikationen", "name_en-us": "Large Drone Rigs", "name_es": "Complementos grandes de drones", "name_fr": "Grandes modifications de drone", "name_it": "Large Drone Rigs", "name_ja": "大型ドローンリグ", "name_ko": "대형 드론 리그", "name_ru": "Большие", "name_zh": "大型无人机改装件", "nameID": 66392, "parentGroupID": 946 }, "1249": { "description_de": "Blueprints für kleine Elektronik-Überlegenheitsausrüstung.", "description_en-us": "Blueprints of Small Electronics Superiority Rigs.", "description_es": "Planos de complementos pequeños de superioridad electrónica.", "description_fr": "Plans de construction de petits modules d'optimisation de supériorité électronique.", "description_it": "Blueprints of Small Electronics Superiority Rigs.", "description_ja": "小型高性能エレクトロニクスリグのブループリント。", "description_ko": "소형 전자공학 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу систем электроного противодействия.", "description_zh": "各种小型电子压制改装件的蓝图。", "descriptionID": 65322, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Elektronische Höchstleistungsmodifikationen", "name_en-us": "Small Electronics Superiority Rigs", "name_es": "Complementos pequeños de superioridad electrónica", "name_fr": "Petites modifications de supériorité électronique", "name_it": "Small Electronics Superiority Rigs", "name_ja": "小型高性能エレクトロニクスリグ", "name_ko": "소형 전자공학 리그", "name_ru": "Малые", "name_zh": "小型电子压制改装件", "nameID": 66396, "parentGroupID": 948 }, "1250": { "description_de": "Blueprints für mittlere Elektronik-Überlegenheitsausrüstung.", "description_en-us": "Blueprints of Medium Electronics Superiority Rigs.", "description_es": "Planos de complementos medianos de superioridad electrónica.", "description_fr": "Plans de construction de modules d'optimisation de supériorité électronique de taille intermédiaire.", "description_it": "Blueprints of Medium Electronics Superiority Rigs.", "description_ja": "中型高性能エレクトロニクスリグのブループリント。", "description_ko": "중형 전자공학 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу систем электроного противодействия.", "description_zh": "各种中型电子压制改装件的蓝图。", "descriptionID": 65323, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Elektronische Höchstleistungsmodifikationen", "name_en-us": "Medium Electronics Superiority Rigs", "name_es": "Complementos medianos de superioridad electrónica", "name_fr": "Modifications de supériorité électronique intermédiaires", "name_it": "Medium Electronics Superiority Rigs", "name_ja": "中型高性能エレクトロニクスリグ", "name_ko": "중형 전자공학 리그", "name_ru": "Средние", "name_zh": "中型电子压制改装件", "nameID": 66397, "parentGroupID": 948 }, "1251": { "description_de": "Blueprints für große Elektronik-Überlegenheitsausrüstung.", "description_en-us": "Blueprints of Large Electronics Superiority Rigs.", "description_es": "Planos de complementos grandes de superioridad electrónica.", "description_fr": "Plans de construction de grands modules d'optimisation de supériorité électronique.", "description_it": "Blueprints of Large Electronics Superiority Rigs.", "description_ja": "大型高性能エレクトロニクスリグのブループリント。", "description_ko": "대형 전자공학 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу систем электроного противодействия.", "description_zh": "各种大型电子压制改装件的蓝图。", "descriptionID": 65324, "hasTypes": 1, "iconID": 2703, "name_de": "Große Elektronische Höchstleistungsmodifikationen", "name_en-us": "Large Electronics Superiority Rigs", "name_es": "Complementos grandes de superioridad electrónica", "name_fr": "Grandes modifications de supériorité électronique", "name_it": "Large Electronics Superiority Rigs", "name_ja": "大型高性能エレクトロニクスリグ", "name_ko": "대형 전자공학 리그", "name_ru": "Большие", "name_zh": "大型电子压制改装件", "nameID": 66398, "parentGroupID": 948 }, "1252": { "description_de": "Blueprints für kleine Stromversorgungsausrüstung.", "description_en-us": "Blueprints of Small Energy Grid Rigs.", "description_es": "Planos de complementos pequeños del sistema de energía.", "description_fr": "Plans de construction de petits modules d'optimisation de réseau d'alimentation.", "description_it": "Blueprints of Small Energy Grid Rigs.", "description_ja": "小型エネルギー回路リグのブループリント。", "description_ko": "소형 에너지그리드 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу бортовой энергетической установки.", "description_zh": "各种小型能量栅格改装件的蓝图。", "descriptionID": 65325, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Modifikationen für Ingenieurwesen", "name_en-us": "Small Engineering Rigs", "name_es": "Complementos pequeños de ingeniería", "name_fr": "Petites modifications d'ingénierie", "name_it": "Small Engineering Rigs", "name_ja": "小型エンジニアリングリグ", "name_ko": "소형 엔지니어링 리그", "name_ru": "Малые", "name_zh": "小型工程改装件", "nameID": 66399, "parentGroupID": 949 }, "1253": { "description_de": "Blueprints für mittlere Stromversorgungsausrüstung.", "description_en-us": "Blueprints of Medium Energy Grid Rigs.", "description_es": "Planos de complementos medianos del sistema de energía.", "description_fr": "Plans de construction de modules d'optimisation de réseau d'alimentation de taille intermédiaire.", "description_it": "Blueprints of Medium Energy Grid Rigs.", "description_ja": "中型エネルギー回路リグのブループリント。", "description_ko": "중형 에너지그리드 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу бортовой энергетической установки.", "description_zh": "各种中型能量栅格改装件的蓝图。", "descriptionID": 65326, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Modifikationen für Ingenieurwesen", "name_en-us": "Medium Engineering Rigs", "name_es": "Complementos medianos de ingeniería", "name_fr": "Modifications d'ingénierie intermédiaires", "name_it": "Medium Engineering Rigs", "name_ja": "中型エンジニアリングリグ", "name_ko": "중형 엔지니어링 리그", "name_ru": "Средние", "name_zh": "中型工程改装件", "nameID": 66400, "parentGroupID": 949 }, "1254": { "description_de": "Blueprints für große Stromversorgungsausrüstung.", "description_en-us": "Blueprints of Large Energy Grid Rigs.", "description_es": "Planos de complementos grandes del sistema de energía.", "description_fr": "Plans de construction de grands modules d'optimisation de réseau d'alimentation.", "description_it": "Blueprints of Large Energy Grid Rigs.", "description_ja": "大型エネルギー回路リグのブループリント。", "description_ko": "대형 에너지그리드 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу бортовой энергетической установки.", "description_zh": "各种大型能量栅格改装件的蓝图。", "descriptionID": 65327, "hasTypes": 1, "iconID": 2703, "name_de": "Große Modifikationen für Ingenieurwesen", "name_en-us": "Large Engineering Rigs", "name_es": "Complementos grandes de ingeniería", "name_fr": "Grandes modifications d'ingénierie", "name_it": "Large Engineering Rigs", "name_ja": "大型エンジニアリングリグ", "name_ko": "대형 엔지니어링 리그", "name_ru": "Большие", "name_zh": "大型工程改装件", "nameID": 66401, "parentGroupID": 949 }, "1255": { "description_de": "Blueprints für kleine Energiewaffen-Ausrüstung", "description_en-us": "Blueprints of Small Energy Weapon Rigs.", "description_es": "Planos de complementos pequeños de armas de energía.", "description_fr": "Plans de construction de petits modules d'optimisation d'arme à énergie.", "description_it": "Blueprints of Small Energy Weapon Rigs.", "description_ja": "小型エネルギー兵器リグのブループリント。", "description_ko": "소형 에너지 무기 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу бортового энергетического оружия.", "description_zh": "各种小型能量武器改装件的蓝图。", "descriptionID": 65328, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Energiewaffenmodifikationen", "name_en-us": "Small Energy Weapon Rigs", "name_es": "Complementos pequeños de armas de energía", "name_fr": "Petites modifications d'arme à énergie", "name_it": "Small Energy Weapon Rigs", "name_ja": "小型エネルギー兵器リグ", "name_ko": "소형 에너지 무기 리그", "name_ru": "Малые", "name_zh": "小型能量武器改装件", "nameID": 66402, "parentGroupID": 950 }, "1256": { "description_de": "Blueprints für mittlere Energiewaffen-Ausrüstung.", "description_en-us": "Blueprints of Medium Energy Weapon Rigs.", "description_es": "Planos de complementos medianos de armas de energía.", "description_fr": "Plans de construction de modules d'optimisation d'arme à énergie de taille intermédiaire.", "description_it": "Blueprints of Medium Energy Weapon Rigs.", "description_ja": "中型エネルギー兵器リグのブループリント。", "description_ko": "중형 에너지 무기 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу бортового энергетического оружия.", "description_zh": "各种中型能量武器改装件的蓝图。", "descriptionID": 65329, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Energiewaffenmodifikationen", "name_en-us": "Medium Energy Weapon Rigs", "name_es": "Complementos medianos de armas de energía", "name_fr": "Modifications d'arme à énergie intermédiaires", "name_it": "Medium Energy Weapon Rigs", "name_ja": "中型エネルギー兵器リグ", "name_ko": "중형 에너지 무기 리그", "name_ru": "Средние", "name_zh": "中型能量武器改装件", "nameID": 66403, "parentGroupID": 950 }, "1257": { "description_de": "Blueprints für große Energiewaffen-Ausrüstung.", "description_en-us": "Blueprints of Large Energy Weapon Rigs.", "description_es": "Planos de complementos grandes de armas de energía.", "description_fr": "Plans de construction de grands modules d'optimisation d'arme à énergie.", "description_it": "Blueprints of Large Energy Weapon Rigs.", "description_ja": "大型エネルギー兵器リグのブループリント。", "description_ko": "대형 에너지 무기 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу бортового энергетического оружия.", "description_zh": "各种大型能量武器改装件的蓝图。", "descriptionID": 65330, "hasTypes": 1, "iconID": 2703, "name_de": "Große Energiewaffenmodifikationen", "name_en-us": "Large Energy Weapon Rigs", "name_es": "Complementos grandes de armas de energía", "name_fr": "Grandes modifications d'arme à énergie", "name_it": "Large Energy Weapon Rigs", "name_ja": "大型エネルギー兵器リグ", "name_ko": "대형 에너지 무기 리그", "name_ru": "Большие", "name_zh": "大型能量武器改装件", "nameID": 66404, "parentGroupID": 950 }, "1258": { "description_de": "Blueprints für kleine Hybridwaffenausrüstung", "description_en-us": "Blueprints of Small Hybrid Weapon Rigs.", "description_es": "Planos de complementos pequeños de armas híbridas.", "description_fr": "Plans de construction de petits modules d'optimisation d'arme hybride.", "description_it": "Blueprints of Small Hybrid Weapon Rigs.", "description_ja": "小型ハイブリッド兵器リグのブループリント。", "description_ko": "소형 하이브리드 무기 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу бортового оружия гибридного действия.", "description_zh": "各种小型混合武器改装件的蓝图。", "descriptionID": 65331, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Hybridwaffenmodifikationen", "name_en-us": "Small Hybrid Weapon Rigs", "name_es": "Complementos pequeños de armas híbridas", "name_fr": "Petites modifications d'arme hybride", "name_it": "Small Hybrid Weapon Rigs", "name_ja": "小型ハイブリッド兵器リグ", "name_ko": "소형 하이브리드 무기 리그", "name_ru": "Малые", "name_zh": "小型混合武器改装件", "nameID": 66405, "parentGroupID": 951 }, "1259": { "description_de": "Blueprints für mittlere Hybridwaffenausrüstung.", "description_en-us": "Blueprints of Medium Hybrid Weapon Rigs.", "description_es": "Planos de complementos medianos de armas híbridas.", "description_fr": "Plans de construction de modules d'optimisation d'arme hybride de taille intermédiaire.", "description_it": "Blueprints of Medium Hybrid Weapon Rigs.", "description_ja": "中型ハイブリッド兵器リグのブループリント。", "description_ko": "중형 하이브리드 무기 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу бортового оружия гибридного действия.", "description_zh": "各种中型混合武器改装件的蓝图。", "descriptionID": 65332, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Hybridwaffenmodifikationen", "name_en-us": "Medium Hybrid Weapon Rigs", "name_es": "Complementos medianos de armas híbridas", "name_fr": "Modifications d'arme hybride intermédiaires", "name_it": "Medium Hybrid Weapon Rigs", "name_ja": "中型ハイブリッド兵器リグ", "name_ko": "중형 하이브리드 무기 리그", "name_ru": "Средние", "name_zh": "中型混合武器改装件", "nameID": 66406, "parentGroupID": 951 }, "1260": { "description_de": "Blueprints für große Hybridwaffenausrüstung.", "description_en-us": "Blueprints of Large Hybrid Weapon Rigs.", "description_es": "Planos de complementos grandes de armas híbridas.", "description_fr": "Plans de construction de grands modules d'optimisation d'arme hybride.", "description_it": "Blueprints of Large Hybrid Weapon Rigs.", "description_ja": "大型ハイブリッド兵器リグのブループリント。", "description_ko": "대형 하이브리드 무기 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу бортового оружия гибридного действия.", "description_zh": "各种大型混合武器改装件的蓝图。", "descriptionID": 65333, "hasTypes": 1, "iconID": 2703, "name_de": "Große Hybridwaffenmodifikationen", "name_en-us": "Large Hybrid Weapon Rigs", "name_es": "Complementos grandes de armas híbridas", "name_fr": "Grandes modifications d'arme hybride", "name_it": "Large Hybrid Weapon Rigs", "name_ja": "大型ハイブリッド兵器リグ", "name_ko": "대형 하이브리드 무기", "name_ru": "Большие", "name_zh": "大型混合武器改装件", "nameID": 66407, "parentGroupID": 951 }, "1261": { "description_de": "Blueprints für kleine Missile Launcher-Ausrüstung", "description_en-us": "Blueprints of Small Missile Launcher Rigs.", "description_es": "Planos de complementos pequeños de lanzamisiles.", "description_fr": "Plans de construction de petits modules d'optimisation de lance-missiles.", "description_it": "Blueprints of Small Missile Launcher Rigs.", "description_ja": "小型ミサイル兵器リグのブループリント。", "description_ko": "소형 미사일 런처 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу бортовых ракетных установок.", "description_zh": "各种小型导弹发射器改装件的蓝图。", "descriptionID": 65334, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Lenkwaffenwerfer-Modifikationen", "name_en-us": "Small Missile Launcher Rigs", "name_es": "Complementos pequeños de lanzamisiles", "name_fr": "Petites modifications de lance-missiles", "name_it": "Small Missile Launcher Rigs", "name_ja": "小型ミサイル兵器リグ", "name_ko": "소형 미사일 런처 리그", "name_ru": "Малые", "name_zh": "小型导弹发射器改装件", "nameID": 66408, "parentGroupID": 952 }, "1262": { "description_de": "Blaupausen für mittlere Lenkwaffenwerfer-Modifikationen", "description_en-us": "Blueprints of Medium Missile Launcher Rigs.", "description_es": "Planos de complementos medianos de lanzamisiles.", "description_fr": "Plans de construction de modules d'optimisation de lance-missiles de taille intermédiaire.", "description_it": "Blueprints of Medium Missile Launcher Rigs.", "description_ja": "中型ミサイル兵器リグのブループリント。", "description_ko": "중형 미사일 런처 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу бортовых ракетных установок.", "description_zh": "各种中型导弹发射器改装件的蓝图。", "descriptionID": 65335, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Lenkwaffenwerfer-Modifikationen", "name_en-us": "Medium Missile Launcher Rigs", "name_es": "Complementos medianos de lanzamisiles", "name_fr": "Modifications de lance-missiles intermédiaires", "name_it": "Medium Missile Launcher Rigs", "name_ja": "中型ミサイル兵器リグ", "name_ko": "중형 미사일 런처 리그", "name_ru": "Средние", "name_zh": "中型导弹发射器改装件", "nameID": 66409, "parentGroupID": 952 }, "1263": { "description_de": "Blaupausen für große Lenkwaffenwerfer-Modifikationen.", "description_en-us": "Blueprints of Large Missile Launcher Rigs.", "description_es": "Planos de complementos grandes de lanzamisiles.", "description_fr": "Plans de construction de grands modules d'optimisation de lance-missiles.", "description_it": "Blueprints of Large Missile Launcher Rigs.", "description_ja": "大型ミサイル兵器リグのブループリント。", "description_ko": "대형 미사일 런처 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу ракетных установок.", "description_zh": "各种大型导弹发射器改装件的蓝图。", "descriptionID": 65336, "hasTypes": 1, "iconID": 2703, "name_de": "Große Lenkwaffenwerfer-Modifikationen", "name_en-us": "Large Missile Launcher Rigs", "name_es": "Complementos grandes de lanzamisiles", "name_fr": "Grandes modifications de lance-missiles", "name_it": "Large Missile Launcher Rigs", "name_ja": "大型ミサイル兵器リグ", "name_ko": "대형 미사일 런처 리그", "name_ru": "Большие", "name_zh": "大型导弹发射器改装件", "nameID": 66410, "parentGroupID": 952 }, "1264": { "description_de": "Blueprints für kleine Projektilwaffen-Ausrüstung.", "description_en-us": "Blueprints of Small Projectile Weapon Rigs.", "description_es": "Planos de complementos pequeños de armas de proyectiles.", "description_fr": "Plans de construction de petits modules d'optimisation d'arme à projectiles.", "description_it": "Blueprints of Small Projectile Weapon Rigs.", "description_ja": "小型プロジェクタイル兵器リグのブループリント。", "description_ko": "소형 발사체 무기 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу бортовой артиллерии.", "description_zh": "各种小型射弹武器改装件的蓝图。", "descriptionID": 65337, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Projektilwaffenmodifikationen", "name_en-us": "Small Projectile Weapon Rigs", "name_es": "Complementos pequeños de armas de proyectiles", "name_fr": "Petites modifications d'arme à projectiles", "name_it": "Small Projectile Weapon Rigs", "name_ja": "小型プロジェクタイル兵器リグ", "name_ko": "소형 발사체 무기 리그", "name_ru": "Малые", "name_zh": "小型射弹武器改装件", "nameID": 66411, "parentGroupID": 953 }, "1265": { "description_de": "Blueprints für mittlere Projektilwaffen-Ausrüstung.", "description_en-us": "Blueprints of Medium Projectile Weapon Rigs.", "description_es": "Planos de complementos medianos de armas de proyectiles.", "description_fr": "Plans de construction de modules d'optimisation d'arme à projectiles de taille intermédiaire.", "description_it": "Blueprints of Medium Projectile Weapon Rigs.", "description_ja": "中型プロジェクタイル兵器リグのブループリント。", "description_ko": "중형 발사체 무기 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу бортовой артиллерии.", "description_zh": "各种中型射弹武器改装件的蓝图。", "descriptionID": 65338, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Projektilwaffenmodifikationen", "name_en-us": "Medium Projectile Weapon Rigs", "name_es": "Complementos medianos de armas de proyectiles", "name_fr": "Modifications d'arme à projectiles intermédiaires", "name_it": "Medium Projectile Weapon Rigs", "name_ja": "中型プロジェクタイル兵器リグ", "name_ko": "중형 발사체 무기 리그", "name_ru": "Средние", "name_zh": "中型射弹武器改装件", "nameID": 66412, "parentGroupID": 953 }, "1266": { "description_de": "Blueprints für große Projektilwaffen-Ausrüstung.", "description_en-us": "Blueprints of Large Projectile Weapon Rigs.", "description_es": "Planos de complementos grandes de armas de proyectiles.", "description_fr": "Plans de construction de grands modules d'optimisation d'arme à projectiles.", "description_it": "Blueprints of Large Projectile Weapon Rigs.", "description_ja": "大型プロジェクタイル兵器リグのブループリント。", "description_ko": "대형 발사체 무기 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу бортовой артиллерии.", "description_zh": "各种大型射弹武器改装件的蓝图。", "descriptionID": 65339, "hasTypes": 1, "iconID": 2703, "name_de": "Große Projektilwaffenmodifikationen", "name_en-us": "Large Projectile Weapon Rigs", "name_es": "Complementos grandes de armas de proyectiles", "name_fr": "Grandes modifications d'arme à projectiles", "name_it": "Large Projectile Weapon Rigs", "name_ja": "大型プロジェクタイル兵器リグ", "name_ko": "대형 발사체 무기 리그", "name_ru": "Большие", "name_zh": "大型射弹武器改装件", "nameID": 66413, "parentGroupID": 953 }, "1267": { "description_de": "Blueprints für kleine Schildausstattung.", "description_en-us": "Blueprints of Small Shield Rigs.", "description_es": "Planos de complementos pequeños de los escudos.", "description_fr": "Plans de construction de petits modules d'optimisation de bouclier.", "description_it": "Blueprints of Small Shield Rigs.", "description_ja": "小型シールドリグのブループリント。", "description_ko": "소형 실드 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей, влияющих на работу силовых щитов.", "description_zh": "各种小型护盾改装件的蓝图。", "descriptionID": 65340, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Schildmodifikationen", "name_en-us": "Small Shield Rigs", "name_es": "Complementos pequeños de escudo", "name_fr": "Petites modifications de bouclier", "name_it": "Small Shield Rigs", "name_ja": "小型シールドリグ", "name_ko": "소형 실드 리그", "name_ru": "Малые", "name_zh": "小型护盾改装件", "nameID": 66414, "parentGroupID": 954 }, "1268": { "description_de": "Blueprints für mittlere Schildausstattung.", "description_en-us": "Blueprints of Medium Shield Rigs.", "description_es": "Planos de complementos medianos de los escudos.", "description_fr": "Plans de construction de modules d'optimisation de bouclier de taille intermédiaire.", "description_it": "Blueprints of Medium Shield Rigs.", "description_ja": "中型シールドリグのブループリント。", "description_ko": "중형 실드 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей средних размеров, влияющих на работу силовых щитов.", "description_zh": "各种中型护盾改装件的蓝图。", "descriptionID": 65341, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Schildmodifikationen", "name_en-us": "Medium Shield Rigs", "name_es": "Complementos medianos de escudo", "name_fr": "Modifications de bouclier intermédiaires", "name_it": "Medium Shield Rigs", "name_ja": "中型シールドリグ", "name_ko": "중형 실드 리그", "name_ru": "Средние", "name_zh": "中型护盾改装件", "nameID": 66415, "parentGroupID": 954 }, "1269": { "description_de": "Blueprints für große Schildausstattung", "description_en-us": "Blueprints of Large Shield Rigs.", "description_es": "Planos de complementos grandes de los escudos.", "description_fr": "Plans de construction de grands modules d'optimisation de bouclier.", "description_it": "Blueprints of Large Shield Rigs.", "description_ja": "大型シールドリグのブループリント。", "description_ko": "대형 실드 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей, влияющих на работу силовых щитов.", "description_zh": "各种大型护盾改装件的蓝图。", "descriptionID": 65342, "hasTypes": 1, "iconID": 2703, "name_de": "Große Schildmodifikationen", "name_en-us": "Large Shield Rigs", "name_es": "Complementos grandes de escudo", "name_fr": "Grandes modifications de bouclier", "name_it": "Large Shield Rigs", "name_ja": "大型シールドリグ", "name_ko": "대형 실드 리그", "name_ru": "Большие", "name_zh": "大型护盾改装件", "nameID": 66416, "parentGroupID": 954 }, "1272": { "description_de": "Strukturen zur Kontrolle und Ausbeutung von Sonnensystemen", "description_en-us": "Structures pertaining to the control and exploitation of solar systems", "description_es": "Estructuras relacionadas con el control y la explotación de los sistemas solares.", "description_fr": "Structures destinées au contrôle et à l'exploitation des systèmes solaires", "description_it": "Structures pertaining to the control and exploitation of solar systems", "description_ja": "ソーラーシステムの制御・開発に関わる建造物", "description_ko": "항성계 점령 및 기반 시설 건설에 사용되는 구조물입니다.", "description_ru": "Сооружения, необходимые для осуществления контроля за планетными системами", "description_zh": "帮助玩家掌控并开发星系的建筑", "descriptionID": 65459, "hasTypes": 0, "iconID": 3952, "name_de": "Souveränitätsstrukturen", "name_en-us": "Sovereignty Structures", "name_es": "Estructuras de soberanía", "name_fr": "Structures de souveraineté", "name_it": "Sovereignty Structures", "name_ja": "領有権管理設備", "name_ko": "소버린티 구조물", "name_ru": "Блоки воздействия на суверенитет", "name_zh": "主权设施", "nameID": 66534, "parentGroupID": 477 }, "1273": { "description_de": "Starbase-Einheiten, um Territorialansprüche geltend zu machen.", "description_en-us": "Starbase units for claiming territory.", "description_es": "Unidades de base estelar para reivindicar territorio.", "description_fr": "Unités de base stellaire permettant de revendiquer un territoire.", "description_it": "Starbase units for claiming territory.", "description_ja": "領地を確保するためのスターベースユニット。", "description_ko": "영토 제어 관련 스타베이스 구조물입니다.", "description_ru": "Устройства, обеспечивающие получение права на владение планетной системой.", "description_zh": "用于宣布主权的母星单元。", "descriptionID": 65460, "hasTypes": 1, "iconID": 3952, "name_de": "Gebietsansprucheinheiten", "name_en-us": "Territorial Claim Units", "name_es": "Unidades de reivindicación territorial", "name_fr": "Unités de revendication territoriale", "name_it": "Territorial Claim Units", "name_ja": "領域支配用ユニット", "name_ko": "영토 제어 유닛", "name_ru": "Демаркационные маяки", "name_zh": "主权宣布设施", "nameID": 66535, "parentGroupID": 1272 }, "1274": { "description_de": "Starbase-Einheiten zur Blockade der Souveränität.", "description_en-us": "Starbase units for blockading sovereignty.", "description_es": "Unidades de base estelar para bloquear la soberanía.", "description_fr": "Unités de base stellaire permettant de bloquer l'accès à la souveraineté.", "description_it": "Starbase units for blockading sovereignty.", "description_ja": "サブランティを封鎖するスターベースユニット。", "description_ko": "소버린티를 봉쇄할 수 있는 스타베이스 구조물입니다.", "description_ru": "Устройства, предназначенные для подавления права владения планетными системами.", "description_zh": "用于干扰主权的母星单元。", "descriptionID": 65461, "hasTypes": 1, "iconID": 3952, "name_de": "Souveränitätsblockierer", "name_en-us": "Sovereignty Blockade Units", "name_es": "Unidades de bloqueo de soberanía", "name_fr": "Unités de blocus de la souveraineté", "name_it": "Sovereignty Blockade Units", "name_ja": "領有権封鎖ユニット", "name_ko": "소버린티 봉쇄 유닛", "name_ru": "Устройства контрзаявки", "name_zh": "主权干扰设施", "nameID": 66536, "parentGroupID": 1272 }, "1275": { "description_de": "Starbase-Einheiten zur Errichtung von Infrastruktur.", "description_en-us": "Starbase units for building infrastructure.", "description_es": "Unidades de base estelar para construir infraestructuras.", "description_fr": "Unités de base stellaire permettant de construire une infrastructure.", "description_it": "Starbase units for building infrastructure.", "description_ja": "インフラ建設用の各種スターベースユニット。", "description_ko": "인프라 관련 스타베이스 구조물입니다.", "description_ru": "Модули звездных баз, позволяющие развивать инфраструктуру планетной системы.", "description_zh": "用于建设基础设施的母星单元。", "descriptionID": 65462, "hasTypes": 1, "iconID": 3952, "name_de": "Souveränitätshubs", "name_en-us": "Sovereignty Hubs", "name_es": "Centros de soberanía", "name_fr": "Pôles de souveraineté", "name_it": "Sovereignty Hubs", "name_ja": "領有権ハブ", "name_ko": "소버린티 허브", "name_ru": "Штабы владений", "name_zh": "主权中心", "nameID": 66537, "parentGroupID": 1272 }, "1276": { "description_de": "Upgrades, die in einem Souveränitätshub installiert sind.", "description_en-us": "Upgrades which are installed into a sovereignty hub.", "description_es": "Mejoras instaladas en uncentro de soberanía.", "description_fr": "Améliorations installées dans un pôle de souveraineté.", "description_it": "Upgrades which are installed into a sovereignty hub.", "description_ja": "領有権ハブに装着するアップグレード。", "description_ko": "소버린티 허브에 설치하는 업그레이드입니다.", "description_ru": "Устанавливаемые улучшения для штаба владений.", "description_zh": "安装在主权中心内的升级件。", "descriptionID": 65239, "hasTypes": 0, "iconID": 3947, "name_de": "Infrastrukturupgrades", "name_en-us": "Infrastructure Upgrades", "name_es": "Mejoras de infraestructuras", "name_fr": "Améliorations d'infrastructure", "name_it": "Infrastructure Upgrades", "name_ja": "領域施設強化", "name_ko": "인프라 업그레이드", "name_ru": "Расширения инфраструктуры", "name_zh": "基础设施升级", "nameID": 66313, "parentGroupID": 1272 }, "1282": { "description_de": "Strategische Upgrades für Souveränitätsstrukturen.", "description_en-us": "Strategic upgrades to sovereignty structures.", "description_es": "Mejoras estratégicas para las estructuras de soberanía.", "description_fr": "Améliorations stratégiques des structures de souveraineté.", "description_it": "Strategic upgrades to sovereignty structures.", "description_ja": "領有権管理設備の戦略強化。", "description_ko": "소버린티 구조물에 대한 전략 업그레이드입니다.", "description_ru": "Модули для центров инфраструктуры, влияющие на стратегическую значимость планетной системы.", "description_zh": "用于主权设施的战略类升级件。", "descriptionID": 65455, "hasTypes": 1, "iconID": 3946, "name_de": "Strategische Upgrades", "name_en-us": "Strategic Upgrades", "name_es": "Mejoras estratégicas", "name_fr": "Améliorations stratégiques", "name_it": "Strategic Upgrades", "name_ja": "戦略強化", "name_ko": "전략 업그레이드", "name_ru": "Стратегические расширения", "name_zh": "战略升级", "nameID": 66530, "parentGroupID": 1276 }, "1283": { "description_de": "Industrial-Upgrades für Souveränitätsstrukturen.", "description_en-us": "Industrial upgrades to sovereignty structures.", "description_es": "Mejoras industriales para las estructuras de soberanía.", "description_fr": "Améliorations industrielles des structures de souveraineté.", "description_it": "Industrial upgrades to sovereignty structures.", "description_ja": "領有権管理設備の工業力強化。", "description_ko": "소버린티 구조물에 대한 산업 업그레이드입니다.", "description_ru": "Модули для центров инфраструктуры, влияющие на экономическую обстановку в планетной системе.", "description_zh": "用于主权设施的工业类升级件。", "descriptionID": 65456, "hasTypes": 1, "iconID": 3948, "name_de": "Industrieupgrades", "name_en-us": "Industrial Upgrades", "name_es": "Mejoras industriales", "name_fr": "Améliorations industrielles", "name_it": "Industrial Upgrades", "name_ja": "工業力強化", "name_ko": "산업 업그레이드", "name_ru": "Промышленные расширения", "name_zh": "工业升级", "nameID": 66531, "parentGroupID": 1276 }, "1284": { "description_de": "Militär-Upgrades für Souveränitätsstrukturen.", "description_en-us": "Military upgrades to sovereignty structures.", "description_es": "Mejoras militares para las estructuras de soberanía.", "description_fr": "Améliorations militaires des structures de souveraineté.", "description_it": "Military upgrades to sovereignty structures.", "description_ja": "領有権管理設備の軍事力強化。", "description_ko": "소버린티 구조물에 대한 군사 업그레이드입니다.", "description_ru": "Модули для центров инфраструктуры, влияющие на военную обстановку в планетной системе.", "description_zh": "用于主权设施的军事类升级件。", "descriptionID": 65457, "hasTypes": 1, "iconID": 3947, "name_de": "Militärupgrades", "name_en-us": "Military Upgrades", "name_es": "Mejoras militares", "name_fr": "Améliorations militaires", "name_it": "Military Upgrades", "name_ja": "軍事力強化", "name_ko": "군사 업그레이드", "name_ru": "Военные расширения", "name_zh": "军事升级", "nameID": 66532, "parentGroupID": 1276 }, "1285": { "description_de": "Strukturen zur Errichtung von Kapselpiloten betriebener Sternenbasen", "description_en-us": "Structures used in constructing capsuleer-run starbases", "description_es": "Estructuras usadas para construir bases estelares de capsulistas.", "description_fr": "Structures utilisées pour la construction de bases stellaires dirigées par des capsuliers", "description_it": "Structures used in constructing capsuleer-run starbases", "description_ja": "カプセラがスターベースを建てる際に使用する建造物", "description_ko": "스타베이스 건설에 사용되는 구조물입니다.", "description_ru": "Сооружения, используемые для создания ПОСов", "description_zh": "玩家建造的母星基地中使用的建筑", "descriptionID": 65458, "hasTypes": 0, "iconID": 2222, "name_de": "Sternenbasis-Strukturen", "name_en-us": "Starbase Structures", "name_es": "Estructuras de base estelar", "name_fr": "Structures de base stellaire", "name_it": "Starbase Structures", "name_ja": "基地設備", "name_ko": "스타베이스 구조물", "name_ru": "Передвижные орбитальные станции", "name_zh": "母星建筑", "nameID": 66533, "parentGroupID": 477 }, "1286": { "description_de": "Blaupausen von XL Marschflugkörpern.", "description_en-us": "Blueprints of XL Cruise Missiles.", "description_es": "Planos de misiles de crucero XL.", "description_fr": "Plans de construction de missiles de croisière XL.", "description_it": "Blueprints of XL Cruise Missiles.", "description_ja": "XLクルーズミサイルのブループリント。", "description_ko": "XL 크루즈 미사일 블루프린트입니다.", "description_ru": "Чертежи ракет дальнего боя сверхбольшой мощности.", "description_zh": "各种超大型巡航导弹的蓝图。", "descriptionID": 65298, "hasTypes": 1, "iconID": 2703, "name_de": "XL Marschflugkörper", "name_en-us": "XL Cruise Missiles", "name_es": "Misiles de crucero XL", "name_fr": "Missiles de croisière XL", "name_it": "XL Cruise Missiles", "name_ja": "XLクルーズミサイル", "name_ko": "XL 크루즈 미사일", "name_ru": "Сверхбольшие дальнобойные ракеты", "name_zh": "超大型巡航导弹", "nameID": 66372, "parentGroupID": 314 }, "1287": { "description_de": "Standard XL Marschflugkörper-Designs.", "description_en-us": "Standard XL cruise missile designs.", "description_es": "Diseños de misiles de crucero XL estándar.", "description_fr": "Modèles de missiles de croisière XL standard.", "description_it": "Standard XL cruise missile designs.", "description_ja": "標準型XLクルーズミサイルの設計。", "description_ko": "일반 XL 크루즈 미사일입니다.", "description_ru": "Проекты стандартных вариантов оснащения РДБ.", "description_zh": "标准超大型巡航导弹设计。", "descriptionID": 65396, "hasTypes": 1, "iconID": 183, "name_de": "Standard XL Marschflugkörper", "name_en-us": "Standard XL Cruise Missiles", "name_es": "Misiles de crucero XL estándar", "name_fr": "Missiles de croisière XL standard", "name_it": "Standard XL Cruise Missiles", "name_ja": "標準型XLクルーズミサイル", "name_ko": "일반 XL 크루즈 미사일", "name_ru": "Стандартные", "name_zh": "标准超大型巡航导弹", "nameID": 66470, "parentGroupID": 1316 }, "1310": { "description_de": "Bemannte Kampfschiffe, einsetzbar von Trägerschiffen und Supercarriern.", "description_en-us": "Piloted combat vessels, deployable from Carriers and Supercarriers.", "description_es": "Naves de combate tripuladas, desplegables desde portanaves y superportanaves.", "description_fr": "Vaisseaux de combat pilotés pouvant être déployés depuis les porte-vaisseaux et super porte-vaisseaux.", "description_it": "Piloted combat vessels, deployable from Carriers and Supercarriers.", "description_ja": "艦載機母艦および大型艦載機母艦から配置可能な有人コンバット船。", "description_ko": "슈퍼캐리어 및 캐리어에서 사출되는 전투 기체입니다.", "description_ru": "Пилотирумые боевые корабли, запускаемые с кораблей-носителей и суперкораблей-носителей.", "description_zh": "有人驾驶的作战飞船,可以从航空母舰或者超级航母上进行部署。", "descriptionID": 65241, "hasTypes": 1, "iconID": 1084, "name_de": "Schwere Jäger", "name_en-us": "Heavy Fighters", "name_es": "Cazas pesados", "name_fr": "Chasseurs lourds", "name_it": "Heavy Fighters", "name_ja": "重量級戦闘機", "name_ko": "헤비 파이터", "name_ru": "Тяжёлые истребители", "name_zh": "重型铁骑舰载机", "nameID": 66315, "parentGroupID": 2410 }, "1313": { "description_de": "Blaupausen schwerer Jäger-Designs.", "description_en-us": "Blueprints of heavy fighter designs.", "description_es": "Planos de diseños de cazas pesados.", "description_fr": "Plans de construction de modèles de chasseur-bombardier.", "description_it": "Blueprints of heavy fighter designs.", "description_ja": "重量級戦闘機のブループリント。", "description_ko": "헤비 파이터 블루프린트입니다.", "description_ru": "Чертежи тяжёлых истребителей.", "description_zh": "重型铁骑舰载机设计蓝图。", "descriptionID": 65243, "hasTypes": 1, "iconID": 2703, "name_de": "Schwere Jäger", "name_en-us": "Heavy Fighters", "name_es": "Cazas pesados", "name_fr": "Chasseurs lourds", "name_it": "Heavy Fighters", "name_ja": "重量級戦闘機", "name_ko": "헤비 파이터", "name_ru": "Тяжёлые истребители", "name_zh": "重型铁骑舰载机", "nameID": 66317, "parentGroupID": 2237 }, "1316": { "description_de": "XL Marschflugkörper-Designs.", "description_en-us": "XL cruise missile designs.", "description_es": "Diseños de misiles de crucero XL.", "description_fr": "Modèles de missiles de croisière XL.", "description_it": "XL cruise missile designs.", "description_ja": "XLクルーズミサイルの設計。", "description_ko": "XL 크루즈 미사일입니다.", "description_ru": "Проекты ракет дальнего боя сверхбольшой мощности.", "description_zh": "超大型巡航导弹设计。", "descriptionID": 65395, "hasTypes": 0, "iconID": 183, "name_de": "XL Marschflugkörper", "name_en-us": "XL Cruise Missiles", "name_es": "Misiles de crucero XL", "name_fr": "Missiles de croisière XL", "name_it": "XL Cruise Missiles", "name_ja": "XLクルーズミサイル", "name_ko": "XL 크루즈 미사일", "name_ru": "Сверхбольшие дальнобойные ракеты", "name_zh": "超大型巡航导弹", "nameID": 66469, "parentGroupID": 114 }, "1317": { "description_de": "Fraktion XL Marschflugkörper-Designs.", "description_en-us": "Faction XL cruise missile designs.", "description_es": "Diseños de misiles de crucero XL de facción.", "description_fr": "Modèles de missiles de croisière XL de faction.", "description_it": "Faction XL cruise missile designs.", "description_ja": "ファクションXLクルーズミサイルの設計。", "description_ko": "팩션 XL 크루즈 미사일입니다.", "description_ru": "Проекты пиратских и армейских РДБ.", "description_zh": "势力超大型巡航导弹设计。", "descriptionID": 65397, "hasTypes": 1, "iconID": 183, "name_de": "Fraktion XL Marschflugkörper", "name_en-us": "Faction XL Cruise Missiles", "name_es": "Misiles de crucero XL de las facciones", "name_fr": "Missiles de croisière XL de faction", "name_it": "Faction XL Cruise Missiles", "name_ja": "ファクションXLクルーズミサイル", "name_ko": "팩션 XL 크루즈 미사일", "name_ru": "Пиратские и армейские", "name_zh": "势力超大型巡航导弹", "nameID": 66471, "parentGroupID": 1316 }, "1320": { "description_de": "Kapselpiloten können die planetaren Ressourcen von New Eden durch die Errichtung von Kommandozentralen auf dem Boden und orbitalen Infrastrukturen im Weltraum auszubeuten.", "description_en-us": "Capsuleers can exploit the planetary resources of New Eden by establishing command centers on the ground and orbital infrastructure in space", "description_es": "Los capsulistas pueden aprovechar los recursos planetarios de Nuevo Edén estableciendo centros de mando en la superficie e infraestructuras orbitales en el espacio.", "description_fr": "Les capsuliers peuvent exploiter les abondantes ressources planétaires de New Eden en installant des centres de commandement au sol et des infrastructures orbitales dans l'espace", "description_it": "Capsuleers can exploit the planetary resources of New Eden by establishing command centers on the ground and orbital infrastructure in space", "description_ja": "地上に司令基地、そして宙域に軌道インフラストラクチャを建造すれば、ニューエデン内の惑星の資源を採取することもできます", "description_ko": "행성 궤도 시설 및 지상 통제센터를 설치함으로써 행성 자원을 추출할 수 있습니다.", "description_ru": "Капсулёры могут вести добычу различных ресурсов на планетах галактики путём развёртывания наземных баз на планетах и орбитальной инфраструктуры в космосе.", "description_zh": "飞行员可以在太空天体表面建造指挥中心以及在轨道上建造设施来开采行星资源", "descriptionID": 65244, "hasTypes": 0, "iconID": 2881, "name_de": "Planetarische Infrastruktur", "name_en-us": "Planetary Infrastructure", "name_es": "Infraestructura planetaria", "name_fr": "Infrastructure planétaire", "name_it": "Planetary Infrastructure", "name_ja": "惑星開発施設", "name_ko": "행성 인프라시설", "name_ru": "Планетарная инфраструктура", "name_zh": "行星基础设施", "nameID": 66318 }, "1322": { "description_de": "Zur Extraktion von Ressourcen von einem Planeten wird eine Kommandozentrale benötigt", "description_en-us": "A Command Center is required to extract resources from a planet", "description_es": "Se necesita un centro de mando para extraer recursos de un planeta.", "description_fr": "Il est nécessaire d'avoir un centre de commandement pour extraire les ressources d'une planète", "description_it": "A Command Center is required to extract resources from a planet", "description_ja": "惑星から資源を採取するには、司令基地が必要になる", "description_ko": "행성 자원을 추출하기 위한 기반 시설입니다.", "description_ru": "Для добычи ресурсов на поверхности планеты необходим центр управления наземными базами", "description_zh": "从行星上开采资源需要一座指挥中心", "descriptionID": 65523, "hasTypes": 1, "iconID": 2875, "name_de": "Kommandozentralen", "name_en-us": "Command Centers", "name_es": "Centros de mando", "name_fr": "Centres de commandement", "name_it": "Command Centers", "name_ja": "司令基地", "name_ko": "통제센터", "name_ru": "Центры управления", "name_zh": "指挥中心", "nameID": 66598, "parentGroupID": 1320 }, "1323": { "description_de": "Skills zum effizienten Abbau von Rohstoffen und der Aufbereitung dieser.", "description_en-us": "Skills pertaining to efficiently extracting raw materials and refining them", "description_es": "Habilidades para extraer materias primas y refinarlas de forma eficaz.", "description_fr": "Compétences destinées à extraire les matières premières et à les raffiner de manière efficace", "description_it": "Skills pertaining to efficiently extracting raw materials and refining them", "description_ja": "原料を効率よく抽出・精錬するスキル", "description_ko": "재료 추출 및 정제 관련 스킬입니다.", "description_ru": "Навыки, необходимые для добычи сырья и его последующей переработки", "description_zh": "高效地开采并提炼原材料的技能", "descriptionID": 65441, "hasTypes": 1, "iconID": 33, "name_de": "Ressourcenverarbeitung", "name_en-us": "Resource Processing", "name_es": "Procesamiento de recursos", "name_fr": "Traitement des ressources", "name_it": "Resource Processing", "name_ja": "資源加工", "name_ko": "자원 정제", "name_ru": "Добыча и переработка сырья", "name_zh": "资源处理", "nameID": 66515, "parentGroupID": 150 }, "1332": { "description_de": "Von Planeten gewonnene Materialien", "description_en-us": "Materials sourced from planets", "description_es": "Materiales extraídos de los planetas.", "description_fr": "Matériaux provenant des planètes", "description_it": "Materials sourced from planets", "description_ja": "惑星から採掘される資源", "description_ko": "행성에서 추출한 자원입니다.", "description_ru": "Материалы, добытые на планетах", "description_zh": "从行星上获取的材料", "descriptionID": 65275, "hasTypes": 0, "iconID": 10073, "name_de": "Planetarische Materialien", "name_en-us": "Planetary Materials", "name_es": "Materiales planetarios", "name_fr": "Matériaux planétaires", "name_it": "Planetary Materials", "name_ja": "惑星資源", "name_ko": "행성 자원", "name_ru": "Планетарные материалы", "name_zh": "行星材料", "nameID": 66349, "parentGroupID": 533 }, "1333": { "description_de": "Die erste Stufe planetarer Materialien.", "description_en-us": "The first tier of planetary materials.", "description_es": "El primer nivel de materiales planetarios.", "description_fr": "Première strate des matériaux planétaires.", "description_it": "The first tier of planetary materials.", "description_ja": "惑星資源の 1 次加工形態。", "description_ko": "행성 자원의 첫 번째 티어 자원입니다.", "description_ru": "Планетарные материалы первой категории.", "description_zh": "各种第一级行星材料。", "descriptionID": 65447, "hasTypes": 1, "iconID": 10012, "name_de": "Planetarische Rohstoffe", "name_en-us": "Raw Planetary Materials", "name_es": "Materiales planetarios sin procesar", "name_fr": "Matériaux planétaires bruts", "name_it": "Raw Planetary Materials", "name_ja": "惑星原料", "name_ko": "행성 자원 - 원재료 단계", "name_ru": "Необработанные планетарные материалы", "name_zh": "行星原材料", "nameID": 66521, "parentGroupID": 1332 }, "1334": { "description_de": "Die zweite Stufe planetarer Materialien.", "description_en-us": "The second tier of planetary materials.", "description_es": "El segundo nivel de materiales planetarios.", "description_fr": "Deuxième strate de matériaux planétaires.", "description_it": "The second tier of planetary materials.", "description_ja": "惑星資源の 2 次加工形態。", "description_ko": "행성 자원의 두 번째 티어 자원입니다.", "description_ru": "Планетарные материалы второй категории.", "description_zh": "各种第二级行星材料。", "descriptionID": 65448, "hasTypes": 1, "iconID": 10023, "name_de": "Veredelte Planetarische Materialien", "name_en-us": "Processed Planetary Materials", "name_es": "Materiales planetarios procesados", "name_fr": "Matériaux planétaires traités", "name_it": "Processed Planetary Materials", "name_ja": "惑星1次加工品", "name_ko": "행성 자원 - 재처리 단계", "name_ru": "Обработанные планетарные материалы", "name_zh": "加工过的行星材料", "nameID": 66522, "parentGroupID": 1332 }, "1335": { "description_de": "Die dritte Stufe planetarer Materialien.", "description_en-us": "The third tier of planetary materials.", "description_es": "El tercer nivel de materiales planetarios.", "description_fr": "Troisième strate de matériaux planétaires.", "description_it": "The third tier of planetary materials.", "description_ja": "惑星資源の 3 次加工形態。", "description_ko": "행성 자원의 세 번째 티어 자원입니다.", "description_ru": "Планетарные материалы третьей категории.", "description_zh": "各种第三级行星材料。", "descriptionID": 65449, "hasTypes": 1, "iconID": 1362, "name_de": "Raffinierte Planetarische Materialien", "name_en-us": "Refined Planetary Materials", "name_es": "Materiales planetarios refinados", "name_fr": "Matériaux planétaires raffinés", "name_it": "Refined Planetary Materials", "name_ja": "惑星精錬資源", "name_ko": "행성 자원 - 정제 단계", "name_ru": "Технологичные планетарные материалы", "name_zh": "精炼过的行星材料", "nameID": 66523, "parentGroupID": 1332 }, "1336": { "description_de": "Die vierte Stufe planetarer Materialien.", "description_en-us": "The fourth tier of planetary materials.", "description_es": "El cuarto nivel de materiales planetarios.", "description_fr": "Quatrième strate de matériaux planétaires.", "description_it": "The fourth tier of planetary materials.", "description_ja": "惑星資源の 4 次加工形態。", "description_ko": "행성 자원의 네 번째 티어 자원입니다.", "description_ru": "Планетарные материалы четвертой категории.", "description_zh": "各种第四级行星材料。", "descriptionID": 65450, "hasTypes": 1, "iconID": 10040, "name_de": "Spezialisierte Planetarische Materialien", "name_en-us": "Specialized Planetary Materials", "name_es": "Materiales planetarios especializados", "name_fr": "Matériaux planétaires spécialisés", "name_it": "Specialized Planetary Materials", "name_ja": "特化型惑星資源", "name_ko": "행성 자원 - 전문화 단계", "name_ru": "Специализированные планетарные материалы", "name_zh": "特殊行星材料", "nameID": 66525, "parentGroupID": 1332 }, "1337": { "description_de": "Die erste und einzige Stufe planetarer Materialien.", "description_en-us": "The firth and final tier of planetary materials.", "description_es": "El quinto y último nivel de materiales planetarios.", "description_fr": "Cinquième et dernière strate de matériaux planétaires.", "description_it": "The firth and final tier of planetary materials.", "description_ja": "惑星資源の第 4、つまり最終加工形態。", "description_ko": "행성 자원의 다섯 번째 티어 자원입니다.", "description_ru": "Планетарные материалы пятой, высшей категории.", "description_zh": "最高和最终级别的行星产出材料。", "descriptionID": 65451, "hasTypes": 1, "iconID": 10074, "name_de": "Fortschrittliche Planetarische Materialien", "name_en-us": "Advanced Planetary Materials", "name_es": "Materiales planetarios avanzados", "name_fr": "Matériaux planétaires avancés", "name_it": "Advanced Planetary Materials", "name_ja": "惑星2次加工品", "name_ko": "행성 자원 - 고급 단계", "name_ru": "Высокотехнологичные планетарные материалы", "name_zh": "高级行星材料", "nameID": 66526, "parentGroupID": 1332 }, "1338": { "description_de": "Blaupausen von Strukturen im Weltraum", "description_en-us": "Blueprints of structures in space", "description_es": "Planos de estructuras espaciales.", "description_fr": "Plans de construction de structures spatiales", "description_it": "Blueprints of structures in space", "description_ja": "宙域にある建造物の図", "description_ko": "스탠드업 구조물 관련 블루프린트입니다.", "description_ru": "Чертежи космических сооружений", "description_zh": "太空建筑的蓝图", "descriptionID": 65343, "hasTypes": 0, "iconID": 2703, "name_de": "Strukturen", "name_en-us": "Structures", "name_es": "Estructuras", "name_fr": "Structures", "name_it": "Structures", "name_ja": "建造物", "name_ko": "구조물", "name_ru": "Cооружения", "name_zh": "建筑", "nameID": 66417, "parentGroupID": 2 }, "1339": { "description_de": "Blueprints für Kontrolltürme.", "description_en-us": "Blueprints of Control Towers.", "description_es": "Planos de torres de control.", "description_fr": "Plans de construction de tours de contrôle.", "description_it": "Blueprints of Control Towers.", "description_ja": "建設プラットフォームのブループリント。", "description_ko": "관제타워 블루프린트입니다.", "description_ru": "Чертежи башен управления.", "description_zh": "各种控制塔的蓝图。", "descriptionID": 65344, "hasTypes": 1, "iconID": 2703, "name_de": "Kontrolltürme", "name_en-us": "Control Towers", "name_es": "Torres de control", "name_fr": "Tours de contrôle", "name_it": "Control Towers", "name_ja": "コントロールタワー", "name_ko": "관제타워", "name_ru": "Башни управления ПОСами", "name_zh": "控制塔", "nameID": 66418, "parentGroupID": 1841 }, "1340": { "description_de": "Blueprints für Assembly Arrays.", "description_en-us": "Blueprints of Assembly Arrays.", "description_es": "Planos de baterías de montaje.", "description_fr": "Plans de construction de modules d'assemblage.", "description_it": "Blueprints of Assembly Arrays.", "description_ja": "組み立て施設のブループリント。", "description_ko": "생산 시설 블루프린트입니다.", "description_ru": "Чертежи сборочных цехов.", "description_zh": "各种装配阵列的蓝图。", "descriptionID": 65345, "hasTypes": 1, "iconID": 2703, "name_de": "Fertigungsanlagen", "name_en-us": "Assembly Arrays", "name_es": "Baterías de montaje", "name_fr": "Modules d'assemblage", "name_it": "Assembly Arrays", "name_ja": "組み立て施設", "name_ko": "생산시설", "name_ru": "Сборочные линии", "name_zh": "装配阵列", "nameID": 66419, "parentGroupID": 1841 }, "1341": { "description_de": "Blueprints für Corporation-Hangar-Arrays.", "description_en-us": "Blueprints of Corporate Hangar Arrays.", "description_es": "Planos de dársenas de hangares corporativos.", "description_fr": "Plans de construction pour installations de hangar corporatif.", "description_it": "Blueprints of Corporate Hangar Arrays.", "description_ja": "コーポハンガー施設のブループリント。", "description_ko": "코퍼레이션 공용창고 블루프린트입니다.", "description_ru": "Чертежи складских модулей.", "description_zh": "军团机库阵列的蓝图。", "descriptionID": 65346, "hasTypes": 1, "iconID": 2703, "name_de": "Corporation-Hangaranlagen", "name_en-us": "Corporate Hangar Arrays", "name_es": "Dársenas de hangares corporativos", "name_fr": "Modules du hangar corporatif", "name_it": "Corporate Hangar Arrays", "name_ja": "コーポハンガー施設", "name_ko": "코퍼레이션 공용창고", "name_ru": "Внешние корпоративные ангары", "name_zh": "军团机库阵列", "nameID": 66420, "parentGroupID": 1841 }, "1342": { "description_de": "Blueprints für Anziehungsgenerator-Arrays.", "description_en-us": "Blueprints of Cynosural Generator Arrays.", "description_es": "Planos de sistemas generadores cinosurales.", "description_fr": "Plans de construction de modules de génération cynosurale.", "description_it": "Blueprints of Cynosural Generator Arrays.", "description_ja": "サイノシュラル生成施設のブループリント。", "description_ko": "사이노슈럴 생성기 블루프린트입니다.", "description_ru": "Чертежи стационарных приводных маяков.", "description_zh": "诱导力场发生阵列的蓝图。", "descriptionID": 65347, "hasTypes": 1, "iconID": 2703, "name_de": "Anziehungsgeneratoranlagen", "name_en-us": "Cynosural Generator Arrays", "name_es": "Sistemas generadores cinosurales", "name_fr": "Modules de génération cynosurale", "name_it": "Cynosural Generator Arrays", "name_ja": "サイノシュラル生成施設", "name_ko": "사이노슈럴 생성기", "name_ru": "Стационарные приводные маяки", "name_zh": "诱导力场发生阵列", "nameID": 66421, "parentGroupID": 1841 }, "1343": { "description_de": "Blueprints für Anziehungssystem-Jammer", "description_en-us": "Blueprints of Cynosural System Jammers.", "description_es": "Planos de perturbadores cinosurales de sistemas.", "description_fr": "Plans de construction de brouilleurs de système cynosural.", "description_it": "Blueprints of Cynosural System Jammers.", "description_ja": "サイノシュラルシステムジャマーのブループリント。", "description_ko": "사이노슈럴 시스템 재머 블루프린트입니다.", "description_ru": "Чертежи систем глушения приводных маяков.", "description_zh": "诱导力场系统干扰器的蓝图。", "descriptionID": 65348, "hasTypes": 1, "iconID": 2703, "name_de": "Anziehungssystemblocker", "name_en-us": "Cynosural System Jammers", "name_es": "Perturbadores cinosurales de sistemas", "name_fr": "Brouilleurs de système cynosural", "name_it": "Cynosural System Jammers", "name_ja": "サイノシュラルシステムジャマー", "name_ko": "사이노슈럴 시스템 재머", "name_ru": "Блоки-глушители приводных маяков", "name_zh": "诱导力场系统干扰器", "nameID": 66422, "parentGroupID": 1841 }, "1344": { "description_de": "Blueprints für Batterien zur elektronischen Kriegsführung.", "description_en-us": "Blueprints of Electronic Warfare Batteries.", "description_es": "Planos de baterías de guerra electrónica.", "description_fr": "Plans de construction de batteries de guerre électronique.", "description_it": "Blueprints of Electronic Warfare Batteries.", "description_ja": "電子戦兵器のブループリント。", "description_ko": "전자전 포탑 블루프린트입니다.", "description_ru": "Чертежи батарей электронного противодействия.", "description_zh": "各种电子战炮塔的蓝图。", "descriptionID": 65349, "hasTypes": 1, "iconID": 2703, "name_de": "Batterien zur elektronischen Kriegsführung", "name_en-us": "Electronic Warfare Batteries", "name_es": "Baterías de guerra electrónica", "name_fr": "Batteries de guerre électronique", "name_it": "Electronic Warfare Batteries", "name_ja": "電子戦兵器", "name_ko": "전자전 포탑", "name_ru": "Батареи РЭБ", "name_zh": "电子战炮塔", "nameID": 66423, "parentGroupID": 1534 }, "1345": { "description_de": "Blueprints für Energie-Neutralisierungsbatterien.", "description_en-us": "Blueprints of Energy Neutralization Batteries.", "description_es": "Planos de baterías de neutralización de energía.", "description_fr": "Plans de construction de batteries de neutralisation d'énergie.", "description_it": "Blueprints of Energy Neutralization Batteries.", "description_ja": "エネルギー相殺兵器のブループリント。", "description_ko": "에너지 뉴트럴라이제이션 포탑 블루프린트입니다.", "description_ru": "Чертежи стационарных нейтрализаторов энергии.", "description_zh": "能量中和炮塔的蓝图。", "descriptionID": 65350, "hasTypes": 1, "iconID": 2703, "name_de": "Energieneutralisierungsbatterien", "name_en-us": "Energy Neutralization Batteries", "name_es": "Baterías de neutralización de energía", "name_fr": "Batteries de neutralisation d'énergie", "name_it": "Energy Neutralization Batteries", "name_ja": "エネルギー相殺兵器", "name_ko": "에너지 뉴트럴라이제이션 포탑", "name_ru": "Стационарные нейтрализаторы заряда накопителей", "name_zh": "能量中和炮塔", "nameID": 66424, "parentGroupID": 1534 }, "1346": { "description_de": "Blaupausen für Sprungbrücken.", "description_en-us": "Blueprints of Jump Bridge.", "description_es": "Planos de puentes de salto.", "description_fr": "Plans de construction de ponts hyperspatiaux.", "description_it": "Blueprints of Jump Bridge.", "description_ja": "ジャンプブリッジのブループリント。", "description_ko": "점브 브릿지 블루프린트입니다.", "description_ru": "Чертежи генераторов гипермостов.", "description_zh": "跳跃桥接的蓝图。", "descriptionID": 65351, "hasTypes": 1, "iconID": 2703, "name_de": "Sprungbrücken", "name_en-us": "Jump Bridge", "name_es": "Puente de salto", "name_fr": "Pont hyperspatial", "name_it": "Jump Bridge", "name_ja": "ジャンプブリッジ", "name_ko": "점프 브릿지", "name_ru": "Генераторы гипермостов", "name_zh": "跳跃桥接", "nameID": 66425, "parentGroupID": 1841 }, "1347": { "description_de": "Blueprints für Hybridbatterien.", "description_en-us": "Blueprints of Hybrid Batteries.", "description_es": "Planos de baterías híbridas.", "description_fr": "Plans de construction de batteries d'armes hybrides.", "description_it": "Blueprints of Hybrid Batteries.", "description_ja": "ハイブリッドバッテリーのブループリント。", "description_ko": "하이브리드 포탑 블루프린트입니다.", "description_ru": "Чертежи батарей гибридных орудий.", "description_zh": "混合炮塔的蓝图。", "descriptionID": 65352, "hasTypes": 1, "iconID": 2703, "name_de": "Hybridbatterien", "name_en-us": "Hybrid Batteries", "name_es": "Baterías híbridas", "name_fr": "Batteries hybrides", "name_it": "Hybrid Batteries", "name_ja": "ハイブリッド砲台", "name_ko": "하이브리드 포탑", "name_ru": "Батареи гибридных орудий", "name_zh": "混合炮塔", "nameID": 66426, "parentGroupID": 1534 }, "1348": { "description_de": "Blueprints für Laserbatterien.", "description_en-us": "Blueprints of Laser Batteries.", "description_es": "Planos de baterías láser.", "description_fr": "Plans de construction de batteries de lasers.", "description_it": "Blueprints of Laser Batteries.", "description_ja": "レーザーバッテリーのブループリント。", "description_ko": "레이저 포탑 블루프린트입니다.", "description_ru": "Чертежи батарей лазерных орудий.", "description_zh": "激光炮塔的蓝图。", "descriptionID": 65353, "hasTypes": 1, "iconID": 2703, "name_de": "Laserbatterien", "name_en-us": "Laser Batteries", "name_es": "Baterías láser", "name_fr": "Batteries de lasers", "name_it": "Laser Batteries", "name_ja": "レーザー砲台", "name_ko": "레이저 포탑", "name_ru": "Батареи лазерных орудий", "name_zh": "激光炮塔", "nameID": 66427, "parentGroupID": 1534 }, "1349": { "description_de": "Blueprints für Lenkwaffenbatterien.", "description_en-us": "Blueprints of Missile Batteries.", "description_es": "Planos de baterías de misiles.", "description_fr": "Plans de construction de batteries de missiles.", "description_it": "Blueprints of Missile Batteries.", "description_ja": "ミサイル砲台のブループリント。", "description_ko": "미사일 포탑 블루프린트입니다.", "description_ru": "Чертежи ракетных батарей.", "description_zh": "导弹发射塔的蓝图。", "descriptionID": 65354, "hasTypes": 1, "iconID": 2703, "name_de": "Lenkwaffenbatterien", "name_en-us": "Missile Batteries", "name_es": "Baterías de misiles", "name_fr": "Batteries de missiles", "name_it": "Missile Batteries", "name_ja": "ミサイル砲台", "name_ko": "미사일 포탑", "name_ru": "Ракетные батареи", "name_zh": "导弹发射塔", "nameID": 66428, "parentGroupID": 1534 }, "1350": { "description_de": "Blueprints für Projektilbatterien.", "description_en-us": "Blueprints of Projectile Batteries.", "description_es": "Planos de baterías de proyectiles.", "description_fr": "Plans de construction de batteries d'armes à projectiles.", "description_it": "Blueprints of Projectile Batteries.", "description_ja": "プロジェクタイル砲台のブループリント。", "description_ko": "발사체 포탑 블루프린트입니다.", "description_ru": "Чертежи батарей баллистических орудий.", "description_zh": "射弹炮塔的蓝图。", "descriptionID": 65355, "hasTypes": 1, "iconID": 2703, "name_de": "Projektilbatterien", "name_en-us": "Projectile Batteries", "name_es": "Baterías de proyectiles", "name_fr": "Batteries à projectiles", "name_it": "Projectile Batteries", "name_ja": "プロジェクタイル砲台", "name_ko": "발사체 포탑", "name_ru": "Батареи баллистических орудий", "name_zh": "射弹炮塔", "nameID": 66429, "parentGroupID": 1534 }, "1351": { "description_de": "Blueprints für Reaktoren.", "description_en-us": "Blueprints of Reactors.", "description_es": "Planos de reactores.", "description_fr": "Plans de construction de réacteurs.", "description_it": "Blueprints of Reactors.", "description_ja": "リアクターのブループリント。", "description_ko": "반응로 블루프린트입니다.", "description_ru": "Чертежи химических реакторов.", "description_zh": "反应堆的蓝图。", "descriptionID": 65356, "hasTypes": 1, "iconID": 2703, "name_de": "Reaktoren", "name_en-us": "Reactors", "name_es": "Reactores", "name_fr": "Réacteurs", "name_it": "Reactors", "name_ja": "リアクター", "name_ko": "반응로", "name_ru": "Химические реакторы", "name_zh": "反应堆", "nameID": 66430, "parentGroupID": 1841 }, "1352": { "description_de": "Blueprints für Mondabbau-Arrays.", "description_en-us": "Blueprints of Moon Harvesting Arrays.", "description_es": "Planos de plataformas recolectoras lunares.", "description_fr": "Plans de construction de modules de collecte lunaire.", "description_it": "Blueprints of Moon Harvesting Arrays.", "description_ja": "衛星採掘施設のブループリント。", "description_ko": "위성 채굴 시설 블루프린트입니다.", "description_ru": "Чертежи комплексов экстракции со спутников.", "description_zh": "卫星开采阵列的蓝图。", "descriptionID": 65357, "hasTypes": 1, "iconID": 2703, "name_de": "Mondabbauanlagen", "name_en-us": "Moon Harvesting Arrays", "name_es": "Plataformas recolectoras lunares", "name_fr": "Modules de collecte lunaire", "name_it": "Moon Harvesting Arrays", "name_ja": "衛星採掘施設", "name_ko": "위성 채굴 시설", "name_ru": "Блоки добычи со спутников", "name_zh": "卫星开采阵列", "nameID": 66431, "parentGroupID": 1841 }, "1353": { "description_de": "Blaupausen von Aufbereitungsanlagen.", "description_en-us": "Blueprints of Reprocessing Arrays.", "description_es": "Planos de matrices de reprocesamiento.", "description_fr": "Plans de construction de modules de retraitement", "description_it": "Blueprints of Reprocessing Arrays.", "description_ja": "再処理施設のブループリント", "description_ko": "정제시설 블루프린트입니다.", "description_ru": "Чертежи сборочных цехов", "description_zh": "提炼阵列的蓝图", "descriptionID": 65358, "hasTypes": 1, "iconID": 2703, "name_de": "Wiederaufbereitungsanlagen", "name_en-us": "Reprocessing Arrays", "name_es": "Matrices de reprocesamiento", "name_fr": "Modules de retraitement", "name_it": "Reprocessing Arrays", "name_ja": "再処理施設", "name_ko": "정제시설", "name_ru": "Цеха переработки", "name_zh": "提炼阵列", "nameID": 66432, "parentGroupID": 1841 }, "1354": { "description_de": "Blueprints für Schild-Verstärker-Arrays.", "description_en-us": "Blueprints of Shield Hardening Arrays.", "description_es": "Planos de plataformas endurecedoras de escudo.", "description_fr": "Plans de construction de modules de renforcement de bouclier.", "description_it": "Blueprints of Shield Hardening Arrays.", "description_ja": "シールドハードニング施設のブループリント。", "description_ko": "실드 강화 시설 블루프린트입니다.", "description_ru": "Чертежи систем укрепления силового щита.", "description_zh": "各种护盾强化阵列的蓝图。", "descriptionID": 65359, "hasTypes": 1, "iconID": 2703, "name_de": "Schildhärtungsanlagen", "name_en-us": "Shield Hardening Arrays", "name_es": "Plataforma endurecedora de escudo", "name_fr": "Modules de renforcement de bouclier", "name_it": "Shield Hardening Arrays", "name_ja": "シールドハードニング施設", "name_ko": "실드 강화시설", "name_ru": "Блоки укрепления щитов", "name_zh": "护盾强化阵列", "nameID": 66433, "parentGroupID": 1841 }, "1355": { "description_de": "Blueprints für Silos.", "description_en-us": "Blueprints of Silos.", "description_es": "Planos de depósitos.", "description_fr": "Plans de construction de silos.", "description_it": "Blueprints of Silos.", "description_ja": "貯蔵庫のブループリント。", "description_ko": "사일로 블루프린트입니다.", "description_ru": "Чертежи хранилищ.", "description_zh": "各种储藏库的蓝图。", "descriptionID": 65360, "hasTypes": 1, "iconID": 2703, "name_de": "Silos", "name_en-us": "Silos", "name_es": "Depósitos", "name_fr": "Silos", "name_it": "Silos", "name_ja": "貯蔵庫", "name_ko": "사일로", "name_ru": "Хранилища", "name_zh": "储藏库", "nameID": 66434, "parentGroupID": 1841 }, "1356": { "description_de": "Blueprints für Souveränitätsstrukturen.", "description_en-us": "Blueprints of Sovereignty Structures.", "description_es": "Planos de estructuras de soberanía.", "description_fr": "Plans de construction de structures de souveraineté.", "description_it": "Blueprints of Sovereignty Structures.", "description_ja": "領有権管理設備のブループリント。", "description_ko": "소버린티 구조물 블루프린트입니다.", "description_ru": "Чертежи модулей воздействия на право владения планетными системами.", "description_zh": "主权设施的蓝图。", "descriptionID": 65361, "hasTypes": 1, "iconID": 2703, "name_de": "Souveränitätsstrukturen", "name_en-us": "Sovereignty Structures", "name_es": "Estructuras de soberanía", "name_fr": "Structures de souveraineté", "name_it": "Sovereignty Structures", "name_ja": "領有権管理設備", "name_ko": "소버린티 구조물", "name_ru": "Блоки воздействия на суверенитет", "name_zh": "主权设施", "nameID": 66435, "parentGroupID": 2015 }, "1358": { "description_de": "Blueprints für Nanobot-Reparaturpaste.", "description_en-us": "Blueprints of Nanite Repair Paste.", "description_es": "Planos de fluido reparador de nanobots.", "description_fr": "Plans de construction Nanites de réparation", "description_it": "Blueprints of Nanite Repair Paste.", "description_ja": "ナノマシンリペアペイストのブループリント。", "description_ko": "나나이트 용액 블루프린트입니다.", "description_ru": "Инструкции по производству ремонтных нанопаст.", "description_zh": "纳米体修复粘合剂的蓝图。", "descriptionID": 65299, "hasTypes": 1, "iconID": 2703, "name_de": "Nanobot-Reparaturpaste", "name_en-us": "Nanite Repair Paste", "name_es": "Fluido reparador de nanobots", "name_fr": "Nanites de réparation", "name_it": "Nanite Repair Paste", "name_ja": "ナノマシンリペアペイスト", "name_ko": "나나이트 용액", "name_ru": "Ремонтная нанопаста", "name_zh": "纳米体修复粘合剂", "nameID": 66373, "parentGroupID": 211 }, "1359": { "description_de": "Blaupausen für Mobile Labore.", "description_en-us": "Blueprints of Laboratories.", "description_es": "Planos de laboratorios.", "description_fr": "Plans de construction pour laboratoires.", "description_it": "Blueprints of Laboratories.", "description_ja": "研究所のブループリント。", "description_ko": "연구실 블루프린트입니다.", "description_ru": "Чертежи лабораторий", "description_zh": "各种实验室的蓝图。", "descriptionID": 65362, "hasTypes": 1, "iconID": 2703, "name_de": "Labore", "name_en-us": "Laboratories", "name_es": "Laboratorios", "name_fr": "Laboratoires", "name_it": "Laboratories", "name_ja": "研究施設", "name_ko": "연구실", "name_ru": "Лаборатории", "name_zh": "实验室", "nameID": 66436, "parentGroupID": 1841 }, "1361": { "description_de": "Kleine Raumschiffe, die besonders gut für Funktionen geeignet sind, die Geschwindigkeit und Wendigkeit erfordern", "description_en-us": "Small spaceships that excel in any role involving speed and agility", "description_es": "Naves pequeñas que destacan en cualquier maniobra que requiera velocidad y agilidad.", "description_fr": "Petits vaisseaux qui excellent dans tous les rôles nécessitant vitesse et agilité", "description_it": "Small spaceships that excel in any role involving speed and agility", "description_ja": "機動性に秀でる小型艦船", "description_ko": "빠른 속도와 기동성을 자랑하는 소형 함선입니다.", "description_ru": "Небольшие манёвренные корабли, славящиеся своей скоростью и лёгкостью", "description_zh": "快速而灵活的小型舰船", "descriptionID": 65363, "hasTypes": 0, "iconID": 1443, "name_de": "Fregatten", "name_en-us": "Frigates", "name_es": "Fragatas", "name_fr": "Frégates", "name_it": "Frigates", "name_ja": "フリゲート", "name_ko": "프리깃", "name_ru": "Фрегаты", "name_zh": "护卫舰", "nameID": 66437, "parentGroupID": 4 }, "1362": { "description_de": "Von bestimmten Fraktionen entworfene Fregatten.", "description_en-us": "Frigates designed by specific factions.", "description_es": "Fragatas diseñadas por facciones específicas.", "description_fr": "Frégates conçues par des factions spécifiques.", "description_it": "Frigates designed by specific factions.", "description_ja": "特定勢力が設計したフリゲート。", "description_ko": "팩션에서 설계한 프리깃입니다.", "description_ru": "Модификации фрегатов, используемые различными организациями галактики.", "description_zh": "各大势力设计的护卫舰。", "descriptionID": 65364, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktionsfregatten", "name_en-us": "Faction Frigates", "name_es": "Fragatas faccionarias", "name_fr": "Frégates de faction", "name_it": "Faction Frigates", "name_ja": "勢力別フリゲート", "name_ko": "팩션 프리깃", "name_ru": "Пиратские и армейские", "name_zh": "势力护卫舰", "nameID": 66438, "parentGroupID": 1361 }, "1364": { "description_de": "Fregattenvarianten für spezielle Zwecke.", "description_en-us": "Frigate variants intended for specialized purposes.", "description_es": "Variantes de fragata concebidas para fines específicos.", "description_fr": "Variantes de frégates destinées à des fins précises.", "description_it": "Frigate variants intended for specialized purposes.", "description_ja": "特定用途に特化したフリゲート。", "description_ko": "특수 임무를 위해 개조된 프리깃입니다.", "description_ru": "Фрегаты, используемые для решения специализированных задач.", "description_zh": "专精于某个特定领域的护卫舰衍生型号。", "descriptionID": 65367, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Fregatten", "name_en-us": "Advanced Frigates", "name_es": "Fragatas avanzadas", "name_fr": "Frégates avancées", "name_it": "Advanced Frigates", "name_ja": "高性能フリゲート", "name_ko": "상급 프리깃", "name_ru": "Специализированные", "name_zh": "高级护卫舰", "nameID": 66441, "parentGroupID": 1361 }, "1365": { "description_de": "Fregattendesigns anderer Fraktionen", "description_en-us": "Non-Empire faction frigate designs.", "description_es": "Diseños de fragatas de facciones que no pertenecen a ningún imperio.", "description_fr": "Modèles de frégates de faction étrangère à l'empire.", "description_it": "Non-Empire faction frigate designs.", "description_ja": "非国家勢力フリゲート設計図。", "description_ko": "비국가 소속 팩션의 프리깃입니다.", "description_ru": "Проекты фрегатов, разработанные независимыми организациями Нового Эдема.", "description_zh": "非帝国势力护卫舰设计。", "descriptionID": 65365, "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 66439, "parentGroupID": 1362 }, "1366": { "description_de": "Designs für Navy-Fraktionsfregatten.", "description_en-us": "Navy faction frigate designs.", "description_es": "Diseños de fragatas faccionarias de la Armada.", "description_fr": "Modèles de frégates de faction de la Navy.", "description_it": "Navy faction frigate designs.", "description_ja": "海軍勢力フリゲート設計図。", "description_ko": "해군 팩션의 프리깃입니다.", "description_ru": "Модификации фрегатов, используемые вооруженными силами государств галактики.", "description_zh": "海军势力护卫舰设计。", "descriptionID": 65366, "hasTypes": 0, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍仕様", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 66440, "parentGroupID": 1362 }, "1367": { "description_de": "Mittelgroße Raumschiffe, die für verschiedene Rollen konzipiert wurden.", "description_en-us": "Medium-sized spaceships intended for a variety of roles", "description_es": "Naves medianas concebidas para diversas funciones.", "description_fr": "Vaisseaux spatiaux de taille intermédiaire prévus pour remplir diverses fonctions", "description_it": "Medium-sized spaceships intended for a variety of roles", "description_ja": "汎用タイプの中型艦船", "description_ko": "다양한 임무를 수행할 수 있는 중형 함선입니다.", "description_ru": "Многофункциональные корабли крейсерского тоннажа", "description_zh": "中型尺寸的舰船,用途广泛", "descriptionID": 65368, "hasTypes": 0, "iconID": 1443, "name_de": "Kreuzer", "name_en-us": "Cruisers", "name_es": "Cruceros", "name_fr": "Croiseurs", "name_it": "Cruisers", "name_ja": "巡洋艦", "name_ko": "크루저", "name_ru": "Крейсеры", "name_zh": "巡洋舰", "nameID": 66442, "parentGroupID": 4 }, "1368": { "description_de": "Kreuzervarianten für spezielle Zwecke.", "description_en-us": "Cruiser variants intended for specialized purposes.", "description_es": "Variantes de cruceros concebidas para fines específicos.", "description_fr": "Variantes de croiseurs destinées à des fins précises.", "description_it": "Cruiser variants intended for specialized purposes.", "description_ja": "特定用途に専門化した特化型巡洋艦。", "description_ko": "특수 임무를 위해 개조된 크루저입니다.", "description_ru": "Крейсера, используемые для решения специализированных задач.", "description_zh": "专精于某个特定领域的巡洋舰衍生型号。", "descriptionID": 65369, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Kreuzer", "name_en-us": "Advanced Cruisers", "name_es": "Cruceros avanzados", "name_fr": "Croiseurs avancés", "name_it": "Advanced Cruisers", "name_ja": "高性能巡洋艦", "name_ko": "상급 크루저", "name_ru": "Специализированные", "name_zh": "高级巡洋舰", "nameID": 66443, "parentGroupID": 1367 }, "1369": { "description_de": "Von bestimmten Fraktionen entworfene Kreuzer.", "description_en-us": "Cruisers designed by specific factions.", "description_es": "Cruceros diseñados por facciones específicas.", "description_fr": "Croiseurs conçus par des factions spécifiques.", "description_it": "Cruisers designed by specific factions.", "description_ja": "各勢力が設計した巡洋艦。", "description_ko": "특정 팩션의 크루저입니다.", "description_ru": "Модификации крейсеров, используемые различными организациями галактики.", "description_zh": "各大势力设计的巡洋舰。", "descriptionID": 65371, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktionskreuzer", "name_en-us": "Faction Cruisers", "name_es": "Cruceros faccionarios", "name_fr": "Croiseurs de faction", "name_it": "Faction Cruisers", "name_ja": "勢力別巡洋艦", "name_ko": "팩션 크루저", "name_ru": "Пиратские и армейские", "name_zh": "势力巡洋舰", "nameID": 66445, "parentGroupID": 1367 }, "1370": { "description_de": "Designs für Navy-Fraktionskreuzer.", "description_en-us": "Navy faction cruiser designs.", "description_es": "Diseños de cruceros faccionarios de la Armada.", "description_fr": "Modèles de croiseurs de faction de la Navy.", "description_it": "Navy faction cruiser designs.", "description_ja": "海軍勢力の巡洋艦の設計図。", "description_ko": "해군 팩션의 크루저입니다.", "description_ru": "Модификации крейсеров, используемые вооруженными силами государств галактики.", "description_zh": "海军势力巡洋舰设计。", "descriptionID": 65372, "hasTypes": 1, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍仕様", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 66446, "parentGroupID": 1369 }, "1371": { "description_de": "Kreuzerdesigns der Piraten-Fraktion.", "description_en-us": "Pirate faction cruiser designs.", "description_es": "Diseños de cruceros de facciones piratas.", "description_fr": "Modèles de croiseurs de faction pirate.", "description_it": "Pirate faction cruiser designs.", "description_ja": "海賊勢力巡洋艦設計図。", "description_ko": "해적 팩션 크루저입니다.", "description_ru": "Модификации крейсеров, используемые пиратами.", "description_zh": "海盗势力巡洋舰设计。", "descriptionID": 65373, "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊仕様", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 66447, "parentGroupID": 1369 }, "1372": { "description_de": "Schwer bewaffnete Raumschiffe, die Robustheit für mehr Feuerkraft opfern.", "description_en-us": "Heavily armed spaceships that sacrifice durability for extra firepower", "description_es": "Naves fuertemente armadas que sacrifican la durabilidad por más potencia de fuego.", "description_fr": "Vaisseaux spatiaux lourdement armés qui privilégient la puissance de feu au détriment de la résistance", "description_it": "Heavily armed spaceships that sacrifice durability for extra firepower", "description_ja": "耐久性と引き換えに火力を向上させた、攻撃型の艦船", "description_ko": "내구성을 희생하여 화력에 투자한 중무장 함선입니다.", "description_ru": "Тяжеловооружённые корабли, жертвующие прочностью корпуса в обмен на дополнительную огневую мощь", "description_zh": "全副武装的舰船,牺牲了耐久性换来强劲的火力", "descriptionID": 65374, "hasTypes": 0, "iconID": 1443, "name_de": "Zerstörer", "name_en-us": "Destroyers", "name_es": "Destructores", "name_fr": "Destroyers", "name_it": "Destroyers", "name_ja": "駆逐艦", "name_ko": "디스트로이어", "name_ru": "Эсминцы", "name_zh": "驱逐舰", "nameID": 66448, "parentGroupID": 4 }, "1373": { "description_de": "Diese Zerstörer verfügen über zusätzliche Attribute, um sich besser auf bestimmte Rollen spezialisieren zu können.", "description_en-us": "These destroyers have additional attributes to help them specialize in specific roles.", "description_es": "Estos destructores poseen atributos adicionales que les permiten desempeñar funciones específicas.", "description_fr": "Ces destroyers possèdent des attributs supplémentaires pour les aider à se spécialiser.", "description_it": "These destroyers have additional attributes to help them specialize in specific roles.", "description_ja": "特殊な用途のために性能を強化された特化型駆逐艦。", "description_ko": "특수 임무를 위해 개조된 디스트로이어입니다.", "description_ru": "Эсминцы, переоборудованные под выполнение узкоспециализированных задач.", "description_zh": "这些类型的驱逐舰具备额外的属性,以便它们专精于某个特定领域。", "descriptionID": 65375, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Zerstörer", "name_en-us": "Advanced Destroyers", "name_es": "Destructores avanzados", "name_fr": "Destroyers avancés", "name_it": "Advanced Destroyers", "name_ja": "高性能駆逐艦", "name_ko": "상급 디스트로이어", "name_ru": "Специализированные", "name_zh": "高级驱逐舰", "nameID": 66449, "parentGroupID": 1372 }, "1374": { "description_de": "Mittelgroße Raumschiffe, die stärker sind als normale Kreuzer", "description_en-us": "Medium-sized spaceships that are more powerful than normal cruisers", "description_es": "Naves medianas más potentes que los cruceros normales.", "description_fr": "Vaisseaux spatiaux de taille intermédiaire plus puissants que les croiseurs standards", "description_it": "Medium-sized spaceships that are more powerful than normal cruisers", "description_ja": "一般的な巡洋艦より強力な中型艦船", "description_ko": "일반 크루저보다 강력한 중형 함선입니다.", "description_ru": "Корабли крейсерского тоннажа, более мощные, чем обычные крейсеры", "description_zh": "中型舰船,比普通巡洋舰更强力", "descriptionID": 65377, "hasTypes": 0, "iconID": 1443, "name_de": "Schlachtkreuzer", "name_en-us": "Battlecruisers", "name_es": "Cruceros de combate", "name_fr": "Croiseurs de bataille", "name_it": "Battlecruisers", "name_ja": "巡洋戦艦", "name_ko": "배틀크루저", "name_ru": "Линейные крейсеры", "name_zh": "战列巡洋舰", "nameID": 66451, "parentGroupID": 4 }, "1375": { "description_de": "Fortgeschrittene Schlachtkreuzer greifen auf fortschrittliche Technologie zurück, um maximale Effektivität in einer bestimmten Rolle zu erzielen.", "description_en-us": "Advanced battlecruisers make use of advanced technology for maximum effectiveness in a certain role.", "description_es": "Los cruceros de combate avanzados usan tecnología de última generación para alcanzar el máximo nivel de efectividad en una función dada.", "description_fr": "Les croiseurs de bataille avancés recourent à une technologie avancée pour démontrer une efficacité maximale dans une situation donnée.", "description_it": "Advanced battlecruisers make use of advanced technology for maximum effectiveness in a certain role.", "description_ja": "特定用途に最大の効果を発揮するために高度なテクノロジーを利用した巡洋戦艦級艦船。", "description_ko": "특수 임무를 위해 개조된 최첨단 배틀크루저입니다.", "description_ru": "При создании·усовершенствованных линейных крейсеров применяются новейшие технологии, позволяющие добиться максимальной эффективности в рамках выбранной специализации корабля.", "description_zh": "高级战列巡洋舰通过使用先进科技来专精于某个特定领域。", "descriptionID": 65378, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Schlachtkreuzer", "name_en-us": "Advanced Battlecruisers", "name_es": "Cruceros de combate avanzados", "name_fr": "Croiseurs de bataille avancés", "name_it": "Advanced Battlecruisers", "name_ja": "高性能巡洋戦艦", "name_ko": "상급 배틀크루저", "name_ru": "Специализированные", "name_zh": "高级战列巡洋舰", "nameID": 66452, "parentGroupID": 1374 }, "1376": { "description_de": "Große Raumschiffe mit ausreichend offensiven und defensiven Möglichkeiten, um alle Probleme - bis auf die größten - in Agriff zu nehmen", "description_en-us": "Large-sized spaceships with enough offensive and defensive capabilities to tackle all but the biggest problems", "description_es": "Naves de tamaño grande con suficientes capacidades ofensivas y defensivas para enfrentarse a cualquier problema... excepto a los más gordos.", "description_fr": "Vaisseaux spatiaux de grande taille disposant de suffisamment de capacités offensives et défensives pour s'attaquer à toutes les cibles hormis les plus grandes", "description_it": "Large-sized spaceships with enough offensive and defensive capabilities to tackle all but the biggest problems", "description_ja": "大抵の敵艦に立ち向かえるだけの攻撃力・防御力を誇る大型戦艦", "description_ko": "강력한 공격 및 방어 성능을 보유한 대형 함선으로 함대의 주력 함선입니다.", "description_ru": "Корабли большого тоннажа, обладающие достаточными защитой и вооружением, чтобы справиться даже с самыми крупными неприятностями", "description_zh": "大型舰船,攻防能力出色,足以应对大多数局面", "descriptionID": 65379, "hasTypes": 0, "iconID": 1443, "name_de": "Schlachtschiffe", "name_en-us": "Battleships", "name_es": "Acorazados", "name_fr": "Cuirassés", "name_it": "Battleships", "name_ja": "戦艦", "name_ko": "배틀쉽", "name_ru": "Линкоры", "name_zh": "战列舰", "nameID": 66453, "parentGroupID": 4 }, "1377": { "description_de": "Durch die Spezialisierung auf nur eine einzige Aufgabe wissen diese Schlachtschiffe im ihnen zugeteilten Bereich wie kein anderes Raumschiff zu glänzen.", "description_en-us": "By focusing the design down to a single purpose, these battleships excel at their designated tasks like no other starship can.", "description_es": "Al enfocar su diseño en un único propósito, estos acorazados desempeñan sus tareas designadas como ninguna otra nave.", "description_fr": "En concentrant la conception sur une seule finalité, ces cuirassés excellent dans leurs tâches comme nul autre vaisseau spatial.", "description_it": "By focusing the design down to a single purpose, these battleships excel at their designated tasks like no other starship can.", "description_ja": "単一用途に絞った専用設計により、その用途にかけては比類なき性能を発揮する特化型戦艦。", "description_ko": "특정 임무를 위해 설계된 이 배틀쉽은 어떤 함선보다 임무를 효율적으로 수행할 수 있습니다.", "description_ru": "Когда речь заходит о выполнении особо сложных задач, этим кораблям нет равных — именно для этого они и создавались.", "description_zh": "这些类型的战列舰被设计为专精于某个特定领域。", "descriptionID": 65380, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Schlachtschiffe", "name_en-us": "Advanced Battleships", "name_es": "Acorazados avanzados", "name_fr": "Cuirassés avancés", "name_it": "Advanced Battleships", "name_ja": "高性能戦艦", "name_ko": "상급 배틀쉽", "name_ru": "Специализированные", "name_zh": "高级战列舰", "nameID": 66454, "parentGroupID": 1376 }, "1378": { "description_de": "Von bestimmten Fraktionen entworfene Schlachtschiffe.", "description_en-us": "Battleships designed by specific factions.", "description_es": "Acorazados diseñados por facciones específicas.", "description_fr": "Cuirassés conçus par des factions spécifiques.", "description_it": "Battleships designed by specific factions.", "description_ja": "各勢力が設計した戦艦。", "description_ko": "특정 팩션에서 설계한 배틀쉽입니다.", "description_ru": "Модификации линкоров, используемые различными организациями галактики.", "description_zh": "各大势力设计的战列舰。", "descriptionID": 65381, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktionsschlachtschiffe", "name_en-us": "Faction Battleships", "name_es": "Acorazados faccionarios", "name_fr": "Cuirassés de faction", "name_it": "Faction Battleships", "name_ja": "勢力別戦艦", "name_ko": "팩션 배틀쉽", "name_ru": "Пиратские и армейские", "name_zh": "势力战列舰", "nameID": 66455, "parentGroupID": 1376 }, "1379": { "description_de": "Designs für Navy-Fraktionsschlachtschiffe.", "description_en-us": "Navy faction battleship designs.", "description_es": "Diseños de acorazados faccionarios de la Armada.", "description_fr": "Modèles de cuirassés de faction de la Navy.", "description_it": "Navy faction battleship designs.", "description_ja": "海軍勢力の戦艦設計図。", "description_ko": "해군 팩션의 배틀쉽입니다.", "description_ru": "Модификации линкоров, используемые вооруженными силами государств галактики.", "description_zh": "海军势力战列舰设计。", "descriptionID": 65382, "hasTypes": 1, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍仕様", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 66456, "parentGroupID": 1378 }, "1380": { "description_de": "Schlachtschiffdesigns der Piraten-Fraktion.", "description_en-us": "Pirate faction battleship designs.", "description_es": "Diseños de acorazados de facción piratas.", "description_fr": "Modèles de cuirassés de faction pirate.", "description_it": "Pirate faction battleship designs.", "description_ja": "海賊勢力の戦艦の設計図。", "description_ko": "해적 팩션의 배틀쉽입니다.", "description_ru": "Модификации линкоров, используемые пиратами.", "description_zh": "海盗势力战列舰设计。", "descriptionID": 65383, "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊仕様", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 66457, "parentGroupID": 1378 }, "1381": { "description_de": "Riesige Raumschiffe die fähig sind, Schlachtfelder oder Industriesektoren zu beherrschen", "description_en-us": "Huge spaceships capable of dominating battlefields or industry sectors", "description_es": "Naves enormes capaces de dominar campos de batalla o sectores industriales.", "description_fr": "Énormes vaisseaux spatiaux capables de s'imposer sur tous les champs de bataille ou les secteurs industriels", "description_it": "Huge spaceships capable of dominating battlefields or industry sectors", "description_ja": "産業部門や戦場を支配する超大型艦船", "description_ko": "함대 또는 산업의 핵심전력이 되는 거대한 함선입니다.", "description_ru": "Огромные корабли, определяющие ход масштабных сражений или эффективность крупномасштабных промышленных группировок", "description_zh": "巨大的舰船,在战场上或工业领域都具有统治力", "descriptionID": 65384, "hasTypes": 0, "iconID": 1443, "name_de": "Capital-Schiffe", "name_en-us": "Capital Ships", "name_es": "Naves capitales", "name_fr": "Vaisseaux capitaux", "name_it": "Capital Ships", "name_ja": "主力艦", "name_ko": "캐피탈 함선", "name_ru": "Корабли большого тоннажа", "name_zh": "旗舰", "nameID": 66458, "parentGroupID": 4 }, "1382": { "description_de": "Transporter und Industrieschiffe, die das Rückgrat der Wirtschaft darstellen", "description_en-us": "Haulers and industrial ships that form the backbone of the economy", "description_es": "Naves industriales y de mercancías que conforman el principal pilar de la economía.", "description_fr": "Cargos et vaisseaux industriels qui constituent l'épine dorsale de l'économie", "description_it": "Haulers and industrial ships that form the backbone of the economy", "description_ja": "経済の屋台骨を形成するハウラーと輸送艦", "description_ko": "운반선과 인더스트리얼 함선은 뉴에덴의 경제에서 중추적인 역할을 담당합니다", "description_ru": "Перевозчики и грузовые корабли, составляющие основу экономики", "description_zh": "运载舰和工业舰是经济系统的基石", "descriptionID": 65386, "hasTypes": 0, "iconID": 1443, "name_de": "Transporter und Industrieschiffe", "name_en-us": "Haulers and Industrial Ships", "name_es": "Naves de mercancías y naves industriales", "name_fr": "Cargos et vaisseaux industriels", "name_it": "Haulers and Industrial Ships", "name_ja": "ハウラーと輸送艦", "name_ko": "운반선 및 인더스트리얼", "name_ru": "Перевозчики и грузовые корабли", "name_zh": "运载舰和工业舰", "nameID": 66460, "parentGroupID": 4 }, "1384": { "description_de": "Schiffe die speziell dazu entwickelt wurden, im Weltall Ressourcen abzubauen", "description_en-us": "Ships specially designed to harvest resources in space", "description_es": "Naves diseñadas especialmente para recolectar recursos en el espacio.", "description_fr": "Vaisseaux spécialement conçus pour collecter les ressources dans l'espace", "description_it": "Ships specially designed to harvest resources in space", "description_ja": "宙域の資源採取に特化した艦船", "description_ko": "자원 추출에 특화된 함선입니다.", "description_ru": "Корабли, спроектированные для добычи ресурсов в космосе", "description_zh": "专门设计用来在太空中采集资源的舰船", "descriptionID": 65388, "hasTypes": 0, "iconID": 1443, "name_de": "Bergbaubarkassen", "name_en-us": "Mining Barges", "name_es": "Gabarras mineras", "name_fr": "Barges d'extraction minière", "name_it": "Mining Barges", "name_ja": "採掘艦", "name_ko": "채광선", "name_ru": "Буровые корабли", "name_zh": "采矿驳船", "nameID": 66462, "parentGroupID": 4 }, "1385": { "description_de": "Die Ausrüstung von fortschrittlichen Transportern ist auf ihren jeweiligen Verwendungszweck angepasst.", "description_en-us": "Advanced haulers are modified for specific purposes.", "description_es": "Las naves de mercancías avanzadas se modifican para fines específicos.", "description_fr": "Les cargos avancés sont modifiés à des fins particulières.", "description_it": "Advanced haulers are modified for specific purposes.", "description_ja": "高性能ハウラーは特定の目的のために特化している。", "description_ko": "상급 운반선은 특정한 역할에 맞춰 설계되었습니다.", "description_ru": "Улучшенные перевозчики для выполнения особых задач.", "description_zh": "高级运载舰是具有专门用途的改进型号。", "descriptionID": 65387, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Transporter", "name_en-us": "Advanced Haulers", "name_es": "Naves de mercancías avanzadas", "name_fr": "Cargos avancés", "name_it": "Advanced Haulers", "name_ja": "高性能ハウラー", "name_ko": "상급 운반선", "name_ru": "Улучшенные крейсеры", "name_zh": "高级运载舰", "nameID": 66461, "parentGroupID": 1382 }, "1389": { "description_de": "Blueprints von ORE-Industrial-Designs.", "description_en-us": "Blueprints of ORE industrial designs.", "description_es": "Planos de diseños de naves industriales de ORE.", "description_fr": "Plans de construction de modèles de vaisseaux industriels ORE.", "description_it": "Blueprints of ORE industrial designs.", "description_ja": "ORE輸送艦設計図のブループリント。", "description_ko": "ORE 인더스트리얼 블루프린트입니다.", "description_ru": "Чертежи промышленных кораблей разработки синдиката ORE.", "description_zh": "联合矿业工业舰设计蓝图", "descriptionID": 65277, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 66351, "parentGroupID": 208 }, "1390": { "description_de": "ORE-Industrial-Designs.", "description_en-us": "ORE industrial designs.", "description_es": "Diseños industriales de ORE.", "description_fr": "Modèles de vaisseaux industriels ORE.", "description_it": "ORE industrial designs.", "description_ja": "ORE 輸送艦設計図。", "description_ko": "ORE의 인더스트리얼입니다.", "description_ru": "Промышленные корабли разработки синдиката ORE.", "description_zh": "联合矿业工业舰设计", "descriptionID": 65278, "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 66352, "parentGroupID": 8 }, "1392": { "description_de": "Fraktions-Trägerschiff-Designs.", "description_en-us": "Faction carrier designs.", "description_es": "Diseños de portanaves faccionarios.", "description_fr": "Porte-vaisseaux de faction.", "description_it": "Faction carrier designs.", "description_ja": "勢力別艦載機母艦設計図。", "description_ko": "팩션 캐리어입니다.", "description_ru": "Модификации кораблей-носителей, используемые различными организациями галактики.", "description_zh": "势力航空母舰设计。", "descriptionID": 65385, "hasTypes": 1, "iconID": 1443, "name_de": "Fraktionsträgerschiffe", "name_en-us": "Faction Carrier", "name_es": "Portanaves faccionario", "name_fr": "Porte-vaisseaux de faction", "name_it": "Faction Carrier", "name_ja": "勢力別艦載母艦", "name_ko": "팩신 캐리어", "name_ru": "Пиратские и армейские", "name_zh": "势力航母", "nameID": 66459, "parentGroupID": 817 }, "1396": { "description_de": "Kapselpiloten können aus einer Vielzahl an exklusiven Bekleidungen und Accessoires wählen.", "description_en-us": "Capsuleers can choose from a variety of exclusive clothing and accessories", "description_es": "Los capsulistas pueden elegir entre una amplia selección de prendas y accesorios exclusivos.", "description_fr": "Les capsuliers peuvent choisir toute une gamme de vêtements et d'accessoires exclusifs", "description_it": "Capsuleers can choose from a variety of exclusive clothing and accessories", "description_ja": "カプセラは様々な衣服やアクセサリーを選ぶことができます", "description_ko": "캡슐리어는 다양한 의류와 악세사리를 착용할 수 있습니다.", "description_ru": "Капсулёры могут подобрать себе желаемый наряд из обширного ассортимента эксклюзивной одежды и уникальных аксессуаров.", "description_zh": "飞行员可以选择各式各样的衣物和装饰", "descriptionID": 65290, "hasTypes": 0, "iconID": 10256, "name_de": "Bekleidung", "name_en-us": "Apparel", "name_es": "Indumentaria", "name_fr": "Équipement", "name_it": "Apparel", "name_ja": "アパレル", "name_ko": "의류", "name_ru": "Одежда", "name_zh": "服饰", "nameID": 66364 }, "1397": { "description_de": "Kleidung für eine männliche Statur", "description_en-us": "Clothing for a masculine physique", "description_es": "Ropa para físicos masculinos.", "description_fr": "Habits masculins", "description_it": "Clothing for a masculine physique", "description_ja": "男性体型向きの衣料品", "description_ko": "남성을 위한 의류입니다.", "description_ru": "Мужская одежда", "description_zh": "男性的着装", "descriptionID": 65291, "hasTypes": 0, "iconID": 10829, "name_de": "Herrenbekleidung", "name_en-us": "Men's Clothing", "name_es": "Ropa de hombre", "name_fr": "Vêtements masculins", "name_it": "Men's Clothing", "name_ja": "メンズ", "name_ko": "남성용 의상", "name_ru": "Мужская одежда", "name_zh": "男装", "nameID": 66365, "parentGroupID": 1396 }, "1398": { "description_de": "Kleidung für den Oberkörper", "description_en-us": "Clothing worn on the torso.", "description_es": "Ropa que se lleva en el torso.", "description_fr": "Vêtements couvrant le haut du corps.", "description_it": "Clothing worn on the torso.", "description_ja": "胴体に着用する衣服。", "description_ko": "상반신에 착용할 수 있는 의상입니다.", "description_ru": "Одежда, прикрывающая верхнюю часть тела.", "description_zh": "上身穿着的衣物。", "descriptionID": 65280, "hasTypes": 1, "iconID": 10785, "name_de": "Oberteile", "name_en-us": "Tops", "name_es": "Prendas superiores", "name_fr": "Hauts", "name_it": "Tops", "name_ja": "トップス", "name_ko": "상의", "name_ru": "Одежда: верх", "name_zh": "上装", "nameID": 66354, "parentGroupID": 1397 }, "1399": { "description_de": "Kleidung, die über anderer Kleidung getragen wird.", "description_en-us": "Clothing worn on the outside of other clothing.", "description_es": "Ropa que se lleva sobre otras prendas.", "description_fr": "Vêtements portés par-dessus un autre vêtement.", "description_it": "Clothing worn on the outside of other clothing.", "description_ja": "衣服の上からはおる衣料品。", "description_ko": "다른 의상 위에 착용할 수 있는 외투입니다.", "description_ru": "Пальто, пиджаки и прочая верхняя одежда.", "description_zh": "穿在其他衣物外面的服装。", "descriptionID": 65281, "hasTypes": 1, "iconID": 10236, "name_de": "Oberbekleidung", "name_en-us": "Outerwear", "name_es": "Prendas exteriores", "name_fr": "Vêtements d'extérieur", "name_it": "Outerwear", "name_ja": "アウターウェア", "name_ko": "아우터", "name_ru": "Верхняя одежда", "name_zh": "外套", "nameID": 66355, "parentGroupID": 1397 }, "1400": { "description_de": "Fußbekleidung zu modischen Zwecken, als Zierde oder zum Schutz gegen Umwelteinflüsse.", "description_en-us": "Garments worn on the feet, for fashion, protection against the environment, and adornment.", "description_es": "Calzado para proteger los pies frente al entorno o simplemente con fines estéticos.", "description_fr": "Éléments d'habillement couvrant les pieds dont le rôle est de protéger les pieds et répondant à des critères de mode ou d'esthétisme.", "description_it": "Garments worn on the feet, for fashion, protection against the environment, and adornment.", "description_ja": "足に履く靴類。ファッション用、対劣悪環境用、礼装用各種あり。", "description_ko": "우주의 척박한 환경에서 착용자의 발을 보호하며, 패션 아이템으로도 사용되는 신발입니다.", "description_ru": "Обувь можно носить ради моды, для украшения и для защиты от окружающей среды.", "description_zh": "足部穿着的鞋靴,起到保护、装饰和展示潮流的作用。", "descriptionID": 65282, "hasTypes": 1, "iconID": 10254, "name_de": "Schuhe", "name_en-us": "Footwear", "name_es": "Calzado", "name_fr": "Chaussures", "name_it": "Footwear", "name_ja": "靴", "name_ko": "신발", "name_ru": "Обувь", "name_zh": "鞋靴", "nameID": 66356, "parentGroupID": 1397 }, "1401": { "description_de": "Jegliche Kleidungsstücke, von der Taille abwärts", "description_en-us": "Any of various garments worn below the waist.", "description_es": "Cualquier prenda que se lleva por debajo de la cintura.", "description_fr": "Toute sorte de vêtement porté en dessous de la taille.", "description_it": "Any of various garments worn below the waist.", "description_ja": "腰から下に着用する各種衣料品。", "description_ko": "하반신에 착용하는 의상입니다.", "description_ru": "Любые предметы одежды, прикрывающие нижнюю часть тела.", "description_zh": "腰部以下的各种着装。", "descriptionID": 65283, "hasTypes": 1, "iconID": 10756, "name_de": "Unterkörper", "name_en-us": "Bottoms", "name_es": "Prendas inferiores", "name_fr": "Bas", "name_it": "Bottoms", "name_ja": "ボトムス", "name_ko": "하의", "name_ru": "Одежда: низ", "name_zh": "下装", "nameID": 66357, "parentGroupID": 1397 }, "1402": { "description_de": "Kleidung für eine weibliche Statur", "description_en-us": "Clothing for a feminine physique", "description_es": "Ropa para físicos femeninos.", "description_fr": "Habits féminins", "description_it": "Clothing for a feminine physique", "description_ja": "女性体型向きの衣料品", "description_ko": "여성을 위한 의류입니다.", "description_ru": "Женская одежда", "description_zh": "女性的着装", "descriptionID": 65292, "hasTypes": 0, "iconID": 10830, "name_de": "Damenbekleidung", "name_en-us": "Women's Clothing", "name_es": "Ropa de mujer", "name_fr": "Vêtements féminins", "name_it": "Women's Clothing", "name_ja": "レディース", "name_ko": "여성용 의상", "name_ru": "Женская одежда", "name_zh": "女装", "nameID": 66366, "parentGroupID": 1396 }, "1403": { "description_de": "Jegliche Kleidungsstücke, von der Taille abwärts", "description_en-us": "Any of various garments worn below the waist.", "description_es": "Cualquier prenda que se lleva por debajo de la cintura.", "description_fr": "Toute sorte de vêtement porté en dessous de la taille.", "description_it": "Any of various garments worn below the waist.", "description_ja": "腰から下に着用する各種衣料品。", "description_ko": "하반신에 착용하는 의상입니다.", "description_ru": "Любые предметы одежды, прикрывающие нижнюю часть тела.", "description_zh": "腰部以下的各种着装。", "descriptionID": 65284, "hasTypes": 1, "iconID": 10570, "name_de": "Unterkörper", "name_en-us": "Bottoms", "name_es": "Prendas inferiores", "name_fr": "Bas", "name_it": "Bottoms", "name_ja": "ボトムス", "name_ko": "하의", "name_ru": "Одежда: низ", "name_zh": "下装", "nameID": 66358, "parentGroupID": 1402 }, "1404": { "description_de": "Fußbekleidung zu modischen Zwecken, als Zierde oder zum Schutz gegen Umwelteinflüsse.", "description_en-us": "Garments worn on the feet, for fashion, protection against the environment, and adornment.", "description_es": "Calzado para proteger los pies frente al entorno o simplemente con fines estéticos.", "description_fr": "Éléments d'habillement couvrant les pieds dont le rôle est de protéger les pieds et répondant à des critères de mode ou d'esthétisme.", "description_it": "Garments worn on the feet, for fashion, protection against the environment, and adornment.", "description_ja": "足に履く靴類。ファッション用、対劣悪環境用、礼装用各種あり。", "description_ko": "우주의 척박한 환경에서 착용자의 발을 보호하며, 패션 아이템으로도 사용되는 신발입니다.", "description_ru": "Обувь можно носить ради моды, для украшения и для защиты от окружающей среды.", "description_zh": "足部穿着的鞋靴,起到保护、装饰和展示潮流的作用。", "descriptionID": 65285, "hasTypes": 1, "iconID": 10624, "name_de": "Schuhe", "name_en-us": "Footwear", "name_es": "Calzado", "name_fr": "Chaussures", "name_it": "Footwear", "name_ja": "靴", "name_ko": "신발", "name_ru": "Обувь", "name_zh": "鞋靴", "nameID": 66359, "parentGroupID": 1402 }, "1405": { "description_de": "Kleidung, die über anderer Kleidung getragen wird.", "description_en-us": "Clothing worn on the outside of other clothing.", "description_es": "Ropa que se lleva sobre otras prendas.", "description_fr": "Vêtements portés par-dessus un autre vêtement.", "description_it": "Clothing worn on the outside of other clothing.", "description_ja": "衣服の上からはおる衣料品。", "description_ko": "다른 의상 위에 착용할 수 있는 외투입니다.", "description_ru": "Пальто, пиджаки и прочая верхняя одежда.", "description_zh": "穿在其他衣物外面的服装。", "descriptionID": 65286, "hasTypes": 1, "iconID": 10234, "name_de": "Oberbekleidung", "name_en-us": "Outerwear", "name_es": "Prendas exteriores", "name_fr": "Vêtements d'extérieur", "name_it": "Outerwear", "name_ja": "アウターウェア", "name_ko": "아우터", "name_ru": "Верхняя одежда", "name_zh": "外套", "nameID": 66360, "parentGroupID": 1402 }, "1406": { "description_de": "Kleidung für den Oberkörper", "description_en-us": "Clothing worn on the torso.", "description_es": "Ropa que se lleva en el torso.", "description_fr": "Vêtements couvrant le haut du corps.", "description_it": "Clothing worn on the torso.", "description_ja": "胴体に着用する衣服。", "description_ko": "상반신에 착용할 수 있는 의상입니다.", "description_ru": "Одежда, прикрывающая верхнюю часть тела.", "description_zh": "上身穿着的衣物。", "descriptionID": 65287, "hasTypes": 1, "iconID": 10684, "name_de": "Oberteile", "name_en-us": "Tops", "name_es": "Prendas superiores", "name_fr": "Hauts", "name_it": "Tops", "name_ja": "トップス", "name_ko": "상의", "name_ru": "Одежда: верх", "name_zh": "上装", "nameID": 66361, "parentGroupID": 1402 }, "1407": { "description_de": "Kleidungsgegenstände, die ein Outfit mit Style und Klasse ergänzen.", "description_en-us": "Apparel items that supplement an outfit by adding style and class", "description_es": "Accesorios que le dan un toque de estilo y clase a la indumentaria.", "description_fr": "Éléments complétant la tenue en lui apportant du style et une touche de classe", "description_it": "Apparel items that supplement an outfit by adding style and class", "description_ja": "装いにスタイルと気品を添える装飾品", "description_ko": "품격과 스타일을 강조하기 위한 의상 아이템입니다.", "description_ru": "Предметы, придающий облику персонажа стиль и шик", "description_zh": "可以让着装更有格调和品味的饰品", "descriptionID": 65293, "hasTypes": 0, "iconID": 10828, "name_de": "Accessoires", "name_en-us": "Accessories", "name_es": "Accesorios", "name_fr": "Accessoires", "name_it": "Accessories", "name_ja": "アクセサリー", "name_ko": "악세사리", "name_ru": "Аксессуары", "name_zh": "饰品", "nameID": 66367, "parentGroupID": 1396 }, "1408": { "description_de": "Brillen werden fast ausschließlich zu Stylezwecken verwendet, da die Fortschritte der modernen Cyberware äußerlich angebrachte Sehhilfen überflüssig gemacht haben.", "description_en-us": "Eyewear is almost exclusively used for vanity purposes given advances in modern cyberware that renders externally mounted hardware obsolete.", "description_es": "Los dispositivos oculares se usan casi exclusivamente por coquetería, dado que los avances en ciberware moderno dejan obsoleto cualquier hardware externo.", "description_fr": "Les lunettes sont portées presque uniquement par coquetterie étant donné les progrès actuels de la cybernétique qui permet de remiser tout accessoire externe.", "description_it": "Eyewear is almost exclusively used for vanity purposes given advances in modern cyberware that renders externally mounted hardware obsolete.", "description_ja": "眼鏡類は、ほぼ完全に単なる装身具として使われている。現代ではサイバーウェア技術の進歩により、体外装着型のハードウェアは時代遅れとなってしまっているからだ。", "description_ko": "사이버네틱스 및 신체 강화가 발달하면서 안경류 기능적인 면을 잃게 되었고 대부분 착용자의 만족을 위해 사용되고 있습니다.", "description_ru": "В настоящее время оптические устройства используются исключительно в целях украшения, поскольку благодаря современным кибертехнологиям использование внешних устройств сильно устарело.", "description_zh": "眼部饰品几乎纯粹用于容貌装饰。因为现代电子植入体的发展,体外佩戴设备已经显得多余。", "descriptionID": 65288, "hasTypes": 1, "iconID": 10224, "name_de": "Brillen", "name_en-us": "Eyewear", "name_es": "Dispositivos oculares", "name_fr": "Lunettes", "name_it": "Eyewear", "name_ja": "メガネ類", "name_ko": "안경류", "name_ru": "Очки и оптика", "name_zh": "眼部饰品", "nameID": 66362, "parentGroupID": 1407 }, "1410": { "description_de": "Gibt Kapselpiloten mehr Kontrolle über die Ressourcen eines Planeten", "description_en-us": "Gives capsuleers stronger control over a planet's resources", "description_es": "Permite a los capsulistas controlar mejor los recursos de un planeta.", "description_fr": "Cela permet aux capsuliers de mieux contrôler les ressources d'une planète", "description_it": "Gives capsuleers stronger control over a planet's resources", "description_ja": "惑星の資源に対するカプセラの制御能力を高める", "description_ko": "행성 자원에 대한 통제력을 향상합니다.", "description_ru": "Позволяет капсулёрам контролировать ресурсы той или иной планеты", "description_zh": "巩固飞行员对行星资源的控制", "descriptionID": 65289, "hasTypes": 1, "iconID": 2875, "name_de": "Orbitale Infrastruktur", "name_en-us": "Orbital Infrastructure", "name_es": "Infraestructura orbital", "name_fr": "Infrastructure orbitale", "name_it": "Orbital Infrastructure", "name_ja": "軌道インフラストラクチャ", "name_ko": "궤도 인프라시설", "name_ru": "Орбитальная инфраструктура", "name_zh": "轨道设施", "nameID": 66363, "parentGroupID": 1320 }, "1416": { "description_de": "Panzerungsverstärker, der die Beständigkeit dem zugefügten Schaden anpasst.", "description_en-us": "Armor Hardeners that shift resistance based on damaged received.", "description_es": "Endurecedores de blindaje que alteran la resistencia en función del daño recibido.", "description_fr": "Renforts de blindage qui modifient la résistance selon les dégâts reçus.", "description_it": "Armor Hardeners that shift resistance based on damaged received.", "description_ja": "受けたダメージの強度に応じて抵抗力をシフトするアーマーハードナー。", "description_ko": "받은 피해량에 따라 변화하는 장갑 강화장치입니다.", "description_ru": "Система укрепления брони, изменяющая сопротивляемость в зависимости от различных видов ущерба.", "description_zh": "根据受到的伤害类型而自行变换抗性的装甲增强器。", "descriptionID": 277853, "hasTypes": 1, "iconID": 10933, "name_de": "Reaktive Panzerungshärter", "name_en-us": "Reactive Armor Hardeners", "name_es": "Endurecedores de blindaje reactivos", "name_fr": "Renforcements de blindage réactif", "name_it": "Reactive Armor Hardeners", "name_ja": "リアクティブアーマーハードナー", "name_ko": "반응성 장갑 강화장치", "name_ru": "С автонастройкой", "name_zh": "反应式装甲增强器", "nameID": 277852, "parentGroupID": 535 }, "1426": { "description_de": "Reduziert die Signatur des Schiffs.", "description_en-us": "Reduces the ships signature.", "description_es": "Reduce la señal de las naves.", "description_fr": "Réduit la signature des vaisseaux.", "description_it": "Reduces the ships signature.", "description_ja": "艦船シグネチャを低下させる。", "description_ko": "함선의 시그니처 반경을 감소시킵니다.", "description_ru": "Уменьшает радиус сигнатуры корабля.", "description_zh": "降低舰船信号半径。", "descriptionID": 278636, "hasTypes": 1, "iconID": 10932, "name_de": "Signature Suppressor", "name_en-us": "Signature Suppressor", "name_es": "Supresor de señal", "name_fr": "Signature Suppressor", "name_it": "Signature Suppressor", "name_ja": "シグネチャサプレッサー", "name_ko": "시그니처 억제기", "name_ru": "Signature Suppressor", "name_zh": "信号半径抑制装置", "nameID": 278635, "parentGroupID": 657 }, "1427": { "description_de": "Ein Aurum-Token ist ein materieller Gutschein, der gegen einen vorher festgelegten Betrag von AUR eingelöst werden kann", "description_en-us": "An Aurum Token is a physical chit that can be redeemed for a predefined amount of AUR currency", "description_es": "Las fichas de aurum son vales físicos que se pueden canjear por una cantidad predeterminada de la moneda AUR.", "description_fr": "Un jeton Aurum est un bon pouvant être échangé contre une certaine somme d'AUR", "description_it": "An Aurum Token is a physical chit that can be redeemed for a predefined amount of AUR currency", "description_ja": "AURトークンは伝票のようなものであり、所定のAUR通貨に換金することができる", "description_ko": "AURUM 토큰을 제출하면 정해진 양의 AUR 화폐를 수령할 수 있습니다.", "description_ru": "Жетон на покупку аурума — это реальный жетон, который можно обменять на определенное количество аурума.", "description_zh": "AUR兑换券是一种实物代金券,可以兑换为一定数量的AUR货币", "descriptionID": 279367, "hasTypes": 1, "iconID": 10831, "name_de": "Aurum-Token", "name_en-us": "Aurum Tokens", "name_es": "Fichas de aurum", "name_fr": "Jetons Aurum", "name_it": "Aurum Tokens", "name_ja": "AURトークン", "name_ko": "AURUM 토큰", "name_ru": "Жетоны на получение аурума", "name_zh": "AUR代币", "nameID": 279366, "parentGroupID": 19 }, "1469": { "description_de": "Panzerungsimplantate", "description_en-us": "Armor Implants", "description_es": "Implantes de blindaje.", "description_fr": "Implants de blindage", "description_it": "Armor Implants", "description_ja": "アーマーインプラント", "description_ko": "장갑 임플란트", "description_ru": "Имплантаты — работа с бронёй", "description_zh": "装甲植入体", "descriptionID": 279958, "hasTypes": 0, "iconID": 2224, "name_de": "Panzerung", "name_en-us": "Armor Implants", "name_es": "Implantes de blindaje", "name_fr": "Implants de blindage", "name_it": "Armor Implants", "name_ja": "アーマーインプラント", "name_ko": "장갑 임플란트", "name_ru": "Укрепление брони", "name_zh": "装甲植入体", "nameID": 279957, "parentGroupID": 531 }, "1470": { "description_de": "Electronic Systems Implants", "description_en-us": "Electronic Systems Implants", "description_es": "Implantes de sistemas electrónicos.", "description_fr": "Implants de systèmes électroniques", "description_it": "Electronic Systems Implants", "description_ja": "電子システムのインプラント", "description_ko": "전자전 시스템 임플란트", "description_ru": "Имплантаты, повышающие эффективность электронных систем", "description_zh": "电子系统植入体", "descriptionID": 279960, "hasTypes": 0, "iconID": 2224, "name_de": "Elektroniksysteme", "name_en-us": "Electronic Systems Implants", "name_es": "Implantes de sistemas electrónicos", "name_fr": "Implants de systèmes électroniques", "name_it": "Electronic Systems Implants", "name_ja": "電子システムのインプラント", "name_ko": "전자전 시스템 임플란트", "name_ru": "Работа с бортовой электроникой", "name_zh": "电子系统植入体", "nameID": 279959, "parentGroupID": 531 }, "1471": { "description_de": "Implantate für Ingenieurwesen", "description_en-us": "Engineering Implants", "description_es": "Implantes de ingeniería.", "description_fr": "Implants d'ingénierie", "description_it": "Engineering Implants", "description_ja": "エンジニアリングインプラント", "description_ko": "엔지니어링 임플란트", "description_ru": "Имплантаты — инженерные навыки", "description_zh": "工程植入体", "descriptionID": 279962, "hasTypes": 0, "iconID": 2224, "name_de": "Ingenieurwesen", "name_en-us": "Engineering Implants", "name_es": "Implantes de ingeniería", "name_fr": "Implants d'ingénierie", "name_it": "Engineering Implants", "name_ja": "エンジニアリングインプラント", "name_ko": "엔지니어링 임플란트", "name_ru": "Эксплуатация инженерных систем", "name_zh": "工程植入体", "nameID": 279961, "parentGroupID": 531 }, "1472": { "description_de": "Fraktions-Omega Implantate", "description_en-us": "Faction Omega Implants", "description_es": "Implantes de facción Omega.", "description_fr": "Implants de faction Omega", "description_it": "Faction Omega Implants", "description_ja": "オメガシリーズインプラント", "description_ko": "팩션 오메가 임플란트", "description_ru": "Специмплантаты серии Omega", "description_zh": "势力欧米伽植入体", "descriptionID": 279964, "hasTypes": 0, "iconID": 2224, "name_de": "Fraktionen 'Omega'", "name_en-us": "Faction Omega Implants", "name_es": "Implantes de facción Omega", "name_fr": "Implants de faction omega", "name_it": "Faction Omega Implants", "name_ja": "オメガシリーズインプラント", "name_ko": "팩션 오메가 임플란트", "name_ru": "Импланты типа «Омега»", "name_zh": "势力欧米伽植入体", "nameID": 279963, "parentGroupID": 531 }, "1473": { "description_de": "Waffenkunde-Implantate", "description_en-us": "Gunnery Implants", "description_es": "Implantes de artillería.", "description_fr": "Implants d'armement", "description_it": "Gunnery Implants", "description_ja": "ガンナリーインプラント", "description_ko": "터렛 조작 임플란트", "description_ru": "Имплантаты — стрельба из орудий", "description_zh": "射击植入体", "descriptionID": 279966, "hasTypes": 0, "iconID": 2224, "name_de": "Waffenkunde", "name_en-us": "Gunnery Implants", "name_es": "Implantes de artillería", "name_fr": "Implants d'armement", "name_it": "Gunnery Implants", "name_ja": "ガンナリーインプラント", "name_ko": "터렛 조작 임플란트", "name_ru": "Ведение орудийного огня", "name_zh": "射击植入体", "nameID": 279965, "parentGroupID": 531 }, "1474": { "description_de": "Industrie-Implantate", "description_en-us": "Industry Implants", "description_es": "Implantes industriales.", "description_fr": "Implants d'industrie", "description_it": "Industry Implants", "description_ja": "インダストリーインプラント", "description_ko": "산업 임플란트", "description_ru": "Имплантаты — технологические знания", "description_zh": "工业植入体", "descriptionID": 279968, "hasTypes": 0, "iconID": 2224, "name_de": "Industrie", "name_en-us": "Industry Implants", "name_es": "Implantes industriales", "name_fr": "Implants industriels", "name_it": "Industry Implants", "name_ja": "インダストリーインプラント", "name_ko": "산업 임플란트", "name_ru": "Организация производства", "name_zh": "工业植入体", "nameID": 279967, "parentGroupID": 531 }, "1475": { "description_de": "Flottenunterstützungsimplantate", "description_en-us": "Fleet Support Implants", "description_es": "Implantes de apoyo a la flota.", "description_fr": "Implants de soutien de flotte", "description_it": "Fleet Support Implants", "description_ja": "艦隊支援インプラント", "description_ko": "함대 지원 임플란트", "description_ru": "Усиление флотов", "description_zh": "舰队支援植入体", "descriptionID": 279970, "hasTypes": 0, "iconID": 2224, "name_de": "Flottenunterstützungsimplantate", "name_en-us": "Fleet Support Implants", "name_es": "Implantes de apoyo a la flota", "name_fr": "Implants de soutien de flotte", "name_it": "Fleet Support Implants", "name_ja": "艦隊支援インプラント", "name_ko": "함대 지원 임플란트", "name_ru": "Усиление флотов", "name_zh": "舰队支援植入体", "nameID": 279969, "parentGroupID": 531 }, "1476": { "description_de": "Missile-Implantate", "description_en-us": "Missile Implants", "description_es": "Implantes misilísticos.", "description_fr": "Implants de missile", "description_it": "Missile Implants", "description_ja": "ミサイルインプラント", "description_ko": "미사일 임플란트", "description_ru": "Имплантаты — стрельба ракетами", "description_zh": "导弹植入体", "descriptionID": 279972, "hasTypes": 0, "iconID": 2224, "name_de": "Lenkwaffen", "name_en-us": "Missile Implants", "name_es": "Implantes misilísticos", "name_fr": "Implants de missile", "name_it": "Missile Implants", "name_ja": "ミサイルインプラント", "name_ko": "미사일 임플란트", "name_ru": "Ведение ракетного огня", "name_zh": "导弹植入体", "nameID": 279971, "parentGroupID": 531 }, "1477": { "description_de": "Navigationsimplantate", "description_en-us": "Navigation Implants", "description_es": "Implantes de navegación.", "description_fr": "Implants de navigation", "description_it": "Navigation Implants", "description_ja": "航行技術インプラント", "description_ko": "운항 임플란트", "description_ru": "Имплантаты — навыки навигации", "description_zh": "导航植入体", "descriptionID": 279974, "hasTypes": 0, "iconID": 2224, "name_de": "Navigation", "name_en-us": "Navigation Implants", "name_es": "Implantes de navegación", "name_fr": "Implants de navigation", "name_it": "Navigation Implants", "name_ja": "航行技術インプラント", "name_ko": "운항 임플란트", "name_ru": "Эксплуатация двигателей", "name_zh": "导航植入体", "nameID": 279973, "parentGroupID": 531 }, "1478": { "description_de": "Wissenschaftsimplantate", "description_en-us": "Science Implants", "description_es": "Implantes de ciencia.", "description_fr": "Implants de science", "description_it": "Science Implants", "description_ja": "サイエンスインプラント", "description_ko": "과학 임플란트입니다.", "description_ru": "Имплантаты — научные знания", "description_zh": "科学植入体", "descriptionID": 279976, "hasTypes": 0, "iconID": 2224, "name_de": "Wissenschaft", "name_en-us": "Science Implants", "name_es": "Implantes de ciencia", "name_fr": "Implants scientifiques", "name_it": "Science Implants", "name_ja": "サイエンスインプラント", "name_ko": "과학 임플란트", "name_ru": "Научные дисциплины", "name_zh": "科学植入体", "nameID": 279975, "parentGroupID": 531 }, "1479": { "description_de": "Schild-Implantate", "description_en-us": "Shield Implants", "description_es": "Implantes de escudo.", "description_fr": "Implants de bouclier", "description_it": "Shield Implants", "description_ja": "シールドインプラント", "description_ko": "실드 임플란트", "description_ru": "Имплантаты — работа с щитами", "description_zh": "护盾植入体", "descriptionID": 279978, "hasTypes": 0, "iconID": 2224, "name_de": "Schilde", "name_en-us": "Shield Implants", "name_es": "Implantes de escudo", "name_fr": "Implants de bouclier", "name_it": "Shield Implants", "name_ja": "シールドインプラント", "name_ko": "실드 임플란트", "name_ru": "Укрепление щитов", "name_zh": "护盾植入体", "nameID": 279977, "parentGroupID": 531 }, "1480": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 279980, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 279979, "parentGroupID": 1479 }, "1481": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 279982, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 279981, "parentGroupID": 1479 }, "1482": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 279984, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 279983, "parentGroupID": 1479 }, "1483": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 279986, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 279985, "parentGroupID": 1479 }, "1484": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 279988, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 279987, "parentGroupID": 1478 }, "1485": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 279990, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 279989, "parentGroupID": 1478 }, "1486": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 279992, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 279991, "parentGroupID": 1478 }, "1489": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 279998, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 279997, "parentGroupID": 1477 }, "1490": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 280000, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 279999, "parentGroupID": 1477 }, "1491": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280002, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280001, "parentGroupID": 1477 }, "1492": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 280004, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 280003, "parentGroupID": 1477 }, "1493": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 280006, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 280005, "parentGroupID": 1476 }, "1494": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 280008, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 280007, "parentGroupID": 1476 }, "1495": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280010, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280009, "parentGroupID": 1476 }, "1496": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 280012, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 280011, "parentGroupID": 1476 }, "1497": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем №10", "description_zh": "植入体插槽 10", "descriptionID": 280014, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 280013, "parentGroupID": 1476 }, "1498": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 280016, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 280015, "parentGroupID": 1473 }, "1499": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 280018, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 280017, "parentGroupID": 1473 }, "1500": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280020, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280019, "parentGroupID": 1473 }, "1501": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 280025, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 280021, "parentGroupID": 1473 }, "1502": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем №10", "description_zh": "植入体插槽 10", "descriptionID": 280027, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 280022, "parentGroupID": 1473 }, "1504": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280029, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280024, "parentGroupID": 1474 }, "1505": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем №10", "description_zh": "植入体插槽 10", "descriptionID": 280030, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 280026, "parentGroupID": 1475 }, "1506": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 280032, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 280031, "parentGroupID": 1472 }, "1507": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 280034, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 280033, "parentGroupID": 1471 }, "1508": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 280036, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 280035, "parentGroupID": 1471 }, "1509": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280038, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280037, "parentGroupID": 1471 }, "1512": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280044, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280043, "parentGroupID": 1470 }, "1513": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 280046, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 280045, "parentGroupID": 1470 }, "1514": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем №6", "description_zh": "植入体插槽 06", "descriptionID": 280048, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 280047, "parentGroupID": 1469 }, "1515": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем №7", "description_zh": "植入体插槽 07", "descriptionID": 280053, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 280049, "parentGroupID": 1469 }, "1516": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем №8", "description_zh": "植入体插槽 08", "descriptionID": 280054, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 280050, "parentGroupID": 1469 }, "1517": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем №9", "description_zh": "植入体插槽 09", "descriptionID": 280055, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 280051, "parentGroupID": 1469 }, "1518": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем №10", "description_zh": "植入体插槽 10", "descriptionID": 280056, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 280052, "parentGroupID": 1469 }, "1520": { "description_de": "Sonden", "description_en-us": "Probes", "description_es": "Sondas.", "description_fr": "Sondes", "description_it": "Probes", "description_ja": "プローブ", "description_ko": "프로브", "description_ru": "Зонды", "description_zh": "探针", "descriptionID": 281034, "hasTypes": 0, "iconID": 2703, "name_de": "Sonden", "name_en-us": "Probes", "name_es": "Sondas", "name_fr": "Sondes", "name_it": "Probes", "name_ja": "プローブ", "name_ko": "프로브", "name_ru": "Зонды", "name_zh": "探针", "nameID": 281033, "parentGroupID": 211 }, "1521": { "description_de": "Überwachungssonden", "description_en-us": "Survey Probes", "description_es": "Sondas de prospección.", "description_fr": "Sondes d'inspection", "description_it": "Survey Probes", "description_ja": "衛星調査プローブ", "description_ko": "조사 프로브", "description_ru": "Зонды георазведки", "description_zh": "测量探针", "descriptionID": 281037, "hasTypes": 1, "iconID": 2703, "name_de": "Vermessungssonden", "name_en-us": "Survey Probes", "name_es": "Sondas de prospección", "name_fr": "Sondes d'inspection", "name_it": "Survey Probes", "name_ja": "衛星調査プローブ", "name_ko": "조사 프로브", "name_ru": "Зонды луноразведки", "name_zh": "测量探针", "nameID": 281036, "parentGroupID": 1520 }, "1522": { "description_de": "Rohstoffe", "description_en-us": "Materials", "description_es": "Materiales.", "description_fr": "Matériaux", "description_it": "Materials", "description_ja": "資源", "description_ko": "다양한 자원 및 물질입니다.", "description_ru": "Материалы", "description_zh": "材料", "descriptionID": 281045, "hasTypes": 0, "iconID": 2703, "name_de": "Materialien", "name_en-us": "Materials", "name_es": "Materiales", "name_fr": "Matériaux", "name_it": "Materials", "name_ja": "資源", "name_ko": "자원 및 재료", "name_ru": "Материалы", "name_zh": "材料", "nameID": 281044, "parentGroupID": 1041 }, "1525": { "description_de": "Blueprints für Nachbrenner.", "description_en-us": "Blueprints of afterburners.", "description_es": "Planos de posquemadores.", "description_fr": "Plans de construction de systèmes de post-combustion.", "description_it": "Blueprints of afterburners.", "description_ja": "アフターバーナーのブループリント。", "description_ko": "애프터버너 블루프린트입니다.", "description_ru": "Чертежи форсированных двигательных установок.", "description_zh": "加力燃烧器的蓝图。", "descriptionID": 281051, "hasTypes": 1, "iconID": 2703, "name_de": "Nachbrenner", "name_en-us": "Afterburners", "name_es": "Posquemadores", "name_fr": "Systèmes de post-combustion", "name_it": "Afterburners", "name_ja": "アフターバーナー", "name_ko": "애프터버너", "name_ru": "Форсажные ускорители", "name_zh": "加力燃烧器", "nameID": 281050, "parentGroupID": 252 }, "1526": { "description_de": "Cruise Missiles", "description_en-us": "Cruise Missiles", "description_es": "Misiles de crucero.", "description_fr": "Missiles de croisière", "description_it": "Cruise Missiles", "description_ja": "クルーズミサイル", "description_ko": "크루즈 미사일", "description_ru": "Ракеты дальнего боя", "description_zh": "巡航导弹", "descriptionID": 281053, "hasTypes": 1, "iconID": 2703, "name_de": "Marschflugkörper", "name_en-us": "Cruise Missiles", "name_es": "Misiles de crucero", "name_fr": "Missiles de croisière", "name_it": "Cruise Missiles", "name_ja": "クルーズミサイル", "name_ko": "크루즈 미사일", "name_ru": "Дальнобойные ракеты", "name_zh": "巡航导弹", "nameID": 281052, "parentGroupID": 314 }, "1527": { "description_de": "Schwere Lenkwaffen", "description_en-us": "Heavy Missiles", "description_es": "Misiles pesados.", "description_fr": "Missiles lourds", "description_it": "Heavy Missiles", "description_ja": "ヘビーミサイル", "description_ko": "헤비 미사일", "description_ru": "Тяжелые ракеты", "description_zh": "重型导弹", "descriptionID": 281055, "hasTypes": 1, "iconID": 2703, "name_de": "Schwere Lenkwaffen", "name_en-us": "Heavy Missiles", "name_es": "Misiles pesados", "name_fr": "Missiles lourds", "name_it": "Heavy Missiles", "name_ja": "ヘビーミサイル", "name_ko": "헤비 미사일", "name_ru": "Тяжёлые ракеты", "name_zh": "重型导弹", "nameID": 281054, "parentGroupID": 314 }, "1528": { "hasTypes": 1, "iconID": 2703, "name_de": "Leichte Lenkwaffen", "name_en-us": "Light Missiles", "name_es": "Misiles ligeros", "name_fr": "Missiles légers", "name_it": "Light Missiles", "name_ja": "ライトミサイル", "name_ko": "라이트 미사일", "name_ru": "Лёгкие ракеты", "name_zh": "轻型导弹", "nameID": 281056, "parentGroupID": 314 }, "1529": { "description_de": "Unterbrechungssonden", "description_en-us": "Interdiction Probes", "description_es": "Sondas de interdicción.", "description_fr": "Sondes d'interdiction", "description_it": "Interdiction Probes", "description_ja": "インターディクションプローブ", "description_ko": "인터딕션 프로브", "description_ru": "Заградительные зонды", "description_zh": "拦截探针", "descriptionID": 281059, "hasTypes": 1, "iconID": 2703, "name_de": "Unterbrechungssonden", "name_en-us": "Interdiction Probes", "name_es": "Sondas de interdicción", "name_fr": "Sondes d'interdiction", "name_it": "Interdiction Probes", "name_ja": "インターディクションプローブ", "name_ko": "인터딕션 프로브", "name_ru": "Зонды варп-заграждения", "name_zh": "拦截探针", "nameID": 281058, "parentGroupID": 1520 }, "1530": { "description_de": "Kampfdrohnen", "description_en-us": "Combat Drones", "description_es": "Drones de combate.", "description_fr": "Drones de combat", "description_it": "Combat Drones", "description_ja": "戦闘用ドローン", "description_ko": "공격 드론", "description_ru": "Боевые дроны", "description_zh": "战斗无人机", "descriptionID": 281275, "hasTypes": 0, "iconID": 2703, "name_de": "Kampfdrohnen", "name_en-us": "Combat Drones", "name_es": "Drones de combate", "name_fr": "Drones de combat", "name_it": "Combat Drones", "name_ja": "戦闘用ドローン", "name_ko": "공격 드론", "name_ru": "Боевые дроны", "name_zh": "战斗无人机", "nameID": 281274, "parentGroupID": 357 }, "1531": { "description_de": "Blueprints für leichte Kundschafterdrohnen-Designs.", "description_en-us": "Blueprints of light scout drone designs.", "description_es": "Planos de diseños de drones de reconocimiento ligeros.", "description_fr": "Plans de construction de modèles de drones de reconnaissance légers.", "description_it": "Blueprints of light scout drone designs.", "description_ja": "ライトスカウトドローン設計図のブループリント。", "description_ko": "라이트 스카우트 드론 블루프린트입니다.", "description_ru": "Чертежи лёгких боевых дронов.", "description_zh": "轻型侦察无人机设计蓝图。", "descriptionID": 281277, "hasTypes": 1, "iconID": 2703, "name_de": "Leichte Aufklärungsdrohnen", "name_en-us": "Light Scout Drones", "name_es": "Drones de reconocimiento ligeros", "name_fr": "Drones de reconnaissance légers", "name_it": "Light Scout Drones", "name_ja": "ライトスカウトドローン", "name_ko": "라이트 스카우트 드론", "name_ru": "Лёгкие боевые дроны", "name_zh": "轻型侦察无人机", "nameID": 281276, "parentGroupID": 1530 }, "1532": { "description_de": "Blueprints für mittelgroße Kundschafterdrohnen-Designs.", "description_en-us": "Blueprints of medium scout drone designs.", "description_es": "Planos de diseños de drones de reconocimiento medianos.", "description_fr": "Plans de construction de modèles de drones de reconnaissance intermédiaires.", "description_it": "Blueprints of medium scout drone designs.", "description_ja": "ミディアムスカウトドローン設計図のブループリント。", "description_ko": "미디움 스카우트 드론 블루프린트입니다.", "description_ru": "Чертежи средних боевых дронов.", "description_zh": "中型侦察无人机设计蓝图。", "descriptionID": 281279, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Aufklärungsdrohnen", "name_en-us": "Medium Scout Drones", "name_es": "Drones de reconocimiento medianos", "name_fr": "Drones de reconnaissance intermédiaires", "name_it": "Medium Scout Drones", "name_ja": "ミディアムスカウトドローン", "name_ko": "미디움 스카우트 드론", "name_ru": "Средние боевые дроны", "name_zh": "中型侦察无人机", "nameID": 281278, "parentGroupID": 1530 }, "1533": { "description_de": "Blueprints für Wachdrohnen-Designs.", "description_en-us": "Blueprints of sentry drone designs.", "description_es": "Planos de diseños de drones centinela.", "description_fr": "Plans de construction de modèles de drones sentinelles.", "description_it": "Blueprints of sentry drone designs.", "description_ja": "セントリードローン設計図のブループリント。", "description_ko": "센트리 드론 블루프린트입니다.", "description_ru": "Чертежи стационарных боевых дронов.", "description_zh": "岗哨无人机设计蓝图。", "descriptionID": 281281, "hasTypes": 1, "iconID": 2703, "name_de": "Wächterdrohnen", "name_en-us": "Sentry Drones", "name_es": "Drones centinela", "name_fr": "Drones sentinelles", "name_it": "Sentry Drones", "name_ja": "セントリードローン", "name_ko": "센트리 드론", "name_ru": "Стационарные боевые дроны", "name_zh": "岗哨无人机", "nameID": 281280, "parentGroupID": 1530 }, "1534": { "description_de": "Waffenbatterien", "description_en-us": "Weapon Batteries", "description_es": "Baterías de armas.", "description_fr": "Batteries d'armes", "description_it": "Weapon Batteries", "description_ja": "兵器砲台", "description_ko": "포탑", "description_ru": "Оборонительные батареи", "description_zh": "武器炮塔", "descriptionID": 281283, "hasTypes": 0, "iconID": 2703, "name_de": "Waffenbatterien", "name_en-us": "Weapon Batteries", "name_es": "Baterías de armas", "name_fr": "Batteries d'arme", "name_it": "Weapon Batteries", "name_ja": "兵器砲台", "name_ko": "포탑", "name_ru": "Оборонительные батареи", "name_zh": "武器炮塔", "nameID": 281282, "parentGroupID": 1841 }, "1535": { "description_de": "Schiffswartungseinrichtungen", "description_en-us": "Ship Maintenance Arrays", "description_es": "Dársenas de mantenimiento de naves.", "description_fr": "Modules de maintenance de vaisseaux", "description_it": "Ship Maintenance Arrays", "description_ja": "船舶調整施設", "description_ko": "함선 정비 시설", "description_ru": "Ангары для кораблей", "description_zh": "舰船维护阵列", "descriptionID": 281285, "hasTypes": 1, "iconID": 2703, "name_de": "Schiffwartungsanlagen", "name_en-us": "Ship Maintenance Arrays", "name_es": "Dársenas de mantenimiento de naves", "name_fr": "Installations pour la maintenance de vaisseau", "name_it": "Ship Maintenance Arrays", "name_ja": "船舶調整施設", "name_ko": "함선 정비 시설", "name_ru": "Ангарные блоки", "name_zh": "舰船维护阵列", "nameID": 281284, "parentGroupID": 1841 }, "1536": { "description_de": "Blueprints for Armor Repairers", "description_en-us": "Blueprints for Armor Repairers", "description_es": "Planos de reparadores de blindaje.", "description_fr": "Plans de construction de réparateurs de blindage", "description_it": "Blueprints for Armor Repairers", "description_ja": "アーマーリペアラのブループリント", "description_ko": "장갑수리 장치 블루프린트", "description_ru": "Чертежи систем ремонта брони", "description_zh": "装甲维修器蓝图", "descriptionID": 281307, "hasTypes": 1, "iconID": 2703, "name_de": "Panzerungsreparatursysteme", "name_en-us": "Armor Repairers", "name_es": "Reparadores de blindaje", "name_fr": "Réparateurs de blindage", "name_it": "Armor Repairers", "name_ja": "アーマーリペアラ", "name_ko": "장갑수리 장치", "name_ru": "Системы ремонта брони", "name_zh": "装甲维修器", "nameID": 281306, "parentGroupID": 214 }, "1537": { "description_de": "Blueprints for Hull Repairers", "description_en-us": "Blueprints for Hull Repairers", "description_es": "Planos de reparadores de casco.", "description_fr": "Plans de construction de réparateurs de coque", "description_it": "Blueprints for Hull Repairers", "description_ja": "船体リペアラのブループリント", "description_ko": "선체수리 장치 블루프린트", "description_ru": "Чертежи систем ремонта корпуса", "description_zh": "结构维修器蓝图", "descriptionID": 281309, "hasTypes": 1, "iconID": 2703, "name_de": "Rumpfreparatursysteme", "name_en-us": "Hull Repairers", "name_es": "Reparadores de casco", "name_fr": "Réparateurs de coque", "name_it": "Hull Repairers", "name_ja": "船体リペアラ", "name_ko": "선체수리 장치", "name_ru": "Установки ремонта корпуса", "name_zh": "结构维修器", "nameID": 281308, "parentGroupID": 214 }, "1538": { "description_de": "Blueprints for Remote Hull Repairers", "description_en-us": "Blueprints for Remote Hull Repairers", "description_es": "Planos de reparadores de casco remotos.", "description_fr": "Plans de construction de réparateurs de coque à distance", "description_it": "Blueprints for Remote Hull Repairers", "description_ja": "リモート船体リペアラのブループリント", "description_ko": "원격 선체수리 장치 블루프린트", "description_ru": "Чертежи систем дистанционного ремонта корпуса", "description_zh": "远程结构维修器蓝图", "descriptionID": 281311, "hasTypes": 1, "iconID": 2703, "name_de": "Rumpf-Fernreparatursysteme", "name_en-us": "Remote Hull Repairers", "name_es": "Reparadores de casco remotos", "name_fr": "Réparateurs de coque à distance", "name_it": "Remote Hull Repairers", "name_ja": "リモート船体リペアラ", "name_ko": "원격 선체수리 장치", "name_ru": "Установки дистанционного ремонта корпуса", "name_zh": "远程结构维修器", "nameID": 281310, "parentGroupID": 214 }, "1539": { "description_de": "Blueprints for Remote Armor Repairers", "description_en-us": "Blueprints for Remote Armor Repairers", "description_es": "Planos de reparadores de blindaje remotos.", "description_fr": "Plans de construction de réparateurs de blindage à distance", "description_it": "Blueprints for Remote Armor Repairers", "description_ja": "リモートアーマーリペアラのブループリント", "description_ko": "원격 장갑수리 장치 블루프린트", "description_ru": "Чертежи систем дистанционного ремонта брони", "description_zh": "远程装甲维修器蓝图", "descriptionID": 281313, "hasTypes": 1, "iconID": 2703, "name_de": "Panzerungs-Fernreparatursysteme", "name_en-us": "Remote Armor Repairers", "name_es": "Reparadores de blindaje remotos", "name_fr": "Réparateurs de blindage à distance", "name_it": "Remote Armor Repairers", "name_ja": "リモートアーマーリペアラ", "name_ko": "원격 장갑수리 장치", "name_ru": "Установки дистанционного ремонта брони", "name_zh": "远程装甲维修器", "nameID": 281312, "parentGroupID": 214 }, "1540": { "description_de": "Blueprints für Panzerungsverstärker", "description_en-us": "Blueprints for Armor Hardeners", "description_es": "Planos de endurecedores de blindaje.", "description_fr": "Plans de construction de renforcements de blindage", "description_it": "Blueprints for Armor Hardeners", "description_ja": "アーマー強化のブループリント", "description_ko": "장갑 강화장치 블루프린트", "description_ru": "Чертежи активной брони.", "description_zh": "装甲增强器蓝图", "descriptionID": 281315, "hasTypes": 1, "iconID": 2703, "name_de": "Panzerungshärter", "name_en-us": "Armor Hardeners", "name_es": "Endurecedores de blindaje", "name_fr": "Renforcements de blindage", "name_it": "Temprature corazza", "name_ja": "アーマー強化", "name_ko": "장갑 강화장치", "name_ru": "Модули укрепления брони", "name_zh": "装甲增强器", "nameID": 281314, "parentGroupID": 214 }, "1541": { "description_de": "Blueprints für Panzerplatten", "description_en-us": "Blueprints for Armor Plates", "description_es": "Planos de placas de blindaje.", "description_fr": "Plans de construction de revêtement de blindage", "description_it": "Blueprints for Armor Plates", "description_ja": "アーマープレートのブループリント", "description_ko": "장갑 플레이트 블루프린트", "description_ru": "Чертежи бронеплит", "description_zh": "装甲附甲板蓝图", "descriptionID": 281317, "hasTypes": 1, "iconID": 2703, "name_de": "Panzerplatten", "name_en-us": "Armor Plates", "name_es": "Placas de blindaje", "name_fr": "Revêtement de blindage", "name_it": "Armor Plates", "name_ja": "アーマープレート", "name_ko": "장갑 플레이팅", "name_ru": "Бронеплиты", "name_zh": "装甲附甲板", "nameID": 281316, "parentGroupID": 214 }, "1542": { "description_de": "Blueprints für Schadensregulierer", "description_en-us": "Blueprints for Damage Controls", "description_es": "Planos de controles de daños.", "description_fr": "Plans de construction de contrôles des dégâts", "description_it": "Blueprints for Damage Controls", "description_ja": "ダメージ制御のブループリント", "description_ko": "데미지 컨트롤 블루프린트", "description_ru": "Чертежи модулей боевой живучести", "description_zh": "损伤控制蓝图", "descriptionID": 281319, "hasTypes": 1, "iconID": 2703, "name_de": "Schadensregulierer", "name_en-us": "Damage Controls", "name_es": "Controles de daños", "name_fr": "Contrôles des dégâts", "name_it": "Damage Controls", "name_ja": "ダメージ制御", "name_ko": "데미지 컨트롤", "name_ru": "Модули боевой живучести", "name_zh": "损伤控制", "nameID": 281318, "parentGroupID": 214 }, "1543": { "description_de": "Blaupausen für spannungsunterstützte Panzerungsmembranen", "description_en-us": "Blueprints for Energized Armor Membranes", "description_es": "Planos de membranas de blindaje energizadas.", "description_fr": "Plans de construction Membranes de blindage énergétiques", "description_it": "Blueprints for Energized Armor Membranes", "description_ja": "電磁加工アーマー装甲の設計図", "description_ko": "장갑 에너지 멤브레인 블루프린트", "description_ru": "Чертежи для заряжаемых мембран брони", "description_zh": "电压装甲薄膜的蓝图", "descriptionID": 281321, "hasTypes": 1, "iconID": 2703, "name_de": "Spannungsunterstützte Panzerungsmembranen", "name_en-us": "Energized Armor Membranes", "name_es": "Membranas de blindaje energizadas", "name_fr": "Membranes de blindage énergétiques", "name_it": "Energized Armor Membranes", "name_ja": "電磁加工アーマー装甲", "name_ko": "장갑 에너지 멤브레인", "name_ru": "Заряжаемые мембраны брони", "name_zh": "电压装甲薄膜", "nameID": 281320, "parentGroupID": 214 }, "1544": { "description_de": "Blaupausen für Panzerungsbeschichtungen", "description_en-us": "Blueprints for Armor Coatings", "description_es": "Planos de recubrimientos de blindaje.", "description_fr": "Plans de construction de surcouches de blindage", "description_it": "Blueprints for Armor Coatings", "description_ja": "アーマーコーティングの設計図", "description_ko": "장갑 코팅 블루프린트", "description_ru": "Чертежи для покрытий брони", "description_zh": "装甲涂层蓝图", "descriptionID": 281323, "hasTypes": 1, "iconID": 2703, "name_de": "Panzerungsbeschichtungen", "name_en-us": "Armor Coatings", "name_es": "Recubrimientos de blindaje", "name_fr": "Surcouches de blindage", "name_it": "Armor Coatings", "name_ja": "アーマーコーティング", "name_ko": "장갑 코팅", "name_ru": "Покрытия брони", "name_zh": "装甲涂层", "nameID": 281322, "parentGroupID": 214 }, "1545": { "description_de": "Schilde", "description_en-us": "Shield", "description_es": "Escudo", "description_fr": "Bouclier", "description_it": "Shield", "description_ja": "シールド", "description_ko": "실드", "description_ru": "Щиты", "description_zh": "护盾", "descriptionID": 629999, "hasTypes": 0, "iconID": 2703, "name_de": "Schilde", "name_en-us": "Shield", "name_es": "Escudo", "name_fr": "Bouclier", "name_it": "Shield", "name_ja": "シールド", "name_ko": "실드", "name_ru": "Щиты", "name_zh": "护盾", "nameID": 281324, "parentGroupID": 209 }, "1546": { "description_de": "Ausrüstung für Ingenieurwesen", "description_en-us": "Engineering Equipment", "description_es": "Equipo de ingeniería", "description_fr": "Équipement d'ingénierie", "description_it": "Engineering Equipment", "description_ja": "エンジニアリング系装備", "description_ko": "엔지니어링 장비", "description_ru": "Инженерное оборудование", "description_zh": "工程装备", "descriptionID": 630008, "hasTypes": 0, "iconID": 2703, "name_de": "Ausrüstung für Ingenieurwesen", "name_en-us": "Engineering Equipment", "name_es": "Equipo de ingeniería", "name_fr": "Équipement d'ingénierie", "name_it": "Engineering Equipment", "name_ja": "エンジニアリング系装備", "name_ko": "엔지니어링 장비", "name_ru": "Инженерное оборудование", "name_zh": "工程装备", "nameID": 281325, "parentGroupID": 209 }, "1547": { "description_de": "Schildflussspulen", "description_en-us": "Shield Flux Coils", "description_es": "Bobinas de flujo de escudo", "description_fr": "Bobines de flux de bouclier", "description_it": "Shield Flux Coils", "description_ja": "シールドフラックスコイル", "description_ko": "실드 플럭스 코일", "description_ru": "Силовые петли щитов", "description_zh": "护盾通量线圈", "descriptionID": 630006, "hasTypes": 1, "iconID": 2703, "name_de": "Schildflussspulen", "name_en-us": "Shield Flux Coils", "name_es": "Bobinas de flujo de escudo", "name_fr": "Bobines de flux de bouclier", "name_it": "Shield Flux Coils", "name_ja": "シールドフラックスコイル", "name_ko": "실드 플럭스 코일", "name_ru": "Силовые петли щитов", "name_zh": "护盾通量线圈", "nameID": 281326, "parentGroupID": 1545 }, "1548": { "description_de": "Schildhärter", "description_en-us": "Shield Hardeners", "description_es": "Endurecedores de escudo", "description_fr": "Renforcements de bouclier", "description_it": "Tempratura scudo", "description_ja": "シールドハードナー", "description_ko": "실드 강화장치", "description_ru": "Активные модуляторы щитов", "description_zh": "护盾增强系统", "descriptionID": 630007, "hasTypes": 1, "iconID": 2703, "name_de": "Schildhärter", "name_en-us": "Shield Hardeners", "name_es": "Endurecedores de escudo", "name_fr": "Renforcements de bouclier", "name_it": "Tempratura scudo", "name_ja": "シールドハードナー", "name_ko": "실드 강화장치", "name_ru": "Активные модуляторы щитов", "name_zh": "护盾增强系统", "nameID": 281327, "parentGroupID": 1545 }, "1549": { "description_de": "Schilderweiterungen", "description_en-us": "Shield Extenders", "description_es": "Extensores de escudo", "description_fr": "Extenseurs de bouclier", "description_it": "Estensori scudo", "description_ja": "シールドエクステンダー", "description_ko": "실드 확장장치", "description_ru": "Дополнительные источники щитов", "description_zh": "护盾扩展装置", "descriptionID": 630001, "hasTypes": 1, "iconID": 2703, "name_de": "Schilderweiterungen", "name_en-us": "Shield Extenders", "name_es": "Extensores de escudo", "name_fr": "Extenseurs de bouclier", "name_it": "Estensori scudo", "name_ja": "シールドエクステンダー", "name_ko": "실드 확장장치", "name_ru": "Дополнительные источники щитов", "name_zh": "护盾扩展装置", "nameID": 281328, "parentGroupID": 1545 }, "1550": { "description_de": "Schildstromrelais", "description_en-us": "Shield Power Relays", "description_es": "Relés de potencia de escudo", "description_fr": "Relais d’alimentation de bouclier", "description_it": "Shield Power Relays", "description_ja": "シールドパワーリレー", "description_ko": "실드 릴레이", "description_ru": "Силовые реле щитов", "description_zh": "护盾能源继电器", "descriptionID": 630000, "hasTypes": 1, "iconID": 2703, "name_de": "Schildstromrelais", "name_en-us": "Shield Power Relays", "name_es": "Relés de potencia de escudo", "name_fr": "Relais d’alimentation de bouclier", "name_it": "Shield Power Relays", "name_ja": "シールドパワーリレー", "name_ko": "실드 릴레이", "name_ru": "Силовые реле щитов", "name_zh": "护盾能源继电器", "nameID": 281329, "parentGroupID": 1545 }, "1551": { "description_de": "Schildladegeräte", "description_en-us": "Shield Rechargers", "description_es": "Cargadores de escudo", "description_fr": "Rechargeurs de bouclier", "description_it": "Shield Rechargers", "description_ja": "シールドリチャージャー", "description_ko": "실드 회복장치", "description_ru": "Регенераторы щитов", "description_zh": "护盾回充器", "descriptionID": 629998, "hasTypes": 1, "iconID": 2703, "name_de": "Schildladegeräte", "name_en-us": "Shield Rechargers", "name_es": "Cargadores de escudo", "name_fr": "Rechargeurs de bouclier", "name_it": "Shield Rechargers", "name_ja": "シールドリチャージャー", "name_ko": "실드 회복장치", "name_ru": "Регенераторы щитов", "name_zh": "护盾回充器", "nameID": 281330, "parentGroupID": 1545 }, "1552": { "description_de": "Schildbooster", "description_en-us": "Shield Boosters", "description_es": "Potenciadores de escudo", "description_fr": "Boosters de bouclier", "description_it": "Shield Boosters", "description_ja": "シールドブースター", "description_ko": "실드 부스터", "description_ru": "Установки накачки щитов", "description_zh": "护盾回充增量器", "descriptionID": 629997, "hasTypes": 1, "iconID": 2703, "name_de": "Schildbooster", "name_en-us": "Shield Boosters", "name_es": "Potenciadores de escudo", "name_fr": "Boosters de bouclier", "name_it": "Shield Boosters", "name_ja": "シールドブースター", "name_ko": "실드 부스터", "name_ru": "Установки накачки щитов", "name_zh": "护盾回充增量器", "nameID": 281331, "parentGroupID": 1545 }, "1553": { "description_de": "Schildfernbooster", "description_en-us": "Remote Shield Boosters", "description_es": "Potenciadores de escudo remotos", "description_fr": "Boosters de bouclier à distance", "description_it": "Remote Shield Boosters", "description_ja": "リモートシールドブースター", "description_ko": "원격 실드 부스터", "description_ru": "Установки дистанционной накачки щитов", "description_zh": "远程护盾回充增量器", "descriptionID": 629996, "hasTypes": 1, "iconID": 2703, "name_de": "Schildfernbooster", "name_en-us": "Remote Shield Boosters", "name_es": "Potenciadores de escudo remotos", "name_fr": "Boosters de bouclier à distance", "name_it": "Remote Shield Boosters", "name_ja": "リモートシールドブースター", "name_ko": "원격 실드 부스터", "name_ru": "Установки дистанционной накачки щитов", "name_zh": "远程护盾回充增量器", "nameID": 281332, "parentGroupID": 1545 }, "1554": { "description_de": "Schildresistenzverstärker", "description_en-us": "Shield Resistance Amplifiers", "description_es": "Amplificadores de resistencia de escudo", "description_fr": "Amplificateurs de résistance de bouclier", "description_it": "Shield Resistance Amplifiers", "description_ja": "シールドレジスタンス増幅器", "description_ko": "실드 저항력 증폭기", "description_ru": "Пассивные модуляторы щитов", "description_zh": "护盾抗性增效器", "descriptionID": 630003, "hasTypes": 1, "iconID": 2703, "name_de": "Schildresistenzverstärker", "name_en-us": "Shield Resistance Amplifiers", "name_es": "Amplificadores de resistencia de escudo", "name_fr": "Amplificateurs de résistance de bouclier", "name_it": "Shield Resistance Amplifiers", "name_ja": "シールドレジスタンス増幅器", "name_ko": "실드 저항력 증폭기", "name_ru": "Пассивные модуляторы щитов", "name_zh": "护盾抗性增效器", "nameID": 281333, "parentGroupID": 1545 }, "1555": { "description_de": "Energiespeicher-Ladegeräte", "description_en-us": "Capacitor Rechargers", "description_es": "Cargadores del condensador.", "description_fr": "Rechargeurs de capaciteur", "description_it": "Capacitor Rechargers", "description_ja": "キャパシタリチャージャー", "description_ko": "캐패시터 충전기", "description_ru": "Ускорители подзарядки накопителя", "description_zh": "电容回充器", "descriptionID": 281363, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Ladegeräte", "name_en-us": "Capacitor Rechargers", "name_es": "Cargadores del condensador", "name_fr": "Rechargeurs de capaciteur", "name_it": "Capacitor Rechargers", "name_ja": "キャパシタリチャージャー", "name_ko": "캐패시터 충전기", "name_ru": "Системы пассивной подзарядки накопителя", "name_zh": "电容回充器", "nameID": 281362, "parentGroupID": 1546 }, "1556": { "description_de": "Energiespeicher-Flux-Spulen", "description_en-us": "Capacitor Flux Coils", "description_es": "Bobinas de flujo de condensador.", "description_fr": "Bobines de flux pour capaciteur", "description_it": "Capacitor Flux Coils", "description_ja": "キャパシタフラックスコイル", "description_ko": "캐패시터 플럭스 코일", "description_ru": "Системы форсированной подзарядки накопителя", "description_zh": "电容通量线圈", "descriptionID": 281365, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Flussspulen", "name_en-us": "Capacitor Flux Coils", "name_es": "Bobinas de flujo de condensador", "name_fr": "Bobines de flux pour capaciteur", "name_it": "Capacitor Flux Coils", "name_ja": "キャパシタフラックスコイル", "name_ko": "캐패시터 플럭스 코일", "name_ru": "Силовые петли накопителя", "name_zh": "电容通量线圈", "nameID": 281364, "parentGroupID": 1546 }, "1557": { "description_de": "Energiespeicher-Stromrelais", "description_en-us": "Capacitor Power Relays", "description_es": "Relés de potencia de condensador.", "description_fr": "Relais de puissance pour capaciteur", "description_it": "Capacitor Power Relays", "description_ja": "キャパシタパワーリレイ", "description_ko": "캐패시터 릴레이", "description_ru": "Модули передачи мощности на накопитель", "description_zh": "电容能源继电器", "descriptionID": 281367, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Stromrelais", "name_en-us": "Capacitor Power Relays", "name_es": "Relés de potencia de condensador", "name_fr": "Relais de puissance pour capaciteur", "name_it": "Capacitor Power Relays", "name_ja": "キャパシタパワーリレイ", "name_ko": "캐패시터 릴레이", "name_ru": "Силовые реле накопителя", "name_zh": "电容能源继电器", "nameID": 281366, "parentGroupID": 1546 }, "1558": { "description_de": "Energiespeicher-Batterien", "description_en-us": "Capacitor Batteries", "description_es": "Baterías de condensador.", "description_fr": "Batteries de capaciteur", "description_it": "Capacitor Batteries", "description_ja": "キャパシタバッテリー", "description_ko": "캐패시터 배터리", "description_ru": "Дополнительные батареи накопителя", "description_zh": "电容电池", "descriptionID": 281369, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicherbatterien", "name_en-us": "Capacitor Batteries", "name_es": "Baterías de condensador", "name_fr": "Batteries de capaciteur", "name_it": "Capacitor Batteries", "name_ja": "キャパシタバッテリー", "name_ko": "캐패시터 배터리", "name_ru": "Дополнительные батареи накопителя", "name_zh": "电容电池", "nameID": 281368, "parentGroupID": 1546 }, "1559": { "description_de": "Energiehilfssteuerung", "description_en-us": "Auxiliary Power Controls", "description_es": "Controles de potencia auxiliar.", "description_fr": "Réglages de l'alimentation auxiliaire", "description_it": "Auxiliary Power Controls", "description_ja": "補助パワー制御", "description_ko": "보조 파워코어", "description_ru": "Вспомогательные реакторы", "description_zh": "辅助能量控制", "descriptionID": 281371, "hasTypes": 1, "iconID": 2703, "name_de": "Energiehilfssteuerung", "name_en-us": "Auxiliary Power Controls", "name_es": "Controles de potencia auxiliar", "name_fr": "Réglages de l'alimentation auxiliaire", "name_it": "Auxiliary Power Controls", "name_ja": "補助パワー制御", "name_ko": "보조 파워코어", "name_ru": "Вспомогательные реакторы", "name_zh": "辅助能量控制", "nameID": 281370, "parentGroupID": 1546 }, "1560": { "description_de": "Systeme zur Leistungsdiagnose", "description_en-us": "Power Diagnostic Systems", "description_es": "Sistemas de diagnóstico de energía.", "description_fr": "Systèmes de diagnostic de puissance", "description_it": "Power Diagnostic Systems", "description_ja": "パワー計測システム", "description_ko": "전력 진단 시스템", "description_ru": "Системы диагностики энергосети", "description_zh": "能源诊断系统", "descriptionID": 281373, "hasTypes": 1, "iconID": 2703, "name_de": "Leistungsdiagnosesysteme", "name_en-us": "Power Diagnostic Systems", "name_es": "Sistemas de diagnóstico de energía", "name_fr": "Systèmes de diagnostic de puissance", "name_it": "Power Diagnostic Systems", "name_ja": "パワー計測システム", "name_ko": "전력 진단 시스템", "name_ru": "Системы диагностики энергоснабжения", "name_zh": "能源诊断系统", "nameID": 281372, "parentGroupID": 1546 }, "1561": { "description_de": "Reaktorkontrolleinheiten", "description_en-us": "Reactor Control Units", "description_es": "Unidades de control de reactor.", "description_fr": "Unité de contrôle du réacteur", "description_it": "Reactor Control Units", "description_ja": "リアクター制御装置", "description_ko": "반응로 제어유닛", "description_ru": "Системы управления реактором", "description_zh": "反应堆控制单元", "descriptionID": 281375, "hasTypes": 1, "iconID": 2703, "name_de": "Reaktorkontrolleinheiten", "name_en-us": "Reactor Control Units", "name_es": "Unidades de control de reactor", "name_fr": "Unité de contrôle du réacteur", "name_it": "Reactor Control Units", "name_ja": "リアクター制御装置", "name_ko": "반응로 제어유닛", "name_ru": "Системы управления реактором", "name_zh": "反应堆控制单元", "nameID": 281374, "parentGroupID": 1546 }, "1562": { "description_de": "Remote Capacitor Transmitters", "description_en-us": "Remote Capacitor Transmitters", "description_es": "Transmisores de condensador remotos.", "description_fr": "Transmetteurs de capaciteur à distance", "description_it": "Remote Capacitor Transmitters", "description_ja": "リモートキャパシタトランスミッター", "description_ko": "원격 캐패시터 전송기", "description_ru": "Системы передачи энергии накопителя", "description_zh": "远程电容传输装置", "descriptionID": 281377, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Ferntransmitter", "name_en-us": "Remote Capacitor Transmitters", "name_es": "Transmisores de condensador remotos", "name_fr": "Transmetteurs de capaciteur à distance", "name_it": "Remote Capacitor Transmitters", "name_ja": "リモートキャパシタトランスミッター", "name_ko": "원격 캐패시터 전송기", "name_ru": "Установки дистанционного энергоснабжения", "name_zh": "远程电容传输装置", "nameID": 281376, "parentGroupID": 1546 }, "1563": { "description_de": "Energiespeicher-Verstärker", "description_en-us": "Capacitor Boosters", "description_es": "Potenciadores de condensador.", "description_fr": "Boosters de capaciteur", "description_it": "Capacitor Boosters", "description_ja": "キャパシタブースター", "description_ko": "캐패시터 부스터", "description_ru": "Инжекторы", "description_zh": "电容注电器", "descriptionID": 281379, "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicherbooster", "name_en-us": "Capacitor Boosters", "name_es": "Potenciadores de condensador", "name_fr": "Boosters de capaciteur", "name_it": "Capacitor Boosters", "name_ja": "キャパシタブースター", "name_ko": "캐패시터 부스터", "name_ru": "Системы подачи зарядов накопителя", "name_zh": "电容注电器", "nameID": 281378, "parentGroupID": 1546 }, "1564": { "description_de": "Energie-Nosferatu", "description_en-us": "Energy Nosferatu", "description_es": "Nosferatu de energía.", "description_fr": "Nosferatu à énergie", "description_it": "Energy Nosferatu", "description_ja": "エネルギーノスフェラトゥ", "description_ko": "에너지 노스페라투", "description_ru": "Устройства паразитной подзарядки", "description_zh": "掠能器", "descriptionID": 281381, "hasTypes": 1, "iconID": 2703, "name_de": "Energie-Nosferatu", "name_en-us": "Energy Nosferatu", "name_es": "Nosferatu de energía", "name_fr": "Nosferatu à énergie", "name_it": "Energy Nosferatu", "name_ja": "エネルギーノスフェラトゥ", "name_ko": "에너지 노스페라투", "name_ru": "Устройства паразитной подзарядки", "name_zh": "掠能器", "nameID": 281380, "parentGroupID": 1546 }, "1565": { "description_de": "Energieneutralisierer", "description_en-us": "Energy Neutralizers", "description_es": "Neutralizadores energéticos.", "description_fr": "Neutraliseurs d'énergie", "description_it": "Energy Neutralizers", "description_ja": "エネルギーニュートライザー", "description_ko": "에너지 뉴트럴라이저", "description_ru": "Дистанционные нейтрализаторы заряда", "description_zh": "能量中和器", "descriptionID": 281385, "hasTypes": 1, "iconID": 2703, "name_de": "Energieneutralisierer", "name_en-us": "Energy Neutralizers", "name_es": "Neutralizadores energéticos", "name_fr": "Neutraliseurs d'énergie", "name_it": "Energy Neutralizers", "name_ja": "エネルギーニュートライザー", "name_ko": "에너지 뉴트럴라이저", "name_ru": "Дистанционные нейтрализаторы заряда", "name_zh": "能量中和器", "nameID": 281384, "parentGroupID": 1546 }, "1566": { "description_de": "Elektronische Kriegsführung", "description_en-us": "Electronic Warfare", "description_es": "Guerra electrónica.", "description_fr": "Guerre électronique", "description_it": "Electronic Warfare", "description_ja": "電子戦", "description_ko": "전자전 장비", "description_ru": "Радиоэлектронная борьба", "description_zh": "电子战", "descriptionID": 281387, "hasTypes": 0, "iconID": 2703, "name_de": "Elektronische Kriegsführung", "name_en-us": "Electronic Warfare", "name_es": "Guerra electrónica", "name_fr": "Guerre électronique", "name_it": "Electronic Warfare", "name_ja": "電子戦", "name_ko": "전자전 장비", "name_ru": "Системы РЭБ", "name_zh": "电子战", "nameID": 281386, "parentGroupID": 209 }, "1567": { "description_de": "Elektronische Gegenmaßnahmen", "description_en-us": "Electronic Counter Measures", "description_es": "Contramedidas electrónicas.", "description_fr": "Contre-mesures électroniques", "description_it": "Electronic Counter Measures", "description_ja": "エレクトロニクス妨害機器", "description_ko": "ECM", "description_ru": "Системы РЭБ", "description_zh": "ECM", "descriptionID": 281389, "hasTypes": 1, "iconID": 2703, "name_de": "Elektronische Gegenmaßnahmen", "name_en-us": "Electronic Counter Measures", "name_es": "Contramedidas electrónicas", "name_fr": "Contre-mesures électroniques", "name_it": "Electronic Counter Measures", "name_ja": "エレクトロニクス妨害機器", "name_ko": "ECM", "name_ru": "Модули глушения захвата целей", "name_zh": "ECM", "nameID": 281388, "parentGroupID": 1566 }, "1568": { "description_de": "ECM Burst", "description_en-us": "ECM Burst", "description_es": "Ráfaga ECM.", "description_fr": "Salves CME", "description_it": "ECM Burst", "description_ja": "ECMバースト", "description_ko": "ECM 버스트", "description_ru": "Импульсная система РЭБ", "description_zh": "ECM脉冲设备", "descriptionID": 281391, "hasTypes": 1, "iconID": 2703, "name_de": "ECM-Pulsgeneratoren", "name_en-us": "ECM Burst", "name_es": "Ráfaga ECM", "name_fr": "Salve CME", "name_it": "ECM Burst", "name_ja": "ECMバースト", "name_ko": "ECM 버스트", "name_ru": "Импульсные глушители захвата целей", "name_zh": "ECM脉冲设备", "nameID": 281390, "parentGroupID": 1566 }, "1570": { "description_de": "Stasis Webifier", "description_en-us": "Stasis Webifiers", "description_es": "Redes ralentizadoras.", "description_fr": "Générateurs de stase", "description_it": "Stasis Webifiers", "description_ja": "ステイシスウェビファイヤー", "description_ko": "스테이시스 웹 생성기", "description_ru": "Генераторы стазис-сети", "description_zh": "停滞缠绕光束", "descriptionID": 281399, "hasTypes": 1, "iconID": 2703, "name_de": "Stasisnetze", "name_en-us": "Stasis Webifiers", "name_es": "Redes ralentizadoras", "name_fr": "Générateurs de stase", "name_it": "Stasis Webifiers", "name_ja": "ステイシスウェビファイヤー", "name_ko": "스테이시스 웹 생성기", "name_ru": "Стазис-индукторы", "name_zh": "停滞缠绕光束", "nameID": 281394, "parentGroupID": 1566 }, "1571": { "description_de": "Target Painter", "description_en-us": "Target Painters", "description_es": "Reveladores de objetivo.", "description_fr": "Marqueurs de cibles", "description_it": "Target Painters", "description_ja": "ターゲットペインター", "description_ko": "타겟 페인터", "description_ru": "Системы подсветки целей", "description_zh": "目标标记装备", "descriptionID": 281400, "hasTypes": 1, "iconID": 2703, "name_de": "Zielmarkierung", "name_en-us": "Target Painters", "name_es": "Reveladores de objetivo", "name_fr": "Marqueurs de cible", "name_it": "Target Painters", "name_ja": "ターゲットペインター", "name_ko": "타겟 페인터", "name_ru": "Системы подсветки целей", "name_zh": "目标标记装备", "nameID": 281395, "parentGroupID": 1566 }, "1572": { "description_de": "Warp-Unterbrechungsfeld-Generatoren", "description_en-us": "Warp Disruption Field Generators", "description_es": "Generadores de campo disruptor de warp.", "description_fr": "Générateurs de champs perturbateurs de warp", "description_it": "Warp Disruption Field Generators", "description_ja": "ワープ妨害フィールド発生装置", "description_ko": "워프 디스럽션 필드 생성기", "description_ru": "Бортовые генераторы варп-помех", "description_zh": "跃迁扰断力场发生器", "descriptionID": 281401, "hasTypes": 1, "iconID": 2703, "name_de": "Warpstörfeld-Generatoren", "name_en-us": "Warp Disruption Field Generators", "name_es": "Generadores de campo disruptor de warp.", "name_fr": "Générateurs de champ perturbateurs de warp", "name_it": "Warp Disruption Field Generators", "name_ja": "ワープ妨害フィールド発生装置", "name_ko": "워프 디스럽션 필드 생성기", "name_ru": "Бортовые варп-заградители", "name_zh": "跃迁扰断力场发生器", "nameID": 281396, "parentGroupID": 1566 }, "1574": { "description_de": "Waffenstörer", "description_en-us": "Weapon Disruptors", "description_es": "Disruptores de armas.", "description_fr": "Perturbateurs d'armement", "description_it": "Weapon Disruptors", "description_ja": "トラッキング妨害機", "description_ko": "무기 디스럽터", "description_ru": "Подавители оружия", "description_zh": "武器扰断器", "descriptionID": 281403, "hasTypes": 1, "iconID": 2703, "name_de": "Waffenstörer", "name_en-us": "Weapon Disruptors", "name_es": "Disruptores de armas", "name_fr": "Perturbateurs d'armement", "name_it": "Weapon Disruptors", "name_ja": "トラッキング妨害機", "name_ko": "무기 디스럽터", "name_ru": "Подавители оружия", "name_zh": "武器扰断器", "nameID": 281398, "parentGroupID": 1566 }, "1575": { "description_de": "ECCM", "description_en-us": "ECCM", "description_es": "Anticontramedidas electrónicas.", "description_fr": "CCME", "description_it": "ECCM", "description_ja": "ECCM", "description_ko": "ECCM", "description_ru": "ПРЭБ", "description_zh": "ECCM", "descriptionID": 281414, "hasTypes": 1, "iconID": 2703, "name_de": "EGGM", "name_en-us": "ECCM", "name_es": "ECCM", "name_fr": "CCME", "name_it": "ECCM", "name_ja": "ECCM", "name_ko": "ECCM", "name_ru": "Усилители сенсоров", "name_zh": "ECCM", "nameID": 281413, "parentGroupID": 1566 }, "1576": { "description_de": "Remote Sensor Dampener-Module", "description_en-us": "Remote Sensor Dampeners", "description_es": "Atenuadores de sensor remotos.", "description_fr": "Atténuateurs de détection à distance", "description_it": "Remote Sensor Dampeners", "description_ja": "リモートセンサーダンプナー", "description_ko": "원격 센서 댐프너", "description_ru": "Модули глушения систем поиска целей", "description_zh": "远程感应抑阻器", "descriptionID": 281416, "hasTypes": 1, "iconID": 2703, "name_de": "Sensorferndämpfer", "name_en-us": "Remote Sensor Dampeners", "name_es": "Atenuadores de sensor remotos", "name_fr": "Atténuateurs de détection à distance", "name_it": "Remote Sensor Dampeners", "name_ja": "リモートセンサーダンプナー", "name_ko": "원격 센서 댐프너", "name_ru": "Модули подавления захвата целей", "name_zh": "远程感应抑阻器", "nameID": 281415, "parentGroupID": 1566 }, "1577": { "description_de": "Projiziertes ECCM", "description_en-us": "Projected ECCM", "description_es": "ECCM proyectadas.", "description_fr": "CCME projetée", "description_it": "Projected ECCM", "description_ja": "ECCMプロジェクション", "description_ko": "ECCM 방출기", "description_ru": "Проекционный модуль ПРЭБ", "description_zh": "投射型ECCM", "descriptionID": 281418, "hasTypes": 1, "iconID": 2703, "name_de": "Projizierte EGGM", "name_en-us": "Projected ECCM", "name_es": "ECCM proyectadas", "name_fr": "CCME projetée", "name_it": "Projected ECCM", "name_ja": "ECCMプロジェクション", "name_ko": "ECCM 방출기", "name_ru": "Дистанционные усилители сенсоров", "name_zh": "投射型ECCM", "nameID": 281417, "parentGroupID": 1566 }, "1578": { "description_de": "Elektronik- und Sensor-Upgrades", "description_en-us": "Electronics and Sensor Upgrades", "description_es": "Mejoras electrónicas y de sensores.", "description_fr": "Améliorations des détecteurs et de l'électronique", "description_it": "Electronics and Sensor Upgrades", "description_ja": "エレクトロニクスとセンサー強化", "description_ko": "전자기기 및 센서 업그레이드", "description_ru": "Пакеты модернизации электронных и сенсорных систем", "description_zh": "电子学和感应器升级", "descriptionID": 281420, "hasTypes": 0, "iconID": 2703, "name_de": "Elektronik- & Sensorupgrades", "name_en-us": "Electronics and Sensor Upgrades", "name_es": "Mejoras electrónicas y de sensores", "name_fr": "Améliorations des détecteurs et de l'électronique", "name_it": "Electronics and Sensor Upgrades", "name_ja": "エレクトロニクスとセンサー強化", "name_ko": "전자기기 및 센서 업그레이드", "name_ru": "Улучшения сенсоров и электронных систем", "name_zh": "电子学和感应器升级", "nameID": 281419, "parentGroupID": 209 }, "1579": { "description_de": "Automatische Zielerfassungssysteme", "description_en-us": "Automated Targeting Systems", "description_es": "Sistemas de adquisición automatizada de objetivos.", "description_fr": "Systèmes de ciblage automatisés", "description_it": "Automated Targeting Systems", "description_ja": "全自動ターゲットシステム", "description_ko": "오토 타겟팅 시스템", "description_ru": "Системы автоматического захвата целей", "description_zh": "自动锁定系统", "descriptionID": 281423, "hasTypes": 1, "iconID": 2703, "name_de": "Automatische Zielsysteme", "name_en-us": "Automated Targeting Systems", "name_es": "Sistemas de adquisición automatizada de objetivos", "name_fr": "Systèmes de ciblage automatisés", "name_it": "Automated Targeting Systems", "name_ja": "全自動ターゲットシステム", "name_ko": "오토 타겟팅 시스템", "name_ru": "Системы автоматического захвата целей", "name_zh": "自动锁定系统", "nameID": 281422, "parentGroupID": 1578 }, "1580": { "description_de": "Sensoren-Fernverstärker", "description_en-us": "Remote Sensor Boosters", "description_es": "Potenciadores de sensor remotos.", "description_fr": "Boosters de détection à distance", "description_it": "Remote Sensor Boosters", "description_ja": "リモートセンサーブースター", "description_ko": "원격 센서 부스터", "description_ru": "Дистанционные усилители для систем поиска целей", "description_zh": "远程感应增强器", "descriptionID": 281425, "hasTypes": 1, "iconID": 2703, "name_de": "Sensorfernbooster", "name_en-us": "Remote Sensor Boosters", "name_es": "Potenciadores de sensor remotos", "name_fr": "Boosters de capteur à distance", "name_it": "Remote Sensor Boosters", "name_ja": "リモートセンサーブースター", "name_ko": "원격 센서 부스터", "name_ru": "Передатчики для систем захвата целей", "name_zh": "远程感应增强器", "nameID": 281424, "parentGroupID": 1578 }, "1581": { "description_de": "Sensoren-Booster", "description_en-us": "Sensor Boosters", "description_es": "Potenciadores de sensor.", "description_fr": "Boosters de détection", "description_it": "Sensor Boosters", "description_ja": "センサー強度強化", "description_ko": "센서 부스터", "description_ru": "Активные усилители для систем поиска целей", "description_zh": "感应增强器", "descriptionID": 281427, "hasTypes": 1, "iconID": 2703, "name_de": "Sensorbooster", "name_en-us": "Sensor Boosters", "name_es": "Potenciadores de sensor", "name_fr": "Boosters de détection", "name_it": "Sensor Boosters", "name_ja": "センサーブースター", "name_ko": "센서 부스터", "name_ru": "Активные усилители систем захвата целей", "name_zh": "感应增强器", "nameID": 281426, "parentGroupID": 1578 }, "1582": { "description_de": "Passive Zielerfassungssysteme", "description_en-us": "Passive Targeting Systems", "description_es": "Sistemas de adquisición pasiva de objetivos.", "description_fr": "Systèmes de ciblage passifs", "description_it": "Passive Targeting Systems", "description_ja": "パッシブターゲットシステム", "description_ko": "패시브 타겟팅 시스템", "description_ru": "Системы скрытого сопровождения целей", "description_zh": "被动索敌系统", "descriptionID": 281429, "hasTypes": 1, "iconID": 2703, "name_de": "Passive Zielsysteme", "name_en-us": "Passive Targeting Systems", "name_es": "Sistemas de adquisición pasiva de objetivos", "name_fr": "Systèmes de ciblage passif", "name_it": "Passive Targeting Systems", "name_ja": "パッシブターゲットシステム", "name_ko": "패시브 타겟팅 시스템", "name_ru": "Системы скрытого захвата целей", "name_zh": "被动索敌系统", "nameID": 281428, "parentGroupID": 1578 }, "1583": { "description_de": "Sensoren-Sicherungsarrays", "description_en-us": "Sensor Backup Arrays", "description_es": "Sistemas de sensores de apoyo.", "description_fr": "Modules de détection de secours", "description_it": "Sensor Backup Arrays", "description_ja": "センサー補助", "description_ko": "센서 백업 시설", "description_ru": "Пассивные системы целеуказания", "description_zh": "感应器备用阵列", "descriptionID": 281431, "hasTypes": 1, "iconID": 2703, "name_de": "Sensorsicherungsanlagen", "name_en-us": "Sensor Backup Arrays", "name_es": "Sistemas de sensores de apoyo", "name_fr": "Modules de détection de secours", "name_it": "Sensor Backup Arrays", "name_ja": "センサー補助", "name_ko": "센서 백업 시설", "name_ru": "Пассивные системы захвата целей", "name_zh": "感应器备用阵列", "nameID": 281430, "parentGroupID": 1566 }, "1584": { "description_de": "CPU-Upgrades", "description_en-us": "CPU Upgrades", "description_es": "Mejoras de CPU.", "description_fr": "Améliorations de CPU", "description_it": "CPU Upgrades", "description_ja": "CPU強化", "description_ko": "CPU 업그레이드", "description_ru": "Пакеты модернизации процессора", "description_zh": "CPU升级模块", "descriptionID": 281433, "hasTypes": 1, "iconID": 2703, "name_de": "CPU-Upgrades", "name_en-us": "CPU Upgrades", "name_es": "Mejoras de CPU", "name_fr": "Améliorations de CPU", "name_it": "CPU Upgrades", "name_ja": "CPU強化", "name_ko": "CPU 업그레이드", "name_ru": "Улучшения ЦПУ", "name_zh": "CPU升级模块", "nameID": 281432, "parentGroupID": 1578 }, "1585": { "description_de": "Signalverstärker", "description_en-us": "Signal Amplifiers", "description_es": "Amplificadores de señal.", "description_fr": "Amplificateurs de signal", "description_it": "Signal Amplifiers", "description_ja": "シグナル増幅器", "description_ko": "신호 증폭기", "description_ru": "Усилители сигнала", "description_zh": "信号放大器", "descriptionID": 281435, "hasTypes": 1, "iconID": 2703, "name_de": "Signalverstärker", "name_en-us": "Signal Amplifiers", "name_es": "Amplificadores de señal", "name_fr": "Amplificateurs de signal", "name_it": "Signal Amplifiers", "name_ja": "シグナル増幅器", "name_ko": "신호 증폭기", "name_ru": "Усилители сигнала", "name_zh": "信号放大器", "nameID": 281434, "parentGroupID": 1578 }, "1586": { "description_de": "Kampfunterstützungsdrohnen", "description_en-us": "Combat Utility Drones", "description_es": "Drones de utilidades de combate.", "description_fr": "Drones de soutien au combat", "description_it": "Combat Utility Drones", "description_ja": "戦闘支援ドローン", "description_ko": "컴뱃 유틸리티 드론", "description_ru": "Вспомогательные боевые дроны", "description_zh": "功能性战斗无人机", "descriptionID": 281698, "hasTypes": 1, "iconID": 2703, "name_de": "Kampfunterstützungsdrohnen", "name_en-us": "Combat Utility Drones", "name_es": "Drones de utilidades de combate", "name_fr": "Drones de soutien au combat", "name_it": "Combat Utility Drones", "name_ja": "戦闘支援ドローン", "name_ko": "컴뱃 유틸리티 드론", "name_ru": "Вспомогательные дроны", "name_zh": "功能性战斗无人机", "nameID": 281697, "parentGroupID": 357 }, "1587": { "description_de": "Amarr", "description_en-us": "Amarr", "description_es": "Amarr.", "description_fr": "Amarr", "description_it": "Amarr", "description_ja": "アマー", "description_ko": "아마르", "description_ru": "Амаррские", "description_zh": "艾玛", "descriptionID": 281701, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 281700, "parentGroupID": 1097 }, "1588": { "description_de": "Caldari", "description_en-us": "Caldari", "description_es": "Caldari.", "description_fr": "Caldari", "description_it": "Caldari", "description_ja": "カルダリ", "description_ko": "칼다리", "description_ru": "Калдарские", "description_zh": "加达里", "descriptionID": 281703, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 281702, "parentGroupID": 1097 }, "1589": { "description_de": "Gallente", "description_en-us": "Gallente", "description_es": "Gallente.", "description_fr": "Gallente", "description_it": "Gallente", "description_ja": "ガレンテ", "description_ko": "갈란테", "description_ru": "Галлентские", "description_zh": "盖伦特", "descriptionID": 281705, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 281704, "parentGroupID": 1097 }, "1590": { "description_de": "Minmatar", "description_en-us": "Minmatar", "description_es": "Minmatar.", "description_fr": "Minmatar", "description_it": "Minmatar", "description_ja": "ミンマター", "description_ko": "민마타", "description_ru": "Матарские", "description_zh": "米玛塔尔", "descriptionID": 281707, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 281706, "parentGroupID": 1097 }, "1591": { "description_de": "Fortschrittliche Komponenten", "description_en-us": "Advanced Components", "description_es": "Componentes de tecnología avanzada.", "description_fr": "Composants avancés", "description_it": "Advanced Components", "description_ja": "高性能部品", "description_ko": "상급 부품", "description_ru": "Усовершенствованные компоненты", "description_zh": "高级组件", "descriptionID": 281716, "hasTypes": 0, "iconID": 2703, "name_de": "Fortschrittliche Komponenten", "name_en-us": "Advanced Components", "name_es": "Componentes avanzados", "name_fr": "Composants avancés", "name_it": "Advanced Components", "name_ja": "高性能部品", "name_ko": "상급 부품", "name_ru": "Усовершенствованные компоненты", "name_zh": "高级组件", "nameID": 281715, "parentGroupID": 800 }, "1592": { "description_de": "Amarr", "description_en-us": "Amarr", "description_es": "Amarr.", "description_fr": "Amarr", "description_it": "Amarr", "description_ja": "アマー", "description_ko": "아마르", "description_ru": "Амаррские", "description_zh": "艾玛", "descriptionID": 281718, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 281717, "parentGroupID": 1591 }, "1593": { "description_de": "Caldari", "description_en-us": "Caldari", "description_es": "Caldari.", "description_fr": "Caldari", "description_it": "Caldari", "description_ja": "カルダリ", "description_ko": "칼다리", "description_ru": "Калдарские", "description_zh": "加达里", "descriptionID": 281720, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 281719, "parentGroupID": 1591 }, "1594": { "description_de": "Gallente", "description_en-us": "Gallente", "description_es": "Gallente.", "description_fr": "Gallente", "description_it": "Gallente", "description_ja": "ガレンテ", "description_ko": "갈란테", "description_ru": "Галлентские", "description_zh": "盖伦特", "descriptionID": 281722, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 281721, "parentGroupID": 1591 }, "1595": { "description_de": "Minmatar", "description_en-us": "Minmatar", "description_es": "Minmatar.", "description_fr": "Minmatar", "description_it": "Minmatar", "description_ja": "ミンマター", "description_ko": "민마타", "description_ru": "Матарские", "description_zh": "米玛塔尔", "descriptionID": 281724, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 281723, "parentGroupID": 1591 }, "1598": { "hasTypes": 1, "iconID": 10942, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282506, "parentGroupID": 99 }, "1599": { "hasTypes": 1, "iconID": 10940, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282507, "parentGroupID": 101 }, "1600": { "hasTypes": 1, "iconID": 10941, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282508, "parentGroupID": 100 }, "1601": { "hasTypes": 1, "iconID": 2703, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282509, "parentGroupID": 300 }, "1602": { "hasTypes": 1, "iconID": 2703, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282510, "parentGroupID": 301 }, "1603": { "hasTypes": 1, "iconID": 2703, "name_de": "Orbitalschlag", "name_en-us": "Orbital Strike", "name_es": "Asalto orbital", "name_fr": "Frappe orbitale", "name_it": "Orbital Strike", "name_ja": "軌道爆撃", "name_ko": "궤도 폭격", "name_ru": "Для обстрела планет", "name_zh": "轨道轰炸", "nameID": 282511, "parentGroupID": 299 }, "1610": { "description_de": "Amarr – Subsysteme", "description_en-us": "Amarr Subsystems", "description_es": "Subsistemas amarrianos.", "description_fr": "Sous-systèmes amarr", "description_it": "Amarr Subsystems", "description_ja": "アマーサブシステム", "description_ko": "아마르 서브시스템", "description_ru": "Амаррские подсистемы", "description_zh": "艾玛子系统", "descriptionID": 283284, "hasTypes": 0, "iconID": 20959, "name_de": "Amarr-Subsysteme", "name_en-us": "Amarr Subsystems", "name_es": "Subsistemas amarrianos", "name_fr": "Sous-systèmes amarr", "name_it": "Amarr Subsystems", "name_ja": "アマーサブシステム", "name_ko": "아마르 서브시스템", "name_ru": "Амаррские подсистемы", "name_zh": "艾玛子系统", "nameID": 283283, "parentGroupID": 1112 }, "1612": { "description_de": "Seltene und optisch unterschiedliche Schiffe für Sammler", "description_en-us": "Rare and visually distinct ships of interest to collectors", "description_es": "Naves poco comunes y de aspecto distintivo, de interés para los coleccionistas.", "description_fr": "Vaisseaux dont la rareté et l'aspect visuel sont particulièrement appréciés des collectionneurs", "description_it": "Rare and visually distinct ships of interest to collectors", "description_ja": "通常型と外見が異なる希少な艦船。コレクター向け", "description_ko": "수집할만한 가치를 지닌 희귀 함선입니다.", "description_ru": "Редкие корабли и корабли необычного дизайна, представляющие интерес для коллекционеров.", "description_zh": "稀有且外形独特的舰船,是收藏家的最爱", "descriptionID": 283310, "hasTypes": 0, "iconID": 1443, "name_de": "Sonderversionen von Schiffen", "name_en-us": "Special Edition Ships", "name_es": "Naves de edición especial", "name_fr": "Vaisseaux édition spéciale", "name_it": "Special Edition Ships", "name_ja": "特別版艦船", "name_ko": "스페셜 에디션 함선", "name_ru": "Малосерийные корабли", "name_zh": "特别版舰船", "nameID": 283309, "parentGroupID": 4 }, "1614": { "description_de": "Industrieschiffe, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Industrial ships which have been offered to capsuleers on occasion for limited periods.", "description_es": "Naves industriales ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Vaisseaux industriels mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Industrial ships which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された輸送艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 인더스트리얼입니다.", "description_ru": "Промышленные корабли, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供应的工业舰。", "descriptionID": 283314, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Industrieschiffe", "name_en-us": "Special Edition Industrial Ships", "name_es": "Naves industriales de edición especial", "name_fr": "Vaisseaux industriels édition spéciale", "name_it": "Special Edition Industrial Ships", "name_ja": "特別版輸送艦", "name_ko": "인더스트리얼", "name_ru": "Малосерийные грузовые корабли", "name_zh": "特别版工业舰", "nameID": 283313, "parentGroupID": 1612 }, "1616": { "description_de": "ORE-Fregatten-Designs.", "description_en-us": "ORE frigate designs.", "description_es": "Diseños de fragatas de ORE.", "description_fr": "Modèles de frégates ORE.", "description_it": "ORE frigate designs.", "description_ja": "OREフリゲートの設計図。", "description_ko": "ORE의 프리깃입니다.", "description_ru": "Фрегаты производства корпорации ORE.", "description_zh": "联合矿业护卫舰设计。", "descriptionID": 283355, "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE社", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 283354, "parentGroupID": 5 }, "1617": { "description_de": "Blueprints für ORE-Fregatten-Designs.", "description_en-us": "Blueprints of ORE frigate designs.", "description_es": "Planos de diseños de fragatas de ORE.", "description_fr": "Plans de construction de modèles de frégates ORE.", "description_it": "Blueprints of ORE frigate designs.", "description_ja": "OREフリゲート設計図のブループリント。", "description_ko": "ORE 프리깃 블루프린트입니다.", "description_ru": "Чертежи фрегатов производства корпорации ORE.", "description_zh": "联合矿业护卫舰设计蓝图。", "descriptionID": 283357, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "鉱石", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 283356, "parentGroupID": 205 }, "1618": { "description_de": "Shuttles, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Shuttles which have been offered to capsuleers on occasion for limited periods.", "description_es": "Lanzaderas ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Navettes mises parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Shuttles which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布されたシャトル。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 셔틀입니다.", "description_ru": "Челноки, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供应的穿梭机。", "descriptionID": 283442, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Shuttles", "name_en-us": "Special Edition Shuttles", "name_es": "Lanzaderas de edición especial", "name_fr": "Navettes édition spéciale", "name_it": "Special Edition Shuttles", "name_ja": "特別版シャトル", "name_ko": "셔틀", "name_ru": "Малосерийные катера", "name_zh": "特别版穿梭机", "nameID": 283441, "parentGroupID": 1612 }, "1619": { "description_de": "Fregatten, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Frigates which have been offered to capsuleers on occasion for limited periods.", "description_es": "Fragatas ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Frégates mises parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Frigates which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布されたフリゲート。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 셔틀입니다.", "description_ru": "Фрегаты, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供应的护卫舰。", "descriptionID": 283444, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Fregatten", "name_en-us": "Special Edition Frigates", "name_es": "Fragatas de edición especial", "name_fr": "Frégates édition spéciale", "name_it": "Special Edition Frigates", "name_ja": "特別版フリゲート", "name_ko": "프리깃", "name_ru": "Малосерийные фрегаты", "name_zh": "特别版护卫舰", "nameID": 283443, "parentGroupID": 1612 }, "1620": { "description_de": "Schlachtschiffe, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Battleships which have been offered to capsuleers on occasion for limited periods.", "description_es": "Acorazados ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Cuirassés mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Battleships which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された戦艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 배틀쉽입니다.", "description_ru": "Линкоры, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供应的战列舰。", "descriptionID": 283446, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Schlachtschiffe", "name_en-us": "Special Edition Battleships", "name_es": "Acorazados de edición especial", "name_fr": "Cuirassés édition spéciale", "name_it": "Special Edition Battleships", "name_ja": "特別版戦艦", "name_ko": "배틀쉽", "name_ru": "Малосерийные линкоры", "name_zh": "特别版战列舰", "nameID": 283445, "parentGroupID": 1612 }, "1621": { "description_de": "Schwere Angriffskreuzer, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Heavy Assault Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_es": "Cruceros de asalto pesado ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Croiseurs d'assaut lourds mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Heavy Assault Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された強襲型巡洋艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 어썰트 크루저입니다.", "description_ru": "Тяжелые ударные крейсеры, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供克隆飞行员使用的重型突击巡洋舰。", "descriptionID": 283448, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Schwere Angriffskreuzer", "name_en-us": "Special Edition Heavy Assault Cruisers", "name_es": "Cruceros de asalto pesados de edición especial", "name_fr": "Croiseurs d'assaut lourds édition spéciale", "name_it": "Special Edition Heavy Assault Cruisers", "name_ja": "特別版強襲型巡洋艦", "name_ko": "어썰트 크루저", "name_ru": "Малосерийные ударные крейсеры", "name_zh": "特别版重型突击巡洋舰", "nameID": 283447, "parentGroupID": 1612 }, "1623": { "description_de": "Angriffsfregatten, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Assault Frigates which have been offered to capsuleers on occasion for limited periods.", "description_es": "Fragatas de asalto ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Frégates d'assaut mises parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Assault Frigates which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された強襲型フリゲート。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 어썰트 프리깃입니다.", "description_ru": "Ударные фрегаты, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供克隆飞行员使用的突击护卫舰。", "descriptionID": 283452, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Angriffsfregatten", "name_en-us": "Special Edition Assault Frigates", "name_es": "Fragatas de asalto de edición especial", "name_fr": "Frégates d'assaut édition spéciale", "name_it": "Special Edition Assault Frigates", "name_ja": "特別版強襲型フリゲート", "name_ko": "어썰트 프리깃", "name_ru": "Малосерийные ударные фрегаты", "name_zh": "特别版突击护卫舰", "nameID": 283451, "parentGroupID": 1612 }, "1624": { "description_de": "Logistikschiffe, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Logistics Ships which have been offered to capsuleers on occasion for limited periods.", "description_es": "Naves logísticas ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Vaisseaux logistiques mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Logistics Ships which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された支援型巡洋艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 로지스틱스입니다.", "description_ru": "Ремонтные корабли, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供应的后勤舰。", "descriptionID": 283454, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Versorgungsschiffe", "name_en-us": "Special Edition Logistics", "name_es": "Naves logísticas de edición especial", "name_fr": "Vaisseaux logistiques édition spéciale", "name_it": "Special Edition Logistics", "name_ja": "特別版支援型巡洋艦", "name_ko": "로지스틱스", "name_ru": "Малосерийные крейсеры обеспечения", "name_zh": "特别版后勤舰", "nameID": 283453, "parentGroupID": 1612 }, "1625": { "description_de": "Caldari-Subsysteme", "description_en-us": "Caldari Subsystems", "description_es": "Subsistemas caldaris", "description_fr": "Sous-systèmes caldari", "description_it": "Caldari Subsystems", "description_ja": "カルダリサブシステム", "description_ko": "칼다리 서브시스템", "description_ru": "Калдарские подсистемы", "description_zh": "加达里子系统", "descriptionID": 630004, "hasTypes": 0, "iconID": 20966, "name_de": "Caldari-Subsysteme", "name_en-us": "Caldari Subsystems", "name_es": "Subsistemas caldaris", "name_fr": "Sous-systèmes caldari", "name_it": "Caldari Subsystems", "name_ja": "カルダリサブシステム", "name_ko": "칼다리 서브시스템", "name_ru": "Калдарские подсистемы", "name_zh": "加达里子系统", "nameID": 283524, "parentGroupID": 1112 }, "1626": { "description_de": "Minmatar-Subsysteme", "description_en-us": "Minmatar Subsystems", "description_es": "Subsistemas minmatarianos", "description_fr": "Sous-systèmes minmatar", "description_it": "Minmatar Subsystems", "description_ja": "ミンマターサブシステム", "description_ko": "민마타 서브시스템", "description_ru": "Минматарские подсистемы", "description_zh": "米玛塔尔子系统", "descriptionID": 630005, "hasTypes": 0, "iconID": 20968, "name_de": "Minmatar-Subsysteme", "name_en-us": "Minmatar Subsystems", "name_es": "Subsistemas minmatarianos", "name_fr": "Sous-systèmes minmatar", "name_it": "Minmatar Subsystems", "name_ja": "ミンマターサブシステム", "name_ko": "민마타 서브시스템", "name_ru": "Минматарские подсистемы", "name_zh": "米玛塔尔子系统", "nameID": 283525, "parentGroupID": 1112 }, "1627": { "description_de": "Gallente-Subsysteme", "description_en-us": "Gallente Subsystems", "description_es": "Subsistemas gallentes", "description_fr": "Sous-systèmes gallente", "description_it": "Gallente Subsystems", "description_ja": "ガレンテサブシステム", "description_ko": "갈란테 서브시스템", "description_ru": "Галлентские подсистемы", "description_zh": "盖伦特子系统", "descriptionID": 630002, "hasTypes": 0, "iconID": 20967, "name_de": "Gallente-Subsysteme", "name_en-us": "Gallente Subsystems", "name_es": "Subsistemas gallentes", "name_fr": "Sous-systèmes gallente", "name_it": "Gallente Subsystems", "name_ja": "ガレンテサブシステム", "name_ko": "갈란테 서브시스템", "name_ru": "Галлентские подсистемы", "name_zh": "盖伦特子系统", "nameID": 283526, "parentGroupID": 1112 }, "1631": { "description_de": "Fraktions-Shuttles", "description_en-us": "Faction Shuttles", "description_es": "Lanzaderas faccionarias.", "description_fr": "Navettes de faction", "description_it": "Faction Shuttles", "description_ja": "勢力別シャトル", "description_ko": "팩션 셔틀", "description_ru": "Шаттлы особых модификаций", "description_zh": "势力穿梭机", "descriptionID": 283555, "hasTypes": 1, "iconID": 1443, "name_de": "Fraktionsshuttles", "name_en-us": "Faction Shuttles", "name_es": "Lanzaderas faccionarias", "name_fr": "Navettes de faction", "name_it": "Faction Shuttles", "name_ja": "勢力別シャトル", "name_ko": "팩션 셔틀", "name_ru": "Пиратские и армейские", "name_zh": "势力穿梭机", "nameID": 283554, "parentGroupID": 391 }, "1633": { "description_de": "Kommandostrahlen", "description_en-us": "Command Bursts", "description_es": "Estallidos de mando.", "description_fr": "Salves de commandement", "description_it": "Command Bursts", "description_ja": "コマンドバースト", "description_ko": "커맨드 버스트", "description_ru": "Импульсные оптимизаторы", "description_zh": "指挥脉冲波", "descriptionID": 283633, "hasTypes": 1, "iconID": 20970, "name_de": "Kommandostrahlen", "name_en-us": "Command Bursts", "name_es": "Estallidos de mando", "name_fr": "Salves de commandement", "name_it": "Command Bursts", "name_ja": "コマンドバースト", "name_ko": "커맨드 버스트", "name_ru": "Импульсные оптимизаторы", "name_zh": "指挥脉冲波", "nameID": 283632, "parentGroupID": 779 }, "1639": { "description_de": "Befehlsprozessoren", "description_en-us": "Command Processors", "description_es": "Procesadores de mando.", "description_fr": "Processeurs de commande", "description_it": "Command Processors", "description_ja": "コマンドプロセッサー", "description_ko": "지휘 프로세서", "description_ru": "Командные процессоры", "description_zh": "指挥处理器", "descriptionID": 283645, "hasTypes": 1, "iconID": 1444, "name_de": "Befehlsprozessoren", "name_en-us": "Command Processors", "name_es": "Procesadores de mando", "name_fr": "Processeurs de commande", "name_it": "Command Processors", "name_ja": "コマンドプロセッサー", "name_ko": "지휘 프로세서", "name_ru": "Командные процессоры", "name_zh": "指挥处理器", "nameID": 283644, "parentGroupID": 779 }, "1640": { "description_de": "Sprungtorgeneratoren", "description_en-us": "Jump Portal Generators", "description_es": "Generadores de portales de salto.", "description_fr": "Générateurs de portails hyperspatiaux", "description_it": "Jump Portal Generators", "description_ja": "ジャンプポータルジェネレーター", "description_ko": "점프 포탈 생성기", "description_ru": "Генераторы гиперпорталов", "description_zh": "跳跃通道发生器", "descriptionID": 283647, "hasTypes": 1, "iconID": 2985, "name_de": "Sprungtorgeneratoren", "name_en-us": "Jump Portal Generators", "name_es": "Generadores de portales de salto", "name_fr": "Générateurs de portail hyperspatial", "name_it": "Jump Portal Generators", "name_ja": "ジャンプポータルジェネレーター", "name_ko": "점프 포탈 생성기", "name_ru": "Генераторы гиперпорталов", "name_zh": "跳跃通道发生器", "nameID": 283646, "parentGroupID": 779 }, "1641": { "description_de": "Cynosural-Feld-Generatoren", "description_en-us": "Cynosural Field Generators", "description_es": "Generadores de campo cinosural.", "description_fr": "Générateurs de champs cynosuraux", "description_it": "Cynosural Field Generators", "description_ja": "サイノシュラルフィールドジェネレーター", "description_ko": "사이노슈럴 필드 생성기", "description_ru": "Приводные маяки", "description_zh": "诱导力场发生器", "descriptionID": 283649, "hasTypes": 1, "iconID": 1444, "name_de": "Anziehungsfeldgeneratoren", "name_en-us": "Cynosural Field Generators", "name_es": "Generadores de campo cinosural", "name_fr": "Générateurs de champ cynosural", "name_it": "Cynosural Field Generators", "name_ja": "サイノシュラルフィールドジェネレーター", "name_ko": "사이노슈럴 필드 생성기", "name_ru": "Приводные маяки", "name_zh": "诱导力场发生器", "nameID": 283648, "parentGroupID": 779 }, "1642": { "description_de": "Klonbuchten", "description_en-us": "Clone Vat Bays", "description_es": "Plataformas de contenedores de clonación.", "description_fr": "Plateformes de clonage", "description_it": "Clone Vat Bays", "description_ja": "クローンバットベイ", "description_ko": "점프 클론 격납고", "description_ru": "Отсеки клонирования", "description_zh": "克隆舱", "descriptionID": 283651, "hasTypes": 1, "iconID": 34, "name_de": "Klonbuchten", "name_en-us": "Clone Vat Bays", "name_es": "Plataformas de contenedores de clonación", "name_fr": "Plateformes de clonage", "name_it": "Clone Vat Bays", "name_ja": "クローンバットベイ", "name_ko": "점프 클론 격납고", "name_ru": "Отсеки клонирования", "name_zh": "克隆舱", "nameID": 283650, "parentGroupID": 779 }, "1643": { "description_de": "Blueprints für Bergungsdrohnen-Designs.", "description_en-us": "Blueprints of salvage drone designs.", "description_es": "Planos de diseños de drones recuperadores.", "description_fr": "Plans de construction de modèles de drones de récupération.", "description_it": "Blueprints of salvage drone designs.", "description_ja": "サルベージドローン設計図のブループリント。", "description_ko": "샐비지 드론 설계 블루프린트입니다.", "description_ru": "Чертежи дронов-демонтажников.", "description_zh": "打捞无人机设计蓝图。", "descriptionID": 283658, "hasTypes": 1, "iconID": 2703, "name_de": "Bergungsdrohnen", "name_en-us": "Salvage Drones", "name_es": "Drones recuperadores", "name_fr": "Drones de récupération", "name_it": "Salvage Drones", "name_ja": "サルベージドローン", "name_ko": "샐비지 드론", "name_ru": "Дроны-демонтажники", "name_zh": "打捞无人机", "nameID": 283657, "parentGroupID": 357 }, "1646": { "description_de": "Drohnen, die Wertgegenstände aus Wracks bergen können", "description_en-us": "Drones capable of salvaging wrecks for valuables", "description_es": "Drones capaces de recuperar restos en busca de objetos de valor.", "description_fr": "Drones capables de récupérer des objets d'intérêt dans les épaves", "description_it": "Drones capable of salvaging wrecks for valuables", "description_ja": "資源を求めて残骸をサルベージすることのできるドローン", "description_ko": "잔해로부터 아이템을 획득할 수 있는 특수 드론입니다.", "description_ru": "Дроны, разбирающие металлолом и обломки кораблей в поисках ценных предметов", "description_zh": "能从残骸中打捞有价值物品的无人机", "descriptionID": 283662, "hasTypes": 1, "iconID": 1084, "name_de": "Bergungsdrohnen", "name_en-us": "Salvage Drones", "name_es": "Drones recuperadores", "name_fr": "Drones de récupération", "name_it": "Salvage Drones", "name_ja": "サルベージドローン", "name_ko": "샐비지 드론", "name_ru": "Дроны-демонтажники", "name_zh": "打捞无人机", "nameID": 283661, "parentGroupID": 157 }, "1650": { "description_de": "Fortschrittliche Antriebstechnologie, die einen Sprung über eine sehr kurze Entfernung ermöglicht.", "description_en-us": "Advanced propulsion technology that allows for a jump over a very short distance.", "description_es": "Tecnología de propulsión avanzada que permite saltar distancias cortas.", "description_fr": "Technologie de propulsion avancée permettant d'effectuer un saut sur une très courte distance.", "description_it": "Advanced propulsion technology that allows for a jump over a very short distance.", "description_ja": "新開発の推進技術により、超短距離ジャンプを可能にする。", "description_ko": "첨단 추진기 기술로 근거리 점프가 가능합니다.", "description_ru": "Усовершенствованная технология двигательной установки, позволяющая осуществлять прыжки на крайне небольшие расстояния.", "description_zh": "这种先进的推进技术可以让你跳跃一小段距离。", "descriptionID": 283706, "hasTypes": 1, "iconID": 20971, "name_de": "Mikrosprungantriebe", "name_en-us": "Micro Jump Drives", "name_es": "Motores de microsalto", "name_fr": "Propulseurs de microsauts", "name_it": "Micro Jump Drives", "name_ja": "超小型ジャンプドライブ", "name_ko": "마이크로 점프 드라이브", "name_ru": "Маневровые гипердвигатели", "name_zh": "微型跳跃引擎", "nameID": 283705, "parentGroupID": 52 }, "1651": { "description_de": "Sicherheitscontainer", "description_en-us": "Secure Containers", "description_es": "Contenedores seguros.", "description_fr": "Conteneurs sécurisés", "description_it": "Secure Containers", "description_ja": "セキュアコンテナ", "description_ko": "보안 컨테이너", "description_ru": "Защищенные контейнеры", "description_zh": "安全货柜", "descriptionID": 283757, "hasTypes": 1, "iconID": 16, "name_de": "Sicherheitscontainer", "name_en-us": "Secure Containers", "name_es": "Contenedores seguros", "name_fr": "Conteneurs sécurisés", "name_it": "Secure Containers", "name_ja": "セキュアコンテナ", "name_ko": "보안 컨테이너", "name_ru": "Защищенные контейнеры", "name_zh": "安全货柜", "nameID": 283756, "parentGroupID": 379 }, "1652": { "description_de": "Audit Log-Container", "description_en-us": "Audit Log Containers", "description_es": "Contenedores del registro de auditoría.", "description_fr": "Conteneurs à journaux d'audit", "description_it": "Audit Log Containers", "description_ja": "監査ログコンテナ", "description_ko": "암호화 컨테이너", "description_ru": "Защищенные контейнеры с контролем доступа", "description_zh": "审计密码集装箱", "descriptionID": 283759, "hasTypes": 1, "iconID": 16, "name_de": "Audit-Protokollcontainer", "name_en-us": "Audit Log Containers", "name_es": "Contenedores del registro de auditoría", "name_fr": "Conteneurs de journaux d'audit", "name_it": "Audit Log Containers", "name_ja": "監査ログコンテナ", "name_ko": "암호화 컨테이너", "name_ru": "Защищённые контейнеры с журналом", "name_zh": "审计密码集装箱", "nameID": 283758, "parentGroupID": 379 }, "1653": { "description_de": "Frachtcontainer", "description_en-us": "Freight Containers", "description_es": "Contenedores de mercancías.", "description_fr": "Conteneurs de fret", "description_it": "Freight Containers", "description_ja": "貨物コンテナ", "description_ko": "화물 컨테이너", "description_ru": "Транспортные контейнеры", "description_zh": "货物集装箱", "descriptionID": 283761, "hasTypes": 1, "iconID": 16, "name_de": "Frachtcontainer", "name_en-us": "Freight Containers", "name_es": "Contenedores de mercancías", "name_fr": "Conteneurs de fret", "name_it": "Freight Containers", "name_ja": "貨物コンテナ", "name_ko": "화물 컨테이너", "name_ru": "Транспортные контейнеры", "name_zh": "货物集装箱", "nameID": 283760, "parentGroupID": 379 }, "1657": { "description_de": "Standardcontainer", "description_en-us": "Standard Containers", "description_es": "Contenedores estándar.", "description_fr": "Conteneurs standard", "description_it": "Standard Containers", "description_ja": "標準コンテナ", "description_ko": "일반 컨테이너", "description_ru": "Стандартные контейнеры", "description_zh": "标准货柜", "descriptionID": 283768, "hasTypes": 1, "iconID": 16, "name_de": "Standardcontainer", "name_en-us": "Standard Containers", "name_es": "Contenedores estándar", "name_fr": "Conteneurs standards", "name_it": "Standard Containers", "name_ja": "標準コンテナ", "name_ko": "일반 컨테이너", "name_ru": "Стандартные контейнеры", "name_zh": "标准货柜", "nameID": 283767, "parentGroupID": 379 }, "1658": { "description_de": "Stationscontainer", "description_en-us": "Station Containers", "description_es": "Contenedores de estación.", "description_fr": "Conteneurs de la station", "description_it": "Station Containers", "description_ja": "ステーションコンテナ", "description_ko": "정거장 컨테이너", "description_ru": "Станционные контейнеры", "description_zh": "空间站集装箱", "descriptionID": 283769, "hasTypes": 1, "iconID": 16, "name_de": "Stationscontainer", "name_en-us": "Station Containers", "name_es": "Contenedores de estación", "name_fr": "Conteneurs de station", "name_it": "Station Containers", "name_ja": "ステーションコンテナ", "name_ko": "정거장 컨테이너", "name_ru": "Станционные контейнеры", "name_zh": "空间站集装箱", "nameID": 283766, "parentGroupID": 379 }, "1659": { "description_de": "Sonderversionen sind typischerweise limitierte Gegenstände, die mit zurückliegenden Ereignissen in New Eden zusammenhängen, wie zum Beispiel dem Allianzturnier.", "description_en-us": "Special Edition Assets are typically limited run items associated with past events in New Eden, such as the Alliance Tournament", "description_es": "Los artículos de edición especial suelen ser objetos limitados y asociados a eventos pasados de Nuevo Edén, como el Torneo de Alianzas.", "description_fr": "En général, les actifs en version spéciale sont des objets à usage limité relatifs à des événements qui se sont produit dans New Eden, comme le Tournoi des alliances", "description_it": "Special Edition Assets are typically limited run items associated with past events in New Eden, such as the Alliance Tournament", "description_ja": "特別版資産は通常、アライアンストーナメントなどのニューエデンの過去のイベントに関連する限定アイテムです", "description_ko": "스페셜 에디션 아이템은 얼라이언스 토너먼트와 같은 이벤트를 통해 배포됩니다.", "description_ru": "Предметы из особых изданий как правило представляют собой вещи, связанные с примечательными событиями, происходящими в Новом Эдеме — например, с Турниром альянсов.", "description_zh": "特别版商品一般是和新伊甸的各种活动(例如联盟锦标赛)相关的限量版物品", "descriptionID": 285222, "hasTypes": 0, "name_de": "Sonderversionen", "name_en-us": "Special Edition Assets", "name_es": "Artículos de edición especial", "name_fr": "Objets édition spéciale", "name_it": "Special Edition Assets", "name_ja": "特別版資産", "name_ko": "스페셜 에디션 아이템", "name_ru": "Предметы из особых изданий", "name_zh": "特别版用品", "nameID": 285221 }, "1660": { "description_de": "Sonderversionen: Turnierkarten", "description_en-us": "Special Edition Tournament Cards", "description_es": "Cartas de torneos de edición especial.", "description_fr": "Cartes de tournoi édition spéciale", "description_it": "Special Edition Tournament Cards", "description_ja": "特別版トーナメントカード", "description_ko": "토너먼트 카드", "description_ru": "Турнирные карты из особых изданий", "description_zh": "特别版锦标赛卡片", "descriptionID": 285224, "hasTypes": 0, "iconID": 21065, "name_de": "Sonderversionen: Turnierkarten", "name_en-us": "Special Edition Tournament Cards", "name_es": "Cartas de torneos de edición especial", "name_fr": "Cartes de tournoi édition spéciale", "name_it": "Special Edition Tournament Cards", "name_ja": "特別版トーナメントカード", "name_ko": "토너먼트 카드", "name_ru": "Турнирные карты из особых изданий", "name_zh": "特别版锦标赛卡片", "nameID": 285223, "parentGroupID": 1659 }, "1661": { "description_de": "Sonderversionen: Handelsgüter", "description_en-us": "Special Edition Commodities", "description_es": "Mercancías de edición especial.", "description_fr": "Marchandises édition spéciale", "description_it": "Special Edition Commodities", "description_ja": "特別版加工品", "description_ko": "상품", "description_ru": "Товары из особых изданий", "description_zh": "特别版商品", "descriptionID": 285269, "hasTypes": 0, "iconID": 2231, "name_de": "Sonderversionen: Handelsgüter", "name_en-us": "Special Edition Commodities", "name_es": "Mercancías de edición especial", "name_fr": "Marchandises édition spéciale", "name_it": "Special Edition Commodities", "name_ja": "特別版加工品", "name_ko": "상품", "name_ru": "Товары из особых изданий", "name_zh": "特别版商品", "nameID": 285268, "parentGroupID": 1659 }, "1662": { "description_de": "Sonderversionen: Bekleidung", "description_en-us": "Special Edition Apparel", "description_es": "Indumentaria de edición especial.", "description_fr": "Uniforme édition spéciale", "description_it": "Special Edition Apparel", "description_ja": "特別版アパレル", "description_ko": "의류", "description_ru": "Одежда из особых изданий", "description_zh": "特别版服饰", "descriptionID": 285271, "hasTypes": 1, "iconID": 20977, "name_de": "Sonderversionen: Bekleidung", "name_en-us": "Special Edition Apparel", "name_es": "Indumentaria de edición especial", "name_fr": "Vêtements édition spéciale", "name_it": "Special Edition Apparel", "name_ja": "特別版アパレル", "name_ko": "의류", "name_ru": "Одежда из особых изданий", "name_zh": "特别版服饰", "nameID": 285270, "parentGroupID": 1659 }, "1663": { "description_de": "Sonderversionen: Festivalgegenstände", "description_en-us": "Special Edition Festival Assets", "description_es": "Artículos festivos de edición especial.", "description_fr": "Ressources festives édition spéciale", "description_it": "Special Edition Festival Assets", "description_ja": "特別版フェスティバル用品", "description_ko": "축제 아이템", "description_ru": "Фестивальные предметы из особых изданий", "description_zh": "特别版节日用品", "descriptionID": 285273, "hasTypes": 1, "iconID": 20973, "name_de": "Sonderversionen: Festivalgegenstände", "name_en-us": "Special Edition Festival Assets", "name_es": "Artículos festivos de edición especial", "name_fr": "Objets de festival édition spéciale", "name_it": "Special Edition Festival Assets", "name_ja": "特別版フェスティバル用品", "name_ko": "축제 아이템", "name_ru": "Фестивальные предметы из особых изданий", "name_zh": "特别版节日用品", "nameID": 285272, "parentGroupID": 1659 }, "1665": { "description_de": "Thermalbeschichtungen", "description_en-us": "Thermal Coatings", "description_es": "Recubrimientos térmicos.", "description_fr": "Surcouches thermiques", "description_it": "Thermal Coatings", "description_ja": "サーマルコーティング", "description_ko": "열 저항력 코팅", "description_ru": "Термальные покрытия", "description_zh": "热能涂层", "descriptionID": 285353, "hasTypes": 1, "iconID": 1394, "name_de": "Thermalbeschichtungen", "name_en-us": "Thermal Coatings", "name_es": "Recubrimientos térmicos", "name_fr": "Surcouches thermiques", "name_it": "Thermal Coatings", "name_ja": "サーマルコーティング", "name_ko": "열 저항력 코팅", "name_ru": "Термальные покрытия", "name_zh": "热能涂层", "nameID": 285352, "parentGroupID": 540 }, "1666": { "description_de": "Kinetikbeschichtungen", "description_en-us": "Kinetic Coatings", "description_es": "Recubrimientos cinéticos.", "description_fr": "Surcouches cinétiques", "description_it": "Kinetic Coatings", "description_ja": "キネティックコーティング", "description_ko": "키네틱 저항력 코팅", "description_ru": "Кинетические покрытия", "description_zh": "动能涂层", "descriptionID": 285355, "hasTypes": 1, "iconID": 1393, "name_de": "Kinetikbeschichtungen", "name_en-us": "Kinetic Coatings", "name_es": "Recubrimientos cinéticos", "name_fr": "Surcouches cinétiques", "name_it": "Kinetic Coatings", "name_ja": "キネティックコーティング", "name_ko": "키네틱 저항력 코팅", "name_ru": "Кинетические покрытия", "name_zh": "动能涂层", "nameID": 285354, "parentGroupID": 540 }, "1667": { "description_de": "Explosionsbeschichtungen", "description_en-us": "Explosive Coatings", "description_es": "Recubrimientos explosivos.", "description_fr": "Surcouches explosives", "description_it": "Explosive Coatings", "description_ja": "エクスプローシブコーティング", "description_ko": "폭발 저항력 코팅", "description_ru": "Взрывные покрытия", "description_zh": "爆炸涂层", "descriptionID": 285357, "hasTypes": 1, "iconID": 1395, "name_de": "Explosionsbeschichtungen", "name_en-us": "Explosive Coatings", "name_es": "Recubrimientos explosivos", "name_fr": "Surcouches explosives", "name_it": "Explosive Coatings", "name_ja": "エクスプローシブコーティング", "name_ko": "폭발 저항력 코팅", "name_ru": "Взрывные покрытия", "name_zh": "爆炸涂层", "nameID": 285356, "parentGroupID": 540 }, "1668": { "description_de": "EM-Beschichtungen", "description_en-us": "EM Coatings", "description_es": "Recubrimientos electromagnéticos.", "description_fr": "Surcouches EM", "description_it": "EM Coatings", "description_ja": "EMコーティング", "description_ko": "EM 저항력 코팅", "description_ru": "ЭМ-покрытия", "description_zh": "电磁涂层", "descriptionID": 285359, "hasTypes": 1, "iconID": 1396, "name_de": "EM-Beschichtungen", "name_en-us": "EM Coatings", "name_es": "Recubrimientos electromagnéticos", "name_fr": "Surcouches EM", "name_it": "EM Coatings", "name_ja": "EMコーティング", "name_ko": "EM 저항력 코팅", "name_ru": "ЭМ-покрытия", "name_zh": "电磁涂层", "nameID": 285358, "parentGroupID": 540 }, "1669": { "description_de": "Mehrschichtige Panzerungsbeschichtungen", "description_en-us": "Layered Armor Coatings", "description_es": "Recubrimientos de blindaje por capas.", "description_fr": "Surcouches de blindage superposées", "description_it": "Layered Armor Coatings", "description_ja": "積層加工アーマーコーティング", "description_ko": "중첩 장갑 코팅", "description_ru": "Многослойные покрытия брони", "description_zh": "覆层装甲涂层", "descriptionID": 285361, "hasTypes": 1, "iconID": 1030, "name_de": "Mehrschichtige Panzerungsbeschichtungen", "name_en-us": "Layered Armor Coatings", "name_es": "Recubrimientos de blindaje por capas", "name_fr": "Surcouches de blindage superposées", "name_it": "Layered Armor Coatings", "name_ja": "積層加工アーマーコーティング", "name_ko": "중첩 장갑 코팅", "name_ru": "Многослойные покрытия брони", "name_zh": "覆层装甲涂层", "nameID": 285360, "parentGroupID": 14 }, "1670": { "description_de": "Multispektrum-Beschichtungen", "description_en-us": "Multispectrum Coatings", "description_es": "Recubrimientos multiespectro.", "description_fr": "Surcouches multispectres", "description_it": "Multispectrum Coatings", "description_ja": "マルチスペクトルコーティング", "description_ko": "다중스팩트럼 코팅", "description_ru": "Универсальные покрытия", "description_zh": "多谱式涂层", "descriptionID": 285363, "hasTypes": 1, "iconID": 1030, "name_de": "Multispektrum-Beschichtungen", "name_en-us": "Multispectrum Coatings", "name_es": "Recubrimientos multiespectro", "name_fr": "Surcouches multispectres", "name_it": "Multispectrum Coatings", "name_ja": "マルチスペクトルコーティング", "name_ko": "다중스팩트럼 코팅", "name_ru": "Универсальные покрытия", "name_zh": "多谱式涂层", "nameID": 285362, "parentGroupID": 540 }, "1672": { "description_de": "Abwehrplatte – 100mm", "description_en-us": "100mm Armor Plate", "description_es": "Placa de blindaje de 100 mm.", "description_fr": "Plaque de blindage de 100 mm", "description_it": "100mm Armor Plate", "description_ja": "100mmアーマープレート", "description_ko": "100mm 장갑 플레이트입니다.", "description_ru": "Бронеплиты толщиной 100 мм", "description_zh": "100mm装甲附甲板", "descriptionID": 285373, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 100mm", "name_en-us": "100mm Armor Plate", "name_es": "Placa de blindaje de 100 mm", "name_fr": "Plaque de blindage de 100 mm", "name_it": "100mm Armor Plate", "name_ja": "100mmアーマープレート", "name_ko": "100mm 장갑 플레이트", "name_ru": "100 мм", "name_zh": "100mm装甲附甲板", "nameID": 285368, "parentGroupID": 133 }, "1673": { "description_de": "Abwehrplatte – 200mm", "description_en-us": "200mm Armor Plate", "description_es": "Placa de blindaje de 200 mm.", "description_fr": "Plaque de blindage de 200 mm", "description_it": "200mm Armor Plate", "description_ja": "200mmアーマープレート", "description_ko": "200mm 장갑 플레이트", "description_ru": "Бронеплиты толщиной 200 мм", "description_zh": "200mm装甲附甲板", "descriptionID": 285372, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 200mm", "name_en-us": "200mm Armor Plate", "name_es": "Placa de blindaje de 200 mm", "name_fr": "Plaque de blindage de 200 mm", "name_it": "200mm Armor Plate", "name_ja": "200mmアーマープレート", "name_ko": "200mm 장갑 플레이트", "name_ru": "200 мм", "name_zh": "200mm装甲附甲板", "nameID": 285367, "parentGroupID": 133 }, "1674": { "description_de": "Abwehrplatte – 400mm", "description_en-us": "400mm Armor Plate", "description_es": "Placa de blindaje de 400 mm.", "description_fr": "Plaque de blindage de 400 mm", "description_it": "400mm Armor Plate", "description_ja": "400mmアーマープレート", "description_ko": "400mm 장갑 플레이트", "description_ru": "Бронеплиты толщиной 400 мм", "description_zh": "400mm装甲附甲板", "descriptionID": 285371, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 400mm", "name_en-us": "400mm Armor Plate", "name_es": "Placa de blindaje de 400 mm", "name_fr": "Plaque de blindage de 400 mm", "name_it": "400mm Armor Plate", "name_ja": "400mmアーマープレート", "name_ko": "400mm 장갑 플레이트", "name_ru": "400 мм", "name_zh": "400mm装甲附甲板", "nameID": 285366, "parentGroupID": 133 }, "1675": { "description_de": "Abwehrplatte – 800mm", "description_en-us": "800mm Armor Plate", "description_es": "Placa de blindaje 800 mm.", "description_fr": "Plaque de blindage de 800 mm", "description_it": "800mm Armor Plate", "description_ja": "800mmアーマープレート", "description_ko": "800mm 장갑 플레이트", "description_ru": "Бронеплиты толщиной 800 мм", "description_zh": "800mm装甲附甲板", "descriptionID": 285374, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 800mm", "name_en-us": "800mm Armor Plate", "name_es": "Placa de blindaje de 800 mm", "name_fr": "Plaque de blindage de 800 mm", "name_it": "800mm Armor Plate", "name_ja": "800mmアーマープレート", "name_ko": "800mm 장갑 플레이트", "name_ru": "800 мм", "name_zh": "800mm装甲附甲板", "nameID": 285365, "parentGroupID": 133 }, "1676": { "description_de": "Abwehrplatte – 1600mm", "description_en-us": "1600mm Armor Plate", "description_es": "Placa de blindaje de 1600 mm.", "description_fr": "Plaque de blindage de 1 600 mm", "description_it": "1600mm Armor Plate", "description_ja": "1600mmアーマープレート", "description_ko": "1600mm 장갑 플레이트", "description_ru": "Бронеплиты толщиной 1600 мм", "description_zh": "1600mm装甲附甲板", "descriptionID": 285370, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 1600mm", "name_en-us": "1600mm Armor Plate", "name_es": "Placa de blindaje de 1600 mm", "name_fr": "Plaque de blindage de 1600 mm", "name_it": "1600mm Armor Plate", "name_ja": "1600mmアーマープレート", "name_ko": "1600mm 장갑 플레이트", "name_ru": "1600 мм", "name_zh": "1600mm装甲附甲板", "nameID": 285364, "parentGroupID": 133 }, "1678": { "description_de": "Thermalpanzerungsverstärker", "description_en-us": "Thermal Armor Hardeners", "description_es": "Endurecedores de blindaje térmicos.", "description_fr": "Renforcements de blindage thermique", "description_it": "Thermal Armor Hardeners", "description_ja": "サーマルアーマーハードナー", "description_ko": "내열성 장갑 강화장치", "description_ru": "Системы укрепления брони против действия теплового оружия", "description_zh": "热能装甲增强器", "descriptionID": 285381, "hasTypes": 1, "iconID": 1394, "name_de": "Thermalpanzerungshärter", "name_en-us": "Thermal Armor Hardeners", "name_es": "Endurecedores de blindaje térmicos", "name_fr": "Renforcements de blindage thermique", "name_it": "Thermal Armor Hardeners", "name_ja": "サーマルアーマーハードナー", "name_ko": "내열성 장갑 강화장치", "name_ru": "Антитермические", "name_zh": "热能装甲增强器", "nameID": 285378, "parentGroupID": 535 }, "1679": { "hasTypes": 1, "iconID": 1393, "name_de": "Kinetikpanzerungshärter", "name_en-us": "Kinetic Armor Hardeners", "name_es": "Endurecedores de blindaje cinéticos", "name_fr": "Renforcements de blindage cinétique", "name_it": "Kinetic Armor Hardeners", "name_ja": "キネティックアーマーハードナー", "name_ko": "키네틱 장갑 강화장치", "name_ru": "Антикинетические", "name_zh": "动能装甲增强器", "nameID": 285377, "parentGroupID": 535 }, "1680": { "description_de": "Explosivpanzerungsverstärker", "description_en-us": "Explosive Armor Hardeners", "description_es": "Endurecedores de blindaje explosivos.", "description_fr": "Renforcements de blindage explosif", "description_it": "Explosive Armor Hardeners", "description_ja": "エクスプローシブアーマーハードナー", "description_ko": "방폭성 장갑 강화장치", "description_ru": "Системы укрепления брони против действия взрыва", "description_zh": "爆炸装甲增强器", "descriptionID": 285380, "hasTypes": 1, "iconID": 1395, "name_de": "Explosionspanzerungshärter", "name_en-us": "Explosive Armor Hardeners", "name_es": "Endurecedores de blindaje explosivos", "name_fr": "Renforcements de blindage explosif", "name_it": "Explosive Armor Hardeners", "name_ja": "エクスプローシブアーマーハードナー", "name_ko": "방폭성 장갑 강화장치", "name_ru": "Антифугасные", "name_zh": "爆炸装甲增强器", "nameID": 285376, "parentGroupID": 535 }, "1681": { "description_de": "EM-Panzerungsverstärker", "description_en-us": "EM Armor Hardeners", "description_es": "Endurecedores de blindaje electromagnéticos.", "description_fr": "Renforcements de blindage électromagnétique", "description_it": "EM Armor Hardeners", "description_ja": "EMアーマーハードナー", "description_ko": "EM 장갑 강화장치", "description_ru": "Системы укрепления брони против действия ЭМ-оружия", "description_zh": "电磁装甲增强器", "descriptionID": 285382, "hasTypes": 1, "iconID": 1396, "name_de": "EM-Panzerungshärter", "name_en-us": "EM Armor Hardeners", "name_es": "Endurecedores de blindaje electromagnéticos", "name_fr": "Renforcements de blindage EM", "name_it": "EM Armor Hardeners", "name_ja": "EMアーマーハードナー", "name_ko": "EM 장갑 강화장치", "name_ru": "Анти-ЭМ", "name_zh": "电磁装甲增强器", "nameID": 285379, "parentGroupID": 535 }, "1682": { "description_de": "Spannungsunterstützte explosive Membranen", "description_en-us": "Explosive Energized Membranes", "description_es": "Membranas energizadas explosivas.", "description_fr": "Membranes énergétiques explosives", "description_it": "Explosive Energized Membranes", "description_ja": "エクスプローシブ電磁加工装甲", "description_ko": "폭발 저항력 에너지 멤브레인", "description_ru": "Заряжаемые взрывные мембраны", "description_zh": "爆炸电压薄膜", "descriptionID": 285386, "hasTypes": 1, "iconID": 1395, "name_de": "Spannungsunterstützte explosive Membranen", "name_en-us": "Explosive Energized Membranes", "name_es": "Membranas energizadas explosivas", "name_fr": "Membranes énergétiques explosives", "name_it": "Explosive Energized Membranes", "name_ja": "エクスプローシブ電磁加工装甲", "name_ko": "폭발 저항력 에너지 멤브레인", "name_ru": "Заряжаемые взрывные мембраны", "name_zh": "爆炸电压薄膜", "nameID": 285385, "parentGroupID": 541 }, "1683": { "description_de": "Thermale spannungsunterstützte Membranen", "description_en-us": "Thermal Energized Membranes", "description_es": "Membranas energizadas térmicas.", "description_fr": "Membranes énergétiques thermiques", "description_it": "Thermal Energized Membranes", "description_ja": "サーマル電磁加工装甲", "description_ko": "열 저항력 에너지 멤브레인", "description_ru": "Заряжаемые термальные мембраны", "description_zh": "热能电压薄膜", "descriptionID": 285388, "hasTypes": 1, "iconID": 1394, "name_de": "Thermale spannungsunterstützte Membranen", "name_en-us": "Thermal Energized Membranes", "name_es": "Membranas energizadas térmicas", "name_fr": "Membranes énergétiques thermiques", "name_it": "Thermal Energized Membranes", "name_ja": "サーマル電磁加工装甲", "name_ko": "열 저항력 에너지 멤브레인", "name_ru": "Заряжаемые термальные мембраны", "name_zh": "热能电压薄膜", "nameID": 285387, "parentGroupID": 541 }, "1684": { "description_de": "Spannungsunterstützte EM-Membranen", "description_en-us": "EM Energized Membranes", "description_es": "Membranas energizadas electromagnéticas.", "description_fr": "Membranes énergétiques EM", "description_it": "EM Energized Membranes", "description_ja": "EM電磁加工装甲", "description_ko": "EM 저항력 에너지 멤브레인", "description_ru": "Заряжаемые EM-мембраны", "description_zh": "电磁电压薄膜", "descriptionID": 285390, "hasTypes": 1, "iconID": 1396, "name_de": "Spannungsunterstützte EM-Membranen", "name_en-us": "EM Energized Membranes", "name_es": "Membranas energizadas electromagnéticas", "name_fr": "Membranes énergétiques EM", "name_it": "EM Energized Membranes", "name_ja": "EM電磁加工装甲", "name_ko": "EM 저항력 에너지 멤브레인", "name_ru": "Заряжаемые EM-мембраны", "name_zh": "电磁电压薄膜", "nameID": 285389, "parentGroupID": 541 }, "1685": { "description_de": "Kinetische spannungsunterstützte Membranen", "description_en-us": "Kinetic Energized Membranes", "description_es": "Membranas energizadas cinéticas.", "description_fr": "Membranes énergétiques cinétiques", "description_it": "Kinetic Energized Membranes", "description_ja": "キネティック電磁加工装甲", "description_ko": "키네틱 저항력 에너지 멤브레인", "description_ru": "Заряжаемые кинетические мембраны", "description_zh": "动能电压薄膜", "descriptionID": 285392, "hasTypes": 1, "iconID": 1393, "name_de": "Kinetische spannungsunterstützte Membranen", "name_en-us": "Kinetic Energized Membranes", "name_es": "Membranas energizadas cinéticas", "name_fr": "Membranes énergétiques cinétiques", "name_it": "Kinetic Energized Membranes", "name_ja": "キネティック電磁加工装甲", "name_ko": "키네틱 저항력 에너지 멤브레인", "name_ru": "Заряжаемые кинетические мембраны", "name_zh": "动能电压薄膜", "nameID": 285391, "parentGroupID": 541 }, "1686": { "description_de": "Spannungsunterstützte Multispektrum-Membranen", "description_en-us": "Multispectrum Energized Membranes", "description_es": "Membranas energizadas multiespectro.", "description_fr": "Membranes énergétiques multispectres", "description_it": "Multispectrum Energized Membranes", "description_ja": "マルチスペクトル電磁加工装甲", "description_ko": "다중스팩트럼 에너지 멤브레인", "description_ru": "Заряжаемые универсальные мембраны", "description_zh": "多谱式电压薄膜", "descriptionID": 285394, "hasTypes": 1, "iconID": 2066, "name_de": "Spannungsunterstützte Multispektrum-Membranen", "name_en-us": "Multispectrum Energized Membranes", "name_es": "Membranas energizadas multiespectro", "name_fr": "Membranes énergétiques multispectres", "name_it": "Multispectrum Energized Membranes", "name_ja": "マルチスペクトル電磁加工装甲", "name_ko": "다중스팩트럼 에너지 멤브레인", "name_ru": "Заряжаемые универсальные мембраны", "name_zh": "多谱式电压薄膜", "nameID": 285393, "parentGroupID": 541 }, "1687": { "description_de": "Mehrschichtige spannungsunterstützte Panzerungsmembranen", "description_en-us": "Layered Energized Armor Membranes", "description_es": "Membranas de blindaje energizadas por capas.", "description_fr": "Membranes de blindage énergétiques par couches", "description_it": "Layered Energized Armor Membranes", "description_ja": "積層電磁加工アーマー装甲", "description_ko": "중첩 장갑 에너지 멤브레인", "description_ru": "Многослойные заряжаемые мембраны брони", "description_zh": "覆层电压装甲薄膜", "descriptionID": 285396, "hasTypes": 1, "iconID": 2066, "name_de": "Mehrschichtige spannungsunterstützte Panzerungsmembranen", "name_en-us": "Layered Energized Armor Membranes", "name_es": "Membranas de blindaje energizadas por capas", "name_fr": "Membranes de blindage énergétiques par couches", "name_it": "Layered Energized Armor Membranes", "name_ja": "積層電磁加工アーマー装甲", "name_ko": "중첩 장갑 에너지 멤브레인", "name_ru": "Многослойные заряжаемые мембраны брони", "name_zh": "覆层电压装甲薄膜", "nameID": 285395, "parentGroupID": 14 }, "1688": { "description_de": "Thermalschildverstärker", "description_en-us": "Thermal Shield Amplifiers", "description_es": "Amplificadores de escudo térmicos.", "description_fr": "Amplificateurs de bouclier thermique", "description_it": "Thermal Shield Amplifiers", "description_ja": "サーマルシールド増幅器", "description_ko": "열 저항력 실드 증폭기", "description_ru": "Термальные усилители щитов", "description_zh": "热能护盾增效器", "descriptionID": 285398, "hasTypes": 1, "iconID": 1394, "name_de": "Thermalschildverstärker", "name_en-us": "Thermal Shield Amplifiers", "name_es": "Amplificadores de escudo térmicos", "name_fr": "Amplificateurs de bouclier thermique", "name_it": "Thermal Shield Amplifiers", "name_ja": "サーマルシールド増幅器", "name_ko": "열 저항력 실드 증폭기", "name_ru": "Термальные усилители щитов", "name_zh": "热能护盾增效器", "nameID": 285397, "parentGroupID": 550 }, "1689": { "description_de": "Kinetikschildverstärker", "description_en-us": "Kinetic Shield Amplifiers", "description_es": "Amplificadores de escudo cinéticos.", "description_fr": "Amplificateurs de bouclier cinétique", "description_it": "Kinetic Shield Amplifiers", "description_ja": "キネティックシールド増幅器", "description_ko": "키네틱 저항력 실드 증폭기", "description_ru": "Кинетические усилители щитов", "description_zh": "动能护盾增效器", "descriptionID": 285400, "hasTypes": 1, "iconID": 1393, "name_de": "Kinetikschildverstärker", "name_en-us": "Kinetic Shield Amplifiers", "name_es": "Amplificadores de escudo cinéticos", "name_fr": "Amplificateurs de bouclier cinétique", "name_it": "Kinetic Shield Amplifiers", "name_ja": "キネティックシールド増幅器", "name_ko": "키네틱 저항력 실드 증폭기", "name_ru": "Кинетические усилители щитов", "name_zh": "动能护盾增效器", "nameID": 285399, "parentGroupID": 550 }, "1690": { "description_de": "Explosionsschildverstärker", "description_en-us": "Explosive Shield Amplifiers", "description_es": "Amplificadores de escudo explosivos.", "description_fr": "Amplificateur de bouclier explosif", "description_it": "Explosive Shield Amplifiers", "description_ja": "エクスプローシブ・シールド増幅器", "description_ko": "폭발 저항력 실드 증폭기", "description_ru": "Усилители щитов против взрывного урона", "description_zh": "爆炸护盾增效器", "descriptionID": 285402, "hasTypes": 1, "iconID": 1395, "name_de": "Explosionsschildverstärker", "name_en-us": "Explosive Shield Amplifiers", "name_es": "Amplificadores de escudo explosivos", "name_fr": "Amplificateur de bouclier explosif", "name_it": "Explosive Shield Amplifiers", "name_ja": "エクスプローシブ・シールド増幅器", "name_ko": "폭발 저항력 실드 증폭기", "name_ru": "Усилители щитов против взрывного урона", "name_zh": "爆炸护盾增效器", "nameID": 285401, "parentGroupID": 550 }, "1691": { "description_de": "EM-Schildverstärker", "description_en-us": "EM Shield Amplifiers", "description_es": "Amplificadores de escudo electromagnéticos.", "description_fr": "Amplificateurs de bouclier EM", "description_it": "EM Shield Amplifiers", "description_ja": "EMシールド増幅器", "description_ko": "EM 저항력 실드 증폭기", "description_ru": "ЭМ усилители щитов", "description_zh": "电磁护盾增效器", "descriptionID": 285404, "hasTypes": 1, "iconID": 1396, "name_de": "EM-Schildverstärker", "name_en-us": "EM Shield Amplifiers", "name_es": "Amplificadores de escudo electromagnéticos", "name_fr": "Amplificateurs de bouclier EM", "name_it": "EM Shield Amplifiers", "name_ja": "EMシールド増幅器", "name_ko": "EM 저항력 실드 증폭기", "name_ru": "ЭМ усилители щитов", "name_zh": "电磁护盾增效器", "nameID": 285403, "parentGroupID": 550 }, "1692": { "description_de": "Thermalschildverstärker", "description_en-us": "Thermal Shield Hardeners", "description_es": "Endurecedores de escudo térmicos.", "description_fr": "Renforcements de bouclier à résistance thermique", "description_it": "Thermal Shield Hardeners", "description_ja": "サーマルシールドハードナー", "description_ko": "내열성 실드 강화장치", "description_ru": "Антитепловые энергоёмкие модуляторы полей", "description_zh": "热能护盾增强器", "descriptionID": 285407, "hasTypes": 1, "iconID": 1394, "name_de": "Thermalschildhärter", "name_en-us": "Thermal Shield Hardeners", "name_es": "Endurecedores de escudo térmicos", "name_fr": "Renforcements de bouclier thermique", "name_it": "Thermal Shield Hardeners", "name_ja": "サーマルシールドハードナー", "name_ko": "내열성 실드 강화장치", "name_ru": "Антитермические", "name_zh": "热能护盾增强器", "nameID": 285406, "parentGroupID": 553 }, "1693": { "description_de": "Kinetikschildverstärker", "description_en-us": "Kinetic Shield Hardeners", "description_es": "Endurecedores de escudo cinéticos.", "description_fr": "Renforcements de bouclier à résistance cinétique", "description_it": "Kinetic Shield Hardeners", "description_ja": "キネティックシールドハードナー", "description_ko": "키네틱 실드 강화장치", "description_ru": "Антикинетические энергоёмкие модуляторы полей", "description_zh": "动能护盾增强器", "descriptionID": 285409, "hasTypes": 1, "iconID": 1393, "name_de": "Kinetikschildhärter", "name_en-us": "Kinetic Shield Hardeners", "name_es": "Endurecedores de escudo cinéticos", "name_fr": "Renforcements de bouclier cinétique", "name_it": "Kinetic Shield Hardeners", "name_ja": "キネティックシールドハードナー", "name_ko": "키네틱 실드 강화장치", "name_ru": "Антикинетические", "name_zh": "动能护盾增强器", "nameID": 285408, "parentGroupID": 553 }, "1694": { "description_de": "Explosivschildverstärker", "description_en-us": "Explosive Shield Hardeners", "description_es": "Endurecedores de escudo explosivos.", "description_fr": "Renforcements de bouclier à résistance explosive", "description_it": "Explosive Shield Hardeners", "description_ja": "エクスプローシブシールドハードナー", "description_ko": "방폭성 실드 강화장치", "description_ru": "Антивзрывные энергоёмкие модуляторы полей", "description_zh": "爆炸护盾增强器", "descriptionID": 285411, "hasTypes": 1, "iconID": 1395, "name_de": "Explosionsschildhärter", "name_en-us": "Explosive Shield Hardeners", "name_es": "Endurecedores de escudo explosivos", "name_fr": "Renforcements de bouclier explosif", "name_it": "Explosive Shield Hardeners", "name_ja": "エクスプローシブシールドハードナー", "name_ko": "방폭성 실드 강화장치", "name_ru": "Антифугасные", "name_zh": "爆炸护盾增强器", "nameID": 285410, "parentGroupID": 553 }, "1695": { "description_de": "EM-Schildverstärker", "description_en-us": "EM Shield Hardeners", "description_es": "Endurecedores de escudo electromagnéticos.", "description_fr": "Renforcements de bouclier à résistance électromagnétique", "description_it": "EM Shield Hardeners", "description_ja": "EMシールドハードナー", "description_ko": "EM 실드 강화장치", "description_ru": "Анти-ЭМ энергоёмкие модуляторы полей", "description_zh": "电磁护盾增强器", "descriptionID": 285413, "hasTypes": 1, "iconID": 1396, "name_de": "EM-Schildhärter", "name_en-us": "EM Shield Hardeners", "name_es": "Endurecedores de escudo electromagnéticos", "name_fr": "Renforcements de bouclier EM", "name_it": "EM Shield Hardeners", "name_ja": "EMシールドハードナー", "name_ko": "EM 실드 강화장치", "name_ru": "Анти-ЭМ", "name_zh": "电磁护盾增强器", "nameID": 285412, "parentGroupID": 553 }, "1696": { "description_de": "Multispektrum-Schildhärter", "description_en-us": "Multispectrum Shield Hardeners", "description_es": "Endurecedores de escudo multiespectro.", "description_fr": "Renforcements de bouclier multispectre", "description_it": "Multispectrum Shield Hardeners", "description_ja": "マルチスペクトル・シールドハードナー", "description_ko": "다중스팩트럼 실드 강화장치", "description_ru": "Многоспектральные усилители щитов", "description_zh": "多谱式护盾增强器", "descriptionID": 285415, "hasTypes": 1, "iconID": 81, "name_de": "Multispectrum Shield Hardeners", "name_en-us": "Multispectrum Shield Hardeners", "name_es": "Endurecedores de escudo multiespectro", "name_fr": "Renforcements de bouclier multispectre", "name_it": "Multispectrum Shield Hardeners", "name_ja": "マルチスペクトル・シールドハードナー", "name_ko": "다중스팩트럼 실드 강화장치", "name_ru": "Многоспектральные усилители щитов", "name_zh": "多谱式护盾增强器", "nameID": 285414, "parentGroupID": 553 }, "1697": { "description_de": "Blueprints von Mikrosprungantrieben", "description_en-us": "Blueprints of Micro Jump Drives.", "description_es": "Planos de motores de microsalto.", "description_fr": "Plans de construction de propulseurs de microsauts.", "description_it": "Blueprints of Micro Jump Drives.", "description_ja": "マイクロジャンプドライブのブループリント。", "description_ko": "마이크로 점프 드라이브 블루프린트입니다.", "description_ru": "Чертежи маневровых гипердвигателей.", "description_zh": "微型跳跃引擎的蓝图", "descriptionID": 292997, "hasTypes": 1, "iconID": 2703, "name_de": "Mikrosprungantriebe", "name_en-us": "Micro Jump Drives", "name_es": "Motores de microsalto", "name_fr": "Propulseurs de microsauts", "name_it": "Micro Jump Drives", "name_ja": "超小型ジャンプドライブ", "name_ko": "마이크로 점프 드라이브", "name_ru": "Маневровые гипердвигатели", "name_zh": "微型跳跃引擎", "nameID": 286396, "parentGroupID": 252 }, "1698": { "description_de": "Schlachtkreuzer, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Battlecruisers which have been offered to capsuleers on occasion for limited periods.", "description_es": "Cruceros de combate ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Croiseurs de bataille mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Battlecruisers which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された巡洋戦艦", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 배틀크루저입니다.", "description_ru": "Линейные крейсеры, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供克隆飞行员使用的战列巡洋舰。", "descriptionID": 286597, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Schlachtkreuzer", "name_en-us": "Special Edition Battlecruisers", "name_es": "Cruceros de combate de edición especial", "name_fr": "Croiseurs de bataille édition spéciale", "name_it": "Special Edition Battlecruisers", "name_ja": "特別版巡洋戦艦", "name_ko": "배틀크루저", "name_ru": "Малосерийные линейные крейсеры", "name_zh": "特别版战列巡洋舰", "nameID": 286596, "parentGroupID": 1612 }, "1699": { "description_de": "Kreuzer, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_es": "Cruceros ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Croiseurs mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された巡洋艦", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 크루저입니다.", "description_ru": "Крейсеры, предоставлявшиеся капсулерам в течение ограниченного периода времени.", "description_zh": "限时供克隆飞行员使用的巡洋舰。", "descriptionID": 286608, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Kreuzer", "name_en-us": "Special Edition Cruisers", "name_es": "Cruceros de edición especial", "name_fr": "Croiseurs édition spéciale", "name_it": "Special Edition Cruisers", "name_ja": "特別版巡洋艦", "name_ko": "크루저", "name_ru": "Малосерийные крейсеры", "name_zh": "特别版巡洋舰", "nameID": 286607, "parentGroupID": 1612 }, "1700": { "description_de": "Diese Marken können im Niedersicherheitsraum für eine Steigerung des Sicherheitsstatus eingetauscht werden", "description_en-us": "These tags can be turned in, in low-security space, for a boost to security rating", "description_es": "Estas chapas de identificación se pueden entregar, en espacios de seguridad baja, para aumentar el índice de seguridad.", "description_fr": "Ces insignes peuvent être remis, en espace de basse sécurité pour augmenter sa cote de sécurité", "description_it": "These tags can be turned in, in low-security space, for a boost to security rating", "description_ja": "これらのタグをセキュリティが低い宙域に提供すれば、セキュリティレベルが大きく上昇する", "description_ko": "보안 태그를 제출하여 시큐리티 수치를 증가시킬 수 있습니다.", "description_ru": "В системам с низкой СС эти жетоны можно использовать для повышения степени соответствия нормам КОНКОРДа", "description_zh": "这些铭牌可以在低安星系兑换来安全等级的提升", "descriptionID": 287125, "hasTypes": 1, "iconID": 2040, "name_de": "Sicherheitsmarken", "name_en-us": "Security Tags", "name_es": "Chapas de seguridad", "name_fr": "Insignes de sécurité", "name_it": "Security Tags", "name_ja": "セキュリティタグ", "name_ko": "보안 태그", "name_ru": "Идентификаторы безопасности", "name_zh": "安全等级铭牌", "nameID": 287124, "parentGroupID": 19 }, "1701": { "description_de": "Blueprints von Persönlicher-Hangar-Arrays", "description_en-us": "Blueprints of Personal Hangar Arrays.", "description_es": "Planos de dársenas de hangares personales.", "description_fr": "Plans de construction pour installations de hangar personnel.", "description_it": "Blueprints of Personal Hangar Arrays.", "description_ja": "個人ハンガー施設のブループリント。", "description_ko": "개인 격납고 블루프린트입니다.", "description_ru": "Чертежи личных ангаров.", "description_zh": "个人机库阵列的蓝图。", "descriptionID": 288102, "hasTypes": 1, "iconID": 2703, "name_de": "Persönliche Hangaranlagen", "name_en-us": "Personal Hangar Arrays", "name_es": "Dársenas de hangares personales", "name_fr": "Modules de hangar personnel", "name_it": "Personal Hangar Arrays", "name_ja": "個人ハンガー施設", "name_ko": "개인 격납고", "name_ru": "Персональные ангары", "name_zh": "个人机库阵列", "nameID": 288101, "parentGroupID": 1841 }, "1702": { "description_de": "Eine große Hangar-Struktur für die unproblematische Lagerung von Rochstoffen und Modulen.", "description_en-us": "A large hangar structure, for easy storage of materials and modules.", "description_es": "Una gran estructura de hangar para almacenar fácilmente materiales y módulos.", "description_fr": "Hangar de grande taille simplifiant le stockage du matériel et des modules.", "description_it": "A large hangar structure, for easy storage of materials and modules.", "description_ja": "設置式の大型ハンガー。資源やモジュールの簡易倉庫として使われる。", "description_ko": "대형 격납고 구조물로 자원 및 모듈을 쉽게 보관할 수 있습니다.", "description_ru": "Вместительный ангар для удобного хранения материалов и модулей.", "description_zh": "一座巨型的机库建筑,可方便地对材料和装备进行分类储藏。", "descriptionID": 288104, "hasTypes": 1, "iconID": 2222, "name_de": "Persönliche Hangaranlagen", "name_en-us": "Personal Hangar Arrays", "name_es": "Dársenas de hangares personales", "name_fr": "Modules de hangar personnel", "name_it": "Personal Hangar Arrays", "name_ja": "個人ハンガー施設", "name_ko": "개인 격납고", "name_ru": "Персональные ангары", "name_zh": "个人机库阵列", "nameID": 288103, "parentGroupID": 1285 }, "1703": { "description_de": "Für bestimmte Fraktionen entworfene Schlachtkreuzer.", "description_en-us": "Battlecruisers designed by specific factions.", "description_es": "Cruceros de combate diseñados por facciones específicas.", "description_fr": "Croiseurs de bataille conçus par des factions spécifiques.", "description_it": "Battlecruisers designed by specific factions.", "description_ja": "特定勢力が設計した巡洋戦艦。", "description_ko": "팩션 전용 배틀크루저입니다.", "description_ru": "Модификации линейных крейсеров, используемые различными организациями галактики.", "description_zh": "某些特定势力设计的战列巡洋舰。", "descriptionID": 288168, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktionsschlachtkreuzer", "name_en-us": "Faction Battlecruisers", "name_es": "Cruceros de combate faccionarios", "name_fr": "Croiseurs de bataille de faction", "name_it": "Faction Battlecruisers", "name_ja": "勢力仕様巡洋戦艦", "name_ko": "팩션 배틀크루저", "name_ru": "Пиратские и армейские", "name_zh": "势力战列巡洋舰", "nameID": 288167, "parentGroupID": 1374 }, "1704": { "description_de": "Designs für Navy-Fraktionsschlachtkreuzer.", "description_en-us": "Navy faction battlecruiser designs.", "description_es": "Diseños de cruceros de combate faccionarios de la Armada.", "description_fr": "Modèles de croiseurs de bataille de faction de la Navy.", "description_it": "Navy faction battlecruiser designs.", "description_ja": "海軍仕様の巡洋戦艦。", "description_ko": "해군 팩션의 배틀크루저입니다.", "description_ru": "Чертежи линейных крейсеров флотов основных держав.", "description_zh": "海军势力战列巡洋舰设计。", "descriptionID": 288170, "hasTypes": 1, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍仕様", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 288169, "parentGroupID": 1703 }, "1707": { "description_de": "Blueprints von Modulen zum Scannen von Upgrades", "description_en-us": "Blueprints of scanning upgrade modules", "description_es": "Planos de módulos de mejora de escaneo.", "description_fr": "Plans de construction de modules d'amélioration de scan", "description_it": "Blueprints of scanning upgrade modules", "description_ja": "スキャン強化モジュールのブループリント。", "description_ko": "스캔 업그레이드 모듈 블루프린트입니다.", "description_ru": "Чертежи модулей модернизации сканирующего оборудования", "description_zh": "扫描升级装备蓝图", "descriptionID": 288307, "hasTypes": 1, "iconID": 2703, "name_de": "Scanupgrades", "name_en-us": "Scanning Upgrades", "name_es": "Mejoras de escaneo", "name_fr": "Améliorations de détection", "name_it": "Scanning Upgrades", "name_ja": "スキャン強化", "name_ko": "스캔 업그레이드", "name_ru": "Улучшения разведсистем", "name_zh": "扫描升级", "nameID": 288306, "parentGroupID": 1710 }, "1708": { "description_de": "Module die Scanleistung von Raumschiffen verbessern oder überhaupt ermöglichen", "description_en-us": "Modules that give or improve scanning capabilities of spaceships", "description_es": "Módulos que proporcionan a las naves espaciales capacidades de escaneo o las mejoran.", "description_fr": "Modules qui donnent à un vaisseau ses capacités de détection ou qui les augmentent", "description_it": "Modules that give or improve scanning capabilities of spaceships", "description_ja": "艦船でスキャン機能を利用可能にしたり、機能を向上させたりするモジュール", "description_ko": "함선 스캐너 관련 모듈입니다.", "description_ru": "Оборудование, необходимое для поиска сигналов в космосе", "description_zh": "赋予或增强舰船扫描能力的装备", "descriptionID": 288309, "hasTypes": 0, "iconID": 107, "name_de": "Scanausrüstung", "name_en-us": "Scanning Equipment", "name_es": "Equipo de escaneo", "name_fr": "Appareils de détection", "name_it": "Scanning Equipment", "name_ja": "スキャン装備", "name_ko": "스캔 장비", "name_ru": "Поисковое оборудование", "name_zh": "扫描设备", "nameID": 288308, "parentGroupID": 9 }, "1709": { "description_de": "Module, die das Scannen verändern", "description_en-us": "Modules that modify scanning", "description_es": "Módulos que modifican el escaneo.", "description_fr": "Modules de modification du scan", "description_it": "Modules that modify scanning", "description_ja": "スキャン性能を調整するモジュール", "description_ko": "스캔 성능을 개조하는 모듈입니다.", "description_ru": "Модули, модифицирующие сканирование", "description_zh": "扫描改装装备", "descriptionID": 288311, "hasTypes": 1, "iconID": 21025, "name_de": "Scanupgrades", "name_en-us": "Scanning Upgrades", "name_es": "Mejoras de escaneo", "name_fr": "Améliorations de détection", "name_it": "Scanning Upgrades", "name_ja": "スキャン強化", "name_ko": "스캔 업그레이드", "name_ru": "Улучшения разведсистем", "name_zh": "扫描升级件", "nameID": 288310, "parentGroupID": 1708 }, "1710": { "description_de": "Scanausrüstung", "description_en-us": "Scanning equipment", "description_es": "Equipo de escaneo.", "description_fr": "Appareils de détection", "description_it": "Scanning equipment", "description_ja": "スキャン装備", "description_ko": "스캔 장비", "description_ru": "Оборудование для сканирования", "description_zh": "扫描设备", "descriptionID": 288472, "hasTypes": 0, "iconID": 2703, "name_de": "Scanausrüstung", "name_en-us": "Scanning Equipment", "name_es": "Equipo de escaneo", "name_fr": "Appareils de détection", "name_it": "Scanning Equipment", "name_ja": "スキャン装備", "name_ko": "스캔 장비", "name_ru": "Поисковое оборудование", "name_zh": "扫描设备", "nameID": 288471, "parentGroupID": 209 }, "1711": { "description_de": "Abbauausrüstung", "description_en-us": "Harvesting equipment", "description_es": "Equipo de recolección.", "description_fr": "Appareils de collecte", "description_it": "Harvesting equipment", "description_ja": "採掘装備", "description_ko": "하베스팅 장비입니다.", "description_ru": "Оборудование для добычи газа и льда", "description_zh": "采集设备", "descriptionID": 288474, "hasTypes": 0, "iconID": 2703, "name_de": "Abbauausrüstung", "name_en-us": "Harvest Equipment", "name_es": "Equipo de recolección", "name_fr": "Équipement de collecte", "name_it": "Harvest Equipment", "name_ja": "採掘装備", "name_ko": "하베스팅 장비", "name_ru": "Добывающее оборудование", "name_zh": "采集设备", "nameID": 288473, "parentGroupID": 209 }, "1712": { "description_de": "Blueprints von Bergungsmodulen.", "description_en-us": "Blueprints of salvager modules.", "description_es": "Planos de módulos de recuperadores.", "description_fr": "Plans de construction de modules de récupération.", "description_it": "Blueprints of salvager modules.", "description_ja": "サルベージモジュールのブループリント。", "description_ko": "샐비지 모듈 블루프린트입니다.", "description_ru": "Чертежи демонтажных модулей.", "description_zh": "打捞装备蓝图。", "descriptionID": 288476, "hasTypes": 1, "iconID": 2703, "name_de": "Bergungsmodule", "name_en-us": "Salvagers", "name_es": "Recuperadores", "name_fr": "Récupérateurs", "name_it": "Salvagers", "name_ja": "サルベージャー", "name_ko": "샐비저", "name_ru": "Демонтажные модули", "name_zh": "打捞器", "nameID": 288475, "parentGroupID": 1711 }, "1713": { "description_de": "Module die Bergungsleistung von Raumschiffen verbessern oder überhaupt ermöglichen", "description_en-us": "Modules that give or improve harvesting capabilities of spaceships", "description_es": "Módulos que proporcionan a las naves espaciales capacidades de recolección o las mejoran.", "description_fr": "Modules qui donnent à un vaisseau ses capacités de récolte ou qui les augmentent", "description_it": "Modules that give or improve harvesting capabilities of spaceships", "description_ja": "艦船で採取機能を利用可能にしたり、機能を向上させたりするモジュール", "description_ko": "함선에 탑재할 수 있는 하베스팅 모듈입니다.", "description_ru": "Оборудование для добычи сырья и повышения эффективности этой добычи", "description_zh": "赋予或增强舰船采集能力的装备", "descriptionID": 288478, "hasTypes": 0, "iconID": 1061, "name_de": "Abbauausrüstung", "name_en-us": "Harvest Equipment", "name_es": "Equipo de recolección", "name_fr": "Équipement de collecte", "name_it": "Harvest Equipment", "name_ja": "採掘装備", "name_ko": "하베스팅 장비", "name_ru": "Добывающее оборудование", "name_zh": "采集设备", "nameID": 288477, "parentGroupID": 9 }, "1715": { "hasTypes": 1, "iconID": 3240, "name_de": "Bergungsmodule", "name_en-us": "Salvagers", "name_es": "Recuperadores", "name_fr": "Récupérateurs", "name_it": "Salvagers", "name_ja": "サルベージャー", "name_ko": "샐비저", "name_ru": "Демонтажные модули", "name_zh": "打捞器", "nameID": 288479, "parentGroupID": 1713 }, "1716": { "description_de": "Blueprints für die Herstellung von Sonden zum Scannen von Monden.", "description_en-us": "Blueprints for building probes for surveying moons.", "description_es": "Planos para crear sondas que permitan inspeccionar lunas.", "description_fr": "Plans de construction de sondes d'inspection lunaire.", "description_it": "Blueprints for building probes for surveying moons.", "description_ja": "衛星調査プローブを製造するためのブループリント。", "description_ko": "위성 탐사 프로브를 제조할 수 있는 블루프린트입니다.", "description_ru": "Чертежи для производства зондов, позволяющих исследовать поверхность лун.", "description_zh": "用于探测卫星的探测器蓝图。", "descriptionID": 288493, "hasTypes": 1, "iconID": 2703, "name_de": "Vermessungssondenwerfer", "name_en-us": "Survey Probe Launchers", "name_es": "Lanzasondas de prospección", "name_fr": "Lanceurs de sonde d'inspection", "name_it": "Survey Probe Launchers", "name_ja": "衛星調査プローブランチャー", "name_ko": "조사 프로브 런처", "name_ru": "Пусковые установки лунных зондов", "name_zh": "测量探测器发射器", "nameID": 288492, "parentGroupID": 1710 }, "1717": { "description_de": "Sonden für das Scannen von Monden.", "description_en-us": "Probes for surveying moons.", "description_es": "Sondas para inspeccionar lunas.", "description_fr": "Sondes d'inspection lunaire.", "description_it": "Probes for surveying moons.", "description_ja": "衛星を調査するためのプローブ。", "description_ko": "위성 탐사 프로브입니다.", "description_ru": "Зонды для исследования поверхности лун.", "description_zh": "探测卫星的探测器。", "descriptionID": 288495, "hasTypes": 1, "iconID": 2677, "name_de": "Vermessungssondenwerfer", "name_en-us": "Survey Probe Launchers", "name_es": "Lanzasondas de prospección", "name_fr": "Lanceurs de sonde d'inspection", "name_it": "Survey Probe Launchers", "name_ja": "衛星調査プローブランチャー", "name_ko": "조사 프로브 런처", "name_ru": "Пусковые установки лунных зондов", "name_zh": "测量探测器发射器", "nameID": 288494, "parentGroupID": 1708 }, "1718": { "description_de": "Module, die alte oder moderne Computersysteme in Erkundungsstätten untersuchen.", "description_en-us": "Modules that analyze old or recent computer systems in exploration sites.", "description_es": "Módulos que analizan sistemas informáticos antiguos o recientes en zonas de exploración.", "description_fr": "Modules permettant d'analyser des systèmes informatiques anciens ou récents dans les sites d'exploration.", "description_it": "Modules that analyze old or recent computer systems in exploration sites.", "description_ja": "探索サイトにある古代や現代のコンピュータシステムを分析するモジュール。", "description_ko": "탐사 사이트의 컴퓨터 시스템을 분석하기 위한 모듈입니다.", "description_ru": "Модули, позволяющие анализировать старые и новые компьютерные системы в точках исследования.", "description_zh": "对探索地点中的新旧计算机系统进行分析的装备。", "descriptionID": 288504, "hasTypes": 1, "iconID": 2856, "name_de": "Analysegeräte", "name_en-us": "Analyzers", "name_es": "Analizadores", "name_fr": "Analyseurs", "name_it": "Analyzers", "name_ja": "アナライザー", "name_ko": "분석기", "name_ru": "Анализаторы", "name_zh": "分析仪", "nameID": 288503, "parentGroupID": 1708 }, "1719": { "description_de": "Blueprints von Panzerausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Armor Rigs.", "description_es": "Planos de complementos capitales de blindajes", "description_fr": "Plans de construction de modules d'optimisation de blindage d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Armor Rigs.", "description_ja": "キャピタルアーマーリグのブループリント。", "description_ko": "캐피탈 장갑 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей брони КБТ-класса.", "description_zh": "各种旗舰级装甲改装件的蓝图。", "descriptionID": 288770, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Panzerungsmodifikationen", "name_en-us": "Capital Armor Rigs", "name_es": "Complementos capitales de blindaje", "name_fr": "Modifications de blindage capitales", "name_it": "Capital Armor Rigs", "name_ja": "キャピタルアーマーリグ", "name_ko": "캐피탈 함선 장갑 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级装甲改装件", "nameID": 288769, "parentGroupID": 944 }, "1720": { "description_de": "Blueprints von astronautischer Ausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Astronautic Rigs.", "description_es": "Planos de complementos capitales de astronáutica.", "description_fr": "Plans de construction de modules d'optimisation astronautiques d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Astronautic Rigs.", "description_ja": "キャピタル宇宙航行リグのブループリント。", "description_ko": "캐피탈 항법 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей астронавигационных систем КБТ-класса.", "description_zh": "各种旗舰级航天技术改装件的蓝图。", "descriptionID": 288778, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Astronautische Modifikationen", "name_en-us": "Capital Astronautic Rigs", "name_es": "Complementos capitales de astronáutica", "name_fr": "Modifications astronautiques capitales", "name_it": "Capital Astronautic Rigs", "name_ja": "キャピタル宇宙航行リグ", "name_ko": "캐피탈 항법 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级航天技术改装件", "nameID": 288777, "parentGroupID": 945 }, "1721": { "description_de": "Blueprints von Drohnenausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Drone Rigs.", "description_es": "Planos de complementos capitales de drones.", "description_fr": "Plans de construction de modules d'optimisation de drones d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Drone Rigs.", "description_ja": "キャピタルドローンリグのブループリント。", "description_ko": "캐피탈 드론 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей для управления дронами КБТ-класса.", "description_zh": "各种旗舰级无人机改装件的蓝图。", "descriptionID": 288783, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Drohnenmodifikationen", "name_en-us": "Capital Drone Rigs", "name_es": "Complementos capitales de drones", "name_fr": "Modifications de drone capitales", "name_it": "Capital Drone Rigs", "name_ja": "キャピタルドローンリグ", "name_ko": "캐피탈 드론 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级无人机改装件", "nameID": 288782, "parentGroupID": 946 }, "1723": { "description_de": "Blueprints von Elektronik-Überlegenheitsausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Electronics Superiority Rigs.", "description_es": "Planos de complementos capitales de superioridad electrónica.", "description_fr": "Plans de construction de modules d'optimisation de supériorité électronique d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Electronics Superiority Rigs.", "description_ja": "キャピタル高性能エレクトロニクスリグのブループリント。", "description_ko": "캐피탈 전자공학 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей систем электронного противодействия КБТ-класса.", "description_zh": "各种旗舰级电子压制改装件的蓝图。", "descriptionID": 288790, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Elektronische Höchstleistungsmodifikationen", "name_en-us": "Capital Electronics Superiority Rigs", "name_es": "Complementos capitales de superioridad electrónica", "name_fr": "Modifications de supériorité électronique", "name_it": "Capital Electronics Superiority Rigs", "name_ja": "キャピタル高性能エレクトロニクスリグ", "name_ko": "캐피탈 전자공학 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级电子压制改装件", "nameID": 288789, "parentGroupID": 948 }, "1724": { "description_de": "Blueprints von Energieversorgungsausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Energy Grid Rigs.", "description_es": "Planos de complementos capitales de sistemas de energía.", "description_fr": "Plans de construction de modules d'optimisation de réseau d'alimentation d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Energy Grid Rigs.", "description_ja": "キャピタルエネルギー回路リグのブループリント。", "description_ko": "캐피탈 에너지그리드 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей энергосетей КБТ-класса.", "description_zh": "各种旗舰级能量栅格改装件的蓝图。", "descriptionID": 288792, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Modifikationen für Ingenieurwesen", "name_en-us": "Capital Engineering Rigs", "name_es": "Complementos capitales de ingeniería", "name_fr": "Modifications d'ingénierie capitales", "name_it": "Capital Engineering Rigs", "name_ja": "キャピタルエンジニアリングリグ", "name_ko": "캐피탈 엔지니어링 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级工程改装件", "nameID": 288791, "parentGroupID": 949 }, "1725": { "description_de": "Blueprints von Energiewaffen-Ausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Energy Weapon Rigs.", "description_es": "Planos de complementos capitales de armas de energía.", "description_fr": "Plans de construction de modules d'optimisation d'arme à énergie d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Energy Weapon Rigs.", "description_ja": "キャピタルエネルギー兵器リグのブループリント。", "description_ko": "캐피탈 에너지 무기 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей энергетических орудий КБТ-класса.", "description_zh": "各种旗舰级能量武器改装件的蓝图。", "descriptionID": 288794, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Energiewaffenmodifikationen", "name_en-us": "Capital Energy Weapon Rigs", "name_es": "Complementos capitales de armas de energía", "name_fr": "Modifications d'arme à énergie capitales", "name_it": "Capital Energy Weapon Rigs", "name_ja": "キャピタルエネルギー兵器リグ", "name_ko": "캐피탈 에너지 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级能量武器改装件", "nameID": 288793, "parentGroupID": 950 }, "1726": { "description_de": "Blueprints von Hybridwaffen-Ausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Hybrid Weapon Rigs.", "description_es": "Planos de complementos capitales de armas híbridas.", "description_fr": "Plans de construction de modules d'optimisation d'arme hybride d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Hybrid Weapon Rigs.", "description_ja": "キャピタルハイブリッド兵器リグのブループリント。", "description_ko": "캐피탈 하이브리드 무기 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей гибридных орудий КБТ-класса.", "description_zh": "各种旗舰级混合武器改装件的蓝图。", "descriptionID": 288796, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Hybridwaffenmodifikationen", "name_en-us": "Capital Hybrid Weapon Rigs", "name_es": "Complementos capitales de armas híbridas", "name_fr": "Modifications d'arme hybride capitales", "name_it": "Capital Hybrid Weapon Rigs", "name_ja": "キャピタルハイブリッド兵器リグ", "name_ko": "캐피탈 하이브리드 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级混合武器改装件", "nameID": 288795, "parentGroupID": 951 }, "1727": { "description_de": "Blueprints von Lenkwaffenwerfer-Ausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Missile Launcher Rigs.", "description_es": "Planos de complementos capitales de lanzamisiles.", "description_fr": "Plans de construction de modules d'optimisation de lance-missiles d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Missile Launcher Rigs.", "description_ja": "キャピタルミサイルランチャーリグのブループリント。", "description_ko": "캐피탈 미사일 런처 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей пусковых установок КБТ-класса.", "description_zh": "各种旗舰级导弹发射器改装件的蓝图。", "descriptionID": 288798, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Lenkwaffenwerfer-Modifikationen", "name_en-us": "Capital Missile Launcher Rigs", "name_es": "Complementos capitales de lanzamisiles", "name_fr": "Modifications de lance-missiles capitales", "name_it": "Capital Missile Launcher Rigs", "name_ja": "キャピタルミサイル兵器リグ", "name_ko": "캐피탈 미사일 런처 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级导弹发射器改装件", "nameID": 288797, "parentGroupID": 952 }, "1728": { "description_de": "Blueprints von Projektilwaffen-Ausrüstung der Capital-Klasse.", "description_en-us": "Blueprints of Capital Projectile Weapon Rigs.", "description_es": "Planos de complementos capitales de armas de proyectiles.", "description_fr": "Plans de construction de modules d'optimisation d'arme à projectiles d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Projectile Weapon Rigs.", "description_ja": "キャピタルプロジェクタイル兵器リグのブループリント。", "description_ko": "캐피탈 발사체 무기 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей баллистических орудий КБТ-класса.", "description_zh": "各种旗舰级射弹武器改装件的蓝图。", "descriptionID": 288800, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Projektilwaffenmodifikationen", "name_en-us": "Capital Projectile Weapon Rigs", "name_es": "Complementos capitales de armas de proyectiles", "name_fr": "Modifications d'arme à projectiles capitales", "name_it": "Capital Projectile Weapon Rigs", "name_ja": "キャピタルプロジェクタイル兵器リグ", "name_ko": "캐피탈 발사체 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级射弹武器改装件", "nameID": 288799, "parentGroupID": 953 }, "1729": { "description_de": "Blueprints von Schildausrüstungen der Capital-Klasse.", "description_en-us": "Blueprints of Capital Shield Rigs.", "description_es": "Planos de complementos capitales de escudos.", "description_fr": "Plans de construction de modules d'optimisation de bouclier d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Shield Rigs.", "description_ja": "キャピタルシールドリグのブループリント。", "description_ko": "캐피탈 실드 리그 블루프린트입니다.", "description_ru": "Чертежи импромодулей щитов КБТ-класса.", "description_zh": "各种旗舰级护盾改装件的蓝图。", "descriptionID": 288802, "hasTypes": 1, "iconID": 2703, "name_de": "Capital Schildmodifikationen", "name_en-us": "Capital Shield Rigs", "name_es": "Complementos capitales de escudo", "name_fr": "Modifications de bouclier capitales", "name_it": "Capital Shield Rigs", "name_ja": "キャピタルシールドリグ", "name_ko": "캐피탈 실드 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级护盾改装件", "nameID": 288801, "parentGroupID": 954 }, "1730": { "description_de": "Modifikationen, die die Panzerung eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's armor.", "description_es": "Modificaciones que afectan al blindaje de una nave capital.", "description_fr": "Modifications qui affectent le blindage d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's armor.", "description_ja": "キャピタル級艦船のアーマーを調整する改造パーツ。", "description_ko": "캐피탈 함선 장갑 리그입니다.", "description_ru": "Модификации для усиления брони кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的装甲改装件。", "descriptionID": 288804, "hasTypes": 1, "iconID": 3194, "name_de": "Capital Panzerungsmodifikationen", "name_en-us": "Capital Armor Rigs", "name_es": "Complementos capitales de blindaje", "name_fr": "Modifications de blindage capitales", "name_it": "Capital Armor Rigs", "name_ja": "キャピタルアーマーリグ", "name_ko": "캐피탈 함선 장갑 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级装甲改装件", "nameID": 288803, "parentGroupID": 956 }, "1731": { "description_de": "Modifikationen, die die Projektilwaffen eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's projectile weapons.", "description_es": "Modificaciones que afectan a las armas de proyectiles de una nave capital.", "description_fr": "Modifications qui affectent les armes à projectiles d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's projectile weapons.", "description_ja": "キャピタル級艦船のプロジェクタイル兵器を調整する改造パーツ。", "description_ko": "캐피탈 함선 발사체 무기 리그입니다.", "description_ru": "Модификации для улучшения работы баллистических орудий кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的射弹武器改装件。", "descriptionID": 288806, "hasTypes": 1, "iconID": 3201, "name_de": "Capital Projektilwaffenmodifikationen", "name_en-us": "Capital Projectile Weapon Rigs", "name_es": "Complementos capitales de armas de proyectiles", "name_fr": "Modifications d'arme à projectiles capitales", "name_it": "Capital Projectile Weapon Rigs", "name_ja": "キャピタルプロジェクタイル兵器リグ", "name_ko": "캐피탈 발사체 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级射弹武器改装件", "nameID": 288805, "parentGroupID": 979 }, "1732": { "description_de": "Modifikationen, die die Schilde eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's shields.", "description_es": "Modificaciones que afectan a los escudos de una nave capital.", "description_fr": "Modifications qui affectent les boucliers d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's shields.", "description_ja": "キャピタル級艦船のシールドを調整する改造パーツ。", "description_ko": "캐피탈 함선 실드 리그입니다.", "description_ru": "Модификации для укрепления щитов кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的护盾改装件。", "descriptionID": 288808, "hasTypes": 1, "iconID": 3193, "name_de": "Capital Schildmodifikationen", "name_en-us": "Capital Shield Rigs", "name_es": "Complementos capitales de escudo", "name_fr": "Modifications de bouclier capitales", "name_it": "Capital Shield Rigs", "name_ja": "キャピタルシールドリグ", "name_ko": "캐피탈 실드 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级护盾改装件", "nameID": 288807, "parentGroupID": 965 }, "1733": { "description_de": "Modifikationen, die die Lenkwaffenwerfer eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's missile launchers.", "description_es": "Modificaciones que afectan a los lanzamisiles de una nave capital.", "description_fr": "Modifications qui affectent les lance-missiles d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's missile launchers.", "description_ja": "キャピタル級艦船のミサイルランチャーを調整する改造パーツ。", "description_ko": "캐피탈 함선 미사일 런처 리그입니다.", "description_ru": "Модификации для улучшения работы пусковых установок кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的导弹发射器改装件。", "descriptionID": 288810, "hasTypes": 1, "iconID": 3197, "name_de": "Capital Lenkwaffenwerfer-Modifikationen", "name_en-us": "Capital Missile Launcher Rigs", "name_es": "Complementos capitales de lanzamisiles", "name_fr": "Modifications de lance-missiles capitales", "name_it": "Capital Missile Launcher Rigs", "name_ja": "キャピタルミサイル兵器リグ", "name_ko": "캐피탈 미사일 런처 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级导弹发射器改装件", "nameID": 288809, "parentGroupID": 964 }, "1734": { "description_de": "Modifikationen, die die Hybridwaffen eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's hybrid weapons.", "description_es": "Modificaciones que afectan a las armas híbridas de una nave capital.", "description_fr": "Modifications qui affectent les armes hybrides d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's hybrid weapons.", "description_ja": "キャピタル級艦船のハイブリッド兵器を調整する改造パーツ。", "description_ko": "캐피탈 함선 하이브리드 무기 리그입니다.", "description_ru": "Модификации для улучшения работы гибридных орудий кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的混合武器改装件。", "descriptionID": 288812, "hasTypes": 1, "iconID": 3202, "name_de": "Capital Hybridwaffenmodifikationen", "name_en-us": "Capital Hybrid Weapon Rigs", "name_es": "Complementos capitales de armas híbridas", "name_fr": "Modifications d'arme hybride capitales", "name_it": "Capital Hybrid Weapon Rigs", "name_ja": "キャピタルハイブリッド兵器リグ", "name_ko": "캐피탈 하이브리드 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级混合武器改装件", "nameID": 288811, "parentGroupID": 963 }, "1735": { "description_de": "Modifikationen, die die Energiewaffen eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's energy weapons.", "description_es": "Modificaciones que afectan a las armas de energía de una nave capital.", "description_fr": "Modifications qui affectent les armes à énergie d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's energy weapons.", "description_ja": "キャピタル級艦船のエネルギー兵器を調整する改造パーツ。", "description_ko": "캐피탈 함선 에너지 무기 리그입니다.", "description_ru": "Модификации для улучшения работы энергетических орудий кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的能量武器改装件。", "descriptionID": 288814, "hasTypes": 1, "iconID": 3203, "name_de": "Capital Energiewaffenmodifikationen", "name_en-us": "Capital Energy Weapon Rigs", "name_es": "Complementos capitales de armas de energía", "name_fr": "Modifications d'arme à énergie capitales", "name_it": "Capital Energy Weapon Rigs", "name_ja": "キャピタルエネルギー兵器リグ", "name_ko": "캐피탈 에너지 무기 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级能量武器改装件", "nameID": 288813, "parentGroupID": 962 }, "1736": { "description_de": "Modifikationen, die die Energieversorgung eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's energy grid.", "description_es": "Modificaciones que afectan al sistema de energía de una nave capital.", "description_fr": "Modifications qui affectent le réseau d’alimentation d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's energy grid.", "description_ja": "キャピタル級艦船のエネルギー回路を調整する改造パーツ。", "description_ko": "캐피탈 함선 에너지그리드 리그입니다.", "description_ru": "Модификации для улучшения работы энергосетей кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的能量栅格改装件。", "descriptionID": 288816, "hasTypes": 1, "iconID": 3195, "name_de": "Capital Modifikationen für Ingenieurwesen", "name_en-us": "Capital Engineering Rigs", "name_es": "Complementos capitales de ingeniería", "name_fr": "Modifications d'ingénierie capitales", "name_it": "Capital Engineering Rigs", "name_ja": "キャピタルエンジニアリングリグ", "name_ko": "캐피탈 엔지니어링 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级工程改装件", "nameID": 288815, "parentGroupID": 961 }, "1737": { "description_de": "Modifikationen, die die Fähigkeit zur elektronischen Kriegsführung eines Raumschiffes der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's electronic warfare capabilities.", "description_es": "Modificaciones que afectan a las capacidades de guerra electrónica de una nave capital.", "description_fr": "Modifications qui affectent les capacités de guerre électronique d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's electronic warfare capabilities.", "description_ja": "キャピタル級艦船の電子戦性能を調整する改造パーツ。", "description_ko": "캐피탈 함선 전자전 리그입니다.", "description_ru": "Модификации для улучшения работы систем электронного противодействия кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的电子战改装件。", "descriptionID": 288818, "hasTypes": 1, "iconID": 3198, "name_de": "Capital Elektronische Höchstleistungsmodifikationen", "name_en-us": "Capital Electronics Superiority Rigs", "name_es": "Complementos capitales de superioridad electrónica", "name_fr": "Modifications de supériorité électronique capitales", "name_it": "Capital Electronics Superiority Rigs", "name_ja": "キャピタル高性能エレクトロニクスリグ", "name_ko": "캐피탈 전자공학 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级电子压制改装件", "nameID": 288817, "parentGroupID": 960 }, "1739": { "description_de": "Modifikationen, die die Drohnen eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's drones.", "description_es": "Modificaciones que afectan a los drones de una nave capital.", "description_fr": "Modifications qui affectent les drones d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's drones.", "description_ja": "キャピタル級艦船のドローン展開性能を調整する改造パーツ。", "description_ko": "캐피탈 함선 드론 리그입니다.", "description_ru": "Модификации для улучшения управления дронами кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的无人机改装件。", "descriptionID": 288822, "hasTypes": 1, "iconID": 3200, "name_de": "Capital Drohnenmodifikationen", "name_en-us": "Capital Drone Rigs", "name_es": "Complementos capitales para drones", "name_fr": "Modifications de drone capitales", "name_it": "Capital Drone Rigs", "name_ja": "キャピタルドローンリグ", "name_ko": "캐피탈 드론 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级无人机改装件", "nameID": 288821, "parentGroupID": 958 }, "1740": { "description_de": "Modifikationen, die die Astronautik eines Raumschiffs der Capital-Klasse betreffen.", "description_en-us": "Modifications that affect a capital starship's astronautics.", "description_es": "Modificaciones que afectan a la astronáutica de una nave capital.", "description_fr": "Modifications qui affectent les éléments astronautiques d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's astronautics.", "description_ja": "キャピタル級艦船の航行性能を調整する改造パーツ。", "description_ko": "캐피탈 함선 항법 리그입니다.", "description_ru": "Модификации для улучшения астронавигации кораблей большого тоннажа.", "description_zh": "旗舰级舰船所用的航天技术改装件。", "descriptionID": 288824, "hasTypes": 1, "iconID": 3196, "name_de": "Capital Astronautische Modifikationen", "name_en-us": "Capital Astronautic Rigs", "name_es": "Complementos capitales de astronáutica", "name_fr": "Modifications astronautiques capitales", "name_it": "Capital Astronautic Rigs", "name_ja": "キャピタル宇宙航行リグ", "name_ko": "캐피탈 항법 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级航天技术改装件", "nameID": 288823, "parentGroupID": 957 }, "1745": { "description_de": "Skills zum effektiven Schutz der Integrität der Raumschiffstruktur", "description_en-us": "Skills pertaining to efficiently protecting the structural integrity of spaceships", "description_es": "Habilidades relacionadas con la protección eficiente de la integridad estructural de las naves.", "description_fr": "Compétences relatives à la protection efficace de l'intégrité structurelle des vaisseaux", "description_it": "Skills pertaining to efficiently protecting the structural integrity of spaceships", "description_ja": "効率よく艦船を分解から守るスキル", "description_ko": "선체 내구도를 강화하는 스킬입니다.", "description_ru": "Навыки, необходимые для эффективного сохранения физической целостности корабля", "description_zh": "有效地保护舰船结构完整的技能", "descriptionID": 288863, "hasTypes": 1, "iconID": 33, "name_de": "Panzerung", "name_en-us": "Armor", "name_es": "Blindaje", "name_fr": "Blindage", "name_it": "Armor", "name_ja": "アーマー", "name_ko": "장갑", "name_ru": "Укрепление брони", "name_zh": "装甲", "nameID": 288862, "parentGroupID": 150 }, "1746": { "description_de": "Skills zur Verwaltung von Boostern, Implantaten und dem Betrieb von Klonen", "description_en-us": "Skills pertaining to managing boosters, implants and clone operations", "description_es": "Habilidades relacionadas con la gestión de operaciones con potenciadores, implantes y clones.", "description_fr": "Compétences relatives à la gestion des boosters, implants et aux opérations de clonage", "description_it": "Skills pertaining to managing boosters, implants and clone operations", "description_ja": "ブースター、インプラント、クローン操作について管理を行うスキル", "description_ko": "부스터, 임플란트, 클론 관련 스킬입니다.", "description_ru": "Навыки, обучающие обращению с бустерами, имплантатами и клон-телами", "description_zh": "熟练使用增效剂、植入体和克隆体的技能", "descriptionID": 288865, "hasTypes": 1, "iconID": 33, "name_de": "Neuralverbesserung", "name_en-us": "Neural Enhancement", "name_es": "Mejora neuronal", "name_fr": "Amélioration neurale", "name_it": "Neural Enhancement", "name_ja": "神経強化", "name_ko": "신경망 향상", "name_ru": "Подключение нейротехники", "name_zh": "神经增强", "nameID": 288864, "parentGroupID": 150 }, "1747": { "description_de": "Skill zur Verwaltung der Energiebarrieren eines Raumschiffs", "description_en-us": "Skills pertaining to management of a spaceship's energy barriers", "description_es": "Habilidades relacionadas con la gestión de las barreras de energía de una nave.", "description_fr": "Compétences relatives à la gestion des barrières énergétiques d'un vaisseau spatial", "description_it": "Skills pertaining to management of a spaceship's energy barriers", "description_ja": "艦船のシールドを管理するスキル", "description_ko": "함선 실드 관련 스킬입니다.", "description_ru": "Навыки, необходимые для эффективного управления защитными силовыми полями корабля", "description_zh": "管理舰船能量障壁的技能", "descriptionID": 288867, "hasTypes": 1, "iconID": 33, "name_de": "Schilde", "name_en-us": "Shields", "name_es": "Escudos", "name_fr": "Boucliers", "name_it": "Shields", "name_ja": "シールド", "name_ko": "실드", "name_ru": "Укрепление щитов", "name_zh": "护盾", "nameID": 288866, "parentGroupID": 150 }, "1748": { "description_de": "Skill zur Verwaltung der Sensor- und Nachführungssysteme eines Raumschiffs", "description_en-us": "Skills pertaining to management of a spaceship's sensor and tracking systems", "description_es": "Habilidades relacionadas con la gestión de los sistemas de rastreo y sensores de una nave.", "description_fr": "Compétences relatives à la gestion des détecteurs et des systèmes de poursuite d'un vaisseau spatial", "description_it": "Skills pertaining to management of a spaceship's sensor and tracking systems", "description_ja": "艦船のセンサーおよびトラッキングシステムを管理するスキル", "description_ko": "함선 센서 및 트래킹 시스템 관련 스킬입니다.", "description_ru": "Навыки, необходимые для управления сенсорными системами и системами целеуказания межзвёздных кораблей", "description_zh": "管理舰船的感应器和跟踪系统的技能", "descriptionID": 288870, "hasTypes": 1, "iconID": 33, "name_de": "Zielaufschaltung", "name_en-us": "Targeting", "name_es": "Adquisición de objetivos", "name_fr": "Ciblage", "name_it": "Targeting", "name_ja": "ターゲット", "name_ko": "타겟팅", "name_ru": "Целеуказание", "name_zh": "锁定系统", "nameID": 288869, "parentGroupID": 150 }, "1761": { "description_de": "Zielaufschaltungsimplantate", "description_en-us": "Targeting Implants", "description_es": "Implantes de adquisición de objetivos.", "description_fr": "Implants de ciblage", "description_it": "Targeting Implants", "description_ja": "ターゲットインプラント", "description_ko": "타겟팅 임플란트", "description_ru": "Имлантаты для улучшения целеуказания", "description_zh": "锁定系统植入体", "descriptionID": 288918, "hasTypes": 0, "iconID": 2224, "name_de": "Zielerfassungsimplantate", "name_en-us": "Targeting Implants", "name_es": "Implantes de adquisición de objetivos", "name_fr": "Implants de ciblage", "name_it": "Targeting Implants", "name_ja": "ターゲットインプラント", "name_ko": "타겟팅 임플란트", "name_ru": "Целеуказание", "name_zh": "锁定系统植入体", "nameID": 288917, "parentGroupID": 531 }, "1762": { "description_de": "Ressourcenverarbeitungsimplantate", "description_en-us": "Resource Processing Implants", "description_es": "Implantes de procesamiento de recursos.", "description_fr": "Implants de traitement de ressources", "description_it": "Resource Processing Implants", "description_ja": "資源加工インプラント", "description_ko": "자원 정제 임플란트", "description_ru": "Имплантаты для улучшения обработки ресурсов", "description_zh": "资源加工植入体", "descriptionID": 288920, "hasTypes": 0, "iconID": 2224, "name_de": "Ressourcenverarbeitungsimplantate", "name_en-us": "Resource Processing Implants", "name_es": "Implantes de procesamiento de recursos", "name_fr": "Implants de traitement de ressource", "name_it": "Resource Processing Implants", "name_ja": "資源加工インプラント", "name_ko": "자원 정제 임플란트", "name_ru": "Добыча и переработка сырья", "name_zh": "资源加工植入体", "nameID": 288919, "parentGroupID": 531 }, "1763": { "description_de": "Scanimplantate", "description_en-us": "Scanning Implants", "description_es": "Implantes de escaneo.", "description_fr": "Implants de scan", "description_it": "Scanning Implants", "description_ja": "スキャンインプラント", "description_ko": "스캔 임플란트", "description_ru": "Имплантаты для улучшения сканирования", "description_zh": "扫描植入体", "descriptionID": 288922, "hasTypes": 0, "iconID": 2224, "name_de": "Scanimplantate", "name_en-us": "Scanning Implants", "name_es": "Implantes de escaneo", "name_fr": "Implants de balayage", "name_it": "Scanning Implants", "name_ja": "スキャンインプラント", "name_ko": "스캔 임플란트", "name_ru": "Сбор данных", "name_zh": "扫描植入体", "nameID": 288921, "parentGroupID": 531 }, "1764": { "description_de": "Biologische Implantate", "description_en-us": "Biology Implants", "description_es": "Implantes biológicos.", "description_fr": "Implants biologiques", "description_it": "Biology Implants", "description_ja": "生物学関連インプラント", "description_ko": "생물학 임플란트", "description_ru": "Биологические имплантаты", "description_zh": "生物学植入体", "descriptionID": 288924, "hasTypes": 0, "iconID": 2224, "name_de": "Neuralverbesserungsimplantate", "name_en-us": "Neural Enhancement Implants", "name_es": "Implantes de mejora neuronal", "name_fr": "Implants d'amélioration neurale", "name_it": "Neural Enhancement Implants", "name_ja": "神経強化インプラント", "name_ko": "신경망 향상 임플란트", "name_ru": "Подключение нейротехники", "name_zh": "神经增强植入体", "nameID": 288923, "parentGroupID": 531 }, "1765": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем 07", "description_zh": "植入体插槽 07", "descriptionID": 288926, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 288925, "parentGroupID": 1761 }, "1766": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем 08", "description_zh": "植入体插槽 08", "descriptionID": 288928, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 288927, "parentGroupID": 1761 }, "1767": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем 10", "description_zh": "植入体插槽 10", "descriptionID": 288930, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 288929, "parentGroupID": 1762 }, "1768": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем 08", "description_zh": "植入体插槽 08", "descriptionID": 288932, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 288931, "parentGroupID": 1762 }, "1769": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем 07", "description_zh": "植入体插槽 07", "descriptionID": 288934, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 288933, "parentGroupID": 1762 }, "1770": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Имплантаты — разъем 06", "description_zh": "植入体插槽 06", "descriptionID": 288937, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Для разъёма №6", "name_zh": "植入体插槽 06", "nameID": 288936, "parentGroupID": 1763 }, "1771": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Имплантаты — разъем 07", "description_zh": "植入体插槽 07", "descriptionID": 288939, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Для разъёма №7", "name_zh": "植入体插槽 07", "nameID": 288938, "parentGroupID": 1763 }, "1772": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем 08", "description_zh": "植入体插槽 08", "descriptionID": 288941, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 288940, "parentGroupID": 1763 }, "1773": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем 09", "description_zh": "植入体插槽 09", "descriptionID": 288943, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 288942, "parentGroupID": 1763 }, "1774": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем 10", "description_zh": "植入体插槽 10", "descriptionID": 288945, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 288944, "parentGroupID": 1763 }, "1775": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Имплантаты — разъем 08", "description_zh": "植入体插槽 08", "descriptionID": 288949, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Для разъёма №8", "name_zh": "植入体插槽 08", "nameID": 288948, "parentGroupID": 1764 }, "1776": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Имплантаты — разъем 09", "description_zh": "植入体插槽 09", "descriptionID": 288951, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Для разъёма №9", "name_zh": "植入体插槽 09", "nameID": 288950, "parentGroupID": 1764 }, "1777": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Имплантаты — разъем 10", "description_zh": "植入体插槽 10", "descriptionID": 288953, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Для разъёма №10", "name_zh": "植入体插槽 10", "nameID": 288952, "parentGroupID": 1764 }, "1779": { "description_de": "Permanente Veränderung der Ressourcenverarbeitungseinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's resource processing facilities.", "description_es": "Modificación permanente de los sistemas de procesamiento de recursos de una nave.", "description_fr": "Modification permanente des installations de traitement des ressources d'un vaisseau.", "description_it": "Permanent modification of a ship's resource processing facilities.", "description_ja": "船の資源加工設備に据え付ける改造パーツ。", "description_ko": "자원 정제 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу ресурсоперерабатывающих систем корабля.", "description_zh": "资源处理相关设施的永久性改装件。", "descriptionID": 288957, "hasTypes": 0, "iconID": 21057, "name_de": "Ressourcenverarbeitungsmodifikationen", "name_en-us": "Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource", "name_it": "Resource Processing Rigs", "name_ja": "資源加工リグ", "name_ko": "자원 정제 리그", "name_ru": "Модификаторы переработки", "name_zh": "资源加工改装件", "nameID": 288956, "parentGroupID": 1111 }, "1780": { "description_de": "Permanente Veränderung der Scaneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's scanning facilities.", "description_es": "Modificación permanente de los sistemas de escaneo de una nave.", "description_fr": "Modification permanente des installations de détection d'un vaisseau.", "description_it": "Permanent modification of a ship's scanning facilities.", "description_ja": "船のスキャン設備に据え付ける改造パーツ。", "description_ko": "스캔 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем сканирования корабля.", "description_zh": "扫描设备永久性改装件。", "descriptionID": 288959, "hasTypes": 0, "iconID": 21058, "name_de": "Scanmodifikationen", "name_en-us": "Scanning Rigs", "name_es": "Complementos de escaneo", "name_fr": "Modifications de balayage", "name_it": "Scanning Rigs", "name_ja": "スキャンリグ", "name_ko": "스캔 리그", "name_ru": "Модификаторы разведсистем", "name_zh": "扫描改装件", "nameID": 288958, "parentGroupID": 1111 }, "1781": { "description_de": "Permanente Veränderung der Zielaufschaltungseinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's targeting facilities.", "description_es": "Modificación permanente de los sistemas de adquisición de objetivos de la nave.", "description_fr": "Modification permanente des installations de ciblage d'un vaisseau.", "description_it": "Permanent modification of a ship's targeting facilities.", "description_ja": "船のターゲット装置に据え付ける改造パーツ。", "description_ko": "타겟팅 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем целеуказания корабля.", "description_zh": "锁定设备永久性改装件。", "descriptionID": 288961, "hasTypes": 0, "iconID": 21059, "name_de": "Zielerfassungsmodifikationen", "name_en-us": "Targeting Rigs", "name_es": "Complementos de adquisición de objetivos", "name_fr": "Modifications de ciblage", "name_it": "Targeting Rigs", "name_ja": "ターゲットリグ", "name_ko": "타겟팅 리그", "name_ru": "Модификаторы захвата целей", "name_zh": "锁定系统改装件", "nameID": 288960, "parentGroupID": 1111 }, "1782": { "description_de": "Modifikationen, welche die Ressourcenverarbeitung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's resource processing.", "description_es": "Modificaciones que afectan al procesamiento de recursos de una nave pequeña.", "description_fr": "Modifications qui affectent le traitement des ressources d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's resource processing.", "description_ja": "小型宇宙船の資源加工性能を調整する改造パーツ。", "description_ko": "소형 함선 자원 정제 관련 리그입니다.", "description_ru": "Модификации для улучшения переработки ресурсов на кораблях малого размера.", "description_zh": "小型舰船所用的资源处理系统改装件。", "descriptionID": 288963, "hasTypes": 1, "iconID": 21057, "name_de": "Kleine Ressourcenverarbeitungsmodifikationen", "name_en-us": "Small Resource Processing Rigs", "name_es": "Complementos pequeños de procesamiento de recursos", "name_fr": "Petites modifications de traitement de ressource", "name_it": "Small Resource Processing Rigs", "name_ja": "小型資源加工リグ", "name_ko": "소형 자원 정제 리그", "name_ru": "Малые", "name_zh": "小型资源加工改装件", "nameID": 288962, "parentGroupID": 1779 }, "1783": { "description_de": "Modifikationen, welche die Ressourcenverarbeitung mittelgroßer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a medium starship's resource processing.", "description_es": "Modificaciones que afectan al procesamiento de recursos de una nave mediana.", "description_fr": "Modifications qui affectent le traitement des ressources d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's resource processing.", "description_ja": "中型宇宙船の資源加工性能を調整する改造パーツ。", "description_ko": "중형 함선의 자원 정제 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения переработки ресурсов на кораблях среднего размера.", "description_zh": "中型舰船所用的资源处理系统改装件。", "descriptionID": 288965, "hasTypes": 1, "iconID": 21057, "name_de": "Mittlere Ressourcenverarbeitungsmodifikationen", "name_en-us": "Medium Resource Processing Rigs", "name_es": "Complementos medianos de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource intermédiaires", "name_it": "Medium Resource Processing Rigs", "name_ja": "中型資源加工リグ", "name_ko": "중형 자원 정제 리그", "name_ru": "Средние", "name_zh": "中型资源加工改装件", "nameID": 288964, "parentGroupID": 1779 }, "1784": { "description_de": "Modifikationen, welche die Ressourcenverarbeitung großer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a large starship's resource processing.", "description_es": "Modificaciones que afectan al procesamiento de recursos de una nave grande.", "description_fr": "Modifications qui affectent le traitement des ressources d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's resource processing.", "description_ja": "大型宇宙船の資源加工性能を調整する改造パーツ。", "description_ko": "대형 함선의 자원 정제 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения переработки ресурсов на кораблях крупного размера.", "description_zh": "大型舰船所用的资源处理系统改装件。", "descriptionID": 288967, "hasTypes": 1, "iconID": 21057, "name_de": "Große Ressourcenverarbeitungsmodifikationen", "name_en-us": "Large Resource Processing Rigs", "name_es": "Complementos grandes de procesamiento de recursos", "name_fr": "Grandes modifications de traitement de ressource", "name_it": "Large Resource Processing Rigs", "name_ja": "大型資源加工リグ", "name_ko": "대형 자원 정제 리그", "name_ru": "Большие", "name_zh": "大型资源加工改装件", "nameID": 288966, "parentGroupID": 1779 }, "1785": { "description_de": "Modifikationen, welche die Ressourcenverarbeitung von Capital-Raumschiffen betreffen.", "description_en-us": "Modifications that affect a capital starship's resource processing.", "description_es": "Modificaciones que afectan al procesamiento de recursos de una nave capital.", "description_fr": "Modifications qui affectent le traitement des ressources d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's resource processing.", "description_ja": "キャピタル級宇宙船の資源加工性能を調整する改造パーツ。", "description_ko": "캐피탈 함선의 자원 정제 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения переработки ресурсов на кораблях большого тоннажа.", "description_zh": "旗舰级舰船所用的资源处理系统改装件。", "descriptionID": 288969, "hasTypes": 1, "iconID": 21057, "name_de": "Capital-Ressourcenverarbeitungsmodifikationen", "name_en-us": "Capital Resource Processing Rigs", "name_es": "Complementos capitales de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource capitales", "name_it": "Capital Resource Processing Rigs", "name_ja": "キャピタル資源加工リグ", "name_ko": "캐피탈 자원 정제 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级资源加工改装件", "nameID": 288968, "parentGroupID": 1779 }, "1786": { "description_de": "Modifikationen, welche die Scanleistung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's scanning.", "description_es": "Modificaciones que afectan al escaneo de una nave pequeña.", "description_fr": "Modifications qui affectent le système de détection d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's scanning.", "description_ja": "小型宇宙船のスキャン性能を調整する改造パーツ。", "description_ko": "소형 함선의 스캔 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем сканирования на кораблях малого размера.", "description_zh": "小型舰船所用的扫描系统改装件。", "descriptionID": 288971, "hasTypes": 1, "iconID": 21058, "name_de": "Kleine Scanmodifikationen", "name_en-us": "Small Scanning Rigs", "name_es": "Complementos pequeños de escaneo", "name_fr": "Petites modifications de balayage", "name_it": "Small Scanning Rigs", "name_ja": "小型スキャンリグ", "name_ko": "소형 스캔 리그", "name_ru": "Малые", "name_zh": "小型扫描改装件", "nameID": 288970, "parentGroupID": 1780 }, "1787": { "description_de": "Modifikationen, welche die Scanleistung mittelgroßer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a medium starship's scanning.", "description_es": "Modificaciones que afectan al escaneo de una nave mediana.", "description_fr": "Modifications qui affectent le système de détection d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's scanning.", "description_ja": "中型宇宙船のスキャン性能を調整する改造パーツ。", "description_ko": "중형 함선의 스캔 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем сканирования на кораблях среднего размера.", "description_zh": "中型舰船所用的扫描系统改装件。", "descriptionID": 288973, "hasTypes": 1, "iconID": 21058, "name_de": "Mittlere Scanmodifikationen", "name_en-us": "Medium Scanning Rigs", "name_es": "Complementos medianos de escaneo", "name_fr": "Modifications de balayage intermédiaires", "name_it": "Medium Scanning Rigs", "name_ja": "中型スキャンリグ", "name_ko": "중형 스캔 리그", "name_ru": "Средние", "name_zh": "中型扫描改装件", "nameID": 288972, "parentGroupID": 1780 }, "1788": { "description_de": "Modifikationen, welche die Scanleistung großer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a large starship's scanning.", "description_es": "Modificaciones que afectan al escaneo de una nave grande.", "description_fr": "Modifications qui affectent le système de détection d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's scanning.", "description_ja": "大型宇宙船のスキャン性能を調整する改造パーツ。", "description_ko": "대형 함선의 스캔 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем сканирования на кораблях крупного размера.", "description_zh": "大型舰船所用的扫描系统改装件。", "descriptionID": 288975, "hasTypes": 1, "iconID": 21058, "name_de": "Große Scanmodifikationen", "name_en-us": "Large Scanning Rigs", "name_es": "Complementos grandes de escaneo", "name_fr": "Grandes modifications de balayage", "name_it": "Large Scanning Rigs", "name_ja": "大型スキャンリグ", "name_ko": "대형 스캔 리그", "name_ru": "Большие", "name_zh": "大型扫描改装件", "nameID": 288974, "parentGroupID": 1780 }, "1789": { "description_de": "Modifikationen, welche die Scanleistung von Capital-Raumschiffen betreffen.", "description_en-us": "Modifications that affect a capital starship's scanning.", "description_es": "Modificaciones que afectan al escaneo de una nave capital.", "description_fr": "Modifications qui affectent le système de détection d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's scanning.", "description_ja": "キャピタル級宇宙船のスキャン性能を調整する改造パーツ。", "description_ko": "캐피탈 함선의 스캔 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем сканирования на кораблях большого тоннажа.", "description_zh": "旗舰级舰船所用的扫描系统改装件。", "descriptionID": 288977, "hasTypes": 1, "iconID": 21058, "name_de": "Capital-Scanmodifikationen", "name_en-us": "Capital Scanning Rigs", "name_es": "Complementos capitales de escaneo", "name_fr": "Modifications de balayage capitales", "name_it": "Capital Scanning Rigs", "name_ja": "キャピタルスキャンリグ", "name_ko": "캐피탈 스캔 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级扫描改装件", "nameID": 288976, "parentGroupID": 1780 }, "1790": { "description_de": "Modifikationen, welche die Zielaufschaltung kleiner Raumschiffe betreffen.", "description_en-us": "Modifications that affect a small starship's targeting.", "description_es": "Modificaciones que afectan a la adquisición de objetivos de una nave pequeña.", "description_fr": "Modifications qui affectent le système de ciblage d'un petit vaisseau spatial.", "description_it": "Modifications that affect a small starship's targeting.", "description_ja": "小型宇宙船のターゲット性能を調整する改造パーツ。", "description_ko": "소형 함선의 타겟팅 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем целеуказания на кораблях малого размера.", "description_zh": "小型舰船所用的锁定系统改装件。", "descriptionID": 288979, "hasTypes": 1, "iconID": 21059, "name_de": "Kleine Zielerfassungsmodifikationen", "name_en-us": "Small Targeting Rigs", "name_es": "Complementos pequeños de adquisición de objetivos", "name_fr": "Petites modifications de ciblage", "name_it": "Small Targeting Rigs", "name_ja": "小型ターゲットリグ", "name_ko": "소형 타겟팅 리그", "name_ru": "Малые", "name_zh": "小型锁定系统改装件", "nameID": 288978, "parentGroupID": 1781 }, "1791": { "description_de": "Modifikationen, welche die Zielaufschaltung mittelgroßer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a medium starship's targeting.", "description_es": "Modificaciones que afectan a la adquisición de objetivos de una nave mediana.", "description_fr": "Modifications qui affectent le système de ciblage d'un vaisseau spatial de taille intermédiaire.", "description_it": "Modifications that affect a medium starship's targeting.", "description_ja": "中型宇宙船のターゲット性能を調整する改造パーツ。", "description_ko": "중형 함선의 타겟팅 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем целеуказания на кораблях среднего размера.", "description_zh": "中型舰船所用的锁定系统改装件。", "descriptionID": 288981, "hasTypes": 1, "iconID": 21059, "name_de": "Mittlere Zielerfassungsmodifikationen", "name_en-us": "Medium Targeting Rigs", "name_es": "Complementos medianos de adquisición de objetivos", "name_fr": "Modifications de ciblage intermédiaires", "name_it": "Medium Targeting Rigs", "name_ja": "中型ターゲットリグ", "name_ko": "중형 타겟팅 리그", "name_ru": "Средние", "name_zh": "中型锁定系统改装件", "nameID": 288980, "parentGroupID": 1781 }, "1792": { "description_de": "Modifikationen, welche die Zielaufschaltung großer Raumschiffe betreffen.", "description_en-us": "Modifications that affect a large starship's targeting.", "description_es": "Modificaciones que afectan a la adquisición de objetivos de una nave grande.", "description_fr": "Modifications qui affectent le système de ciblage d'un grand vaisseau spatial.", "description_it": "Modifications that affect a large starship's targeting.", "description_ja": "大型宇宙船のターゲット性能を調整する改造パーツ。", "description_ko": "대형 함선의 타겟팅 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем целеуказания на кораблях крупного размера.", "description_zh": "大型舰船所用的锁定系统改装件。", "descriptionID": 288983, "hasTypes": 1, "iconID": 21059, "name_de": "Große Zielerfassungsmodifikationen", "name_en-us": "Large Targeting Rigs", "name_es": "Complementos grandes de adquisición de objetivos", "name_fr": "Grandes modifications de ciblage", "name_it": "Large Targeting Rigs", "name_ja": "大型ターゲットリグ", "name_ko": "대형 타겟팅 리그", "name_ru": "Большие", "name_zh": "大型锁定系统改装件", "nameID": 288982, "parentGroupID": 1781 }, "1793": { "description_de": "Modifikationen, welche die Zielaufschaltung von Capital-Raumschiffen betreffen.", "description_en-us": "Modifications that affect a capital starship's targeting.", "description_es": "Modificaciones que afectan a la adquisición de objetivos de una nave capital.", "description_fr": "Modifications qui affectent le système de ciblage d'un vaisseau spatial capital.", "description_it": "Modifications that affect a capital starship's targeting.", "description_ja": "キャピタル級宇宙船のターゲット性能を調整する改造パーツ。", "description_ko": "캐피탈 함선의 타겟팅 성능을 향상하는 리그입니다.", "description_ru": "Модификации для улучшения работы систем целеуказания на кораблях большого тоннажа размера.", "description_zh": "旗舰级舰船所用的锁定系统改装件。", "descriptionID": 288985, "hasTypes": 1, "iconID": 21059, "name_de": "Capital-Zielerfassungsmodifikationen", "name_en-us": "Capital Targeting Rigs", "name_es": "Complementos capitales de adquisición de objetivos", "name_fr": "Modifications de ciblage capitales", "name_it": "Capital Targeting Rigs", "name_ja": "キャピタルターゲットリグ", "name_ko": "캐피탈 타겟팅 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级锁定系统改装件", "nameID": 288984, "parentGroupID": 1781 }, "1794": { "description_de": "Permanente Veränderung der Ressourcenverarbeitung eines Schiffes.", "description_en-us": "Permanent modification of a ship's resource processing.", "description_es": "Modificación permanente del procesamiento de recursos de una nave.", "description_fr": "Modification permanente du traitement des ressources d'un vaisseau.", "description_it": "Permanent modification of a ship's resource processing.", "description_ja": "船の資源加工性能を調整する据え付け型の改造パーツ。", "description_ko": "자원 정제 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу ресурсоперерабатывающих систем корабля.", "description_zh": "资源处理相关的永久性改装件。", "descriptionID": 289001, "hasTypes": 0, "iconID": 2703, "name_de": "Ressourcenverarbeitungsmodifikationen", "name_en-us": "Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource", "name_it": "Resource Processing Rigs", "name_ja": "資源加工リグ", "name_ko": "자원 정제 리그", "name_ru": "Модификаторы переработки", "name_zh": "资源加工改装件", "nameID": 289000, "parentGroupID": 943 }, "1795": { "description_de": "Permanente Veränderung der Scaneinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's scanning facilities.", "description_es": "Modificación permanente de los sistemas de escaneo de una nave.", "description_fr": "Modification permanente des installations de détection d'un vaisseau.", "description_it": "Permanent modification of a ship's scanning facilities.", "description_ja": "船のスキャン設備に据え付ける改造パーツ。", "description_ko": "스캔 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем сканирования корабля.", "description_zh": "扫描设备永久性改装件。", "descriptionID": 289003, "hasTypes": 0, "iconID": 2703, "name_de": "Scanmodifikationen", "name_en-us": "Scanning Rigs", "name_es": "Complementos de escaneo", "name_fr": "Modifications de balayage", "name_it": "Scanning Rigs", "name_ja": "スキャンリグ", "name_ko": "스캔 리그", "name_ru": "Модификаторы разведсистем", "name_zh": "扫描改装件", "nameID": 289002, "parentGroupID": 943 }, "1796": { "description_de": "Permanente Veränderung der Zielaufschaltungseinrichtungen eines Schiffes.", "description_en-us": "Permanent modification of a ship's targeting facilities.", "description_es": "Modificación permanente de los sistemas de adquisición de objetivos de la nave.", "description_fr": "Modification permanente des installations de ciblage d'un vaisseau.", "description_it": "Permanent modification of a ship's targeting facilities.", "description_ja": "船のターゲット装置に据え付ける改造パーツ。", "description_ko": "타겟팅 관련 리그입니다.", "description_ru": "Модули, вносящие постоянные изменения в работу систем целеуказания корабля.", "description_zh": "锁定设备永久性改装件。", "descriptionID": 289005, "hasTypes": 0, "iconID": 2703, "name_de": "Zielerfassungsmodifikationen", "name_en-us": "Targeting Rigs", "name_es": "Complementos de adquisición de objetivos", "name_fr": "Modifications de ciblage", "name_it": "Targeting Rigs", "name_ja": "ターゲットリグ", "name_ko": "타겟팅 리그", "name_ru": "Модификаторы захвата целей", "name_zh": "锁定系统改装件", "nameID": 289004, "parentGroupID": 943 }, "1797": { "description_de": "Blueprints für Capital-Ressourcenverarbeitungsausrüstung.", "description_en-us": "Blueprints of Capital Resource Processing Rigs.", "description_es": "Planos de complementos capitales de procesamiento de recursos.", "description_fr": "Plans de construction de modules d'optimisation du traitement des ressources d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Resource Processing Rigs.", "description_ja": "キャピタル資源加工リグのブループリント。", "description_ko": "캐피탈 자원 정제 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей КБТ-класса для улучшения работы систем переработки ресурсов.", "description_zh": "旗舰级资源加工改装件蓝图", "descriptionID": 289007, "hasTypes": 1, "iconID": 2703, "name_de": "Capital-Ressourcenverarbeitungsmodifikationen", "name_en-us": "Capital Resource Processing Rigs", "name_es": "Complementos capitales de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource capitales", "name_it": "Capital Resource Processing Rigs", "name_ja": "キャピタル資源加工リグ", "name_ko": "캐피탈 자원 정제 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级资源加工改装件", "nameID": 289006, "parentGroupID": 1794 }, "1798": { "description_de": "Blueprints für große Ressourcenverarbeitungsausrüstung.", "description_en-us": "Blueprints of Large Resource Processing Rigs.", "description_es": "Planos de complementos grandes de procesamiento de recursos.", "description_fr": "Plans de construction de modules d'optimisation du traitement des ressources d'un grand vaisseau spatial.", "description_it": "Blueprints of Large Resource Processing Rigs.", "description_ja": "大型資源加工リグのブループリント。", "description_ko": "대형 자원 정제 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей для улучшения работы систем переработки ресурсов.", "description_zh": "大型资源加工改装件蓝图", "descriptionID": 289009, "hasTypes": 1, "iconID": 2703, "name_de": "Große Ressourcenverarbeitungsmodifikationen", "name_en-us": "Large Resource Processing Rigs", "name_es": "Complementos grandes de procesamiento de recursos", "name_fr": "Grandes modifications de traitement de ressource", "name_it": "Large Resource Processing Rigs", "name_ja": "大型資源加工リグ", "name_ko": "대형 자원 정제 리그", "name_ru": "Большие", "name_zh": "大型资源加工改装件", "nameID": 289008, "parentGroupID": 1794 }, "1799": { "description_de": "Blueprints für mittelgroße Ressourcenverarbeitungsausrüstung.", "description_en-us": "Blueprints of Medium Resource Processing Rigs.", "description_es": "Planos de complementos medianos de procesamiento de recursos.", "description_fr": "Plans de construction de modules d'optimisation du traitement des ressources d'un vaisseau spatial de taille intermédiaire.", "description_it": "Blueprints of Medium Resource Processing Rigs.", "description_ja": "中型資源加工リグのブループリント。", "description_ko": "중형 자원 정제 리그 블루프린트입니다.", "description_ru": "Чертежи средних тюнинг-модулей для улучшения работы систем переработки ресурсов.", "description_zh": "中型资源加工改装件蓝图", "descriptionID": 289011, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Ressourcenverarbeitungsmodifikationen", "name_en-us": "Medium Resource Processing Rigs", "name_es": "Complementos medianos de procesamiento de recursos", "name_fr": "Modifications de traitement de ressource intermédiaires", "name_it": "Medium Resource Processing Rigs", "name_ja": "中型資源加工リグ", "name_ko": "중형 자원 정제 리그", "name_ru": "Средние", "name_zh": "中型资源加工改装件", "nameID": 289010, "parentGroupID": 1794 }, "1800": { "description_de": "Blueprints für kleine Ressourcenverarbeitungsausrüstung.", "description_en-us": "Blueprints of Small Resource Processing Rigs.", "description_es": "Planos de complementos pequeños de procesamiento de recursos.", "description_fr": "Plans de construction de modules d'optimisation du traitement des ressources d'un petit vaisseau spatial.", "description_it": "Blueprints of Small Resource Processing Rigs.", "description_ja": "小型資源加工リグのブループリント。", "description_ko": "소형 자원 정제 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей для улучшения работы систем переработки ресурсов.", "description_zh": "小型资源加工改装件蓝图", "descriptionID": 289013, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Ressourcenverarbeitungsmodifikationen", "name_en-us": "Small Resource Processing Rigs", "name_es": "Complementos pequeños de procesamiento de recursos", "name_fr": "Petites modifications de traitement de ressource", "name_it": "Small Resource Processing Rigs", "name_ja": "小型資源加工リグ", "name_ko": "소형 자원 정제 리그", "name_ru": "Малые", "name_zh": "小型资源加工改装件", "nameID": 289012, "parentGroupID": 1794 }, "1801": { "description_de": "Blueprints für kleine Scanausrüstung.", "description_en-us": "Blueprints of Small Scanning Rigs.", "description_es": "Planos de complementos pequeños de escaneo.", "description_fr": "Plans de construction de modules d'optimisation de détection d'un petit vaisseau spatial.", "description_it": "Blueprints of Small Scanning Rigs.", "description_ja": "小型スキャンリグのブループリント。", "description_ko": "소형 스캔 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей для улучшения работы систем сканирования.", "description_zh": "各种小型扫描系统改装件的蓝图。", "descriptionID": 289015, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Scanmodifikationen", "name_en-us": "Small Scanning Rigs", "name_es": "Complementos pequeños de escaneo", "name_fr": "Petites modifications de balayage", "name_it": "Small Scanning Rigs", "name_ja": "小型スキャンリグ", "name_ko": "소형 스캔 리그", "name_ru": "Малые", "name_zh": "小型扫描改装件", "nameID": 289014, "parentGroupID": 1795 }, "1802": { "description_de": "Blueprints für mittelgroße Scanausrüstung.", "description_en-us": "Blueprints of Medium Scanning Rigs.", "description_es": "Planos de complementos medianos de escaneo.", "description_fr": "Plans de construction de modules d'optimisation de détection d'un vaisseau spatial de taille intermédiaire.", "description_it": "Blueprints of Medium Scanning Rigs.", "description_ja": "中型スキャンリグのブループリント。", "description_ko": "중형 스캔 리그 블루프린트입니다.", "description_ru": "Чертежи средних тюнинг-модулей для улучшения работы систем сканирования.", "description_zh": "各种中型扫描系统改装件的蓝图。", "descriptionID": 289017, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Scanmodifikationen", "name_en-us": "Medium Scanning Rigs", "name_es": "Complementos medianos de escaneo", "name_fr": "Modifications intermédiaires de balayage", "name_it": "Medium Scanning Rigs", "name_ja": "中型スキャンリグ", "name_ko": "중형 스캔 리그", "name_ru": "Средние", "name_zh": "中型扫描改装件", "nameID": 289016, "parentGroupID": 1795 }, "1803": { "description_de": "Blueprints für große Scanausrüstung.", "description_en-us": "Blueprints of Large Scanning Rigs.", "description_es": "Planos de complementos grandes de escaneo.", "description_fr": "Plans de construction de modules d'optimisation de détection d'un grand vaisseau spatial.", "description_it": "Blueprints of Large Scanning Rigs.", "description_ja": "大型スキャンリグのブループリント。", "description_ko": "대형 스캔 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей для улучшения работы систем сканирования.", "description_zh": "各种大型扫描系统改装件的蓝图。", "descriptionID": 289019, "hasTypes": 1, "iconID": 2703, "name_de": "Große Scanmodifikationen", "name_en-us": "Large Scanning Rigs", "name_es": "Complementos grandes de escaneo", "name_fr": "Grandes modifications de balayage", "name_it": "Large Scanning Rigs", "name_ja": "大型スキャンリグ", "name_ko": "대형 스캔 리그", "name_ru": "Большие", "name_zh": "大型扫描改装件", "nameID": 289018, "parentGroupID": 1795 }, "1804": { "description_de": "Blueprints für Capital-Scanausrüstung.", "description_en-us": "Blueprints of Capital Scanning Rigs.", "description_es": "Planos de complementos capitales de escaneo.", "description_fr": "Plans de construction de modules d'optimisation de détection d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Scanning Rigs.", "description_ja": "キャピタルスキャンリグのブループリント。", "description_ko": "캐피탈 스캔 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей КБТ-класса для улучшения работы систем сканирования.", "description_zh": "各种旗舰级扫描系统改装件的蓝图。", "descriptionID": 289021, "hasTypes": 1, "iconID": 2703, "name_de": "Capital-Scanmodifikationen", "name_en-us": "Capital Scanning Rigs", "name_es": "Complementos capitales de escaneo", "name_fr": "Modifications de balayage capitales", "name_it": "Capital Scanning Rigs", "name_ja": "キャピタルスキャンリグ", "name_ko": "캐피탈 스캔 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级扫描改装件", "nameID": 289020, "parentGroupID": 1795 }, "1805": { "description_de": "Blueprints für kleine Zielaufschaltungsausrüstung.", "description_en-us": "Blueprints of Small Targeting Rigs.", "description_es": "Planos de complementos pequeños de adquisición de objetivos.", "description_fr": "Plans de construction de modules d'optimisation de ciblage d'un petit vaisseau spatial.", "description_it": "Blueprints of Small Targeting Rigs.", "description_ja": "小型ターゲットリグのブループリント。", "description_ko": "소형 타겟팅 리그 블루프린트입니다.", "description_ru": "Чертежи малых тюнинг-модулей для улучшения работы систем целеуказания.", "description_zh": "各种小型锁定系统改装件的蓝图。", "descriptionID": 289023, "hasTypes": 1, "iconID": 2703, "name_de": "Kleine Zielerfassungsmodifikationen", "name_en-us": "Small Targeting Rigs", "name_es": "Complementos pequeños de adquisición de objetivos", "name_fr": "Petites modifications de ciblage", "name_it": "Small Targeting Rigs", "name_ja": "小型ターゲットリグ", "name_ko": "소형 타겟팅 리그", "name_ru": "Малые", "name_zh": "小型锁定系统改装件", "nameID": 289022, "parentGroupID": 1796 }, "1806": { "description_de": "Blueprints für mittelgroße Zielaufschaltungsausrüstung.", "description_en-us": "Blueprints of Medium Targeting Rigs.", "description_es": "Planos de complementos medianos de adquisición de objetivos.", "description_fr": "Plans de construction de modules d'optimisation de ciblage d'un vaisseau de taille intermédiaire.", "description_it": "Blueprints of Medium Targeting Rigs.", "description_ja": "中型ターゲットリグのブループリント。", "description_ko": "중형 타겟팅 리그 블루프린트입니다.", "description_ru": "Чертежи средних тюнинг-модулей для улучшения работы систем целеуказания.", "description_zh": "各种中型锁定系统改装件的蓝图。", "descriptionID": 289025, "hasTypes": 1, "iconID": 2703, "name_de": "Mittlere Zielerfassungsmodifikationen", "name_en-us": "Medium Targeting Rigs", "name_es": "Complementos medianos de adquisición de objetivos", "name_fr": "Modifications de ciblage intermédiaires", "name_it": "Medium Targeting Rigs", "name_ja": "中型ターゲットリグ", "name_ko": "중형 타겟팅 리그", "name_ru": "Средние", "name_zh": "中型锁定系统改装件", "nameID": 289024, "parentGroupID": 1796 }, "1807": { "description_de": "Blueprints für große Zielaufschaltungsausrüstung.", "description_en-us": "Blueprints of Large Targeting Rigs.", "description_es": "Planos de complementos grandes de adquisición de objetivos.", "description_fr": "Plans de construction de modules d'optimisation de ciblage d'un grand vaisseau spatial.", "description_it": "Blueprints of Large Targeting Rigs.", "description_ja": "大型ターゲットリグのブループリント。", "description_ko": "대형 타겟팅 리그 블루프린트입니다.", "description_ru": "Чертежи больших тюнинг-модулей для улучшения работы систем целеуказания.", "description_zh": "各种大型锁定系统改装件的蓝图。", "descriptionID": 289027, "hasTypes": 1, "iconID": 2703, "name_de": "Große Zielerfassungsmodifikationen", "name_en-us": "Large Targeting Rigs", "name_es": "Complementos grandes de adquisición de objetivos", "name_fr": "Grandes modifications de ciblage", "name_it": "Large Targeting Rigs", "name_ja": "大型ターゲットリグ", "name_ko": "대형 타겟팅 리그", "name_ru": "Большие", "name_zh": "大型锁定系统改装件", "nameID": 289026, "parentGroupID": 1796 }, "1808": { "description_de": "Blueprints für Capital-Zielaufschaltungsausrüstung.", "description_en-us": "Blueprints of Capital Targeting Rigs.", "description_es": "Planos de complementos capitales de adquisición de objetivos.", "description_fr": "Plans de construction de modules d'optimisation de ciblage d'un vaisseau spatial capital.", "description_it": "Blueprints of Capital Targeting Rigs.", "description_ja": "キャピタルターゲットリグのブループリント。", "description_ko": "캐피탈 타겟팅 리그 블루프린트입니다.", "description_ru": "Чертежи тюнинг-модулей КБТ-класса для улучшения работы систем целеуказания.", "description_zh": "各种旗舰级锁定系统改装件的蓝图。", "descriptionID": 289029, "hasTypes": 1, "iconID": 2703, "name_de": "Capital-Zielerfassungsmodifikationen", "name_en-us": "Capital Targeting Rigs", "name_es": "Complementos capitales de adquisición de objetivos", "name_fr": "Modifications de ciblage capitales", "name_it": "Capital Targeting Rigs", "name_ja": "キャピタルターゲットリグ", "name_ko": "캐피탈 타겟팅 리그", "name_ru": "Сверхбольшие", "name_zh": "旗舰级锁定系统改装件", "nameID": 289028, "parentGroupID": 1796 }, "1809": { "description_de": "Blaupausen für Analysatoren", "description_en-us": "Blueprints of analyzers.", "description_es": "Planos de analizadores.", "description_fr": "Plans de construction d'analyseurs.", "description_it": "Blueprints of analyzers.", "description_ja": "アナライザーのブループリント。", "description_ko": "분석기 블루프린트입니다.", "description_ru": "Чертежи анализаторов.", "description_zh": "分析仪的蓝图。", "descriptionID": 289138, "hasTypes": 1, "iconID": 2703, "name_de": "Analysatoren", "name_en-us": "Analyzers", "name_es": "Analizadores", "name_fr": "Analyseurs", "name_it": "Analyzers", "name_ja": "アナライザー", "name_ko": "분석기", "name_ru": "Анализаторы", "name_zh": "分析仪", "nameID": 289137, "parentGroupID": 1710 }, "1810": { "description_de": "Allianzturnier-Karten", "description_en-us": "Alliance Tournament Cards", "description_es": "Cartas del Torneo de Alianzas", "description_fr": "Cartes du tournoi des alliances", "description_it": "Alliance Tournament Cards", "description_ja": "アライアンストーナメントカード", "description_ko": "얼라이언스 토너먼트 카드", "description_ru": "Коллекционные карты турниров между альянсами", "description_zh": "联盟争霸赛卡片", "descriptionID": 289172, "hasTypes": 0, "iconID": 21065, "name_de": "Allianzturnier-Karten", "name_en-us": "Alliance Tournament Cards", "name_es": "Cartas del Torneo de Alianzas", "name_fr": "Cartes du Tournoi des alliances", "name_it": "Alliance Tournament Cards", "name_ja": "アライアンストーナメントカード", "name_ko": "얼라이언스 토너먼트 카드", "name_ru": "Коллекционные карты «Турниров альянсов»", "name_zh": "联盟争霸赛卡片", "nameID": 289171, "parentGroupID": 1660 }, "1811": { "description_de": "New Eden Open-Karten", "description_en-us": "New Eden Open Cards", "description_es": "Cartas del Open de Nuevo Edén.", "description_fr": "Cartes ouvertes de New Eden", "description_it": "New Eden Open Cards", "description_ja": "ニューエデンオープンカード", "description_ko": "뉴에덴 오픈 카드", "description_ru": "Коллекционные карты открытого турнира Нового Эдема", "description_zh": "新伊甸公开赛卡片", "descriptionID": 289174, "hasTypes": 0, "iconID": 20974, "name_de": "New Eden Open-Karten", "name_en-us": "New Eden Open Cards", "name_es": "Cartas del Open de Nuevo Edén", "name_fr": "Cartes New Eden Open", "name_it": "New Eden Open Cards", "name_ja": "ニューエデンオープンカード", "name_ko": "뉴에덴 오픈 카드", "name_ru": "Коллекционные карты открытого турнира Нового Эдема", "name_zh": "新伊甸公开赛卡片", "nameID": 289173, "parentGroupID": 1660 }, "1812": { "description_de": "Allianzturnier-Bestenmannschaften", "description_en-us": "Alliance Tournament All Star Teams", "description_es": "Equipos All Star del Torneo de Alianzas.", "description_fr": "Équipes All Star du tournoi des alliances", "description_it": "Alliance Tournament All Star Teams", "description_ja": "アライアンストーナメントオールスターチーム", "description_ko": "얼라이언스 토너먼트 올스타팀", "description_ru": "Турниры между альянсами: звездные команды", "description_zh": "联盟争霸赛全明星队", "descriptionID": 289176, "hasTypes": 1, "iconID": 21065, "name_de": "Allianzturnier-Bestenmannschaften", "name_en-us": "Alliance Tournament All Star Teams", "name_es": "Equipos All Star del Torneo de Alianzas", "name_fr": "Équipes des vedettes du Tournoi des alliances", "name_it": "Alliance Tournament All Star Teams", "name_ja": "アライアンストーナメントオールスターチーム", "name_ko": "얼라이언스 토너먼트 올스타팀", "name_ru": "«Турниры Альянсов»: все звёзды", "name_zh": "联盟争霸赛全明星队", "nameID": 289175, "parentGroupID": 1810 }, "1813": { "description_de": "NEO YC 114-Teamkarten", "description_en-us": "NEO YC 114 Team Cards", "description_es": "Cartas de equipos NEO 114 CY.", "description_fr": "Cartes de l'équipe ONE de l'année 114 après CY", "description_it": "NEO YC 114 Team Cards", "description_ja": "ニューエデンオープンYC114チームカード", "description_ko": "NEO YC 114 팀 카드", "description_ru": "Коллекционные карты турнира NEO 114 г. YC", "description_zh": "新伊甸纪元114年公开赛战队卡片", "descriptionID": 289178, "hasTypes": 1, "iconID": 20974, "name_de": "NEO YC 114-Teamkarten", "name_en-us": "NEO YC 114 Team Cards", "name_es": "Cartas de equipos NEO 114 CY", "name_fr": "Cartes d'équipe ONE 114 après CY", "name_it": "NEO YC 114 Team Cards", "name_ja": "ニューエデンオープンYC114チームカード", "name_ko": "NEO YC 114 팀 카드", "name_ru": "Коллекционные карты турнира NEO 14-го года от ю. с.", "name_zh": "新伊甸纪元114年公开赛战队卡片", "nameID": 289177, "parentGroupID": 1811 }, "1814": { "description_de": "Sonderversionen: Implantate", "description_en-us": "Special Edition Implants", "description_es": "Implantes de edición especial.", "description_fr": "Implants édition spéciale", "description_it": "Special Edition Implants", "description_ja": "特別版インプラント", "description_ko": "임플란트", "description_ru": "Имплантаты — спецвыпуски", "description_zh": "特别版植入体", "descriptionID": 289180, "hasTypes": 1, "iconID": 21047, "name_de": "Implantate", "name_en-us": "Special Edition Implants", "name_es": "Implantes de edición especial", "name_fr": "Implants édition spéciale", "name_it": "Special Edition Implants", "name_ja": "特別版インプラント", "name_ko": "임플란트", "name_ru": "Импланты из особых изданий", "name_zh": "特别版植入体", "nameID": 289179, "parentGroupID": 1659 }, "1815": { "description_de": "Kleine entbehrliche und Anfängerschiffe", "description_en-us": "Small entry-level and expendable ships", "description_es": "Naves pequeñas y prescindibles de nivel básico.", "description_fr": "Petits vaisseaux d'entrée de gamme pouvant être sacrifiés", "description_it": "Small entry-level and expendable ships", "description_ja": "小型で最も安価なため、買い換えが容易な艦船", "description_ko": "초심자용 소형 함선", "description_ru": "Небольшие и недорогие корабли для начинающих пилотов", "description_zh": "廉价的入门级小型舰船", "descriptionID": 289265, "hasTypes": 0, "iconID": 1443, "name_de": "Corvettes", "name_en-us": "Corvettes", "name_es": "Corbetas", "name_fr": "Corvettes", "name_it": "Corvettes", "name_ja": "コルベット", "name_ko": "코르벳", "name_ru": "Корветы", "name_zh": "轻型护卫舰", "nameID": 289264, "parentGroupID": 4 }, "1816": { "description_de": "Amarr-Anfängerschiff-Designs.", "description_en-us": "Amarr rookie ship designs.", "description_es": "Diseños de naves amarrianas para principiantes.", "description_fr": "Modèles de vaisseaux de recrue amarr.", "description_it": "Amarr rookie ship designs.", "description_ja": "アマー設計のルーキー船。", "description_ko": "초심자용 아마르 함선입니다.", "description_ru": "Планы учебного корабля империи Амарр.", "description_zh": "艾玛新手船设计", "descriptionID": 289267, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 289266, "parentGroupID": 1815 }, "1817": { "description_de": "Caldari-Anfängerschiff-Designs.", "description_en-us": "Caldari rookie ship designs.", "description_es": "Diseños de naves caldaris para principiantes.", "description_fr": "Modèles de vaisseaux de recrue caldari.", "description_it": "Caldari rookie ship designs.", "description_ja": "カルダリ設計のルーキー船。", "description_ko": "초심자용 칼다리 함선입니다.", "description_ru": "Планы учебного корабля государства Калдари.", "description_zh": "加达里新手船设计", "descriptionID": 289269, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 289268, "parentGroupID": 1815 }, "1818": { "description_de": "Gallente-Anfängerschiff-Designs.", "description_en-us": "Gallente rookie ship designs.", "description_es": "Diseños de naves gallentes para principiantes.", "description_fr": "Modèles de vaisseaux de recrue gallente.", "description_it": "Gallente rookie ship designs.", "description_ja": "ガレンテ設計のルーキー船。", "description_ko": "초심자용 갈란테 함선입니다.", "description_ru": "Планы учебного корабля федерации Галленте.", "description_zh": "盖伦特新手船设计", "descriptionID": 289271, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 289270, "parentGroupID": 1815 }, "1819": { "description_de": "Minmatar-Anfängerschiff-Designs.", "description_en-us": "Minmatar rookie ship designs.", "description_es": "Diseños de naves minmatarianas para principiantes.", "description_fr": "Modèles de vaisseaux de recrue minmatar.", "description_it": "Minmatar rookie ship designs.", "description_ja": "ミンマター設計のルーキー船。", "description_ko": "초심자용 민마타 함선입니다.", "description_ru": "Планы учебного корабля республики Минматар.", "description_zh": "米玛塔尔新手船设计", "descriptionID": 289273, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 289272, "parentGroupID": 1815 }, "1822": { "description_de": "Tätowierungen für Charaktere", "description_en-us": "Tattoos for characters", "description_es": "Tatuajes para los personajes.", "description_fr": "Tatouages pour les personnages", "description_it": "Tattoos for characters", "description_ja": "キャラクターのタトゥー", "description_ko": "캐릭터 문신", "description_ru": "Татуировки для персонажей", "description_zh": "玩家的纹身", "descriptionID": 289361, "hasTypes": 1, "iconID": 21048, "name_de": "Tattoos", "name_en-us": "Tattoos", "name_es": "Tatuajes", "name_fr": "Tatouages", "name_it": "Tattoos", "name_ja": "タトゥー", "name_ko": "문신", "name_ru": "Татуировки", "name_zh": "纹身", "nameID": 289360, "parentGroupID": 1407 }, "1823": { "description_de": "Skills für die Kontrolle und den Fernbetrieb von planetaren Kolonien", "description_en-us": "Skills required for the control and remote operation of planetary colonies", "description_es": "Habilidades necesarias para controlar colonias planetarias y sacarles rendimiento desde la distancia.", "description_fr": "Compétences requises pour le contrôle et les opérations à distance des colonies planétaires", "description_it": "Skills required for the control and remote operation of planetary colonies", "description_ja": "惑星コロニーの制御と遠隔操作に必要となるスキル", "description_ko": "행성 콜로니에 대한 제어 및 원격 운용 스킬입니다.", "description_ru": "Навыки, необходимые для осуществления контроля и удалённого управления деятельностью колоний на поверхности планет", "description_zh": "控制并远程操作行星殖民地开发所需要的技能", "descriptionID": 289823, "hasTypes": 1, "iconID": 33, "name_de": "Planetenmanagement", "name_en-us": "Planet Management", "name_es": "Gestión planetaria", "name_fr": "Gestion planétaire", "name_it": "Planet Management", "name_ja": "惑星管理", "name_ko": "행성 관리", "name_ru": "Освоение планет", "name_zh": "行星管理", "nameID": 289822, "parentGroupID": 150 }, "1824": { "description_de": "Skills zum Einsatz und zur Kontrolle von von Raumschiff-Subsystemen", "description_en-us": "Skills pertaining to the use and control of ship subsystems", "description_es": "Habilidades relacionadas con el uso y el control de los subsistemas de las naves.", "description_fr": "Compétences relatives à l'utilisation et au contrôle des sous-systèmes d'un vaisseau", "description_it": "Skills pertaining to the use and control of ship subsystems", "description_ja": "艦船のサブシステムを使用・制御するスキル", "description_ko": "함선 서브시스템의 운용 및 제어와 관련된 스킬입니다.", "description_ru": "Навыки, необходимые для монтажа и использования подсистем корабля", "description_zh": "使用和控制舰船子系统的技能", "descriptionID": 289825, "hasTypes": 1, "iconID": 33, "name_de": "Subsysteme", "name_en-us": "Subsystems", "name_es": "Subsistemas", "name_fr": "Sous-systèmes", "name_it": "Subsystems", "name_ja": "サブシステム", "name_ko": "서브시스템", "name_ru": "Монтаж подсистем", "name_zh": "子系统", "nameID": 289824, "parentGroupID": 150 }, "1827": { "hasTypes": 1, "iconID": 21074, "name_de": "Schnelle, schwere Lenkwaffenwerfer", "name_en-us": "Rapid Heavy Missile Launchers", "name_es": "Lanzamisiles pesados de cadencia rápida", "name_fr": "Lance-missiles lourds rapides", "name_it": "Rapid Heavy Missile Launchers", "name_ja": "高速ヘビーミサイルランチャー", "name_ko": "급속 헤비 미사일 런처", "name_ru": "Скорострельные тяжёлые", "name_zh": "重型快速导弹发射器", "nameID": 290301, "parentGroupID": 140 }, "1828": { "description_de": "Blueprints für mobile Depots", "description_en-us": "Blueprints for Mobile Depots", "description_es": "Planos para depósitos móviles", "description_fr": "Plans de construction de dépôts mobiles", "description_it": "Blueprints for Mobile Depots", "description_ja": "移動式貯蔵所のブループリント", "description_ko": "이동식 저장고 블루프린트", "description_ru": "Чертежи автономных постов снабжения", "description_zh": "移动式仓库的蓝图", "descriptionID": 292453, "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Depots", "name_en-us": "Mobile Depots", "name_es": "Depósitos móviles", "name_fr": "Dépôts mobiles", "name_it": "Mobile Depots", "name_ja": "移動式貯蔵所", "name_ko": "이동식 저장고", "name_ru": "Полевые депо оснащения", "name_zh": "移动式仓库", "nameID": 292452, "parentGroupID": 406 }, "1829": { "description_de": "Blueprints für mobile Anziehungsblocker", "description_en-us": "Blueprints for Mobile Cynosural Inhibitors", "description_es": "Planos para inhibidores cinosurales móviles.", "description_fr": "Plans de construction d'inhibiteurs cynosuraux mobiles", "description_it": "Blueprints for Mobile Cynosural Inhibitors", "description_ja": "移動式サイノシュラル阻害機のブループリント", "description_ko": "이동식 사이노슈럴 억제기 블루프린트입니다.", "description_ru": "Чертежи автономных генераторов помех приводным маякам", "description_zh": "移动式诱导抑制装置蓝图", "descriptionID": 292455, "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Anziehungsfeldhemmer", "name_en-us": "Mobile Cynosural Inhibitors", "name_es": "Inhibidores cinosurales móviles", "name_fr": "Inhibiteurs cynosuraux mobiles", "name_it": "Mobile Cynosural Inhibitors", "name_ja": "移動式サイノシュラル阻害機", "name_ko": "이동식 사이노슈럴 억제기", "name_ru": "Полевые глушители приводных маяков", "name_zh": "移动式诱导抑制装置", "nameID": 292454, "parentGroupID": 406 }, "1830": { "description_de": "Blueprints für mobile Traktoreinheiten", "description_en-us": "Blueprints of Mobile Tractor Units", "description_es": "Planos de unidades tractoras móviles.", "description_fr": "Plans de construction d'unités de tractage mobiles", "description_it": "Blueprints of Mobile Tractor Units", "description_ja": "移動式トラクターユニットのブループリント", "description_ko": "이동식 트랙터 장치 블루프린트입니다.", "description_ru": "Чертежи автономных блоков сбора трофеев", "description_zh": "移动式牵引装置的蓝图", "descriptionID": 292457, "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Traktorstrahleinheiten", "name_en-us": "Mobile Tractor Units", "name_es": "Unidades tractoras móviles", "name_fr": "Unités de tractage mobiles", "name_it": "Mobile Tractor Units", "name_ja": "移動式トラクターユニット", "name_ko": "이동식 트랙터 장치", "name_ru": "Полевые сборщики трофеев", "name_zh": "移动式牵引装置", "nameID": 292456, "parentGroupID": 406 }, "1831": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Depots", "name_en-us": "Mobile Depots", "name_es": "Depósitos móviles", "name_fr": "Dépôts mobiles", "name_it": "Mobile Depots", "name_ja": "移動式貯蔵所", "name_ko": "이동식 저장고", "name_ru": "Полевые депо оснащения", "name_zh": "移动式仓库", "nameID": 292458, "parentGroupID": 404 }, "1832": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Anziehungsfeldhemmer", "name_en-us": "Mobile Cynosural Inhibitors", "name_es": "Inhibidores cinosurales móviles", "name_fr": "Inhibiteurs cynosuraux mobiles", "name_it": "Mobile Cynosural Inhibitors", "name_ja": "移動式サイノシュラル阻害機", "name_ko": "이동식 사이노슈럴 억제기", "name_ru": "Полевые глушители приводных маяков", "name_zh": "移动式诱导抑制装置", "nameID": 292459, "parentGroupID": 404 }, "1833": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Traktorstrahleinheiten", "name_en-us": "Mobile Tractor Units", "name_es": "Unidades tractoras móviles", "name_fr": "Unités de tractage mobiles", "name_it": "Mobile Tractor Units", "name_ja": "移動式トラクターユニット", "name_ko": "이동식 트랙터 장치", "name_ru": "Полевые сборщики трофеев", "name_zh": "移动式牵引装置", "nameID": 292460, "parentGroupID": 404 }, "1834": { "description_de": "Blueprints für mobile Absaugeinheiten", "description_en-us": "Blueprints of Mobile Siphon Units.", "description_es": "Planos de unidades sifónicas móviles.", "description_fr": "Plans de construction d'unités de siphonnage mobiles.", "description_it": "Blueprints of Mobile Siphon Units.", "description_ja": "移動式サイフォンユニットのブループリント。", "description_ko": "이동식 사이펀 장치 블루프린트입니다.", "description_ru": "Чертежи отводных блоков.", "description_zh": "移动式虹吸装置的蓝图", "descriptionID": 292480, "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Abzapfeinheiten", "name_en-us": "Mobile Siphon Units", "name_es": "Unidades sifónicas móviles", "name_fr": "Unités de siphon mobiles", "name_it": "Mobile Siphon Units", "name_ja": "移動式サイフォンユニット", "name_ko": "이동식 사이펀 장치", "name_ru": "Полевые реквизиционные блоки", "name_zh": "移动式虹吸装置", "nameID": 292478, "parentGroupID": 406 }, "1835": { "description_de": "Stiehlt Ressourcen aus spielerverwalteten Strukturen.", "description_en-us": "Steals resources from Player Owned Structures.", "description_es": "Roba recursos de estructuras en propiedad de jugadores.", "description_fr": "Dérobe les ressources des structures appartenant aux joueurs.", "description_it": "Steals resources from Player Owned Structures.", "description_ja": "プレイヤー所有建造物から資源をかすめ取る。", "description_ko": "플레이어 소유의 구조물에서 자원을 가로챌 수 있습니다.", "description_ru": "Извлекает сырьё из ПОСов.", "description_zh": "从玩家的建筑中拿取资源", "descriptionID": 292486, "hasTypes": 1, "iconID": 16, "name_de": "Mobile Abzapfeinheiten", "name_en-us": "Mobile Siphon Units", "name_es": "Unidades sifónicas móviles", "name_fr": "Unités de siphon mobiles", "name_it": "Mobile Siphon Units", "name_ja": "移動式サイフォンユニット", "name_ko": "이동식 사이펀 장치", "name_ru": "Полевые реквизиционные блоки", "name_zh": "移动式虹吸装置", "nameID": 292485, "parentGroupID": 404 }, "1836": { "description_de": "Eine Marktgruppe für verschiedene Prothesen", "description_en-us": "a market group for various prosthetics", "description_es": "Un grupo de mercado para prótesis varias.", "description_fr": "Marché de diverses prothèses", "description_it": "a market group for various prosthetics", "description_ja": "様々な義肢を扱うマーケットカテゴリ", "description_ko": "신체 강화 개조 관련 아이템입니다.", "description_ru": "Протезы", "description_zh": "各种义肢", "descriptionID": 292614, "hasTypes": 1, "iconID": 21078, "name_de": "Verbesserungen", "name_en-us": "Augmentations", "name_es": "Aumentos", "name_fr": "Augmentations", "name_it": "Augmentations", "name_ja": "オーグメンテーション", "name_ko": "신체 개조", "name_ru": "Усовершенствования", "name_zh": "身体改装", "nameID": 292613, "parentGroupID": 1407 }, "1837": { "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Aufklärungsschiffe", "name_en-us": "Special Edition Recon Ships", "name_es": "Naves de reconocimiento de edición especial", "name_fr": "Vaisseaux de reconnaissance édition spéciale", "name_it": "Special Edition Recon Ships", "name_ja": "特別版電子戦型巡洋艦", "name_ko": "리콘 크루저", "name_ru": "Малосерийные дозорные корабли", "name_zh": "特别版侦察舰", "nameID": 292713, "parentGroupID": 1612 }, "1838": { "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Covert Ops", "name_en-us": "Special Edition Covert Ops", "name_es": "Operaciones encubiertas de edición especial", "name_fr": "Opérations secrètes édition spéciale", "name_it": "Special Edition Covert Ops", "name_ja": "特別版隠密行動フリゲート", "name_ko": "코버트 옵스", "name_ru": "Малосерийные диверсионные фрегаты", "name_zh": "特别版隐形特勤舰", "nameID": 292714, "parentGroupID": 1612 }, "1840": { "description_de": "Diese Gegenstände aus Geheimoperationen sind bei verschiedenen Fraktionen gefragt.", "description_en-us": "These covert operation items are in demand by various factions", "description_es": "Estos artículos para operaciones encubiertas son muy codiciados entre las diversas facciones.", "description_fr": "Ces objets des opérations secrètes sont demandés par différentes factions.", "description_it": "These covert operation items are in demand by various factions", "description_ja": "これら秘密工作用のアイテムは、様々な組織からの需要がある", "description_ko": "특수 연구 장비는 많은 팩션들이 탐내고 있습니다.", "description_ru": "Инструменты, предназначенные для проведения секретных экспериментов", "description_zh": "许多势力都对这些隐秘行动物品感兴趣", "descriptionID": 296523, "hasTypes": 1, "iconID": 2039, "name_de": "Geheime Forschungswerkzeuge", "name_en-us": "Covert Research Tools", "name_es": "Herramientas de investigación encubierta", "name_fr": "Outils de recherche secrète", "name_it": "Covert Research Tools", "name_ja": "機密研究ツール", "name_ko": "특수 연구장치", "name_ru": "Исследовательские инструменты спецназначения", "name_zh": "隐秘研究工具", "nameID": 293385, "parentGroupID": 19 }, "1841": { "description_de": "Blaupausen für stationierbare Strukturen.", "description_en-us": "Blueprints of deployable structures.", "description_es": "Planos de estructuras desplegables.", "description_fr": "Plans de construction des structures déployables.", "description_it": "Blueprints of deployable structures.", "description_ja": "配置可能な建造物のブループリント。", "description_ko": "전개형 구조물을 위한 블루프린트입니다.", "description_ru": "Чертежи автономных блоков.", "description_zh": "可部署建筑蓝图", "descriptionID": 294037, "hasTypes": 0, "iconID": 2703, "name_de": "Sternenbasis-Strukturen", "name_en-us": "Starbase Structures", "name_es": "Estructuras de base estelar", "name_fr": "Structures de base stellaire", "name_it": "Starbase Structures", "name_ja": "スターベース建造物", "name_ko": "스타베이스 구조물", "name_ru": "Передвижные орбитальные станции", "name_zh": "母星建筑", "nameID": 294036, "parentGroupID": 1338 }, "1842": { "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Mikrosprungeinheiten", "name_en-us": "Mobile Micro Jump Units", "name_es": "Unidades de microsalto móviles", "name_fr": "Unités de microsaut mobiles", "name_it": "Mobile Micro Jump Units", "name_ja": "移動式マイクロジャンプユニット", "name_ko": "이동식 마이크로 점프 장치", "name_ru": "Полевые разгонные блоки", "name_zh": "移动式微型跳跃装置", "nameID": 294173, "parentGroupID": 406 }, "1843": { "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Scanblockierer", "name_en-us": "Mobile Scan Inhibitors", "name_es": "Inhibidores de escaneo móviles", "name_fr": "Inhibiteurs de balayage mobiles", "name_it": "Mobile Scan Inhibitors", "name_ja": "移動式スキャン阻害機", "name_ko": "이동식 스캔 방해장치", "name_ru": "Полевые глушители разведсистем", "name_zh": "移动式扫描抑制装置", "nameID": 294174, "parentGroupID": 406 }, "1844": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Mikrosprungeinheiten", "name_en-us": "Mobile Micro Jump Units", "name_es": "Unidades de microsalto móviles", "name_fr": "Unités de microsaut mobiles", "name_it": "Mobile Micro Jump Units", "name_ja": "移動式マイクロジャンプユニット", "name_ko": "이동식 마이크로 점프 장치", "name_ru": "Полевые разгонные блоки", "name_zh": "移动式微型跳跃装置", "nameID": 294175, "parentGroupID": 404 }, "1845": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Scanblockierer", "name_en-us": "Mobile Scan Inhibitors", "name_es": "Inhibidores de escaneo móviles", "name_fr": "Inhibiteurs de balayage mobiles", "name_it": "Mobile Scan Inhibitors", "name_ja": "移動式スキャン阻害機", "name_ko": "이동식 스캔 방해장치", "name_ru": "Полевые генераторы помех разведсистемам", "name_zh": "移动式扫描抑制装置", "nameID": 294176, "parentGroupID": 404 }, "1846": { "description_de": "Diese Marken können in Stationen der imperialen Navy gegen ISK eingetauscht werden", "description_en-us": "These tags can be turned in, at empire navy stations, in return for ISK", "description_es": "Estas etiquetas pueden entregarse en las estaciones de las armadas imperiales a cambio de ISK.", "description_fr": "Ces insignes peuvent être remis dans les stations des navy impériales contre des ISK", "description_it": "These tags can be turned in, at empire navy stations, in return for ISK", "description_ja": "これらのタグを帝国海軍のステーションに提供することで、ISKを得られる。", "description_ko": "인식표를 해군 정거장에 제출하면 ISK를 보상으로 받을 수 있습니다.", "description_ru": "Эти жетоны можно обменять на ISK у имперских военных", "description_zh": "这些铭牌可以拿到帝国海军空间站去换取星币", "descriptionID": 294261, "hasTypes": 1, "iconID": 24565, "name_de": "Verschlüsselte Kopfgeldwertpapiere", "name_en-us": "Bounty Encrypted Bonds", "name_es": "Bonos cifrados de recompensa", "name_fr": "Obligations cryptées de prime", "name_it": "Bounty Encrypted Bonds", "name_ja": "賞金暗号化債券", "name_ko": "현상금 암호 채권", "name_ru": "Зашифрованные облигации в награду за убийство", "name_zh": "赏金加密债券", "nameID": 294260, "parentGroupID": 19 }, "1847": { "description_de": "Stationierbare Struktur, die Kopfgeld-Auszahlungen im System überwacht", "description_en-us": "Deployables that monitor bounty payout activity in the system", "description_es": "Estructuras desplegables que controlan la actividad de pago de recompensas en el sistema.", "description_fr": "Structures déployables permettent de surveiller le paiement des primes dans le système", "description_it": "Deployables that monitor bounty payout activity in the system", "description_ja": "システム内の賞金払い戻しをモニターする、配置可能な建造物", "description_ko": "항성계 현상금 활동 모니터링 기능이 있는 구조물입니다.", "description_ru": "Автономные блоки, следящие за выплатой наград за уничтожение пиратов в пределах планетной системы.", "description_zh": "可以监测星系内赏金获取情况的可部署建筑", "descriptionID": 294263, "hasTypes": 1, "iconID": 16, "name_de": "Gefechtsüberwachungssysteme", "name_en-us": "Encounter Surveillance Systems", "name_es": "Sistemas de vigilancia de encuentros", "name_fr": "Systèmes de surveillance des affrontements", "name_it": "Encounter Surveillance Systems", "name_ja": "対戦監視システム", "name_ko": "교전 감지 시스템", "name_ru": "Станции учёта боестолкновений", "name_zh": "事件监测装置", "nameID": 294262, "parentGroupID": 404 }, "1849": { "description_de": "In Raffinerien werden chemische Reaktionen genutzt, um sowohl nützliche Materialien als auch verschiedene Boosterdrogen zu erstellen", "description_en-us": "Chemical reactions used in Refineries to create many useful materials, as well as various booster drugs", "description_es": "Reacciones químicas usadas en las refinerías para crear muchos materiales útiles, además de varios fármacos potenciadores.", "description_fr": "Des réactions chimiques utilisées en raffinerie pour fabriquer des matériaux en quantité ainsi que différentes substances boostantes", "description_it": "Chemical reactions used in Refineries to create many useful materials, as well as various booster drugs", "description_ja": "スターベース内で利用される多くの有用な資源や強力な薬物を製造する化学反応", "description_ko": "정제소에서 사용되는 화학 반응식으로 부스터를 포함한 각종 물질을 제작할 수 있습니다.", "description_ru": "Химические реакции, которые используют на перерабатывающих комплексах для создания как полезных материалов, так и различных стимуляторов", "description_zh": "精炼厂中用于产生多种有用材料和增效剂的化学反应", "descriptionID": 294561, "hasTypes": 0, "iconID": 21783, "name_de": "Reaktionsformeln", "name_en-us": "Reaction Formulas", "name_es": "Fórmulas reactivas", "name_fr": "Formules de réaction", "name_it": "Reaction Formulas", "name_ja": "化学反応", "name_ko": "반응식", "name_ru": "Формулы реакций", "name_zh": "反应公式", "nameID": 294560, "parentGroupID": 2 }, "1850": { "description_de": "Chemische Prozesse, durch die aus Rohmaterialien neue Verbindungen entstehen", "description_en-us": "Chemical processes through which raw materials are made into compounds", "description_es": "Procesos químicos a través de los cuales las materias primas se convierten en compuestos.", "description_fr": "Processus chimiques grâce auxquels on obtient des composés à partir de matières premières", "description_it": "Chemical processes through which raw materials are made into compounds", "description_ja": "原料を各種化合物に変える化学反応プロセス", "description_ko": "화학 합성을 통해 원재료를 혼합물로 정제할 수 있는 반응식입니다.", "description_ru": "Химические процессы, преобразующие сырьё в простые химические соединения.", "description_zh": "将原材料转换成为化合物的化学反应", "descriptionID": 294563, "hasTypes": 1, "iconID": 2665, "name_de": "Einfache Reaktionen", "name_en-us": "Simple Reactions", "name_es": "Reacciones simples", "name_fr": "Réactions simples", "name_it": "Simple Reactions", "name_ja": "単体反応", "name_ko": "기본 반응식", "name_ru": "Простые реакции", "name_zh": "简单反应", "nameID": 294562, "parentGroupID": 1849 }, "1851": { "description_de": "Chemische Prozesse, die durch die Verbindungen zu komplexen Materialien vereinigt werden", "description_en-us": "Chemical processes through which compounds are combined into complex materials", "description_es": "Procesos químicos en los que se combinan los compuestos para formar materiales complejos.", "description_fr": "Processus chimiques grâce auxquels on obtient des matériaux complexes à partir de composés", "description_it": "Chemical processes through which compounds are combined into complex materials", "description_ja": "化合物同士が結合して複合物質に変化する化学変化プロセス", "description_ko": "화학 합성을 통해 혼합물을 복합물로 정제할 수 있는 반응식입니다.", "description_ru": "Химические процессы, преобразующие простые химические соединения в комплексные соединения .", "description_zh": "将化合物转换成为复杂材料的化学反应", "descriptionID": 294565, "hasTypes": 1, "iconID": 2665, "name_de": "Komplexe Reaktionen", "name_en-us": "Complex Reactions", "name_es": "Reacciones complejas", "name_fr": "Réactions complexes", "name_it": "Complex Reactions", "name_ja": "複合反応", "name_ko": "복합 반응식", "name_ru": "Сложные реакции", "name_zh": "复杂反应", "nameID": 294564, "parentGroupID": 1849 }, "1852": { "description_de": "Biochemische Prozesse, durch die aus Rohmaterialien neue Verbindungen entstehen", "description_en-us": "Biochemical processes through which raw materials are made into compounds", "description_es": "Procesos bioquímicos a través de los cuales las materias primas se convierten en compuestos.", "description_fr": "Processus biochimiques grâce auxquels on obtient des composés à partir de matières premières", "description_it": "Biochemical processes through which raw materials are made into compounds", "description_ja": "原料を各種化合物に変える有機化合プロセス", "description_ko": "생화학 합성을 통해 원재료를 혼합물로 정제할 수 있는 반응식입니다.", "description_ru": "Биохимические процессы, преобразующие сырьё в простые химические соединения.", "description_zh": "将原材料转换成为化合物的生化加工处理", "descriptionID": 294567, "hasTypes": 1, "iconID": 2665, "name_de": "Einfache Biochemische Reaktionen", "name_en-us": "Simple Biochemical Reactions", "name_es": "Reacciones bioquímicas simples", "name_fr": "Réactions biochimiques simples", "name_it": "Simple Biochemical Reactions", "name_ja": "有機単体反応", "name_ko": "기본 생화학 반응식", "name_ru": "Простые биохимические реакции", "name_zh": "简单生化反应", "nameID": 294566, "parentGroupID": 1849 }, "1853": { "description_de": "Biochemische Prozesse, die durch die Verbindungen zu komplexen Materialien vereinigt werden", "description_en-us": "Biochemical processes through which compounds are combined into complex materials", "description_es": "Procesos bioquímicos en los que se combinan los componentes para formar materiales complejos.", "description_fr": "Processus biochimiques grâce auxquels on obtient des matériaux complexes à partir de composés", "description_it": "Biochemical processes through which compounds are combined into complex materials", "description_ja": "化合物同士が結合して複合物質に変化する有機化合プロセス", "description_ko": "생화학 합성을 통해 혼합물을 복합물로 정제할 수 있는 반응식입니다.", "description_ru": "Биохимические процессы, преобразующие простые химические соединения в комплексные соединения.", "description_zh": "将化合物转换成为复杂材料的生化加工处理", "descriptionID": 294569, "hasTypes": 1, "iconID": 2665, "name_de": "Komplexe Biochemische Reaktionen", "name_en-us": "Complex Biochemical Reactions", "name_es": "Reacciones bioquímicas complejas", "name_fr": "Réactions biochimiques complexes", "name_it": "Complex Biochemical Reactions", "name_ja": "有機複合反応", "name_ko": "복합 생화학 반응식", "name_ru": "Сложные биохимические реакции", "name_zh": "复杂生化反应", "nameID": 294568, "parentGroupID": 1849 }, "1854": { "description_de": "Chemische Prozesse, durch die aus Rohmaterialien Hybridpolymere entstehen", "description_en-us": "Chemical processes through which raw materials are made into hybrid polymers", "description_es": "Procesos químicos a través de los cuales las materias primas se convierten en polímeros híbridos.", "description_fr": "Processus chimiques grâce auxquels on obtient des polymères hybrides à partir de matières premières", "description_it": "Chemical processes through which raw materials are made into hybrid polymers", "description_ja": "原料をハイブリッド重合体に変える化学反応プロセス", "description_ko": "화학 합성을 통해 원재료를 하이브리드 폴리머로 정제할 수 있는 반응식입니다.", "description_ru": "Химические процессы, преобразующиее сырьё в простые химические соединения.", "description_zh": "将原材料转换成为混合聚合物的化学反应", "descriptionID": 294571, "hasTypes": 1, "iconID": 2665, "name_de": "Polymerreaktionen", "name_en-us": "Polymer Reactions", "name_es": "Reacciones poliméricas", "name_fr": "Réactions de polymères", "name_it": "Polymer Reactions", "name_ja": "ポリマー反応", "name_ko": "폴리머 반응식", "name_ru": "Полимерные реакции", "name_zh": "聚合物反应", "nameID": 294570, "parentGroupID": 1849 }, "1855": { "description_de": "Materialien, die von Eisasteroiden abgebaut wurden.", "description_en-us": "Materials gathered from ice asteroids.", "description_es": "Materiales recogidos en los asteroides de hielo.", "description_fr": "Matériaux récupérés sur les astéroïdes de glace.", "description_it": "Materials gathered from ice asteroids.", "description_ja": "アイスアステロイドから収集された資源", "description_ko": "아이스 소행성에서 추출할 수 있는 자원입니다.", "description_ru": "Материалы, добываемые из ледяных астероидов.", "description_zh": "从冰矿小行星带中收集的材料。", "descriptionID": 294573, "hasTypes": 1, "iconID": 2554, "name_de": "Eiserze", "name_en-us": "Ice Ores", "name_es": "Menas de hielo", "name_fr": "Minerais de glace", "name_it": "Ice Ores", "name_ja": "アイス鉱石", "name_ko": "아이스", "name_ru": "Ледяные руды", "name_zh": "冰矿", "nameID": 294572, "parentGroupID": 1031 }, "1856": { "description_de": "Unterschiedliche Verbindungen von Asteroidenerzen.", "description_en-us": "Various compounds composed of asteroid ores.", "description_es": "Compuestos varios formados por menas asteroidales.", "description_fr": "Divers composés provenant des minerais d'astéroïdes.", "description_it": "Various compounds composed of asteroid ores.", "description_ja": "アステロイド鉱石を成分とする様々な化合物。", "description_ko": "소행성 광석으로 이루어진 다양한 혼합물입니다.", "description_ru": "Различные сплавы и соединения из астероидных материалов.", "description_zh": "由小行星矿物组成的多种化合物。", "descriptionID": 294575, "hasTypes": 1, "iconID": 2215, "name_de": "Legierungen & Verbindungen", "name_en-us": "Alloys & Compounds", "name_es": "Aleaciones y compuestos", "name_fr": "Alliages et composés", "name_it": "Alloys & Compounds", "name_ja": "合金材と化合物", "name_ko": "합금 및 혼합물", "name_ru": "Сплавы и композиты", "name_zh": "合金和复合物", "nameID": 294574, "parentGroupID": 1031 }, "1857": { "description_de": "Mineralien, die von raffinierten Asteroidenerzen abgebaut wurden.", "description_en-us": "Minerals harvested from refined asteroid ore.", "description_es": "Minerales obtenidos de menas asteroidales refinadas.", "description_fr": "Minéraux obtenus à partir du raffinage des minerais d'astéroïdes.", "description_it": "Minerals harvested from refined asteroid ore.", "description_ja": "アステロイド鉱石を精錬して得られる無機物。", "description_ko": "소행성 광석을 정제하여 추출한 미네랄입니다.", "description_ru": "Минералы, добываемые из переработанной астероидной руды.", "description_zh": "通过提炼从矿石中获取的矿物质。", "descriptionID": 294577, "hasTypes": 1, "iconID": 404, "name_de": "Mineralien", "name_en-us": "Minerals", "name_es": "Minerales", "name_fr": "Minéraux", "name_it": "Minerals", "name_ja": "無機物", "name_ko": "미네랄", "name_ru": "Минералы", "name_zh": "矿物", "nameID": 294576, "parentGroupID": 533 }, "1858": { "description_de": "Verschiedene biochemische Booster, die vor allem von Kapselpiloten genutzt werden.", "description_en-us": "Various types of biochemical boosters, most often used by pod pilots.", "description_es": "Potenciadores bioquímicos de naturaleza diversa que suelen usar los capsulistas.", "description_fr": "Divers types de boosters biochimiques souvent utilisés par les capsuliers.", "description_it": "Various types of biochemical boosters, most often used by pod pilots.", "description_ja": "様々なタイプの有機化合ブースター。主にポッドパイロットが使用。", "description_ko": "파일럿이 사용하는 다양한 종류의 생화학 부스터입니다.", "description_ru": "Различные типы биохимических боевых стимуляторов, обычно используемых капсулёрами.", "description_zh": "多种生化增效剂,常被飞行员使用。", "descriptionID": 294579, "hasTypes": 1, "iconID": 2664, "name_de": "Boostermaterialien", "name_en-us": "Booster Materials", "name_es": "Materiales potenciadores", "name_fr": "Matériaux de booster", "name_it": "Booster Materials", "name_ja": "ブースター原料", "name_ko": "부스터 재료", "name_ru": "Материалы для производства боевых стимуляторов", "name_zh": "增效剂材料", "nameID": 294578, "parentGroupID": 1034 }, "1859": { "description_de": "Diese seltene Gasform kann nur im Wurmlochraum gewonnen werden.", "description_en-us": "This rare form of gas can only be harvested in wormhole space.", "description_es": "Este tipo de gas poco común solo se puede recolectar en el espacio de agujeros de gusano.", "description_fr": "Cette forme rare de gaz peut seulement être collectée dans l'intérieur de trou de ver.", "description_it": "This rare form of gas can only be harvested in wormhole space.", "description_ja": "ワームホール宙域でのみ採取できる希少な種類のガス。", "description_ko": "웜홀 우주에서만 추출이 가능한 희귀한 가스입니다.", "description_ru": "Этот редкий тип газа встречается лишь в w-пространстве.", "description_zh": "这类稀有的气云只能采集自虫洞空间。", "descriptionID": 294582, "hasTypes": 1, "iconID": 3222, "name_de": "Fullerene", "name_en-us": "Fullerenes", "name_es": "Fullerenos", "name_fr": "Fullerènes", "name_it": "Fullerenes", "name_ja": "フラーレン", "name_ko": "풀러렌", "name_ru": "Фуллерены", "name_zh": "富勒烯", "nameID": 294581, "parentGroupID": 1032 }, "1860": { "description_de": "Material, das aus der Verbindung von Fullerenen gewonnen wurde.", "description_en-us": "Material made from combining fullerenes.", "description_es": "Material obtenido al combinar fullerenos.", "description_fr": "Matériau issu de la combinaison de fullerènes.", "description_it": "Material made from combining fullerenes.", "description_ja": "フラーレンから合成された素材。", "description_ko": "풀러렌을 통해 제작된 물질입니다.", "description_ru": "Материалы, получаемые путем сочетания различных типов фуллеренов.", "description_zh": "由富勒烯合成而来的材料。", "descriptionID": 294587, "hasTypes": 1, "iconID": 3751, "name_de": "Polymer-Materialien", "name_en-us": "Polymer Materials", "name_es": "Materiales poliméricos", "name_fr": "Matériaux de polymère", "name_it": "Polymer Materials", "name_ja": "ポリマー材", "name_ko": "폴리머 재료", "name_ru": "Полимерные материалы", "name_zh": "聚合物材料", "nameID": 294586, "parentGroupID": 1034 }, "1861": { "hasTypes": 0, "iconID": 3256, "name_de": "Bergungsmaterial", "name_en-us": "Salvage Materials", "name_es": "Materiales de recuperación", "name_fr": "Matériaux de récupération", "name_it": "Salvage Materials", "name_ja": "サルベージ資源", "name_ko": "샐비지 자원", "name_ru": "Демонтированные компоненты", "name_zh": "打捞材料", "nameID": 294588, "parentGroupID": 533 }, "1862": { "description_de": "Trotz ihres hohen Alters bergen diese Materialien unvorstellbare technologische Geheimnisse.", "description_en-us": "Despite being very old, these materials hold unimaginable technological secrets.", "description_es": "A pesar de su antigüedad, estos materiales guardan secretos tecnológicos inimaginables.", "description_fr": "Malgré leur grand âge, ces matériaux renferment des secrets technologiques insoupçonnables.", "description_it": "Despite being very old, these materials hold unimaginable technological secrets.", "description_ja": "その年代の古さからは想像もつかないような謎のテクノロジーを秘めた資源。", "description_ko": "오랜 세월이 지났음에도 불구하고 이 장치들의 기술은 아직도 베일에 싸여 있습니다.", "description_ru": "Несмотря на почтенный возраст этих находок, они способны удивить даже самых опытных инженеров.", "description_zh": "虽然这些材料经历了岁月洗礼,但是它们隐藏着难以想象的科技奥秘。", "descriptionID": 294590, "hasTypes": 1, "iconID": 3722, "name_de": "Antike Geborgene Materialien", "name_en-us": "Ancient Salvaged Materials", "name_es": "Materiales recuperados antiguos", "name_fr": "Matériaux récupérés anciens", "name_it": "Ancient Salvaged Materials", "name_ja": "古代サルベージ資源", "name_ko": "고대 샐비지 자원", "name_ru": "Демонтированные компоненты древних кораблей", "name_zh": "古老的打捞材料", "nameID": 294589, "parentGroupID": 1861 }, "1863": { "description_de": "Materialien, die aus zerstörten Raumschiffen geborgen wurden.", "description_en-us": "Materials salvaged from destroyed starships.", "description_es": "Materiales recuperados de naves destruidas.", "description_fr": "Matériaux récupérés sur les épaves de vaisseaux.", "description_it": "Materials salvaged from destroyed starships.", "description_ja": "破壊された宇宙船から回収された資源。", "description_ko": "파괴된 함선 잔해에서 샐비지된 부품입니다.", "description_ru": "Материалы, собранные в обломках кораблей.", "description_zh": "从被击毁的舰船上回收的材料。", "descriptionID": 294592, "hasTypes": 1, "iconID": 3260, "name_de": "Geborgene Materialien", "name_en-us": "Salvaged Materials", "name_es": "Materiales recuperados", "name_fr": "Matériaux récupérés", "name_it": "Salvaged Materials", "name_ja": "サルベージ資源", "name_ko": "샐비지 자원", "name_ru": "Демонтированные компоненты", "name_zh": "打捞材料", "nameID": 294591, "parentGroupID": 1861 }, "1864": { "description_de": "Außenposten-Bauplattformen", "description_en-us": "Outpost Construction Platforms", "description_es": "Plataformas de construcción de puestos avanzados.", "description_fr": "Plateformes de construction d'avant-poste", "description_it": "Outpost Construction Platforms", "description_ja": "アウトポスト建設プラットフォーム", "description_ko": "전초기지 건설 플랫폼", "description_ru": "Платформы для аванпостов", "description_zh": "哨站建筑平台", "descriptionID": 294594, "hasTypes": 1, "iconID": 3303, "name_de": "Bauplattformen", "name_en-us": "Construction Platforms", "name_es": "Plataformas de construcción", "name_fr": "Plateformes de construction", "name_it": "Construction Platforms", "name_ja": "建設プラットホーム", "name_ko": "건설 플랫폼", "name_ru": "Строительные платформы", "name_zh": "建筑平台", "nameID": 294593, "parentGroupID": 1021 }, "1865": { "description_de": "Modulare Gegenstände, die in der Fertigung von Raumstationen Verwendung finden.", "description_en-us": "Modular items used in the manufacture of Space Stations.", "description_es": "Objetos modulares usados en la fabricación de estaciones espaciales.", "description_fr": "Objets modulaires utilisés dans la fabrication de stations spatiales.", "description_it": "Modular items used in the manufacture of Space Stations.", "description_ja": "宇宙ステーションの製造に使われるモジュラー型アイテム。", "description_ko": "우주 정거장을 제작할 시 사용되는 모듈 아이템입니다.", "description_ru": "Модульные объекты, использующиеся для строительства космических станций.", "description_zh": "建造空间站所需要的模块化组件。", "descriptionID": 294596, "hasTypes": 1, "iconID": 2875, "name_de": "Strukturkomponenten", "name_en-us": "Structure Components", "name_es": "Componentes de estructuras", "name_fr": "Composants de structure", "name_it": "Structure Components", "name_ja": "ステーションの部品", "name_ko": "설비 구성품", "name_ru": "Компоненты сооружения", "name_zh": "建筑组件", "nameID": 294595, "parentGroupID": 1035 }, "1866": { "description_de": "Verbesserungen, die speziell für Außenposten der Amarr entworfen wurden.", "description_en-us": "Improvements specifically designed for Amarrian outposts.", "description_es": "Mejoras diseñadas especialmente para puestos avanzados amarrianos.", "description_fr": "Améliorations spécifiquement conçues pour les avant-postes amarr.", "description_it": "Improvements specifically designed for Amarrian outposts.", "description_ja": "アマーアウトポスト用に設計された改良。", "description_ko": "아마르 전초기지 관련 업그레이드입니다.", "description_ru": "Улучшения, разработанные специально для амаррских форпостов.", "description_zh": "为艾玛哨站设计的加强模块。", "descriptionID": 294598, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr-Verbesserungsplattformen", "name_en-us": "Amarr Improvement Platforms", "name_es": "Plataformas de mejora amarrianas", "name_fr": "Plateformes d'amélioration amarr", "name_it": "Amarr Improvement Platforms", "name_ja": "アマー専用プラットフォーム", "name_ko": "아마르 확장 플랫폼", "name_ru": "Амаррские", "name_zh": "艾玛强化平台", "nameID": 294597, "parentGroupID": 1022 }, "1867": { "description_de": "Verbesserungen, die speziell für Außenposten der Caldari entworfen wurden.", "description_en-us": "Improvements specifically designed for Caldari outposts.", "description_es": "Mejoras diseñadas especialmente para puestos avanzados caldaris.", "description_fr": "Améliorations spécifiquement conçues pour les avant-postes caldari.", "description_it": "Improvements specifically designed for Caldari outposts.", "description_ja": "カルダリアウトポスト用に設計された改良。", "description_ko": "칼다리 전초기지 관련 업그레이드입니다.", "description_ru": "Улучшения, разработанные специально для калдарских форпостов.", "description_zh": "为加达里哨站设计的加强模块。", "descriptionID": 294600, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari-Verbesserungsplattformen", "name_en-us": "Caldari Improvement Platforms", "name_es": "Plataformas de mejora caldaris", "name_fr": "Plateformes d'amélioration caldari", "name_it": "Caldari Improvement Platforms", "name_ja": "カルダリ専用プラットフォーム", "name_ko": "칼다리 확장 플랫폼", "name_ru": "Калдарские", "name_zh": "加达里强化平台", "nameID": 294599, "parentGroupID": 1022 }, "1868": { "description_de": "Verbesserungen, die speziell für Außenposten der Gallente entworfen wurden.", "description_en-us": "Improvements specifically designed for Gallentean outposts.", "description_es": "Mejoras diseñadas especialmente para puestos avanzados gallentes.", "description_fr": "Améliorations spécifiquement conçues pour les avant-postes gallente.", "description_it": "Improvements specifically designed for Gallentean outposts.", "description_ja": "ガレンテアウトポスト用に設計された改良。", "description_ko": "갈란테 전초기지 관련 업그레이드입니다.", "description_ru": "Улучшения, разработанные специально для галлентских форпостов.", "description_zh": "为盖伦特哨站设计的加强模块。", "descriptionID": 294602, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente-Verbesserungsplattformen", "name_en-us": "Gallente Improvement Platforms", "name_es": "Plataformas de mejora gallentes", "name_fr": "Plateformes d'amélioration gallente", "name_it": "Gallente Improvement Platforms", "name_ja": "ガレンテ専用プラットフォーム", "name_ko": "갈란테 확장 플랫폼", "name_ru": "Галлентские", "name_zh": "盖伦特强化平台", "nameID": 294601, "parentGroupID": 1022 }, "1869": { "description_de": "Verbesserungen, die speziell für Außenposten der Minmatar entworfen wurden.", "description_en-us": "Improvements specifically designed for Minmatar outposts.", "description_es": "Mejoras diseñadas especialmente para puestos avanzados minmatarianos.", "description_fr": "Améliorations spécifiquement conçues pour les avant-postes minmatar.", "description_it": "Improvements specifically designed for Minmatar outposts.", "description_ja": "ミンマターアウトポスト用に設計された改良。", "description_ko": "민마타 전초기지 관련 업그레이드입니다.", "description_ru": "Улучшения, разработанные специально для матарских форпостов.", "description_zh": "为米玛塔尔哨站设计的加强模块。", "descriptionID": 294604, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar-Verbesserungsplattformen", "name_en-us": "Minmatar Improvement Platforms", "name_es": "Plataformas de mejora minmatarianas", "name_fr": "Plateformes d'amélioration minmatar", "name_it": "Minmatar Improvement Platforms", "name_ja": "ミンマター専用プラットフォーム", "name_ko": "민마타 확장 플랫폼", "name_ru": "Минматарские", "name_zh": "米玛塔尔强化平台", "nameID": 294603, "parentGroupID": 1022 }, "1870": { "description_de": "Zusammengesetzte Blöcke mit Treibstoff für Sternenbasen und andere Strukturen.", "description_en-us": "Assembled blocks of fuel for starbases and other structures.", "description_es": "Bloques de combustible ensamblados para bases estelares y otras estructuras.", "description_fr": "Blocs assemblés de carburant pour les bases stellaires et autres structures.", "description_it": "Assembled blocks of fuel for starbases and other structures.", "description_ja": "スターベースおよびその他の建造物の燃料の組み立てブロック", "description_ko": "스타베이스 및 스탠드업 구조물 운영에 필요한 연료 블록입니다.", "description_ru": "Собранные топливные блоки для ПОСов и прочих объектов.", "description_zh": "供母星和其它建筑使用的组装好的燃料块。", "descriptionID": 294606, "hasTypes": 1, "iconID": 10835, "name_de": "Treibstoffblöcke", "name_en-us": "Fuel Blocks", "name_es": "Bloques de combustible", "name_fr": "Blocs de carburant", "name_it": "Fuel Blocks", "name_ja": "燃料ブロック", "name_ko": "연료 블록", "name_ru": "Топливные блоки", "name_zh": "燃料块", "nameID": 294605, "parentGroupID": 1035 }, "1872": { "description_de": "Verschiedene Gegenstände, die in Forschung und Erfindung Verwendung finden", "description_en-us": "Various items used in research and invention", "description_es": "Objetos varios usados en la investigación y la invención.", "description_fr": "Différents objets utilisés dans les processus de recherche et d'invention", "description_it": "Various items used in research and invention", "description_ja": "研究・発明に使用する各種アイテム", "description_ko": "연구 및 인벤션에 사용되는 아이템입니다.", "description_ru": "Разнообразные материалы, используемые в производстве и исследованиях", "description_zh": "研究和发明中用到的各种物品", "descriptionID": 294613, "hasTypes": 0, "iconID": 2225, "name_de": "Forschungsausrüstung", "name_en-us": "Research Equipment", "name_es": "Instrumental de investigación", "name_fr": "Équipement de recherche", "name_it": "Research Equipment", "name_ja": "研究装置", "name_ko": "연구 장비", "name_ru": "Исследовательское оборудование", "name_zh": "研究设备", "nameID": 294612, "parentGroupID": 475 }, "1873": { "hasTypes": 1, "iconID": 2885, "name_de": "Dekodierer", "name_en-us": "Decryptors", "name_es": "Desencriptadores", "name_fr": "Décrypteurs", "name_it": "Decryptors", "name_ja": "解読器", "name_ko": "해독기", "name_ru": "Файлы данных", "name_zh": "解码器", "nameID": 294614, "parentGroupID": 1872 }, "1880": { "description_de": "Forschungsdaten", "description_en-us": "Research Data", "description_es": "Datos de investigación.", "description_fr": "Données de recherche", "description_it": "Research Data", "description_ja": "研究データ", "description_ko": "연구 데이터", "description_ru": "Данные исследований", "description_zh": "研究数据", "descriptionID": 294630, "hasTypes": 1, "iconID": 3233, "name_de": "Datenkerne", "name_en-us": "Datacores", "name_es": "Núcleos de datos", "name_fr": "Banques de données", "name_it": "Datacores", "name_ja": "データコア", "name_ko": "데이터코어", "name_ru": "Инфоблоки", "name_zh": "数据核心", "nameID": 294629, "parentGroupID": 1872 }, "1883": { "description_de": "Komponenten, die bei der Produktion von Tech II Capital-Schiffen verwendet werden.", "description_en-us": "Components used in the manufacture of Tech II capital ships.", "description_es": "Componentes usados en la fabricación de naves capitales T2.", "description_fr": "Composants utilisés dans la fabrication de vaisseaux capitaux Tech II.", "description_it": "Components used in the manufacture of Tech II capital ships.", "description_ja": "T2主力艦の製造に使用される部品。", "description_ko": "테크 II 캐피탈 함선 제작에 사용되는 부품입니다.", "description_ru": "Компоненты, используемые для производства кораблей и оборудования категории Tech II.", "description_zh": "制造二级科技旗舰级舰船所使用的组件。", "descriptionID": 294638, "hasTypes": 0, "iconID": 2193, "name_de": "Fortschrittliche Capital-Komponenten", "name_en-us": "Advanced Capital Components", "name_es": "Componentes de naves capitales avanzadas", "name_fr": "Composants capitaux avancés", "name_it": "Advanced Capital Components", "name_ja": "高性能主力艦部品", "name_ko": "상급 캐피탈 부품", "name_ru": "Усовершенствованные компоненты КБТ", "name_zh": "高级旗舰组件", "nameID": 294637, "parentGroupID": 1035 }, "1884": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 294639, "parentGroupID": 1883 }, "1885": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 294640, "parentGroupID": 1883 }, "1886": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 294641, "parentGroupID": 1883 }, "1887": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 294642, "parentGroupID": 1883 }, "1888": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 294643, "parentGroupID": 65 }, "1889": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 294644, "parentGroupID": 65 }, "1897": { "hasTypes": 0, "iconID": 2890, "name_de": "Fraktionsmaterialien", "name_en-us": "Faction Materials", "name_es": "Materiales faccionarios", "name_fr": "Matériaux de faction", "name_it": "Faction Materials", "name_ja": "勢力別資源", "name_ko": "팩션 자원", "name_ru": "Материалы независимых организаций", "name_zh": "势力材料", "nameID": 294751, "parentGroupID": 533 }, "1898": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製造に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые при производстве особого оборудования организаций.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 294755, "hasTypes": 1, "iconID": 2887, "name_de": "Angel Cartel", "name_en-us": "Angel Cartel", "name_es": "Cártel de los Ángeles", "name_fr": "Cartel angel", "name_it": "Angel Cartel", "name_ja": "エンジェルカルテル", "name_ko": "엔젤 카르텔", "name_ru": "Материалы картеля «Ангелов»", "name_zh": "天使", "nameID": 294754, "parentGroupID": 1897 }, "1899": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製造に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые при производстве особого оборудования организаций.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 294759, "hasTypes": 1, "iconID": 2890, "name_de": "Blood Raiders", "name_en-us": "Blood Raiders", "name_es": "Saqueadores Sanguinarios", "name_fr": "Blood Raiders", "name_it": "Blood Raiders", "name_ja": "ブラッドレイダー", "name_ko": "블러드 레이더", "name_ru": "«Союз охотников за кровью»", "name_zh": "血袭者", "nameID": 294758, "parentGroupID": 1897 }, "1900": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製造に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые при производстве особого оборудования организаций.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 294761, "hasTypes": 1, "iconID": 2888, "name_de": "Guristas", "name_en-us": "Guristas", "name_es": "Guristas", "name_fr": "Guristas", "name_it": "Guristas", "name_ja": "ガリスタス", "name_ko": "구리스타스", "name_ru": "Идентификаторы «гуристас»", "name_zh": "古斯塔斯", "nameID": 294760, "parentGroupID": 1897 }, "1901": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製造に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые при производстве особого оборудования организаций.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 294763, "hasTypes": 1, "iconID": 2890, "name_de": "Serpentis", "name_en-us": "Serpentis", "name_es": "Serpentis", "name_fr": "Serpentis", "name_it": "Serpentis", "name_ja": "サーペンティス", "name_ko": "서펜티스", "name_ru": "Идентификаторы «Серпентис»", "name_zh": "天蛇", "nameID": 294762, "parentGroupID": 1897 }, "1902": { "description_de": "Artefakte der Sleeper-Zivilisation.", "description_en-us": "Artifacts of the Sleeper civilization.", "description_es": "Artefactos de la civilización sleeper.", "description_fr": "Reliques de la civilisation sleeper.", "description_it": "Artifacts of the Sleeper civilization.", "description_ja": "スリーパー文明の遺物。", "description_ko": "슬리퍼 문명의 유물입니다.", "description_ru": "Артефакты цивилизации Спящих.", "description_zh": "冬眠者文明的物品。", "descriptionID": 294765, "hasTypes": 1, "iconID": 2889, "name_de": "Sleeper", "name_en-us": "Sleeper", "name_es": "Sleeper", "name_fr": "Sleeper", "name_it": "Sleeper", "name_ja": "スリーパー", "name_ko": "슬리퍼", "name_ru": "Спящих", "name_zh": "冬眠者", "nameID": 294764, "parentGroupID": 1897 }, "1903": { "description_de": "Artefakte der Talocan-Zivilisation.", "description_en-us": "Artifacts of the Talocan civilization.", "description_es": "Artefactos de la civilización talocana.", "description_fr": "Reliques de la civilisation talocan.", "description_it": "Artifacts of the Talocan civilization.", "description_ja": "タロカン文明の遺物。", "description_ko": "탈로칸 문명의 유물입니다.", "description_ru": "Артефакты цивилизации Talocan.", "description_zh": "塔洛迦文明的物品。", "descriptionID": 294767, "hasTypes": 1, "iconID": 2886, "name_de": "Talocan", "name_en-us": "Talocan", "name_es": "Talocan", "name_fr": "Talocan", "name_it": "Talocan", "name_ja": "タロカン", "name_ko": "탈로칸", "name_ru": "Талокан", "name_zh": "塔洛迦", "nameID": 294766, "parentGroupID": 1897 }, "1904": { "description_de": "Artefakte der Yan Jung-Zivilisation.", "description_en-us": "Artifacts of the Yan Jung civilization.", "description_es": "Artefactos de la nación Yan Jung.", "description_fr": "Reliques de la civilisation yan jung.", "description_it": "Artifacts of the Yan Jung civilization.", "description_ja": "ヤン・ユング文明の遺物。", "description_ko": "얀 정 문명의 유물입니다.", "description_ru": "Артефакты цивилизации Yan Jung", "description_zh": "殷郡文明的物品。", "descriptionID": 294769, "hasTypes": 1, "iconID": 2890, "name_de": "Yan Jung", "name_en-us": "Yan Jung", "name_es": "Yan Jung", "name_fr": "Yan Jung", "name_it": "Yan Jung", "name_ja": "ヤン・ユング", "name_ko": "얀 정", "name_ru": "Ян-Джун", "name_zh": "殷郡", "nameID": 294768, "parentGroupID": 1897 }, "1905": { "description_de": "Artefakte der Takmahl-Zivilisation.", "description_en-us": "Artifacts of the Takmahl civilization.", "description_es": "Artefactos de la civilización takmahl.", "description_fr": "Reliques de la civilisation takmahl.", "description_it": "Artifacts of the Takmahl civilization.", "description_ja": "タカマヒル文明の遺物。", "description_ko": "타크말 문명의 유물", "description_ru": "Артефакты цивилизации Takmahl.", "description_zh": "塔克玛文明的物品。", "descriptionID": 294771, "hasTypes": 1, "iconID": 2886, "name_de": "Takmahl", "name_en-us": "Takmahl", "name_es": "Takmahl", "name_fr": "Takmahl", "name_it": "Takmahl", "name_ja": "タカマヒル", "name_ko": "타크말", "name_ru": "Такмал", "name_zh": "塔克玛", "nameID": 294770, "parentGroupID": 1897 }, "1906": { "description_de": "Einzelteile zerstörter Raubdrohnen können für verbesserte Leistung in die neuste Drohnentechnologie eingebaut werden.", "description_en-us": "Salvaged bits and pieces from destroyed Rogue Drones, can be integrated with current drone technology for improved performance.", "description_es": "Restos y piezas recuperados de los drones rebeldes destruidos que se pueden dotar de tecnología de drones actualizada para mejorar el rendimiento.", "description_fr": "Pièces récupérées des drones renégats détruits pouvant être intégrées à la technologie de drone actuelle pour renforcer les performances.", "description_it": "Salvaged bits and pieces from destroyed Rogue Drones, can be integrated with current drone technology for improved performance.", "description_ja": "破壊されたローグドローンからサルベージした細かい部品。最新のドローン技術と組み合わせてパフォーマンスの向上に役立てることができる。", "description_ko": "로그 드론의 잔해 및 파편에서 샐비지한 부품을 드론에 적용하여 성능을 향상시킬 수 있습니다.", "description_ru": "Разнообразные части и обломки восставших дронов, пригодны к интеграции в современные модели дронов для повышения их эффективности.", "description_zh": "从损坏的自由无人机上回收得来的一些零部件。结合现有无人机技术,可以用来加强无人机的性能。", "descriptionID": 294773, "hasTypes": 1, "iconID": 3335, "name_de": "Raubdrohnen", "name_en-us": "Rogue Drones", "name_es": "Drones rebeldes", "name_fr": "Drones renégats", "name_it": "Rogue Drones", "name_ja": "ローグドローン", "name_ko": "로그 드론", "name_ru": "Дронов", "name_zh": "自由无人机", "nameID": 294772, "parentGroupID": 1897 }, "1907": { "description_de": "Datenbanken, die für Tech II Forschungsaufträge benutzt werden.", "description_en-us": "Databases used in Tech II research jobs.", "description_es": "Bases de datos empleadas en los trabajos de investigación de T2.", "description_fr": "Bases de données utilisées dans les travaux de recherche Tech II.", "description_it": "Databases used in Tech II research jobs.", "description_ja": "T2研究ジョブに使用されるデータベース", "description_ko": "테크 II 연구에 사용되는 데이터베이스입니다.", "description_ru": "Базы данных, используемые при исследовании проектов второй техкатегории", "description_zh": "二级科技相关的研究项目的数据库。", "descriptionID": 294780, "hasTypes": 1, "iconID": 2225, "name_de": "R.Db", "name_en-us": "R.Db", "name_es": "BDI", "name_fr": "B.d.r.", "name_it": "R.Db", "name_ja": "R.Db", "name_ko": "연구 데이터베이스", "name_ru": "Базы данных", "name_zh": "R.Db", "nameID": 294779, "parentGroupID": 1872 }, "1908": { "description_de": "Konstruktionswerkzeuge, die in der Tech II Produktion benutzt werden.", "description_en-us": "Construction tools used in Tech II manufacturing.", "description_es": "Herramientas de construcción empleadas en las labores de fabricación de T2.", "description_fr": "Outils de construction utilisés dans la production Tech II.", "description_it": "Construction tools used in Tech II manufacturing.", "description_ja": "T2製品の製造で使用されるツール。", "description_ko": "테크 II 제조에 사용되는 건설 장치입니다.", "description_ru": "Сборочные инструменты, используемые при произодстве оборудования второй техкатегории", "description_zh": "制造二级科技装备相关的生产工具。", "descriptionID": 294782, "hasTypes": 1, "iconID": 2226, "name_de": "R.A.M.", "name_en-us": "R.A.M.", "name_es": "MER", "name_fr": "M.R.A.", "name_it": "R.A.M.", "name_ja": "R.A.M.", "name_ko": "R.A.M.", "name_ru": "Сборочные системы", "name_zh": "R.A.M.", "nameID": 294781, "parentGroupID": 1035 }, "1909": { "hasTypes": 1, "iconID": 3736, "name_de": "Antike Relikte", "name_en-us": "Ancient Relics", "name_es": "Reliquias antiguas", "name_fr": "Reliques antiques", "name_it": "Ancient Relics", "name_ja": "古代遺物", "name_ko": "고대 유물", "name_ru": "Древние артефакты", "name_zh": "古文物", "nameID": 294857, "parentGroupID": 1872 }, "1912": { "hasTypes": 1, "iconID": 2703, "name_de": "Bauplattformen", "name_en-us": "Construction Platforms", "name_es": "Plataformas de construcción", "name_fr": "Plateformes de construction", "name_it": "Construction Platforms", "name_ja": "建設プラットホーム", "name_ko": "건설 플랫폼", "name_ru": "Строительные платформы", "name_zh": "建筑平台", "nameID": 294868, "parentGroupID": 798 }, "1913": { "hasTypes": 1, "iconID": 2703, "name_de": "Strukturkomponenten", "name_en-us": "Structure Components", "name_es": "Componentes de estructuras", "name_fr": "Composants de structure", "name_it": "Structure Components", "name_ja": "ステーションの部品", "name_ko": "설비 구성품", "name_ru": "Компоненты сооружения", "name_zh": "建筑组件", "nameID": 294869, "parentGroupID": 800 }, "1918": { "hasTypes": 1, "iconID": 2703, "name_de": "R.A.M.", "name_en-us": "R.A.M.", "name_es": "MER", "name_fr": "M.R.A.", "name_it": "R.A.M.", "name_ja": "R.A.M.", "name_ko": "R.A.M.", "name_ru": "Сборочные системы", "name_zh": "R.A.M.", "nameID": 294874, "parentGroupID": 800 }, "1919": { "hasTypes": 1, "iconID": 2703, "name_de": "R.Db", "name_en-us": "R.Db", "name_es": "BDI", "name_fr": "B.d.r.", "name_it": "R.Db", "name_ja": "R.Db", "name_ko": "연구 데이터베이스", "name_ru": "Базы данных", "name_zh": "R.Db", "nameID": 294875, "parentGroupID": 1522 }, "1920": { "hasTypes": 1, "iconID": 2703, "name_de": "Treibstoffblöcke", "name_en-us": "Fuel Blocks", "name_es": "Bloques de combustible", "name_fr": "Blocs de carburant", "name_it": "Fuel Blocks", "name_ja": "燃料ブロック", "name_ko": "연료 블록", "name_ru": "Топливные блоки", "name_zh": "燃料块", "nameID": 294876, "parentGroupID": 800 }, "1921": { "description_de": "Verankerbare Kompressionssanlagen.", "description_en-us": "Anchorable compression structures.", "description_es": "Estructuras de compresión anclables.", "description_fr": "Structures de compression ancrables.", "description_it": "Anchorable compression structures.", "description_ja": "係留可能な圧縮用建造物。", "description_ko": "고정 가능한 압착시설입니다.", "description_ru": "Передвижные блоки сжатия сырья.", "description_zh": "可锚定的用于压缩矿石材料的建筑。", "descriptionID": 294900, "hasTypes": 1, "iconID": 2222, "name_de": "Kompressionsanlage", "name_en-us": "Compression Array", "name_es": "Matriz de compresión", "name_fr": "Module de compression", "name_it": "Compression Array", "name_ja": "圧縮施設", "name_ko": "압착시설", "name_ru": "Блоки сжатия руды и льда", "name_zh": "压缩阵列", "nameID": 294899, "parentGroupID": 1285 }, "1922": { "description_de": "Für Kapselpiloten verfügbare Dienste beinhalten PLEX, Multiples Pilotentraining, Zertifikate zur Neuanpassung des Piloten und Skilltauschgegenstände", "description_en-us": "Services available to capsuleers include PLEX, Multiple Pilot Training, Pilot's Body Resculpt Certificates, and Skill Trading items", "description_es": "Entre los servicios disponibles para capsulistas, se incluyen PLEX, entrenamiento simultáneo de pilotos, certificados de remodelado corporal y artículos de mejora y modificación de habilidades.", "description_fr": "Les services à disposition des capsuliers incluent les PLEX, les certificats d'entraînements de plusieurs personnages, les certificats de remodelage physique du pilote et les objets liés au commerce de compétences.", "description_it": "Services available to capsuleers include PLEX, Multiple Pilot Training, Pilot's Body Resculpt Certificates, and Skill Trading items", "description_ja": "カプセラが利用できるサービスには、パイロットライセンスの拡張(PLEX)、複数のパイロットトレーニング、パイロットの身体骨格再調整証明書、スキルのトレードなどが含まれます", "description_ko": "캡슐리어에게 제공되는 서비스로 PLEX, 다중 파일럿 훈련 (MCT), 외형 변경 허가증, 그리고 스킬 포인트 거래 아이템을 다룹니다.", "description_ru": "К услугам для пилотов относятся плексы, сертификаты одновременного обучения пилотов, сертификаты изменения внешности пилотов, а также СП-экстракторы и СП-инъекторы.", "description_zh": "克隆飞行员可以使用的额外服务,包括飞行员执照、多人物技能训练、人物重塑和技能交易物品", "descriptionID": 296382, "hasTypes": 0, "iconID": 21481, "name_de": "Pilotendienste", "name_en-us": "Pilot's Services", "name_es": "Servicios de piloto", "name_fr": "Services pour les pilotes", "name_it": "Pilot's Services", "name_ja": "パイロットのサービス", "name_ko": "파일럿 서비스", "name_ru": "Услуги для пилотов", "name_zh": "飞行员服务", "nameID": 294916 }, "1923": { "description_de": "PLEX ist ein Gegenstand, der auf dem Markt zwischen Spielern getauscht werden kann. PLEX können auch im New Eden Store eingesetzt werden, um Ihren Account auf den Klonstatus Omega aufzuwerten, virtuelle Güter zu kaufen oder andere Account-Dienste zu aktivieren.", "description_en-us": "PLEX is an item that can be traded between players on the market. PLEX can also be used in the New Eden Store to upgrade your account to Omega Clone State, purchase virtual goods, and activate other account services.", "description_es": "La PLEX es la divisa de cambio en el mercado. También puedes usar PLEX en la tienda de Nuevo Edén para mejorar tu cuenta al estatus de clon Omega, comprar artículos virtuales y activar otros servicios.", "description_fr": "Les PLEX sont des biens physiques, échangeables entre joueurs sur le marché. Elles peuvent également être utilisées dans le magasin New Eden pour faire passer votre compte au statut de clone Omega, acheter des marchandises virtuelles ou activer divers services de compte.", "description_it": "PLEX is an item that can be traded between players on the market. PLEX can also be used in the New Eden Store to upgrade your account to Omega Clone State, purchase virtual goods, and activate other account services.", "description_ja": "PLEXはマーケットにてプレイヤー間で売買できるアイテムです。PLEXはニューエデンストアでアカウントのオメガクローン状態へのアップグレード、バーチャルグッズの購入、その他アカウントサービスの有効化に使うことができます。", "description_ko": "PLEX는 거래소에서 다른 플레이어와 거래할 수 있는 아이템입니다. 뉴에덴 스토어에서 PLEX를 사용하여 계정을 오메가 클론 상태로 업그레이드할 수 있으며 각종 상품 및 게임 서비스를 구매할 수 있습니다.", "description_ru": "Плексы — это игровая валюта, которую можно покупать и продавать в торговой системе. Кроме того, плексы можно использовать в игровом магазине для оплаты омега-статуса, покупки виртуальных товаров и иных услуг, предназначенных для учётной записи.", "description_zh": "伊甸币是玩家可以在市场交易的物品。你可以使用伊甸币,在新伊甸商城中将账号升级到欧米伽克隆、购买虚拟物品,并激活其它账号服务。", "descriptionID": 296374, "hasTypes": 1, "iconID": 21481, "name_de": "PLEX", "name_en-us": "PLEX", "name_es": "PLEX", "name_fr": "PLEX", "name_it": "PLEX", "name_ja": "パイロットライセンスエクステンション(PLEX)", "name_ko": "PLEX", "name_ru": "Плексы", "name_zh": "飞行员执照", "nameID": 294918, "parentGroupID": 1922 }, "1924": { "hasTypes": 1, "iconID": 1443, "name_de": "Expeditionsfregatten", "name_en-us": "Expedition Frigates", "name_es": "Fragatas expedicionarias", "name_fr": "Frégates d'expédition", "name_it": "Expedition Frigates", "name_ja": "長距離フリゲート", "name_ko": "탐사 프리깃", "name_ru": "Разведочно-буровые фрегаты", "name_zh": "勘探护卫舰", "nameID": 295182, "parentGroupID": 1364 }, "1931": { "hasTypes": 1, "iconID": 98, "name_de": "Warpbeschleuniger", "name_en-us": "Warp Accelerators", "name_es": "Aceleradores de warp", "name_fr": "Accélérateurs de warp", "name_it": "Warp Accelerators", "name_ja": "ワープ加速器", "name_ko": "워프 가속기", "name_ru": "Варп-ускорители", "name_zh": "跃迁加速装置", "nameID": 295696, "parentGroupID": 132 }, "1932": { "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Abfangjäger", "name_en-us": "Special Edition Interceptors", "name_es": "Interceptores de edición especial", "name_fr": "Intercepteurs édition spéciale", "name_it": "Special Edition Interceptors", "name_ja": "特別版要撃型フリゲート", "name_ko": "인터셉터", "name_ru": "Малосерийные перехватчики", "name_zh": "特别版截击舰", "nameID": 295888, "parentGroupID": 1612 }, "1935": { "hasTypes": 1, "iconID": 111, "name_de": "Warpstörer", "name_en-us": "Warp Disruptors", "name_es": "Disruptores de warp", "name_fr": "Perturbateurs de warp", "name_it": "Warp Disruptors", "name_ja": "ワープ妨害器", "name_ko": "워프 디스럽터", "name_ru": "Варп-подавители", "name_zh": "跃迁扰断器", "nameID": 296252, "parentGroupID": 657 }, "1936": { "hasTypes": 1, "iconID": 3433, "name_de": "Warpunterbrecher", "name_en-us": "Warp Scramblers", "name_es": "Distorsionadores de warp", "name_fr": "Inhibiteurs de warp", "name_it": "Warp Scramblers", "name_ja": "ワープスクランブラー", "name_ko": "워프 스크램블러", "name_ru": "Варп-глушители", "name_zh": "跃迁扰频器", "nameID": 296253, "parentGroupID": 657 }, "1937": { "hasTypes": 1, "iconID": 2990, "name_de": "Unterbrechungsfeldwerfer", "name_en-us": "Interdiction Sphere Launchers", "name_es": "Lanzaesferas de interdicción", "name_fr": "Lanceurs de sphère d'interdiction", "name_it": "Interdiction Sphere Launchers", "name_ja": "インターディクションスフィアランチャー", "name_ko": "인터딕션 런처", "name_ru": "ПУ зондов варп-заграждения", "name_zh": "拦截泡发射器", "nameID": 296257, "parentGroupID": 657 }, "1938": { "hasTypes": 1, "iconID": 2703, "name_de": "Warpstörer", "name_en-us": "Warp Disruptors", "name_es": "Disruptores de warp", "name_fr": "Perturbateurs de warp", "name_it": "Warp Disruptors", "name_ja": "ワープ妨害器", "name_ko": "워프 디스럽터", "name_ru": "Варп-подавители", "name_zh": "跃迁扰断器", "nameID": 296264, "parentGroupID": 1566 }, "1939": { "hasTypes": 1, "iconID": 2703, "name_de": "Warpunterbrecher", "name_en-us": "Warp Scramblers", "name_es": "Distorsionadores de warp", "name_fr": "Inhibiteurs de warp", "name_it": "Warp Scramblers", "name_ja": "ワープスクランブラー", "name_ko": "워프 스크램블러", "name_ru": "Варп-глушители", "name_zh": "跃迁扰频器", "nameID": 296265, "parentGroupID": 1566 }, "1940": { "hasTypes": 1, "iconID": 2703, "name_de": "Unterbrechungsfeldwerfer", "name_en-us": "Interdiction Sphere Launchers", "name_es": "Lanzaesferas de interdicción", "name_fr": "Lanceurs de sphère d'interdiction", "name_it": "Interdiction Sphere Launchers", "name_ja": "インターディクションスフィアランチャー", "name_ko": "인터딕션 런처", "name_ru": "ПУ зондов варп-заграждения", "name_zh": "拦截泡发射器", "nameID": 296266, "parentGroupID": 1566 }, "1941": { "hasTypes": 1, "iconID": 98, "name_de": "Sprung-Vorwärmer", "name_en-us": "Jump Economizers", "name_es": "Economizadores de salto", "name_fr": "Économiseurs de saut", "name_it": "Jump Economizers", "name_ja": "ジャンプエコノマイザー", "name_ko": "점프 연료 절감기", "name_ru": "Экономайзеры гипердвигателей", "name_zh": "跳跃节能装置", "nameID": 296288, "parentGroupID": 132 }, "1942": { "description_de": "Verschiedene Anpassungsdienste für Kapselpiloten", "description_en-us": "Services available for various customization for capsuleers", "description_es": "Servicios disponibles para diferentes formas de personalización de capsulistas.", "description_fr": "Services disponibles pour différentes personnalisation pour capsuliers", "description_it": "Services available for various customization for capsuleers", "description_ja": "カプセラに各種カスタマイズを施すためのサービス", "description_ko": "캡슐리어 전용 서비스입니다.", "description_ru": "Различные услуги для капсулёров", "description_zh": "供飞行员使用的各种定制服务", "descriptionID": 296526, "hasTypes": 1, "iconID": 21335, "name_de": "Pilotendienste", "name_en-us": "Pilot's Services", "name_es": "Servicios de piloto", "name_fr": "Services pour les pilotes", "name_it": "Pilot's Services", "name_ja": "パイロットのサービス", "name_ko": "파일럿 서비스", "name_ru": "Услуги для пилотов", "name_zh": "飞行员服务", "nameID": 296375, "parentGroupID": 1922 }, "1943": { "hasTypes": 1, "iconID": 21204, "name_de": "Kopfbedeckungen", "name_en-us": "Headwear", "name_es": "Accesorios para la cabeza", "name_fr": "Couvre-chefs", "name_it": "Headwear", "name_ja": "ヘッドウェア", "name_ko": "머리 장식", "name_ru": "Головные уборы", "name_zh": "头饰", "nameID": 296376, "parentGroupID": 1407 }, "1944": { "hasTypes": 1, "iconID": 21275, "name_de": "Unterkörper, Extras", "name_en-us": "Bottoms, extras", "name_es": "Partes de abajo, extra", "name_fr": "Pantalons, accessoires", "name_it": "Bottoms, extras", "name_ja": "ボトムス、その他", "name_ko": "기타 하의", "name_ru": "Низ, дополнительно", "name_zh": "其他下装", "nameID": 296377, "parentGroupID": 1402 }, "1945": { "description_de": "Blaupause der Kompressionsanlage.", "description_en-us": "Blueprint of the Compression Array.", "description_es": "Plano de la matriz de compresión.", "description_fr": "Plan de construction du module de compression", "description_it": "Blueprint of the Compression Array.", "description_ja": "圧縮施設のブループリント。", "description_ko": "압착시설 블루프린트입니다.", "description_ru": "Чертеж блока сжатия руды и льда.", "description_zh": "压缩阵列的蓝图", "descriptionID": 296458, "hasTypes": 1, "iconID": 2703, "name_de": "Kompressionsanlage", "name_en-us": "Compression Array", "name_es": "Matriz de compresión", "name_fr": "Module de compression", "name_it": "Compression Array", "name_ja": "圧縮施設", "name_ko": "압착시설", "name_ru": "Блоки сжатия руды и льда", "name_zh": "压缩阵列", "nameID": 296457, "parentGroupID": 1841 }, "1949": { "description_de": "Entwürfe für ORE-Frachter", "description_en-us": "Designs for ORE freighters.", "description_es": "Diseños de los cargueros de ORE.", "description_fr": "Conception de transport de fret ORE.", "description_it": "Designs for ORE freighters.", "description_ja": "ORE社超大型輸送艦の設計", "description_ko": "ORE 프레이터 설계입니다.", "description_ru": "Проекты фрейтеров ОРЭ.", "description_zh": "联合矿业货舰设计。", "descriptionID": 297632, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 297631, "parentGroupID": 787 }, "1950": { "description_de": "Von ORE entwickelte Frachter.", "description_en-us": "Freighters designed by ORE.", "description_es": "Cargueros diseñados por ORE.", "description_fr": "Transports de fret conçus par ORE.", "description_it": "Freighters designed by ORE.", "description_ja": "OREにより設計された超大型輸送艦", "description_ko": "ORE에서 설계한 프레이터입니다.", "description_ru": "Фрейтеры разработки ОРЭ.", "description_zh": "联合矿业设计的货舰。", "descriptionID": 297634, "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 297633, "parentGroupID": 766 }, "1951": { "hasTypes": 0, "iconID": 1443, "name_de": "Taktische Zerstörer", "name_en-us": "Tactical Destroyers", "name_es": "Destructores tácticos", "name_fr": "Destroyers tactique", "name_it": "Tactical Destroyers", "name_ja": "戦術駆逐艦", "name_ko": "전술 디스트로이어", "name_ru": "Многорежимные эсминцы", "name_zh": "战术驱逐舰", "nameID": 298043, "parentGroupID": 1373 }, "1952": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 298044, "parentGroupID": 1951 }, "1953": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305008, "parentGroupID": 1951 }, "1954": { "description_de": "Super Kerr-induzierte Nanobeschichtungen (kurz: Schiffslackierungen oder SKINs) die das Aussehen eines Schiffs verändern.", "description_en-us": "Super Kerr-Induced Nanocoatings that modify the visual look of a ship", "description_es": "Supernanorrevestimientos inducidos por Kerr que modifican el aspecto de la nave.", "description_fr": "Les SKIN (nanorevêtements générés par le super Kerr) modifient l'aspect esthétique d'un vaisseau.", "description_it": "Super Kerr-Induced Nanocoatings that modify the visual look of a ship", "description_ja": "艦船の外観を変えてしまう超カー誘発性ナノコーティング", "description_ko": "함선의 외형을 변화시키는 슈퍼커나노코팅(SKIN)입니다.", "description_ru": "Шаблоны для перекраски кораблей, меняющие их внешний вид", "description_zh": "超级的克尔效应诱导纳米涂层,可用来改变舰船外观", "descriptionID": 305466, "hasTypes": 0, "iconID": 21420, "name_de": "SKINs", "name_en-us": "Ship SKINs", "name_es": "SKIN para naves", "name_fr": "SKIN de vaisseau", "name_it": "Ship SKINs", "name_ja": "艦船のSKIN", "name_ko": "함선 SKIN", "name_ru": "Шаблоны для перекраски кораблей", "name_zh": "舰船涂装", "nameID": 305465 }, "1955": { "hasTypes": 0, "iconID": 21420, "name_de": "Schlachtkreuzer", "name_en-us": "Battlecruisers", "name_es": "Cruceros de combate", "name_fr": "Croiseurs de bataille", "name_it": "Battlecruisers", "name_ja": "巡洋戦艦", "name_ko": "배틀크루저", "name_ru": "Линейные крейсеры", "name_zh": "战列巡洋舰", "nameID": 305467, "parentGroupID": 1954 }, "1956": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305468, "parentGroupID": 2101 }, "1957": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305469, "parentGroupID": 2101 }, "1958": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305470, "parentGroupID": 2101 }, "1959": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305471, "parentGroupID": 2101 }, "1960": { "hasTypes": 0, "iconID": 21420, "name_de": "Schlachtschiffe", "name_en-us": "Battleships", "name_es": "Acorazados", "name_fr": "Cuirassés", "name_it": "Battleships", "name_ja": "戦艦", "name_ko": "배틀쉽", "name_ru": "Линкоры", "name_zh": "战列舰", "nameID": 305472, "parentGroupID": 1954 }, "1961": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionsschlachtschiffe", "name_en-us": "Faction Battleships", "name_es": "Acorazados faccionarios", "name_fr": "Cuirassés de faction", "name_it": "Faction Battleships", "name_ja": "ファクションの戦艦", "name_ko": "팩션 배틀쉽", "name_ru": "Пиратские и армейские", "name_zh": "势力战列舰", "nameID": 305473, "parentGroupID": 1960 }, "1962": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardschlachtschiffe", "name_en-us": "Standard Battleships", "name_es": "Acorazados estándar", "name_fr": "Cuirassés standards", "name_it": "Standard Battleships", "name_ja": "標準的な戦艦", "name_ko": "일반 배틀쉽", "name_ru": "Типовые", "name_zh": "标准战列舰", "nameID": 305474, "parentGroupID": 1960 }, "1963": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊のファクション", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 305475, "parentGroupID": 1961 }, "1964": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305476, "parentGroupID": 1962 }, "1965": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305477, "parentGroupID": 1962 }, "1966": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305478, "parentGroupID": 1962 }, "1967": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305479, "parentGroupID": 1962 }, "1968": { "hasTypes": 0, "iconID": 21420, "name_de": "Capital-Schiffe", "name_en-us": "Capital Ships", "name_es": "Naves capitales", "name_fr": "Vaisseaux capitaux", "name_it": "Capital Ships", "name_ja": "母艦", "name_ko": "캐피탈 함선", "name_ru": "Корабли большого тоннажа", "name_zh": "旗舰", "nameID": 305480, "parentGroupID": 1954 }, "1969": { "hasTypes": 1, "iconID": 21420, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 305481, "parentGroupID": 2114 }, "1970": { "hasTypes": 0, "iconID": 21420, "name_de": "Trägerschiffe", "name_en-us": "Carriers", "name_es": "Portanaves", "name_fr": "Porte-vaisseaux", "name_it": "Carriers", "name_ja": "艦載機母艦", "name_ko": "캐리어", "name_ru": "Корабли автономного развёртывания", "name_zh": "航空母舰", "nameID": 305482, "parentGroupID": 1968 }, "1971": { "hasTypes": 0, "iconID": 21420, "name_de": "Dreadnoughts", "name_en-us": "Dreadnoughts", "name_es": "Superacorazados", "name_fr": "Dreadnoughts", "name_it": "Dreadnoughts", "name_ja": "攻城艦", "name_ko": "드레드노트", "name_ru": "Дредноуты", "name_zh": "无畏舰", "nameID": 305483, "parentGroupID": 1968 }, "1972": { "hasTypes": 0, "iconID": 21420, "name_de": "Frachter", "name_en-us": "Freighters", "name_es": "Cargueros", "name_fr": "Cargos", "name_it": "Freighters", "name_ja": "超大型輸送艦", "name_ko": "프레이터", "name_ru": "Фрейтеры", "name_zh": "货舰", "nameID": 305484, "parentGroupID": 1968 }, "1973": { "hasTypes": 0, "iconID": 21420, "name_de": "Titans", "name_en-us": "Titans", "name_es": "Titanes", "name_fr": "Titans", "name_it": "Titans", "name_ja": "タイタン", "name_ko": "타이탄", "name_ru": "Титаны", "name_zh": "泰坦", "nameID": 305485, "parentGroupID": 1968 }, "1974": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305486, "parentGroupID": 2374 }, "1975": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305487, "parentGroupID": 2374 }, "1976": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305488, "parentGroupID": 2374 }, "1977": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305489, "parentGroupID": 2374 }, "1978": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305490, "parentGroupID": 2381 }, "1979": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305491, "parentGroupID": 2381 }, "1980": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305492, "parentGroupID": 2377 }, "1981": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305493, "parentGroupID": 2377 }, "1982": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305494, "parentGroupID": 2377 }, "1983": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305495, "parentGroupID": 2377 }, "1984": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305496, "parentGroupID": 1972 }, "1985": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305497, "parentGroupID": 1972 }, "1986": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305498, "parentGroupID": 1972 }, "1987": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305499, "parentGroupID": 1972 }, "1988": { "hasTypes": 0, "iconID": 21420, "name_de": "Kreuzer", "name_en-us": "Cruisers", "name_es": "Cruceros", "name_fr": "Croiseurs", "name_it": "Cruisers", "name_ja": "巡洋艦", "name_ko": "크루저", "name_ru": "Крейсеры", "name_zh": "巡洋舰", "nameID": 305500, "parentGroupID": 1954 }, "1989": { "hasTypes": 0, "iconID": 21420, "name_de": "Zerstörer", "name_en-us": "Destroyers", "name_es": "Destructores", "name_fr": "Destroyers", "name_it": "Destroyers", "name_ja": "駆逐艦", "name_ko": "디스트로이어", "name_ru": "Эсминцы", "name_zh": "驱逐舰", "nameID": 305501, "parentGroupID": 1954 }, "1990": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305502, "parentGroupID": 2028 }, "1991": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305503, "parentGroupID": 2028 }, "1992": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305504, "parentGroupID": 2028 }, "1993": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305505, "parentGroupID": 2028 }, "1994": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305506, "parentGroupID": 2035 }, "1995": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305507, "parentGroupID": 2035 }, "1996": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305508, "parentGroupID": 2035 }, "1997": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305509, "parentGroupID": 2035 }, "1998": { "hasTypes": 0, "iconID": 21420, "name_de": "Fregatten", "name_en-us": "Frigates", "name_es": "Fragatas", "name_fr": "Frégates", "name_it": "Frigates", "name_ja": "フリゲート", "name_ko": "프리깃", "name_ru": "Фрегаты", "name_zh": "护卫舰", "nameID": 305510, "parentGroupID": 1954 }, "1999": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionsfregatten", "name_en-us": "Faction Frigates", "name_es": "Fragatas faccionarias", "name_fr": "Frégates de faction", "name_it": "Faction Frigates", "name_ja": "ファクションフリゲート", "name_ko": "팩션 프리깃", "name_ru": "Пиратские и армейские", "name_zh": "势力护卫舰", "nameID": 305511, "parentGroupID": 1998 }, "2000": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍のファクション", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 305512, "parentGroupID": 1999 }, "2001": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardfregatten", "name_en-us": "Standard Frigates", "name_es": "Fragatas estándar", "name_fr": "Frégates standards", "name_it": "Standard Frigates", "name_ja": "標準的なフリゲート", "name_ko": "일반 프리깃", "name_ru": "Типовые", "name_zh": "标准护卫舰", "nameID": 305513, "parentGroupID": 1998 }, "2002": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305514, "parentGroupID": 2001 }, "2003": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305515, "parentGroupID": 2001 }, "2004": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305516, "parentGroupID": 2001 }, "2005": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305517, "parentGroupID": 2001 }, "2006": { "hasTypes": 0, "iconID": 21420, "name_de": "Transporter und Industrieschiffe", "name_en-us": "Haulers and Industrial Ships", "name_es": "Naves de mercancías y naves industriales", "name_fr": "Cargos et vaisseaux industriels", "name_it": "Haulers and Industrial Ships", "name_ja": "ハウラーと輸送艦", "name_ko": "운반선 및 인더스트리얼", "name_ru": "Перевозчики и грузовые корабли", "name_zh": "运载舰和工业舰", "nameID": 305518, "parentGroupID": 1954 }, "2007": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 305519, "parentGroupID": 2085 }, "2008": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 305520, "parentGroupID": 2085 }, "2009": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 305521, "parentGroupID": 2085 }, "2010": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 305522, "parentGroupID": 2085 }, "2011": { "hasTypes": 0, "iconID": 21420, "name_de": "Bergbaubarkassen", "name_en-us": "Mining Barges", "name_es": "Gabarras mineras", "name_fr": "Barges d'extraction", "name_it": "Mining Barges", "name_ja": "採掘艦", "name_ko": "채광선", "name_ru": "Буровые корабли", "name_zh": "采矿驳船", "nameID": 305523, "parentGroupID": 1954 }, "2012": { "hasTypes": 1, "iconID": 21420, "name_de": "Ausgrabungsschiffe", "name_en-us": "Exhumers", "name_es": "Exhumadores", "name_fr": "Exhumers", "name_it": "Exhumers", "name_ja": "特化型採掘艦", "name_ko": "익스허머", "name_ru": "Тяжёлые буровые корабли", "name_zh": "采掘者", "nameID": 305526, "parentGroupID": 2011 }, "2013": { "description_de": "Geheimnisvolle Technologieteile unbekannten Ursprungs", "description_en-us": "Mysterious pieces of technology of unknown origin", "description_es": "Fragmentos misteriosos de tecnología desconocida.", "description_fr": "Mystérieux composants technologiques d'origine inconnue.", "description_it": "Mysterious pieces of technology of unknown origin", "description_ja": "起源不明の技術により作られた奇怪な機器", "description_ko": "근원을 알 수 없는 기술이 담긴 아이템입니다.", "description_ru": "Загадочные устройства неизвестного происхождения.", "description_zh": "来自神秘未知科技的片段", "descriptionID": 306041, "hasTypes": 1, "iconID": 2889, "name_de": "Unbekannte Komponenten", "name_en-us": "Unknown Components", "name_es": "Componentes desconocidos", "name_fr": "Composants inconnus", "name_it": "Unknown Components", "name_ja": "不明な部品", "name_ko": "알 수 없는 부품", "name_ru": "Неизвестные компоненты", "name_zh": "未知组件", "nameID": 306040, "parentGroupID": 19 }, "2014": { "description_de": "Blaupausen von Industrie-Upgrades.", "description_en-us": "Blueprints of Industrial Upgrades.", "description_es": "Planos de mejoras industriales.", "description_fr": "Plans de construction Améliorations industrielles", "description_it": "Blueprints of Industrial Upgrades.", "description_ja": "産業アップグレードのブループリント", "description_ko": "산업 업그레이드 블루프린트입니다.", "description_ru": "Чертежи промышленных расширений инфраструктуры", "description_zh": "工业升级组件的蓝图。", "descriptionID": 306802, "hasTypes": 1, "iconID": 2703, "name_de": "Industrieupgrades", "name_en-us": "Industrial Upgrades", "name_es": "Mejoras industriales", "name_fr": "Améliorations industrielles", "name_it": "Industrial Upgrades", "name_ja": "産業アップグレード", "name_ko": "산업 업그레이드", "name_ru": "Промышленные расширения", "name_zh": "工业升级", "nameID": 306798, "parentGroupID": 2015 }, "2015": { "hasTypes": 0, "iconID": 2703, "name_de": "Souveränität und Infrastruktur", "name_en-us": "Sovereignty and Infrastructure", "name_es": "Soberanía e infraestructuras", "name_fr": "Souveraineté et infrastructure", "name_it": "Sovereignty and Infrastructure", "name_ja": "支配権とインフラ", "name_ko": "소버린티 및 인프라 업그레이드", "name_ru": "Инфраструктура и владение космосом", "name_zh": "主权和建筑", "nameID": 306835, "parentGroupID": 1338 }, "2016": { "description_de": "Blaupausen von Militär-Upgrades.", "description_en-us": "Blueprints of Military Upgrades", "description_es": "Planos de mejoras militares.", "description_fr": "Plans de construction Améliorations militaires", "description_it": "Blueprints of Military Upgrades", "description_ja": "軍事アップグレードのブループリント", "description_ko": "군사 업그레이드 블루프린트입니다.", "description_ru": "Чертежи военных расширений инфраструктуры", "description_zh": "军事升级组件的蓝图。", "descriptionID": 306837, "hasTypes": 1, "iconID": 2703, "name_de": "Militärupgrades", "name_en-us": "Military Upgrades", "name_es": "Mejoras militares", "name_fr": "Améliorations militaires", "name_it": "Military Upgrades", "name_ja": "軍事アップグレード", "name_ko": "군사 업그레이드", "name_ru": "Военные расширения", "name_zh": "军事升级", "nameID": 306836, "parentGroupID": 2015 }, "2017": { "description_de": "Blaupausen von strategischen Upgrades.", "description_en-us": "Blueprints of Strategic Upgrades", "description_es": "Planos de mejoras estratégicas.", "description_fr": "Plans de construction Améliorations stratégiques", "description_it": "Blueprints of Strategic Upgrades", "description_ja": "戦略アップグレードのブループリント", "description_ko": "전략 업그레이드 블루프린트", "description_ru": "Чертежи стратегических расширений инфраструктуры", "description_zh": "战略升级组件的蓝图。", "descriptionID": 306839, "hasTypes": 1, "iconID": 2703, "name_de": "Strategische Upgrades", "name_en-us": "Strategic Upgrades", "name_es": "Mejoras estratégicas", "name_fr": "Améliorations stratégiques", "name_it": "Strategic Upgrades", "name_ja": "戦略アップグレード", "name_ko": "전략 업그레이드", "name_ru": "Стратегические расширения", "name_zh": "战略升级", "nameID": 306838, "parentGroupID": 2015 }, "2018": { "hasTypes": 1, "iconID": 21421, "name_de": "Entosis-Netzwerke", "name_en-us": "Entosis Links", "name_es": "Enlaces de entosis", "name_fr": "Liaisons Entosis", "name_it": "Entosis Links", "name_ja": "エントーシスリンク", "name_ko": "엔토시스 링크", "name_ru": "Энтоз-передатчики", "name_zh": "侵噬链接", "nameID": 306841, "parentGroupID": 1708 }, "2020": { "description_de": "Entosis-Netzwerk-Blaupausen", "description_en-us": "Entosis Link Blueprints", "description_es": "Planos de enlaces de entosis.", "description_fr": "Plans de construction Liaison Entosis", "description_it": "Entosis Link Blueprints", "description_ja": "エントーシスリンクのブループリント", "description_ko": "엔토시스 링크 블루프린트", "description_ru": "Чертежи энтоз-передатчиков", "description_zh": "侵噬链接蓝图", "descriptionID": 306844, "hasTypes": 1, "iconID": 2703, "name_de": "Entosis-Netzwerke", "name_en-us": "Entosis Links", "name_es": "Enlaces de entosis", "name_fr": "Liaisons Entosis", "name_it": "Entosis Links", "name_ja": "エントーシスリンク", "name_ko": "엔토시스 링크", "name_ru": "Энтоз-передатчики", "name_zh": "侵噬链接", "nameID": 306843, "parentGroupID": 1710 }, "2021": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 308858, "parentGroupID": 1951 }, "2022": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Schlachtschiffe", "name_en-us": "Advanced Battleships", "name_es": "Acorazados avanzados", "name_fr": "Cuirassés avancés", "name_it": "Advanced Battleships", "name_ja": "最新型の戦艦", "name_ko": "상급 배틀쉽", "name_ru": "Специализированные", "name_zh": "高级战列舰", "nameID": 309244, "parentGroupID": 1960 }, "2023": { "hasTypes": 0, "iconID": 21420, "name_de": "Marauder", "name_en-us": "Marauders", "name_es": "Depredadores", "name_fr": "Maraudeurs", "name_it": "Marauders", "name_ja": "襲撃型戦艦", "name_ko": "머라우더", "name_ru": "Рейдеры", "name_zh": "掠夺舰", "nameID": 309245, "parentGroupID": 2022 }, "2024": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309246, "parentGroupID": 2023 }, "2025": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309247, "parentGroupID": 2023 }, "2026": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309248, "parentGroupID": 2023 }, "2027": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309249, "parentGroupID": 2023 }, "2028": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardkreuzer", "name_en-us": "Standard Cruisers", "name_es": "Cruceros estándar", "name_fr": "Croiseurs standards", "name_it": "Standard Cruisers", "name_ja": "標準的な巡洋艦", "name_ko": "일반 크루저", "name_ru": "Типовые", "name_zh": "标准巡洋舰", "nameID": 309250, "parentGroupID": 1988 }, "2029": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionskreuzer", "name_en-us": "Faction Cruisers", "name_es": "Cruceros faccionarios", "name_fr": "Croiseurs de faction", "name_it": "Faction Cruisers", "name_ja": "ファクションの巡洋艦", "name_ko": "팩션 크루저", "name_ru": "Пиратские и армейские", "name_zh": "势力巡洋舰", "nameID": 309251, "parentGroupID": 1988 }, "2030": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 309252, "parentGroupID": 2029 }, "2031": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 309253, "parentGroupID": 1999 }, "2032": { "hasTypes": 1, "iconID": 21437, "name_de": "Lenkwaffen-Leitcomputer", "name_en-us": "Missile Guidance Computers", "name_es": "Ordenadores de guiado de misiles", "name_fr": "Ordinateurs de guidage des missiles", "name_it": "Missile Guidance Computers", "name_ja": "ミサイル誘導コンピューター", "name_ko": "미사일 유도 컴퓨터", "name_ru": "Вычислители наведения ракет", "name_zh": "导弹引导计算机", "nameID": 309668, "parentGroupID": 143 }, "2033": { "hasTypes": 1, "iconID": 21439, "name_de": "Lenkwaffen-Leitverbesserungen", "name_en-us": "Missile Guidance Enhancers", "name_es": "Intensificadores de guiado de misiles", "name_fr": "Optimisateurs de guidage des missiles", "name_it": "Missile Guidance Enhancers", "name_ja": "ミサイル誘導エンハンサー", "name_ko": "미사일 유도 향상장치", "name_ru": "Корректоры траекторий ракет", "name_zh": "导弹引导增强器", "nameID": 309669, "parentGroupID": 143 }, "2034": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309672, "parentGroupID": 1951 }, "2035": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardzerstörer", "name_en-us": "Standard Destroyers", "name_es": "Destructores estándar", "name_fr": "Destroyers standards", "name_it": "Standard Destroyers", "name_ja": "標準型駆逐艦", "name_ko": "일반 디스트로이어", "name_ru": "Типовые", "name_zh": "标准驱逐舰", "nameID": 309680, "parentGroupID": 1989 }, "2036": { "hasTypes": 0, "iconID": 21420, "name_de": "Hochentwickelte Zerstörer", "name_en-us": "Advanced Destroyers", "name_es": "Destructores avanzados", "name_fr": "Destroyers avancés", "name_it": "Advanced Destroyers", "name_ja": "最新型駆逐艦", "name_ko": "상급 디스트로이어", "name_ru": "Эсминцы cпециализированных проектов", "name_zh": "高级驱逐舰", "nameID": 309681, "parentGroupID": 1989 }, "2037": { "hasTypes": 0, "iconID": 21420, "name_de": "Unterbrecher", "name_en-us": "Interdictors", "name_es": "Interdictores", "name_fr": "Interdicteurs", "name_it": "Interdictors", "name_ja": "補給線爆撃機", "name_ko": "인터딕터", "name_ru": "Заградительные эсминцы", "name_zh": "拦截舰", "nameID": 309682, "parentGroupID": 2036 }, "2038": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309683, "parentGroupID": 2037 }, "2039": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309684, "parentGroupID": 2037 }, "2040": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309685, "parentGroupID": 2037 }, "2041": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309686, "parentGroupID": 2037 }, "2042": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Fregatten", "name_en-us": "Advanced Frigates", "name_es": "Fragatas avanzadas", "name_fr": "Frégates avancées", "name_it": "Advanced Frigates", "name_ja": "最新型フリゲート", "name_ko": "상급 프리깃", "name_ru": "Специализированные", "name_zh": "高级护卫舰", "nameID": 309687, "parentGroupID": 1998 }, "2043": { "hasTypes": 0, "iconID": 21420, "name_de": "Angriffsfregatten", "name_en-us": "Assault Frigates", "name_es": "Fragatas de asalto", "name_fr": "Frégates d’assaut", "name_it": "Assault Frigates", "name_ja": "強襲型フリゲート", "name_ko": "어썰트 프리깃", "name_ru": "Ударные фрегаты", "name_zh": "突击护卫舰", "nameID": 309688, "parentGroupID": 2042 }, "2044": { "hasTypes": 0, "iconID": 21420, "name_de": "Geheimdienstoperationen", "name_en-us": "Covert Ops", "name_es": "Operaciones encubiertas", "name_fr": "Opérations secrètes", "name_it": "Covert Ops", "name_ja": "隠密行動", "name_ko": "코버트 옵스", "name_ru": "Диверсионные фрегаты", "name_zh": "隐形特勤舰", "nameID": 309689, "parentGroupID": 2042 }, "2045": { "hasTypes": 0, "iconID": 21420, "name_de": "Elektronische Angriffsfregatten", "name_en-us": "Electronic Attack Frigates", "name_es": "Fragatas de ataque electrónico", "name_fr": "Frégates d'attaque électronique", "name_it": "Electronic Attack Frigates", "name_ja": "電子攻撃フリゲート", "name_ko": "전자전 프리깃", "name_ru": "Дозорные фрегаты", "name_zh": "电子攻击护卫舰", "nameID": 309690, "parentGroupID": 2042 }, "2046": { "hasTypes": 0, "iconID": 21420, "name_de": "Abfangjäger", "name_en-us": "Interceptors", "name_es": "Interceptores", "name_fr": "Intercepteurs", "name_it": "Interceptors", "name_ja": "迎撃機", "name_ko": "인터셉터", "name_ru": "Перехватчики", "name_zh": "截击舰", "nameID": 309691, "parentGroupID": 2042 }, "2047": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309692, "parentGroupID": 2043 }, "2048": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309693, "parentGroupID": 2043 }, "2049": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309694, "parentGroupID": 2043 }, "2050": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309695, "parentGroupID": 2043 }, "2051": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309696, "parentGroupID": 2044 }, "2052": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309697, "parentGroupID": 2044 }, "2053": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309698, "parentGroupID": 2044 }, "2054": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309699, "parentGroupID": 2044 }, "2055": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309700, "parentGroupID": 2045 }, "2056": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309701, "parentGroupID": 2045 }, "2057": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309702, "parentGroupID": 2045 }, "2058": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309703, "parentGroupID": 2045 }, "2059": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309704, "parentGroupID": 2046 }, "2060": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309705, "parentGroupID": 2046 }, "2061": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309706, "parentGroupID": 2046 }, "2062": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309707, "parentGroupID": 2046 }, "2063": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍のファクション", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 309708, "parentGroupID": 2029 }, "2064": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Kreuzer", "name_en-us": "Advanced Cruisers", "name_es": "Cruceros avanzados", "name_fr": "Croiseurs avancés", "name_it": "Advanced Cruisers", "name_ja": "最新型巡洋艦", "name_ko": "상급 크루저", "name_ru": "Специализированные", "name_zh": "高级巡洋舰", "nameID": 309709, "parentGroupID": 1988 }, "2065": { "hasTypes": 0, "iconID": 21420, "name_de": "Schwere Angriffskreuzer", "name_en-us": "Heavy Assault Cruisers", "name_es": "Cruceros de asalto pesados", "name_fr": "Croiseurs d’assaut lourds", "name_it": "Heavy Assault Cruisers", "name_ja": "強襲型重巡洋艦", "name_ko": "어썰트 크루저", "name_ru": "Ударные крейсеры", "name_zh": "重型突击巡洋舰", "nameID": 309710, "parentGroupID": 2064 }, "2066": { "hasTypes": 0, "iconID": 21420, "name_de": "Schwere Unterbrechungskreuzer", "name_en-us": "Heavy Interdiction Cruisers", "name_es": "Cruceros interdictores pesados", "name_fr": "Croiseurs d’interdiction lourds", "name_it": "Heavy Interdiction Cruisers", "name_ja": "補給線重爆撃巡洋艦", "name_ko": "인터딕터 크루저", "name_ru": "Заградительные крейсеры", "name_zh": "重型拦截巡洋舰", "nameID": 309711, "parentGroupID": 2064 }, "2067": { "hasTypes": 0, "iconID": 21420, "name_de": "Logistik-Kreuzer", "name_en-us": "Logistics", "name_es": "Logística", "name_fr": "Logistique", "name_it": "Logistics", "name_ja": "兵站", "name_ko": "지원", "name_ru": "Крейсеры обеспечения", "name_zh": "后勤舰", "nameID": 309712, "parentGroupID": 2064 }, "2068": { "hasTypes": 0, "iconID": 21420, "name_de": "Aufklärungsschiffe", "name_en-us": "Recon Ships", "name_es": "Naves de reconocimiento", "name_fr": "Vaisseaux de reconnaissance", "name_it": "Recon Ships", "name_ja": "偵察艦", "name_ko": "리콘 크루저", "name_ru": "Дозорные крейсеры", "name_zh": "侦察舰", "nameID": 309713, "parentGroupID": 2064 }, "2069": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309714, "parentGroupID": 2065 }, "2070": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309715, "parentGroupID": 2065 }, "2071": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309716, "parentGroupID": 2065 }, "2072": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309717, "parentGroupID": 2065 }, "2073": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309718, "parentGroupID": 2066 }, "2074": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309719, "parentGroupID": 2066 }, "2075": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309720, "parentGroupID": 2066 }, "2076": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309721, "parentGroupID": 2066 }, "2077": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309722, "parentGroupID": 2067 }, "2078": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309723, "parentGroupID": 2067 }, "2079": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309724, "parentGroupID": 2067 }, "2080": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309725, "parentGroupID": 2067 }, "2081": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309726, "parentGroupID": 2068 }, "2082": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309727, "parentGroupID": 2068 }, "2083": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309728, "parentGroupID": 2068 }, "2084": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309729, "parentGroupID": 2068 }, "2085": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardtransporter", "name_en-us": "Standard Haulers", "name_es": "Naves de mercancías estándar", "name_fr": "Cargos standards", "name_it": "Standard Haulers", "name_ja": "標準型ハウラー", "name_ko": "일반 운반선", "name_ru": "Стандартные перевозчики", "name_zh": "标准运载舰", "nameID": 309730, "parentGroupID": 2006 }, "2086": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Transporter", "name_en-us": "Advanced Haulers", "name_es": "Naves de mercancías avanzadas", "name_fr": "Cargos avancés", "name_it": "Advanced Haulers", "name_ja": "高性能ハウラー", "name_ko": "상급 운반선", "name_ru": "Улучшенные крейсеры", "name_zh": "高级运载舰", "nameID": 309731, "parentGroupID": 2006 }, "2087": { "hasTypes": 0, "iconID": 21420, "name_de": "Transportschiffe", "name_en-us": "Transport Ships", "name_es": "Naves de transporte", "name_fr": "Vaisseaux de transport", "name_it": "Transport Ships", "name_ja": "輸送艦", "name_ko": "트랜스포터", "name_ru": "Транспортные корабли", "name_zh": "运输舰", "nameID": 309732, "parentGroupID": 2086 }, "2088": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309733, "parentGroupID": 2087 }, "2089": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309734, "parentGroupID": 2087 }, "2090": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309735, "parentGroupID": 2087 }, "2091": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309736, "parentGroupID": 2087 }, "2092": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309737, "parentGroupID": 2381 }, "2093": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309738, "parentGroupID": 2381 }, "2094": { "hasTypes": 0, "iconID": 21420, "name_de": "Sprungfrachter", "name_en-us": "Jump Freighters", "name_es": "Cargueros de salto", "name_fr": "Cargos interstellaires", "name_it": "Jump Freighters", "name_ja": "ジャンプドライブ搭載型輸送艦", "name_ko": "점프 프레이터", "name_ru": "Джамп-фрейтеры", "name_zh": "战略货舰", "nameID": 309739, "parentGroupID": 1968 }, "2095": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309740, "parentGroupID": 2094 }, "2096": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309741, "parentGroupID": 2094 }, "2097": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309742, "parentGroupID": 2094 }, "2098": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309743, "parentGroupID": 2094 }, "2099": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Schlachtkreuzer", "name_en-us": "Advanced Battlecruisers", "name_es": "Cruceros de combate avanzados", "name_fr": "Croiseurs cuirassés avancés", "name_it": "Advanced Battlecruisers", "name_ja": "最新型巡洋戦艦", "name_ko": "상급 배틀크루저", "name_ru": "Специализированные", "name_zh": "高级战列巡洋舰", "nameID": 309744, "parentGroupID": 1955 }, "2100": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionsschlachtkreuzer", "name_en-us": "Faction Battlecruisers", "name_es": "Cruceros de combate faccionarios", "name_fr": "Croiseurs cuirassés de faction", "name_it": "Faction Battlecruisers", "name_ja": "ファクション巡洋戦艦", "name_ko": "팩션 배틀크루저", "name_ru": "Пиратские и армейские", "name_zh": "势力战列巡洋舰", "nameID": 309745, "parentGroupID": 1955 }, "2101": { "hasTypes": 0, "iconID": 21420, "name_de": "Standardschlachtkreuzer", "name_en-us": "Standard Battlecruisers", "name_es": "Cruceros de combate estándar", "name_fr": "Croiseurs cuirassés standard", "name_it": "Standard Battlecruisers", "name_ja": "標準型巡洋戦艦", "name_ko": "일반 배틀크루저", "name_ru": "Типовые", "name_zh": "标准战列巡洋舰", "nameID": 309746, "parentGroupID": 1955 }, "2102": { "hasTypes": 0, "iconID": 21420, "name_de": "Kommandoschiffe", "name_en-us": "Command Ships", "name_es": "Naves de mando", "name_fr": "Vaisseaux de commandement", "name_it": "Command Ships", "name_ja": "指揮艦", "name_ko": "커맨드쉽", "name_ru": "Корабли управления", "name_zh": "指挥舰", "nameID": 309747, "parentGroupID": 2099 }, "2103": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍のファクション", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 309748, "parentGroupID": 2100 }, "2104": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309749, "parentGroupID": 2102 }, "2105": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309750, "parentGroupID": 2102 }, "2106": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309751, "parentGroupID": 2102 }, "2107": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309752, "parentGroupID": 2102 }, "2108": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍のファクション", "name_ko": "해군 팩션", "name_ru": "Армейские", "name_zh": "海军势力", "nameID": 309753, "parentGroupID": 1961 }, "2109": { "hasTypes": 0, "iconID": 21420, "name_de": "Black Ops", "name_en-us": "Black Ops", "name_es": "Operaciones secretas", "name_fr": "Forces spéciales", "name_it": "Black Ops", "name_ja": "秘密工作", "name_ko": "블랙옵스", "name_ru": "Тяжёлые диверсионные корабли", "name_zh": "黑隐特勤舰", "nameID": 309754, "parentGroupID": 2022 }, "2110": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 309755, "parentGroupID": 2109 }, "2111": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 309756, "parentGroupID": 2109 }, "2112": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 309757, "parentGroupID": 2109 }, "2113": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 309758, "parentGroupID": 2109 }, "2114": { "hasTypes": 0, "iconID": 21420, "name_de": "Capital-Industrieschiffe", "name_en-us": "Capital Industrial Ships", "name_es": "Naves industriales capitales", "name_fr": "Vaisseaux industriels capitaux", "name_it": "Capital Industrial Ships", "name_ja": "採掘支援母艦", "name_ko": "캐피탈 인더스트리얼", "name_ru": "Промышленные корабли", "name_zh": "旗舰级工业舰", "nameID": 309799, "parentGroupID": 1968 }, "2115": { "description_de": "Schwere Unterbrechungskreuzer, die Kapselpiloten gelegentlich und für begrenzte Zeit angeboten werden.", "description_en-us": "Heavy Interdiction Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_es": "Cruceros interdictores pesados ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Croiseurs d’interdiction lourds mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Heavy Interdiction Cruisers which have been offered to capsuleers on occasion for limited periods.", "description_ja": "時より期間限定でカプセラに支給される補給線重爆撃巡洋艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 인터딕터 크루저입니다.", "description_ru": "Заградительные крейсеры, которые в течение ограниченного времени по особому поводу предлагались капсулёрам.", "description_zh": "限时供应的重型拦截巡洋舰。", "descriptionID": 309834, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversion: schwere Unterbrechungskreuzer", "name_en-us": "Special Edition Heavy Interdiction Cruisers", "name_es": "Cruceros interdictores pesados de edición especial", "name_fr": "Croiseurs d’interdiction lourds (édition spéciale)", "name_it": "Special Edition Heavy Interdiction Cruisers", "name_ja": "特別仕様 補給線重爆撃巡洋艦", "name_ko": "인터딕터 크루저", "name_ru": "Малосерийные заградительные крейсеры", "name_zh": "特别版重型拦截巡洋舰", "nameID": 309833, "parentGroupID": 1612 }, "2119": { "hasTypes": 0, "iconID": 21420, "name_de": "Verschiedene Schiff-SKINs", "name_en-us": "Multiple Hull SKINs", "name_es": "SKIN para varios cascos", "name_fr": "Plusieurs SKINS de coques", "name_it": "Multiple Hull SKINs", "name_ja": "複数の船体SKIN", "name_ko": "멀티 SKIN", "name_ru": "Окраски для нескольких типов кораблей", "name_zh": "多舰船通用涂装", "nameID": 310134, "parentGroupID": 1954 }, "2120": { "hasTypes": 1, "iconID": 21420, "name_de": "Sonderversion-SKINs", "name_en-us": "Special Edition SKINs", "name_es": "SKIN de edición especial", "name_fr": "SKINS (édition spéciale)", "name_it": "Special Edition SKINs", "name_ja": "特別仕様のSKIN", "name_ko": "스페셜 에디션 SKIN", "name_ru": "Малосерийные окраски", "name_zh": "特别版涂装", "nameID": 310135, "parentGroupID": 2119 }, "2125": { "hasTypes": 0, "iconID": 1443, "name_de": "Kommandozerstörer", "name_en-us": "Command Destroyers", "name_es": "Destructores de mando", "name_fr": "Destroyers de commandement", "name_it": "Command Destroyers", "name_ja": "指揮型駆逐艦", "name_ko": "커맨드 디스트로이어", "name_ru": "Лидеры", "name_zh": "指挥驱逐舰", "nameID": 310153, "parentGroupID": 1373 }, "2126": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 310154, "parentGroupID": 2125 }, "2131": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 310159, "parentGroupID": 2125 }, "2132": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 310160, "parentGroupID": 2125 }, "2133": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 310161, "parentGroupID": 2125 }, "2134": { "hasTypes": 1, "iconID": 2703, "name_de": "Microsprungfeldgeneratoren", "name_en-us": "Micro Jump Field Generators", "name_es": "Generadores de campo de microsalto", "name_fr": "Générateurs de champ de micro-saut", "name_it": "Micro Jump Field Generators", "name_ja": "マイクロジャンプフィールドジェネレーター", "name_ko": "마이크로 점프 필드 생성기", "name_ru": "Генераторы разгонного поля", "name_zh": "微型跳跃力场发生器", "nameID": 310162, "parentGroupID": 252 }, "2135": { "hasTypes": 1, "iconID": 20971, "name_de": "Microsprungfeldgeneratoren", "name_en-us": "Micro Jump Field Generators", "name_es": "Generadores de campo de microsalto", "name_fr": "Générateurs de champ de micro-saut", "name_it": "Micro Jump Field Generators", "name_ja": "マイクロジャンプフィールドジェネレーター", "name_ko": "마이크로 점프 필드 생성기", "name_ru": "Генераторы разгонного поля", "name_zh": "微型跳跃力场发生器", "nameID": 310163, "parentGroupID": 52 }, "2136": { "hasTypes": 0, "iconID": 21420, "name_de": "Logistikfregatten", "name_en-us": "Logistics Frigates", "name_es": "Fragatas logísticas", "name_fr": "Frégates logistiques", "name_it": "Logistics Frigates", "name_ja": "支援型フリゲート", "name_ko": "로지스틱스 프리깃", "name_ru": "Фрегаты обеспечения", "name_zh": "后勤护卫舰", "nameID": 310268, "parentGroupID": 2042 }, "2137": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 310269, "parentGroupID": 2136 }, "2138": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 310270, "parentGroupID": 2136 }, "2139": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 310271, "parentGroupID": 2136 }, "2140": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 310272, "parentGroupID": 2136 }, "2141": { "hasTypes": 0, "iconID": 21420, "name_de": "Kommandozerstörer", "name_en-us": "Command Destroyers", "name_es": "Destructores de mando", "name_fr": "Destroyers de commandement", "name_it": "Command Destroyers", "name_ja": "指揮型駆逐艦", "name_ko": "커맨드 디스트로이어", "name_ru": "Лидеры", "name_zh": "指挥驱逐舰", "nameID": 310273, "parentGroupID": 2036 }, "2142": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 310274, "parentGroupID": 2141 }, "2143": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 310275, "parentGroupID": 2141 }, "2144": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 310276, "parentGroupID": 2141 }, "2145": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 310277, "parentGroupID": 2141 }, "2146": { "description_de": "Fregatten, die sich auf die Reparatur Ihrer Verbündeten spezialisiert haben.", "description_en-us": "Frigates specialized in repairing their allies", "description_es": "Fragatas especializadas en reparar naves aliadas.", "description_fr": "Frégates spécialisées dans la réparation de leurs alliés", "description_it": "Frigates specialized in repairing their allies", "description_ja": "味方艦船の修理に特化したフリゲート", "description_ko": "아군 수리에 특화된 프리깃입니다.", "description_ru": "Фрегаты, предназначенные для ремонта союзников", "description_zh": "擅长为友军提供维修支援的护卫舰", "descriptionID": 310279, "hasTypes": 0, "iconID": 1443, "name_de": "Logistikfregatten", "name_en-us": "Logistics Frigates", "name_es": "Fragatas logísticas", "name_fr": "Frégates logistiques", "name_it": "Logistics Frigates", "name_ja": "支援型フリゲート", "name_ko": "로지스틱스 프리깃", "name_ru": "Фрегаты обеспечения", "name_zh": "后勤护卫舰", "nameID": 310278, "parentGroupID": 1364 }, "2147": { "description_de": "Amarr-Logistikfregatten", "description_en-us": "Amarr Logistics Frigates", "description_es": "Fragatas logísticas amarrianas.", "description_fr": "Frégates logistiques amarr", "description_it": "Amarr Logistics Frigates", "description_ja": "アマーの物資輸送フリゲート", "description_ko": "아마르 로지스틱스 프리깃입니다.", "description_ru": "Амаррские фрегаты боеовго обеспечения", "description_zh": "艾玛后勤护卫舰", "descriptionID": 310281, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 310280, "parentGroupID": 2146 }, "2148": { "description_de": "Caldari-Logistikfregatten", "description_en-us": "Caldari Logistics Frigates", "description_es": "Fragatas logísticas caldaris.", "description_fr": "Frégates logistiques caldari", "description_it": "Caldari Logistics Frigates", "description_ja": "カルダリの物資輸送フリゲート", "description_ko": "칼다리 로지스틱스 프리깃입니다.", "description_ru": "Калдарские фрегаты боеовго обеспечения", "description_zh": "加达里后勤护卫舰", "descriptionID": 310283, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 310282, "parentGroupID": 2146 }, "2149": { "description_de": "Gallente-Logistikfregatten", "description_en-us": "Gallente Logistics Frigates", "description_es": "Fragatas logísticas gallentes.", "description_fr": "Frégates logistiques gallente", "description_it": "Gallente Logistics Frigates", "description_ja": "ガレンテの支援型フリゲート", "description_ko": "갈란테 로지스틱스 프리깃입니다.", "description_ru": "Галлентские фрегаты боеовго обеспечения", "description_zh": "盖伦特后勤护卫舰", "descriptionID": 310285, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 310284, "parentGroupID": 2146 }, "2150": { "description_de": "Minmatar-Logistikfregatten", "description_en-us": "Minmatar Logistics Frigates", "description_es": "Fragatas logísticas minmatarianas.", "description_fr": "Frégates logistiques minmatar", "description_it": "Minmatar Logistics Frigates", "description_ja": "ミンマターの物資輸送フリゲート", "description_ko": "민마타 로지스틱스 프리깃입니다.", "description_ru": "Матарские фрегаты боеовго обеспечения", "description_zh": "米玛塔尔后勤护卫舰", "descriptionID": 310287, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 310286, "parentGroupID": 2146 }, "2151": { "description_de": "Entwürfe für Eis-Bergbaulaser.", "description_en-us": "Ice mining laser designs.", "description_es": "Diseños de láseres mineros para hielo.", "description_fr": "Modèles de laser d'extraction de glace", "description_it": "Ice mining laser designs.", "description_ja": "アイス採掘レーザーの設計。", "description_ko": "아이스 채굴 레이저입니다.", "description_ru": "Проекты установок для бурения льда.", "description_zh": "冰矿开采激光器设计。", "descriptionID": 310308, "hasTypes": 1, "iconID": 1061, "name_de": "Eis-Bergbaulaser", "name_en-us": "Ice Mining Lasers", "name_es": "Láseres mineros para hielo", "name_fr": "Lasers d'extraction de glace", "name_it": "Ice Mining Lasers", "name_ja": "アイス採掘レーザー", "name_ko": "아이스 채굴 레이저", "name_ru": "Установки для бурения льда", "name_zh": "冰矿开采激光器", "nameID": 310307, "parentGroupID": 1713 }, "2152": { "description_de": "Skills zur effizienten Benutzung von spielerverwalteten Strukturen.", "description_en-us": "Skills pertaining to the efficient use of player owned structures", "description_es": "Habilidades relacionadas con el uso eficiente de estructuras en propiedad de jugadores.", "description_fr": "Compétences relatives à l'utilisation efficace des structures appartenant au joueurs", "description_it": "Skills pertaining to the efficient use of player owned structures", "description_ja": "プレイヤーが所有するストラクチャを効果的に使用するためのスキル。", "description_ko": "플레이어 구조물을 보다 효율적으로 운용할 수 있습니다.", "description_ru": "Навыки, обеспечивающие эффективное использование принадлежащих пилотам сооружений.", "description_zh": "熟练使用玩家自有建筑的技能", "descriptionID": 311567, "hasTypes": 1, "iconID": 33, "name_de": "Strukturverwaltung", "name_en-us": "Structure Management", "name_es": "Gestión de estructuras", "name_fr": "Gestion de structure", "name_it": "Structure Management", "name_ja": "ストラクチャの管理", "name_ko": "구조물 관리", "name_ru": "Управление сооружениями", "name_zh": "建筑管理", "nameID": 311566, "parentGroupID": 150 }, "2153": { "description_de": "Statisgreifarme Blaupausen", "description_en-us": "Stasis Grappler Blueprints", "description_es": "Planos de anquilizadores de estasis.", "description_fr": "Plans de construction Grappler de stase", "description_it": "Stasis Grappler Blueprints", "description_ja": "ステイシスグラップラーのブループリント", "description_ko": "스테이시스 그래플러 블루프린트입니다.", "description_ru": "Чертежи высокомощных генераторов стазис-поля", "description_zh": "停滞捕捉光束蓝图", "descriptionID": 311810, "hasTypes": 1, "iconID": 2703, "name_de": "Stasisgreifarme", "name_en-us": "Stasis Grapplers", "name_es": "Anquilizadores de estasis", "name_fr": "Grapplers de stase", "name_it": "Stasis Grapplers", "name_ja": "ステイシスグラップラー", "name_ko": "스테이시스 그래플러", "name_ru": "Абордажные стазис-индукторы", "name_zh": "停滞捕捉光束", "nameID": 311809, "parentGroupID": 1566 }, "2154": { "description_de": "Stasisgreifarme", "description_en-us": "Stasis Grapplers", "description_es": "Anquilizadores de estasis.", "description_fr": "Grapplers de stase", "description_it": "Stasis Grapplers", "description_ja": "ステイシスグラップラー", "description_ko": "스테이시스 그래플러", "description_ru": "Абордажные стазис-индукторы", "description_zh": "停滞捕捉光束", "descriptionID": 311812, "hasTypes": 1, "iconID": 21581, "name_de": "Stasisgreifarme", "name_en-us": "Stasis Grapplers", "name_es": "Anquilizadores de estasis", "name_fr": "Grapplers de stase", "name_it": "Stasis Grapplers", "name_ja": "ステイシスグラップラー", "name_ko": "스테이시스 그래플러", "name_ru": "Абордажные стазис-индукторы", "name_zh": "停滞捕捉光束", "nameID": 311811, "parentGroupID": 657 }, "2155": { "hasTypes": 1, "iconID": 2890, "name_de": "Benannte Komponenten", "name_en-us": "Named Components", "name_es": "Componentes con nombre", "name_fr": "Composants nommés", "name_it": "Named Components", "name_ja": "指定コンポーネント", "name_ko": "특수 부품", "name_ru": "Именные компоненты", "name_zh": "已命名组件", "nameID": 312291, "parentGroupID": 533 }, "2156": { "description_de": "Blaupausen für Zitadellen.", "description_en-us": "Blueprints of Citadel structures.", "description_es": "Planos de estructuras de ciudadela.", "description_fr": "Plans de construction des structures Citadelle.", "description_it": "Blueprints of Citadel structures.", "description_ja": "城塞ストラクチャのブループリント。", "description_ko": "시타델 구조물 블루프린트입니다.", "description_ru": "Чертежи цитаделей.", "description_zh": "堡垒建筑的蓝图。", "descriptionID": 311953, "hasTypes": 1, "iconID": 2703, "name_de": "Zitadellen", "name_en-us": "Citadels", "name_es": "Ciudadelas", "name_fr": "Citadelles", "name_it": "Citadels", "name_ja": "城塞", "name_ko": "시타델", "name_ru": "Цитадели", "name_zh": "堡垒", "nameID": 311952, "parentGroupID": 1338 }, "2157": { "description_de": "Blaupausen für Strukturmodifikationen.", "description_en-us": "Blueprints of structure modifications.", "description_es": "Planos de modificaciones para estructuras.", "description_fr": "Plans de construction de modifications de structure", "description_it": "Blueprints of structure modifications.", "description_ja": "ストラクチャ改良品のブループリント。", "description_ko": "스탠드업 구조물 리그 블루프린트입니다.", "description_ru": "Чертежи модификаций сооружений.", "description_zh": "建筑改装件的蓝图。", "descriptionID": 311955, "hasTypes": 0, "iconID": 2703, "name_de": "Strukturmodifikationen", "name_en-us": "Structure Modifications", "name_es": "Modificaciones para estructuras", "name_fr": "Modifications de structure", "name_it": "Structure Modifications", "name_ja": "ストラクチャ改良品", "name_ko": "구조물 리그", "name_ru": "Модификации сооружений", "name_zh": "建筑改装件", "nameID": 311954, "parentGroupID": 2 }, "2158": { "description_de": "Blaupausen von Strukturmodulen", "description_en-us": "Blueprints of Structure Modules.", "description_es": "Planos de módulos para estructuras.", "description_fr": "Plans de construction de modules de structure", "description_it": "Blueprints of Structure Modules.", "description_ja": "ストラクチャモジュールのブループリント。", "description_ko": "스탠드업 구조물 모듈 블루프린트입니다.", "description_ru": "Чертежи модулей сооружений.", "description_zh": "建筑装备的蓝图。", "descriptionID": 311957, "hasTypes": 0, "iconID": 2703, "name_de": "Strukturausrüstung", "name_en-us": "Structure Equipment", "name_es": "Equipo para estructuras", "name_fr": "Équipement de structure", "name_it": "Structure Equipment", "name_ja": "ストラクチャ設備", "name_ko": "구조물 모듈", "name_ru": "Оборудование сооружений", "name_zh": "建筑设备", "nameID": 311956, "parentGroupID": 2 }, "2159": { "description_de": "Blaupausen für Struktur-Kampfmodifikationen", "description_en-us": "Blueprints for Structure Combat rigs.", "description_es": "Planos para complementos de combate para estructuras.", "description_fr": "Blueprints for Structure Combat rigs.", "description_it": "Blueprints for Structure Combat rigs.", "description_ja": "コンバットリグ・ストラクチャのブループリント。", "description_ko": "스탠드업 구조물 전투 리그 블루프린트입니다.", "description_ru": "Чертежи боевых тюнинг-модулей для сооружений", "description_zh": "建筑战斗改装件的蓝图。", "descriptionID": 311959, "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Kampfmodifikationen", "name_en-us": "Structure Combat Rigs", "name_es": "Complementos de combate para estructuras", "name_fr": "Structure Combat Rigs", "name_it": "Structure Combat Rigs", "name_ja": "ストラクチャ ― コンバットリグ", "name_ko": "전투 리그", "name_ru": "Боевые модификаторы", "name_zh": "建筑战斗改装件", "nameID": 311958, "parentGroupID": 2157 }, "2160": { "description_de": "Blaupausen für Struktur: Aufbereitungs- und Reaktionsmodifikationen.", "description_en-us": "Blueprints for structure reprocessing and reactions rigs.", "description_es": "Planos para complementos de reacción y reprocesamiento de estructuras.", "description_fr": "Plans de construction pour optimisations de retraitement et de réaction (structure)", "description_it": "Blueprints for structure reprocessing and reactions rigs.", "description_ja": "再処理リグ・ストラクチャのブループリント。", "description_ko": "스탠드업 구조물 정제 및 반응로 리그 블루프린트입니다.", "description_ru": "Чертежи надстроек для сооружений — переработка и реакции.", "description_zh": "建筑提炼和反应改装件的蓝图。", "descriptionID": 311961, "hasTypes": 1, "iconID": 2703, "name_de": "Struktur: Ressourcenverarbeitungsmodifikationen", "name_en-us": "Structure Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos para estructuras", "name_fr": "Optimisations de traitement des ressources (structure)", "name_it": "Structure Resource Processing Rigs", "name_ja": "ストラクチャ再処理リグ", "name_ko": "자원 정제 리그", "name_ru": "Надстройки для сооружений — переработка ресурсов", "name_zh": "建筑资源提炼改装件", "nameID": 311960, "parentGroupID": 2157 }, "2161": { "hasTypes": 0, "iconID": 2703, "name_de": "Elektronische Kriegsführung", "name_en-us": "Electronic Warfare", "name_es": "Guerra electrónica", "name_fr": "Guerre électronique", "name_it": "Electronic Warfare", "name_ja": "電子戦", "name_ko": "전자전 장비", "name_ru": "Системы РЭБ", "name_zh": "电子战", "nameID": 311962, "parentGroupID": 2158 }, "2162": { "hasTypes": 0, "iconID": 2703, "name_de": "Elektronik- & Sensorupgrades", "name_en-us": "Electronics and Sensor Upgrades", "name_es": "Mejoras electrónicas y de sensores", "name_fr": "Améliorations des détecteurs et de l'électronique", "name_it": "Electronics and Sensor Upgrades", "name_ja": "電子システムおよびセンサーのアップグレード", "name_ko": "전자기기 및 센서 업그레이드", "name_ru": "Улучшения сенсоров и электронных систем", "name_zh": "电子学和感应器升级件", "nameID": 311963, "parentGroupID": 2158 }, "2163": { "hasTypes": 0, "iconID": 2703, "name_de": "Ausrüstung für Ingenieurwesen", "name_en-us": "Engineering Equipment", "name_es": "Equipo de ingeniería", "name_fr": "Équipement d'ingénierie", "name_it": "Engineering Equipment", "name_ja": "光学装置", "name_ko": "엔지니어링 장비", "name_ru": "Инженерное оборудование", "name_zh": "工程装备", "nameID": 311964, "parentGroupID": 2158 }, "2164": { "hasTypes": 0, "iconID": 2703, "name_de": "Strukturwaffen", "name_en-us": "Structure Weapons", "name_es": "Armas para estructuras", "name_fr": "Structure Weapons", "name_it": "Structure Weapons", "name_ja": "ストラクチャ兵器", "name_ko": "구조물 무기", "name_ru": "Вооружение", "name_zh": "建筑武器", "nameID": 311965, "parentGroupID": 2158 }, "2165": { "hasTypes": 1, "iconID": 2703, "name_de": "Jäger-Upgrades", "name_en-us": "Fighter Upgrades", "name_es": "Mejoras de cazas", "name_fr": "Mises à niveau des chasseurs", "name_it": "Fighter Upgrades", "name_ja": "戦闘機のアップグレード", "name_ko": "파이터 업그레이드", "name_ru": "Улучшения истребителей", "name_zh": "铁骑舰载机升级件", "nameID": 311966, "parentGroupID": 2158 }, "2166": { "hasTypes": 0, "iconID": 2703, "name_de": "Dienstmodule", "name_en-us": "Service Modules", "name_es": "Módulos de servicio", "name_fr": "Modules de service :", "name_it": "Service Modules", "name_ja": "サービスモジュール", "name_ko": "서비스 모듈", "name_ru": "Служебные модули", "name_zh": "服务装备", "nameID": 311967, "parentGroupID": 2158 }, "2167": { "hasTypes": 1, "iconID": 2703, "name_de": "Elektronische Gegenmaßnahmen", "name_en-us": "Electronic Counter Measures", "name_es": "Contramedidas electrónicas", "name_fr": "Contremesures électroniques", "name_it": "Electronic Counter Measures", "name_ja": "反撃用電子装置", "name_ko": "ECM", "name_ru": "Модули глушения захвата целей", "name_zh": "ECM", "nameID": 311968, "parentGroupID": 2161 }, "2168": { "hasTypes": 1, "iconID": 2703, "name_de": "Sensorferndämpfer", "name_en-us": "Remote Sensor Dampeners", "name_es": "Atenuadores de sensor remotos", "name_fr": "Atténuateurs de détection à distance", "name_it": "Remote Sensor Dampeners", "name_ja": "リモートセンサーダンプナー", "name_ko": "원격 센서 댐프너", "name_ru": "Модули подавления захвата целей", "name_zh": "远程感应抑阻器", "nameID": 311969, "parentGroupID": 2161 }, "2169": { "hasTypes": 1, "iconID": 2703, "name_de": "Stasisnetze", "name_en-us": "Stasis Webifiers", "name_es": "Redes ralentizadoras", "name_fr": "Générateurs de stase", "name_it": "Stasis Webifiers", "name_ja": "ステイシスウェビファイヤー", "name_ko": "스테이시스 웹 생성기", "name_ru": "Стазис-индукторы", "name_zh": "停滞缠绕光束", "nameID": 311970, "parentGroupID": 2161 }, "2170": { "hasTypes": 1, "iconID": 2703, "name_de": "Zielmarkierung", "name_en-us": "Target Painters", "name_es": "Reveladores de objetivo", "name_fr": "Marqueurs de cible", "name_it": "Target Painters", "name_ja": "ターゲットぺインター", "name_ko": "타겟 페인터", "name_ru": "Системы подсветки целей", "name_zh": "目标标记装置", "nameID": 311971, "parentGroupID": 2161 }, "2171": { "description_de": "Waffenstörer", "description_en-us": "Weapon Disruptors", "description_es": "Disruptores de armas", "description_fr": "Perturbateurs d'armement", "description_it": "Weapon Disruptors", "description_ja": "兵器妨害器", "description_ko": "무기 디스럽터", "description_ru": "Подавители оружия", "description_zh": "武器扰断器", "descriptionID": 317006, "hasTypes": 1, "iconID": 2703, "name_de": "Waffenstörer", "name_en-us": "Weapon Disruptors", "name_es": "Disruptores de armas", "name_fr": "Perturbateurs d'armement", "name_it": "Weapon Disruptors", "name_ja": "トラッキング妨害器", "name_ko": "무기 디스럽터", "name_ru": "Подавители оружия", "name_zh": "武器扰断器", "nameID": 311972, "parentGroupID": 2161 }, "2172": { "hasTypes": 1, "iconID": 2703, "name_de": "Warpunterbrecher", "name_en-us": "Warp Scramblers", "name_es": "Distorsionadores de warp", "name_fr": "Inhibiteurs de warp", "name_it": "Warp Scramblers", "name_ja": "ワープスクランブラー", "name_ko": "워프 스크램블러", "name_ru": "Варп-глушители", "name_zh": "跃迁扰频器", "nameID": 311973, "parentGroupID": 2161 }, "2173": { "hasTypes": 1, "iconID": 2703, "name_de": "CPU-Upgrades", "name_en-us": "CPU Upgrades", "name_es": "Mejoras de CPU", "name_fr": "Améliorations de CPU", "name_it": "CPU Upgrades", "name_ja": "CPUのアップグレード", "name_ko": "CPU 업그레이드", "name_ru": "Улучшения ЦПУ", "name_zh": "CPU升级件", "nameID": 311974, "parentGroupID": 2162 }, "2174": { "hasTypes": 1, "iconID": 2703, "name_de": "Signalverstärker", "name_en-us": "Signal Amplifiers", "name_es": "Amplificadores de señal", "name_fr": "Amplificateurs de signal", "name_it": "Signal Amplifiers", "name_ja": "シグナル増幅器", "name_ko": "신호 증폭기", "name_ru": "Усилители сигнала", "name_zh": "信号放大器", "nameID": 311975, "parentGroupID": 2162 }, "2175": { "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Batterien", "name_en-us": "Capacitor Batteries", "name_es": "Baterías de condensador", "name_fr": "Batteries de capaciteur", "name_it": "Capacitor Batteries", "name_ja": "キャパシタブースター", "name_ko": "캐패시터 배터리", "name_ru": "Накопительные батареи", "name_zh": "电容电池", "nameID": 311976, "parentGroupID": 2163 }, "2176": { "hasTypes": 1, "iconID": 2703, "name_de": "Energieneutralisierer", "name_en-us": "Energy Neutralizers", "name_es": "Neutralizadores energéticos", "name_fr": "Neutraliseurs d'énergie", "name_it": "Energy Neutralizers", "name_ja": "エネルギーニュートライザー", "name_ko": "에너지 뉴트럴라이저", "name_ru": "Дистанционные нейтрализаторы заряда", "name_zh": "能量中和器", "nameID": 311977, "parentGroupID": 2163 }, "2177": { "hasTypes": 1, "iconID": 2703, "name_de": "Reaktorkontrolleinheiten", "name_en-us": "Reactor Control Units", "name_es": "Unidades de control de reactor", "name_fr": "Unités de contrôle de réacteur", "name_it": "Reactor Control Units", "name_ja": "リアクター制御装置", "name_ko": "반응로 제어유닛", "name_ru": "Системы управления реактором", "name_zh": "反应堆控制单元", "nameID": 311978, "parentGroupID": 2163 }, "2178": { "hasTypes": 0, "iconID": 2703, "name_de": "Lenkwaffenwerfer", "name_en-us": "Missile Launchers", "name_es": "Lanzamisiles", "name_fr": "Lance-missiles", "name_it": "Missile Launchers", "name_ja": "ミサイルランチャー", "name_ko": "미사일 런처", "name_ru": "Пусковые установки", "name_zh": "导弹发射器", "nameID": 311979, "parentGroupID": 2164 }, "2179": { "hasTypes": 0, "iconID": 2703, "name_de": "Waffenverbesserungen", "name_en-us": "Weapon Upgrades", "name_es": "Mejoras de armas", "name_fr": "Améliorations de l'armement", "name_it": "Weapon Upgrades", "name_ja": "兵器のアップグレード", "name_ko": "무기 업그레이드", "name_ru": "Улучшения систем вооружения", "name_zh": "武器升级件", "nameID": 311980, "parentGroupID": 2164 }, "2180": { "hasTypes": 1, "iconID": 2703, "name_de": "Doomsday-Waffen", "name_en-us": "Doomsday Devices", "name_es": "Dispositivos apocalípticos", "name_fr": "Armes d’annihilation", "name_it": "Doomsday Devices", "name_ja": "ドゥームズデイ装置", "name_ko": "둠스데이 무기", "name_ru": "Орудия Судного дня", "name_zh": "末日武器装置", "nameID": 311981, "parentGroupID": 2164 }, "2181": { "hasTypes": 1, "iconID": 2703, "name_de": "Zitadellen-Dienstmodule", "name_en-us": "Citadel Service Modules", "name_es": "Módulos de servicio de ciudadela", "name_fr": "Modules de service Citadelle", "name_it": "Citadel Service Modules", "name_ja": "城塞サービスモジュール", "name_ko": "시타델", "name_ru": "Служебные модули цитадели", "name_zh": "堡垒服务装备", "nameID": 311982, "parentGroupID": 2166 }, "2182": { "hasTypes": 1, "iconID": 2703, "name_de": "Ressourcenverarbeitung-Dienstmodule", "name_en-us": "Resource Processing Service Modules", "name_es": "Módulos de servicio de procesamiento de recursos", "name_fr": "Modules de service de traitement des ressources", "name_it": "Resource Processing Service Modules", "name_ja": "再処理サービスモジュール", "name_ko": "자원 정제 시설", "name_ru": "Служебные модули переработки ресурсов", "name_zh": "资源提炼服务装备", "nameID": 311983, "parentGroupID": 2166 }, "2183": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Anticapital-Werfer", "name_en-us": "Structure Anticapital Launcher", "name_es": "Lanzamisiles anticapitales para estructuras", "name_fr": "Lanceur de missiles anticapitaux (Structure)", "name_it": "Structure Anticapital Launcher", "name_ja": "ストラクチャ ― 対母艦ランチャー", "name_ko": "스탠드업 대 캐피탈 런처", "name_ru": "ПУ сооружений против КБТ", "name_zh": "建筑反旗舰发射器", "nameID": 311984, "parentGroupID": 2178 }, "2184": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Antisubcapital-Werfer", "name_en-us": "Structure Antisubcapital Launcher", "name_es": "Lanzamisiles antisubcapitales para estructuras", "name_fr": "Lanceur de missiles anti sous-capitaux (Structure)", "name_it": "Structure Antisubcapital Launcher", "name_ja": "ストラクチャ ― 対準母艦ランチャー", "name_ko": "스탠드업 대 서브캐피탈 런처", "name_ru": "ПУ сооружений против кораблей стандартного тоннажа", "name_zh": "建筑反非旗舰发射器", "nameID": 311985, "parentGroupID": 2178 }, "2185": { "hasTypes": 1, "iconID": 2703, "name_de": "Lenkbombenwerfer", "name_en-us": "Guided Bomb Launchers", "name_es": "Lanzabombas guiadas", "name_fr": "Lanceurs de bombe ciblée", "name_it": "Guided Bomb Launchers", "name_ja": "誘導爆弾ランチャー", "name_ko": "유도 폭탄 런처", "name_ru": "Бомбомёты с системами наведения", "name_zh": "制导炸弹发射器", "nameID": 311986, "parentGroupID": 2164 }, "2186": { "hasTypes": 1, "iconID": 2703, "name_de": "Verteidigungsbatterien", "name_en-us": "Point Defense Batteries", "name_es": "Baterías de defensa de puntos", "name_fr": "Batteries de défense ciblée", "name_it": "Point Defense Batteries", "name_ja": "地点防衛バッテリー", "name_ko": "거점 방어 포대", "name_ru": "Системы точечной обороны", "name_zh": "定点防卫炮塔", "nameID": 311987, "parentGroupID": 2163 }, "2187": { "hasTypes": 1, "iconID": 2703, "name_de": "Schiff-Traktorstrahlen", "name_en-us": "Ship Tractor Beams", "name_es": "Rayos tractores para naves", "name_fr": "Rayons de tractage de vaisseau", "name_it": "Ship Tractor Beams", "name_ja": "艦船トラクタービーム", "name_ko": "함선 트랙터 빔", "name_ru": "Боевые гравизахваты", "name_zh": "舰船牵引光束", "nameID": 311988, "parentGroupID": 2162 }, "2188": { "hasTypes": 1, "iconID": 2703, "name_de": "Energiespeicher-Stromrelais", "name_en-us": "Capacitor Power Relays", "name_es": "Relés de potencia de condensador", "name_fr": "Relais de puissance du capaciteur", "name_it": "Capacitor Power Relays", "name_ja": "リパルサーフィールド", "name_ko": "캐패시터 릴레이", "name_ru": "Силовые реле накопителя", "name_zh": "电容能源继电器", "nameID": 311989, "parentGroupID": 2163 }, "2189": { "hasTypes": 1, "iconID": 2703, "name_de": "Ballistikkontrollsysteme", "name_en-us": "Ballistic Control Systems", "name_es": "Sistemas de control balístico", "name_fr": "Systèmes de contrôle balistique", "name_it": "Ballistic Control Systems", "name_ja": "弾道制御システム", "name_ko": "탄도 제어시스템", "name_ru": "Приборы контроля траектории", "name_zh": "弹道控制系统", "nameID": 311990, "parentGroupID": 2179 }, "2190": { "hasTypes": 1, "iconID": 2703, "name_de": "Lenkwaffen-Leitverbesserungen", "name_en-us": "Missile Guidance Enhancers", "name_es": "Intensificadores de guiado de misiles", "name_fr": "Optimisateurs de guidage des missiles", "name_it": "Missile Guidance Enhancers", "name_ja": "ミサイル誘導エンハンサー", "name_ko": "미사일 유도 향상장치", "name_ru": "Корректоры траекторий ракет", "name_zh": "导弹制导增强器", "nameID": 311991, "parentGroupID": 2179 }, "2191": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Anticapital-Lenkwaffen", "name_en-us": "Structure Anticapital Missiles", "name_es": "Misiles anticapitales para estructuras", "name_fr": "Missiles anticapitaux (Structure)", "name_it": "Structure Anticapital Missiles", "name_ja": "ストラクチャ ― 対母艦ミサイル", "name_ko": "스탠드업 대 캐피탈 미사일", "name_ru": "Ракеты сооружений против КБТ", "name_zh": "建筑反旗舰导弹", "nameID": 311992, "parentGroupID": 314 }, "2192": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Antisubcapital-Lenkwaffen", "name_en-us": "Structure Antisubcapital Missiles", "name_es": "Misiles antisubcapitales para estructuras", "name_fr": "Missiles anti sous-capitaux (Structure)", "name_it": "Structure Antisubcapital Missiles", "name_ja": "ストラクチャ ― 対準母艦ミサイル", "name_ko": "스탠드업 대 서브캐피탈 미사일", "name_ru": "Ракеты сооружений против кораблей стандартного тоннажа", "name_zh": "建筑反非旗舰导弹", "nameID": 311993, "parentGroupID": 314 }, "2193": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Lenkbomben", "name_en-us": "Structure Guided Bombs", "name_es": "Bombas guiadas para estructuras", "name_fr": "Bombe guidée (Structure)", "name_it": "Structure Guided Bombs", "name_ja": "ストラクチャ ― 誘導爆弾", "name_ko": "스탠드업 유도 폭탄", "name_ru": "Бомбы сооружений с системами наведения", "name_zh": "建筑制导炸弹", "nameID": 311994, "parentGroupID": 211 }, "2196": { "hasTypes": 1, "iconID": 21568, "name_de": "Struktur-Antisubcapital-Lenkwaffen", "name_en-us": "Structure Antisubcapital Missiles", "name_es": "Misiles antisubcapitales para estructuras", "name_fr": "Missiles anti sous-capitaux (Structure)", "name_it": "Structure Antisubcapital Missiles", "name_ja": "ストラクチャ ― 対準母艦ミサイル", "name_ko": "스탠드업 대 서브캐피탈 미사일", "name_ru": "Ракеты сооружений против кораблей стандартного тоннажа", "name_zh": "建筑反非旗舰导弹", "nameID": 311995, "parentGroupID": 114 }, "2197": { "hasTypes": 1, "iconID": 21567, "name_de": "Struktur-Anticapital-Lenkwaffen", "name_en-us": "Structure Anticapital Missiles", "name_es": "Misiles anticapitales para estructuras", "name_fr": "Missiles anticapitaux (Structure)", "name_it": "Structure Anticapital Missiles", "name_ja": "ストラクチャ ― 対母艦ミサイル", "name_ko": "스탠드업 대 캐피탈 미사일", "name_ru": "Ракеты сооружений против КБТ", "name_zh": "建筑反旗舰导弹", "nameID": 311996, "parentGroupID": 114 }, "2198": { "hasTypes": 1, "iconID": 21569, "name_de": "Struktur-Lenkbomben", "name_en-us": "Structure Guided Bombs", "name_es": "Bombas guiadas para estructuras", "name_fr": "Bombes guidées (Structure)", "name_it": "Structure Guided Bombs", "name_ja": "ストラクチャ ― 誘導爆弾", "name_ko": "스탠드업 유도 폭탄", "name_ru": "Бомбы сооружений с системами наведения", "name_zh": "建筑制导炸弹", "nameID": 311997, "parentGroupID": 11 }, "2199": { "hasTypes": 0, "iconID": 2222, "name_de": "Zitadellen", "name_en-us": "Citadels", "name_es": "Ciudadelas", "name_fr": "Citadelles", "name_it": "Citadels", "name_ja": "城塞", "name_ko": "시타델", "name_ru": "Цитадели", "name_zh": "堡垒", "nameID": 311998, "parentGroupID": 477 }, "2200": { "hasTypes": 1, "iconID": 2222, "name_de": "Fraktionszitadellen", "name_en-us": "Faction Citadels", "name_es": "Ciudadelas faccionarias", "name_fr": "Citadelles de faction", "name_it": "Faction Citadels", "name_ja": "ファクションの城塞", "name_ko": "팩션", "name_ru": "Пиратские и армейские", "name_zh": "势力堡垒", "nameID": 311999, "parentGroupID": 2199 }, "2201": { "hasTypes": 1, "iconID": 2222, "name_de": "Standard-Zitadellen", "name_en-us": "Standard Citadels", "name_es": "Ciudadelas estándar", "name_fr": "Citadelles standard", "name_it": "Standard Citadels", "name_ja": "標準的な城塞", "name_ko": "일반", "name_ru": "Типовые цитадели", "name_zh": "标准堡垒", "nameID": 312000, "parentGroupID": 2199 }, "2202": { "description_de": "Module, die Funktionen für Strukturen bieten", "description_en-us": "Modules that provide functionality to Structures", "description_es": "Módulos que proporcionan funcionalidad a estructuras.", "description_fr": "Modules offrant diverses fonctionnalités aux structures.", "description_it": "Modules that provide functionality to Structures", "description_ja": "ストラクチャに様々な機能を与えるモジュール", "description_ko": "스탠드업 구조물에 각종 기능을 추가합니다.", "description_ru": "Модули, расширяющие ассортимент возможностей, обеспечиваемых сооружениями", "description_zh": "为建筑提供功能的装备", "descriptionID": 315541, "hasTypes": 0, "iconID": 21561, "name_de": "Strukturausrüstung", "name_en-us": "Structure Equipment", "name_es": "Equipo para estructuras", "name_fr": "Équipement de structure", "name_it": "Structure Equipment", "name_ja": "ストラクチャ設備", "name_ko": "구조물 모듈", "name_ru": "Оборудование сооружений", "name_zh": "建筑装备", "nameID": 312001 }, "2203": { "description_de": "Modifikationen, welche die Funktionalität in Strukturen verbessern", "description_en-us": "Rigs that improve functionality in Structures", "description_es": "Complementos que mejoran la funcionalidad de las estructuras.", "description_fr": "Modules d'optimisation permettant d'améliorer la fonctionnalité des structures.", "description_it": "Rigs that improve functionality in Structures", "description_ja": "ストラクチャの機能を強化するリグ", "description_ko": "스탠드업 구조물의 성능을 향상하는 리그입니다.", "description_ru": "Тюнинг-модули, повышающие эффективность сооружений", "description_zh": "增强建筑功能性的改装件", "descriptionID": 315547, "hasTypes": 0, "iconID": 2887, "name_de": "Strukturmodifikationen", "name_en-us": "Structure Modifications", "name_es": "Modificaciones para estructuras", "name_fr": "Modifications de structure", "name_it": "Structure Modifications", "name_ja": "ストラクチャ改良品", "name_ko": "구조물 리그", "name_ru": "Модификации сооружений", "name_zh": "建筑改装件", "nameID": 312002 }, "2204": { "description_de": "Struktur: Aufbereitungs- und Reaktionsmodifikationen", "description_en-us": "Structure Reprocessing and Reaction Rigs", "description_es": "Complementos de reacción y reprocesamiento de estructuras.", "description_fr": "Optimisations de retraitement et de réaction (structure)", "description_it": "Structure Reprocessing and Reaction Rigs", "description_ja": "ストラクチャ再処理リグ", "description_ko": "스탠드업 구조물 정제 및 반응로 리그입니다.", "description_ru": "Надстройки для сооружение — переработка и реакции", "description_zh": "建筑提炼和反应改装件", "descriptionID": 315465, "hasTypes": 0, "iconID": 21602, "name_de": "Struktur: Ressourcenverarbeitungsmodifikationen", "name_en-us": "Structure Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos para estructuras", "name_fr": "Optimisations de traitement des ressources (structure)", "name_it": "Structure Resource Processing Rigs", "name_ja": "ストラクチャ再処理リグ", "name_ko": "자원 정제 리그", "name_ru": "Надстройки для сооружений — переработка ресурсов", "name_zh": "建筑资源提炼改装件", "nameID": 312003, "parentGroupID": 2203 }, "2205": { "description_de": "Struktur: Kampfmodifikation", "description_en-us": "Structure Combat Rigs", "description_es": "Complementos de combate para estructuras", "description_fr": "Structure Combat Rigs", "description_it": "Structure Combat Rigs", "description_ja": "ストラクチャ ― コンバットリグ", "description_ko": "전투 리그", "description_ru": "Боевые тюнинг-модули", "description_zh": "建筑战斗改装件", "descriptionID": 312184, "hasTypes": 0, "iconID": 21599, "name_de": "Struktur-Kampfmodifikationen", "name_en-us": "Structure Combat Rigs", "name_es": "Complementos de combate para estructuras", "name_fr": "Structure Combat Rigs", "name_it": "Structure Combat Rigs", "name_ja": "ストラクチャ ― コンバットリグ", "name_ko": "전투 리그", "name_ru": "Боевые модификаторы", "name_zh": "建筑战斗改装件", "nameID": 312004, "parentGroupID": 2203 }, "2206": { "hasTypes": 0, "iconID": 111, "name_de": "Elektronische Kriegsführung", "name_en-us": "Electronic Warfare", "name_es": "Guerra electrónica", "name_fr": "Guerre électronique", "name_it": "Electronic Warfare", "name_ja": "電子戦", "name_ko": "전자전 장비", "name_ru": "Системы РЭБ", "name_zh": "电子战", "nameID": 312005, "parentGroupID": 2202 }, "2207": { "hasTypes": 0, "iconID": 104, "name_de": "Elektronik- & Sensorupgrades", "name_en-us": "Electronics and Sensor Upgrades", "name_es": "Mejoras electrónicas y de sensores", "name_fr": "Améliorations des détecteurs et de l'électronique", "name_it": "Electronics and Sensor Upgrades", "name_ja": "電子システムおよびセンサーのアップグレード", "name_ko": "전자기기 및 센서 업그레이드", "name_ru": "Улучшения сенсоров и электронных систем", "name_zh": "电子学和感应器升级件", "nameID": 312006, "parentGroupID": 2202 }, "2208": { "hasTypes": 0, "iconID": 70, "name_de": "Ausrüstung für Ingenieurwesen", "name_en-us": "Engineering Equipment", "name_es": "Equipo de ingeniería", "name_fr": "Équipement d'ingénierie", "name_it": "Engineering Equipment", "name_ja": "光学装置", "name_ko": "엔지니어링 장비", "name_ru": "Инженерное оборудование", "name_zh": "工程装备", "nameID": 312007, "parentGroupID": 2202 }, "2209": { "hasTypes": 0, "iconID": 365, "name_de": "Strukturwaffen", "name_en-us": "Structure Weapons", "name_es": "Armas para estructuras", "name_fr": "Structure Weapons", "name_it": "Structure Weapons", "name_ja": "ストラクチャ兵器", "name_ko": "구조물 무기", "name_ru": "Вооружение", "name_zh": "建筑武器", "nameID": 312008, "parentGroupID": 2202 }, "2210": { "hasTypes": 0, "iconID": 21596, "name_de": "Dienstmodule", "name_en-us": "Service Modules", "name_es": "Módulos de servicio", "name_fr": "Modules de service :", "name_it": "Service Modules", "name_ja": "サービスモジュール", "name_ko": "서비스 모듈", "name_ru": "Служебные модули", "name_zh": "服务装备", "nameID": 312009, "parentGroupID": 2202 }, "2211": { "hasTypes": 1, "iconID": 109, "name_de": "Elektronische Gegenmaßnahmen", "name_en-us": "Electronic Counter Measures", "name_es": "Contramedidas electrónicas", "name_fr": "Contremesures électroniques", "name_it": "Electronic Counter Measures", "name_ja": "反撃用電子装置", "name_ko": "ECM", "name_ru": "Модули глушения захвата целей", "name_zh": "ECM", "nameID": 312010, "parentGroupID": 2206 }, "2212": { "hasTypes": 1, "iconID": 105, "name_de": "Sensorferndämpfer", "name_en-us": "Remote Sensor Dampeners", "name_es": "Atenuadores de sensor remotos", "name_fr": "Atténuateurs de détection à distance", "name_it": "Remote Sensor Dampeners", "name_ja": "リモートセンサーダンプナー", "name_ko": "원격 센서 댐프너", "name_ru": "Модули подавления захвата целей", "name_zh": "远程感应抑阻器", "nameID": 312011, "parentGroupID": 2206 }, "2213": { "hasTypes": 1, "iconID": 1284, "name_de": "Stasisnetze", "name_en-us": "Stasis Webifiers", "name_es": "Redes ralentizadoras", "name_fr": "Générateurs de stase", "name_it": "Stasis Webifiers", "name_ja": "ステイシスウェビファイヤー", "name_ko": "스테이시스 웹 생성기", "name_ru": "Стазис-индукторы", "name_zh": "停滞缠绕光束", "nameID": 312012, "parentGroupID": 2206 }, "2214": { "hasTypes": 1, "iconID": 2983, "name_de": "Zielmarkierung", "name_en-us": "Target Painters", "name_es": "Reveladores de objetivo", "name_fr": "Marqueurs de cible", "name_it": "Target Painters", "name_ja": "ターゲットぺインター", "name_ko": "타겟 페인터", "name_ru": "Системы подсветки целей", "name_zh": "目标标记装置", "nameID": 312013, "parentGroupID": 2206 }, "2215": { "description_de": "Waffenstörer", "description_en-us": "Weapon Disruptors", "description_es": "Disruptores de armas.", "description_fr": "Perturbateurs d'armement", "description_it": "Weapon Disruptors", "description_ja": "兵器妨害器", "description_ko": "무기 디스럽터", "description_ru": "Подавители оружия", "description_zh": "武器扰断器", "descriptionID": 317007, "hasTypes": 1, "iconID": 1639, "name_de": "Waffenstörer", "name_en-us": "Weapon Disruptors", "name_es": "Disruptores de armas", "name_fr": "Perturbateurs d'armement", "name_it": "Weapon Disruptors", "name_ja": "トラッキング妨害器", "name_ko": "무기 디스럽터", "name_ru": "Подавители оружия", "name_zh": "武器扰断器", "nameID": 312014, "parentGroupID": 2206 }, "2216": { "hasTypes": 1, "iconID": 111, "name_de": "Warpstörer", "name_en-us": "Warp Disruptors", "name_es": "Disruptores de warp", "name_fr": "Perturbateurs de warp", "name_it": "Warp Disruptors", "name_ja": "ワープスクランブラー", "name_ko": "워프 디스럽터", "name_ru": "Варп-подавители", "name_zh": "跃迁扰断器", "nameID": 312015, "parentGroupID": 2206 }, "2218": { "hasTypes": 1, "iconID": 1405, "name_de": "CPU-Upgrades", "name_en-us": "CPU Upgrades", "name_es": "Mejoras de CPU", "name_fr": "Améliorations de CPU", "name_it": "CPU Upgrades", "name_ja": "CPUのアップグレード", "name_ko": "CPU 업그레이드", "name_ru": "Улучшения ЦПУ", "name_zh": "CPU升级件", "nameID": 312017, "parentGroupID": 2207 }, "2219": { "hasTypes": 1, "iconID": 104, "name_de": "Signalverstärker", "name_en-us": "Signal Amplifiers", "name_es": "Amplificadores de señal", "name_fr": "Amplificateurs de signal", "name_it": "Signal Amplifiers", "name_ja": "シグナル増幅器", "name_ko": "신호 증폭기", "name_ru": "Усилители сигнала", "name_zh": "信号放大器", "nameID": 312018, "parentGroupID": 2207 }, "2220": { "hasTypes": 1, "iconID": 26455, "name_de": "Energiespeicher-Stromrelais", "name_en-us": "Capacitor Power Relays", "name_es": "Relés de potencia de condensador", "name_fr": "Relais de puissance du capaciteur", "name_it": "Capacitor Power Relays", "name_ja": "リパルサーフィールド", "name_ko": "캐패시터 릴레이", "name_ru": "Силовые реле накопителя", "name_zh": "电容能源继电器", "nameID": 312019, "parentGroupID": 2208 }, "2221": { "hasTypes": 1, "iconID": 21561, "name_de": "Verteidigungsbatterien", "name_en-us": "Point Defense Batteries", "name_es": "Baterías de defensa de puntos", "name_fr": "Batteries de défense ciblée", "name_it": "Point Defense Batteries", "name_ja": "地点防衛バッテリー", "name_ko": "거점 방어 포대", "name_ru": "Системы точечной обороны", "name_zh": "定点防卫炮塔", "nameID": 312020, "parentGroupID": 2208 }, "2222": { "hasTypes": 1, "iconID": 26547, "name_de": "Reaktorkontrolleinheiten", "name_en-us": "Reactor Control Units", "name_es": "Unidades de control de reactor", "name_fr": "Unités de contrôle de réacteur", "name_it": "Reactor Control Units", "name_ja": "リアクター制御装置", "name_ko": "반응로 제어유닛", "name_ru": "Системы управления реактором", "name_zh": "反应堆控制单元", "nameID": 312021, "parentGroupID": 2208 }, "2223": { "hasTypes": 1, "iconID": 1283, "name_de": "Energieneutralisierer", "name_en-us": "Energy Neutralizers", "name_es": "Neutralizadores energéticos", "name_fr": "Neutraliseurs d'énergie", "name_it": "Energy Neutralizers", "name_ja": "エネルギーニュートライザー", "name_ko": "에너지 뉴트럴라이저", "name_ru": "Дистанционные нейтрализаторы заряда", "name_zh": "能量中和器", "nameID": 312022, "parentGroupID": 2208 }, "2224": { "hasTypes": 1, "iconID": 89, "name_de": "Energiespeicher-Batterien", "name_en-us": "Capacitor Batteries", "name_es": "Baterías de condensador", "name_fr": "Batteries de capaciteur", "name_it": "Capacitor Batteries", "name_ja": "キャパシタブースター", "name_ko": "캐패시터 배터리", "name_ru": "Накопительные батареи", "name_zh": "电容电池", "nameID": 312023, "parentGroupID": 2208 }, "2226": { "hasTypes": 0, "iconID": 168, "name_de": "Lenkwaffenwerfer", "name_en-us": "Missile Launchers", "name_es": "Lanzamisiles", "name_fr": "Lance-missiles", "name_it": "Missile Launchers", "name_ja": "ミサイルランチャー", "name_ko": "미사일 런처", "name_ru": "Пусковые установки", "name_zh": "导弹发射器", "nameID": 312025, "parentGroupID": 2209 }, "2227": { "hasTypes": 0, "iconID": 21440, "name_de": "Waffenverbesserungen", "name_en-us": "Weapon Upgrades", "name_es": "Mejoras de armas", "name_fr": "Améliorations de l'armement", "name_it": "Weapon Upgrades", "name_ja": "兵器のアップグレード", "name_ko": "무기 업그레이드", "name_ru": "Улучшения систем вооружения", "name_zh": "武器升级件", "nameID": 312026, "parentGroupID": 2209 }, "2228": { "hasTypes": 1, "iconID": 2934, "name_de": "Doomsday-Waffen", "name_en-us": "Doomsday Devices", "name_es": "Dispositivos apocalípticos", "name_fr": "Armes d’annihilation", "name_it": "Doomsday Devices", "name_ja": "ドゥームズデイ装置", "name_ko": "둠스데이 무기", "name_ru": "Орудия Судного дня", "name_zh": "末日武器装置", "nameID": 312027, "parentGroupID": 2209 }, "2229": { "hasTypes": 1, "iconID": 21564, "name_de": "Lenkbombenwerfer", "name_en-us": "Guided Bomb Launchers", "name_es": "Lanzabombas guiado", "name_fr": "Lanceurs de bombe ciblée", "name_it": "Guided Bomb Launchers", "name_ja": "誘導爆弾ランチャー", "name_ko": "유도 폭탄 런처", "name_ru": "Бомбомёты с системами наведения", "name_zh": "制导炸弹发射器", "nameID": 312028, "parentGroupID": 2209 }, "2230": { "hasTypes": 1, "iconID": 21565, "name_de": "Structure Anticapital Launcher", "name_en-us": "Structure Anticapital Launcher", "name_es": "Lanzamisiles anticapitales para estructuras", "name_fr": "Lanceur de missiles anticapitaux (Structure)", "name_it": "Structure Anticapital Launcher", "name_ja": "ストラクチャ ― 対母艦ランチャー", "name_ko": "스탠드업 대 캐피탈 런처", "name_ru": "ПУ сооружений против КБТ", "name_zh": "建筑反旗舰发射器", "nameID": 312029, "parentGroupID": 2226 }, "2231": { "hasTypes": 1, "iconID": 21566, "name_de": "Struktur-Antisubcapital-Werfer", "name_en-us": "Structure Antisubcapital Launcher", "name_es": "Lanzamisiles antisubcapitales para estructuras", "name_fr": "Lanceur de missiles anti sous-capitaux (Structure)", "name_it": "Structure Antisubcapital Launcher", "name_ja": "ストラクチャ ― 対準母艦ランチャー", "name_ko": "스탠드업 대 서브캐피탈 런처", "name_ru": "ПУ сооружений против кораблей стандартного тоннажа", "name_zh": "建筑反非旗舰发射器", "nameID": 312030, "parentGroupID": 2226 }, "2232": { "hasTypes": 1, "iconID": 21596, "name_de": "Zitadellen-Dienstmodule", "name_en-us": "Citadel Service Modules", "name_es": "Módulos de servicio de ciudadela", "name_fr": "Modules de service Citadelle", "name_it": "Citadel Service Modules", "name_ja": "城塞サービスモジュール", "name_ko": "시타델", "name_ru": "Служебные модули цитадели", "name_zh": "堡垒服务装备", "nameID": 312031, "parentGroupID": 2210 }, "2233": { "hasTypes": 1, "iconID": 21597, "name_de": "Ressourcenverarbeitung-Dienstmodule", "name_en-us": "Resource Processing Service Modules", "name_es": "Módulos de servicio de procesamiento de recursos", "name_fr": "Modules de service de traitement des ressources", "name_it": "Resource Processing Service Modules", "name_ja": "再処理サービスモジュール", "name_ko": "자원 정제 시설", "name_ru": "Служебные модули переработки ресурсов", "name_zh": "资源提炼服务装备", "nameID": 312032, "parentGroupID": 2210 }, "2234": { "hasTypes": 1, "iconID": 21440, "name_de": "Ballistikkontrollsysteme", "name_en-us": "Ballistic Control Systems", "name_es": "Sistemas de control balístico", "name_fr": "Systèmes de contrôle balistique", "name_it": "Ballistic Control Systems", "name_ja": "弾道制御システム", "name_ko": "탄도 제어시스템", "name_ru": "Приборы контроля траектории", "name_zh": "弹道控制系统", "nameID": 312033, "parentGroupID": 2227 }, "2235": { "hasTypes": 1, "iconID": 21439, "name_de": "Lenkwaffen-Leitverbesserungen", "name_en-us": "Missile Guidance Enhancers", "name_es": "Intensificadores de guiado de misiles", "name_fr": "Optimisateurs de guidage des missiles", "name_it": "Missile Guidance Enhancers", "name_ja": "ミサイル誘導エンハンサー", "name_ko": "미사일 유도 향상장치", "name_ru": "Корректоры траекторий ракет", "name_zh": "导弹制导增强器", "nameID": 312034, "parentGroupID": 2227 }, "2236": { "description_de": "Jäger sind kleine Kampfschiffe, die in Staffeln von Capital-Schiffen und Strukturen eingesetzt werden.", "description_en-us": "Fighters are small combat craft launched in squadrons from Capital Ships and Structures", "description_es": "Los cazas son pequeñas naves de combate que se lanzan en escuadrones desde naves capitales y estructuras.", "description_fr": "Les chasseurs sont de petits appareils de combat déployés en escadrons par les vaisseaux capitaux et les structures.", "description_it": "Fighters are small combat craft launched in squadrons from Capital Ships and Structures", "description_ja": "主力艦やストラクチャから飛行隊単位で出撃する戦闘機", "description_ko": "캐피탈 함선 및 스탠드업 구조물에서 운용되는 소형 전투함입니다.", "description_ru": "Истребители — малотоннажные боевые летательные аппараты, запускаемые в составе отрядов с борта КБТ или сооружений", "description_zh": "铁骑舰载机是由旗舰和建筑发射的小型战斗飞行器中队", "descriptionID": 315540, "hasTypes": 0, "iconID": 1084, "name_de": "Jäger", "name_en-us": "Fighters", "name_es": "Cazas", "name_fr": "Chasseurs", "name_it": "Fighters", "name_ja": "戦闘機", "name_ko": "파이터", "name_ru": "Истребители", "name_zh": "铁骑舰载机", "nameID": 312035, "parentGroupID": 157 }, "2237": { "hasTypes": 0, "iconID": 2703, "name_de": "Jäger", "name_en-us": "Fighters", "name_es": "Cazas", "name_fr": "Chasseurs", "name_it": "Fighters", "name_ja": "戦闘機", "name_ko": "파이터", "name_ru": "Истребители", "name_zh": "铁骑舰载机", "nameID": 312036, "parentGroupID": 357 }, "2238": { "description_de": "Blaupausen von Unterstützungsjäger-Designs.", "description_en-us": "Blueprints of support fighter designs.", "description_es": "Planos de diseños de cazas de apoyo.", "description_fr": "Plans de construction de modèles de chasseurs de soutien.", "description_it": "Blueprints of support fighter designs.", "description_ja": "支援戦闘機のブループリント。", "description_ko": "서포트 파이터 블루프린트입니다.", "description_ru": "Чертежи истребителей поддержки.", "description_zh": "后勤铁骑舰载机设计蓝图。", "descriptionID": 312038, "hasTypes": 1, "iconID": 2703, "name_de": "Unterstützungsjäger", "name_en-us": "Support Fighters", "name_es": "Cazas de apoyo", "name_fr": "Chasseurs de support", "name_it": "Support Fighters", "name_ja": "支援戦闘機", "name_ko": "서포트 파이터", "name_ru": "Истребители поддержки", "name_zh": "后勤铁骑舰载机", "nameID": 312037, "parentGroupID": 2237 }, "2239": { "description_de": "Bemannte Kampfschiffe, einsetzbar von Trägerschiffen und Supercarriern.", "description_en-us": "Piloted combat vessels, deployable from Carriers and Supercarriers.", "description_es": "Naves de combate tripuladas, desplegables desde portanaves y superportanaves.", "description_fr": "Vaisseaux de combat pilotés pouvant être déployés depuis les porte-vaisseaux et super porte-vaisseaux.", "description_it": "Piloted combat vessels, deployable from Carriers and Supercarriers.", "description_ja": "艦載機母艦と大型艦載機母艦から配置できる有人戦闘機。", "description_ko": "슈퍼캐리어 및 캐리어에서 사출되는 전투 기체입니다.", "description_ru": "Пилотирумые боевые корабли, запускаемые с КАРов и суперКАРов.", "description_zh": "由人驾驶的作战舰船,可以从航空母舰或者超级航母上进行部署。", "descriptionID": 312040, "hasTypes": 1, "iconID": 1084, "name_de": "Unterstützungsjäger", "name_en-us": "Support Fighters", "name_es": "Cazas de apoyo", "name_fr": "Chasseurs de support", "name_it": "Support Fighters", "name_ja": "支援戦闘機", "name_ko": "서포트 파이터", "name_ru": "Истребители поддержки", "name_zh": "后勤铁骑舰载机", "nameID": 312039, "parentGroupID": 2410 }, "2240": { "description_de": "Panzerplatten - 25000mm", "description_en-us": "25000mm Armor Plate", "description_es": "Placa de blindaje de 25 000 mm.", "description_fr": "Plaque de blindage de 25000mm", "description_it": "25000mm Armor Plate", "description_ja": "25000mmアーマープレート", "description_ko": "25000mm 장갑 플레이트", "description_ru": "Толщиной 25000 мм", "description_zh": "25000mm装甲附甲板", "descriptionID": 312069, "hasTypes": 1, "iconID": 79, "name_de": "Panzerplatten - 25000mm", "name_en-us": "25000mm Armor Plate", "name_es": "Placa de blindaje de 25 000 mm", "name_fr": "Plaque de blindage de 25000mm", "name_it": "25000mm Armor Plate", "name_ja": "25000mmアーマープレート", "name_ko": "25000mm 장갑 플레이트", "name_ru": "25000 мм", "name_zh": "25000mm装甲附甲板", "nameID": 312068, "parentGroupID": 133 }, "2241": { "description_de": "Schildvergrößerungssysteme der Capital-Klasse.", "description_en-us": "Capital-class shield extension systems.", "description_es": "Sistemas de extensión de escudo de clase capital.", "description_fr": "Systèmes d'extension de bouclier de classe capitale.", "description_it": "Capital-class shield extension systems.", "description_ja": "キャピタル級シールド拡張システム。", "description_ko": "캐피탈급 함선 실드 확장장치입니다.", "description_ru": "Дополнительные источники силовых полей для кораблей КБТ-класса.", "description_zh": "旗舰级别护盾扩展系统。", "descriptionID": 312071, "hasTypes": 1, "iconID": 1044, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312070, "parentGroupID": 551 }, "2242": { "description_de": "Für Capital-Schiffe typische Energiespeicher-Batterien.", "description_en-us": "Capital-sized capacitor batteries.", "description_es": "Baterías de condensador de tamaño capital.", "description_fr": "Batteries de capaciteur adaptées aux vaisseaux capitaux.", "description_it": "Capital-sized capacitor batteries.", "description_ja": "キャピタル級キャパシタバッテリー。", "description_ko": "캐피탈급 함선 캐패시터 배터리입니다.", "description_ru": "Дополнительные батареи накопителя для кораблей КБТ-класса", "description_zh": "旗舰级别电容器电池。", "descriptionID": 312073, "hasTypes": 1, "iconID": 89, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312072, "parentGroupID": 664 }, "2243": { "description_de": "Für Capital-Schiffe typische Energiespeicher-Booster.", "description_en-us": "Capital-sized capacitor boosters.", "description_es": "Potenciadores de condensador de tamaño capital.", "description_fr": "Boosters de capaciteur adaptées aux vaisseaux capitaux.", "description_it": "Capital-sized capacitor boosters.", "description_ja": "キャピタル級キャパシタブースター。", "description_ko": "캐피탈급 함선 부스터입니다.", "description_ru": "Системы пополнения накопителя для кораблей КБТ-класса", "description_zh": "旗舰级别电容注电器。", "descriptionID": 312075, "hasTypes": 1, "iconID": 1031, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312074, "parentGroupID": 668 }, "2244": { "description_de": "Rumpfreparatursystem-Designs für Capital-Schiffe.", "description_en-us": "Hull repair system designs, intended for Capital vessels.", "description_es": "Diseños de sistemas de reparación del casco destinados a naves capitales.", "description_fr": "Conceptions de systèmes de réparation de la coque, destinées aux vaisseaux capitaux.", "description_it": "Hull repair system designs, intended for Capital vessels.", "description_ja": "母艦級艦船で使用する船体リペアシステム。", "description_ko": "캐피탈급 함선 전용 선체수리 시스템입니다.", "description_ru": "Чертежи систем ремонта корпуса для кораблей КБТ-класса.", "description_zh": "结构维修系统,专为旗舰级别的舰船设计。", "descriptionID": 312077, "hasTypes": 1, "iconID": 80, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312076, "parentGroupID": 538 }, "2245": { "description_de": "Panzerungshärter die spontan mittels Skripten neu konfiguriert werden können.", "description_en-us": "Armor Hardeners that can be reconfigured on the fly using scripts.", "description_es": "Endurecedores de blindaje que pueden reconfigurarse sobre la marcha con scripts.", "description_fr": "Renforcements de blindage pouvant être reconfigurés à la volée à l'aide de scripts.", "description_it": "Armor Hardeners that can be reconfigured on the fly using scripts.", "description_ja": "スクリプトを使用して飛行中に構成を変更できるアーマーハードナー。", "description_ko": "스크립트로 조정 가능한 장갑 강화장치입니다.", "description_ru": "Системы укрепления брони, которые можно перепрограммировать «на лету» с помощью прошивок.", "description_zh": "为在飞行中使用脚本而特别改装的装甲增强器。", "descriptionID": 312079, "hasTypes": 1, "iconID": 10933, "name_de": "Skriptfähige Panzerungshärter", "name_en-us": "Scriptable Armor Hardeners", "name_es": "Endurecedores de blindaje programables", "name_fr": "Renforcements de blindage contrôlables par script", "name_it": "Scriptable Armor Hardeners", "name_ja": "スクリプト対応アーマーハードナー", "name_ko": "스크립트 장갑 강화장치", "name_ru": "Программируемые", "name_zh": "可使用脚本的装甲增强器", "nameID": 312078, "parentGroupID": 535 }, "2246": { "description_de": "Schildhärter die spontan mittels Skripten neu konfiguriert werden können.", "description_en-us": "Shield Hardeners that can be reconfigured on the fly using scripts.", "description_es": "Endurecedores de escudo que pueden reconfigurarse sobre la marcha con scripts.", "description_fr": "Renforcements de bouclier pouvant être reconfigurés à la volée à l'aide de scripts.", "description_it": "Shield Hardeners that can be reconfigured on the fly using scripts.", "description_ja": "スクリプトを使用して飛行中に構成を変更できるシールドハードナー。", "description_ko": "스크립트로 조정 가능한 실드 강화장치입니다.", "description_ru": "Энергоёмкие модуляторы сопротивляемости полей, которые можно перепрограммировать «на лету» с помощью прошивок.", "description_zh": "为在飞行中使用脚本而特别改装的护盾增强器。", "descriptionID": 312081, "hasTypes": 1, "iconID": 81, "name_de": "Skriptfähige Schildhärter", "name_en-us": "Scriptable Shield Hardeners", "name_es": "Endurecedores de escudo programables", "name_fr": "Renforcements de bouclier contrôlables par script", "name_it": "Scriptable Shield Hardeners", "name_ja": "スクリプト対応シールドハードナー", "name_ko": "스크립트 실드 강화장치", "name_ru": "Программируемые", "name_zh": "可使用脚本的护盾增强器", "nameID": 312080, "parentGroupID": 553 }, "2247": { "hasTypes": 1, "iconID": 170, "name_de": "Schnelle Torpedowerfer", "name_en-us": "Rapid Torpedo Launchers", "name_es": "Lanzatorpedos rápidos", "name_fr": "Lance-torpilles rapide", "name_it": "Rapid Torpedo Launchers", "name_ja": "ラピッドトルピードランチャー", "name_ko": "급속 토피도 런처", "name_ru": "Скорострельные торпедные аппараты", "name_zh": "快速鱼雷发射器", "nameID": 312115, "parentGroupID": 140 }, "2248": { "hasTypes": 1, "iconID": 2703, "name_de": "Pulsgenerator", "name_en-us": "Burst Projectors", "name_es": "Proyectores de estallido", "name_fr": "Projecteurs à salves", "name_it": "Burst Projectors", "name_ja": "バーストプロジェクター", "name_ko": "버스트 프로젝터", "name_ru": "Проекторы объёмных помех", "name_zh": "脉冲波投射器", "nameID": 312118, "parentGroupID": 1566 }, "2249": { "hasTypes": 1, "iconID": 21604, "name_de": "Pulsgenerator", "name_en-us": "Burst Projectors", "name_es": "Proyectores de estallido", "name_fr": "Projecteurs à salves", "name_it": "Burst Projectors", "name_ja": "バーストプロジェクター", "name_ko": "버스트 프로젝터", "name_ru": "Проекторы объёмных помех", "name_zh": "脉冲波投射器", "nameID": 312119, "parentGroupID": 657 }, "2250": { "description_de": "Energieneutralisierer in Capital-Größe", "description_en-us": "Capital-sized energy neutralizers.", "description_es": "Neutralizadores energéticos de tamaño capital.", "description_fr": "Neutraliseurs d'énergie capitaux.", "description_it": "Capital-sized energy neutralizers.", "description_ja": "キャピタル級エネルギーニュートライザー。", "description_ko": "캐피탈급 함선 에너지 뉴트럴라이저입니다.", "description_ru": "Дистанционные нейтрализаторы заряда КБТ-класса", "description_zh": "旗舰级能量中和器。", "descriptionID": 312124, "hasTypes": 1, "iconID": 1283, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312123, "parentGroupID": 661 }, "2251": { "description_de": "Energie-Nosferatu in Capital-Größe", "description_en-us": "Capital-sized energy nosferatu.", "description_es": "Nosferatu de energía de tamaño capital.", "description_fr": "Nosferatu à énergie capital.", "description_it": "Capital-sized energy nosferatu.", "description_ja": "キャピタル級エネルギーノスフェラトゥ。", "description_ko": "캐피탈급 함선 에너지 노스페라투입니다.", "description_ru": "Устройства паразитной подзарядки КБТ-класса", "description_zh": "旗舰级掠能器。", "descriptionID": 312122, "hasTypes": 1, "iconID": 1029, "name_de": "Capital", "name_en-us": "Capital", "name_es": "Capital", "name_fr": "Capital", "name_it": "Capital", "name_ja": "キャピタル", "name_ko": "캐피탈", "name_ru": "Сверхбольшие", "name_zh": "旗舰", "nameID": 312121, "parentGroupID": 662 }, "2252": { "description_de": "Wird von Dreadnought-Geschützen und stationären Verteidigungsanlagen abgefeuert.", "description_en-us": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_ja": "ドレッドノート級の銃器および固定型防衛システムから発射。", "description_ko": "드레드노트급 함포 및 고정 방어 시스템에서 사용합니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 312137, "hasTypes": 1, "iconID": 1287, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312134, "parentGroupID": 846 }, "2253": { "description_de": "Wird von Dreadnought-Geschützen und stationären Verteidigungsanlagen abgefeuert.", "description_en-us": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnaught-sized guns and stationary defense systems.", "description_ja": "ドレッドノート級の銃器および固定型防衛システムから発射。", "description_ko": "드레드노트급 함포 및 고정 방어 시스템에서 사용합니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 312136, "hasTypes": 1, "iconID": 1291, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312135, "parentGroupID": 847 }, "2254": { "description_de": "Wird von Dreadnought-Geschützen und stationären Verteidigungsanlagen abgefeuert.", "description_en-us": "Fired by dreadnought-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnought-sized guns and stationary defense systems.", "description_ja": "ドレッドノート級の銃器および固定型防衛システムから発射。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 함포의 탄약입니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 312139, "hasTypes": 1, "iconID": 1310, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312138, "parentGroupID": 849 }, "2255": { "description_de": "Wird von Dreadnought-Geschützen und stationären Verteidigungsanlagen abgefeuert.", "description_en-us": "Fired by dreadnought-sized guns and stationary defense systems.", "description_es": "Aptos para cañones de naves de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "Fired by dreadnought-sized guns and stationary defense systems.", "description_ja": "ドレッドノート級の銃器および固定型防衛システムから発射。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 함포의 탄약입니다.", "description_ru": "Используются в орудиях дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级舰炮或者固定防御系统进行发射。", "descriptionID": 312141, "hasTypes": 1, "iconID": 1311, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312140, "parentGroupID": 850 }, "2256": { "description_de": "Zur Verwendung mit Dreadnought-Lasern und stationären Verteidigungsanlagen.", "description_en-us": "For use with dreadnought-sized lasers and stationary defense systems.", "description_es": "Para usarlos con láseres de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "For use with dreadnought-sized lasers and stationary defense systems.", "description_ja": "攻城艦サイズのレーザーおよび固定型防衛システムで使用する。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 레이저의 프리퀀시 크리스탈입니다.", "description_ru": "Используются в лазерах дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级激光武器或者固定防御系统进行发射。", "descriptionID": 312143, "hasTypes": 1, "iconID": 1140, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312142, "parentGroupID": 853 }, "2257": { "description_de": "Zur Verwendung mit Dreadnought-Lasern und stationären Verteidigungsanlagen.", "description_en-us": "For use with dreadnought-sized lasers and stationary defense systems.", "description_es": "Para usarlos con láseres de tamaño superacorazado y sistemas defensivos estacionarios.", "description_fr": "Projectiles utilisés, par exemple, sur les canons des supercuirassés et sur les systèmes de défense stationnaires.", "description_it": "For use with dreadnought-sized lasers and stationary defense systems.", "description_ja": "攻城艦サイズのレーザーおよび固定型防衛システムで使用する。", "description_ko": "드레드노트급 함선 및 고정형 방어 시설에서 사용하는 레이저의 프리퀀시 크리스탈입니다.", "description_ru": "Используются в лазерах дредноутов и стационарных оборонительных систем.", "description_zh": "通过无畏级激光武器或者固定防御系统进行发射。", "descriptionID": 312145, "hasTypes": 1, "iconID": 1145, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 312144, "parentGroupID": 852 }, "2258": { "description_de": "Fortschrittliche Anti-Schiff-Torpedos", "description_en-us": "Advanced Anti-Ship Torpedoes", "description_es": "Torpedos antinaves avanzados.", "description_fr": "Torpilles anti-vaisseau perfectionnées", "description_it": "Advanced Anti-Ship Torpedoes", "description_ja": "最新型対艦船トルピード", "description_ko": "대함 토피도", "description_ru": "Противокорабельные торпеды", "description_zh": "高级反舰鱼雷", "descriptionID": 312147, "hasTypes": 1, "iconID": 1346, "name_de": "Fortschrittliche Anti-Schiff-XL-Torpedos", "name_en-us": "Advanced Anti-Ship XL Torpedoes", "name_es": "Torpedos XL antinaves avanzados", "name_fr": "Torpilles anti-vaisseau avancées XL", "name_it": "Advanced Anti-Ship XL Torpedoes", "name_ja": "最新型対艦船XLトルピード", "name_ko": "대함 XL 토피도", "name_ru": "Высокомощные", "name_zh": "高级反舰超大型鱼雷", "nameID": 312146, "parentGroupID": 505 }, "2259": { "description_de": "Fortschrittliche Langstreckentorpedos", "description_en-us": "Advanced Long Range Torpedoes", "description_es": "Torpedos de largo alcance avanzados.", "description_fr": "Torpilles à longue portée perfectionnées", "description_it": "Advanced Long Range Torpedoes", "description_ja": "最新型長距離トルピード", "description_ko": "장거리 토피도", "description_ru": "Высокоскоростные торпеды", "description_zh": "高级远距鱼雷", "descriptionID": 312149, "hasTypes": 1, "iconID": 1346, "name_de": "Fortschrittliche Langstrecken-XL-Torpedos", "name_en-us": "Advanced Long Range XL Torpedoes", "name_es": "Torpedos XL de largo alcance avanzados", "name_fr": "Torpilles à longue portée avancée XL", "name_it": "Advanced Long Range XL Torpedoes", "name_ja": "最新型長距離XLトルピード", "name_ko": "장거리 XL 토피도", "name_ru": "Высокоскоростные", "name_zh": "高级远距超大型鱼雷", "nameID": 312148, "parentGroupID": 505 }, "2260": { "description_de": "Fortschrittliche XL-Marschflugkörper mit hoher Präzision", "description_en-us": "Advanced High Precision XL Cruise Missiles", "description_es": "Misiles de crucero XL de alta precisión avanzados.", "description_fr": "Missiles de croisière perfectionnés à haute précision XL", "description_it": "Advanced High Precision XL Cruise Missiles", "description_ja": "最新型高精度XLクルーズミサイル", "description_ko": "정밀타격 XL 크루즈 미사일", "description_ru": "Ракеты дальнего боя сверхбольшой мощности с высокоточными ГСН", "description_zh": "高级高精度超大型巡航导弹", "descriptionID": 312151, "hasTypes": 1, "iconID": 183, "name_de": "Fortschrittliche XL-Marschflugkörper mit hoher Präzision", "name_en-us": "Advanced High Precision XL Cruise Missiles", "name_es": "Misiles de crucero XL de alta precisión avanzados", "name_fr": "Missiles de croisière perfectionnés à haute précision XL", "name_it": "Advanced High Precision XL Cruise Missiles", "name_ja": "最新型高精度XLクルーズミサイル", "name_ko": "정밀타격 XL 크루즈 미사일", "name_ru": "Высокоточные", "name_zh": "高级高精度超大型巡航导弹", "nameID": 312150, "parentGroupID": 1316 }, "2261": { "description_de": "Fortschrittliche XL-Marschflugkörper für schweren Schaden", "description_en-us": "Advanced High Damage XL Cruise Missiles", "description_es": "Misiles de crucero XL de gran daño avanzados.", "description_fr": "Missiles de croisière à dégâts élevés avancés XL", "description_it": "Advanced High Damage XL Cruise Missiles", "description_ja": "最新型高ダメージXLクルーズミサイル", "description_ko": "고화력 XL 크루즈 미사일", "description_ru": "Ракеты дальнего боя сверхбольшой мощности с БЧ усиленного действия", "description_zh": "高级高伤害超大型巡航导弹", "descriptionID": 312153, "hasTypes": 1, "iconID": 183, "name_de": "Fortschrittliche XL-Marschflugkörper für schweren Schaden", "name_en-us": "Advanced High Damage XL Cruise Missiles", "name_es": "Misiles de crucero XL de gran daño avanzados", "name_fr": "Missiles de croisière à dégâts élevés avancés XL", "name_it": "Advanced High Damage XL Cruise Missiles", "name_ja": "最新型高ダメージXLクルーズミサイル", "name_ko": "고화력 XL 크루즈 미사일", "name_ru": "Высокомощные", "name_zh": "高级高伤害超大型巡航导弹", "nameID": 312152, "parentGroupID": 1316 }, "2262": { "description_de": "Blaupausen von Schiffen der Truppenunterstützer-Klasse.", "description_en-us": "Blueprints of force auxiliary-class vessels.", "description_es": "Planos de naves de clase auxiliar de fuerza.", "description_fr": "Blueprints of force auxiliary-class vessels.", "description_it": "Blueprints of force auxiliary-class vessels.", "description_ja": "軍事力補強系艦船のブループリント。", "description_ko": "포스 악실리아 함선 블루프린트입니다.", "description_ru": "Чертежи вспомогательных КБТ", "description_zh": "战力辅助舰级别舰船蓝图。", "descriptionID": 312187, "hasTypes": 0, "iconID": 2703, "name_de": "Truppenunterstützer", "name_en-us": "Force Auxiliaries", "name_es": "Naves auxiliares", "name_fr": "Forces auxiliaires", "name_it": "Force Auxiliaries", "name_ja": "軍事力補強", "name_ko": "포스 악실리아", "name_ru": "Вспомогательные КБТ", "name_zh": "战力辅助舰", "nameID": 312186, "parentGroupID": 204 }, "2263": { "description_de": "Blaupausen von Amarr-Truppenunterstützer-Designs.", "description_en-us": "Blueprints of Amarr force auxiliary designs.", "description_es": "Planos de diseños de fuerzas auxiliares amarrianas.", "description_fr": "Blueprints of Amarr force auxiliary designs.", "description_it": "Blueprints of Amarr force auxiliary designs.", "description_ja": "アマー軍事力補強設備のブループリント。", "description_ko": "아마르 포스 악실리아 블루프린트입니다.", "description_ru": "Чертежи амаррских вспомогательных КБТ.", "description_zh": "艾玛战力辅助舰设计蓝图。", "descriptionID": 312189, "hasTypes": 1, "iconID": 2703, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 312188, "parentGroupID": 2262 }, "2264": { "description_de": "Blaupausen von Caldari-Truppenunterstützer-Designs.", "description_en-us": "Blueprints of Caldari force auxiliary designs.", "description_es": "Planos de diseños de fuerzas auxiliares caldaris.", "description_fr": "Blueprints of Caldari force auxiliary designs.", "description_it": "Blueprints of Caldari force auxiliary designs.", "description_ja": "カルダリ軍事力補強設備のブループリント。", "description_ko": "칼다리 포스 악실리아 블루프린트입니다.", "description_ru": "Чертежи калдарских вспомогательных КБТ.", "description_zh": "加达里战力辅助舰设计蓝图。", "descriptionID": 312191, "hasTypes": 1, "iconID": 2703, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 312190, "parentGroupID": 2262 }, "2265": { "description_de": "Blaupausen von Gallente-Truppenunterstützer-Designs.", "description_en-us": "Blueprints of Gallente force auxiliary designs.", "description_es": "Planos de diseños de fuerzas auxiliares gallentes.", "description_fr": "Blueprints of Gallente force auxiliary designs.", "description_it": "Blueprints of Gallente force auxiliary designs.", "description_ja": "ガレンテ軍事力補強設備のブループリント。", "description_ko": "갈란테 포스 악실리아 블루프린트입니다.", "description_ru": "Чертежи галлентских вспомогательных КБТ.", "description_zh": "盖伦特战力辅助舰设计蓝图。", "descriptionID": 312193, "hasTypes": 1, "iconID": 2703, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 312192, "parentGroupID": 2262 }, "2266": { "description_de": "Blaupausen von Minmatar-Truppenunterstützer-Designs.", "description_en-us": "Blueprints of Minmatar force auxiliary designs.", "description_es": "Planos de diseños de fuerzas auxiliares minmatarianas.", "description_fr": "Blueprints of Minmatar force auxiliary designs.", "description_it": "Blueprints of Minmatar force auxiliary designs.", "description_ja": "ミンマター軍事力補強設備のブループリント。", "description_ko": "민마타 포스 악실리아 블루프린트입니다.", "description_ru": "Чертежи матарских вспомогательных КБТ.", "description_zh": "米玛塔尔战力辅助舰设计蓝图。", "descriptionID": 312195, "hasTypes": 1, "iconID": 2703, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 312194, "parentGroupID": 2262 }, "2267": { "hasTypes": 1, "iconID": 2934, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 312196, "parentGroupID": 912 }, "2268": { "hasTypes": 1, "iconID": 2934, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 312197, "parentGroupID": 912 }, "2269": { "hasTypes": 1, "iconID": 2934, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 312198, "parentGroupID": 912 }, "2270": { "hasTypes": 1, "iconID": 2934, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 312199, "parentGroupID": 912 }, "2271": { "description_de": "Capital-Kriegsschiffe, die Flotten mit ihren Logistikkräften unterstützen können.", "description_en-us": "Capital warships, able to support fleets with their logistics power.", "description_es": "Naves de guerra capitales que ofrecen apoyo a las flotas gracias a sus capacidades logísticas.", "description_fr": "Capital warships, able to support fleets with their logistics power.", "description_it": "Capital warships, able to support fleets with their logistics power.", "description_ja": "支援設備によりフリートをサポートできる母艦級戦艦。", "description_ko": "함대 지원 임무에 특화된 캐피탈 배틀쉽입니다.", "description_ru": "Корабли большого тоннажа, ведущие боевое обеспечение и полевой ремонт союзников.", "description_zh": "以强大的后勤能力为舰队提供支援的旗舰级舰船。", "descriptionID": 312242, "hasTypes": 0, "iconID": 1443, "name_de": "Truppenunterstützer", "name_en-us": "Force Auxiliaries", "name_es": "Naves auxiliares", "name_fr": "Forces auxiliaires", "name_it": "Force Auxiliaries", "name_ja": "軍事力補強", "name_ko": "포스 악실리아", "name_ru": "Вспомогательные КБТ", "name_zh": "战力辅助舰", "nameID": 312241, "parentGroupID": 1381 }, "2272": { "description_de": "Truppenunterstützer der Amarr", "description_en-us": "Amarr force auxiliary designs.", "description_es": "Diseños de fuerzas auxiliares amarrianas.", "description_fr": "Amarr force auxiliary designs.", "description_it": "Amarr force auxiliary designs.", "description_ja": "アマー軍事力補強設備。", "description_ko": "아마르의 포스 악실리아입니다.", "description_ru": "Амаррские вспомогательные КБТ", "description_zh": "艾玛战力辅助舰设计。", "descriptionID": 312244, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 312243, "parentGroupID": 2271 }, "2273": { "description_de": "Truppenunterstützer der Caldari", "description_en-us": "Caldari force auxiliary designs.", "description_es": "Diseños de fuerzas auxiliares caldaris.", "description_fr": "Caldari force auxiliary designs.", "description_it": "Caldari force auxiliary designs.", "description_ja": "カルダリ軍事力補強設備。", "description_ko": "칼다리의 포스 악실리아입니다.", "description_ru": "Калдарские вспомогательные КБТ", "description_zh": "加达里战力辅助舰设计。", "descriptionID": 312246, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 312245, "parentGroupID": 2271 }, "2274": { "description_de": "Truppenunterstützer der Gallente", "description_en-us": "Gallente force auxiliary designs.", "description_es": "Diseños de fuerzas auxiliares gallentes.", "description_fr": "Gallente force auxiliary designs.", "description_it": "Gallente force auxiliary designs.", "description_ja": "ガレンテ軍事力補強設備。", "description_ko": "갈란테의 포스 악실리아입니다.", "description_ru": "Галлентские вспомогательные КБТ", "description_zh": "盖伦特战力辅助舰设计。", "descriptionID": 312248, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 312247, "parentGroupID": 2271 }, "2275": { "description_de": "Truppenunterstützer der Minmatar", "description_en-us": "Minmatar force auxiliary designs.", "description_es": "Diseños de fuerzas auxiliares minmatarianas.", "description_fr": "Minmatar force auxiliary designs.", "description_it": "Minmatar force auxiliary designs.", "description_ja": "ミンマター軍事力補強設備。", "description_ko": "민마타의 포스 악실리아입니다.", "description_ru": "Матарские вспомогательные КБТ", "description_zh": "米玛塔尔战力辅助舰设计。", "descriptionID": 312250, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 312249, "parentGroupID": 2271 }, "2276": { "hasTypes": 1, "iconID": 2934, "name_de": "Volksunspezifisch", "name_en-us": "Non-Racial", "name_es": "No racial", "name_fr": "Non-racial", "name_it": "Non-Racial", "name_ja": "非人種", "name_ko": "비국가 아이템", "name_ru": "Независимые", "name_zh": "非种族", "nameID": 312259, "parentGroupID": 912 }, "2277": { "hasTypes": 0, "iconID": 21420, "name_de": "Truppenunterstützer", "name_en-us": "Force Auxiliaries", "name_es": "Naves auxiliares", "name_fr": "Forces auxiliaires", "name_it": "Force Auxiliaries", "name_ja": "軍事力補強", "name_ko": "포스 악실리아", "name_ru": "Вспомогательные КБТ", "name_zh": "战力辅助舰", "nameID": 312284, "parentGroupID": 1968 }, "2278": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 312285, "parentGroupID": 2277 }, "2279": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 312286, "parentGroupID": 2277 }, "2280": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 312287, "parentGroupID": 2277 }, "2281": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 312288, "parentGroupID": 2277 }, "2283": { "hasTypes": 0, "iconID": 21420, "name_de": "Kapseln", "name_en-us": "Capsules", "name_es": "Cápsulas", "name_fr": "Capsules", "name_it": "Capsules", "name_ja": "カプセル", "name_ko": "캡슐", "name_ru": "Капсулы", "name_zh": "太空舱", "nameID": 312293, "parentGroupID": 1954 }, "2285": { "hasTypes": 1, "iconID": 21420, "name_de": "Kapseln", "name_en-us": "Capsules", "name_es": "Cápsulas", "name_fr": "Capsules", "name_it": "Capsules", "name_ja": "カプセル", "name_ko": "캡슐", "name_ru": "Капсулы", "name_zh": "太空舱", "nameID": 312294, "parentGroupID": 2283 }, "2286": { "hasTypes": 1, "iconID": 21420, "name_de": "Sonderversionen: Kapseln", "name_en-us": "Special Edition Capsules", "name_es": "Cápsulas de edición especial", "name_fr": "Capsules édition spéciale", "name_it": "Special Edition Capsules", "name_ja": "特別仕様のカプセル", "name_ko": "스페셜 에디션 캡슐", "name_ru": "Малосерийные капсулы", "name_zh": "特别版逃生舱", "nameID": 312295, "parentGroupID": 2283 }, "2287": { "description_de": "Fraktion Titan-Designs.", "description_en-us": "Faction Titan designs.", "description_es": "Diseños de titanes faccionarios.", "description_fr": "Modèles de Titans de faction", "description_it": "Faction Titan designs.", "description_ja": "勢力別旗艦級戦艦の設計図。", "description_ko": "팩션 타이탄입니다.", "description_ru": "Модификации титанов, используемые различными организациями галактики.", "description_zh": "势力泰坦设计。", "descriptionID": 312560, "hasTypes": 1, "iconID": 1443, "name_de": "Fraktions-Titans", "name_en-us": "Faction Titans", "name_es": "Titanes faccionarios", "name_fr": "Titans de faction", "name_it": "Faction Titans", "name_ja": "勢力別旗艦級戦艦", "name_ko": "팩션 타이탄", "name_ru": "Пиратские и армейские титаны", "name_zh": "势力泰坦", "nameID": 312559, "parentGroupID": 812 }, "2288": { "description_de": "Fraktions-Dreadnoughts", "description_en-us": "Faction Dreadnoughts", "description_es": "Superacorazados faccionarios", "description_fr": "Supercuirassés de faction", "description_it": "Faction Dreadnoughts", "description_ja": "勢力別攻城艦", "description_ko": "팩션 드레드노트", "description_ru": "Армейские дредноуты", "description_zh": "势力无畏舰", "descriptionID": 312558, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktions-Dreadnoughts", "name_en-us": "Faction Dreadnoughts", "name_es": "Superacorazados faccionarios", "name_fr": "Dreadnoughts de faction", "name_it": "Faction Dreadnoughts", "name_ja": "勢力別攻城艦", "name_ko": "팩션 드레드노트", "name_ru": "Пиратские и армейские дредноуты", "name_zh": "势力无畏舰", "nameID": 312557, "parentGroupID": 761 }, "2290": { "description_de": "Kommandostrahlenmunition", "description_en-us": "Command Burst Charges", "description_es": "Cargas de estallido de mando.", "description_fr": "Charges de salve commandante", "description_it": "Command Burst Charges", "description_ja": "コマンドバーストチャージ", "description_ko": "커맨드 버스트 차지", "description_ru": "Заряды импульсных оптимизаторов", "description_zh": "指挥脉冲弹药", "descriptionID": 314928, "hasTypes": 0, "iconID": 2703, "name_de": "Kommandostrahlenmunition", "name_en-us": "Command Burst Charges", "name_es": "Cargas de estallido de mando", "name_fr": "Charges de salve commandante", "name_it": "Command Burst Charges", "name_ja": "コマンドバーストチャージ", "name_ko": "커맨드 버스트 차지", "name_ru": "Заряды импульсных оптимизаторов", "name_zh": "指挥脉冲弹药", "nameID": 314927, "parentGroupID": 211 }, "2291": { "description_de": "Kommandostrahlenmunition: Panzerung", "description_en-us": "Armor Command Burst Charges", "description_es": "Cargas de estallido de mando de blindaje.", "description_fr": "Charges de salve commandante de blindage", "description_it": "Armor Command Burst Charges", "description_ja": "アーマーコマンドバーストチャージ", "description_ko": "장갑 버스트 차지", "description_ru": "Броневой защиты", "description_zh": "装甲指挥脉冲弹药", "descriptionID": 314930, "hasTypes": 1, "iconID": 2703, "name_de": "Kommandostrahlenmunition: Panzerung", "name_en-us": "Armor Command Burst Charges", "name_es": "Cargas de estallido de mando de blindaje", "name_fr": "Charges de salve commandante de blindage", "name_it": "Armor Command Burst Charges", "name_ja": "アーマーコマンドバーストチャージ", "name_ko": "장갑 버스트 차지", "name_ru": "Брони", "name_zh": "装甲指挥脉冲弹药", "nameID": 314929, "parentGroupID": 2290 }, "2292": { "description_de": "Kommandostrahlenmunition: Information", "description_en-us": "Information Command Burst Charges", "description_es": "Cargas de estallido de mando de información.", "description_fr": "Charges de salve commandante d'information", "description_it": "Information Command Burst Charges", "description_ja": "情報戦コマンドバーストチャージ", "description_ko": "정보전 버스트 차지", "description_ru": "Мер РЭБ", "description_zh": "信息战指挥脉冲弹药", "descriptionID": 314932, "hasTypes": 1, "iconID": 2703, "name_de": "Kommandostrahlenmunition: Information", "name_en-us": "Information Command Burst Charges", "name_es": "Cargas de estallido de mando de información", "name_fr": "Charges de salve commandante d'information", "name_it": "Information Command Burst Charges", "name_ja": "情報戦コマンドバーストチャージ", "name_ko": "정보전 버스트 차지", "name_ru": "РЭБ", "name_zh": "信息战指挥脉冲弹药", "nameID": 314931, "parentGroupID": 2290 }, "2293": { "description_de": "Bergbauvorarbeiterstrahlenmunition", "description_en-us": "Mining Foreman Burst Charges", "description_es": "Cargas de estallido de capataz minero", "description_fr": "Charges de salve de contremaîtrise d'extraction minière", "description_it": "Mining Foreman Burst Charges", "description_ja": "採掘支援バーストチャージ", "description_ko": "채광 버스트 차지", "description_ru": "Добычи сырья", "description_zh": "开采先锋脉冲弹药", "descriptionID": 314934, "hasTypes": 1, "iconID": 2703, "name_de": "Bergbauvorarbeiterstrahlenmunition", "name_en-us": "Mining Foreman Burst Charges", "name_es": "Cargas de estallido de capataz minero", "name_fr": "Charges de salve de contremaîtrise d'extraction minière", "name_it": "Mining Foreman Burst Charges", "name_ja": "採掘支援バーストチャージ", "name_ko": "채광 버스트 차지", "name_ru": "Добычи", "name_zh": "开采先锋脉冲弹药", "nameID": 314933, "parentGroupID": 2290 }, "2294": { "description_de": "Kommandostrahlenmunition: Schilde", "description_en-us": "Shield Command Burst Charges", "description_es": "Cargas de estallido de mando de escudo.", "description_fr": "Charges de salve commandante de boucliers", "description_it": "Shield Command Burst Charges", "description_ja": "シールドコマンドバーストチャージ", "description_ko": "실드 버스트 차지", "description_ru": "Силовой защиты", "description_zh": "护盾指挥脉冲弹药", "descriptionID": 314936, "hasTypes": 1, "iconID": 2703, "name_de": "Kommandostrahlenmunition: Schilde", "name_en-us": "Shield Command Burst Charges", "name_es": "Cargas de estallido de mando de escudo", "name_fr": "Charges de salve commandante de boucliers", "name_it": "Shield Command Burst Charges", "name_ja": "シールドコマンドバーストチャージ", "name_ko": "실드 버스트 차지", "name_ru": "Щитов", "name_zh": "护盾指挥脉冲弹药", "nameID": 314935, "parentGroupID": 2290 }, "2295": { "description_de": "Kommandostrahlenmunition: Gefecht", "description_en-us": "Skirmish Command Burst Charges", "description_es": "Cargas de estallido de mando de escaramuza.", "description_fr": "Charges de salve commandante de guérilla", "description_it": "Skirmish Command Burst Charges", "description_ja": "機動戦コマンドバーストチャージ", "description_ko": "스커미시 버스트 차지", "description_ru": "Боевого маневрирования", "description_zh": "游击战指挥脉冲弹药", "descriptionID": 314940, "hasTypes": 1, "iconID": 2703, "name_de": "Kommandostrahlenmunition: Gefecht", "name_en-us": "Skirmish Command Burst Charges", "name_es": "Cargas de estallido de mando de escaramuza", "name_fr": "Charges de salve commandante de guérilla", "name_it": "Skirmish Command Burst Charges", "name_ja": "機動戦コマンドバーストチャージ", "name_ko": "스커미시 버스트 차지", "name_ru": "Маневрирования", "name_zh": "游击战指挥脉冲弹药", "nameID": 314937, "parentGroupID": 2290 }, "2297": { "description_de": "Kommandostrahlenmunition", "description_en-us": "Command Burst Charges", "description_es": "Cargas de estallido de mando.", "description_fr": "Charges de salve commandante", "description_it": "Command Burst Charges", "description_ja": "コマンドバーストチャージ", "description_ko": "커맨드 버스트 차지", "description_ru": "Заряды импульсных оптимизаторов", "description_zh": "指挥脉冲弹药", "descriptionID": 314942, "hasTypes": 0, "iconID": 20970, "name_de": "Kommandostrahlenmunition", "name_en-us": "Command Burst Charges", "name_es": "Cargas de estallido de mando", "name_fr": "Charges de salve commandante", "name_it": "Command Burst Charges", "name_ja": "コマンドバーストチャージ", "name_ko": "커맨드 버스트 차지", "name_ru": "Заряды импульсных оптимизаторов", "name_zh": "指挥脉冲弹药", "nameID": 314941, "parentGroupID": 11 }, "2298": { "description_de": "Kommandostrahlenmunition: Panzerung", "description_en-us": "Armor Command Burst Charges", "description_es": "Cargas de estallido de mando de blindaje.", "description_fr": "Charges de salve commandante de blindage", "description_it": "Armor Command Burst Charges", "description_ja": "アーマーコマンドバーストチャージ", "description_ko": "장갑 버스트 차지", "description_ru": "Броневой защиты", "description_zh": "装甲指挥脉冲弹药", "descriptionID": 314944, "hasTypes": 1, "iconID": 20970, "name_de": "Kommandostrahlenmunition: Panzerung", "name_en-us": "Armor Command Burst Charges", "name_es": "Cargas de estallido de mando de blindaje", "name_fr": "Charges de salve commandante de blindage", "name_it": "Armor Command Burst Charges", "name_ja": "アーマーコマンドバーストチャージ", "name_ko": "장갑 버스트 차지", "name_ru": "Брони", "name_zh": "装甲指挥脉冲弹药", "nameID": 314943, "parentGroupID": 2297 }, "2299": { "description_de": "Kommandostrahlenmunition: Information", "description_en-us": "Information Command Burst Charges", "description_es": "Cargas de estallido de mando de información.", "description_fr": "Charges de salve commandante d'information", "description_it": "Information Command Burst Charges", "description_ja": "情報戦コマンドバーストチャージ", "description_ko": "정보전 버스트 차지", "description_ru": "Мер РЭБ", "description_zh": "信息战指挥脉冲弹药", "descriptionID": 314946, "hasTypes": 1, "iconID": 20970, "name_de": "Kommandostrahlenmunition: Information", "name_en-us": "Information Command Burst Charges", "name_es": "Cargas de estallido de mando de información", "name_fr": "Charges de salve commandante d'information", "name_it": "Information Command Burst Charges", "name_ja": "情報戦コマンドバーストチャージ", "name_ko": "정보전 버스트 차지", "name_ru": "РЭБ", "name_zh": "信息战指挥脉冲弹药", "nameID": 314945, "parentGroupID": 2297 }, "2300": { "description_de": "Bergbauvorarbeiterstrahlenmunition", "description_en-us": "Mining Foreman Burst Charges", "description_es": "Cargas de estallido de capataz minero", "description_fr": "Charges de salve de contremaîtrise d'extraction minière", "description_it": "Mining Foreman Burst Charges", "description_ja": "採掘支援バーストチャージ", "description_ko": "채광 버스트 차지", "description_ru": "Добычи сырья", "description_zh": "开采先锋脉冲弹药", "descriptionID": 314948, "hasTypes": 1, "iconID": 20970, "name_de": "Bergbauvorarbeiterstrahlenmunition", "name_en-us": "Mining Foreman Burst Charges", "name_es": "Cargas de estallido de capataz minero", "name_fr": "Charges de salve de contremaîtrise d'extraction minière", "name_it": "Mining Foreman Burst Charges", "name_ja": "採掘支援バーストチャージ", "name_ko": "채광 버스트 차지", "name_ru": "Добычи", "name_zh": "开采先锋脉冲弹药", "nameID": 314947, "parentGroupID": 2297 }, "2301": { "description_de": "Kommandostrahlenmunition: Schilde", "description_en-us": "Shield Command Burst Charges", "description_es": "Cargas de estallido de mando de escudo.", "description_fr": "Charges de salve commandante de boucliers", "description_it": "Shield Command Burst Charges", "description_ja": "シールドコマンドバーストチャージ", "description_ko": "실드 버스트 차지", "description_ru": "Силовой защиты", "description_zh": "护盾指挥脉冲弹药", "descriptionID": 314950, "hasTypes": 1, "iconID": 20970, "name_de": "Kommandostrahlenmunition: Schilde", "name_en-us": "Shield Command Burst Charges", "name_es": "Cargas de estallido de mando de escudo", "name_fr": "Charges de salve commandante de boucliers", "name_it": "Shield Command Burst Charges", "name_ja": "シールドコマンドバーストチャージ", "name_ko": "실드 버스트 차지", "name_ru": "Щитов", "name_zh": "护盾指挥脉冲弹药", "nameID": 314949, "parentGroupID": 2297 }, "2302": { "description_de": "Kommandostrahlenmunition: Gefecht", "description_en-us": "Skirmish Command Burst Charges", "description_es": "Cargas de estallido de mando de escaramuza.", "description_fr": "Charges de salve commandante de guérilla", "description_it": "Skirmish Command Burst Charges", "description_ja": "機動戦コマンドバーストチャージ", "description_ko": "스커미시 버스트 차지", "description_ru": "Боевого маневрирования", "description_zh": "游击战指挥脉冲弹药", "descriptionID": 314952, "hasTypes": 1, "iconID": 20970, "name_de": "Kommandostrahlenmunition: Gefecht", "name_en-us": "Skirmish Command Burst Charges", "name_es": "Cargas de estallido de mando de escaramuza", "name_fr": "Charges de salve commandante de guérilla", "name_it": "Skirmish Command Burst Charges", "name_ja": "機動戦コマンドバーストチャージ", "name_ko": "스커미시 버스트 차지", "name_ru": "Маневрирования", "name_zh": "游击战指挥脉冲弹药", "nameID": 314951, "parentGroupID": 2297 }, "2306": { "hasTypes": 0, "iconID": 21420, "name_de": "Corvettes", "name_en-us": "Corvettes", "name_es": "Corbetas", "name_fr": "Corvettes", "name_it": "Corvettes", "name_ja": "コルベット", "name_ko": "코르벳", "name_ru": "Корветы", "name_zh": "轻型护卫舰", "nameID": 314956, "parentGroupID": 1954 }, "2307": { "hasTypes": 0, "iconID": 21420, "name_de": "Standard-Corvettes", "name_en-us": "Standard Corvettes", "name_es": "Corbetas estándar", "name_fr": "Corvettes standard", "name_it": "Standard Corvettes", "name_ja": "標準仕様コルベット", "name_ko": "일반 코르벳", "name_ru": "Типовые", "name_zh": "标准轻型护卫舰", "nameID": 314957, "parentGroupID": 2306 }, "2308": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 314958, "parentGroupID": 2307 }, "2309": { "hasTypes": 0, "iconID": 21420, "name_de": "Taktische Zerstörer", "name_en-us": "Tactical Destroyers", "name_es": "Destructores tácticos", "name_fr": "Destroyers tactiques", "name_it": "Tactical Destroyers", "name_ja": "戦術駆逐艦", "name_ko": "전술 디스트로이어", "name_ru": "Многорежимные эсминцы", "name_zh": "战术驱逐舰", "nameID": 314959, "parentGroupID": 2036 }, "2310": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 314960, "parentGroupID": 2309 }, "2311": { "hasTypes": 0, "iconID": 21420, "name_de": "Spezielle Schlachtkreuzer", "name_en-us": "Special Battlecruisers", "name_es": "Cruceros de combate especiales", "name_fr": "Special Battlecruisers", "name_it": "Special Battlecruisers", "name_ja": "特別版巡洋戦艦", "name_ko": "특수 배틀크루저", "name_ru": "Малосерийные линейные крейсеры", "name_zh": "特种战列巡洋舰", "nameID": 315008, "parentGroupID": 1955 }, "2312": { "hasTypes": 1, "iconID": 21420, "name_de": "Spezielle Schlachtkreuzer", "name_en-us": "Special Battlecruisers", "name_es": "Cruceros de combate especiales", "name_fr": "Special Battlecruisers", "name_it": "Special Battlecruisers", "name_ja": "特別版巡洋戦艦", "name_ko": "특수 배틀크루저", "name_ru": "Малосерийные линейные крейсеры", "name_zh": "特种战列巡洋舰", "nameID": 315009, "parentGroupID": 2311 }, "2313": { "hasTypes": 0, "iconID": 21420, "name_de": "Spezielle Zerstörer", "name_en-us": "Special Destroyers", "name_es": "Destructores especiales", "name_fr": "Special Destroyers", "name_it": "Special Destroyers", "name_ja": "特別版駆逐艦", "name_ko": "특수 디스트로이어", "name_ru": "Малосерийные эсминцы", "name_zh": "特种驱逐舰", "nameID": 315010, "parentGroupID": 1989 }, "2314": { "hasTypes": 1, "iconID": 21420, "name_de": "Spezielle Zerstörer", "name_en-us": "Special Destroyers", "name_es": "Destructores especiales", "name_fr": "Special Destroyers", "name_it": "Special Destroyers", "name_ja": "特別版駆逐艦", "name_ko": "특수 디스트로이어", "name_ru": "Малосерийные эсминцы", "name_zh": "特种驱逐舰", "nameID": 315011, "parentGroupID": 2313 }, "2315": { "hasTypes": 0, "iconID": 21420, "name_de": "Shuttles", "name_en-us": "Shuttles", "name_es": "Lanzaderas", "name_fr": "Shuttles", "name_it": "Shuttles", "name_ja": "シャトル", "name_ko": "셔틀", "name_ru": "Катера", "name_zh": "穿梭机", "nameID": 315012, "parentGroupID": 1954 }, "2316": { "hasTypes": 1, "iconID": 21420, "name_de": "Spezielle Shuttles", "name_en-us": "Special Shuttles", "name_es": "Lanzaderas especiales", "name_fr": "Special Shuttles", "name_it": "Special Shuttles", "name_ja": "特別版シャトル", "name_ko": "특수 셔틀", "name_ru": "Малосерийные катера", "name_zh": "特种穿梭机", "nameID": 315013, "parentGroupID": 2315 }, "2317": { "hasTypes": 1, "iconID": 2039, "name_de": "Tresore", "name_en-us": "Strong Boxes", "name_es": "Cajas fuertes", "name_fr": "Coffres-forts", "name_it": "Strong Boxes", "name_ja": "金庫", "name_ko": "금고", "name_ru": "Спецконтейнеры", "name_zh": "保险柜", "nameID": 315399, "parentGroupID": 19 }, "2318": { "hasTypes": 1, "iconID": 1443, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315401, "parentGroupID": 1972 }, "2319": { "hasTypes": 1, "iconID": 21420, "name_de": "Bergbaubarkassen", "name_en-us": "Mining Barges", "name_es": "Gabarras mineras", "name_fr": "Barges d'extraction", "name_it": "Mining Barges", "name_ja": "採掘艦", "name_ko": "채광선", "name_ru": "Буровые корабли", "name_zh": "采矿驳船", "nameID": 315402, "parentGroupID": 2011 }, "2320": { "hasTypes": 1, "iconID": 1443, "name_de": "Expeditionsfregatten", "name_en-us": "Expedition Frigates", "name_es": "Fragatas expedicionarias", "name_fr": "Frégates d'expédition", "name_it": "Expedition Frigates", "name_ja": "長距離フリゲート", "name_ko": "탐사 프리깃", "name_ru": "Разведочно-буровые фрегаты", "name_zh": "勘探护卫舰", "nameID": 315403, "parentGroupID": 2042 }, "2321": { "hasTypes": 1, "iconID": 1443, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315404, "parentGroupID": 2001 }, "2322": { "description_de": "Blaupausen für Ingenieurskomplexe", "description_en-us": "Blueprints of Engineering Complex structures.", "description_es": "Planos de estructuras de complejos de ingeniería.", "description_fr": "Plans de construction de complexes d'ingénierie", "description_it": "Blueprints of Engineering Complex structures.", "description_ja": "エンジニアリング複合施設ストラクチャのブループリント。", "description_ko": "엔지니어링 시설 블루프린트입니다.", "description_ru": "Чертежи промышленных комплексов", "description_zh": "工程复合体建筑的蓝图", "descriptionID": 315407, "hasTypes": 1, "iconID": 2703, "name_de": "Ingenieurskomplexe", "name_en-us": "Engineering Complexes", "name_es": "Complejos de ingeniería", "name_fr": "Complexes d'ingénierie", "name_it": "Engineering Complexes", "name_ja": "エンジニアリング複合施設", "name_ko": "엔지니어링 시설", "name_ru": "Промышленные комплексы", "name_zh": "工程复合体", "nameID": 315406, "parentGroupID": 1338 }, "2323": { "hasTypes": 1, "iconID": 2703, "name_de": "Ingenieursdienstmodule", "name_en-us": "Engineering Service Modules", "name_es": "Módulos de servicio de ingeniería", "name_fr": "Modules de service d'ingénierie", "name_it": "Engineering Service Modules", "name_ja": "エンジニアリングサービスモジュール", "name_ko": "엔지니어링 시설", "name_ru": "Служебные модули промышленных комплексов", "name_zh": "工程服务装备", "nameID": 315408, "parentGroupID": 2166 }, "2324": { "hasTypes": 1, "iconID": 2222, "name_de": "Ingenieurskomplexe", "name_en-us": "Engineering Complexes", "name_es": "Complejos de ingeniería", "name_fr": "Complexes d'ingénierie", "name_it": "Engineering Complexes", "name_ja": "エンジニアリング複合施設", "name_ko": "엔지니어링 시설", "name_ru": "Промышленные комплексы", "name_zh": "工程复合体", "nameID": 315409, "parentGroupID": 477 }, "2325": { "hasTypes": 1, "iconID": 2934, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315411, "parentGroupID": 912 }, "2327": { "hasTypes": 1, "iconID": 2222, "name_de": "Raffinerien", "name_en-us": "Refineries", "name_es": "Refinerías", "name_fr": "Raffineries", "name_it": "Refineries", "name_ja": "精錬所", "name_ko": "정제소", "name_ru": "Перерабатывающие комплексы", "name_zh": "精炼厂", "nameID": 316320, "parentGroupID": 477 }, "2328": { "hasTypes": 1, "iconID": 1443, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "РУДА", "name_zh": "联合矿业", "nameID": 315412, "parentGroupID": 2085 }, "2330": { "hasTypes": 0, "iconID": 21420, "name_de": "Sonderversion-Transporter", "name_en-us": "Special Edition Haulers", "name_es": "Naves de mercancías de edición especial", "name_fr": "Cargos édition spéciale", "name_it": "Special Edition Haulers", "name_ja": "特別エディションハウラー", "name_ko": "스페셜 에디션 운반선", "name_ru": "Перевозчики особой версии", "name_zh": "特别版运载舰", "nameID": 315414, "parentGroupID": 2006 }, "2331": { "hasTypes": 1, "iconID": 1443, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "РУДА", "name_zh": "联合矿业", "nameID": 315415, "parentGroupID": 2330 }, "2332": { "hasTypes": 1, "iconID": 3007, "name_de": "Ingenieursdienstmodule", "name_en-us": "Engineering Service Modules", "name_es": "Módulos de servicio de ingeniería", "name_fr": "Modules de service d'ingénierie", "name_it": "Engineering Service Modules", "name_ja": "エンジニアリングサービスモジュール", "name_ko": "엔지니어링 시설", "name_ru": "Служебные модули промышленных комплексов", "name_zh": "工程服务装备", "nameID": 315418, "parentGroupID": 2210 }, "2333": { "description_de": "Blaupausen für Industrie-Kommandoschiffe", "description_en-us": "Blueprints of industrial command ships", "description_es": "Planos de naves de mando industriales.", "description_fr": "Plans de construction de vaisseaux de commandement industriel", "description_it": "Blueprints of industrial command ships", "description_ja": "指揮型輸送艦のブループリント", "description_ko": "인더스트리얼 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи флагманов буровых флотилий", "description_zh": "工业指挥舰的蓝图", "descriptionID": 315440, "hasTypes": 0, "iconID": 2703, "name_de": "Industrie-Kommandoschiffe", "name_en-us": "Industrial Command Ships", "name_es": "Naves de mando industriales", "name_fr": "Vaisseaux de commandement industriel", "name_it": "Industrial Command Ships", "name_ja": "指揮型輸送艦", "name_ko": "인더스트리얼 커맨드쉽", "name_ru": "Флагманы буровых флотилий", "name_zh": "工业指挥舰", "nameID": 315439, "parentGroupID": 204 }, "2334": { "description_de": "Blaupausen für Industrie-Kommandoschiffdesigns von ORE", "description_en-us": "Blueprints of ORE industrial command ship designs.", "description_es": "Planos de diseños de naves de mando industriales de ORE.", "description_fr": "Plans de construction de vaisseaux de commandement industriel ORE.", "description_it": "Blueprints of ORE industrial command ship designs.", "description_ja": "ORE指揮型輸送艦の設計ブループリント。", "description_ko": "ORE 인더스트리얼 커맨드쉽 블루프린트입니다.", "description_ru": "Чертежи флагманов буровых флотилий, разработанных ОРЭ.", "description_zh": "联合矿业工业指挥舰设计蓝图。", "descriptionID": 315442, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315441, "parentGroupID": 2333 }, "2335": { "hasTypes": 0, "iconID": 1443, "name_de": "Industrie-Kommandoschiffe", "name_en-us": "Industrial Command Ships", "name_es": "Naves de mando industriales", "name_fr": "Vaisseaux de commandement industriel", "name_it": "Industrial Command Ships", "name_ja": "指揮型輸送艦", "name_ko": "인더스트리얼 커맨드쉽", "name_ru": "Флагманы буровых флотилий", "name_zh": "工业指挥舰", "nameID": 315443, "parentGroupID": 1382 }, "2336": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315444, "parentGroupID": 2335 }, "2337": { "hasTypes": 0, "iconID": 21420, "name_de": "Industrie-Kommandoschiffe", "name_en-us": "Industrial Command Ships", "name_es": "Naves de mando industriales", "name_fr": "Vaisseaux de commandement industriel", "name_it": "Industrial Command Ships", "name_ja": "指揮型輸送艦", "name_ko": "인더스트리얼 커맨드쉽", "name_ru": "Флагманы буровых флотилий", "name_zh": "工业指挥舰", "nameID": 315445, "parentGroupID": 2006 }, "2338": { "hasTypes": 1, "iconID": 1443, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 315446, "parentGroupID": 2337 }, "2339": { "description_de": "Blaupausen für Struktur-Kampfmodifikationen", "description_en-us": "Blueprints for Structure Combat rigs.", "description_es": "Planos para complementos de combate para estructuras.", "description_fr": "Plans de construction pour optimisations de combat (Structure).", "description_it": "Blueprints for Structure Combat rigs.", "description_ja": "ストラクチャ コンバットリグのブループリント。", "description_ko": "스탠드업 구조물 전투 리그 블루프린트입니다.", "description_ru": "Чертежи модификаторов вооружения для сооружений", "description_zh": "建筑战斗改装件的蓝图。", "descriptionID": 315462, "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Ingenieursmodifikationen", "name_en-us": "Structure Engineering Rigs", "name_es": "Complementos de ingeniería para estructuras", "name_fr": "Optimisations d'ingénierie (Structure)", "name_it": "Structure Engineering Rigs", "name_ja": "ストラクチャ エンジニアリングリグ", "name_ko": "스탠드업 엔지니어링 리그", "name_ru": "Модификаторы производства", "name_zh": "建筑工程改装件", "nameID": 315461, "parentGroupID": 2157 }, "2340": { "description_de": "Struktur-Ingenieursmodifikationen", "description_en-us": "Structure Engineering Rigs", "description_es": "Complementos de ingeniería para estructuras", "description_fr": "Optimisations d'ingénierie (Structure)", "description_it": "Structure Engineering Rigs", "description_ja": "ストラクチャ エンジニアリングリグ", "description_ko": "스탠드업 엔지니어링 리그", "description_ru": "Модификаторы производства", "description_zh": "建筑工程改装件", "descriptionID": 315464, "hasTypes": 0, "iconID": 21729, "name_de": "Struktur-Ingenieursmodifikationen", "name_en-us": "Structure Engineering Rigs", "name_es": "Complementos de ingeniería para estructuras", "name_fr": "Optimisations d'ingénierie (Structure)", "name_it": "Structure Engineering Rigs", "name_ja": "ストラクチャ エンジニアリングリグ", "name_ko": "스탠드업 엔지니어링 리그", "name_ru": "Модификаторы производства", "name_zh": "建筑工程改装件", "nameID": 315463, "parentGroupID": 2203 }, "2341": { "description_de": "Mittelgroße Struktur: Aufbereitungs- und Reaktionsmodifikationen", "description_en-us": "Medium Structure Reprocessing and Reaction Rigs", "description_es": "Complementos de reacción y reprocesamiento de estructuras medianas.", "description_fr": "Optimisations de retraitement et de réaction M (structure)", "description_it": "Medium Structure Reprocessing and Reaction Rigs", "description_ja": "中型ストラクチャ再処理リグ", "description_ko": "중형 스탠드업 구조물 정체 및 반응로 리그", "description_ru": "Надстройки для средних сооружений — переработка и реакции", "description_zh": "中型建筑提炼和反应改装件", "descriptionID": 315467, "hasTypes": 1, "iconID": 21602, "name_de": "Mittelgroße Struktur: Ressourcenverarbeitungsmodifikationen", "name_en-us": "Medium Structure Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos para estructuras medianas", "name_fr": "Optimisations de traitement des ressources M (structure)", "name_it": "Medium Structure Resource Processing Rigs", "name_ja": "中型ストラクチャ再処理リグ", "name_ko": "중형 자원 정제 리그", "name_ru": "Надстройки для средних сооружений — переработка ресурсов", "name_zh": "中型建筑资源提炼改装件", "nameID": 315466, "parentGroupID": 2204 }, "2342": { "description_de": "Große Struktur: Aufbereitungs- und Reaktionsmodifikationen", "description_en-us": "Large Structure Reprocessing and Reaction Rigs", "description_es": "Complementos de reacción y reprocesamiento de estructuras grandes.", "description_fr": "Optimisations de retraitement et de réaction L (structure)", "description_it": "Large Structure Reprocessing and Reaction Rigs", "description_ja": "大型ストラクチャ再処理リグ", "description_ko": "대형 스탠드업 구조물 정체 및 반응로 리그입니다.", "description_ru": "Надстройки для больших сооружений — переработка и реакции", "description_zh": "大型建筑提炼和反应改装件", "descriptionID": 315469, "hasTypes": 1, "iconID": 21602, "name_de": "Große Struktur: Ressourcenverarbeitungsmodifikationen", "name_en-us": "Large Structure Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos para estructuras grandes", "name_fr": "Optimisations de traitement des ressources L (structure)", "name_it": "Large Structure Resource Processing Rigs", "name_ja": "大型ストラクチャ再処理リグ", "name_ko": "대형 자원 정제 리그", "name_ru": "Надстройки для больших сооружений — переработка ресурсов", "name_zh": "大型建筑资源提炼改装件", "nameID": 315468, "parentGroupID": 2204 }, "2343": { "description_de": "Extragroße Struktur: Aufbereitungs- und Reaktionsmodifikationen", "description_en-us": "X-Large Structure Reprocessing and Reaction Rigs", "description_es": "Complementos de reacción y reprocesamiento de estructuras extragrandes.", "description_fr": "Optimisations de retraitement et de réaction XL (structure)", "description_it": "X-Large Structure Reprocessing and Reaction Rigs", "description_ja": "超大型ストラクチャ再処理リグ", "description_ko": "초대형 스탠드업 구조물 정제 및 반응로 리그입니다.", "description_ru": "Надстройки для сверхбольших сооружений — переработка и реакции", "description_zh": "超大型建筑提炼和反应改装件", "descriptionID": 315471, "hasTypes": 1, "iconID": 21602, "name_de": "Extragroße Struktur: Ressourcenverarbeitungsmodifikationen", "name_en-us": "X-Large Structure Resource Processing Rigs", "name_es": "Complementos de procesamiento de recursos para estructuras extragrandes", "name_fr": "Optimisations de traitement des ressources XL (structure)", "name_it": "X-Large Structure Resource Processing Rigs", "name_ja": "超大型ストラクチャ再処理リグ", "name_ko": "초대형 자원 정제 리그", "name_ru": "Надстройки для сверхбольших сооружений — переработка ресурсов", "name_zh": "超大型建筑资源提炼改装件", "nameID": 315470, "parentGroupID": 2204 }, "2344": { "description_de": "Mittelgroße Struktur-Kampfmodifikationen", "description_en-us": "Medium Structure Combat Rigs", "description_es": "Complementos de combate para estructuras medianas.", "description_fr": "Optimisations de retraitement intermédiaires (Structure)", "description_it": "Medium Structure Combat Rigs", "description_ja": "中型ストラクチャ コンバットリグ", "description_ko": "중형 전투 리그", "description_ru": "Средние", "description_zh": "中型建筑战斗改装件", "descriptionID": 315473, "hasTypes": 1, "iconID": 21599, "name_de": "Mittelgroße Struktur-Kampfmodifikationen", "name_en-us": "Medium Structure Combat Rigs", "name_es": "Complementos de combate para estructuras medianas", "name_fr": "Optimisations de retraitement intermédiaires (Structure)", "name_it": "Medium Structure Combat Rigs", "name_ja": "中型ストラクチャ コンバットリグ", "name_ko": "중형 전투 리그", "name_ru": "Средние", "name_zh": "中型建筑战斗改装件", "nameID": 315472, "parentGroupID": 2205 }, "2345": { "description_de": "Große Struktur-Kampfmodifikationen", "description_en-us": "Large Structure Combat Rigs", "description_es": "Complementos de combate para estructuras grandes.", "description_fr": "Grandes optimisations de combat (Structure)", "description_it": "Large Structure Combat Rigs", "description_ja": "大型ストラクチャ コンバットリグ", "description_ko": "대형 전투 리그", "description_ru": "Большие", "description_zh": "大型建筑战斗改装件", "descriptionID": 315475, "hasTypes": 1, "iconID": 21599, "name_de": "Große Struktur-Kampfmodifikationen", "name_en-us": "Large Structure Combat Rigs", "name_es": "Complementos de combate para estructuras grandes", "name_fr": "Grandes optimisations de combat (Structure)", "name_it": "Large Structure Combat Rigs", "name_ja": "大型ストラクチャ コンバットリグ", "name_ko": "대형 전투 리그", "name_ru": "Большие", "name_zh": "大型建筑战斗改装件", "nameID": 315474, "parentGroupID": 2205 }, "2346": { "description_de": "Extragroße Struktur-Kampfmodifikationen", "description_en-us": "X-Large Structure Combat Rigs", "description_es": "Complementos de combate para estructuras extragrandes.", "description_fr": "Très grandes optimisations de combat (Structure)", "description_it": "X-Large Structure Combat Rigs", "description_ja": "超大型ストラクチャ コンバットリグ", "description_ko": "초대형 전투 리그", "description_ru": "Сверхбольшие", "description_zh": "超大型建筑战斗改装件", "descriptionID": 315477, "hasTypes": 1, "iconID": 21599, "name_de": "Extragroße Struktur-Kampfmodifikationen", "name_en-us": "X-Large Structure Combat Rigs", "name_es": "Complementos de combate para estructuras extragrandes", "name_fr": "Très grandes optimisations de combat (Structure)", "name_it": "X-Large Structure Combat Rigs", "name_ja": "超大型ストラクチャ コンバットリグ", "name_ko": "초대형 전투 리그", "name_ru": "Сверхбольшие", "name_zh": "超大型建筑战斗改装件", "nameID": 315476, "parentGroupID": 2205 }, "2347": { "description_de": "Mittelgroße Struktur-Ingenieursmodifikationen", "description_en-us": "Medium Structure Engineering Rigs", "description_es": "Complementos de ingeniería para estructuras medianas.", "description_fr": "Optimisations d'ingénierie intermédiaires (Structure)", "description_it": "Medium Structure Engineering Rigs", "description_ja": "中型ストラクチャ エンジニアリングリグ", "description_ko": "중형 엔지니어링 리그", "description_ru": "Средние", "description_zh": "中型建筑工程改装件", "descriptionID": 315479, "hasTypes": 1, "iconID": 21729, "name_de": "Mittelgroße Struktur-Ingenieursmodifikationen", "name_en-us": "Medium Structure Engineering Rigs", "name_es": "Complementos de ingeniería para estructuras medianas", "name_fr": "Optimisations d'ingénierie intermédiaires (Structure)", "name_it": "Medium Structure Engineering Rigs", "name_ja": "中型ストラクチャ エンジニアリングリグ", "name_ko": "중형 엔지니어링 리그", "name_ru": "Средние", "name_zh": "中型建筑工程改装件", "nameID": 315478, "parentGroupID": 2340 }, "2348": { "description_de": "Große Struktur-Ingenieursmodifikationen", "description_en-us": "Large Structure Engineering Rigs", "description_es": "Complementos de ingeniería para estructuras grandes.", "description_fr": "Grandes optimisations d'ingénierie (Structure)", "description_it": "Large Structure Engineering Rigs", "description_ja": "大型ストラクチャ エンジニアリングリグ", "description_ko": "대형 엔지니어링 리그", "description_ru": "Большие", "description_zh": "大型建筑工程改装件", "descriptionID": 315481, "hasTypes": 1, "iconID": 21729, "name_de": "Große Struktur-Ingenieursmodifikationen", "name_en-us": "Large Structure Engineering Rigs", "name_es": "Complementos de ingeniería para estructuras grandes", "name_fr": "Grandes optimisations d'ingénierie (Structure)", "name_it": "Large Structure Engineering Rigs", "name_ja": "大型ストラクチャ エンジニアリングリグ", "name_ko": "대형 엔지니어링 리그", "name_ru": "Большие", "name_zh": "大型建筑工程改装件", "nameID": 315480, "parentGroupID": 2340 }, "2349": { "description_de": "Extragroße Struktur-Ingenieursmodifikationen", "description_en-us": "X-Large Structure Engineering Rigs", "description_es": "Complementos de ingeniería para estructuras extragrandes.", "description_fr": "Très grandes optimisations d'ingénierie (Structure)", "description_it": "X-Large Structure Engineering Rigs", "description_ja": "超大型ストラクチャ エンジニアリングリグ", "description_ko": "초대형 엔지니어링 리그", "description_ru": "Сверхбольшие", "description_zh": "超大型建筑工程改装件", "descriptionID": 315483, "hasTypes": 1, "iconID": 21729, "name_de": "Extragroße Struktur-Ingenieursmodifikationen", "name_en-us": "X-Large Structure Engineering Rigs", "name_es": "Complementos de ingeniería para estructuras extragrandes", "name_fr": "Très grandes optimisations d'ingénierie (Structure)", "name_it": "X-Large Structure Engineering Rigs", "name_ja": "超大型ストラクチャ エンジニアリングリグ", "name_ko": "초대형 엔지니어링 리그", "name_ru": "Сверхбольшие", "name_zh": "超大型建筑工程改装件", "nameID": 315482, "parentGroupID": 2340 }, "2350": { "description_de": "Zerstörer, die Kapselpiloten gelegentlich für begrenzte Zeitperioden angeboten wurden.", "description_en-us": "Destroyers which have been offered to capsuleers on occasion for limited periods.", "description_es": "Destructores ofrecidos a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Destroyers mis parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Destroyers which have been offered to capsuleers on occasion for limited periods.", "description_ja": "期間限定で特別にカプセラに支給される駆逐艦。", "description_ko": "캡슐리어들에게 한정판으로 제공되었던 디스트로이어입니다.", "description_ru": "Эсминцы, предоставлявшиеся капсулёрам в течение ограниченного периода времени.", "description_zh": "限时供应的驱逐舰。", "descriptionID": 315515, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversionen: Zerstörer", "name_en-us": "Special Edition Destroyers", "name_es": "Destructores de edición especial", "name_fr": "Destroyers édition spéciale", "name_it": "Special Edition Destroyers", "name_ja": "特別仕様の駆逐艦", "name_ko": "디스트로이어", "name_ru": "Малосерийные эсминцы", "name_zh": "特别版驱逐舰", "nameID": 315514, "parentGroupID": 1612 }, "2351": { "description_de": "Werfer für Abfangraketen.", "description_en-us": "For launching defender missiles.", "description_es": "Para lanzar misiles de defensa.", "description_fr": "Système d'armement dédié au lancement de missiles antibalistiques.", "description_it": "For launching defender missiles.", "description_ja": "迎撃ミサイルを発射する。", "description_ko": "디펜더 미사일을 발사하는 런처입니다.", "description_ru": "Предназначены для запуска противоракет", "description_zh": "用于发射反弹道导弹。", "descriptionID": 315523, "hasTypes": 1, "iconID": 1345, "name_de": "Abfangwerfer", "name_en-us": "Defender Launchers", "name_es": "Lanzamisiles defensivos", "name_fr": "Lanceurs antibalistiques", "name_it": "Defender Launchers", "name_ja": "迎撃ランチャー", "name_ko": "디펜더 런처", "name_ru": "Противоракетные", "name_zh": "反导发射器", "nameID": 315522, "parentGroupID": 140 }, "2353": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 315559, "parentGroupID": 2307 }, "2354": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 315560, "parentGroupID": 2307 }, "2355": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 315561, "parentGroupID": 2307 }, "2356": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 315612, "parentGroupID": 2309 }, "2357": { "description_de": "Pläne für Fraktionstruppenunterstützer.", "description_en-us": "Faction force auxiliary designs.", "description_es": "Diseños de fuerzas auxiliares faccionarias.", "description_fr": "Designs de forces auxiliaires de faction", "description_it": "Faction force auxiliary designs.", "description_ja": "勢力別戦力補助艦の設計。", "description_ko": "팩션 포스 악실리아입니다.", "description_ru": "Пиратские и армейские вспомогательные КБТ", "description_zh": "势力战力辅助舰设计。", "descriptionID": 315646, "hasTypes": 1, "iconID": 1443, "name_de": "Fraktionstruppenunterstützer", "name_en-us": "Faction Force Auxiliaries", "name_es": "Naves auxiliares faccionarias", "name_fr": "Forces auxiliaires de faction", "name_it": "Faction Force Auxiliaries", "name_ja": "勢力別戦力補助艦", "name_ko": "팩션 포스 악실리아", "name_ru": "Пиратские и армейские", "name_zh": "势力战力辅助舰", "nameID": 315645, "parentGroupID": 2271 }, "2358": { "description_de": "Gegenstände, mit denen Skillpunkte extrahiert und injiziert werden können.", "description_en-us": "Items used to extract and inject skill points.", "description_es": "Objetos usados para extraer e inyectar puntos de habilidad.", "description_fr": "Dispositifs nécessaires à l'extraction et à l'injection de points de compétence.", "description_it": "Items used to extract and inject skill points.", "description_ja": "スキルポイントの抽出・注入に使用するアイテム。", "description_ko": "스킬 포인트 주입 시 사용되는 아이템입니다.", "description_ru": "Предметы, используемые для экстракции и инъекции СП.", "description_zh": "用来提取和注入技能点的物品。", "descriptionID": 315658, "hasTypes": 1, "iconID": 21531, "name_de": "Skilltausch", "name_en-us": "Skill Trading", "name_es": "Intercambio de habilidades", "name_fr": "Commerce de compétences", "name_it": "Skill Trading", "name_ja": "スキルのトレード", "name_ko": "스킬 포인트 거래", "name_ru": "СП-экстракторы и СП-инъекторы", "name_zh": "技能交易", "nameID": 315657, "parentGroupID": 1922 }, "2359": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionscorvettes", "name_en-us": "Faction Corvettes", "name_es": "Corbetas de facción", "name_fr": "Corvettes de faction", "name_it": "Faction Corvettes", "name_ja": "勢力別コルベット", "name_ko": "팩션 코르벳", "name_ru": "Пиратские и армейские", "name_zh": "势力轻型护卫舰", "nameID": 315669, "parentGroupID": 2306 }, "2360": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 315670, "parentGroupID": 2359 }, "2361": { "hasTypes": 1, "iconID": 21420, "name_de": "Sondergeheimdienstoperationen", "name_en-us": "Special Covert Ops", "name_es": "Operaciones encubiertas especiales", "name_fr": "Vaisseaux spéciaux des opérations secrètes", "name_it": "Special Covert Ops", "name_ja": "特殊光学迷彩型", "name_ko": "특수 코버트 옵스", "name_ru": "Малосерийные диверсионные фрегаты", "name_zh": "特别隐形特勤舰", "nameID": 315671, "parentGroupID": 2044 }, "2362": { "hasTypes": 1, "iconID": 21420, "name_de": "Sonderaufklärungsschiffe", "name_en-us": "Special Recon Ships", "name_es": "Naves de reconocimiento especiales", "name_fr": "Vaisseaux spéciaux de reconnaissance", "name_it": "Special Recon Ships", "name_ja": "特別電子戦型巡洋艦", "name_ko": "특수 리콘 크루저", "name_ru": "Малосерийные дозорные крейсеры", "name_zh": "特别侦察舰", "nameID": 315672, "parentGroupID": 2068 }, "2369": { "hasTypes": 0, "iconID": 21420, "name_de": "Strategische Kreuzer", "name_en-us": "Strategic Cruisers", "name_es": "Cruceros estratégicos", "name_fr": "Croiseurs stratégiques", "name_it": "Strategic Cruisers", "name_ja": "多目的型巡洋艦", "name_ko": "전략 크루저", "name_ru": "Стратегические крейсеры", "name_zh": "战略巡洋舰", "nameID": 315770, "parentGroupID": 2064 }, "2370": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 315771, "parentGroupID": 2369 }, "2371": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 315772, "parentGroupID": 2369 }, "2372": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 315773, "parentGroupID": 2369 }, "2373": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 315774, "parentGroupID": 2369 }, "2374": { "hasTypes": 0, "iconID": 21420, "name_de": "Standard-Trägerschiffe", "name_en-us": "Standard Carriers", "name_es": "Portanaves estándar", "name_fr": "Porte-vaisseaux standard", "name_it": "Standard Carriers", "name_ja": "標準型艦載機母艦", "name_ko": "일반 캐리어", "name_ru": "Типовые", "name_zh": "标准航空母舰", "nameID": 315904, "parentGroupID": 1970 }, "2375": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktions-Trägerschiffe", "name_en-us": "Faction Carriers", "name_es": "Portanaves faccionarios", "name_fr": "Porte-vaisseaux de faction", "name_it": "Faction Carriers", "name_ja": "勢力別艦載母艦", "name_ko": "팩션 캐리어", "name_ru": "Пиратские и армейские", "name_zh": "势力航空母舰", "nameID": 315905, "parentGroupID": 1970 }, "2376": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 315906, "parentGroupID": 2375 }, "2377": { "hasTypes": 0, "iconID": 21420, "name_de": "Standard-Dreadnoughts", "name_en-us": "Standard Dreadnoughts", "name_es": "Superacorazados estándar", "name_fr": "Dreadnoughts standard", "name_it": "Standard Dreadnoughts", "name_ja": "標準型攻城艦", "name_ko": "일반 드레드노트", "name_ru": "Типовые", "name_zh": "标准无畏舰", "nameID": 315907, "parentGroupID": 1971 }, "2378": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktions-Dreadnoughts", "name_en-us": "Faction Dreadnoughts", "name_es": "Superacorazados faccionarios", "name_fr": "Dreadnoughts de faction", "name_it": "Faction Dreadnoughts", "name_ja": "勢力別攻城艦", "name_ko": "팩션 드레드노트", "name_ru": "Пиратские и армейские", "name_zh": "势力无畏舰", "nameID": 315908, "parentGroupID": 1971 }, "2380": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 315910, "parentGroupID": 2378 }, "2381": { "hasTypes": 0, "iconID": 21420, "name_de": "Standard-Titans", "name_en-us": "Standard Titans", "name_es": "Titanes estándar", "name_fr": "Titans standard", "name_it": "Standard Titans", "name_ja": "標準型旗艦級戦艦", "name_ko": "일반 타이탄", "name_ru": "Типовые", "name_zh": "标准泰坦", "nameID": 315911, "parentGroupID": 1973 }, "2382": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktions-Titans", "name_en-us": "Faction Titans", "name_es": "Titanes faccionarios", "name_fr": "Titans de faction", "name_it": "Faction Titans", "name_ja": "勢力別旗艦級戦艦", "name_ko": "팩션 타이탄", "name_ru": "Пиратские и армейские", "name_zh": "势力泰坦", "nameID": 315912, "parentGroupID": 1973 }, "2383": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратские", "name_zh": "海盗势力", "nameID": 315913, "parentGroupID": 2382 }, "2387": { "description_de": "Amarr-Shuttle-SKINs", "description_en-us": "Amarr Shuttle Skins", "description_es": "SKIN para lanzaderas de Amarr.", "description_fr": "Skins de navette amarr", "description_it": "Amarr Shuttle Skins", "description_ja": "アマーシャトルのSKIN", "description_ko": "아마르 셔틀 SKIN", "description_ru": "Окраски для амаррских шаттлов", "description_zh": "艾玛穿梭机涂装", "descriptionID": 315927, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 315926, "parentGroupID": 2315 }, "2388": { "description_de": "Caldari-Shuttle-SKINs", "description_en-us": "Caldari Shuttle Skins", "description_es": "SKIN para lanzaderas de Caldari.", "description_fr": "Skins de navette caldari", "description_it": "Caldari Shuttle Skins", "description_ja": "カルダリシャトルのSKIN", "description_ko": "칼다리 셔틀 SKIN", "description_ru": "Окраски для калдарских шаттлов", "description_zh": "加达里穿梭机涂装", "descriptionID": 315929, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 315928, "parentGroupID": 2315 }, "2389": { "description_de": "Gallente-Shuttle-SKINs", "description_en-us": "Gallente Shuttle Skins", "description_es": "SKIN para lanzaderas de Gallente.", "description_fr": "Skins de navette gallente", "description_it": "Gallente Shuttle Skins", "description_ja": "ガレンテシャトルのSKIN", "description_ko": "갈란테 셔틀 SKIN", "description_ru": "Окраски для галлентских шаттлов", "description_zh": "盖伦特穿梭机涂装", "descriptionID": 315931, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 315930, "parentGroupID": 2315 }, "2390": { "description_de": "Minmatar-Shuttle-SKINs", "description_en-us": "Minmatar Shuttle Skins", "description_es": "SKIN para lanzaderas de Minmatar.", "description_fr": "Skins de navette minmatar", "description_it": "Minmatar Shuttle Skins", "description_ja": "ミンマターシャトルのSKIN", "description_ko": "민마타 셔틀 SKIN", "description_ru": "Окраски для минматарских шаттлов", "description_zh": "米玛塔尔穿梭机涂装", "descriptionID": 315933, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 315932, "parentGroupID": 2315 }, "2391": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 316197, "parentGroupID": 2309 }, "2392": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 316198, "parentGroupID": 2309 }, "2393": { "description_de": "Blaupausen für Raffinerie-Strukturen.", "description_en-us": "Blueprints of Refinery structures.", "description_es": "Planos de estructuras de refinería.", "description_fr": "Plans de construction de structures de raffinerie.", "description_it": "Blueprints of Refinery structures.", "description_ja": "精錬所ストラクチャの設計図", "description_ko": "정제시설 블루프린트입니다.", "description_ru": "Чертежи перерабатывающих комплексов.", "description_zh": "精炼厂建筑的蓝图", "descriptionID": 316318, "hasTypes": 1, "iconID": 2703, "name_de": "Raffinerien", "name_en-us": "Refineries", "name_es": "Refinerías", "name_fr": "Raffineries", "name_it": "Refineries", "name_ja": "精錬所", "name_ko": "정제소", "name_ru": "Перерабатывающие комплексы", "name_zh": "精炼厂", "nameID": 316317, "parentGroupID": 1338 }, "2395": { "hasTypes": 0, "iconID": 1270, "name_de": "Monderze", "name_en-us": "Moon Ores", "name_es": "Menas lunares", "name_fr": "Minerais lunaires", "name_it": "Moon Ores", "name_ja": "衛星資源鉱石", "name_ko": "위성 광물", "name_ru": "Руды со спутников", "name_zh": "卫星矿石", "nameID": 316329, "parentGroupID": 1031 }, "2396": { "description_de": "Die Arten der Monderze, die am gewöhnlichsten sind.", "description_en-us": "The most common forms of moon ore", "description_es": "Las formas más comunes de la mena lunar.", "description_fr": "Formes les plus communes de minerai lunaire", "description_it": "The most common forms of moon ore", "description_ja": "最も一般的な衛星鉱石", "description_ko": "저급한 형태의 위성 광물", "description_ru": "Самые распространённые разновидности руды со спутников", "description_zh": "卫星矿石的最普通形态", "descriptionID": 316331, "hasTypes": 1, "iconID": 232, "name_de": "Verbreitete Monderze", "name_en-us": "Ubiquitous Moon Ores", "name_es": "Menas lunares universales", "name_fr": "Minerais lunaires répandus", "name_it": "Ubiquitous Moon Ores", "name_ja": "偏在する衛星資源鉱石", "name_ko": "저급 위성 광물", "name_ru": "Повсеместные руды со спутников", "name_zh": "常见卫星矿石", "nameID": 316330, "parentGroupID": 2395 }, "2397": { "hasTypes": 1, "iconID": 1356, "name_de": "Gewöhnliche Monderze", "name_en-us": "Common Moon Ores", "name_es": "Menas lunares comunes", "name_fr": "Minerais lunaires communs", "name_it": "Common Moon Ores", "name_ja": "一般的な衛星資源鉱石", "name_ko": "일반 위성 광물", "name_ru": "Обычные руды со спутников", "name_zh": "普通卫星矿石", "nameID": 316332, "parentGroupID": 2395 }, "2398": { "hasTypes": 1, "iconID": 231, "name_de": "Ungewöhnliche Monderze", "name_en-us": "Uncommon Moon Ores", "name_es": "Menas lunares inusuales", "name_fr": "Minerais lunaires peu communs", "name_it": "Uncommon Moon Ores", "name_ja": "希少な衛星資源鉱石", "name_ko": "고급 위성 광물", "name_ru": "Необычные руды со спутников", "name_zh": "罕见卫星矿石", "nameID": 316333, "parentGroupID": 2395 }, "2400": { "hasTypes": 1, "iconID": 230, "name_de": "Seltene Monderze", "name_en-us": "Rare Moon Ores", "name_es": "Menas lunares poco comunes", "name_fr": "Minerais lunaires rares", "name_it": "Rare Moon Ores", "name_ja": "珍重する衛星資源鉱石", "name_ko": "희귀 위성 광물", "name_ru": "Редкие руды со спутников", "name_zh": "稀有卫星矿石", "nameID": 316335, "parentGroupID": 2395 }, "2401": { "hasTypes": 1, "iconID": 1271, "name_de": "Außerordentliche Monderze", "name_en-us": "Exceptional Moon Ores", "name_es": "Menas lunares excepcionales", "name_fr": "Minerais lunaires exceptionnels", "name_it": "Exceptional Moon Ores", "name_ja": "特別な衛星資源鉱石", "name_ko": "특별 위성 광물", "name_ru": "Исключительные руды со спутников", "name_zh": "非凡卫星矿石", "nameID": 316336, "parentGroupID": 2395 }, "2402": { "description_de": "Reaktionsformeln, dank der seltene Booster in Raffinerien produziert werden können", "description_en-us": "Reaction formulas that enable the creation of raw boosters in Refineries", "description_es": "Fórmulas reactivas que permiten crear potenciadores sin procesar en refinerías.", "description_fr": "Formules de réaction permettant l'obtention de boosters de matières premières dans les raffineries", "description_it": "Reaction formulas that enable the creation of raw boosters in Refineries", "description_ja": "精錬所で未加工ブースターの製造を可能にする反応フォーミュラ", "description_ko": "정제시설의 부스터 생산에 사용되는 반응식입니다.", "description_ru": "Формулы реакций, позволяющих создавать в перерабатывающих комплексах сырьё для стимуляторов", "description_zh": "在精炼厂中制造原始增效剂的反应公式", "descriptionID": 316380, "hasTypes": 1, "iconID": 21783, "name_de": "Biochemische Reaktionsformeln", "name_en-us": "Biochemical Reaction Formulas", "name_es": "Fórmulas reactivas bioquímicas", "name_fr": "Formules de réaction biochimique", "name_it": "Biochemical Reaction Formulas", "name_ja": "有機化合反応フォーミュラ", "name_ko": "생화학 반응식", "name_ru": "Формулы биохимических реакций", "name_zh": "生化反应公式", "nameID": 316379, "parentGroupID": 1849 }, "2403": { "description_de": "Reaktionsformeln, dank der Tech-2-Konstruktionsmaterialien in Raffinerien produziert werden können", "description_en-us": "Reaction formulas that enable the creation of Tech 2 construction materials in Refineries", "description_es": "Fórmulas reactivas que permiten crear materiales de construcción T2 en refinerías.", "description_fr": "Formules de réaction permettant l'obtention de matériaux de construction de tech. II dans les raffineries", "description_it": "Reaction formulas that enable the creation of Tech 2 construction materials in Refineries", "description_ja": "精錬所でT2建設資材の製造を可能にする反応フォーミュラ", "description_ko": "정제시설 건설에 사용되는 테크 II 자재를 제조할 수 있는 반응식입니다.", "description_ru": "Формулы реакций, позволяющих создавать в перерабатывающих комплексах строительные материалы второго техноуровня", "description_zh": "在精炼厂中制造二级科技建造材料的反应公式", "descriptionID": 316382, "hasTypes": 1, "iconID": 21783, "name_de": "Komposit-Reaktionsformeln", "name_en-us": "Composite Reaction Formulas", "name_es": "Fórmulas reactivas compuestas", "name_fr": "Formules de réaction composite", "name_it": "Composite Reaction Formulas", "name_ja": "化合物反応フォーミュラ", "name_ko": "복합 반응식", "name_ru": "Формулы композитных реакций", "name_zh": "复合反应公式", "nameID": 316381, "parentGroupID": 1849 }, "2404": { "description_de": "Reaktionsformeln, dank der Tech-3-Konstruktionsmaterialien in Raffinerien produziert werden können", "description_en-us": "Reaction formulas that enable the creation of Tech 3 construction materials in Refineries", "description_es": "Fórmulas reactivas que permiten crear materiales de construcción T3 en refinerías.", "description_fr": "Formules de réaction permettant l'obtention de matériaux de construction de tech. III dans les raffineries", "description_it": "Reaction formulas that enable the creation of Tech 3 construction materials in Refineries", "description_ja": "精錬所でT3建設資材の製造を可能にする反応フォーミュラ", "description_ko": "정제시설 건설에 사용되는 테크 III 자재를 제조할 수 있는 반응식입니다.", "description_ru": "Формулы реакций, позволяющих создавать в перерабатывающих комплексах строительные материалы третьего техноуровня", "description_zh": "在精炼厂中制造三级科技建造材料的反应公式", "descriptionID": 316384, "hasTypes": 1, "iconID": 21783, "name_de": "Polymer-Reaktionsformeln", "name_en-us": "Polymer Reaction Formulas", "name_es": "Fórmulas reactivas poliméricas", "name_fr": "Formules de réaction polymère", "name_it": "Polymer Reaction Formulas", "name_ja": "重合体反応フォーミュラ", "name_ko": "폴리머 반응식", "name_ru": "Формулы полимерных реакций", "name_zh": "聚合物反应公式", "nameID": 316383, "parentGroupID": 1849 }, "2406": { "hasTypes": 1, "iconID": 21420, "name_de": "Besondere Black Ops", "name_en-us": "Special Black Ops", "name_es": "Operaciones secretas especiales", "name_fr": "Opérations secrètes spéciales", "name_it": "Special Black Ops", "name_ja": "特殊光学迷彩型戦艦", "name_ko": "특수 블랙옵스", "name_ru": "Тяжёлые диверсионные корабли спецназначения", "name_zh": "特殊黑隐特勤舰", "nameID": 317093, "parentGroupID": 2109 }, "2407": { "hasTypes": 1, "iconID": 2703, "name_de": "Struktur-Pulsprojektoren", "name_en-us": "Structure Burst Projectors", "name_es": "Proyectores de estallido para estructuras", "name_fr": "Projecteurs à salves pour structure", "name_it": "Structure Burst Projectors", "name_ja": "ストラクチャバーストプロジェクター", "name_ko": "버스트 프로젝터", "name_ru": "Проекторы объёмных помех на базе сооружений", "name_zh": "建筑脉冲波投射器", "nameID": 317623, "parentGroupID": 2161 }, "2408": { "hasTypes": 1, "iconID": 21604, "name_de": "Struktur-Pulsprojektoren", "name_en-us": "Structure Burst Projectors", "name_es": "Proyectores de estallido para estructuras", "name_fr": "Projecteurs à salves pour structure", "name_it": "Structure Burst Projectors", "name_ja": "ストラクチャバーストプロジェクター", "name_ko": "버스트 프로젝터", "name_ru": "Проекторы объёмных помех на базе сооружений", "name_zh": "建筑脉冲波投射器", "nameID": 317624, "parentGroupID": 2206 }, "2409": { "hasTypes": 0, "iconID": 1084, "name_de": "Strukturbasierte Jäger", "name_en-us": "Structure-based Fighters", "name_es": "Cazas con base en estructuras", "name_fr": "Chasseurs de structure", "name_it": "Structure-based Fighters", "name_ja": "ストラクチャベース戦闘機", "name_ko": "스탠드업 파이터", "name_ru": "Истребители на базе сооружений", "name_zh": "建筑铁骑舰载机", "nameID": 317632, "parentGroupID": 2236 }, "2410": { "hasTypes": 0, "iconID": 1084, "name_de": "Trägerschiffbasierte Jäger", "name_en-us": "Carrier-based Fighters", "name_es": "Cazas con base en portanaves", "name_fr": "Chasseurs de porte-vaisseaux", "name_it": "Carrier-based Fighters", "name_ja": "艦載機母艦ベース戦闘機", "name_ko": "함재기", "name_ru": "Истребители на базе КАРов", "name_zh": "航母铁骑舰载机", "nameID": 317633, "parentGroupID": 2236 }, "2411": { "hasTypes": 1, "iconID": 1084, "name_de": "Standup Leichte Jäger", "name_en-us": "Standup Light Fighters", "name_es": "Cazas ligeros Standup", "name_fr": "Chasseurs légers Standup", "name_it": "Standup Light Fighters", "name_ja": "スタンドアップ軽量級戦闘機", "name_ko": "스탠드업 라이트 파이터", "name_ru": "Лёгкие истребители на базе «Стационар»", "name_zh": "屹立轻型铁骑舰载机", "nameID": 317634, "parentGroupID": 2409 }, "2412": { "hasTypes": 1, "iconID": 1084, "name_de": "Standup Schwere Jäger", "name_en-us": "Standup Heavy Fighters", "name_es": "Cazas pesados Standup", "name_fr": "Chasseurs lourds Standup", "name_it": "Standup Heavy Fighters", "name_ja": "スタンドアップ重量級戦闘機", "name_ko": "스탠드업 헤비 파이터", "name_ru": "Тяжёлые истребители на базе «Стационар»", "name_zh": "屹立重型铁骑舰载机", "nameID": 317635, "parentGroupID": 2409 }, "2413": { "hasTypes": 1, "iconID": 1084, "name_de": "Standup Unterstützungsjäger", "name_en-us": "Standup Support Fighters", "name_es": "Cazas de apoyo Standup", "name_fr": "Chasseurs de soutien Standup", "name_it": "Standup Support Fighters", "name_ja": "スタンドアップサポート戦闘機", "name_ko": "스탠드업 서포트 파이터", "name_ru": "Истребители поддержки на базе «Стационар»", "name_zh": "屹立后勤铁骑舰载机", "nameID": 317636, "parentGroupID": 2409 }, "2414": { "hasTypes": 1, "iconID": 79, "name_de": "Panzerungsverstärker", "name_en-us": "Armor Reinforcers", "name_es": "Reforzadores de blindaje", "name_fr": "Renforçateurs de blindage", "name_it": "Armor Reinforcers", "name_ja": "アーマーレインフォーサー", "name_ko": "장갑 플레이팅", "name_ru": "Усилители брони", "name_zh": "装甲强化", "nameID": 317690, "parentGroupID": 2208 }, "2415": { "hasTypes": 1, "iconID": 2703, "name_de": "Panzerungsverstärker", "name_en-us": "Armor Reinforcers", "name_es": "Reforzadores de blindaje", "name_fr": "Renforçateurs de blindage", "name_it": "Armor Reinforcers", "name_ja": "アーマーレインフォーサー", "name_ko": "장갑 플레이팅", "name_ru": "Усилители брони", "name_zh": "装甲强化", "nameID": 317691, "parentGroupID": 2163 }, "2416": { "hasTypes": 0, "iconID": 1443, "name_de": "Flaggenkreuzer", "name_en-us": "Flag Cruisers", "name_es": "Cruceros insignia", "name_fr": "Croiseurs amiraux", "name_it": "Flag Cruisers", "name_ja": "旗艦巡洋艦", "name_ko": "플래그 크루저", "name_ru": "Флагманские крейсеры", "name_zh": "战地巡洋舰", "nameID": 317709, "parentGroupID": 1368 }, "2417": { "hasTypes": 1, "iconID": 1443, "name_de": "CONCORD", "name_en-us": "CONCORD", "name_es": "CONCORD", "name_fr": "CONCORD", "name_it": "CONCORD", "name_ja": "CONCORD", "name_ko": "CONCORD", "name_ru": "КОНКОРД", "name_zh": "统一合作关系部", "nameID": 317710, "parentGroupID": 2416 }, "2418": { "hasTypes": 0, "iconID": 21420, "name_de": "Flaggenkreuzer", "name_en-us": "Flag Cruisers", "name_es": "Cruceros insignia", "name_fr": "Croiseurs amiraux", "name_it": "Flag Cruisers", "name_ja": "旗艦巡洋艦", "name_ko": "플래그 크루저", "name_ru": "Флагманские крейсеры", "name_zh": "战地巡洋舰", "nameID": 317727, "parentGroupID": 2064 }, "2419": { "hasTypes": 1, "iconID": 1443, "name_de": "CONCORD", "name_en-us": "CONCORD", "name_es": "CONCORD", "name_fr": "CONCORD", "name_it": "CONCORD", "name_ja": "CONCORD", "name_ko": "CONCORD", "name_ru": "КОНКОРДа", "name_zh": "统一合作关系部", "nameID": 317728, "parentGroupID": 2418 }, "2420": { "hasTypes": 0, "iconID": 21420, "name_de": "Spezielle Schlachtschiffe", "name_en-us": "Special Battleships", "name_es": "Acorazados especiales", "name_fr": "Cuirassés spéciaux", "name_it": "Special Battleships", "name_ja": "特殊戦艦", "name_ko": "특수 배틀쉽", "name_ru": "Особые линкоры", "name_zh": "特殊战列舰", "nameID": 317741, "parentGroupID": 1960 }, "2421": { "hasTypes": 1, "iconID": 21420, "name_de": "Spezielle Schlachtschiffe", "name_en-us": "Special Battleships", "name_es": "Acorazados especiales", "name_fr": "Cuirassés spéciaux", "name_it": "Special Battleships", "name_ja": "特殊戦艦", "name_ko": "특수 배틀쉽", "name_ru": "Особые линкоры", "name_zh": "特殊战列舰", "nameID": 317742, "parentGroupID": 2420 }, "2425": { "description_de": "Precursor-Fregatten", "description_en-us": "Precursor Frigates", "description_es": "Fragatas precursoras", "description_fr": "Frégates précurseuses", "description_it": "Precursor Frigates", "description_ja": "プリカーサーフリゲート", "description_ko": "프리커서 프리깃", "description_ru": "Фрегаты Предтечей.", "description_zh": "先驱者护卫舰", "descriptionID": 317779, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Fregatten", "name_en-us": "Precursor Frigates", "name_es": "Fragatas precursoras", "name_fr": "Frégates précurseuses", "name_it": "Precursor Frigates", "name_ja": "プリカーサーフリゲート", "name_ko": "프리커서 프리깃", "name_ru": "Фрегаты Предтечей", "name_zh": "先驱者护卫舰", "nameID": 317778, "parentGroupID": 1361 }, "2426": { "description_de": "Triglavia-Fregatten", "description_en-us": "Triglavian Frigates", "description_es": "Fragatas triglavianas", "description_fr": "Frégates triglavian", "description_it": "Triglavian Frigates", "description_ja": "トリグラビアンフリゲート", "description_ko": "트리글라비안 프리깃", "description_ru": "Фрегаты Триглава", "description_zh": "三神裔护卫舰", "descriptionID": 317781, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 317780, "parentGroupID": 2425 }, "2427": { "description_de": "Precursor-Kreuzer", "description_en-us": "Precursor Cruisers", "description_es": "Cruceros precursores", "description_fr": "Croiseurs précurseurs", "description_it": "Precursor Cruisers", "description_ja": "プリカーサー巡洋艦", "description_ko": "프리커서 크루저", "description_ru": "Крейсеры Предтечей.", "description_zh": "先驱者巡洋舰", "descriptionID": 317783, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Kreuzer", "name_en-us": "Precursor Cruisers", "name_es": "Cruceros precursores", "name_fr": "Croiseurs précurseurs", "name_it": "Precursor Cruisers", "name_ja": "プリカーサー巡洋艦", "name_ko": "프리커서 크루저", "name_ru": "Крейсеры Предтечей", "name_zh": "先驱者巡洋舰", "nameID": 317782, "parentGroupID": 1367 }, "2428": { "description_de": "Triglavia-Kreuzer", "description_en-us": "Triglavian Cruisers", "description_es": "Cruceros triglavianos", "description_fr": "Croiseurs triglavian", "description_it": "Triglavian Cruisers", "description_ja": "トリグラビアン巡洋艦", "description_ko": "트리글라비안 크루저", "description_ru": "Крейсеры Триглава.", "description_zh": "三神裔巡洋舰", "descriptionID": 317785, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 317784, "parentGroupID": 2427 }, "2429": { "description_de": "Precursor-Schlachtschiffe", "description_en-us": "Precursor Battleships", "description_es": "Acorazados precursores", "description_fr": "Cuirassés précurseurs", "description_it": "Precursor Battleships", "description_ja": "プリカーサー戦艦", "description_ko": "프리커서 배틀쉽", "description_ru": "Линкоры Предтечей.", "description_zh": "先驱者战列舰", "descriptionID": 317787, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Schlachtschiffe", "name_en-us": "Precursor Battleships", "name_es": "Acorazados precursores", "name_fr": "Cuirassés précurseurs", "name_it": "Precursor Battleships", "name_ja": "プリカーサー戦艦", "name_ko": "프리커서 배틀쉽", "name_ru": "Линкоры Предтечей", "name_zh": "先驱者战列舰", "nameID": 317786, "parentGroupID": 1376 }, "2430": { "description_de": "Triglavia-Schlachtschiffe", "description_en-us": "Triglavian Battleships", "description_es": "Acorazados triglavianos", "description_fr": "Cuirassés triglavian", "description_it": "Triglavian Battleships", "description_ja": "トリグラビアン戦艦", "description_ko": "트리글라비안 배틀쉽", "description_ru": "Линкоры Триглава.", "description_zh": "三神裔战列舰", "descriptionID": 317789, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 317788, "parentGroupID": 2429 }, "2431": { "description_de": "Precursor-Geschütztürme", "description_en-us": "Precursor Turrets", "description_es": "Torretas precursoras", "description_fr": "Tourelles précurseuses", "description_it": "Precursor Turrets", "description_ja": "プリカーサータレット", "description_ko": "프리커서 터렛", "description_ru": "Турели Предтечей.", "description_zh": "先驱者炮台", "descriptionID": 317791, "hasTypes": 0, "iconID": 21923, "name_de": "Precursor-Geschütztürme", "name_en-us": "Precursor Turrets", "name_es": "Torretas precursoras", "name_fr": "Tourelles précurseuses", "name_it": "Precursor Turrets", "name_ja": "プリカーサータレット", "name_ko": "프리커서 터렛", "name_ru": "Турели Предтечей", "name_zh": "先驱者炮台", "nameID": 317790, "parentGroupID": 10 }, "2432": { "description_de": "Entropische Desintegratoren", "description_en-us": "Entropic Disintegrators", "description_es": "Desintegradores entrópicos", "description_fr": "Désintégrateurs entropiques", "description_it": "Entropic Disintegrators", "description_ja": "エントロピックディスインテグレーター", "description_ko": "엔트로픽 분열기", "description_ru": "Энтропические дезинтеграторы.", "description_zh": "熵能分解者", "descriptionID": 317793, "hasTypes": 0, "iconID": 21921, "name_de": "Entropische Desintegratoren", "name_en-us": "Entropic Disintegrators", "name_es": "Desintegradores entrópicos", "name_fr": "Désintégrateurs entropiques", "name_it": "Entropic Disintegrators", "name_ja": "エントロピックディスインテグレーター", "name_ko": "엔트로픽 분열기", "name_ru": "Энтропические дезинтеграторы", "name_zh": "熵能分解者", "nameID": 317792, "parentGroupID": 2431 }, "2433": { "description_de": "Kleine entropische Desintegratoren", "description_en-us": "Small Entropic Disintegrators", "description_es": "Desintegradores entrópicos pequeños", "description_fr": "Petits désintégrateurs entropiques", "description_it": "Small Entropic Disintegrators", "description_ja": "小型エントロピックディスインテグレーター", "description_ko": "소형 엔트로픽 분열기", "description_ru": "Малые энтропические дезинтеграторы.", "description_zh": "小型熵能分解者", "descriptionID": 317795, "hasTypes": 1, "iconID": 21923, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petits", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 317794, "parentGroupID": 2432 }, "2434": { "description_de": "Mittelgroße entropische Desintegratoren", "description_en-us": "Medium Entropic Disintegrators", "description_es": "Desintegradores entrópico medianos", "description_fr": "Désintégrateurs entropiques intermédiaires", "description_it": "Medium Entropic Disintegrators", "description_ja": "中型エントロピックディスインテグレーター", "description_ko": "중형 엔트로픽 분열기", "description_ru": "Средние энтропические дезинтеграторы.", "description_zh": "中型熵能分解者", "descriptionID": 317797, "hasTypes": 1, "iconID": 21922, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaires", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 317796, "parentGroupID": 2432 }, "2435": { "description_de": "Große entropische Desintegratoren", "description_en-us": "Large Entropic Disintegrators", "description_es": "Desintegradores entrópicos grandes", "description_fr": "Grands désintégrateurs entropiques", "description_it": "Large Entropic Disintegrators", "description_ja": "大型エントロピックディスインテグレーター", "description_ko": "대형 엔트로픽 분열기", "description_ru": "Крупные энтропические дезинтеграторы.", "description_zh": "大型熵能分解者", "descriptionID": 317799, "hasTypes": 1, "iconID": 21921, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grands", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Крупные", "name_zh": "大型", "nameID": 317798, "parentGroupID": 2432 }, "2436": { "description_de": "Mutaplasmide verändern die Attribute eines Moduls dauerhaft", "description_en-us": "Mutaplasmids permanently alter a module's attributes", "description_es": "Los mutaplásmidos alteran permanentemente los atributos de un módulo.", "description_fr": "Les mutaplasmides modifient de façon permanente les attributs d'un module.", "description_it": "Mutaplasmids permanently alter a module's attributes", "description_ja": "モジュールの属性を恒久的に変える変異プラスミド", "description_ko": "뮤타플라즈미드를 사용하여 모듈의 성능을 영구적으로 변화시킬 수 있습니다.", "description_ru": "Мутаплазмиды навсегда меняют характеристики модуля.", "description_zh": "可以永久改变一个装备的属性的突变质体", "descriptionID": 317801, "hasTypes": 0, "iconID": 21891, "name_de": "Mutaplasmide", "name_en-us": "Mutaplasmids", "name_es": "Mutaplásmidos", "name_fr": "Mutaplasmides", "name_it": "Mutaplasmids", "name_ja": "変異プラスミド", "name_ko": "뮤타플라즈미드", "name_ru": "Мутаплазмиды", "name_zh": "突变质体", "nameID": 317800, "parentGroupID": 955 }, "2437": { "description_de": "Mutaplasmide, die für Panzerungsmodule verwendet werden", "description_en-us": "Mutaplasmids that are used on Armor modules", "description_es": "Mutaplásmidos que se usan en los módulos de blindaje.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules de blindage.", "description_it": "Mutaplasmids that are used on Armor modules", "description_ja": "アーマーモジュールに使用する変異プラスミド", "description_ko": "장갑 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для модулей брони.", "description_zh": "适用于装甲装备的突变质体", "descriptionID": 317803, "hasTypes": 0, "iconID": 21989, "name_de": "Panzerungs-Mutaplasmide", "name_en-us": "Armor Mutaplasmids", "name_es": "Mutaplásmidos de blindaje", "name_fr": "Mutaplasmides de blindage", "name_it": "Armor Mutaplasmids", "name_ja": "アーマー変異プラスミド", "name_ko": "장갑 뮤타플라즈미드", "name_ru": "Мутаплазмиды брони", "name_zh": "装甲突变质体", "nameID": 317802, "parentGroupID": 2436 }, "2438": { "description_de": "Mutaplasmide, die für Schildmodule verwendet werden.", "description_en-us": "Mutaplasmids that can be used on shield modules.", "description_es": "Mutaplásmidos que pueden usarse en los módulos de escudo.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules de bouclier.", "description_it": "Mutaplasmids that can be used on shield modules.", "description_ja": "シールドモジュールに使用できる変異プラスミド", "description_ko": "실드 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для модулей щитов.", "description_zh": "适用于护盾装备的突变质体。", "descriptionID": 317805, "hasTypes": 0, "iconID": 21985, "name_de": "Schild-Mutaplasmide", "name_en-us": "Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo", "name_fr": "Mutaplasmides de bouclier", "name_it": "Shield Mutaplasmids", "name_ja": "シールド変異プラスミド", "name_ko": "실드 뮤타플라즈미드", "name_ru": "Мутаплазмиды щитов", "name_zh": "护盾突变质体", "nameID": 317804, "parentGroupID": 2436 }, "2439": { "description_de": "Mutaplasmide, die für Antriebsmodule verwendet werden.", "description_en-us": "Mutaplasmids that can be used on Propulsion modules.", "description_es": "Mutaplásmidos que pueden usarse en los módulos de propulsión.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules de propulsion.", "description_it": "Mutaplasmids that can be used on Propulsion modules.", "description_ja": "推進力装備モジュールに使用できる変異プラスミド", "description_ko": "추진 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для двигательных модулей.", "description_zh": "适用于推进装备的突变质体。", "descriptionID": 317807, "hasTypes": 0, "iconID": 21984, "name_de": "Astronautische Mutaplasmide", "name_en-us": "Astronautic Mutaplasmids", "name_es": "Mutaplásmidos astronáuticos", "name_fr": "Mutaplasmides astronautiques", "name_it": "Astronautic Mutaplasmids", "name_ja": "宇宙航行変異プラスミド", "name_ko": "항법 뮤타플라즈미드", "name_ru": "Двигательные мутаплазмиды", "name_zh": "空间技术突变质体", "nameID": 317806, "parentGroupID": 2436 }, "2440": { "description_de": "Mutaplasmide, die für Industriedienstmodule verwendet werden", "description_en-us": "Mutaplasmids that can be used on Engineering modules", "description_es": "Mutaplásmidos que pueden usarse en los módulos de ingeniería.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules d'ingénierie.", "description_it": "Mutaplasmids that can be used on Engineering modules", "description_ja": "電気工学モジュールに使用できる変異プラスミド", "description_ko": "엔지니어링 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для инженерных модулей.", "description_zh": "适用于工程装备的突变质体。", "descriptionID": 317809, "hasTypes": 0, "iconID": 21987, "name_de": "Industrie-Mutaplasmide", "name_en-us": "Engineering Mutaplasmids", "name_es": "Mutaplásmidos de ingeniería", "name_fr": "Mutaplasmides d'ingénierie", "name_it": "Engineering Mutaplasmids", "name_ja": "電気工学変異プラスミド", "name_ko": "엔지니어링 뮤타플라즈미드", "name_ru": "Инженерные мутаплазмиды", "name_zh": "工程突变质体", "nameID": 317808, "parentGroupID": 2436 }, "2441": { "description_de": "Mutaplasmide, die für Warpstörungsmodule verwendet werden.", "description_en-us": "Mutaplasmids that can be used on Warp Disruption modules.", "description_es": "Mutaplásmidos que pueden usarse en los módulos de disrupción de warp.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules de perturbation de warp.", "description_it": "Mutaplasmids that can be used on Warp Disruption modules.", "description_ja": "ワープ妨害モジュールに使用できる変異プラスミド", "description_ko": "워프 디스럽션 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для модулей варп-помех.", "description_zh": "适用于跃迁扰断装备的突变质体。", "descriptionID": 317811, "hasTypes": 1, "iconID": 21993, "name_de": "Warpstörungs-Mutaplasmide", "name_en-us": "Warp Disruption Mutaplasmids", "name_es": "Mutaplásmidos de disrupción de warp", "name_fr": "Mutaplasmides de perturbation de warp", "name_it": "Warp Disruption Mutaplasmids", "name_ja": "ワープ妨害変異プラスミド", "name_ko": "워프 디스럽션 뮤타플라즈미드", "name_ru": "Мутаплазмиды варп-помех", "name_zh": "跃迁扰断突变质体", "nameID": 317810, "parentGroupID": 2436 }, "2442": { "description_de": "Mutaplasmide, die für Stasisnetzmodule verwendet werden.", "description_en-us": "Mutaplasmids that can be used on Stasis Webifier modules.", "description_es": "Mutaplásmidos que pueden usarse en los módulos de red ralentizadora.", "description_fr": "Mutaplasmides pouvant être utilisés sur les modules de générateur de stase.", "description_it": "Mutaplasmids that can be used on Stasis Webifier modules.", "description_ja": "ステイシスウェビファイヤーモジュールに使用できる変異プラスミド", "description_ko": "스테이시스 웹 생성기 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для модулей стазис-индукторов.", "description_zh": "适用于停滞缠绕光束装备的突变质体。", "descriptionID": 317813, "hasTypes": 1, "iconID": 21992, "name_de": "Stasisnetz-Mutaplasmide", "name_en-us": "Stasis Webifier Mutaplasmids", "name_es": "Mutaplásmidos de red ralentizadora", "name_fr": "Mutaplasmides de générateur de stase", "name_it": "Stasis Webifier Mutaplasmids", "name_ja": "ステイシスウェビファイヤー変異プラスミド", "name_ko": "스테이시스 웹 생성기 뮤타플라즈미드", "name_ru": "Мутаплазмиды стазис-индукторов", "name_zh": "停滞缠绕光束突变质体", "nameID": 317812, "parentGroupID": 2436 }, "2443": { "description_de": "Kleine Panzerungs-Mutaplasmide", "description_en-us": "Small Armor Mutaplasmids", "description_es": "Mutaplásmidos de blindaje pequeños", "description_fr": "Petits mutaplasmides de blindage", "description_it": "Small Armor Mutaplasmids", "description_ja": "小型アーマー変異プラスミド", "description_ko": "소형 장갑 뮤타플라즈미드", "description_ru": "Малые мутаплазмиды брони.", "description_zh": "小型装甲突变质体", "descriptionID": 317815, "hasTypes": 1, "name_de": "Kleine Panzerungs-Mutaplasmide", "name_en-us": "Small Armor Mutaplasmids", "name_es": "Mutaplásmidos de blindaje pequeños", "name_fr": "Petits mutaplasmides de blindage", "name_it": "Small Armor Mutaplasmids", "name_ja": "小型アーマー変異プラスミド", "name_ko": "소형 장갑 뮤타플라즈미드", "name_ru": "Малые мутаплазмиды брони", "name_zh": "小型装甲突变质体", "nameID": 317814, "parentGroupID": 2437 }, "2444": { "description_de": "Mittelgroße Panzerungs-Mutaplasmide", "description_en-us": "Medium Armor Mutaplasmids", "description_es": "Mutaplásmidos de blindaje medianos", "description_fr": "Mutaplasmides de blindage intermédiaires", "description_it": "Medium Armor Mutaplasmids", "description_ja": "中型アーマー変異プラスミド", "description_ko": "중형 장갑 뮤타플라즈미드", "description_ru": "Средние мутаплазмиды брони.", "description_zh": "中型装甲突变质体", "descriptionID": 317817, "hasTypes": 1, "name_de": "Mittelgroße Panzerungs-Mutaplasmide", "name_en-us": "Medium Armor Mutaplasmids", "name_es": "Mutaplásmidos de blindaje medianos", "name_fr": "Mutaplasmides de blindage intermédiaires", "name_it": "Medium Armor Mutaplasmids", "name_ja": "中型アーマー変異プラスミド", "name_ko": "중형 장갑 뮤타플라즈미드", "name_ru": "Средние мутаплазмиды брони", "name_zh": "中型装甲突变质体", "nameID": 317816, "parentGroupID": 2437 }, "2445": { "description_de": "Große Panzerungs-Mutaplasmide", "description_en-us": "Large Armor Mutaplasmids", "description_es": "Mutaplásmidos de blindaje grandes", "description_fr": "Grands mutaplasmides de blindage", "description_it": "Large Armor Mutaplasmids", "description_ja": "大型アーマー変異プラスミド", "description_ko": "대형 장갑 뮤타플라즈미드", "description_ru": "Большие мутаплазмиды брони.", "description_zh": "大型装甲突变质体", "descriptionID": 317819, "hasTypes": 1, "name_de": "Große Panzerungs-Mutaplasmide", "name_en-us": "Large Armor Mutaplasmids", "name_es": "Mutaplásmidos de blindaje grandes", "name_fr": "Grands mutaplasmides de blindage", "name_it": "Large Armor Mutaplasmids", "name_ja": "大型アーマー変異プラスミド", "name_ko": "대형 장갑 뮤타플라즈미드", "name_ru": "Большие мутаплазмиды брони", "name_zh": "大型装甲突变质体", "nameID": 317818, "parentGroupID": 2437 }, "2446": { "description_de": "Kleine Schild-Mutaplasmide", "description_en-us": "Small Shield Mutaplasmids", "description_es": "Mutaplásmidos de escudo pequeños", "description_fr": "Petits mutaplasmides de bouclier", "description_it": "Small Shield Mutaplasmids", "description_ja": "小型シールド変異プラスミド", "description_ko": "소형 실드 뮤타플라즈미드", "description_ru": "Малые мутаплазмиды щитов.", "description_zh": "小型护盾突变质体", "descriptionID": 317821, "hasTypes": 1, "name_de": "Kleine Schild-Mutaplasmide", "name_en-us": "Small Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo pequeños", "name_fr": "Petits mutaplasmides de bouclier", "name_it": "Small Shield Mutaplasmids", "name_ja": "小型シールド変異プラスミド", "name_ko": "소형 실드 뮤타플라즈미드", "name_ru": "Малые мутаплазмиды щитов", "name_zh": "小型护盾突变质体", "nameID": 317820, "parentGroupID": 2438 }, "2447": { "description_de": "Mittelgroße Schild-Mutaplasmide", "description_en-us": "Medium Shield Mutaplasmids", "description_es": "Mutaplásmidos de escudo medianos", "description_fr": "Mutaplasmides de bouclier intermédiaires", "description_it": "Medium Shield Mutaplasmids", "description_ja": "中型シールド変異プラスミド", "description_ko": "중형 실드 뮤타플라즈미드", "description_ru": "Средние мутаплазмиды щитов.", "description_zh": "中型护盾突变质体", "descriptionID": 317823, "hasTypes": 1, "name_de": "Mittelgroße Schild-Mutaplasmide", "name_en-us": "Medium Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo medianos", "name_fr": "Mutaplasmides de bouclier intermédiaires", "name_it": "Medium Shield Mutaplasmids", "name_ja": "中型シールド変異プラスミド", "name_ko": "중형 실드 뮤타플라즈미드", "name_ru": "Средние мутаплазмиды щитов", "name_zh": "中型护盾突变质体", "nameID": 317822, "parentGroupID": 2438 }, "2448": { "description_de": "Große Schild-Mutaplasmide", "description_en-us": "Large Shield Mutaplasmids", "description_es": "Mutaplásmidos de escudo grandes", "description_fr": "Grands mutaplasmides de bouclier", "description_it": "Large Shield Mutaplasmids", "description_ja": "大型シールド変異プラスミド", "description_ko": "대형 실드 뮤타플라즈미드", "description_ru": "Большие мутаплазмиды щитов.", "description_zh": "大型护盾突变质体", "descriptionID": 317825, "hasTypes": 1, "name_de": "Große Schild-Mutaplasmide", "name_en-us": "Large Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo grandes", "name_fr": "Grands mutaplasmides de bouclier", "name_it": "Large Shield Mutaplasmids", "name_ja": "大型シールド変異プラスミド", "name_ko": "대형 실드 뮤타플라즈미드", "name_ru": "Большие мутаплазмиды щитов", "name_zh": "大型护盾突变质体", "nameID": 317824, "parentGroupID": 2438 }, "2449": { "description_de": "Extragroße Schild-Mutaplasmide", "description_en-us": "X-Large Shield Mutaplasmids", "description_es": "Mutaplásmidos de escudo extragrandes", "description_fr": "Très grands mutaplasmides de bouclier", "description_it": "X-Large Shield Mutaplasmids", "description_ja": "超大型シールド変異プラスミド", "description_ko": "초대형 실드 뮤타플라즈미드", "description_ru": "Сверхбольшие мутаплазмиды щитов.", "description_zh": "超大型护盾突变质体", "descriptionID": 317827, "hasTypes": 1, "name_de": "Extragroße Schild-Mutaplasmide", "name_en-us": "X-Large Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo extragrandes", "name_fr": "Très grands mutaplasmides de bouclier", "name_it": "X-Large Shield Mutaplasmids", "name_ja": "超大型シールド変異プラスミド", "name_ko": "초대형 실드 뮤타플라즈미드", "name_ru": "Сверхбольшие мутаплазмиды щитов", "name_zh": "超大型护盾突变质体", "nameID": 317826, "parentGroupID": 2438 }, "2450": { "description_de": "Kleine astronautische Mutaplasmide", "description_en-us": "Small Atronautic Mutaplasmids", "description_es": "Mutaplásmidos astronáuticos pequeños", "description_fr": "Petits mutaplasmides astronautiques", "description_it": "Small Atronautic Mutaplasmids", "description_ja": "小型宇宙航行変異プラスミド", "description_ko": "소형 항법 뮤타플라즈미드입니다.", "description_ru": "Малые двигательные мутаплазмиды.", "description_zh": "小型空间技术突变质体", "descriptionID": 317829, "hasTypes": 1, "name_de": "Kleine astronautische Mutaplasmide", "name_en-us": "Small Astronautic Mutaplasmids", "name_es": "Mutaplásmidos astronáuticos pequeños", "name_fr": "Petits mutaplasmides astronautiques", "name_it": "Small Astronautic Mutaplasmids", "name_ja": "小型宇宙航行変異プラスミド", "name_ko": "소형 항법 뮤타플라즈미드", "name_ru": "Малые двигательные мутаплазмиды", "name_zh": "小型空间技术突变质体", "nameID": 317828, "parentGroupID": 2439 }, "2451": { "description_de": "Mittelgroße astronautische Mutaplasmide", "description_en-us": "Medium Astronautic Mutaplasmids", "description_es": "Mutaplásmidos astronáuticos medianos", "description_fr": "Mutaplasmides astronautiques intermédiaires", "description_it": "Medium Astronautic Mutaplasmids", "description_ja": "中型宇宙航行変異プラスミド", "description_ko": "중형 항법 뮤타플라즈미드", "description_ru": "Средние двигательные мутаплазмиды.", "description_zh": "中型空间技术突变质体", "descriptionID": 317831, "hasTypes": 1, "name_de": "Mittelgroße astronautische Mutaplasmide", "name_en-us": "Medium Astronautic Mutaplasmids", "name_es": "Mutaplásmidos astronáuticos medianos", "name_fr": "Mutaplasmides astronautiques intermédiaires", "name_it": "Medium Astronautic Mutaplasmids", "name_ja": "中型宇宙航行変異プラスミド", "name_ko": "중형 항법 뮤타플라즈미드", "name_ru": "Средние двигательные мутаплазмиды", "name_zh": "中型空间技术突变质体", "nameID": 317830, "parentGroupID": 2439 }, "2452": { "description_de": "Große astronautische Mutaplasmide", "description_en-us": "Large Astronautic Mutaplasmids", "description_es": "Mutaplásmidos astronáuticos grandes", "description_fr": "Grands mutaplasmides astronautiques", "description_it": "Large Astronautic Mutaplasmids", "description_ja": "大型宇宙航行変異プラスミド", "description_ko": "대형 항법 뮤타플라즈미드", "description_ru": "Большие двигательные мутаплазмиды.", "description_zh": "大型空间技术突变质体", "descriptionID": 317833, "hasTypes": 1, "name_de": "Große astronautische Mutaplasmide", "name_en-us": "Large Astronautic Mutaplasmids", "name_es": "Mutaplásmidos astronáuticos grandes", "name_fr": "Grands mutaplasmides astronautiques", "name_it": "Large Astronautic Mutaplasmids", "name_ja": "大型宇宙航行変異プラスミド", "name_ko": "대형 항법 뮤타플라즈미드", "name_ru": "Большие двигательные мутаплазмиды", "name_zh": "大型空间技术突变质体", "nameID": 317832, "parentGroupID": 2439 }, "2453": { "description_de": "Kleine Industrie-Mutaplasmide", "description_en-us": "Small Engineering Mutaplasmids", "description_es": "Mutaplásmidos de ingeniería pequeños", "description_fr": "Petits mutaplasmides d'ingénierie", "description_it": "Small Engineering Mutaplasmids", "description_ja": "小型電気工学変異プラスミド", "description_ko": "소형 엔지니어링 뮤타플라즈미드", "description_ru": "Малые инженерные мутаплазмиды.", "description_zh": "小型工程突变质体", "descriptionID": 317835, "hasTypes": 1, "name_de": "Kleine Industrie-Mutaplasmide", "name_en-us": "Small Engineering Mutaplasmids", "name_es": "Mutaplásmidos de ingeniería pequeños", "name_fr": "Petits mutaplasmides d'ingénierie", "name_it": "Small Engineering Mutaplasmids", "name_ja": "小型電気工学変異プラスミド", "name_ko": "소형 엔지니어링 뮤타플라즈미드", "name_ru": "Малые инженерные мутаплазмиды", "name_zh": "小型工程突变质体", "nameID": 317834, "parentGroupID": 2440 }, "2454": { "description_de": "Mittelgroße Industrie-Mutaplasmide", "description_en-us": "Medium Engineering Mutaplasmids", "description_es": "Mutaplásmidos de ingeniería medianos", "description_fr": "Mutaplasmides d'ingénierie intermédiaires", "description_it": "Medium Engineering Mutaplasmids", "description_ja": "中型電気工学変異プラスミド", "description_ko": "중형 엔지니어링 뮤타플라즈미드", "description_ru": "Средние инженерные мутаплазмиды.", "description_zh": "中型工程突变质体", "descriptionID": 317837, "hasTypes": 1, "name_de": "Mittelgroße Industrie-Mutaplasmide", "name_en-us": "Medium Engineering Mutaplasmids", "name_es": "Mutaplásmidos de ingeniería medianos", "name_fr": "Mutaplasmides d'ingénierie intermédiaires", "name_it": "Medium Engineering Mutaplasmids", "name_ja": "中型電気工学変異プラスミド", "name_ko": "중형 엔지니어링 뮤타플라즈미드", "name_ru": "Средние инженерные мутаплазмиды", "name_zh": "中型工程突变质体", "nameID": 317836, "parentGroupID": 2440 }, "2455": { "description_de": "Große Industrie-Mutaplasmide", "description_en-us": "Large Engineering Mutaplasmids", "description_es": "Mutaplásmidos de ingeniería grandes", "description_fr": "Grands mutaplasmides d'ingénierie", "description_it": "Large Engineering Mutaplasmids", "description_ja": "大型電気工学変異プラスミド", "description_ko": "대형 엔지니어링 뮤타플라즈미드", "description_ru": "Большие инженерные мутаплазмиды.", "description_zh": "大型工程突变质体", "descriptionID": 317839, "hasTypes": 1, "name_de": "Große Industrie-Mutaplasmide", "name_en-us": "Large Engineering Mutaplasmids", "name_es": "Mutaplásmidos de ingeniería grandes", "name_fr": "Grands mutaplasmides d'ingénierie", "name_it": "Large Engineering Mutaplasmids", "name_ja": "大型電気工学変異プラスミド", "name_ko": "대형 엔지니어링 뮤타플라즈미드", "name_ru": "Большие инженерные мутаплазмиды", "name_zh": "大型工程突变质体", "nameID": 317838, "parentGroupID": 2440 }, "2456": { "description_de": "Abgrundfilamente und Sprungfilamente", "description_en-us": "Abyssal Filaments and Jump Filaments", "description_es": "Filamentos abisales y filamentos de salto.", "description_fr": "Filaments abyssaux et filaments de saut", "description_it": "Abyssal Filaments and Jump Filaments", "description_ja": "アビサルフィラメントとジャンプフィラメント", "description_ko": "어비설 필라멘트 및 점프 필라멘트", "description_ru": "Нити бездны и прыжковые нити", "description_zh": "深渊纤维和跳跃纤维", "descriptionID": 317841, "hasTypes": 0, "iconID": 21924, "name_de": "Filamente", "name_en-us": "Filaments", "name_es": "Filamentos", "name_fr": "Filaments", "name_it": "Filaments", "name_ja": "フィラメント", "name_ko": "필라멘트", "name_ru": "Нити", "name_zh": "纤维", "nameID": 317840, "parentGroupID": 19 }, "2457": { "description_de": "Mit diesen Filamenten kann man sich mit Bereichen des Abgrunds mit exotischen Partikelstürmen verbinden", "description_en-us": "Filaments connected to Abyssal pockets with Exotic Particle Storms", "description_es": "Filamentos conectados a burbujas abisales con tormentas de partículas exóticas.", "description_fr": "Filaments qui se connectent à des poches abyssales en utilisant les tempêtes de particules exotiques", "description_it": "Filaments connected to Abyssal pockets with Exotic Particle Storms", "description_ja": "エキゾチック粒子の嵐でアビサルポケットに接続されたフィラメント", "description_ko": "엑조틱 입자폭풍 환경의 어비설 데드스페이스로 이어지는 필라멘트입니다.", "description_ru": "Нити, соединённые с участками бездны, где встречаются бури экзотических частиц.", "description_zh": "连接到充斥着异种粒子风暴的深渊空间层的纤维", "descriptionID": 317843, "hasTypes": 1, "iconID": 21905, "name_de": "Exotische Filamente", "name_en-us": "Exotic Filaments", "name_es": "Filamentos exóticos", "name_fr": "Filaments exotiques", "name_it": "Exotic Filaments", "name_ja": "エキゾチックフィラメント", "name_ko": "엑조틱 필라멘트", "name_ru": "Экзотические нити", "name_zh": "异种纤维", "nameID": 317842, "parentGroupID": 2456 }, "2458": { "description_de": "Mit diesen Filamenten kann man sich mit Bereichen des Abgrunds mit Feldern dunkler Materie verbinden", "description_en-us": "Filaments that connect to Abyssal pockets with Dark Matter Fields", "description_es": "Filamentos conectados a burbujas abisales con campos de materia oscura.", "description_fr": "Filaments qui se connectent à des poches abyssales en utilisant les champs de matière noire", "description_it": "Filaments that connect to Abyssal pockets with Dark Matter Fields", "description_ja": "暗黒物質フィールドでアビサルポケットに接続されたフィラメント", "description_ko": "암흑 물질 환경의 어비설 데드스페이스로 이어지는 필라멘트입니다.", "description_ru": "Нити, соединённые с участками бездны, где встречаются поля тёмной энергии.", "description_zh": "连接到充斥着暗物质场的深渊空间层的纤维", "descriptionID": 317845, "hasTypes": 1, "iconID": 21906, "name_de": "Dunkle Filamente", "name_en-us": "Dark Filaments", "name_es": "Filamentos oscuros", "name_fr": "Filaments noirs", "name_it": "Dark Filaments", "name_ja": "ダークフィラメント", "name_ko": "암흑 필라멘트", "name_ru": "Тёмные нити", "name_zh": "黑暗纤维", "nameID": 317844, "parentGroupID": 2456 }, "2459": { "description_de": "Mit diesen Filamenten kann man sich mit Bereichen des Abgrunds mit Plasma-Feuerstürmen verbinden", "description_en-us": "Filaments that connect to Abyssal pockets with Plasma Firestorms", "description_es": "Filamentos conectados a burbujas abisales con tormentas ígneas de plasma.", "description_fr": "Filaments qui se connectent à des poches abyssales en utilisant les tempêtes de plasma", "description_it": "Filaments that connect to Abyssal pockets with Plasma Firestorms", "description_ja": "プラズマ嵐でアビサルポケットに接続されたフィラメント", "description_ko": "플라즈마 화염폭풍 환경의 어비설 데드스페이스로 이어지는 필라멘트입니다.", "description_ru": "Нити, соединённые с участками бездны, где встречаются плазменные пожары.", "description_zh": "连接到充斥着等离子火焰风暴的深渊空间层的纤维", "descriptionID": 317847, "hasTypes": 1, "iconID": 21907, "name_de": "Feuersturmfilamente", "name_en-us": "Firestorm Filaments", "name_es": "Filamentos de tormenta ígnea", "name_fr": "Filaments plasmiques", "name_it": "Firestorm Filaments", "name_ja": "ファイアストームフィラメント", "name_ko": "화염폭풍 필라멘트", "name_ru": "Пламенные нити", "name_zh": "火瀑纤维", "nameID": 317846, "parentGroupID": 2456 }, "2460": { "description_de": "Mit diesen Filamenten kann man sich mit Bereichen des Abgrunds mit exotischen Partikelstürmen verbinden mit Gammastrahlen-Nachleuchten verbinden", "description_en-us": "Filaments that connect to Abyssal pockets with Gamma-Ray Afterglow", "description_es": "Filamentos conectados a burbujas abisales con resplandor de rayos gamma.", "description_fr": "Filaments qui se connectent à des poches abyssales en utilisant la rémanence de rayonnement gamma", "description_it": "Filaments that connect to Abyssal pockets with Gamma-Ray Afterglow", "description_ja": "ガンマ線アフターグローでアビサルポケットに接続されたフィラメント", "description_ko": "감마선 잔광 환경의 어비설 데드스페이스로 이어지는 필라멘트입니다.", "description_ru": "Нити, соединённые с участками бездны, где встречается остаточное свечение гамма-лучей.", "description_zh": "连接到充斥着伽玛射线余波的深渊空间层的纤维", "descriptionID": 317849, "hasTypes": 1, "iconID": 21904, "name_de": "Gammafilamente", "name_en-us": "Gamma Filaments", "name_es": "Filamentos gamma", "name_fr": "Filaments gamma", "name_it": "Gamma Filaments", "name_ja": "ガンマフィラメント", "name_ko": "감마선 필라멘트", "name_ru": "Гамма-нити", "name_zh": "伽玛纤维", "nameID": 317848, "parentGroupID": 2456 }, "2461": { "description_de": "Mit diesen Filamenten kann man sich mit Bereichen des Abgrunds mit exotischen Partikelstürmen verbinden mit elektrischen Stürmen verbinden", "description_en-us": "Filaments that connect to Abyssal pockets with Electrical Storms", "description_es": "Filamentos conectados a burbujas abisales con tormentas eléctricas.", "description_fr": "Filaments qui se connectent à des poches abyssales en utilisant les tempêtes électriques", "description_it": "Filaments that connect to Abyssal pockets with Electrical Storms", "description_ja": "電磁嵐でアビサルポケットに接続されたフィラメント", "description_ko": "전기폭풍 환경의 어비설 데드스페이스로 이어지는 필라멘트입니다.", "description_ru": "Нити, соединённые с участками бездны, где встречаются электрические бури.", "description_zh": "连接到充斥着电子风暴的深渊空间层的纤维", "descriptionID": 317851, "hasTypes": 1, "iconID": 21903, "name_de": "Elektrische Filamente", "name_en-us": "Electrical Filaments", "name_es": "Filamentos eléctricos", "name_fr": "Filaments électriques", "name_it": "Electrical Filaments", "name_ja": "エレクトリカルフィラメント", "name_ko": "전기폭풍 필라멘트", "name_ru": "Электрические нити", "name_zh": "电子纤维", "nameID": 317850, "parentGroupID": 2456 }, "2462": { "description_de": "Exotische Plasmaladungen werden in entropischen Desintegratoren verwendet", "description_en-us": "Exotic Plasma Charges are used in Entropic Disintegrators", "description_es": "Las cargas de plasma exótico se usan con los desintegradores entrópicos.", "description_fr": "Les charges à plasma exotiques sont utilisées dans les désintégrateurs entropiques", "description_it": "Exotic Plasma Charges are used in Entropic Disintegrators", "description_ja": "エントロピックディスインテグレーターで使用するエキゾチックプラズマチャージ", "description_ko": "엑조틱 플라즈마 차지는 엔트로픽 분열기에 사용됩니다.", "description_ru": "Заряды экзотической плазмы используются для работы энтропических дезинтеграторов.", "description_zh": "熵能分解者使用的异种等离子弹药", "descriptionID": 317853, "hasTypes": 0, "iconID": 21918, "name_de": "Exotische Plasmaladungen", "name_en-us": "Exotic Plasma Charges", "name_es": "Cargas de plasma exótico", "name_fr": "Charges à plasma exotiques", "name_it": "Exotic Plasma Charges", "name_ja": "エキゾチックプラズマチャージ", "name_ko": "엑조틱 플라즈마 차지", "name_ru": "Заряды экзотической плазмы", "name_zh": "异种等离子弹药", "nameID": 317852, "parentGroupID": 11 }, "2463": { "description_de": "Standardmäßige exotische Plasmaladungen", "description_en-us": "Standard Exotic Plasma Charges", "description_es": "Cargas estándar de plasma exótico.", "description_fr": "Charges à plasma exotiques standards", "description_it": "Standard Exotic Plasma Charges", "description_ja": "標準型エキゾチックプラズマチャージ", "description_ko": "일반 엑조틱 플라즈마 차지", "description_ru": "Стандартные заряды экзотической плазмы", "description_zh": "标准异种等离子弹药", "descriptionID": 317855, "hasTypes": 0, "iconID": 21918, "name_de": "Standardmäßige exotische Plasmaladungen", "name_en-us": "Standard Exotic Plasma Charges", "name_es": "Cargas estándar de plasma exótico", "name_fr": "Charges à plasma exotiques standards", "name_it": "Standard Exotic Plasma Charges", "name_ja": "標準型エキゾチックプラズマチャージ", "name_ko": "일반 엑조틱 플라즈마 차지", "name_ru": "Стандартные заряды экзотической плазмы", "name_zh": "标准异种等离子弹药", "nameID": 317854, "parentGroupID": 2462 }, "2464": { "description_de": "Fortschrittliche exotische Plasmaladungen", "description_en-us": "Advanced Exotic Plasma Charges", "description_es": "Cargas avanzadas de plasma exótico.", "description_fr": "Charges à plasma exotiques avancées", "description_it": "Advanced Exotic Plasma Charges", "description_ja": "高性能エキゾチックプラズマチャージ", "description_ko": "상급 엑조틱 플라즈마 차지", "description_ru": "Улучшенные заряды экзотической плазмы", "description_zh": "高级异种等离子弹药", "descriptionID": 317916, "hasTypes": 0, "iconID": 21920, "name_de": "Fortschrittliche exotische Plasmaladungen", "name_en-us": "Advanced Exotic Plasma Charges", "name_es": "Cargas avanzadas de plasma exótico", "name_fr": "Charges à plasma exotiques avancées", "name_it": "Advanced Exotic Plasma Charges", "name_ja": "高性能エキゾチックプラズマチャージ", "name_ko": "상급 엑조틱 플라즈마 차지", "name_ru": "Улучшенные заряды экзотической плазмы", "name_zh": "高级异种等离子弹药", "nameID": 317856, "parentGroupID": 2462 }, "2465": { "description_de": "Kleine exotische Plasmaladungen", "description_en-us": "Small Exotic Plasma Charge", "description_es": "Carga pequeña de plasma exótico.", "description_fr": "Petite charge à plasma exotique", "description_it": "Small Exotic Plasma Charge", "description_ja": "小型エキゾチックプラズマチャージ", "description_ko": "소형 엑조틱 플라즈마 차지", "description_ru": "Малые заряды экзотической плазмы", "description_zh": "小型异种等离子弹药", "descriptionID": 317858, "hasTypes": 1, "iconID": 21918, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petites", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 317857, "parentGroupID": 2463 }, "2466": { "description_de": "Mittelgroße exotische Plasmaladungen", "description_en-us": "Medium Exotic Plasma Charges", "description_es": "Cargas medianas de plasma exótico.", "description_fr": "Charges à plasma exotiques intermédiaires", "description_it": "Medium Exotic Plasma Charges", "description_ja": "中型エキゾチックプラズマチャージ", "description_ko": "중형 엑조틱 플라즈마 차지", "description_ru": "Средние заряды экзотической плазмы", "description_zh": "中型异种等离子弹药", "descriptionID": 317860, "hasTypes": 1, "iconID": 21918, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaires", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 317859, "parentGroupID": 2463 }, "2467": { "description_de": "Große exotische Plasmaladungen", "description_en-us": "Large Exotic Plasma Charges", "description_es": "Cargas grandes de plasma exótico.", "description_fr": "Grandes charges à plasma exotiques", "description_it": "Large Exotic Plasma Charges", "description_ja": "大型エキゾチックプラズマチャージ", "description_ko": "대형 엑조틱 플라즈마 차지", "description_ru": "Большие заряды экзотической плазмы", "description_zh": "大型异种等离子弹药", "descriptionID": 317862, "hasTypes": 1, "iconID": 21918, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grandes", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Крупные", "name_zh": "大型", "nameID": 317861, "parentGroupID": 2463 }, "2468": { "description_de": "Kleine fortschrittliche exotische Plasmaladungen", "description_en-us": "Small Advanced Exotic Plasma Charges", "description_es": "Cargas avanzadas pequeñas de plasma exótico.", "description_fr": "Petites charges à plasma exotiques avancées", "description_it": "Small Advanced Exotic Plasma Charges", "description_ja": "小型高性能エキゾチックプラズマチャージ", "description_ko": "소형 상급 엑조틱 플라즈마 차지", "description_ru": "Малые улучшенные заряды экзотической плазмы", "description_zh": "小型高级异种等离子弹药", "descriptionID": 317864, "hasTypes": 1, "iconID": 21920, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petites", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 317863, "parentGroupID": 2464 }, "2469": { "description_de": "Mittelgroße fortschrittliche exotische Plasmaladungen", "description_en-us": "Medium Advanced Exotic Plasma Charges", "description_es": "Cargas avanzadas medianas de plasma exótico.", "description_fr": "Charges à plasma exotiques avancées intermédiaires", "description_it": "Medium Advanced Exotic Plasma Charges", "description_ja": "中型高性能エキゾチックプラズマチャージ", "description_ko": "상급 중형 엑조틱 플라즈마 차지", "description_ru": "Средние улучшенные заряды экзотической плазмы", "description_zh": "中型高级异种等离子弹药", "descriptionID": 317866, "hasTypes": 1, "iconID": 21920, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaires", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 317865, "parentGroupID": 2464 }, "2470": { "description_de": "Große fortschrittliche exotische Plasmaladungen", "description_en-us": "Large Advanced Exotic Plasma Charges", "description_es": "Cargas avanzadas grandes de plasma exótico.", "description_fr": "Grandes charges à plasma exotiques avancées", "description_it": "Large Advanced Exotic Plasma Charges", "description_ja": "大型高性能エキゾチックプラズマチャージ", "description_ko": "상급 대형 엑조틱 플라즈마 차지입니다.", "description_ru": "Большие улучшенные заряды экзотической плазмы", "description_zh": "大型高级异种等离子弹药", "descriptionID": 317868, "hasTypes": 1, "iconID": 21920, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grandes", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Крупные", "name_zh": "大型", "nameID": 317867, "parentGroupID": 2464 }, "2471": { "description_de": "Erhöht Schaden und Feuerrate für entropische Desintegratoren", "description_en-us": "Increases damage and rate of fire for Entropic Disintegrators", "description_es": "Aumenta el daño y la cadencia de tiro de los desintegradores entrópicos.", "description_fr": "Augmente les dégâts et la cadence de tir pour les désintégrateurs entropiques", "description_it": "Increases damage and rate of fire for Entropic Disintegrators", "description_ja": "エントロピックディスインテグレーターのダメージと連射速度を向上させる", "description_ko": "엔트로픽 분열기의 피해량 및 연사속도를 향상시키는 장치입니다.", "description_ru": "Увеличивает урон и скорострельность энтропических дезинтеграторов", "description_zh": "提高熵能分解者的伤害和射速", "descriptionID": 317915, "hasTypes": 1, "iconID": 26521, "name_de": "Entropische Strahlungskühler", "name_en-us": "Entropic Radiation Sinks", "name_es": "Disipadores de radiación entrópica", "name_fr": "Dissipateurs de radiations entropiques", "name_it": "Entropic Radiation Sinks", "name_ja": "エントロピック放射線シンク", "name_ko": "엔트로픽 방사능 싱크", "name_ru": "Поглотители энтропического излучения", "name_zh": "熵辐射槽", "nameID": 317889, "parentGroupID": 143 }, "2473": { "description_de": "Drohnenimplantate", "description_en-us": "Drone Implants", "description_es": "Implantes para drones.", "description_fr": "Implants de drone", "description_it": "Drone Implants", "description_ja": "ドローンインプラント", "description_ko": "드론 임플란트", "description_ru": "Импланты дронов", "description_zh": "无人机植入体", "descriptionID": 317900, "hasTypes": 0, "iconID": 2224, "name_de": "Drohnenimplantate", "name_en-us": "Drone Implants", "name_es": "Implantes para drones", "name_fr": "Implants de drone", "name_it": "Drone Implants", "name_ja": "ドローンインプラント", "name_ko": "드론 임플란트", "name_ru": "Импланты дронов", "name_zh": "无人机植入体", "nameID": 317899, "parentGroupID": 531 }, "2474": { "description_de": "Implantat-Slot 06", "description_en-us": "Implant Slot 06", "description_es": "Ranura de implante 06.", "description_fr": "Emplacement d'implant 06", "description_it": "Implant Slot 06", "description_ja": "インプラントスロット06", "description_ko": "임플란트 슬롯 06", "description_ru": "Разъём для имплантов 06", "description_zh": "植入体插槽 06", "descriptionID": 317902, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 06", "name_en-us": "Implant Slot 06", "name_es": "Ranura de implante 06", "name_fr": "Emplacement d'implant 06", "name_it": "Implant Slot 06", "name_ja": "インプラントスロット06", "name_ko": "임플란트 슬롯 06", "name_ru": "Разъём для имплантов 06", "name_zh": "植入体插槽 06", "nameID": 317901, "parentGroupID": 2473 }, "2475": { "description_de": "Implantat-Slot 07", "description_en-us": "Implant Slot 07", "description_es": "Ranura de implante 07.", "description_fr": "Emplacement d'implant 07", "description_it": "Implant Slot 07", "description_ja": "インプラントスロット07", "description_ko": "임플란트 슬롯 07", "description_ru": "Разъём для имплантов 07", "description_zh": "植入体插槽 07", "descriptionID": 317904, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 07", "name_en-us": "Implant Slot 07", "name_es": "Ranura de implante 07", "name_fr": "Emplacement d'implant 07", "name_it": "Implant Slot 07", "name_ja": "インプラントスロット07", "name_ko": "임플란트 슬롯 07", "name_ru": "Разъём для имплантов 07", "name_zh": "植入体插槽 07", "nameID": 317903, "parentGroupID": 2473 }, "2476": { "description_de": "Implantat-Slot 08", "description_en-us": "Implant Slot 08", "description_es": "Ranura de implante 08.", "description_fr": "Emplacement d'implant 08", "description_it": "Implant Slot 08", "description_ja": "インプラントスロット08", "description_ko": "임플란트 슬롯 08", "description_ru": "Разъём для имплантов 08", "description_zh": "植入体插槽 08", "descriptionID": 317906, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 08", "name_en-us": "Implant Slot 08", "name_es": "Ranura de implante 08", "name_fr": "Emplacement d'implant 08", "name_it": "Implant Slot 08", "name_ja": "インプラントスロット08", "name_ko": "임플란트 슬롯 08", "name_ru": "Разъём для имплантов 08", "name_zh": "植入体插槽 08", "nameID": 317905, "parentGroupID": 2473 }, "2477": { "description_de": "Implantat-Slot 09", "description_en-us": "Implant Slot 09", "description_es": "Ranura de implante 09.", "description_fr": "Emplacement d'implant 09", "description_it": "Implant Slot 09", "description_ja": "インプラントスロット09", "description_ko": "임플란트 슬롯 09", "description_ru": "Разъём для имплантов 09", "description_zh": "植入体插槽 09", "descriptionID": 317908, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 09", "name_en-us": "Implant Slot 09", "name_es": "Ranura de implante 09", "name_fr": "Emplacement d'implant 09", "name_it": "Implant Slot 09", "name_ja": "インプラントスロット09", "name_ko": "임플란트 슬롯 09", "name_ru": "Разъём для имплантов 09", "name_zh": "植入体插槽 09", "nameID": 317907, "parentGroupID": 2473 }, "2478": { "description_de": "Implantat-Slot 10", "description_en-us": "Implant Slot 10", "description_es": "Ranura de implante 10.", "description_fr": "Emplacement d'implant 10", "description_it": "Implant Slot 10", "description_ja": "インプラントスロット10", "description_ko": "임플란트 슬롯 10", "description_ru": "Разъём для имплантов 10", "description_zh": "植入体插槽 10", "descriptionID": 317910, "hasTypes": 1, "iconID": 2224, "name_de": "Implantat-Slot 10", "name_en-us": "Implant Slot 10", "name_es": "Ranura de implante 10", "name_fr": "Emplacement d'implant 10", "name_it": "Implant Slot 10", "name_ja": "インプラントスロット10", "name_ko": "임플란트 슬롯 10", "name_ru": "Разъём для имплантов 10", "name_zh": "植入体插槽 10", "nameID": 317909, "parentGroupID": 2473 }, "2479": { "description_de": "Materialien aus der Raumverwerfung des Abgrunds", "description_en-us": "Materials found in Abyssal Deadspace", "description_es": "Materiales hallados en el espacio muerto abisal.", "description_fr": "Matériaux trouvés dans l'abîme Deadspace", "description_it": "Materials found in Abyssal Deadspace", "description_ja": "アビサルデッドスペースで見つかる資源", "description_ko": "어비설 데드스페이스에서 발견되는 물질입니다.", "description_ru": "Материалы, которые встречаются в Мёртвой бездне", "description_zh": "在深渊空间中发现的材料", "descriptionID": 317918, "hasTypes": 1, "iconID": 2103, "name_de": "Materialien des Abgrunds", "name_en-us": "Abyssal Materials", "name_es": "Materiales abisales", "name_fr": "Matériaux abyssaux", "name_it": "Abyssal Materials", "name_ja": "アビサル資源", "name_ko": "어비설 자원", "name_ru": "Материалы бездны", "name_zh": "深渊材料", "nameID": 317917, "parentGroupID": 1031 }, "2480": { "description_de": "Triglavia-Datenspeichergeräte", "description_en-us": "Triglavian Data Storage Devices", "description_es": "Dispositivos de almacenamiento de datos triglavianos.", "description_fr": "Dispositifs d'archivage de données triglavian", "description_it": "Triglavian Data Storage Devices", "description_ja": "トリグラビアンデータ保管デバイス", "description_ko": "트리글라비안 데이터 저장장치", "description_ru": "Триглавские устройства хранения данных", "description_zh": "三神裔数据存储设备", "descriptionID": 317920, "hasTypes": 1, "iconID": 21982, "name_de": "Triglavia-Daten", "name_en-us": "Triglavian Data", "name_es": "Datos triglavianos", "name_fr": "Données triglaviannes", "name_it": "Triglavian Data", "name_ja": "トリグラビアンデータ", "name_ko": "트리글라비안 데이터", "name_ru": "Сведения о Триглаве", "name_zh": "三神裔数据", "nameID": 317919, "parentGroupID": 19 }, "2481": { "description_de": "Precursor-Schlachtschiffe", "description_en-us": "Precursor Battleships", "description_es": "Acorazados precursores.", "description_fr": "Cuirassés de précursion", "description_it": "Precursor Battleships", "description_ja": "プリカーサー戦艦", "description_ko": "프리커서 배틀쉽", "description_ru": "Линкоры Предтечей", "description_zh": "先驱者战列舰", "descriptionID": 317932, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Schlachtschiffe", "name_en-us": "Precursor Battleships", "name_es": "Acorazados precursores", "name_fr": "Cuirassés de précursion", "name_it": "Precursor Battleships", "name_ja": "プリカーサー戦艦", "name_ko": "프리커서 배틀쉽", "name_ru": "Линкоры Предтечей", "name_zh": "先驱者战列舰", "nameID": 317931, "parentGroupID": 1960 }, "2482": { "description_de": "Triglavia-Schlachtschiffe", "description_en-us": "Triglavian Battleships", "description_es": "Acorazados triglavianos.", "description_fr": "Cuirassés triglavian", "description_it": "Triglavian Battleships", "description_ja": "トリグラビアン戦艦", "description_ko": "트리글라비안 배틀쉽", "description_ru": "Линкоры Триглава", "description_zh": "三神裔战列舰", "descriptionID": 317930, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 317929, "parentGroupID": 2481 }, "2483": { "description_de": "Precursor-Kreuzer", "description_en-us": "Precursor Cruisers", "description_es": "Cruceros precursores.", "description_fr": "Croiseurs de précursion", "description_it": "Precursor Cruisers", "description_ja": "プリカーサー巡洋艦", "description_ko": "프리커서 크루저", "description_ru": "Крейсеры Предтечей", "description_zh": "先驱者巡洋舰", "descriptionID": 317934, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Kreuzer", "name_en-us": "Precursor Cruisers", "name_es": "Cruceros precursores", "name_fr": "Croiseurs de précursion", "name_it": "Precursor Cruisers", "name_ja": "プリカーサー巡洋艦", "name_ko": "프리커서 크루저", "name_ru": "Крейсеры Предтечей", "name_zh": "先驱者巡洋舰", "nameID": 317933, "parentGroupID": 1988 }, "2484": { "description_de": "Precursor-Fregatten", "description_en-us": "Precursor Frigates", "description_es": "Fragatas precursoras.", "description_fr": "Frégates de précursion", "description_it": "Precursor Frigates", "description_ja": "プリカーサーフリゲート", "description_ko": "프리커서 프리깃", "description_ru": "Фрегаты Предтечей", "description_zh": "先驱者护卫舰", "descriptionID": 317936, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Fregatten", "name_en-us": "Precursor Frigates", "name_es": "Fragatas precursoras", "name_fr": "Frégates de précursion", "name_it": "Precursor Frigates", "name_ja": "プリカーサーフリゲート", "name_ko": "프리커서 프리깃", "name_ru": "Фрегаты Предтечей", "name_zh": "先驱者护卫舰", "nameID": 317935, "parentGroupID": 1998 }, "2485": { "description_de": "Triglavia-Kreuzer", "description_en-us": "Triglavian Cruisers", "description_es": "Cruceros triglavianos.", "description_fr": "Croiseurs triglavian", "description_it": "Triglavian Cruisers", "description_ja": "トリグラビアン巡洋艦", "description_ko": "트리글라비안 크루저", "description_ru": "Крейсеры Триглава", "description_zh": "三神裔巡洋舰", "descriptionID": 317938, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 317937, "parentGroupID": 2483 }, "2486": { "description_de": "Triglavia-Fregatten", "description_en-us": "Triglavian Frigates", "description_es": "Fragatas triglavianas.", "description_fr": "Frégates triglavian", "description_it": "Triglavian Frigates", "description_ja": "トリグラビアンフリゲート", "description_ko": "트리글라비안 프리깃", "description_ru": "Фрегаты Триглава", "description_zh": "三神裔护卫舰", "descriptionID": 317940, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 317939, "parentGroupID": 2484 }, "2487": { "description_de": "Es gibt viele Arten von Gehirnbeschleunigern, aber letztendlich sind ihre Effekte ähnlich. Diese Drogen, Geräte und Booster, die die Skill-Entwicklung von Piloten signifikant erhöhen.", "description_en-us": "Cerebral Accelerators come in a variety of different forms, but in the end the effects are similar. These drugs, devices, and boosters that significantly increase a pilot's skill development.", "description_es": "Hay aceleradores cerebrales de varios tipos, pero en la práctica los efectos son similares. Estos fármacos, dispositivos y potenciadores aumentan considerablemente el desarrollo de habilidades de los pilotos.", "description_fr": "Les accélérateurs cérébraux existent sous différentes formes, mais au final, leurs effets sont similaires. Ces drogues, appareils et boosters permettent de développer considérablement les compétences d'un pilote.", "description_it": "Cerebral Accelerators come in a variety of different forms, but in the end the effects are similar. These drugs, devices, and boosters that significantly increase a pilot's skill development.", "description_ja": "大脳アクセラレーターには様々な形状があるが、基本的な効果は同じだ。これらの薬や、デバイス、ブースターはパイロットのスキル成長を大幅に向上させる。", "description_ko": "대뇌가속기는 다양한 형태로 판매되지만 효과는 동일합니다. 이러한 종류의 약물, 장치, 부스터는 파일럿의 스킬 효과를 향상시킬 수 있습니다.", "description_ru": "Нейроускорители представлены в разной форме, но принцип действия у них у всех один. Это медикаменты, устройства и стимуляторы, существенно повышающие эффективность освоения навыков.", "description_zh": "大脑加速器有许多种不同类型,但效果都大同小异。这些药品。设备和增效剂都能大幅提升飞行员的技能学习效果。", "descriptionID": 317942, "hasTypes": 1, "iconID": 10144, "name_de": "Gehirnbeschleuniger", "name_en-us": "Cerebral Accelerators", "name_es": "Aceleradores cerebrales", "name_fr": "Accélérateurs cérébraux", "name_it": "Cerebral Accelerators", "name_ja": "大脳アクセラレーター", "name_ko": "대뇌가속기", "name_ru": "Нейроускорители", "name_zh": "大脑加速器", "nameID": 317941, "parentGroupID": 24 }, "2488": { "description_de": "Booster-Slot 01", "description_en-us": "Booster Slot 01", "description_es": "Ranura de potenciador 01.", "description_fr": "Emplacement de booster 01", "description_it": "Booster Slot 01", "description_ja": "ブースタースロット01", "description_ko": "부스터 슬롯 1", "description_ru": "Разъём стимуляторов 01", "description_zh": "增效剂槽位 01", "descriptionID": 317944, "hasTypes": 0, "iconID": 3211, "name_de": "Booster-Slot 01", "name_en-us": "Booster Slot 01", "name_es": "Ranura de potenciador 01", "name_fr": "Emplacement de booster 01", "name_it": "Booster Slot 01", "name_ja": "ブースタースロット01", "name_ko": "부스터 슬롯 1", "name_ru": "Разъём стимуляторов 01", "name_zh": "增效剂槽位 01", "nameID": 317943, "parentGroupID": 977 }, "2489": { "description_de": "Booster-Slot 02", "description_en-us": "Booster Slot 02", "description_es": "Ranura de potenciador 02.", "description_fr": "Emplacement de booster 02", "description_it": "Booster Slot 02", "description_ja": "ブースタースロット02", "description_ko": "부스터 슬롯 2", "description_ru": "Разъём стимуляторов 02", "description_zh": "增效剂槽位 02", "descriptionID": 317946, "hasTypes": 0, "iconID": 3211, "name_de": "Booster-Slot 02", "name_en-us": "Booster Slot 02", "name_es": "Ranura de potenciador 02", "name_fr": "Emplacement de booster 02", "name_it": "Booster Slot 02", "name_ja": "ブースタースロット02", "name_ko": "부스터 슬롯 2", "name_ru": "Разъём стимуляторов 02", "name_zh": "增效剂槽位 02", "nameID": 317945, "parentGroupID": 977 }, "2490": { "description_de": "Booster-Slot 03", "description_en-us": "Booster Slot 03", "description_es": "Ranura de potenciador 03.", "description_fr": "Emplacement de booster 03", "description_it": "Booster Slot 03", "description_ja": "ブースタースロット03", "description_ko": "부스터 슬롯 3", "description_ru": "Разъём стимуляторов 03", "description_zh": "增效剂槽位 03", "descriptionID": 317948, "hasTypes": 0, "iconID": 3211, "name_de": "Booster-Slot 03", "name_en-us": "Booster Slot 03", "name_es": "Ranura de potenciador 03", "name_fr": "Emplacement de booster 03", "name_it": "Booster Slot 03", "name_ja": "ブースタースロット03", "name_ko": "부스터 슬롯 3", "name_ru": "Разъём стимуляторов 03", "name_zh": "增效剂槽位 03", "nameID": 317947, "parentGroupID": 977 }, "2491": { "description_de": "Blue-Pill-Booster", "description_en-us": "Blue Pill Boosters", "description_es": "Potenciadores Blue Pill.", "description_fr": "Boosters Pilule bleue", "description_it": "Blue Pill Boosters", "description_ja": "ブルーピルブースター", "description_ko": "블루필 부스터", "description_ru": "Стимуляторы «Синяя таблетка»", "description_zh": "蓝色药丸增效剂", "descriptionID": 317950, "hasTypes": 1, "iconID": 3215, "name_de": "Blue Pill", "name_en-us": "Blue Pill", "name_es": "Blue Pill", "name_fr": "Pilule bleue", "name_it": "Blue Pill", "name_ja": "ブルーピル", "name_ko": "블루필", "name_ru": "Синяя таблетка", "name_zh": "蓝色药丸", "nameID": 317949, "parentGroupID": 2488 }, "2492": { "description_de": "Exile-Booster", "description_en-us": "Exile Boosters", "description_es": "Potenciadores Exile.", "description_fr": "Boosters Exil", "description_it": "Exile Boosters", "description_ja": "エグザイルブースター", "description_ko": "엑자일 부스터", "description_ru": "Стимуляторы «Изгнанник»", "description_zh": "游离增效剂", "descriptionID": 317952, "hasTypes": 1, "iconID": 3211, "name_de": "Exile", "name_en-us": "Exile", "name_es": "Exile", "name_fr": "Exil", "name_it": "Exile", "name_ja": "エグザイル", "name_ko": "엑자일", "name_ru": "Изгнанник", "name_zh": "游离", "nameID": 317951, "parentGroupID": 2488 }, "2493": { "description_de": "Mindflood-Booster", "description_en-us": "Mindflood Boosters", "description_es": "Potenciadores Mindflood.", "description_fr": "Boosters Mindflood", "description_it": "Mindflood Boosters", "description_ja": "マインドフラッドブースター", "description_ko": "마인드플러드 부스터", "description_ru": "Стимуляторы «Поток сознания»", "description_zh": "思维冲击增效剂", "descriptionID": 317954, "hasTypes": 1, "iconID": 3214, "name_de": "Mindflood", "name_en-us": "Mindflood", "name_es": "Mindflood", "name_fr": "Mindflood", "name_it": "Mindflood", "name_ja": "マインドフラッド", "name_ko": "마인드플러드", "name_ru": "Поток сознания", "name_zh": "思维冲击", "nameID": 317953, "parentGroupID": 2488 }, "2494": { "description_de": "X-Instinct-Booster", "description_en-us": "X-Instinct Boosters", "description_es": "Potenciadores X-Instinct.", "description_fr": "Boosters Instinct-X", "description_it": "X-Instinct Boosters", "description_ja": "エクスインスティンクトブースター", "description_ko": "X-인스팅트 부스터", "description_ru": "Стимуляторы «Икс-инстинкт»", "description_zh": "X—本能增效剂", "descriptionID": 317956, "hasTypes": 1, "iconID": 3217, "name_de": "X-Instinct", "name_en-us": "X-Instinct", "name_es": "X-Instinct", "name_fr": "Instinct-X", "name_it": "X-Instinct", "name_ja": "エクスインスティンクト", "name_ko": "X-인스팅트", "name_ru": "Икс-инстинкт", "name_zh": "X—本能", "nameID": 317955, "parentGroupID": 2488 }, "2495": { "description_de": "Antipharmakon-Booster", "description_en-us": "Antipharmakon Boosters", "description_es": "Potenciadores Antipharmakon.", "description_fr": "Boosters Antipharmakon", "description_it": "Antipharmakon Boosters", "description_ja": "アンチファーマコンブースター", "description_ko": "안티파르마콘 부스터", "description_ru": "Стимуляторы «Антифармакон»", "description_zh": "抗药增效剂", "descriptionID": 317958, "hasTypes": 1, "iconID": 21485, "name_de": "Antipharmakon", "name_en-us": "Antipharmakon", "name_es": "Antipharmakon", "name_fr": "Antipharmakon", "name_it": "Antipharmakon", "name_ja": "アンチファーマコン", "name_ko": "안티파르마콘", "name_ru": "Антифармакон", "name_zh": "抗药", "nameID": 317957, "parentGroupID": 2488 }, "2496": { "description_de": "Drop-Booster", "description_en-us": "Drop Boosters", "description_es": "Potenciadores Drop.", "description_fr": "Boosters Délirium", "description_it": "Drop Boosters", "description_ja": "ドロップブースター", "description_ko": "드롭 부스터", "description_ru": "Стимуляторы «Спад»", "description_zh": "坠落", "descriptionID": 317960, "hasTypes": 1, "iconID": 3212, "name_de": "Drop", "name_en-us": "Drop", "name_es": "Botín", "name_fr": "Délirium", "name_it": "Drop", "name_ja": "ドロップ", "name_ko": "드롭", "name_ru": "Спад", "name_zh": "坠落", "nameID": 317959, "parentGroupID": 2489 }, "2497": { "description_de": "Frentix-Booster", "description_en-us": "Frentix Boosters", "description_es": "Potenciadores Frentix.", "description_fr": "Boosters Frentix", "description_it": "Frentix Boosters", "description_ja": "フレンティックスブースター", "description_ko": "프렌틱스 부스터", "description_ru": "Стимуляторы «Френтикс»", "description_zh": "疯癫增效剂", "descriptionID": 317962, "hasTypes": 1, "iconID": 3213, "name_de": "Frentix", "name_en-us": "Frentix", "name_es": "Frentix", "name_fr": "Frentix", "name_it": "Frentix", "name_ja": "フレンティックス", "name_ko": "프렌틱스", "name_ru": "Френтикс", "name_zh": "疯癫", "nameID": 317961, "parentGroupID": 2489 }, "2498": { "description_de": "Sooth-Sayer-Booster", "description_en-us": "Sooth Sayer Boosters", "description_es": "Potenciadores Sooth Sayer.", "description_fr": "Boosters Devin", "description_it": "Sooth Sayer Boosters", "description_ja": "スースセイヤーブースター", "description_ko": "수드 세이어 부스터", "description_ru": "Стимуляторы «Добрая весть»", "description_zh": "梦呓增效剂", "descriptionID": 317964, "hasTypes": 1, "iconID": 3216, "name_de": "Sooth Sayer", "name_en-us": "Sooth Sayer", "name_es": "Sooth Sayer", "name_fr": "Devin", "name_it": "Sooth Sayer", "name_ja": "スースセイヤー", "name_ko": "수드 세이어", "name_ru": "Добрая весть", "name_zh": "梦呓", "nameID": 317963, "parentGroupID": 2489 }, "2499": { "description_de": "Antipharmakon-Booster", "description_en-us": "Antipharmakon Boosters", "description_es": "Potenciadores Antipharmakon.", "description_fr": "Boosters Antipharmakon", "description_it": "Antipharmakon Boosters", "description_ja": "アンチファーマコンブースター", "description_ko": "안티파르마콘 부스터", "description_ru": "Стимуляторы «Антифармакон»", "description_zh": "抗药增效剂", "descriptionID": 317966, "hasTypes": 1, "iconID": 21487, "name_de": "Antipharmakon", "name_en-us": "Antipharmakon", "name_es": "Antipharmakon", "name_fr": "Antipharmakon", "name_it": "Antipharmakon", "name_ja": "アンチファーマコン", "name_ko": "안티파르마콘", "name_ru": "Антифармакон", "name_zh": "抗药", "nameID": 317965, "parentGroupID": 2489 }, "2500": { "description_de": "Crash-Booster", "description_en-us": "Crash Boosters", "description_es": "Potenciadores Crash.", "description_fr": "Boosters Crash", "description_it": "Crash Boosters", "description_ja": "クラッシュブースター", "description_ko": "크래시 부스터", "description_ru": "Стимуляторы «Краш»", "description_zh": "撞击感增效剂", "descriptionID": 317968, "hasTypes": 1, "iconID": 3210, "name_de": "Crash", "name_en-us": "Crash", "name_es": "Crash", "name_fr": "Crash", "name_it": "Crash", "name_ja": "クラッシュ", "name_ko": "크래시", "name_ru": "Краш", "name_zh": "撞击感", "nameID": 317967, "parentGroupID": 2490 }, "2501": { "description_de": "Antipharmakon-Booster", "description_en-us": "Antipharmakon Boosters", "description_es": "Potenciadores Antipharmakon.", "description_fr": "Boosters Antipharmakon", "description_it": "Antipharmakon Boosters", "description_ja": "アンチファーマコンブースター", "description_ko": "안티파르마콘 부스터", "description_ru": "Стимуляторы «Антифармакон»", "description_zh": "抗药增效剂", "descriptionID": 317970, "hasTypes": 1, "iconID": 21483, "name_de": "Antipharmakon", "name_en-us": "Antipharmakon", "name_es": "Antipharmakon", "name_fr": "Antipharmakon", "name_it": "Antipharmakon", "name_ja": "アンチファーマコン", "name_ko": "안티파르마콘", "name_ru": "Антифармакон", "name_zh": "抗药", "nameID": 317969, "parentGroupID": 2490 }, "2502": { "description_de": "Booster-Slot 11", "description_en-us": "Booster Slot 11", "description_es": "Ranura de potenciador 11.", "description_fr": "Emplacement de booster 11", "description_it": "Booster Slot 11", "description_ja": "ブースタースロット11", "description_ko": "부스터 슬롯 11", "description_ru": "Разъём стимуляторов 11", "description_zh": "增效剂槽位 11", "descriptionID": 317972, "hasTypes": 0, "iconID": 3211, "name_de": "Booster-Slot 11", "name_en-us": "Booster Slot 11", "name_es": "Ranura de potenciador 11", "name_fr": "Emplacement de booster 11", "name_it": "Booster Slot 11", "name_ja": "ブースタースロット11", "name_ko": "부스터 슬롯 11", "name_ru": "Разъём стимуляторов 11", "name_zh": "增效剂槽位 11", "nameID": 317971, "parentGroupID": 977 }, "2503": { "description_de": "Hartmantel-Booster", "description_en-us": "Hardshell Boosters", "description_es": "Potenciadores Hardshell.", "description_fr": "Boosters Hardshell", "description_it": "Hardshell Boosters", "description_ja": "ハードシェルブースター", "description_ko": "하드쉘 부스터", "description_ru": "Стимуляторы «Панцирь»", "description_zh": "硬壳增效剂", "descriptionID": 317974, "hasTypes": 1, "iconID": 21841, "name_de": "Hartmantel", "name_en-us": "Hardshell", "name_es": "Hardshell", "name_fr": "Hardshell", "name_it": "Hardshell", "name_ja": "ハードシェル", "name_ko": "하드쉘", "name_ru": "Панцирь", "name_zh": "硬壳", "nameID": 317973, "parentGroupID": 2502 }, "2504": { "description_de": "Übertakter-Booster", "description_en-us": "Overclocker Boosters", "description_es": "Potenciadores Overclocker.", "description_fr": "Boosters Overclocker", "description_it": "Overclocker Boosters", "description_ja": "オーバークロッカーブースター", "description_ko": "오버클로커 부스터", "description_ru": "Стимуляторы «Перегрузчик»", "description_zh": "调频增效剂", "descriptionID": 317976, "hasTypes": 1, "iconID": 21840, "name_de": "Übertakter", "name_en-us": "Overclocker", "name_es": "Overclocker", "name_fr": "Overclocker", "name_it": "Overclocker", "name_ja": "オーバークロッカー", "name_ko": "오버클로커", "name_ru": "Перегрузчик", "name_zh": "调频", "nameID": 317975, "parentGroupID": 2502 }, "2505": { "description_de": "Pyrolancea-Booster", "description_en-us": "Pyrolancea Boosters", "description_es": "Potenciadores Pyrolancea.", "description_fr": "Boosters Pyrolancea", "description_it": "Pyrolancea Boosters", "description_ja": "パイロランシアブースター", "description_ko": "파이로랜시아 부스터", "description_ru": "Стимуляторы «Пиролансея»", "description_zh": "火枪增效剂", "descriptionID": 317978, "hasTypes": 1, "iconID": 21839, "name_de": "Pyrolancea", "name_en-us": "Pyrolancea", "name_es": "Pyrolancea", "name_fr": "Pyrolancea", "name_it": "Pyrolancea", "name_ja": "パイロランシア", "name_ko": "파이로랜시아", "name_ru": "Пиролансея", "name_zh": "火枪", "nameID": 317977, "parentGroupID": 2502 }, "2506": { "description_de": "Andere Booster", "description_en-us": "Other Boosters", "description_es": "Otros potenciadores.", "description_fr": "Autres boosters", "description_it": "Other Boosters", "description_ja": "その他ブースター", "description_ko": "기타 부스터", "description_ru": "Прочие стимуляторы", "description_zh": "其他增效剂", "descriptionID": 317980, "hasTypes": 1, "iconID": 3211, "name_de": "Sonstiges", "name_en-us": "Other", "name_es": "Otros", "name_fr": "Autre", "name_it": "Other", "name_ja": "その他", "name_ko": "기타", "name_ru": "Прочие", "name_zh": "其他", "nameID": 317979, "parentGroupID": 2488 }, "2508": { "description_de": "Blaupausen für Kerne zur Verringerung der Masse", "description_en-us": "Blueprints for Mass Entanglers.", "description_es": "Planos de entrelazadores másicos.", "description_fr": "Plans de construction de réacteurs de réduction de masse", "description_it": "Blueprints for Mass Entanglers.", "description_ja": "質量エンタングラーの設計図", "description_ko": "매스 인탱글러 블루프린트입니다.", "description_ru": "Чертежи ядра снижения массы", "description_zh": "质量纠缠装置的蓝图。", "descriptionID": 317990, "hasTypes": 1, "iconID": 2703, "name_de": "Massenumschließer", "name_en-us": "Mass Entangler", "name_es": "Entrelazador másico", "name_fr": "Intricateur de masse", "name_it": "Mass Entangler", "name_ja": "質量エンタングラー", "name_ko": "매스 인탱글러", "name_ru": "Модулятор массы", "name_zh": "质量纠缠装置", "nameID": 317989, "parentGroupID": 214 }, "2509": { "description_de": "Kerne zur Verringerung der Masse reduzieren die Schiffsmasse auf Kosten der Schiffsgeschwindigkeit", "description_en-us": "Mass Entanglers lower ship mass at the cost of ship velocity.", "description_es": "Los entrelazadores másicos reducen la masa de la nave a costa de la velocidad.", "description_fr": "Les réacteurs de réduction de masse abaissent la masse d'un vaisseau au détriment de sa rapidité", "description_it": "Mass Entanglers lower ship mass at the cost of ship velocity.", "description_ja": "質量エンタグラーは航行速度と引き換えに艦船の質量を下げる。", "description_ko": "매스 인탱글러는 함선의 중량을 감소시켜주는 반면 함선의 속도도 감소합니다.", "description_ru": "Ядра снижения массы уменьшают массу корабля, жертвуя при этом его скоростью", "description_zh": "质量纠缠装置能降低舰船的质量,代价是舰船速度的降低。", "descriptionID": 317992, "hasTypes": 1, "iconID": 97, "name_de": "Kerne zur Verringerung der Masse", "name_en-us": "Mass Entanglers", "name_es": "Entrelazadores másicos", "name_fr": "Réacteurs de réduction de masse", "name_it": "Mass Entanglers", "name_ja": "質量エンタングラー", "name_ko": "매스 인탱글러", "name_ru": "Ядра снижения массы", "name_zh": "质量纠缠装置", "nameID": 317991, "parentGroupID": 14 }, "2510": { "description_de": "Blaupausen von Navigationsstrukturen.", "description_en-us": "Blueprints of navigation structures.", "description_es": "Planos de estructuras de navegación.", "description_fr": "Plans de construction de structures de navigation.", "description_it": "Blueprints of navigation structures.", "description_ja": "航行用ストラクチャの設計図。", "description_ko": "업웰 항법 구조물 블루프린트입니다.", "description_ru": "Чертежи навигационных сооружений.", "description_zh": "导航建筑的蓝图。", "descriptionID": 318009, "hasTypes": 1, "iconID": 2703, "name_de": "Navigationsstrukturen", "name_en-us": "Navigation Structures", "name_es": "Estructuras de navegación", "name_fr": "Structures de navigation", "name_it": "Navigation Structures", "name_ja": "航行用ストラクチャ", "name_ko": "업웰 항법 구조물", "name_ru": "Навигационные сооружения", "name_zh": "导航建筑", "nameID": 318008, "parentGroupID": 3626 }, "2511": { "hasTypes": 1, "iconID": 2222, "name_de": "Navigationsstrukturen", "name_en-us": "Navigation Structures", "name_es": "Estructuras de navegación", "name_fr": "Structures de navigation", "name_it": "Navigation Structures", "name_ja": "航行用ストラクチャ", "name_ko": "업웰 항법 구조물", "name_ru": "Навигационные сооружения", "name_zh": "导航建筑", "nameID": 318010, "parentGroupID": 3624 }, "2512": { "hasTypes": 0, "iconID": 22064, "name_de": "Waffenupgrade-Mutaplasmide", "name_en-us": "Weapon Upgrade Mutaplasmids", "name_es": "Mutaplásmidos de mejora de armas", "name_fr": "Mutaplasmides d'amélioration de l'armement", "name_it": "Weapon Upgrade Mutaplasmids", "name_ja": "兵器アップグレード変異プラスミド", "name_ko": "무기 업그레이드 뮤타플라즈미드", "name_ru": "Мутаплазмиды для улучшения оружия", "name_zh": "武器升级突变质体", "nameID": 318038, "parentGroupID": 2436 }, "2513": { "hasTypes": 1, "name_de": "Magnetfeldstabilisator-Mutaplasmide", "name_en-us": "Magnetic Field Stabilizer Mutaplasmids", "name_es": "Mutaplásmidos de estabilizador de campo magnético", "name_fr": "Mutaplasmides de stabilisateur de champ magnétique", "name_it": "Magnetic Field Stabilizer Mutaplasmids", "name_ja": "磁場制御器変異プラスミド", "name_ko": "자기장 안정기 뮤타플라즈미드", "name_ru": "Мутаплазмиды для стабилизаторов магнитного поля", "name_zh": "磁性力场稳定器突变质体", "nameID": 318040, "parentGroupID": 2512 }, "2514": { "hasTypes": 1, "name_de": "Kühlkörper-Mutaplasmide", "name_en-us": "Heat Sink Mutaplasmids", "name_es": "Mutaplásmidos de disipador de calor", "name_fr": "Mutaplasmides de dissipateur thermique", "name_it": "Heat Sink Mutaplasmids", "name_ja": "放熱機変異プラスミド", "name_ko": "방열판 뮤타플라즈미드", "name_ru": "Мутаплазмиды для поглотителей тепла", "name_zh": "散热槽突变质体", "nameID": 318042, "parentGroupID": 2512 }, "2515": { "hasTypes": 1, "name_de": "Kreiselstabilisator-Mutaplasmide", "name_en-us": "Gyrostabilizer Mutaplasmids", "name_es": "Mutaplásmidos de giroestabilizador", "name_fr": "Mutaplasmides de gyrostabilisateur", "name_it": "Gyrostabilizer Mutaplasmids", "name_ja": "回転制御機変異プラスミド", "name_ko": "자이로 안정기 뮤타플라즈미드", "name_ru": "Мутаплазмиды для гиростабилизаторов", "name_zh": "回转稳定器突变质体", "nameID": 318044, "parentGroupID": 2512 }, "2516": { "hasTypes": 1, "name_de": "Mutaplasmide für entropische Strahlungskühler", "name_en-us": "Entropic Radiation Sink Mutaplasmids", "name_es": "Mutaplásmidos de disipador de radiación entrópica", "name_fr": "Mutaplasmides de dissipateur de radiations entropiques", "name_it": "Entropic Radiation Sink Mutaplasmids", "name_ja": "エントロピック放射線シンク変異プラスミド", "name_ko": "엔트로픽 방사능 싱크 뮤타플라즈미드", "name_ru": "Мутаплазмиды для поглотителей энтропического излучения", "name_zh": "熵辐射槽突变质体", "nameID": 318046, "parentGroupID": 2512 }, "2517": { "hasTypes": 1, "name_de": "Mutaplasmide für Ballistikkontrollsysteme", "name_en-us": "Ballistic Control System Mutaplasmids", "name_es": "Mutaplásmidos de sistema de control balístico", "name_fr": "Mutaplasmides de système de contrôle balistique", "name_it": "Ballistic Control System Mutaplasmids", "name_ja": "弾道制御装置変異プラスミド", "name_ko": "탄도 제어시스템 뮤타플라즈미드", "name_ru": "Мутаплазмиды для систем управления баллистикой", "name_zh": "弹道控制系统突变质体", "nameID": 318048, "parentGroupID": 2512 }, "2518": { "description_de": "Precursor-Schlachtkreuzer", "description_en-us": "Precursor Battlecruisers", "description_es": "Cruceros de combate precursores.", "description_fr": "Croiseurs cuirassés de précursion", "description_it": "Precursor Battlecruisers", "description_ja": "プリカーサー巡洋戦艦", "description_ko": "프리커서 배틀크루저", "description_ru": "Линейные крейсеры Предтечей", "description_zh": "先驱者战列巡洋舰", "descriptionID": 318022, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Schlachtkreuzer", "name_en-us": "Precursor Battlecruisers", "name_es": "Cruceros de combate precursores", "name_fr": "Croiseurs cuirassés de précursion", "name_it": "Precursor Battlecruisers", "name_ja": "プリカーサー巡洋戦艦", "name_ko": "프리커서 배틀크루저", "name_ru": "Линейные крейсеры Предтечей", "name_zh": "先驱者战列巡洋舰", "nameID": 318021, "parentGroupID": 1955 }, "2519": { "description_de": "Triglavia-Schlachtkreuzer", "description_en-us": "Triglavian Battlecruisers", "description_es": "Cruceros de combate triglavianos.", "description_fr": "Croiseurs cuirassés triglavian", "description_it": "Triglavian Battlecruisers", "description_ja": "トリグラビアン巡洋戦艦", "description_ko": "트리글라비안 배틀크루저", "description_ru": "Линейные крейсеры Триглава", "description_zh": "三神裔战列巡洋舰", "descriptionID": 318024, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 318023, "parentGroupID": 2518 }, "2520": { "description_de": "Precursor-Zerstörer", "description_en-us": "Precursor Destroyers", "description_es": "Destructores precursores.", "description_fr": "Destroyers de précursion", "description_it": "Precursor Destroyers", "description_ja": "プリカーサー駆逐艦", "description_ko": "프리커서 디스트로이어", "description_ru": "Эсминцы Предтечей", "description_zh": "先驱者驱逐舰", "descriptionID": 318026, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Zerstörer", "name_en-us": "Precursor Destroyers", "name_es": "Destructores precursores", "name_fr": "Destroyers de précursion", "name_it": "Precursor Destroyers", "name_ja": "プリカーサー駆逐艦", "name_ko": "프리커서 디스트로이어", "name_ru": "Эсминцы Предтечей", "name_zh": "先驱者驱逐舰", "nameID": 318025, "parentGroupID": 1989 }, "2521": { "description_de": "Triglavia-Zerstörer", "description_en-us": "Triglavian Destroyers", "description_es": "Destructores triglavianos.", "description_fr": "Destroyers triglavian", "description_it": "Triglavian Destroyers", "description_ja": "トリグラビアン駆逐艦", "description_ko": "트리글라비안 디스트로이어입니다.", "description_ru": "Эсминцы Триглава", "description_zh": "三神裔驱逐舰", "descriptionID": 318028, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 318027, "parentGroupID": 2520 }, "2522": { "description_de": "Precursor-Zerstörer", "description_en-us": "Precursor Destroyers", "description_es": "Destructores precursores.", "description_fr": "Destroyers de précursion", "description_it": "Precursor Destroyers", "description_ja": "プリカーサー駆逐艦", "description_ko": "프리커서 디스트로이어", "description_ru": "Эсминцы Предтечей", "description_zh": "先驱者驱逐舰", "descriptionID": 318031, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Zerstörer", "name_en-us": "Precursor Destroyers", "name_es": "Destructores precursores", "name_fr": "Destroyers de précursion", "name_it": "Precursor Destroyers", "name_ja": "プリカーサー駆逐艦", "name_ko": "프리커서 디스트로이어", "name_ru": "Эсминцы Предтечей", "name_zh": "先驱者驱逐舰", "nameID": 318030, "parentGroupID": 1372 }, "2523": { "description_de": "Triglavia-Zerstörer", "description_en-us": "Triglavian Destroyers", "description_es": "Destructores triglavianos.", "description_fr": "Destroyers triglavian", "description_it": "Triglavian Destroyers", "description_ja": "トリグラビアン駆逐艦", "description_ko": "트리글라비안 디스트로이어입니다.", "description_ru": "Эсминцы Триглава", "description_zh": "三神裔驱逐舰", "descriptionID": 318033, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 318032, "parentGroupID": 2522 }, "2524": { "description_de": "Precursor-Schlachtkreuzer.", "description_en-us": "Precursor Battlecruisers.", "description_es": "Cruceros de combate precursores.", "description_fr": "Croiseurs cuirassés de précursion.", "description_it": "Precursor Battlecruisers.", "description_ja": "プリカーサー巡洋戦艦", "description_ko": "프리커서 배틀크루저입니다.", "description_ru": "Линейные крейсеры Предтечей.", "description_zh": "先驱者战列巡洋舰。", "descriptionID": 318035, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Schlachtkreuzer", "name_en-us": "Precursor Battlecruisers", "name_es": "Cruceros de combate precursores", "name_fr": "Croiseurs cuirassés de précursion", "name_it": "Precursor Battlecruisers", "name_ja": "プリカーサー巡洋戦艦", "name_ko": "프리커서 배틀크루저", "name_ru": "Линейные крейсеры Предтечей", "name_zh": "先驱者战列巡洋舰", "nameID": 318034, "parentGroupID": 1374 }, "2525": { "description_de": "Triglavia-Schlachtkreuzer.", "description_en-us": "Triglavian Battlecruisers.", "description_es": "Cruceros de combate triglavianos.", "description_fr": "Croiseurs cuirassés triglavian.", "description_it": "Triglavian Battlecruisers.", "description_ja": "トリグラビアン巡洋戦艦", "description_ko": "트리글라비안 배틀크루저입니다.", "description_ru": "Линейные крейсеры Триглава.", "description_zh": "三神裔战列巡洋舰。", "descriptionID": 318037, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 318036, "parentGroupID": 2524 }, "2526": { "description_de": "Triglavia-Versorgungskreuzer", "description_en-us": "Triglavian Logistics Cruisers", "description_es": "Cruceros logísticos triglavianos.", "description_fr": "Croiseurs logistiques triglavian", "description_it": "Triglavian Logistics Cruisers", "description_ja": "トリグラビアンロジスティック巡洋艦", "description_ko": "트리글라비안 로지스틱스 크루저", "description_ru": "Крейсеры снабжения Триглава", "description_zh": "三神裔后勤巡洋舰", "descriptionID": 318071, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 318070, "parentGroupID": 437 }, "2527": { "hasTypes": 1, "iconID": 80, "name_de": "Mutadaptive Panzerungs-Fernreparatursysteme", "name_en-us": "Mutadaptive Remote Armor Repairers", "name_es": "Reparadores de blindaje remotos mutadaptativos", "name_fr": "Réparateurs de blindage à distance muta-adaptatif", "name_it": "Mutadaptive Remote Armor Repairers", "name_ja": "ミュータアダプティブ・リモートアーマーリペアラー", "name_ko": "뮤타적응성 원격 장갑수리 장치", "name_ru": "Мутадаптивные модули дистанционного ремонта брони", "name_zh": "突变适应远程装甲维修器", "nameID": 318067, "parentGroupID": 14 }, "2529": { "description_de": "Mittelgroße mutadaptive Panzerungs-Fernreparatursysteme", "description_en-us": "Medium Mutadaptive Remote Armor Repairers", "description_es": "Reparadores de blindaje remotos mutadaptativos medianos.", "description_fr": "Réparateur de blindage à distance muta-adaptatif intermédiaire", "description_it": "Medium Mutadaptive Remote Armor Repairers", "description_ja": "中型ミュータアダプティブ・リモートアーマーリペアラー", "description_ko": "중형 뮤타적응성 원격 장갑수리 장치", "description_ru": "Средние мутадаптивные модули дистанционного ремонта брони", "description_zh": "中型突变适应远程装甲维修器", "descriptionID": 318062, "hasTypes": 1, "iconID": 80, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 318061, "parentGroupID": 2527 }, "2530": { "hasTypes": 1, "iconID": 3211, "name_de": "Booster-Slot 12", "name_en-us": "Booster Slot 12", "name_es": "Ranura de potenciador 12", "name_fr": "Emplacement de booster 12", "name_it": "Booster Slot 12", "name_ja": "ブースタースロット12", "name_ko": "부스터 슬롯 12", "name_ru": "Разъём стимуляторов 12", "name_zh": "增效剂槽位 12", "nameID": 318072, "parentGroupID": 977 }, "2531": { "hasTypes": 1, "iconID": 3215, "name_de": "Booster-Slot 14", "name_en-us": "Booster Slot 14", "name_es": "Ranura de potenciador 14", "name_fr": "Emplacement de booster 14", "name_it": "Booster Slot 14", "name_ja": "ブースタースロット14", "name_ko": "부스터 슬롯 14", "name_ru": "Разъём стимуляторов 14", "name_zh": "增效剂槽位 14", "nameID": 318073, "parentGroupID": 977 }, "2532": { "description_de": "Mutaplasmide zur Schadensregulierung und Angriffsschadensregulierung", "description_en-us": "Damage Control and Assault Damage Control Mutaplasmids", "description_es": "Mutaplásmidos de control de daños y control de daños por asalto.", "description_fr": "Mutaplasmides de contrôle des dégâts et de contrôle des dégâts d'assaut", "description_it": "Damage Control and Assault Damage Control Mutaplasmids", "description_ja": "ダメージ制御とアサルトダメージ制御変異プラスミド", "description_ko": "데미지 컨트롤 및 어썰트 데미지 컨트롤 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды для модуля боевой живучести и ударного модуля боевой живучести", "description_zh": "损伤控制和突击型损伤控制突变质体", "descriptionID": 318092, "hasTypes": 0, "iconID": 24129, "name_de": "Mutaplasmide zur Schadensregulierung", "name_en-us": "Damage Control Mutaplasmids", "name_es": "Mutaplásmidos de control de daños", "name_fr": "Mutaplasmides de contrôle des dégâts", "name_it": "Damage Control Mutaplasmids", "name_ja": "ダメージ制御変異プラスミド", "name_ko": "데미지 컨트롤 뮤타플라즈미드", "name_ru": "Мутаплазмиды для модуля боевой живучести", "name_zh": "损伤控制突变质体", "nameID": 318091, "parentGroupID": 2436 }, "2533": { "description_de": "Mutaplasmide zur Schadensregulierung", "description_en-us": "Damage Control Mutaplasmids", "description_es": "Mutaplásmidos de control de daños.", "description_fr": "Mutaplasmides de contrôle des dégâts", "description_it": "Damage Control Mutaplasmids", "description_ja": "ダメージ制御変異プラスミド", "description_ko": "데미지 컨트롤 뮤타플라즈미드", "description_ru": "Мутаплазмиды для модуля боевой живучести", "description_zh": "损伤控制突变质体", "descriptionID": 318094, "hasTypes": 1, "name_de": "Mutaplasmide zur Schadensregulierung", "name_en-us": "Damage Control Mutaplasmids", "name_es": "Mutaplásmidos de control de daños", "name_fr": "Mutaplasmides de contrôle des dégâts", "name_it": "Damage Control Mutaplasmids", "name_ja": "ダメージ制御変異プラスミド", "name_ko": "데미지 컨트롤 뮤타플라즈미드", "name_ru": "Мутаплазмиды для модуля боевой живучести", "name_zh": "损伤控制突变质体", "nameID": 318093, "parentGroupID": 2532 }, "2534": { "description_de": "Mutaplasmide zur Angriffsschadensregulierung", "description_en-us": "Assault Damage Control Mutaplasmids", "description_es": "Mutaplásmidos de control de daños por asalto.", "description_fr": "Mutaplasmide de contrôle des dégâts d'assaut", "description_it": "Assault Damage Control Mutaplasmids", "description_ja": "アサルトダメージ制御変異プラスミド", "description_ko": "어썰트 데미지 컨트롤 뮤타플라즈미드", "description_ru": "Мутаплазмиды для ударного модуля боевой живучести", "description_zh": "突击型损伤控制突变质体", "descriptionID": 318096, "hasTypes": 1, "name_de": "Mutaplasmide zur Angriffsschadensregulierung", "name_en-us": "Assault Damage Control Mutaplasmids", "name_es": "Mutaplásmidos de control de daños por asalto", "name_fr": "Mutaplasmide de contrôle des dégâts d'assaut", "name_it": "Assault Damage Control Mutaplasmids", "name_ja": "アサルトダメージ制御変異プラスミド", "name_ko": "어썰트 데미지 컨트롤 뮤타플라즈미드", "name_ru": "Мутаплазмиды для ударного модуля боевой живучести", "name_zh": "突击型损伤控制突变质体", "nameID": 318095, "parentGroupID": 2532 }, "2535": { "description_de": "Schwere Triglavia-Angriffskreuzer", "description_en-us": "Triglavian Heavy Assault Cruisers", "description_es": "Cruceros de asalto pesados triglavianos.", "description_fr": "Croiseurs d'assaut lourds triglavian", "description_it": "Triglavian Heavy Assault Cruisers", "description_ja": "トリグラビアン強襲型巡洋艦", "description_ko": "트리글라비안 어썰트 크루저", "description_ru": "Ударные крейсеры Триглава", "description_zh": "三神裔重型突击巡洋舰", "descriptionID": 318098, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 318097, "parentGroupID": 448 }, "2536": { "description_de": "Triglavia-Angriffsfregatten", "description_en-us": "Triglavian Assault Frigates", "description_es": "Fragatas de asalto triglavianas.", "description_fr": "Frégates d'assaut triglavian", "description_it": "Triglavian Assault Frigates", "description_ja": "トリグラビアン強襲型フリゲート", "description_ko": "트리글라비안 어썰트 프리깃", "description_ru": "Ударные фрегаты Триглава", "description_zh": "三神裔突击护卫舰", "descriptionID": 318100, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 318099, "parentGroupID": 432 }, "2537": { "description_de": "Triglavia-Kommandozerstörer", "description_en-us": "Triglavian Command Destroyers", "description_es": "Destructores de mando triglavianos.", "description_fr": "Destroyers de commandement triglavian", "description_it": "Triglavian Command Destroyers", "description_ja": "トリグラビアン指揮型駆逐艦", "description_ko": "트리글라비안 커맨드 디스트로이어입니다.", "description_ru": "Командные эсминцы Триглава", "description_zh": "三神裔指挥驱逐舰", "descriptionID": 318102, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 318101, "parentGroupID": 2125 }, "2538": { "description_de": "Bezdnazin", "description_en-us": "Bezdnacine", "description_es": "Bezdnacina", "description_fr": "Bezdnacine", "description_it": "Bezdnacine", "description_ja": "ベズドナシン", "description_ko": "베즈드나신", "description_ru": "Безднацин", "description_zh": "贝兹岩", "descriptionID": 318109, "hasTypes": 1, "iconID": 24143, "name_de": "Bezdnazin", "name_en-us": "Bezdnacine", "name_es": "Bezdnacina", "name_fr": "Bezdnacine", "name_it": "Bezdnacine", "name_ja": "ベズドナシン", "name_ko": "베즈드나신", "name_ru": "Безднацин", "name_zh": "贝兹岩", "nameID": 318108, "parentGroupID": 54 }, "2539": { "description_de": "Rakovene", "description_en-us": "Rakovene", "description_es": "Rakovena", "description_fr": "Rakovene", "description_it": "Rakovene", "description_ja": "ラコベネ", "description_ko": "라코벤", "description_ru": "Раковин", "description_zh": "拉克岩", "descriptionID": 318111, "hasTypes": 1, "iconID": 24144, "name_de": "Rakovene", "name_en-us": "Rakovene", "name_es": "Rakovena", "name_fr": "Rakovene", "name_it": "Rakovene", "name_ja": "ラコベネ", "name_ko": "라코벤", "name_ru": "Раковин", "name_zh": "拉克岩", "nameID": 318110, "parentGroupID": 54 }, "2540": { "description_de": "Talassonit", "description_en-us": "Talassonite", "description_es": "Talasonita", "description_fr": "Talassonite", "description_it": "Talassonite", "description_ja": "タラソナイト", "description_ko": "탈라소나이트", "description_ru": "Талассонит", "description_zh": "塔拉岩", "descriptionID": 318113, "hasTypes": 1, "iconID": 24136, "name_de": "Talassonit", "name_en-us": "Talassonite", "name_es": "Talasonita", "name_fr": "Talassonite", "name_it": "Talassonite", "name_ja": "タラソナイト", "name_ko": "탈라소나이트", "name_ru": "Талассонит", "name_zh": "塔拉岩", "nameID": 318112, "parentGroupID": 54 }, "2658": { "description_de": "Fortschrittliche Komponenten triglavianischen Ursprungs.", "description_en-us": "Advanced Components of Triglavian origin.", "description_es": "Componentes avanzados de origen triglaviano.", "description_fr": "Composants avancés d'origine triglavian.", "description_it": "Advanced Components of Triglavian origin.", "description_ja": "トリグラビアン由来の高性能部品", "description_ko": "상급 트리글라비안 부품", "description_ru": "Улучшенные компоненты триглавского происхождения.", "description_zh": "源自三神裔的高级组件。", "descriptionID": 551113, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 551112, "parentGroupID": 65 }, "2690": { "description_de": "Triglavia-Dreadnoughts", "description_en-us": "Triglavian Dreadnoughts", "description_es": "Superacorazados triglavianos.", "description_fr": "Supercuirassés triglavian", "description_it": "Triglavian Dreadnoughts", "description_ja": "トリグラビアン攻城艦", "description_ko": "트리글라비안 드레드노트", "description_ru": "Дредноуты Триглава", "description_zh": "三神裔无畏舰", "descriptionID": 553051, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 553050, "parentGroupID": 3508 }, "2691": { "description_de": "Entropische Desintegratoren für Capital-Schiffe zum Einsatz auf Dreadnoughts und Titans.", "description_en-us": "Capital ship entropic disintegrators, for use on dreadnoughts and titans.", "description_es": "Desintegradores entrópicos de naves capitales para uso en superacorazados y titanes.", "description_fr": "Désintégrateurs entropiques pour vaisseaux capitaux, utilisés sur les supercuirassés et les titans.", "description_it": "Capital ship entropic disintegrators, for use on dreadnoughts and titans.", "description_ja": "攻城艦および旗艦級戦艦で使用される主力艦エントロピックディスインテグレーター。", "description_ko": "드레드노트 및 타이탄 전용 엔트로픽 분열기입니다.", "description_ru": "Энтропические дезинтеграторы кораблей большого тоннажа, предназначенные для использования на дредноутах и титанах.", "description_zh": "旗舰级熵能分解者,在无畏舰或者泰坦上使用。", "descriptionID": 553053, "hasTypes": 1, "iconID": 24237, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 553052, "parentGroupID": 2432 }, "2692": { "description_de": "Zur Verwendung mit entropischen Desintegratoren in Dreadnought-Größe.", "description_en-us": "For use with dreadnought-sized entropic disintegrators.", "description_es": "Para usarlos con desintegradores entrópicos de tamaño superacorazado.", "description_fr": "À utiliser avec des désintégrateurs entropiques pour supercuirassés.", "description_it": "For use with dreadnought-sized entropic disintegrators.", "description_ja": "攻城艦サイズのエントロピックディスインテグレーター用。", "description_ko": "드레드노트급 엔트로픽 분열기에 사용됩니다.", "description_ru": "Для использования с энтропическими дезинтеграторами для дредноутов.", "description_zh": "与无畏舰级熵能分解者搭配使用。", "descriptionID": 553055, "hasTypes": 1, "iconID": 21918, "name_de": "Extragroß", "name_en-us": "Extra Large", "name_es": "Extragrande", "name_fr": "Très grande taille", "name_it": "Extra Large", "name_ja": "超大型", "name_ko": "초대형", "name_ru": "Сверхбольшие", "name_zh": "超大型", "nameID": 553054, "parentGroupID": 2463 }, "2693": { "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 553059, "parentGroupID": 1883 }, "2701": { "description_de": "Im HyperNet-Relais verwendete Gegenstände", "description_en-us": "Items used in the HyperNet Relay", "description_es": "Objetos usados en el relé de HyperNet.", "description_fr": "Objets utilisés pour le relais Hypernet", "description_it": "Items used in the HyperNet Relay", "description_ja": "ハイパーネットリレーで使用されるアイテム", "description_ko": "하이퍼넷 전용 아이템", "description_ru": "Предметы, использованные в гиперсетевом реле", "description_zh": "在超网中继使用的物品", "descriptionID": 554068, "hasTypes": 1, "iconID": 24205, "name_de": "HyperNet-Relais", "name_en-us": "HyperNet Relay", "name_es": "Relé de HyperNet", "name_fr": "Relai Hypernet", "name_it": "HyperNet Relay", "name_ja": "ハイパーネットリレー", "name_ko": "하이퍼넷 중계소", "name_ru": "Гиперсетевое реле", "name_zh": "超网中继", "nameID": 554066, "parentGroupID": 1922 }, "2702": { "description_de": "Corvettes, die Kapselpiloten gelegentlich für begrenzte Zeitperioden angeboten wurden.", "description_en-us": "Corvettes that have been offered to capsuleers on occasion for limited periods.", "description_es": "Corbetas ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Corvettes mises parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Corvettes that have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラにオファーされたコルベット", "description_ko": "캡슐리어들에게 한정된 기회로 제공된 코르벳입니다.", "description_ru": "Корветы, которые в течение ограниченного времени по особому поводу предлагались капсулёрам.", "description_zh": "限时供应的轻型护卫舰。", "descriptionID": 554136, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversion-Corvettes", "name_en-us": "Special Edition Corvettes", "name_es": "Corbetas de edición especial", "name_fr": "Corvettes édition spéciale", "name_it": "Special Edition Corvettes", "name_ja": "特別版コルベット", "name_ko": "스페셜 에디션 코르벳", "name_ru": "Корветы особой версии", "name_zh": "特别版轻型护卫舰", "nameID": 554135, "parentGroupID": 1612 }, "2703": { "description_de": "Precursor-Dreadnoughts", "description_en-us": "Precursor Dreadnoughts", "description_es": "Superacorazados precursores", "description_fr": "Supercuirassés de précursion", "description_it": "Precursor Dreadnoughts", "description_ja": "プリカーサー攻城艦", "description_ko": "프리커서 드레드노트", "description_ru": "Дредноуты Предтечей", "description_zh": "先驱者无畏舰", "descriptionID": 555352, "hasTypes": 0, "iconID": 21420, "name_de": "Precursor-Dreadnoughts", "name_en-us": "Precursor Dreadnoughts", "name_es": "Superacorazados precursores", "name_fr": "Supercuirassés de précursion", "name_it": "Precursor Dreadnoughts", "name_ja": "プリカーサー攻城艦", "name_ko": "프리커서 드레드노트", "name_ru": "Дредноуты Предтечей", "name_zh": "先驱者无畏舰", "nameID": 555351, "parentGroupID": 1971 }, "2704": { "description_de": "Triglavia-Dreadnoughts", "description_en-us": "Triglavian Dreadnoughts", "description_es": "Superacorazados triglavianos", "description_fr": "Supercuirassés triglavian", "description_it": "Triglavian Dreadnoughts", "description_ja": "トリグラビアン攻城艦", "description_ko": "트리글라비안 드레드노트", "description_ru": "Дредноуты Триглава", "description_zh": "三神裔无畏舰", "descriptionID": 555354, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглавские", "name_zh": "三神裔", "nameID": 555353, "parentGroupID": 2703 }, "2706": { "description_de": "Filamente, die Flotten unberechenbar zu anderen Gebieten im bekannten Raum befördern.", "description_en-us": "Filaments that jump fleets unpredictably to other locations in known space.", "description_es": "Filamentos que hacen que las flotas salten a otras ubicaciones del espacio conocido de forma impredecible.", "description_fr": "Filaments qui permettent à des flottes de sauter de manière imprévisible vers d'autres lieux de l'espace connu.", "description_it": "Filaments that jump fleets unpredictably to other locations in known space.", "description_ja": "既知の宇宙空間の他の場所に艦隊を予測不能でジャンプさせるフィラメント。", "description_ko": "일반 우주의 무작위 지점으로 함대를 전송합니다.", "description_ru": "Эти нити непредсказуемым образом переносят флоты в новые точки известного космоса.", "description_zh": "能将舰队跳跃到宇宙中的其他随机地点的纤维", "descriptionID": 560905, "hasTypes": 1, "iconID": 21924, "name_de": "Sprungfilamente", "name_en-us": "Jump Filaments", "name_es": "Filamentos de salto", "name_fr": "Filaments de saut", "name_it": "Jump Filaments", "name_ja": "ジャンプフィラメント", "name_ko": "점프 필라멘트", "name_ru": "Прыжковые нити", "name_zh": "跳跃纤维", "nameID": 560904, "parentGroupID": 2456 }, "2728": { "description_de": "In Vorton-Projektoren verwendete Kondensator-Paket-Ladungen", "description_en-us": "Condenser Pack charges used in Vorton Projectors", "description_es": "Cargas de paquetes de condensadores que se usan en los proyectores vortónicos.", "description_fr": "Charges de packs de condensateur utilisées dans les projecteurs de vortons", "description_it": "Condenser Pack charges used in Vorton Projectors", "description_ja": "ヴォートンプロジェクターで使用されているコンデンサパックチャージ", "description_ko": "보르톤 프로젝터에 사용되는 콘덴서 팩 차지입니다.", "description_ru": "Наборы конденсаторов — заряды, которые используют вортонные проекторы", "description_zh": "电弧弦投射器使用的电容包", "descriptionID": 564544, "hasTypes": 0, "iconID": 24481, "name_de": "Kondensator-Pakete", "name_en-us": "Condenser Packs", "name_es": "Paquetes de condensadores", "name_fr": "Packs de condensateur", "name_it": "Condenser Packs", "name_ja": "コンデンサパック", "name_ko": "콘덴서 팩", "name_ru": "Наборы конденсаторов", "name_zh": "电容包", "nameID": 564543, "parentGroupID": 11 }, "2729": { "description_de": "Standard-Kondensator-Pakete", "description_en-us": "Standard Condenser Packs", "description_es": "Paquetes de condensadores estándar.", "description_fr": "Packs de condensateur standard", "description_it": "Standard Condenser Packs", "description_ja": "標準型コンデンサパック", "description_ko": "일반 콘덴서 팩", "description_ru": "Стандартные наборы конденсаторов", "description_zh": "标准电容包", "descriptionID": 564546, "hasTypes": 0, "iconID": 24481, "name_de": "Standard-Kondensator-Pakete", "name_en-us": "Standard Condenser Packs", "name_es": "Paquetes de condensadores estándar", "name_fr": "Packs de condensateur standard", "name_it": "Standard Condenser Packs", "name_ja": "標準型コンデンサパック", "name_ko": "일반 콘덴서 팩", "name_ru": "Стандартные наборы конденсаторов", "name_zh": "标准电容包", "nameID": 564545, "parentGroupID": 2728 }, "2730": { "description_de": "Fortschrittliche Kondensator-Pakete", "description_en-us": "Advanced Condenser Packs", "description_es": "Paquetes de condensadores avanzados", "description_fr": "Packs de condensateur avancé", "description_it": "Advanced Condenser Packs", "description_ja": "高性能コンデンサパック", "description_ko": "상급 콘덴서 팩", "description_ru": "Улучшенные наборы конденсаторов", "description_zh": "高级电容包", "descriptionID": 564548, "hasTypes": 0, "iconID": 24480, "name_de": "Fortschrittliche Kondensator-Pakete", "name_en-us": "Advanced Condenser Packs", "name_es": "Paquetes de condensadores avanzados", "name_fr": "Packs de condensateur avancé", "name_it": "Advanced Condenser Packs", "name_ja": "高性能コンデンサパック", "name_ko": "상급 콘덴서 팩", "name_ru": "Улучшенные наборы конденсаторов", "name_zh": "高级电容包", "nameID": 564547, "parentGroupID": 2728 }, "2734": { "hasTypes": 1, "iconID": 24469, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 564558, "parentGroupID": 2729 }, "2735": { "hasTypes": 1, "iconID": 24475, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 564559, "parentGroupID": 2729 }, "2736": { "hasTypes": 1, "iconID": 24481, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 564560, "parentGroupID": 2729 }, "2737": { "hasTypes": 1, "iconID": 24468, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 564561, "parentGroupID": 2730 }, "2738": { "hasTypes": 1, "iconID": 24474, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 564562, "parentGroupID": 2730 }, "2739": { "hasTypes": 1, "iconID": 24480, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 564563, "parentGroupID": 2730 }, "2740": { "hasTypes": 1, "iconID": 24467, "name_de": "Vorton-Tuning-Systeme", "name_en-us": "Vorton Tuning Systems", "name_es": "Sistemas de ajuste vortónico", "name_fr": "Systèmes de réglage des vortons", "name_it": "Vorton Tuning Systems", "name_ja": "ヴォートンチューニングシステム", "name_ko": "보르톤 조정 시스템", "name_ru": "Системы настройки вортонов", "name_zh": "电弧弦调谐系统", "nameID": 564564, "parentGroupID": 143 }, "2741": { "description_de": "Vorton-Projektoren von Upwell", "description_en-us": "Vorton Projectors made by Upwell", "description_es": "Proyectores vortónicos fabricados por Upwell.", "description_fr": "Projecteurs de vortons produits par Upwell", "description_it": "Vorton Projectors made by Upwell", "description_ja": "アップウェルヴォートンプロジェクター", "description_ko": "업웰 제작 보르톤 프로젝터", "description_ru": "Вортонные проекторы производства консорциума «Апвелл»", "description_zh": "昇威财团制造的电弧弦投射器", "descriptionID": 564566, "hasTypes": 0, "iconID": 24466, "name_de": "Vorton-Projektoren", "name_en-us": "Vorton Projectors", "name_es": "Proyectores vortónicos", "name_fr": "Projecteurs de vortons", "name_it": "Vorton Projectors", "name_ja": "ヴォートンプロジェクター", "name_ko": "보르톤 프로젝터", "name_ru": "Вортонные проекторы", "name_zh": "电弧弦投射器", "nameID": 564565, "parentGroupID": 10 }, "2742": { "hasTypes": 1, "iconID": 24464, "name_de": "Klein", "name_en-us": "Small", "name_es": "Pequeño", "name_fr": "Petit", "name_it": "Small", "name_ja": "小型", "name_ko": "소형", "name_ru": "Малые", "name_zh": "小型", "nameID": 564567, "parentGroupID": 2741 }, "2743": { "hasTypes": 1, "iconID": 24465, "name_de": "Mittelgroß", "name_en-us": "Medium", "name_es": "Mediano", "name_fr": "Intermédiaire", "name_it": "Medium", "name_ja": "中型", "name_ko": "중형", "name_ru": "Средние", "name_zh": "中型", "nameID": 564568, "parentGroupID": 2741 }, "2744": { "hasTypes": 1, "iconID": 24466, "name_de": "Groß", "name_en-us": "Large", "name_es": "Grande", "name_fr": "Grand", "name_it": "Large", "name_ja": "大型", "name_ko": "대형", "name_ru": "Большие", "name_zh": "大型", "nameID": 564569, "parentGroupID": 2741 }, "2747": { "description_de": "Filamente, die sich für zeitlich begrenzte PvP-Events mit dem Testgelände des Abgrunds verbinden.", "description_en-us": "Filaments that connect to the Abyssal Proving Grounds for limited time PVP events.", "description_es": "Filamentos conectados al Campo de Pruebas Abisal para eventos JcJ de tiempo limitado.", "description_fr": "Ce filament se connecte aux sites d'expérimentation abyssaux pendant les événements PVP à durée limitée.", "description_it": "Filaments that connect to the Abyssal Proving Grounds for limited time PVP events.", "description_ja": "期間限定PvPイベント「アビサルプルービンググラウンド」に接続するフィラメント。", "description_ko": "이 필라멘트는 PVP 이벤트가 이루어지는 어비설 격전지로 함대를 전송합니다.", "description_ru": "Нити, открывающие проход на Испытательный полигон Бездны на время PvP-событий.", "description_zh": "使用此纤维可以前往深渊试炼场,进行限时PVP交战。", "descriptionID": 567625, "hasTypes": 1, "iconID": 21925, "name_de": "Testgelände-Filamente", "name_en-us": "Proving Ground Filaments", "name_es": "Filamentos del campo de pruebas", "name_fr": "Filaments de site d'expérimentation", "name_it": "Proving Ground Filaments", "name_ja": "プルービンググラウンドフィラメント", "name_ko": "격전지 필라멘트", "name_ru": "Нити испытательного полигона", "name_zh": "试炼场纤维", "nameID": 567624, "parentGroupID": 2456 }, "2749": { "description_de": "Quantumkerne sind Überlichtgeschwindigkeitskommunikationsanlagen, die für den effizienten Betrieb von Upwell-Strukturen wichtig sind.", "description_en-us": "Quantum Cores are FTL communications facillities vital to the efficient operation of Upwell structures.", "description_es": "Los núcleos cuánticos son instalaciones de comunicación supralumínica vitales para el correcto funcionamiento de las estructuras de Upwell.", "description_fr": "Les réacteurs quantiques sont des installations de communications PRL essentielles au bon fonctionnement des structures Upwell.", "description_it": "Quantum Cores are FTL communications facillities vital to the efficient operation of Upwell structures.", "description_ja": "アップウェルストラクチャを効率的に運用するために必須なFTL(超光速)通信設備", "description_ko": "양자코어는 업웰 구조물을 효과적으로 운용하기 위한 FTL 통신 시설입니다.", "description_ru": "Квантовые ядра — это обеспечивающие сверхсветовую связь объекты, жизненно необходимые для эффективной работы сооружений консорциума «Апвелл».", "description_zh": "量子芯是一种超光速通讯设备,对于昇威建筑的高效运转起着至关重要的作用。", "descriptionID": 569752, "hasTypes": 1, "iconID": 21729, "name_de": "Quantumkerne", "name_en-us": "Quantum Cores", "name_es": "Núcleos cuánticos", "name_fr": "Réacteurs quantiques", "name_it": "Quantum Cores", "name_ja": "クアンタムコア", "name_ko": "양자코어", "name_ru": "Квантовые ядра", "name_zh": "量子芯", "nameID": 569644, "parentGroupID": 2202 }, "2750": { "description_de": "Capital-Astronautische-Mutaplasmide", "description_en-us": "Capital Astronautic Mutaplasmids", "description_es": "Mutaplásmidos astronáuticos capitales.", "description_fr": "Mutaplasmides astronautiques capitaux", "description_it": "Capital Astronautic Mutaplasmids", "description_ja": "キャピタル宇宙航行変異プラスミド", "description_ko": "캐피탈 항법 뮤타플라즈미드", "description_ru": "Сверхбольшие двигательные мутаплазмиды.", "description_zh": "旗舰级空间技术突变质体", "descriptionID": 569939, "hasTypes": 1, "name_de": "Capital-Astronautische-Mutaplasmide", "name_en-us": "Capital Astronautic Mutaplasmids", "name_es": "Mutaplásmidos astronáuticos capitales", "name_fr": "Mutaplasmides astronautiques capitaux", "name_it": "Capital Astronautic Mutaplasmids", "name_ja": "キャピタル宇宙航行変異プラスミド", "name_ko": "캐피탈 항법 뮤타플라즈미드", "name_ru": "Сверхбольшие двигательные мутаплазмиды.", "name_zh": "旗舰级空间技术突变质体", "nameID": 569938, "parentGroupID": 2439 }, "2751": { "description_de": "Capital-Panzerungs-Mutaplasmide", "description_en-us": "Capital Armor Mutaplasmids", "description_es": "Mutaplásmidos de blindaje capitales.", "description_fr": "Mutaplasmides de blindage capitaux", "description_it": "Capital Armor Mutaplasmids", "description_ja": "キャピタルアーマー変異プラスミド", "description_ko": "캐피탈 장갑 뮤타플라즈미드", "description_ru": "Сверхбольшие мутаплазмиды брони.", "description_zh": "旗舰级装甲突变质体", "descriptionID": 569941, "hasTypes": 1, "name_de": "Capital-Panzerungs-Mutaplasmide", "name_en-us": "Capital Armor Mutaplasmids", "name_es": "Mutaplásmidos de blindaje capitales", "name_fr": "Mutaplasmides de blindage capitaux", "name_it": "Capital Armor Mutaplasmids", "name_ja": "キャピタルアーマー変異プラスミド", "name_ko": "캐피탈 장갑 뮤타플라즈미드", "name_ru": "Сверхбольшие мутаплазмиды брони.", "name_zh": "旗舰级装甲突变质体", "nameID": 569940, "parentGroupID": 2437 }, "2752": { "description_de": "Capital-Schild-Mutaplasmide", "description_en-us": "Capital Shield Mutaplasmids", "description_es": "Mutaplásmidos de escudo capitales.", "description_fr": "Mutaplasmides de bouclier capitaux", "description_it": "Capital Shield Mutaplasmids", "description_ja": "キャピタルシールド変異プラスミド", "description_ko": "캐피탈 실드 뮤타플라즈미드", "description_ru": "Сверхбольшие мутаплазмиды щитов.", "description_zh": "旗舰级护盾突变质体", "descriptionID": 569944, "hasTypes": 1, "name_de": "Capital-Schild-Mutaplasmide", "name_en-us": "Capital Shield Mutaplasmids", "name_es": "Mutaplásmidos de escudo capitales", "name_fr": "Mutaplasmides de bouclier capitaux", "name_it": "Capital Shield Mutaplasmids", "name_ja": "キャピタルシールド変異プラスミド", "name_ko": "캐피탈 실드 뮤타플라즈미드", "name_ru": "Сверхбольшие мутаплазмиды щитов.", "name_zh": "旗舰级护盾突变质体", "nameID": 569943, "parentGroupID": 2438 }, "2753": { "description_de": "Capital-Industrie-Mutaplasmide", "description_en-us": "Capital Engineering Mutaplasmids", "description_es": "Mutaplásmidos de ingeniería capitales.", "description_fr": "Mutaplasmides d'ingénierie capitaux", "description_it": "Capital Engineering Mutaplasmids", "description_ja": "キャピタル電気工学変異プラスミド", "description_ko": "캐피탈 엔지니어링 뮤타플라즈미드", "description_ru": "Сверхбольшие инженерные мутаплазмиды.", "description_zh": "旗舰级工程突变质体", "descriptionID": 569946, "hasTypes": 1, "name_de": "Capital-Industrie-Mutaplasmide", "name_en-us": "Capital Engineering Mutaplasmids", "name_es": "Mutaplásmidos de ingeniería capitales", "name_fr": "Mutaplasmides d'ingénierie capitaux", "name_it": "Capital Engineering Mutaplasmids", "name_ja": "キャピタル電気工学変異プラスミド", "name_ko": "캐피탈 엔지니어링 뮤타플라즈미드", "name_ru": "Сверхбольшие инженерные мутаплазмиды.", "name_zh": "旗舰级工程突变质体", "nameID": 569945, "parentGroupID": 2440 }, "2754": { "description_de": "Belagerungsmodul-Mutaplasmide", "description_en-us": "Siege Module Mutaplasmids", "description_es": "Mutaplásmidos de módulos de asedio.", "description_fr": "Mutaplasmides de module de siège", "description_it": "Siege Module Mutaplasmids", "description_ja": "シージモジュール変異プラスミド", "description_ko": "시즈모듈 뮤타플라즈미드", "description_ru": "Мутаплазмиды осадных модулей.", "description_zh": "会战装备突变质体", "descriptionID": 569952, "hasTypes": 1, "name_de": "Belagerungsmodul-Mutaplasmide", "name_en-us": "Siege Module Mutaplasmids", "name_es": "Mutaplásmidos de módulo de asedio", "name_fr": "Mutaplasmides de module de siège", "name_it": "Siege Module Mutaplasmids", "name_ja": "シージモジュール変異プラスミド", "name_ko": "시즈모듈 뮤타플라즈미드", "name_ru": "Мутаплазмиды осадных модулей.", "name_zh": "会战装备突变质体", "nameID": 569951, "parentGroupID": 2512 }, "2756": { "description_de": "Filamente, die ihre Nutzer aus der Triglavia-Region Pochven transportieren", "description_en-us": "Filaments that jump users out of the Triglavian Region Pochven", "description_es": "Filamentos que hacen saltar a los usuarios fuera de la región triglaviana de Pochven.", "description_fr": "Ces filaments transportent les pilotes hors de la région triglavian de Pochven", "description_it": "Filaments that jump users out of the Triglavian Region Pochven", "description_ja": "使用者をトリグラビアンリージョン・ポクヴェンからジャンプアウトさせるフィラメント", "description_ko": "트리글라비안 포치벤 지역 밖으로 사용자를 전송합니다.", "description_ru": "Прыжковые нити, возвращающие пилотов из триглавского сектора Почвень.", "description_zh": "可以跳跃离开三神裔波赫文星域的纤维", "descriptionID": 571036, "hasTypes": 1, "iconID": 24530, "name_de": "Triglavia-Weltraum: Auswärts", "name_en-us": "Triglavian Space Outbound", "name_es": "Salida del espacio triglaviano", "name_fr": "Sortie de l'espace triglavian", "name_it": "Triglavian Space Outbound", "name_ja": "トリグラビアン宙域アウトバウンド", "name_ko": "트리글라비안 우주 아웃바운드", "name_ru": "Выход из пространства Триглава", "name_zh": "三神裔领地离境", "nameID": 571035, "parentGroupID": 2456 }, "2757": { "description_de": "Filamente, die ihre Nutzer in die Triglavia-Region Pochven transportieren", "description_en-us": "Filaments that jump users into the Triglavian Region Pochven", "description_es": "Filamentos que hacen saltar a los usuarios a la región triglaviana de Pochven.", "description_fr": "Ces filaments transportent les pilotes au cœur de la région triglavian de Pochven", "description_it": "Filaments that jump users into the Triglavian Region Pochven", "description_ja": "使用者をトリグラビアンリージョン・ポクヴェンにジャンプインさせるフィラメント", "description_ko": "트리글라비안 포치벤 지역 안으로 사용자를 전송합니다.", "description_ru": "Прыжковые нити, переносящие пилотов в триглавский сектор Почвень.", "description_zh": "可以跳跃到三神裔波赫文星域的纤维", "descriptionID": 571038, "hasTypes": 1, "iconID": 24530, "name_de": "Triglavia-Weltraum: Einwärts", "name_en-us": "Triglavian Space Inbound", "name_es": "Entrada al espacio triglaviano", "name_fr": "Entrée dans l'espace triglavian", "name_it": "Triglavian Space Inbound", "name_ja": "トリグラビアン宙域インバウンド", "name_ko": "트리글라비안 우주 인바운드", "name_ru": "Вход в пространство Триглава", "name_zh": "三神裔领地入境", "nameID": 571037, "parentGroupID": 2456 }, "2761": { "description_de": "Booster, die bei der Rekonfiguration des Klon-Mappings eingesetzt werden, um die Nutzung von taktischen Kapselpilotenklonern zu ermöglichen.", "description_en-us": "Boosters used in reconfiguration of clone mapping to allow the use of Tactical Capsuleer Recloners", "description_es": "Potenciadores empleados en la reconfiguración de mapeo de clones que permiten el uso de reclonadores de capsulistas tácticos.", "description_fr": "Boosters utilisés dans la reconfiguration du traçage de clone pour permettre d'utiliser le clonage de capsulier tactique", "description_it": "Boosters used in reconfiguration of clone mapping to allow the use of Tactical Capsuleer Recloners", "description_ja": "クローンマッピングの再配置に使用して、タクティカルカプセラリクローナーを利用可能にするブースター", "description_ko": "클론 재구성을 위해 개발된 부스터로 사용 시 전술 캡슐리어 복제기를 활용할 수 있습니다.", "description_ru": "Стимуляторы, которые используются для реконфигурации схем клонов, необходимой для использования тактического клонировщика капсулёров", "description_zh": "使用战术克隆重制体所必需的增效剂", "descriptionID": 573510, "hasTypes": 1, "iconID": 10144, "name_de": "Klon-Mapper", "name_en-us": "Clone Mappers", "name_es": "Mapeadores clónicos", "name_fr": "Traceurs de clone", "name_it": "Clone Mappers", "name_ja": "クローンマッパー", "name_ko": "클론 매퍼", "name_ru": "Построители схем для клонов", "name_zh": "克隆映射装置", "nameID": 573509, "parentGroupID": 977 }, "2763": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Anziehungssignalfeuer", "name_en-us": "Mobile Cynosural Beacons", "name_es": "Balizas cinosurales móviles", "name_fr": "Balises cynosurales mobiles", "name_it": "Mobile Cynosural Beacons", "name_ja": "移動式サイノシュラルビーコン", "name_ko": "이동식 사이노슈럴 비컨", "name_ru": "Мобильные приводные маяки", "name_zh": "移动式诱导信标", "nameID": 574837, "parentGroupID": 404 }, "2764": { "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Anziehungssignalfeuer", "name_en-us": "Mobile Cynosural Beacons", "name_es": "Balizas cinosurales móviles", "name_fr": "Balises cynosurales mobiles", "name_it": "Mobile Cynosural Beacons", "name_ja": "移動式サイノシュラルビーコン", "name_ko": "이동식 사이노슈럴 비컨", "name_ru": "Мобильные приводные маяки", "name_zh": "移动式诱导信标", "nameID": 574838, "parentGroupID": 406 }, "2765": { "hasTypes": 1, "iconID": 24608, "name_de": "Fortschrittliche Schutztechnologie", "name_en-us": "Advanced Protective Technology", "name_es": "Tecnología protectora avanzada", "name_fr": "Technologie de protection avancée", "name_it": "Advanced Protective Technology", "name_ja": "高性能防護技術", "name_ko": "상급 보호 기술", "name_ru": "Продвинутые технологии защиты", "name_zh": "高级防护技术", "nameID": 575004, "parentGroupID": 533 }, "2766": { "hasTypes": 1, "iconID": 24623, "name_de": "Molekulare Schmiedewerkzeuge", "name_en-us": "Molecular-Forging Tools", "name_es": "Herramientas de forja molecular", "name_fr": "Outils de forgeage moléculaire", "name_it": "Molecular-Forging Tools", "name_ja": "分子加工用ツール", "name_ko": "분자 결합 도구", "name_ru": "Инструменты молекулярной модификации", "name_zh": "分子熔铸工具", "nameID": 575005, "parentGroupID": 533 }, "2767": { "hasTypes": 1, "iconID": 24619, "name_de": "Molekulargeschmiedete Materialien", "name_en-us": "Molecular-Forged Materials", "name_es": "Materiales de forja molecular", "name_fr": "Matériaux issus du forgeage moléculaire", "name_it": "Molecular-Forged Materials", "name_ja": "分子加工型資源", "name_ko": "분자 결합 재료", "name_ru": "Молекулярно модифицированные материалы", "name_zh": "分子熔铸材料", "nameID": 575006, "parentGroupID": 1034 }, "2768": { "hasTypes": 1, "iconID": 24638, "name_de": "Schutzkomponenten", "name_en-us": "Protective Components", "name_es": "Componentes protectores", "name_fr": "Composants protecteurs", "name_it": "Protective Components", "name_ja": "防護用部品", "name_ko": "보호용 부품", "name_ru": "Компоненты защиты", "name_zh": "防护性组件", "nameID": 575007, "parentGroupID": 1035 }, "2769": { "hasTypes": 1, "iconID": 21783, "name_de": "Molekulargeschmiedete Reaktionsformeln", "name_en-us": "Molecular-Forged Reaction Formulas", "name_es": "Fórmulas reactivas de forja molecular", "name_fr": "Formules de réaction par forgeage moléculaire", "name_it": "Molecular-Forged Reaction Formulas", "name_ja": "分子加工型反応フォーミュラ", "name_ko": "분자 결합 반응식", "name_ru": "Формулы молекулярной реакции", "name_zh": "分子熔铸反应配方", "nameID": 575008, "parentGroupID": 1849 }, "2770": { "hasTypes": 1, "iconID": 2703, "name_de": "Schutzkomponenten", "name_en-us": "Protective Components", "name_es": "Componentes protectores", "name_fr": "Composants protecteurs", "name_it": "Protective Components", "name_ja": "防護用部品", "name_ko": "보호용 부품", "name_ru": "Компоненты защиты", "name_zh": "防护性组件", "nameID": 575009, "parentGroupID": 800 }, "2771": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile Observatorien", "name_en-us": "Mobile Observatories", "name_es": "Observatorios móviles", "name_fr": "Observatoires mobiles", "name_it": "Mobile Observatories", "name_ja": "移動式観測所", "name_ko": "이동식 관측소", "name_ru": "Полевые обсерватории", "name_zh": "移动观测站", "nameID": 580890, "parentGroupID": 404 }, "2772": { "description_de": "Blaupausen für mobile Observatorien", "description_en-us": "Blueprints for Mobile Observatories", "description_es": "Planos de observatorios móviles.", "description_fr": "Plans de construction pour observatoires mobiles", "description_it": "Blueprints for Mobile Observatories", "description_ja": "移動式観測所の設計図", "description_ko": "이동식 관측소 블루프린트", "description_ru": "Чертежи для полевых обсерваторий", "description_zh": "移动观测站的蓝图", "descriptionID": 580892, "hasTypes": 1, "iconID": 2703, "name_de": "Mobile Observatorien", "name_en-us": "Mobile Observatories", "name_es": "Observatorios móviles", "name_fr": "Observatoires mobiles", "name_it": "Mobile Observatories", "name_ja": "移動式観測所", "name_ko": "이동식 관측소", "name_ru": "Полевые обсерватории", "name_zh": "移动观测站", "nameID": 580891, "parentGroupID": 406 }, "2783": { "description_de": "Module, die die Effekte von Warpstörsonden und mobilen Warpstörern zunichtemachen.", "description_en-us": "Modules which negate the effects of warp disrupt probes and mobile warp disruptors", "description_es": "Módulos que anulan los efectos de las sondas disruptoras de warp y los disruptores de warp móviles.", "description_fr": "Modules annulant les effets des sondes de perturbation de warp et perturbateurs de warp mobiles", "description_it": "Modules which negate the effects of warp disrupt probes and mobile warp disruptors", "description_ja": "ワープ妨害用プローブと移動式ワープ妨害器の効果を無効化するモジュール", "description_ko": "워프 디스럽션 프로브 및 이동식 워프 디스럽터를 무력화합니다", "description_ru": "Модули, которые нивелируют воздействие мобильных варп-подавителей, а также зондов, генерирующих варп-помехи", "description_zh": "使跃迁干扰探针和机动跃迁扰断器失效的装备", "descriptionID": 581439, "hasTypes": 1, "iconID": 24730, "name_de": "Anti-Unterbrecher", "name_en-us": "Interdiction Nullifiers", "name_es": "Anuladores de interdicción", "name_fr": "Contremesures d'interdiction", "name_it": "Interdiction Nullifiers", "name_ja": "インターディクション無効化", "name_ko": "인터딕션 무효화 장치", "name_ru": "Нейтрализаторы варп-заграждений", "name_zh": "拦截失效装置", "nameID": 581438, "parentGroupID": 132 }, "2790": { "hasTypes": 1, "iconID": 3215, "name_de": "Booster-Slot 15", "name_en-us": "Booster Slot 15", "name_es": "Ranura de potenciador 15", "name_fr": "Emplacement de booster 15", "name_it": "Booster Slot 15", "name_ja": "ブースタースロット15", "name_ko": "부스터 슬롯 15", "name_ru": "Разъём стимуляторов 15", "name_zh": "增效剂槽位 15", "nameID": 584811, "parentGroupID": 977 }, "2791": { "hasTypes": 1, "iconID": 3215, "name_de": "Booster-Slot 16", "name_en-us": "Booster Slot 16", "name_es": "Ranura de potenciador 16", "name_fr": "Emplacement de booster 16", "name_it": "Booster Slot 16", "name_ja": "ブースタースロット16", "name_ko": "부스터 슬롯 16", "name_ru": "Разъём стимуляторов 16", "name_zh": "增效剂槽位 16", "nameID": 584815, "parentGroupID": 977 }, "2792": { "hasTypes": 1, "iconID": 3215, "name_de": "Booster-Slot 17", "name_en-us": "Booster Slot 17", "name_es": "Ranura de potenciador 17", "name_fr": "Emplacement de booster 17", "name_it": "Booster Slot 17", "name_ja": "ブースタースロット17", "name_ko": "부스터 슬롯 17", "name_ru": "Разъём стимуляторов 17", "name_zh": "增效剂槽位 17", "nameID": 584819, "parentGroupID": 977 }, "2795": { "hasTypes": 1, "iconID": 3074, "name_de": "Gaswolken-Extraktoren", "name_en-us": "Gas Cloud Harvesters", "name_es": "Cosechadoras de nubes de gas", "name_fr": "Collecteurs de nuages de gaz", "name_it": "Gas Cloud Harvesters", "name_ja": "ガス雲採掘機", "name_ko": "가스 하베스터", "name_ru": "Сборщики газовых облаков", "name_zh": "气云采集器", "nameID": 587197, "parentGroupID": 1713 }, "2797": { "description_de": "Blaupausen für Analysesignalfeuer", "description_en-us": "Blueprints for Analysis Beacons", "description_es": "Planos de balizas de análisis.", "description_fr": "Plans de construction Balise d'analyse", "description_it": "Blueprints for Analysis Beacons", "description_ja": "解析ビーコンの設計図", "description_ko": "분석 비컨 블루프린트", "description_ru": "Чертежи для маяков анализа", "description_zh": "分析信标的蓝图", "descriptionID": 588177, "hasTypes": 1, "iconID": 2703, "name_de": "Analysesignalfeuer", "name_en-us": "Analysis Beacons", "name_es": "Balizas de análisis", "name_fr": "Balises d'analyse", "name_it": "Analysis Beacons", "name_ja": "解析ビーコン", "name_ko": "분석 비컨", "name_ru": "Маяк анализа", "name_zh": "分析信标", "nameID": 588176, "parentGroupID": 406 }, "2798": { "hasTypes": 1, "iconID": 16, "name_de": "Analysesignalfeuer", "name_en-us": "Analysis Beacons", "name_es": "Balizas de análisis", "name_fr": "Balises d'analyse", "name_it": "Analysis Beacons", "name_ja": "解析ビーコン", "name_ko": "분석 비컨", "name_ru": "Маяк анализа", "name_zh": "分析信标", "nameID": 588178, "parentGroupID": 404 }, "2799": { "description_de": "Daten zu Raubdrohnen", "description_en-us": "Data pertaining to Rogue Drones", "description_es": "Datos relativos a los drones rebeldes.", "description_fr": "Données concernant les drones renégats", "description_it": "Data pertaining to Rogue Drones", "description_ja": "ローグドローンに関するデータ", "description_ko": "로그 드론 관련 데이터", "description_ru": "Данные, относящиеся к восставшим дронам", "description_zh": "与自由无人机相关的数据", "descriptionID": 588317, "hasTypes": 1, "iconID": 21785, "name_de": "Raubdrohnen-Daten", "name_en-us": "Rogue Drone Data", "name_es": "Datos de drones rebeldes", "name_fr": "Données de drone renégat", "name_it": "Rogue Drone Data", "name_ja": "ローグドローンデータ", "name_ko": "로그 드론 데이터", "name_ru": "Данные восставших дронов", "name_zh": "自由无人机数据", "nameID": 588316, "parentGroupID": 19 }, "2801": { "hasTypes": 1, "iconID": 10065, "name_de": "AEGIS-Datenbanken", "name_en-us": "AEGIS Databases", "name_es": "Bases de datos de AEGIS", "name_fr": "Base de données d'AEGIS", "name_it": "AEGIS Databases", "name_ja": "イージスデータベース", "name_ko": "AEGIS 데이터베이스", "name_ru": "Базы данных ЭГИДА", "name_zh": "统合部紧急干预和安全局数据库", "nameID": 589184, "parentGroupID": 19 }, "2804": { "description_de": "Frequenzkristalle, die auf verschiedene Asteroidenerz-Typen zugeschnitten sind", "description_en-us": "Frequency crystals custom-cut for different asteroid ore types", "description_es": "Cristales de frecuencia personalizados para distintos tipos de menas de asteroides.", "description_fr": "Cristaux de fréquence taillés sur mesure pour différents types de minerais d'astéroïdes", "description_it": "Frequency crystals custom-cut for different asteroid ore types", "description_ja": "アステロイド鉱石のタイプに合わせてカスタムカットされたフリーケンシークリスタル。", "description_ko": "소행성 광물 채굴에 사용되는 프리퀀시 크리스탈입니다", "description_ru": "Высокочастотные кристаллы особой резки для разных видов руды с астероидов", "description_zh": "专为采集不同的小行星矿石所定制的频率晶体", "descriptionID": 591666, "hasTypes": 0, "iconID": 24968, "name_de": "Asteroiden-Bergbaukristalle", "name_en-us": "Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal", "name_fr": "Cristaux d'extraction d'astéroïdes", "name_it": "Asteroid Mining Crystals", "name_ja": "アステロイド採掘用クリスタル", "name_ko": "소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для добычи руды с астероидов", "name_zh": "小行星矿石采集晶体", "nameID": 591665, "parentGroupID": 593 }, "2805": { "description_de": "Frequenzkristalle, die auf verschiedene Monderz-Typen zugeschnitten sind", "description_en-us": "Frequency crystals custom-cut for different moon ore types", "description_es": "Cristales de frecuencia personalizados para distintos tipos de menas lunares.", "description_fr": "Cristaux de fréquence taillés sur mesure pour différents types de minerais lunaires", "description_it": "Frequency crystals custom-cut for different moon ore types", "description_ja": "衛星鉱石のタイプに合わせてカスタムカットされたフリーケンシークリスタル。", "description_ko": "워성 광물 채굴에 사용되는 프리퀀시 크리스탈입니다", "description_ru": "Высокочастотные кристаллы особой резки для разных видов руды со спутников", "description_zh": "专为采集不同的矿石所定制的频率晶体", "descriptionID": 591668, "hasTypes": 0, "iconID": 25021, "name_de": "Mond-Bergbaukristalle", "name_en-us": "Moon Mining Crystals", "name_es": "Cristales de minería lunar", "name_fr": "Cristaux d'extraction lunaire", "name_it": "Moon Mining Crystals", "name_ja": "衛星採掘用クリスタル", "name_ko": "위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для добычи руды со спутников", "name_zh": "卫星矿石采集晶体", "nameID": 591667, "parentGroupID": 593 }, "2806": { "hasTypes": 1, "iconID": 2703, "name_de": "Asteroiden-Bergbaukristalle", "name_en-us": "Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal", "name_fr": "Cristaux d'extraction d'astéroïdes", "name_it": "Asteroid Mining Crystals", "name_ja": "アステロイド採掘用クリスタル", "name_ko": "소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для добычи руды с астероидов", "name_zh": "小行星矿石采集晶体", "nameID": 591670, "parentGroupID": 753 }, "2807": { "hasTypes": 1, "iconID": 2703, "name_de": "Mond-Bergbaukristalle", "name_en-us": "Moon Mining Crystals", "name_es": "Cristales de minería lunar", "name_fr": "Cristaux d'extraction lunaire", "name_it": "Moon Mining Crystals", "name_ja": "衛星採掘用クリスタル", "name_ko": "위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для добычи руды со спутников", "name_zh": "卫星矿石采集晶体", "nameID": 591671, "parentGroupID": 753 }, "2814": { "hasTypes": 1, "iconID": 25169, "name_de": "Komprimiertes Gas", "name_en-us": "Compressed Gas", "name_es": "Gas comprimido", "name_fr": "Gaz comprimé", "name_it": "Compressed Gas", "name_ja": "圧縮ガス", "name_ko": "압축된 가스", "name_ru": "Сжатый газ", "name_zh": "高密度气云", "nameID": 594613, "parentGroupID": 1032 }, "2815": { "hasTypes": 1, "iconID": 25152, "name_de": "Kompressoren", "name_en-us": "Compressors", "name_es": "Compresores", "name_fr": "Compresseurs", "name_it": "Compressors", "name_ja": "圧縮装置", "name_ko": "압축기", "name_ru": "Компрессоры", "name_zh": "压缩装置", "nameID": 595064, "parentGroupID": 9 }, "2816": { "hasTypes": 1, "iconID": 2703, "name_de": "Kompressor-Blaupausen", "name_en-us": "Compressor Blueprints", "name_es": "Planos de compresores", "name_fr": "Plans de construction Compresseur", "name_it": "Compressor Blueprints", "name_ja": "圧縮装置設計図", "name_ko": "압축기 블루프린트", "name_ru": "Чертежи компрессора", "name_zh": "压缩装置蓝图", "nameID": 595232, "parentGroupID": 209 }, "2819": { "description_de": "Elektronische Angriffsfregatten, die Kapselpiloten gelegentlich während begrenzter Zeiträume angeboten wurden.", "description_en-us": "Electronic Attack Frigates which have been offered to capsuleers on occasion for limited periods.", "description_es": "Fragatas de ataque electrónico ofrecidas a los capsulistas en ciertas ocasiones durante periodos limitados.", "description_fr": "Frégates d'attaque électronique mises parfois à la disposition des capsuliers pendant une période de temps limitée.", "description_it": "Electronic Attack Frigates which have been offered to capsuleers on occasion for limited periods.", "description_ja": "過去に期間限定でカプセラへ配布された電子攻撃フリゲート", "description_ko": "캡슐리어들에게 제공되었던 한정판 전자전 프리깃입니다.", "description_ru": "Фрегаты электронно-технического дозора, которые предлагались капсулёрам по особому поводу в течение ограниченного времени.", "description_zh": "限时供应的电子攻击护卫舰。", "descriptionID": 596353, "hasTypes": 1, "iconID": 1443, "name_de": "Sonderversion: Elektronische Angriffsfregatten", "name_en-us": "Special Edition Electronic Attack Frigates", "name_es": "Fragatas de ataque electrónico de edición especial", "name_fr": "Frégates d'attaque électronique édition spéciale", "name_it": "Special Edition Electronic Attack Frigates", "name_ja": "特別版電子攻撃フリゲート", "name_ko": "특수 에디션 전자전 프리깃", "name_ru": "Фрегаты электронно-технического дозора особой версии", "name_zh": "特别版电子攻击护卫舰", "nameID": 596354, "parentGroupID": 1612 }, "2820": { "description_de": "Flächenverteidigungsmunition, die von den Verteidigungssystemen einer Struktur abgefeuert wird.", "description_en-us": "Area denial ammunition, fired by structure defense systems.", "description_es": "Munición de negación de área apta para sistemas de defensa de estructuras.", "description_fr": "Munitions d'interdiction de zone, tirées par les systèmes défensifs des structures.", "description_it": "Area denial ammunition, fired by structure defense systems.", "description_ja": "領域拒否弾薬。ストラクチャの防衛システムによって発射される。", "description_ko": "반접근 탄약. 구조물 방어 시스템을 통해 발사할 수 있습니다.", "description_ru": "Боеприпасы, использующиеся в системах обороны сооружений.", "description_zh": "专供建筑防御系统使用的区域拒止弹药。", "descriptionID": 597624, "hasTypes": 1, "iconID": 1004, "name_de": "Struktur: Flächenverteidigungsmunition", "name_en-us": "Structure Area Denial Ammunition", "name_es": "Munición de negación de área de estructura", "name_fr": "Munition d'interdiction de zone de structure", "name_it": "Structure Area Denial Ammunition", "name_ja": "ストラクチャ領域拒否弾薬", "name_ko": "구조물 반접근 탄약", "name_ru": "Боеприпасы для систем обороны сооружений", "name_zh": "建筑区域拒止弹药", "nameID": 597625, "parentGroupID": 11 }, "2821": { "description_de": "Blaupausen für Flächenverteidigungsmunition.", "description_en-us": "Blueprints of area denial ammunition.", "description_es": "Planos de munición de negación de área.", "description_fr": "Plans de construction de munitions d'interdiction de zone.", "description_it": "Blueprints of area denial ammunition.", "description_ja": "領域拒否弾薬設計図", "description_ko": "반접근 탄약 블루프린트.", "description_ru": "Чертежи боеприпасов для систем обороны.", "description_zh": "区域拒止弹药的蓝图。", "descriptionID": 597628, "hasTypes": 1, "iconID": 2703, "name_de": "Struktur: Flächenverteidigungsmunition", "name_en-us": "Structure Area Denial Ammunition", "name_es": "Munición de negación de área de estructura", "name_fr": "Munition d'interdiction de zone de structure", "name_it": "Structure Area Denial Ammunition", "name_ja": "ストラクチャ領域拒否弾薬", "name_ko": "구조물 반접근 탄약", "name_ru": "Боеприпасы для систем обороны сооружений", "name_zh": "建筑区域拒止弹药", "nameID": 597629, "parentGroupID": 211 }, "3450": { "hasTypes": 1, "iconID": 16, "name_de": "Mobile strategische Ziele", "name_en-us": "Mobile Strategic Objectives", "name_es": "Objetivos estratégicos móviles", "name_fr": "Mobile Strategic Objectives", "name_it": "Mobile Strategic Objectives", "name_ja": "移動式戦略施設", "name_ko": "이동형 전략 목표물", "name_ru": "Подвижные стратегические цели", "name_zh": "移动式战略物品", "nameID": 636347, "parentGroupID": 404 }, "3451": { "description_de": "Blaupausen für mobile Ziele", "description_en-us": "Blueprints for Mobile Objectives", "description_es": "Planos de objetivos móviles", "description_fr": "Plans de construction Objectifs mobiles", "description_it": "Blueprints for Mobile Objectives", "description_ja": "移動式施設の設計図", "description_ko": "이동형 목표물 블루프린트", "description_ru": "Чертежи для подвижных целей", "description_zh": "移动式物体的蓝图", "descriptionID": 636354, "hasTypes": 0, "iconID": 2703, "name_de": "Mobile strategische Ziele", "name_en-us": "Mobile Strategic Objectives", "name_es": "Objetivos estratégicos móviles", "name_fr": "Mobile Strategic Objectives", "name_it": "Mobile Strategic Objectives", "name_ja": "移動式戦略施設", "name_ko": "이동형 전략 목표물", "name_ru": "Подвижные стратегические цели", "name_zh": "移动式战略物品", "nameID": 636353, "parentGroupID": 406 }, "3453": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые для создания особого оборудования держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 636416, "hasTypes": 1, "iconID": 1436, "name_de": "Imperium der Amarr", "name_en-us": "Amarr Empire", "name_es": "Imperio Amarr", "name_fr": "Empire amarr", "name_it": "Amarr Empire", "name_ja": "アマー帝国", "name_ko": "아마르 제국", "name_ru": "Амаррская Империя", "name_zh": "艾玛帝国", "nameID": 636415, "parentGroupID": 1897 }, "3454": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые для создания особого оборудования держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 636418, "hasTypes": 1, "iconID": 1436, "name_de": "Republik Minmatar", "name_en-us": "Minmatar Republic", "name_es": "República Minmatar", "name_fr": "République minmatar", "name_it": "Minmatar Republic", "name_ja": "ミンマター共和国", "name_ko": "민마타 공화국", "name_ru": "Республика Минматар", "name_zh": "米玛塔尔共和国", "nameID": 636417, "parentGroupID": 1897 }, "3455": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые для создания особого оборудования держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 636420, "hasTypes": 1, "iconID": 1436, "name_de": "Staat der Caldari", "name_en-us": "Caldari State", "name_es": "Estado Caldari", "name_fr": "État caldari", "name_it": "Caldari State", "name_ja": "カルダリ連合", "name_ko": "칼다리 연합", "name_ru": "Государство Калдари", "name_zh": "加达里合众国", "nameID": 636419, "parentGroupID": 1897 }, "3456": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы, используемые для создания особого оборудования держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 636422, "hasTypes": 1, "iconID": 1436, "name_de": "Föderation der Gallente", "name_en-us": "Gallente Federation", "name_es": "Federación Gallente", "name_fr": "Fédération gallente", "name_it": "Gallente Federation", "name_ja": "ガレンテ連邦", "name_ko": "갈란테 연방", "name_ru": "Галлентская Федерация", "name_zh": "盖伦特联邦", "nameID": 636421, "parentGroupID": 1897 }, "3478": { "hasTypes": 1, "iconID": 24411, "name_de": "Masken", "name_en-us": "Masks", "name_es": "Máscaras", "name_fr": "Masques", "name_it": "Masks", "name_ja": "マスク", "name_ko": "마스크", "name_ru": "Маски", "name_zh": "面具", "nameID": 638794, "parentGroupID": 1407 }, "3480": { "description_de": "Von bestimmten Fraktionen entworfene Zerstörer.", "description_en-us": "Destroyers designed by specific factions.", "description_es": "Destructores diseñados por facciones específicas.", "description_fr": "Destroyers designed by specific factions.", "description_it": "Destroyers designed by specific factions.", "description_ja": "特定勢力が設計した駆逐艦。", "description_ko": "특정 팩션 전용 디스트로이어입니다.", "description_ru": "Эсминцы производства той или иной державы.", "description_zh": "各大势力设计的驱逐舰。", "descriptionID": 639179, "hasTypes": 0, "iconID": 1443, "name_de": "Fraktionszerstörer", "name_en-us": "Faction Destroyers", "name_es": "Destructores de facción", "name_fr": "Faction Destroyers", "name_it": "Faction Destroyers", "name_ja": "勢力別駆逐艦", "name_ko": "팩션 디스트로이어", "name_ru": "Эсминцы держав", "name_zh": "势力驱逐舰", "nameID": 639178, "parentGroupID": 1372 }, "3481": { "description_de": "Navyfraktion-Zerstörer-Designs.", "description_en-us": "Navy faction destroyer designs.", "description_es": "Diseños de destructor faccionarios de la Armada.", "description_fr": "Navy faction destroyer designs.", "description_it": "Navy faction destroyer designs.", "description_ja": "海軍勢力の駆逐艦。", "description_ko": "해군 팩션의 디스트로이어입니다.", "description_ru": "Эсминцы флотов ведущих держав.", "description_zh": "海军势力驱逐舰。", "descriptionID": 639181, "hasTypes": 0, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Navy Faction", "name_it": "Navy Faction", "name_ja": "海軍勢力", "name_ko": "해군 팩션", "name_ru": "Государственный флот", "name_zh": "海军势力", "nameID": 639180, "parentGroupID": 3480 }, "3483": { "description_de": "Dreadnought-Designs anderer Fraktionen.", "description_en-us": "Non-Empire faction dreadnought designs.", "description_es": "Diseños de superacorazado de facciones que no pertenecen a ningún imperio.", "description_fr": "Non-Empire faction dreadnought designs.", "description_it": "Non-Empire faction dreadnought designs.", "description_ja": "非国家勢力の攻城艦。", "description_ko": "비국가 소속 팩션의 드레드노트입니다.", "description_ru": "Дредноуты производства иных сообществ и организаций.", "description_zh": "非帝国势力无畏舰。", "descriptionID": 639186, "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Pirate Faction", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратская организация", "name_zh": "海盗势力", "nameID": 639185, "parentGroupID": 2288 }, "3484": { "description_de": "Navyfraktion-Dreadnought-Designs.", "description_en-us": "Navy faction dreadnought designs.", "description_es": "Diseños de superacorazado faccionario de la Armada.", "description_fr": "Navy faction dreadnought designs.", "description_it": "Navy faction dreadnought designs.", "description_ja": "海軍勢力の攻城艦。", "description_ko": "해군 팩션 드레드노트입니다.", "description_ru": "Дредноуты флотов ведущих держав.", "description_zh": "海军势力无畏舰。", "descriptionID": 639192, "hasTypes": 1, "iconID": 1443, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Navy Faction", "name_it": "Navy Faction", "name_ja": "海軍勢力", "name_ko": "해군 팩션", "name_ru": "Государственный флот", "name_zh": "海军势力", "nameID": 639191, "parentGroupID": 2288 }, "3487": { "hasTypes": 1, "iconID": 15, "name_de": "Mordunium", "name_en-us": "Mordunium", "name_es": "Mordunium", "name_fr": "Mordunium", "name_it": "Mordunium", "name_ja": "モードゥニウム", "name_ko": "모르두늄", "name_ru": "Mordunium", "name_zh": "莫德合金", "nameID": 640808, "parentGroupID": 54 }, "3488": { "hasTypes": 1, "iconID": 15, "name_de": "Ytirium", "name_en-us": "Ytirium", "name_es": "Ytirium", "name_fr": "Ytirium", "name_it": "Ytirium", "name_ja": "イティリウム", "name_ko": "이티륨", "name_ru": "Ютирий", "name_zh": "耶利合金", "nameID": 640809, "parentGroupID": 54 }, "3489": { "hasTypes": 1, "iconID": 15, "name_de": "Eifyrium", "name_en-us": "Eifyrium", "name_es": "Eifyrium", "name_fr": "Eifyrium", "name_it": "Eifyrium", "name_ja": "エイフィリウム", "name_ko": "에이피륨", "name_ru": "Эйфирий", "name_zh": "埃菲尔合金", "nameID": 640810, "parentGroupID": 54 }, "3490": { "hasTypes": 1, "iconID": 15, "name_de": "Ducinium", "name_en-us": "Ducinium", "name_es": "Ducinium", "name_fr": "Ducinium", "name_it": "Ducinium", "name_ja": "ドゥシニウム", "name_ko": "두시늄", "name_ru": "Дачиний", "name_zh": "杜厦合金", "nameID": 640811, "parentGroupID": 54 }, "3495": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍勢力", "name_ko": "해군 팩션", "name_ru": "Государственный флот", "name_zh": "海军势力", "nameID": 646076, "parentGroupID": 2378 }, "3496": { "hasTypes": 0, "iconID": 21420, "name_de": "Fraktionszerstörer", "name_en-us": "Faction Destroyers", "name_es": "Destructores de facción", "name_fr": "Destroyers de faction", "name_it": "Faction Destroyers", "name_ja": "勢力別駆逐艦", "name_ko": "팩션 디스트로이어", "name_ru": "Эсминцы держав", "name_zh": "势力驱逐舰", "nameID": 646079, "parentGroupID": 1989 }, "3497": { "hasTypes": 1, "iconID": 21420, "name_de": "Navyfraktion", "name_en-us": "Navy Faction", "name_es": "Facción de la Armada", "name_fr": "Faction navy", "name_it": "Navy Faction", "name_ja": "海軍勢力", "name_ko": "해군 팩션", "name_ru": "Государственный флот", "name_zh": "海军势力", "nameID": 646080, "parentGroupID": 3496 }, "3508": { "description_de": "Precursor-Dreadnoughts", "description_en-us": "Precursor Dreadnoughts", "description_es": "Superacorazados precursores", "description_fr": "Supercuirassés de précursion", "description_it": "Precursor Dreadnoughts", "description_ja": "プリカーサー攻城艦", "description_ko": "프리커서 드레드노트", "description_ru": "Дредноуты Предтечей", "description_zh": "先驱者无畏舰", "descriptionID": 662633, "hasTypes": 0, "iconID": 1443, "name_de": "Precursor-Dreadnoughts", "name_en-us": "Precursor Dreadnoughts", "name_es": "Superacorazados precursores", "name_fr": "Supercuirassés de précursion", "name_it": "Precursor Dreadnoughts", "name_ja": "プリカーサー攻城艦", "name_ko": "프리커서 드레드노트", "name_ru": "Дредноуты Предтечей", "name_zh": "先驱者无畏舰", "nameID": 662632, "parentGroupID": 761 }, "3509": { "description_de": "Tech-1-Dreadnoughts", "description_en-us": "Tech 1 Dreadnoughts", "description_es": "Superacorazados T1", "description_fr": "Supercuirassés Tech I", "description_it": "Tech 1 Dreadnoughts", "description_ja": "T1攻城艦", "description_ko": "테크 I 드레드노트", "description_ru": "Дредноуты 1-го техноуровня", "description_zh": "一级科技无畏舰", "descriptionID": 662639, "hasTypes": 0, "iconID": 1443, "name_de": "Standard-Dreadnoughts", "name_en-us": "Standard Dreadnoughts", "name_es": "Superacorazados estándar", "name_fr": "Supercuirassés standards", "name_it": "Standard Dreadnoughts", "name_ja": "標準型攻城艦", "name_ko": "일반 드레드노트", "name_ru": "Стандартные дредноуты", "name_zh": "标准无畏舰", "nameID": 662638, "parentGroupID": 761 }, "3510": { "description_de": "Spezialisierte Tech-2-Dreadnoughts", "description_en-us": "Specialized Tech 2 Dreadnoughts", "description_es": "Superacorazados T2 especializados", "description_fr": "Supercuirassés spécialisés Tech II", "description_it": "Specialized Tech 2 Dreadnoughts", "description_ja": "特化型T2攻城艦", "description_ko": "특수 테크 II 드레드노트", "description_ru": "Специализированные дредноуты 2-го техноуровня", "description_zh": "二级科技特化无畏舰", "descriptionID": 662641, "hasTypes": 0, "iconID": 1443, "name_de": "Fortschrittliche Dreadnoughts", "name_en-us": "Advanced Dreadnoughts", "name_es": "Superacorazados avanzados", "name_fr": "Supercuirassés avancés", "name_it": "Advanced Dreadnoughts", "name_ja": "高性能攻城艦", "name_ko": "상급 드레드노트", "name_ru": "Улучшенные дредноуты", "name_zh": "高级无畏舰", "nameID": 662640, "parentGroupID": 761 }, "3511": { "description_de": "Spezialisierte Dreadnoughts, die in der Lage sind, Störlanzen-Superwaffen einzusetzen", "description_en-us": "Specialized Dreadnoughts capable of operating disruptive lance superweapons", "description_es": "Superacorazados especializados capaces de manejar superarmas de lanza disruptora.", "description_fr": "Supercuirassés spécialisés capables d'utiliser les super-armes que sont les lances disruptives", "description_it": "Specialized Dreadnoughts capable of operating disruptive lance superweapons", "description_ja": "特化型攻城艦は超兵器である妨害ランスを運用することができる。", "description_ko": "디스럽티브 랜스를 운용할 수 있는 특수 드레드노트", "description_ru": "Специализированные дредноуты, которые можно оснастить сверхмощными копьелучевыми установками", "description_zh": "特化无畏舰能够操纵超级武器干扰长枪", "descriptionID": 662643, "hasTypes": 0, "iconID": 1443, "name_de": "Lancer Dreadnoughts", "name_en-us": "Lancer Dreadnoughts", "name_es": "Superacorazados lancer", "name_fr": "Supercuirassés lanciers", "name_it": "Lancer Dreadnoughts", "name_ja": "ランサー攻城艦", "name_ko": "랜서 드레드노트", "name_ru": "Lancer Dreadnoughts", "name_zh": "枪骑兵级无畏舰", "nameID": 662642, "parentGroupID": 3510 }, "3512": { "description_de": "Amarr-Lancer-Dreadnoughts", "description_en-us": "Amarr Lancer Dreadnoughts", "description_es": "Superacorazados lancer amarrianos", "description_fr": "Supercuirassés lanciers amarr", "description_it": "Amarr Lancer Dreadnoughts", "description_ja": "アマーのランサー攻城艦", "description_ko": "아마르 랜서 드레드노트", "description_ru": "Амаррские дредноуты-лансеры", "description_zh": "艾玛枪骑兵级无畏舰", "descriptionID": 662645, "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 662644, "parentGroupID": 3511 }, "3513": { "description_de": "Caldari-Lancer-Dreadnoughts", "description_en-us": "Caldari Lancer Dreadnoughts", "description_es": "Superacorazados lancer caldaris", "description_fr": "Supercuirassés lanciers caldari", "description_it": "Caldari Lancer Dreadnoughts", "description_ja": "カルダリのランサー攻城艦", "description_ko": "칼다리 랜서 드레드노트", "description_ru": "Калдарские дредноуты-лансеры", "description_zh": "加达里枪骑兵级无畏舰", "descriptionID": 662651, "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 662650, "parentGroupID": 3511 }, "3514": { "description_de": "Minmatar-Lancer-Dreadnoughts", "description_en-us": "Minmatar Lancer Dreadnoughts", "description_es": "Superacorazados lancer minmatarianos", "description_fr": "Supercuirassés lanciers minmatar", "description_it": "Minmatar Lancer Dreadnoughts", "description_ja": "ミンマターのランサー攻城艦", "description_ko": "민마타 랜서 드레드노트", "description_ru": "Минматарские дредноуты-лансеры", "description_zh": "米玛塔尔枪骑兵级无畏舰", "descriptionID": 662649, "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматарские", "name_zh": "米玛塔尔", "nameID": 662648, "parentGroupID": 3511 }, "3515": { "description_de": "Gallente-Lancer-Dreadnoughts", "description_en-us": "Gallente Lancer Dreadnoughts", "description_es": "Superacorazados lancer gallentes", "description_fr": "Supercuirassés lanciers gallente", "description_it": "Gallente Lancer Dreadnoughts", "description_ja": "ガレンテのランサー攻城艦", "description_ko": "갈란테 랜서 드레드노트", "description_ru": "Галлентские дредноуты-лансеры", "description_zh": "盖伦特枪骑兵级无畏舰", "descriptionID": 662647, "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 662646, "parentGroupID": 3511 }, "3519": { "hasTypes": 0, "iconID": 21420, "name_de": "Fortschrittliche Dreadnoughts", "name_en-us": "Advanced Dreadnoughts", "name_es": "Superacorazados avanzados", "name_fr": "Supercuirassés avancés", "name_it": "Advanced Dreadnoughts", "name_ja": "高性能攻城艦", "name_ko": "상급 드레드노트", "name_ru": "Улучшенные дредноуты", "name_zh": "高级无畏舰", "nameID": 663107, "parentGroupID": 1971 }, "3520": { "hasTypes": 0, "iconID": 21420, "name_de": "Lancer Dreadnoughts", "name_en-us": "Lancer Dreadnoughts", "name_es": "Superacorazados lancer", "name_fr": "Supercuirassés lanciers", "name_it": "Lancer Dreadnoughts", "name_ja": "ランサー攻城艦", "name_ko": "랜서 드레드노트", "name_ru": "Lancer Dreadnoughts", "name_zh": "枪骑兵级无畏舰", "nameID": 663108, "parentGroupID": 3519 }, "3521": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 663109, "parentGroupID": 3520 }, "3523": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматар", "name_zh": "米玛塔尔", "nameID": 663285, "parentGroupID": 3520 }, "3531": { "description_de": "Piratenfraktion-Zerstörer-Designs.", "description_en-us": "Pirate faction destroyer designs.", "description_es": "Diseños de destructor faccionario pirata.", "description_fr": "Modèles de destroyers de faction pirate.", "description_it": "Pirate faction destroyer designs.", "description_ja": "海賊勢力の駆逐艦の設計図。", "description_ko": "해적 팩션의 디스트로이어입니다.", "description_ru": "Эсминцы пиратских организаций.", "description_zh": "海盗势力驱逐舰设计。", "descriptionID": 664856, "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратская организация", "name_zh": "海盗势力", "nameID": 664855, "parentGroupID": 3480 }, "3534": { "hasTypes": 1, "iconID": 1443, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратская организация", "name_zh": "海盗势力", "nameID": 664931, "parentGroupID": 1703 }, "3535": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 665110, "parentGroupID": 3520 }, "3536": { "description_de": "EDENCOM-Fregattendesigns.", "description_en-us": "EDENCOM frigate designs.", "description_es": "Diseños de fragatas de EDENCOM.", "description_fr": "Modèles de frégates EDENCOM.", "description_it": "EDENCOM frigate designs.", "description_ja": "EDENCOMのフリゲートの設計図。", "description_ko": "EDENCOM의 프리깃입니다.", "description_ru": "Фрегаты ЭДЕНКОМа.", "description_zh": "伊甸联合防御阵线护卫舰设计。", "descriptionID": 666339, "hasTypes": 1, "iconID": 24419, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666334, "parentGroupID": 1362 }, "3537": { "description_de": "EDENCOM-Kreuzerdesigns.", "description_en-us": "EDENCOM cruiser designs.", "description_es": "Diseños de cruceros de EDENCOM.", "description_fr": "Modèles de croiseurs EDENCOM.", "description_it": "EDENCOM cruiser designs.", "description_ja": "EDENCOMの巡洋艦の設計図。", "description_ko": "EDENCOM의 크루저입니다.", "description_ru": "Крейсеры ЭДЕНКОМа.", "description_zh": "伊甸联合防御阵线巡洋舰设计。", "descriptionID": 666337, "hasTypes": 1, "iconID": 24419, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666335, "parentGroupID": 1369 }, "3538": { "description_de": "EDENCOM-Schlachtschiff-Designs.", "description_en-us": "EDENCOM battleship designs.", "description_es": "Diseños de acorazados de EDENCOM.", "description_fr": "Modèles de cuirassés EDENCOM.", "description_it": "EDENCOM battleship designs.", "description_ja": "EDENCOMの戦艦の設計図。", "description_ko": "EDENCOM의 배틀쉽입니다.", "description_ru": "Линкоры ЭДЕНКОМа.", "description_zh": "伊甸联合防御阵线战列舰设计。", "descriptionID": 666338, "hasTypes": 1, "iconID": 24419, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666336, "parentGroupID": 1378 }, "3539": { "hasTypes": 1, "iconID": 21420, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666340, "parentGroupID": 1961 }, "3540": { "hasTypes": 1, "iconID": 21420, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666341, "parentGroupID": 2029 }, "3541": { "hasTypes": 1, "iconID": 21420, "name_de": "EDENCOM", "name_en-us": "EDENCOM", "name_es": "EDENCOM", "name_fr": "EDENCOM", "name_it": "EDENCOM", "name_ja": "EDENCOM", "name_ko": "EDENCOM", "name_ru": "ЭДЕНКОМ", "name_zh": "伊甸联合防御阵线", "nameID": 666342, "parentGroupID": 1999 }, "3542": { "hasTypes": 1, "name_de": "Mutaplasmide-Vorton-Tuning-System", "name_en-us": "Vorton Tuning System Mutaplasmids", "name_es": "Mutaplásmido de sistema de ajuste vortónico", "name_fr": "Mutaplasmides de système de réglage de vortons", "name_it": "Vorton Tuning System Mutaplasmids", "name_ja": "ヴォートン・チューニングシステム用変異プラスミド", "name_ko": "보르톤 조정 시스템 뮤타플라즈미드", "name_ru": "Мутаплазмиды для модулей настройки вортонов", "name_zh": "电弧弦调谐系统突变质体", "nameID": 666375, "parentGroupID": 2512 }, "3546": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 666925, "parentGroupID": 3520 }, "3548": { "hasTypes": 0, "iconID": 21420, "name_de": "Sonderfregatten", "name_en-us": "Special Frigates", "name_es": "Fragatas especiales", "name_fr": "Frégates spéciales", "name_it": "Special Frigates", "name_ja": "特別仕様フリゲート", "name_ko": "특수 프리깃", "name_ru": "Особые фрегаты", "name_zh": "特殊护卫舰", "nameID": 681124, "parentGroupID": 1998 }, "3549": { "hasTypes": 1, "iconID": 21420, "name_de": "Sonderfregatten", "name_en-us": "Special Frigates", "name_es": "Fragatas especiales", "name_fr": "Frégates spéciales", "name_it": "Special Frigates", "name_ja": "特別仕様フリゲート", "name_ko": "특수 프리깃", "name_ru": "Особые фрегаты", "name_zh": "特殊护卫舰", "nameID": 681138, "parentGroupID": 3548 }, "3567": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратская организация", "name_zh": "海盗势力", "nameID": 697888, "parentGroupID": 2100 }, "3568": { "hasTypes": 1, "iconID": 21420, "name_de": "Piratenfraktion", "name_en-us": "Pirate Faction", "name_es": "Facción pirata", "name_fr": "Faction pirate", "name_it": "Pirate Faction", "name_ja": "海賊勢力", "name_ko": "해적 팩션", "name_ru": "Пиратская организация", "name_zh": "海盗势力", "nameID": 697889, "parentGroupID": 3496 }, "3577": { "description_de": "Industrielle Designs des Upwell Consortium.", "description_en-us": "Upwell Consortium industrial designs.", "description_es": "Diseños industriales del Consorcio Upwell.", "description_fr": "Modèles industriels de l'Upwell Consortium.", "description_it": "Upwell Consortium industrial designs.", "description_ja": "アップウェル・コンソーシアムの輸送艦の設計図。", "description_ko": "업웰 컨소시엄 산업선입니다.", "description_ru": "Грузовые корабли консорциума «Апвелл».", "description_zh": "Upwell Consortium industrial designs.", "descriptionID": 709086, "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709085, "parentGroupID": 8 }, "3578": { "description_de": "Industrielle Designs des Upwell Consortium.", "description_en-us": "Upwell Consortium industrial designs.", "description_es": "Diseños industriales del Consorcio Upwell.", "description_fr": "Modèles industriels de l'Upwell Consortium.", "description_it": "Upwell Consortium industrial designs.", "description_ja": "アップウェル・コンソーシアムの輸送艦の設計図。", "description_ko": "업웰 컨소시엄 산업선입니다.", "description_ru": "Грузовые корабли консорциума «Апвелл».", "description_zh": "Upwell Consortium industrial designs.", "descriptionID": 709088, "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709087, "parentGroupID": 629 }, "3579": { "description_de": "Blaupausen der Transporter-Designs des Upwell Consortium.", "description_en-us": "Blueprints of Upwell Consortium hauler designs.", "description_es": "Planos de diseños de naves de mercancías del Consorcio Upwell.", "description_fr": "Plans de construction de modèles de transports de l'Upwell Consortium.", "description_it": "Blueprints of Upwell Consortium hauler designs.", "description_ja": "アップウェル・コンソーシアムのハウラーの設計図。", "description_ko": "업웰 컨소시엄 운반선의 블루프린트입니다.", "description_ru": "Чертежи для перевозчиков консорциума «Апвелл».", "description_zh": "Blueprints of Upwell Consortium hauler designs.", "descriptionID": 709091, "hasTypes": 1, "iconID": 2703, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709090, "parentGroupID": 208 }, "3580": { "description_de": "Upwell-Frachter-Designs.", "description_en-us": "Upwell freighter designs.", "description_es": "Diseños de cargueros Upwell.", "description_fr": "Modèles de cargos Upwell.", "description_it": "Upwell freighter designs.", "description_ja": "アップウェルの超大型輸送艦の設計図。", "description_ko": "업웰 프레이터 함선입니다.", "description_ru": "Фрейтеры «Апвелл».", "description_zh": "Upwell freighter designs.", "descriptionID": 709120, "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709119, "parentGroupID": 766 }, "3591": { "description_de": "Designs für Upwell-Frachter.", "description_en-us": "Designs for Upwell freighters.", "description_es": "Diseños de los cargueros de Upwell.", "description_fr": "Modèles de cargos Upwell.", "description_it": "Designs for Upwell freighters.", "description_ja": "アップウェルの超大型輸送艦の設計図。", "description_ko": "업웰 프레이터 함선입니다.", "description_ru": "Для фрейтеров «Апвелл».", "description_zh": "Designs for Upwell freighters.", "descriptionID": 709174, "hasTypes": 1, "iconID": 2703, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709173, "parentGroupID": 787 }, "3593": { "description_de": "Upwell", "description_en-us": "Upwell", "description_es": "Upwell", "description_fr": "Upwell", "description_it": "Upwell", "description_ja": "アップウェル", "description_ko": "업웰", "description_ru": "Апвелл", "description_zh": "Upwell", "descriptionID": 709213, "hasTypes": 1, "iconID": 2703, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709212, "parentGroupID": 1591 }, "3594": { "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 709214, "parentGroupID": 65 }, "3596": { "description_de": "Kolonialreagenzien, die von Planeten über den orbitalen Skyhook extrahiert wurden.", "description_en-us": "Colony reagents extracted from planets via Orbital Skyhook.", "description_es": "Reactivos de la colonia extraídos de planetas a través del gancho orbital.", "description_fr": "Réactifs de colonie extraits des planètes par un grappin orbital.", "description_it": "Colony reagents extracted from planets via Orbital Skyhook.", "description_ja": "軌道スカイフックを通じて惑星から取り出されたコロニーの反応試剤。", "description_ko": "궤도 스카이훅으로 추출한 콜로니 촉매입니다.", "description_ru": "Реагенты, которые орбитальные подъёмники извлекают с планет.", "description_zh": "使用轨道天钩从行星中提取的殖民地试剂。", "descriptionID": 709446, "hasTypes": 1, "iconID": 24296, "name_de": "Kolonialreagenzien", "name_en-us": "Colony Reagents", "name_es": "Reactivos de colonia", "name_fr": "Réactifs de colonie", "name_it": "Colony Reagents", "name_ja": "コロニーの反応試剤", "name_ko": "콜로니 촉매", "name_ru": "Реагенты колоний", "name_zh": "殖民地试剂", "nameID": 709445, "parentGroupID": 533 }, "3624": { "hasTypes": 0, "iconID": 2222, "name_de": "FLEX-Strukturen:", "name_en-us": "FLEX Structures", "name_es": "Estructuras FLEX", "name_fr": "Structures FLEX", "name_it": "FLEX Structures", "name_ja": "FLEXストラクチャ", "name_ko": "FLEX 구조물", "name_ru": "Сооружения БЛОК", "name_zh": "快速部署建筑", "nameID": 711241, "parentGroupID": 477 }, "3625": { "hasTypes": 1, "iconID": 2222, "name_de": "Bergbau-Strukturen", "name_en-us": "Mining Structures", "name_es": "Estructuras de minería", "name_fr": "Structures d'extraction minière", "name_it": "Mining Structures", "name_ja": "採掘ストラクチャ", "name_ko": "채굴 구조물", "name_ru": "Буровые сооружения", "name_zh": "采矿建筑", "nameID": 711243, "parentGroupID": 3624 }, "3626": { "hasTypes": 0, "iconID": 2703, "name_de": "FLEX-Strukturen:", "name_en-us": "FLEX Structures", "name_es": "Estructuras FLEX", "name_fr": "Structures FLEX", "name_it": "FLEX Structures", "name_ja": "FLEXストラクチャ", "name_ko": "FLEX 구조물", "name_ru": "Сооружения БЛОК", "name_zh": "快速部署建筑", "nameID": 711244, "parentGroupID": 1338 }, "3627": { "hasTypes": 1, "iconID": 2703, "name_de": "Bergbau-Strukturen", "name_en-us": "Mining Structures", "name_es": "Estructuras de minería", "name_fr": "Structures d'extraction minière", "name_it": "Mining Structures", "name_ja": "採掘ストラクチャ", "name_ko": "채굴 구조물", "name_ru": "Буровые сооружения", "name_zh": "采矿建筑", "nameID": 711245, "parentGroupID": 3626 }, "3628": { "description_de": "Gegenstände, die zur Anpassung verwendet werden", "description_en-us": "Items used for Personalization", "description_es": "Objetos usados para la personalización", "description_fr": "Objets utilisés pour la personnalisation", "description_it": "Items used for Personalization", "description_ja": "カスタマイズに使用されるアイテム", "description_ko": "개인화에 사용되는 아이템", "description_ru": "Предметы для персонализации", "description_zh": "用于个性化定制的物品", "descriptionID": 711750, "hasTypes": 0, "iconID": 26056, "name_de": "Anpassung", "name_en-us": "Personalization", "name_es": "Personalización", "name_fr": "Personnalisation", "name_it": "Personalization", "name_ja": "カスタマイズ", "name_ko": "개인화", "name_ru": "Персонализация", "name_zh": "个性化", "nameID": 711749 }, "3629": { "hasTypes": 1, "iconID": 26055, "name_de": "Sequenzierungsbinder", "name_en-us": "Sequencing Binders", "name_es": "Carpetas de secuenciación", "name_fr": "Fixateurs de séquençage", "name_it": "Sequencing Binders", "name_ja": "シーケンシングバインダー", "name_ko": "각인기", "name_ru": "Фиксаторы для окрасок", "name_zh": "序列绑定器", "nameID": 711751, "parentGroupID": 3628 }, "3630": { "hasTypes": 0, "iconID": 26056, "name_de": "Designelemente", "name_en-us": "Design Elements", "name_es": "Elementos de diseño", "name_fr": "Éléments de design", "name_it": "Design Elements", "name_ja": "デザイン要素", "name_ko": "디자인 요소", "name_ru": "Декоративные элементы", "name_zh": "设计元素", "nameID": 711752, "parentGroupID": 3628 }, "3631": { "hasTypes": 0, "iconID": 26053, "name_de": "Grundlegende Nanobeschichtungen", "name_en-us": "Basic Nanocoatings", "name_es": "Nanorrevestimientos básicos", "name_fr": "Nanorevêtements basiques", "name_it": "Basic Nanocoatings", "name_ja": "ベーシックナノコーティング", "name_ko": "기본 나노코팅", "name_ru": "Базовые нанопокрытия", "name_zh": "基础纳米涂层", "nameID": 711753, "parentGroupID": 3630 }, "3632": { "hasTypes": 1, "iconID": 26052, "name_de": "Metallische Nanobeschichtungen", "name_en-us": "Metallic Nanocoatings", "name_es": "Nanorrevestimientos metálicos", "name_fr": "Nanorevêtements métalliques", "name_it": "Metallic Nanocoatings", "name_ja": "メタリックナノコーティング", "name_ko": "금속성 나노코팅", "name_ru": "Металлические нанопокрытия", "name_zh": "金属纳米涂层", "nameID": 711754, "parentGroupID": 3630 }, "3633": { "hasTypes": 1, "iconID": 26054, "name_de": "Muster", "name_en-us": "Patterns", "name_es": "Patrones", "name_fr": "Motifs", "name_it": "Patterns", "name_ja": "パターン", "name_ko": "패턴", "name_ru": "Узоры", "name_zh": "图案", "nameID": 711755, "parentGroupID": 3630 }, "3636": { "description_de": "Unterarten des Kylixium-Erzes", "description_en-us": "Sub-types of Kylixium ore", "description_es": "Subtipos de la mena kylixium.", "description_fr": "Des sous-types de minerai de Kylixium", "description_it": "Sub-types of Kylixium ore", "description_ja": "キリクシウム鉱石の亜種。", "description_ko": "다양한 부류의 카일릭슘 광석입니다.", "description_ru": "Разновидности килиция.", "description_zh": "克里石的分支", "descriptionID": 712220, "hasTypes": 1, "iconID": 1377, "name_de": "Kylixium", "name_en-us": "Kylixium", "name_es": "Kylixium", "name_fr": "Kylixium", "name_it": "Kylixium", "name_ja": "キリクシウム", "name_ko": "카일릭슘", "name_ru": "Kylixium", "name_zh": "克里石", "nameID": 712219, "parentGroupID": 54 }, "3637": { "description_de": "Unterarten des Nocxite-Erzes.", "description_en-us": "Sub-types of Nocxite ore.", "description_es": "Subtipos de la mena nocxita.", "description_fr": "Sous-types de minerai de Nocxite.", "description_it": "Sub-types of Nocxite ore.", "description_ja": "ノキサイト鉱石の亜種。", "description_ko": "다양한 부류의 녹사이트 광석입니다.", "description_ru": "Разновидности нокцита.", "description_zh": "诺克希特的分支。", "descriptionID": 712222, "hasTypes": 1, "iconID": 1269, "name_de": "Nocxite", "name_en-us": "Nocxite", "name_es": "Nocxita", "name_fr": "Nocxite", "name_it": "Nocxite", "name_ja": "ノキサイト", "name_ko": "녹사이트", "name_ru": "Нокцит", "name_zh": "诺克希特", "nameID": 712221, "parentGroupID": 54 }, "3638": { "description_de": "Unterarten von Ueganite-Erzen.", "description_en-us": "Sub-types of Ueganite ore.", "description_es": "Subtipos de la mena ueganita.", "description_fr": "Sous-types de minerai d'Ueganite.", "description_it": "Sub-types of Ueganite ore.", "description_ja": "ユイグナイト鉱石の亜種。", "description_ko": "다양한 부류의 유가나이트 광석입니다.", "description_ru": "Разновидности уэганита.", "description_zh": "尤加石的分支。", "descriptionID": 712226, "hasTypes": 1, "iconID": 1277, "name_de": "Ueganite", "name_en-us": "Ueganite", "name_es": "Ueganita", "name_fr": "Ueganite", "name_it": "Ueganite", "name_ja": "ユイグナイト", "name_ko": "유가나이트", "name_ru": "Уэганит", "name_zh": "尤加石", "nameID": 712225, "parentGroupID": 54 }, "3639": { "description_de": "Unterarten des Hezorime-Erzes..", "description_en-us": "Sub-types of Hezorime ore.", "description_es": "Subtipos de la mena hezorima.", "description_fr": "Sous-types de minerai Hezorime.", "description_it": "Sub-types of Hezorime ore.", "description_ja": "ヘゾライム鉱石の亜種。", "description_ko": "다양한 부류의 헤조라임 광석입니다.", "description_ru": "Разновидности гезорима.", "description_zh": "赫佐利姆的分支。", "descriptionID": 712228, "hasTypes": 1, "iconID": 1274, "name_de": "Hezorime", "name_en-us": "Hezorime", "name_es": "Hezorima", "name_fr": "Hezorime", "name_it": "Hezorime", "name_ja": "ヘゾライム", "name_ko": "헤조라임", "name_ru": "Hezorime", "name_zh": "赫佐利姆", "nameID": 712227, "parentGroupID": 54 }, "3640": { "description_de": "Unterarten des Griemeer-Erzes.", "description_en-us": "Sub-types of Griemeer ore.", "description_es": "Subtipos de la mena griemeer.", "description_fr": "Sous-types de minerai de Griemeer.", "description_it": "Sub-types of Griemeer ore.", "description_ja": "グリーミーア鉱石の亜種。", "description_ko": "다양한 부류의 그리미어 광석입니다.", "description_ru": "Разновидности гримира.", "description_zh": "格里米尔的分支。", "descriptionID": 712230, "hasTypes": 1, "iconID": 1271, "name_de": "Griemeer", "name_en-us": "Griemeer", "name_es": "Griemeer", "name_fr": "Griemeer", "name_it": "Griemeer", "name_ja": "グリーミーア", "name_ko": "그리미어", "name_ru": "Griemeer", "name_zh": "格里米尔", "nameID": 712229, "parentGroupID": 54 }, "3641": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы для создания оборудования разных держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 720385, "hasTypes": 1, "iconID": 2888, "name_de": "Mordus Legion", "name_en-us": "Mordu's Legion", "name_es": "Legión de Mordu", "name_fr": "Mordu's Legion", "name_it": "Mordu's Legion", "name_ja": "モードゥ部隊", "name_ko": "모르두 군단", "name_ru": "Легион Морду", "name_zh": "莫德团", "nameID": 720384, "parentGroupID": 1897 }, "3642": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы для создания оборудования разных держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 720387, "hasTypes": 1, "iconID": 2888, "name_de": "Sansha's Nation", "name_en-us": "Sansha's Nation", "name_es": "Nación Sansha", "name_fr": "Sansha's Nation", "name_it": "Sansha's Nation", "name_ja": "サンシャ国", "name_ko": "산샤 네이션", "name_ru": "«Нация Санши»", "name_zh": "萨沙", "nameID": 720386, "parentGroupID": 1897 }, "3643": { "description_de": "Materialien zur Konstruktion bestimmter Fraktionsausrüstung.", "description_en-us": "Materials used in the construction of specific factional equipment.", "description_es": "Materiales usados para la construcción de aparatos específicos para las facciones.", "description_fr": "Matériaux utilisés dans la fabrication d'équipements spécifiques aux factions.", "description_it": "Materials used in the construction of specific factional equipment.", "description_ja": "特定勢力独自の装備の製作に使用される資源。", "description_ko": "팩션 장비 제작에 사용되는 재료입니다.", "description_ru": "Материалы для создания оборудования разных держав.", "description_zh": "用来制造特殊势力装备的材料。", "descriptionID": 720389, "hasTypes": 1, "iconID": 2888, "name_de": "Sisters of EVE", "name_en-us": "Sisters of EVE", "name_es": "Sisters of EVE", "name_fr": "Sisters of EVE", "name_it": "Sisters of EVE", "name_ja": "シスターズオブイブ", "name_ko": "시스터 오브 이브", "name_ru": "Сёстры «Евы»", "name_zh": "EVE姐妹会", "nameID": 720388, "parentGroupID": 1897 }, "3651": { "description_de": "Baupläne für obitale Skyhooks.", "description_en-us": "Blueprints of Orbital Skyhooks.", "description_es": "Planos de ganchos orbitales.", "description_fr": "Plans de construction de grappins orbitaux.", "description_it": "Blueprints of Orbital Skyhooks.", "description_ja": "軌道スカイフックの設計図です。", "description_ko": "궤도 스카이훅 블루프린트", "description_ru": "Чертежи орбитальных подъёмников.", "description_zh": "轨道天钩蓝图。", "descriptionID": 722541, "hasTypes": 1, "iconID": 2703, "name_de": "Orbitale Skyhooks", "name_en-us": "Orbital Skyhooks", "name_es": "Ganchos orbitales", "name_fr": "Grappins orbitaux", "name_it": "Orbital Skyhooks", "name_ja": "軌道スカイフック", "name_ko": "궤도 스카이훅", "name_ru": "Орбитальные подъёмники", "name_zh": "轨道天钩", "nameID": 722540, "parentGroupID": 2015 }, "3653": { "hasTypes": 1, "iconID": 26053, "name_de": "Matt", "name_en-us": "Matte", "name_es": "Mate", "name_fr": "Mat", "name_it": "Matte", "name_ja": "マット", "name_ko": "무광", "name_ru": "Матовое", "name_zh": "哑光级", "nameID": 723578, "parentGroupID": 3631 }, "3654": { "hasTypes": 1, "iconID": 26053, "name_de": "Satin", "name_en-us": "Satin", "name_es": "Satinado", "name_fr": "Satiné", "name_it": "Satin", "name_ja": "サテン", "name_ko": "새틴", "name_ru": "Сатин", "name_zh": "缎光级", "nameID": 723579, "parentGroupID": 3631 }, "3655": { "hasTypes": 1, "iconID": 26053, "name_de": "Glanz", "name_en-us": "Gloss", "name_es": "Brillante", "name_fr": "Brillant", "name_it": "Gloss", "name_ja": "グロス", "name_ko": "유광", "name_ru": "Глянцевое", "name_zh": "流光级", "nameID": 723580, "parentGroupID": 3631 }, "3656": { "hasTypes": 1, "iconID": 33, "name_de": "Sequencing", "name_en-us": "Sequencing", "name_es": "Secuenciación", "name_fr": "Séquençage", "name_it": "Sequencing", "name_ja": "シーケンシング", "name_ko": "각인 생성", "name_ru": "Производство окрасок", "name_zh": "排序", "nameID": 723623, "parentGroupID": 150 }, "3667": { "description_de": "Mutaplasmide, die für Smartbomb-Module verwendet werden", "description_en-us": "Mutaplasmids that are used on Smartbomb modules", "description_es": "Mutaplásmidos que se usan en los módulos de bomba inteligente.", "description_fr": "Mutaplasmides utilisés sur les modules de bombes de proximité", "description_it": "Mutaplasmids that are used on Smartbomb modules", "description_ja": "スマートボムモジュールに使用する変異プラスミド", "description_ko": "스마트폭탄 모듈에 사용되는 뮤타플라즈미드입니다.", "description_ru": "Мутаплазмиды, подходящие для импульсных излучателей", "description_zh": "用于立体炸弹装备的突变质体", "descriptionID": 725016, "hasTypes": 0, "iconID": 24129, "name_de": "Smartbomb-Mutaplasmide", "name_en-us": "Smartbomb Mutaplasmids", "name_es": "Mutaplásmidos de bomba inteligente", "name_fr": "Mutaplasmides de bombe de proximité", "name_it": "Smartbomb Mutaplasmids", "name_ja": "スマートボム変異プラスミド", "name_ko": "스마트폭탄 뮤타플라즈미드", "name_ru": "Мутаплазмиды для импульсных излучателей", "name_zh": "立体炸弹突变质体", "nameID": 725015, "parentGroupID": 2436 }, "3668": { "description_de": "Kleine Smartbomb-Mutaplasmide", "description_en-us": "Small Smartbomb Mutaplasmids", "description_es": "Mutaplásmidos de bomba inteligente pequeños", "description_fr": "Mutaplasmides de petite bombe de proximité", "description_it": "Small Smartbomb Mutaplasmids", "description_ja": "小型スマートボム変異プラスミド", "description_ko": "소형 스마트폭탄 뮤타플라즈미드", "description_ru": "Мутаплазмиды для малых импульсных излучателей", "description_zh": "小型立体炸弹突变质体", "descriptionID": 725018, "hasTypes": 1, "name_de": "Kleine Smartbomb-Mutaplasmide", "name_en-us": "Small Smartbomb Mutaplasmids", "name_es": "Mutaplásmidos de bomba inteligente pequeños", "name_fr": "Mutaplasmides de petite bombe de proximité", "name_it": "Small Smartbomb Mutaplasmids", "name_ja": "小型スマートボム変異プラスミド", "name_ko": "소형 스마트폭탄 뮤타플라즈미드", "name_ru": "Мутаплазмиды для малых импульсных излучателей", "name_zh": "小型立体炸弹突变质体", "nameID": 725017, "parentGroupID": 3667 }, "3669": { "description_de": "Mittelgroße Smartbomb-Mutaplasmide", "description_en-us": "Medium Smartbomb Mutaplasmids", "description_es": "Mutaplásmidos de bomba inteligente medianos", "description_fr": "Mutaplasmides de bombe de proximité intermédiaire", "description_it": "Medium Smartbomb Mutaplasmids", "description_ja": "中型スマートボム変異プラスミド", "description_ko": "중형 스마트폭탄 뮤타플라즈미드", "description_ru": "Мутаплазмиды для средних импульсных излучателей", "description_zh": "中型立体炸弹突变质体", "descriptionID": 725020, "hasTypes": 1, "name_de": "Mittelgroße Smartbomb-Mutaplasmide", "name_en-us": "Medium Smartbomb Mutaplasmids", "name_es": "Mutaplásmidos de bomba inteligente medianos", "name_fr": "Mutaplasmides de bombe de proximité intermédiaire", "name_it": "Medium Smartbomb Mutaplasmids", "name_ja": "中型スマートボム変異プラスミド", "name_ko": "중형 스마트폭탄 뮤타플라즈미드", "name_ru": "Мутаплазмиды для средних импульсных излучателей", "name_zh": "中型立体炸弹突变质体", "nameID": 725019, "parentGroupID": 3667 }, "3670": { "description_de": "Große Smartbomb-Mutaplasmide", "description_en-us": "Large Smartbomb Mutaplasmids", "description_es": "Mutaplásmidos de bomba inteligente grandes", "description_fr": "Mutaplasmides de grande bombe de proximité", "description_it": "Large Smartbomb Mutaplasmids", "description_ja": "大型スマートボム変異プラスミド", "description_ko": "대형 스마트폭탄 뮤타플라즈미드", "description_ru": "Мутаплазмиды для больших импульсных излучателей", "description_zh": "大型立体炸弹突变质体", "descriptionID": 725022, "hasTypes": 1, "name_de": "Große Smartbomb-Mutaplasmide", "name_en-us": "Large Smartbomb Mutaplasmids", "name_es": "Mutaplásmidos de bomba inteligente grandes", "name_fr": "Mutaplasmides de grande bombe de proximité", "name_it": "Large Smartbomb Mutaplasmids", "name_ja": "大型スマートボム変異プラスミド", "name_ko": "대형 스마트폭탄 뮤타플라즈미드", "name_ru": "Мутаплазмиды для больших импульсных излучателей", "name_zh": "大型立体炸弹突变质体", "nameID": 725021, "parentGroupID": 3667 }, "3672": { "description_de": "Industrielle Designs des Upwell Consortium.", "description_en-us": "Upwell Consortium industrial designs.", "description_es": "Diseños industriales del Consorcio Upwell.", "description_fr": "Modèles industriels de l'Upwell Consortium.", "description_it": "Upwell Consortium industrial designs.", "description_ja": "アップウェル・コンソーシアムの輸送艦の設計図。", "description_ko": "업웰 컨소시엄 산업선입니다.", "description_ru": "Грузовые корабли консорциума «Апвелл».", "description_zh": "昇威财团工业舰设计。", "descriptionID": 725697, "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 725696, "parentGroupID": 2085 }, "3673": { "description_de": "Industrielle Designs des Upwell Consortium.", "description_en-us": "Upwell Consortium industrial designs.", "description_es": "Diseños industriales del Consorcio Upwell.", "description_fr": "Modèles industriels de l'Upwell Consortium.", "description_it": "Upwell Consortium industrial designs.", "description_ja": "アップウェル・コンソーシアムの輸送艦の設計図。", "description_ko": "업웰 컨소시엄 산업선입니다.", "description_ru": "Грузовые корабли консорциума «Апвелл».", "description_zh": "昇威财团工业舰设计。", "descriptionID": 725699, "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 725698, "parentGroupID": 2087 }, "3680": { "hasTypes": 1, "iconID": 16, "name_de": "Söldnerverstecke", "name_en-us": "Mercenary Dens", "name_es": "Guaridas de mercenarios", "name_fr": "Repaires de mercenaires", "name_it": "Mercenary Dens", "name_ja": "傭兵の隠れ家", "name_ko": "용병 소굴", "name_ru": "Логова наёмников", "name_zh": "雇佣兵巢穴", "nameID": 727375, "parentGroupID": 404 }, "3681": { "hasTypes": 1, "iconID": 2703, "name_de": "Söldnerverstecke", "name_en-us": "Mercenary Dens", "name_es": "Guaridas de mercenarios", "name_fr": "Repaires de mercenaires", "name_it": "Mercenary Dens", "name_ja": "傭兵の隠れ家", "name_ko": "용병 소굴", "name_ru": "Логова наёмников", "name_zh": "雇佣兵巢穴", "nameID": 727378, "parentGroupID": 406 }, "3696": { "description_de": "Gegenstände, die für die Übertragung oder Verbesserung digitalisierter menschlicher Bewusstseine eingesetzt werden, besser bekannt als Infomorphs.", "description_en-us": "Items related to the transfer or augmentation of digitized human consciousnesses, which are better known as infomorphs.", "description_es": "Objetos relacionados con la transferencia o aumento de conciencias humanas digitalizadas, más conocidas como infomorfos.", "description_fr": "Les objets liés au transfert ou à l'augmentation des consciences humaines numérisées, mieux connues sous le nom d'infomorphes.", "description_it": "Items related to the transfer or augmentation of digitized human consciousnesses, which are better known as infomorphs.", "description_ja": "デジタル化された人間の意識体、通称インフォモーフの転送または強化に関連したアイテム。", "description_ko": "인간의 디지털화된 의식체를 이전, 또는 증폭시키는 데에 사용되는 아이템입니다. 주로 정신체라고 알려져 있습니다.", "description_ru": "Товары, связанные с переносом или модификацией оцифрованных человеческих разумов, более известных как инфоморфы.", "description_zh": "与传输或增强数字化人类意识相关的物品,又称为电子意识。", "descriptionID": 731185, "hasTypes": 1, "iconID": 24296, "name_de": "Infomorph-Systeme", "name_en-us": "Infomorph Systems", "name_es": "Sistemas de infomorfos", "name_fr": "Systèmes d'infomorphes", "name_it": "Infomorph Systems", "name_ja": "インフォモーフのシステム", "name_ko": "정신체 시스템", "name_ru": "Системы для инфоморфов", "name_zh": "电子意识星系", "nameID": 731186, "parentGroupID": 533 }, "3697": { "hasTypes": 1, "iconID": 26356, "name_de": "Atavum", "name_en-us": "Atavum", "name_es": "Atavum", "name_fr": "Atavum", "name_it": "Atavum", "name_ja": "アタヴァム", "name_ko": "아타붐", "name_ru": "Atavum", "name_zh": "阿塔文", "nameID": 862997, "parentGroupID": 533 }, "3719": { "hasTypes": 0, "iconID": 24905, "name_de": "Drohnen-Mutaplasmide", "name_en-us": "Drone Mutaplasmids", "name_es": "Mutaplásmidos para drones", "name_fr": "Mutaplasmides pour drone", "name_it": "Drone Mutaplasmids", "name_ja": "ドローン変異プラスミド", "name_ko": "드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды дронов", "name_zh": "无人机突变质体", "nameID": 871028, "parentGroupID": 2436 }, "3720": { "hasTypes": 1, "iconID": 24905, "name_de": "Leichte Drohnen-Mutaplasmide", "name_en-us": "Light Drone Mutaplasmids", "name_es": "Mutaplásmidos para drones ligeros", "name_fr": "Mutaplasmides pour drone léger", "name_it": "Light Drone Mutaplasmids", "name_ja": "ライトドローン用変異プラスミド", "name_ko": "라이트 드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды для лёгких дронов", "name_zh": "轻型无人机突变质体", "nameID": 871029, "parentGroupID": 3719 }, "3721": { "hasTypes": 1, "iconID": 24905, "name_de": "Mittelgroße Drohnen-Mutaplasmide", "name_en-us": "Medium Drone Mutaplasmids", "name_es": "Mutaplásmidos para drones medianos", "name_fr": "Mutaplasmides pour drone intermédiaire", "name_it": "Medium Drone Mutaplasmids", "name_ja": "ミディアムドローン用変異プラスミド", "name_ko": "미디움 드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды для средних дронов", "name_zh": "中型无人机突变质体", "nameID": 871030, "parentGroupID": 3719 }, "3722": { "hasTypes": 1, "iconID": 24905, "name_de": "Schwere Drohnen-Mutaplasmide", "name_en-us": "Heavy Drone Mutaplasmids", "name_es": "Mutaplásmidos para drones pesados", "name_fr": "Mutaplasmides pour drone lourd", "name_it": "Heavy Drone Mutaplasmids", "name_ja": "ヘビードローン用変異プラスミド", "name_ko": "헤비 드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды для тяжёлых дронов", "name_zh": "重型无人机突变质体", "nameID": 871031, "parentGroupID": 3719 }, "3723": { "hasTypes": 1, "iconID": 24905, "name_de": "Wächterdrohnen-Mutaplasmide", "name_en-us": "Sentry Drone Mutaplasmids", "name_es": "Mutaplásmidos para drones centinelas", "name_fr": "Mutaplasmides pour drone sentinelle", "name_it": "Sentry Drone Mutaplasmids", "name_ja": "セントリードローン用変異プラスミド", "name_ko": "센트리 드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды для охранных дронов", "name_zh": "岗哨无人机突变质体", "nameID": 871033, "parentGroupID": 3719 }, "3724": { "hasTypes": 1, "iconID": 24905, "name_de": "Drohnenmodul-Mutaplasmide", "name_en-us": "Drone Module Mutaplasmids", "name_es": "Mutaplásmidos para módulos de drones", "name_fr": "Mutaplasmides pour modules de drones", "name_it": "Drone Module Mutaplasmids", "name_ja": "ドローンモジュール用変異プラスミド", "name_ko": "드론 모듈 뮤타플라즈미드", "name_ru": "Мутаплазмиды для модулей дронов", "name_zh": "无人机装备突变质体", "nameID": 871034, "parentGroupID": 3719 }, "3725": { "description_de": "Entertruppenwaffen, die die Verteidigung eines Schiffes durchdringen und ein Sonderkommando in das Zielschiff schleusen sollen.", "description_en-us": "Troop boarding weapons designed to penetrate a ship's defenses and insert a strike team inside the target vessel.", "description_es": "Armas de abordaje de tropas diseñadas para penetrar las defensas de una nave e introducir un equipo de ataque dentro de la nave objetivo.", "description_fr": "Armes d'abordage de troupes conçues pour pénétrer les défenses d'un vaisseau et déployer une équipe d'assaut à l'intérieur de la cible.", "description_it": "Troop boarding weapons designed to penetrate a ship's defenses and insert a strike team inside the target vessel.", "description_ja": "標的艦の防衛設備を貫通し、ストライクチームを送り込むための搭乗式兵器。", "description_ko": "함선의 방어기제를 무시하고 함선 내부에 타격대를 침투시키는 무기입니다.", "description_ru": "Это абордажное орудие пробивает защиту корабля-цели и внедряет в него ударную группу.", "description_zh": "突击队登舰武器,旨在突破舰船防御,并将突击部队插入目标舰船内。", "descriptionID": 871477, "hasTypes": 1, "iconID": 26372, "name_de": "Kapselbrecher", "name_en-us": "Breacher Pods", "name_es": "Cápsulas de ataque", "name_fr": "Capsules de brèche", "name_it": "Breacher Pods", "name_ja": "突入ポッド", "name_ko": "침투 포드", "name_ru": "Внедряющиеся капсулы", "name_zh": "突破者座舱", "nameID": 871476, "parentGroupID": 11 }, "3726": { "description_de": "Entertruppenwaffen, die die Verteidigung eines Schiffes durchdringen und ein Sonderkommando in das Zielschiff schleusen sollen.", "description_en-us": "Troop boarding weapons designed to penetrate a ship's defenses and insert a strike team inside the target vessel.", "description_es": "Armas de abordaje de tropas diseñadas para penetrar las defensas de una nave e introducir un equipo de ataque dentro de la nave objetivo.", "description_fr": "Armes d'abordage de troupes conçues pour pénétrer les défenses d'un vaisseau et déployer une équipe d'assaut à l'intérieur de la cible.", "description_it": "Troop boarding weapons designed to penetrate a ship's defenses and insert a strike team inside the target vessel.", "description_ja": "標的艦の防衛設備を貫通し、ストライクチームを送り込むための搭乗式兵器。", "description_ko": "함선의 방어기제를 무시하고 함선 내부에 타격대를 침투시키는 무기입니다.", "description_ru": "Это абордажное орудие пробивает защиту корабля-цели и внедряет в него ударную группу.", "description_zh": "突击队登舰武器,旨在突破舰船防御,并将突击部队插入目标舰船内。", "descriptionID": 871479, "hasTypes": 1, "iconID": 26396, "name_de": "Kapselbrecher-Werfer", "name_en-us": "Breacher Pod Launchers", "name_es": "Lanzacápsulas de ataque", "name_fr": "Lanceurs de capsules de brèche", "name_it": "Breacher Pod Launchers", "name_ja": "突入ポッドランチャー", "name_ko": "침투 포드 런처", "name_ru": "Пусковая установка внедряющихся капсул", "name_zh": "突破者座舱发射器", "nameID": 871478, "parentGroupID": 10 }, "3732": { "hasTypes": 1, "iconID": 2038, "name_de": "Beschleunigungstor-Schlüssel", "name_en-us": "Acceleration Gate Keys", "name_es": "Llaves de portal de aceleración", "name_fr": "Clés du portail d'accélération", "name_it": "Acceleration Gate Keys", "name_ja": "アクセラレーションゲートキー", "name_ko": "액셀레이션 게이트 출입키", "name_ru": "Ключ от разгонных ворот", "name_zh": "加速轨道钥匙", "nameID": 1005132, "parentGroupID": 19 }, "3734": { "description_de": "Gegenstände, die von zerstörten Aufständischen-Schiffen erbeutet werden.", "description_en-us": "Items obtained from destroyed insurgency ships.", "description_es": "Objetos obtenidos de naves insurgentes destruidas.", "description_fr": "Objets obtenus par la destruction de vaisseaux d'insurrection.", "description_it": "Items obtained from destroyed insurgency ships.", "description_ja": "撃墜された反乱船から手に入れた品物。", "description_ko": "파괴된 반란 함선에서 획득한 아이템입니다.", "description_ru": "Предметы, найденные среди обломков кораблей интервентов.", "description_zh": "从被击毁的叛乱舰船上获得的物品。", "descriptionID": 1008794, "hasTypes": 1, "iconID": 2325, "name_de": "Piratenaufstand-Schmuggelware", "name_en-us": "Pirate Insurgency Contraband", "name_es": "Contrabandista de insurgencia pirata", "name_fr": "Contrebande de l'insurrection pirate", "name_it": "Pirate Insurgency Contraband", "name_ja": "海賊の反乱の禁制品", "name_ko": "해적의 반란 밀수품", "name_ru": "Контрабанда пиратов-интервентов", "name_zh": "海盗叛乱违禁品", "nameID": 1008793, "parentGroupID": 614 }, "3736": { "hasTypes": 1, "iconID": 3948, "name_de": "Kolonie-Ressourcenverwaltung", "name_en-us": "Colony Resources Management", "name_es": "Gestión de recursos de la colonia", "name_fr": "Gestion des ressources de colonie", "name_it": "Colony Resources Management", "name_ja": "コロニーリソース管理", "name_ko": "콜로니 자원 관리", "name_ru": "Управление ресурсами колоний", "name_zh": "殖民地资源管理", "nameID": 1009944, "parentGroupID": 1276 }, "3737": { "description_de": "Seltene Handelsgüter, die nur für begrenzte Zeit verteilt werden.", "description_en-us": "Rare trade goods that are only distributed for limited time periods.", "description_es": "Mercancías comerciales poco comunes que solo se distribuyen por periodos de tiempo limitados.", "description_fr": "Des marchandises rares distribuées uniquement pendant des périodes limitées.", "description_it": "Rare trade goods that are only distributed for limited time periods.", "description_ja": "一定期間限定で入手可能な貴重なトレード品です。", "description_ko": "특정 기간에만 유통되는 희귀한 상품입니다.", "description_ru": "Редкие товары, которые лишь ненадолго попадают на рынок.", "description_zh": "仅供限时分销的稀有贸易物品。", "descriptionID": 1010661, "hasTypes": 1, "iconID": 3755, "name_de": "Begrenzte Seltenheitsgrade", "name_en-us": "Limited Rarities", "name_es": "Rarezas limitadas", "name_fr": "Raretés limitées", "name_it": "Limited Rarities", "name_ja": "限定アイテム", "name_ko": "희귀도 제한", "name_ru": "Эксклюзивные редкости", "name_zh": "限量珍品", "nameID": 1010660, "parentGroupID": 19 }, "3738": { "description_de": "Blaupausen von Ressourcenverwaltungs-Upgrades", "description_en-us": "Blueprints of Resource Management Upgrades", "description_es": "Planos de mejoras de gestión de recursos", "description_fr": "Plans de construction d'améliorations de gestion des ressources", "description_it": "Blueprints of Resource Management Upgrades", "description_ja": "コロニーリソース管理アップグレード設計図", "description_ko": "자원 관리 업그레이드 블루프린트입니다.", "description_ru": "Чертежи улучшений управления ресурсами", "description_zh": "资源管理升级件蓝图", "descriptionID": 1010923, "hasTypes": 1, "iconID": 2703, "name_de": "Ressourcenverwaltungs-Upgrades", "name_en-us": "Resource Management Upgrades", "name_es": "Mejoras de gestión de recursos", "name_fr": "Améliorations de gestion des ressources", "name_it": "Resource Management Upgrades", "name_ja": "リソース管理アップグレード", "name_ko": "자원 관리 업그레이드", "name_ru": "Улучшения управления ресурсами", "name_zh": "资源管理升级件", "nameID": 1010922, "parentGroupID": 2015 }, "3739": { "hasTypes": 1, "iconID": 3953, "name_de": "Signaturdetektoren", "name_en-us": "Signature Detection Arrays", "name_es": "Sistema detector de señales", "name_fr": "Modules de détection de signature", "name_it": "Signature Detection Arrays", "name_ja": "シグネチャ探知施設", "name_ko": "시그니처 탐지 시설", "name_ru": "Комплексы поиска сигнатур", "name_zh": "信号探测阵列", "nameID": 1010986, "parentGroupID": 1276 }, "3740": { "hasTypes": 1, "iconID": 2703, "name_de": "Systemeffektgenerator-Upgrades", "name_en-us": "System Effect Generator Upgrades", "name_es": "Mejoras del generador de efectos del sistema", "name_fr": "Améliorations de générateur d'effet de système", "name_it": "System Effect Generator Upgrades", "name_ja": "システム効果ジェネレーターアップグレード", "name_ko": "성계 영향 발생기 업그레이드", "name_ru": "Улучшения генератора эффектов системы", "name_zh": "星系影响生成器升级件", "nameID": 1011224, "parentGroupID": 2015 }, "3741": { "description_de": "Systemeffektgenerator-Upgrades für Souveränitätsstrukturen.", "description_en-us": "System Effect Generator Upgrades for sovereignty structures.", "description_es": "Mejoras del generador de efectos de sistema para las estructuras de soberanía.", "description_fr": "Améliorations de générateur d'effet de système pour les structures de souveraineté.", "description_it": "System Effect Generator Upgrades for sovereignty structures.", "description_ja": "領有権管理設備用システム効果ジェネレーターアップグレード。", "description_ko": "소버린티 구조물의 성계 영향 발생기 업그레이드입니다.", "description_ru": "Улучшения генератора эффектов системы для объектов системы суверенитета", "description_zh": "适用于主权建筑的星系影响生成器升级件。", "descriptionID": 1011233, "hasTypes": 1, "iconID": 26779, "name_de": "Systemeffektgenerator-Upgrades", "name_en-us": "System Effect Generator Upgrades", "name_es": "Mejoras del generador de efectos del sistema", "name_fr": "Améliorations de générateur d'effet de système", "name_it": "System Effect Generator Upgrades", "name_ja": "システム効果ジェネレーターアップグレード", "name_ko": "성계 영향 발생기 업그레이드", "name_ru": "Улучшения генератора эффектов системы", "name_zh": "星系影响生成器升级件", "nameID": 1011232, "parentGroupID": 1276 }, "3742": { "description_de": "Blaupausen für Signaturdetektor-Upgrades", "description_en-us": "Blueprints of Signature Detection Array Upgrades", "description_es": "Planos de mejoras del sistema detector de señales", "description_fr": "Plans de construction d'améliorations du module de détection de signature", "description_it": "Blueprints of Signature Detection Array Upgrades", "description_ja": "シグネチャ探知施設アップグレード設計図", "description_ko": "시그니처 탐지 시설 업그레이드 블루프린트입니다.", "description_ru": "Чертежи улучшений комплексов поиска сигнатур", "description_zh": "信号探测阵列升级件蓝图", "descriptionID": 1011344, "hasTypes": 1, "iconID": 2703, "name_de": "Signaturdetektor-Upgrades", "name_en-us": "Signature Detection Array Upgrades", "name_es": "Mejoras del sistema detector de señales", "name_fr": "Améliorations des modules de détection de signature", "name_it": "Signature Detection Array Upgrades", "name_ja": "シグネチャ探知施設アップグレード", "name_ko": "시그니처 탐지 시설 업그레이드", "name_ru": "Улучшения комплексов поиска сигнатур", "name_zh": "信号探测阵列升级件", "nameID": 1011343, "parentGroupID": 2015 }, "3743": { "description_de": "Tyranit-Erz.", "description_en-us": "Tyranite ore.", "description_es": "Una mena de tiranita.", "description_fr": "Minerai de tyranite.", "description_it": "Tyranite ore.", "description_ja": "ティラナイト鉱石", "description_ko": "타이라나이트 광물입니다.", "description_ru": "Тиранитовая руда", "description_zh": "泰拉石。", "descriptionID": 1011365, "hasTypes": 1, "iconID": 26785, "name_de": "Tyranite", "name_en-us": "Tyranite", "name_es": "Tiranita", "name_fr": "Tyranite", "name_it": "Tyranite", "name_ja": "ティラナイト", "name_ko": "타이라나이트", "name_ru": "Tyranite", "name_zh": "泰拉石", "nameID": 1011366, "parentGroupID": 54 }, "3744": { "description_de": "Triglavia-Marauder", "description_en-us": "Triglavian Marauders", "description_es": "Depredadores triglavianos", "description_fr": "Maraudeurs triglavian", "description_it": "Triglavian Marauders", "description_ja": "トリグラビアンの襲撃型戦艦", "description_ko": "트리글라비안 머라우더", "description_ru": "Рейдеры Триглава", "description_zh": "三神裔掠夺舰", "descriptionID": 1011412, "hasTypes": 1, "iconID": 24135, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 1011411, "parentGroupID": 1080 }, "3745": { "description_de": "Ein Expertensystem ist eine externe, beschränkte künstliche Intelligenz, die Ihnen während der aktiven Mietdauer Zugriff auf bestimmte Skills gewährt. Da ein aktives Expertensystem unabhängig von Ihrem Klon und Ihrer Kapsel arbeitet, geht es bei einem Kapseltod oder Klonsprung nicht verloren.", "description_en-us": "An Expert System is a remote, restricted artificial intelligence providing you with access to certain skills during the active rental period. As it is independent from your clone and your capsule, an active Expert System is not lost on pod death or clone jump.", "description_es": "Un sistema experto es una inteligencia artificial remota y restringida que proporciona acceso a ciertas habilidades durante el periodo activo. No depende ni de tu clon ni de tu cápsula, por lo que no lo perderás si esta se destruye o si se lleva a cabo un salto de clon.", "description_fr": "Un système expert est une intelligence artificielle restreinte à distance qui vous fait bénéficier de certaines compétences pendant la période de location active. Étant indépendant de votre clone et de votre capsule, un système expert actif ne sera donc pas perdu en cas de décapsulage ou saut de clone.", "description_it": "An Expert System is a remote, restricted artificial intelligence providing you with access to certain skills during the active rental period. As it is independent from your clone and your capsule, an active Expert System is not lost on pod death or clone jump.", "description_ja": "エキスパートシステムは、有効なレンタル期間中に特定のスキルへのアクセスを提供する、リモートで制限された人工知能である。クローンやカプセルからは独立しているため、ポッドの喪失やクローンジャンプによって失われることがない。", "description_ko": "전문가 시스템은 원격으로 운영되는 제한형 AI로 캡슐리어에게 일정 기간 스킬을 제공합니다. 사용자의 클론 및 캡슐과 독립되어 캡슐이 파괴되거나 클론을 변경해도 제거되지 않습니다.", "description_ru": "Экспертная система — это дистанционный искусственный интеллект ограниченного действия, предоставляющий определённые навыки на время его использования. Поскольку экспертная система независима от вашего клона и капсулы, вы не потеряете её при уничтожении капсулы или смене клона.", "description_zh": "专家系统是一种远程受限人工智能,可在租赁有效期内为你提供访问特定技能的权限。它不依托于克隆体和太空舱,因此处于有效期内的专家系统在太空舱损毁或进行远距克隆时也能继续使用。", "descriptionID": 1011900, "hasTypes": 1, "iconID": 26799, "name_de": "Expertensysteme", "name_en-us": "Expert Systems", "name_es": "Sistemas expertos", "name_fr": "Systèmes experts", "name_it": "Expert Systems", "name_ja": "エキスパートシステム", "name_ko": "전문가 시스템", "name_ru": "Экспертные системы", "name_zh": "专家系统", "nameID": 1011898, "parentGroupID": 1922 }, "3746": { "hasTypes": 1, "iconID": 1443, "name_de": "Upwell", "name_en-us": "Upwell", "name_es": "Upwell", "name_fr": "Upwell", "name_it": "Upwell", "name_ja": "アップウェル", "name_ko": "업웰", "name_ru": "Апвелл", "name_zh": "昇威", "nameID": 1014781, "parentGroupID": 1972 }, "3754": { "description_de": "Baupläne von ORE-Zerstörer-Designs.", "description_en-us": "Blueprints of ORE destroyer designs.", "description_es": "Planos de diseños de destructores de ORE.", "description_fr": "Plans de construction de destroyers ORE.", "description_it": "Blueprints of ORE destroyer designs.", "description_ja": "OREの駆逐艦の設計図。", "description_ko": "ORE 디스트로이어 블루프린트입니다.", "description_ru": "Чертежи эсминцев ОРЭ.", "description_zh": "联合矿业驱逐舰设计蓝图。", "descriptionID": 1017346, "hasTypes": 1, "iconID": 2703, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1017345, "parentGroupID": 582 }, "3755": { "description_de": "ORE-Zerstörerdesigns.", "description_en-us": "ORE destroyer designs.", "description_es": "Diseños de destructores de ORE.", "description_fr": "Modèles de destroyers ORE.", "description_it": "ORE destroyer designs.", "description_ja": "OREの駆逐艦。", "description_ko": "ORE의 디스트로이어입니다.", "description_ru": "Эсминцы ОРЭ.", "description_zh": "联合矿业驱逐舰设计。", "descriptionID": 1017348, "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1017347, "parentGroupID": 464 }, "3756": { "description_de": "Expeditionskommandostrahlenladungen", "description_en-us": "Expedition Command Burst Charges", "description_es": "Cargas de estallido de mando de expedición", "description_fr": "Charges de salve de commandement d'expédition", "description_it": "Expedition Command Burst Charges", "description_ja": "探査コマンドバーストチャージ", "description_ko": "탐사 커맨드 버스트 차지", "description_ru": "Заряды экспедиционного импульсного оптимизатора", "description_zh": "远征指挥脉冲弹药", "descriptionID": 1017851, "hasTypes": 1, "iconID": 20970, "name_de": "Expeditionskommandostrahlenladungen", "name_en-us": "Expedition Command Burst Charges", "name_es": "Cargas de estallido de mando de expedición", "name_fr": "Charges de salve de commandement d'expédition", "name_it": "Expedition Command Burst Charges", "name_ja": "探査コマンドバーストチャージ", "name_ko": "탐사 커맨드 버스트 차지", "name_ru": "Заряды экспедиционного импульсного оптимизатора", "name_zh": "远征指挥脉冲弹药", "nameID": 1017852, "parentGroupID": 2297 }, "3757": { "description_de": "Expeditionskommandostrahlenladungen", "description_en-us": "Expedition Command Burst Charges", "description_es": "Cargas de estallido de mando de expedición", "description_fr": "Charges de salve de commandement d'expédition", "description_it": "Expedition Command Burst Charges", "description_ja": "探査コマンドバーストチャージ", "description_ko": "탐사 커맨드 버스트 차지", "description_ru": "Заряды экспедиционного импульсного оптимизатора", "description_zh": "远征指挥脉冲弹药", "descriptionID": 1017926, "hasTypes": 1, "iconID": 2703, "name_de": "Expeditionskommandostrahlenladungen", "name_en-us": "Expedition Command Burst Charges", "name_es": "Cargas de estallido de mando de expedición", "name_fr": "Charges de salve de commandement d'expédition", "name_it": "Expedition Command Burst Charges", "name_ja": "探査コマンドバーストチャージ", "name_ko": "탐사 커맨드 버스트 차지", "name_ru": "Заряды экспедиционного импульсного оптимизатора", "name_zh": "远征指挥脉冲弹药", "nameID": 1017925, "parentGroupID": 2290 }, "3759": { "hasTypes": 0, "iconID": 1443, "name_de": "Expeditionskommandoschiff", "name_en-us": "Expedition Command Ships", "name_es": "Naves de mando de expedición", "name_fr": "Vaisseaux de commandement d'expédition", "name_it": "Expedition Command Ships", "name_ja": "指揮型探査船", "name_ko": "탐사 커맨드쉽", "name_ru": "Expedition Command Ships", "name_zh": "远征指挥舰", "nameID": 1017936, "parentGroupID": 1374 }, "3762": { "description_de": "Schiffe, die von den Sisters of EVE entworfen wurden", "description_en-us": "Ships designed by the Sisters of EVE", "description_es": "Naves diseñadas por Sisters of EVE", "description_fr": "Vaisseaux conçus par les Sisters of EVE", "description_it": "Ships designed by the Sisters of EVE", "description_ja": "シスターズオブイブが設計した艦船", "description_ko": "시스터 오브 이브 설계 함선", "description_ru": "Корабли по проектам Сестёр «Евы»", "description_zh": "由EVE姐妹会设计的舰船", "descriptionID": 1017958, "hasTypes": 1, "iconID": 1546, "name_de": "Sisters of EVE", "name_en-us": "Sisters of EVE", "name_es": "Sisters of EVE", "name_fr": "Sisters of EVE", "name_it": "Sisters of EVE", "name_ja": "シスターズオブイブ", "name_ko": "시스터 오브 이브", "name_ru": "Сёстры «Евы»", "name_zh": "EVE姐妹会", "nameID": 1017957, "parentGroupID": 3759 }, "3764": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1018060, "parentGroupID": 2125 }, "3765": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 1018095, "parentGroupID": 3481 }, "3766": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 1018096, "parentGroupID": 3481 }, "3767": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 1018097, "parentGroupID": 3481 }, "3768": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматар", "name_zh": "米玛塔尔", "nameID": 1018098, "parentGroupID": 3481 }, "3769": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1018099, "parentGroupID": 3481 }, "3770": { "hasTypes": 1, "iconID": 20959, "name_de": "Amarr", "name_en-us": "Amarr", "name_es": "Amarr", "name_fr": "Amarr", "name_it": "Amarr", "name_ja": "アマー", "name_ko": "아마르", "name_ru": "Амаррские", "name_zh": "艾玛", "nameID": 1018101, "parentGroupID": 1366 }, "3771": { "hasTypes": 1, "iconID": 20966, "name_de": "Caldari", "name_en-us": "Caldari", "name_es": "Caldari", "name_fr": "Caldari", "name_it": "Caldari", "name_ja": "カルダリ", "name_ko": "칼다리", "name_ru": "Калдарские", "name_zh": "加达里", "nameID": 1018102, "parentGroupID": 1366 }, "3772": { "hasTypes": 1, "iconID": 20967, "name_de": "Gallente", "name_en-us": "Gallente", "name_es": "Gallente", "name_fr": "Gallente", "name_it": "Gallente", "name_ja": "ガレンテ", "name_ko": "갈란테", "name_ru": "Галлентские", "name_zh": "盖伦特", "nameID": 1018103, "parentGroupID": 1366 }, "3773": { "hasTypes": 1, "iconID": 20968, "name_de": "Minmatar", "name_en-us": "Minmatar", "name_es": "Minmatar", "name_fr": "Minmatar", "name_it": "Minmatar", "name_ja": "ミンマター", "name_ko": "민마타", "name_ru": "Минматар", "name_zh": "米玛塔尔", "nameID": 1018104, "parentGroupID": 1366 }, "3774": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1018100, "parentGroupID": 1366 }, "3776": { "description_de": "Unterarten des Prismatizit-Erzes.", "description_en-us": "Sub-types of Prismaticite ore.", "description_es": "Subtipos de la mena prismaticita.", "description_fr": "Sous-types de minerai de prismaticite.", "description_it": "Sub-types of Prismaticite ore.", "description_ja": "プリズマティサイト鉱石の亜種。", "description_ko": "다양한 부류의 프리즈마티사이트 광석입니다.", "description_ru": "Разновидности призматицита.", "description_zh": "棱柱岩的分支。", "descriptionID": 1019023, "hasTypes": 1, "iconID": 27139, "name_de": "Prismaticite", "name_en-us": "Prismaticite", "name_es": "Prismaticita", "name_fr": "Prismaticite", "name_it": "Prismaticite", "name_ja": "プリズマティサイト", "name_ko": "프리즈마티사이트", "name_ru": "Prismaticite", "name_zh": "棱柱石", "nameID": 1019024, "parentGroupID": 54 }, "3779": { "description_de": "Blaupausen für stationierbare Strukturen.", "description_en-us": "Blueprints of deployable structures.", "description_es": "Planos de estructuras desplegables.", "description_fr": "Plans de construction des structures déployables.", "description_it": "Blueprints of deployable structures.", "description_ja": "配置可能なストラクチャの設計図。", "description_ko": "전개형 구조물을 위한 블루프린트입니다.", "description_ru": "Чертежи автономных блоков.", "description_zh": "可部署建筑蓝图", "descriptionID": 1019312, "hasTypes": 1, "iconID": 2703, "name_de": "Mobiler Phasenanker", "name_en-us": "Mobile Phase Anchors", "name_es": "Anclajes de fase móviles", "name_fr": "Ancrages de phase mobile", "name_it": "Mobile Phase Anchors", "name_ja": "移動式位相アンカー", "name_ko": "이동식 위상 고정기", "name_ru": "Мобильные фазовые якоря", "name_zh": "移动相锚", "nameID": 1019311, "parentGroupID": 406 }, "3781": { "hasTypes": 1, "iconID": 16, "name_de": "Mobiler Phasenanker", "name_en-us": "Mobile Phase Anchors", "name_es": "Anclajes de fase móviles", "name_fr": "Ancrages de phase mobile", "name_it": "Mobile Phase Anchors", "name_ja": "移動式位相アンカー", "name_ko": "이동식 위상 고정기", "name_ru": "Мобильные фазовые якоря", "name_zh": "移动相位锚标", "nameID": 1019441, "parentGroupID": 404 }, "3782": { "hasTypes": 1, "iconID": 21783, "name_de": "Erratische Erzformeln", "name_en-us": "Erratic Ore Formulas", "name_es": "Fórmulas de mena erráticas", "name_fr": "Formules de minerai erratique", "name_it": "Erratic Ore Formulas", "name_ja": "不安定鉱石のフォーミュラ", "name_ko": "불안정한 광물 반응식", "name_ru": "Формулы неустойчивой руды", "name_zh": "不稳定矿石配方", "nameID": 1019607, "parentGroupID": 1849 }, "3784": { "hasTypes": 1, "iconID": 1277, "name_de": "Unraffinierte Mineralien", "name_en-us": "Unrefined Minerals", "name_es": "Minerales sin refinar", "name_fr": "Minéraux non raffinés", "name_it": "Unrefined Minerals", "name_ja": "未精製無機物", "name_ko": "미가공 미네랄", "name_ru": "Необработанные минералы", "name_zh": "粗糙矿物", "nameID": 1019620, "parentGroupID": 1031 }, "3786": { "hasTypes": 0, "iconID": 27212, "name_de": "Ernte-Mutaplasmide", "name_en-us": "Harvesting Mutaplasmids", "name_es": "Recolección de mutaplásmidos", "name_fr": "Mutaplasmides de collecte", "name_it": "Harvesting Mutaplasmids", "name_ja": "採掘変異プラスミド", "name_ko": "하베스팅 뮤타플라즈미드", "name_ru": "Мутаплазмиды для сбора сырья", "name_zh": "采集突变质体", "nameID": 1021608, "parentGroupID": 2436 }, "3790": { "hasTypes": 1, "iconID": 27212, "name_de": "Laser-Miner", "name_en-us": "Laser Miners", "name_es": "Mineros láser", "name_fr": "Lasers d'extraction", "name_it": "Laser Miners", "name_ja": "レーザー採掘機", "name_ko": "채굴 레이저", "name_ru": "Буровые лазеры", "name_zh": "激光矿工", "nameID": 1021663, "parentGroupID": 3786 }, "3792": { "hasTypes": 1, "iconID": 27215, "name_de": "Oberflächen-Bergbaulaser", "name_en-us": "Strip Miners", "name_es": "Extractores mineros", "name_fr": "Lasers d'extraction intensive", "name_it": "Strip Miners", "name_ja": "ストリップマイナー", "name_ko": "가속 채굴기", "name_ru": "Буровые лазеры валовой выемки", "name_zh": "露天采矿器", "nameID": 1021665, "parentGroupID": 3786 }, "3794": { "description_de": "Triglavia-Marauder", "description_en-us": "Triglavian Marauders", "description_es": "Depredadores triglavianos", "description_fr": "Maraudeurs triglavian", "description_it": "Triglavian Marauders", "description_ja": "トリグラビアンの襲撃型戦艦", "description_ko": "트리글라비안 머라우더", "description_ru": "Рейдеры Триглава", "description_zh": "三神裔掠夺舰", "descriptionID": 1021708, "hasTypes": 1, "iconID": 21420, "name_de": "Triglavia", "name_en-us": "Triglavian", "name_es": "Triglaviano", "name_fr": "Triglavian", "name_it": "Triglavian", "name_ja": "トリグラビアン", "name_ko": "트리글라비안", "name_ru": "Триглав", "name_zh": "三神裔", "nameID": 1021707, "parentGroupID": 2023 }, "3795": { "hasTypes": 1, "iconID": 27208, "name_de": "Eis-Bergbaulaser", "name_en-us": "Ice Mining Lasers", "name_es": "Láseres mineros para hielo", "name_fr": "Lasers d'extraction de glace", "name_it": "Ice Mining Lasers", "name_ja": "アイス採掘レーザー", "name_ko": "아이스 채굴 레이저", "name_ru": "Лазеры для бурения льда", "name_zh": "冰矿开采激光器", "nameID": 1021797, "parentGroupID": 3786 }, "3797": { "hasTypes": 1, "iconID": 27205, "name_de": "Eisschürfer", "name_en-us": "Ice Harvesters", "name_es": "Cosechadoras de hielo", "name_fr": "Collecteurs de glace", "name_it": "Ice Harvesters", "name_ja": "アイス採掘用採掘機", "name_ko": "아이스 채굴기", "name_ru": "Установки для бурения льда", "name_zh": "冰矿采集器", "nameID": 1021870, "parentGroupID": 3786 }, "3798": { "hasTypes": 1, "iconID": 27201, "name_de": "Gaswolken-Schaufeln", "name_en-us": "Gas Cloud Scoops", "name_es": "Succionadores de nubes de gas", "name_fr": "Récupérateurs de nuages de gaz", "name_it": "Gas Cloud Scoops", "name_ja": "ガス雲スクープ", "name_ko": "가스 수집기", "name_ru": "Газочерпатели", "name_zh": "气云回收装置", "nameID": 1021883, "parentGroupID": 3786 }, "3799": { "hasTypes": 1, "iconID": 27198, "name_de": "Gaswolken-Extraktoren", "name_en-us": "Gas Cloud Harvesters", "name_es": "Cosechadoras de nubes de gas", "name_fr": "Collecteurs de nuages de gaz", "name_it": "Gas Cloud Harvesters", "name_ja": "ガス雲採掘機", "name_ko": "가스 하베스터", "name_ru": "Сборщики газовых облаков", "name_zh": "气云采集器", "nameID": 1022024, "parentGroupID": 3786 }, "3800": { "hasTypes": 1, "iconID": 24905, "name_de": "Erntedrohnen-Mutaplasmide", "name_en-us": "Harvesting Drone Mutaplasmids", "name_es": "Recolección de mutaplásmidos de drones", "name_fr": "Mutaplasmides pour drones de collecte", "name_it": "Harvesting Drone Mutaplasmids", "name_ja": "採掘ドローン変異プラスミド", "name_ko": "채굴 드론 뮤타플라즈미드", "name_ru": "Мутаплазмиды дронов для сбора льда", "name_zh": "采集无人机突变质体", "nameID": 1022077, "parentGroupID": 3719 }, "3801": { "description_de": "Bergbaukristalle, die für den Abbau von einfachen Erzen wie Plagioclase, Pyroxeres, Scordite, Veldspar und Mordunium geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Simple Ores such as Plagioclase, Pyroxeres, Scordite, Veldspar and Mordunium.", "description_es": "Cristales de minería que resultan adecuados para extraer menas simples, como plagioclasa, piroxeno, escordita, veldspar y mordunium.", "description_fr": "Cristaux d'extraction qui conviennent à l'extraction de minerais simples tels que le plagioclase, le pyroxeres, la scordite, le veldspar et le mordunium.", "description_it": "Mining Crystals which are suitable for mining Simple Ores such as Plagioclase, Pyroxeres, Scordite, Veldspar and Mordunium.", "description_ja": "プラジオクレイス、パイロゼリーズ、スコダイト、そしてベルドスパーなどのシンプル鉱石の採掘に適した採掘用クリスタル。", "description_ko": "플레지오클레이스, 파이로제레스, 스코다이트, 벨드스파, 모르두늄 등의 기초 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче простых руд, к которым относятся плагиоклаз, пироксер, скордит, вельдспар и мордуний.", "description_zh": "这种采集晶体适合用来开采斜长岩、干焦岩、灼烧岩、凡晶石和莫德合金等普通矿石。", "descriptionID": 1022851, "hasTypes": 1, "iconID": 24968, "name_de": "Einfache Asteroid-Bergbaukristalle", "name_en-us": "Simple Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal simples", "name_fr": "Cristaux d'extraction d'astéroïdes simples", "name_it": "Simple Asteroid Mining Crystals", "name_ja": "シンプルアステロイド採掘用クリスタル", "name_ko": "기초 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для простых руд", "name_zh": "普通小行星矿石采集晶体", "nameID": 1022850, "parentGroupID": 2804 }, "3802": { "description_de": "Bergbaukristalle, die für den Abbau zusammenhängender Erze wie Hedbergite, Hemorphite, Jaspet, Kernite, Omber, Ytirium, Griemeer und Nocxite geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Coherent Ores such as Hedbergite, Hemorphite, Jaspet, Kernite, Omber, Ytirium, Griemeer and Nocxite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas coherentes, como hedbergita, hemorfita, jaspetita, kernita, ómber, ytirium, griemeer y nocxita.", "description_fr": "Cristaux d'extraction convenant à l'extraction de minerais cohérents tels que l'hedbergite, l'hemorphite, le jaspet, la kernite, l'omber, l'ytirium, le griemeer et la nocxite.", "description_it": "Mining Crystals which are suitable for mining Coherent Ores such as Hedbergite, Hemorphite, Jaspet, Kernite, Omber, Ytirium, Griemeer and Nocxite.", "description_ja": "ヘッドバーガイト、ヘモファイト、ジャスペット、ケルナイト、オンバー、イティリウム、グリーミーア、そしてノキサイトなどのコヒーレント鉱石を含む、位相偏移アステロイド採掘に適した採掘用クリスタル。", "description_ko": "헤버자이트, 헤모르파이트, 자스페트, 커나이트, 옴버, 이티륨, 그리미어, 녹사이트 등의 응집성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче цельных руд, к которым относятся хедбергит, хеморфит, джаспет, кернит, омбер, ютирий, гримир и нокцит.", "description_zh": "这种采集晶体适合用来开采同位原矿、希莫非特、杰斯贝矿、水硼砂、奥贝尔石、耶利合金、格里米尔和诺克希特等聚合矿石。", "descriptionID": 1022853, "hasTypes": 1, "iconID": 24973, "name_de": "Zusammenhängende Asteroid-Bergbaukristalle", "name_en-us": "Coherent Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal coherentes", "name_fr": "Cristaux d'extraction d'astéroïdes cohérents", "name_it": "Coherent Asteroid Mining Crystals", "name_ja": "コヒーレントアステロイド採掘クリスタル", "name_ko": "응집성 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для цельных руд", "name_zh": "聚合小行星矿石采集晶体", "nameID": 1022852, "parentGroupID": 2804 }, "3803": { "description_de": "Bergbaukristalle, die für den Abbau von vielfältigen Erzen wie Crokite, Dunkles Ochre, Gneiss und Kylixium geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Variegated Ores such as Crokite, Dark Ochre, Gneiss and Kylixium.", "description_es": "Cristales de minería que resultan adecuados para extraer menas variegadas, como crokitio, ocre oscuro, gneiss y kylixium.", "description_fr": "Cristaux d'extraction adaptés à l'extraction de minerais panachés tels que la crokite, l'ochre foncé, le gneiss et le kylixium.", "description_it": "Mining Crystals which are suitable for mining Variegated Ores such as Crokite, Dark Ochre, Gneiss and Kylixium.", "description_ja": "クロカイト、ダークオークル、ナエス、そしてキリクシウムなどのベアリアゲイト鉱石の採掘に適した採掘用クリスタル。", "description_ko": "크로카이트, 다크 오커, 니스, 카일릭슘 등의 다변성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче цветных руд, к которым относятся крокит, тёмная охрана, гнейсс и килиций.", "description_zh": "这种采集晶体适合用来开采克洛基石、黑赭石、片麻岩和克里石等斑驳矿石。", "descriptionID": 1022855, "hasTypes": 1, "iconID": 24971, "name_de": "Vielfältige Asteroid-Bergbaukristalle", "name_en-us": "Variegated Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal variegados", "name_fr": "Cristaux d'extraction d'astéroïdes panachés", "name_it": "Variegated Asteroid Mining Crystals", "name_ja": "ベアリアゲイトアステロイド採掘クリスタル", "name_ko": "다변성 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для цветных руд", "name_zh": "斑驳小行星矿石采集晶体", "nameID": 1022854, "parentGroupID": 2804 }, "3804": { "description_de": "Bergbaukristalle, die für den Abbau von komplexen Erzen wie Arkonor, Bistot, Spodumain, Eifyrium, Ducinium, Hezorime und Ueganite geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Complex Ores such as Arkonor, Bistot, Spodumain, Eifyrium, Ducinium, Hezorime and Ueganite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas complejas, como arkonor, bistotina, espodumain, eifyrium, ducinium, hezorima y ueganita.", "description_fr": "Cristaux d'extraction utiles pour l'extraction de minerais complexes tels que l'arkonor, le bistot, le spodumain, l'eifyrium, le ducinium, l'hezorime et l'ueganite.", "description_it": "Mining Crystals which are suitable for mining Complex Ores such as Arkonor, Bistot, Spodumain, Eifyrium, Ducinium, Hezorime and Ueganite.", "description_ja": "アーコナー、ビストット、スポデュメイン、エイフィリウム、ドゥシニウム、ヘゾライムなどの複合鉱石の採掘に適した採掘用クリスタル。", "description_ko": "아르카노르, 비스토트, 스포듀마인, 에이피륨, 두시늄, 헤조라임, 유가나이트 등의 복합 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче сложных руд, к которым относятся арконор, бистот, сподумейн, эйфирий, дачиний, гезорим и уэганит.", "description_zh": "这种采集晶体适合用来开采艾克诺岩、双多特石、灰岩、埃菲尔合金、杜厦合金、赫佐利姆和尤加石等死亡空间矿石。", "descriptionID": 1022857, "hasTypes": 1, "iconID": 24972, "name_de": "Komplexe Asteroid-Bergbaukristalle", "name_en-us": "Complex Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal complejos", "name_fr": "Cristaux d'extraction d'astéroïdes complexes", "name_it": "Complex Asteroid Mining Crystals", "name_ja": "複合アステロイド採掘クリスタル", "name_ko": "복합 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для сложных руд", "name_zh": "复合体小行星矿石采集晶体", "nameID": 1022856, "parentGroupID": 2804 }, "3805": { "description_de": "Bergbaukristalle, die für den Abbau von Mercoxit geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Mercoxit.", "description_es": "Cristales de minería que resultan adecuados para extraer mercoxita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction du mercoxit.", "description_it": "Mining Crystals which are suitable for mining Mercoxit.", "description_ja": "メロコキサイトの採掘に適した採掘用クリスタル。", "description_ko": "메르코시트 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче меркоцита.", "description_zh": "这种采集晶体适合用来开采基腹断岩。", "descriptionID": 1022859, "hasTypes": 1, "iconID": 24969, "name_de": "Mercoxit-Asteroid-Bergbaukristalle", "name_en-us": "Mercoxit Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal de mercoxita", "name_fr": "Cristaux d'extraction d'astéroïdes de mercoxit", "name_it": "Mercoxit Asteroid Mining Crystals", "name_ja": "メロコキサイトアステロイド採掘クリスタル", "name_ko": "메르코시트 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для меркоцита", "name_zh": "基腹断岩小行星矿石采集晶体", "nameID": 1022858, "parentGroupID": 2804 }, "3806": { "description_de": "Bergbaukristalle, die für den Abbau von Abgrunderzen wie Bezdnazin, Rakovene und Talassonit geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Abyssal Ores such as Bezdnacine, Rakovene, and Talassonite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas abisales, como bezdnacina, rakovena y talasonita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction de minerais abyssaux tels que la bezdnacine, le rakovene et la talassonite.", "description_it": "Mining Crystals which are suitable for mining Abyssal Ores such as Bezdnacine, Rakovene, and Talassonite.", "description_ja": "ベズドナシン、ラコベネ、そしてタラソナイトなどのアビサル鉱石の採掘に適した採掘用クリスタル。", "description_ko": "베즈드나신, 라코벤, 탈라소나이트 등의 어비설 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче руд Бездны, к которым относятся безднацин, раковин и талассонит.", "description_zh": "这种采集晶体适合用来开采贝兹岩、拉克岩和塔拉岩等深渊矿石。", "descriptionID": 1022861, "hasTypes": 1, "iconID": 24970, "name_de": "Abgrund-Asteroid-Bergbaukristalle", "name_en-us": "Abyssal Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal abisales", "name_fr": "Cristaux d'extraction d'astéroïdes abyssaux", "name_it": "Abyssal Asteroid Mining Crystals", "name_ja": "アビサルアステロイド採掘クリスタル", "name_ko": "어비설 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для руд Бездны", "name_zh": "深渊小行星矿石采集晶体", "nameID": 1022860, "parentGroupID": 2804 }, "3807": { "description_de": "Bergbaukristalle, die für Bergbau auf Phasenasteroiden geeignet sind, die erratische Erze wie Prismatizit enthalten.", "description_en-us": "Mining Crystals which are suitable for mining Phased Asteroids containing Erratic Ores such as Prismaticite", "description_es": "Cristales de minería que resultan adecuados para extraer asteroides fásicos que contienen menas erráticas, como prismaticita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction minière d'astéroïdes phasiques contenant des minerais erratiques tels que la prismaticite", "description_it": "Mining Crystals which are suitable for mining Phased Asteroids containing Erratic Ores such as Prismaticite", "description_ja": "プリズマティサイトなどの不安定鉱石を含む、位相偏移アステロイドの採掘に適した採掘用クリスタル。", "description_ko": "프리즈마티사이트와 같은 불안정한 광물이 매장된 위상 소행성 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются при бурении фазовых астероидов, содержащих неустойчивую руду, например призматицит.", "description_zh": "这种采集晶体适合用来开采含有不稳定矿石(例如棱柱岩)的相位小行星。", "descriptionID": 1022863, "hasTypes": 1, "iconID": 27218, "name_de": "Phasenasteroid-Bergbaukristalle", "name_en-us": "Phased Asteroid Mining Crystals", "name_es": "Cristales de minería asteroidal fásicos", "name_fr": "Cristaux d'extraction d'astéroïdes phasiques", "name_it": "Phased Asteroid Mining Crystals", "name_ja": "位相偏移アステロイド採掘用クリスタル", "name_ko": "위상 소행성 채광용 크리스탈", "name_ru": "Буровые кристаллы для фазовых астероидов", "name_zh": "相位小行星矿石采集晶体", "nameID": 1022862, "parentGroupID": 2804 }, "3808": { "description_de": "Bergbaukristalle, die für den Abbau gewöhnlicher Monderze wie Cobaltit, Euxenit, Titanit und Scheelit geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Common Moon Ores such as Cobaltite, Euxenite, Titanite, and Scheelite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas lunares comunes, como cobaltita, euxenita, titanita y scheelita.", "description_fr": "Cristaux d'extraction adaptés pour l'extraction de minerais lunaires communs tels que la cobaltite, l'euxénite, la titanite et la scheelite.", "description_it": "Mining Crystals which are suitable for mining Common Moon Ores such as Cobaltite, Euxenite, Titanite, and Scheelite.", "description_ja": "コバルタイト、ユークセナイト、タイタナイト、そしてシェーライトなどの一般的な衛星資源鉱石の採掘に適した採掘用クリスタル。", "description_ko": "코발타이트, 유크세나이트, 티타나이트, 쉴라이트 등의 일반 위성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче обычных руд со спутников, к которым относятся кобальтит, эвксенит, титанит и шеелит.", "description_zh": "这种采集晶体适合用来开采钴酸盐、黑稀金矿、榍石和白钨矿等普通卫星矿石。", "descriptionID": 1022865, "hasTypes": 1, "iconID": 25027, "name_de": "Gewöhnliche Mond-Bergbaukristalle", "name_en-us": "Common Moon Mining Crystals", "name_es": "Cristales de minería lunar comunes", "name_fr": "Cristaux d'extraction lunaire communs", "name_it": "Common Moon Mining Crystals", "name_ja": "コモン衛星採掘クリスタル", "name_ko": "일반 위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для обычных руд", "name_zh": "普通卫星矿石采集晶体", "nameID": 1022864, "parentGroupID": 2805 }, "3809": { "description_de": "Bergbaukristalle, die für den Abbau von verbreiteten Monderzen wie Zeolith, Sylvin, Bitumen und Coesit geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Ubiquitous Moon Ores such as Zeolites, Sylvite, Bitumens, and Coesite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas lunares universales, como zeolita, silvina, asfalto y coesita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction minière de minerais lunaires très communs, tels que la zéolite, la sylvine, le bitume et la coésite.", "description_it": "Mining Crystals which are suitable for mining Ubiquitous Moon Ores such as Zeolites, Sylvite, Bitumens, and Coesite.", "description_ja": "ゼオライト、シルバイト、ビチューメン、そしてコーサイトなどのユビキタス衛星資源鉱石の採掘に適した採掘用クリスタル。", "description_ko": "제오라이트, 실바이트, 비투멘, 코사이트 등의 저급 위성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче повсеместных руд со спутников, к которым относятся зеолит, сильвин, битум и коэсит.", "description_zh": "这种采集晶体适合用来开采沸石、钾盐、沥青和柯石英等常见卫星矿石。", "descriptionID": 1022869, "hasTypes": 1, "iconID": 25021, "name_de": "Verbreitete Mond-Bergbaukristalle", "name_en-us": "Ubiquitous Moon Mining Crystals", "name_es": "Cristales de minería lunar universales", "name_fr": "Cristaux d'extraction lunaire très communs", "name_it": "Ubiquitous Moon Mining Crystals", "name_ja": "ユビキタス衛星採掘クリスタル", "name_ko": "저급 위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для повсеместных руд", "name_zh": "常见卫星矿石采集晶体", "nameID": 1022868, "parentGroupID": 2805 }, "3810": { "description_de": "Bergbaukristalle, die für den Abbau ungewöhnlicher Monderze wie Otavit, Sperrylith, Vanadinit und Chromit geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Uncommon Moon Ores such as Otavite, Sperrylite, Vanadinite, and Chromite.", "description_es": "Cristales de minería que resultan adecuados para extraer menas lunares inusuales, como otavita, sperrylita, vanadinita y cromita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction de minerais lunaires peu communs tels que l'otavite, la sperrylite, la vanadinite et la chromite.", "description_it": "Mining Crystals which are suitable for mining Uncommon Moon Ores such as Otavite, Sperrylite, Vanadinite, and Chromite.", "description_ja": "オタヴァイト、スぺリライト、バナジナイト、そしてクロマイトなどの希少な衛星資源鉱石の採掘に適した採掘用クリスタル。", "description_ko": "오타바이트, 스페릴라이트, 바나디나이트, 크로마이트 등의 고급 위성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче необычных руд со спутников, к которым относятся отавит, сперрилит, ванадинит и хромит.", "description_zh": "这种采集晶体适合用来开采菱镉矿、砷铂矿、钒铅矿和铬铁矿等罕见卫星矿石。", "descriptionID": 1022871, "hasTypes": 1, "iconID": 25033, "name_de": "Ungewöhnliche Mond-Bergbaukristalle", "name_en-us": "Uncommon Moon Mining Crystals", "name_es": "Cristales de minería lunar inusuales", "name_fr": "Cristaux d'extraction lunaire peu communs", "name_it": "Uncommon Moon Mining Crystals", "name_ja": "アンコモン衛星採掘クリスタル", "name_ko": "고급 위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для необычных руд", "name_zh": "罕见卫星矿石采集晶体", "nameID": 1022870, "parentGroupID": 2805 }, "3811": { "description_de": "Bergbaukristalle, die für den Abbauu seltener Monderze wie Carnotit, Zirkon, Pollucit und Zinnober geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Rare Moon Ores such as Carnotite, Zircon, Pollucite, and Cinnabar.", "description_es": "Cristales de minería que resultan adecuados para extraer menas lunares poco comunes, como carnotita, zircón, polucita y cinabrio.", "description_fr": "Cristaux d'extraction adaptés pour l'extraction de minerais lunaires rares tels que la carnotite, le zircon, la pollucite et le cinabre.", "description_it": "Mining Crystals which are suitable for mining Rare Moon Ores such as Carnotite, Zircon, Pollucite, and Cinnabar.", "description_ja": "カルノタイト、ジルコン、ポリュサイト、そしてシナバーなどのレアな衛星資源鉱石の採掘に適した採掘用クリスタル。", "description_ko": "카르노타이트, 지르콘, 폴루사이트, 시나바르 등의 희귀 위성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче редких руд со спутников, к которым относятся карнотит, циркон, поллуцит и киноварь.", "description_zh": "这种采集晶体适合用来开采钒钾铀矿、锆石、铯榴石和朱砂等稀有卫星矿石。", "descriptionID": 1022873, "hasTypes": 1, "iconID": 25039, "name_de": "Seltene Mond-Bergbaukristalle", "name_en-us": "Rare Moon Mining Crystals", "name_es": "Cristales de minería lunar poco comunes", "name_fr": "Cristaux d'extraction lunaire rares", "name_it": "Rare Moon Mining Crystals", "name_ja": "レア衛星採掘クリスタル", "name_ko": "희귀 위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для редких руд", "name_zh": "稀有卫星矿石采集晶体", "nameID": 1022872, "parentGroupID": 2805 }, "3812": { "description_de": "Bergbaukristalle, die für den Abbau von außergewöhnlichen Monderzen wie Xenotim-, Monazit-, Loparit- und Gadolinit-Erzen geeignet sind.", "description_en-us": "Mining Crystals which are suitable for mining Exceptional Moon Ores such as Xenotime, Monazite, Loparite, and Ytterbite ores.", "description_es": "Cristales de minería que resultan adecuados para extraer menas lunares excepcionales, como xenotima, monacita, loparita y gadolinita.", "description_fr": "Cristaux d'extraction adaptés à l'extraction de minerais lunaires exceptionnels tels que le xénotime, la monazite, la loparite et l'ytterbite.", "description_it": "Mining Crystals which are suitable for mining Exceptional Moon Ores such as Xenotime, Monazite, Loparite, and Ytterbite ores.", "description_ja": "ゼノタイム、モナザイト、ロパライト、そしてイッターバイトなどの特別な衛星資源鉱石の採掘に適した採掘用クリスタル。", "description_ko": "제노타임, 모나자이트, 로파라이트, 이테르바이트 등의 특별 위성 광물 채굴에 적합한 채광용 크리스탈입니다.", "description_ru": "Эти буровые кристаллы используются в добыче исключительных руд со спутников, к которым относятся ксенотим, монацит, лопарит и иттербит.", "description_zh": "这种采集晶体适合用来开采磷钇矿、独居石、铈铌钙钛矿和硅铍钇矿等非凡卫星矿石。", "descriptionID": 1022875, "hasTypes": 1, "iconID": 25045, "name_de": "Außergewöhnliche Mond-Bergbaukristalle", "name_en-us": "Exceptional Moon Mining Crystals", "name_es": "Cristales de minería lunar excepcionales", "name_fr": "Cristaux d'extraction lunaire exceptionnels", "name_it": "Exceptional Moon Mining Crystals", "name_ja": "エクセプショナル衛星採掘クリスタル", "name_ko": "특별 위성 채광용 크리스탈", "name_ru": "Буровые кристаллы для исключительных руд", "name_zh": "非凡卫星矿石采集晶体", "nameID": 1022874, "parentGroupID": 2805 }, "3813": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1030380, "parentGroupID": 2035 }, "3818": { "hasTypes": 1, "iconID": 27058, "name_de": "ORE", "name_en-us": "ORE", "name_es": "ORE", "name_fr": "ORE", "name_it": "ORE", "name_ja": "ORE", "name_ko": "ORE", "name_ru": "ОРЭ", "name_zh": "联合矿业", "nameID": 1030384, "parentGroupID": 2141 }, "3831": { "hasTypes": 1, "iconID": 26518, "name_de": "Spezielle Blaupausenkisten", "name_en-us": "Special Blueprint Crates", "name_es": "Cajas de planos especiales", "name_fr": "Caisses de plans de construction spéciaux", "name_it": "Special Blueprint Crates", "name_ja": "スペシャル設計図箱", "name_ko": "특별 블루프린트 상자", "name_ru": "Контейнеры с особыми чертежами", "name_zh": "特殊蓝图箱", "nameID": 1032623, "parentGroupID": 1661 }, "3832": { "hasTypes": 1, "iconID": 22082, "name_de": "Spezielle kosmetische Kisten", "name_en-us": "Special Cosmetic Crates", "name_es": "Cajas de elementos estéticos especiales", "name_fr": "Caisses d'articles cosmétiques spéciaux", "name_it": "Special Cosmetic Crates", "name_ja": "スペシャルコスメティック箱", "name_ko": "특별 외형 상자", "name_ru": "Контейнеры с особыми декоративными предметами", "name_zh": "特殊装饰箱", "nameID": 1032624, "parentGroupID": 1661 }, "3833": { "hasTypes": 1, "iconID": 1660, "name_de": "Besondere Handelsgegenstände", "name_en-us": "Special Trade Items", "name_es": "Objetos de comercio especiales", "name_fr": "Éléments de commerce spéciaux", "name_it": "Special Trade Items", "name_ja": "スペシャルトレード関連アイテム", "name_ko": "특별 거래 아이템", "name_ru": "Особые предметы на продажу", "name_zh": "特殊交易物品", "nameID": 1032625, "parentGroupID": 1661 }, "3834": { "hasTypes": 0, "iconID": 21898, "name_de": "Event-Besitz", "name_en-us": "Event Assets", "name_es": "Bienes de eventos", "name_fr": "Éléments des événements", "name_it": "Event Assets", "name_ja": "イベント関連資産", "name_ko": "이벤트 자산", "name_ru": "Активы событий", "name_zh": "活动资产", "nameID": 1032626, "parentGroupID": 1661 }, "3835": { "hasTypes": 1, "iconID": 21060, "name_de": "Schmuckstücke und Sonstiges", "name_en-us": "Trinkets and misc.", "name_es": "Oropeles y varios", "name_fr": "Bibelots et objets divers.", "name_it": "Trinkets and misc.", "name_ja": "装飾品およびその他アイテム", "name_ko": "장식품 및 기타", "name_ru": "Сувениры и прочие предметы", "name_zh": "装饰品和杂物", "nameID": 1032627, "parentGroupID": 1661 }, "3836": { "hasTypes": 1, "iconID": 21900, "name_de": "Blutrote-Ernte-Besitz", "name_en-us": "Crimson Harvest Assets", "name_es": "Bienes de la Cosecha Carmesí", "name_fr": "Éléments de la Moisson Pourpre", "name_it": "Crimson Harvest Assets", "name_ja": "クリムゾンハーベスト関連資産", "name_ko": "크림슨 하베스터 자산", "name_ru": "Активы Кровавой жатвы", "name_zh": "血色收割资产", "nameID": 1032628, "parentGroupID": 3834 }, "3837": { "hasTypes": 1, "iconID": 21902, "name_de": "Kapselpilotentag-Besitz", "name_en-us": "Capsuleer Day Assets", "name_es": "Bienes del Día de los Capsulistas", "name_fr": "Éléments du Jour des Capsuliers", "name_it": "Capsuleer Day Assets", "name_ja": "カプセラデー関連資産", "name_ko": "캡슐리어의 날 자산", "name_ru": "Активы «Дня капсулёра»", "name_zh": "克隆飞行员之日资产", "nameID": 1032629, "parentGroupID": 3834 }, "3838": { "hasTypes": 1, "iconID": 21725, "name_de": "Imperiumstage-Besitz", "name_en-us": "Empire Days Assets", "name_es": "Bienes de Días del Imperio", "name_fr": "Éléments des jours des Empires", "name_it": "Empire Days Assets", "name_ja": "四大国家の記念日関連資産", "name_ko": "국가 기념일 자산", "name_ru": "Активы «Дней держав»", "name_zh": "帝国日资产", "nameID": 1032630, "parentGroupID": 3834 }, "3839": { "hasTypes": 1, "iconID": 21901, "name_de": "Gala-der-Wächter-Besitz", "name_en-us": "Guardian's Gala Assets", "name_es": "Bienes de Guardian's Gala", "name_fr": "Éléments du Guardian's Gala", "name_it": "Guardian's Gala Assets", "name_ja": "ガーディアンズガーラ関連資産", "name_ko": "가디언 갈라 자산", "name_ru": "Активы сбора «Хранителей»", "name_zh": "守护者庆典资产", "nameID": 1032631, "parentGroupID": 3834 }, "3840": { "hasTypes": 1, "iconID": 24281, "name_de": "Interstellare-Konvergenz-Besitz", "name_en-us": "Interstellar Convergence Assets", "name_es": "Bienes de Convergencia Interestelar", "name_fr": "Éléments de la Convergence interstellaire", "name_it": "Interstellar Convergence Assets", "name_ja": "星の海での邂逅関連資産", "name_ko": "인터스텔라 컨버젼스 자산", "name_ru": "Активы «Межзвёздной конвергенции»", "name_zh": "星际聚合资产", "nameID": 1032632, "parentGroupID": 3834 }, "3841": { "hasTypes": 1, "iconID": 21899, "name_de": "Winter-Nexus-Besitz", "name_en-us": "Winter Nexus Assets", "name_es": "Bienes de Nexus Invernal", "name_fr": "Éléments du Winter Nexus", "name_it": "Winter Nexus Assets", "name_ja": "Winter Nexus関連資産", "name_ko": "겨울 넥서스 자산", "name_ru": "Активы Winter Nexus", "name_zh": "凛冬将至资产", "nameID": 1032633, "parentGroupID": 3834 }, "3845": { "hasTypes": 1, "iconID": 21832, "name_de": "Besitz – Wahl der Gallente", "name_en-us": "Gallente Election Assets", "name_es": "Bienes de elecciones gallente", "name_fr": "Ressources électorales gallente", "name_it": "Gallente Election Assets", "name_ja": "ガレンテ大選挙のアセット", "name_ko": "갈란테 선거 자원", "name_ru": "Материалы галлентских выборов", "name_zh": "盖伦特选举资产", "nameID": 1035664, "parentGroupID": 3834 }, "3846": { "hasTypes": 1, "iconID": 27345, "name_de": "Porträthintergründe", "name_en-us": "Portrait Backgrounds", "name_es": "Fondos de retrato", "name_fr": "Arrière-plans de portrait", "name_it": "Portrait Backgrounds", "name_ja": "ポートレイト背景", "name_ko": "초상화 배경", "name_ru": "Фоны для портретов", "name_zh": "人像背景", "nameID": 1037311, "parentGroupID": 1396 }, "3851": { "hasTypes": 1, "iconID": 21920, "name_de": "Extra Large", "name_en-us": "Extra Large", "name_es": "Extra Large", "name_fr": "Extra Large", "name_it": "Extra Large", "name_ja": "Extra Large", "name_ko": "Extra Large", "name_ru": "Extra Large", "name_zh": "Extra Large", "nameID": 1040825, "parentGroupID": 2464 } } ================================================ FILE: staticdata/fsd_built/metagroups.0.json ================================================ { "1": { "color": { "a": 1.0, "b": 0.04313725605607033, "g": 0.6666666865348816, "r": 0.7803921699523926 }, "name_de": "Tech I", "name_en-us": "Tech I", "name_es": "T1", "name_fr": "Tech I", "name_it": "Tech I", "name_ja": "T1", "name_ko": "테크 I", "name_ru": "Tech I", "name_zh": "一级科技", "nameID": 66672 }, "2": { "color": { "a": 1.0, "b": 0.003921568859368563, "g": 0.3803921639919281, "r": 0.6196078658103943 }, "iconID": 24150, "iconSuffix": "t2", "name_de": "Tech II", "name_en-us": "Tech II", "name_es": "T2", "name_fr": "Tech II", "name_it": "Tech II", "name_ja": "T2", "name_ko": "테크 II", "name_ru": "Tech II", "name_zh": "二级科技", "nameID": 66673 }, "3": { "color": { "a": 1.0, "b": 0.11764705926179886, "g": 0.4313725531101227, "r": 0.2666666805744171 }, "iconID": 24147, "iconSuffix": "storyline", "name_de": "Geschichte", "name_en-us": "Storyline", "name_es": "Historia", "name_fr": "Scénario", "name_it": "Storyline", "name_ja": "ストーリーライン", "name_ko": "스토리라인", "name_ru": "Наградные", "name_zh": "故事线", "nameID": 66674 }, "4": { "color": { "a": 1.0, "b": 0.05098039284348488, "g": 0.27843138575553894, "r": 0.06666667014360428 }, "iconID": 24146, "iconSuffix": "faction", "name_de": "Fraktion", "name_en-us": "Faction", "name_es": "Facción", "name_fr": "Faction", "name_it": "Faction", "name_ja": "勢力", "name_ko": "팩션", "name_ru": "Особых модификаций", "name_zh": "势力", "nameID": 66675 }, "5": { "color": { "a": 1.0, "b": 0.45098039507865906, "g": 0.054901961237192154, "r": 0.20392157137393951 }, "iconID": 24149, "iconSuffix": "officer", "name_de": "Offizier", "name_en-us": "Officer", "name_es": "Oficial", "name_fr": "Officier", "name_it": "Officer", "name_ja": "士官", "name_ko": "장교급", "name_ru": "Командирские", "name_zh": "官员", "nameID": 66676 }, "6": { "color": { "a": 1.0, "b": 0.545098066329956, "g": 0.27843138575553894, "r": 0.16078431904315948 }, "description_de": "Module, die man in Raumverwerfungen findet.", "description_en-us": "Modules found in deadspace.", "description_es": "Módulos encontrados en el espacio muerto.", "description_fr": "Modules figurant dans le Deadspace.", "description_it": "Modules found in deadspace.", "description_ja": "デッドスペースで見つかったモジュール。", "description_ko": "데드스페이스에서 발견되는 모듈입니다.", "description_ru": "Модули дэдспейса.", "description_zh": "死亡空间里的装备", "descriptionID": 66671, "iconID": 24148, "iconSuffix": "deadspace", "name_de": "Raumverwerfung", "name_en-us": "Deadspace", "name_es": "Espacio muerto", "name_fr": "Deadspace", "name_it": "Deadspace", "name_ja": "デッドスペース", "name_ko": "데드스페이스", "name_ru": "Экспериментальные", "name_zh": "死亡空间", "nameID": 66677 }, "14": { "color": { "a": 1.0, "b": 0.0117647061124444, "g": 0.22745098173618317, "r": 0.6235294342041016 }, "iconID": 24151, "iconSuffix": "t3", "name_de": "Tech III", "name_en-us": "Tech III", "name_es": "T3", "name_fr": "Tech III", "name_it": "Tech III", "name_ja": "T3", "name_ko": "테크 III", "name_ru": "Tech III", "name_zh": "三级科技", "nameID": 66685 }, "15": { "color": { "a": 1.0, "b": 0.125490203499794, "g": 0.125490203499794, "r": 0.529411792755127 }, "iconID": 24152, "iconSuffix": "abyssal", "name_de": "Abgrund", "name_en-us": "Abyssal", "name_es": "Abisal", "name_fr": "Abîme", "name_it": "Abyssal", "name_ja": "アビサル", "name_ko": "어비설", "name_ru": "Бездна", "name_zh": "深渊", "nameID": 317771 }, "17": { "color": { "a": 1.0, "b": 0.8549019694328308, "g": 0.34117648005485535, "r": 0.6196078658103943 }, "description_de": "Dieser Gegenstand ist nur über den New Eden Store oder exklusive Angebote verfügbar.", "description_en-us": "This item is only available through the New Eden Store or exclusive offers.", "description_es": "Este objeto solo está disponible a través de la tienda de Nuevo Edén u ofertas exclusivas.", "description_fr": "Cet objet n'est disponible que dans le magasin New Eden ou lors d'offres exclusives.", "description_it": "This item is only available through the New Eden Store or exclusive offers.", "description_ja": "このアイテムは、ニューエデンストアまたは限定特典でしか手に入らないアイテムです。", "description_ko": "뉴에덴 스토어 및 특별한 오퍼를 통해서만 획득가능한 아이템입니다.", "description_ru": "Этот предмет доступен только в игровом магазине и в составе эксклюзивного предложения.", "description_zh": "此物品只能通过新伊甸商城或专享活动获得。", "descriptionID": 317894, "iconID": 24153, "iconSuffix": "premium", "name_de": "Premium", "name_en-us": "Premium", "name_es": "Prémium", "name_fr": "Premium", "name_it": "Premium", "name_ja": "プレミアム", "name_ko": "프리미엄", "name_ru": "Эксклюзив", "name_zh": "高级", "nameID": 317893 }, "19": { "color": { "a": 1.0, "b": 0.8745098114013672, "g": 0.7058823704719543, "r": 0.18039216101169586 }, "description_de": "Dieser Gegenstand ist nur für eine begrenzte Zeit verfügbar.", "description_en-us": "This item is only available for a limited time.", "description_es": "Este objeto solo está disponible durante un tiempo limitado.", "description_fr": "Cet objet n'est disponible que pour une durée limitée.", "description_it": "This item is only available for a limited time.", "description_ja": "このアイテムは期間限定です。", "description_ko": "한정판 아이템입니다.", "description_ru": "Этот предмет доступен только в течение ограниченного времени.", "description_zh": "此物品只能在特定的有限时间内获得。", "descriptionID": 317896, "iconID": 24154, "iconSuffix": "limited", "name_de": "Begrenzte Zeit", "name_en-us": "Limited Time", "name_es": "Tiempo limitado", "name_fr": "Durée limitée", "name_it": "Limited Time", "name_ja": "期間限定", "name_ko": "한정기간", "name_ru": "Ограниченное время", "name_zh": "限时提供", "nameID": 317895 }, "52": { "iconID": 24155, "iconSuffix": "struct_faction", "name_de": "Strukturfraktion", "name_en-us": "Structure Faction", "name_es": "Estructura faccionaria", "name_fr": "Faction de structure", "name_it": "Structure Faction", "name_ja": "ストラクチャ勢力", "name_ko": "팩션 구조물", "name_ru": "Армейское сооружение", "name_zh": "势力建筑", "nameID": 550638 }, "53": { "iconID": 24156, "iconSuffix": "struct_t2", "name_de": "Strukturtechnologie II", "name_en-us": "Structure Tech II", "name_es": "Estructura T2", "name_fr": "Structure de Tech II", "name_it": "Structure Tech II", "name_ja": "ストラクチャT2", "name_ko": "구조물 테크 II", "name_ru": "Сооружение второй техкатегории", "name_zh": "二级科技建筑", "nameID": 550639 }, "54": { "iconID": 24157, "iconSuffix": "struct", "name_de": "Strukturtechnologie I", "name_en-us": "Structure Tech I", "name_es": "Estructura T1", "name_fr": "Structure de Tech I", "name_it": "Structure Tech I", "name_ja": "ストラクチャT1", "name_ko": "구조물 테크 I", "name_ru": "Сооружение первой техкатегории", "name_zh": "一级科技建筑", "nameID": 550644 } } ================================================ FILE: staticdata/fsd_built/requiredskillsfortypes.0.json ================================================ { "18": { "3386": 1 }, "19": { "3386": 1 }, "20": { "3386": 1 }, "21": { "3386": 1 }, "22": { "3386": 1 }, "50": { "3319": 1, "3326": 4 }, "202": { "3319": 1, "3326": 1 }, "203": { "3319": 1, "3326": 1 }, "204": { "3319": 1, "3326": 1 }, "205": { "3319": 1, "3326": 1 }, "206": { "3319": 1, "3324": 1 }, "207": { "3319": 1, "3324": 1 }, "208": { "3319": 1, "3324": 1 }, "209": { "3319": 1, "3324": 1 }, "210": { "3319": 1, "3321": 1 }, "211": { "3319": 1, "3321": 1 }, "212": { "3319": 1, "3321": 1 }, "213": { "3319": 1, "3321": 1 }, "266": { "3319": 1, "3320": 1 }, "267": { "3319": 1, "3325": 1 }, "269": { "3319": 1, "3321": 1, "3322": 1 }, "270": { "3319": 1 }, "377": { "3425": 1 }, "380": { "3425": 3 }, "393": { "3425": 3 }, "394": { "3425": 4 }, "399": { "3416": 1 }, "400": { "3416": 3 }, "405": { "3422": 1 }, "406": { "3422": 2 }, "421": { "3424": 2 }, "434": { "3454": 1 }, "438": { "3450": 4 }, "439": { "3450": 1 }, "440": { "3454": 3 }, "442": { "3426": 1 }, "443": { "3426": 1 }, "444": { "3426": 1 }, "447": { "3435": 1, "3449": 1 }, "448": { "3435": 2, "3449": 1 }, "450": { "3300": 1, "3303": 1 }, "451": { "3300": 1, "3303": 1 }, "452": { "3300": 1, "3303": 1 }, "453": { "3300": 1, "3303": 1 }, "454": { "3300": 1, "3303": 1 }, "455": { "3300": 3, "3306": 1 }, "456": { "3300": 3, "3306": 1 }, "457": { "3300": 3, "3306": 1 }, "458": { "3300": 3, "3306": 1 }, "459": { "3300": 3, "3306": 1 }, "460": { "3300": 5, "3309": 1 }, "461": { "3300": 5, "3309": 1 }, "462": { "3300": 5, "3309": 1 }, "463": { "3300": 5, "3309": 1 }, "464": { "3300": 5, "3309": 1 }, "482": { "3386": 4 }, "483": { "3386": 1 }, "484": { "3300": 1, "3302": 1 }, "485": { "3300": 1, "3302": 1 }, "486": { "3300": 1, "3302": 1 }, "487": { "3300": 1, "3302": 1 }, "488": { "3300": 1, "3302": 1 }, "489": { "3300": 3, "3305": 1 }, "490": { "3300": 3, "3305": 1 }, "491": { "3300": 3, "3305": 1 }, "492": { "3300": 3, "3305": 1 }, "493": { "3300": 3, "3305": 1 }, "494": { "3300": 5, "3308": 1 }, "495": { "3300": 5, "3308": 1 }, "496": { "3300": 5, "3308": 1 }, "497": { "3300": 5, "3308": 1 }, "498": { "3300": 5, "3308": 1 }, "499": { "3319": 1, "3321": 1 }, "501": { "3319": 1, "3324": 1 }, "503": { "3319": 1, "3325": 1 }, "506": { "3424": 1 }, "508": { "3424": 1 }, "509": { "3424": 1 }, "518": { "3318": 1 }, "519": { "3318": 4 }, "520": { "3318": 1 }, "521": { "3392": 1 }, "522": { "3413": 1 }, "523": { "3392": 1, "3393": 1 }, "524": { "3392": 1, "3393": 1 }, "526": { "3435": 1 }, "527": { "3435": 4 }, "529": { "3423": 1 }, "530": { "3423": 1 }, "533": { "3423": 1 }, "561": { "3300": 1, "3301": 1 }, "562": { "3300": 1, "3301": 1 }, "563": { "3300": 1, "3301": 1 }, "564": { "3300": 1, "3301": 1 }, "565": { "3300": 1, "3301": 1 }, "566": { "3300": 3, "3304": 1 }, "567": { "3300": 3, "3304": 1 }, "568": { "3300": 3, "3304": 1 }, "569": { "3300": 3, "3304": 1 }, "570": { "3300": 3, "3304": 1 }, "571": { "3300": 5, "3307": 1 }, "572": { "3300": 5, "3307": 1 }, "573": { "3300": 5, "3307": 1 }, "574": { "3300": 5, "3307": 1 }, "575": { "3300": 5, "3307": 1 }, "577": { "3417": 1 }, "578": { "3420": 1 }, "580": { "3427": 1 }, "581": { "3429": 1 }, "582": { "3330": 1 }, "583": { "3330": 1 }, "584": { "3330": 1 }, "585": { "3329": 1 }, "586": { "3329": 1 }, "587": { "3329": 1 }, "588": { "3327": 1 }, "589": { "3331": 1 }, "590": { "3331": 1 }, "591": { "3331": 1 }, "592": { "3328": 1 }, "593": { "3328": 1 }, "594": { "3328": 1 }, "595": { "3328": 3 }, "596": { "3327": 1 }, "597": { "3331": 1 }, "598": { "3329": 1 }, "599": { "3329": 1 }, "600": { "3329": 3 }, "601": { "3327": 1 }, "602": { "3330": 1 }, "603": { "3330": 1 }, "605": { "3330": 1 }, "606": { "3327": 1 }, "607": { "3328": 1 }, "608": { "3328": 1 }, "609": { "3328": 1 }, "613": { "3755": 4 }, "614": { "3755": 1 }, "615": { "3327": 1 }, "616": { "3755": 1 }, "617": { "3327": 1 }, "618": { "3755": 1 }, "619": { "3755": 4 }, "620": { "3334": 1 }, "621": { "3334": 1 }, "622": { "3333": 1 }, "623": { "3334": 1 }, "624": { "3335": 1 }, "625": { "3335": 1 }, "626": { "3332": 1 }, "627": { "3332": 1 }, "628": { "3335": 1 }, "629": { "3333": 1 }, "630": { "3333": 1 }, "631": { "3333": 1 }, "632": { "3334": 1 }, "633": { "3332": 1 }, "634": { "3332": 1 }, "635": { "3332": 1 }, "638": { "3338": 1 }, "639": { "3337": 1 }, "640": { "3338": 1 }, "641": { "3336": 1 }, "642": { "3339": 1 }, "643": { "3339": 1 }, "644": { "3337": 1 }, "645": { "3336": 1 }, "648": { "3342": 1 }, "649": { "3342": 1 }, "650": { "3340": 1 }, "651": { "3341": 1 }, "652": { "3341": 1 }, "653": { "3341": 1 }, "654": { "3340": 1 }, "655": { "3340": 1 }, "656": { "3340": 1 }, "657": { "3340": 1 }, "671": { "3344": 1, "20533": 5 }, "672": { "3327": 1 }, "1182": { "3429": 1 }, "1183": { "3392": 3, "3393": 3 }, "1185": { "3424": 1 }, "1190": { "3423": 4 }, "1192": { "3392": 1 }, "1193": { "3392": 2 }, "1195": { "3424": 2 }, "1197": { "3394": 1 }, "1198": { "3394": 4 }, "1201": { "3436": 5, "3441": 1 }, "1202": { "3386": 2, "3436": 1, "3438": 1 }, "1223": { "3386": 1 }, "1224": { "3386": 1 }, "1225": { "3386": 1 }, "1226": { "3386": 1 }, "1227": { "3386": 1 }, "1228": { "3386": 1 }, "1229": { "3386": 1 }, "1230": { "3386": 1 }, "1231": { "3386": 1 }, "1232": { "3386": 1 }, "1233": { "19430": 5 }, "1236": { "3394": 2 }, "1240": { "3392": 1 }, "1242": { "3392": 1 }, "1244": { "3394": 1 }, "1246": { "3424": 3 }, "1248": { "3424": 4 }, "1254": { "3424": 2 }, "1256": { "3424": 4 }, "1262": { "3392": 2 }, "1264": { "3394": 1 }, "1266": { "3394": 4 }, "1272": { "3392": 2 }, "1274": { "3394": 1 }, "1276": { "3394": 4 }, "1282": { "3392": 2 }, "1284": { "3394": 1 }, "1286": { "3394": 4 }, "1292": { "3392": 2 }, "1294": { "3394": 1 }, "1296": { "3394": 4 }, "1302": { "3392": 2 }, "1304": { "3394": 1 }, "1306": { "3394": 4 }, "1315": { "3392": 1 }, "1317": { "3394": 1 }, "1319": { "3394": 2 }, "1333": { "3394": 1 }, "1335": { "3394": 2 }, "1351": { "3424": 1 }, "1353": { "3424": 2 }, "1355": { "3424": 5 }, "1401": { "3392": 1 }, "1403": { "3394": 1 }, "1405": { "3394": 2 }, "1419": { "3424": 1 }, "1422": { "3424": 4 }, "1436": { "3429": 4 }, "1445": { "3424": 2 }, "1447": { "3424": 4 }, "1537": { "3424": 1 }, "1539": { "3424": 2 }, "1541": { "3424": 4 }, "1547": { "3421": 1 }, "1549": { "3421": 3 }, "1551": { "3421": 1 }, "1553": { "3421": 3 }, "1557": { "3421": 1 }, "1559": { "3421": 3 }, "1563": { "3421": 1 }, "1565": { "3421": 3 }, "1798": { "3413": 1 }, "1800": { "3413": 1 }, "1802": { "3413": 1 }, "1804": { "3413": 1 }, "1808": { "3425": 1 }, "1810": { "3319": 1, "3321": 1, "3322": 1 }, "1814": { "3319": 1, "3321": 1, "3322": 1 }, "1816": { "3319": 1, "3321": 1, "3322": 1 }, "1818": { "3319": 1, "3322": 1, "3324": 1 }, "1820": { "3319": 1, "3322": 1, "3324": 1 }, "1822": { "3319": 1, "3322": 1, "3324": 1 }, "1824": { "3319": 1, "3322": 1, "3324": 1 }, "1826": { "3319": 1, "3322": 1, "3326": 1 }, "1828": { "3319": 1, "3322": 1, "3326": 1 }, "1830": { "3319": 1, "3322": 1, "3326": 1 }, "1832": { "3319": 1, "3322": 1, "3326": 1 }, "1855": { "3426": 2 }, "1875": { "3319": 1, "3321": 1 }, "1877": { "3319": 3, "20210": 1 }, "1893": { "3318": 1 }, "1896": { "3755": 5 }, "1898": { "3755": 5 }, "1900": { "3755": 5 }, "1902": { "3755": 5 }, "1904": { "3335": 1 }, "1912": { "10264": 3 }, "1914": { "10264": 3 }, "1916": { "10264": 3 }, "1918": { "10264": 3 }, "1944": { "3343": 1 }, "1946": { "3426": 1 }, "1947": { "3427": 1 }, "1948": { "3427": 1 }, "1949": { "3426": 1 }, "1951": { "3318": 1 }, "1952": { "3428": 4 }, "1955": { "3427": 1 }, "1956": { "3427": 1 }, "1957": { "3427": 1 }, "1958": { "3427": 1 }, "1959": { "3427": 1 }, "1960": { "3427": 4 }, "1963": { "3433": 1 }, "1964": { "3433": 4 }, "1968": { "3433": 1 }, "1969": { "3433": 4 }, "1973": { "3428": 1 }, "1977": { "3317": 1 }, "1978": { "3317": 4 }, "1982": { "3426": 1 }, "1983": { "3426": 1 }, "1984": { "3426": 1 }, "1985": { "3426": 1 }, "1986": { "3432": 1 }, "1987": { "3432": 5 }, "1998": { "3318": 1 }, "1999": { "3318": 4 }, "2002": { "3427": 1 }, "2003": { "3427": 1 }, "2004": { "3427": 1 }, "2005": { "3427": 1 }, "2006": { "3335": 1 }, "2018": { "3424": 1 }, "2020": { "3424": 2 }, "2022": { "3424": 2 }, "2024": { "3417": 4 }, "2032": { "3424": 3 }, "2038": { "3426": 2 }, "2046": { "3394": 1 }, "2048": { "3394": 4 }, "2050": { "3420": 1 }, "2078": { "3327": 1 }, "2082": { "3411": 2 }, "2083": { "3412": 1 }, "2103": { "3433": 1 }, "2104": { "3433": 4 }, "2108": { "3434": 1 }, "2109": { "3434": 4 }, "2117": { "3427": 4 }, "2129": { "2505": 1 }, "2130": { "2505": 2 }, "2131": { "2505": 3 }, "2132": { "2505": 4 }, "2133": { "2505": 5 }, "2134": { "2505": 1 }, "2135": { "2505": 2 }, "2136": { "2505": 3 }, "2137": { "2505": 4 }, "2138": { "2505": 5 }, "2139": { "2505": 1 }, "2140": { "2505": 2 }, "2141": { "2505": 3 }, "2142": { "2505": 4 }, "2143": { "2505": 5 }, "2144": { "2505": 1 }, "2145": { "2505": 2 }, "2146": { "2505": 3 }, "2147": { "2505": 4 }, "2148": { "2505": 5 }, "2149": { "2505": 1 }, "2150": { "2505": 2 }, "2151": { "2505": 3 }, "2152": { "2505": 4 }, "2153": { "2505": 5 }, "2154": { "2505": 1 }, "2155": { "2505": 2 }, "2156": { "2505": 3 }, "2157": { "2505": 4 }, "2158": { "2505": 5 }, "2159": { "2505": 1 }, "2160": { "2505": 2 }, "2161": { "3331": 1 }, "2165": { "3319": 1, "3326": 1 }, "2173": { "3436": 3, "33699": 1 }, "2175": { "3436": 5, "12484": 1, "33699": 5 }, "2178": { "3319": 1, "32435": 1 }, "2180": { "3319": 1, "32435": 1 }, "2182": { "3319": 1, "32435": 1 }, "2183": { "3436": 3, "33699": 1 }, "2185": { "3436": 5, "12486": 1, "33699": 5 }, "2188": { "3319": 1, "32435": 1 }, "2193": { "3436": 5, "3441": 1 }, "2195": { "3436": 5, "3441": 5, "12484": 1 }, "2203": { "3436": 1, "24241": 1 }, "2205": { "3436": 5, "12484": 1, "24241": 5 }, "2210": { "3319": 1, "3325": 1 }, "2212": { "3319": 1, "3324": 1 }, "2258": { "3427": 4 }, "2259": { "3427": 4 }, "2260": { "3427": 4 }, "2261": { "3427": 4 }, "2262": { "3427": 4 }, "2281": { "3420": 4 }, "2289": { "3420": 1 }, "2291": { "3420": 1 }, "2293": { "3420": 1 }, "2295": { "3420": 1 }, "2297": { "3420": 4 }, "2299": { "3420": 4 }, "2301": { "3420": 4 }, "2303": { "3420": 4 }, "2331": { "3424": 2 }, "2333": { "3426": 2 }, "2341": { "3429": 2 }, "2355": { "3392": 1, "3393": 2 }, "2363": { "3318": 1 }, "2364": { "3318": 4 }, "2403": { "2406": 4 }, "2404": { "3319": 3, "20210": 1 }, "2406": { "3402": 4, "13279": 3 }, "2410": { "3319": 4, "20211": 1 }, "2420": { "3319": 4, "20213": 1 }, "2436": { "3436": 5, "3441": 5, "12487": 1 }, "2444": { "3436": 5, "3441": 1 }, "2446": { "3436": 5, "3441": 5, "12486": 1 }, "2454": { "3436": 1, "24241": 1 }, "2456": { "3436": 5, "12486": 1, "24241": 5 }, "2464": { "3436": 1, "24241": 1 }, "2466": { "3436": 5, "12487": 1, "24241": 5 }, "2476": { "3436": 5, "3441": 1 }, "2478": { "3436": 5, "3441": 5, "12485": 1 }, "2486": { "3436": 1, "24241": 1 }, "2488": { "3436": 5, "12485": 1, "24241": 5 }, "2506": { "3319": 1, "3325": 1 }, "2508": { "3319": 1, "3325": 1 }, "2510": { "3319": 1, "3325": 1 }, "2512": { "3319": 1, "3320": 1 }, "2514": { "3319": 1, "3320": 1 }, "2516": { "3319": 1, "3320": 1 }, "2528": { "9955": 1 }, "2529": { "3425": 1 }, "2531": { "3425": 4 }, "2537": { "3425": 1 }, "2539": { "3425": 4 }, "2545": { "3425": 1 }, "2547": { "3425": 4 }, "2553": { "3425": 4 }, "2559": { "3427": 4 }, "2563": { "3427": 4 }, "2567": { "3427": 4 }, "2571": { "3427": 4 }, "2574": { "2505": 3 }, "2575": { "3427": 4 }, "2576": { "2505": 4 }, "2577": { "2505": 5 }, "2578": { "2505": 1 }, "2579": { "3432": 1 }, "2580": { "3432": 3 }, "2581": { "2505": 2 }, "2582": { "2505": 3 }, "2583": { "3432": 1 }, "2584": { "3432": 3 }, "2585": { "2505": 4 }, "2586": { "2505": 5 }, "2587": { "3432": 1 }, "2588": { "3432": 3 }, "2589": { "3411": 2 }, "2591": { "3432": 1 }, "2592": { "3432": 3 }, "2603": { "3394": 1 }, "2605": { "3394": 2 }, "2613": { "3319": 5, "3321": 5, "20210": 1 }, "2621": { "3319": 5, "3326": 5, "20212": 1 }, "2629": { "3319": 5, "3324": 5, "20211": 1 }, "2637": { "3319": 5, "3326": 5, "20212": 1 }, "2647": { "3319": 5, "3321": 5, "20210": 1 }, "2655": { "3319": 5, "3324": 5, "20211": 1 }, "2679": { "3319": 5, "25718": 1, "25719": 5 }, "2801": { "3319": 5, "3325": 5, "20213": 1 }, "2811": { "3319": 5, "3325": 5, "20213": 1 }, "2817": { "3319": 5, "3320": 5, "20209": 1 }, "2834": { "3328": 5, "12095": 1 }, "2836": { "3332": 5, "16591": 1 }, "2838": { "3402": 1 }, "2850": { "25863": 1 }, "2865": { "3300": 5, "3308": 5, "12203": 1 }, "2873": { "3300": 2, "3302": 5, "11084": 1 }, "2881": { "3300": 2, "3302": 5, "11084": 1 }, "2889": { "3300": 2, "3302": 5, "11084": 1 }, "2897": { "3300": 3, "3305": 5, "12208": 1 }, "2905": { "3300": 2, "3302": 5, "12201": 1 }, "2913": { "3300": 3, "3305": 5, "12208": 1 }, "2921": { "3300": 3, "3305": 5, "12202": 1 }, "2929": { "3300": 5, "3308": 5, "12209": 1 }, "2937": { "3300": 3, "3305": 5, "12208": 1 }, "2945": { "3300": 5, "3308": 5, "12209": 1 }, "2948": { "23069": 1, "32339": 1 }, "2953": { "3300": 5, "3308": 5, "12209": 1 }, "2961": { "3300": 5, "3308": 5, "12203": 1 }, "2969": { "3300": 3, "3305": 5, "12202": 1 }, "2977": { "3300": 2, "3302": 5, "12201": 1 }, "2985": { "3300": 5, "3309": 5, "12205": 1 }, "2993": { "3300": 1, "3303": 5, "11083": 1 }, "2998": { "3184": 1, "3402": 1, "25863": 1 }, "3001": { "3300": 1, "3303": 5, "12213": 1 }, "3009": { "3300": 3, "3306": 5, "12204": 1 }, "3017": { "3300": 1, "3303": 5, "12213": 1 }, "3025": { "3300": 3, "3306": 5, "12204": 1 }, "3033": { "3300": 1, "3303": 5, "11083": 1 }, "3041": { "3300": 1, "3303": 5, "12213": 1 }, "3049": { "3300": 5, "3309": 5, "12205": 1 }, "3057": { "3300": 5, "3309": 5, "12215": 1 }, "3065": { "3300": 5, "3309": 5, "12205": 1 }, "3074": { "3300": 1, "3301": 5, "11082": 1 }, "3077": { "3411": 1 }, "3078": { "3411": 3 }, "3079": { "3411": 5 }, "3080": { "3411": 1 }, "3081": { "3411": 3 }, "3082": { "3300": 3, "3304": 5, "12206": 1 }, "3084": { "3411": 5 }, "3085": { "3411": 1 }, "3086": { "3411": 3 }, "3087": { "3411": 5 }, "3088": { "3411": 1 }, "3089": { "3411": 3 }, "3090": { "3300": 5, "3307": 5, "12207": 1 }, "3092": { "3411": 5 }, "3093": { "3411": 1 }, "3094": { "3411": 3 }, "3095": { "3411": 5 }, "3096": { "3411": 1 }, "3097": { "3411": 3 }, "3098": { "3300": 1, "3301": 5, "11082": 1 }, "3100": { "3411": 5 }, "3101": { "3411": 1 }, "3102": { "3411": 3 }, "3103": { "3411": 5 }, "3104": { "3411": 1 }, "3105": { "3411": 3 }, "3106": { "3300": 3, "3304": 5, "12206": 1 }, "3108": { "3411": 5 }, "3109": { "3411": 1 }, "3110": { "3411": 3 }, "3111": { "3411": 5 }, "3112": { "3411": 1 }, "3113": { "3411": 3 }, "3114": { "3300": 5, "3307": 5, "12207": 1 }, "3116": { "3411": 5 }, "3117": { "3411": 1 }, "3118": { "3411": 3 }, "3119": { "3411": 5 }, "3120": { "3411": 1 }, "3121": { "3411": 3 }, "3122": { "3300": 5, "3307": 5, "12212": 1 }, "3124": { "3411": 5 }, "3125": { "3411": 1 }, "3126": { "3411": 3 }, "3127": { "3411": 5 }, "3128": { "3411": 1 }, "3129": { "3411": 3 }, "3130": { "3300": 3, "3304": 5, "12211": 1 }, "3132": { "3411": 5 }, "3133": { "3411": 1 }, "3134": { "3411": 3 }, "3135": { "3411": 5 }, "3136": { "3411": 1 }, "3137": { "3411": 3 }, "3138": { "3300": 3, "3304": 5, "12211": 1 }, "3140": { "3411": 5 }, "3141": { "3411": 1 }, "3142": { "3411": 3 }, "3143": { "3411": 5 }, "3144": { "3411": 1 }, "3145": { "3411": 3 }, "3146": { "3300": 3, "3304": 5, "12211": 1 }, "3148": { "3411": 5 }, "3149": { "3411": 1 }, "3150": { "3411": 3 }, "3151": { "3411": 5 }, "3152": { "3411": 1 }, "3153": { "3411": 3 }, "3154": { "3300": 5, "3307": 5, "12212": 1 }, "3156": { "3411": 5 }, "3157": { "3411": 1 }, "3158": { "3411": 3 }, "3159": { "3411": 5 }, "3160": { "3411": 1 }, "3161": { "3411": 3 }, "3162": { "3300": 1, "3301": 5, "12210": 1 }, "3164": { "3411": 5 }, "3165": { "3411": 1 }, "3166": { "3411": 3 }, "3167": { "3411": 5 }, "3168": { "3411": 1 }, "3169": { "3411": 3 }, "3170": { "3300": 1, "3301": 5, "12210": 1 }, "3172": { "3411": 5 }, "3173": { "3411": 1 }, "3174": { "3411": 3 }, "3175": { "3411": 5 }, "3176": { "3411": 1 }, "3177": { "3411": 3 }, "3178": { "3300": 1, "3301": 5, "12210": 1 }, "3180": { "3411": 5 }, "3181": { "3411": 1 }, "3182": { "3411": 3 }, "3183": { "3411": 5 }, "3184": { "3327": 3 }, "3185": { "3411": 1 }, "3186": { "3300": 5, "3307": 5, "12212": 1 }, "3188": { "3411": 3 }, "3189": { "3411": 5 }, "3190": { "3411": 1 }, "3191": { "3411": 3 }, "3192": { "3411": 5 }, "3193": { "3411": 1 }, "3194": { "3411": 3 }, "3195": { "3411": 5 }, "3196": { "3411": 1 }, "3197": { "3411": 3 }, "3198": { "3411": 5 }, "3199": { "3411": 1 }, "3200": { "3411": 3 }, "3201": { "3411": 5 }, "3202": { "3411": 1 }, "3203": { "3411": 1 }, "3204": { "3411": 1 }, "3205": { "3411": 1 }, "3206": { "3411": 1 }, "3207": { "3411": 1 }, "3208": { "3411": 1 }, "3209": { "3411": 2 }, "3210": { "3411": 3 }, "3211": { "3411": 2 }, "3212": { "3411": 3 }, "3213": { "3411": 3 }, "3214": { "3411": 4 }, "3215": { "3411": 5 }, "3216": { "3411": 4 }, "3217": { "3411": 1 }, "3218": { "3386": 2, "3436": 1, "3438": 1 }, "3220": { "3411": 1 }, "3221": { "3411": 3 }, "3222": { "3411": 1 }, "3223": { "3411": 3 }, "3224": { "3411": 5 }, "3225": { "3411": 1 }, "3226": { "3411": 1 }, "3227": { "3411": 3 }, "3228": { "3411": 1 }, "3229": { "3411": 3 }, "3230": { "3411": 5 }, "3231": { "3411": 1 }, "3232": { "3411": 2 }, "3233": { "3411": 4 }, "3234": { "3411": 2 }, "3235": { "3411": 4 }, "3236": { "3411": 1 }, "3237": { "3411": 1 }, "3238": { "3411": 3 }, "3239": { "3411": 5 }, "3240": { "3411": 1 }, "3241": { "3411": 3 }, "3242": { "3435": 1 }, "3244": { "3435": 2 }, "3246": { "3411": 5 }, "3247": { "3411": 1 }, "3248": { "3411": 3 }, "3249": { "3411": 5 }, "3250": { "3411": 1 }, "3251": { "3411": 3 }, "3252": { "3411": 5 }, "3253": { "3411": 1 }, "3254": { "3411": 3 }, "3255": { "3411": 5 }, "3256": { "3411": 1 }, "3257": { "3411": 3 }, "3258": { "3411": 5 }, "3261": { "21718": 1 }, "3262": { "3411": 1 }, "3263": { "3411": 3 }, "3264": { "3411": 5 }, "3265": { "3411": 1 }, "3266": { "3411": 3 }, "3267": { "3411": 5 }, "3268": { "3411": 1 }, "3269": { "3411": 3 }, "3270": { "3411": 5 }, "3271": { "3411": 1 }, "3272": { "3411": 3 }, "3273": { "3411": 5 }, "3274": { "3411": 1 }, "3275": { "3411": 3 }, "3276": { "3411": 5 }, "3277": { "3411": 1 }, "3278": { "3411": 3 }, "3279": { "3411": 5 }, "3280": { "3411": 1 }, "3281": { "3411": 3 }, "3282": { "3411": 5 }, "3283": { "3411": 1 }, "3284": { "3411": 3 }, "3285": { "3300": 3, "3306": 5, "12204": 1 }, "3287": { "3411": 5 }, "3288": { "3411": 1 }, "3289": { "3411": 3 }, "3290": { "3411": 5 }, "3291": { "3411": 1 }, "3292": { "3411": 3 }, "3299": { "3411": 5 }, "3301": { "3300": 1 }, "3302": { "3300": 1 }, "3303": { "3300": 1 }, "3304": { "3300": 3, "3301": 3 }, "3305": { "3300": 3, "3302": 3 }, "3306": { "3300": 3, "3303": 3 }, "3307": { "3300": 5, "3304": 3 }, "3308": { "3300": 5, "3305": 3 }, "3309": { "3300": 5, "3306": 3 }, "3310": { "3300": 2 }, "3311": { "3300": 2 }, "3312": { "3300": 2 }, "3315": { "3300": 4 }, "3316": { "3300": 2 }, "3317": { "3300": 4 }, "3318": { "3300": 2 }, "3320": { "3319": 1 }, "3321": { "3319": 2 }, "3322": { "3319": 2 }, "3324": { "3319": 3, "3321": 3 }, "3325": { "3319": 4, "3324": 3 }, "3326": { "3319": 5, "3324": 3 }, "3328": { "3327": 1 }, "3329": { "3327": 1 }, "3330": { "3327": 1 }, "3331": { "3327": 1 }, "3332": { "3327": 2, "33093": 3 }, "3333": { "3327": 2, "33094": 3 }, "3334": { "3327": 2, "33092": 3 }, "3335": { "3327": 2, "33091": 3 }, "3336": { "3327": 4, "33097": 3 }, "3337": { "3327": 4, "33098": 3 }, "3338": { "3327": 4, "33096": 3 }, "3339": { "3327": 4, "33095": 3 }, "3340": { "3327": 3 }, "3341": { "3327": 3 }, "3342": { "3327": 3 }, "3343": { "3327": 3 }, "3344": { "3336": 3, "3348": 5, "20533": 5, "24562": 1 }, "3345": { "3337": 3, "3348": 5, "20533": 5, "24562": 1 }, "3346": { "3338": 3, "3348": 5, "20533": 5, "24562": 1 }, "3347": { "3339": 3, "3348": 5, "20533": 5, "24562": 1 }, "3349": { "3348": 1 }, "3350": { "3348": 1 }, "3351": { "3348": 1, "3350": 5 }, "3352": { "3348": 1, "20495": 5 }, "3354": { "3348": 5 }, "3356": { "3355": 1 }, "3357": { "3355": 2 }, "3358": { "3355": 4 }, "3359": { "3355": 3 }, "3361": { "3355": 3 }, "3362": { "3355": 5 }, "3364": { "3348": 2, "3363": 4 }, "3365": { "3363": 4, "3392": 3 }, "3366": { "3363": 5, "3380": 3 }, "3367": { "3363": 3, "3385": 3 }, "3368": { "3355": 3, "3363": 2 }, "3369": { "3363": 2, "3444": 3 }, "3370": { "3363": 5, "3402": 1, "3403": 5 }, "3371": { "3359": 2, "3363": 3 }, "3372": { "3363": 3, "3412": 4 }, "3373": { "11584": 4 }, "3381": { "3380": 3 }, "3382": { "3380": 3 }, "3383": { "3380": 3 }, "3384": { "3380": 3 }, "3385": { "3380": 1 }, "3387": { "3380": 3 }, "3388": { "3380": 3 }, "3389": { "3385": 4 }, "3390": { "3380": 4, "3385": 4 }, "3391": { "3380": 5 }, "3393": { "3392": 1 }, "3394": { "3392": 1 }, "3395": { "3380": 2, "3392": 1 }, "3396": { "3380": 3, "3392": 2 }, "3397": { "3392": 3, "3395": 4 }, "3398": { "3397": 4 }, "3400": { "3380": 5, "3392": 5, "11584": 5 }, "3403": { "3402": 3 }, "3405": { "3402": 1 }, "3406": { "3402": 3 }, "3408": { "3402": 5, "3403": 4, "3409": 4 }, "3409": { "3402": 4 }, "3410": { "3386": 4, "3402": 4 }, "3411": { "3402": 3 }, "3412": { "3402": 3 }, "3414": { "3411": 1 }, "3415": { "3411": 3 }, "3416": { "3413": 1 }, "3417": { "3413": 1 }, "3418": { "3413": 3 }, "3419": { "3413": 3 }, "3420": { "3413": 3 }, "3421": { "3402": 2, "3413": 2 }, "3422": { "3402": 2, "3413": 3 }, "3423": { "3402": 2, "3413": 3 }, "3424": { "3402": 1, "3413": 2 }, "3425": { "3402": 1, "3413": 2 }, "3427": { "3426": 1 }, "3428": { "3426": 2 }, "3429": { "3426": 1 }, "3430": { "3429": 5 }, "3431": { "3426": 1 }, "3432": { "3413": 2, "3426": 2 }, "3433": { "3426": 3 }, "3434": { "3426": 3 }, "3435": { "3426": 3, "3449": 2 }, "3437": { "3436": 1 }, "3438": { "3386": 2, "3436": 1 }, "3439": { "3436": 5, "23618": 1 }, "3440": { "3436": 4, "25863": 2 }, "3441": { "3436": 5 }, "3442": { "3436": 5 }, "3444": { "3443": 2 }, "3445": { "3443": 2, "3444": 2 }, "3446": { "3443": 2 }, "3447": { "16594": 4 }, "3448": { "3445": 3 }, "3450": { "3449": 1 }, "3451": { "3449": 2, "3450": 2 }, "3452": { "3449": 3 }, "3453": { "3449": 2 }, "3454": { "3449": 3, "3450": 3 }, "3455": { "3449": 1 }, "3456": { "3402": 5, "3449": 5, "3455": 5 }, "3465": { "11584": 1 }, "3466": { "11584": 1 }, "3467": { "11584": 1 }, "3469": { "3426": 2 }, "3470": { "3411": 5 }, "3471": { "3411": 1 }, "3472": { "3424": 5 }, "3474": { "3411": 3 }, "3475": { "3411": 5 }, "3476": { "3411": 1 }, "3477": { "3411": 3 }, "3478": { "3411": 5 }, "3479": { "3411": 1 }, "3480": { "3424": 2 }, "3481": { "3411": 3 }, "3482": { "3411": 5 }, "3488": { "3424": 2 }, "3491": { "21718": 1 }, "3496": { "3424": 3 }, "3504": { "3424": 4 }, "3512": { "3300": 3, "3306": 5, "12214": 1 }, "3514": { "20533": 1, "24311": 1, "24312": 1 }, "3516": { "3331": 5, "12095": 1 }, "3518": { "3335": 5, "16591": 1 }, "3520": { "3300": 3, "3306": 5, "12214": 1 }, "3528": { "3392": 2, "3393": 1 }, "3530": { "3392": 4, "3393": 4 }, "3534": { "21803": 1 }, "3536": { "24568": 1 }, "3538": { "3392": 3, "3393": 1 }, "3540": { "3392": 5, "3393": 4 }, "3542": { "21802": 1 }, "3544": { "24571": 1 }, "3546": { "3300": 5, "21666": 1 }, "3549": { "3436": 1, "3437": 1 }, "3550": { "3300": 5, "21666": 1 }, "3551": { "3426": 1 }, "3556": { "3417": 1 }, "3558": { "3417": 2 }, "3559": { "3300": 5, "20327": 1 }, "3561": { "3300": 5, "20327": 1 }, "3563": { "3319": 5, "32435": 1 }, "3565": { "3319": 5, "21668": 1 }, "3566": { "3417": 1 }, "3568": { "3417": 3 }, "3571": { "3300": 5, "21667": 1 }, "3573": { "3300": 5, "21667": 1 }, "3575": { "3423": 1, "24572": 1 }, "3576": { "3417": 1 }, "3578": { "3417": 4 }, "3581": { "21718": 1 }, "3586": { "3422": 1 }, "3588": { "3422": 3 }, "3596": { "3422": 1 }, "3598": { "3422": 4 }, "3606": { "3422": 1 }, "3608": { "3422": 4 }, "3616": { "24571": 1 }, "3618": { "24571": 4 }, "3634": { "3300": 1 }, "3636": { "3300": 1 }, "3638": { "3300": 1 }, "3640": { "3300": 1, "3301": 1 }, "3651": { "3386": 1 }, "3653": { "3392": 3, "3393": 1 }, "3655": { "3392": 3, "3393": 2 }, "3663": { "3392": 5, "3393": 1 }, "3665": { "3392": 5, "3393": 2 }, "3731": { "3363": 5 }, "3732": { "3731": 5 }, "3733": { "3319": 1 }, "3735": { "3319": 1 }, "3737": { "3319": 1 }, "3751": { "3755": 1 }, "3753": { "3755": 1 }, "3755": { "3327": 5 }, "3756": { "3327": 1 }, "3758": { "3327": 3, "3330": 4 }, "3764": { "3346": 1, "20533": 5 }, "3766": { "3329": 1 }, "3768": { "3331": 5 }, "3793": { "21718": 1 }, "3829": { "3425": 1 }, "3831": { "3425": 4 }, "3839": { "3425": 1 }, "3841": { "3425": 4 }, "3849": { "3425": 1 }, "3851": { "3425": 2 }, "3887": { "3432": 1 }, "3888": { "3432": 4 }, "3893": { "3355": 3, "3380": 3 }, "3894": { "3355": 3, "3443": 3 }, "3895": { "3348": 3, "3355": 3 }, "3897": { "3421": 1 }, "3899": { "3421": 2 }, "3901": { "3421": 1 }, "3903": { "3421": 2 }, "3907": { "3421": 1 }, "3909": { "3421": 2 }, "3913": { "3421": 1 }, "3915": { "3421": 2 }, "3937": { "3421": 1 }, "3939": { "3421": 4 }, "3941": { "3421": 1 }, "3943": { "3421": 4 }, "3947": { "3421": 1 }, "3949": { "3421": 4 }, "3953": { "3421": 1 }, "3955": { "3421": 4 }, "3962": { "11584": 1 }, "3977": { "3421": 1 }, "3979": { "3421": 5 }, "3981": { "3421": 1 }, "3983": { "3421": 5 }, "3986": { "27902": 5 }, "3987": { "3421": 1 }, "3989": { "3421": 5 }, "3993": { "3421": 1 }, "3995": { "3421": 5 }, "4005": { "3338": 1 }, "4013": { "3432": 1 }, "4014": { "3432": 3 }, "4025": { "3435": 1 }, "4027": { "3435": 1 }, "4029": { "3435": 1 }, "4031": { "3435": 1 }, "4147": { "3300": 5, "3309": 5, "12215": 1 }, "4248": { "3435": 5, "11446": 5 }, "4250": { "3402": 5 }, "4252": { "11446": 5 }, "4254": { "3418": 5 }, "4256": { "28073": 5 }, "4258": { "3412": 5 }, "4260": { "3412": 5 }, "4262": { "3348": 5, "11569": 5 }, "4264": { "3348": 5, "11569": 5 }, "4266": { "3348": 5, "11569": 5 }, "4268": { "3348": 5, "3352": 5 }, "4270": { "3348": 5, "3352": 5 }, "4272": { "3348": 5, "3352": 5 }, "4274": { "3348": 5, "22552": 5 }, "4276": { "3348": 5, "22552": 5 }, "4278": { "3348": 5, "22552": 5 }, "4280": { "3348": 5, "3351": 5 }, "4282": { "3348": 5, "3351": 5 }, "4284": { "3348": 5, "3351": 5 }, "4286": { "3348": 5, "11572": 5 }, "4288": { "3348": 5, "11572": 5 }, "4290": { "3348": 5, "11572": 5 }, "4292": { "22043": 5 }, "4294": { "27906": 5 }, "4296": { "27902": 5 }, "4299": { "27902": 5 }, "4302": { "33095": 1 }, "4306": { "33096": 1 }, "4308": { "33097": 1 }, "4310": { "33098": 1 }, "4345": { "3420": 1 }, "4346": { "3420": 1 }, "4347": { "3420": 1 }, "4348": { "3420": 1 }, "4349": { "3420": 1 }, "4360": { "9955": 5 }, "4363": { "3340": 1 }, "4371": { "9955": 5 }, "4372": { "9955": 5 }, "4373": { "9955": 5 }, "4374": { "9955": 5 }, "4375": { "9955": 5 }, "4376": { "9955": 5 }, "4377": { "9955": 5 }, "4380": { "9955": 5 }, "4383": { "4385": 1 }, "4385": { "3449": 4, "3455": 2 }, "4386": { "3435": 4, "4385": 3, "11584": 3 }, "4388": { "3340": 1 }, "4391": { "3416": 2 }, "4393": { "3318": 1, "3436": 1 }, "4403": { "3394": 3 }, "4405": { "3318": 4, "3436": 4 }, "4409": { "3427": 4 }, "4411": { "3426": 4 }, "4421": { "3424": 2 }, "4423": { "3424": 2 }, "4425": { "3424": 2 }, "4427": { "3424": 2 }, "4431": { "3424": 2 }, "4433": { "3424": 2 }, "4435": { "3424": 2 }, "4437": { "3424": 2 }, "4471": { "3423": 1 }, "4473": { "3423": 1 }, "4475": { "3423": 1 }, "4477": { "3423": 1 }, "4529": { "3392": 1, "3393": 1 }, "4531": { "3392": 1, "3393": 1 }, "4533": { "3392": 1, "3393": 1 }, "4535": { "3392": 1, "3393": 1 }, "4569": { "3392": 2, "3393": 1 }, "4571": { "3392": 2, "3393": 1 }, "4573": { "3392": 2, "3393": 1 }, "4575": { "3392": 2, "3393": 1 }, "4579": { "3392": 4, "3393": 4 }, "4609": { "3392": 3, "3393": 1 }, "4611": { "3392": 3, "3393": 1 }, "4613": { "3392": 3, "3393": 1 }, "4615": { "3392": 3, "3393": 1 }, "4621": { "3392": 5, "3393": 4 }, "4745": { "3413": 1 }, "4747": { "3413": 1 }, "4749": { "3413": 1 }, "4751": { "3413": 1 }, "4785": { "3424": 1 }, "4787": { "3424": 1 }, "4789": { "3424": 2 }, "4791": { "3424": 1 }, "4829": { "3417": 1 }, "4831": { "3417": 1 }, "4833": { "3417": 1 }, "4835": { "3417": 1 }, "4869": { "3424": 3 }, "4871": { "3424": 2 }, "4873": { "3424": 4 }, "4875": { "3424": 2 }, "4909": { "3424": 4 }, "4911": { "3424": 2 }, "4913": { "3424": 5 }, "4915": { "3424": 3 }, "4955": { "3417": 1 }, "4957": { "3417": 1 }, "4959": { "3417": 1 }, "4961": { "3417": 1 }, "5007": { "3417": 1 }, "5009": { "3417": 1 }, "5011": { "3417": 1 }, "5013": { "3417": 1 }, "5017": { "3417": 3 }, "5047": { "3417": 1 }, "5049": { "3417": 1 }, "5051": { "3417": 1 }, "5053": { "3417": 1 }, "5087": { "3423": 1 }, "5089": { "3423": 1 }, "5091": { "3423": 1 }, "5093": { "3423": 1 }, "5135": { "3423": 1 }, "5137": { "3423": 1 }, "5139": { "3423": 1 }, "5141": { "3423": 1 }, "5175": { "3300": 1, "3303": 1 }, "5177": { "3300": 1, "3303": 1 }, "5179": { "3300": 1, "3303": 1 }, "5181": { "3300": 1, "3303": 1 }, "5215": { "3300": 1, "3303": 1 }, "5217": { "3300": 1, "3303": 1 }, "5219": { "3300": 1, "3303": 1 }, "5221": { "3300": 1, "3303": 1 }, "5231": { "3386": 1 }, "5233": { "3386": 1 }, "5235": { "3386": 1 }, "5237": { "3386": 1 }, "5239": { "3386": 1 }, "5241": { "3386": 1 }, "5243": { "3386": 1 }, "5245": { "3386": 1 }, "5279": { "3433": 1 }, "5280": { "3433": 1 }, "5281": { "3433": 1 }, "5282": { "3433": 1 }, "5299": { "3433": 1 }, "5300": { "3433": 1 }, "5301": { "3433": 1 }, "5302": { "3433": 1 }, "5319": { "3434": 1 }, "5320": { "3434": 1 }, "5321": { "3434": 1 }, "5322": { "3434": 1 }, "5339": { "3433": 1 }, "5340": { "3433": 1 }, "5341": { "3433": 1 }, "5342": { "3433": 1 }, "5359": { "3427": 1 }, "5361": { "3427": 1 }, "5363": { "3427": 1 }, "5365": { "3427": 1 }, "5399": { "3435": 1 }, "5401": { "3435": 1 }, "5403": { "3435": 1 }, "5405": { "3435": 1 }, "5439": { "3435": 1, "3449": 1 }, "5441": { "3435": 1, "3449": 1 }, "5443": { "3435": 1, "3449": 1 }, "5445": { "3435": 1, "3449": 1 }, "5479": { "3392": 1 }, "5481": { "3392": 1 }, "5483": { "3392": 1 }, "5485": { "3392": 1 }, "5487": { "3394": 1 }, "5489": { "3394": 1 }, "5491": { "3394": 1 }, "5493": { "3394": 1 }, "5519": { "3392": 1 }, "5521": { "3392": 1 }, "5523": { "3392": 1 }, "5525": { "3392": 1 }, "5527": { "3394": 1 }, "5529": { "3394": 1 }, "5531": { "3394": 1 }, "5533": { "3394": 1 }, "5559": { "3394": 1 }, "5561": { "3394": 1 }, "5591": { "3394": 1 }, "5593": { "3394": 1 }, "5595": { "3394": 1 }, "5597": { "3394": 1 }, "5599": { "3394": 1 }, "5601": { "3394": 1 }, "5611": { "3392": 1 }, "5613": { "3392": 1 }, "5615": { "3392": 1 }, "5617": { "3392": 1 }, "5627": { "3394": 1 }, "5629": { "3394": 1 }, "5631": { "3394": 1 }, "5633": { "3394": 1 }, "5643": { "3394": 1 }, "5645": { "3394": 1 }, "5647": { "3394": 1 }, "5649": { "3394": 1 }, "5675": { "3392": 1 }, "5677": { "3392": 1 }, "5679": { "3392": 1 }, "5681": { "3392": 1 }, "5683": { "3392": 3, "3393": 1 }, "5693": { "3392": 1, "3393": 1 }, "5697": { "3392": 5, "3393": 1 }, "5719": { "3392": 3, "3393": 1 }, "5721": { "3392": 3, "3393": 1 }, "5723": { "3392": 3, "3393": 1 }, "5743": { "3392": 1, "3393": 1 }, "5745": { "3392": 1, "3393": 1 }, "5747": { "3392": 1, "3393": 1 }, "5755": { "3392": 5, "3393": 1 }, "5757": { "3392": 5, "3393": 1 }, "5759": { "3392": 5, "3393": 1 }, "5829": { "3392": 1 }, "5831": { "3392": 1 }, "5833": { "3392": 1 }, "5835": { "3392": 1 }, "5837": { "3394": 1 }, "5839": { "3394": 1 }, "5841": { "3394": 1 }, "5843": { "3394": 1 }, "5845": { "3318": 1 }, "5846": { "3318": 1 }, "5849": { "3318": 1 }, "5854": { "3318": 1 }, "5855": { "3318": 1 }, "5856": { "3318": 1 }, "5857": { "3318": 1 }, "5858": { "3318": 1 }, "5865": { "3429": 1 }, "5867": { "3429": 1 }, "5869": { "3429": 1 }, "5871": { "3429": 1 }, "5913": { "3318": 1 }, "5915": { "3318": 1 }, "5917": { "3318": 1 }, "5919": { "3318": 1 }, "5929": { "3318": 1 }, "5931": { "3318": 1 }, "5933": { "3318": 1 }, "5935": { "3318": 1 }, "5945": { "3454": 1 }, "5955": { "3450": 1 }, "5971": { "3454": 1 }, "5973": { "3454": 1 }, "5975": { "3454": 1 }, "6001": { "3450": 1 }, "6003": { "3450": 1 }, "6005": { "3450": 1 }, "6041": { "3429": 1 }, "6043": { "3429": 1 }, "6045": { "3429": 1 }, "6047": { "3429": 1 }, "6073": { "3424": 1 }, "6083": { "3424": 3 }, "6097": { "3424": 2 }, "6111": { "3424": 2 }, "6129": { "3426": 1 }, "6131": { "3426": 1 }, "6133": { "3426": 1 }, "6135": { "3426": 1 }, "6157": { "3428": 1 }, "6158": { "3428": 1 }, "6159": { "3428": 1 }, "6160": { "3428": 1 }, "6173": { "3317": 1 }, "6174": { "3317": 1 }, "6175": { "3317": 1 }, "6176": { "3317": 1 }, "6193": { "3426": 1 }, "6194": { "3426": 1 }, "6195": { "3432": 1 }, "6199": { "3432": 1 }, "6202": { "3426": 1 }, "6203": { "3432": 1 }, "6207": { "3432": 1 }, "6212": { "3432": 1 }, "6216": { "3426": 1 }, "6217": { "3426": 1 }, "6218": { "3432": 1 }, "6222": { "3432": 1 }, "6225": { "3426": 1 }, "6226": { "3432": 1 }, "6230": { "3432": 1 }, "6234": { "3432": 1 }, "6238": { "3426": 1 }, "6239": { "3426": 1 }, "6241": { "3426": 1 }, "6242": { "3426": 1 }, "6243": { "3432": 1 }, "6244": { "3432": 1 }, "6251": { "3432": 1 }, "6252": { "3432": 1 }, "6257": { "3426": 1 }, "6258": { "3426": 1 }, "6259": { "3432": 1 }, "6260": { "3432": 1 }, "6267": { "3432": 1 }, "6268": { "3432": 1 }, "6275": { "3432": 1 }, "6276": { "3432": 1 }, "6283": { "3426": 1 }, "6284": { "3426": 1 }, "6285": { "3426": 1 }, "6286": { "3426": 1 }, "6289": { "3426": 1 }, "6290": { "3426": 1 }, "6291": { "3426": 1 }, "6292": { "3426": 1 }, "6293": { "3432": 1 }, "6294": { "3432": 1 }, "6295": { "3432": 1 }, "6296": { "3432": 1 }, "6309": { "3426": 1 }, "6310": { "3426": 1 }, "6311": { "3426": 1 }, "6312": { "3426": 1 }, "6321": { "3318": 1 }, "6322": { "3318": 1 }, "6323": { "3318": 1 }, "6324": { "3318": 1 }, "6325": { "3318": 1 }, "6326": { "3318": 1 }, "6327": { "3318": 1 }, "6328": { "3318": 1 }, "6437": { "3416": 1 }, "6439": { "3416": 1 }, "6441": { "3416": 1 }, "6443": { "3416": 1 }, "6485": { "3425": 3 }, "6487": { "3425": 3 }, "6489": { "3425": 3 }, "6491": { "3425": 3 }, "6525": { "3426": 1 }, "6527": { "3426": 1 }, "6529": { "3426": 1 }, "6531": { "3426": 1 }, "6567": { "3426": 1 }, "6569": { "3426": 1 }, "6571": { "3426": 1 }, "6573": { "3426": 1 }, "6631": { "3300": 1, "3303": 1 }, "6633": { "3300": 1, "3303": 1 }, "6635": { "3300": 1, "3303": 1 }, "6637": { "3300": 1, "3303": 1 }, "6671": { "3300": 1, "3303": 1 }, "6673": { "3300": 1, "3303": 1 }, "6675": { "3300": 1, "3303": 1 }, "6677": { "3300": 1, "3303": 1 }, "6715": { "3300": 1, "3303": 1 }, "6717": { "3300": 1, "3303": 1 }, "6719": { "3300": 1, "3303": 1 }, "6721": { "3300": 1, "3303": 1 }, "6757": { "3300": 3, "3306": 1 }, "6759": { "3300": 3, "3306": 1 }, "6761": { "3300": 3, "3306": 1 }, "6763": { "3300": 3, "3306": 1 }, "6805": { "3300": 3, "3306": 1 }, "6807": { "3300": 3, "3306": 1 }, "6809": { "3300": 3, "3306": 1 }, "6811": { "3300": 3, "3306": 1 }, "6859": { "3300": 3, "3306": 1 }, "6861": { "3300": 3, "3306": 1 }, "6863": { "3300": 3, "3306": 1 }, "6865": { "3300": 3, "3306": 1 }, "6919": { "3300": 3, "3306": 1 }, "6921": { "3300": 3, "3306": 1 }, "6923": { "3300": 3, "3306": 1 }, "6925": { "3300": 3, "3306": 1 }, "6959": { "3300": 3, "3306": 1 }, "6961": { "3300": 3, "3306": 1 }, "6963": { "3300": 3, "3306": 1 }, "6965": { "3300": 3, "3306": 1 }, "6999": { "3300": 5, "3309": 1 }, "7001": { "3300": 5, "3309": 1 }, "7003": { "3300": 5, "3309": 1 }, "7005": { "3300": 5, "3309": 1 }, "7043": { "3300": 5, "3309": 1 }, "7045": { "3300": 5, "3309": 1 }, "7047": { "3300": 5, "3309": 1 }, "7049": { "3300": 5, "3309": 1 }, "7083": { "3300": 5, "3309": 1 }, "7085": { "3300": 5, "3309": 1 }, "7087": { "3300": 5, "3309": 1 }, "7089": { "3300": 5, "3309": 1 }, "7123": { "3300": 5, "3309": 1 }, "7125": { "3300": 5, "3309": 1 }, "7127": { "3300": 5, "3309": 1 }, "7131": { "3300": 5, "3309": 1 }, "7167": { "3300": 5, "3309": 1 }, "7169": { "3300": 5, "3309": 1 }, "7171": { "3300": 5, "3309": 1 }, "7173": { "3300": 5, "3309": 1 }, "7217": { "3427": 1 }, "7218": { "3427": 1 }, "7219": { "3427": 1 }, "7220": { "3427": 1 }, "7247": { "3300": 1, "3301": 1 }, "7249": { "3300": 1, "3301": 1 }, "7251": { "3300": 1, "3301": 1 }, "7253": { "3300": 1, "3301": 1 }, "7287": { "3300": 1, "3301": 1 }, "7289": { "3300": 1, "3301": 1 }, "7291": { "3300": 1, "3301": 1 }, "7293": { "3300": 1, "3301": 1 }, "7327": { "3300": 3, "3304": 1 }, "7329": { "3300": 3, "3304": 1 }, "7331": { "3300": 3, "3304": 1 }, "7333": { "3300": 3, "3304": 1 }, "7367": { "3300": 3, "3304": 1 }, "7369": { "3300": 3, "3304": 1 }, "7371": { "3300": 3, "3304": 1 }, "7373": { "3300": 3, "3304": 1 }, "7407": { "3300": 5, "3307": 1 }, "7409": { "3300": 5, "3307": 1 }, "7411": { "3300": 5, "3307": 1 }, "7413": { "3300": 5, "3307": 1 }, "7447": { "3300": 5, "3307": 1 }, "7449": { "3300": 5, "3307": 1 }, "7451": { "3300": 5, "3307": 1 }, "7453": { "3300": 5, "3307": 1 }, "7487": { "3300": 1, "3301": 1 }, "7489": { "3300": 1, "3301": 1 }, "7491": { "3300": 1, "3301": 1 }, "7493": { "3300": 1, "3301": 1 }, "7535": { "3300": 1, "3301": 1 }, "7537": { "3300": 1, "3301": 1 }, "7539": { "3300": 1, "3301": 1 }, "7541": { "3300": 1, "3301": 1 }, "7579": { "3300": 1, "3301": 1 }, "7581": { "3300": 1, "3301": 1 }, "7583": { "3300": 1, "3301": 1 }, "7585": { "3300": 1, "3301": 1 }, "7619": { "3300": 3, "3304": 1 }, "7621": { "3300": 3, "3304": 1 }, "7623": { "3300": 3, "3304": 1 }, "7625": { "3300": 3, "3304": 1 }, "7663": { "3300": 3, "3304": 1 }, "7665": { "3300": 3, "3304": 1 }, "7667": { "3300": 3, "3304": 1 }, "7669": { "3300": 3, "3304": 1 }, "7703": { "3300": 3, "3304": 1 }, "7705": { "3300": 3, "3304": 1 }, "7707": { "3300": 3, "3304": 1 }, "7709": { "3300": 3, "3304": 1 }, "7743": { "3300": 5, "3307": 1 }, "7745": { "3300": 5, "3307": 1 }, "7747": { "3300": 5, "3307": 1 }, "7749": { "3300": 5, "3307": 1 }, "7783": { "3300": 5, "3307": 1 }, "7785": { "3300": 5, "3307": 1 }, "7787": { "3300": 5, "3307": 1 }, "7789": { "3300": 5, "3307": 1 }, "7827": { "3300": 5, "3307": 1 }, "7829": { "3300": 5, "3307": 1 }, "7831": { "3300": 5, "3307": 1 }, "7833": { "3300": 5, "3307": 1 }, "7867": { "3427": 1 }, "7869": { "3427": 1 }, "7870": { "3427": 1 }, "7887": { "3427": 1 }, "7889": { "3427": 1 }, "7892": { "3427": 1 }, "7893": { "3427": 1 }, "7895": { "3427": 1 }, "7896": { "3427": 1 }, "7914": { "3427": 1 }, "7917": { "3427": 1 }, "7918": { "3427": 1 }, "7922": { "3427": 1 }, "7926": { "3427": 1 }, "7937": { "3427": 1 }, "7948": { "3427": 1 }, "7964": { "3427": 1 }, "7965": { "3427": 1 }, "7966": { "3427": 1 }, "7970": { "3427": 1 }, "7993": { "3319": 1, "3321": 1 }, "7997": { "3319": 1, "3324": 1 }, "8001": { "3319": 1, "3325": 1 }, "8007": { "3319": 1, "3321": 1 }, "8023": { "3319": 1, "3321": 1 }, "8025": { "3319": 1, "3321": 1 }, "8027": { "3319": 1, "3321": 1 }, "8089": { "3319": 1, "3321": 1 }, "8091": { "3319": 1, "3321": 1 }, "8093": { "3319": 1, "3321": 1 }, "8101": { "3319": 1, "3324": 1 }, "8103": { "3319": 1, "3324": 1 }, "8105": { "3319": 1, "3324": 1 }, "8113": { "3319": 1, "3325": 1 }, "8115": { "3319": 1, "3325": 1 }, "8117": { "3319": 1, "3325": 1 }, "8131": { "3424": 3 }, "8133": { "3424": 3 }, "8135": { "3424": 3 }, "8137": { "3424": 3 }, "8163": { "3424": 1 }, "8165": { "3424": 1 }, "8167": { "3424": 1 }, "8169": { "3424": 1 }, "8171": { "3424": 2 }, "8173": { "3424": 2 }, "8175": { "3424": 2 }, "8177": { "3424": 2 }, "8203": { "3424": 1 }, "8205": { "3424": 1 }, "8207": { "3424": 1 }, "8209": { "3424": 1 }, "8211": { "3424": 1 }, "8213": { "3424": 1 }, "8215": { "3424": 1 }, "8217": { "3424": 1 }, "8219": { "3424": 2 }, "8221": { "3424": 2 }, "8223": { "3424": 2 }, "8225": { "3424": 2 }, "8251": { "3424": 1 }, "8253": { "3424": 1 }, "8255": { "3424": 1 }, "8257": { "3424": 1 }, "8259": { "3424": 2 }, "8261": { "3424": 2 }, "8263": { "3424": 2 }, "8265": { "3424": 2 }, "8291": { "3424": 2 }, "8293": { "3424": 2 }, "8295": { "3424": 2 }, "8297": { "3424": 2 }, "8323": { "3424": 1 }, "8325": { "3424": 1 }, "8327": { "3424": 1 }, "8329": { "3424": 1 }, "8331": { "3424": 2 }, "8333": { "3424": 2 }, "8335": { "3424": 2 }, "8337": { "3424": 2 }, "8339": { "3424": 1 }, "8341": { "3424": 1 }, "8343": { "3424": 1 }, "8345": { "3424": 1 }, "8387": { "3425": 1 }, "8397": { "3425": 1 }, "8401": { "3425": 1 }, "8409": { "3425": 1 }, "8419": { "3425": 1 }, "8427": { "3425": 1 }, "8433": { "3425": 1 }, "8437": { "3425": 1 }, "8465": { "3425": 1 }, "8477": { "3425": 1 }, "8481": { "3425": 1 }, "8489": { "3425": 1 }, "8505": { "3425": 1 }, "8517": { "3425": 1 }, "8521": { "3425": 1 }, "8529": { "3425": 1 }, "8531": { "3422": 1 }, "8533": { "3422": 1 }, "8535": { "3422": 1 }, "8537": { "3422": 1 }, "8579": { "3422": 1 }, "8581": { "3422": 1 }, "8583": { "3422": 1 }, "8585": { "3422": 1 }, "8627": { "3422": 1 }, "8629": { "3422": 1 }, "8631": { "3422": 1 }, "8633": { "3422": 1 }, "8635": { "3422": 1 }, "8637": { "3422": 1 }, "8639": { "3422": 1 }, "8641": { "3422": 1 }, "8683": { "3422": 1 }, "8685": { "3422": 1 }, "8687": { "3422": 1 }, "8689": { "3422": 1 }, "8743": { "3426": 2 }, "8744": { "3426": 2 }, "8745": { "3426": 2 }, "8746": { "3426": 2 }, "8747": { "3432": 1 }, "8748": { "3432": 1 }, "8749": { "3432": 1 }, "8750": { "3432": 1 }, "8759": { "3300": 1, "3302": 1 }, "8785": { "3300": 1, "3302": 1 }, "8787": { "3300": 1, "3302": 1 }, "8789": { "3300": 1, "3302": 1 }, "8815": { "3300": 1, "3302": 1 }, "8817": { "3300": 1, "3302": 1 }, "8819": { "3300": 1, "3302": 1 }, "8821": { "3300": 1, "3302": 1 }, "8863": { "3300": 1, "3302": 1 }, "8865": { "3300": 1, "3302": 1 }, "8867": { "3300": 1, "3302": 1 }, "8869": { "3300": 1, "3302": 1 }, "8903": { "3300": 1, "3302": 1 }, "8905": { "3300": 1, "3302": 1 }, "8907": { "3300": 1, "3302": 1 }, "8909": { "3300": 1, "3302": 1 }, "9071": { "3300": 3, "3305": 1 }, "9073": { "3300": 3, "3305": 1 }, "9091": { "3300": 3, "3305": 1 }, "9093": { "3300": 3, "3305": 1 }, "9127": { "3300": 3, "3305": 1 }, "9129": { "3300": 3, "3305": 1 }, "9131": { "3300": 3, "3305": 1 }, "9133": { "3300": 3, "3305": 1 }, "9135": { "3300": 3, "3305": 1 }, "9137": { "3300": 3, "3305": 1 }, "9139": { "3300": 3, "3305": 1 }, "9141": { "3300": 3, "3305": 1 }, "9207": { "3300": 3, "3305": 1 }, "9209": { "3300": 3, "3305": 1 }, "9211": { "3300": 3, "3305": 1 }, "9213": { "3300": 3, "3305": 1 }, "9247": { "3300": 5, "3308": 1 }, "9249": { "3300": 5, "3308": 1 }, "9251": { "3300": 5, "3308": 1 }, "9253": { "3300": 5, "3308": 1 }, "9287": { "3300": 5, "3308": 1 }, "9289": { "3300": 5, "3308": 1 }, "9291": { "3300": 5, "3308": 1 }, "9293": { "3300": 5, "3308": 1 }, "9327": { "3300": 5, "3308": 1 }, "9329": { "3300": 5, "3308": 1 }, "9331": { "3300": 5, "3308": 1 }, "9333": { "3300": 5, "3308": 1 }, "9367": { "3300": 5, "3308": 1 }, "9369": { "3300": 5, "3308": 1 }, "9371": { "3300": 5, "3308": 1 }, "9373": { "3300": 1, "3308": 1 }, "9377": { "3300": 5, "3308": 1 }, "9411": { "3300": 1, "3302": 1 }, "9413": { "3300": 1, "3302": 1 }, "9415": { "3300": 1, "3302": 1 }, "9417": { "3300": 1, "3302": 1 }, "9419": { "3300": 1, "3305": 4 }, "9421": { "3300": 1, "3305": 4 }, "9451": { "3300": 3, "3305": 1 }, "9453": { "3300": 3, "3305": 1 }, "9455": { "3300": 3, "3305": 1 }, "9457": { "3300": 3, "3305": 1 }, "9491": { "3300": 5, "3308": 1 }, "9493": { "3300": 5, "3308": 1 }, "9495": { "3300": 5, "3308": 1 }, "9497": { "3300": 5, "3308": 1 }, "9518": { "3427": 1 }, "9519": { "3427": 1 }, "9520": { "3427": 1 }, "9521": { "3427": 1 }, "9522": { "3427": 1 }, "9556": { "3425": 1 }, "9562": { "3413": 1 }, "9566": { "3413": 1 }, "9568": { "3425": 1 }, "9570": { "3413": 1 }, "9574": { "3413": 1 }, "9580": { "3425": 1 }, "9582": { "3425": 1 }, "9608": { "3420": 1 }, "9622": { "3420": 1 }, "9632": { "3420": 1 }, "9646": { "3420": 1 }, "9660": { "3420": 1 }, "9668": { "3421": 1 }, "9670": { "3421": 1 }, "9678": { "3421": 1 }, "9680": { "3421": 1 }, "9702": { "3421": 1 }, "9706": { "3421": 1 }, "9728": { "3421": 1 }, "9734": { "3421": 1 }, "9744": { "3421": 1 }, "9750": { "3421": 1 }, "9762": { "3421": 1 }, "9772": { "3421": 1 }, "9784": { "3421": 1 }, "9790": { "3421": 1 }, "9800": { "3421": 1 }, "9808": { "3421": 1 }, "9854": { "9955": 1 }, "9858": { "9955": 3 }, "9860": { "9955": 5 }, "9862": { "9955": 3 }, "9871": { "3439": 1 }, "9899": { "3411": 1 }, "9941": { "3411": 1 }, "9942": { "3411": 1 }, "9943": { "3411": 1 }, "9944": { "3318": 1 }, "9947": { "3405": 1 }, "9950": { "3405": 1 }, "9955": { "3327": 5, "9955": 5 }, "9956": { "3411": 1 }, "9957": { "3411": 1 }, "10039": { "3416": 1 }, "10151": { "3405": 2 }, "10152": { "3405": 3 }, "10155": { "3405": 2 }, "10156": { "3405": 3 }, "10164": { "3405": 1 }, "10165": { "3405": 2 }, "10166": { "3405": 3 }, "10188": { "3318": 1 }, "10190": { "3318": 4 }, "10204": { "3411": 2 }, "10208": { "3411": 4 }, "10209": { "3411": 5 }, "10210": { "3411": 3 }, "10211": { "3411": 5 }, "10212": { "3411": 4 }, "10213": { "3411": 5 }, "10214": { "3411": 3 }, "10215": { "3411": 4 }, "10216": { "3411": 4 }, "10217": { "3411": 5 }, "10218": { "3411": 3 }, "10219": { "3411": 5 }, "10221": { "3411": 4 }, "10222": { "3411": 5 }, "10223": { "3411": 3 }, "10224": { "3411": 5 }, "10225": { "3411": 4 }, "10226": { "3411": 5 }, "10227": { "3411": 3 }, "10228": { "3411": 2 }, "10244": { "3411": 2 }, "10246": { "3386": 2, "3436": 1, "3438": 1 }, "10248": { "3386": 2, "3436": 1, "3438": 1 }, "10250": { "3386": 4, "3436": 1, "3438": 5, "22541": 1 }, "10252": { "3386": 2, "3436": 1, "3438": 1 }, "10257": { "3400": 1 }, "10258": { "3400": 1 }, "10260": { "3400": 1 }, "10264": { "3327": 5, "9955": 5 }, "10629": { "3319": 1, "3320": 1 }, "10631": { "3319": 2, "20209": 1 }, "10642": { "3319": 1 }, "10678": { "3300": 1, "3301": 1 }, "10680": { "3300": 1, "3301": 5, "11082": 1 }, "10688": { "3300": 1, "3301": 1 }, "10690": { "3300": 1, "3301": 1 }, "10692": { "3300": 1, "3301": 1 }, "10694": { "3300": 1, "3301": 1 }, "10836": { "3416": 1 }, "10838": { "3416": 1 }, "10840": { "3416": 1 }, "10842": { "3416": 5 }, "10850": { "3416": 3 }, "10858": { "3416": 4 }, "10866": { "3416": 1 }, "10868": { "3416": 1 }, "10870": { "3416": 1 }, "10872": { "3416": 1 }, "10874": { "3416": 2 }, "10876": { "3416": 2 }, "10878": { "3416": 2 }, "10880": { "3416": 2 }, "10882": { "3416": 3 }, "10884": { "3416": 3 }, "10886": { "3416": 3 }, "10888": { "3416": 3 }, "10998": { "3455": 1 }, "11011": { "3332": 1 }, "11014": { "3354": 5 }, "11017": { "3348": 5, "11572": 1 }, "11019": { "9955": 5 }, "11052": { "3348": 5, "3352": 1 }, "11075": { "3327": 5, "3755": 4 }, "11078": { "3327": 5, "3758": 4 }, "11082": { "3301": 5, "3311": 3 }, "11083": { "3303": 5, "3311": 3 }, "11084": { "3302": 5, "3312": 3 }, "11101": { "3318": 1 }, "11103": { "3318": 1 }, "11105": { "3318": 1 }, "11107": { "3318": 1 }, "11109": { "3318": 1 }, "11111": { "3318": 1 }, "11113": { "3318": 1 }, "11115": { "3318": 1 }, "11129": { "3327": 1 }, "11132": { "3327": 1 }, "11134": { "3327": 1 }, "11172": { "3328": 5, "12093": 1 }, "11174": { "3328": 5, "28615": 1 }, "11176": { "3330": 5, "12092": 1 }, "11178": { "3330": 5, "12092": 1 }, "11182": { "3329": 5, "12093": 1 }, "11184": { "3331": 5, "12092": 1 }, "11186": { "3331": 5, "12092": 1 }, "11188": { "3331": 5, "12093": 1 }, "11190": { "3331": 5, "28615": 1 }, "11192": { "3330": 5, "12093": 1 }, "11194": { "3330": 5, "28615": 1 }, "11196": { "3329": 5, "12092": 1 }, "11198": { "3329": 5, "12092": 1 }, "11200": { "3328": 5, "12092": 1 }, "11202": { "3328": 5, "12092": 1 }, "11204": { "3402": 4, "3424": 5 }, "11206": { "3402": 4, "3425": 5 }, "11207": { "3318": 4 }, "11208": { "3426": 4, "3432": 5 }, "11215": { "3394": 1 }, "11217": { "3394": 3 }, "11219": { "3394": 5 }, "11225": { "3394": 1 }, "11227": { "3394": 3 }, "11229": { "3394": 5 }, "11235": { "3394": 1 }, "11237": { "3394": 3 }, "11239": { "3394": 5 }, "11245": { "3394": 1 }, "11247": { "3394": 3 }, "11249": { "3394": 5 }, "11255": { "3394": 1 }, "11257": { "3394": 3 }, "11259": { "3394": 5 }, "11265": { "3394": 1 }, "11267": { "3394": 3 }, "11269": { "3394": 5 }, "11277": { "3394": 3 }, "11279": { "3394": 3 }, "11291": { "3394": 1 }, "11293": { "3394": 1 }, "11295": { "3394": 2 }, "11297": { "3394": 2 }, "11299": { "3394": 3 }, "11301": { "3394": 3 }, "11303": { "3394": 3 }, "11305": { "3394": 3 }, "11307": { "3394": 3 }, "11309": { "3394": 3 }, "11311": { "3394": 3 }, "11313": { "3394": 3 }, "11315": { "3394": 3 }, "11317": { "3394": 3 }, "11319": { "3394": 3 }, "11321": { "3394": 3 }, "11323": { "3394": 3 }, "11325": { "3394": 3 }, "11327": { "3394": 3 }, "11329": { "3394": 3 }, "11331": { "3394": 1 }, "11333": { "3394": 1 }, "11335": { "3394": 1 }, "11337": { "3394": 1 }, "11339": { "3394": 1 }, "11341": { "3394": 1 }, "11343": { "3394": 1 }, "11345": { "3394": 1 }, "11347": { "3394": 2 }, "11349": { "3394": 2 }, "11351": { "3394": 2 }, "11353": { "3394": 2 }, "11355": { "16069": 1 }, "11357": { "16069": 2 }, "11359": { "16069": 3 }, "11365": { "3331": 5, "12095": 1 }, "11370": { "11579": 1 }, "11371": { "3329": 5, "12095": 1 }, "11373": { "3329": 5, "12095": 1 }, "11375": { "3328": 5, "12095": 1 }, "11377": { "3328": 5, "12093": 1 }, "11379": { "3330": 5, "12095": 1 }, "11381": { "3330": 5, "12095": 1 }, "11383": { "3331": 5, "11395": 1 }, "11387": { "3329": 5, "28615": 1 }, "11389": { "3328": 5, "11395": 1 }, "11393": { "3331": 5, "12095": 1 }, "11395": { "3386": 5, "3410": 5 }, "11396": { "11395": 1 }, "11400": { "3329": 5, "12095": 1 }, "11433": { "3402": 5, "3413": 5 }, "11441": { "3402": 5, "3413": 5 }, "11442": { "3402": 5, "3426": 5 }, "11443": { "3402": 5, "3413": 5 }, "11444": { "3392": 5, "3402": 5 }, "11445": { "3392": 5, "3402": 5 }, "11446": { "3402": 5, "3413": 5 }, "11447": { "3402": 5, "3413": 5 }, "11448": { "3402": 5, "3426": 5 }, "11449": { "3392": 5, "3402": 5 }, "11450": { "3392": 5, "3402": 5 }, "11451": { "3402": 5, "3413": 5 }, "11452": { "3392": 5, "3402": 5 }, "11453": { "3402": 5, "3426": 5 }, "11454": { "3392": 5, "3402": 5 }, "11455": { "3402": 5, "3413": 5 }, "11487": { "3392": 5, "3402": 5 }, "11488": { "11584": 1 }, "11489": { "11584": 1 }, "11490": { "11584": 1 }, "11496": { "30324": 1 }, "11529": { "3392": 5, "3402": 5 }, "11561": { "3419": 1 }, "11563": { "3418": 2 }, "11566": { "3416": 4 }, "11567": { "3347": 1, "20533": 5 }, "11569": { "3348": 1, "20494": 5 }, "11572": { "3348": 1, "3349": 5 }, "11574": { "3348": 5 }, "11577": { "11579": 3 }, "11578": { "11579": 4 }, "11579": { "3426": 4 }, "11640": { "3455": 4 }, "11642": { "3394": 5 }, "11644": { "3394": 5 }, "11646": { "3394": 5 }, "11648": { "3394": 5 }, "11744": { "9955": 5 }, "11858": { "3402": 5, "3426": 5 }, "11936": { "3339": 1 }, "11938": { "3339": 1 }, "11940": { "3331": 1 }, "11942": { "3331": 1 }, "11957": { "3334": 5, "22761": 1 }, "11959": { "3334": 5, "22761": 1 }, "11961": { "3333": 5, "22761": 1 }, "11963": { "3333": 5, "22761": 1 }, "11965": { "3335": 5, "22761": 1 }, "11969": { "3332": 5, "22761": 1 }, "11971": { "3332": 5, "22761": 1 }, "11978": { "3333": 5, "12096": 1 }, "11985": { "3334": 5, "12096": 1 }, "11987": { "3335": 5, "12096": 1 }, "11989": { "3332": 5, "12096": 1 }, "11993": { "3334": 5, "16591": 1 }, "11995": { "3334": 5, "28609": 1 }, "11999": { "3333": 5, "16591": 1 }, "12003": { "3335": 5, "16591": 1 }, "12005": { "3332": 5, "16591": 1 }, "12011": { "3334": 5, "16591": 1 }, "12013": { "3333": 5, "28609": 1 }, "12015": { "3333": 5, "16591": 1 }, "12017": { "3335": 5, "28609": 1 }, "12019": { "3335": 5, "16591": 1 }, "12021": { "3332": 5, "28609": 1 }, "12023": { "3332": 5, "16591": 1 }, "12032": { "3330": 5, "12093": 1 }, "12034": { "3329": 5, "12093": 1 }, "12036": { "3329": 5 }, "12038": { "3331": 5, "12093": 1 }, "12042": { "3328": 5, "12095": 1 }, "12044": { "3328": 5, "12095": 1 }, "12052": { "3454": 1 }, "12054": { "3454": 1 }, "12056": { "3450": 1 }, "12058": { "3450": 4 }, "12066": { "3450": 1 }, "12068": { "3450": 4 }, "12076": { "3454": 4 }, "12084": { "3454": 4 }, "12092": { "3327": 3, "3453": 5 }, "12093": { "3327": 3, "3432": 5 }, "12095": { "3327": 3, "3392": 5, "3413": 5 }, "12096": { "3327": 3, "3428": 5, "3431": 5 }, "12097": { "3327": 3 }, "12098": { "3327": 4, "3435": 5, "11446": 1 }, "12099": { "3327": 4 }, "12102": { "3423": 4 }, "12108": { "3386": 5, "11395": 1 }, "12179": { "3403": 5, "3406": 5 }, "12180": { "3389": 5, "3409": 4 }, "12181": { "3389": 5, "3409": 4 }, "12182": { "3389": 5, "3409": 4 }, "12183": { "3389": 4, "3409": 3 }, "12184": { "3389": 4, "3409": 3 }, "12185": { "3389": 4, "3409": 3 }, "12186": { "3385": 5, "3402": 3 }, "12187": { "3385": 5, "3402": 3 }, "12188": { "3385": 5, "3402": 3 }, "12189": { "3389": 5, "3409": 4 }, "12190": { "3385": 5, "3402": 3 }, "12191": { "3385": 4, "3402": 3 }, "12192": { "3385": 4, "3402": 3 }, "12193": { "3385": 4, "3402": 3 }, "12194": { "3389": 4, "3409": 3 }, "12195": { "3385": 4, "3402": 3 }, "12196": { "3389": 5, "3409": 5 }, "12198": { "3435": 3, "11584": 2 }, "12199": { "3435": 4, "11584": 3 }, "12200": { "3435": 5, "11584": 4 }, "12201": { "3302": 5, "3311": 3 }, "12202": { "3305": 5, "3311": 4 }, "12203": { "3308": 5, "3311": 5 }, "12204": { "3306": 5, "3311": 4 }, "12205": { "3309": 5, "3311": 5 }, "12206": { "3304": 5, "3311": 4 }, "12207": { "3307": 5, "3311": 5 }, "12208": { "3305": 5, "3312": 4 }, "12209": { "3308": 5, "3312": 5 }, "12210": { "3301": 5, "3312": 3 }, "12211": { "3304": 5, "3312": 4 }, "12212": { "3307": 5, "3312": 5 }, "12213": { "3303": 5, "3312": 3 }, "12214": { "3306": 5, "3312": 4 }, "12215": { "3309": 5, "3312": 5 }, "12217": { "3423": 1 }, "12219": { "3423": 1, "24572": 1 }, "12221": { "3423": 4 }, "12223": { "3423": 4, "24572": 4 }, "12225": { "3423": 1 }, "12237": { "11584": 1 }, "12238": { "11584": 1 }, "12239": { "11584": 1 }, "12240": { "3380": 1 }, "12241": { "3732": 5 }, "12257": { "3423": 2 }, "12259": { "3423": 4 }, "12261": { "3423": 3 }, "12263": { "3423": 5 }, "12265": { "3423": 2 }, "12267": { "3423": 4 }, "12269": { "3423": 3 }, "12271": { "3423": 5 }, "12274": { "3318": 1 }, "12305": { "3436": 4 }, "12344": { "3300": 3, "3304": 1 }, "12346": { "3300": 1, "3304": 5, "12206": 1 }, "12354": { "3300": 5, "3307": 1 }, "12356": { "3300": 1, "3307": 5, "12207": 1 }, "12365": { "3416": 4 }, "12366": { "3416": 4 }, "12367": { "3416": 4 }, "12368": { "3449": 5, "11579": 3 }, "12441": { "3319": 1 }, "12442": { "3319": 3 }, "12484": { "3436": 5 }, "12485": { "3436": 5 }, "12486": { "3436": 5 }, "12487": { "3436": 5 }, "12552": { "11083": 1 }, "12557": { "11083": 1 }, "12559": { "11083": 1 }, "12561": { "12213": 1 }, "12563": { "12213": 1 }, "12565": { "12213": 1 }, "12604": { "3426": 1 }, "12608": { "11084": 1 }, "12610": { "12210": 1 }, "12612": { "12210": 1 }, "12614": { "12210": 1 }, "12616": { "11082": 1 }, "12618": { "11082": 1 }, "12620": { "11082": 1 }, "12625": { "11084": 1 }, "12627": { "11084": 1 }, "12629": { "12201": 1 }, "12631": { "12201": 1 }, "12633": { "12201": 1 }, "12709": { "19921": 1 }, "12711": { "3427": 2 }, "12713": { "3427": 3 }, "12715": { "3427": 4 }, "12717": { "3427": 5 }, "12729": { "3342": 5, "19719": 1 }, "12731": { "3342": 5, "19719": 1 }, "12733": { "3343": 5, "19719": 1 }, "12735": { "3341": 5, "19719": 1 }, "12743": { "3340": 5, "19719": 1 }, "12745": { "3340": 5, "19719": 1 }, "12747": { "3341": 5, "19719": 1 }, "12753": { "3343": 5, "19719": 1 }, "12761": { "12203": 1 }, "12763": { "12203": 1 }, "12765": { "12203": 1 }, "12767": { "12202": 1 }, "12769": { "12202": 1 }, "12771": { "12202": 1 }, "12773": { "12208": 1 }, "12775": { "12209": 1 }, "12777": { "12208": 1 }, "12779": { "12209": 1 }, "12781": { "12208": 1 }, "12783": { "12209": 1 }, "12785": { "12211": 1 }, "12787": { "12212": 1 }, "12789": { "12211": 1 }, "12791": { "12212": 1 }, "12793": { "12211": 1 }, "12795": { "12212": 1 }, "12797": { "12206": 1 }, "12799": { "12207": 1 }, "12801": { "12206": 1 }, "12803": { "12207": 1 }, "12805": { "12206": 1 }, "12807": { "12207": 1 }, "12810": { "12214": 1 }, "12812": { "12215": 1 }, "12814": { "12214": 1 }, "12816": { "12215": 1 }, "12818": { "12214": 1 }, "12820": { "12215": 1 }, "12822": { "12204": 1 }, "12824": { "12205": 1 }, "12826": { "12204": 1 }, "12828": { "12205": 1 }, "12830": { "12204": 1 }, "12832": { "12205": 1 }, "13001": { "3423": 3 }, "13003": { "3423": 3 }, "13069": { "3443": 2 }, "13070": { "3443": 2 }, "13071": { "3443": 2 }, "13072": { "3443": 2 }, "13073": { "3443": 2 }, "13074": { "3443": 2 }, "13075": { "3443": 2 }, "13119": { "3319": 5, "3320": 5, "20209": 1 }, "13166": { "3411": 2 }, "13202": { "3336": 1 }, "13209": { "3411": 5, "11569": 5 }, "13216": { "3411": 2 }, "13217": { "3411": 3 }, "13218": { "3411": 3 }, "13219": { "3411": 3 }, "13220": { "3411": 2 }, "13221": { "3411": 2 }, "13222": { "3411": 2 }, "13223": { "3411": 1 }, "13224": { "3411": 1 }, "13225": { "3411": 1 }, "13226": { "3411": 2 }, "13227": { "3411": 2 }, "13228": { "3411": 2 }, "13229": { "3411": 2 }, "13230": { "3411": 2 }, "13231": { "3411": 2 }, "13232": { "3411": 2 }, "13233": { "3411": 2 }, "13234": { "3411": 2 }, "13235": { "3411": 2 }, "13236": { "3411": 2 }, "13237": { "3411": 2 }, "13238": { "3411": 2 }, "13239": { "3411": 2 }, "13240": { "3411": 2 }, "13241": { "3411": 2 }, "13242": { "3411": 2 }, "13243": { "3411": 2 }, "13244": { "3411": 2 }, "13245": { "3411": 1 }, "13246": { "3411": 1 }, "13247": { "3411": 2 }, "13248": { "3411": 2 }, "13249": { "3411": 2 }, "13250": { "3411": 2 }, "13251": { "3411": 2 }, "13252": { "3411": 3 }, "13253": { "3411": 2 }, "13254": { "3411": 2 }, "13255": { "3411": 2 }, "13256": { "3411": 2 }, "13257": { "3411": 2 }, "13258": { "3411": 2 }, "13259": { "3411": 2 }, "13260": { "3411": 2 }, "13261": { "3411": 2 }, "13262": { "3411": 2 }, "13263": { "3411": 2 }, "13265": { "3411": 2 }, "13278": { "3402": 3, "3551": 3 }, "13279": { "3402": 3 }, "13283": { "3411": 1 }, "13284": { "3411": 1 }, "13285": { "3411": 1 }, "13286": { "3411": 1 }, "13287": { "3411": 1 }, "13320": { "3319": 1, "3326": 1 }, "13773": { "3300": 1, "3302": 1 }, "13774": { "3300": 5, "3308": 1 }, "13775": { "3300": 5, "3308": 1 }, "13776": { "3300": 1, "3302": 1 }, "13777": { "3300": 1, "3302": 1 }, "13778": { "3300": 3, "3305": 1 }, "13779": { "3300": 1, "3302": 1 }, "13780": { "11584": 1 }, "13781": { "3300": 1, "3302": 1 }, "13782": { "3300": 3, "3305": 1 }, "13783": { "3300": 3, "3305": 1 }, "13784": { "3300": 3, "3305": 1 }, "13785": { "3300": 5, "3308": 1 }, "13786": { "3300": 3, "3305": 1 }, "13787": { "3300": 5, "3308": 1 }, "13788": { "3300": 5, "3308": 1 }, "13791": { "3300": 5, "3309": 1 }, "13793": { "3300": 5, "3309": 1 }, "13795": { "3300": 1, "3303": 1 }, "13797": { "3300": 1, "3303": 1 }, "13799": { "3300": 3, "3306": 1 }, "13801": { "3300": 3, "3306": 1 }, "13803": { "3300": 1, "3303": 1 }, "13805": { "3300": 3, "3306": 1 }, "13807": { "3300": 3, "3306": 1 }, "13809": { "3300": 1, "3303": 1 }, "13811": { "3300": 1, "3303": 1 }, "13813": { "3300": 5, "3309": 1 }, "13815": { "3300": 5, "3309": 1 }, "13817": { "3300": 5, "3309": 1 }, "13819": { "3300": 3, "3306": 1 }, "13820": { "3300": 5, "3309": 1 }, "13821": { "3300": 5, "3309": 1 }, "13822": { "3300": 1, "3303": 1 }, "13823": { "3300": 1, "3303": 1 }, "13824": { "3300": 3, "3306": 1 }, "13825": { "3300": 3, "3306": 1 }, "13826": { "3300": 1, "3303": 1 }, "13827": { "3300": 3, "3306": 1 }, "13828": { "3300": 3, "3306": 1 }, "13829": { "3300": 1, "3303": 1 }, "13830": { "3300": 1, "3303": 1 }, "13831": { "3300": 5, "3309": 1 }, "13832": { "3300": 5, "3309": 1 }, "13833": { "3300": 3, "3306": 1 }, "13834": { "3300": 5, "3309": 1 }, "13856": { "3319": 5, "25718": 1, "25719": 5 }, "13864": { "3300": 1, "3301": 1 }, "13865": { "3300": 1, "3301": 1 }, "13866": { "3300": 1, "3301": 1 }, "13867": { "3300": 1, "3301": 1 }, "13868": { "3300": 3, "3304": 1 }, "13870": { "3300": 3, "3304": 1 }, "13872": { "3300": 3, "3304": 1 }, "13873": { "3300": 3, "3304": 1 }, "13874": { "3300": 5, "3307": 1 }, "13876": { "3300": 5, "3307": 1 }, "13878": { "3300": 5, "3307": 1 }, "13879": { "3300": 5, "3307": 1 }, "13880": { "3300": 3, "3304": 1 }, "13881": { "3300": 3, "3304": 1 }, "13882": { "3300": 5, "3307": 1 }, "13883": { "3300": 5, "3307": 1 }, "13884": { "3300": 3, "3304": 1 }, "13885": { "3300": 3, "3304": 1 }, "13886": { "3300": 1, "3301": 1 }, "13887": { "3300": 1, "3301": 1 }, "13888": { "3300": 1, "3301": 1 }, "13889": { "3300": 5, "3307": 1 }, "13890": { "3300": 5, "3307": 1 }, "13891": { "3300": 5, "3307": 1 }, "13892": { "3300": 3, "3304": 1 }, "13893": { "3300": 1, "3301": 1 }, "13894": { "3300": 1, "3301": 1 }, "13919": { "3319": 1, "3321": 1 }, "13920": { "3319": 1, "3321": 1 }, "13921": { "3319": 1, "3324": 1 }, "13922": { "3319": 1, "3324": 1 }, "13923": { "3319": 1, "3325": 1 }, "13924": { "3319": 1, "3325": 1 }, "13925": { "3319": 1, "3321": 1 }, "13926": { "3319": 1, "3321": 1 }, "13927": { "3319": 1, "3326": 1 }, "13929": { "3319": 1, "3326": 1 }, "13931": { "3319": 1, "3320": 1 }, "13933": { "3319": 1, "3320": 1 }, "13935": { "3318": 1 }, "13937": { "3318": 1 }, "13939": { "3318": 1 }, "13941": { "3318": 1 }, "13943": { "3318": 1 }, "13945": { "3318": 1 }, "13947": { "3416": 2 }, "13948": { "3416": 2 }, "13949": { "3416": 1 }, "13950": { "3416": 1 }, "13951": { "3416": 1 }, "13952": { "3416": 1 }, "13953": { "3416": 3 }, "13954": { "3416": 3 }, "13955": { "3392": 3, "3393": 1 }, "13956": { "3392": 3, "3393": 1 }, "13957": { "3392": 3, "3393": 1 }, "13958": { "3392": 2, "3393": 1 }, "13959": { "3392": 2, "3393": 1 }, "13960": { "3392": 2, "3393": 1 }, "13962": { "3392": 1, "3393": 1 }, "13963": { "3392": 1, "3393": 1 }, "13964": { "3392": 1, "3393": 1 }, "13965": { "3420": 1 }, "13966": { "3420": 1 }, "13967": { "3420": 1 }, "13968": { "3420": 1 }, "13969": { "3420": 1 }, "13970": { "3394": 3 }, "13972": { "3394": 3 }, "13974": { "3394": 3 }, "13976": { "3394": 3 }, "13978": { "3394": 3 }, "13980": { "3394": 3 }, "13982": { "3394": 3 }, "13984": { "3394": 3 }, "13986": { "3394": 3 }, "13988": { "3394": 3 }, "13990": { "3394": 3 }, "13992": { "3394": 3 }, "13994": { "3420": 1 }, "13995": { "3420": 1 }, "13996": { "3420": 1 }, "13997": { "3420": 1 }, "13998": { "3420": 1 }, "13999": { "3394": 1 }, "14001": { "3394": 1 }, "14003": { "3394": 1 }, "14005": { "3394": 1 }, "14007": { "3394": 1 }, "14009": { "3394": 1 }, "14011": { "3394": 1 }, "14013": { "3394": 1 }, "14015": { "3394": 1 }, "14017": { "3394": 1 }, "14019": { "3394": 1 }, "14021": { "3394": 1 }, "14023": { "3394": 1 }, "14025": { "3394": 1 }, "14027": { "3394": 1 }, "14029": { "3425": 1 }, "14031": { "3425": 1 }, "14033": { "3425": 1 }, "14035": { "3425": 1 }, "14037": { "3425": 1 }, "14039": { "3425": 1 }, "14041": { "3425": 1 }, "14043": { "3425": 1 }, "14045": { "3419": 1 }, "14047": { "3419": 1 }, "14049": { "3394": 1 }, "14051": { "3394": 1 }, "14053": { "3394": 1 }, "14055": { "3394": 1 }, "14057": { "3394": 1 }, "14059": { "3394": 3 }, "14061": { "3394": 3 }, "14063": { "3394": 3 }, "14065": { "3394": 3 }, "14067": { "3392": 3, "3393": 1 }, "14068": { "3392": 2, "3393": 1 }, "14069": { "3392": 1, "3393": 1 }, "14070": { "3394": 3 }, "14072": { "3394": 3 }, "14074": { "3394": 3 }, "14076": { "3394": 3 }, "14078": { "3394": 3 }, "14080": { "3394": 3 }, "14082": { "3394": 3 }, "14084": { "3394": 3 }, "14086": { "3394": 3 }, "14088": { "3394": 3 }, "14090": { "3394": 3 }, "14092": { "3394": 3 }, "14094": { "3394": 3 }, "14096": { "3394": 3 }, "14098": { "3394": 3 }, "14100": { "3318": 1 }, "14102": { "3450": 1 }, "14104": { "3450": 1 }, "14106": { "3450": 1 }, "14108": { "3450": 1 }, "14110": { "3450": 1 }, "14112": { "3450": 1 }, "14114": { "3454": 1 }, "14116": { "3454": 1 }, "14118": { "3454": 1 }, "14120": { "3454": 1 }, "14122": { "3454": 1 }, "14124": { "3454": 1 }, "14126": { "3394": 1 }, "14127": { "3394": 1 }, "14128": { "3424": 2 }, "14130": { "3424": 2 }, "14132": { "3424": 2 }, "14134": { "3424": 2 }, "14136": { "3424": 2 }, "14138": { "3424": 2 }, "14140": { "3424": 2 }, "14142": { "3424": 2 }, "14144": { "3424": 2 }, "14146": { "3424": 2 }, "14148": { "3423": 1 }, "14150": { "3423": 1 }, "14152": { "3423": 3 }, "14154": { "3423": 3 }, "14156": { "3423": 2 }, "14158": { "3423": 2 }, "14160": { "3423": 1 }, "14162": { "3423": 1 }, "14164": { "3423": 2 }, "14166": { "3423": 2 }, "14168": { "3423": 3 }, "14170": { "3423": 3 }, "14172": { "3417": 1 }, "14174": { "3417": 1 }, "14176": { "3417": 1 }, "14178": { "3417": 1 }, "14180": { "3417": 1 }, "14182": { "3417": 1 }, "14184": { "3417": 1 }, "14186": { "3417": 1 }, "14188": { "3421": 1 }, "14190": { "3421": 1 }, "14192": { "3421": 1 }, "14194": { "3421": 1 }, "14196": { "3421": 1 }, "14198": { "3421": 1 }, "14200": { "3421": 1 }, "14202": { "3421": 1 }, "14204": { "3421": 1 }, "14206": { "3421": 1 }, "14208": { "3421": 1 }, "14210": { "3421": 1 }, "14212": { "3421": 1 }, "14214": { "3421": 1 }, "14218": { "3421": 1 }, "14220": { "3421": 1 }, "14222": { "3421": 1 }, "14224": { "3421": 1 }, "14226": { "3421": 1 }, "14228": { "3421": 1 }, "14230": { "3432": 1 }, "14232": { "3432": 1 }, "14234": { "11579": 1 }, "14236": { "3428": 1 }, "14238": { "3317": 1 }, "14240": { "3433": 1 }, "14242": { "3435": 1 }, "14244": { "3435": 1 }, "14246": { "3435": 1 }, "14248": { "3435": 1 }, "14250": { "3435": 1 }, "14252": { "3435": 1, "3449": 1 }, "14254": { "3435": 1, "3449": 1 }, "14256": { "3435": 1, "3449": 1 }, "14258": { "3435": 1, "3449": 1 }, "14260": { "3435": 1, "3449": 1 }, "14262": { "3435": 1 }, "14264": { "3435": 1 }, "14266": { "3435": 1 }, "14268": { "3435": 1 }, "14270": { "3435": 1 }, "14272": { "3300": 3, "3304": 1 }, "14274": { "3300": 3, "3304": 1 }, "14276": { "3300": 3, "3304": 1 }, "14278": { "3300": 3, "3304": 1 }, "14280": { "3300": 5, "3307": 1 }, "14282": { "3300": 5, "3307": 1 }, "14284": { "3300": 5, "3307": 1 }, "14286": { "3300": 5, "3307": 1 }, "14295": { "3411": 1 }, "14296": { "3411": 1 }, "14297": { "3411": 1 }, "14298": { "3411": 1 }, "14299": { "3411": 1 }, "14375": { "3300": 5, "3307": 1 }, "14377": { "3300": 5, "3307": 1 }, "14379": { "3300": 5, "3307": 1 }, "14381": { "3300": 5, "3307": 1 }, "14383": { "3300": 5, "3307": 1 }, "14385": { "3300": 5, "3307": 1 }, "14387": { "3300": 5, "3307": 1 }, "14389": { "3300": 5, "3307": 1 }, "14391": { "3300": 5, "3307": 1 }, "14393": { "3300": 5, "3307": 1 }, "14395": { "3300": 5, "3307": 1 }, "14397": { "3300": 5, "3307": 1 }, "14399": { "3300": 5, "3307": 1 }, "14401": { "3300": 5, "3307": 1 }, "14403": { "3300": 5, "3307": 1 }, "14405": { "3300": 5, "3307": 1 }, "14407": { "3300": 5, "3307": 1 }, "14409": { "3300": 5, "3307": 1 }, "14411": { "3300": 5, "3307": 1 }, "14413": { "3300": 5, "3307": 1 }, "14415": { "3300": 5, "3307": 1 }, "14417": { "3300": 5, "3309": 1 }, "14419": { "3300": 5, "3309": 1 }, "14421": { "3300": 5, "3309": 1 }, "14423": { "3300": 5, "3309": 1 }, "14425": { "3300": 5, "3309": 1 }, "14427": { "3300": 5, "3309": 1 }, "14429": { "3300": 5, "3309": 1 }, "14431": { "3300": 5, "3309": 1 }, "14433": { "3300": 5, "3309": 1 }, "14435": { "3300": 5, "3309": 1 }, "14437": { "3300": 5, "3309": 1 }, "14439": { "3300": 5, "3309": 1 }, "14441": { "3300": 5, "3309": 1 }, "14443": { "3300": 5, "3309": 1 }, "14445": { "3300": 5, "3309": 1 }, "14447": { "3300": 5, "3309": 1 }, "14449": { "3300": 5, "3309": 1 }, "14451": { "3300": 5, "3309": 1 }, "14453": { "3300": 5, "3309": 1 }, "14455": { "3300": 5, "3309": 1 }, "14457": { "3300": 5, "3308": 1 }, "14459": { "3300": 5, "3308": 1 }, "14461": { "3300": 5, "3308": 1 }, "14463": { "3300": 5, "3308": 1 }, "14465": { "3300": 5, "3308": 1 }, "14467": { "3300": 5, "3308": 1 }, "14469": { "3300": 5, "3308": 1 }, "14471": { "3300": 5, "3308": 1 }, "14473": { "3300": 5, "3308": 1 }, "14475": { "3300": 5, "3308": 1 }, "14484": { "3450": 1 }, "14486": { "3450": 1 }, "14488": { "3450": 1 }, "14490": { "3450": 1 }, "14492": { "3454": 1 }, "14494": { "3454": 1 }, "14496": { "3454": 1 }, "14498": { "3454": 1 }, "14500": { "3450": 1 }, "14502": { "3450": 1 }, "14504": { "3450": 1 }, "14506": { "3450": 1 }, "14508": { "3454": 1 }, "14510": { "3454": 1 }, "14512": { "3454": 1 }, "14514": { "3454": 1 }, "14516": { "3319": 1, "3326": 1 }, "14518": { "3319": 1, "3326": 1 }, "14520": { "3319": 1, "3326": 1 }, "14522": { "3319": 1, "3326": 1 }, "14524": { "3319": 1, "3325": 1 }, "14525": { "3319": 1, "3325": 1 }, "14526": { "3319": 1, "3325": 1 }, "14527": { "3319": 1, "3325": 1 }, "14528": { "3318": 1 }, "14530": { "3318": 1 }, "14532": { "3318": 1 }, "14534": { "3318": 1 }, "14536": { "3318": 1 }, "14538": { "3318": 1 }, "14540": { "3318": 1 }, "14542": { "3318": 1 }, "14544": { "3421": 1 }, "14546": { "3421": 1 }, "14548": { "3421": 1 }, "14550": { "3421": 1 }, "14552": { "3392": 3, "3393": 1 }, "14554": { "3392": 3, "3393": 1 }, "14556": { "3394": 1 }, "14560": { "3394": 1 }, "14564": { "3394": 1 }, "14568": { "3394": 1 }, "14572": { "3394": 1 }, "14576": { "3394": 1 }, "14580": { "3394": 1 }, "14584": { "3394": 1 }, "14588": { "3394": 1 }, "14592": { "3394": 1 }, "14597": { "3416": 2 }, "14599": { "3416": 2 }, "14601": { "3416": 3 }, "14603": { "3416": 3 }, "14606": { "3425": 1 }, "14610": { "3425": 1 }, "14614": { "3425": 1 }, "14618": { "3425": 1 }, "14622": { "3425": 1 }, "14626": { "3425": 1 }, "14630": { "3425": 1 }, "14634": { "3425": 1 }, "14636": { "3419": 1 }, "14638": { "3419": 1 }, "14640": { "3318": 1 }, "14642": { "3318": 1 }, "14644": { "3318": 1 }, "14646": { "3318": 1 }, "14648": { "3435": 1 }, "14650": { "3435": 1 }, "14652": { "3435": 1 }, "14654": { "3435": 1 }, "14656": { "3435": 1 }, "14658": { "3435": 1 }, "14660": { "3435": 1 }, "14662": { "3435": 1 }, "14664": { "3435": 1, "3449": 1 }, "14666": { "3435": 1, "3449": 1 }, "14668": { "3435": 1, "3449": 1 }, "14670": { "3435": 1, "3449": 1 }, "14672": { "3319": 1, "3326": 1 }, "14674": { "3319": 1, "3326": 1 }, "14676": { "3319": 1, "3326": 1 }, "14678": { "3319": 1, "3326": 1 }, "14680": { "3319": 1, "3325": 1 }, "14681": { "3319": 1, "3325": 1 }, "14682": { "3319": 1, "3325": 1 }, "14683": { "3319": 1, "3325": 1 }, "14684": { "3318": 1 }, "14686": { "3318": 1 }, "14688": { "3318": 1 }, "14690": { "3318": 1 }, "14692": { "3421": 1 }, "14694": { "3421": 1 }, "14696": { "3421": 1 }, "14698": { "3421": 1 }, "14700": { "3416": 2 }, "14701": { "3416": 2 }, "14702": { "3416": 2 }, "14703": { "3416": 2 }, "14704": { "3416": 3 }, "14705": { "3416": 3 }, "14706": { "3416": 3 }, "14707": { "3416": 3 }, "14708": { "3419": 1 }, "14710": { "3419": 1 }, "14712": { "3419": 1 }, "14714": { "3419": 1 }, "14716": { "3425": 1 }, "14718": { "3425": 1 }, "14720": { "3425": 1 }, "14722": { "3425": 1 }, "14724": { "3425": 1 }, "14726": { "3425": 1 }, "14728": { "3425": 1 }, "14730": { "3425": 1 }, "14732": { "3425": 1 }, "14734": { "3425": 1 }, "14736": { "3425": 1 }, "14738": { "3425": 1 }, "14740": { "3425": 1 }, "14742": { "3425": 1 }, "14744": { "3425": 1 }, "14746": { "3425": 1 }, "14748": { "3420": 1 }, "14749": { "3420": 1 }, "14750": { "3420": 1 }, "14751": { "3420": 1 }, "14752": { "3420": 1 }, "14753": { "3420": 1 }, "14754": { "3420": 1 }, "14755": { "3420": 1 }, "14756": { "3420": 1 }, "14757": { "3420": 1 }, "14758": { "3420": 1 }, "14759": { "3420": 1 }, "14760": { "3420": 1 }, "14761": { "3420": 1 }, "14762": { "3420": 1 }, "14763": { "3420": 1 }, "14764": { "3420": 1 }, "14765": { "3420": 1 }, "14766": { "3420": 1 }, "14767": { "3420": 1 }, "14768": { "3432": 1 }, "14770": { "3432": 1 }, "14772": { "3432": 1 }, "14774": { "3432": 1 }, "14776": { "11579": 1 }, "14778": { "11579": 1 }, "14780": { "11579": 1 }, "14782": { "11579": 1 }, "14784": { "3421": 1 }, "14786": { "3421": 1 }, "14788": { "3421": 1 }, "14790": { "3421": 1 }, "14792": { "3421": 1 }, "14794": { "3421": 1 }, "14796": { "3421": 1 }, "14798": { "3421": 1 }, "14800": { "3318": 1 }, "14802": { "3318": 1 }, "14804": { "3318": 1 }, "14806": { "3318": 1 }, "14808": { "3318": 1 }, "14810": { "3318": 1 }, "14812": { "3318": 1 }, "14814": { "3318": 1 }, "14816": { "3423": 3 }, "14818": { "3423": 3 }, "14820": { "3423": 3 }, "14822": { "3423": 3 }, "14824": { "3423": 3 }, "14826": { "3423": 3 }, "14828": { "3423": 3 }, "14830": { "3423": 3 }, "14832": { "3423": 3 }, "14834": { "3423": 3 }, "14836": { "3423": 3 }, "14838": { "3423": 3 }, "14840": { "3423": 3 }, "14842": { "3423": 3 }, "14844": { "3423": 3 }, "14846": { "3423": 3 }, "14848": { "3392": 3, "3393": 1 }, "14849": { "3392": 3, "3393": 1 }, "14850": { "3392": 3, "3393": 1 }, "14851": { "3392": 3, "3393": 1 }, "14852": { "3392": 3, "3393": 1 }, "14853": { "3392": 3, "3393": 1 }, "14854": { "3392": 3, "3393": 1 }, "14855": { "3392": 3, "3393": 1 }, "14856": { "3394": 1 }, "14858": { "3394": 1 }, "14860": { "3394": 1 }, "14862": { "3394": 1 }, "14864": { "3394": 1 }, "14866": { "3394": 1 }, "14868": { "3394": 1 }, "14870": { "3394": 1 }, "14872": { "3394": 1 }, "14874": { "3394": 1 }, "14876": { "3394": 1 }, "14878": { "3394": 1 }, "14880": { "3394": 1 }, "14882": { "3394": 1 }, "14884": { "3394": 1 }, "14886": { "3394": 1 }, "14888": { "3394": 1 }, "14890": { "3394": 1 }, "14892": { "3394": 1 }, "14894": { "3394": 1 }, "14896": { "3394": 1 }, "14898": { "3394": 1 }, "14900": { "3394": 1 }, "14902": { "3394": 1 }, "14904": { "3394": 1 }, "14906": { "3394": 1 }, "14908": { "3394": 1 }, "14910": { "3394": 1 }, "14912": { "3394": 1 }, "14914": { "3394": 1 }, "14916": { "3394": 1 }, "14918": { "3394": 1 }, "14920": { "3394": 1 }, "14922": { "3394": 1 }, "14924": { "3394": 1 }, "14926": { "3394": 1 }, "14928": { "3394": 1 }, "14930": { "3394": 1 }, "14932": { "3394": 1 }, "14934": { "3394": 1 }, "14936": { "3394": 3 }, "14938": { "3394": 3 }, "14940": { "3394": 3 }, "14942": { "3394": 3 }, "14944": { "3394": 3 }, "14946": { "3394": 3 }, "14948": { "3394": 3 }, "14950": { "3394": 3 }, "14952": { "3394": 3 }, "14954": { "3394": 3 }, "14956": { "3394": 3 }, "14958": { "3394": 3 }, "14960": { "3394": 3 }, "14962": { "3394": 3 }, "14964": { "3394": 3 }, "14966": { "3394": 3 }, "14968": { "3394": 3 }, "14970": { "3394": 3 }, "14972": { "3394": 3 }, "14974": { "3394": 3 }, "14976": { "3394": 3 }, "14978": { "3394": 3 }, "14980": { "3394": 3 }, "14982": { "3394": 3 }, "14984": { "3394": 3 }, "14986": { "3394": 3 }, "14988": { "3394": 3 }, "14990": { "3394": 3 }, "14992": { "3394": 3 }, "14994": { "3394": 3 }, "14996": { "3394": 3 }, "14998": { "3394": 3 }, "15000": { "3394": 3 }, "15002": { "3394": 3 }, "15004": { "3394": 3 }, "15006": { "3394": 3 }, "15008": { "3394": 3 }, "15010": { "3394": 3 }, "15012": { "3394": 3 }, "15014": { "3394": 3 }, "15016": { "3394": 3 }, "15018": { "3394": 3 }, "15020": { "3394": 3 }, "15022": { "3394": 3 }, "15024": { "3394": 3 }, "15026": { "3394": 3 }, "15028": { "3394": 3 }, "15030": { "3394": 3 }, "15032": { "3394": 3 }, "15034": { "3394": 3 }, "15036": { "3394": 3 }, "15038": { "3394": 3 }, "15040": { "3394": 3 }, "15042": { "3394": 3 }, "15044": { "3394": 3 }, "15046": { "3394": 3 }, "15048": { "3394": 3 }, "15050": { "3394": 3 }, "15052": { "3394": 3 }, "15054": { "3394": 3 }, "15056": { "3394": 3 }, "15058": { "3394": 3 }, "15060": { "3394": 3 }, "15062": { "3394": 3 }, "15064": { "3394": 3 }, "15066": { "3394": 3 }, "15068": { "3394": 3 }, "15070": { "3394": 3 }, "15072": { "3394": 3 }, "15074": { "3394": 3 }, "15076": { "3394": 3 }, "15078": { "3394": 3 }, "15080": { "3424": 2 }, "15082": { "3424": 2 }, "15084": { "3424": 2 }, "15086": { "3424": 2 }, "15088": { "3424": 2 }, "15090": { "3424": 2 }, "15092": { "3424": 2 }, "15094": { "3424": 2 }, "15096": { "3424": 2 }, "15098": { "3424": 2 }, "15100": { "3424": 2 }, "15102": { "3424": 2 }, "15104": { "3424": 2 }, "15106": { "3424": 2 }, "15108": { "3424": 2 }, "15110": { "3424": 2 }, "15112": { "3424": 2 }, "15114": { "3424": 2 }, "15116": { "3424": 2 }, "15118": { "3424": 2 }, "15120": { "3424": 2 }, "15122": { "3424": 2 }, "15124": { "3424": 2 }, "15126": { "3424": 2 }, "15128": { "3417": 1 }, "15130": { "3417": 1 }, "15132": { "3417": 1 }, "15134": { "3417": 1 }, "15136": { "3417": 1 }, "15138": { "3417": 1 }, "15140": { "3417": 1 }, "15142": { "3417": 1 }, "15144": { "3318": 1 }, "15146": { "3318": 1 }, "15148": { "3318": 1 }, "15150": { "3318": 1 }, "15152": { "3421": 1 }, "15154": { "3421": 1 }, "15156": { "3421": 1 }, "15158": { "3421": 1 }, "15160": { "3392": 3, "3393": 1 }, "15161": { "3392": 3, "3393": 1 }, "15162": { "3392": 3, "3393": 1 }, "15163": { "3392": 3, "3393": 1 }, "15164": { "3394": 1 }, "15166": { "3394": 1 }, "15168": { "3394": 1 }, "15170": { "3394": 1 }, "15172": { "3394": 1 }, "15174": { "3394": 1 }, "15176": { "3394": 1 }, "15178": { "3394": 1 }, "15180": { "3394": 1 }, "15182": { "3394": 1 }, "15184": { "3394": 1 }, "15186": { "3394": 1 }, "15188": { "3394": 1 }, "15190": { "3394": 1 }, "15192": { "3394": 1 }, "15194": { "3394": 1 }, "15196": { "3394": 1 }, "15198": { "3394": 1 }, "15200": { "3394": 1 }, "15202": { "3394": 1 }, "15204": { "3394": 3 }, "15206": { "3394": 3 }, "15208": { "3394": 3 }, "15210": { "3394": 3 }, "15212": { "3394": 3 }, "15214": { "3394": 3 }, "15216": { "3394": 3 }, "15218": { "3394": 3 }, "15220": { "3394": 3 }, "15222": { "3394": 3 }, "15224": { "3394": 3 }, "15226": { "3394": 3 }, "15228": { "3394": 3 }, "15230": { "3394": 3 }, "15232": { "3394": 3 }, "15234": { "3394": 3 }, "15236": { "3394": 3 }, "15238": { "3394": 3 }, "15240": { "3394": 3 }, "15242": { "3394": 3 }, "15244": { "3394": 3 }, "15246": { "3394": 3 }, "15248": { "3394": 3 }, "15250": { "3394": 3 }, "15252": { "3394": 3 }, "15254": { "3394": 3 }, "15256": { "3394": 3 }, "15258": { "3394": 3 }, "15260": { "3394": 3 }, "15262": { "3394": 3 }, "15264": { "3394": 3 }, "15266": { "3394": 3 }, "15268": { "3394": 3 }, "15270": { "3394": 3 }, "15272": { "3394": 3 }, "15274": { "3394": 3 }, "15276": { "3428": 1 }, "15278": { "3428": 1 }, "15280": { "3428": 1 }, "15282": { "3428": 1 }, "15284": { "3317": 1 }, "15286": { "3317": 1 }, "15288": { "3317": 1 }, "15290": { "3317": 1 }, "15292": { "3424": 2 }, "15294": { "3424": 2 }, "15296": { "3424": 2 }, "15298": { "3424": 2 }, "15300": { "3424": 2 }, "15302": { "3424": 2 }, "15304": { "3424": 2 }, "15306": { "3424": 2 }, "15308": { "3432": 1 }, "15310": { "3432": 1 }, "15312": { "3432": 1 }, "15314": { "3432": 1 }, "15397": { "3318": 1 }, "15399": { "3300": 5, "3309": 1 }, "15401": { "3300": 5, "3309": 1 }, "15403": { "3300": 5, "3309": 1 }, "15405": { "3421": 1 }, "15407": { "3420": 1 }, "15408": { "3425": 2 }, "15416": { "3318": 1 }, "15418": { "3420": 1 }, "15419": { "3435": 1 }, "15425": { "3432": 1 }, "15431": { "3435": 1 }, "15433": { "3435": 1, "3449": 1 }, "15435": { "3318": 1 }, "15437": { "3424": 2 }, "15439": { "3424": 2 }, "15447": { "3318": 1 }, "15449": { "3319": 1, "3326": 1 }, "15451": { "3423": 3 }, "15453": { "3394": 3 }, "15455": { "3394": 3 }, "15457": { "3405": 1 }, "15458": { "3405": 2 }, "15459": { "3405": 3 }, "15460": { "3405": 1 }, "15461": { "3405": 2 }, "15462": { "3405": 3 }, "15463": { "3405": 1 }, "15464": { "3405": 2 }, "15465": { "3405": 3 }, "15466": { "3405": 1 }, "15477": { "3405": 2 }, "15478": { "3405": 3 }, "15479": { "3405": 1 }, "15480": { "3405": 2 }, "15508": { "3436": 3, "33699": 1 }, "15510": { "3436": 3, "33699": 1 }, "15675": { "3432": 1 }, "15677": { "3432": 1 }, "15681": { "3318": 1 }, "15683": { "3318": 1 }, "15685": { "3394": 1 }, "15687": { "3394": 1 }, "15689": { "3394": 1 }, "15691": { "3394": 1 }, "15693": { "3394": 1 }, "15695": { "3394": 1 }, "15697": { "3394": 1 }, "15699": { "3394": 1 }, "15701": { "3394": 1 }, "15703": { "3394": 1 }, "15705": { "3394": 3 }, "15707": { "3394": 3 }, "15709": { "3394": 3 }, "15711": { "3394": 3 }, "15713": { "3394": 3 }, "15715": { "3394": 3 }, "15717": { "3394": 3 }, "15719": { "3394": 3 }, "15721": { "3394": 3 }, "15723": { "3394": 3 }, "15725": { "3394": 3 }, "15727": { "3394": 3 }, "15729": { "3394": 3 }, "15731": { "3394": 3 }, "15733": { "3394": 3 }, "15735": { "3394": 3 }, "15737": { "3394": 3 }, "15739": { "3394": 3 }, "15741": { "3392": 1, "3393": 1 }, "15742": { "3392": 2, "3393": 1 }, "15743": { "3392": 3, "3393": 1 }, "15744": { "3392": 1, "3393": 1 }, "15745": { "3392": 2, "3393": 1 }, "15746": { "3392": 3, "3393": 1 }, "15747": { "3454": 1 }, "15749": { "3450": 1 }, "15751": { "3454": 1 }, "15753": { "3450": 1 }, "15755": { "3454": 1 }, "15757": { "3450": 1 }, "15759": { "3454": 1 }, "15761": { "3450": 1 }, "15764": { "3454": 1 }, "15766": { "3450": 1 }, "15768": { "3454": 1 }, "15770": { "3450": 1 }, "15772": { "3417": 1 }, "15774": { "3417": 1 }, "15776": { "3417": 1 }, "15778": { "3417": 1 }, "15780": { "3417": 1 }, "15782": { "3417": 1 }, "15784": { "3417": 1 }, "15786": { "3417": 1 }, "15788": { "3424": 2 }, "15790": { "11579": 1 }, "15792": { "3317": 1 }, "15794": { "3423": 1 }, "15796": { "3423": 2 }, "15798": { "3423": 3 }, "15800": { "3423": 1 }, "15802": { "3423": 2 }, "15804": { "3423": 3 }, "15806": { "3318": 1 }, "15808": { "3318": 1 }, "15810": { "3318": 1 }, "15812": { "3394": 1 }, "15813": { "3394": 1 }, "15814": { "3300": 5, "3307": 1 }, "15815": { "3300": 3, "3304": 1 }, "15816": { "3300": 1, "3301": 1 }, "15817": { "3300": 5, "3307": 1 }, "15818": { "3300": 5, "3307": 1 }, "15820": { "3300": 3, "3304": 1 }, "15821": { "3300": 3, "3304": 1 }, "15823": { "3300": 1, "3301": 1 }, "15824": { "3300": 1, "3301": 1 }, "15825": { "3300": 5, "3307": 1 }, "15826": { "3300": 1, "3301": 1 }, "15827": { "3300": 1, "3301": 1 }, "15828": { "3300": 1, "3301": 1 }, "15829": { "3300": 5, "3307": 1 }, "15830": { "3300": 3, "3304": 1 }, "15831": { "3300": 3, "3304": 1 }, "15832": { "3300": 3, "3304": 1 }, "15833": { "3300": 5, "3307": 1 }, "15834": { "3300": 5, "3307": 1 }, "15835": { "3300": 3, "3304": 1 }, "15836": { "3300": 1, "3301": 1 }, "15837": { "3300": 5, "3307": 1 }, "15838": { "3300": 5, "3307": 1 }, "15840": { "3300": 3, "3304": 1 }, "15841": { "3300": 3, "3304": 1 }, "15843": { "3300": 1, "3301": 1 }, "15844": { "3300": 1, "3301": 1 }, "15845": { "3300": 5, "3309": 1 }, "15846": { "3300": 3, "3306": 1 }, "15847": { "3300": 5, "3309": 1 }, "15848": { "3300": 5, "3309": 1 }, "15849": { "3300": 1, "3303": 1 }, "15850": { "3300": 1, "3303": 1 }, "15851": { "3300": 3, "3306": 1 }, "15852": { "3300": 3, "3306": 1 }, "15853": { "3300": 1, "3303": 1 }, "15854": { "3300": 3, "3306": 1 }, "15855": { "3300": 3, "3306": 1 }, "15856": { "3300": 1, "3303": 1 }, "15857": { "3300": 1, "3303": 1 }, "15858": { "3300": 5, "3309": 1 }, "15859": { "3300": 5, "3309": 1 }, "15860": { "3300": 5, "3309": 1 }, "15861": { "3300": 3, "3306": 1 }, "15862": { "3300": 5, "3309": 1 }, "15863": { "3300": 5, "3309": 1 }, "15864": { "3300": 1, "3303": 1 }, "15865": { "3300": 1, "3303": 1 }, "15866": { "3300": 3, "3306": 1 }, "15867": { "3300": 3, "3306": 1 }, "15868": { "3300": 1, "3303": 1 }, "15869": { "3300": 3, "3306": 1 }, "15870": { "3300": 3, "3306": 1 }, "15871": { "3300": 1, "3303": 1 }, "15872": { "3300": 1, "3303": 1 }, "15873": { "3300": 5, "3309": 1 }, "15874": { "3300": 5, "3309": 1 }, "15875": { "3423": 1 }, "15877": { "3423": 2 }, "15879": { "3423": 3 }, "15881": { "3423": 1 }, "15883": { "3423": 2 }, "15885": { "3423": 3 }, "15887": { "3435": 1, "3449": 1 }, "15889": { "3435": 1 }, "15891": { "3435": 1 }, "15893": { "3435": 1, "3449": 1 }, "15895": { "3318": 1 }, "15897": { "3416": 3 }, "15898": { "3416": 1 }, "15899": { "3416": 1 }, "15900": { "3416": 2 }, "15901": { "3416": 3 }, "15902": { "3416": 1 }, "15903": { "3416": 1 }, "15904": { "3416": 2 }, "15905": { "3419": 1 }, "15907": { "3419": 1 }, "15909": { "3425": 1 }, "15911": { "3425": 1 }, "15913": { "3425": 1 }, "15915": { "3425": 1 }, "15917": { "3425": 1 }, "15919": { "3425": 1 }, "15921": { "3425": 1 }, "15923": { "3425": 1 }, "15925": { "3421": 1 }, "15927": { "3421": 1 }, "15929": { "3421": 1 }, "15931": { "3421": 1 }, "15933": { "3421": 1 }, "15935": { "3421": 1 }, "15937": { "3421": 1 }, "15939": { "3421": 1 }, "15941": { "3421": 1 }, "15943": { "3421": 1 }, "15945": { "3421": 1 }, "15947": { "3421": 1 }, "15949": { "3421": 1 }, "15951": { "3421": 1 }, "15953": { "3421": 1 }, "15955": { "3421": 1 }, "15957": { "3421": 1 }, "15959": { "3421": 1 }, "15961": { "3421": 1 }, "15963": { "3421": 1 }, "15965": { "3318": 1 }, "15967": { "3433": 1 }, "16003": { "3411": 4 }, "16004": { "3411": 4 }, "16005": { "3411": 4 }, "16006": { "3411": 4 }, "16008": { "3411": 2 }, "16009": { "3411": 4 }, "16025": { "3319": 1, "3321": 1 }, "16046": { "3300": 1, "3302": 1 }, "16047": { "3300": 5, "3308": 1 }, "16048": { "3300": 5, "3308": 1 }, "16049": { "3300": 1, "3302": 1 }, "16050": { "3300": 1, "3302": 1 }, "16051": { "3300": 3, "3305": 1 }, "16052": { "3300": 1, "3302": 1 }, "16053": { "3300": 1, "3302": 1 }, "16054": { "3300": 3, "3305": 1 }, "16055": { "3300": 3, "3305": 1 }, "16056": { "3300": 3, "3305": 1 }, "16057": { "3300": 5, "3308": 1 }, "16058": { "3300": 3, "3305": 1 }, "16059": { "3300": 5, "3308": 1 }, "16060": { "3300": 5, "3308": 1 }, "16061": { "3319": 1, "3321": 1 }, "16062": { "3319": 1, "3326": 1 }, "16064": { "3319": 1, "3324": 1 }, "16065": { "3319": 1, "3320": 1 }, "16067": { "3319": 1, "3325": 1 }, "16068": { "3319": 1, "3321": 1 }, "16069": { "3392": 3, "3393": 2 }, "16126": { "11579": 5 }, "16136": { "3319": 1, "3321": 5 }, "16137": { "3319": 5 }, "16138": { "3319": 1, "3326": 5 }, "16140": { "3435": 5 }, "16142": { "3425": 5 }, "16144": { "3425": 5 }, "16146": { "3425": 5 }, "16151": { "3394": 3 }, "16153": { "3394": 3 }, "16155": { "3394": 3 }, "16157": { "3394": 3 }, "16206": { "3436": 5, "3441": 1 }, "16216": { "11584": 1 }, "16219": { "3380": 1 }, "16220": { "11584": 1 }, "16222": { "11584": 1 }, "16227": { "33096": 1 }, "16229": { "33097": 1 }, "16231": { "33098": 1 }, "16233": { "33095": 1 }, "16236": { "33091": 1 }, "16238": { "33092": 1 }, "16240": { "33093": 1 }, "16242": { "33094": 1 }, "16245": { "3411": 4 }, "16246": { "3411": 4 }, "16247": { "3411": 4 }, "16248": { "3411": 4 }, "16249": { "3411": 4 }, "16262": { "16281": 1 }, "16263": { "16281": 1 }, "16264": { "16281": 1 }, "16265": { "16281": 1 }, "16266": { "16281": 1 }, "16267": { "16281": 1 }, "16268": { "16281": 1 }, "16269": { "16281": 1 }, "16278": { "16281": 1 }, "16281": { "3386": 4 }, "16297": { "3455": 1 }, "16299": { "3455": 1 }, "16301": { "3455": 1 }, "16303": { "3455": 1 }, "16305": { "3394": 1 }, "16307": { "3394": 1 }, "16309": { "3394": 1 }, "16311": { "3394": 1 }, "16313": { "3394": 1 }, "16315": { "3394": 1 }, "16317": { "3394": 1 }, "16319": { "3394": 1 }, "16321": { "3394": 1 }, "16323": { "3394": 1 }, "16325": { "3394": 1 }, "16327": { "3394": 1 }, "16329": { "3394": 1 }, "16331": { "3394": 1 }, "16333": { "3394": 1 }, "16335": { "3394": 1 }, "16337": { "3394": 1 }, "16339": { "3394": 1 }, "16341": { "3394": 1 }, "16343": { "3394": 1 }, "16345": { "3394": 1 }, "16347": { "3394": 1 }, "16349": { "3394": 1 }, "16351": { "3394": 1 }, "16353": { "3394": 3 }, "16355": { "3394": 3 }, "16357": { "3394": 3 }, "16359": { "3394": 3 }, "16361": { "3394": 3 }, "16363": { "3394": 3 }, "16365": { "3394": 3 }, "16367": { "3394": 3 }, "16369": { "3394": 3 }, "16371": { "3394": 3 }, "16373": { "3394": 3 }, "16375": { "3394": 3 }, "16377": { "3394": 3 }, "16379": { "3394": 3 }, "16381": { "3394": 3 }, "16383": { "3394": 3 }, "16385": { "3394": 3 }, "16387": { "3394": 3 }, "16389": { "3394": 3 }, "16391": { "3394": 3 }, "16393": { "3394": 3 }, "16395": { "3394": 3 }, "16397": { "3394": 3 }, "16399": { "3394": 3 }, "16401": { "3394": 3 }, "16403": { "3394": 3 }, "16405": { "3394": 3 }, "16407": { "3394": 3 }, "16409": { "3394": 3 }, "16411": { "3394": 3 }, "16413": { "3394": 3 }, "16415": { "3394": 3 }, "16417": { "3394": 3 }, "16419": { "3394": 3 }, "16421": { "3394": 3 }, "16423": { "3394": 3 }, "16425": { "3394": 3 }, "16427": { "3394": 3 }, "16429": { "3394": 3 }, "16431": { "3394": 3 }, "16433": { "16069": 1 }, "16435": { "16069": 1 }, "16437": { "16069": 1 }, "16439": { "16069": 1 }, "16441": { "16069": 2 }, "16443": { "16069": 2 }, "16445": { "16069": 2 }, "16447": { "16069": 2 }, "16449": { "16069": 3 }, "16451": { "16069": 3 }, "16453": { "16069": 3 }, "16455": { "16069": 3 }, "16457": { "3318": 1 }, "16459": { "3318": 1 }, "16461": { "3318": 1 }, "16463": { "3318": 1 }, "16465": { "3423": 2 }, "16467": { "3423": 2 }, "16469": { "3423": 2 }, "16471": { "3423": 2 }, "16473": { "3423": 3 }, "16475": { "3423": 3 }, "16477": { "3423": 3 }, "16479": { "3423": 3 }, "16481": { "3423": 1 }, "16483": { "3423": 1 }, "16485": { "3423": 1 }, "16487": { "3423": 1 }, "16489": { "3423": 1 }, "16491": { "3423": 1 }, "16493": { "3423": 1 }, "16495": { "3423": 1 }, "16497": { "3423": 3 }, "16499": { "3423": 3 }, "16501": { "3423": 3 }, "16503": { "3423": 3 }, "16505": { "3423": 2 }, "16507": { "3423": 2 }, "16509": { "3423": 2 }, "16511": { "3423": 2 }, "16513": { "3319": 1, "3326": 1 }, "16515": { "3319": 1, "3326": 1 }, "16517": { "3319": 1, "3326": 1 }, "16519": { "3319": 1, "3326": 1 }, "16521": { "3319": 1, "3320": 1 }, "16523": { "3319": 1, "3320": 1 }, "16525": { "3319": 1, "3320": 1 }, "16527": { "3319": 1, "3320": 1 }, "16529": { "3419": 1 }, "16531": { "3419": 1 }, "16533": { "3419": 1 }, "16535": { "3419": 1 }, "16537": { "3418": 2 }, "16539": { "3418": 2 }, "16541": { "3418": 2 }, "16543": { "3418": 2 }, "16591": { "3318": 5, "3327": 5, "3418": 4, "3424": 5 }, "16594": { "16598": 2 }, "16595": { "3443": 4 }, "16596": { "3444": 5, "16598": 2 }, "16597": { "3446": 4, "16622": 4 }, "16598": { "3443": 2 }, "16599": { "3424": 2 }, "16601": { "3424": 2 }, "16603": { "3424": 2 }, "16605": { "3424": 2 }, "16622": { "3443": 4 }, "16631": { "11584": 1 }, "16688": { "11584": 1 }, "16689": { "11584": 1 }, "16690": { "11584": 1 }, "16691": { "11584": 1 }, "16692": { "11584": 1 }, "16694": { "11584": 1 }, "16695": { "11584": 1 }, "16696": { "11584": 1 }, "16697": { "11584": 1 }, "16867": { "11584": 1 }, "16869": { "11584": 2 }, "17167": { "11584": 1 }, "17168": { "11584": 1 }, "17174": { "11584": 3 }, "17175": { "11584": 3 }, "17176": { "11584": 3 }, "17177": { "11584": 3 }, "17178": { "11584": 1 }, "17180": { "11584": 1 }, "17181": { "11584": 1 }, "17182": { "11584": 1 }, "17184": { "11584": 2 }, "17185": { "11584": 2 }, "17186": { "11584": 2 }, "17187": { "11584": 2 }, "17360": { "3755": 5 }, "17363": { "11584": 1 }, "17364": { "11584": 1 }, "17365": { "11584": 1 }, "17402": { "11584": 1 }, "17403": { "11584": 1 }, "17404": { "11584": 1 }, "17406": { "11584": 1 }, "17407": { "11584": 1 }, "17408": { "11584": 1 }, "17425": { "3386": 1 }, "17426": { "3386": 1 }, "17428": { "3386": 1 }, "17429": { "3386": 1 }, "17432": { "3386": 1 }, "17433": { "3386": 1 }, "17436": { "3386": 1 }, "17437": { "3386": 1 }, "17440": { "3386": 1 }, "17441": { "3386": 1 }, "17444": { "3386": 1 }, "17445": { "3386": 1 }, "17448": { "3386": 1 }, "17449": { "3386": 1 }, "17452": { "3386": 1 }, "17453": { "3386": 1 }, "17455": { "3386": 1 }, "17456": { "3386": 1 }, "17459": { "3386": 1 }, "17460": { "3386": 1 }, "17463": { "3386": 1 }, "17464": { "3386": 1 }, "17466": { "3386": 1 }, "17467": { "3386": 1 }, "17470": { "3386": 1 }, "17471": { "3386": 1 }, "17476": { "3410": 3, "17940": 1 }, "17478": { "3410": 3, "17940": 1 }, "17480": { "3410": 3, "17940": 1 }, "17482": { "3386": 4, "3410": 1 }, "17484": { "3319": 1, "3321": 1 }, "17485": { "3319": 1, "3326": 1 }, "17487": { "3319": 1, "3324": 1 }, "17488": { "3319": 1, "3320": 1 }, "17490": { "3319": 1, "3325": 1 }, "17491": { "3319": 1, "3321": 1 }, "17492": { "3392": 3, "3393": 1 }, "17493": { "3392": 2, "3393": 1 }, "17494": { "3392": 1, "3393": 1 }, "17495": { "3420": 1 }, "17496": { "3420": 1 }, "17497": { "3420": 1 }, "17498": { "3420": 1 }, "17499": { "3420": 1 }, "17500": { "3435": 1 }, "17502": { "3394": 3 }, "17504": { "3394": 3 }, "17506": { "3394": 3 }, "17508": { "3394": 3 }, "17510": { "3424": 2 }, "17512": { "3394": 1 }, "17514": { "3394": 1 }, "17516": { "3394": 1 }, "17518": { "3394": 1 }, "17520": { "3428": 1 }, "17522": { "3424": 2 }, "17524": { "3424": 2 }, "17526": { "3424": 2 }, "17528": { "3424": 2 }, "17536": { "3394": 3 }, "17538": { "3394": 3 }, "17540": { "3394": 3 }, "17542": { "3394": 3 }, "17544": { "3394": 3 }, "17546": { "3392": 3, "3393": 1 }, "17547": { "3392": 2, "3393": 1 }, "17548": { "3392": 1, "3393": 1 }, "17549": { "3394": 1 }, "17551": { "3394": 1 }, "17553": { "3394": 1 }, "17555": { "3394": 1 }, "17557": { "3394": 1 }, "17559": { "3435": 1 }, "17565": { "3386": 1, "3438": 1 }, "17617": { "9955": 5 }, "17619": { "3330": 2 }, "17634": { "3334": 2 }, "17636": { "3338": 2 }, "17703": { "3331": 2 }, "17705": { "3330": 3 }, "17707": { "3330": 3 }, "17709": { "3335": 2 }, "17713": { "3333": 2 }, "17715": { "3332": 2, "3334": 2 }, "17718": { "3334": 2, "3335": 2 }, "17720": { "3332": 2, "3333": 2 }, "17722": { "3332": 2, "3333": 2 }, "17726": { "3339": 2 }, "17728": { "3336": 2 }, "17732": { "3337": 2 }, "17736": { "3338": 1, "3339": 1 }, "17738": { "3336": 1, "3337": 1 }, "17740": { "3336": 1, "3337": 1 }, "17770": { "11584": 1 }, "17771": { "11584": 1 }, "17772": { "11584": 1 }, "17773": { "11584": 1 }, "17812": { "3329": 2 }, "17832": { "3394": 3 }, "17834": { "3394": 3 }, "17836": { "3394": 3 }, "17838": { "3394": 3 }, "17841": { "3328": 2 }, "17843": { "3332": 2 }, "17857": { "3319": 1, "21668": 1 }, "17859": { "3319": 1, "21668": 1 }, "17861": { "3319": 1, "21668": 1 }, "17863": { "3319": 1, "21668": 1 }, "17865": { "3386": 1 }, "17866": { "3386": 1 }, "17867": { "3386": 1 }, "17868": { "3386": 1 }, "17869": { "11395": 1 }, "17870": { "11395": 1 }, "17871": { "3411": 2 }, "17901": { "3412": 4 }, "17908": { "9955": 5 }, "17912": { "3386": 5 }, "17918": { "3336": 1, "3338": 1 }, "17920": { "3337": 1, "3339": 1 }, "17922": { "3333": 2, "3335": 2 }, "17924": { "3330": 3, "3331": 3 }, "17926": { "3329": 3, "3331": 3 }, "17928": { "3328": 3, "3329": 3 }, "17930": { "3328": 3, "3330": 3 }, "17932": { "3328": 3, "3329": 3 }, "17938": { "3412": 1 }, "17940": { "3380": 5, "3410": 3, "32918": 3 }, "17975": { "16281": 1 }, "17976": { "16281": 1 }, "17977": { "16281": 1 }, "17978": { "16281": 1 }, "18025": { "3389": 5, "11443": 4 }, "18036": { "3386": 1, "12180": 3 }, "18038": { "3386": 1, "12181": 3 }, "18040": { "3386": 1, "12182": 3 }, "18042": { "3386": 1, "12183": 3 }, "18044": { "3386": 1, "12184": 3 }, "18046": { "3386": 1, "12185": 3 }, "18048": { "3386": 1, "12186": 3 }, "18050": { "3386": 1, "12187": 3 }, "18052": { "3386": 1, "12188": 3 }, "18054": { "3386": 1, "12189": 3 }, "18056": { "3386": 1, "12190": 3 }, "18058": { "3386": 1, "12191": 3 }, "18060": { "3386": 1, "12192": 3 }, "18062": { "3386": 1, "12193": 3 }, "18064": { "3386": 1, "12194": 3 }, "18066": { "3386": 1, "12195": 3 }, "18068": { "3386": 5, "11395": 2 }, "18580": { "16596": 5, "16598": 4 }, "18588": { "3412": 5 }, "18590": { "3386": 1, "12180": 4 }, "18592": { "3386": 1, "12181": 4 }, "18594": { "3386": 1, "12182": 4 }, "18596": { "3386": 1, "12183": 4 }, "18598": { "3386": 1, "12184": 4 }, "18600": { "3386": 1, "12185": 4 }, "18602": { "3386": 1, "12186": 4 }, "18604": { "3386": 1, "12187": 4 }, "18606": { "3386": 1, "12188": 4 }, "18608": { "3386": 1, "12189": 4 }, "18610": { "3386": 1, "12190": 4 }, "18612": { "3386": 1, "12191": 4 }, "18614": { "3386": 1, "12192": 4 }, "18616": { "3386": 1, "12193": 4 }, "18618": { "3386": 1, "12195": 4 }, "18624": { "3386": 1, "12194": 4 }, "18626": { "3412": 3, "3551": 3 }, "18635": { "3412": 3, "3551": 3 }, "18637": { "3412": 5, "3551": 5 }, "18639": { "3412": 2 }, "18642": { "9955": 5 }, "18658": { "3450": 1 }, "18660": { "3450": 1 }, "18662": { "3450": 1 }, "18664": { "3450": 1 }, "18666": { "3450": 1 }, "18668": { "3450": 1 }, "18670": { "3450": 1 }, "18672": { "3450": 1 }, "18674": { "3450": 1 }, "18676": { "3450": 1 }, "18680": { "3450": 1 }, "18682": { "3450": 1 }, "18684": { "3450": 1 }, "18686": { "3450": 1 }, "18688": { "3450": 1 }, "18690": { "3450": 1 }, "18692": { "3450": 1 }, "18694": { "3450": 1 }, "18696": { "3450": 1 }, "18698": { "3450": 1 }, "18700": { "3394": 1 }, "18702": { "3394": 1 }, "18704": { "3394": 1 }, "18706": { "3394": 1 }, "18708": { "3394": 1 }, "18710": { "3394": 1 }, "18712": { "3394": 1 }, "18714": { "3394": 1 }, "18716": { "3394": 1 }, "18718": { "3394": 1 }, "18720": { "3394": 1 }, "18722": { "3394": 1 }, "18724": { "3394": 1 }, "18726": { "3394": 1 }, "18728": { "3394": 1 }, "18730": { "3394": 1 }, "18740": { "3394": 1 }, "18742": { "3394": 1 }, "18744": { "3394": 1 }, "18746": { "3394": 1 }, "18748": { "3394": 1 }, "18750": { "3394": 1 }, "18752": { "3394": 1 }, "18754": { "3394": 1 }, "18756": { "3394": 1 }, "18758": { "3394": 1 }, "18760": { "3394": 1 }, "18762": { "3394": 1 }, "18764": { "3394": 1 }, "18766": { "3394": 1 }, "18768": { "3394": 1 }, "18770": { "3394": 1 }, "18772": { "3394": 1 }, "18775": { "3394": 1 }, "18777": { "3394": 1 }, "18779": { "3394": 1 }, "18781": { "3394": 1 }, "18783": { "3394": 1 }, "18785": { "3394": 1 }, "18787": { "3394": 1 }, "18789": { "3394": 1 }, "18791": { "3394": 1 }, "18793": { "3394": 1 }, "18795": { "3394": 1 }, "18797": { "3394": 1 }, "18799": { "3394": 3 }, "18801": { "3394": 3 }, "18803": { "3394": 3 }, "18805": { "3394": 3 }, "18807": { "3394": 3 }, "18809": { "3394": 3 }, "18811": { "3394": 3 }, "18813": { "3394": 3 }, "18815": { "3394": 3 }, "18817": { "3394": 3 }, "18819": { "3394": 3 }, "18821": { "3394": 3 }, "18823": { "3394": 3 }, "18825": { "3394": 3 }, "18827": { "3394": 3 }, "18829": { "3394": 3 }, "18831": { "3394": 3 }, "18833": { "3394": 3 }, "18835": { "3394": 3 }, "18837": { "3394": 3 }, "18839": { "3394": 3 }, "18841": { "3394": 3 }, "18843": { "3394": 3 }, "18845": { "3394": 3 }, "18847": { "3394": 3 }, "18849": { "3394": 3 }, "18851": { "3394": 3 }, "18853": { "3394": 3 }, "18855": { "3394": 3 }, "18857": { "3394": 3 }, "18859": { "3394": 3 }, "18861": { "3394": 3 }, "18863": { "3394": 3 }, "18865": { "3394": 3 }, "18867": { "3394": 3 }, "18869": { "3394": 3 }, "18871": { "3394": 3 }, "18873": { "3394": 3 }, "18875": { "3394": 3 }, "18877": { "3394": 3 }, "18879": { "3394": 3 }, "18881": { "3394": 3 }, "18883": { "3394": 3 }, "18885": { "3394": 3 }, "18887": { "3394": 3 }, "18889": { "3394": 3 }, "18891": { "3394": 3 }, "18893": { "3394": 3 }, "18895": { "3394": 3 }, "18897": { "3394": 3 }, "18899": { "3394": 3 }, "18901": { "3394": 3 }, "18903": { "3394": 3 }, "18905": { "3394": 3 }, "18907": { "3394": 3 }, "18909": { "3394": 3 }, "18911": { "3394": 3 }, "18913": { "3394": 3 }, "18915": { "3394": 3 }, "18917": { "3394": 3 }, "18919": { "3394": 3 }, "18921": { "3394": 3 }, "18923": { "3394": 3 }, "18925": { "3394": 3 }, "18927": { "3394": 3 }, "18929": { "3394": 3 }, "18931": { "3394": 3 }, "18933": { "3394": 3 }, "18935": { "3394": 3 }, "18937": { "3394": 3 }, "18939": { "3394": 3 }, "18941": { "3394": 3 }, "18943": { "3394": 3 }, "18945": { "3394": 3 }, "18947": { "3394": 3 }, "18949": { "3394": 3 }, "18951": { "3394": 3 }, "18953": { "3394": 3 }, "18955": { "3394": 3 }, "18957": { "3394": 3 }, "18959": { "3394": 3 }, "18961": { "3394": 3 }, "18963": { "3394": 3 }, "18965": { "3394": 3 }, "18967": { "3394": 3 }, "18969": { "3394": 3 }, "18971": { "3394": 3 }, "18973": { "3394": 3 }, "18975": { "3394": 3 }, "18977": { "3394": 3 }, "18979": { "3394": 3 }, "18981": { "16069": 1 }, "18983": { "16069": 1 }, "18985": { "16069": 1 }, "18987": { "16069": 2 }, "18989": { "16069": 2 }, "18991": { "16069": 2 }, "18999": { "3392": 1, "3393": 1 }, "19001": { "3392": 1, "3393": 1 }, "19003": { "3392": 1, "3393": 1 }, "19005": { "3392": 1, "3393": 1 }, "19007": { "3392": 1, "3393": 1 }, "19009": { "3392": 1, "3393": 1 }, "19011": { "3392": 1, "3393": 1 }, "19013": { "3392": 1, "3393": 1 }, "19015": { "3392": 1, "3393": 1 }, "19017": { "3392": 2, "3393": 1 }, "19019": { "3392": 2, "3393": 1 }, "19021": { "3392": 2, "3393": 1 }, "19023": { "3392": 2, "3393": 1 }, "19025": { "3392": 2, "3393": 1 }, "19027": { "3392": 2, "3393": 1 }, "19029": { "3392": 2, "3393": 1 }, "19031": { "3392": 2, "3393": 1 }, "19033": { "3392": 2, "3393": 1 }, "19035": { "3392": 3, "3393": 1 }, "19036": { "3392": 3, "3393": 1 }, "19037": { "3392": 3, "3393": 1 }, "19038": { "3392": 3, "3393": 1 }, "19039": { "3392": 3, "3393": 1 }, "19040": { "3392": 3, "3393": 1 }, "19041": { "3392": 3, "3393": 1 }, "19042": { "3392": 3, "3393": 1 }, "19043": { "3392": 3, "3393": 1 }, "19044": { "3392": 3, "3393": 1 }, "19045": { "3392": 3, "3393": 1 }, "19046": { "3392": 3, "3393": 1 }, "19047": { "16069": 1 }, "19049": { "16069": 1 }, "19051": { "16069": 1 }, "19053": { "16069": 2 }, "19055": { "16069": 2 }, "19057": { "16069": 2 }, "19065": { "3423": 1 }, "19067": { "3423": 1 }, "19069": { "3423": 1 }, "19071": { "3423": 1 }, "19073": { "3423": 1 }, "19075": { "3423": 1 }, "19077": { "3423": 1 }, "19079": { "3423": 1 }, "19081": { "3423": 1 }, "19083": { "3423": 1 }, "19085": { "3423": 1 }, "19087": { "3423": 1 }, "19101": { "3423": 1 }, "19103": { "3423": 1 }, "19105": { "3423": 1 }, "19107": { "3423": 2 }, "19109": { "3423": 2 }, "19111": { "3423": 2 }, "19113": { "3423": 3 }, "19115": { "3423": 3 }, "19117": { "3423": 3 }, "19119": { "3423": 3 }, "19129": { "3422": 1 }, "19131": { "3422": 1 }, "19133": { "3422": 1 }, "19135": { "3422": 1 }, "19137": { "3422": 1 }, "19139": { "3422": 1 }, "19141": { "3422": 1 }, "19143": { "3422": 1 }, "19145": { "3422": 1 }, "19147": { "3422": 1 }, "19149": { "3422": 1 }, "19151": { "3422": 1 }, "19169": { "3416": 1 }, "19171": { "3416": 1 }, "19173": { "3416": 1 }, "19175": { "3416": 1 }, "19177": { "3416": 1 }, "19179": { "3416": 1 }, "19181": { "3416": 1 }, "19183": { "3416": 1 }, "19185": { "3416": 1 }, "19187": { "3416": 1 }, "19189": { "3416": 1 }, "19191": { "3416": 1 }, "19193": { "3416": 2 }, "19194": { "3416": 2 }, "19195": { "3416": 3 }, "19196": { "3416": 3 }, "19197": { "3416": 3 }, "19198": { "3416": 3 }, "19199": { "3416": 2 }, "19200": { "3416": 2 }, "19201": { "3416": 2 }, "19202": { "3416": 3 }, "19203": { "3416": 2 }, "19204": { "3416": 3 }, "19205": { "3416": 2 }, "19206": { "3416": 3 }, "19207": { "3416": 2 }, "19208": { "3416": 3 }, "19209": { "3425": 1 }, "19211": { "3425": 1 }, "19213": { "3425": 1 }, "19215": { "3425": 1 }, "19217": { "3425": 1 }, "19219": { "3425": 1 }, "19221": { "3425": 1 }, "19223": { "3425": 1 }, "19225": { "3425": 1 }, "19227": { "3425": 1 }, "19229": { "3425": 1 }, "19231": { "3425": 1 }, "19233": { "3425": 1 }, "19235": { "3425": 1 }, "19237": { "3425": 1 }, "19239": { "3425": 1 }, "19241": { "3425": 1 }, "19243": { "3425": 1 }, "19245": { "3425": 1 }, "19247": { "3425": 1 }, "19249": { "3425": 1 }, "19251": { "3425": 1 }, "19253": { "3425": 1 }, "19255": { "3425": 1 }, "19257": { "3420": 1 }, "19258": { "3420": 1 }, "19259": { "3420": 1 }, "19260": { "3420": 1 }, "19261": { "3420": 1 }, "19262": { "3420": 1 }, "19263": { "3420": 1 }, "19264": { "3420": 1 }, "19265": { "3420": 1 }, "19266": { "3420": 1 }, "19267": { "3420": 1 }, "19268": { "3420": 1 }, "19269": { "3420": 1 }, "19270": { "3420": 1 }, "19271": { "3420": 1 }, "19272": { "3420": 1 }, "19273": { "3420": 1 }, "19274": { "3420": 1 }, "19275": { "3420": 1 }, "19276": { "3420": 1 }, "19277": { "3420": 1 }, "19278": { "3420": 1 }, "19279": { "3420": 1 }, "19280": { "3420": 1 }, "19281": { "3420": 1 }, "19282": { "3420": 1 }, "19283": { "3420": 1 }, "19284": { "3420": 1 }, "19285": { "3420": 1 }, "19286": { "3420": 1 }, "19287": { "3420": 1 }, "19288": { "3420": 1 }, "19289": { "3419": 1 }, "19293": { "3419": 1 }, "19295": { "3419": 1 }, "19297": { "3419": 1 }, "19299": { "3419": 1 }, "19301": { "3419": 1 }, "19303": { "3419": 1 }, "19311": { "3419": 1 }, "19313": { "3454": 1 }, "19315": { "3454": 1 }, "19317": { "3454": 1 }, "19319": { "3454": 1 }, "19321": { "3454": 1 }, "19323": { "3454": 1 }, "19325": { "3454": 1 }, "19327": { "3454": 1 }, "19329": { "3454": 1 }, "19335": { "3454": 1 }, "19337": { "3454": 1 }, "19339": { "3454": 1 }, "19341": { "3454": 1 }, "19343": { "3454": 1 }, "19345": { "3454": 1 }, "19347": { "3454": 1 }, "19349": { "3454": 1 }, "19351": { "3454": 1 }, "19353": { "3454": 1 }, "19359": { "3454": 1 }, "19361": { "3394": 3 }, "19363": { "3394": 3 }, "19430": { "9955": 5, "19430": 5 }, "19459": { "19430": 5 }, "19466": { "19430": 5 }, "19468": { "19430": 5 }, "19470": { "11584": 1 }, "19489": { "3425": 4 }, "19491": { "3450": 1 }, "19500": { "3411": 4 }, "19534": { "3411": 2 }, "19535": { "3411": 2 }, "19536": { "3411": 3 }, "19537": { "3411": 3 }, "19538": { "3411": 4 }, "19539": { "3411": 5 }, "19540": { "3411": 2 }, "19547": { "3411": 4 }, "19548": { "3411": 4 }, "19549": { "3411": 4 }, "19550": { "3411": 4 }, "19551": { "3411": 2 }, "19553": { "3411": 3 }, "19554": { "3411": 3 }, "19555": { "3411": 4 }, "19556": { "3411": 5 }, "19583": { "19430": 5 }, "19594": { "3425": 5, "3432": 1 }, "19684": { "3411": 2 }, "19685": { "3411": 4 }, "19686": { "3411": 3 }, "19687": { "3411": 4 }, "19688": { "3411": 4 }, "19689": { "3411": 4 }, "19690": { "3411": 3 }, "19691": { "3411": 3 }, "19692": { "3411": 3 }, "19693": { "3411": 4 }, "19694": { "3411": 4 }, "19695": { "3411": 4 }, "19696": { "3411": 4 }, "19697": { "3411": 3 }, "19698": { "3411": 4 }, "19699": { "3411": 4 }, "19700": { "3411": 3 }, "19719": { "3327": 3, "3380": 5 }, "19720": { "3456": 1, "20525": 1, "20533": 1 }, "19722": { "3456": 1, "20532": 1, "20533": 1 }, "19724": { "3456": 1, "20531": 1, "20533": 1 }, "19726": { "3456": 1, "20530": 1, "20533": 1 }, "19739": { "3319": 1, "20212": 1 }, "19744": { "3343": 1 }, "19758": { "3400": 1 }, "19759": { "3426": 4, "3427": 3 }, "19760": { "3426": 3, "3427": 2 }, "19761": { "3426": 4, "3427": 4 }, "19766": { "3426": 4, "3433": 4 }, "19767": { "3426": 4, "3434": 4 }, "19806": { "19921": 4 }, "19808": { "19921": 1 }, "19810": { "19921": 1 }, "19812": { "19921": 1 }, "19814": { "19921": 1 }, "19921": { "3426": 3 }, "19922": { "3426": 4, "19921": 4 }, "19923": { "3427": 1 }, "19925": { "3427": 1 }, "19927": { "3427": 1 }, "19929": { "3427": 1 }, "19931": { "3427": 1 }, "19933": { "3427": 1 }, "19935": { "3427": 1 }, "19937": { "3427": 1 }, "19939": { "3427": 1 }, "19942": { "3427": 1 }, "19944": { "3427": 1 }, "19946": { "3427": 1 }, "19948": { "3427": 1 }, "19950": { "3427": 1 }, "19952": { "3427": 1 }, "20069": { "3348": 5, "11569": 1 }, "20070": { "3348": 5, "11572": 1 }, "20114": { "30788": 1 }, "20115": { "30325": 1 }, "20116": { "30326": 1 }, "20117": { "3397": 1 }, "20121": { "3411": 2 }, "20124": { "3348": 5, "3351": 1 }, "20125": { "3335": 5, "22761": 1 }, "20138": { "3319": 1, "25719": 1 }, "20157": { "3411": 2 }, "20158": { "3411": 3 }, "20159": { "3411": 3 }, "20160": { "3411": 4 }, "20161": { "3411": 5 }, "20171": { "11443": 1 }, "20172": { "11445": 1 }, "20175": { "11584": 2 }, "20176": { "11584": 2 }, "20183": { "20342": 1, "20524": 1 }, "20185": { "20342": 1, "20526": 1 }, "20187": { "20342": 1, "20527": 1 }, "20189": { "20342": 1, "20528": 1 }, "20197": { "9955": 1 }, "20199": { "3427": 1 }, "20201": { "3427": 1 }, "20203": { "3427": 1 }, "20205": { "3427": 1 }, "20207": { "3427": 1 }, "20209": { "3319": 1, "3320": 5 }, "20210": { "3319": 1, "3321": 5 }, "20211": { "3319": 1, "3324": 5 }, "20212": { "3319": 1, "3326": 5 }, "20213": { "3319": 1, "3325": 5 }, "20214": { "3427": 1 }, "20216": { "3427": 1 }, "20218": { "3427": 1 }, "20220": { "3427": 1 }, "20222": { "3427": 1 }, "20224": { "3427": 1 }, "20226": { "3427": 1 }, "20228": { "3427": 1 }, "20230": { "3427": 1 }, "20232": { "3427": 1 }, "20234": { "3427": 1 }, "20236": { "3427": 1 }, "20238": { "3432": 1 }, "20240": { "3432": 1 }, "20242": { "3432": 1 }, "20244": { "3432": 1 }, "20246": { "3432": 1 }, "20248": { "3432": 1 }, "20250": { "3432": 1 }, "20252": { "3432": 1 }, "20254": { "3432": 1 }, "20260": { "3432": 1 }, "20262": { "3432": 1 }, "20264": { "3432": 1 }, "20280": { "22043": 1 }, "20306": { "3319": 1, "25719": 1 }, "20307": { "3319": 1, "25719": 1 }, "20308": { "3319": 1, "25719": 1 }, "20312": { "3319": 4 }, "20314": { "3319": 2 }, "20315": { "3319": 4 }, "20327": { "3300": 5, "3309": 5 }, "20342": { "3327": 5 }, "20343": { "3394": 3 }, "20345": { "3394": 3 }, "20347": { "3394": 4 }, "20349": { "3394": 5 }, "20351": { "3394": 5 }, "20353": { "3394": 5 }, "20358": { "3411": 5 }, "20367": { "3427": 5, "3448": 3 }, "20371": { "3411": 5 }, "20405": { "3348": 5, "3352": 1 }, "20406": { "3348": 5, "3352": 1 }, "20408": { "3348": 5, "11572": 1 }, "20409": { "3348": 5, "11569": 1 }, "20410": { "11450": 1 }, "20411": { "11433": 1 }, "20412": { "11441": 1 }, "20413": { "11447": 1 }, "20414": { "11455": 1 }, "20415": { "11529": 1 }, "20416": { "11442": 1 }, "20417": { "11448": 1 }, "20418": { "11453": 1 }, "20419": { "11446": 1 }, "20420": { "11449": 1 }, "20421": { "11444": 1 }, "20423": { "11451": 1 }, "20424": { "11452": 1 }, "20425": { "30327": 1 }, "20426": { "3410": 1 }, "20433": { "13278": 2 }, "20443": { "3411": 3 }, "20444": { "3300": 5, "20327": 1 }, "20446": { "3300": 5, "20327": 1 }, "20448": { "3300": 5, "21666": 1 }, "20450": { "3300": 5, "21666": 1 }, "20452": { "3300": 5, "21667": 1 }, "20454": { "3300": 5, "21667": 1 }, "20494": { "3348": 1 }, "20495": { "3348": 1 }, "20498": { "3411": 2 }, "20499": { "3411": 2 }, "20500": { "3411": 2 }, "20501": { "3411": 2 }, "20502": { "3411": 3 }, "20503": { "3411": 3 }, "20504": { "3411": 4 }, "20505": { "3411": 4 }, "20506": { "3411": 3 }, "20507": { "3411": 3 }, "20508": { "3411": 5 }, "20509": { "3411": 5 }, "20514": { "3348": 5, "3351": 1 }, "20524": { "3343": 3, "20342": 5 }, "20525": { "3339": 3, "20533": 3, "22043": 1 }, "20526": { "3342": 3, "20342": 5 }, "20527": { "3340": 3, "20342": 5 }, "20528": { "3341": 3, "20342": 5 }, "20530": { "3338": 3, "20533": 3, "22043": 1 }, "20531": { "3336": 3, "20533": 3, "22043": 1 }, "20532": { "3337": 3, "20533": 3, "22043": 1 }, "20533": { "20342": 5 }, "20539": { "3319": 5, "21668": 1 }, "20555": { "3417": 1 }, "20557": { "3417": 1 }, "20559": { "3417": 1 }, "20561": { "11579": 1 }, "20563": { "11579": 4 }, "20565": { "11579": 3 }, "20567": { "3432": 1 }, "20569": { "3432": 1 }, "20573": { "3427": 1 }, "20575": { "3427": 1 }, "20577": { "3427": 1 }, "20579": { "3427": 1 }, "20581": { "3427": 1 }, "20587": { "3300": 1, "3301": 1 }, "20589": { "3300": 3, "3304": 1 }, "20591": { "3300": 5, "3307": 1 }, "20593": { "3319": 1, "3320": 1 }, "20595": { "3319": 1, "3321": 1 }, "20597": { "3319": 1, "3321": 1 }, "20599": { "3319": 1, "3324": 1 }, "20601": { "3319": 1, "3326": 1 }, "20603": { "3319": 1, "3325": 1 }, "20605": { "3425": 1 }, "20607": { "3425": 1 }, "20609": { "3425": 1 }, "20611": { "3425": 1 }, "20613": { "3419": 1 }, "20617": { "3416": 1 }, "20619": { "3416": 1 }, "20621": { "3416": 1 }, "20623": { "3416": 1 }, "20625": { "3425": 1 }, "20627": { "3425": 1 }, "20629": { "3425": 1 }, "20631": { "3425": 1 }, "20633": { "3420": 1 }, "20635": { "3420": 1 }, "20637": { "3420": 1 }, "20639": { "3420": 1 }, "20641": { "3420": 1 }, "20700": { "3411": 5 }, "20701": { "21803": 1 }, "20703": { "21802": 1 }, "21059": { "3416": 3 }, "21071": { "3319": 2 }, "21096": { "21603": 1 }, "21097": { "3327": 1 }, "21470": { "3450": 1 }, "21472": { "3450": 1 }, "21474": { "3450": 1 }, "21476": { "3454": 1 }, "21478": { "3454": 1 }, "21480": { "3454": 1 }, "21482": { "3318": 1 }, "21484": { "3318": 1 }, "21486": { "3318": 1 }, "21488": { "3318": 1 }, "21491": { "3394": 1 }, "21493": { "3394": 1 }, "21496": { "3394": 1 }, "21498": { "3394": 1 }, "21500": { "3394": 1 }, "21504": { "3392": 1, "3393": 1 }, "21506": { "3392": 3, "3393": 1 }, "21508": { "3392": 5, "3393": 1 }, "21510": { "3435": 1 }, "21512": { "3435": 1, "3449": 1 }, "21521": { "3432": 1 }, "21523": { "3432": 1 }, "21525": { "3432": 1 }, "21527": { "3426": 1 }, "21529": { "3432": 1 }, "21532": { "3421": 1 }, "21534": { "3421": 1 }, "21536": { "3421": 1 }, "21538": { "3421": 1 }, "21540": { "19921": 1 }, "21542": { "3319": 1, "3320": 1 }, "21545": { "3300": 1, "3302": 1 }, "21547": { "3300": 1, "3302": 1 }, "21549": { "3300": 1, "3302": 1 }, "21551": { "3300": 3, "3305": 1 }, "21553": { "3300": 3, "3305": 1 }, "21555": { "3300": 3, "3305": 1 }, "21557": { "3300": 5, "3308": 1 }, "21559": { "3300": 5, "3308": 1 }, "21561": { "3300": 5, "3308": 1 }, "21603": { "3426": 5 }, "21606": { "3411": 5 }, "21610": { "3456": 3 }, "21611": { "3456": 5 }, "21628": { "3327": 1 }, "21638": { "3436": 5, "12487": 1, "33699": 5 }, "21640": { "3436": 5, "12485": 1, "33699": 5 }, "21666": { "3300": 5, "3307": 5 }, "21667": { "3300": 5, "3308": 5 }, "21668": { "3319": 5, "3325": 5 }, "21678": { "13278": 1 }, "21679": { "13278": 1 }, "21680": { "13278": 1 }, "21681": { "13278": 1 }, "21683": { "21718": 1 }, "21684": { "21718": 1 }, "21685": { "21718": 1 }, "21686": { "21718": 1 }, "21688": { "13278": 1 }, "21689": { "13278": 1 }, "21690": { "13278": 1 }, "21691": { "13278": 1 }, "21693": { "21718": 1 }, "21694": { "21718": 1 }, "21695": { "21718": 1 }, "21696": { "21718": 1 }, "21698": { "21718": 1 }, "21699": { "21718": 1 }, "21700": { "21718": 1 }, "21701": { "21718": 1 }, "21703": { "21718": 1 }, "21704": { "21718": 1 }, "21705": { "21718": 1 }, "21706": { "21718": 1 }, "21708": { "13278": 1 }, "21709": { "13278": 1 }, "21710": { "13278": 1 }, "21711": { "13278": 1 }, "21713": { "13278": 1 }, "21714": { "13278": 1 }, "21715": { "13278": 1 }, "21716": { "13278": 1 }, "21718": { "3402": 3, "3432": 3 }, "21789": { "13278": 2 }, "21790": { "21718": 2 }, "21791": { "21718": 2 }, "21802": { "3413": 5, "3416": 5, "3419": 5 }, "21803": { "3392": 5, "3393": 5, "3394": 5 }, "21816": { "3424": 2 }, "21817": { "3424": 2 }, "21818": { "3424": 2 }, "21819": { "3424": 2 }, "21841": { "3386": 1 }, "21853": { "3393": 1 }, "21867": { "3319": 1, "25719": 1 }, "21888": { "3351": 5, "3411": 5 }, "21889": { "3352": 5, "3411": 5 }, "21890": { "3411": 5, "11572": 5 }, "22043": { "11207": 5 }, "22107": { "3411": 2 }, "22108": { "3411": 2 }, "22109": { "3411": 3 }, "22110": { "3411": 4 }, "22111": { "3411": 3 }, "22112": { "3411": 5 }, "22113": { "3411": 2 }, "22114": { "3411": 2 }, "22115": { "3411": 3 }, "22116": { "3411": 4 }, "22117": { "3411": 3 }, "22118": { "3411": 5 }, "22119": { "3411": 2 }, "22120": { "3411": 2 }, "22121": { "3411": 3 }, "22122": { "3411": 4 }, "22123": { "3411": 3 }, "22124": { "3411": 5 }, "22125": { "3411": 2 }, "22126": { "3411": 2 }, "22127": { "3411": 3 }, "22128": { "3411": 4 }, "22129": { "3411": 3 }, "22130": { "3411": 5 }, "22131": { "3411": 2 }, "22133": { "3411": 2 }, "22134": { "3411": 3 }, "22135": { "3411": 4 }, "22136": { "3411": 3 }, "22137": { "3411": 5 }, "22172": { "3436": 5 }, "22175": { "21718": 1 }, "22177": { "13278": 1 }, "22225": { "13278": 1 }, "22226": { "13278": 1 }, "22227": { "3348": 5, "11569": 1 }, "22228": { "3348": 5, "3351": 1 }, "22229": { "16281": 5 }, "22242": { "3380": 5, "3388": 5, "3392": 5 }, "22291": { "3318": 4 }, "22293": { "13278": 1 }, "22294": { "13278": 1 }, "22325": { "21718": 1 }, "22327": { "21718": 1 }, "22329": { "21718": 1 }, "22331": { "21718": 1 }, "22333": { "13278": 1 }, "22335": { "13278": 1 }, "22337": { "13278": 1 }, "22339": { "13278": 1 }, "22343": { "13278": 1 }, "22428": { "3339": 5, "28656": 1 }, "22430": { "3336": 5, "28656": 1 }, "22436": { "3338": 5, "28656": 1 }, "22440": { "3337": 5, "28656": 1 }, "22442": { "23950": 1, "33097": 5 }, "22444": { "23950": 1, "33098": 5 }, "22446": { "23950": 1, "33096": 5 }, "22448": { "23950": 1, "33095": 5 }, "22452": { "12098": 1, "33091": 5 }, "22456": { "12098": 1, "33094": 5 }, "22460": { "12098": 1, "33093": 5 }, "22464": { "12098": 1, "33092": 5 }, "22466": { "23950": 1, "33097": 5 }, "22468": { "23950": 1, "33098": 5 }, "22470": { "23950": 1, "33096": 5 }, "22474": { "23950": 1, "33095": 5 }, "22476": { "3435": 5, "12098": 1 }, "22534": { "3411": 3 }, "22535": { "3411": 5 }, "22536": { "3348": 1 }, "22537": { "3394": 1 }, "22541": { "3386": 4, "3438": 5 }, "22542": { "22578": 1 }, "22544": { "17940": 5, "22551": 1 }, "22546": { "17940": 5, "22551": 1 }, "22548": { "17940": 5, "22551": 1 }, "22551": { "3327": 4, "3380": 5, "3410": 5 }, "22552": { "3348": 1, "22536": 5 }, "22553": { "3348": 5, "22552": 1 }, "22555": { "3348": 5, "22552": 1 }, "22557": { "3348": 5, "22552": 1 }, "22559": { "3411": 5, "22552": 5 }, "22564": { "3319": 1, "3320": 1 }, "22565": { "3319": 1, "3321": 1 }, "22566": { "3319": 1, "3321": 1 }, "22567": { "3319": 1, "3324": 1 }, "22568": { "3319": 1, "3326": 1 }, "22569": { "3319": 1, "3325": 1 }, "22570": { "3411": 3 }, "22571": { "3411": 5 }, "22572": { "3423": 3, "3436": 5, "23566": 3 }, "22574": { "3437": 1 }, "22576": { "22578": 1 }, "22578": { "3386": 3 }, "22609": { "22578": 1 }, "22611": { "22578": 1 }, "22613": { "22578": 1 }, "22615": { "22578": 1 }, "22617": { "22578": 1 }, "22619": { "22578": 1 }, "22621": { "22578": 1 }, "22623": { "22578": 1 }, "22634": { "11584": 2 }, "22713": { "3437": 1 }, "22715": { "3411": 4 }, "22760": { "3411": 4 }, "22761": { "3327": 5, "3431": 5, "3432": 5, "11579": 4 }, "22765": { "3422": 3, "3436": 5, "3439": 3 }, "22778": { "3412": 3 }, "22780": { "3441": 1 }, "22782": { "3435": 5, "11446": 1 }, "22797": { "3432": 1 }, "22806": { "3394": 4 }, "22807": { "3394": 4 }, "22808": { "3394": 4 }, "22809": { "3394": 4 }, "22852": { "20533": 1, "24314": 1 }, "22875": { "3455": 1 }, "22877": { "3455": 1 }, "22879": { "3394": 3 }, "22881": { "3394": 3 }, "22883": { "3394": 3 }, "22885": { "3427": 2 }, "22887": { "3392": 1, "3393": 1 }, "22889": { "3392": 2, "3393": 1 }, "22891": { "3392": 3, "3393": 1 }, "22893": { "3394": 1 }, "22895": { "3428": 1 }, "22897": { "3427": 1 }, "22899": { "3300": 1, "3301": 1 }, "22901": { "3300": 1, "3301": 1 }, "22903": { "3300": 1, "3301": 1 }, "22905": { "3300": 3, "3304": 1 }, "22907": { "3300": 3, "3304": 1 }, "22909": { "3300": 3, "3304": 1 }, "22911": { "3300": 5, "3307": 1 }, "22913": { "3300": 5, "3307": 1 }, "22915": { "3300": 5, "3307": 1 }, "22917": { "3318": 1 }, "22919": { "3318": 1 }, "22921": { "3386": 1 }, "22923": { "3386": 1 }, "22925": { "3433": 1 }, "22927": { "3317": 1 }, "22929": { "3317": 1 }, "22931": { "3434": 1 }, "22933": { "3434": 1 }, "22935": { "3433": 1 }, "22937": { "3433": 1 }, "22939": { "3433": 1 }, "22941": { "3433": 1 }, "22943": { "3433": 1 }, "22945": { "3433": 1 }, "22947": { "16069": 1 }, "22949": { "16069": 2 }, "22951": { "16069": 3 }, "22953": { "3424": 2 }, "23055": { "23069": 1, "40572": 1 }, "23057": { "23069": 1, "40572": 1 }, "23059": { "23069": 1, "40572": 1 }, "23061": { "23069": 1, "40572": 1 }, "23069": { "3348": 5, "3442": 5 }, "23087": { "21718": 2 }, "23121": { "21718": 2 }, "23123": { "13278": 2 }, "23124": { "13278": 2 }, "23188": { "13278": 1 }, "23189": { "13278": 1 }, "23190": { "13278": 1 }, "23191": { "13278": 1 }, "23192": { "13278": 1 }, "23193": { "13278": 1 }, "23194": { "13278": 1 }, "23195": { "13278": 1 }, "23196": { "13278": 1 }, "23197": { "13278": 1 }, "23198": { "13278": 1 }, "23199": { "13278": 1 }, "23200": { "13278": 1 }, "23201": { "13278": 1 }, "23202": { "13278": 1 }, "23203": { "13278": 1 }, "23204": { "21718": 1 }, "23205": { "21718": 1 }, "23206": { "21718": 1 }, "23207": { "21718": 1 }, "23208": { "21718": 1 }, "23209": { "21718": 1 }, "23210": { "21718": 1 }, "23211": { "21718": 1 }, "23212": { "21718": 1 }, "23213": { "21718": 1 }, "23214": { "21718": 1 }, "23215": { "21718": 1 }, "23216": { "21718": 1 }, "23217": { "21718": 1 }, "23218": { "21718": 1 }, "23219": { "21718": 1 }, "23414": { "16069": 1 }, "23416": { "16069": 3 }, "23418": { "3394": 1 }, "23473": { "3427": 4, "3436": 5, "23566": 3 }, "23506": { "3433": 3, "3436": 5, "23566": 3 }, "23510": { "3434": 3, "3436": 5, "23566": 3 }, "23512": { "3436": 5, "19921": 3, "23566": 3 }, "23523": { "3436": 5, "3439": 3, "16069": 3 }, "23525": { "3436": 5, "23594": 1 }, "23527": { "3437": 3 }, "23533": { "23606": 1 }, "23536": { "3435": 3, "3436": 5, "12305": 3 }, "23559": { "3436": 5, "23594": 1 }, "23561": { "3436": 5, "23594": 1 }, "23563": { "3436": 5, "23594": 1 }, "23566": { "3427": 4, "3436": 5 }, "23594": { "3442": 4, "23606": 4 }, "23599": { "3442": 4, "12305": 4 }, "23606": { "3436": 5 }, "23618": { "3436": 4 }, "23659": { "3423": 3, "3436": 5, "23566": 1 }, "23674": { "3345": 1, "24563": 1 }, "23702": { "3423": 3, "3436": 5, "23566": 2 }, "23705": { "3427": 4, "3436": 5, "23566": 2 }, "23707": { "3427": 4, "3436": 5, "23566": 1 }, "23709": { "3436": 5, "3439": 2, "16069": 3 }, "23711": { "3436": 5, "3439": 1, "16069": 3 }, "23713": { "3433": 3, "3436": 5, "23566": 2 }, "23715": { "3433": 3, "3436": 5, "23566": 1 }, "23717": { "3422": 3, "3436": 5, "3439": 2 }, "23719": { "3422": 3, "3436": 5, "3439": 1 }, "23721": { "3436": 5, "19921": 3, "23566": 2 }, "23723": { "3436": 5, "19921": 3, "23566": 1 }, "23725": { "3434": 3, "3436": 5, "23566": 2 }, "23727": { "3434": 3, "3436": 5, "23566": 1 }, "23729": { "3435": 3, "3436": 5, "12305": 2 }, "23731": { "3435": 3, "3436": 5, "12305": 1 }, "23735": { "24606": 1 }, "23757": { "20533": 1, "24311": 1 }, "23759": { "3441": 1 }, "23773": { "3345": 1, "20533": 5 }, "23783": { "3394": 1 }, "23785": { "3394": 3 }, "23787": { "3394": 2 }, "23789": { "3394": 2 }, "23791": { "3394": 1 }, "23793": { "3394": 3 }, "23795": { "3392": 1, "3393": 1 }, "23797": { "3392": 2, "3393": 1 }, "23799": { "3392": 3, "3393": 1 }, "23801": { "3424": 2 }, "23803": { "3424": 3 }, "23805": { "3424": 4 }, "23807": { "3417": 1 }, "23809": { "3417": 1 }, "23811": { "3417": 1 }, "23813": { "3424": 2 }, "23815": { "3423": 1 }, "23817": { "3423": 2 }, "23819": { "3423": 3 }, "23821": { "3423": 1 }, "23824": { "3423": 2 }, "23829": { "3423": 3 }, "23834": { "3300": 1, "3303": 1 }, "23836": { "3300": 1, "3303": 1 }, "23838": { "3300": 1, "3303": 1 }, "23840": { "3300": 3, "3306": 1 }, "23842": { "3300": 3, "3306": 1 }, "23844": { "3300": 3, "3306": 1 }, "23846": { "3300": 5, "3309": 1 }, "23848": { "3300": 5, "3309": 1 }, "23850": { "3300": 5, "3309": 1 }, "23852": { "3423": 1 }, "23854": { "3423": 1 }, "23856": { "3423": 1 }, "23864": { "3421": 1 }, "23866": { "3421": 1 }, "23868": { "3421": 1 }, "23894": { "3424": 3 }, "23896": { "3424": 2 }, "23898": { "3424": 2 }, "23900": { "3318": 1 }, "23902": { "3318": 1 }, "23911": { "20533": 1, "24313": 1 }, "23913": { "20533": 1, "24313": 1 }, "23915": { "20533": 1, "24312": 1 }, "23917": { "20533": 1, "24312": 1 }, "23919": { "20533": 1, "24311": 1 }, "23950": { "3327": 5, "3354": 4, "11574": 4 }, "23953": { "24562": 1 }, "24241": { "3436": 1 }, "24268": { "3387": 4 }, "24270": { "3406": 4 }, "24283": { "24613": 1 }, "24305": { "3386": 5, "11395": 2 }, "24311": { "3339": 3, "3442": 5, "20533": 4, "21610": 4, "21611": 3 }, "24312": { "3338": 3, "3442": 5, "20533": 4, "21610": 4, "21611": 3 }, "24313": { "3336": 3, "3442": 5, "20533": 4, "21610": 4, "21611": 3 }, "24314": { "3337": 3, "3442": 5, "20533": 4, "21610": 4, "21611": 3 }, "24343": { "3411": 2, "9955": 1 }, "24344": { "3411": 2, "9955": 1 }, "24345": { "3411": 2, "9955": 1 }, "24346": { "3411": 2, "9955": 1 }, "24347": { "3411": 2, "9955": 1 }, "24348": { "3402": 3 }, "24395": { "12305": 3 }, "24417": { "12305": 5 }, "24427": { "3437": 5 }, "24438": { "23606": 5 }, "24443": { "3419": 5 }, "24464": { "13278": 1 }, "24471": { "3319": 5, "3320": 5, "20209": 1 }, "24473": { "3319": 5, "3320": 5, "20209": 1 }, "24475": { "3319": 5, "3320": 5, "20209": 1 }, "24477": { "3319": 5, "3320": 5, "20209": 1 }, "24478": { "3319": 5, "3320": 5, "20209": 1 }, "24479": { "3319": 5, "3320": 5, "20209": 1 }, "24483": { "20533": 1, "24314": 1 }, "24485": { "3411": 2, "9955": 1 }, "24486": { "3319": 5, "25718": 1, "25719": 5 }, "24488": { "3319": 5, "25718": 1, "25719": 5 }, "24490": { "3319": 5, "25718": 1, "25719": 5 }, "24492": { "3319": 5, "25718": 1, "25719": 5 }, "24493": { "3319": 5, "25718": 1, "25719": 5 }, "24494": { "3319": 5, "25718": 1, "25719": 5 }, "24495": { "3319": 5, "3321": 5, "20210": 1 }, "24497": { "3319": 5, "3321": 5, "20210": 1 }, "24499": { "3319": 5, "3321": 5, "20210": 1 }, "24501": { "3319": 5, "3321": 5, "20210": 1 }, "24503": { "3319": 5, "3321": 5, "20210": 1 }, "24505": { "3319": 5, "3321": 5, "20210": 1 }, "24507": { "3319": 5, "3324": 5, "20211": 1 }, "24509": { "3319": 5, "3324": 5, "20211": 1 }, "24511": { "3319": 5, "3324": 5, "20211": 1 }, "24513": { "3319": 5, "3324": 5, "20211": 1 }, "24515": { "3319": 5, "3324": 5, "20211": 1 }, "24517": { "3319": 5, "3324": 5, "20211": 1 }, "24519": { "3319": 5, "3325": 5, "20213": 1 }, "24521": { "3319": 5, "3325": 5, "20213": 1 }, "24523": { "3319": 5, "3325": 5, "20213": 1 }, "24525": { "3319": 5, "3325": 5, "20213": 1 }, "24527": { "3319": 5, "3325": 5, "20213": 1 }, "24529": { "3319": 5, "3325": 5, "20213": 1 }, "24531": { "3319": 5, "3326": 5, "20212": 1 }, "24533": { "3319": 5, "3326": 5, "20212": 1 }, "24535": { "3319": 5, "3326": 5, "20212": 1 }, "24537": { "3319": 5, "3326": 5, "20212": 1 }, "24539": { "3319": 5, "3326": 5, "20212": 1 }, "24541": { "3319": 5, "3326": 5, "20212": 1 }, "24550": { "3347": 1, "24563": 1 }, "24552": { "3346": 1, "24563": 1 }, "24554": { "3344": 1, "24563": 1 }, "24562": { "3402": 5, "3412": 5, "3456": 5 }, "24563": { "3402": 5, "3421": 5, "11207": 5 }, "24567": { "11584": 1 }, "24568": { "16069": 5 }, "24569": { "24568": 1 }, "24571": { "3413": 5, "3422": 5 }, "24572": { "3413": 5, "3423": 5 }, "24574": { "11584": 1 }, "24575": { "11584": 1 }, "24606": { "3402": 5, "20533": 3 }, "24613": { "23069": 1 }, "24620": { "11446": 2 }, "24622": { "11446": 4 }, "24624": { "3406": 5 }, "24625": { "3387": 5 }, "24632": { "3411": 2 }, "24636": { "3411": 4 }, "24637": { "3411": 4 }, "24638": { "3411": 4 }, "24639": { "3411": 4 }, "24640": { "3411": 4 }, "24641": { "3411": 2 }, "24642": { "3411": 4 }, "24644": { "11446": 4 }, "24646": { "11584": 1 }, "24653": { "11584": 1 }, "24654": { "11584": 1 }, "24655": { "11584": 1 }, "24656": { "11584": 1 }, "24657": { "11584": 1 }, "24658": { "11584": 1 }, "24659": { "11584": 1 }, "24660": { "11584": 1 }, "24663": { "3411": 4 }, "24669": { "3411": 5 }, "24684": { "11584": 2 }, "24688": { "3338": 1 }, "24690": { "3336": 1 }, "24692": { "3339": 1 }, "24694": { "3337": 1 }, "24696": { "33095": 1 }, "24698": { "33096": 1 }, "24700": { "33097": 1 }, "24702": { "33098": 1 }, "24764": { "11574": 5 }, "25233": { "25235": 4 }, "25235": { "3355": 1 }, "25266": { "25544": 1 }, "25305": { "11584": 1 }, "25349": { "3405": 3 }, "25530": { "25538": 1 }, "25538": { "3402": 4, "3405": 1 }, "25540": { "25544": 1 }, "25542": { "25544": 1 }, "25544": { "3386": 4 }, "25545": { "3411": 2 }, "25546": { "3411": 3 }, "25547": { "3411": 2 }, "25548": { "3411": 3 }, "25553": { "21791": 1 }, "25554": { "23087": 1 }, "25555": { "21790": 1 }, "25556": { "23121": 1 }, "25560": { "9955": 1 }, "25561": { "3427": 3 }, "25563": { "3427": 4 }, "25565": { "3427": 3 }, "25567": { "3427": 3 }, "25569": { "3427": 3 }, "25571": { "3427": 3 }, "25707": { "3319": 1, "25719": 1 }, "25709": { "3319": 1, "25719": 1 }, "25711": { "3319": 1, "25719": 1 }, "25713": { "3319": 1, "25719": 1 }, "25715": { "3319": 4, "25718": 1 }, "25718": { "3319": 1, "25719": 5 }, "25719": { "3319": 3, "3321": 3 }, "25739": { "3402": 3 }, "25771": { "3412": 5 }, "25797": { "3412": 1 }, "25810": { "3412": 4 }, "25811": { "3412": 3 }, "25812": { "25544": 5 }, "25841": { "21718": 1 }, "25851": { "23087": 1 }, "25853": { "21790": 1 }, "25855": { "23121": 1 }, "25857": { "21791": 1 }, "25861": { "25863": 1 }, "25863": { "3392": 3, "3551": 3 }, "25867": { "3411": 4 }, "25868": { "3411": 4 }, "25887": { "11454": 1 }, "26135": { "21718": 1 }, "26136": { "21718": 1 }, "26137": { "21718": 1 }, "26145": { "21718": 1 }, "26146": { "21718": 1 }, "26148": { "21718": 1 }, "26149": { "21718": 1 }, "26150": { "21718": 1 }, "26151": { "21718": 1 }, "26152": { "21718": 1 }, "26153": { "21718": 1 }, "26154": { "21718": 1 }, "26155": { "21718": 1 }, "26161": { "21718": 1 }, "26162": { "21718": 1 }, "26163": { "21718": 1 }, "26164": { "21718": 1 }, "26165": { "21718": 1 }, "26166": { "21718": 1 }, "26173": { "3412": 2, "9955": 5 }, "26252": { "3392": 3 }, "26253": { "26252": 3 }, "26254": { "26252": 3 }, "26255": { "26252": 3 }, "26256": { "26252": 3 }, "26257": { "26252": 3 }, "26258": { "26252": 3 }, "26259": { "26252": 3 }, "26260": { "26252": 3 }, "26261": { "26252": 3 }, "26276": { "13278": 1 }, "26277": { "13278": 1 }, "26597": { "21791": 1 }, "26599": { "21790": 1 }, "26601": { "23121": 1 }, "26603": { "23087": 1 }, "26657": { "25863": 1 }, "26658": { "25863": 1 }, "26659": { "25863": 1 }, "26660": { "25863": 1 }, "26662": { "25863": 1 }, "26663": { "25863": 1 }, "26664": { "25863": 1 }, "26665": { "25863": 1 }, "26666": { "25863": 1 }, "26667": { "25863": 1 }, "26668": { "25863": 1 }, "26669": { "25863": 1 }, "26670": { "25863": 1 }, "26671": { "25863": 1 }, "26672": { "25863": 1 }, "26673": { "25863": 1 }, "26674": { "25863": 1 }, "26675": { "25863": 1 }, "26676": { "25863": 1 }, "26677": { "25863": 1 }, "26713": { "3386": 1 }, "26840": { "3338": 1 }, "26842": { "3337": 1 }, "26849": { "3435": 5, "11584": 4 }, "26851": { "3386": 1 }, "26852": { "3386": 1 }, "26868": { "3386": 1 }, "26869": { "9955": 5 }, "26888": { "3435": 5, "11584": 5 }, "26890": { "3435": 5, "11584": 4 }, "26892": { "3435": 5, "11584": 3 }, "26912": { "16069": 3 }, "26913": { "16069": 4 }, "26914": { "16069": 4 }, "27025": { "3402": 1 }, "27026": { "3402": 1 }, "27028": { "3386": 1 }, "27059": { "3402": 1 }, "27070": { "3411": 1 }, "27071": { "3411": 1 }, "27072": { "3411": 1 }, "27073": { "3411": 1 }, "27074": { "3411": 1 }, "27075": { "3411": 1 }, "27076": { "3411": 1 }, "27077": { "3411": 1 }, "27078": { "3411": 1 }, "27079": { "3411": 1 }, "27080": { "3411": 1 }, "27081": { "3411": 1 }, "27082": { "3411": 1 }, "27083": { "3411": 1 }, "27084": { "3411": 1 }, "27085": { "3411": 1 }, "27086": { "3411": 1 }, "27087": { "3411": 1 }, "27088": { "3411": 1 }, "27089": { "3411": 1 }, "27090": { "3411": 1 }, "27091": { "3411": 1 }, "27092": { "3411": 1 }, "27093": { "3411": 1 }, "27094": { "3411": 1 }, "27095": { "3411": 1 }, "27096": { "3411": 1 }, "27097": { "3411": 1 }, "27098": { "3411": 1 }, "27099": { "3411": 1 }, "27100": { "3411": 1 }, "27101": { "3411": 1 }, "27102": { "3411": 1 }, "27103": { "3411": 1 }, "27104": { "3411": 1 }, "27105": { "3411": 1 }, "27106": { "3411": 1 }, "27107": { "3411": 1 }, "27108": { "3411": 2 }, "27109": { "3411": 2 }, "27110": { "3411": 4 }, "27111": { "3411": 1 }, "27112": { "3411": 4 }, "27113": { "3411": 1 }, "27114": { "3411": 4 }, "27115": { "3411": 1 }, "27116": { "3411": 4 }, "27117": { "3411": 1 }, "27118": { "3411": 4 }, "27119": { "3411": 1 }, "27120": { "3411": 1 }, "27121": { "3411": 4 }, "27122": { "3411": 4 }, "27123": { "3411": 1 }, "27124": { "3411": 4 }, "27125": { "3411": 1 }, "27126": { "3411": 4 }, "27127": { "3411": 1 }, "27128": { "3411": 4 }, "27129": { "3411": 1 }, "27130": { "3411": 4 }, "27131": { "3411": 1 }, "27142": { "3411": 4 }, "27143": { "3411": 1 }, "27147": { "3411": 2 }, "27148": { "3411": 3 }, "27149": { "3411": 3 }, "27150": { "3411": 5 }, "27151": { "3411": 1 }, "27152": { "3411": 2 }, "27153": { "3411": 2 }, "27154": { "3411": 2 }, "27155": { "3411": 2 }, "27156": { "3411": 2 }, "27157": { "3411": 1 }, "27158": { "3411": 4 }, "27159": { "3411": 4 }, "27160": { "3411": 1 }, "27161": { "3411": 4 }, "27162": { "3411": 1 }, "27163": { "3411": 4 }, "27164": { "3411": 1 }, "27165": { "3411": 4 }, "27166": { "3411": 1 }, "27167": { "3411": 3 }, "27169": { "3411": 3 }, "27170": { "3411": 1 }, "27171": { "3411": 5 }, "27174": { "3411": 5 }, "27175": { "3411": 1 }, "27176": { "3411": 3 }, "27177": { "3411": 3 }, "27178": { "3411": 3 }, "27179": { "3411": 5 }, "27180": { "3411": 1 }, "27181": { "3411": 5 }, "27182": { "3411": 1 }, "27184": { "3411": 5 }, "27185": { "3411": 1 }, "27186": { "3411": 3 }, "27187": { "3411": 3 }, "27188": { "3411": 3 }, "27190": { "3411": 5 }, "27191": { "3411": 1 }, "27192": { "3411": 4 }, "27193": { "3411": 1 }, "27194": { "3411": 5 }, "27195": { "3411": 1 }, "27196": { "3411": 3 }, "27197": { "3411": 3 }, "27198": { "3411": 3 }, "27204": { "3411": 4 }, "27205": { "3411": 4 }, "27206": { "3411": 1 }, "27223": { "3411": 2 }, "27224": { "3411": 2 }, "27225": { "3411": 4 }, "27226": { "3411": 1 }, "27227": { "3411": 4 }, "27229": { "3411": 1 }, "27230": { "3411": 4 }, "27231": { "3411": 1 }, "27232": { "3411": 4 }, "27233": { "3411": 1 }, "27234": { "3411": 4 }, "27235": { "3411": 1 }, "27236": { "3411": 4 }, "27237": { "3411": 1 }, "27238": { "3411": 3 }, "27239": { "3411": 5 }, "27240": { "3411": 1 }, "27243": { "3411": 4 }, "27244": { "3411": 1 }, "27245": { "3411": 4 }, "27246": { "3411": 1 }, "27247": { "3411": 4 }, "27249": { "3411": 1 }, "27250": { "3411": 4 }, "27251": { "3411": 1 }, "27252": { "3411": 4 }, "27253": { "3411": 1 }, "27254": { "3411": 4 }, "27255": { "3411": 1 }, "27256": { "3411": 4 }, "27257": { "3411": 1 }, "27258": { "3411": 4 }, "27259": { "3411": 1 }, "27260": { "3411": 4 }, "27264": { "3411": 4 }, "27265": { "3411": 4 }, "27267": { "3411": 5 }, "27268": { "3411": 5 }, "27269": { "3411": 2 }, "27270": { "3411": 2 }, "27271": { "3411": 2 }, "27272": { "3411": 2 }, "27273": { "3411": 2 }, "27299": { "3327": 1 }, "27301": { "3327": 1 }, "27303": { "3327": 1 }, "27305": { "3327": 1 }, "27313": { "3319": 1, "3320": 1 }, "27315": { "3319": 1, "3320": 1 }, "27317": { "3319": 1, "3320": 1 }, "27319": { "3319": 1, "3320": 1 }, "27321": { "3319": 1, "3320": 1 }, "27323": { "3319": 1, "3320": 1 }, "27325": { "3319": 1, "3320": 1 }, "27327": { "3319": 1, "3320": 1 }, "27329": { "3319": 1, "3320": 1 }, "27331": { "3319": 1, "3320": 1 }, "27333": { "3319": 1, "3320": 1 }, "27335": { "3319": 1, "3320": 1 }, "27337": { "3319": 1, "3325": 1 }, "27339": { "3319": 1, "3325": 1 }, "27341": { "3319": 1, "3325": 1 }, "27343": { "3319": 1, "3325": 1 }, "27345": { "3319": 1, "3325": 1 }, "27347": { "3319": 1, "3325": 1 }, "27349": { "3319": 1, "3325": 1 }, "27351": { "3319": 1, "3325": 1 }, "27353": { "3319": 1, "3321": 1 }, "27355": { "3319": 1, "3325": 1 }, "27357": { "3319": 1, "3325": 1 }, "27359": { "3319": 1, "3325": 1 }, "27361": { "3319": 1, "3321": 1 }, "27363": { "3319": 1, "3325": 1 }, "27365": { "3319": 1, "3321": 1 }, "27367": { "3319": 1, "3321": 1 }, "27369": { "3319": 1, "3321": 1 }, "27371": { "3319": 1, "3321": 1 }, "27373": { "3319": 1, "3326": 1 }, "27375": { "3319": 1, "3321": 1 }, "27377": { "3319": 1, "3326": 1 }, "27379": { "3319": 1, "3321": 1 }, "27381": { "3319": 1, "3321": 1 }, "27383": { "3319": 1, "3321": 1 }, "27385": { "3319": 1, "3321": 1 }, "27387": { "3319": 1, "3321": 1 }, "27389": { "3319": 1, "3326": 1 }, "27391": { "3319": 1, "3326": 1 }, "27393": { "3319": 1, "25719": 1 }, "27395": { "3319": 1, "3326": 1 }, "27397": { "3319": 1, "25719": 1 }, "27399": { "3319": 1, "3326": 1 }, "27401": { "3319": 1, "25719": 1 }, "27403": { "3319": 1, "25719": 1 }, "27405": { "3319": 1, "25719": 1 }, "27407": { "3319": 1, "25719": 1 }, "27409": { "3319": 1, "3326": 1 }, "27411": { "3319": 1, "25719": 1 }, "27413": { "3319": 1, "25719": 1 }, "27415": { "3319": 1, "25719": 1 }, "27417": { "3319": 1, "25719": 1 }, "27419": { "3319": 1, "25719": 1 }, "27421": { "3319": 1, "25719": 1 }, "27423": { "3319": 1, "3326": 1 }, "27425": { "3319": 1, "3326": 1 }, "27427": { "3319": 1, "3326": 1 }, "27429": { "3319": 1, "3326": 1 }, "27431": { "3319": 1, "3326": 1 }, "27433": { "3319": 1, "3324": 1 }, "27435": { "3319": 1, "3324": 1 }, "27437": { "3319": 1, "3324": 1 }, "27439": { "3319": 1, "3324": 1 }, "27441": { "3319": 1, "3324": 1 }, "27443": { "3319": 1, "3324": 1 }, "27445": { "3319": 1, "3324": 1 }, "27447": { "3319": 1, "3324": 1 }, "27449": { "3319": 1, "3324": 1 }, "27451": { "3319": 1, "3324": 1 }, "27453": { "3319": 1, "3324": 1 }, "27455": { "3319": 1, "3324": 1 }, "27457": { "3319": 1, "3322": 1, "3326": 1 }, "27459": { "3319": 1, "3322": 1, "3326": 1 }, "27461": { "3319": 1, "3322": 1, "3326": 1 }, "27463": { "3319": 1, "3322": 1, "3326": 1 }, "27465": { "3319": 1, "3322": 1, "3326": 1 }, "27467": { "3319": 1, "3322": 1, "3326": 1 }, "27469": { "3319": 1, "3322": 1, "3326": 1 }, "27471": { "3319": 1, "3322": 1, "3326": 1 }, "27473": { "3319": 1, "3322": 1, "3326": 1 }, "27475": { "3319": 1, "3322": 1, "3326": 1 }, "27477": { "3319": 1, "3322": 1, "3326": 1 }, "27479": { "3319": 1, "3322": 1, "3326": 1 }, "27481": { "3319": 1, "3322": 1, "3324": 1 }, "27483": { "3319": 1, "3322": 1, "3324": 1 }, "27485": { "3319": 1, "3322": 1, "3324": 1 }, "27487": { "3319": 1, "3322": 1, "3324": 1 }, "27489": { "3319": 1, "3322": 1, "3324": 1 }, "27491": { "3319": 1, "3322": 1, "3324": 1 }, "27493": { "3319": 1, "3322": 1, "3324": 1 }, "27495": { "3319": 1, "3322": 1, "3324": 1 }, "27497": { "3319": 1, "3322": 1, "3324": 1 }, "27499": { "3319": 1, "3322": 1, "3324": 1 }, "27501": { "3319": 1, "3322": 1, "3324": 1 }, "27503": { "3319": 1, "3322": 1, "3324": 1 }, "27505": { "3319": 1, "3321": 1, "3322": 1 }, "27507": { "3319": 1, "3321": 1, "3322": 1 }, "27509": { "3319": 1, "3321": 1, "3322": 1 }, "27511": { "3319": 1, "3321": 1, "3322": 1 }, "27513": { "3319": 1, "3321": 1, "3322": 1 }, "27515": { "3319": 1, "3321": 1, "3322": 1 }, "27517": { "3319": 1, "3321": 1, "3322": 1 }, "27519": { "3319": 1, "3321": 1, "3322": 1 }, "27521": { "3319": 1, "3321": 1, "3322": 1 }, "27523": { "3319": 1, "3321": 1, "3322": 1 }, "27525": { "3319": 1, "3321": 1, "3322": 1 }, "27527": { "3319": 1, "3321": 1, "3322": 1 }, "27542": { "11584": 1 }, "27544": { "11584": 1 }, "27545": { "11584": 1 }, "27547": { "11584": 1 }, "27548": { "11584": 1 }, "27550": { "11584": 1 }, "27551": { "11584": 1 }, "27553": { "11584": 1 }, "27554": { "11584": 1 }, "27556": { "11584": 1 }, "27557": { "11584": 1 }, "27559": { "11584": 1 }, "27560": { "11584": 1 }, "27562": { "11584": 1 }, "27563": { "11584": 1 }, "27565": { "11584": 1 }, "27567": { "11584": 1 }, "27569": { "11584": 1 }, "27570": { "11584": 1 }, "27573": { "11584": 1 }, "27574": { "11584": 3 }, "27576": { "11584": 3 }, "27577": { "11584": 3 }, "27579": { "11584": 3 }, "27580": { "11584": 3 }, "27582": { "11584": 3 }, "27583": { "11584": 3 }, "27585": { "11584": 3 }, "27613": { "11584": 1 }, "27615": { "11584": 1 }, "27616": { "11584": 1 }, "27618": { "11584": 1 }, "27619": { "11584": 1 }, "27621": { "11584": 1 }, "27622": { "11584": 1 }, "27624": { "11584": 1 }, "27625": { "11584": 1 }, "27627": { "11584": 1 }, "27628": { "11584": 1 }, "27630": { "11584": 1 }, "27631": { "11584": 1 }, "27633": { "11584": 1 }, "27634": { "11584": 1 }, "27636": { "11584": 1 }, "27638": { "11584": 1 }, "27640": { "11584": 1 }, "27641": { "11584": 1 }, "27643": { "11584": 1 }, "27644": { "11584": 1 }, "27646": { "11584": 1 }, "27647": { "11584": 1 }, "27649": { "11584": 1 }, "27650": { "11584": 1 }, "27652": { "11584": 1 }, "27653": { "11584": 1 }, "27655": { "11584": 1 }, "27656": { "3400": 1 }, "27658": { "3400": 3 }, "27660": { "3400": 5 }, "27662": { "3400": 1 }, "27664": { "3400": 5 }, "27666": { "3400": 3 }, "27672": { "11584": 1 }, "27674": { "11584": 1 }, "27675": { "11584": 1 }, "27678": { "27911": 1 }, "27766": { "11584": 1 }, "27767": { "11584": 1 }, "27768": { "11584": 1 }, "27769": { "11584": 1 }, "27770": { "11584": 1 }, "27771": { "11584": 1 }, "27772": { "11584": 1 }, "27773": { "11584": 1 }, "27774": { "11584": 1 }, "27775": { "11584": 1 }, "27776": { "11584": 1 }, "27777": { "11584": 1 }, "27778": { "11584": 1 }, "27779": { "11584": 1 }, "27802": { "21718": 1 }, "27804": { "21718": 1 }, "27855": { "11584": 1 }, "27856": { "11584": 1 }, "27857": { "11584": 1 }, "27858": { "11584": 1 }, "27883": { "3319": 1, "3320": 1 }, "27884": { "3319": 1, "3320": 1 }, "27885": { "3319": 1, "3321": 1 }, "27886": { "3319": 1, "3321": 1 }, "27887": { "3319": 1, "25719": 1 }, "27888": { "3319": 1, "25719": 1 }, "27889": { "3319": 1, "3324": 1 }, "27890": { "3319": 1, "3324": 1 }, "27891": { "3319": 1, "3325": 1 }, "27892": { "3319": 1, "3325": 1 }, "27893": { "3319": 1, "3326": 1 }, "27894": { "3319": 1, "3326": 1 }, "27902": { "3392": 3 }, "27904": { "27902": 3 }, "27906": { "12096": 5 }, "27911": { "3427": 5 }, "27912": { "28073": 1 }, "27914": { "28073": 1 }, "27916": { "28073": 1 }, "27918": { "28073": 1 }, "27920": { "28073": 1 }, "27922": { "28073": 3 }, "27924": { "28073": 4 }, "27930": { "27902": 2 }, "27932": { "27902": 1 }, "27934": { "27902": 5, "27936": 1 }, "27936": { "27902": 5 }, "27937": { "3400": 1 }, "27939": { "3400": 1 }, "27941": { "3400": 1 }, "27951": { "27906": 1 }, "27957": { "3400": 3 }, "27959": { "3400": 5 }, "27961": { "3400": 1 }, "27963": { "3400": 3 }, "27965": { "3400": 5 }, "27967": { "3400": 3 }, "27969": { "3400": 5 }, "27971": { "3400": 3 }, "27973": { "3400": 5 }, "27975": { "3400": 3 }, "27977": { "3400": 5 }, "27979": { "3400": 3 }, "27981": { "3400": 5 }, "27983": { "3400": 1 }, "27985": { "3400": 1 }, "27987": { "3400": 1 }, "27989": { "3400": 3 }, "27991": { "3400": 5 }, "27993": { "3400": 1 }, "27995": { "3400": 3 }, "27997": { "3400": 5 }, "27999": { "3400": 1 }, "28001": { "3400": 3 }, "28003": { "3400": 5 }, "28005": { "3400": 1 }, "28007": { "3400": 3 }, "28009": { "3400": 5 }, "28011": { "3400": 1 }, "28013": { "3400": 3 }, "28015": { "3400": 5 }, "28017": { "3400": 1 }, "28019": { "3400": 3 }, "28021": { "3400": 5 }, "28023": { "3400": 1 }, "28025": { "3400": 3 }, "28027": { "3400": 5 }, "28029": { "3400": 1 }, "28031": { "3400": 3 }, "28033": { "3400": 5 }, "28035": { "3400": 1 }, "28037": { "3400": 3 }, "28039": { "3400": 5 }, "28041": { "3400": 1 }, "28043": { "3400": 3 }, "28045": { "3400": 5 }, "28047": { "3400": 1 }, "28049": { "3400": 3 }, "28051": { "3400": 5 }, "28053": { "3400": 1 }, "28055": { "3400": 3 }, "28057": { "3400": 5 }, "28059": { "3400": 1 }, "28061": { "3400": 3 }, "28063": { "3400": 5 }, "28073": { "12441": 4 }, "28164": { "3402": 4, "3413": 4, "3418": 3 }, "28191": { "11584": 1 }, "28197": { "3436": 5, "3439": 5, "16069": 4 }, "28199": { "3422": 4, "3436": 5, "3439": 5 }, "28201": { "3436": 5, "3439": 5, "16069": 4 }, "28203": { "3422": 4, "3436": 5, "3439": 5 }, "28205": { "3436": 5, "3439": 5, "16069": 4 }, "28207": { "3422": 4, "3436": 5, "3439": 5 }, "28209": { "3436": 5, "12487": 1, "23594": 5 }, "28211": { "3436": 5, "12486": 1, "23594": 5 }, "28213": { "3436": 5, "12484": 1, "23594": 5 }, "28215": { "3436": 5, "12485": 1, "23594": 5 }, "28224": { "21718": 1 }, "28259": { "21718": 1 }, "28261": { "3443": 2 }, "28262": { "3436": 2, "24241": 1 }, "28264": { "3436": 5, "12484": 1, "24241": 5 }, "28266": { "3436": 5, "3441": 1 }, "28268": { "3436": 5, "3441": 5, "12485": 1 }, "28270": { "3436": 3, "33699": 1 }, "28272": { "3436": 5, "12486": 1, "33699": 5 }, "28274": { "3436": 2, "24241": 1 }, "28276": { "3436": 5, "12486": 1, "24241": 5 }, "28278": { "3436": 2, "24241": 1 }, "28280": { "3436": 5, "12487": 1, "24241": 5 }, "28282": { "3436": 3, "33699": 1 }, "28284": { "3436": 5, "12484": 1, "33699": 5 }, "28286": { "3436": 5, "3441": 1 }, "28288": { "3436": 5, "3441": 5, "12486": 1 }, "28290": { "3436": 5, "3441": 1 }, "28292": { "3436": 5, "3441": 5, "12484": 1 }, "28294": { "3436": 3, "33699": 1 }, "28296": { "3436": 5, "12485": 1, "33699": 5 }, "28298": { "3436": 3, "33699": 1 }, "28300": { "3436": 5, "12487": 1, "33699": 5 }, "28302": { "3436": 2, "24241": 1 }, "28304": { "3436": 5, "12485": 1, "24241": 5 }, "28306": { "3436": 5, "3441": 1 }, "28308": { "3436": 5, "3441": 5, "12487": 1 }, "28318": { "11584": 2 }, "28319": { "11584": 2 }, "28351": { "11584": 1 }, "28352": { "3456": 1, "20533": 2, "28374": 1 }, "28367": { "3386": 1 }, "28369": { "3386": 4 }, "28373": { "3380": 5, "3389": 5, "3402": 5 }, "28374": { "20342": 5, "20533": 2, "28585": 1, "29637": 3 }, "28375": { "3319": 1, "25719": 1 }, "28377": { "3319": 1, "25719": 1 }, "28379": { "3319": 1, "25719": 1 }, "28381": { "3319": 1, "25719": 1 }, "28383": { "3319": 1, "25719": 1 }, "28385": { "3386": 1 }, "28387": { "3386": 1 }, "28388": { "3386": 1 }, "28389": { "3386": 1 }, "28390": { "3386": 1 }, "28391": { "3386": 1 }, "28392": { "3386": 1 }, "28393": { "3386": 1 }, "28394": { "3386": 1 }, "28395": { "3386": 1 }, "28396": { "3386": 1 }, "28397": { "3386": 1 }, "28398": { "3386": 1 }, "28399": { "3386": 1 }, "28400": { "3386": 1 }, "28401": { "3386": 1 }, "28402": { "3386": 1 }, "28403": { "3386": 1 }, "28404": { "3386": 1 }, "28405": { "3386": 1 }, "28406": { "3386": 1 }, "28407": { "3386": 1 }, "28408": { "3386": 1 }, "28409": { "3386": 1 }, "28410": { "3386": 1 }, "28411": { "3386": 1 }, "28412": { "11395": 1 }, "28413": { "11395": 1 }, "28414": { "11395": 1 }, "28415": { "3386": 1 }, "28416": { "3386": 1 }, "28417": { "3386": 1 }, "28418": { "3386": 1 }, "28419": { "3386": 1 }, "28420": { "3386": 1 }, "28421": { "3386": 1 }, "28422": { "3386": 1 }, "28423": { "3386": 1 }, "28424": { "3386": 1 }, "28425": { "3386": 1 }, "28426": { "3386": 1 }, "28427": { "3386": 1 }, "28428": { "3386": 1 }, "28429": { "3386": 1 }, "28430": { "3386": 1 }, "28431": { "3386": 1 }, "28432": { "3386": 1 }, "28433": { "16281": 1 }, "28434": { "16281": 1 }, "28435": { "16281": 1 }, "28436": { "16281": 1 }, "28437": { "16281": 1 }, "28438": { "16281": 1 }, "28439": { "16281": 1 }, "28440": { "16281": 1 }, "28441": { "16281": 1 }, "28442": { "16281": 1 }, "28443": { "16281": 1 }, "28444": { "16281": 1 }, "28511": { "3319": 1, "3320": 1 }, "28513": { "3319": 1, "3325": 1 }, "28514": { "3435": 1 }, "28516": { "3435": 1 }, "28518": { "3435": 1, "3449": 1 }, "28520": { "3394": 1 }, "28522": { "3394": 3 }, "28524": { "3394": 3 }, "28526": { "3394": 3 }, "28528": { "3394": 3 }, "28530": { "3424": 2 }, "28532": { "3424": 2 }, "28534": { "3394": 3 }, "28536": { "3394": 3 }, "28538": { "3394": 3 }, "28540": { "3394": 3 }, "28542": { "3394": 3 }, "28544": { "3392": 3, "3393": 1 }, "28545": { "3421": 1 }, "28547": { "3394": 1 }, "28549": { "3392": 2, "3393": 1 }, "28550": { "3421": 1 }, "28552": { "3394": 1 }, "28554": { "3394": 1 }, "28556": { "3392": 1, "3393": 1 }, "28557": { "3421": 1 }, "28559": { "3394": 1 }, "28561": { "3432": 1 }, "28563": { "3318": 1 }, "28565": { "3319": 1, "25719": 1 }, "28576": { "22578": 4 }, "28578": { "22578": 4 }, "28583": { "28585": 1 }, "28585": { "24625": 4 }, "28604": { "9955": 5 }, "28606": { "29637": 1 }, "28609": { "3327": 5, "3435": 5, "11446": 4 }, "28612": { "3386": 1, "12189": 3 }, "28615": { "3327": 3, "3428": 5 }, "28617": { "3386": 1 }, "28618": { "3386": 1 }, "28619": { "3386": 1 }, "28620": { "3386": 1 }, "28621": { "3386": 1 }, "28622": { "3386": 1 }, "28623": { "3386": 1 }, "28624": { "3386": 1 }, "28625": { "3386": 1 }, "28626": { "11395": 1 }, "28627": { "16281": 1 }, "28628": { "16281": 1 }, "28646": { "21603": 5 }, "28652": { "24562": 1 }, "28654": { "3435": 5, "11446": 4 }, "28656": { "3327": 5, "11579": 4, "21611": 4 }, "28659": { "3339": 5, "28667": 1 }, "28661": { "3336": 5, "28667": 1 }, "28665": { "3337": 5, "28667": 1 }, "28667": { "3327": 5, "3424": 5, "11207": 5 }, "28670": { "3405": 1 }, "28672": { "3405": 1 }, "28674": { "3405": 1 }, "28676": { "3405": 1 }, "28678": { "3405": 1 }, "28680": { "3405": 1 }, "28682": { "3405": 1 }, "28684": { "3405": 1 }, "28710": { "3338": 5, "28667": 1 }, "28729": { "3427": 1 }, "28731": { "3427": 1 }, "28733": { "3427": 1 }, "28735": { "3427": 1 }, "28737": { "3427": 1 }, "28739": { "3424": 2 }, "28740": { "3418": 2 }, "28742": { "3425": 1 }, "28744": { "3425": 1 }, "28746": { "3425": 1 }, "28748": { "3386": 5, "11395": 1 }, "28750": { "3386": 1 }, "28752": { "16281": 1 }, "28754": { "3386": 4, "3410": 1 }, "28756": { "3412": 2 }, "28758": { "3412": 1 }, "28766": { "3412": 5 }, "28768": { "3412": 1 }, "28770": { "3435": 5, "11584": 4 }, "28772": { "3435": 4, "11584": 3 }, "28774": { "3435": 3, "11584": 2 }, "28776": { "3424": 2 }, "28778": { "3394": 1 }, "28780": { "3394": 3 }, "28782": { "3394": 2 }, "28784": { "3394": 2 }, "28786": { "3394": 3 }, "28788": { "25544": 1 }, "28790": { "3411": 2 }, "28791": { "3411": 2 }, "28792": { "3411": 3 }, "28793": { "3411": 4 }, "28794": { "3411": 3 }, "28795": { "3411": 5 }, "28796": { "3411": 2 }, "28797": { "3411": 2 }, "28798": { "3411": 3 }, "28799": { "3411": 4 }, "28800": { "3411": 3 }, "28801": { "3411": 5 }, "28802": { "3411": 2 }, "28803": { "3411": 2 }, "28804": { "3411": 3 }, "28805": { "3411": 4 }, "28806": { "3411": 3 }, "28807": { "3411": 5 }, "28808": { "3411": 2 }, "28809": { "3411": 2 }, "28810": { "3411": 3 }, "28811": { "3411": 4 }, "28812": { "3411": 3 }, "28813": { "3411": 5 }, "28814": { "3411": 2 }, "28815": { "3411": 2 }, "28816": { "3411": 3 }, "28817": { "3411": 4 }, "28818": { "3411": 3 }, "28819": { "3411": 5 }, "28844": { "20526": 4, "21611": 1, "29029": 1 }, "28846": { "20528": 4, "21611": 1, "29029": 1 }, "28848": { "20527": 4, "21611": 1, "29029": 1 }, "28850": { "20524": 4, "21611": 1, "29029": 1 }, "28871": { "21718": 1 }, "28872": { "21718": 1 }, "28873": { "21718": 1 }, "28874": { "21718": 1 }, "28875": { "21718": 1 }, "28876": { "21718": 1 }, "28877": { "21718": 1 }, "28878": { "21718": 1 }, "28879": { "3392": 4 }, "28880": { "28879": 3 }, "28881": { "21718": 4 }, "28882": { "21718": 4 }, "28883": { "21718": 4 }, "28888": { "26254": 1 }, "28890": { "26254": 4 }, "28892": { "26254": 1 }, "28894": { "26254": 4 }, "28902": { "21718": 4 }, "28904": { "21718": 4 }, "28905": { "21718": 4 }, "28906": { "21718": 4 }, "28907": { "21718": 4 }, "28908": { "21718": 4 }, "28909": { "21718": 4 }, "28911": { "21718": 4 }, "28912": { "21718": 4 }, "28914": { "21718": 4 }, "28915": { "21718": 4 }, "28917": { "21718": 4 }, "28918": { "21718": 4 }, "28920": { "21718": 4 }, "28921": { "21718": 4 }, "28923": { "21718": 4 }, "28924": { "21718": 4 }, "28927": { "21718": 4 }, "28928": { "21718": 4 }, "28930": { "21718": 4 }, "28931": { "21718": 4 }, "28933": { "21718": 4 }, "28934": { "21718": 4 }, "28936": { "21718": 4 }, "28937": { "21718": 4 }, "28938": { "21718": 4 }, "28939": { "21718": 4 }, "28940": { "21718": 4 }, "28941": { "21718": 4 }, "28942": { "21718": 4 }, "28943": { "21718": 4 }, "28944": { "21718": 4 }, "28945": { "21718": 4 }, "28946": { "21718": 4 }, "28948": { "21718": 4 }, "28949": { "21718": 4 }, "28951": { "21718": 4 }, "28952": { "21718": 4 }, "28954": { "21718": 4 }, "28955": { "21718": 4 }, "28957": { "21718": 4 }, "28958": { "21718": 4 }, "28960": { "21718": 4 }, "28961": { "21718": 4 }, "28963": { "21718": 4 }, "28964": { "21718": 4 }, "28966": { "21718": 4 }, "28967": { "21718": 4 }, "28969": { "21718": 4 }, "28970": { "21718": 4 }, "28976": { "21718": 4 }, "28977": { "21718": 4 }, "28978": { "21718": 4 }, "28979": { "21718": 4 }, "28980": { "21718": 4 }, "28981": { "21718": 4 }, "28982": { "21718": 4 }, "28983": { "21718": 4 }, "28984": { "21718": 4 }, "28985": { "21718": 4 }, "28986": { "21718": 4 }, "28987": { "21718": 4 }, "28988": { "21718": 4 }, "28989": { "21718": 4 }, "28990": { "21718": 4 }, "28991": { "21718": 4 }, "28992": { "21718": 4 }, "28993": { "21718": 4 }, "28994": { "21718": 4 }, "29029": { "3380": 5, "20342": 4 }, "29113": { "16281": 1 }, "29115": { "16281": 1 }, "29117": { "16281": 1 }, "29119": { "16281": 1 }, "29121": { "16281": 1 }, "29123": { "16281": 1 }, "29125": { "16281": 1 }, "29127": { "16281": 1 }, "29129": { "16281": 1 }, "29131": { "16281": 1 }, "29133": { "16281": 1 }, "29135": { "16281": 1 }, "29190": { "25863": 1 }, "29248": { "3331": 1 }, "29266": { "3327": 1 }, "29289": { "25863": 1 }, "29328": { "3327": 1 }, "29330": { "3327": 1 }, "29332": { "3327": 1 }, "29334": { "3327": 1 }, "29336": { "3333": 2 }, "29337": { "3335": 2 }, "29340": { "3334": 2 }, "29344": { "3332": 2 }, "29549": { "25863": 1 }, "29613": { "11584": 1 }, "29616": { "3319": 1, "21668": 1 }, "29618": { "3319": 1, "21668": 1 }, "29620": { "3319": 1, "21668": 1 }, "29622": { "3319": 1, "21668": 1 }, "29637": { "3184": 3, "3327": 5, "22552": 1 }, "29716": { "25863": 1 }, "29717": { "25863": 1 }, "29718": { "25863": 1 }, "29719": { "25863": 1 }, "29720": { "25863": 1 }, "29721": { "25863": 1 }, "29722": { "25863": 1 }, "29723": { "25863": 1 }, "29724": { "25863": 1 }, "29725": { "25863": 1 }, "29726": { "25863": 1 }, "29727": { "25863": 1 }, "29728": { "25863": 1 }, "29729": { "25863": 1 }, "29730": { "25863": 1 }, "29731": { "25863": 1 }, "29732": { "25863": 1 }, "29733": { "25863": 1 }, "29734": { "25863": 1 }, "29735": { "25863": 1 }, "29736": { "25863": 1 }, "29737": { "25863": 1 }, "29738": { "25863": 1 }, "29739": { "25863": 1 }, "29740": { "25863": 1 }, "29741": { "25863": 1 }, "29742": { "25863": 1 }, "29743": { "25863": 1 }, "29744": { "25863": 1 }, "29745": { "25863": 1 }, "29894": { "25863": 1 }, "29895": { "25863": 1 }, "29896": { "25863": 1 }, "29897": { "25863": 1 }, "29898": { "25863": 1 }, "29899": { "25863": 1 }, "29900": { "25863": 1 }, "29901": { "25863": 1 }, "29902": { "25863": 1 }, "29903": { "25863": 1 }, "29964": { "30532": 1 }, "29965": { "30532": 1 }, "29966": { "30532": 1 }, "29967": { "30532": 1 }, "29969": { "30544": 1 }, "29970": { "30544": 1 }, "29971": { "30544": 1 }, "29972": { "30544": 1 }, "29974": { "30545": 1 }, "29975": { "30545": 1 }, "29976": { "30545": 1 }, "29977": { "30545": 1 }, "29979": { "30540": 1 }, "29980": { "30540": 1 }, "29981": { "30540": 1 }, "29982": { "30540": 1 }, "29984": { "30544": 1, "30548": 1, "30549": 1, "30552": 1, "30651": 1 }, "29986": { "30532": 1, "30537": 1, "30538": 1, "30539": 1, "30650": 1 }, "29988": { "30540": 1, "30546": 1, "30550": 1, "30553": 1, "30652": 1 }, "29990": { "30545": 1, "30547": 1, "30551": 1, "30554": 1, "30653": 1 }, "30013": { "3402": 1, "3412": 1 }, "30028": { "3412": 2 }, "30036": { "30536": 1 }, "30038": { "30536": 1 }, "30040": { "30536": 1 }, "30042": { "30536": 1 }, "30046": { "30542": 1 }, "30048": { "30542": 1 }, "30050": { "30542": 1 }, "30052": { "30542": 1 }, "30056": { "30541": 1 }, "30058": { "30541": 1 }, "30060": { "30541": 1 }, "30062": { "30541": 1 }, "30066": { "30543": 1 }, "30068": { "30543": 1 }, "30070": { "30543": 1 }, "30072": { "30543": 1 }, "30076": { "30538": 1 }, "30078": { "30538": 1 }, "30080": { "30538": 1 }, "30082": { "30538": 1 }, "30086": { "30552": 1 }, "30088": { "30552": 1 }, "30090": { "30552": 1 }, "30092": { "30552": 1 }, "30096": { "30553": 1 }, "30098": { "30553": 1 }, "30100": { "30553": 1 }, "30102": { "30553": 1 }, "30106": { "30554": 1 }, "30108": { "30554": 1 }, "30110": { "30554": 1 }, "30112": { "30554": 1 }, "30117": { "30537": 1 }, "30118": { "30537": 1 }, "30119": { "30537": 1 }, "30120": { "30537": 1 }, "30122": { "30549": 1 }, "30123": { "30549": 1 }, "30124": { "30549": 1 }, "30125": { "30549": 1 }, "30127": { "30550": 1 }, "30128": { "30550": 1 }, "30129": { "30550": 1 }, "30130": { "30550": 1 }, "30132": { "30551": 1 }, "30133": { "30551": 1 }, "30134": { "30551": 1 }, "30135": { "30551": 1 }, "30139": { "30548": 1 }, "30141": { "30548": 1 }, "30143": { "30548": 1 }, "30145": { "30548": 1 }, "30149": { "30546": 1 }, "30151": { "30546": 1 }, "30153": { "30546": 1 }, "30155": { "30546": 1 }, "30159": { "30547": 1 }, "30161": { "30547": 1 }, "30163": { "30547": 1 }, "30165": { "30547": 1 }, "30169": { "30539": 1 }, "30171": { "30539": 1 }, "30173": { "30539": 1 }, "30175": { "30539": 1 }, "30223": { "9955": 5 }, "30324": { "3403": 5, "11442": 4 }, "30325": { "3403": 5, "11433": 4 }, "30326": { "3403": 5, "11453": 4 }, "30327": { "3403": 5, "11433": 4 }, "30342": { "3413": 1 }, "30386": { "3408": 1 }, "30389": { "11584": 1 }, "30420": { "3413": 1 }, "30422": { "3413": 1 }, "30424": { "3413": 1 }, "30426": { "3319": 1, "3326": 1 }, "30428": { "3319": 1, "3324": 1 }, "30430": { "3319": 1, "3321": 1 }, "30486": { "3412": 2 }, "30488": { "3402": 1, "3412": 1 }, "30516": { "21718": 1 }, "30517": { "21718": 1 }, "30518": { "21718": 1 }, "30519": { "21718": 1 }, "30520": { "21718": 1 }, "30521": { "21718": 1 }, "30522": { "13278": 1 }, "30523": { "13278": 1 }, "30524": { "13278": 1 }, "30525": { "13278": 1 }, "30526": { "13278": 1 }, "30527": { "13278": 1 }, "30528": { "13278": 1 }, "30529": { "13278": 1 }, "30530": { "13278": 1 }, "30532": { "3392": 5, "3416": 3 }, "30536": { "3426": 5 }, "30537": { "3300": 5, "3436": 3 }, "30538": { "3449": 5 }, "30539": { "3413": 5 }, "30540": { "3392": 5, "3416": 3 }, "30541": { "3426": 5 }, "30542": { "3426": 5 }, "30543": { "3426": 5 }, "30544": { "3392": 3, "3416": 5 }, "30545": { "3392": 5, "3416": 3 }, "30546": { "3413": 5 }, "30547": { "3413": 5 }, "30548": { "3413": 5 }, "30549": { "3300": 3, "3319": 5 }, "30550": { "3300": 5, "3436": 3 }, "30551": { "3300": 5, "3319": 3 }, "30552": { "3449": 5 }, "30553": { "3449": 5 }, "30554": { "3449": 5 }, "30650": { "3335": 5 }, "30651": { "3334": 5 }, "30652": { "3332": 5 }, "30653": { "3333": 5 }, "30656": { "11584": 2 }, "30788": { "3403": 5, "11446": 4 }, "30832": { "13278": 5 }, "30834": { "21718": 5 }, "30836": { "25863": 5 }, "30839": { "3394": 1 }, "30842": { "3327": 1 }, "30969": { "21718": 1 }, "30976": { "21718": 1 }, "30981": { "21718": 1 }, "30982": { "21718": 1 }, "30996": { "25863": 1 }, "31864": { "3436": 2, "24241": 1 }, "31866": { "3436": 3, "33699": 1 }, "31868": { "3436": 5, "23594": 1 }, "31870": { "3436": 5, "3441": 1 }, "31872": { "3436": 2, "24241": 1 }, "31874": { "3436": 3, "33699": 1 }, "31876": { "3436": 5, "3441": 1 }, "31878": { "3436": 5, "23594": 1 }, "31880": { "3436": 2, "24241": 1 }, "31882": { "3436": 3, "33699": 1 }, "31884": { "3436": 5, "3441": 1 }, "31886": { "3436": 5, "23594": 1 }, "31888": { "3436": 2, "24241": 1 }, "31890": { "3436": 3, "33699": 1 }, "31892": { "3436": 5, "3441": 1 }, "31894": { "3436": 5, "23594": 1 }, "31896": { "3394": 1 }, "31898": { "3394": 1 }, "31900": { "3394": 3 }, "31902": { "3394": 3 }, "31904": { "3394": 2 }, "31906": { "3394": 2 }, "31908": { "3394": 2 }, "31910": { "3394": 2 }, "31916": { "3394": 3 }, "31918": { "3394": 3 }, "31922": { "3425": 1 }, "31924": { "3425": 1 }, "31926": { "3425": 1 }, "31928": { "3425": 1 }, "31930": { "3425": 1 }, "31932": { "3425": 1 }, "31936": { "3418": 2 }, "31942": { "23606": 1 }, "31944": { "19921": 1 }, "31946": { "3423": 1 }, "31948": { "3423": 1 }, "31950": { "3423": 1 }, "31952": { "3424": 2 }, "31954": { "3411": 2 }, "31955": { "3411": 2 }, "31956": { "3411": 3 }, "31957": { "3411": 4 }, "31958": { "3411": 3 }, "31959": { "3411": 5 }, "31962": { "3411": 2 }, "31963": { "3411": 2 }, "31964": { "3411": 3 }, "31965": { "3411": 4 }, "31966": { "3411": 3 }, "31967": { "3411": 5 }, "31968": { "3411": 2 }, "31969": { "3411": 2 }, "31970": { "3411": 3 }, "31971": { "3411": 4 }, "31972": { "3411": 3 }, "31973": { "3411": 5 }, "31974": { "3411": 2 }, "31975": { "3411": 2 }, "31976": { "3411": 3 }, "31977": { "3411": 4 }, "31978": { "3411": 3 }, "31979": { "3411": 5 }, "32100": { "13278": 1 }, "32101": { "3411": 2 }, "32102": { "3411": 2 }, "32103": { "3411": 3 }, "32104": { "3411": 4 }, "32105": { "3411": 3 }, "32107": { "3411": 2 }, "32108": { "3411": 2 }, "32109": { "3411": 3 }, "32110": { "3411": 4 }, "32111": { "3411": 3 }, "32112": { "3411": 2 }, "32113": { "3411": 2 }, "32114": { "3411": 3 }, "32115": { "3411": 4 }, "32116": { "3411": 3 }, "32117": { "3411": 2 }, "32118": { "3411": 2 }, "32119": { "3411": 3 }, "32120": { "3411": 4 }, "32121": { "3411": 3 }, "32122": { "3411": 5 }, "32123": { "3411": 5 }, "32124": { "3411": 5 }, "32125": { "3411": 5 }, "32207": { "3329": 5, "12095": 1 }, "32209": { "3333": 5, "16591": 1 }, "32240": { "21718": 1 }, "32245": { "11584": 1 }, "32246": { "3402": 1, "3412": 1 }, "32248": { "3405": 2 }, "32254": { "3411": 2 }, "32255": { "3411": 3 }, "32260": { "11579": 1 }, "32262": { "3437": 4 }, "32279": { "13278": 1 }, "32281": { "21718": 1 }, "32282": { "13278": 1 }, "32305": { "3339": 2 }, "32307": { "3336": 2 }, "32309": { "3338": 2 }, "32311": { "3337": 2 }, "32325": { "23069": 1, "32339": 1 }, "32339": { "23069": 1 }, "32340": { "23069": 1, "32339": 1 }, "32342": { "23069": 1, "32339": 1 }, "32344": { "23069": 1, "32339": 1 }, "32357": { "32339": 1 }, "32359": { "32339": 1 }, "32363": { "32339": 1 }, "32377": { "21718": 1 }, "32413": { "3433": 1 }, "32414": { "19921": 1 }, "32416": { "3434": 1 }, "32417": { "3434": 1 }, "32435": { "3319": 5, "3326": 5 }, "32436": { "3319": 1, "32435": 1 }, "32438": { "3319": 1, "32435": 1 }, "32440": { "3319": 1, "32435": 1 }, "32442": { "3319": 1, "32435": 1 }, "32444": { "3319": 5, "32435": 1 }, "32465": { "3436": 1 }, "32772": { "3416": 2 }, "32774": { "3416": 2 }, "32780": { "3416": 4 }, "32782": { "3323": 1 }, "32787": { "3436": 1, "3440": 1, "25863": 2 }, "32788": { "3330": 5, "12095": 1 }, "32790": { "3334": 5, "12096": 1 }, "32797": { "3394": 4 }, "32809": { "3394": 1 }, "32811": { "3340": 1 }, "32840": { "33093": 1 }, "32842": { "33093": 1 }, "32844": { "33093": 1 }, "32846": { "33093": 1 }, "32848": { "33093": 1 }, "32872": { "33093": 1 }, "32874": { "33091": 1 }, "32876": { "33092": 1 }, "32878": { "33094": 1 }, "32880": { "32918": 1 }, "32918": { "3327": 1 }, "32919": { "3436": 1 }, "32921": { "3436": 1 }, "32923": { "3318": 1, "3436": 1 }, "32925": { "3318": 1, "3436": 1 }, "32927": { "3437": 3 }, "32929": { "3437": 3 }, "32931": { "3437": 3 }, "32933": { "3437": 3 }, "32935": { "23606": 1 }, "32937": { "23606": 1 }, "32939": { "23606": 1 }, "32941": { "23606": 1 }, "32943": { "12305": 3 }, "32945": { "12305": 3 }, "32947": { "12305": 3 }, "32949": { "12305": 3 }, "32951": { "24613": 1 }, "32953": { "24613": 1 }, "32955": { "24613": 1 }, "32957": { "24613": 1 }, "32983": { "3330": 1 }, "32985": { "3328": 1 }, "32987": { "3331": 1 }, "32989": { "3329": 1 }, "32999": { "3426": 4 }, "33000": { "3426": 4 }, "33001": { "3426": 4 }, "33002": { "3426": 4 }, "33068": { "9955": 5 }, "33076": { "3392": 1, "3393": 1 }, "33078": { "3392": 3 }, "33079": { "3327": 1 }, "33081": { "3327": 1 }, "33083": { "3327": 1 }, "33087": { "3402": 1 }, "33091": { "3331": 3 }, "33092": { "3330": 3 }, "33093": { "3328": 3 }, "33094": { "3329": 3 }, "33095": { "3327": 3, "3335": 3 }, "33096": { "3327": 3, "3334": 3 }, "33097": { "3327": 3, "3332": 3 }, "33098": { "3327": 3, "3333": 3 }, "33099": { "33094": 1 }, "33101": { "3392": 2, "3393": 1 }, "33103": { "3392": 3, "3393": 1 }, "33111": { "3402": 1 }, "33147": { "13278": 1 }, "33151": { "33097": 2 }, "33153": { "33096": 2 }, "33155": { "33095": 2 }, "33157": { "33098": 2 }, "33176": { "25811": 2 }, "33178": { "25810": 2 }, "33180": { "25739": 2 }, "33186": { "13278": 1 }, "33187": { "21718": 1 }, "33188": { "21718": 1 }, "33190": { "3331": 1 }, "33197": { "25811": 5 }, "33199": { "25810": 5 }, "33201": { "25739": 5 }, "33233": { "13278": 1 }, "33234": { "13278": 1 }, "33235": { "21718": 1 }, "33236": { "21718": 1 }, "33237": { "13278": 1 }, "33238": { "13278": 1 }, "33239": { "13278": 1 }, "33240": { "13278": 1 }, "33241": { "21718": 1 }, "33242": { "21718": 1 }, "33243": { "21718": 1 }, "33244": { "21718": 1 }, "33245": { "13278": 1 }, "33246": { "13278": 1 }, "33247": { "13278": 1 }, "33248": { "13278": 1 }, "33249": { "21718": 1 }, "33251": { "21718": 1 }, "33252": { "21718": 1 }, "33253": { "21718": 1 }, "33254": { "13278": 1 }, "33255": { "13278": 1 }, "33256": { "13278": 1 }, "33257": { "13278": 1 }, "33258": { "21718": 1 }, "33259": { "21718": 1 }, "33260": { "21718": 1 }, "33261": { "21718": 1 }, "33262": { "13278": 1 }, "33263": { "13278": 1 }, "33264": { "13278": 1 }, "33265": { "13278": 1 }, "33266": { "21718": 1 }, "33267": { "21718": 1 }, "33268": { "21718": 1 }, "33269": { "21718": 1 }, "33270": { "3412": 3 }, "33272": { "3412": 5 }, "33375": { "9955": 5, "13278": 1, "21718": 1 }, "33393": { "3411": 2 }, "33394": { "3411": 2 }, "33395": { "3332": 5, "3333": 5, "22761": 1 }, "33397": { "3328": 5, "3329": 5, "12093": 1 }, "33399": { "24242": 1 }, "33400": { "3424": 5, "11207": 5 }, "33403": { "3352": 5, "3411": 5, "11569": 5 }, "33404": { "3411": 5, "11569": 5, "11572": 5 }, "33405": { "3351": 5, "3411": 5, "11572": 5 }, "33406": { "3351": 5, "3352": 5, "3411": 5 }, "33407": { "24242": 5 }, "33440": { "3319": 1, "3324": 1 }, "33441": { "3319": 1, "3324": 1 }, "33442": { "3319": 1, "3324": 1 }, "33446": { "3319": 1, "3324": 1 }, "33448": { "3319": 1, "3324": 1 }, "33450": { "3319": 3, "20211": 1 }, "33452": { "3319": 1, "3324": 1 }, "33453": { "3319": 1, "3324": 1 }, "33454": { "3319": 1, "3324": 1 }, "33455": { "3319": 1, "3324": 1 }, "33456": { "3319": 1, "3324": 1 }, "33457": { "3319": 1, "3324": 1 }, "33458": { "3319": 1, "3324": 1 }, "33459": { "3319": 1, "3324": 1 }, "33461": { "3319": 1, "3324": 1 }, "33462": { "3319": 1, "3324": 1 }, "33463": { "3319": 1, "3324": 1 }, "33464": { "3319": 1, "3324": 1 }, "33465": { "3319": 1, "3324": 1 }, "33466": { "3319": 1, "3324": 1 }, "33467": { "3443": 4 }, "33468": { "3328": 3, "3331": 3 }, "33470": { "3332": 2, "3335": 2 }, "33472": { "3336": 1, "3339": 1 }, "33476": { "11584": 3 }, "33477": { "11584": 2 }, "33486": { "9955": 5 }, "33512": { "9955": 5 }, "33513": { "3327": 1 }, "33516": { "3411": 2 }, "33525": { "3411": 2 }, "33526": { "3411": 3 }, "33527": { "3411": 4 }, "33528": { "3411": 3 }, "33529": { "3411": 5 }, "33530": { "21718": 1 }, "33531": { "21718": 1 }, "33532": { "21718": 1 }, "33533": { "21718": 1 }, "33534": { "21718": 1 }, "33553": { "3332": 2, "3335": 2 }, "33555": { "3411": 2 }, "33557": { "3411": 2 }, "33559": { "3411": 3 }, "33561": { "3411": 4 }, "33563": { "3411": 3 }, "33565": { "3411": 5 }, "33581": { "11584": 2 }, "33583": { "11584": 2 }, "33585": { "11584": 2 }, "33587": { "11584": 3 }, "33589": { "11584": 3 }, "33591": { "11584": 1 }, "33595": { "11584": 2 }, "33608": { "11584": 2 }, "33610": { "11584": 2 }, "33623": { "3339": 1 }, "33625": { "3339": 1 }, "33627": { "3338": 1 }, "33629": { "3338": 1 }, "33631": { "3337": 1 }, "33633": { "3337": 1 }, "33635": { "3336": 1 }, "33637": { "3336": 1 }, "33639": { "3335": 1 }, "33641": { "3335": 1 }, "33643": { "3334": 1 }, "33645": { "3334": 1 }, "33647": { "3333": 1 }, "33649": { "3333": 1 }, "33651": { "3332": 1 }, "33653": { "3332": 1 }, "33655": { "3331": 1 }, "33657": { "3331": 1 }, "33659": { "3330": 1 }, "33661": { "3330": 1 }, "33663": { "3329": 1 }, "33665": { "3329": 1 }, "33667": { "3328": 1 }, "33669": { "3328": 1 }, "33671": { "3436": 5, "3439": 3, "27902": 3 }, "33673": { "3328": 5, "3330": 5, "12092": 1 }, "33675": { "3332": 5, "3334": 5, "22761": 1 }, "33677": { "3328": 2 }, "33681": { "3436": 5, "3441": 1 }, "33683": { "17940": 5, "22551": 1 }, "33685": { "29637": 1 }, "33687": { "3456": 1, "20533": 2, "28374": 1 }, "33689": { "3340": 1 }, "33691": { "3342": 1 }, "33693": { "3341": 1 }, "33695": { "3343": 1 }, "33697": { "32918": 5, "33856": 1 }, "33699": { "3436": 3 }, "33704": { "3436": 5, "3439": 2, "27902": 3 }, "33706": { "3436": 5, "3439": 1, "27902": 3 }, "33708": { "3436": 5, "3439": 5, "27902": 4 }, "33710": { "3436": 5, "3439": 5, "27902": 4 }, "33712": { "3436": 5, "3439": 5, "27902": 4 }, "33762": { "9955": 5 }, "33807": { "3411": 2 }, "33808": { "3411": 2 }, "33816": { "3328": 3, "3330": 3 }, "33818": { "3332": 2, "3334": 2 }, "33820": { "3336": 1, "3338": 1 }, "33822": { "23606": 1 }, "33824": { "23606": 4 }, "33826": { "23606": 1 }, "33828": { "23606": 1 }, "33830": { "23606": 1 }, "33832": { "23606": 1 }, "33834": { "23606": 1 }, "33836": { "23606": 1 }, "33838": { "23606": 1 }, "33840": { "23606": 1 }, "33842": { "3318": 1, "3436": 1 }, "33844": { "3318": 1, "3436": 1 }, "33846": { "3318": 1, "3436": 1 }, "33848": { "3318": 1, "3436": 1 }, "33850": { "12305": 3 }, "33852": { "12305": 3 }, "33856": { "3327": 3, "3380": 5, "3432": 5 }, "33867": { "11584": 1 }, "33869": { "33097": 1 }, "33871": { "33098": 1 }, "33873": { "33096": 1 }, "33875": { "33095": 1 }, "33877": { "33093": 1 }, "33879": { "33091": 1 }, "33881": { "33092": 1 }, "33883": { "33094": 1 }, "33915": { "4385": 1 }, "33917": { "3411": 2 }, "33918": { "3411": 2 }, "33919": { "3411": 3 }, "33920": { "3411": 4 }, "33921": { "3411": 3 }, "33922": { "3411": 5 }, "33923": { "3411": 2 }, "33924": { "3411": 2 }, "33925": { "3411": 3 }, "33926": { "3411": 4 }, "33927": { "3411": 3 }, "33928": { "3411": 5 }, "33929": { "3411": 2 }, "33930": { "3411": 2 }, "33931": { "3411": 3 }, "33932": { "3411": 4 }, "33933": { "3411": 3 }, "33934": { "3411": 5 }, "33935": { "3411": 2 }, "33936": { "3411": 2 }, "33937": { "3411": 3 }, "33938": { "3411": 4 }, "33939": { "3411": 3 }, "33940": { "3411": 5 }, "33941": { "3411": 2 }, "33942": { "3411": 2 }, "33943": { "3411": 3 }, "33944": { "3411": 4 }, "33945": { "3411": 3 }, "33946": { "3411": 5 }, "33947": { "3411": 2 }, "33948": { "3411": 2 }, "33949": { "3411": 3 }, "33950": { "3411": 4 }, "33951": { "3411": 3 }, "33952": { "3411": 5 }, "33953": { "3411": 2 }, "33954": { "3411": 2 }, "33955": { "3411": 3 }, "33956": { "3411": 4 }, "33957": { "3411": 3 }, "33958": { "3411": 5 }, "33959": { "3411": 2 }, "33960": { "3411": 2 }, "33961": { "3411": 3 }, "33962": { "3411": 4 }, "33963": { "3411": 3 }, "33964": { "3411": 5 }, "33965": { "3411": 2 }, "33966": { "3411": 2 }, "33967": { "3411": 3 }, "33968": { "3411": 4 }, "33969": { "3411": 3 }, "33970": { "3411": 5 }, "33971": { "3411": 2 }, "33972": { "3411": 2 }, "33973": { "3411": 3 }, "33974": { "3411": 4 }, "33975": { "3411": 3 }, "33976": { "3411": 5 }, "33981": { "3455": 1 }, "33983": { "3455": 1 }, "33985": { "3455": 1 }, "34118": { "3336": 1 }, "34120": { "11584": 3 }, "34122": { "21610": 1 }, "34124": { "21610": 1 }, "34126": { "21610": 1 }, "34151": { "3336": 1, "3338": 1 }, "34213": { "3339": 1 }, "34215": { "3339": 1 }, "34217": { "3339": 1 }, "34219": { "3339": 5, "28667": 1 }, "34221": { "3339": 5, "28667": 1 }, "34223": { "3339": 5, "28667": 1 }, "34225": { "3338": 1 }, "34227": { "3338": 1 }, "34229": { "3338": 1 }, "34231": { "3338": 5, "28667": 1 }, "34233": { "3338": 5, "28667": 1 }, "34235": { "3338": 5, "28667": 1 }, "34237": { "3336": 1 }, "34239": { "3336": 1 }, "34241": { "3336": 5, "28667": 1 }, "34243": { "3336": 5, "28667": 1 }, "34245": { "3336": 5, "28667": 1 }, "34247": { "3337": 1 }, "34249": { "3337": 1 }, "34251": { "3337": 1 }, "34253": { "3337": 5, "28667": 1 }, "34255": { "3337": 5, "28667": 1 }, "34257": { "3337": 5, "28667": 1 }, "34260": { "3412": 3 }, "34264": { "28073": 4 }, "34271": { "3300": 1, "3303": 1 }, "34272": { "3300": 1, "3303": 5, "12213": 1 }, "34274": { "3300": 3, "3306": 5, "12214": 1 }, "34276": { "3300": 5, "3309": 5, "12215": 1 }, "34278": { "3300": 1, "3301": 5, "12210": 1 }, "34280": { "3300": 3, "3304": 5, "12211": 1 }, "34282": { "3300": 5, "3307": 5, "12212": 1 }, "34284": { "3300": 2, "3302": 5, "11084": 1 }, "34286": { "3300": 3, "3305": 5, "12208": 1 }, "34288": { "3300": 5, "3308": 5, "12209": 1 }, "34290": { "3319": 2, "20209": 1 }, "34292": { "3319": 4, "25718": 1 }, "34294": { "3319": 4, "20213": 1 }, "34299": { "13278": 1 }, "34300": { "13278": 1 }, "34301": { "21718": 1 }, "34305": { "21718": 1 }, "34315": { "21718": 1 }, "34317": { "34390": 1 }, "34327": { "3184": 3, "20342": 5 }, "34328": { "34327": 1 }, "34375": { "21718": 1 }, "34378": { "13278": 1 }, "34384": { "21718": 1 }, "34385": { "13278": 1 }, "34390": { "33091": 5 }, "34403": { "21718": 1 }, "34406": { "21718": 1 }, "34438": { "21718": 1 }, "34441": { "3336": 1 }, "34443": { "3328": 1 }, "34445": { "3332": 1 }, "34447": { "21718": 1 }, "34453": { "21718": 1 }, "34457": { "3339": 1 }, "34459": { "3339": 1 }, "34461": { "3336": 1, "3337": 1 }, "34463": { "3336": 1, "3338": 1 }, "34465": { "3336": 1 }, "34467": { "3336": 1 }, "34469": { "3338": 1 }, "34471": { "3339": 1 }, "34473": { "33096": 1 }, "34475": { "3332": 2, "3334": 2 }, "34477": { "3334": 5, "16591": 1 }, "34479": { "3332": 5, "16591": 1 }, "34481": { "3394": 1 }, "34483": { "3394": 1 }, "34485": { "3394": 1 }, "34487": { "3394": 1 }, "34489": { "3394": 1 }, "34496": { "3327": 1 }, "34503": { "21718": 1 }, "34504": { "21718": 1 }, "34505": { "21718": 1 }, "34506": { "21718": 1 }, "34507": { "21718": 1 }, "34508": { "21718": 1 }, "34509": { "21718": 1 }, "34510": { "21718": 1 }, "34511": { "21718": 1 }, "34512": { "21718": 1 }, "34513": { "21718": 1 }, "34514": { "21718": 1 }, "34515": { "21718": 1 }, "34516": { "21718": 1 }, "34517": { "21718": 1 }, "34518": { "21718": 1 }, "34519": { "21718": 1 }, "34520": { "21718": 1 }, "34521": { "21718": 1 }, "34522": { "21718": 1 }, "34523": { "21718": 1 }, "34524": { "21718": 1 }, "34525": { "21718": 1 }, "34526": { "21718": 1 }, "34527": { "21718": 1 }, "34528": { "21718": 1 }, "34529": { "21718": 1 }, "34530": { "21718": 1 }, "34531": { "21718": 1 }, "34532": { "21718": 1 }, "34533": { "33094": 5 }, "34562": { "34533": 1 }, "34572": { "21718": 1 }, "34590": { "3327": 1 }, "34593": { "24242": 2 }, "34595": { "24242": 4 }, "34826": { "9955": 1, "24242": 2 }, "34828": { "35680": 1 }, "35656": { "3450": 1 }, "35657": { "3450": 1 }, "35658": { "3454": 1 }, "35659": { "3454": 1 }, "35660": { "3454": 1 }, "35661": { "3454": 1 }, "35662": { "3454": 1 }, "35680": { "33092": 5 }, "35683": { "35685": 1 }, "35685": { "33093": 5 }, "35770": { "3318": 1 }, "35771": { "3318": 4 }, "35774": { "3318": 1 }, "35779": { "3330": 5, "3331": 5, "12092": 1 }, "35781": { "3334": 5, "3335": 5, "28609": 1 }, "35788": { "12441": 1 }, "35789": { "12441": 1 }, "35790": { "12441": 4 }, "35927": { "37798": 1 }, "35929": { "37799": 1 }, "35935": { "37797": 1 }, "35936": { "37797": 1 }, "35937": { "37797": 1 }, "35938": { "37796": 1 }, "35939": { "37799": 1 }, "35951": { "37798": 1 }, "35952": { "37798": 1 }, "35953": { "37798": 1 }, "35954": { "37798": 1 }, "35955": { "37798": 1 }, "35957": { "37798": 1 }, "35958": { "37798": 1 }, "35966": { "37798": 1 }, "35967": { "37798": 1 }, "36908": { "3405": 1 }, "36909": { "3405": 1 }, "36910": { "3405": 1 }, "36911": { "3405": 1 }, "36912": { "3405": 1 }, "37135": { "32918": 5, "33856": 1 }, "37136": { "9955": 5 }, "37146": { "26252": 1 }, "37147": { "26252": 1 }, "37148": { "26252": 1 }, "37149": { "26252": 1 }, "37150": { "26252": 1 }, "37151": { "26252": 1 }, "37152": { "26252": 1 }, "37153": { "26252": 1 }, "37154": { "26252": 1 }, "37155": { "26252": 1 }, "37156": { "26252": 1 }, "37157": { "26252": 1 }, "37158": { "26252": 1 }, "37159": { "26252": 1 }, "37160": { "26252": 1 }, "37161": { "26252": 1 }, "37162": { "26252": 1 }, "37163": { "26252": 1 }, "37164": { "26252": 1 }, "37165": { "26252": 1 }, "37166": { "26252": 1 }, "37167": { "26252": 1 }, "37168": { "26252": 1 }, "37169": { "26252": 1 }, "37170": { "26252": 1 }, "37171": { "26252": 1 }, "37172": { "26252": 1 }, "37173": { "26252": 1 }, "37174": { "26252": 1 }, "37175": { "26252": 1 }, "37178": { "26252": 1 }, "37179": { "26252": 1 }, "37180": { "26252": 1 }, "37181": { "26252": 1 }, "37182": { "26252": 1 }, "37183": { "26252": 1 }, "37216": { "26252": 1 }, "37217": { "26252": 1 }, "37218": { "26252": 1 }, "37219": { "26252": 1 }, "37220": { "26252": 1 }, "37221": { "26252": 1 }, "37222": { "26252": 1 }, "37223": { "26252": 1 }, "37228": { "26252": 1 }, "37229": { "26252": 1 }, "37230": { "26252": 1 }, "37231": { "26252": 1 }, "37232": { "26252": 1 }, "37233": { "26252": 1 }, "37234": { "26252": 1 }, "37235": { "26252": 1 }, "37248": { "26252": 1 }, "37249": { "26252": 1 }, "37250": { "26252": 1 }, "37251": { "26252": 1 }, "37254": { "26252": 1 }, "37255": { "26252": 1 }, "37256": { "26252": 1 }, "37257": { "26252": 1 }, "37258": { "26252": 1 }, "37259": { "26252": 1 }, "37260": { "26252": 1 }, "37261": { "26252": 1 }, "37268": { "26252": 1 }, "37269": { "26252": 1 }, "37272": { "26252": 1 }, "37273": { "26252": 1 }, "37274": { "26252": 1 }, "37275": { "26252": 1 }, "37280": { "26252": 1 }, "37281": { "26252": 1 }, "37282": { "26252": 1 }, "37283": { "26252": 1 }, "37284": { "26252": 1 }, "37285": { "26252": 1 }, "37288": { "3319": 5, "3325": 1, "20314": 1 }, "37289": { "3300": 5, "3312": 1, "21667": 1 }, "37290": { "3300": 5, "3312": 1, "20327": 1 }, "37291": { "3300": 5, "3312": 1, "21666": 1 }, "37292": { "3319": 5, "3325": 5, "20213": 1, "20314": 1 }, "37293": { "3319": 5, "3325": 1, "20314": 1 }, "37294": { "3319": 5, "21668": 5, "41409": 1 }, "37295": { "3319": 5, "32435": 5, "41410": 1 }, "37296": { "3300": 5, "3312": 1, "20327": 5, "41407": 1 }, "37297": { "3300": 5, "3312": 1, "20327": 1 }, "37298": { "3300": 5, "20327": 5, "41407": 1 }, "37299": { "3300": 5, "20327": 5, "41408": 1 }, "37300": { "3300": 5, "3312": 1, "21666": 5, "41405": 1 }, "37301": { "3300": 5, "3312": 1, "21666": 1 }, "37302": { "3300": 5, "21666": 5, "41405": 1 }, "37303": { "3300": 5, "21666": 5, "41406": 1 }, "37304": { "3300": 5, "3312": 1, "21667": 5, "41403": 1 }, "37305": { "3300": 5, "3312": 1, "21667": 1 }, "37306": { "3300": 5, "21667": 5, "41403": 1 }, "37307": { "3300": 5, "21667": 5, "41404": 1 }, "37450": { "16281": 1 }, "37451": { "16281": 5 }, "37452": { "16281": 1 }, "37453": { "3331": 2 }, "37454": { "3329": 2 }, "37455": { "3330": 2 }, "37456": { "3328": 2 }, "37457": { "3331": 5, "40328": 1 }, "37458": { "3330": 5, "40328": 1 }, "37459": { "3328": 5, "40328": 1 }, "37460": { "3329": 5, "40328": 1 }, "37479": { "4385": 1 }, "37480": { "33094": 5, "37615": 1 }, "37481": { "33091": 5, "37615": 1 }, "37482": { "33092": 5, "37615": 1 }, "37483": { "33093": 5, "37615": 1 }, "37543": { "3434": 1 }, "37544": { "3434": 1 }, "37545": { "3434": 1 }, "37546": { "3434": 4 }, "37599": { "23069": 1, "40573": 1 }, "37604": { "20533": 1, "24311": 1 }, "37605": { "20533": 1, "24312": 1 }, "37606": { "20533": 1, "24314": 1 }, "37607": { "20533": 1, "24313": 1 }, "37608": { "3435": 5, "11446": 4 }, "37610": { "3435": 5, "11446": 4 }, "37611": { "3435": 5, "11446": 4 }, "37612": { "3435": 5, "11446": 4 }, "37613": { "3435": 5, "11446": 4 }, "37615": { "3327": 5, "3354": 4 }, "37622": { "3423": 1 }, "37623": { "3423": 1 }, "37624": { "3423": 1 }, "37625": { "3423": 2 }, "37626": { "3423": 2 }, "37627": { "3423": 2 }, "37628": { "3423": 3 }, "37629": { "3423": 3 }, "37630": { "3423": 3 }, "37631": { "3423": 3 }, "37796": { "3319": 1, "11584": 1 }, "37797": { "3402": 1, "11584": 1 }, "37798": { "3426": 1, "11584": 1 }, "37799": { "3413": 1, "11584": 1 }, "37805": { "3425": 3 }, "37820": { "3424": 2 }, "37825": { "3424": 2 }, "37963": { "37797": 1 }, "40307": { "24242": 2 }, "40308": { "24242": 2 }, "40309": { "24242": 2 }, "40310": { "24242": 2 }, "40328": { "3327": 3, "3428": 4, "3431": 5 }, "40345": { "23069": 1, "40573": 1 }, "40346": { "23069": 1, "40573": 1 }, "40347": { "23069": 1, "40573": 1 }, "40348": { "3394": 4 }, "40349": { "3394": 4 }, "40350": { "3394": 4 }, "40351": { "3394": 5 }, "40354": { "3425": 1 }, "40355": { "3425": 1 }, "40356": { "3425": 1 }, "40357": { "3425": 4 }, "40358": { "23069": 1, "40572": 1 }, "40359": { "23069": 1, "40572": 1 }, "40360": { "23069": 1, "40572": 1 }, "40361": { "23069": 1, "40572": 1 }, "40362": { "23069": 1, "32339": 1 }, "40363": { "23069": 1, "32339": 1 }, "40364": { "23069": 1, "32339": 1 }, "40365": { "23069": 1, "32339": 1 }, "40535": { "3339": 3, "20533": 4, "21610": 4, "21611": 3, "27906": 1 }, "40536": { "3338": 3, "20533": 4, "21610": 4, "21611": 3, "27906": 1 }, "40537": { "3336": 3, "20533": 4, "21610": 4, "21611": 3, "27906": 1 }, "40538": { "3337": 3, "20533": 4, "21610": 4, "21611": 3, "27906": 1 }, "40552": { "23069": 5, "40572": 4 }, "40553": { "23069": 5, "40572": 4 }, "40554": { "23069": 5, "40572": 4 }, "40555": { "23069": 5, "40572": 4 }, "40556": { "23069": 5, "40572": 4 }, "40557": { "23069": 5, "40572": 4 }, "40558": { "23069": 5, "40572": 4 }, "40559": { "23069": 5, "40572": 4 }, "40560": { "23069": 5, "32339": 4 }, "40561": { "23069": 5, "32339": 4 }, "40562": { "23069": 5, "32339": 4 }, "40563": { "23069": 5, "32339": 4 }, "40564": { "23069": 5, "32339": 4 }, "40565": { "23069": 5, "32339": 4 }, "40566": { "23069": 5, "32339": 4 }, "40567": { "23069": 5, "32339": 4 }, "40568": { "23069": 5, "40573": 4 }, "40569": { "23069": 5, "40573": 4 }, "40570": { "23069": 5, "40573": 4 }, "40571": { "23069": 5, "40573": 4 }, "40572": { "23069": 1 }, "40573": { "23069": 1 }, "40631": { "3347": 1, "24563": 1 }, "40632": { "3347": 1, "24563": 1 }, "40633": { "24562": 1, "24563": 1 }, "40634": { "24562": 1, "24563": 1 }, "40635": { "27911": 1 }, "40636": { "27911": 1 }, "40659": { "3423": 4 }, "40660": { "3423": 4 }, "40661": { "3423": 4 }, "40662": { "3423": 5 }, "40663": { "3423": 4 }, "40664": { "3423": 4 }, "40665": { "3423": 4 }, "40666": { "3423": 4 }, "40667": { "3423": 4 }, "40668": { "3423": 5 }, "40669": { "3423": 4 }, "40670": { "3423": 4 }, "40690": { "3427": 1 }, "40691": { "3427": 1 }, "40692": { "3427": 1 }, "40693": { "3427": 1 }, "40694": { "3427": 1 }, "40696": { "27911": 1 }, "40697": { "27911": 1 }, "40698": { "27911": 1 }, "40699": { "27911": 1 }, "40700": { "27911": 1 }, "40714": { "3394": 1 }, "40715": { "3394": 1 }, "40716": { "3394": 1 }, "40717": { "3394": 4 }, "40718": { "3394": 1 }, "40730": { "3435": 4 }, "40731": { "3435": 4 }, "40732": { "3435": 4 }, "40733": { "3435": 4 }, "40734": { "3435": 5 }, "40736": { "3435": 4 }, "40737": { "3435": 4 }, "40750": { "3435": 4, "3449": 4 }, "40752": { "3435": 4, "3449": 4 }, "40754": { "3435": 4, "3449": 4 }, "40756": { "3435": 4, "3449": 4 }, "40758": { "3435": 5, "3449": 5 }, "40762": { "3435": 4, "3449": 4 }, "40764": { "3435": 4, "3449": 4 }, "41030": { "3386": 2, "3436": 1, "3438": 1, "22541": 1 }, "41031": { "23606": 1 }, "41032": { "23606": 1 }, "41033": { "23606": 1 }, "41034": { "3318": 1, "3436": 1 }, "41038": { "3435": 1 }, "41040": { "3453": 1 }, "41054": { "3453": 1 }, "41055": { "3453": 1 }, "41056": { "3453": 1 }, "41057": { "3453": 4 }, "41058": { "3453": 1 }, "41059": { "3453": 1 }, "41061": { "3435": 1, "3449": 1 }, "41062": { "3435": 1 }, "41063": { "3300": 5, "3312": 1, "20327": 1 }, "41064": { "3300": 5, "3312": 1, "20327": 1 }, "41065": { "3300": 5, "3312": 1, "20327": 1 }, "41066": { "3300": 5, "3312": 1, "20327": 1 }, "41067": { "3300": 5, "3312": 1, "20327": 1 }, "41076": { "3300": 5, "3312": 1, "21666": 1 }, "41077": { "3300": 5, "3312": 1, "21666": 1 }, "41078": { "3300": 5, "3312": 1, "21666": 1 }, "41079": { "3300": 5, "3312": 1, "21666": 1 }, "41080": { "3300": 5, "3312": 1, "21667": 1 }, "41081": { "3300": 5, "3312": 1, "21667": 1 }, "41082": { "3300": 5, "3312": 1, "21667": 1 }, "41083": { "3300": 5, "3312": 1, "21667": 1 }, "41099": { "3300": 5, "20327": 1 }, "41100": { "3300": 5, "20327": 1 }, "41101": { "3300": 5, "20327": 1 }, "41102": { "3300": 5, "20327": 1 }, "41103": { "3300": 5, "20327": 1 }, "41104": { "3300": 5, "20327": 1 }, "41114": { "3300": 5, "20327": 1 }, "41115": { "3300": 5, "20327": 1 }, "41116": { "3300": 5, "20327": 1 }, "41117": { "3300": 5, "20327": 1 }, "41118": { "3300": 5, "20327": 1 }, "41119": { "3300": 5, "20327": 1 }, "41126": { "3300": 5, "21666": 1 }, "41127": { "3300": 5, "21666": 1 }, "41128": { "3300": 5, "21666": 1 }, "41129": { "3300": 5, "21666": 1 }, "41130": { "3300": 5, "21666": 1 }, "41138": { "3300": 5, "21666": 1 }, "41139": { "3300": 5, "21666": 1 }, "41140": { "3300": 5, "21666": 1 }, "41141": { "3300": 5, "21666": 1 }, "41142": { "3300": 5, "21666": 1 }, "41150": { "3300": 5, "21667": 1 }, "41151": { "3300": 5, "21667": 1 }, "41152": { "3300": 5, "21667": 1 }, "41153": { "3300": 5, "21667": 1 }, "41154": { "3300": 5, "21667": 1 }, "41156": { "3300": 5, "21667": 1 }, "41157": { "3300": 5, "21667": 1 }, "41158": { "3300": 5, "21667": 1 }, "41159": { "3300": 5, "21667": 1 }, "41160": { "3300": 5, "21667": 1 }, "41174": { "3319": 5, "32435": 1 }, "41175": { "3319": 5, "32435": 1 }, "41176": { "3319": 5, "32435": 1 }, "41180": { "3319": 5, "21668": 1 }, "41181": { "3319": 5, "21668": 1 }, "41182": { "3319": 5, "21668": 1 }, "41191": { "3428": 1 }, "41192": { "3428": 1 }, "41193": { "3428": 1 }, "41194": { "3428": 1 }, "41195": { "3428": 1 }, "41196": { "3426": 1 }, "41197": { "3426": 1 }, "41198": { "3433": 1 }, "41199": { "3433": 1 }, "41200": { "3394": 1 }, "41201": { "3394": 1 }, "41202": { "3394": 1 }, "41203": { "3394": 1 }, "41204": { "3394": 1 }, "41205": { "3394": 1 }, "41206": { "3394": 1 }, "41207": { "3394": 1 }, "41208": { "3394": 1 }, "41210": { "3394": 1 }, "41211": { "3394": 1 }, "41212": { "3424": 1 }, "41213": { "3424": 1 }, "41214": { "3424": 1 }, "41215": { "3424": 1 }, "41216": { "3424": 1 }, "41217": { "3424": 1 }, "41218": { "3424": 2 }, "41219": { "3424": 2 }, "41220": { "3424": 2 }, "41223": { "3319": 5, "3325": 1, "20314": 1 }, "41224": { "3319": 5, "3325": 1, "20314": 1 }, "41236": { "3450": 1 }, "41237": { "3450": 1 }, "41238": { "3450": 1 }, "41239": { "3450": 4 }, "41240": { "3450": 1 }, "41241": { "3450": 1 }, "41249": { "3454": 1 }, "41250": { "3454": 1 }, "41251": { "3454": 1 }, "41252": { "3454": 1 }, "41253": { "3454": 4 }, "41254": { "3454": 1 }, "41255": { "3454": 1 }, "41270": { "3319": 5, "21668": 5, "41409": 1 }, "41271": { "3319": 5, "21668": 5, "41409": 1 }, "41272": { "3319": 5, "21668": 5, "41409": 1 }, "41273": { "3319": 5, "21668": 5, "41409": 1 }, "41274": { "3319": 5, "21668": 5, "41409": 1 }, "41275": { "3319": 5, "21668": 5, "41409": 1 }, "41276": { "3319": 5, "21668": 5, "41409": 1 }, "41277": { "3319": 5, "21668": 5, "41409": 1 }, "41286": { "3319": 5, "32435": 5, "41410": 1 }, "41287": { "3319": 5, "32435": 5, "41410": 1 }, "41290": { "3319": 5, "32435": 5, "41410": 1 }, "41291": { "3319": 5, "32435": 5, "41410": 1 }, "41294": { "3319": 5, "32435": 5, "41410": 1 }, "41295": { "3319": 5, "32435": 5, "41410": 1 }, "41298": { "3319": 5, "32435": 5, "41410": 1 }, "41299": { "3319": 5, "32435": 5, "41410": 1 }, "41314": { "41403": 1 }, "41316": { "41403": 1 }, "41318": { "41404": 1 }, "41320": { "41404": 1 }, "41322": { "41405": 1 }, "41324": { "41405": 1 }, "41326": { "41406": 1 }, "41328": { "41406": 1 }, "41330": { "41407": 1 }, "41332": { "41407": 1 }, "41334": { "41408": 1 }, "41336": { "41408": 1 }, "41350": { "27911": 1 }, "41403": { "3312": 5, "21667": 5 }, "41404": { "3311": 5, "21667": 5 }, "41405": { "3312": 5, "21666": 5 }, "41406": { "3311": 5, "21666": 5 }, "41407": { "3312": 5, "20327": 5 }, "41408": { "3311": 5, "20327": 5 }, "41409": { "3319": 1, "21668": 5 }, "41410": { "3319": 1, "32435": 5 }, "41411": { "24613": 1 }, "41414": { "24613": 1 }, "41415": { "24613": 4 }, "41417": { "24613": 1 }, "41422": { "26252": 1 }, "41423": { "26252": 1 }, "41424": { "26252": 1 }, "41425": { "26252": 1 }, "41426": { "26252": 1 }, "41427": { "26252": 1 }, "41428": { "26252": 1 }, "41429": { "26252": 1 }, "41439": { "3346": 1, "24563": 1 }, "41440": { "3344": 1, "24563": 1 }, "41441": { "3345": 1, "24563": 1 }, "41442": { "3346": 1, "24563": 1 }, "41443": { "3344": 1, "24563": 1 }, "41444": { "3345": 1, "24563": 1 }, "41456": { "3394": 4 }, "41457": { "3394": 4 }, "41458": { "3394": 4 }, "41459": { "3425": 1 }, "41460": { "3425": 1 }, "41461": { "3425": 1 }, "41462": { "3425": 1 }, "41463": { "24568": 1 }, "41464": { "24568": 1 }, "41465": { "24568": 1 }, "41466": { "24568": 4 }, "41467": { "24568": 1 }, "41468": { "24568": 1 }, "41469": { "24571": 1 }, "41470": { "24571": 1 }, "41471": { "24571": 1 }, "41472": { "24571": 1 }, "41473": { "24571": 1 }, "41474": { "24571": 1 }, "41475": { "27902": 5, "27936": 1 }, "41476": { "16069": 1 }, "41477": { "16069": 2 }, "41478": { "16069": 3 }, "41479": { "24568": 1 }, "41480": { "3422": 1 }, "41481": { "3422": 1 }, "41482": { "3422": 1 }, "41483": { "24571": 1 }, "41484": { "3424": 2 }, "41485": { "3424": 2 }, "41486": { "3424": 4 }, "41487": { "3424": 2 }, "41488": { "3424": 2 }, "41491": { "3417": 1 }, "41492": { "3417": 1 }, "41493": { "3417": 4 }, "41494": { "3417": 1 }, "41495": { "3417": 1 }, "41498": { "21803": 1 }, "41499": { "21803": 1 }, "41500": { "21803": 4 }, "41501": { "21803": 1 }, "41502": { "21803": 1 }, "41503": { "3392": 3, "21803": 1 }, "41504": { "21802": 4 }, "41505": { "21802": 1 }, "41506": { "21802": 1 }, "41507": { "21802": 4 }, "41508": { "21802": 1 }, "41509": { "21802": 1 }, "41510": { "21802": 1 }, "41511": { "3392": 5, "3393": 5, "21803": 1 }, "41512": { "3392": 5, "3393": 5, "21803": 1 }, "41513": { "3392": 5, "3393": 5, "21803": 1 }, "41514": { "3392": 5, "3393": 5, "21803": 4 }, "41515": { "3394": 3, "32797": 1 }, "41516": { "3420": 3, "32797": 1 }, "41525": { "3394": 3, "32797": 4 }, "41526": { "3394": 3, "32797": 1 }, "41527": { "3394": 3, "32797": 1 }, "41528": { "3420": 3, "32797": 4 }, "41529": { "3420": 3, "32797": 1 }, "41530": { "3420": 3, "32797": 1 }, "41531": { "3420": 3, "32797": 1 }, "41533": { "13278": 1, "21718": 1 }, "41534": { "13278": 5, "21718": 5 }, "41537": { "24563": 2 }, "41548": { "28073": 1 }, "41549": { "28073": 1 }, "41550": { "28073": 1 }, "41551": { "28073": 1 }, "41565": { "3423": 1, "24572": 1 }, "41566": { "3423": 1, "24572": 1 }, "42120": { "9955": 5 }, "42121": { "9955": 5 }, "42122": { "9955": 5 }, "42123": { "9955": 5 }, "42124": { "3456": 1, "20531": 1, "20532": 1, "20533": 1 }, "42125": { "20533": 1, "24313": 1, "24314": 1 }, "42126": { "3344": 1, "3345": 1, "20533": 5 }, "42132": { "20533": 1, "24313": 1 }, "42133": { "20533": 1, "24313": 1 }, "42145": { "3411": 2 }, "42146": { "3411": 2 }, "42200": { "3411": 3 }, "42201": { "3411": 4 }, "42202": { "3411": 3 }, "42203": { "3411": 5 }, "42204": { "3411": 2 }, "42205": { "3411": 2 }, "42206": { "3411": 3 }, "42207": { "3411": 3 }, "42208": { "3411": 4 }, "42209": { "3411": 5 }, "42210": { "3411": 2 }, "42211": { "3411": 2 }, "42212": { "3411": 3 }, "42213": { "3411": 3 }, "42214": { "3411": 4 }, "42215": { "3411": 5 }, "42232": { "3402": 1 }, "42233": { "3402": 1 }, "42234": { "3402": 1 }, "42240": { "9955": 5 }, "42241": { "3345": 1, "3347": 1, "20533": 5 }, "42242": { "20533": 1, "24311": 1, "24314": 1 }, "42243": { "3456": 1, "20525": 1, "20532": 1, "20533": 1 }, "42244": { "29637": 1 }, "42245": { "3333": 5, "3335": 5, "12096": 1 }, "42246": { "3329": 5, "3331": 5, "12093": 1 }, "42522": { "44067": 1 }, "42526": { "3348": 1, "20494": 1 }, "42527": { "3348": 1, "20495": 1 }, "42528": { "3348": 1, "22536": 1 }, "42529": { "3348": 1, "3350": 1 }, "42530": { "3348": 1, "3349": 1 }, "42531": { "3402": 1 }, "42541": { "3402": 1 }, "42685": { "3327": 1 }, "42694": { "3348": 1, "3350": 1 }, "42695": { "3348": 1, "3350": 1 }, "42696": { "3348": 1, "3350": 1 }, "42829": { "3348": 1, "22536": 1 }, "42830": { "3348": 1, "22536": 1 }, "42831": { "3348": 1, "22536": 1 }, "42832": { "3348": 1, "20494": 1 }, "42833": { "3348": 1, "20494": 1 }, "42834": { "3348": 1, "20494": 1 }, "42835": { "3348": 1, "20495": 1 }, "42836": { "3348": 1, "20495": 1 }, "42837": { "3348": 1, "20495": 1 }, "42838": { "3348": 1, "3349": 1 }, "42839": { "3348": 1, "3349": 1 }, "42840": { "3348": 1, "3349": 1 }, "42890": { "28585": 5 }, "43551": { "3348": 5, "22536": 5, "22552": 1 }, "43552": { "3348": 5, "11569": 1, "20494": 5 }, "43554": { "3348": 5, "3352": 1, "20495": 5 }, "43555": { "3348": 5, "3350": 5, "3351": 1 }, "43556": { "3348": 5, "3349": 5, "11572": 1 }, "43658": { "43728": 1 }, "43660": { "43728": 1 }, "43662": { "43728": 1 }, "43664": { "43728": 1 }, "43681": { "3436": 1, "16281": 4, "43702": 5, "43703": 1 }, "43694": { "3386": 4, "3436": 1, "3438": 5, "22541": 1 }, "43699": { "3436": 1, "16281": 2, "43702": 1 }, "43700": { "3436": 1, "16281": 4, "43702": 5, "43703": 1 }, "43701": { "3436": 1, "16281": 4, "43702": 5, "43703": 1 }, "43702": { "3436": 1, "16281": 2 }, "43703": { "16281": 4, "43702": 5 }, "43704": { "26252": 1 }, "43705": { "26252": 1 }, "43707": { "26252": 1 }, "43708": { "26252": 1 }, "43709": { "26252": 1 }, "43711": { "26252": 1 }, "43712": { "26252": 1 }, "43713": { "26252": 1 }, "43714": { "26252": 1 }, "43715": { "26252": 1 }, "43716": { "26252": 1 }, "43717": { "26252": 1 }, "43718": { "26252": 1 }, "43719": { "26252": 1 }, "43720": { "26252": 1 }, "43721": { "26252": 1 }, "43722": { "26252": 1 }, "43723": { "26252": 1 }, "43724": { "26252": 1 }, "43725": { "26252": 1 }, "43726": { "26252": 1 }, "43727": { "26252": 1 }, "43728": { "3354": 4, "24764": 1 }, "43729": { "26252": 1 }, "43730": { "26252": 1 }, "43732": { "26252": 1 }, "43733": { "26252": 1 }, "43734": { "26252": 1 }, "43775": { "3351": 5, "3411": 5, "22552": 5 }, "43854": { "26252": 1 }, "43855": { "26252": 1 }, "43856": { "26252": 1 }, "43857": { "26252": 1 }, "43858": { "26252": 1 }, "43859": { "26252": 1 }, "43860": { "26252": 1 }, "43861": { "26252": 1 }, "43862": { "26252": 1 }, "43863": { "26252": 1 }, "43864": { "26252": 1 }, "43865": { "26252": 1 }, "43866": { "26252": 1 }, "43867": { "26252": 1 }, "43868": { "26252": 1 }, "43869": { "26252": 1 }, "43870": { "26252": 1 }, "43871": { "26252": 1 }, "43872": { "26252": 1 }, "43873": { "26252": 1 }, "43874": { "26252": 1 }, "43875": { "26252": 1 }, "43876": { "26252": 1 }, "43877": { "26252": 1 }, "43878": { "26252": 1 }, "43879": { "26252": 1 }, "43880": { "26252": 1 }, "43881": { "26252": 1 }, "43882": { "26252": 1 }, "43883": { "26252": 1 }, "43884": { "26252": 1 }, "43885": { "26252": 1 }, "43886": { "26252": 1 }, "43887": { "26252": 1 }, "43888": { "26252": 1 }, "43889": { "26252": 1 }, "43890": { "26252": 1 }, "43891": { "26252": 1 }, "43892": { "26252": 1 }, "43893": { "26252": 1 }, "43919": { "26252": 1 }, "43920": { "26252": 1 }, "43921": { "26252": 1 }, "44067": { "3420": 5, "24571": 3 }, "44102": { "3323": 1 }, "44111": { "3318": 1 }, "44112": { "3318": 1 }, "44113": { "3318": 1 }, "44114": { "3318": 1 }, "44217": { "3402": 1 }, "44274": { "3436": 4, "3440": 1, "9955": 5, "25863": 2 }, "44278": { "3318": 1, "9955": 1 }, "44279": { "21718": 1 }, "44281": { "9955": 5 }, "44993": { "3328": 1, "3329": 1, "3330": 1, "3331": 1, "12093": 1 }, "44995": { "3332": 1, "3333": 1, "3334": 1, "3335": 1, "22761": 1 }, "44996": { "3336": 1, "3337": 1, "3338": 1, "3339": 1, "28656": 1 }, "45490": { "3386": 1 }, "45491": { "3386": 1 }, "45492": { "3386": 1 }, "45493": { "3386": 1 }, "45494": { "3386": 1 }, "45495": { "3386": 1 }, "45496": { "3386": 1 }, "45497": { "3386": 1 }, "45498": { "3386": 1 }, "45499": { "3386": 1 }, "45500": { "3386": 1 }, "45501": { "3386": 1 }, "45502": { "3386": 1 }, "45503": { "3386": 1 }, "45504": { "3386": 1 }, "45506": { "3386": 1 }, "45510": { "3386": 1 }, "45511": { "3386": 1 }, "45512": { "3386": 1 }, "45513": { "3386": 1 }, "45530": { "3328": 5, "3329": 5, "12093": 1 }, "45531": { "3332": 5, "3333": 5, "22761": 1 }, "45534": { "3332": 1, "3333": 1, "3334": 1, "3335": 1, "47445": 1 }, "45544": { "26252": 1 }, "45546": { "26252": 1 }, "45548": { "26252": 1 }, "45586": { "30532": 1 }, "45587": { "30532": 1 }, "45588": { "30532": 1 }, "45589": { "30544": 1 }, "45590": { "30544": 1 }, "45591": { "30544": 1 }, "45592": { "30540": 1 }, "45593": { "30540": 1 }, "45594": { "30540": 1 }, "45595": { "30545": 1 }, "45596": { "30545": 1 }, "45597": { "30545": 1 }, "45598": { "30537": 1 }, "45599": { "30537": 1 }, "45600": { "30537": 1 }, "45601": { "30549": 1 }, "45602": { "30549": 1 }, "45603": { "30549": 1 }, "45604": { "30550": 1 }, "45605": { "30550": 1 }, "45606": { "30550": 1 }, "45607": { "30551": 1 }, "45608": { "30551": 1 }, "45609": { "30551": 1 }, "45610": { "30538": 1 }, "45611": { "30538": 1 }, "45612": { "30538": 1 }, "45613": { "30552": 1 }, "45614": { "30552": 1 }, "45615": { "30552": 1 }, "45616": { "30553": 1 }, "45617": { "30553": 1 }, "45618": { "30553": 1 }, "45619": { "30554": 1 }, "45620": { "30554": 1 }, "45621": { "30554": 1 }, "45622": { "30539": 1 }, "45623": { "30539": 1 }, "45624": { "30539": 1 }, "45625": { "30548": 1 }, "45626": { "30548": 1 }, "45627": { "30548": 1 }, "45628": { "30546": 1 }, "45629": { "30546": 1 }, "45630": { "30546": 1 }, "45631": { "30547": 1 }, "45632": { "30547": 1 }, "45633": { "30547": 1 }, "45634": { "3402": 1 }, "45640": { "26252": 1 }, "45641": { "26252": 1 }, "45645": { "20533": 1, "24312": 1, "24313": 1 }, "45647": { "3456": 1, "20530": 1, "20531": 1, "20533": 1 }, "45649": { "3344": 1, "3346": 1, "20533": 5 }, "45669": { "23069": 1, "40572": 1 }, "45671": { "23069": 1, "40572": 1 }, "45673": { "23069": 1, "32339": 1 }, "45675": { "23069": 1, "32339": 1 }, "45748": { "45746": 3 }, "45749": { "45748": 5 }, "45750": { "45746": 4 }, "46007": { "3402": 1 }, "46008": { "3402": 1 }, "46009": { "3402": 1 }, "46010": { "3420": 4 }, "46012": { "3394": 5 }, "46152": { "3389": 5, "3409": 4 }, "46153": { "3389": 5, "3409": 4 }, "46154": { "3389": 5, "3409": 4 }, "46155": { "3389": 5, "3409": 4 }, "46156": { "3389": 5, "3409": 4 }, "46270": { "3318": 1 }, "46280": { "3386": 1 }, "46281": { "3386": 1 }, "46282": { "3386": 1 }, "46283": { "3386": 1 }, "46284": { "3386": 1 }, "46285": { "3386": 1 }, "46286": { "3386": 1 }, "46287": { "3386": 1 }, "46288": { "3386": 1 }, "46289": { "3386": 1 }, "46290": { "3386": 1 }, "46291": { "3386": 1 }, "46292": { "3386": 1 }, "46293": { "3386": 1 }, "46294": { "3386": 1 }, "46295": { "3386": 1 }, "46296": { "3386": 1 }, "46297": { "3386": 1 }, "46298": { "3386": 1 }, "46299": { "3386": 1 }, "46300": { "3386": 1 }, "46301": { "3386": 1 }, "46302": { "3386": 1 }, "46303": { "3386": 1 }, "46304": { "3386": 1 }, "46305": { "3386": 1 }, "46306": { "3386": 1 }, "46307": { "3386": 1 }, "46308": { "3386": 1 }, "46309": { "3386": 1 }, "46310": { "3386": 1 }, "46311": { "3386": 1 }, "46312": { "3386": 1 }, "46313": { "3386": 1 }, "46314": { "3386": 1 }, "46315": { "3386": 1 }, "46316": { "3386": 1 }, "46317": { "3386": 1 }, "46318": { "3386": 1 }, "46319": { "3386": 1 }, "46323": { "26252": 1 }, "46324": { "26252": 1 }, "46325": { "26252": 1 }, "46326": { "26252": 1 }, "46327": { "26252": 1 }, "46328": { "26252": 1 }, "46355": { "3386": 1, "46152": 3 }, "46356": { "3386": 1, "46152": 4 }, "46365": { "3386": 1, "46153": 3 }, "46366": { "3386": 1, "46153": 4 }, "46367": { "3386": 1, "46154": 3 }, "46368": { "3386": 1, "46154": 4 }, "46369": { "3386": 1, "46155": 3 }, "46370": { "3386": 1, "46155": 4 }, "46371": { "3386": 1, "46156": 3 }, "46372": { "3386": 1, "46156": 4 }, "46484": { "26252": 1 }, "46485": { "26252": 1 }, "46486": { "26252": 1 }, "46487": { "26252": 1 }, "46488": { "26252": 1 }, "46489": { "26252": 1 }, "46490": { "26252": 1 }, "46491": { "26252": 1 }, "46492": { "26252": 1 }, "46493": { "26252": 1 }, "46494": { "26252": 1 }, "46495": { "26252": 1 }, "46496": { "26252": 1 }, "46497": { "26252": 1 }, "46633": { "26252": 1 }, "46634": { "26252": 1 }, "46635": { "26252": 1 }, "46636": { "26252": 1 }, "46637": { "26252": 1 }, "46638": { "26252": 1 }, "46639": { "26252": 1 }, "46640": { "26252": 1 }, "46641": { "26252": 1 }, "46642": { "26252": 1 }, "46675": { "3386": 1 }, "46676": { "3386": 1 }, "46677": { "3386": 1 }, "46678": { "3386": 1 }, "46679": { "3386": 1 }, "46680": { "3386": 1 }, "46681": { "3386": 1 }, "46682": { "3386": 1 }, "46683": { "3386": 1 }, "46684": { "3386": 1 }, "46685": { "3386": 1 }, "46686": { "3386": 1 }, "46687": { "3386": 1 }, "46688": { "3386": 1 }, "46689": { "3386": 1 }, "46690": { "3412": 2, "9955": 5 }, "46691": { "3386": 1 }, "46692": { "3386": 1 }, "46693": { "3386": 1 }, "46694": { "3386": 1 }, "46695": { "3386": 1 }, "46696": { "3386": 1 }, "46697": { "3386": 1 }, "46698": { "3386": 1 }, "46699": { "3386": 1 }, "46700": { "3386": 1 }, "46701": { "3386": 1 }, "46702": { "3386": 1 }, "46703": { "3386": 1 }, "46704": { "3386": 1 }, "46705": { "3386": 1 }, "47016": { "3402": 1 }, "47028": { "3411": 5 }, "47254": { "3394": 1 }, "47255": { "3394": 1 }, "47256": { "3394": 1 }, "47257": { "3394": 5 }, "47258": { "3394": 1 }, "47261": { "3411": 1 }, "47262": { "3411": 1 }, "47263": { "3411": 1 }, "47265": { "3402": 1 }, "47266": { "3402": 1 }, "47267": { "3402": 1 }, "47269": { "47867": 1 }, "47270": { "47868": 1 }, "47271": { "47869": 1 }, "47272": { "3300": 1, "47870": 1 }, "47273": { "3300": 3, "47871": 1 }, "47274": { "3300": 5, "47872": 1 }, "47395": { "3402": 1 }, "47396": { "3402": 1 }, "47397": { "3402": 1 }, "47408": { "3454": 4 }, "47445": { "3327": 5, "3430": 1, "24764": 1 }, "47447": { "3318": 2, "3436": 2 }, "47448": { "3318": 5, "3436": 5 }, "47457": { "13278": 1 }, "47466": { "3327": 1 }, "47481": { "3402": 1 }, "47702": { "3435": 4 }, "47705": { "3402": 1 }, "47706": { "3402": 1 }, "47707": { "3402": 1 }, "47708": { "3402": 1 }, "47727": { "3337": 5, "28667": 1 }, "47728": { "3337": 5, "28667": 1 }, "47732": { "3435": 2, "3449": 1 }, "47736": { "3435": 2 }, "47740": { "3454": 3 }, "47745": { "3454": 4 }, "47749": { "3450": 4 }, "47753": { "3450": 4 }, "47757": { "3450": 4 }, "47769": { "3392": 3, "3393": 3 }, "47773": { "3392": 4, "3393": 4 }, "47777": { "3392": 5, "3393": 4 }, "47781": { "3416": 3 }, "47785": { "3416": 3 }, "47789": { "3416": 4 }, "47793": { "3416": 5 }, "47800": { "3425": 3 }, "47804": { "3425": 4 }, "47808": { "3425": 4 }, "47812": { "3394": 4 }, "47817": { "3394": 5 }, "47820": { "3394": 5 }, "47824": { "3423": 3 }, "47828": { "3423": 4 }, "47832": { "3423": 5 }, "47836": { "3416": 4 }, "47838": { "3416": 4 }, "47840": { "3416": 5 }, "47842": { "3392": 3, "3393": 4 }, "47844": { "3392": 4, "3393": 4 }, "47846": { "3392": 5, "3393": 4 }, "47867": { "3327": 1 }, "47868": { "3327": 4, "49742": 3 }, "47869": { "3327": 5, "49743": 3 }, "47870": { "3300": 1 }, "47871": { "3300": 3, "47870": 3 }, "47872": { "3300": 5, "47871": 3 }, "47873": { "3312": 3, "47870": 5 }, "47874": { "3312": 4, "47871": 5 }, "47875": { "3312": 5, "47872": 5 }, "47881": { "26252": 1 }, "47882": { "26252": 1 }, "47883": { "26252": 1 }, "47884": { "26252": 1 }, "47908": { "3318": 1 }, "47909": { "3318": 1 }, "47911": { "3318": 4 }, "47912": { "3300": 1, "47870": 1 }, "47913": { "3300": 1, "47870": 1 }, "47914": { "3300": 1, "47870": 5, "47873": 1 }, "47915": { "3300": 1, "47870": 1 }, "47916": { "3300": 3, "47871": 1 }, "47917": { "3300": 3, "47871": 1 }, "47918": { "3300": 3, "47871": 5, "47874": 1 }, "47919": { "3300": 3, "47871": 1 }, "47920": { "3300": 5, "47872": 1 }, "47921": { "3300": 5, "47872": 1 }, "47922": { "3300": 5, "47872": 5, "47875": 1 }, "47923": { "3300": 5, "47872": 1 }, "47926": { "47873": 1 }, "47927": { "47873": 1 }, "47930": { "47874": 1 }, "47931": { "47874": 1 }, "47934": { "47875": 1 }, "47935": { "47875": 1 }, "47979": { "26252": 1 }, "47980": { "26252": 1 }, "47981": { "26252": 1 }, "47982": { "26252": 1 }, "47983": { "26252": 1 }, "47984": { "26252": 1 }, "47985": { "26252": 1 }, "47986": { "26252": 1 }, "47987": { "26252": 1 }, "47988": { "26252": 1 }, "47989": { "26252": 1 }, "47990": { "26252": 1 }, "47991": { "26252": 1 }, "47992": { "26252": 1 }, "47993": { "26252": 1 }, "47994": { "26252": 1 }, "47995": { "26252": 1 }, "47996": { "26252": 1 }, "47997": { "26252": 1 }, "47998": { "26252": 1 }, "47999": { "26252": 1 }, "48000": { "26252": 1 }, "48001": { "26252": 1 }, "48002": { "26252": 1 }, "48003": { "26252": 1 }, "48004": { "26252": 1 }, "48005": { "26252": 1 }, "48006": { "26252": 1 }, "48007": { "26252": 1 }, "48008": { "26252": 1 }, "48009": { "26252": 1 }, "48010": { "26252": 1 }, "48011": { "26252": 1 }, "48012": { "26252": 1 }, "48013": { "26252": 1 }, "48014": { "26252": 1 }, "48015": { "26252": 1 }, "48016": { "26252": 1 }, "48017": { "26252": 1 }, "48018": { "26252": 1 }, "48019": { "26252": 1 }, "48020": { "26252": 1 }, "48021": { "26252": 1 }, "48022": { "26252": 1 }, "48023": { "26252": 1 }, "48024": { "26252": 1 }, "48025": { "26252": 1 }, "48026": { "26252": 1 }, "48027": { "26252": 1 }, "48028": { "26252": 1 }, "48029": { "26252": 1 }, "48030": { "26252": 1 }, "48031": { "26252": 1 }, "48032": { "26252": 1 }, "48033": { "26252": 1 }, "48034": { "26252": 1 }, "48035": { "26252": 1 }, "48036": { "26252": 1 }, "48037": { "26252": 1 }, "48038": { "26252": 1 }, "48039": { "26252": 1 }, "48040": { "26252": 1 }, "48041": { "26252": 1 }, "48042": { "26252": 1 }, "48043": { "26252": 1 }, "48044": { "26252": 1 }, "48045": { "26252": 1 }, "48046": { "26252": 1 }, "48047": { "26252": 1 }, "48048": { "26252": 1 }, "48049": { "26252": 1 }, "48050": { "26252": 1 }, "48051": { "26252": 1 }, "48052": { "26252": 1 }, "48053": { "26252": 1 }, "48054": { "26252": 1 }, "48055": { "26252": 1 }, "48056": { "26252": 1 }, "48057": { "26252": 1 }, "48058": { "26252": 1 }, "48059": { "26252": 1 }, "48060": { "26252": 1 }, "48061": { "26252": 1 }, "48062": { "26252": 1 }, "48063": { "26252": 1 }, "48064": { "26252": 1 }, "48065": { "26252": 1 }, "48066": { "26252": 1 }, "48067": { "26252": 1 }, "48068": { "26252": 1 }, "48069": { "26252": 1 }, "48070": { "26252": 1 }, "48071": { "26252": 1 }, "48072": { "26252": 1 }, "48073": { "26252": 1 }, "48074": { "26252": 1 }, "48075": { "26252": 1 }, "48076": { "26252": 1 }, "48077": { "26252": 1 }, "48078": { "26252": 1 }, "48116": { "3402": 1 }, "48117": { "3402": 1 }, "48118": { "3402": 1 }, "48133": { "21718": 1 }, "48148": { "3411": 3 }, "48149": { "3411": 3 }, "48150": { "3402": 1 }, "48151": { "3402": 1 }, "48152": { "3402": 1 }, "48153": { "3402": 1 }, "48419": { "3423": 2 }, "48423": { "3423": 3 }, "48427": { "3423": 4 }, "48431": { "3424": 2 }, "48435": { "3424": 3 }, "48439": { "3424": 4 }, "48582": { "3402": 1 }, "48599": { "3402": 1 }, "48600": { "3402": 1 }, "48601": { "3402": 1 }, "48602": { "3402": 1 }, "48603": { "3402": 1 }, "48604": { "3402": 1 }, "48605": { "3402": 1 }, "48606": { "3402": 1 }, "48607": { "3402": 1 }, "48608": { "3402": 1 }, "48609": { "3402": 1 }, "48610": { "3402": 1 }, "48611": { "3402": 1 }, "48612": { "3402": 1 }, "48613": { "3402": 1 }, "48614": { "3402": 1 }, "48615": { "3402": 1 }, "48616": { "3402": 1 }, "48635": { "22761": 1, "47868": 5 }, "48636": { "12093": 1, "47867": 5 }, "48743": { "21718": 1 }, "48744": { "3436": 5, "33699": 1 }, "48746": { "3411": 3 }, "48747": { "3411": 3 }, "48780": { "3386": 0 }, "48916": { "3386": 1 }, "49099": { "11446": 4 }, "49538": { "3402": 1 }, "49539": { "3402": 1 }, "49540": { "3402": 1 }, "49541": { "3402": 1 }, "49701": { "3355": 1 }, "49710": { "49742": 1 }, "49711": { "49743": 1 }, "49712": { "47868": 1 }, "49713": { "12096": 1, "47868": 5 }, "49722": { "3318": 4 }, "49726": { "3318": 4 }, "49730": { "3318": 4 }, "49734": { "3318": 4 }, "49738": { "3318": 4 }, "49742": { "47867": 3 }, "49743": { "3327": 4, "47868": 3 }, "49749": { "3355": 1 }, "49753": { "3402": 1 }, "49770": { "16069": 2 }, "49771": { "16069": 2 }, "49772": { "16069": 2 }, "49773": { "16069": 4 }, "49774": { "16069": 2 }, "49788": { "21718": 1 }, "49789": { "3386": 1 }, "49790": { "3318": 1 }, "49791": { "13278": 3, "21718": 3 }, "49792": { "16281": 3, "22578": 3 }, "50007": { "3402": 1 }, "50008": { "3402": 1 }, "50009": { "3402": 1 }, "50010": { "3402": 1 }, "50015": { "3386": 1 }, "50053": { "3411": 1 }, "50066": { "3411": 1 }, "50067": { "3411": 1 }, "52227": { "3394": 4 }, "52230": { "3394": 5 }, "52236": { "3300": 1, "47870": 1 }, "52238": { "3300": 3, "47871": 1 }, "52240": { "3300": 5, "47872": 1 }, "52242": { "3318": 1 }, "52244": { "3318": 1 }, "52250": { "12095": 1, "47867": 5 }, "52252": { "16591": 1, "47868": 5 }, "52254": { "37615": 1, "49742": 5 }, "52264": { "3300": 1, "3303": 1 }, "52265": { "3392": 1, "3393": 1 }, "52266": { "9955": 5 }, "52267": { "3335": 1 }, "52306": { "3386": 1 }, "52307": { "3392": 5, "3402": 5 }, "52308": { "3402": 5, "3403": 4, "3409": 4 }, "52315": { "3386": 1 }, "52316": { "3386": 1 }, "52476": { "3319": 1, "3321": 1 }, "52477": { "3319": 1, "3324": 1 }, "52523": { "3402": 1 }, "52524": { "3402": 1 }, "52674": { "3411": 2 }, "52679": { "3411": 2 }, "52680": { "3411": 3 }, "52681": { "3411": 3 }, "52682": { "3411": 4 }, "52683": { "3411": 5 }, "52694": { "21603": 1 }, "52785": { "3411": 2 }, "52786": { "3411": 2 }, "52787": { "3411": 3 }, "52788": { "3411": 3 }, "52789": { "3411": 4 }, "52790": { "3411": 5 }, "52798": { "3402": 1 }, "52799": { "3402": 1 }, "52800": { "3402": 1 }, "52801": { "3402": 1 }, "52802": { "3402": 1 }, "52803": { "3402": 1 }, "52804": { "3402": 1 }, "52805": { "3402": 1 }, "52806": { "3402": 1 }, "52807": { "3402": 1 }, "52808": { "3402": 1 }, "52809": { "3402": 1 }, "52810": { "3402": 1 }, "52811": { "3402": 1 }, "52812": { "3402": 1 }, "52813": { "3402": 1 }, "52814": { "3402": 1 }, "52907": { "3456": 1, "20533": 1, "52997": 1 }, "52915": { "3300": 5, "52998": 1 }, "52917": { "3411": 2 }, "52918": { "3411": 2 }, "52919": { "3411": 3 }, "52920": { "3411": 4 }, "52921": { "3411": 3 }, "52922": { "3411": 5 }, "52997": { "20533": 3, "22043": 1, "47869": 3 }, "52998": { "3300": 5, "47872": 5 }, "53081": { "21718": 1 }, "53085": { "21718": 1 }, "53287": { "3402": 1 }, "53345": { "3402": 1 }, "53704": { "3411": 2 }, "53705": { "3411": 2 }, "53706": { "3411": 3 }, "53707": { "3411": 4 }, "53708": { "3411": 3 }, "53709": { "3411": 5 }, "53710": { "3411": 2 }, "53711": { "3411": 2 }, "53712": { "3411": 3 }, "53713": { "3411": 4 }, "53714": { "3411": 5 }, "53715": { "3411": 3 }, "53839": { "3411": 5 }, "53853": { "3411": 2 }, "53854": { "3411": 2 }, "53855": { "3411": 3 }, "53856": { "3411": 3 }, "53857": { "3411": 4 }, "53890": { "3411": 2 }, "53891": { "3411": 2 }, "53892": { "3411": 3 }, "53893": { "3411": 3 }, "53894": { "3411": 4 }, "53895": { "3411": 5 }, "53896": { "3411": 2 }, "53897": { "3411": 2 }, "53898": { "3411": 3 }, "53899": { "3411": 3 }, "53900": { "3411": 4 }, "53901": { "3411": 5 }, "53902": { "3411": 2 }, "53903": { "3411": 2 }, "53904": { "3411": 3 }, "53905": { "3411": 3 }, "53906": { "3411": 4 }, "53907": { "3411": 5 }, "54291": { "3420": 1 }, "54292": { "3420": 1 }, "54293": { "3420": 1 }, "54294": { "3420": 1 }, "54295": { "3420": 1 }, "54392": { "3411": 2 }, "54393": { "3411": 2 }, "54394": { "3411": 3 }, "54395": { "3411": 3 }, "54396": { "3411": 4 }, "54397": { "3411": 5 }, "54398": { "3411": 2 }, "54399": { "3411": 2 }, "54400": { "3411": 3 }, "54401": { "3411": 3 }, "54402": { "3411": 4 }, "54403": { "3411": 5 }, "54404": { "3411": 2 }, "54405": { "3411": 2 }, "54406": { "3411": 3 }, "54407": { "3411": 3 }, "54408": { "3411": 4 }, "54409": { "3411": 5 }, "54534": { "3411": 1 }, "54535": { "3411": 2 }, "54536": { "3411": 4 }, "54537": { "3411": 1 }, "54538": { "3411": 2 }, "54539": { "3411": 4 }, "54540": { "3411": 1 }, "54541": { "3411": 2 }, "54542": { "3411": 4 }, "54543": { "3411": 1 }, "54544": { "3411": 1 }, "54545": { "3411": 1 }, "54588": { "3405": 1 }, "54589": { "3405": 1 }, "54590": { "3405": 1 }, "54591": { "3405": 1 }, "54593": { "3405": 1 }, "54594": { "3405": 1 }, "54595": { "3405": 1 }, "54596": { "3405": 1 }, "54598": { "3405": 1 }, "54599": { "3405": 1 }, "54600": { "3405": 1 }, "54601": { "3405": 1 }, "54603": { "3405": 1 }, "54604": { "3405": 1 }, "54605": { "3405": 1 }, "54606": { "3405": 1 }, "54610": { "3405": 1 }, "54611": { "3405": 1 }, "54612": { "3405": 1 }, "54613": { "3405": 1 }, "54615": { "3405": 1 }, "54616": { "3405": 1 }, "54617": { "3405": 1 }, "54618": { "3405": 1 }, "54620": { "3405": 1 }, "54621": { "3405": 1 }, "54622": { "3405": 1 }, "54623": { "3405": 1 }, "54625": { "3405": 1 }, "54626": { "3405": 1 }, "54627": { "3405": 1 }, "54628": { "3405": 1 }, "54651": { "3402": 1 }, "54655": { "3402": 1 }, "54656": { "3402": 1 }, "54657": { "3402": 1 }, "54660": { "3402": 1 }, "54731": { "55031": 1 }, "54732": { "55032": 1 }, "54733": { "54794": 1 }, "54739": { "55033": 1, "55034": 1 }, "54740": { "55033": 1, "55034": 1 }, "54741": { "55033": 1, "55034": 1 }, "54742": { "54827": 1, "55033": 1, "55034": 5 }, "54743": { "55033": 1, "55034": 1 }, "54745": { "55033": 3, "55035": 1 }, "54746": { "55033": 3, "55035": 1 }, "54747": { "55033": 3, "55035": 1 }, "54748": { "54828": 1, "55033": 3, "55035": 5 }, "54749": { "55033": 3, "55035": 1 }, "54750": { "54826": 1, "55033": 5 }, "54751": { "54826": 1, "55033": 5 }, "54752": { "54826": 1, "55033": 5 }, "54753": { "54826": 5, "54829": 1, "55033": 5 }, "54754": { "54826": 1, "55033": 5 }, "54781": { "54827": 1 }, "54782": { "54829": 1 }, "54783": { "54829": 1 }, "54784": { "54827": 1 }, "54785": { "54828": 1 }, "54786": { "54828": 1 }, "54790": { "3327": 1 }, "54793": { "3327": 2, "54790": 3 }, "54794": { "3327": 5, "55032": 3 }, "54812": { "3402": 1 }, "54813": { "3402": 1 }, "54814": { "3402": 1 }, "54815": { "3355": 1 }, "54816": { "3355": 1 }, "54817": { "3355": 1 }, "54824": { "54839": 1 }, "54825": { "54824": 3, "54839": 3 }, "54826": { "55033": 5, "55035": 3 }, "54827": { "54841": 3, "55034": 5 }, "54828": { "54841": 4, "55035": 5 }, "54829": { "54826": 5, "54841": 5 }, "54840": { "55033": 4 }, "54841": { "55033": 2 }, "54973": { "3318": 1 }, "54974": { "3318": 1 }, "54975": { "3318": 4 }, "54976": { "3402": 1 }, "55025": { "21718": 2 }, "55031": { "3327": 1 }, "55032": { "3327": 2, "55031": 3 }, "55034": { "55033": 1 }, "55035": { "55033": 3, "55034": 3 }, "55038": { "3405": 1 }, "55039": { "3405": 1 }, "55040": { "3405": 1 }, "55041": { "3405": 1 }, "55042": { "3405": 1 }, "55043": { "3405": 1 }, "55044": { "3405": 1 }, "55045": { "3405": 1 }, "55046": { "3405": 1 }, "55511": { "55033": 2 }, "55700": { "3402": 1 }, "55747": { "3402": 1 }, "55760": { "3436": 1, "3440": 5, "25863": 4, "57164": 1 }, "55761": { "3436": 1, "3440": 4, "25863": 4 }, "55803": { "3402": 1 }, "55804": { "3402": 1 }, "55805": { "3402": 1 }, "55806": { "3402": 1 }, "55826": { "3402": 1 }, "55859": { "3402": 1 }, "55860": { "3394": 3 }, "55862": { "3394": 3 }, "55927": { "3402": 1 }, "55928": { "3402": 1 }, "55929": { "3402": 1 }, "55942": { "3402": 1 }, "55943": { "3402": 1 }, "55944": { "3402": 1 }, "55945": { "3402": 1 }, "55946": { "3402": 1 }, "55947": { "3402": 1 }, "55977": { "3402": 1 }, "56128": { "3402": 1 }, "56129": { "3402": 1 }, "56130": { "3402": 1 }, "56179": { "3402": 1 }, "56180": { "3402": 1 }, "56181": { "3402": 1 }, "56182": { "3402": 1 }, "56183": { "3402": 1 }, "56184": { "3402": 1 }, "56185": { "3402": 1 }, "56186": { "3402": 1 }, "56187": { "3402": 1 }, "56303": { "3435": 5, "3449": 5 }, "56304": { "3435": 5 }, "56305": { "3450": 4 }, "56306": { "3454": 4 }, "56307": { "21803": 4 }, "56308": { "3392": 3, "21803": 1 }, "56309": { "21802": 4 }, "56310": { "21802": 4 }, "56311": { "3423": 5 }, "56312": { "3423": 5 }, "56313": { "22043": 5 }, "56362": { "11584": 1 }, "56569": { "9955": 1 }, "56619": { "3402": 1 }, "56620": { "3402": 1 }, "56621": { "3402": 1 }, "56625": { "3386": 1 }, "56626": { "3386": 1 }, "56627": { "3386": 1 }, "56628": { "3386": 1 }, "56629": { "3386": 1 }, "56630": { "3386": 1 }, "56631": { "3389": 5, "3409": 4 }, "56632": { "3389": 5, "3409": 4 }, "56633": { "3389": 5, "3409": 4 }, "56640": { "3402": 1 }, "56659": { "3402": 1 }, "56661": { "3402": 1 }, "56662": { "3402": 1 }, "56733": { "3402": 1 }, "56735": { "24606": 3 }, "56748": { "3412": 3 }, "56823": { "3402": 1 }, "56833": { "3402": 1 }, "56834": { "3402": 1 }, "56835": { "3402": 1 }, "56871": { "21718": 1 }, "56950": { "16281": 1 }, "56970": { "3402": 1 }, "56984": { "3402": 1 }, "56985": { "3402": 1 }, "56986": { "3402": 1 }, "56987": { "3402": 1 }, "56988": { "3402": 1 }, "56989": { "3402": 1 }, "56990": { "3402": 1 }, "56991": { "3402": 1 }, "56992": { "3402": 1 }, "56993": { "3402": 1 }, "56994": { "3402": 1 }, "56995": { "3402": 1 }, "57000": { "3402": 1 }, "57001": { "3402": 1 }, "57002": { "3402": 1 }, "57027": { "16281": 1 }, "57028": { "16281": 1 }, "57029": { "21718": 1 }, "57030": { "21718": 1 }, "57035": { "3402": 1 }, "57036": { "3402": 1 }, "57037": { "3402": 1 }, "57110": { "3411": 2 }, "57111": { "3411": 2 }, "57112": { "3411": 3 }, "57113": { "3411": 3 }, "57114": { "3411": 4 }, "57116": { "3411": 5 }, "57117": { "3411": 2 }, "57118": { "3411": 2 }, "57119": { "3411": 3 }, "57120": { "3411": 3 }, "57121": { "3411": 4 }, "57122": { "3411": 5 }, "57123": { "3411": 2 }, "57124": { "3411": 2 }, "57125": { "3411": 3 }, "57126": { "3411": 3 }, "57127": { "3411": 4 }, "57128": { "3411": 5 }, "57164": { "3440": 5, "25863": 4 }, "57201": { "3402": 1 }, "57209": { "3402": 1 }, "57210": { "3402": 1 }, "57211": { "3402": 1 }, "57212": { "3402": 1 }, "57287": { "3402": 1 }, "57288": { "3402": 1 }, "57289": { "3402": 1 }, "57290": { "3402": 1 }, "57291": { "3402": 1 }, "57292": { "3402": 1 }, "57293": { "3402": 1 }, "57294": { "3402": 1 }, "57295": { "3402": 1 }, "57311": { "3402": 1 }, "57312": { "3402": 1 }, "57313": { "3402": 1 }, "57317": { "3348": 5 }, "57318": { "3348": 5, "57317": 1 }, "57319": { "11584": 3 }, "57335": { "21718": 1 }, "57336": { "21718": 1 }, "57423": { "3405": 1 }, "57424": { "3405": 1 }, "57428": { "3402": 1 }, "57430": { "3402": 1 }, "57431": { "3402": 1 }, "57432": { "3402": 1 }, "57433": { "3402": 1 }, "57434": { "3402": 1 }, "57435": { "3402": 1 }, "57436": { "21718": 1 }, "57437": { "21718": 1 }, "57438": { "21718": 1 }, "57439": { "21718": 1 }, "57440": { "21718": 1 }, "57441": { "21718": 1 }, "57560": { "21718": 1 }, "57561": { "21718": 1 }, "57562": { "21718": 1 }, "57563": { "21718": 1 }, "57684": { "21718": 1 }, "57722": { "3402": 1 }, "57723": { "3402": 1 }, "57724": { "3402": 1 }, "57725": { "3402": 1 }, "57726": { "3402": 1 }, "57727": { "3402": 1 }, "57728": { "3402": 1 }, "57745": { "3402": 1 }, "57746": { "3402": 1 }, "57747": { "3402": 1 }, "57763": { "3402": 1 }, "57821": { "3402": 1 }, "57822": { "3402": 1 }, "57823": { "3402": 1 }, "57852": { "21718": 1 }, "58724": { "21718": 1 }, "58725": { "21718": 1 }, "58726": { "21718": 1 }, "58727": { "3402": 1 }, "58745": { "3327": 1 }, "58758": { "3402": 1 }, "58759": { "3402": 1 }, "58760": { "3402": 1 }, "58770": { "3402": 1 }, "58771": { "3402": 1 }, "58772": { "3402": 1 }, "58851": { "3402": 1 }, "58852": { "3402": 1 }, "58853": { "3402": 1 }, "58854": { "3355": 1 }, "58855": { "3355": 1 }, "58856": { "3355": 1 }, "58904": { "11584": 3 }, "58906": { "9955": 5, "11584": 3 }, "58919": { "3455": 4 }, "58945": { "58956": 1 }, "58950": { "58956": 5 }, "58956": { "24625": 1 }, "58966": { "3455": 4 }, "58971": { "3455": 4 }, "58972": { "3455": 5 }, "59177": { "3402": 1 }, "59197": { "3402": 1 }, "59294": { "3402": 1 }, "59295": { "3402": 1 }, "59296": { "3402": 1 }, "59297": { "3402": 1 }, "59298": { "3402": 1 }, "59299": { "3402": 1 }, "59301": { "3402": 1 }, "59302": { "3402": 1 }, "59303": { "3402": 1 }, "59304": { "3355": 1 }, "59305": { "3355": 1 }, "59306": { "3355": 1 }, "59503": { "21718": 1 }, "59504": { "21718": 1 }, "59505": { "21718": 1 }, "59620": { "3402": 1 }, "59630": { "11584": 5, "21603": 5 }, "59748": { "21718": 1 }, "59749": { "21718": 1 }, "59750": { "21718": 1 }, "59756": { "3402": 1 }, "59757": { "3402": 1 }, "59758": { "3402": 1 }, "59759": { "3402": 1 }, "59760": { "3402": 1 }, "59761": { "3402": 1 }, "59762": { "3402": 1 }, "59763": { "3402": 1 }, "59764": { "3402": 1 }, "59765": { "3402": 1 }, "59766": { "3402": 1 }, "59767": { "3402": 1 }, "59768": { "3402": 1 }, "59876": { "3402": 1 }, "59878": { "3402": 1 }, "59879": { "3402": 1 }, "59880": { "3405": 1 }, "59881": { "3405": 1 }, "59882": { "3405": 1 }, "59883": { "3405": 1 }, "59884": { "3405": 1 }, "59885": { "3405": 1 }, "59886": { "3405": 1 }, "59887": { "3405": 1 }, "59888": { "3405": 1 }, "59889": { "3405": 1 }, "59890": { "3405": 1 }, "59891": { "3405": 1 }, "59960": { "3402": 1 }, "59961": { "3402": 1 }, "59962": { "3402": 1 }, "59964": { "3402": 1 }, "60023": { "3402": 1 }, "60068": { "3402": 1 }, "60091": { "3402": 1 }, "60092": { "3402": 1 }, "60093": { "3402": 1 }, "60115": { "21718": 1 }, "60116": { "21718": 1 }, "60172": { "3402": 1 }, "60244": { "11584": 3 }, "60250": { "3402": 1 }, "60251": { "3402": 1 }, "60269": { "3402": 1 }, "60270": { "3402": 1 }, "60271": { "3402": 1 }, "60272": { "3402": 1 }, "60273": { "3402": 1 }, "60276": { "3386": 1, "60377": 3 }, "60279": { "3386": 1, "60377": 3 }, "60280": { "3386": 1, "60377": 3 }, "60281": { "3386": 1, "60377": 4 }, "60283": { "3386": 1, "60377": 4 }, "60284": { "3386": 1, "60377": 4 }, "60285": { "3386": 1, "60378": 3 }, "60286": { "3386": 1, "60378": 3 }, "60287": { "3386": 1, "60378": 3 }, "60288": { "3386": 1, "60378": 4 }, "60289": { "3386": 1, "60378": 4 }, "60290": { "3386": 1, "60378": 4 }, "60291": { "3386": 1, "60379": 3 }, "60292": { "3386": 1, "60379": 3 }, "60293": { "3386": 1, "60379": 3 }, "60294": { "3386": 1, "60379": 4 }, "60295": { "3386": 1, "60379": 4 }, "60296": { "3386": 1, "60379": 4 }, "60297": { "3386": 1, "60380": 3 }, "60298": { "3386": 1, "60380": 3 }, "60299": { "3386": 1, "60380": 3 }, "60300": { "3386": 1, "60380": 4 }, "60301": { "3386": 1, "60380": 4 }, "60302": { "3386": 1, "60380": 4 }, "60303": { "3386": 1, "60381": 3 }, "60304": { "3386": 1, "60381": 3 }, "60305": { "3386": 1, "60381": 3 }, "60306": { "3386": 1, "60381": 4 }, "60307": { "3386": 1, "60381": 4 }, "60308": { "3386": 1, "60381": 4 }, "60309": { "3386": 1, "12189": 3 }, "60310": { "3386": 1, "12189": 3 }, "60311": { "3386": 1, "12189": 4 }, "60312": { "3386": 1, "12189": 4 }, "60313": { "25544": 1 }, "60314": { "25544": 5 }, "60315": { "25544": 5 }, "60377": { "3385": 4, "3402": 3 }, "60378": { "3385": 5, "3402": 3 }, "60379": { "3389": 4, "3409": 3 }, "60380": { "3389": 5, "3409": 4 }, "60381": { "3389": 5, "3409": 4 }, "60389": { "21718": 1 }, "60390": { "21718": 1 }, "60391": { "21718": 1 }, "60392": { "21718": 1 }, "60410": { "21718": 1 }, "60438": { "21718": 1 }, "60448": { "3402": 1 }, "60449": { "3402": 1 }, "60450": { "3402": 1 }, "60478": { "3436": 5, "24241": 5, "60515": 1 }, "60479": { "3436": 5, "33699": 5, "60515": 1 }, "60480": { "3436": 5, "3441": 5, "60515": 1 }, "60481": { "3436": 5, "23594": 5, "60515": 1 }, "60482": { "3318": 4, "3436": 4 }, "60483": { "24613": 4 }, "60485": { "3402": 1 }, "60487": { "3402": 1 }, "60488": { "3402": 1 }, "60515": { "3436": 5, "12484": 1, "12485": 1, "12486": 1, "12487": 1 }, "60683": { "3405": 1 }, "60684": { "3405": 1 }, "60685": { "3405": 1 }, "60686": { "3405": 1 }, "60687": { "3405": 1 }, "60688": { "3405": 1 }, "60689": { "3405": 1 }, "60690": { "3405": 1 }, "60691": { "3405": 1 }, "60692": { "3405": 1 }, "60693": { "3405": 1 }, "60694": { "3405": 1 }, "60695": { "3405": 1 }, "60696": { "3405": 1 }, "60697": { "3405": 1 }, "60698": { "3405": 1 }, "60699": { "3405": 1 }, "60700": { "3405": 1 }, "60701": { "3405": 1 }, "60702": { "3405": 1 }, "60703": { "3405": 1 }, "60704": { "3405": 1 }, "60705": { "3405": 1 }, "60706": { "3405": 1 }, "60710": { "21718": 1 }, "60711": { "21718": 1 }, "60712": { "21718": 1 }, "60713": { "21718": 1 }, "60714": { "3402": 1 }, "60715": { "3402": 1 }, "60716": { "3402": 1 }, "60764": { "3332": 5, "3334": 5, "28609": 1 }, "60765": { "3328": 5, "3330": 5, "28615": 1 }, "60766": { "3436": 5, "12487": 1, "33699": 5 }, "60850": { "13278": 1 }, "60851": { "13278": 1 }, "60852": { "13278": 1 }, "60853": { "13278": 1 }, "60854": { "13278": 1 }, "60855": { "13278": 1 }, "61083": { "3402": 1 }, "61084": { "3402": 1 }, "61085": { "3402": 1 }, "61086": { "3405": 1 }, "61087": { "3405": 1 }, "61090": { "3405": 1 }, "61091": { "3405": 1 }, "61093": { "3405": 1 }, "61096": { "3405": 1 }, "61097": { "3405": 1 }, "61099": { "3405": 1 }, "61101": { "3405": 1 }, "61103": { "3405": 1 }, "61105": { "3405": 1 }, "61107": { "3405": 1 }, "61110": { "3405": 1 }, "61112": { "3405": 1 }, "61114": { "3405": 1 }, "61116": { "3405": 1 }, "61118": { "3405": 1 }, "61119": { "3405": 1 }, "61197": { "3386": 1, "46152": 3 }, "61198": { "3386": 1, "46152": 3 }, "61199": { "3386": 1, "46152": 4 }, "61200": { "3386": 1, "46152": 4 }, "61201": { "3386": 1, "46153": 3 }, "61202": { "3386": 1, "46153": 3 }, "61203": { "3386": 1, "46153": 4 }, "61204": { "3386": 1, "46153": 4 }, "61205": { "3386": 1, "46154": 3 }, "61206": { "3386": 1, "46154": 3 }, "61207": { "3386": 1, "46154": 4 }, "61208": { "3386": 1, "46154": 4 }, "61209": { "3386": 1, "46155": 3 }, "61210": { "3386": 1, "46155": 3 }, "61211": { "3386": 1, "46155": 4 }, "61212": { "3386": 1, "46155": 4 }, "61213": { "3386": 1, "46156": 3 }, "61214": { "3386": 1, "46156": 3 }, "61215": { "3386": 1, "46156": 4 }, "61216": { "3386": 1, "46156": 4 }, "61658": { "13278": 1 }, "61659": { "13278": 1 }, "61666": { "3300": 1, "9955": 1 }, "62235": { "3402": 1 }, "62236": { "3402": 1 }, "62237": { "3402": 1 }, "62450": { "58956": 1 }, "62451": { "28585": 1, "62450": 4 }, "62452": { "62450": 3 }, "62453": { "22552": 3 }, "62454": { "3386": 1 }, "62455": { "3386": 1 }, "62456": { "3386": 1 }, "62457": { "3386": 1 }, "62458": { "3386": 1 }, "62459": { "3386": 1 }, "62460": { "3386": 1 }, "62461": { "3386": 1 }, "62463": { "3386": 1 }, "62464": { "3386": 1 }, "62466": { "3386": 1 }, "62467": { "3386": 1 }, "62468": { "3386": 1 }, "62469": { "3386": 1 }, "62470": { "3386": 1 }, "62471": { "3386": 1 }, "62472": { "3386": 1 }, "62473": { "3386": 1 }, "62474": { "3386": 1 }, "62475": { "3386": 1 }, "62476": { "3386": 1 }, "62477": { "3386": 1 }, "62478": { "3386": 1 }, "62479": { "3386": 1 }, "62480": { "3386": 1 }, "62481": { "3386": 1 }, "62482": { "3386": 1 }, "62483": { "3386": 1 }, "62484": { "3386": 1 }, "62485": { "3386": 1 }, "62486": { "3386": 1 }, "62487": { "3386": 1 }, "62488": { "3386": 1 }, "62489": { "3386": 1 }, "62490": { "3386": 1 }, "62491": { "3386": 1 }, "62492": { "3386": 1 }, "62493": { "3386": 1 }, "62494": { "3386": 1 }, "62495": { "3386": 1 }, "62496": { "3386": 1 }, "62497": { "3386": 1 }, "62498": { "3386": 1 }, "62499": { "3386": 1 }, "62500": { "3386": 1 }, "62501": { "3386": 1 }, "62502": { "3386": 1 }, "62503": { "3386": 1 }, "62504": { "3386": 1 }, "62505": { "3386": 1 }, "62506": { "3386": 1 }, "62507": { "3386": 1 }, "62508": { "3386": 1 }, "62509": { "3386": 1 }, "62510": { "3386": 1 }, "62511": { "3386": 1 }, "62512": { "3386": 1 }, "62513": { "3386": 1 }, "62514": { "3386": 1 }, "62515": { "3386": 1 }, "62516": { "3386": 1 }, "62517": { "3386": 1 }, "62518": { "3386": 1 }, "62519": { "3386": 1 }, "62520": { "3386": 1 }, "62521": { "3386": 1 }, "62522": { "3386": 1 }, "62523": { "3386": 1 }, "62524": { "3386": 1 }, "62525": { "3386": 1 }, "62526": { "3386": 1 }, "62527": { "3386": 1 }, "62528": { "3386": 1 }, "62529": { "3386": 1 }, "62530": { "3386": 1 }, "62531": { "3386": 1 }, "62532": { "3386": 1 }, "62533": { "3386": 1 }, "62534": { "3386": 1 }, "62535": { "3386": 1 }, "62536": { "3386": 1 }, "62537": { "3386": 1 }, "62538": { "3386": 1 }, "62539": { "3386": 1 }, "62540": { "3386": 1 }, "62541": { "3386": 1 }, "62542": { "3386": 1 }, "62543": { "3386": 1 }, "62544": { "3386": 1 }, "62545": { "3386": 1 }, "62546": { "3386": 1 }, "62547": { "3386": 1 }, "62548": { "3386": 1 }, "62549": { "3386": 1 }, "62550": { "3386": 1 }, "62551": { "3386": 1 }, "62552": { "3386": 1 }, "62553": { "3386": 1 }, "62554": { "3386": 1 }, "62555": { "3386": 1 }, "62556": { "3386": 1 }, "62557": { "3386": 1 }, "62558": { "3386": 1 }, "62559": { "3386": 1 }, "62560": { "3386": 1 }, "62561": { "3386": 1 }, "62562": { "3386": 1 }, "62563": { "3386": 1 }, "62564": { "3386": 1 }, "62565": { "3386": 1 }, "62566": { "3386": 1 }, "62567": { "3386": 1 }, "62568": { "3386": 1 }, "62569": { "3386": 1 }, "62570": { "3386": 1 }, "62571": { "3386": 1 }, "62572": { "3386": 1 }, "62573": { "3386": 1 }, "62574": { "3386": 1 }, "62575": { "3386": 1 }, "62576": { "3386": 1 }, "62577": { "3386": 1 }, "62578": { "3386": 1 }, "62579": { "3386": 1 }, "62580": { "3386": 1 }, "62581": { "3386": 1 }, "62582": { "3386": 1 }, "62583": { "3386": 1 }, "62584": { "3386": 1 }, "62586": { "11395": 1 }, "62587": { "11395": 1 }, "62588": { "11395": 1 }, "62589": { "9955": 1 }, "62590": { "58956": 1 }, "62591": { "58956": 4 }, "62595": { "3402": 1 }, "62596": { "3402": 1 }, "62597": { "3402": 1 }, "62622": { "62450": 1 }, "62624": { "62450": 3 }, "62625": { "62450": 1 }, "62626": { "62450": 3 }, "62628": { "62450": 2 }, "62630": { "62450": 4 }, "62631": { "62450": 5 }, "62632": { "62451": 1 }, "62633": { "62451": 2 }, "62634": { "62451": 3 }, "62635": { "62451": 4 }, "62636": { "62451": 5 }, "63140": { "24562": 1 }, "63166": { "21718": 1 }, "63167": { "21718": 1 }, "63168": { "21718": 1 }, "63169": { "21718": 1 }, "63633": { "3402": 1 }, "63634": { "3402": 1 }, "63635": { "3402": 1 }, "63816": { "3405": 1 }, "63817": { "3405": 1 }, "63849": { "3355": 1 }, "63850": { "3355": 1 }, "63851": { "3355": 1 }, "63852": { "3402": 1 }, "63853": { "3402": 1 }, "63854": { "3402": 1 }, "63871": { "21718": 1 }, "63872": { "21718": 1 }, "63876": { "21718": 1 }, "63877": { "21718": 1 }, "63910": { "21718": 1 }, "63911": { "21718": 1 }, "64034": { "3327": 1 }, "64373": { "3405": 1 }, "64374": { "3405": 1 }, "64375": { "3405": 1 }, "64376": { "3405": 1 }, "64949": { "3405": 1 }, "64950": { "3405": 1 }, "64951": { "3405": 1 }, "64952": { "3405": 1 }, "64953": { "3405": 1 }, "64954": { "3405": 1 }, "64955": { "3405": 1 }, "64956": { "3405": 1 }, "64957": { "3405": 1 }, "64958": { "3405": 1 }, "64959": { "3405": 1 }, "64960": { "3405": 1 }, "64961": { "3405": 1 }, "64962": { "3405": 1 }, "64963": { "3405": 1 }, "64964": { "3405": 1 }, "65062": { "3402": 1 }, "65063": { "3402": 1 }, "65064": { "3402": 1 }, "71013": { "21718": 3 }, "71014": { "21718": 2 }, "71015": { "21718": 1 }, "71016": { "21718": 2 }, "71017": { "21718": 3 }, "71018": { "21718": 1 }, "71735": { "3405": 1 }, "71736": { "3405": 1 }, "71737": { "3405": 1 }, "71738": { "3405": 1 }, "71739": { "3405": 1 }, "71740": { "3405": 1 }, "71741": { "3405": 1 }, "71742": { "3405": 1 }, "71747": { "3405": 1 }, "71748": { "3405": 1 }, "71749": { "3405": 1 }, "71750": { "3405": 1 }, "72083": { "3402": 1 }, "72084": { "3402": 1 }, "72085": { "3402": 1 }, "72369": { "21718": 1 }, "72811": { "33098": 2 }, "72812": { "33096": 2 }, "72818": { "3405": 1 }, "72819": { "3405": 1 }, "72820": { "3405": 1 }, "72821": { "3405": 1 }, "72822": { "3405": 1 }, "72823": { "3405": 1 }, "72828": { "3405": 1 }, "72829": { "3405": 1 }, "72830": { "3405": 1 }, "72831": { "3405": 1 }, "72832": { "3405": 1 }, "72833": { "3405": 1 }, "72834": { "3405": 1 }, "72835": { "3405": 1 }, "72836": { "3405": 1 }, "72837": { "3405": 1 }, "72839": { "3405": 1 }, "72840": { "3405": 1 }, "72841": { "3405": 1 }, "72842": { "3405": 1 }, "72854": { "3405": 1 }, "72855": { "3405": 1 }, "72856": { "3405": 1 }, "72857": { "3405": 1 }, "72858": { "3405": 1 }, "72859": { "3405": 1 }, "72860": { "3405": 1 }, "72861": { "3405": 1 }, "72862": { "3405": 1 }, "72863": { "3405": 1 }, "72864": { "3405": 1 }, "72865": { "3405": 1 }, "72866": { "3402": 1 }, "72867": { "3402": 1 }, "72868": { "3402": 1 }, "72869": { "33097": 2 }, "72872": { "33095": 2 }, "72879": { "9955": 5, "13278": 5, "21718": 5 }, "72903": { "3329": 2 }, "72904": { "3330": 2 }, "72907": { "3331": 2 }, "72913": { "3328": 2 }, "73036": { "21718": 2 }, "73037": { "21718": 2 }, "73038": { "21718": 2 }, "73225": { "11584": 3 }, "73226": { "11584": 3 }, "73227": { "11584": 3 }, "73228": { "11584": 3 }, "73252": { "21718": 1 }, "73253": { "21718": 1 }, "73270": { "11584": 3 }, "73271": { "11584": 3 }, "73272": { "11584": 3 }, "73273": { "11584": 3 }, "73427": { "21718": 1 }, "73428": { "21718": 1 }, "73429": { "21718": 1 }, "73430": { "21718": 1 }, "73787": { "3456": 1, "20532": 2, "20533": 1 }, "73789": { "33091": 2 }, "73790": { "3456": 1, "20525": 2, "20533": 1 }, "73792": { "3456": 1, "20531": 2, "20533": 1 }, "73793": { "3456": 1, "20530": 2, "20533": 1 }, "73794": { "33094": 2 }, "73795": { "33092": 2 }, "73796": { "33093": 2 }, "73910": { "33407": 5 }, "73912": { "25235": 5 }, "74141": { "3329": 5, "12095": 1 }, "74161": { "3402": 1 }, "74162": { "3402": 1 }, "74163": { "3402": 1 }, "74199": { "3405": 1 }, "74200": { "3405": 1 }, "74201": { "3405": 1 }, "74202": { "3405": 1 }, "74203": { "3405": 1 }, "74204": { "3405": 1 }, "74205": { "3405": 1 }, "74206": { "3405": 1 }, "74207": { "3405": 1 }, "74208": { "3405": 1 }, "74209": { "3405": 1 }, "74210": { "3405": 1 }, "74211": { "3405": 1 }, "74212": { "3405": 1 }, "74213": { "3405": 1 }, "74214": { "3405": 1 }, "74215": { "3405": 1 }, "74216": { "3405": 1 }, "74255": { "3426": 1, "9955": 5 }, "74256": { "3386": 1, "9955": 5, "11395": 2, "16281": 1 }, "74257": { "3405": 1 }, "74258": { "3405": 1 }, "74259": { "3405": 1 }, "74260": { "3405": 1 }, "74261": { "3405": 1 }, "74262": { "3405": 1 }, "74316": { "3333": 5, "16591": 1 }, "74448": { "9955": 5, "25863": 1 }, "74521": { "3386": 1 }, "74522": { "3386": 1 }, "74523": { "3386": 1 }, "74524": { "3386": 1 }, "74525": { "3386": 1 }, "74526": { "3386": 1 }, "74527": { "3386": 1 }, "74528": { "3386": 1 }, "74529": { "3386": 1 }, "74530": { "3386": 1 }, "74531": { "3386": 1 }, "74532": { "3386": 1 }, "74533": { "3386": 1 }, "74534": { "3386": 1 }, "74535": { "3386": 1 }, "74536": { "3386": 1 }, "75275": { "3386": 1 }, "75276": { "3386": 1 }, "75277": { "3386": 1 }, "75278": { "3386": 1 }, "75279": { "3386": 1 }, "75280": { "3386": 1 }, "75281": { "3386": 1 }, "75282": { "3386": 1 }, "75283": { "3386": 1 }, "75284": { "3386": 1 }, "75285": { "3386": 1 }, "75286": { "3386": 1 }, "75287": { "3386": 1 }, "75288": { "3386": 1 }, "75289": { "3386": 1 }, "75290": { "3386": 1 }, "75326": { "3402": 1 }, "75327": { "3402": 1 }, "75328": { "3402": 1 }, "75677": { "9955": 5, "11584": 3 }, "76050": { "3405": 1 }, "76051": { "3405": 1 }, "76052": { "3405": 1 }, "76053": { "3405": 1 }, "76054": { "3405": 1 }, "76055": { "3405": 1 }, "76056": { "3405": 1 }, "76057": { "3405": 1 }, "76058": { "3405": 1 }, "76059": { "3405": 1 }, "76060": { "3405": 1 }, "76061": { "3405": 1 }, "76062": { "3405": 1 }, "76063": { "3405": 1 }, "76064": { "3405": 1 }, "76065": { "3405": 1 }, "76066": { "3405": 1 }, "76067": { "3405": 1 }, "76068": { "3405": 1 }, "76069": { "3405": 1 }, "76070": { "3405": 1 }, "76071": { "3405": 1 }, "76072": { "3405": 1 }, "76073": { "3405": 1 }, "76074": { "3405": 1 }, "76075": { "3405": 1 }, "76076": { "3405": 1 }, "76077": { "3405": 1 }, "76078": { "3405": 1 }, "76079": { "3405": 1 }, "76080": { "3405": 1 }, "76081": { "3405": 1 }, "76082": { "3405": 1 }, "76083": { "3405": 1 }, "76084": { "3405": 1 }, "76085": { "3405": 1 }, "76086": { "3405": 1 }, "76087": { "3405": 1 }, "76088": { "3405": 1 }, "76089": { "3405": 1 }, "76090": { "3405": 1 }, "76091": { "3405": 1 }, "76092": { "3405": 1 }, "76093": { "3405": 1 }, "76094": { "3405": 1 }, "76095": { "3405": 1 }, "76096": { "3405": 1 }, "76097": { "3405": 1 }, "76098": { "3405": 1 }, "76099": { "3405": 1 }, "76100": { "3405": 1 }, "76101": { "3405": 1 }, "76102": { "3405": 1 }, "76103": { "3405": 1 }, "76104": { "3405": 1 }, "76105": { "3405": 1 }, "76106": { "3405": 1 }, "76107": { "3405": 1 }, "76108": { "3405": 1 }, "76109": { "3405": 1 }, "76110": { "3405": 1 }, "76111": { "3405": 1 }, "76112": { "3405": 1 }, "76113": { "3405": 1 }, "76114": { "3405": 1 }, "76115": { "3405": 1 }, "76116": { "3405": 1 }, "76117": { "3405": 1 }, "76118": { "3405": 1 }, "76119": { "3405": 1 }, "76120": { "3405": 1 }, "76121": { "3405": 1 }, "76122": { "3405": 1 }, "76123": { "3405": 1 }, "76124": { "3405": 1 }, "76125": { "3405": 1 }, "76126": { "3405": 1 }, "76127": { "3405": 1 }, "76128": { "3405": 1 }, "76129": { "3405": 1 }, "76130": { "3405": 1 }, "76131": { "3405": 1 }, "76132": { "3405": 1 }, "76133": { "3405": 1 }, "76134": { "3405": 1 }, "76135": { "3405": 1 }, "76136": { "3405": 1 }, "76137": { "3405": 1 }, "76138": { "3405": 1 }, "76139": { "3405": 1 }, "76140": { "3405": 1 }, "76141": { "3405": 1 }, "76142": { "3405": 1 }, "76143": { "3405": 1 }, "76144": { "3405": 1 }, "76145": { "3405": 1 }, "76179": { "21718": 1 }, "76180": { "21718": 1 }, "76181": { "21718": 1 }, "76182": { "21718": 1 }, "76183": { "21718": 1 }, "76184": { "21718": 1 }, "76185": { "21718": 1 }, "76186": { "21718": 1 }, "76187": { "21718": 1 }, "76188": { "21718": 1 }, "76189": { "21718": 1 }, "76190": { "21718": 1 }, "76191": { "25863": 1 }, "76192": { "25863": 1 }, "76193": { "25863": 1 }, "76194": { "25863": 1 }, "76260": { "25863": 1 }, "76318": { "25863": 1 }, "76319": { "25863": 1 }, "76320": { "25863": 1 }, "76373": { "3386": 1 }, "76506": { "3402": 1 }, "76507": { "3402": 1 }, "76508": { "3402": 1 }, "76509": { "3355": 1 }, "76510": { "3355": 1 }, "76511": { "3355": 1 }, "76532": { "3405": 1 }, "76533": { "3405": 1 }, "76534": { "3405": 1 }, "76535": { "3405": 1 }, "76941": { "21718": 1 }, "77097": { "21718": 1 }, "77098": { "21718": 1 }, "77099": { "21718": 1 }, "77100": { "21718": 1 }, "77114": { "3327": 1 }, "77118": { "3386": 1 }, "77121": { "21718": 1 }, "77196": { "21718": 1 }, "77197": { "21718": 1 }, "77198": { "21718": 1 }, "77281": { "20531": 5, "20533": 4, "77738": 1 }, "77283": { "20525": 5, "20533": 4, "77738": 1 }, "77284": { "20530": 5, "20533": 4, "77738": 1 }, "77288": { "20532": 5, "20533": 4, "77738": 1 }, "77398": { "77738": 1, "77739": 1 }, "77399": { "77738": 1, "77739": 1 }, "77400": { "77738": 1, "77739": 1 }, "77401": { "77738": 1, "77739": 1 }, "77418": { "3386": 1 }, "77419": { "3386": 1 }, "77420": { "3386": 1 }, "77421": { "3386": 1 }, "77524": { "3386": 1 }, "77725": { "3392": 5, "3398": 4, "22242": 4 }, "77726": { "3332": 5, "16591": 1 }, "77738": { "11433": 4, "20533": 4, "21611": 1, "22043": 4 }, "77739": { "3421": 4, "11207": 5, "11433": 4 }, "78287": { "3402": 1 }, "78288": { "3402": 1 }, "78289": { "3402": 1 }, "78290": { "3405": 1 }, "78291": { "3405": 1 }, "78292": { "3405": 1 }, "78293": { "3405": 1 }, "78294": { "3405": 1 }, "78295": { "3405": 1 }, "78300": { "3405": 1 }, "78301": { "3405": 1 }, "78302": { "3405": 1 }, "78303": { "3405": 1 }, "78305": { "3405": 1 }, "78306": { "3405": 1 }, "78307": { "3405": 1 }, "78311": { "3405": 1 }, "78312": { "3405": 1 }, "78313": { "3405": 1 }, "78314": { "3405": 1 }, "78315": { "3405": 1 }, "78316": { "3405": 1 }, "78317": { "3405": 1 }, "78318": { "3405": 1 }, "78319": { "3405": 1 }, "78320": { "3405": 1 }, "78321": { "3405": 1 }, "78322": { "3405": 1 }, "78323": { "3405": 1 }, "78324": { "3405": 1 }, "78325": { "3405": 1 }, "78326": { "3405": 1 }, "78327": { "3405": 1 }, "78328": { "3405": 1 }, "78329": { "3405": 1 }, "78333": { "33093": 2, "33094": 2 }, "78366": { "33096": 2, "33097": 2 }, "78367": { "33092": 2, "33093": 2 }, "78369": { "33097": 2, "33098": 2 }, "78414": { "3328": 5, "12095": 1 }, "78576": { "3344": 1, "3345": 1, "20533": 5 }, "78621": { "3318": 4 }, "78631": { "3405": 1 }, "78633": { "3405": 1 }, "78634": { "3405": 1 }, "78636": { "3405": 1 }, "78637": { "3405": 1 }, "78638": { "3405": 1 }, "78639": { "3405": 1 }, "78640": { "3405": 1 }, "78641": { "3405": 1 }, "78642": { "3405": 1 }, "78649": { "3405": 1 }, "78650": { "3405": 1 }, "78652": { "3405": 1 }, "78653": { "3405": 1 }, "78655": { "3405": 1 }, "78656": { "3405": 1 }, "78657": { "3405": 1 }, "78659": { "3405": 1 }, "78660": { "3405": 1 }, "78661": { "3405": 1 }, "78663": { "3405": 1 }, "78664": { "3405": 1 }, "78665": { "3405": 1 }, "78666": { "3405": 1 }, "78667": { "3405": 1 }, "78668": { "3402": 1 }, "78669": { "3402": 1 }, "78670": { "3402": 1 }, "78676": { "3405": 1 }, "78677": { "22578": 1 }, "78740": { "3318": 1 }, "78741": { "3318": 1 }, "80029": { "13278": 1 }, "80030": { "13278": 1 }, "80031": { "13278": 1 }, "80033": { "13278": 1 }, "80034": { "13278": 1 }, "80035": { "13278": 1 }, "80036": { "13278": 1 }, "80038": { "13278": 1 }, "80342": { "3402": 1 }, "80343": { "3402": 1 }, "80344": { "3402": 1 }, "80352": { "3355": 1 }, "80353": { "3355": 1 }, "80354": { "3355": 1 }, "81008": { "81032": 1 }, "81032": { "3327": 3 }, "81040": { "20342": 1, "81044": 1 }, "81044": { "20342": 5, "81032": 3 }, "81046": { "19719": 1, "81032": 5 }, "81047": { "19719": 1, "81032": 5 }, "81050": { "3392": 5, "3402": 5 }, "81051": { "81050": 1 }, "81364": { "81375": 4 }, "81365": { "81364": 4 }, "81367": { "81366": 4 }, "81369": { "81368": 4 }, "81371": { "81370": 4 }, "81372": { "81377": 4 }, "81373": { "81372": 4 }, "81374": { "81373": 4 }, "81617": { "13278": 1 }, "81624": { "13278": 1 }, "81627": { "13278": 1 }, "81896": { "3402": 5, "3405": 5 }, "81900": { "3386": 1 }, "81901": { "3386": 1 }, "81902": { "3386": 1 }, "81903": { "3386": 1 }, "81948": { "3402": 3 }, "81949": { "11446": 4 }, "81975": { "3386": 1 }, "81976": { "3386": 1 }, "81977": { "3386": 1 }, "81978": { "3386": 1 }, "82015": { "3386": 1 }, "82016": { "3386": 1 }, "82017": { "3386": 1 }, "82018": { "3386": 1 }, "82019": { "3386": 1 }, "82163": { "3386": 1 }, "82164": { "3386": 1 }, "82165": { "3386": 1 }, "82166": { "3386": 1 }, "82205": { "3386": 1 }, "82206": { "3386": 1 }, "82207": { "3386": 1 }, "82208": { "3386": 1 }, "82300": { "3386": 1 }, "82301": { "3386": 1 }, "82302": { "3386": 1 }, "82303": { "3386": 1 }, "82304": { "3386": 1 }, "82305": { "3386": 1 }, "82306": { "3386": 1 }, "82307": { "3386": 1 }, "82308": { "3386": 1 }, "82309": { "3386": 1 }, "82310": { "3386": 1 }, "82311": { "3386": 1 }, "82312": { "3386": 1 }, "82313": { "3386": 1 }, "82314": { "3386": 1 }, "82315": { "3386": 1 }, "82316": { "3386": 1 }, "82317": { "3386": 1 }, "82318": { "3386": 1 }, "82319": { "3386": 1 }, "83094": { "24562": 5 }, "83464": { "3449": 5, "4385": 5 }, "83465": { "4385": 5, "83464": 1 }, "83485": { "83464": 1 }, "83579": { "23069": 1, "40572": 1 }, "83582": { "23069": 1, "40572": 1 }, "83583": { "23069": 1, "40572": 1 }, "83584": { "23069": 1, "40572": 1 }, "83585": { "23069": 1, "40572": 1 }, "83586": { "23069": 1, "40572": 1 }, "83587": { "23069": 1, "40572": 1 }, "83589": { "23069": 1, "40572": 1 }, "83590": { "21718": 1 }, "83591": { "23069": 1, "40573": 1 }, "83592": { "23069": 1, "40573": 1 }, "83593": { "23069": 1, "40573": 1 }, "83594": { "23069": 1, "40573": 1 }, "83642": { "3352": 5, "3411": 5, "11572": 5 }, "83643": { "3427": 4 }, "83644": { "3427": 4 }, "83647": { "3394": 1 }, "83660": { "3427": 4 }, "83661": { "3427": 4 }, "84218": { "84217": 4 }, "84220": { "84218": 4 }, "84271": { "3402": 1 }, "84272": { "3402": 1 }, "84273": { "3402": 1 }, "84297": { "3405": 1 }, "84298": { "3405": 1 }, "84299": { "3405": 1 }, "84300": { "3405": 1 }, "84301": { "3405": 1 }, "84302": { "3405": 1 }, "84303": { "3405": 1 }, "84304": { "3405": 1 }, "84305": { "3405": 1 }, "84306": { "3405": 1 }, "84307": { "3405": 1 }, "84308": { "3405": 1 }, "84309": { "3405": 1 }, "84310": { "3405": 1 }, "84311": { "3405": 1 }, "84312": { "3405": 1 }, "84313": { "3405": 1 }, "84314": { "3405": 1 }, "84315": { "3405": 1 }, "84316": { "3405": 1 }, "84317": { "3405": 1 }, "84318": { "3405": 1 }, "84319": { "3405": 1 }, "84320": { "3405": 1 }, "84321": { "3405": 1 }, "84322": { "3405": 1 }, "84323": { "3405": 1 }, "84324": { "3405": 1 }, "84325": { "3405": 1 }, "84326": { "3405": 1 }, "84327": { "3405": 1 }, "84328": { "3405": 1 }, "84434": { "3421": 1 }, "84435": { "3421": 1 }, "84436": { "3421": 1 }, "84437": { "3421": 1 }, "84438": { "3421": 1 }, "84439": { "3421": 1 }, "84440": { "3421": 1 }, "84441": { "3421": 1 }, "84442": { "3421": 1 }, "84443": { "3421": 1 }, "84444": { "3421": 1 }, "84445": { "3421": 1 }, "84495": { "3421": 1 }, "84496": { "3421": 1 }, "84497": { "3421": 1 }, "84498": { "3421": 1 }, "84499": { "3421": 1 }, "84500": { "3421": 1 }, "84740": { "3421": 1 }, "84741": { "3423": 2 }, "84742": { "19921": 1 }, "84743": { "3453": 1 }, "84959": { "3418": 2 }, "84961": { "3394": 1 }, "84962": { "3454": 1 }, "84963": { "3454": 1 }, "84964": { "3454": 1 }, "84965": { "3454": 1 }, "84966": { "3450": 1 }, "84967": { "3450": 1 }, "84968": { "3450": 1 }, "84969": { "3450": 1 }, "84970": { "3392": 1, "3393": 1 }, "84971": { "3392": 1, "3393": 1 }, "84972": { "3392": 2, "3393": 1 }, "84973": { "3392": 2, "3393": 1 }, "84985": { "16069": 1 }, "84986": { "16069": 1 }, "84987": { "16069": 2 }, "84988": { "16069": 2 }, "84989": { "3423": 1 }, "84991": { "3423": 1 }, "84992": { "3423": 2 }, "84993": { "3423": 2 }, "84994": { "3422": 1 }, "84995": { "3422": 1 }, "84996": { "3422": 1 }, "84997": { "3422": 1 }, "84998": { "3416": 1 }, "84999": { "3416": 1 }, "85000": { "3416": 1 }, "85001": { "3416": 1 }, "85002": { "3427": 1 }, "85003": { "3427": 1 }, "85004": { "3427": 1 }, "85005": { "3427": 1 }, "85006": { "3427": 3 }, "85007": { "3427": 3 }, "85008": { "3300": 1, "3301": 1 }, "85009": { "3300": 3, "3304": 1 }, "85010": { "3300": 1, "3302": 1 }, "85011": { "3300": 3, "3305": 1 }, "85012": { "3300": 1, "3303": 1 }, "85013": { "3300": 1, "3303": 1 }, "85014": { "3300": 3, "3306": 1 }, "85015": { "3300": 3, "3306": 1 }, "85021": { "3319": 1, "3320": 1 }, "85023": { "3319": 1, "25719": 1 }, "85025": { "3450": 1 }, "85026": { "3450": 1 }, "85027": { "3417": 1 }, "85028": { "3417": 1 }, "85031": { "3450": 1 }, "85032": { "3450": 1 }, "85033": { "3423": 1 }, "85034": { "3423": 1 }, "85035": { "3435": 5, "11446": 4 }, "85038": { "13278": 1 }, "85039": { "13278": 1 }, "85040": { "13278": 1 }, "85062": { "3328": 1, "3329": 1, "3330": 1, "3331": 1, "12093": 1 }, "85084": { "86260": 1 }, "85085": { "86260": 2 }, "85086": { "33096": 2, "33098": 2 }, "85087": { "33092": 2, "33094": 2 }, "85088": { "86260": 1 }, "85089": { "86260": 2 }, "85229": { "3332": 1, "3333": 1, "3334": 1, "3335": 1, "22761": 1 }, "85231": { "13278": 1 }, "85233": { "3361": 3, "11584": 3 }, "85236": { "3336": 1, "3337": 1, "3338": 1, "3339": 1, "28656": 1 }, "85237": { "3402": 1 }, "85238": { "3402": 1 }, "85239": { "3402": 1 }, "85252": { "3405": 1 }, "85253": { "3405": 1 }, "85254": { "3405": 1 }, "85255": { "3405": 1 }, "85256": { "3405": 1 }, "85257": { "3405": 1 }, "85258": { "3405": 1 }, "85259": { "3405": 1 }, "85260": { "3405": 1 }, "85261": { "3405": 1 }, "85262": { "3405": 1 }, "85263": { "3405": 1 }, "85264": { "3405": 1 }, "85265": { "3405": 1 }, "85266": { "3405": 1 }, "85267": { "3405": 1 }, "85268": { "3405": 1 }, "85269": { "3405": 1 }, "85270": { "3405": 1 }, "85271": { "3405": 1 }, "85272": { "3405": 1 }, "85273": { "3405": 1 }, "85274": { "3405": 1 }, "85275": { "3405": 1 }, "85362": { "13278": 1 }, "85410": { "13278": 1 }, "85503": { "13278": 1 }, "85747": { "3412": 2 }, "85748": { "3411": 5 }, "85750": { "13278": 5 }, "86260": { "3319": 3, "24242": 1 }, "86261": { "86260": 1 }, "86262": { "86260": 3 }, "86263": { "86260": 2 }, "86264": { "86260": 2 }, "87228": { "21718": 1 }, "87315": { "3423": 4, "9955": 5 }, "87316": { "3422": 4, "9955": 5 }, "87323": { "25739": 2 }, "87324": { "25810": 2 }, "87325": { "25811": 2 }, "87353": { "13278": 1 }, "87381": { "3456": 1, "20531": 1, "20532": 1, "20533": 1 }, "87418": { "21718": 1 }, "87419": { "21718": 1 }, "87420": { "21718": 1 }, "87421": { "21718": 1 }, "87444": { "22043": 5 }, "87501": { "13278": 1 }, "87502": { "13278": 1 }, "87503": { "13278": 1 }, "87532": { "13278": 1 }, "87557": { "13278": 1 }, "87558": { "13278": 1 }, "87562": { "3386": 4, "11395": 2 }, "87574": { "3402": 1 }, "87575": { "3402": 1 }, "87576": { "3402": 1 }, "87577": { "3355": 1 }, "87578": { "3355": 1 }, "87579": { "3355": 1 }, "87684": { "13278": 1 }, "87711": { "3405": 1 }, "87726": { "3405": 1 }, "87727": { "3405": 1 }, "87728": { "3405": 1 }, "87729": { "3405": 1 }, "87886": { "3405": 1 }, "87947": { "13278": 1 }, "88001": { "28667": 1, "47869": 5 }, "88009": { "13278": 1 }, "88010": { "13278": 1 }, "88060": { "21718": 1 }, "88062": { "21718": 1 }, "88105": { "3386": 1 }, "88119": { "3411": 2 }, "88120": { "3411": 2 }, "88121": { "3411": 2 }, "88122": { "3411": 2 }, "88123": { "3411": 2 }, "88124": { "3411": 5 }, "88125": { "3411": 2 }, "88126": { "3411": 2 }, "88127": { "3411": 2 }, "88128": { "3411": 2 }, "88129": { "3411": 2 }, "88130": { "3411": 5 }, "88147": { "25739": 3, "25810": 3, "25811": 3 }, "88224": { "13278": 1 }, "88261": { "3348": 5, "3350": 5, "3351": 1 }, "88262": { "3420": 1 }, "88263": { "3348": 5, "11569": 1, "20494": 5 }, "88264": { "24613": 1 }, "88265": { "3318": 1 }, "88266": { "22043": 5 }, "88350": { "3405": 1 }, "88351": { "3405": 1 }, "88352": { "3405": 1 }, "88353": { "3405": 1 }, "88354": { "3405": 1 }, "88377": { "24563": 5 }, "88709": { "3394": 3 }, "88710": { "4385": 1 }, "88711": { "4385": 1 }, "88712": { "4385": 5, "83464": 1 }, "88713": { "21802": 4 }, "88714": { "3416": 4 }, "88715": { "3416": 2 }, "88716": { "3416": 2 }, "88717": { "3416": 2 }, "88718": { "3392": 3, "21803": 1 }, "88719": { "3392": 3, "3393": 1 }, "88720": { "3392": 2, "3393": 1 }, "88721": { "3392": 1, "3393": 1 }, "88740": { "21718": 1 }, "88741": { "21718": 1 }, "88742": { "21718": 1 }, "88743": { "21718": 1 }, "88744": { "21718": 1 }, "88745": { "21718": 1 }, "88746": { "21718": 4 }, "88747": { "21718": 1 }, "88748": { "13278": 1 }, "88749": { "13278": 1 }, "88750": { "13278": 1 }, "88751": { "13278": 1 }, "88752": { "13278": 1 }, "88753": { "13278": 1 }, "89240": { "89241": 1 }, "89241": { "3380": 3, "3386": 4, "32918": 3 }, "89557": { "3405": 1 }, "89558": { "3405": 1 }, "89559": { "3405": 1 }, "89560": { "3405": 1 }, "89561": { "3405": 1 }, "89562": { "3405": 1 }, "89563": { "3405": 1 }, "89564": { "3405": 1 }, "89573": { "3405": 1 }, "89574": { "3405": 1 }, "89576": { "3405": 1 }, "89577": { "3405": 1 }, "89581": { "3405": 1 }, "89585": { "3405": 1 }, "89586": { "3405": 1 }, "89587": { "3405": 1 }, "89588": { "3405": 1 }, "89589": { "3405": 1 }, "89590": { "3405": 1 }, "89591": { "3405": 1 }, "89592": { "3405": 1 }, "89593": { "3405": 1 }, "89594": { "3405": 1 }, "89595": { "3405": 1 }, "89596": { "3405": 1 }, "89597": { "3405": 1 }, "89598": { "3405": 1 }, "89599": { "3405": 1 }, "89600": { "3405": 1 }, "89601": { "3405": 1 }, "89602": { "3405": 1 }, "89603": { "3405": 1 }, "89604": { "3402": 1 }, "89605": { "3402": 1 }, "89606": { "3402": 1 }, "89607": { "33095": 2, "33097": 2, "89609": 1 }, "89608": { "3348": 1, "89611": 1 }, "89609": { "3327": 5, "3412": 5, "89610": 1 }, "89610": { "3348": 1, "89611": 5 }, "89611": { "3348": 1 }, "89612": { "3348": 1, "89611": 1 }, "89613": { "3348": 1, "89611": 1 }, "89614": { "3348": 1, "89611": 1 }, "89615": { "3348": 5, "89610": 1, "89611": 5 }, "89616": { "3348": 5, "89610": 1, "89611": 5 }, "89617": { "3411": 5, "89610": 5 }, "89618": { "3411": 5, "11569": 5, "89610": 5 }, "89647": { "89241": 2 }, "89648": { "32918": 3 }, "89649": { "37615": 1, "89241": 5 }, "89689": { "3392": 5, "3394": 5, "33078": 4 }, "89717": { "3318": 1, "3436": 1, "9955": 5 }, "89807": { "33096": 1 }, "89808": { "35680": 1 }, "90037": { "11584": 3 }, "90040": { "3389": 5, "3409": 4 }, "90041": { "3386": 1 }, "90042": { "3386": 1 }, "90043": { "21718": 1 }, "90044": { "21718": 1 }, "90045": { "3386": 1, "90040": 3 }, "90046": { "3386": 1, "90040": 3 }, "90047": { "3386": 1, "90040": 4 }, "90048": { "3386": 1, "90040": 3 }, "90049": { "3386": 1, "90040": 4 }, "90050": { "3386": 1, "90040": 4 }, "90161": { "9955": 5 }, "90283": { "3386": 1 }, "90284": { "3386": 1 }, "90286": { "3386": 1 }, "90289": { "3386": 1 }, "90292": { "3386": 1 }, "90294": { "3386": 1 }, "90296": { "3386": 1 }, "90298": { "3386": 1 }, "90307": { "3386": 1 }, "90327": { "21718": 1 }, "90333": { "21718": 1 }, "90358": { "3386": 1 }, "90398": { "3389": 5, "3409": 4 }, "90421": { "3386": 1 }, "90422": { "3386": 1 }, "90426": { "3386": 1 }, "90445": { "3386": 1 }, "90446": { "3386": 1 }, "90460": { "3386": 4 }, "90467": { "3386": 5 }, "90474": { "3386": 5, "11395": 2 }, "90475": { "24613": 1 }, "90483": { "3386": 5, "11395": 1 }, "90487": { "3386": 5, "11395": 2 }, "90493": { "3386": 4 }, "90498": { "3386": 4, "11395": 2 }, "90502": { "16281": 1 }, "90524": { "16281": 1 }, "90529": { "25544": 1 }, "90560": { "21718": 1 }, "90561": { "21718": 1 }, "90593": { "25544": 1 }, "90614": { "3386": 2, "3436": 1, "3438": 1, "60515": 1 }, "90618": { "3436": 1, "16281": 2, "43702": 1, "60515": 1 }, "90621": { "3386": 2, "3436": 1, "3438": 1, "22541": 1, "60515": 1 }, "90622": { "3436": 1, "16281": 4, "43702": 5, "43703": 1, "60515": 1 }, "90669": { "3405": 1 }, "90670": { "3405": 1 }, "90671": { "3405": 1 }, "90672": { "3405": 1 }, "90673": { "3405": 1 }, "90674": { "3405": 1 }, "90675": { "3405": 1 }, "90676": { "3405": 1 }, "90677": { "3405": 1 }, "90678": { "3405": 1 }, "90679": { "3405": 1 }, "90680": { "3405": 1 }, "90682": { "3405": 1 }, "90683": { "3405": 1 }, "90684": { "3405": 1 }, "90685": { "3405": 1 }, "90686": { "3405": 1 }, "90687": { "3405": 1 }, "90688": { "3405": 1 }, "90689": { "3405": 1 }, "90690": { "3405": 1 }, "90691": { "3405": 1 }, "90692": { "3405": 1 }, "90693": { "3405": 1 }, "90694": { "3402": 1 }, "90695": { "3402": 1 }, "90696": { "3402": 1 }, "90727": { "3386": 3 }, "90728": { "3386": 5, "3410": 3, "90727": 4 }, "90733": { "3348": 1, "22536": 1 }, "91044": { "21718": 1 }, "91045": { "21718": 1 }, "91046": { "21718": 1 }, "91174": { "16281": 1, "89241": 2 }, "91998": { "3405": 1 }, "91999": { "3405": 1 }, "92000": { "3405": 1 }, "92001": { "3405": 1 }, "92002": { "3405": 1 }, "92003": { "3405": 1 }, "92004": { "3405": 1 }, "92005": { "3405": 1 }, "92006": { "3405": 1 }, "92017": { "3405": 1 }, "92018": { "3405": 1 }, "92019": { "3405": 1 }, "92021": { "3405": 1 }, "92022": { "3405": 1 }, "92023": { "3405": 1 }, "92024": { "3405": 1 }, "92025": { "3405": 1 }, "92026": { "3405": 1 }, "92027": { "3405": 1 }, "92028": { "3405": 1 }, "92029": { "3405": 1 }, "92030": { "3405": 1 }, "92031": { "3405": 1 }, "92032": { "3405": 1 }, "92033": { "3435": 3, "3436": 5, "12305": 1, "23566": 1, "24241": 1 }, "92034": { "3435": 3, "3436": 5, "12305": 2, "23566": 2, "33699": 1 }, "92035": { "3435": 3, "3436": 5, "3441": 1, "12305": 3, "23566": 3 }, "92036": { "3423": 3, "3436": 5, "23566": 1, "24241": 1 }, "92037": { "3423": 3, "3436": 5, "23566": 2, "33699": 1 }, "92038": { "3423": 3, "3436": 5, "3441": 1, "23566": 3 }, "92039": { "3427": 4, "3436": 5, "23566": 1, "24241": 1 }, "92040": { "3427": 4, "3436": 5, "23566": 2, "33699": 1 }, "92041": { "3427": 4, "3436": 5, "3441": 1, "23566": 3 }, "92144": { "21718": 1 }, "92145": { "21718": 1 }, "92158": { "3402": 1 }, "92159": { "3402": 1 }, "92160": { "3402": 1 }, "92183": { "11584": 3 }, "92282": { "3327": 1 }, "92283": { "3327": 1 }, "92284": { "3327": 1 }, "92371": { "3386": 1 }, "92372": { "3386": 1 }, "92373": { "3386": 1 }, "92374": { "3386": 1 }, "92396": { "21718": 1 }, "92397": { "23069": 5 }, "92398": { "23069": 5 }, "92399": { "23069": 5 }, "92400": { "23069": 5 }, "92408": { "13278": 1 }, "92409": { "21718": 1 }, "92410": { "21718": 1 }, "92411": { "21718": 1 }, "92412": { "21718": 1 }, "92413": { "13278": 1 }, "92416": { "13278": 1 }, "92417": { "13278": 1 }, "92418": { "13278": 1 }, "92451": { "3434": 4 }, "92453": { "3412": 2 }, "92454": { "3394": 1 }, "92455": { "3348": 5, "3352": 1, "20495": 5 }, "92456": { "3348": 5, "22536": 5, "22552": 1 }, "92458": { "3348": 5, "3349": 5, "11572": 1 }, "92461": { "3436": 5, "19921": 3, "23566": 1, "24241": 1 }, "92462": { "3436": 5, "19921": 3, "23566": 2, "33699": 1 }, "92463": { "3436": 5, "3441": 1, "19921": 3, "23566": 3 }, "92464": { "3433": 3, "3436": 5, "23566": 1, "24241": 1 }, "92465": { "3433": 3, "3436": 5, "23566": 2, "33699": 1 }, "92466": { "3433": 3, "3436": 5, "3441": 1, "23566": 3 }, "92467": { "3434": 3, "3436": 5, "23566": 1, "24241": 1 }, "92468": { "3434": 3, "3436": 5, "23566": 2, "33699": 1 }, "92469": { "3434": 3, "3436": 5, "3441": 1, "23566": 3 }, "92514": { "3300": 5, "52998": 1, "92541": 1 }, "92541": { "3312": 5, "52998": 5 }, "92876": { "3405": 1 }, "92948": { "3405": 1 }, "92950": { "3405": 1 }, "92951": { "3405": 1 }, "92952": { "92541": 1 }, "92953": { "3405": 1 }, "92954": { "92541": 1 }, "92955": { "3405": 1 }, "92972": { "3405": 1 }, "92973": { "3405": 1 }, "92974": { "3405": 1 }, "92975": { "3405": 1 }, "92976": { "3405": 1 }, "92978": { "3405": 1 }, "92979": { "3405": 1 }, "92981": { "3405": 1 }, "92983": { "3405": 1 }, "92987": { "3405": 1 }, "92989": { "3405": 1 }, "92992": { "3405": 1 }, "92994": { "3405": 1 }, "92996": { "3405": 1 }, "92998": { "3405": 1 }, "92999": { "3405": 1 }, "93017": { "3405": 1 }, "93018": { "3405": 1 }, "93019": { "3405": 1 }, "93020": { "3405": 1 }, "93021": { "3405": 1 }, "93022": { "3405": 1 }, "93023": { "3405": 1 }, "93024": { "3405": 1 }, "93025": { "3405": 1 }, "93026": { "3405": 1 }, "93027": { "3405": 1 }, "93028": { "3405": 1 }, "93029": { "3405": 1 }, "93050": { "3405": 1 }, "93051": { "3405": 1 }, "93052": { "3405": 1 }, "93053": { "3405": 1 }, "93054": { "3405": 1 }, "93055": { "3405": 1 }, "93058": { "3405": 1 }, "93059": { "3405": 1 }, "93060": { "3405": 1 }, "93061": { "3405": 1 }, "93062": { "3405": 1 }, "93063": { "3405": 1 }, "93064": { "3405": 1 }, "93065": { "3405": 1 }, "93066": { "3405": 1 }, "93067": { "3405": 1 }, "93068": { "3405": 1 }, "93085": { "3405": 1 }, "93087": { "3405": 1 }, "93088": { "3405": 1 }, "93093": { "3405": 1 }, "93095": { "3405": 1 }, "93096": { "3405": 1 }, "93098": { "3405": 1 }, "93101": { "3405": 1 }, "93102": { "3405": 1 }, "93103": { "3405": 1 }, "93106": { "3405": 1 }, "93107": { "3405": 1 }, "93108": { "3405": 1 }, "93109": { "3405": 1 }, "93110": { "3405": 1 }, "93111": { "3405": 1 }, "93112": { "3405": 1 }, "93113": { "3405": 1 }, "93114": { "3405": 1 }, "93115": { "3405": 1 }, "93116": { "3405": 1 }, "93117": { "3405": 1 }, "93118": { "3405": 1 }, "93119": { "3405": 1 }, "93120": { "3405": 1 }, "93121": { "3405": 1 }, "93122": { "3405": 1 }, "93123": { "3405": 1 }, "93124": { "3405": 1 }, "93125": { "3405": 1 }, "93126": { "3405": 1 }, "93127": { "3405": 1 }, "93128": { "3405": 1 }, "93129": { "3405": 1 }, "93130": { "3405": 1 }, "93131": { "3405": 1 }, "93132": { "3405": 1 }, "93133": { "3405": 1 }, "93134": { "3405": 1 }, "93135": { "3405": 1 }, "93136": { "3405": 1 }, "93137": { "3405": 1 }, "93138": { "3405": 1 }, "93139": { "3405": 1 }, "93140": { "3405": 1 }, "93260": { "3405": 1 }, "93550": { "21718": 1 }, "93551": { "21718": 1 }, "93552": { "21718": 1 }, "93554": { "21718": 1 }, "93568": { "21718": 1 }, "93575": { "21718": 1 }, "93630": { "21718": 1 }, "93631": { "21718": 1 }, "93632": { "21718": 1 }, "93633": { "21718": 1 }, "93775": { "3402": 1 }, "93776": { "3402": 1 }, "93777": { "3402": 1 }, "93778": { "3355": 1 }, "93779": { "3355": 1 }, "93780": { "3355": 1 }, "93850": { "21718": 1 }, "93868": { "21718": 1 }, "93905": { "3394": 3 }, "93906": { "22578": 5 }, "93910": { "3424": 5 }, "93912": { "13278": 5, "21718": 5 }, "93999": { "3424": 5, "11207": 5 }, "94008": { "3424": 5, "11207": 5 }, "94009": { "3424": 5, "11207": 5 }, "94010": { "3424": 5, "11207": 5 } } ================================================ FILE: staticdata/fsd_built/typedogma.0.json ================================================ [File too large to display: 18.3 MB] ================================================ FILE: staticdata/fsd_built/typedogma.1.json ================================================ [File too large to display: 17.4 MB] ================================================ FILE: staticdata/fsd_built/typedogma.2.json ================================================ [File too large to display: 11.7 MB] ================================================ FILE: staticdata/fsd_built/types.0.json ================================================ [File too large to display: 29.9 MB] ================================================ FILE: staticdata/fsd_built/types.1.json ================================================ [File too large to display: 28.5 MB] ================================================ FILE: staticdata/fsd_built/types.2.json ================================================ [File too large to display: 16.6 MB] ================================================ FILE: staticdata/fsd_built/types.3.json ================================================ [File too large to display: 48.0 MB] ================================================ FILE: staticdata/fsd_built/types.4.json ================================================ [File too large to display: 41.9 MB] ================================================ FILE: staticdata/fsd_built/types.5.json ================================================ [File too large to display: 11.2 MB] ================================================ FILE: staticdata/fsd_lite/clonegrades.0.json ================================================ { "1": { "internalDescription": "Alpha Caldari", "skills": [ { "level": 5, "typeID": 3300 }, { "level": 5, "typeID": 3301 }, { "level": 5, "typeID": 3302 }, { "level": 5, "typeID": 3303 }, { "level": 5, "typeID": 3304 }, { "level": 5, "typeID": 3305 }, { "level": 5, "typeID": 3306 }, { "level": 4, "typeID": 3307 }, { "level": 4, "typeID": 3308 }, { "level": 4, "typeID": 3309 }, { "level": 4, "typeID": 3310 }, { "level": 4, "typeID": 3311 }, { "level": 4, "typeID": 3312 }, { "level": 4, "typeID": 3315 }, { "level": 4, "typeID": 3316 }, { "level": 4, "typeID": 3317 }, { "level": 5, "typeID": 3318 }, { "level": 5, "typeID": 3319 }, { "level": 5, "typeID": 3320 }, { "level": 5, "typeID": 3321 }, { "level": 5, "typeID": 3324 }, { "level": 4, "typeID": 3325 }, { "level": 4, "typeID": 3326 }, { "level": 4, "typeID": 3327 }, { "level": 4, "typeID": 3328 }, { "level": 4, "typeID": 3329 }, { "level": 4, "typeID": 3330 }, { "level": 4, "typeID": 3331 }, { "level": 4, "typeID": 3332 }, { "level": 4, "typeID": 3333 }, { "level": 4, "typeID": 3334 }, { "level": 4, "typeID": 3335 }, { "level": 4, "typeID": 3336 }, { "level": 4, "typeID": 3337 }, { "level": 4, "typeID": 3338 }, { "level": 4, "typeID": 3339 }, { "level": 1, "typeID": 3340 }, { "level": 1, "typeID": 3341 }, { "level": 1, "typeID": 3342 }, { "level": 1, "typeID": 3343 }, { "level": 3, "typeID": 3348 }, { "level": 3, "typeID": 3355 }, { "level": 2, "typeID": 3356 }, { "level": 3, "typeID": 3357 }, { "level": 2, "typeID": 3359 }, { "level": 2, "typeID": 3361 }, { "level": 1, "typeID": 3363 }, { "level": 5, "typeID": 3380 }, { "level": 3, "typeID": 3385 }, { "level": 4, "typeID": 3386 }, { "level": 3, "typeID": 3387 }, { "level": 5, "typeID": 3392 }, { "level": 5, "typeID": 3393 }, { "level": 5, "typeID": 3394 }, { "level": 4, "typeID": 3402 }, { "level": 3, "typeID": 3405 }, { "level": 3, "typeID": 3411 }, { "level": 3, "typeID": 3412 }, { "level": 5, "typeID": 3413 }, { "level": 4, "typeID": 3416 }, { "level": 3, "typeID": 3417 }, { "level": 4, "typeID": 3418 }, { "level": 4, "typeID": 3419 }, { "level": 4, "typeID": 3420 }, { "level": 2, "typeID": 3421 }, { "level": 3, "typeID": 3422 }, { "level": 4, "typeID": 3423 }, { "level": 5, "typeID": 3424 }, { "level": 4, "typeID": 3425 }, { "level": 5, "typeID": 3426 }, { "level": 4, "typeID": 3427 }, { "level": 3, "typeID": 3428 }, { "level": 4, "typeID": 3429 }, { "level": 3, "typeID": 3431 }, { "level": 5, "typeID": 3432 }, { "level": 3, "typeID": 3433 }, { "level": 4, "typeID": 3434 }, { "level": 4, "typeID": 3435 }, { "level": 5, "typeID": 3436 }, { "level": 4, "typeID": 3437 }, { "level": 2, "typeID": 3439 }, { "level": 3, "typeID": 3441 }, { "level": 3, "typeID": 3442 }, { "level": 3, "typeID": 3443 }, { "level": 2, "typeID": 3446 }, { "level": 4, "typeID": 3449 }, { "level": 3, "typeID": 3450 }, { "level": 3, "typeID": 3452 }, { "level": 3, "typeID": 3453 }, { "level": 3, "typeID": 3454 }, { "level": 3, "typeID": 3455 }, { "level": 3, "typeID": 3551 }, { "level": 2, "typeID": 3893 }, { "level": 2, "typeID": 3894 }, { "level": 2, "typeID": 3895 }, { "level": 3, "typeID": 11082 }, { "level": 3, "typeID": 11083 }, { "level": 3, "typeID": 11084 }, { "level": 3, "typeID": 11207 }, { "level": 2, "typeID": 11566 }, { "level": 1, "typeID": 11584 }, { "level": 3, "typeID": 12201 }, { "level": 3, "typeID": 12202 }, { "level": 3, "typeID": 12204 }, { "level": 3, "typeID": 12206 }, { "level": 3, "typeID": 12208 }, { "level": 3, "typeID": 12210 }, { "level": 3, "typeID": 12211 }, { "level": 3, "typeID": 12213 }, { "level": 3, "typeID": 12214 }, { "level": 4, "typeID": 12305 }, { "level": 2, "typeID": 12365 }, { "level": 2, "typeID": 12366 }, { "level": 2, "typeID": 12367 }, { "level": 4, "typeID": 12441 }, { "level": 2, "typeID": 12442 }, { "level": 2, "typeID": 12484 }, { "level": 2, "typeID": 12485 }, { "level": 2, "typeID": 12486 }, { "level": 2, "typeID": 12487 }, { "level": 3, "typeID": 13278 }, { "level": 3, "typeID": 16069 }, { "level": 2, "typeID": 16598 }, { "level": 3, "typeID": 19921 }, { "level": 3, "typeID": 20209 }, { "level": 3, "typeID": 20210 }, { "level": 3, "typeID": 20211 }, { "level": 3, "typeID": 20312 }, { "level": 3, "typeID": 20314 }, { "level": 3, "typeID": 20315 }, { "level": 4, "typeID": 21059 }, { "level": 4, "typeID": 21071 }, { "level": 3, "typeID": 21718 }, { "level": 4, "typeID": 22578 }, { "level": 2, "typeID": 22806 }, { "level": 2, "typeID": 22807 }, { "level": 2, "typeID": 22808 }, { "level": 2, "typeID": 22809 }, { "level": 4, "typeID": 23606 }, { "level": 4, "typeID": 23618 }, { "level": 5, "typeID": 24241 }, { "level": 1, "typeID": 24242 }, { "level": 3, "typeID": 25544 }, { "level": 3, "typeID": 25718 }, { "level": 5, "typeID": 25719 }, { "level": 2, "typeID": 25739 }, { "level": 2, "typeID": 25811 }, { "level": 3, "typeID": 25863 }, { "level": 3, "typeID": 26252 }, { "level": 3, "typeID": 26253 }, { "level": 3, "typeID": 26254 }, { "level": 3, "typeID": 26255 }, { "level": 3, "typeID": 26256 }, { "level": 3, "typeID": 26257 }, { "level": 3, "typeID": 26258 }, { "level": 3, "typeID": 26259 }, { "level": 3, "typeID": 26260 }, { "level": 3, "typeID": 26261 }, { "level": 2, "typeID": 27902 }, { "level": 4, "typeID": 28164 }, { "level": 4, "typeID": 32918 }, { "level": 1, "typeID": 33078 }, { "level": 4, "typeID": 33091 }, { "level": 4, "typeID": 33092 }, { "level": 4, "typeID": 33093 }, { "level": 4, "typeID": 33094 }, { "level": 4, "typeID": 33095 }, { "level": 4, "typeID": 33096 }, { "level": 4, "typeID": 33097 }, { "level": 4, "typeID": 33098 }, { "level": 4, "typeID": 33699 }, { "level": 1, "typeID": 45746 }, { "level": 2, "typeID": 89241 }, { "level": 3, "typeID": 90727 }, { "level": 2, "typeID": 91017 } ] }, "2": { "internalDescription": "Alpha Minmatar", "skills": [ { "level": 5, "typeID": 3300 }, { "level": 5, "typeID": 3301 }, { "level": 5, "typeID": 3302 }, { "level": 5, "typeID": 3303 }, { "level": 5, "typeID": 3304 }, { "level": 5, "typeID": 3305 }, { "level": 5, "typeID": 3306 }, { "level": 4, "typeID": 3307 }, { "level": 4, "typeID": 3308 }, { "level": 4, "typeID": 3309 }, { "level": 4, "typeID": 3310 }, { "level": 4, "typeID": 3311 }, { "level": 4, "typeID": 3312 }, { "level": 4, "typeID": 3315 }, { "level": 4, "typeID": 3316 }, { "level": 4, "typeID": 3317 }, { "level": 5, "typeID": 3318 }, { "level": 5, "typeID": 3319 }, { "level": 5, "typeID": 3320 }, { "level": 5, "typeID": 3321 }, { "level": 5, "typeID": 3324 }, { "level": 4, "typeID": 3325 }, { "level": 4, "typeID": 3326 }, { "level": 4, "typeID": 3327 }, { "level": 4, "typeID": 3328 }, { "level": 4, "typeID": 3329 }, { "level": 4, "typeID": 3330 }, { "level": 4, "typeID": 3331 }, { "level": 4, "typeID": 3332 }, { "level": 4, "typeID": 3333 }, { "level": 4, "typeID": 3334 }, { "level": 4, "typeID": 3335 }, { "level": 4, "typeID": 3336 }, { "level": 4, "typeID": 3337 }, { "level": 4, "typeID": 3338 }, { "level": 4, "typeID": 3339 }, { "level": 1, "typeID": 3340 }, { "level": 1, "typeID": 3341 }, { "level": 1, "typeID": 3342 }, { "level": 1, "typeID": 3343 }, { "level": 3, "typeID": 3348 }, { "level": 3, "typeID": 3355 }, { "level": 2, "typeID": 3356 }, { "level": 3, "typeID": 3357 }, { "level": 2, "typeID": 3359 }, { "level": 2, "typeID": 3361 }, { "level": 1, "typeID": 3363 }, { "level": 5, "typeID": 3380 }, { "level": 3, "typeID": 3385 }, { "level": 4, "typeID": 3386 }, { "level": 3, "typeID": 3387 }, { "level": 5, "typeID": 3392 }, { "level": 5, "typeID": 3393 }, { "level": 5, "typeID": 3394 }, { "level": 4, "typeID": 3402 }, { "level": 3, "typeID": 3405 }, { "level": 3, "typeID": 3411 }, { "level": 3, "typeID": 3412 }, { "level": 5, "typeID": 3413 }, { "level": 4, "typeID": 3416 }, { "level": 3, "typeID": 3417 }, { "level": 4, "typeID": 3418 }, { "level": 4, "typeID": 3419 }, { "level": 4, "typeID": 3420 }, { "level": 2, "typeID": 3421 }, { "level": 3, "typeID": 3422 }, { "level": 4, "typeID": 3423 }, { "level": 5, "typeID": 3424 }, { "level": 4, "typeID": 3425 }, { "level": 5, "typeID": 3426 }, { "level": 4, "typeID": 3427 }, { "level": 3, "typeID": 3428 }, { "level": 4, "typeID": 3429 }, { "level": 3, "typeID": 3431 }, { "level": 5, "typeID": 3432 }, { "level": 3, "typeID": 3433 }, { "level": 4, "typeID": 3434 }, { "level": 4, "typeID": 3435 }, { "level": 5, "typeID": 3436 }, { "level": 4, "typeID": 3437 }, { "level": 2, "typeID": 3439 }, { "level": 3, "typeID": 3441 }, { "level": 3, "typeID": 3442 }, { "level": 3, "typeID": 3443 }, { "level": 2, "typeID": 3446 }, { "level": 4, "typeID": 3449 }, { "level": 3, "typeID": 3450 }, { "level": 3, "typeID": 3452 }, { "level": 3, "typeID": 3453 }, { "level": 3, "typeID": 3454 }, { "level": 3, "typeID": 3455 }, { "level": 3, "typeID": 3551 }, { "level": 2, "typeID": 3893 }, { "level": 2, "typeID": 3894 }, { "level": 2, "typeID": 3895 }, { "level": 3, "typeID": 11082 }, { "level": 3, "typeID": 11083 }, { "level": 3, "typeID": 11084 }, { "level": 3, "typeID": 11207 }, { "level": 2, "typeID": 11566 }, { "level": 1, "typeID": 11584 }, { "level": 3, "typeID": 12201 }, { "level": 3, "typeID": 12202 }, { "level": 3, "typeID": 12204 }, { "level": 3, "typeID": 12206 }, { "level": 3, "typeID": 12208 }, { "level": 3, "typeID": 12210 }, { "level": 3, "typeID": 12211 }, { "level": 3, "typeID": 12213 }, { "level": 3, "typeID": 12214 }, { "level": 4, "typeID": 12305 }, { "level": 2, "typeID": 12365 }, { "level": 2, "typeID": 12366 }, { "level": 2, "typeID": 12367 }, { "level": 4, "typeID": 12441 }, { "level": 2, "typeID": 12442 }, { "level": 2, "typeID": 12484 }, { "level": 2, "typeID": 12485 }, { "level": 2, "typeID": 12486 }, { "level": 2, "typeID": 12487 }, { "level": 3, "typeID": 13278 }, { "level": 3, "typeID": 16069 }, { "level": 2, "typeID": 16598 }, { "level": 3, "typeID": 19921 }, { "level": 3, "typeID": 20209 }, { "level": 3, "typeID": 20210 }, { "level": 3, "typeID": 20211 }, { "level": 3, "typeID": 20312 }, { "level": 3, "typeID": 20314 }, { "level": 3, "typeID": 20315 }, { "level": 4, "typeID": 21059 }, { "level": 4, "typeID": 21071 }, { "level": 3, "typeID": 21718 }, { "level": 4, "typeID": 22578 }, { "level": 2, "typeID": 22806 }, { "level": 2, "typeID": 22807 }, { "level": 2, "typeID": 22808 }, { "level": 2, "typeID": 22809 }, { "level": 4, "typeID": 23606 }, { "level": 4, "typeID": 23618 }, { "level": 5, "typeID": 24241 }, { "level": 1, "typeID": 24242 }, { "level": 3, "typeID": 25544 }, { "level": 3, "typeID": 25718 }, { "level": 5, "typeID": 25719 }, { "level": 2, "typeID": 25739 }, { "level": 2, "typeID": 25811 }, { "level": 3, "typeID": 25863 }, { "level": 3, "typeID": 26252 }, { "level": 3, "typeID": 26253 }, { "level": 3, "typeID": 26254 }, { "level": 3, "typeID": 26255 }, { "level": 3, "typeID": 26256 }, { "level": 3, "typeID": 26257 }, { "level": 3, "typeID": 26258 }, { "level": 3, "typeID": 26259 }, { "level": 3, "typeID": 26260 }, { "level": 3, "typeID": 26261 }, { "level": 2, "typeID": 27902 }, { "level": 4, "typeID": 28164 }, { "level": 4, "typeID": 32918 }, { "level": 1, "typeID": 33078 }, { "level": 4, "typeID": 33091 }, { "level": 4, "typeID": 33092 }, { "level": 4, "typeID": 33093 }, { "level": 4, "typeID": 33094 }, { "level": 4, "typeID": 33095 }, { "level": 4, "typeID": 33096 }, { "level": 4, "typeID": 33097 }, { "level": 4, "typeID": 33098 }, { "level": 4, "typeID": 33699 }, { "level": 1, "typeID": 45746 }, { "level": 2, "typeID": 89241 }, { "level": 3, "typeID": 90727 }, { "level": 2, "typeID": 91017 } ] }, "4": { "internalDescription": "Alpha Amarr", "skills": [ { "level": 5, "typeID": 3300 }, { "level": 5, "typeID": 3301 }, { "level": 5, "typeID": 3302 }, { "level": 5, "typeID": 3303 }, { "level": 5, "typeID": 3304 }, { "level": 5, "typeID": 3305 }, { "level": 5, "typeID": 3306 }, { "level": 4, "typeID": 3307 }, { "level": 4, "typeID": 3308 }, { "level": 4, "typeID": 3309 }, { "level": 4, "typeID": 3310 }, { "level": 4, "typeID": 3311 }, { "level": 4, "typeID": 3312 }, { "level": 4, "typeID": 3315 }, { "level": 4, "typeID": 3316 }, { "level": 4, "typeID": 3317 }, { "level": 5, "typeID": 3318 }, { "level": 5, "typeID": 3319 }, { "level": 5, "typeID": 3320 }, { "level": 5, "typeID": 3321 }, { "level": 5, "typeID": 3324 }, { "level": 4, "typeID": 3325 }, { "level": 4, "typeID": 3326 }, { "level": 4, "typeID": 3327 }, { "level": 4, "typeID": 3328 }, { "level": 4, "typeID": 3329 }, { "level": 4, "typeID": 3330 }, { "level": 4, "typeID": 3331 }, { "level": 4, "typeID": 3332 }, { "level": 4, "typeID": 3333 }, { "level": 4, "typeID": 3334 }, { "level": 4, "typeID": 3335 }, { "level": 4, "typeID": 3336 }, { "level": 4, "typeID": 3337 }, { "level": 4, "typeID": 3338 }, { "level": 4, "typeID": 3339 }, { "level": 1, "typeID": 3340 }, { "level": 1, "typeID": 3341 }, { "level": 1, "typeID": 3342 }, { "level": 1, "typeID": 3343 }, { "level": 3, "typeID": 3348 }, { "level": 3, "typeID": 3355 }, { "level": 2, "typeID": 3356 }, { "level": 3, "typeID": 3357 }, { "level": 2, "typeID": 3359 }, { "level": 2, "typeID": 3361 }, { "level": 1, "typeID": 3363 }, { "level": 5, "typeID": 3380 }, { "level": 3, "typeID": 3385 }, { "level": 4, "typeID": 3386 }, { "level": 3, "typeID": 3387 }, { "level": 5, "typeID": 3392 }, { "level": 5, "typeID": 3393 }, { "level": 5, "typeID": 3394 }, { "level": 4, "typeID": 3402 }, { "level": 3, "typeID": 3405 }, { "level": 3, "typeID": 3411 }, { "level": 3, "typeID": 3412 }, { "level": 5, "typeID": 3413 }, { "level": 4, "typeID": 3416 }, { "level": 3, "typeID": 3417 }, { "level": 4, "typeID": 3418 }, { "level": 4, "typeID": 3419 }, { "level": 4, "typeID": 3420 }, { "level": 2, "typeID": 3421 }, { "level": 3, "typeID": 3422 }, { "level": 4, "typeID": 3423 }, { "level": 5, "typeID": 3424 }, { "level": 4, "typeID": 3425 }, { "level": 5, "typeID": 3426 }, { "level": 4, "typeID": 3427 }, { "level": 3, "typeID": 3428 }, { "level": 4, "typeID": 3429 }, { "level": 3, "typeID": 3431 }, { "level": 5, "typeID": 3432 }, { "level": 3, "typeID": 3433 }, { "level": 4, "typeID": 3434 }, { "level": 4, "typeID": 3435 }, { "level": 5, "typeID": 3436 }, { "level": 4, "typeID": 3437 }, { "level": 2, "typeID": 3439 }, { "level": 3, "typeID": 3441 }, { "level": 3, "typeID": 3442 }, { "level": 3, "typeID": 3443 }, { "level": 2, "typeID": 3446 }, { "level": 4, "typeID": 3449 }, { "level": 3, "typeID": 3450 }, { "level": 3, "typeID": 3452 }, { "level": 3, "typeID": 3453 }, { "level": 3, "typeID": 3454 }, { "level": 3, "typeID": 3455 }, { "level": 3, "typeID": 3551 }, { "level": 2, "typeID": 3893 }, { "level": 2, "typeID": 3894 }, { "level": 2, "typeID": 3895 }, { "level": 3, "typeID": 11082 }, { "level": 3, "typeID": 11083 }, { "level": 3, "typeID": 11084 }, { "level": 3, "typeID": 11207 }, { "level": 2, "typeID": 11566 }, { "level": 1, "typeID": 11584 }, { "level": 3, "typeID": 12201 }, { "level": 3, "typeID": 12202 }, { "level": 3, "typeID": 12204 }, { "level": 3, "typeID": 12206 }, { "level": 3, "typeID": 12208 }, { "level": 3, "typeID": 12210 }, { "level": 3, "typeID": 12211 }, { "level": 3, "typeID": 12213 }, { "level": 3, "typeID": 12214 }, { "level": 4, "typeID": 12305 }, { "level": 2, "typeID": 12365 }, { "level": 2, "typeID": 12366 }, { "level": 2, "typeID": 12367 }, { "level": 4, "typeID": 12441 }, { "level": 2, "typeID": 12442 }, { "level": 2, "typeID": 12484 }, { "level": 2, "typeID": 12485 }, { "level": 2, "typeID": 12486 }, { "level": 2, "typeID": 12487 }, { "level": 3, "typeID": 13278 }, { "level": 3, "typeID": 16069 }, { "level": 2, "typeID": 16598 }, { "level": 3, "typeID": 19921 }, { "level": 3, "typeID": 20209 }, { "level": 3, "typeID": 20210 }, { "level": 3, "typeID": 20211 }, { "level": 3, "typeID": 20312 }, { "level": 3, "typeID": 20314 }, { "level": 3, "typeID": 20315 }, { "level": 4, "typeID": 21059 }, { "level": 4, "typeID": 21071 }, { "level": 3, "typeID": 21718 }, { "level": 4, "typeID": 22578 }, { "level": 2, "typeID": 22806 }, { "level": 2, "typeID": 22807 }, { "level": 2, "typeID": 22808 }, { "level": 2, "typeID": 22809 }, { "level": 4, "typeID": 23606 }, { "level": 4, "typeID": 23618 }, { "level": 5, "typeID": 24241 }, { "level": 1, "typeID": 24242 }, { "level": 3, "typeID": 25544 }, { "level": 3, "typeID": 25718 }, { "level": 5, "typeID": 25719 }, { "level": 2, "typeID": 25739 }, { "level": 2, "typeID": 25811 }, { "level": 3, "typeID": 25863 }, { "level": 3, "typeID": 26252 }, { "level": 3, "typeID": 26253 }, { "level": 3, "typeID": 26254 }, { "level": 3, "typeID": 26255 }, { "level": 3, "typeID": 26256 }, { "level": 3, "typeID": 26257 }, { "level": 3, "typeID": 26258 }, { "level": 3, "typeID": 26259 }, { "level": 3, "typeID": 26260 }, { "level": 3, "typeID": 26261 }, { "level": 2, "typeID": 27902 }, { "level": 4, "typeID": 28164 }, { "level": 4, "typeID": 32918 }, { "level": 1, "typeID": 33078 }, { "level": 4, "typeID": 33091 }, { "level": 4, "typeID": 33092 }, { "level": 4, "typeID": 33093 }, { "level": 4, "typeID": 33094 }, { "level": 4, "typeID": 33095 }, { "level": 4, "typeID": 33096 }, { "level": 4, "typeID": 33097 }, { "level": 4, "typeID": 33098 }, { "level": 4, "typeID": 33699 }, { "level": 1, "typeID": 45746 }, { "level": 2, "typeID": 89241 }, { "level": 3, "typeID": 90727 }, { "level": 2, "typeID": 91017 } ] }, "8": { "internalDescription": "Alpha Gallente", "skills": [ { "level": 5, "typeID": 3300 }, { "level": 5, "typeID": 3301 }, { "level": 5, "typeID": 3302 }, { "level": 5, "typeID": 3303 }, { "level": 5, "typeID": 3304 }, { "level": 5, "typeID": 3305 }, { "level": 5, "typeID": 3306 }, { "level": 4, "typeID": 3307 }, { "level": 4, "typeID": 3308 }, { "level": 4, "typeID": 3309 }, { "level": 4, "typeID": 3310 }, { "level": 4, "typeID": 3311 }, { "level": 4, "typeID": 3312 }, { "level": 4, "typeID": 3315 }, { "level": 4, "typeID": 3316 }, { "level": 4, "typeID": 3317 }, { "level": 5, "typeID": 3318 }, { "level": 5, "typeID": 3319 }, { "level": 5, "typeID": 3320 }, { "level": 5, "typeID": 3321 }, { "level": 5, "typeID": 3324 }, { "level": 4, "typeID": 3325 }, { "level": 4, "typeID": 3326 }, { "level": 4, "typeID": 3327 }, { "level": 4, "typeID": 3328 }, { "level": 4, "typeID": 3329 }, { "level": 4, "typeID": 3330 }, { "level": 4, "typeID": 3331 }, { "level": 4, "typeID": 3332 }, { "level": 4, "typeID": 3333 }, { "level": 4, "typeID": 3334 }, { "level": 4, "typeID": 3335 }, { "level": 4, "typeID": 3336 }, { "level": 4, "typeID": 3337 }, { "level": 4, "typeID": 3338 }, { "level": 4, "typeID": 3339 }, { "level": 1, "typeID": 3340 }, { "level": 1, "typeID": 3341 }, { "level": 1, "typeID": 3342 }, { "level": 1, "typeID": 3343 }, { "level": 3, "typeID": 3348 }, { "level": 3, "typeID": 3355 }, { "level": 2, "typeID": 3356 }, { "level": 3, "typeID": 3357 }, { "level": 2, "typeID": 3359 }, { "level": 2, "typeID": 3361 }, { "level": 1, "typeID": 3363 }, { "level": 5, "typeID": 3380 }, { "level": 3, "typeID": 3385 }, { "level": 4, "typeID": 3386 }, { "level": 3, "typeID": 3387 }, { "level": 5, "typeID": 3392 }, { "level": 5, "typeID": 3393 }, { "level": 5, "typeID": 3394 }, { "level": 4, "typeID": 3402 }, { "level": 3, "typeID": 3405 }, { "level": 3, "typeID": 3411 }, { "level": 3, "typeID": 3412 }, { "level": 5, "typeID": 3413 }, { "level": 4, "typeID": 3416 }, { "level": 3, "typeID": 3417 }, { "level": 4, "typeID": 3418 }, { "level": 4, "typeID": 3419 }, { "level": 4, "typeID": 3420 }, { "level": 2, "typeID": 3421 }, { "level": 3, "typeID": 3422 }, { "level": 4, "typeID": 3423 }, { "level": 5, "typeID": 3424 }, { "level": 4, "typeID": 3425 }, { "level": 5, "typeID": 3426 }, { "level": 4, "typeID": 3427 }, { "level": 3, "typeID": 3428 }, { "level": 4, "typeID": 3429 }, { "level": 3, "typeID": 3431 }, { "level": 5, "typeID": 3432 }, { "level": 3, "typeID": 3433 }, { "level": 4, "typeID": 3434 }, { "level": 4, "typeID": 3435 }, { "level": 5, "typeID": 3436 }, { "level": 4, "typeID": 3437 }, { "level": 2, "typeID": 3439 }, { "level": 3, "typeID": 3441 }, { "level": 3, "typeID": 3442 }, { "level": 3, "typeID": 3443 }, { "level": 2, "typeID": 3446 }, { "level": 4, "typeID": 3449 }, { "level": 3, "typeID": 3450 }, { "level": 3, "typeID": 3452 }, { "level": 3, "typeID": 3453 }, { "level": 3, "typeID": 3454 }, { "level": 3, "typeID": 3455 }, { "level": 3, "typeID": 3551 }, { "level": 2, "typeID": 3893 }, { "level": 2, "typeID": 3894 }, { "level": 2, "typeID": 3895 }, { "level": 3, "typeID": 11082 }, { "level": 3, "typeID": 11083 }, { "level": 3, "typeID": 11084 }, { "level": 3, "typeID": 11207 }, { "level": 2, "typeID": 11566 }, { "level": 1, "typeID": 11584 }, { "level": 3, "typeID": 12201 }, { "level": 3, "typeID": 12202 }, { "level": 3, "typeID": 12204 }, { "level": 3, "typeID": 12206 }, { "level": 3, "typeID": 12208 }, { "level": 3, "typeID": 12210 }, { "level": 3, "typeID": 12211 }, { "level": 3, "typeID": 12213 }, { "level": 3, "typeID": 12214 }, { "level": 4, "typeID": 12305 }, { "level": 2, "typeID": 12365 }, { "level": 2, "typeID": 12366 }, { "level": 2, "typeID": 12367 }, { "level": 4, "typeID": 12441 }, { "level": 2, "typeID": 12442 }, { "level": 2, "typeID": 12484 }, { "level": 2, "typeID": 12485 }, { "level": 2, "typeID": 12486 }, { "level": 2, "typeID": 12487 }, { "level": 3, "typeID": 13278 }, { "level": 3, "typeID": 16069 }, { "level": 2, "typeID": 16598 }, { "level": 3, "typeID": 19921 }, { "level": 3, "typeID": 20209 }, { "level": 3, "typeID": 20210 }, { "level": 3, "typeID": 20211 }, { "level": 3, "typeID": 20312 }, { "level": 3, "typeID": 20314 }, { "level": 3, "typeID": 20315 }, { "level": 4, "typeID": 21059 }, { "level": 4, "typeID": 21071 }, { "level": 3, "typeID": 21718 }, { "level": 4, "typeID": 22578 }, { "level": 2, "typeID": 22806 }, { "level": 2, "typeID": 22807 }, { "level": 2, "typeID": 22808 }, { "level": 2, "typeID": 22809 }, { "level": 4, "typeID": 23606 }, { "level": 4, "typeID": 23618 }, { "level": 5, "typeID": 24241 }, { "level": 1, "typeID": 24242 }, { "level": 3, "typeID": 25544 }, { "level": 3, "typeID": 25718 }, { "level": 5, "typeID": 25719 }, { "level": 2, "typeID": 25739 }, { "level": 2, "typeID": 25811 }, { "level": 3, "typeID": 25863 }, { "level": 3, "typeID": 26252 }, { "level": 3, "typeID": 26253 }, { "level": 3, "typeID": 26254 }, { "level": 3, "typeID": 26255 }, { "level": 3, "typeID": 26256 }, { "level": 3, "typeID": 26257 }, { "level": 3, "typeID": 26258 }, { "level": 3, "typeID": 26259 }, { "level": 3, "typeID": 26260 }, { "level": 3, "typeID": 26261 }, { "level": 2, "typeID": 27902 }, { "level": 4, "typeID": 28164 }, { "level": 4, "typeID": 32918 }, { "level": 1, "typeID": 33078 }, { "level": 4, "typeID": 33091 }, { "level": 4, "typeID": 33092 }, { "level": 4, "typeID": 33093 }, { "level": 4, "typeID": 33094 }, { "level": 4, "typeID": 33095 }, { "level": 4, "typeID": 33096 }, { "level": 4, "typeID": 33097 }, { "level": 4, "typeID": 33098 }, { "level": 4, "typeID": 33699 }, { "level": 1, "typeID": 45746 }, { "level": 2, "typeID": 89241 }, { "level": 3, "typeID": 90727 }, { "level": 2, "typeID": 91017 } ] } } ================================================ FILE: staticdata/fsd_lite/dbuffcollections.0.json ================================================ { "1": { "aggregateMode": "Maximum", "developerDescription": "[PROTOTYPE]Test Multi Buff", "itemModifiers": [ { "dogmaAttributeID": 37 }, { "dogmaAttributeID": 76 } ], "locationGroupModifiers": [ { "dogmaAttributeID": 20, "groupID": 46 }, { "dogmaAttributeID": 105, "groupID": 52 } ], "locationModifiers": [ { "dogmaAttributeID": 68 }, { "dogmaAttributeID": 84 } ], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3427 }, { "dogmaAttributeID": 54, "skillID": 3305 } ], "operationName": "PostMul", "showOutputValueInUI": "ShowNormal" }, "2": { "aggregateMode": "Maximum", "developerDescription": "[PROTOTYPE]Test Boost Speed", "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "3": { "aggregateMode": "Minimum", "developerDescription": "Velocity penalty", "displayName_de": "Geschwindigkeitsabzug", "displayName_en-us": "Velocity penalty", "displayName_es": "Penalización de velocidad", "displayName_fr": "Pénalité de vitesse", "displayName_it": "Velocity penalty", "displayName_ja": "速度ペナルティ", "displayName_ko": "속도 페널티", "displayName_ru": "Ограничение скорости", "displayName_zh": "Velocity penalty", "displayNameID": 517442, "itemModifiers": [ { "dogmaAttributeID": 3171 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "4": { "aggregateMode": "Maximum", "developerDescription": "Warp penalty", "displayName_de": "Warpabzug", "displayName_en-us": "Warp penalty", "displayName_es": "Penalización de warp", "displayName_fr": "Pénalité de warp", "displayName_it": "Warp penalty", "displayName_ja": "ワープペナルティ", "displayName_ko": "워프 페널티", "displayName_ru": "Ограничение варп-режима", "displayName_zh": "跃迁惩罚", "displayNameID": 517444, "itemModifiers": [ { "dogmaAttributeID": 104 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "5": { "aggregateMode": "Maximum", "developerDescription": "Disallow Cloak", "displayName_de": "Tarnung verweigern", "displayName_en-us": "Disallow Cloak", "displayName_es": "Desautorizar camuflaje", "displayName_fr": "Ne plus autoriser le camouflage", "displayName_it": "Disallow Cloak", "displayName_ja": "遮蔽不可", "displayName_ko": "클로킹 차단", "displayName_ru": "Запрет маскировки", "displayName_zh": "不允许隐形", "displayNameID": 517760, "itemModifiers": [ { "dogmaAttributeID": 2454 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "6": { "aggregateMode": "Maximum", "developerDescription": "Disallow jump/dock", "displayName_de": "Sprung/Docken verweigern", "displayName_en-us": "Disallow jump/dock", "displayName_es": "Desautorizar salto/acoplamiento", "displayName_fr": "Lever l'autorisation de saut / amarrage", "displayName_it": "Disallow jump/dock", "displayName_ja": "ジャンプ/入港不可", "displayName_ko": "점프/도킹 차단", "displayName_ru": "Запрет гиперпереходов и/или входа в док", "displayName_zh": "不允许跳跃/停靠", "displayNameID": 517825, "itemModifiers": [ { "dogmaAttributeID": 2354 }, { "dogmaAttributeID": 2453 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "7": { "aggregateMode": "Minimum", "developerDescription": "QA Anti-targeting debuff", "displayName_de": "QA Anti-Zielerfassungs-Debuff", "displayName_en-us": "QA Anti-targeting debuff", "displayName_es": "QA Anti-targeting debuff", "displayName_fr": "QA Anti-targeting debuff", "displayName_it": "QA Anti-targeting debuff", "displayName_ja": "QA アンチターゲティングデバフ", "displayName_ko": "QA 안티-타겟팅 디버프", "displayName_ru": "Ограничение сопровождения целей (QA)", "displayName_zh": "QA Anti-targeting debuff", "displayNameID": 517856, "itemModifiers": [ { "dogmaAttributeID": 192 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "ShowNormal" }, "8": { "aggregateMode": "Minimum", "developerDescription": "PANIC: Shield Resistance", "displayName_de": "Schildresistenz", "displayName_en-us": "Shield Resistance", "displayName_es": "Resistencia de escudo", "displayName_fr": "Résistance des boucliers", "displayName_it": "Shield Resistance", "displayName_ja": "シールドレジスタンス", "displayName_ko": "실드 저항력", "displayName_ru": "Сопротивление щитов", "displayName_zh": "护盾抗性", "displayNameID": 518605, "itemModifiers": [ { "dogmaAttributeID": 271 }, { "dogmaAttributeID": 272 }, { "dogmaAttributeID": 273 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "9": { "aggregateMode": "Minimum", "developerDescription": "PANIC: Shield Recharge time", "displayName_de": "Schild-Laderzeitbonus", "displayName_en-us": "Shield recharge time bonus", "displayName_es": "Bonificación de tiempo de carga de escudo", "displayName_fr": "Bonus à la vitesse de recharge des boucliers", "displayName_it": "Shield recharge time bonus", "displayName_ja": "シールドリチャージ時間ボーナス", "displayName_ko": "실드 회복 시간 보너스", "displayName_ru": "Влияние на срок полной регенерации щита", "displayName_zh": "护盾回充时间加成", "displayNameID": 518606, "itemModifiers": [ { "dogmaAttributeID": 479 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "10": { "aggregateMode": "Minimum", "developerDescription": "Shield Burst: Shield Harmonizing: Shield Resistance", "displayName_de": "Schildresistenzbonus", "displayName_en-us": "Shield Resistance Bonus", "displayName_es": "Bonificación de resistencia de escudo", "displayName_fr": "Bonus aux résistances des boucliers", "displayName_it": "Shield Resistance Bonus", "displayName_ja": "シールドレジスタンスボーナス", "displayName_ko": "실드 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость щитов", "displayName_zh": "护盾抗性加成", "displayNameID": 518688, "itemModifiers": [ { "dogmaAttributeID": 271 }, { "dogmaAttributeID": 272 }, { "dogmaAttributeID": 273 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "11": { "aggregateMode": "Minimum", "developerDescription": "Shield Burst: Active Shielding: Repair Duration/Capacitor", "displayName_de": "Schildreparaturmodule: Bonus auf Dauer & Energiespeicherverbrauch", "displayName_en-us": "Shield Repair Modules: Duration & Capacitor-use bonus", "displayName_es": "Módulos de reparación de escudo: Bonificación de duración y uso del condensador", "displayName_fr": "Bonus à la durée de cycle et à l'économie de capaciteur des modules de réparation de boucliers", "displayName_it": "Shield Repair Modules: Duration & Capacitor-use bonus", "displayName_ja": "シールドリペアモジュール: 持続時間とキャパシタ消費量にボーナス", "displayName_ko": "실드 수리 모듈: 수리 사이클 시간 및 캐패시터 사용량 보너스", "displayName_ru": "Влияние на цикл и потребление энергии модулями накачки щитов", "displayName_zh": "护盾维修装备:持续时间和电容消耗加成", "displayNameID": 518698, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3416 }, { "dogmaAttributeID": 6, "skillID": 3422 }, { "dogmaAttributeID": 6, "skillID": 24571 }, { "dogmaAttributeID": 73, "skillID": 3416 }, { "dogmaAttributeID": 73, "skillID": 3422 }, { "dogmaAttributeID": 73, "skillID": 24571 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "12": { "aggregateMode": "Maximum", "developerDescription": "Shield Burst: Shield Extension: Shield HP", "displayName_de": "Schild-HP-Bonus", "displayName_en-us": "Shield HP Bonus", "displayName_es": "Bonificación de PV de escudo", "displayName_fr": "Bonus aux PV des boucliers", "displayName_it": "Shield HP Bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 518699, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "13": { "aggregateMode": "Minimum", "developerDescription": "Armor Burst: Armor Energizing: Armor Resistance", "displayName_de": "Panzerungsresistenzbonus", "displayName_en-us": "Armor Resistance Bonus", "displayName_es": "Bonificación de resistencia de blindaje", "displayName_fr": "Bonus aux résistances de blindage", "displayName_it": "Armor Resistance Bonus", "displayName_ja": "アーマー耐性ボーナス", "displayName_ko": "장갑 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость брони", "displayName_zh": "装甲抗性加成", "displayNameID": 518709, "itemModifiers": [ { "dogmaAttributeID": 267 }, { "dogmaAttributeID": 268 }, { "dogmaAttributeID": 269 }, { "dogmaAttributeID": 270 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "14": { "aggregateMode": "Minimum", "developerDescription": "Armor Burst: Rapid Repair: Repair Duration/Capacitor", "displayName_de": "Panzerungsreperaturmodule: Bonus auf Dauer & Energiespeicherverbrauch", "displayName_en-us": "Armor Repair Modules: Duration & Capacitor-use bonus", "displayName_es": "Módulos de reparación de blindaje: Bonificación de duración y uso del condensador", "displayName_fr": "Bonus à la durée de cycle et à l'économie de capaciteur des modules de réparation de blindage", "displayName_it": "Armor Repair Modules: Duration & Capacitor-use bonus", "displayName_ja": "アーマーリペアモジュール: 持続時間とキャパシタ消費量にボーナス", "displayName_ko": "장갑 수리 모듈: 수리 사이클 시간 및 캐패시터 사용량 보너스", "displayName_ru": "Влияние на цикл и потребление энергии модулями ремонта брони", "displayName_zh": "装甲维修装备:持续时间和电容消耗加成", "displayNameID": 518710, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3393 }, { "dogmaAttributeID": 6, "skillID": 16069 }, { "dogmaAttributeID": 6, "skillID": 24568 }, { "dogmaAttributeID": 73, "skillID": 3393 }, { "dogmaAttributeID": 73, "skillID": 16069 }, { "dogmaAttributeID": 73, "skillID": 24568 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "15": { "aggregateMode": "Maximum", "developerDescription": "Armor Burst: Armor Reinforcement: Armor HP", "displayName_de": "Panzerung-HP-Bonus", "displayName_en-us": "Armor HP Bonus", "displayName_es": "Bonificación de PV de blindaje", "displayName_fr": "Bonus aux PV de blindage", "displayName_it": "Armor HP Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 518711, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "16": { "aggregateMode": "Maximum", "developerDescription": "Information Burst: Sensor Optimization: Scan Resolution", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus à la résolution de scan", "displayName_it": "Scan Resolution bonus", "displayName_ja": "スキャン解像度ボーナス", "displayName_ko": "스캔 해상도 보너스", "displayName_ru": "Влияние на разрешающую способность при захвате целей", "displayName_zh": "扫描分辨率加成", "displayNameID": 518713, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "17": { "aggregateMode": "Maximum", "developerDescription": "Information Burst: Electronic Superiority: EWAR Range and Strength", "displayName_de": "Module zur elektronischen Kriegsführung: Reichweite- und Stärkebonus", "displayName_en-us": "Electronic Warfare modules: Range and Strength bonus", "displayName_es": "Módulos de guerra electrónica: Bonificación de alcance e intensidad", "displayName_fr": "Bonus à la portée et à la puissance des modules de guerre électronique", "displayName_it": "Electronic Warfare modules: Range and Strength bonus", "displayName_ja": "電子戦モジュール: 範囲と強度ボーナス", "displayName_ko": "전자전 모듈: 타겟팅 사거리와 강도 보너스", "displayName_ru": "Влияние на дальность и силу действия средств РЭБ", "displayName_zh": "电子战装备:范围和强度加成", "displayNameID": 518714, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 54, "groupID": 201 }, { "dogmaAttributeID": 54, "groupID": 208 }, { "dogmaAttributeID": 54, "groupID": 291 }, { "dogmaAttributeID": 54, "groupID": 379 }, { "dogmaAttributeID": 238, "groupID": 201 }, { "dogmaAttributeID": 239, "groupID": 201 }, { "dogmaAttributeID": 240, "groupID": 201 }, { "dogmaAttributeID": 241, "groupID": 201 }, { "dogmaAttributeID": 309, "groupID": 208 }, { "dogmaAttributeID": 349, "groupID": 291 }, { "dogmaAttributeID": 351, "groupID": 291 }, { "dogmaAttributeID": 547, "groupID": 291 }, { "dogmaAttributeID": 554, "groupID": 379 }, { "dogmaAttributeID": 566, "groupID": 208 }, { "dogmaAttributeID": 596, "groupID": 291 }, { "dogmaAttributeID": 767, "groupID": 291 }, { "dogmaAttributeID": 847, "groupID": 291 }, { "dogmaAttributeID": 848, "groupID": 291 }, { "dogmaAttributeID": 2044, "groupID": 201 }, { "dogmaAttributeID": 2044, "groupID": 208 }, { "dogmaAttributeID": 2044, "groupID": 291 }, { "dogmaAttributeID": 2044, "groupID": 379 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "18": { "aggregateMode": "Maximum", "developerDescription": "Information Burst: Electronic Hardening: Sensor Strength", "displayName_de": "Bonus für Sensorstärke", "displayName_en-us": "Sensor Strength bonus", "displayName_es": "Bonificación de intensidad del sensor", "displayName_fr": "Bonus de puissance de détection", "displayName_it": "Sensor Strength bonus", "displayName_ja": "センサー強度ボーナス", "displayName_ko": "센서 강도 보너스", "displayName_ru": "Влияние на эффективность систем захвата целей", "displayName_zh": "感应强度加成", "displayNameID": 518715, "itemModifiers": [ { "dogmaAttributeID": 208 }, { "dogmaAttributeID": 209 }, { "dogmaAttributeID": 210 }, { "dogmaAttributeID": 211 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "19": { "aggregateMode": "Minimum", "developerDescription": "Information Burst: Electronic Hardening: RSD/RWD Resistance", "displayName_de": "Sensorferndämpfer- / Waffenfernstörer-Resistenzbonus", "displayName_en-us": "Remote Sensor Dampener / Remote Weapon Disruption Resistance bonus", "displayName_es": "Bonificación de resistencia de atenuador de sensor remoto y disrupción de armas remota", "displayName_fr": "Bonus de résistance contre les atténuateurs de détection à distance et aux perturbateurs d'armement à distance", "displayName_it": "Remote Sensor Dampener / Remote Weapon Disruption Resistance bonus", "displayName_ja": "リモートセンサーダンプナー/リモート兵器妨害耐性ボーナス", "displayName_ko": "원격 센서 교란 / 원격 무기 교란 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость помехам на наводку орудий/захват целей", "displayName_zh": "远程感应抑阻器/远程武器扰断器抗性加成", "displayNameID": 518900, "itemModifiers": [ { "dogmaAttributeID": 2112 }, { "dogmaAttributeID": 2113 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "20": { "aggregateMode": "Minimum", "developerDescription": "Skirmish Burst: Evasive Maneuvers: Signature Radius", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus au rayon de signature", "displayName_it": "Signature Radius bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 518716, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "21": { "aggregateMode": "Maximum", "developerDescription": "Skirmish Burst: Interdiction Maneuvers: Tackle Range", "displayName_de": "Antriebsstörmodul-Reichweitenbonus", "displayName_en-us": "Propulsion disruption module range bonus", "displayName_es": "Bonificación de alcance de módulo de disrupción de propulsión", "displayName_fr": "Bonus à la portée des modules de perturbation des propulsions", "displayName_it": "Propulsion disruption module range bonus", "displayName_ja": "推進力阻害モジュール範囲ボーナス", "displayName_ko": "추진 방해 모듈 사거리 보너스", "displayName_ru": "Повышен радиус действия средств ограничения подвижности", "displayName_zh": "推进阻扰装备范围加成", "displayNameID": 518717, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3435 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "22": { "aggregateMode": "Maximum", "developerDescription": "Skirmish Burst: Rapid Deployment: AB/MWD Speed Increase", "displayName_de": "Bonus auf die Geschwindigkeitserhöhung von AB/MWD-Modulen", "displayName_en-us": "AB/MWD module speed increase bonus", "displayName_es": "Bonificación de aumento de velocidad de módulo de PQ/MMC", "displayName_fr": "Bonus à la vitesse de propulsion des PC et des PMW", "displayName_it": "AB/MWD module speed increase bonus", "displayName_ja": "AB/MWDモジュール速度増加ボーナス", "displayName_ko": "애프터버너/MWD 모듈의 속도 증가 보너스", "displayName_ru": "Влияние на эффективность форсажных ускорителей/микроварп-ускорителей", "displayName_zh": "加力燃烧器/微型跃迁推进器速度增量加成", "displayNameID": 518718, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 20, "skillID": 3450 }, { "dogmaAttributeID": 20, "skillID": 3454 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "23": { "aggregateMode": "Maximum", "developerDescription": "Mining Burst: Mining Laser Field Enhancement: Mining Range", "displayName_de": "Bergbaumodul-Reichweitenbonus", "displayName_en-us": "Mining module range bonus", "displayName_es": "Bonificación de alcance del módulo de minería", "displayName_fr": "Bonus à la portée du module d'extraction", "displayName_it": "Mining module range bonus", "displayName_ja": "採掘モジュール射程ボーナス", "displayName_ko": "채굴 모듈 범위 보너스", "displayName_ru": "Увеличение дальности буровых модулей", "displayName_zh": "采矿装备范围加成", "displayNameID": 518720, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3386 }, { "dogmaAttributeID": 54, "skillID": 16281 }, { "dogmaAttributeID": 54, "skillID": 25544 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "24": { "aggregateMode": "Minimum", "developerDescription": "Mining Burst: Mining Laser Optimization: Mining Capacitor/Duration", "displayName_de": "Bergbaumodule: Bonus auf Dauer & Energiespeicherverbrauch", "displayName_en-us": "Mining Modules: Duration & Capacitor-use bonus", "displayName_es": "Módulos de minería: Bonificación de duración y uso del condensador", "displayName_fr": "Bonus à la durée de cycle et à l'économie de capaciteur des modules d'extraction minière", "displayName_it": "Mining Modules: Duration & Capacitor-use bonus", "displayName_ja": "採掘モジュール: 持続時間とキャパシタ消費量にボーナス", "displayName_ko": "채굴 모듈: 지속시간 및 캐패시터 사용량 보너스", "displayName_ru": "Влияние на цикл и потребление энергии буровых модулей", "displayName_zh": "采矿装备:持续时间和电容消耗加成", "displayNameID": 518721, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3386 }, { "dogmaAttributeID": 6, "skillID": 16281 }, { "dogmaAttributeID": 6, "skillID": 25544 }, { "dogmaAttributeID": 73, "skillID": 3386 }, { "dogmaAttributeID": 73, "skillID": 16281 }, { "dogmaAttributeID": 73, "skillID": 25544 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "25": { "aggregateMode": "Minimum", "developerDescription": "Mining Burst: Mining Equipment Preservation: Crystal Volatility", "displayName_de": "Bergbaukristall-Schwankungsbonus", "displayName_en-us": "Mining crystal volatility bonus", "displayName_es": "Bonificación de volatilidad de cristal de minería", "displayName_fr": "Bonus à la durabilité des cristaux d'extraction", "displayName_it": "Mining crystal volatility bonus", "displayName_ja": "採掘クリスタル変動性ボーナス", "displayName_ko": "채광용 크리스탈 휘발성 보너스", "displayName_ru": "Влияние на хрупкость буровых кристаллов", "displayName_zh": "采矿晶体耐久度加成", "displayNameID": 518722, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 783, "skillID": 3386 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "26": { "aggregateMode": "Maximum", "developerDescription": "Information Burst: Sensor Optimization: Targeting Range", "displayName_de": "Zielaufschaltungsreichweite-Bonus", "displayName_en-us": "Targeting Range bonus", "displayName_es": "Bonificación de distancia-objetivo", "displayName_fr": "Bonus à la portée de ciblage", "displayName_it": "Targeting Range bonus", "displayName_ja": "ターゲット範囲ボーナス", "displayName_ko": "타겟팅 거리 보너스", "displayName_ru": "Влияние на дальность захвата целей", "displayName_zh": "锁定距离加成", "displayNameID": 519020, "itemModifiers": [ { "dogmaAttributeID": 76 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "27": { "aggregateMode": "Minimum", "developerDescription": "Stasis Webification Burst", "displayName_de": "Geschwindigkeitsabzug für Stasisnetz", "displayName_en-us": "Stasis Webification speed penalty", "displayName_es": "Penalización de velocidad de red ralentizadora", "displayName_fr": "Pénalité de vitesse sur la génération de stase", "displayName_it": "Stasis Webification speed penalty", "displayName_ja": "ステイシスウェビファイヤー速度ペナルティ", "displayName_ko": "스테이시스 웹 속도 페널티", "displayName_ru": "Штраф к скорости от стазис-индукторов", "displayName_zh": "停滞缠绕光束速度惩罚", "displayNameID": 519288, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "28": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Turret Max Range", "displayName_de": "Geschützturm-Maximalreichweitenabzug", "displayName_en-us": "Turret maximum range penalty", "displayName_es": "Penalización de alcance máximo de torreta", "displayName_fr": "Pénalité de portée maximale sur les tourelles", "displayName_it": "Turret maximum range penalty", "displayName_ja": "タレット最大射程ペナルティ", "displayName_ko": "터렛 최대사거리 페널티", "displayName_ru": "Штраф на максимальную дальность орудий", "displayName_zh": "炮台最大距离惩罚", "displayNameID": 519290, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "29": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Turret Falloff Range", "displayName_de": "Geschützturm-Präzisionsabfall-Reichweitenabzug", "displayName_en-us": "Turret falloff range penalty", "displayName_es": "Penalización de alcance efectivo de torreta", "displayName_fr": "Pénalité de portée de déperdition sur les tourelles", "displayName_it": "Turret falloff range penalty", "displayName_ja": "タレット精度低下範囲ペナルティ", "displayName_ko": "터렛 유효사거리 페널티", "displayName_ru": "Штраф на добавочную дальность орудий", "displayName_zh": "炮塔失准范围惩罚", "displayNameID": 519294, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 158, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "30": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Turret Tracking", "displayName_de": "Abzug auf Nachführungsgeschwindigkeit von Geschütztürmen", "displayName_en-us": "Turret tracking speed penalty", "displayName_es": "Penalización de velocidad de rastreo de torreta", "displayName_fr": "Pénalité de vitesse de poursuite sur les tourelles", "displayName_it": "Turret tracking speed penalty", "displayName_ja": "タレットトラッキング速度ペナルティ", "displayName_ko": "터렛 트래킹 속도 페널티", "displayName_ru": "Штраф на скорость наводки орудий", "displayName_zh": "炮塔跟踪速度惩罚", "displayNameID": 519291, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "31": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Missile Velocity", "displayName_de": "Lenkwaffengeschwindigkeit-Abzug", "displayName_en-us": "Missile velocity penalty", "displayName_es": "Penalización de velocidad de misiles", "displayName_fr": "Pénalité de vitesse sur les missiles", "displayName_it": "Missile velocity penalty", "displayName_ja": "ミサイル飛行速度ペナルティ", "displayName_ko": "미사일 속도 페널티", "displayName_ru": "Штраф к скорости ракет", "displayName_zh": "导弹飞行速度惩罚", "displayNameID": 519295, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 37, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "32": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Missile Duration", "displayName_de": "Abzug auf Lenkwaffendauer", "displayName_en-us": "Missile duration penalty", "displayName_es": "Penalización de duración de misiles", "displayName_fr": "Pénalité de durée de vol sur les missiles", "displayName_it": "Missile duration penalty", "displayName_ja": "ミサイル飛行時間ペナルティ", "displayName_ko": "미사일 비행시간 페널티", "displayName_ru": "Штраф на время полёта ракет", "displayName_zh": "导弹飞行持续时间惩罚", "displayNameID": 519298, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 281, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "33": { "aggregateMode": "Minimum", "developerDescription": "Weapon Disruption Burst: Missile Explosion Velocity", "displayName_de": "Lenkwaffen-Explosionsgeschwindigkeitsabzug", "displayName_en-us": "Missile Explosion Velocity penalty", "displayName_es": "Penalización de velocidad de explosión de misiles", "displayName_fr": "Pénalité de vitesse d'explosion sur les missiles", "displayName_it": "Missile Explosion Velocity penalty", "displayName_ja": "ミサイル爆発速度ペナルティ", "displayName_ko": "미사일 폭발속도 페널티", "displayName_ru": "Штраф на скорость взрыва ракет", "displayName_zh": "导弹爆炸速度惩罚", "displayNameID": 519292, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 653, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "34": { "aggregateMode": "Maximum", "developerDescription": "Weapon Disruption Burst: Missile Explosion Radius", "displayName_de": "Lenkwaffen-Explosionsradiusabzug", "displayName_en-us": "Missile Explosion Radius penalty", "displayName_es": "Penalización de radio de explosión de misiles", "displayName_fr": "Pénalité de rayon d'explosion sur les missiles", "displayName_it": "Missile Explosion Radius penalty", "displayName_ja": "ミサイル爆発半径ペナルティ", "displayName_ko": "미사일 폭발반경 페널티", "displayName_ru": "Штраф на сигнатуру взрыва ракет", "displayName_zh": "导弹爆炸半径惩罚", "displayNameID": 519293, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 654, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "35": { "aggregateMode": "Minimum", "developerDescription": "Sensor Dampening Burst: Scan Resolution penalty", "displayName_de": "Abzug auf Scanauflösung", "displayName_en-us": "Scan Resolution penalty", "displayName_es": "Penalización de resolución de escaneo", "displayName_fr": "Pénalité de résolution de scan", "displayName_it": "Scan Resolution penalty", "displayName_ja": "スキャン解像度ペナルティ", "displayName_ko": "스캔 해상도 페널티", "displayName_ru": "Штраф на разрешающую способность", "displayName_zh": "扫描分辨率惩罚", "displayNameID": 519296, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "36": { "aggregateMode": "Minimum", "developerDescription": "Sensor Dampening Burst: Max Target Range", "displayName_de": "Abzug auf Zielaufschaltungsreichweite", "displayName_en-us": "Targeting Range penalty", "displayName_es": "Penalización de distancia-objetivo", "displayName_fr": "Pénalité de portée de ciblage", "displayName_it": "Targeting Range penalty", "displayName_ja": "ターゲット範囲ペナルティ", "displayName_ko": "타겟팅 거리 페널티", "displayName_ru": "Штраф на дальность захвата целей", "displayName_zh": "锁定距离惩罚", "displayNameID": 519297, "itemModifiers": [ { "dogmaAttributeID": 76 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "37": { "aggregateMode": "Maximum", "developerDescription": "Target Illumination Burst", "displayName_de": "Abzug auf Signaturradius", "displayName_en-us": "Signature radius penalty", "displayName_es": "Penalización de radio de la señal", "displayName_fr": "Pénalité de rayon de signature", "displayName_it": "Signature radius penalty", "displayName_ja": "シグネチャ半径ペナルティ", "displayName_ko": "시그니처 반경 페널티", "displayName_ru": "Штраф на радиус сигнатуры", "displayName_zh": "信号半径惩罚", "displayNameID": 519299, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "38": { "aggregateMode": "Minimum", "developerDescription": "ECM Burst", "displayName_de": "Maximaler Zielabzug", "displayName_en-us": "Maximum target penalty", "displayName_es": "Penalización de máximo de objetivos", "displayName_fr": "Pénalité du nombre de cibles maximum", "displayName_it": "Maximum target penalty", "displayName_ja": "最大ターゲット数ペナルティ", "displayName_ko": "최대 대상 페널티", "displayName_ru": "Штраф на предельное число захваченных целей", "displayName_zh": "最大锁定数惩罚", "displayNameID": 519329, "itemModifiers": [ { "dogmaAttributeID": 192 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "ShowNormal" }, "39": { "aggregateMode": "Minimum", "developerDescription": "Avatar Effect Generator : Capacitor Recharge bonus", "displayName_de": "Energiespeichers-Wiederaufladeratenbonus", "displayName_en-us": "Capacitor Recharge bonus", "displayName_es": "Bonificación de carga del condensador", "displayName_fr": "Bonus à la recharge du capaciteur", "displayName_it": "Capacitor Recharge bonus", "displayName_ja": "キャパシタリチャージボーナス", "displayName_ko": "캐패시터 충전 보너스", "displayName_ru": "Влияние на регенерацию накопителя", "displayName_zh": "电容回充量加成", "displayNameID": 521911, "itemModifiers": [ { "dogmaAttributeID": 55 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "40": { "aggregateMode": "Minimum", "developerDescription": "Avatar Effect Generator : Kinetic resistance bonus", "displayName_de": "Bonus auf Kinetikresistenz", "displayName_en-us": "Kinetic Resistance bonus", "displayName_es": "Bonificación de resistencia cinética", "displayName_fr": "Bonus aux résistances cinétiques", "displayName_it": "Kinetic Resistance bonus", "displayName_ja": "キネティック耐性ボーナス", "displayName_ko": "키네틱 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость кинетическому урону", "displayName_zh": "动能抗性加成", "displayNameID": 521912, "itemModifiers": [ { "dogmaAttributeID": 109 }, { "dogmaAttributeID": 269 }, { "dogmaAttributeID": 273 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "41": { "aggregateMode": "Maximum", "developerDescription": "Avatar Effect Generator : EM resistance penalty", "displayName_de": "Abzug auf EM-Resistenz", "displayName_en-us": "EM Resistance penalty", "displayName_es": "Penalización de resistencia electromagnética", "displayName_fr": "Pénalité de résistance EM", "displayName_it": "EM Resistance penalty", "displayName_ja": "EM耐性ペナルティ", "displayName_ko": "EM 저항력 페널티", "displayName_ru": "Штраф на сопротивление ЭМ-урону", "displayName_zh": "电磁抗性惩罚", "displayNameID": 521913, "itemModifiers": [ { "dogmaAttributeID": 113 }, { "dogmaAttributeID": 267 }, { "dogmaAttributeID": 271 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "42": { "aggregateMode": "Maximum", "developerDescription": "Erebus Effect Generator : Armor HP bonus", "displayName_de": "Panzerung-HP-Bonus", "displayName_en-us": "Armor HP bonus", "displayName_es": "Bonificación de PV de blindaje", "displayName_fr": "Bonus aux PV de blindage", "displayName_it": "Armor HP bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Влияние на запас прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 521916, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "43": { "aggregateMode": "Minimum", "developerDescription": "Erebus Effect Generator : Explosive resistance bonus", "displayName_de": "Bonus auf Explosionsresistenz", "displayName_en-us": "Explosive Resistance bonus", "displayName_es": "Bonificación de resistencia explosiva", "displayName_fr": "Bonus aux résistances explosives", "displayName_it": "Explosive Resistance bonus", "displayName_ja": "爆発耐性ボーナス", "displayName_ko": "폭발 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость фугасному урону", "displayName_zh": "爆炸抗性加成", "displayNameID": 521917, "itemModifiers": [ { "dogmaAttributeID": 111 }, { "dogmaAttributeID": 268 }, { "dogmaAttributeID": 272 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "44": { "aggregateMode": "Maximum", "developerDescription": "Erebus Effect Generator : Thermal resistance penalty", "displayName_de": "Abzug auf Thermalresistenz", "displayName_en-us": "Thermal Resistance penalty", "displayName_es": "Penalización de resistencia térmica", "displayName_fr": "Pénalité de résistance thermique", "displayName_it": "Thermal Resistance penalty", "displayName_ja": "サーマル耐性ペナルティ", "displayName_ko": "열 저항력 페널티", "displayName_ru": "Штраф на сопротивляемость термическому урону", "displayName_zh": "热能抗性惩罚", "displayNameID": 521918, "itemModifiers": [ { "dogmaAttributeID": 110 }, { "dogmaAttributeID": 270 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "45": { "aggregateMode": "Minimum", "developerDescription": "Ragnarok Effect Generator : Signature Radius bonus", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus au rayon de signature", "displayName_it": "Signature Radius bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Влияние на радиус сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 521921, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "46": { "aggregateMode": "Minimum", "developerDescription": "Ragnarok Effect Generator : Thermal resistance bonus", "displayName_de": "Bonus auf Thermalresistenz", "displayName_en-us": "Thermal Resistance bonus", "displayName_es": "Bonificación de resistencia térmica", "displayName_fr": "Bonus aux résistances thermiques", "displayName_it": "Thermal Resistance bonus", "displayName_ja": "サーマル耐性ボーナス", "displayName_ko": "열 저항력 보너스", "displayName_ru": "Влияние на сопротивляемость термическому урону", "displayName_zh": "热能抗性加成", "displayNameID": 521919, "itemModifiers": [ { "dogmaAttributeID": 110 }, { "dogmaAttributeID": 270 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "47": { "aggregateMode": "Maximum", "developerDescription": "Ragnarok Effect Generator : Explosive resistance penaly", "displayName_de": "Abzug auf Explosionsresistenz", "displayName_en-us": "Explosive Resistance penalty", "displayName_es": "Penalización de resistencia explosiva", "displayName_fr": "Pénalité de résistance explosive", "displayName_it": "Explosive Resistance penalty", "displayName_ja": "爆発耐性ペナルティ", "displayName_ko": "폭발 저항력 페널티", "displayName_ru": "Штраф на сопротивление фугасному урону", "displayName_zh": "爆炸抗性惩罚", "displayNameID": 521920, "itemModifiers": [ { "dogmaAttributeID": 111 }, { "dogmaAttributeID": 268 }, { "dogmaAttributeID": 272 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "48": { "aggregateMode": "Maximum", "developerDescription": "Leviathan Effect Generator : Shield HP bonus", "displayName_de": "Schild-HP-Bonus", "displayName_en-us": "Shield HP bonus", "displayName_es": "Bonificación de PV de escudo", "displayName_fr": "Bonus aux PV des boucliers", "displayName_it": "Shield HP bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 521924, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "49": { "aggregateMode": "Minimum", "developerDescription": "Leviathan Effect Generator : EM resistance bonus", "displayName_de": "Bonus auf EM-Resistenz", "displayName_en-us": "EM Resistance bonus", "displayName_es": "Bonificación de resistencia electromagnética", "displayName_fr": "Bonus aux résistances EM", "displayName_it": "EM Resistance bonus", "displayName_ja": "EM耐性ボーナス", "displayName_ko": "EM 저항력 보너스", "displayName_ru": "Штраф на сопротивляемость ЭМ-урону", "displayName_zh": "电磁抗性加成", "displayNameID": 521922, "itemModifiers": [ { "dogmaAttributeID": 113 }, { "dogmaAttributeID": 267 }, { "dogmaAttributeID": 271 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "50": { "aggregateMode": "Maximum", "developerDescription": "Leviathan Effect Generator : Kinetic resistance penalty", "displayName_de": "Abzug auf Kinetikresistenz", "displayName_en-us": "Kinetic Resistance penalty", "displayName_es": "Penalización de resistencia cinética", "displayName_fr": "Pénalité de résistance cinétique", "displayName_it": "Kinetic Resistance penalty", "displayName_ja": "キネティック耐性ペナルティ", "displayName_ko": "키네틱 저항력 페널티", "displayName_ru": "Штраф на сопротивление кинетическому урону", "displayName_zh": "动能抗性惩罚", "displayNameID": 521923, "itemModifiers": [ { "dogmaAttributeID": 109 }, { "dogmaAttributeID": 269 }, { "dogmaAttributeID": 273 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "51": { "aggregateMode": "Minimum", "developerDescription": "Avatar Effect Generator : Velocity penalty", "displayName_de": "Geschwindigkeitsabzug", "displayName_en-us": "Velocity Penalty", "displayName_es": "Penalización de velocidad", "displayName_fr": "Pénalité de vitesse", "displayName_it": "Velocity Penalty", "displayName_ja": "速度ペナルティ", "displayName_ko": "속도 페널티", "displayName_ru": "Штраф к скорости", "displayName_zh": "速度惩罚", "displayNameID": 522403, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "52": { "aggregateMode": "Minimum", "developerDescription": "Erebus Effect Generator : Shield RR penalty", "displayName_de": "Schild-Fernreparatursystem-Leistungsabzug", "displayName_en-us": "Remote Shield Booster Strength Penalty", "displayName_es": "Penalización de intensidad de potenciador de escudo remoto", "displayName_fr": "Pénalité de puissance sur les boosters de boucliers à distance", "displayName_it": "Remote Shield Booster Strength Penalty", "displayName_ja": "リモートシールドブースター強度ペナルティ", "displayName_ko": "원격 실드 충전 강도 페널티", "displayName_ru": "Влияние на силу модулей дистанционной накачки щита", "displayName_zh": "远程护盾回充增量器强度惩罚", "displayNameID": 522404, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3422 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "53": { "aggregateMode": "Minimum", "developerDescription": "Leviathan Effect Generator : Armor RR penalty", "displayName_de": "Panzerungs-Fernreparatursystem-Leistungsabzug", "displayName_en-us": "Remote Armor Repairer Strength Penalty", "displayName_es": "Penalización de intensidad de reparador de blindaje remoto", "displayName_fr": "Pénalité de puissance sur les réparateurs de blindage à distance", "displayName_it": "Remote Armor Repairer Strength Penalty", "displayName_ja": "リモートアーマーリペアラ強度ペナルティ", "displayName_ko": "원격 장갑 수리 강도 페널티", "displayName_ru": "Штраф на силу модулей дистанционного ремонта брони", "displayName_zh": "远程装甲维修器强度惩罚", "displayNameID": 522405, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 16069 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "54": { "aggregateMode": "Minimum", "developerDescription": "Ragnarok Effect Generator : Laser and Hybrid Optimal penalty", "displayName_de": "Optimaler Abzug von Energie- und Hybridgeschütztürmen", "displayName_en-us": "Energy and Hybrid Turret Optimal Penalty", "displayName_es": "Penalización de alcance óptimo de torreta híbrida y de energía", "displayName_fr": "Pénalité de portée optimale sur les tourelles à énergie et les tourelles hybrides", "displayName_it": "Energy and Hybrid Turret Optimal Penalty", "displayName_ja": "エネルギータレットとハイブリッドタレット最適射程距離ペナルティ", "displayName_ko": "에너지 및 하이브리드 터렛 최적사거리 페널티", "displayName_ru": "Штраф на оптимальную дальность лазерных и гибридных орудий", "displayName_zh": "能量和混合炮台最佳射程惩罚", "displayNameID": 522406, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 54, "groupID": 53 }, { "dogmaAttributeID": 54, "groupID": 74 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "55": { "aggregateMode": "Minimum", "developerDescription": "PANIC: Scan Resolution penalty", "displayName_de": "Abzug auf Scanauflösung", "displayName_en-us": "Scan Resolution penalty", "displayName_es": "Penalización de resolución de escaneo", "displayName_fr": "Pénalité de résolution de scan", "displayName_it": "Scan Resolution penalty", "displayName_ja": "スキャン解像度ペナルティ", "displayName_ko": "스캔 해상도 페널티", "displayName_ru": "Штраф на разрешающую способность", "displayName_zh": "扫描分辨率惩罚", "displayNameID": 522786, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "56": { "aggregateMode": "Maximum", "developerDescription": "PANIC: Mass increase", "displayName_de": "Massenzunahme", "displayName_en-us": "Mass increase", "displayName_es": "Aumento de masa", "displayName_fr": "Augmentation de masse", "displayName_it": "Mass increase", "displayName_ja": "質量増加", "displayName_ko": "질량 증가", "displayName_ru": "Увеличение массы", "displayName_zh": "质量增加", "displayNameID": 522787, "itemModifiers": [ { "dogmaAttributeID": 4 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "57": { "aggregateMode": "Maximum", "developerDescription": "Disallow tether", "displayName_de": "Anbindung blockiert", "displayName_en-us": "Tether blocked", "displayName_es": "Amarre bloqueado", "displayName_fr": "Arrimage bloqué", "displayName_it": "Tether blocked", "displayName_ja": "牽引ブロック中", "displayName_ko": "테더링 차단", "displayName_ru": "Швартовка недоступна", "displayName_zh": "驻留被阻止", "displayNameID": 522788, "itemModifiers": [ { "dogmaAttributeID": 2343 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "58": { "aggregateMode": "Minimum", "developerDescription": "PANIC: Drone damage penalty", "displayName_de": "Drohnen-Schadensabzug", "displayName_en-us": "Drone damage penalty", "displayName_es": "Penalización de daño de dron", "displayName_fr": "Pénalité de dégâts sur les drones", "displayName_it": "Drone damage penalty", "displayName_ja": "ドローンダメージペナルティ", "displayName_ko": "드론 피해량 페널티", "displayName_ru": "Штраф на урон дронов", "displayName_zh": "无人机伤害惩罚", "displayNameID": 522792, "itemModifiers": [ { "dogmaAttributeID": 2580 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "ShowNormal" }, "59": { "aggregateMode": "Maximum", "developerDescription": "PANIC: Disallow weapons", "displayName_de": "Waffen untersagen", "displayName_en-us": "Disallow weapons", "displayName_es": "Desautorizar armas", "displayName_fr": "Désactiver les armements", "displayName_it": "Disallow weapons", "displayName_ja": "兵器を禁止", "displayName_ko": "무기 사용 차단", "displayName_ru": "Вооружение запрещено", "displayName_zh": "禁用武器", "displayNameID": 522815, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 1349, "skillID": 3300 }, { "dogmaAttributeID": 1349, "skillID": 3319 }, { "dogmaAttributeID": 1349, "skillID": 3421 } ], "operationName": "PostAssignment", "showOutputValueInUI": "Hide" }, "60": { "aggregateMode": "Minimum", "developerDescription": "Skirmish Burst: Evasive Maneuvers: Agility", "displayName_de": "Wendigkeitsbonus", "displayName_en-us": "Agility bonus", "displayName_es": "Bonificación de agilidad", "displayName_fr": "Bonus d'agilité", "displayName_it": "Agility bonus", "displayName_ja": "機動性ボーナス", "displayName_ko": "기동성 보너스", "displayName_ru": "Влияние на маневренность", "displayName_zh": "灵活性加成", "displayNameID": 522819, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "61": { "aggregateMode": "Maximum", "developerDescription": "PANIC: Disallow entosis", "displayName_de": "Entosis untersagen", "displayName_en-us": "Disallow entosis", "displayName_es": "Desautorizar entosis", "displayName_fr": "Désactiver l'interface Entosis", "displayName_it": "Disallow entosis", "displayName_ja": "エントーシスを禁止", "displayName_ko": "엔토시스 사용 차단", "displayName_ru": "Энтоз-воздействие запрещено", "displayName_zh": "禁用侵噬链接", "displayNameID": 522901, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 1349, "skillID": 24242 } ], "operationName": "PostAssignment", "showOutputValueInUI": "Hide" }, "79": { "aggregateMode": "Maximum", "developerDescription": "AOE_Beacon_bioluminescence_cloud", "displayName_de": "Abzug auf Signaturradius", "displayName_en-us": "Signature Radius penalty", "displayName_es": "Penalización de radio de la señal", "displayName_fr": "Pénalité du rayon de signature", "displayName_it": "Signature Radius penalty", "displayName_ja": "シグネチャ半径ペナルティ", "displayName_ko": "시그니처 반경 페널티", "displayName_ru": "Штраф к радиусу сигнатуры", "displayName_zh": "信号半径惩罚", "displayNameID": 532898, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "80": { "aggregateMode": "Minimum", "developerDescription": "AOE_Beacon_caustic_cloud_inertia", "displayName_de": "Trägheitsbonus", "displayName_en-us": "Inertia Bonus", "displayName_es": "Bonificación de inercia", "displayName_fr": "Bonus d'inertie", "displayName_it": "Inertia Bonus", "displayName_ja": "慣性ボーナス", "displayName_ko": "관성 계수 보너스", "displayName_ru": "Увеличение инертности", "displayName_zh": "惯性加成", "displayNameID": 532902, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "81": { "aggregateMode": "Minimum", "developerDescription": "AOE_Beacon_caustic_cloud_velocity", "displayName_de": "Bonus für Maximalgeschwindigkeit", "displayName_en-us": "Max Velocity Bonus", "displayName_es": "Bonificación de velocidad máxima", "displayName_fr": "Bonus de vitesse maximale", "displayName_it": "Max Velocity Bonus", "displayName_ja": "最高速度ボーナス", "displayName_ko": "최대 속도 보너스", "displayName_ru": "Повышение максимальной скорости", "displayName_zh": "最大速度加成", "displayNameID": 532901, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "84": { "aggregateMode": "Maximum", "developerDescription": "AOE_Beacon_trig_platform_tracking_speed", "displayName_de": "Geschützturm-Zielverfolgungsgeschwindigkeit-Bonus", "displayName_en-us": "Turret Tracking Speed bonus", "displayName_es": "Bonificación de velocidad de rastreo de torreta", "displayName_fr": "Bonus de vitesse de poursuite des tourelles", "displayName_it": "Turret Tracking Speed bonus", "displayName_ja": "タレット追跡速度ボーナス", "displayName_ko": "터렛 트래킹 속도 보너스", "displayName_ru": "Повышение скорости слежения турелей", "displayName_zh": "炮台跟踪速度加成", "displayNameID": 532937, "itemModifiers": [ { "dogmaAttributeID": 160 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "88": { "aggregateMode": "Maximum", "developerDescription": "AOE_Beacon_filament_cloud_shield_booster_shield_bonus", "displayName_de": "Abzug auf Schildbonus von Schildboostern", "displayName_en-us": "Penalty to Shield Booster shield bonus", "displayName_es": "Penalización a la bonificación de escudo del potenciador de escudo", "displayName_fr": "Pénalité du bonus de bouclier de booster de bouclier", "displayName_it": "Penalty to Shield Booster shield bonus", "displayName_ja": "シールドブースターのシールドボーナス・ペナルティ", "displayName_ko": "실드 부스터의 실드 보너스에 페널티", "displayName_ru": "Штраф к бонусу прочности модуля накачки щитов", "displayName_zh": "护盾回充增量器护盾值惩罚", "displayNameID": 533827, "itemModifiers": [ { "dogmaAttributeID": 2498 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3416 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "89": { "aggregateMode": "Maximum", "developerDescription": "AOE_Beacon_filament_cloud_shield_booster_duration", "displayName_de": "Bonus auf die Dauer von Schildboostern", "displayName_en-us": "Bonus to Shield Booster duration", "displayName_es": "Bonificación a la duración del potenciador de escudo", "displayName_fr": "Bonus à la durée de booster de bouclier", "displayName_it": "Bonus to Shield Booster duration", "displayName_ja": "シールドブースター有効時間ボーナス", "displayName_ko": "실드 부스터 사이클 시간 보너스", "displayName_ru": "Ускорение цикла модулей накачки щитов", "displayName_zh": "护盾回充增量器持续时间加成", "displayNameID": 533828, "itemModifiers": [ { "dogmaAttributeID": 2495 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 3416 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "90": { "aggregateMode": "Maximum", "developerDescription": "Weather_electric_storm_EM_resistance_penalty", "displayName_de": "Abzug auf EM-Resistenz", "displayName_en-us": "EM Resistance penalty", "displayName_es": "Penalización de resistencia electromagnética", "displayName_fr": "Pénalité à la résistance EM", "displayName_it": "EM Resistance penalty", "displayName_ja": "EMレジスタンス・ペナルティ", "displayName_ko": "EM 저항력 페널티", "displayName_ru": "Штраф к сопротивляемости ЭМ урону", "displayName_zh": "电磁抗性惩罚", "displayNameID": 534977, "itemModifiers": [ { "dogmaAttributeID": 113 }, { "dogmaAttributeID": 267 }, { "dogmaAttributeID": 271 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "92": { "aggregateMode": "Minimum", "developerDescription": "Weather_electric_storm_capacitor_recharge_bonus", "displayName_de": "Energiespeicher-Wiederaufladebonus", "displayName_en-us": "Capacitor Recharge bonus", "displayName_es": "Bonificación de carga del condensador", "displayName_fr": "Bonus de recharge du capaciteur", "displayName_it": "Capacitor Recharge bonus", "displayName_ja": "キャパシタリチャージボーナス", "displayName_ko": "캐패시터 충전 보너스", "displayName_ru": "Влияние на перезарядку накопителя", "displayName_zh": "电容回充量加成", "displayNameID": 534976, "itemModifiers": [ { "dogmaAttributeID": 55 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "93": { "aggregateMode": "Maximum", "developerDescription": "Weather_xenon_gas_explosive_resistance_penalty", "displayName_de": "Abzug auf Explosionsresistenz", "displayName_en-us": "Explosive Resistance penalty", "displayName_es": "Penalización de resistencia explosiva", "displayName_fr": "Pénalité de résistance aux explosifs", "displayName_it": "Explosive Resistance penalty", "displayName_ja": "エクスプローシブレジスタンス・ペナルティ", "displayName_ko": "폭발 저항력 페널티", "displayName_ru": "Штраф к сопротивляемости взрывному урону", "displayName_zh": "爆炸抗性惩罚", "displayNameID": 534979, "itemModifiers": [ { "dogmaAttributeID": 111 }, { "dogmaAttributeID": 268 }, { "dogmaAttributeID": 272 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "94": { "aggregateMode": "Maximum", "developerDescription": "Weather_xenon_gas_shield_hp_bonus", "displayName_de": "Schild-HP-Bonus", "displayName_en-us": "Shield HP bonus", "displayName_es": "Bonificación de PV de escudo", "displayName_fr": "Bonus de PV du bouclier", "displayName_it": "Shield HP bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드량 보너스", "displayName_ru": "Повышение прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 534980, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "95": { "aggregateMode": "Maximum", "developerDescription": "Weather_infernal_thermal_resistance_penalty", "displayName_de": "Abzug auf Thermalresistenz", "displayName_en-us": "Thermal Resistance penalty", "displayName_es": "Penalización de resistencia térmica", "displayName_fr": "Pénalité de résistance thermique", "displayName_it": "Thermal Resistance penalty", "displayName_ja": "サーマルレジスタンス・ペナルティ", "displayName_ko": "열 저항력 페널티", "displayName_ru": "Штраф к сопротивляемости тепловому урону", "displayName_zh": "热能抗性惩罚", "displayNameID": 534983, "itemModifiers": [ { "dogmaAttributeID": 110 }, { "dogmaAttributeID": 270 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "96": { "aggregateMode": "Maximum", "developerDescription": "Weather_infernal_armor_hp_bonus", "displayName_de": "Panzerung-HP-Bonus", "displayName_en-us": "Armor HP bonus", "displayName_es": "Bonificación de PV de blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor HP bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Повышение прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 534982, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "97": { "aggregateMode": "Minimum", "developerDescription": "Weather_darkness_turret_range_penalty", "displayName_de": "Abzug auf optimale Reichweite und Präzisionsabfall-Reichweite von Geschütztürmen", "displayName_en-us": "Turret Optimal and Falloff Range penalty", "displayName_es": "Penalización de alcances efectivo y óptimo de torreta", "displayName_fr": "Pénalité de portée optimale et de déperdition des tourelles", "displayName_it": "Turret Optimal and Falloff Range penalty", "displayName_ja": "タレットの最適・精度低下範囲ボーナス", "displayName_ko": "터렛 최적사거리 및 유효사거리 페널티", "displayName_ru": "Штраф к оптимальной и добавочной дальности стрельбы турелей", "displayName_zh": "炮台最佳射程和失准范围惩罚", "displayNameID": 534987, "itemModifiers": [ { "dogmaAttributeID": 54 }, { "dogmaAttributeID": 158 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3300 }, { "dogmaAttributeID": 158, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "98": { "aggregateMode": "Maximum", "developerDescription": "Weather_darkness_velocity_bonus", "displayName_de": "Geschwindigkeitsbonus", "displayName_en-us": "Velocity bonus", "displayName_es": "Bonificación de velocidad", "displayName_fr": "Bonus de vitesse", "displayName_it": "Velocity bonus", "displayName_ja": "速度ボーナス", "displayName_ko": "속도 보너스", "displayName_ru": "Повышение скорости", "displayName_zh": "速度加成", "displayNameID": 534988, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "99": { "aggregateMode": "Maximum", "developerDescription": "Weather_caustic_toxin_kinetic_resistance_penalty", "displayName_de": "Abzug auf Kinetikresistenz", "displayName_en-us": "Kinetic Resistance penalty", "displayName_es": "Penalización de resistencia cinética", "displayName_fr": "Pénalité de résistance cinétique", "displayName_it": "Kinetic Resistance penalty", "displayName_ja": "キネティックレジスタンス・ペナルティ", "displayName_ko": "키네틱 저항력 페널티", "displayName_ru": "Штраф к сопротивляемости кинетическому урону", "displayName_zh": "动能抗性惩罚", "displayNameID": 535078, "itemModifiers": [ { "dogmaAttributeID": 109 }, { "dogmaAttributeID": 269 }, { "dogmaAttributeID": 273 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "100": { "aggregateMode": "Maximum", "developerDescription": "Weather_caustic_toxin_scan_resolution_bonus", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 해상도 보너스", "displayName_ru": "Влияние на разрешающую способность сенсоров", "displayName_zh": "扫描分辨率加成", "displayNameID": 535079, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "101": { "aggregateMode": "Minimum", "developerDescription": "Industrial Core Mining Drone Signal Interference", "displayName_de": "Bonus auf reduzierte Industrial Core-Bergbaudrohnen", "displayName_en-us": "Reduced Industrial Core Mining Drone Bonus", "displayName_es": "Bonificación de reducción de dron minero de núcleo industrial", "displayName_fr": "Bonus réduit de drone d'extraction de cellule industrielle", "displayName_it": "Reduced Industrial Core Mining Drone Bonus", "displayName_ja": "工業コア採掘ドローンボーナス減少", "displayName_ko": "산업코어 채굴 드론 보너스 감소", "displayName_ru": "Уменьшен бонус для буровых дронов у промышленного ядра", "displayName_zh": "降低的工业核心采矿无人机加成", "displayNameID": 546343, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 2585, "skillID": 28585 }, { "dogmaAttributeID": 2586, "skillID": 28585 } ], "operationName": "PostMul", "showOutputValueInUI": "ShowNormal" }, "2103": { "aggregateMode": "Maximum", "developerDescription": "Damage Bonus", "displayName_de": "Schadensbonus", "displayName_en-us": "Damage bonus", "displayName_es": "Bonificación de daño", "displayName_fr": "Bonus de dégâts", "displayName_it": "Damage bonus", "displayName_ja": "ダメージボーナス", "displayName_ko": "피해량 보너스", "displayName_ru": "Бонус урона", "displayName_zh": "伤害加成", "displayNameID": 551552, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 64, "skillID": 3300 }, { "dogmaAttributeID": 64, "skillID": 3436 }, { "dogmaAttributeID": 114, "skillID": 3319 }, { "dogmaAttributeID": 116, "skillID": 3319 }, { "dogmaAttributeID": 117, "skillID": 3319 }, { "dogmaAttributeID": 118, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2104": { "aggregateMode": "Maximum", "developerDescription": "Wreck Warp Scramble", "displayName_de": "Nähe zu Wracks stört Warpantriebe", "displayName_en-us": "Wreck Proximity Disrupting Warp Drives", "displayName_es": "Motores de warp de disrupción de proximidad de restos", "displayName_fr": "Une épave à proximité perturbe les propulseurs de warp", "displayName_it": "Wreck Proximity Disrupting Warp Drives", "displayName_ja": "周囲の残骸によりワープドライブ阻害中", "displayName_ko": "잔해로 인한 워프 드라이브 교란", "displayName_ru": "Близость обломков нарушает работу варп-двигателей", "displayName_zh": "残骸近距干扰跃迁引擎", "displayNameID": 553815, "itemModifiers": [ { "dogmaAttributeID": 104 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2106": { "aggregateMode": "Maximum", "developerDescription": "ESS: Disables MJDs + MWDs", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 1349, "skillID": 3454 }, { "dogmaAttributeID": 1349, "skillID": 4385 } ], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2108": { "aggregateMode": "Maximum", "developerDescription": "Webifier Range Bonus", "displayName_de": "Reichweitenbonus für Stasisnetze", "displayName_en-us": "Stasis Webifier Range Bonus", "displayName_es": "Bonificación de alcance de red ralentizadora", "displayName_fr": "Bonus de portée du générateur de stase", "displayName_it": "Stasis Webifier Range Bonus", "displayName_ja": "ステイシスウェビファイヤーの範囲ボーナス", "displayName_ko": "스테이시스 웹 생성기 사거리 보너스", "displayName_ru": "Увеличение дальности действия стазис-индукторов", "displayName_zh": "停滞缠绕光束范围加成", "displayNameID": 571849, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 54, "groupID": 65 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2109": { "aggregateMode": "Maximum", "developerDescription": "Module Heat Damage Reduction", "displayName_de": "Modul-Hitzeschadenreduktion", "displayName_en-us": "Module Heat Damage Reduction", "displayName_es": "Reducción de daño por calor del módulo", "displayName_fr": "Réduction des dégâts thermiques des modules", "displayName_it": "Module Heat Damage Reduction", "displayName_ja": "モジュール熱ダメージ減少", "displayName_ko": "모듈 과부하 피해 감소", "displayName_ru": "Снижение теплового урона для модулей", "displayName_zh": "装备超载伤害降低", "displayNameID": 573512, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2110": { "aggregateMode": "Maximum", "developerDescription": "Webifier Strength Bonus", "displayName_de": "Bonus auf die Stärke von Stasisnetzen", "displayName_en-us": "Stasis Webifier Strength Bonus", "displayName_es": "Bonificación de intensidad de red ralentizadora", "displayName_fr": "Bonus à la puissance des générateurs de stase", "displayName_it": "Stasis Webifier Strength Bonus", "displayName_ja": "ステイシスウェビファイヤーの強度にボーナス", "displayName_ko": "스테이시스 웹 강도 증가", "displayName_ru": "Бонус к эффективности стазис-индуктора", "displayName_zh": "停滞缠绕光束强度加成", "displayNameID": 574787, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 20, "groupID": 65 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2111": { "aggregateMode": "Maximum", "developerDescription": "Proving Thermal and Kinetic Missile Damage Bonuus", "displayName_de": "Bonus auf den Thermal-/Kinetikschaden von Lenkwaffen", "displayName_en-us": "Thermal/Kinetic Missile Damage Bonus", "displayName_es": "Bonificación de daño de los misiles térmicos/cinéticos", "displayName_fr": "Bonus de dégâts thermiques/cinétiques des missiles", "displayName_it": "Thermal/Kinetic Missile Damage Bonus", "displayName_ja": "サーマル/キネティックミサイルダメージボーナス", "displayName_ko": "열/키네틱 미사일 피해량 보너스", "displayName_ru": "Увеличение урона от термических/кинетических ракет", "displayName_zh": "热能/动能导弹伤害加成", "displayNameID": 576030, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 117, "skillID": 3319 }, { "dogmaAttributeID": 118, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2112": { "aggregateMode": "Minimum", "developerDescription": "Proving Remote Assistance/Repair Impedance", "itemModifiers": [ { "dogmaAttributeID": 2116 }, { "dogmaAttributeID": 2135 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2113": { "aggregateMode": "Maximum", "developerDescription": "Stabilized cloak to prevent decloak bursts", "displayName_de": "Tarnmodul-Stabilisierung", "displayName_en-us": "Cloak stabilization", "displayName_es": "Estabilización de camuflaje", "displayName_fr": "Stabilisation de camouflage", "displayName_it": "Cloak stabilization", "displayName_ja": "クローク安定化", "displayName_ko": "클로킹 안정화", "displayName_ru": "Стабилизация маскировки", "displayName_zh": "隐形稳定", "displayNameID": 580046, "itemModifiers": [ { "dogmaAttributeID": 3117 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2140": { "aggregateMode": "Maximum", "developerDescription": "Proving Overheat Bonus - No EWAR", "displayName_de": "Modul-Überladungsbonus", "displayName_en-us": "Module Overload Bonus", "displayName_es": "Bonificación de sobrecarga de módulo", "displayName_fr": "Bonus de surcharge du module", "displayName_it": "Module Overload Bonus", "displayName_ja": "モジュールオーバーロードボーナス", "displayName_ko": "모듈 과부하 보너스", "displayName_ru": "Бонус к перегрузке модулей", "displayName_zh": "装备超载加成", "displayNameID": 583780, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1181 }, { "dogmaAttributeID": 1205 }, { "dogmaAttributeID": 1206 }, { "dogmaAttributeID": 1208 }, { "dogmaAttributeID": 1210 }, { "dogmaAttributeID": 1222 }, { "dogmaAttributeID": 1223 }, { "dogmaAttributeID": 1230 }, { "dogmaAttributeID": 1231 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2141": { "aggregateMode": "Minimum", "developerDescription": "Link-with-ship damage resistance bonus", "displayName_de": "Schadensresistenzbonus", "displayName_en-us": "Damage Resistance Bonus", "displayName_es": "Bonificación de resistencia a daños", "displayName_fr": "Bonus de résistance aux dégâts.", "displayName_it": "Damage Resistance Bonus", "displayName_ja": "ダメージレジスタンスボーナス", "displayName_ko": "피해 저항력 보너스", "displayName_ru": "Усиление сопротивляемости урону", "displayName_zh": "伤害抗性加成", "displayNameID": 587608, "itemModifiers": [ { "dogmaAttributeID": 109 }, { "dogmaAttributeID": 110 }, { "dogmaAttributeID": 111 }, { "dogmaAttributeID": 113 }, { "dogmaAttributeID": 267 }, { "dogmaAttributeID": 268 }, { "dogmaAttributeID": 269 }, { "dogmaAttributeID": 270 }, { "dogmaAttributeID": 271 }, { "dogmaAttributeID": 272 }, { "dogmaAttributeID": 273 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2142": { "aggregateMode": "Maximum", "developerDescription": "Small Energy Turret Damage Bonus", "displayName_de": "Schadensbonus auf kleinen Energiegeschützturm", "displayName_en-us": "Small Energy Turret Damage Bonus", "displayName_es": "Bonificación de daño de torreta de energía pequeña", "displayName_fr": "Bonus de dégâts des petites tourelles à énergie", "displayName_it": "Small Energy Turret Damage Bonus", "displayName_ja": "小型エネルギータレットダメージボーナス", "displayName_ko": "소형 에너지 터렛 피해량 보너스", "displayName_ru": "Бонус к урону от малых лазерных орудий", "displayName_zh": "小型能量炮台伤害加成", "displayNameID": 588970, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 64, "skillID": 3303 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2143": { "aggregateMode": "Maximum", "developerDescription": "Nos and Neut Drain Bonus", "displayName_de": "Stärkebonus auf Energiekriegsführung", "displayName_en-us": "Energy Warfare Strength Bonus", "displayName_es": "Bonificación de intensidad de guerra de energía", "displayName_fr": "Bonus de puissance de guerre d'énergie", "displayName_it": "Energy Warfare Strength Bonus", "displayName_ja": "エネルギー戦強度ボーナス", "displayName_ko": "에너지전 효과 보너스", "displayName_ru": "Бонус к мощности средств воздействия на накопитель", "displayName_zh": "能量战强度加成", "displayNameID": 588971, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 90, "groupID": 68 }, { "dogmaAttributeID": 97, "groupID": 71 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2144": { "aggregateMode": "Maximum", "developerDescription": "Proving Turret Damage Bonus", "displayName_de": "Geschützturmschadensbonus", "displayName_en-us": "Turret Damage Bonus", "displayName_es": "Bonificación de daño de torreta", "displayName_fr": "Bonus de dégâts des tourelles", "displayName_it": "Turret Damage Bonus", "displayName_ja": "タレットダメージボーナス", "displayName_ko": "터렛 피해량 보너스", "displayName_ru": "Увеличение урона от турелей", "displayName_zh": "炮台伤害加成", "displayNameID": 589384, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 64, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2145": { "aggregateMode": "Maximum", "developerDescription": "Proving Missile Damage Bonus", "displayName_de": "Lenkwaffeschadensbonus", "displayName_en-us": "Missile Damage Bonuus", "displayName_es": "Bonificación de daño de misiles", "displayName_fr": "Bonus aux dégâts des missiles", "displayName_it": "Missile Damage Bonuus", "displayName_ja": "ミサイルダメージボーナス", "displayName_ko": "미사일 피해량 보너스", "displayName_ru": "Увеличение урона от ракет", "displayName_zh": "导弹伤害加成", "displayNameID": 589393, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 114, "skillID": 3319 }, { "dogmaAttributeID": 116, "skillID": 3319 }, { "dogmaAttributeID": 117, "skillID": 3319 }, { "dogmaAttributeID": 118, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2146": { "aggregateMode": "Maximum", "developerDescription": "Proving Afterburner Speed Bonus", "displayName_de": "Bonus auf die Nachbrenner-Geschwindigkeitserhöhung", "displayName_en-us": "AB speed increase bonus", "displayName_es": "Bonificación de aumento de velocidad de PQ", "displayName_fr": "Bonus de vitesse PC", "displayName_it": "AB speed increase bonus", "displayName_ja": "AB速度増加ボーナス", "displayName_ko": "애프터버너 속도 증가 보너스", "displayName_ru": "Бонус к увеличению скорости форсажного ускорителя", "displayName_zh": "加力燃烧器速度增量加成", "displayNameID": 591759, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 20, "skillID": 3450 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2147": { "aggregateMode": "Minimum", "developerDescription": "SpacetimeNexusVelocity", "displayName_de": "Schiffsgeschwindigkeit", "displayName_en-us": "Ship Velocity", "displayName_es": "Velocidad de nave", "displayName_fr": "Vitesse du vaisseau", "displayName_it": "Ship Velocity", "displayName_ja": "航行速度", "displayName_ko": "함선 속도", "displayName_ru": "Скорость корабля", "displayName_zh": "舰船最大速度", "displayNameID": 592692, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2148": { "aggregateMode": "Maximum", "developerDescription": "SpacetimeNexusInertia", "displayName_de": "Schiffsträgheit", "displayName_en-us": "Ship Inertia", "displayName_es": "Inercia de la nave", "displayName_fr": "Inertie du vaisseau", "displayName_it": "Ship Inertia", "displayName_ja": "艦船の慣性", "displayName_ko": "관성 계수", "displayName_ru": "Инертность корабля", "displayName_zh": "舰船惯性调整系数", "displayNameID": 592693, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2149": { "aggregateMode": "Maximum", "developerDescription": "SpacetimeNexusCapShieldRecharge", "displayName_de": "Schild- und Energiespeicherladezeit", "displayName_en-us": "Shield and Capacitor Recharge Rate", "displayName_es": "Índice de carga del condensador y del escudo", "displayName_fr": "Vitesse de recharge du bouclier et du capaciteur", "displayName_it": "Shield and Capacitor Recharge Rate", "displayName_ja": "シールドとキャパシタの充電速度", "displayName_ko": "실드 및 캐패시터 충전 속도", "displayName_ru": "Скорость перезарядки щита и накопителя", "displayName_zh": "护盾和电容回充速率", "displayNameID": 592694, "itemModifiers": [ { "dogmaAttributeID": 55 }, { "dogmaAttributeID": 479 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2150": { "aggregateMode": "Maximum", "developerDescription": "SpacetimeNexusModuleCycle", "displayName_de": "Modulzyklus und Nachladegeschwindigkeit", "displayName_en-us": "Module Cycle and Reload Speed", "displayName_es": "Velocidad de carga y ciclo de módulo", "displayName_fr": "Cycle du module et vitesse de recharge", "displayName_it": "Module Cycle and Reload Speed", "displayName_ja": "モジュールのサイクルとリロード速度", "displayName_ko": "모듈 사이클 시간 및 재장전 속도", "displayName_ru": "Время и скорость перезарядки модуля", "displayName_zh": "装备循环时间和装填速度", "displayNameID": 592695, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 51 }, { "dogmaAttributeID": 73 }, { "dogmaAttributeID": 1795 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2151": { "aggregateMode": "Minimum", "developerDescription": "SpacetimeNexusTracking", "displayName_de": "Geschützturm-Nachführung und Lenkwaffen-Explosionsgeschwindigkeit", "displayName_en-us": "Turret Tracking and Missile Explosion Velocity", "displayName_es": "Velocidad de rastreo de torretas y explosión de misiles", "displayName_fr": "Poursuite des tourelles et vitesse d'explosion des missiles", "displayName_it": "Turret Tracking and Missile Explosion Velocity", "displayName_ja": "タレットの追跡速度とミサイルの爆発速度", "displayName_ko": "터렛 트래킹 및 미사일 폭발 속도", "displayName_ru": "Скорость наведения орудий и распространения взрыва ракет", "displayName_zh": "炮台跟踪速度和导弹爆炸速度", "displayNameID": 593084, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 }, { "dogmaAttributeID": 653, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2152": { "aggregateMode": "Maximum", "developerDescription": "Proving HP Addition", "displayName_de": "Zusätzliche Basis-HP des Rumpfs", "displayName_en-us": "Additional Base Hull Hitpoints", "displayName_es": "Puntos de vida del casco base adicionales", "displayName_fr": "Points de vie de la coque de base supplémentaires", "displayName_it": "Additional Base Hull Hitpoints", "displayName_ja": "追加ベース船体HP", "displayName_ko": "추가 선체 내구도", "displayName_ru": "Увеличение основного запаса прочности корпуса", "displayName_zh": "额外的基础结构值", "displayNameID": 594653, "itemModifiers": [ { "dogmaAttributeID": 9 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" }, "2153": { "aggregateMode": "Maximum", "developerDescription": "Proving Turret Tracking", "displayName_de": "Geschützturmnachführung", "displayName_en-us": "Turret Tracking", "displayName_es": "Rastreo de torreta", "displayName_fr": "Poursuite des tourelles", "displayName_it": "Turret Tracking", "displayName_ja": "タレットのトラッキング", "displayName_ko": "터렛 트래킹", "displayName_ru": "Скорость наведения турелей", "displayName_zh": "炮台跟踪速度", "displayNameID": 594691, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2154": { "aggregateMode": "Maximum", "developerDescription": "Proving Turret Falloff", "displayName_de": "Präzisionsabfallbonus für Geschütztürme", "displayName_en-us": "Turret Falloff Bonus", "displayName_es": "Bonificación de alcance efectivo de torreta", "displayName_fr": "Bonus de déperdition des tourelles", "displayName_it": "Turret Falloff Bonus", "displayName_ja": "タレットの精度低下範囲ボーナス", "displayName_ko": "터렛 유효사거리 보너스", "displayName_ru": "Увеличение остаточной дальности стрельбы турелей", "displayName_zh": "炮台失准范围加成", "displayNameID": 594692, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 158, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2155": { "aggregateMode": "Maximum", "developerDescription": "[AIR] Mining amount penelty", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 77, "skillID": 3386 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2158": { "aggregateMode": "Maximum", "developerDescription": "Proving Turret Optimal", "displayName_de": "Bonus für Geschütztürme (Optimal)", "displayName_en-us": "Turret Optimal Bonus", "displayName_es": "Bonificación de alcance óptimo de torreta", "displayName_fr": "Bonus optimal des tourelles", "displayName_it": "Turret Optimal Bonus", "displayName_ja": "タレットの最適射程距離ボーナス", "displayName_ko": "터렛 최적사거리 보너스", "displayName_ru": "Бонус к оптимальной дальности турелей", "displayName_zh": "炮台最佳射程加成", "displayNameID": 596685, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2159": { "aggregateMode": "Minimum", "developerDescription": "Proving Turret Cap Use", "displayName_de": "Geschützturm-Energiespeicherverbrauch", "displayName_en-us": "Turret Cap Consumption", "displayName_es": "Consumo de condensador de torreta", "displayName_fr": "Consommation du capaciteur de la tourelle", "displayName_it": "Turret Cap Consumption", "displayName_ja": "タレットのキャパシタ消費", "displayName_ko": "터렛 캐패시터 소모", "displayName_ru": "Расход энергии накопителя турелей", "displayName_zh": "炮台电容消耗", "displayNameID": 596686, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2160": { "aggregateMode": "Maximum", "developerDescription": "Proving HP All", "displayName_de": "HP-Bonus", "displayName_en-us": "Hitpoint Bonus", "displayName_es": "Bonificación de puntos de vida", "displayName_fr": "Bonus de PV", "displayName_it": "Hitpoint Bonus", "displayName_ja": "HPボーナス", "displayName_ko": "내구도 보너스", "displayName_ru": "Увеличение запаса прочности", "displayName_zh": "HP加成", "displayNameID": 597492, "itemModifiers": [ { "dogmaAttributeID": 9 }, { "dogmaAttributeID": 263 }, { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2161": { "aggregateMode": "Maximum", "developerDescription": "Proving Velocity Bonus", "displayName_de": "Geschwindigkeitsbonus", "displayName_en-us": "Velocity Bonus", "displayName_es": "Bonificación de velocidad", "displayName_fr": "Bonus de vitesse", "displayName_it": "Velocity Bonus", "displayName_ja": "速度ボーナス", "displayName_ko": "속도 보너스", "displayName_ru": "Повышение скорости", "displayName_zh": "速度加成", "displayNameID": 597614, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2162": { "aggregateMode": "Maximum", "developerDescription": "Proving Inertia Penalty", "displayName_de": "Trägheitsabzug", "displayName_en-us": "Inertia Penalty", "displayName_es": "Penalización de inercia", "displayName_fr": "Pénalité d'inertie", "displayName_it": "Inertia Penalty", "displayName_ja": "慣性ペナルティ", "displayName_ko": "관성 계수 페널티", "displayName_ru": "Снижение инертности", "displayName_zh": "惯性系数惩罚", "displayNameID": 597615, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2163": { "aggregateMode": "Maximum", "developerDescription": "Proving Capacitor Bonus", "displayName_de": "Energiespeicherbonus", "displayName_en-us": "Capacitor Bonus", "displayName_es": "Bonificación de condensador", "displayName_fr": "Bonus de capaciteur", "displayName_it": "Capacitor Bonus", "displayName_ja": "キャパシタボーナス", "displayName_ko": "캐패시터 보너스", "displayName_ru": "Увеличение запаса энергии", "displayName_zh": "电容加成", "displayNameID": 597616, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2164": { "aggregateMode": "Maximum", "developerDescription": "Proving Armor/Shield HP Bonus", "displayName_de": "Panzerungs- und Schild-HP-Bonus", "displayName_en-us": "Armor and Shield HP Bonus", "displayName_es": "Bonificación de PV de blindaje y escudo", "displayName_fr": "Bonus de PV du blindage et du bouclier", "displayName_it": "Armor and Shield HP Bonus", "displayName_ja": "アーマーとシールドのHPボーナス", "displayName_ko": "장갑 내구도 및 실드량 보너스", "displayName_ru": "Повышение прочности щитов и брони", "displayName_zh": "装甲值和护盾值加成", "displayNameID": 597617, "itemModifiers": [ { "dogmaAttributeID": 263 }, { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2165": { "aggregateMode": "Maximum", "developerDescription": "Proving Missile Flight Time Bonus", "displayName_de": "Lenkwaffenflugdauer-Bonus", "displayName_en-us": "Missile Flight Time Bonus", "displayName_es": "Bonificación de tiempo de vuelo de misiles", "displayName_fr": "Bonus de temps de vol des missiles", "displayName_it": "Missile Flight Time Bonus", "displayName_ja": "ミサイル飛行時間ボーナス", "displayName_ko": "미사일 비행시간 보너스", "displayName_ru": "Увеличение времени полёта ракет", "displayName_zh": "导弹飞行时间加成", "displayNameID": 597618, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 281, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2166": { "aggregateMode": "Maximum", "developerDescription": "Proving Mass Increase", "displayName_de": "Mass Increase", "displayName_en-us": "Mass Increase", "displayName_es": "Aumento de masa", "displayName_fr": "Augmentation de masse", "displayName_it": "Mass Increase", "displayName_ja": "質量増加", "displayName_ko": "질량 증가", "displayName_ru": "Увеличение массы", "displayName_zh": "质量增加", "displayNameID": 597619, "itemModifiers": [ { "dogmaAttributeID": 4 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2167": { "aggregateMode": "Maximum", "developerDescription": "SpacetimeNexusCapRecharge", "displayName_de": "Energiespeicherladezeit", "displayName_en-us": "Capacitor Recharge Rate", "displayName_es": "Índice de carga del condensador", "displayName_fr": "Taux de recharge du capaciteur", "displayName_it": "Capacitor Recharge Rate", "displayName_ja": "キャパシタ充電速度", "displayName_ko": "캐패시터 충전 속도", "displayName_ru": "Скорость перезарядки накопителя", "displayName_zh": "电容回充速率", "displayNameID": 597771, "itemModifiers": [ { "dogmaAttributeID": 55 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2168": { "aggregateMode": "Maximum", "developerDescription": "SpacetimeNexusSigRadius", "displayName_de": "Signaturradius", "displayName_en-us": "Signature Radius", "displayName_es": "Radio de la señal", "displayName_fr": "Rayon de signature", "displayName_it": "Signature Radius", "displayName_ja": "シグネチャ半径", "displayName_ko": "시그니처 반경", "displayName_ru": "Радиус сигнатуры", "displayName_zh": "信号半径", "displayNameID": 597772, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2169": { "aggregateMode": "Minimum", "developerDescription": "SpacetimeNexusTurretMissileDamage", "displayName_de": "Geschützturm- und Lenkwaffenschaden", "displayName_en-us": "Turret and Missile Damage", "displayName_es": "Daño de torretas y misiles", "displayName_fr": "Dégâts des tourelles et missiles", "displayName_it": "Turret and Missile Damage", "displayName_ja": "タレットとミサイルのダメージ", "displayName_ko": "터렛 및 미사일 피해량", "displayName_ru": "Урон от турелей и ракет", "displayName_zh": "炮台和导弹伤害", "displayNameID": 597773, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 64, "skillID": 3300 }, { "dogmaAttributeID": 114, "skillID": 3319 }, { "dogmaAttributeID": 116, "skillID": 3319 }, { "dogmaAttributeID": 117, "skillID": 3319 }, { "dogmaAttributeID": 118, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2171": { "aggregateMode": "Maximum", "developerDescription": "Proving Sensor Strength Bonus", "displayName_de": "Sensorstärke-Bonus", "displayName_en-us": "Sensor Strength bonus", "displayName_es": "Bonificación de intensidad del sensor", "displayName_fr": "Bonus de puissance des détecteurs", "displayName_it": "Sensor Strength bonus", "displayName_ja": "センサー強度ボーナス", "displayName_ko": "센서 강도 보너스", "displayName_ru": "Увеличение мощности сенсоров", "displayName_zh": "感应强度加成", "displayNameID": 600979, "itemModifiers": [ { "dogmaAttributeID": 208 }, { "dogmaAttributeID": 209 }, { "dogmaAttributeID": 210 }, { "dogmaAttributeID": 211 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2172": { "aggregateMode": "Minimum", "developerDescription": "Proving Signature Radius Bonus", "displayName_de": "Signaturradius-Bonus", "displayName_en-us": "Signature Radius bonus", "displayName_es": "Bonificación de radio de la señal", "displayName_fr": "Bonus de rayon de signature", "displayName_it": "Signature Radius bonus", "displayName_ja": "シグネチャ半径ボーナス", "displayName_ko": "시그니처 반경 보너스", "displayName_ru": "Уменьшение радиуса сигнатуры", "displayName_zh": "信号半径加成", "displayNameID": 600983, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2174": { "aggregateMode": "Maximum", "developerDescription": "AOE_Beacon_proving_tachyon_signatureradius_cloud", "displayName_de": "Abzug auf Signaturradius", "displayName_en-us": "Signature Radius penalty", "displayName_es": "Penalización de radio de la señal", "displayName_fr": "Pénalité du rayon de signature", "displayName_it": "Signature Radius penalty", "displayName_ja": "シグネチャ半径ペナルティ", "displayName_ko": "시그니처 반경 페널티", "displayName_ru": "Штраф к радиусу сигнатуры", "displayName_zh": "信号半径惩罚", "displayNameID": 532898, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2176": { "aggregateMode": "Maximum", "developerDescription": "Proving Armor HP Addition", "displayName_de": "Zusätzliche Basis-HP der Panzerung", "displayName_en-us": "Additional Base Armor Hitpoints", "displayName_es": "Puntos de vida de blindaje básicos adicionales", "displayName_fr": "Points de vie du blindage de base supplémentaires", "displayName_it": "Additional Base Armor Hitpoints", "displayName_ja": "追加基本アーマーヒットポイント", "displayName_ko": "추가 기본 장갑 내구도", "displayName_ru": "Увеличение основного запаса прочности брони", "displayName_zh": "额外的基础装甲值", "displayNameID": 629466, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" }, "2177": { "aggregateMode": "Maximum", "developerDescription": "Proving Shield HP Addition", "displayName_de": "Zusätzliche Basis-HP der Schilde", "displayName_en-us": "Additional Base Shield Hitpoints", "displayName_es": "Puntos de vida del escudo básicos adicionales", "displayName_fr": "Points de vie du bouclier de base supplémentaires", "displayName_it": "Additional Base Shield Hitpoints", "displayName_ja": "追加基本シールドヒットポイント", "displayName_ko": "추가 기본 실드 내구도", "displayName_ru": "Увеличение основного запаса прочности щитов", "displayName_zh": "额外的基础护盾值", "displayNameID": 629467, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" }, "2178": { "aggregateMode": "Maximum", "developerDescription": "Proving Kinetic Missile Damage Bonuus", "displayName_de": "Bonus auf den Kinetikschaden von Lenkwaffen", "displayName_en-us": "Kinetic Missile Damage Bonus", "displayName_es": "Bonificación de daño de misiles cinéticos", "displayName_fr": "Bonus de dégâts des missiles cinétiques", "displayName_it": "Kinetic Missile Damage Bonus", "displayName_ja": "キネティックミサイルダメージボーナス", "displayName_ko": "키네틱 미사일 피해량 보너스", "displayName_ru": "Увеличение урона от кинетических ракет", "displayName_zh": "动能导弹伤害加成", "displayNameID": 631461, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 117, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2179": { "aggregateMode": "Maximum", "developerDescription": "Proving Small Hybrid Turret Damage Bonus", "displayName_de": "Schadensbonus auf kleine Hybridgeschütztürme", "displayName_en-us": "Small Hybrid Turret Damage Bonus", "displayName_es": "Bonificación de daño de torreta híbrida pequeña", "displayName_fr": "Bonus de dégâts des petites tourelles hybrides", "displayName_it": "Small Hybrid Turret Damage Bonus", "displayName_ja": "小型ハイブリッドタレットダメージボーナス", "displayName_ko": "소형 하이브리드 터렛 피해량 보너스", "displayName_ru": "Увеличение урона от малых гибридных орудий", "displayName_zh": "小型混合炮台伤害加成", "displayNameID": 631462, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 64, "skillID": 3301 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2180": { "aggregateMode": "Maximum", "developerDescription": "Proving Small Hybrid Turret Optimal Bonus", "displayName_de": "Bonus auf optimale Reichweite von kleinen Hybridgeschütztürmen", "displayName_en-us": "Small Hybrid Turret Optimal Range Bonus", "displayName_es": "Bonificación de alcance óptimo de torreta híbrida pequeña", "displayName_fr": "Bonus de portée optimale des petites tourelles hybrides", "displayName_it": "Small Hybrid Turret Optimal Range Bonus", "displayName_ja": "小型ハイブリッドタレット最適射程距離ボーナス", "displayName_ko": "소형 하이브리드 터렛 최적사거리 보너스", "displayName_ru": "Бонус к оптимальной дальности малых гибридных орудий", "displayName_zh": "小型混合炮台最佳射程加成", "displayNameID": 631463, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3301 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2184": { "aggregateMode": "Maximum", "developerDescription": "Proving Nos Override", "itemModifiers": [ { "dogmaAttributeID": 1945 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "ShowNormal" }, "2185": { "aggregateMode": "Maximum", "developerDescription": "Tethering Restricted By Security", "displayName_de": "Anbindung ist blockiert", "displayName_en-us": "Tether blocked", "displayName_es": "Amarre bloqueado", "displayName_fr": "Accostage verrouillé", "displayName_it": "Tether blocked", "displayName_ja": "テザリングブロック中", "displayName_ko": "테더링 차단", "displayName_ru": "Швартовка недоступна", "displayName_zh": "驻留被阻止", "displayNameID": 639276, "itemModifiers": [ { "dogmaAttributeID": 2343 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2186": { "aggregateMode": "Maximum", "developerDescription": "Proving AB/MWD Speed Increase", "displayName_de": "Bonus auf die Geschwindigkeitserhöhung von Nachbrenner-/Mikrowarpantrieb-Modulen", "displayName_en-us": "AB/MWD module speed increase bonus", "displayName_es": "Bonificación de aumento de velocidad de módulo de PQ/MMW", "displayName_fr": "Bonus à la vitesse des SPC/PMW", "displayName_it": "AB/MWD module speed increase bonus", "displayName_ja": "AB/MWDモジュールのスピード増加量ボーナス", "displayName_ko": "애프터버너/마이크로 워프 드라이브 최대 속도 증가", "displayName_ru": "Увеличение скорости форсажных и микроварп-ускорителей", "displayName_zh": "加力燃烧器/微型跃迁推进器速度增量加成", "displayNameID": 639612, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 20, "skillID": 3450 }, { "dogmaAttributeID": 20, "skillID": 3454 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2187": { "aggregateMode": "Minimum", "developerDescription": "Proving AB/MWD Cap Need Reduction", "displayName_de": "Bonus auf den Energiespeicherbedarf von Nachbrennern/Mikrowarpantrieben", "displayName_en-us": "AB/MWD capacitor consumption bonus", "displayName_es": "Bonificación de consumo del condensador de PQ/MMW", "displayName_fr": "Bonus à la consommation de capaciteur des SPC/PMW", "displayName_it": "AB/MWD capacitor consumption bonus", "displayName_ja": "AB/MWDのキャパシタ消費量ボーナス", "displayName_ko": "애프터버너/마이크로 워프 드라이브 캐패시터 사용량 감소", "displayName_ru": "Снижение расхода энергии форсажных и микроварп-ускорителей", "displayName_zh": "加力燃烧器/微型跃迁推进器电容消耗加成", "displayNameID": 639613, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6, "skillID": 3450 }, { "dogmaAttributeID": 6, "skillID": 3454 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2201": { "aggregateMode": "Minimum", "developerDescription": "Remote Repair Impedance", "displayName_de": "Fernreparatur-Impedanz", "displayName_en-us": "Remote Repair Impedance", "displayName_es": "Impedancia de reparación remota", "displayName_fr": "Impédance de la réparation à distance", "displayName_it": "Remote Repair Impedance", "displayName_ja": "リモートリペアインピーダンス", "displayName_ko": "원격 수리 임피던스", "displayName_ru": "Ослабление дистанционного ремонта", "displayName_zh": "远程维修阻抗", "displayNameID": 662014, "itemModifiers": [ { "dogmaAttributeID": 2116 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2405": { "aggregateMode": "Maximum", "developerDescription": "Insurgency Suppression Bonus: Interdiction Range", "displayName_de": "Reichweitenbonus auf Stasisnetz und Warpunterbrecher für Anti-Piraten", "displayName_en-us": "Webifier and scrambler range bonus for anti-pirates", "displayName_es": "Bonificación al alcance de la red ralentizadora y el distorsionador para antipiratas", "displayName_fr": "Bonus de portée de générateur de stase et d'inhibiteur pour les antipirates", "displayName_it": "Webifier and scrambler range bonus for anti-pirates", "displayName_ja": "対海賊勢力のウェビファイヤーとスクランブラーの射程ボーナス", "displayName_ko": "진압군 스테이시스 웹 생성기 및 워프 스크램블러 사거리 증가", "displayName_ru": "Бонус к дальности стазис-индуктора и варп-глушителя для борцов с пиратами", "displayName_zh": "反海盗势力的停滞缠绕光束和跃迁扰频器距离加成", "displayNameID": 698669, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 54, "groupID": 65 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 54, "skillID": 3449 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2414": { "aggregateMode": "Minimum", "developerDescription": "CDCloudVelocity", "displayName_de": "Schiffsgeschwindigkeit", "displayName_en-us": "Ship Velocity", "displayName_es": "Velocidad de nave", "displayName_fr": "Vitesse du vaisseau", "displayName_it": "Ship Velocity", "displayName_ja": "航行速度", "displayName_ko": "함선 속도", "displayName_ru": "Скорость корабля", "displayName_zh": "舰船最大速度", "displayNameID": 708733, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2415": { "aggregateMode": "Maximum", "developerDescription": "CDCloudInertia", "displayName_de": "Ship Inertia", "displayName_en-us": "Ship Inertia", "displayName_es": "Inercia de la nave", "displayName_fr": "Ship Inertia", "displayName_it": "Ship Inertia", "displayName_ja": "艦船の慣性", "displayName_ko": "관성 계수", "displayName_ru": "Ship Inertia", "displayName_zh": "舰船惯性调整系数", "displayNameID": 708734, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2416": { "aggregateMode": "Maximum", "developerDescription": "CDCloudCapShieldRecharge", "displayName_de": "Schild- und Energiespeicherladezeit", "displayName_en-us": "Shield and Capacitor Recharge Rate", "displayName_es": "Índice de carga del condensador y del escudo", "displayName_fr": "Vitesse de recharge du bouclier et du capaciteur", "displayName_it": "Shield and Capacitor Recharge Rate", "displayName_ja": "シールドとキャパシタの充電速度", "displayName_ko": "실드 및 캐패시터 충전 속도", "displayName_ru": "Скорость перезарядки щита и накопителя", "displayName_zh": "护盾和电容回充速率", "displayNameID": 708735, "itemModifiers": [ { "dogmaAttributeID": 55 }, { "dogmaAttributeID": 479 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2417": { "aggregateMode": "Maximum", "developerDescription": "CDCloudModuleCycle", "displayName_de": "Modulzyklus und Nachladegeschwindigkeit", "displayName_en-us": "Module Cycle and Reload Speed", "displayName_es": "Velocidad de carga y ciclo de módulo", "displayName_fr": "Cycle des modules et vitesse de rechargement", "displayName_it": "Module Cycle and Reload Speed", "displayName_ja": "モジュールのサイクルとリロード速度", "displayName_ko": "모듈 사이클 시간 및 재장전 속도", "displayName_ru": "Время и скорость перезарядки модуля", "displayName_zh": "装备循环时间和装填速度", "displayNameID": 708736, "itemModifiers": [ { "dogmaAttributeID": 51 }, { "dogmaAttributeID": 73 }, { "dogmaAttributeID": 1795 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2418": { "aggregateMode": "Minimum", "developerDescription": "CDCloudTracking", "displayName_de": "Geschützturm-Nachführung und Lenkwaffen-Explosionsgeschwindigkeit", "displayName_en-us": "Turret Tracking and Missile Explosion Velocity", "displayName_es": "Velocidad de rastreo de torretas y explosión de misiles", "displayName_fr": "Poursuite des tourelles et vitesse d'explosion de missile", "displayName_it": "Turret Tracking and Missile Explosion Velocity", "displayName_ja": "タレットの追跡速度とミサイルの爆発速度", "displayName_ko": "터렛 트래킹 및 미사일 폭발 속도", "displayName_ru": "Скорость наведения орудий и распространения взрыва ракет", "displayName_zh": "炮台跟踪速度和导弹爆炸速度", "displayNameID": 708737, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 }, { "dogmaAttributeID": 653, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2419": { "aggregateMode": "Minimum", "developerDescription": "Anti-Tachyon Cloud Velocity Penalty", "displayName_de": "Schiffsgeschwindigkeit", "displayName_en-us": "Ship Velocity", "displayName_es": "Velocidad de nave", "displayName_fr": "Vitesse du vaisseau", "displayName_it": "Ship Velocity", "displayName_ja": "航行速度", "displayName_ko": "함선 속도", "displayName_ru": "Скорость корабля", "displayName_zh": "舰船最大速度", "displayNameID": 709266, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2420": { "aggregateMode": "Minimum", "developerDescription": "Anti-Tachyon Cloud Inertia Penalty", "displayName_de": "Schiffsträgheit", "displayName_en-us": "Ship Inertia", "displayName_es": "Inercia de la nave", "displayName_fr": "Inertie du vaisseau", "displayName_it": "Ship Inertia", "displayName_ja": "艦船の慣性", "displayName_ko": "관성 계수", "displayName_ru": "Инертность корабля", "displayName_zh": "舰船惯性调整系数", "displayNameID": 709267, "itemModifiers": [ { "dogmaAttributeID": 70 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2421": { "aggregateMode": "Maximum", "developerDescription": "Anti-Tachyon Cloud Signature Radius Bonus", "displayName_de": "Signaturradius", "displayName_en-us": "Signature Radius", "displayName_es": "Radio de la señal", "displayName_fr": "Rayon de signature", "displayName_it": "Signature Radius", "displayName_ja": "シグネチャ半径", "displayName_ko": "시그니처 반경", "displayName_ru": "Радиус сигнатуры", "displayName_zh": "信号半径", "displayNameID": 709278, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2426": { "aggregateMode": "Maximum", "developerDescription": "Disable MJDs", "displayName_de": "Mikrosprungantrieb blockiert", "displayName_en-us": "Micro Jump Drive Blocked", "displayName_es": "Motor de microsalto bloqueado", "displayName_fr": "Propulseur de microsaut bloqué", "displayName_it": "Micro Jump Drive Blocked", "displayName_ja": "マイクロジャンプドライブの妨害", "displayName_ko": "마이크로 점프 드라이브 차단됨", "displayName_ru": "Маневровый гипердвигатель выведен из строя", "displayName_zh": "已阻止微型跳跃引擎", "displayNameID": 722294, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 1349, "skillID": 4385 } ], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2427": { "aggregateMode": "Minimum", "developerDescription": "Set Speed Limit", "displayName_de": "Geschwindigkeitsbegrenzung angewendet", "displayName_en-us": "Speed Limit Applied", "displayName_es": "Límite de velocidad aplicada", "displayName_fr": "Limite de vitesse appliquée", "displayName_it": "Speed Limit Applied", "displayName_ja": "速度制限の適用", "displayName_ko": "속도 제한 적용됨", "displayName_ru": "Установлено ограничение скорости", "displayName_zh": "已应用速度限制", "displayNameID": 722295, "itemModifiers": [ { "dogmaAttributeID": 2033 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "ShowNormal" }, "2428": { "aggregateMode": "Maximum", "developerDescription": "MJFG Blocked", "displayName_de": "Mikrosprungfeldgenerator blockiert", "displayName_en-us": "Micro Jump Field Generator Blocked", "displayName_es": "Generador de campo de microsalto bloqueado", "displayName_fr": "Générateur de champ de microsaut bloqué", "displayName_it": "Micro Jump Field Generator Blocked", "displayName_ja": "マイクロジャンプフィールドジェネレーター使用不可", "displayName_ko": "마이크로 점프 필드 생성기 차단됨", "displayName_ru": "Генератор разгонного поля выведен из строя", "displayName_zh": "已阻止微型跳跃力场发生器", "displayNameID": 721861, "itemModifiers": [ { "dogmaAttributeID": 5694 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2429": { "aggregateMode": "Maximum", "developerDescription": "Disable Tractor Beam Repeating Activation", "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 1014, "groupID": 650 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2433": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Shield HP Bonus", "displayName_de": "HP-Bonus für Schilde", "displayName_en-us": "Shield Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del escudo", "displayName_fr": "Bonus de points de vie du bouclier", "displayName_it": "Shield Hitpoint Bonus", "displayName_ja": "シールドHPボーナス", "displayName_ko": "실드 내구도 보너스", "displayName_ru": "Влияние на запас прочности щитов", "displayName_zh": "护盾值加成", "displayNameID": 1011194, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2434": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Capacitor Capacity Bonus", "displayName_de": "Bonus auf Energiespeicherkapazität", "displayName_en-us": "Capacitor Capacity Bonus", "displayName_es": "Bonif. de capacidad del condensador", "displayName_fr": "Bonus de capacité du capaciteur", "displayName_it": "Capacitor Capacity Bonus", "displayName_ja": "キャパシタ容量ボーナス", "displayName_ko": "캐패시터 용량 보너스", "displayName_ru": "Влияние на ёмкость накопителя", "displayName_zh": "电容器容量加成", "displayNameID": 1011195, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2435": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Armor HP Bonus", "displayName_de": "HP-Bonus für Panzerung", "displayName_en-us": "Armor Hitpoint Bonus", "displayName_es": "Bonif. de puntos de vida del blindaje", "displayName_fr": "Bonus de PV du blindage", "displayName_it": "Armor Hitpoint Bonus", "displayName_ja": "アーマーHPボーナス", "displayName_ko": "장갑 내구도 보너스", "displayName_ru": "Увеличение запаса прочности брони", "displayName_zh": "装甲值加成", "displayNameID": 1011201, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2436": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Overheating Bonus - Includes Ewar", "displayName_de": "Modul-Überladungsbonus", "displayName_en-us": "Module Overload Bonus", "displayName_es": "Bonificación de sobrecarga de módulo", "displayName_fr": "Bonus de surcharge du module", "displayName_it": "Module Overload Bonus", "displayName_ja": "モジュールオーバーロードボーナス", "displayName_ko": "모듈 과부하 보너스", "displayName_ru": "Бонус к перегрузке модулей", "displayName_zh": "装备超载加成", "displayNameID": 1011202, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1181 }, { "dogmaAttributeID": 1205 }, { "dogmaAttributeID": 1206 }, { "dogmaAttributeID": 1208 }, { "dogmaAttributeID": 1210 }, { "dogmaAttributeID": 1222 }, { "dogmaAttributeID": 1223 }, { "dogmaAttributeID": 1225 }, { "dogmaAttributeID": 1226 }, { "dogmaAttributeID": 1230 }, { "dogmaAttributeID": 1231 }, { "dogmaAttributeID": 1935 }, { "dogmaAttributeID": 1936 }, { "dogmaAttributeID": 1937 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2437": { "aggregateMode": "Minimum", "developerDescription": "Sov System Modifier Capacitor Recharge Bonus", "displayName_de": "Energiespeicher-Wiederaufladebonus", "displayName_en-us": "Capacitor Recharge Bonus", "displayName_es": "Bonificación de carga del condensador", "displayName_fr": "Bonus de recharge du capaciteur", "displayName_it": "Capacitor Recharge Bonus", "displayName_ja": "キャパシタリチャージボーナス", "displayName_ko": "캐패시터 충전 보너스", "displayName_ru": "Влияние на перезарядку накопителя", "displayName_zh": "电容回充量加成", "displayNameID": 1011203, "itemModifiers": [ { "dogmaAttributeID": 55 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2438": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Targeting and DScan Range Bonus", "displayName_de": "Reichweitebonus für Zielerfassung und Richtungsscanner", "displayName_en-us": "Targeting and Directional Scanner Range Bonus", "displayName_es": "Bonificación al alcance de adquisición de objetivos y escáner direccional", "displayName_fr": "Bonus de portée pour le ciblage et le scanner directionnel", "displayName_it": "Targeting and Directional Scanner Range Bonus", "displayName_ja": "ターゲティングと指向性スキャナーの範囲ボーナス", "displayName_ko": "타겟팅 및 전방위 스캐너 범위 보너스", "displayName_ru": "Влияние на дальность наведения и дальность пеленгатора", "displayName_zh": "锁定和定向扫描仪范围加成", "displayNameID": 1011204, "itemModifiers": [ { "dogmaAttributeID": 76 }, { "dogmaAttributeID": 5796 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2439": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Scan Resolution Bonus", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на разрешающую способность сенсоров", "displayName_zh": "扫描分辨率加成", "displayNameID": 1011205, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2440": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Warp Speed Addition", "displayName_de": "AE/s zusätzliche Basis-Warpgeschwindigkeit", "displayName_en-us": "AU/s Additional Base Warp Speed", "displayName_es": "UA/s de velocidad de warp base adicional", "displayName_fr": "UA/s de vitesse de warp de base supplémentaire", "displayName_it": "AU/s Additional Base Warp Speed", "displayName_ja": "基本ワープ速度に追加される速度(AU/秒)", "displayName_ko": "기본 워프 속도 증가", "displayName_ru": "Доп. базовая скорость хода в варп-режиме в а. е./сек.", "displayName_zh": "基础跃迁速度+AU/s", "displayNameID": 1011206, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" }, "2441": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Shield Booster Bonus", "displayName_de": "Bonus für lokalen Schildbooster", "displayName_en-us": "Local Shield Booster Bonus", "displayName_es": "Bonificación de potenciador de escudo local", "displayName_fr": "Bonus au booster de bouclier local", "displayName_it": "Local Shield Booster Bonus", "displayName_ja": "ローカルシールドブースターボーナス", "displayName_ko": "실드 부스터 보너스", "displayName_ru": "Бонус для местного модуля накачки щитов", "displayName_zh": "自身护盾回充增量器加成", "displayNameID": 1015276, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3416 }, { "dogmaAttributeID": 68, "skillID": 21802 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2442": { "aggregateMode": "Maximum", "developerDescription": "Sov System Modifier Armor Repairer Bonus", "displayName_de": "Bonus für Panzerungsreparatursystem", "displayName_en-us": "Local Armor Repairer Bonus", "displayName_es": "Bonificación de reparador de blindaje local", "displayName_fr": "Bonus au réparateur de blindage local", "displayName_it": "Local Armor Repairer Bonus", "displayName_ja": "ローカルアーマーリペアラボーナス", "displayName_ko": "장갑수리 장치 보너스", "displayName_ru": "Бонус для местной установки ремонта брони", "displayName_zh": "自身装甲维修器加成", "displayNameID": 1015333, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 3393 }, { "dogmaAttributeID": 84, "skillID": 21803 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2464": { "aggregateMode": "Maximum", "developerDescription": "Expedition Burst: Probe Strength ", "displayName_de": "Bonus auf Stärke von Scansonden", "displayName_en-us": "Scan Probe Strength Bonus", "displayName_es": "Bonificación de intensidad de la sonda de escaneo", "displayName_fr": "Bonus de puissance de balayage de sonde", "displayName_it": "Scan Probe Strength Bonus", "displayName_ja": "スキャンプローブ強度ボーナス", "displayName_ko": "스캔 프로브 강도 보너스", "displayName_ru": "Прибавка к эффективности поиска разведзондами", "displayName_zh": "扫描探针强度加成", "displayNameID": 1017848, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6118, "skillID": 3412 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2465": { "aggregateMode": "Maximum", "developerDescription": "Expedition Burst: Directional Scanner, Hacking and Salvager Range", "displayName_de": "Reichweitenbonus auf Richtungsscanner-, Hacking- und Bergungsmodule", "displayName_en-us": "Directional scanner, hacking and salvager module range bonus", "displayName_es": "Bonificación de alcance de escáner direccional, hackeo y módulo recuperador", "displayName_fr": "Bonus de portée du scanner directionnel, du piratage et du module récupérateur", "displayName_it": "Directional scanner, hacking and salvager module range bonus", "displayName_ja": "指向性スキャナー、ハッキング、サルベージャーモジュールの射程ボーナス", "displayName_ko": "전방위 스캐너, 해킹 및 샐비지 모듈 거리 보너스", "displayName_ru": "Увеличение дальности пеленгаторов, модулей взлома и демонтажа", "displayName_zh": "定向扫描器、破译装备和打捞器范围加成", "displayNameID": 1017853, "itemModifiers": [ { "dogmaAttributeID": 5796 } ], "locationGroupModifiers": [ { "dogmaAttributeID": 54, "groupID": 538 }, { "dogmaAttributeID": 54, "groupID": 1122 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2466": { "aggregateMode": "Minimum", "developerDescription": "Expedition Burst: Maximum Scan Deviation Modifier", "displayName_de": "Bonus auf Abweichung von Scansonden", "displayName_en-us": "Scan Probe Deviation Bonus", "displayName_es": "Bonificación de desviación de sondas de escaneo", "displayName_fr": "Bonus à la déviation de balayage de sonde", "displayName_it": "Scan Probe Deviation Bonus", "displayName_ja": "スキャンプローブ誤差ボーナス", "displayName_ko": "스캔 프로브 오차 보너스", "displayName_ru": "Уменьшение отклонения для разведзондов", "displayName_zh": "探针扫描偏差加成", "displayNameID": 1017854, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6119, "skillID": 3412 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2468": { "aggregateMode": "Maximum", "developerDescription": "Expedition Burst: Virus Coherence", "displayName_de": "Kohärenzbonus des Analysegeräts", "displayName_en-us": "Analyzer Coherence Bonus", "displayName_es": "Bonificación de coherencia de analizador", "displayName_fr": "Bonus de résistance de l'analyseur", "displayName_it": "Analyzer Coherence Bonus", "displayName_ja": "アナライザーコヒーレンスボーナス", "displayName_ko": "분석기 결합도 보너스", "displayName_ru": "Прибавка к целостности вируса анализатора", "displayName_zh": "分析仪同步率加成", "displayNameID": 1017921, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 1909, "groupID": 538 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" }, "2473": { "aggregateMode": "Maximum", "developerDescription": "Disable Smart Bomb Activation", "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 1349, "groupID": 72 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2474": { "aggregateMode": "Maximum", "developerDescription": "Mining Burst: Enhanced Mining Scanner", "displayName_de": "Verbesserter Bergbauvermesser", "displayName_en-us": "Enhanced Mining Surveyor", "displayName_es": "Topógrafo minero mejorado", "displayName_fr": "Arpenteur d'extraction minière amélioré", "displayName_it": "Enhanced Mining Surveyor", "displayName_ja": "強化型採掘サーベイヤー", "displayName_ko": "향상된 채굴 탐사선", "displayName_ru": "Улучшенный считыватель сырья", "displayName_zh": "增强型采矿勘测仪", "displayNameID": 1021435, "itemModifiers": [ { "dogmaAttributeID": 5979 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostAssignment", "showOutputValueInUI": "Hide" }, "2480": { "aggregateMode": "Maximum", "developerDescription": "Connected to PhaseStabilizer", "displayName_de": "Verbunden", "displayName_en-us": "Connected", "displayName_es": "Conectada", "displayName_fr": "Connecté", "displayName_it": "Connected", "displayName_ja": "接続済", "displayName_ko": "접속됨", "displayName_ru": "Подключен", "displayName_zh": "已连接", "displayNameID": 1022189, "itemModifiers": [ { "dogmaAttributeID": 6042 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2481": { "aggregateMode": "Minimum", "developerDescription": "Expedition Burst: Salvager duration bonus", "displayName_de": "Bonus auf Dauer von Bergungsmodulen", "displayName_en-us": "Salvager Module Duration Bonus", "displayName_es": "Bonificación de duración del módulo recuperador", "displayName_fr": "Bonus à la durée du module récupérateur", "displayName_it": "Salvager Module Duration Bonus", "displayName_ja": "サルベージャーモジュール継続時間ボーナス", "displayName_ko": "샐비저 모듈 지속 시간 보너스", "displayName_ru": "Увеличение времени работы демонтажных модулей", "displayName_zh": "打捞器持续时间加成", "displayNameID": 1022798, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2482": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 1 - Warp Speed", "displayName_de": "Warpgeschwindigkeitsbonus (Thera)", "displayName_en-us": "Warp Speed Bonus (Thera)", "displayName_es": "Bonificación de velocidad de warp (Thera)", "displayName_fr": "Bonus de vitesse de warp (Thera)", "displayName_it": "Warp Speed Bonus (Thera)", "displayName_ja": "ワープ速度ボーナス(テラ)", "displayName_ko": "워프 속도 보너스(테라)", "displayName_ru": "Ускорение хода в варп-режиме (Thera)", "displayName_zh": "跃迁速度加成(席拉)", "displayNameID": 1025503, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2483": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 2 - Heat Damage Reduction", "displayName_de": "Modul-Hitzeschadenreduktion (Turnur-Nachwirkung)", "displayName_en-us": "Module Heat Damage Reduction (Turnur Aftermath)", "displayName_es": "Reducción de daño por calor del módulo (Secuelas de Turnur)", "displayName_fr": "Réduction des dégâts thermiques du module (Répercussions de Turnur)", "displayName_it": "Module Heat Damage Reduction (Turnur Aftermath)", "displayName_ja": "モジュール熱ダメージ減少(ターナーの余波)", "displayName_ko": "모듈 과부하 피해 감소(투르누르 폐허)", "displayName_ru": "Снижение теплового урона для модулей (Turnur после катастрофы)", "displayName_zh": "装备超载伤害降低(图尔鲁尔余波)", "displayNameID": 1025518, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2484": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 3 - Structure Hitpoint Bonus", "displayName_de": "Bonus auf Rumpf-HP (Zarzakh-Gravitationsgefahr)", "displayName_en-us": "Hull Hitpoint Bonus (Zarzakh Gravity Hazard)", "displayName_es": "Bonificación de puntos de vida del casco (peligro de gravedad de Zarzakh)", "displayName_fr": "Bonus de points de vie de la coque (danger gravitationnel de Zarzakh)", "displayName_it": "Hull Hitpoint Bonus (Zarzakh Gravity Hazard)", "displayName_ja": "船体HPボーナス(ザルザクの重力災害)", "displayName_ko": "선체 내구도 보너스(자르자크 중력파 충격)", "displayName_ru": "Увеличение прочности корпуса (гравитационные волны в Zarzakh)", "displayName_zh": "船体HP加成(扎尔扎克引力危害)", "displayNameID": 1025519, "itemModifiers": [ { "dogmaAttributeID": 9 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2485": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 4 - Web Resistance", "displayName_de": "Netz-Resistenz (Spurenkosmos)", "displayName_en-us": "Web Resistance (Trace Cosmos)", "displayName_es": "Resistencia a redes ralentizadoras (Cosmos de Vestigios)", "displayName_fr": "Résistance de stase (Trace Cosmos)", "displayName_it": "Web Resistance (Trace Cosmos)", "displayName_ja": "ウェビファイヤーへのレジスタンス(トレースコスモス)", "displayName_ko": "스테이시스 웹 저항력(트레이스 코스모스)", "displayName_ru": "+ к сопротивляемости стазис-индукции (Рубцы космоса)", "displayName_zh": "光束抗性(宇宙之痕)", "displayNameID": 1025520, "itemModifiers": [ { "dogmaAttributeID": 2115 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2486": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 5 - Max Velocity", "displayName_de": "Maximalgeschwindigkeit (EVE-Gate)", "displayName_en-us": "Max Velocity (EVE Gate)", "displayName_es": "Velocidad máxima (Portal de EVE)", "displayName_fr": "Vitesse maximale (EVE Gate)", "displayName_it": "Max Velocity (EVE Gate)", "displayName_ja": "最高速度(EVE Gate)", "displayName_ko": "최대 속도(이브 게이트)", "displayName_ru": "Увеличение максимальной скорости (врата EVE)", "displayName_zh": "最大速度(EVE之门)", "displayNameID": 1025521, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2487": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 6 - Warp Speed", "displayName_de": "Warpgeschwindigkeitsbonus (Reservoir der Ausstrahlung)", "displayName_en-us": "Warp Speed Bonus (Pool of Radiance)", "displayName_es": "Bonificación de velocidad de warp (Laguna de Fulgor)", "displayName_fr": "Bonus à la vitesse de warp (Pool of Radiance)", "displayName_it": "Warp Speed Bonus (Pool of Radiance)", "displayName_ja": "ワープ速度ボーナス(輝きの淵)", "displayName_ko": "워프 속도 보너스(레디언스 풀)", "displayName_ru": "Ускорение хода в варп-режиме (Сияющий пруд)", "displayName_zh": "跃迁速度加成(眩光池)", "displayNameID": 1025532, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2488": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 7 - Probe Strength", "displayName_de": "Bonus auf Scanleistung von Sonden (Denkmal von Katia Sae)", "displayName_en-us": "Probe Scan Strength Bonus (Katia Sae Memorial)", "displayName_es": "Bonificación de intensidad del escaneo de sonda (Monumento a Katia Sae)", "displayName_fr": "Bonus de puissance de balayage de sonde (Mémorial de Katia Sae)", "displayName_it": "Probe Scan Strength Bonus (Katia Sae Memorial)", "displayName_ja": "プローブスキャン強度ボーナス(カティア・サエ記念碑)", "displayName_ko": "프로브 스캔 강도 보너스('Katia Sae의 여정' 기념비)", "displayName_ru": "Прибавка к эффективности поиска разведзондами (памятник экспедиции Katia Sae)", "displayName_zh": "探针扫描强度加成(Katia Sae纪念碑)", "displayNameID": 1025522, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6118, "skillID": 3412 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2489": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 8 - Warp Speed", "displayName_de": "Warpgeschwindigkeitsbonus (Cord of the Elements)", "displayName_en-us": "Warp Speed Bonus (Cord of the Elements)", "displayName_es": "Bonificación de velocidad de warp (Cordón de los Elementos)", "displayName_fr": "Bonus de vitesse de warp (Cord of the Elements)", "displayName_it": "Warp Speed Bonus (Cord of the Elements)", "displayName_ja": "ワープ速度ボーナス(コードオブエレメンタル)", "displayName_ko": "워프 속도 보너스(엘리먼트 코드)", "displayName_ru": "Ускорение хода в варп-режиме (Хребет стихий)", "displayName_zh": "跃迁速度加成(考得)", "displayNameID": 1025523, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2490": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 9 - Salvager Cycle Time", "displayName_de": "Bonus auf Bergungsmoduldauer (Schlacht von Vak’Atioth)", "displayName_en-us": "Salvager Module Duration Bonus (Battle of Vak'Atioth)", "displayName_es": "Bonificación de duración del módulo recuperador (Batalla de Vak'Atioth)", "displayName_fr": "Bonus à la durée du module récupérateur (bataille de Vak'Atioth)", "displayName_it": "Salvager Module Duration Bonus (Battle of Vak'Atioth)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(ヴァカチオスの戦い)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(바크 아티오스 전투)", "displayName_ru": "Увеличение времени работы демонтажных модулей (бой за Вак'Атиот)", "displayName_zh": "打捞器持续时间加成(瓦克艾蒂斯之战)", "displayNameID": 1025524, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2491": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 10 - Salvager Cycle Time", "displayName_de": "Bonus auf Dauer von Bergungsmodulen (M2-XFE-Massaker)", "displayName_en-us": "Salvager Module Duration Bonus (M2-XFE Massacre)", "displayName_es": "Bonificación de duración del módulo recuperador (Masacre de M2-XFE)", "displayName_fr": "Bonus à la durée du module récupérateur (Massacre en M2-XFE)", "displayName_it": "Salvager Module Duration Bonus (M2-XFE Massacre)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(M2-XFEでの虐殺)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(M2-XFE 성계 대참사)", "displayName_ru": "Увеличение времени работы демонтажных модулей (Бойня в M2-XFE)", "displayName_zh": "打捞器持续时间加成(M2-XFE屠杀)", "displayNameID": 1025525, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2492": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 11 - Salvager Cycle Time", "displayName_de": "Bonus auf Dauer von Bergungsmodulen (Titanomachy)", "displayName_en-us": "Salvager Module Duration Bonus (Titanomachy)", "displayName_es": "Bonificación de duración del módulo recuperador (Titanomaquia)", "displayName_fr": "Bonus à la durée du module récupérateur (Titanomachie)", "displayName_it": "Salvager Module Duration Bonus (Titanomachy)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(ティタノマキア)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(타이타노마키)", "displayName_ru": "Увеличение времени работы демонтажных модулей (Титаномахия)", "displayName_zh": "打捞器持续时间加成(泰坦之战)", "displayNameID": 1025526, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2493": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 12 - Salvager Cycle Time", "displayName_de": "Bonus auf Bergungsmoduldauer (Golgothan-Felder)", "displayName_en-us": "Salvager Module Duration Bonus (Golgothan Fields)", "displayName_es": "Bonificación de duración del módulo recuperador (Campos de Golgothan)", "displayName_fr": "Bonus à la durée du module récupérateur (Golgothan Fields)", "displayName_it": "Salvager Module Duration Bonus (Golgothan Fields)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(ゴルゴザンフィールド)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(골고산 필드)", "displayName_ru": "Увеличение времени работы демонтажных модулей (Поля Голгофы)", "displayName_zh": "打捞器持续时间加成(格洛之域)", "displayNameID": 1025527, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2494": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 13 - Salvager Cycle Time", "displayName_de": "Bonus auf Dauer von Bergungsmodulen (Geburtstagsfeier)", "displayName_en-us": "Salvager Module Duration Bonus (Birthday Bash)", "displayName_es": "Bonificación de duración del módulo recuperador (fiesta de cumpleaños)", "displayName_fr": "Bonus à la durée du module récupérateur (Fête d'anniversaire)", "displayName_it": "Salvager Module Duration Bonus (Birthday Bash)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(誕生祝い)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(생일 파티)", "displayName_ru": "Увеличение времени работы демонтажных модулей (вечеринка в день рождения)", "displayName_zh": "打捞器持续时间加成(生日派对)", "displayNameID": 1025528, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2495": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Landmark Bonus 14 - Salvager Cycle Time", "displayName_de": "Bonus auf Dauer von Bergungsmodulen (Belagerung von C-J6MT)", "displayName_en-us": "Salvager Module Duration Bonus (Siege of C-J6MT)", "displayName_es": "Bonificación de duración del módulo recuperador (asedio de C-J6MT)", "displayName_fr": "Bonus à la durée du module récupérateur (Siège de C-J6MT)", "displayName_it": "Salvager Module Duration Bonus (Siege of C-J6MT)", "displayName_ja": "サルベージャーモジュール継続時間ボーナス(C-J6MT包囲戦)", "displayName_ko": "샐비저 모듈 지속 시간 보너스(C-J6MT 공성전)", "displayName_ru": "Увеличение времени работы демонтажных модулей (осада C-J6MT)", "displayName_zh": "打捞器持续时间加成(C-J6MT会战)", "displayNameID": 1025529, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 73, "skillID": 25863 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2496": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 15 - Warp Speed Bonus", "displayName_de": "Warpgeschwindigkeitsbonus (EVE Travel Agency)", "displayName_en-us": "Warp Speed Bonus (EVE Travel Agency)", "displayName_es": "Bonificación de velocidad de warp (Agencia de viajes EVE)", "displayName_fr": "Bonus de vitesse de warp (Agence de voyage d'EVE)", "displayName_it": "Warp Speed Bonus (EVE Travel Agency)", "displayName_ja": "ワープ速度ボーナス(EVEトラベルエージェンシー)", "displayName_ko": "워프 속도 보너스(EVE 여행사)", "displayName_ru": "Ускорение хода в варп-режиме (Туристическое агентство EVE)", "displayName_zh": "跃迁速度加成(新伊甸旅行社)", "displayNameID": 1025530, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2497": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 16 - Shield and Armor Hitpoint Bonus", "displayName_de": "Bonus auf Schild- und Panzerungstrefferpunkte (Allianzturnier-Denkmal)", "displayName_en-us": "Shield and Armor Hitpoint Bonus (Alliance Tournament Monument)", "displayName_es": "Bonificación de puntos de vida del escudo y blindaje (Monumento del Torneo de Alianzas)", "displayName_fr": "Bonus de points de vie du bouclier et du blindage (Monument de l'Alliance Tournament)", "displayName_it": "Shield and Armor Hitpoint Bonus (Alliance Tournament Monument)", "displayName_ja": "シールドとアーマーのHPボーナス(アライアンス・トーナメント記念碑)", "displayName_ko": "실드 및 장갑 내구도 보너스(얼라이언스 토너먼트 기념비)", "displayName_ru": "Увеличение прочности щитов и брони (монумент в честь Турнира альянсов)", "displayName_zh": "护盾和装甲值加成(联盟争霸赛纪念碑)", "displayNameID": 1025531, "itemModifiers": [ { "dogmaAttributeID": 263 }, { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2498": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 17 - Molea Cemetery", "displayName_de": "Bonus auf die Dauer von Kommandostrahlen (Molea-Friedhof)", "displayName_en-us": "Command Burst Duration Bonus (Molea Cemetery)", "displayName_es": "Bonificación de duración del estallido de mando (Cementerio de Molea)", "displayName_fr": "Bonus à la durée des salves de commandement (cimetière de Molea)", "displayName_it": "Command Burst Duration Bonus (Molea Cemetery)", "displayName_ja": "コマンドバースト継続時間ボーナス(モレアの墓地)", "displayName_ko": "커맨드 버스트 지속 시간 보너스(몰레아 공동묘지)", "displayName_ru": "Увеличение времени работы импульсных оптимизаторов (кладбище Молеа)", "displayName_zh": "指挥脉冲波持续时间加成(莫利亚墓园)", "displayNameID": 1025533, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 2535, "skillID": 3348 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2499": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 18 - Probe Strength", "displayName_de": "Bonus auf Scanleistung von Sonden (Gebiet Eins)", "displayName_en-us": "Probe Scan Strength Bonus (Site One)", "displayName_es": "Bonificación de intensidad del escaneo de sonda (zona uno)", "displayName_fr": "Bonus de puissance de balayage de sonde (Site Un)", "displayName_it": "Probe Scan Strength Bonus (Site One)", "displayName_ja": "プローブスキャン強度ボーナス(サイトワン)", "displayName_ko": "프로브 스캔 강도 보너스(사이트 원)", "displayName_ru": "Прибавка к эффективности поиска разведзондами (Зона Один)", "displayName_zh": "探针扫描强度加成(地点一)", "displayNameID": 1025534, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6118, "skillID": 3412 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2500": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 19 - Maximum Velocity", "displayName_de": "Bonus auf maximaler Geschwindigkeit (Drifter-Wurmloch)", "displayName_en-us": "Maximum Velocity Bonus (Drifter Wormhole)", "displayName_es": "Bonificación de velocidad máxima (agujero de gusano drifter)", "displayName_fr": "Bonus de vitesse maximale (trou de ver drifter)", "displayName_it": "Maximum Velocity Bonus (Drifter Wormhole)", "displayName_ja": "最高速度ボーナス(ドリフターのワームホール)", "displayName_ko": "최대 속도 보너스(드리프터 웜홀)", "displayName_ru": "Увеличение максимальной скорости (червоточина Скитальцев)", "displayName_zh": "最大速度加成(流浪者虫洞)", "displayNameID": 1025535, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2501": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 20 - Probe Strength Bonus", "displayName_de": "Bonus auf Scanleistung von Sonden (Finale Liminalität)", "displayName_en-us": "Probe Scan Strength Bonus (Final Liminality)", "displayName_es": "Bonificación de intensidad del escaneo de sonda (liminalidad final)", "displayName_fr": "Bonus de puissance de balayage de sonde (Dernière liminalité)", "displayName_it": "Probe Scan Strength Bonus (Final Liminality)", "displayName_ja": "プローブスキャン強度ボーナス(最終リミナリティ)", "displayName_ko": "프로브 스캔 강도 보너스(최종 임계선)", "displayName_ru": "Прибавка к эффективности поиска разведзондами (Последнее ограничение)", "displayName_zh": "探针扫描强度加成(最终阶段)", "displayNameID": 1025536, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 6118, "skillID": 3412 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2502": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Metaliminal Storm Bonus 1 - Gamma", "displayName_de": "Bonus auf die Resistenz gegen Energiekriegsführung (Metaliminaler Gamma-Sturm)", "displayName_en-us": "Energy Warfare Resistance Bonus (Metaliminal Gamma Storm)", "displayName_es": "Bonificación de resistencia a la guerra de energía (tormenta gamma metaliminal)", "displayName_fr": "Bonus de résistance à la guerre d'énergie (tempête métaliminale gamma)", "displayName_it": "Energy Warfare Resistance Bonus (Metaliminal Gamma Storm)", "displayName_ja": "エネルギー戦レジスタンス・ボーナス(メタリミナルガンマ線嵐)", "displayName_ko": "에너지전 저항 보너스(메타경계성 감마 폭풍)", "displayName_ru": "+ к сопротивляемости энергетич. воздействию (металиминальная гамма-буря)", "displayName_zh": "电容战抗性加成(超阈限伽马风暴)", "displayNameID": 1025540, "itemModifiers": [ { "dogmaAttributeID": 2045 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2503": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Metaliminal Storm Bonus 2 - Plasma", "displayName_de": "Modul-Hitzeschadenreduktion (Metaliminal-Plasmasturm)", "displayName_en-us": "Module Heat Damage Reduction (Metaliminal Plasma Storm)", "displayName_es": "Reducción de daño por calor de módulo (tormenta plasmática metaliminal)", "displayName_fr": "Réduction des dégâts thermiques des modules (tempête de plasma métaliminal)", "displayName_it": "Module Heat Damage Reduction (Metaliminal Plasma Storm)", "displayName_ja": "モジュール熱ダメージ減少(メタリミナルプラズマ嵐)", "displayName_ko": "모듈 과부하 피해 감소(메타경계성 플라즈마 폭풍)", "displayName_ru": "Снижение теплового урона для модулей (металиминальная пламенная буря)", "displayName_zh": "装备超载伤害降低(超阈限等离子体风暴)", "displayNameID": 1025539, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2504": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Metaliminal Storm Bonus 3 - Exotic", "displayName_de": "Bonus auf Scanauflösung (Metaliminaler exotischer Sturm)", "displayName_en-us": "Scan Resolution Bonus (Metaliminal Exotic Storm)", "displayName_es": "Bonificación de resolución de escaneo (tormenta exótica metaliminal)", "displayName_fr": "Bonus de résolution du balayage (tempête métaliminale exotique)", "displayName_it": "Scan Resolution Bonus (Metaliminal Exotic Storm)", "displayName_ja": "スキャン分解能ボーナス(メタリミナルエキゾチック嵐)", "displayName_ko": "스캔 정밀도 보너스(메타경계성 엑조틱 폭풍)", "displayName_ru": "Повышение эффективности сканирования (металиминальная экзотическая буря)", "displayName_zh": "扫描分辨率加成(超阈限异种风暴)", "displayNameID": 1025538, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2505": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Metaliminal Storm Bonus 4 - Electric", "displayName_de": "Energiespeicher-Bonus (Metaliminaler elektrischer Sturm)", "displayName_en-us": "Capacitor Amount Bonus (Metaliminal Electric Storm)", "displayName_es": "Bonificación de cantidad de condensador (tormenta eléctrica metaliminal)", "displayName_fr": "Bonus de volume du capaciteur (tempête électrique métaliminale)", "displayName_it": "Capacitor Amount Bonus (Metaliminal Electric Storm)", "displayName_ja": "キャパシタ量ボーナス(メタリミナル電気嵐)", "displayName_ko": "캐패시터 용량 보너스(메타경계성 전기 폭풍)", "displayName_ru": "Увеличение заряда накопителя (металиминальная электрическая буря)", "displayName_zh": "电容量加成(超阈限电子风暴)", "displayNameID": 1025537, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2506": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Sov Modifier Bonus 1 - Gamma Neut Resistances", "displayName_de": "Resistenzbonus gegen Energiekriegsführung (Gamma-Stabilitätsgenerator)", "displayName_en-us": "Energy Warfare Resistance Bonus (Gamma Stability Generator)", "displayName_es": "Bonificación de resistencia a la guerra de energía (generador de estabilidad Gamma)", "displayName_fr": "Bonus de résistance à la guerre d'énergie (générateur de stabilité gamma)", "displayName_it": "Energy Warfare Resistance Bonus (Gamma Stability Generator)", "displayName_ja": "エネルギー戦レジスタンス・ボーナス(ガンマ安定化ジェネレーター)", "displayName_ko": "에너지전 저항 보너스(감마 안정성 생성기)", "displayName_ru": "+ к сопротивляемости энергетическому воздействию (генератор гамма-эффектов)", "displayName_zh": "能量战抗性加成(伽玛稳定发生器)", "displayNameID": 1025541, "itemModifiers": [ { "dogmaAttributeID": 2045 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2507": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Sov Modifier Bonus 2 - Plasma", "displayName_de": "Modul-Hitzereduktionsbonus (Plasmastabilitätsgenerator)", "displayName_en-us": "Module Heat Reduction Bonus (Plasma Stability Generator)", "displayName_es": "Bonificación de reducción de calor del módulo (generador de estabilidad plasmática)", "displayName_fr": "Bonus de réduction de chaleur du module (générateur de stabilité plasma)", "displayName_it": "Module Heat Reduction Bonus (Plasma Stability Generator)", "displayName_ja": "モジュールの熱減少ボーナス(プラズマ安定化ジェネレーター)", "displayName_ko": "모듈 과부하 감소 보너스(플라즈마 안정성 생성기)", "displayName_ru": "Снижение теплового урона для модулей (генератор плазменных эффектов)", "displayName_zh": "装备散热加成(等离子稳定发生器)", "displayNameID": 1025542, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2508": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Sov Modifier Bonus 3 - exotic", "displayName_de": "Scanauflösungsbonus (Exotischer Stabilitätsgenerator)", "displayName_en-us": "Scan Resolution Bonus (Exotic Stability Generator)", "displayName_es": "Bonificación de resolución de escaneo (generador de estabilidad exótico)", "displayName_fr": "Bonus de résolution du balayage (générateur de stabilité exotique)", "displayName_it": "Scan Resolution Bonus (Exotic Stability Generator)", "displayName_ja": "スキャン分解能ボーナス(エキゾチック安定化ジェネレーター)", "displayName_ko": "스캔 정밀도 보너스(엑조틱 안정성 생성기)", "displayName_ru": "Повышение эффективности сканирования (генератор экзотических эффектов)", "displayName_zh": "扫描分辨率加成(异种稳定发生器)", "displayNameID": 1025543, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2509": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Sov Modifier Bonus 4 - Electric", "displayName_de": "Bonus auf Energiespeicherkapazität (Elektrischer Stabilitätsgenerator)", "displayName_en-us": "Capacitor Capacity Bonus (Electric Stability Generator)", "displayName_es": "Bonificación de capacidad del condensador (generador de estabilidad eléctrica)", "displayName_fr": "Bonus de charge du capaciteur (générateur de stabilité électrique)", "displayName_it": "Capacitor Capacity Bonus (Electric Stability Generator)", "displayName_ja": "キャパシタ容量ボーナス(電気安定化ジェネレーター)", "displayName_ko": "캐패시터 용량 보너스(전기 안정성 생성기)", "displayName_ru": "Увеличение ёмкости накопителя (генератор электрических эффектов)", "displayName_zh": "电容容量加成(电力稳定发生器)", "displayNameID": 1025544, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2510": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Wormhole Bonus 1 - Black Hole", "displayName_de": "Netz-Resistenzbonus (Schwarzes Loch)", "displayName_en-us": "Web Resistance Bonus (Black Hole)", "displayName_es": "Bonificación de resistencia a redes ralentizadoras (agujero negro)", "displayName_fr": "Bonus de résistance de stase (Trou noir)", "displayName_it": "Web Resistance Bonus (Black Hole)", "displayName_ja": "ウェビファイア・レジスタンスボーナス(ブラックホール)", "displayName_ko": "스테이시스 웹 저항력 보너스(블랙홀)", "displayName_ru": "+ к сопротивляемости стазис-индукции (чёрная дыра)", "displayName_zh": "光束抗性加成(黑洞)", "displayNameID": 1025545, "itemModifiers": [ { "dogmaAttributeID": 2115 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2511": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Wormhole Bonus 2 - Red Giant", "displayName_de": "Modul-Hitzeschadenreduktion (Roter Riese)", "displayName_en-us": "Module Heat Damage Reduction Bonus (Red Giant)", "displayName_es": "Bonificación de reducción de daño por calor del módulo (gigante roja)", "displayName_fr": "Bonus de réduction des dégâts thermiques du module (Géante rouge)", "displayName_it": "Module Heat Damage Reduction Bonus (Red Giant)", "displayName_ja": "モジュール熱ダメージ減少ボーナス(赤色巨星)", "displayName_ko": "모듈 과부하 피해 감소 보너스(적색 거성)", "displayName_ru": "Снижение теплового урона для модулей (красный гигант)", "displayName_zh": "装备超载伤害降低(红巨星)", "displayNameID": 1025546, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2512": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Wormhole Bonus 3 - Wolf Rayet", "displayName_de": "Bonus auf die Nachführung von mittleren Energiegeschütztürmen (Wolf Rayet)", "displayName_en-us": "Medium Energy Turret Tracking Bonus (Wolf Rayet)", "displayName_es": "Bonificación de rastreo de la torreta de energía mediana (Wolf-Rayet)", "displayName_fr": "Bonus de poursuite pour tourelle à énergie intermédiaire (Wolf Rayet)", "displayName_it": "Medium Energy Turret Tracking Bonus (Wolf Rayet)", "displayName_ja": "中型エネルギータレット・トラッキングボーナス(ウォルフ・ライエ)", "displayName_ko": "중형 에너지 터렛 트래킹 보너스(볼프-레이에)", "displayName_ru": "Ускорение наведения средних лазерных орудий (звезда Вольфа-Райе)", "displayName_zh": "中型能量炮台跟踪速度加成(沃尔夫-拉叶星)", "displayNameID": 1025547, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3306 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2513": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Wormhole Bonus 4 - Pulsar", "displayName_de": "Bonus auf die Resistenz gegen Energiekriegsführung (Pulsar)", "displayName_en-us": "Energy Warfare Resistance Bonus (Pulsar)", "displayName_es": "Bonificación de resistencia a la guerra de energía (púlsar)", "displayName_fr": "Bonus de résistance à la guerre d'énergie (Pulsar)", "displayName_it": "Energy Warfare Resistance Bonus (Pulsar)", "displayName_ja": "エネルギー戦レジスタンス・ボーナス(パルサー)", "displayName_ko": "에너지전 저항 보너스(펄서)", "displayName_ru": "+ к сопротивляемости энергетич. воздействию (пульсар)", "displayName_zh": "能量战抗性加成(脉冲星)", "displayNameID": 1025548, "itemModifiers": [ { "dogmaAttributeID": 2045 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2514": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Wormhole Bonus 5 - Cataclysmic", "displayName_de": "Bonus auf Energiespeicherkapazität (Kataklysmische Variable)", "displayName_en-us": "Capacitor Capacity Bonus (Cataclysmic Variable)", "displayName_es": "Bonificación de capacidad del condensador (variable cataclísmica)", "displayName_fr": "Bonus de charge du capaciteur (variable cataclysmique)", "displayName_it": "Capacitor Capacity Bonus (Cataclysmic Variable)", "displayName_ja": "キャパシタ容量ボーナス(激変星)", "displayName_ko": "캐패시터 용량 보너스(격변변광성)", "displayName_ru": "Увеличение ёмкости накопителя (катаклизмическая переменная)", "displayName_zh": "电容容量加成(激变变星)", "displayNameID": 1025549, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2515": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Wormhole Bonus 6 - Magnetar", "displayName_de": "Resistenzbonus auf Sensordämpfer- und Waffendisruptor (Magnetar)", "displayName_en-us": "Sensor Dampener and Weapon Disruptor resistance bonus (Magnetar)", "displayName_es": "Bonificación de resistencia de los atenuadores de sensor y los disruptores de armas (Magnetar)", "displayName_fr": "Bonus de résistance pour atténuateur de détection et perturbateur d'armement (Magnetar)", "displayName_it": "Sensor Dampener and Weapon Disruptor resistance bonus (Magnetar)", "displayName_ja": "センサーダンプナーと兵器妨害器のレジスタンスボーナス(帯磁星)", "displayName_ko": "센서 댐프너 및 무기 디스럽터 저항력 보너스(마그네타)", "displayName_ru": "+ к сопротивляемости подавителям сенсоров и орудий (магнетар)", "displayName_zh": "感应抑阻器和武器扰断器抗性加成(磁星)", "displayNameID": 1025550, "itemModifiers": [ { "dogmaAttributeID": 2112 }, { "dogmaAttributeID": 2113 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2516": { "aggregateMode": "Maximum", "developerDescription": "Mining Burst: Mining Crit Chance", "displayName_de": "Bonus auf kritische Erfolgswahrscheinlichkeit beim Bergbau", "displayName_en-us": "Mining critical success chance bonus", "displayName_es": "Bonificación de probabilidad de éxito crítico de minería", "displayName_fr": "Bonus de chances de succès critique d'extraction minière", "displayName_it": "Mining critical success chance bonus", "displayName_ja": "採掘のクリティカル率ボーナス", "displayName_ko": "대량 채굴 확률 보너스", "displayName_ru": "Повышение вероятности крит. удара при бурении", "displayName_zh": "采矿暴击成功率加成", "displayNameID": 1028422, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 5967, "skillID": 3386 }, { "dogmaAttributeID": 5967, "skillID": 16281 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2517": { "aggregateMode": "Minimum", "developerDescription": "Mining Burst: Mining Residue Chance Reduction", "displayName_de": "Rückstandswahrscheinlichkeits-Reduktion", "displayName_en-us": "Residue Probability Reduction", "displayName_es": "Reducción de probabilidad de residuos", "displayName_fr": "Réduction de la probabilité de résidus", "displayName_it": "Residue Probability Reduction", "displayName_ja": "残留物率減少", "displayName_ko": "손실 확률 감소", "displayName_ru": "Снижение вероятности получения отходов", "displayName_zh": "产生残渣几率降低", "displayNameID": 1028423, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 3154, "skillID": 3386 }, { "dogmaAttributeID": 3154, "skillID": 16281 }, { "dogmaAttributeID": 3154, "skillID": 25544 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2518": { "aggregateMode": "Minimum", "developerDescription": "Sisters of EVE Metaliminal Storm Bonus 5 - Winter Nexus Storm", "displayName_de": "Thermalresistenz-Bonus (unbeständiger Eissturm)", "displayName_en-us": "Thermal Resistance Bonus (Volatile Ice Storm)", "displayName_es": "Bonificación de resistencia térmica (tormenta de hielo volátil)", "displayName_fr": "Bonus de résistance thermique (tempête de glace volatile)", "displayName_it": "Thermal Resistance Bonus (Volatile Ice Storm)", "displayName_ja": "サーマルレジスタンスボーナス(揮発性アイスストーム)", "displayName_ko": "열 저항력 보너스(불안정한 얼음 폭풍)", "displayName_ru": "Бонус к сопротивляемости термальному урону (нестабильная ледяная буря)", "displayName_zh": "热能抗性加成(不稳定冰风暴)", "displayNameID": 1030721, "itemModifiers": [ { "dogmaAttributeID": 110 }, { "dogmaAttributeID": 270 }, { "dogmaAttributeID": 274 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowInverted" }, "2519": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 21", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2520": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 22", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2521": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 23", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2522": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 24", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2523": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 25", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2524": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 27", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2525": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 28", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2526": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 26", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2527": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 29", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2528": { "aggregateMode": "Maximum", "developerDescription": "Sisters of EVE Landmark Bonus 30", "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PreAssignment", "showOutputValueInUI": "ShowNormal" }, "2529": { "aggregateMode": "Maximum", "developerDescription": "Gallente Elections Warp Speed Bonus", "displayName_de": "Warpgeschwindigkeitsbonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Bonificación de velocidad de warp", "displayName_fr": "Bonus de vitesse de warp", "displayName_it": "Warp Speed Bonus", "displayName_ja": "ワープ速度ボーナス", "displayName_ko": "워프 속도 보너스", "displayName_ru": "Повышение скорости варп-прыжка", "displayName_zh": "跃迁速度加成", "displayNameID": 1035896, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2530": { "aggregateMode": "Maximum", "developerDescription": "Hybrid Turret Tracking", "displayName_de": "Nachführungsgeschwindigkeitsbonus von Hybridgeschütztürmen", "displayName_en-us": "Hybrid Turret Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo de la torreta híbrida", "displayName_fr": "Bonus à la vitesse de poursuite des tourelles hybrides", "displayName_it": "Hybrid Turret Tracking Speed Bonus", "displayName_ja": "ハイブリッドタレット追跡速度ボーナス", "displayName_ko": "하이브리드 터렛 트래킹 속도 증가", "displayName_ru": "Бонус к скорости наведения гибридных орудий", "displayName_zh": "混合炮台跟踪速度加成", "displayNameID": 1035899, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3301 }, { "dogmaAttributeID": 160, "skillID": 3304 }, { "dogmaAttributeID": 160, "skillID": 3307 }, { "dogmaAttributeID": 160, "skillID": 21666 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2533": { "aggregateMode": "Maximum", "developerDescription": "Gallente Elections Local Armor Repair", "displayName_de": "Bonus für Panzerungsreparatursystem", "displayName_en-us": "Local Armor Repairer Bonus", "displayName_es": "Bonificación de reparador de blindaje local", "displayName_fr": "Bonus au réparateur de blindage local", "displayName_it": "Local Armor Repairer Bonus", "displayName_ja": "ローカルアーマーリペアラボーナス", "displayName_ko": "장갑 수리 장치 보너스", "displayName_ru": "Бонус для местной установки ремонта брони", "displayName_zh": "自身装甲维修器加成", "displayNameID": 1035904, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 3393 }, { "dogmaAttributeID": 84, "skillID": 21803 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2534": { "aggregateMode": "Maximum", "developerDescription": "Triglavian System Effect - Maximum Locked Targets Percentage", "displayName_de": "Maximum Targets Penalty", "displayName_en-us": "Maximum Targets Penalty", "displayName_es": "Maximum Targets Penalty", "displayName_fr": "Maximum Targets Penalty", "displayName_it": "Maximum Targets Penalty", "displayName_ja": "Maximum Targets Penalty", "displayName_ko": "Maximum Targets Penalty", "displayName_ru": "Maximum Targets Penalty", "displayName_zh": "Maximum Targets Penalty", "displayNameID": 1036727, "itemModifiers": [ { "dogmaAttributeID": 192 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2535": { "aggregateMode": "Maximum", "developerDescription": "Triglavian System Effect - Warp Speed Multiplier Percentage", "displayName_de": "Warp Speed Penalty", "displayName_en-us": "Warp Speed Penalty", "displayName_es": "Warp Speed Penalty", "displayName_fr": "Warp Speed Penalty", "displayName_it": "Warp Speed Penalty", "displayName_ja": "Warp Speed Penalty", "displayName_ko": "Warp Speed Penalty", "displayName_ru": "Warp Speed Penalty", "displayName_zh": "Warp Speed Penalty", "displayNameID": 1036726, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2536": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Smart Bomb Blocker", "displayName_de": "Aktivierung blockiert: Smart Bombs", "displayName_en-us": "Activation Blocked: Smart Bombs", "displayName_es": "Activación bloqueada: bombas inteligentes", "displayName_fr": "Activation bloquée : bombes de proximité", "displayName_it": "Activation Blocked: Smart Bombs", "displayName_ja": "起動ブロック:スマートボム", "displayName_ko": "모듈 사용 금지: 스마트폭탄", "displayName_ru": "Заблокированы: импульсные излучатели", "displayName_zh": "启动受阻:立体炸弹", "displayNameID": 1036280, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 1349, "groupID": 72 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2537": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Micro Jump Field Generator Blocker", "displayName_de": "Aktivierung blockiert: Mikrosprungfeldgeneratoren", "displayName_en-us": "Activation Blocked: Micro Jump Field Generators", "displayName_es": "Activación bloqueada: generadores de campo de microsalto", "displayName_fr": "Activation bloquée : générateurs de champ de microsaut", "displayName_it": "Activation Blocked: Micro Jump Field Generators", "displayName_ja": "起動ブロック:マイクロジャンプフィールドジェネレーター", "displayName_ko": "모듈 사용 금지: 마이크로 점프 필드 생성기", "displayName_ru": "Заблокированы: генераторы разгонного поля", "displayName_zh": "启动受阻:微型跳跃力场发生器", "displayNameID": 1036279, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 1349, "groupID": 1533 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2538": { "aggregateMode": "Maximum", "developerDescription": "Triglavian System Effect - Remote Armor Repair Percentage", "displayName_de": "Remote Armor Repair Bonus", "displayName_en-us": "Remote Armor Repair Bonus", "displayName_es": "Remote Armor Repair Bonus", "displayName_fr": "Remote Armor Repair Bonus", "displayName_it": "Remote Armor Repair Bonus", "displayName_ja": "Remote Armor Repair Bonus", "displayName_ko": "Remote Armor Repair Bonus", "displayName_ru": "Remote Armor Repair Bonus", "displayName_zh": "Remote Armor Repair Bonus", "displayNameID": 1036730, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 16069 }, { "dogmaAttributeID": 84, "skillID": 24568 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2539": { "aggregateMode": "Maximum", "developerDescription": "Triglavian System Effect - Remote Shield Boost Percentage", "displayName_de": "Remote Shield Boost Bonus", "displayName_en-us": "Remote Shield Boost Bonus", "displayName_es": "Remote Shield Boost Bonus", "displayName_fr": "Remote Shield Boost Bonus", "displayName_it": "Remote Shield Boost Bonus", "displayName_ja": "Remote Shield Boost Bonus", "displayName_ko": "Remote Shield Boost Bonus", "displayName_ru": "Remote Shield Boost Bonus", "displayName_zh": "Remote Shield Boost Bonus", "displayNameID": 1036729, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3422 }, { "dogmaAttributeID": 68, "skillID": 24571 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2548": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Heat Damage Reduction", "displayName_de": "Hitzeschadenreduktion", "displayName_en-us": "Heat Damage Reduction", "displayName_es": "Reducción de daño por calor", "displayName_fr": "Réduction des dégâts thermiques", "displayName_it": "Heat Damage Reduction", "displayName_ja": "熱ダメージ減少", "displayName_ko": "열 피해량 감소", "displayName_ru": "Снижение теплового урона", "displayName_zh": "超载伤害降低", "displayNameID": 1037571, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1211 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2549": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Overload Bonus", "displayName_de": "Erhöhung des Überlastungsbonus", "displayName_en-us": "Overload Bonus Increase", "displayName_es": "Aumento de bonificación de sobrecarga", "displayName_fr": "Augmentation du bonus de surcharge", "displayName_it": "Overload Bonus Increase", "displayName_ja": "オーバーロードボーナス増加", "displayName_ko": "과부하 보너스 증가", "displayName_ru": "Усиление бонуса к перегрузке модулей", "displayName_zh": "超载加成提升", "displayNameID": 1037573, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [ { "dogmaAttributeID": 1181 }, { "dogmaAttributeID": 1205 }, { "dogmaAttributeID": 1206 }, { "dogmaAttributeID": 1208 }, { "dogmaAttributeID": 1210 }, { "dogmaAttributeID": 1222 }, { "dogmaAttributeID": 1223 }, { "dogmaAttributeID": 1225 }, { "dogmaAttributeID": 1226 }, { "dogmaAttributeID": 1230 }, { "dogmaAttributeID": 1231 }, { "dogmaAttributeID": 1935 }, { "dogmaAttributeID": 1936 }, { "dogmaAttributeID": 1937 } ], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2550": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Signature Radius Reduction", "displayName_de": "Signaturradiusreduktion", "displayName_en-us": "Signature Radius Reduction", "displayName_es": "Reducción de radio de la señal", "displayName_fr": "Réduction du rayon de signature", "displayName_it": "Signature Radius Reduction", "displayName_ja": "シグネチャ半径縮小", "displayName_ko": "시그니처 반경 감소", "displayName_ru": "Уменьшение радиуса сигнатуры", "displayName_zh": "信号半径降低", "displayNameID": 1037574, "itemModifiers": [ { "dogmaAttributeID": 552 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2551": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Capacitor Capacity Bonus", "displayName_de": "Bonus auf Energiespeicherkapazität", "displayName_en-us": "Capacitor Capacity Bonus", "displayName_es": "Bonificación de capacidad del condensador", "displayName_fr": "Bonus de charge du capaciteur", "displayName_it": "Capacitor Capacity Bonus", "displayName_ja": "キャパシタ容量ボーナス", "displayName_ko": "캐패시터 용량 보너스", "displayName_ru": "Влияние на ёмкость накопителя", "displayName_zh": "电容器容量加成", "displayNameID": 1037575, "itemModifiers": [ { "dogmaAttributeID": 482 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2552": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Ship Velocity Bonus", "displayName_de": "Schiffsgeschwindigkeitsbonus", "displayName_en-us": "Ship Velocity Bonus", "displayName_es": "Bonificación de velocidad de la nave", "displayName_fr": "Bonus de vitesse du vaisseau", "displayName_it": "Ship Velocity Bonus", "displayName_ja": "航行速度ボーナス", "displayName_ko": "함선 속도 증가", "displayName_ru": "Бонус к скорости корабля", "displayName_zh": "舰船速度加成", "displayNameID": 1037576, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2553": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Tracking Speed Bonus", "displayName_de": "Nachführungsgeschwindigkeit-Bonus", "displayName_en-us": "Tracking Speed Bonus", "displayName_es": "Bonificación de velocidad de rastreo", "displayName_fr": "Bonus à la vitesse de poursuite", "displayName_it": "Tracking Speed Bonus", "displayName_ja": "追跡速度ボーナス", "displayName_ko": "트래킹 속도 보너스", "displayName_ru": "Влияние на скорость слежения", "displayName_zh": "跟踪速度加成", "displayNameID": 1037577, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 160, "skillID": 3300 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2554": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Missile Explosion Radius Reduction", "displayName_de": "Reduktion des Explosionsradius von Lenkwaffen", "displayName_en-us": "Missile Explosion Radius Reduction", "displayName_es": "Reducción de radio de explosión de misiles", "displayName_fr": "Réduction du rayon d'explosion des missiles", "displayName_it": "Missile Explosion Radius Reduction", "displayName_ja": "ミサイル爆発半径減少", "displayName_ko": "미사일 폭발반경 감소", "displayName_ru": "Уменьшение сигнатуры взрыва ракет", "displayName_zh": "导弹爆炸半径减小", "displayNameID": 1037578, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 654, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2555": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Scan Resolution Bonus", "displayName_de": "Scanauflösungsbonus", "displayName_en-us": "Scan Resolution Bonus", "displayName_es": "Bonificación de resolución de escaneo", "displayName_fr": "Bonus de résolution du balayage", "displayName_it": "Scan Resolution Bonus", "displayName_ja": "スキャン分解能ボーナス", "displayName_ko": "스캔 정밀도 보너스", "displayName_ru": "Влияние на разрешающую способность сенсоров", "displayName_zh": "扫描分辨率加成", "displayNameID": 1037579, "itemModifiers": [ { "dogmaAttributeID": 564 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2556": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Local Armor Repair Amount Bonus", "displayName_de": "Bonus auf die lokale Panzerungsreparaturmenge", "displayName_en-us": "Local Armor Repair Amount Bonus", "displayName_es": "Bonificación de cantidad de reparación del blindaje local", "displayName_fr": "Bonus au volume de réparation du blindage local", "displayName_it": "Local Armor Repair Amount Bonus", "displayName_ja": "ローカルアーマーリペア量ボーナス", "displayName_ko": "장갑 수리 장치 회복량 증가", "displayName_ru": "Бонус к эффективности местного ремонта брони", "displayName_zh": "自身装甲维修量加成", "displayNameID": 1037580, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 3393 }, { "dogmaAttributeID": 84, "skillID": 21803 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2557": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Local Shield Boost Amount Bonus", "displayName_de": "Bonus auf die lokale Schildsteigerungsmenge", "displayName_en-us": "Local Shield Boost Amount Bonus", "displayName_es": "Bonificación de cantidad de potenciador de escudo local", "displayName_fr": "Bonus au volume du boost de bouclier local", "displayName_it": "Local Shield Boost Amount Bonus", "displayName_ja": "ローカルシールドブースト量ボーナス", "displayName_ko": "실드 부스터 회복량 증가", "displayName_ru": "Бонус к эффективности местной накачки щитов", "displayName_zh": "自身护盾回充量加成", "displayNameID": 1037581, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3416 }, { "dogmaAttributeID": 68, "skillID": 21802 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2558": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Remote Armor Repair Amount Bonus", "displayName_de": "Bonus auf die entfernte Panzerungsreparaturmenge", "displayName_en-us": "Remote Armor Repair Amount Bonus", "displayName_es": "Bonificación de cantidad de reparación del blindaje remoto", "displayName_fr": "Bonus au volume de réparation de blindage à distance", "displayName_it": "Remote Armor Repair Amount Bonus", "displayName_ja": "リモートアーマーリペア量ボーナス", "displayName_ko": "원격 장갑수리 회복량 증가", "displayName_ru": "Бонус к эффективности дистанционного ремонта брони", "displayName_zh": "远程装甲维修量加成", "displayNameID": 1037874, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 84, "skillID": 16069 }, { "dogmaAttributeID": 84, "skillID": 24568 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2559": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Remote Shield Boost Amount Bonus", "displayName_de": "Bonus auf die Fernschildsteigerungsmenge", "displayName_en-us": "Remote Shield Boost Amount Bonus", "displayName_es": "Bonificación de cantidad de potenciador de escudo remoto", "displayName_fr": "Bonus au volume du boost de bouclier à distance", "displayName_it": "Remote Shield Boost Amount Bonus", "displayName_ja": "リモートシールドブースト量ボーナス", "displayName_ko": "원격 실드 부스터 회복량 증가", "displayName_ru": "Бонус к эффективности дистанционной накачки щитов", "displayName_zh": "远程护盾回充量加成", "displayNameID": 1037875, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 68, "skillID": 3422 }, { "dogmaAttributeID": 68, "skillID": 24571 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2560": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Warp Drive Blocker", "displayName_de": "Aktivierung blockiert: Warpantriebe", "displayName_en-us": "Activation Blocked: Warp Drives", "displayName_es": "Activación bloqueada: motores de warp", "displayName_fr": "Activation bloquée : propulseurs de warp", "displayName_it": "Activation Blocked: Warp Drives", "displayName_ja": "起動ブロック:ワープドライブ", "displayName_ko": "모듈 사용 금지: 워프 드라이브", "displayName_ru": "Заблокированы: варп-двигатели", "displayName_zh": "启动受阻:跃迁引擎", "displayNameID": 1038311, "itemModifiers": [ { "dogmaAttributeID": 104 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2561": { "aggregateMode": "Maximum", "developerDescription": "Horde Mode - Cloaking Devices Blocker", "displayName_de": "Aktivierung blockiert: Tarnvorrichtungen", "displayName_en-us": "Activation Blocked: Cloaking Devices", "displayName_es": "Activación bloqueada: dispositivos de camuflaje", "displayName_fr": "Activation bloquée : dispositifs de camouflage", "displayName_it": "Activation Blocked: Cloaking Devices", "displayName_ja": "起動ブロック:遮蔽装置", "displayName_ko": "모듈 사용 금지: 클로킹 장치", "displayName_ru": "Заблокированы: устройства маскировки", "displayName_zh": "启动受阻:隐形装置", "displayNameID": 1038313, "itemModifiers": [ { "dogmaAttributeID": 2454 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "Hide" }, "2583": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day - Energy Weapon Damage", "displayName_de": "Energy Weapon Damage Bonus", "displayName_en-us": "Energy Weapon Damage Bonus", "displayName_es": "Energy Weapon Damage Bonus", "displayName_fr": "Energy Weapon Damage Bonus", "displayName_it": "Energy Weapon Damage Bonus", "displayName_ja": "Energy Weapon Damage Bonus", "displayName_ko": "Energy Weapon Damage Bonus", "displayName_ru": "Energy Weapon Damage Bonus", "displayName_zh": "Energy Weapon Damage Bonus", "displayNameID": 1039934, "itemModifiers": [], "locationGroupModifiers": [ { "dogmaAttributeID": 64, "groupID": 53 } ], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2584": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day Armor Resist", "displayName_de": "Armor Hit Points Bonus", "displayName_en-us": "Armor Hit Points Bonus", "displayName_es": "Armor Hit Points Bonus", "displayName_fr": "Armor Hit Points Bonus", "displayName_it": "Armor Hit Points Bonus", "displayName_ja": "Armor Hit Points Bonus", "displayName_ko": "Armor Hit Points Bonus", "displayName_ru": "Armor Hit Points Bonus", "displayName_zh": "Armor Hit Points Bonus", "displayNameID": 1039935, "itemModifiers": [ { "dogmaAttributeID": 265 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2585": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day - Missile Laucher Rate of Fire", "displayName_de": "Missile Launcher Rate of Fire Bonus", "displayName_en-us": "Missile Launcher Rate of Fire Bonus", "displayName_es": "Missile Launcher Rate of Fire Bonus", "displayName_fr": "Missile Launcher Rate of Fire Bonus", "displayName_it": "Missile Launcher Rate of Fire Bonus", "displayName_ja": "Missile Launcher Rate of Fire Bonus", "displayName_ko": "Missile Launcher Rate of Fire Bonus", "displayName_ru": "Missile Launcher Rate of Fire Bonus", "displayName_zh": "Missile Launcher Rate of Fire Bonus", "displayNameID": 1039936, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 51, "skillID": 3319 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2586": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day - Shield HP", "displayName_de": "Shield Hit Points Bonus", "displayName_en-us": "Shield Hit Points Bonus", "displayName_es": "Shield Hit Points Bonus", "displayName_fr": "Shield Hit Points Bonus", "displayName_it": "Shield Hit Points Bonus", "displayName_ja": "Shield Hit Points Bonus", "displayName_ko": "Shield Hit Points Bonus", "displayName_ru": "Shield Hit Points Bonus", "displayName_zh": "Shield Hit Points Bonus", "displayNameID": 1039937, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2587": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day - Projectile Turret Falloff", "displayName_de": "Projectile Turret Falloff Bonus", "displayName_en-us": "Projectile Turret Falloff Bonus", "displayName_es": "Projectile Turret Falloff Bonus", "displayName_fr": "Projectile Turret Falloff Bonus", "displayName_it": "Projectile Turret Falloff Bonus", "displayName_ja": "Projectile Turret Falloff Bonus", "displayName_ko": "Projectile Turret Falloff Bonus", "displayName_ru": "Projectile Turret Falloff Bonus", "displayName_zh": "Projectile Turret Falloff Bonus", "displayNameID": 1039940, "itemModifiers": [], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [ { "dogmaAttributeID": 158, "skillID": 3302 }, { "dogmaAttributeID": 158, "skillID": 3305 }, { "dogmaAttributeID": 158, "skillID": 3308 } ], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2588": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day - Velocity", "displayName_de": "Max Velocity Bonus", "displayName_en-us": "Max Velocity Bonus", "displayName_es": "Max Velocity Bonus", "displayName_fr": "Max Velocity Bonus", "displayName_it": "Max Velocity Bonus", "displayName_ja": "Max Velocity Bonus", "displayName_ko": "Max Velocity Bonus", "displayName_ru": "Max Velocity Bonus", "displayName_zh": "Max Velocity Bonus", "displayNameID": 1039941, "itemModifiers": [ { "dogmaAttributeID": 37 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2589": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day Amarr Warp Speed", "displayName_de": "Warp Speed Bonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Warp Speed Bonus", "displayName_fr": "Warp Speed Bonus", "displayName_it": "Warp Speed Bonus", "displayName_ja": "Warp Speed Bonus", "displayName_ko": "Warp Speed Bonus", "displayName_ru": "Warp Speed Bonus", "displayName_zh": "Warp Speed Bonus", "displayNameID": 1039964, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2590": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day Caldari Warp Speed", "displayName_de": "Warp Speed Bonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Warp Speed Bonus", "displayName_fr": "Warp Speed Bonus", "displayName_it": "Warp Speed Bonus", "displayName_ja": "Warp Speed Bonus", "displayName_ko": "Warp Speed Bonus", "displayName_ru": "Warp Speed Bonus", "displayName_zh": "Warp Speed Bonus", "displayNameID": 1039965, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2591": { "aggregateMode": "Maximum", "developerDescription": "Capsuleer Day Minmatar Warp Speed", "displayName_de": "Warp Speed Bonus", "displayName_en-us": "Warp Speed Bonus", "displayName_es": "Warp Speed Bonus", "displayName_fr": "Warp Speed Bonus", "displayName_it": "Warp Speed Bonus", "displayName_ja": "Warp Speed Bonus", "displayName_ko": "Warp Speed Bonus", "displayName_ru": "Warp Speed Bonus", "displayName_zh": "Warp Speed Bonus", "displayNameID": 1039966, "itemModifiers": [ { "dogmaAttributeID": 600 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "PostPercent", "showOutputValueInUI": "ShowNormal" }, "2593": { "aggregateMode": "Maximum", "developerDescription": "Item Trader Shield Buff", "displayName_de": "Additional Base Shield Hitpoints", "displayName_en-us": "Additional Base Shield Hitpoints", "displayName_es": "Additional Base Shield Hitpoints", "displayName_fr": "Additional Base Shield Hitpoints", "displayName_it": "Additional Base Shield Hitpoints", "displayName_ja": "Additional Base Shield Hitpoints", "displayName_ko": "Additional Base Shield Hitpoints", "displayName_ru": "Additional Base Shield Hitpoints", "displayName_zh": "Additional Base Shield Hitpoints", "displayNameID": 1041619, "itemModifiers": [ { "dogmaAttributeID": 263 } ], "locationGroupModifiers": [], "locationModifiers": [], "locationRequiredSkillModifiers": [], "operationName": "ModAdd", "showOutputValueInUI": "ShowNormal" } } ================================================ FILE: staticdata/phobos/metadata.0.json ================================================ [ { "field_name": "client_build", "field_value": 3326071 }, { "field_name": "dump_time", "field_value": 1777555540 } ] ================================================ FILE: staticdata/phobos/traits.0.json ================================================ [ { "traits_de": { "role": { "bonuses": [ { "number": "75%", "text": "Bonus auf den Schaden von kleinen Hybridgeschütztürmen" }, { "number": "22.5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Hybridgeschütztürmen" }, { "number": "30%", "text": "Bonus auf den Präzisionsabfall von kleinen Hybridgeschütztürmen" }, { "number": "30%", "text": "Bonus auf den maximalen Geschwindigkeitsfaktor von Stasisnetzen" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "75%", "text": "bonus to Small Hybrid Turret damage" }, { "number": "22.5%", "text": "bonus to Small Hybrid Turret tracking speed" }, { "number": "30%", "text": "bonus to Small Hybrid Turret falloff" }, { "number": "30%", "text": "bonus to Stasis Webifier max velocity factor" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "75%", "text": "de bonificación al daño de la torreta híbrida pequeña." }, { "number": "22.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida pequeña." }, { "number": "30%", "text": "de bonificación al alcance efectivo de la torreta híbrida pequeña." }, { "number": "30%", "text": "de bonificación al factor de velocidad máxima de la red ralentizadora." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "75%", "text": "de bonus aux dégâts des petites tourelles hybrides" }, { "number": "22.5%", "text": "de bonus à la vitesse de poursuite des petites tourelles hybrides" }, { "number": "30%", "text": "de bonus de distance de perte des petites tourelles hybrides" }, { "number": "30%", "text": "de bonus au facteur de vitesse maximale des générateurs de stase" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "75%", "text": "bonus to Small Hybrid Turret damage" }, { "number": "22.5%", "text": "bonus to Small Hybrid Turret tracking speed" }, { "number": "30%", "text": "bonus to Small Hybrid Turret falloff" }, { "number": "30%", "text": "bonus to Stasis Webifier max velocity factor" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "75%", "text": "小型ハイブリッドタレットのダメージが増加" }, { "number": "22.5%", "text": "小型ハイブリッドタレットの追跡速度が上昇" }, { "number": "30%", "text": "小型ハイブリッドタレットの精度低下範囲が拡大" }, { "number": "30%", "text": "ステイシスウェビファイアの最高速度が上昇" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "75%", "text": "소형 하이브리드 터렛 피해량 증가" }, { "number": "22.5%", "text": "소형 하이브리드 터렛 트래킹 속도 증가" }, { "number": "30%", "text": "소형 하이브리드 터렛 유효사거리 증가" }, { "number": "30%", "text": "스테이시스 웹 생성기 최대 속도 계수 증가" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 75%", "text": "увеличивается урон боеприпасов малых гибридных орудий" }, { "number": "на 22.5%", "text": "повышается скорость наводки на цель малых гибридных орудий" }, { "number": "на 30%", "text": "увеличивается добавочная дальность ведения огня из малых гибридных орудий" }, { "number": "на 30%", "text": "повышается эффективность действия стазис-индукторов" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "75%", "text": "小型混合炮台伤害加成" }, { "number": "22.5%", "text": "小型混合炮台跟踪速度加成" }, { "number": "30%", "text": "小型混合炮台失准范围加成" }, { "number": "30%", "text": "停滞缠绕光束最大速度影响系数加成" } ], "header": "特有加成:" } }, "typeID": 33083 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Bonus auf die Maximalgeschwindigkeit von leichten Lenkwaffen und Raketen" }, { "number": "12%", "text": "Bonus auf alle Schildresistenzen" }, { "number": "30%", "text": "Bonus auf die HP, den Schaden und die Erzausbeute von Drohnen" }, { "number": "25%", "text": "Bonus auf die Maximalgeschwindigkeit von Drohnen" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Light Missile and Rocket max velocity" }, { "number": "12%", "text": "bonus to all shield resistances" }, { "number": "30%", "text": "bonus to Drone hitpoints, damage and mining yield" }, { "number": "25%", "text": "bonus to Drone max velocity" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de bonificación a la velocidad máxima de los misiles ligeros y los cohetes." }, { "number": "12%", "text": "de bonificación a todas las resistencias de escudo." }, { "number": "30%", "text": "de bonificación a los puntos de vida, el daño y el rendimiento minero de los drones." }, { "number": "25%", "text": "de bonificación a la velocidad máxima de los drones." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de bonus à la vitesse maximale des missiles légers et des roquettes" }, { "number": "12%", "text": "de bonus à toutes les résistances de bouclier" }, { "number": "30%", "text": "de bonus aux dégâts, aux PV et au rendement d'extraction des drones" }, { "number": "25%", "text": "de bonus à la vitesse maximale des drones" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Light Missile and Rocket max velocity" }, { "number": "12%", "text": "bonus to all shield resistances" }, { "number": "30%", "text": "bonus to Drone hitpoints, damage and mining yield" }, { "number": "25%", "text": "bonus to Drone max velocity" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "ライトミサイルとロケットの最高速度が上昇" }, { "number": "12%", "text": "全てのシールドレジスタンスが増加" }, { "number": "30%", "text": "ドローンのヒットポイント・ダメージ・採掘量が増加" }, { "number": "25%", "text": "ドローンの最高速度が上昇" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "라이트 미사일 및 로켓 최대 속도 증가" }, { "number": "12%", "text": "모든 실드 저항력 증가" }, { "number": "30%", "text": "드론 내구도, 피해량, 채굴량 증가" }, { "number": "25%", "text": "드론 최대속도 증가" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "увеличивается скорость полёта лёгких ракет и лёгких штурмовых ракет" }, { "number": "на 12%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" }, { "number": "на 30%", "text": "увеличивается урон бортового оружия дронов и производительность буровых дронов; увеличивается запас их прочности" }, { "number": "на 25%", "text": "повышается скорость полного хода дронов" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "轻型导弹和火箭飞行速度加成" }, { "number": "12%", "text": "护盾抗性加成" }, { "number": "30%", "text": "无人机伤害、HP和采矿量加成" }, { "number": "25%", "text": "无人机最大速度加成" } ], "header": "特有加成:" } }, "typeID": 33081 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Kann zwei Kommandostrahl-Module verwenden" }, { "number": "100%", "text": "Bonus auf die Reichweite des Wirkungsbereichs von Kommandostrahlen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von schweren Lenkwaffenwerfern und schweren Angriffslenkwaffenwerfern" }, { "number": "10%", "text": "Bonus auf die Geschwindigkeit von schweren Angriffslenkwaffen und schweren Lenkwaffen" }, { "number": "3%", "text": "Bonus auf Stärke und Dauer von Schildkommando- und Gefechtkommandostrahlen" } ], "header": "Command Ships Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von schweren Lenkwaffenwerfern und schweren Angriffslenkwaffenwerfern" }, { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Minmatar Battlecruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can use two Command Burst modules" }, { "number": "100%", "text": "bonus to Command Burst area of effect range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "10%", "text": "bonus to Heavy Missile and Heavy Assault Missile velocity" }, { "number": "3%", "text": "bonus to Shield Command and Skirmish Command burst strength and duration" } ], "header": "Command Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Minmatar Battlecruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar dos módulos de estallido de mando." }, { "number": "100%", "text": "de bonificación al alcance del radio de acción del estallido de mando." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles pesados y los lanzamisiles de asalto pesados." }, { "number": "10%", "text": "de bonificación a la velocidad de los misiles pesados y los misiles de asalto pesados." }, { "number": "3%", "text": "de bonificación a la intensidad y la duración del estallido de mando de escudo y de mando de escaramuza." } ], "header": "Bonificaciones de Naves de mando (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles pesados y los lanzamisiles de asalto pesados." }, { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Crucero de combate minmatariano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut utiliser deux salves de commandement." }, { "number": "100%", "text": "de bonus à la portée de l'effet de zone des salves de commandement." } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles lourds et des lance-missiles d'assaut lourds" }, { "number": "10%", "text": "de bonus à la vitesse des missiles lourds et des missiles d'assaut lourds" }, { "number": "3%", "text": "de bonus à la puissance et à la durée des salves de commandement des boucliers et de commandement tactique." } ], "header": " Bonus (par niveau de compétence) Vaisseaux de commandement :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles lourds et des lance-missiles d'assaut lourds" }, { "number": "4%", "text": "de bonus à toutes les résistances du bouclier" } ], "header": " Bonus (par niveau de compétence) Croiseur de bataille minmatar :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can use two Command Burst modules" }, { "number": "100%", "text": "bonus to Command Burst area of effect range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "10%", "text": "bonus to Heavy Missile and Heavy Assault Missile velocity" }, { "number": "3%", "text": "bonus to Shield Command and Skirmish Command burst strength and duration" } ], "header": "Command Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Minmatar Battlecruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·コマンドバーストモジュールは2個使用可能です" }, { "number": "100%", "text": "コマンドバースト効果範囲にボーナス" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "ヘビーミサイル・ヘビーアサルトミサイルランチャーの発射間隔が短縮" }, { "number": "10%", "text": "ヘビーミサイルとヘビーアサルトミサイルの速度上昇" }, { "number": "3%", "text": "シールドコマンドバーストと機動戦コマンドバーストの強度と持続時間が上昇" } ], "header": "指揮型巡洋戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ヘビーミサイル・ヘビーアサルトミサイルランチャーの発射間隔が短縮" }, { "number": "4%", "text": "全てのシールドレジスタンスにボーナス" } ], "header": "ミンマター巡洋戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·두개의 커맨드 버스트 모듈 사용 가능" }, { "number": "100%", "text": "커맨드 버스트 효과 반경 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "헤비 미사일, 헤비 어썰트 미사일 런처 연사속도 증가" }, { "number": "10%", "text": "헤비 미사일 및 헤비 어썰트 미사일 속도 증가" }, { "number": "3%", "text": "실드 버스트 및 스커미시 버스트 강도 및 지속시간 증가" } ], "header": "커맨드쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "헤비 미사일, 헤비 어썰트 미사일 런처 연사속도 증가" }, { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "민마타 배틀크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Корабли этого типа могут включать до двух импульсных оптимизаторов" }, { "number": "на 100%", "text": "увеличивается радиус импульсов, генерируемых импульсными оптимизаторами" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается скорострельность ПУ тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 10%", "text": "бонус к скорости тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 3%", "text": "повышается эффективность и длительность действия импульсов, генерируемых импульсными оптимизаторами щитов и импульсными оптимизаторами маневрирования" } ], "header": "За каждую степень освоения навыка Корабли управления:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается скорострельность ПУ тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 4%", "text": "бонус к сопротивляемости щитов" } ], "header": "За каждую степень освоения навыка Минматарские линейные крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以装配两个指挥脉冲波装备" }, { "number": "100%", "text": "指挥脉冲波效果范围加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "重型导弹发射器和重型攻击导弹发射器射速加成" }, { "number": "10%", "text": "重型导弹和重型攻击导弹飞行速度加成" }, { "number": "3%", "text": "护盾指挥和游击战指挥脉冲波强度和持续时间加成" } ], "header": "指挥舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "重型导弹发射器和重型攻击导弹发射器射速加成" }, { "number": "4%", "text": "护盾抗性加成" } ], "header": "米玛塔尔战列巡洋舰操作每升一级:" } ] }, "typeID": 22468 }, { "traits_de": { "misc": { "bonuses": [ { "number": "2AE/s", "text": "Erhöhung der Warpgeschwindigkeit des Schiffs" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "2AU/s", "text": "increase in ship warp speed" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "2UA/s", "text": "de aumento de la velocidad de warp de la nave." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "2UA/s", "text": "augmentation de la vitesse de warp du vaisseau" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "2AU/s", "text": "increase in ship warp speed" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "2AU/秒", "text": "艦船ワープ速度が上昇" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "2AU/s", "text": "워프 속도 증가" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 2а. е./сек.", "text": "увеличение скорости хода в варп-режиме" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "2AU/s", "text": "提高舰船跃迁速度" } ], "header": "其它加成:" } }, "typeID": 54215 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Kann zwei Kommandostrahl-Module verwenden" }, { "number": "50%", "text": "Bonus auf die Reichweite des Wirkungsbereichs von Kommandostrahlen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Feuerrate von mittelgroßen Hybridgeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Präzisionsabfall von mittelgroßen Hybridgeschütztürmen" }, { "number": "4%", "text": "Bonus auf Stärke und Dauer von Panzerungkommando- und Gefechtkommandostrahlen" } ], "header": "Command Ships Boni (je Skillstufe):" }, { "bonuses": [ { "number": "7.5%", "text": "Bonus auf den Schaden von mittelgroßen Hybridgeschütztürmen" }, { "number": "10%", "text": "Bonus auf die Leistung von Panzerungsreparatursystemen" } ], "header": "Gallente Battlecruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can use two Command Burst modules" }, { "number": "50%", "text": "bonus to Command Burst area of effect range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret rate of fire" }, { "number": "10%", "text": "bonus to Medium Hybrid Turret falloff" }, { "number": "4%", "text": "bonus to Armored Command and Skirmish Command burst strength and duration" } ], "header": "Command Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret damage" }, { "number": "10%", "text": "bonus to Armor Repairer amount" } ], "header": "Gallente Battlecruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar dos módulos de estallido de mando." }, { "number": "50%", "text": "de bonificación al alcance del radio de acción del estallido de mando." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la cadencia de tiro de la torreta híbrida mediana." }, { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta híbrida mediana." }, { "number": "4%", "text": "de bonificación a la intensidad y la duración del estallido de mando de blindaje y de mando de escaramuza." } ], "header": "Bonificaciones de Naves de mando (por nivel de habilidad):" }, { "bonuses": [ { "number": "7.5%", "text": "de bonificación al daño de la torreta híbrida mediana." }, { "number": "10%", "text": "de bonificación a la eficiencia de los reparadores de blindaje." } ], "header": "Bonificaciones de Crucero de combate gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut utiliser deux salves de commandement." }, { "number": "50%", "text": "de bonus à la portée de l'effet de zone des salves de commandement" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonus à la cadence de tir des tourelles hybrides intermédiaires" }, { "number": "10%", "text": "de bonus de distance de perte des tourelles hybrides intermédiaires" }, { "number": "4%", "text": "de bonus à la puissance et à la durée des salves de commandement blindé et de commandement tactique." } ], "header": " Bonus (par niveau de compétence) Vaisseaux de commandement :" }, { "bonuses": [ { "number": "7.5%", "text": "de bonus aux dégâts des tourelles hybrides intermédiaires" }, { "number": "10%", "text": "de bonus au montant des réparateurs de blindage" } ], "header": " Bonus (par niveau de compétence) Croiseur de bataille gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can use two Command Burst modules" }, { "number": "50%", "text": "bonus to Command Burst area of effect range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret rate of fire" }, { "number": "10%", "text": "bonus to Medium Hybrid Turret falloff" }, { "number": "4%", "text": "bonus to Armored Command and Skirmish Command burst strength and duration" } ], "header": "Command Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret damage" }, { "number": "10%", "text": "bonus to Armor Repairer amount" } ], "header": "Gallente Battlecruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·コマンドバーストモジュールは2個使用可能です" }, { "number": "50%", "text": "コマンドバーストの有効範囲を拡大" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "中型ハイブリッドタレットの発射間隔が短縮" }, { "number": "10%", "text": "中型ハイブリッドタレットの精度低下範囲が拡大" }, { "number": "4%", "text": "アーマードコマンドバーストと機動戦コマンドバーストの強度と持続時間が上昇" } ], "header": "指揮型巡洋戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "7.5%", "text": "中型ハイブリッドタレットのダメージが増加" }, { "number": "10%", "text": "アーマーリペアラのリペア量が増加" } ], "header": "ガレンテ巡洋戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·두개의 커맨드 버스트 모듈 사용 가능" }, { "number": "50%", "text": "커맨드 버스트 효과 반경 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "중형 하이브리드 터렛 연사속도 증가" }, { "number": "10%", "text": "중형 하이브리드 터렛 유효사거리 증가" }, { "number": "4%", "text": "장갑 버스트 및 스커미시 버스트 강도 및 지속시간 증가" } ], "header": "커맨드쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "7.5%", "text": "중형 하이브리드 터렛 피해량 증가" }, { "number": "10%", "text": "장갑수리 장치 수리량 증가" } ], "header": "갈란테 배틀크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Корабли этого типа могут включать до двух импульсных оптимизаторов" }, { "number": "на 50%", "text": "бонус к области действия импульсного оптимизатора" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 7.5%", "text": "повышается скорострельность средних гибридных орудий" }, { "number": "на 10%", "text": "увеличивается добавочная дальность ведения огня из средних гибридных орудий" }, { "number": "на 4%", "text": "повышается эффективность и длительность действия импульсов, генерируемых импульсными оптимизаторами брони и импульсными оптимизаторами маневрирования" } ], "header": "За каждую степень освоения навыка Корабли управления:" }, { "bonuses": [ { "number": "на 7.5%", "text": "увеличивается урон боеприпасов средних гибридных орудий" }, { "number": "на 10%", "text": "повышается производительность установок ремонта брони" } ], "header": "За каждую степень освоения навыка Галлентские линейные крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以装配两个指挥脉冲波装备" }, { "number": "50%", "text": "指挥脉冲波效果范围加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "中型混合炮台射速加成" }, { "number": "10%", "text": "中型混合炮台失准范围加成" }, { "number": "4%", "text": "装甲指挥和游击战指挥脉冲波强度和持续时间加成" } ], "header": "指挥舰操作每升一级:" }, { "bonuses": [ { "number": "7.5%", "text": "中型混合炮台伤害加成" }, { "number": "10%", "text": "装甲维修器维修量加成" } ], "header": "盖伦特战列巡洋舰操作每升一级:" } ] }, "typeID": 22466 }, { "traits_de": { "misc": { "bonuses": [ { "number": "25%", "text": "Reduktion der Kinetikresistenz von Schiffen" }, { "number": "50%", "text": "Bonus auf die Scanauflösung von Schiffen" }, { "number": "25%", "text": "Bonus auf die Zyklusgeschwindigkeit von Bergbaulasern" }, { "number": "25%", "text": "Bonus auf die Zyklusgeschwindigkeit von Panzerungsreparatursystemen und Schildboostern" }, { "number": "100%", "text": "Bonus auf Warpgeschwindigkeit von Schiffen" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "25%", "text": "reduction in ship kinetic resistances" }, { "number": "50%", "text": "bonus to ship scan resolution" }, { "number": "25%", "text": "bonus to mining laser cycle speed" }, { "number": "25%", "text": "bonus to local Armor Repairer and Shield Booster cycle speed" }, { "number": "100%", "text": "bonus to ship warp speed" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "25%", "text": "de reducción de las resistencias cinéticas de la nave." }, { "number": "50%", "text": "de bonificación a la resolución de escaneo de la nave." }, { "number": "25%", "text": "de bonificación a la velocidad de ciclo del láser minero." }, { "number": "25%", "text": "de bonificación a la velocidad de ciclo del reparador de blindaje y el potenciador de escudo locales." }, { "number": "100%", "text": "de bonificación a la velocidad de warp de la nave." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "25%", "text": "de réduction des résistances cinétiques du vaisseau" }, { "number": "50%", "text": "de bonus à la résolution du balayage du vaisseau" }, { "number": "25%", "text": "de bonus de vitesse de cycle des lasers d'extraction" }, { "number": "25%", "text": "de bonus au réparateur de blindage local et à la vitesse de cycle du booster de bouclier" }, { "number": "100%", "text": "de bonus à la vitesse de warp du vaisseau" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "25%", "text": "reduction in ship kinetic resistances" }, { "number": "50%", "text": "bonus to ship scan resolution" }, { "number": "25%", "text": "bonus to mining laser cycle speed" }, { "number": "25%", "text": "bonus to local Armor Repairer and Shield Booster cycle speed" }, { "number": "100%", "text": "bonus to ship warp speed" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "25%", "text": "艦船のキネティックレジスタンスが減少" }, { "number": "50%", "text": "艦船のスキャン分解能を強化" }, { "number": "25%", "text": "採掘レーザーのサイクル速度を短縮" }, { "number": "25%", "text": "ローカルアーマーリペアラとシールドブースターのサイクル速度が増加" }, { "number": "100%", "text": "艦船のワープ速度が増加" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "25%", "text": "키네틱 저항력 감소" }, { "number": "50%", "text": "함선 스캔 정밀도 증가" }, { "number": "25%", "text": "채굴 레이저 사이클 시간 감소" }, { "number": "25%", "text": "장갑수리 장치 및 실드 부스터 사이클 시간 감소" }, { "number": "100%", "text": "워프 속도 증가" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 25%", "text": "уменьшение сопротивляемости корабля кинетическому урону" }, { "number": "на 50%", "text": "бонус к разрешающей способности сенсоров корабля" }, { "number": "на 25%", "text": "бонус к скорости цикла бурового лазера" }, { "number": "на 25%", "text": "бонус к скорости цикла установки ремонта брони и модуля усиления щитов" }, { "number": "на 100%", "text": "бонус к скорости хода корабля в варп-режиме" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "25%", "text": "舰船动能抗性降低" }, { "number": "50%", "text": "舰船扫描分辨率加成" }, { "number": "25%", "text": "采矿激光器循环速度加成" }, { "number": "25%", "text": "自身装甲维修器和护盾回充增量器循环速度加成" }, { "number": "100%", "text": "舰船跃迁速度加成" } ], "header": "其它加成:" } }, "typeID": 56059 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Es können Unterbechungsfeldwerfer eingebaut werden" }, { "number": "25%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "Bonus auf die HP von Schilden" }, { "number": "10%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" } ], "header": "Interdictors Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf den Kinetikschaden von leichten Lenkwaffen und Raketen" }, { "number": "10%", "text": "Bonus auf die Maximalgeschwindigkeit von leichten Lenkwaffen und Raketen" } ], "header": "Caldari Destroyer Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can fit Interdiction Sphere Launcher" }, { "number": "25%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "bonus to shield hitpoints" }, { "number": "10%", "text": "reduction in Microwarpdrive signature radius penalty" } ], "header": "Interdictors bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Light Missile and Rocket kinetic damage" }, { "number": "10%", "text": "bonus to Light Missile and Rocket max velocity" } ], "header": "Caldari Destroyer bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar un lanzaesferas de interdicción." }, { "number": "25%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de bonificación a los puntos de vida de los escudos." }, { "number": "10%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." } ], "header": "Bonificaciones de Interdictores (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación al daño cinético de los misiles ligeros y los cohetes." }, { "number": "10%", "text": "de bonificación a la velocidad máxima de los misiles ligeros y los cohetes." } ], "header": "Bonificaciones de Destructor caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut équiper des lanceurs de sphère d'interdiction" }, { "number": "25%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de bonus aux points de vie du bouclier" }, { "number": "10%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" } ], "header": " Bonus (par niveau de compétence) Interdicteurs :" }, { "bonuses": [ { "number": "10%", "text": "de bonus aux dégâts cinétiques des missiles légers et des roquettes" }, { "number": "10%", "text": "de bonus à la vitesse maximale des missiles légers et des roquettes" } ], "header": " Bonus (par niveau de compétence) Destroyer caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can fit Interdiction Sphere Launcher" }, { "number": "25%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "bonus to shield hitpoints" }, { "number": "10%", "text": "reduction in Microwarpdrive signature radius penalty" } ], "header": "Interdictors bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Light Missile and Rocket kinetic damage" }, { "number": "10%", "text": "bonus to Light Missile and Rocket max velocity" } ], "header": "Caldari Destroyer bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·インターディクションスフィアランチャーを装備できる" }, { "number": "25%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "シールドHPが増加" }, { "number": "10%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" } ], "header": "ワープ妨害型駆逐艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "ライトミサイルおよびロケットのキネティックダメージが上昇" }, { "number": "10%", "text": "ライトミサイルとロケットの最高速度が上昇" } ], "header": "カルダリ駆逐艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·인터딕션 런처 장착 가능" }, { "number": "25%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "실드량 증가" }, { "number": "10%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" } ], "header": "인터딕터 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "라이트 미사일 및 로켓 키네틱 피해량 증가" }, { "number": "10%", "text": "라이트 미사일 및 로켓 최대 속도 증가" } ], "header": "칼다리 디스트로이어 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Корабли этого типа могут оснащаться пусковыми установками зондов варп-заграждения" }, { "number": "на 25%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 15%", "text": "бонус к запасу прочности щитов" }, { "number": "на 10%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" } ], "header": "За каждую степень освоения навыка Заградительные эсминцы:" }, { "bonuses": [ { "number": "на 10%", "text": "бонус к кинетическому урону от лёгких ракет и ракет" }, { "number": "на 10%", "text": "увеличивается скорость полёта лёгких ракет и лёгких штурмовых ракет" } ], "header": "За каждую степень освоения навыка Калдарские эсминцы:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以安装拦截泡发射器" }, { "number": "25%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "护盾值加成" }, { "number": "10%", "text": "微型跃迁推进器的信号半径惩罚加成" } ], "header": "拦截舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "轻型导弹和火箭动能伤害加成" }, { "number": "10%", "text": "轻型导弹和火箭飞行速度加成" } ], "header": "加达里驱逐舰操作每升一级:" } ] }, "typeID": 22464 }, { "traits_de": { "role": { "bonuses": [ { "number": "90%", "text": "Reduzierte effektiv zurückgelegte Distanz für die Sprungerschöpfung" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "90%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "90%", "text": "de réduction de la distance effective comptabilisée pour l'épuisement de saut" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "90%", "text": "ジャンプ疲労までの移動有効距離が減少" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "90%", "text": "이동 거리에 따른 점프 피로도 감소" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 90%", "text": "медленнее накапливается усталость от гиперпереходов" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "90%", "text": "减少跳跃疲劳对有效距离的影响" } ], "header": "特有加成:" } }, "typeID": 33328 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Unterbrechungsfeldwerfer ist ausrüstbar" }, { "number": "25%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "Reduktion des Masseabzugs von Panzerplatten" }, { "number": "10%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" } ], "header": "Interdictors Boni (je Skillstufe):" }, { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Feuerrate von kleinen Hybridgeschütztürmen" }, { "number": "10%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Hybridgeschütztürmen" } ], "header": "Gallente Destroyer Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can fit Interdiction Sphere Launcher" }, { "number": "25%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "reduction in Armor Plate mass penalty" }, { "number": "10%", "text": "reduction in Microwarpdrive signature radius penalty" } ], "header": "Interdictors bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Small Hybrid Turret rate of fire" }, { "number": "10%", "text": "bonus to Small Hybrid Turret tracking speed" } ], "header": "Gallente Destroyer bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar un lanzaesferas de interdicción." }, { "number": "25%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "de reducción de la penalización de masa de la placa de blindaje." }, { "number": "10%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." } ], "header": "Bonificaciones de Interdictores (por nivel de habilidad):" }, { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la cadencia de tiro de la torreta híbrida pequeña." }, { "number": "10%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida pequeña." } ], "header": "Bonificaciones de Destructor gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut être équipé d'un lanceur de sphère d'interdiction" }, { "number": "25%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "de réduction à la pénalité de masse du revêtement de blindage" }, { "number": "10%", "text": "de réduction à la pénalité de rayon de signature du propulseur de microwarp" } ], "header": " Bonus (par niveau de compétence) Interdicteurs :" }, { "bonuses": [ { "number": "7.5%", "text": "de bonus à la cadence de tir des petites tourelles hybrides" }, { "number": "10%", "text": "de bonus à la vitesse de poursuite des petites tourelles hybrides" } ], "header": " Bonus (par niveau de compétence) Destroyer gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can fit Interdiction Sphere Launcher" }, { "number": "25%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "reduction in Armor Plate mass penalty" }, { "number": "10%", "text": "reduction in Microwarpdrive signature radius penalty" } ], "header": "Interdictors bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Small Hybrid Turret rate of fire" }, { "number": "10%", "text": "bonus to Small Hybrid Turret tracking speed" } ], "header": "Gallente Destroyer bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·インターディクションスフィアランチャーを搭載可能" }, { "number": "25%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "アーマープレートの質量ペナルティが減少" }, { "number": "10%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" } ], "header": "ワープ妨害型駆逐艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "7.5%", "text": "小型ハイブリッドタレットの発射間隔が短縮" }, { "number": "10%", "text": "小型ハイブリッドタレットの追跡速度が上昇" } ], "header": "ガレンテ駆逐艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·인터딕션 런처 장착 가능" }, { "number": "25%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "장갑 플레이트 질량 페널티 감소" }, { "number": "10%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" } ], "header": "인터딕터 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "7.5%", "text": "소형 하이브리드 터렛 연사속도 증가" }, { "number": "10%", "text": "소형 하이브리드 터렛 트래킹 속도 증가" } ], "header": "갈란테 디스트로이어 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Можно оснастить системой запуска заградительных сфер" }, { "number": "на 25%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 20%", "text": "снижение штрафа за массу для бронеплит" }, { "number": "на 10%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" } ], "header": "За каждую степень освоения навыка Заградительные эсминцы:" }, { "bonuses": [ { "number": "на 7.5%", "text": "бонус к скорострельности малых гибридных турелей" }, { "number": "на 10%", "text": "повышается скорость наводки на цель малых гибридных орудий" } ], "header": "За каждую степень освоения навыка Галлентские эсминцы:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以安装拦截泡发射器" }, { "number": "25%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "20%", "text": "附甲板质量惩罚降低" }, { "number": "10%", "text": "微型跃迁推进器的信号半径惩罚加成" } ], "header": "拦截舰操作每升一级:" }, { "bonuses": [ { "number": "7.5%", "text": "小型混合炮台射速加成" }, { "number": "10%", "text": "小型混合炮台跟踪速度加成" } ], "header": "盖伦特驱逐舰操作每升一级:" } ] }, "typeID": 22460 }, { "traits_de": { "role": { "bonuses": [ { "number": "65%", "text": "Reduktion des Stromnetz-Bedarfs von Panzerungs-Fernreparatursystemen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf den Präzisionsabfall von Leitcomputern" }, { "number": "20%", "text": "Bonus auf die Transfermenge von Versorgungsdrohnen" }, { "number": "60%", "text": "Bonus auf die optimale Reichweite und den Präzisionsabfall von Panzerungsfernreparatursystemen" } ], "header": "Gallente Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "15%", "text": "Reduktion der Aktivierungskosten von Panzerungs-Fernreparatursystemen" }, { "number": "10%", "text": "Bonus auf die Effektivität von Nachführungs-Ferncomputern" }, { "number": "15%", "text": "Reduktion des Masseabzugs von Panzerplatten" } ], "header": "Logistics Cruisers Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "65%", "text": "reduction in Remote Armor Repairer powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Remote Tracking Computer falloff" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Armor Repairer optimal range and falloff" } ], "header": "Gallente Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Remote Armor Repairer activation cost" }, { "number": "10%", "text": "bonus to Remote Tracking Computer effectiveness" }, { "number": "15%", "text": "reduction in Armor Plate mass penalty" } ], "header": "Logistics Cruisers bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "65%", "text": "de reducción de los requisitos del sistema de potencia del reparador de blindaje remoto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al alcance efectivo del ordenador de rastreo remoto." }, { "number": "20%", "text": "de bonificación a la cantidad de transferencia de los drones logísticos." }, { "number": "60%", "text": "de bonificación a los alcances óptimo y efectivo del reparador de blindaje remoto." } ], "header": "Bonificaciones de Crucero gallente (por nivel de habilidad):" }, { "bonuses": [ { "number": "15%", "text": "de reducción del coste de activación del reparador de blindaje remoto." }, { "number": "10%", "text": "de bonificación a la efectividad de los ordenadores de rastreo remotos." }, { "number": "15%", "text": "de reducción de la penalización de masa de la placa de blindaje." } ], "header": "Bonificaciones de Cruceros logísticos (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "65%", "text": "de réduction au réseau d'alimentation requis par les réparateurs de blindage à distance" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la déperdition de l'ordinateur de poursuite à distance" }, { "number": "20%", "text": "de bonus à la quantité de transfert du drone logistique" }, { "number": "60%", "text": "de bonus à la portée optimale et à la perte du réparateur de blindage à distance" } ], "header": " Bonus (par niveau de compétence) Croiseur gallente :" }, { "bonuses": [ { "number": "15%", "text": "de réduction du coût d'activation des réparateurs de blindage à distance" }, { "number": "10%", "text": "de bonus à l'efficacité des ordinateurs de suivi à distance" }, { "number": "15%", "text": "de réduction à la pénalité de masse du revêtement de blindage" } ], "header": " Bonus (par niveau de compétence) Croiseurs logistiques :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "65%", "text": "reduction in Remote Armor Repairer powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Remote Tracking Computer falloff" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Armor Repairer optimal range and falloff" } ], "header": "Gallente Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Remote Armor Repairer activation cost" }, { "number": "10%", "text": "bonus to Remote Tracking Computer effectiveness" }, { "number": "15%", "text": "reduction in Armor Plate mass penalty" } ], "header": "Logistics Cruisers bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "65%", "text": "リモートアーマーリペアラのパワーグリッド使用量が軽減" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "リモート追跡コンピューターの精度低下範囲が改善" }, { "number": "20%", "text": "支援型ドローンの転送量が向上" }, { "number": "60%", "text": "リモートアーマーリペアラの最適射程距離および精度低下範囲が改善" } ], "header": "ガレンテ巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "15%", "text": "リモートアーマーリペアラの起動コストが軽減" }, { "number": "10%", "text": "リモートトラッキングコンピュータの効果が増加" }, { "number": "15%", "text": "アーマープレートの質量ペナルティが減少" } ], "header": "支援型巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "65%", "text": "원격 장갑수리 장치 파워그리드 요구치 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "원격 트래킹 컴퓨터 유효사거리 증가" }, { "number": "20%", "text": "로지스틱스 드론 수리량 증가" }, { "number": "60%", "text": "원격 장갑수리 장치 최적사거리 및 유효사거리 증가" } ], "header": "갈란테 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "15%", "text": "원격 장갑수리 장치 활성화 비용 감소" }, { "number": "10%", "text": "원격 트래킹 컴퓨터 효과 증가" }, { "number": "15%", "text": "장갑 플레이트 질량 페널티 감소" } ], "header": "로지스틱스 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 65%", "text": "сокращается потребность установок дистанционного ремонта брони в мощности реактора" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается добавочная дальность передатчиков данных наводки" }, { "number": "на 20%", "text": "повышается производительность ремонтных дронов" }, { "number": "на 60%", "text": "увеличивается оптимальная и добавочная дальность действия установок дистанционного ремонта брони" } ], "header": "За каждую степень освоения навыка Галлентские крейсеры:" }, { "bonuses": [ { "number": "на 15%", "text": "сокращается потребление энергии установками дистанционного ремонта брони" }, { "number": "на 10%", "text": "повышается эффективность передатчиков данных наводки" }, { "number": "на 15%", "text": "снижение штрафа за массу для бронеплит" } ], "header": "За каждую степень освоения навыка Корабли обеспечения:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "65%", "text": "远程装甲维修器能量栅格需求降低" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "远距索敌计算机失准范围加成" }, { "number": "20%", "text": "后勤无人机传输量加成" }, { "number": "60%", "text": "远程装甲维修器最佳射程和失准范围加成" } ], "header": "盖伦特巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "15%", "text": "远程装甲维修器启动消耗减少" }, { "number": "10%", "text": "远距索敌计算机效果加成" }, { "number": "15%", "text": "装甲板质量惩罚降低" } ], "header": "后勤巡洋舰每升一级:" } ] }, "typeID": 11989 }, { "traits_de": { "role": { "bonuses": [ { "number": "250%", "text": "Bonus auf den Schaden von mittelgroßen Energiegeschütztürmen" }, { "number": "20%", "text": "Bonus auf alle Schildresistenzen" }, { "text": "·Kann Module für Warpstörfeldgenerator und Anziehungsfeldgenerator ausrüsten" }, { "text": "·Wird nicht von den Masse- und Geschwindigkeitseffekten von Warpstörfeld-Generatoren beeinflusst" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Reichweite von Warpstörfeldgeneratoren" } ], "header": "Heavy Interdiction Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von mittelgroßen Energiegeschütztürmen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "20%", "text": "Bonus auf den Geschwindigkeitsbonus von Nachbrennern" } ], "header": "Caldari Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "250%", "text": "bonus to Medium Energy Turret damage" }, { "number": "20%", "text": "bonus to all shield resistances" }, { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "text": "·Unaffected by Warp Disruption Field Generator mass & speed effects" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Energy Turret tracking speed" } ], "header": "Amarr Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "bonus to Afterburner velocity bonus" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "250%", "text": "de bonificación al daño de la torreta de energía mediana." }, { "number": "20%", "text": "de bonificación a todas las resistencias de escudo." }, { "text": "·Es posible equipar módulos de generador de campo disruptor de warp y generador de campo cinosural." }, { "text": "·No le afectan los efectos de masa y velocidad del generador de campo disruptor de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al alcance del generador de campo disruptor de warp." } ], "header": "Bonificaciones de Cruceros interdictores pesados (por nivel de habilidad):" }, { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta de energía mediana." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" }, { "bonuses": [ { "number": "20%", "text": "de bonificación a la velocidad del posquemador." } ], "header": "Bonificaciones de Crucero caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "250%", "text": "de bonus aux dégâts de la tourelle à énergie intermédiaire" }, { "number": "20%", "text": "bonus à toutes les résistances de bouclier" }, { "text": "·Peut équiper des modules générateur de champ perturbateur de warp et générateur de champ cynosural" }, { "text": "·non affecté par les effets de masse et de vitesse du générateur de champ perturbateur de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la portée du générateur de champ perturbateur de warp" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'interdiction lourds :" }, { "bonuses": [ { "number": "7.5%", "text": "de bonus à la vitesse de poursuite de la tourelle à énergie intermédiaire" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" }, { "bonuses": [ { "number": "20%", "text": "bonus au bonus de vitesse du système de post-combustion" } ], "header": " Bonus (par niveau de compétence) Croiseur caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "250%", "text": "bonus to Medium Energy Turret damage" }, { "number": "20%", "text": "bonus to all shield resistances" }, { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "text": "·Unaffected by Warp Disruption Field Generator mass & speed effects" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Energy Turret tracking speed" } ], "header": "Amarr Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "bonus to Afterburner velocity bonus" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "250%", "text": "中型エネルギータレットのダメージが増加" }, { "number": "20%", "text": "全てのシールドレジスタンスが増加" }, { "text": "·ワープ妨害フィールドジェネレーターとサイノシュラルフィールドジェネレーターを装備可能" }, { "text": "·Unaffected by ワープ妨害フィールドジェネレーターの質量効果および速度効果の影響を受けない" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "ワープ妨害フィールドジェネレーターの範囲にボーナス" } ], "header": "ワープ妨害型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "7.5%", "text": "中型エネルギータレットの追跡速度が上昇" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "20%", "text": "アフターバーナーの速度ボーナスが上昇。" } ], "header": "カルダリ巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "250%", "text": "중형 에너지 터렛 피해량 증가" }, { "number": "20%", "text": "모든 실드 저항력 증가" }, { "text": "·워프 디스럽션 필드 생성기 및 사이노슈럴 필드 생성기 장착 가능" }, { "text": "·워프 디스럽션 필드 생성기의 질량 및 속도 감소 효과 면역" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "워프 디스럽션 필드 생성기 사거리 증가" } ], "header": "인터딕터 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "7.5%", "text": "중형 에너지 터렛 트래킹 속도 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "20%", "text": "애프터버너 속도 보너스 증가" } ], "header": "칼다리 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 250%", "text": "увеличивается урон средних лазерных орудий" }, { "number": "на 20%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" }, { "text": "·Возможно оснащение бортовым варп-заградителем и приводным маяком" }, { "text": "·Корабли этого типа нечувствительны к действию собственных бортовых варп-заградителей в части их влияния на массу корабля, влияния на эффективность форсажных ускорителей и микроварп-ускорителей" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "бонус к дальности действия бортового варп-заградителя" } ], "header": "За каждую степень освоения навыка Заградительные крейсеры:" }, { "bonuses": [ { "number": "на 7.5%", "text": "повышается скорость наводки на цель средних лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" }, { "bonuses": [ { "number": "на 20%", "text": "повышается влияние форсажных ускорителей на скорость полёта корабля" } ], "header": "За каждую степень освоения навыка Калдарские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "250%", "text": "中型能量炮台伤害加成" }, { "number": "20%", "text": "护盾抗性加成" }, { "text": "·可以装配跃迁扰断力场发生器和诱导力场发生器装备" }, { "text": "·不受跃迁扰断力场发生器的质量和速度影响" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "跃迁扰断力场发生器的范围扩大" } ], "header": "重型拦截巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "7.5%", "text": "中型能量炮台跟踪速度加成" } ], "header": "艾玛巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "20%", "text": "加力燃烧器速度增益加成" } ], "header": "加达里巡洋舰操作每升一级:" } ] }, "typeID": 35781 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Reduktion des CPU-Bedarfs für Verstärkte Schotten" }, { "number": "90%", "text": "Reduktion der effektiv zurückgelegten Distanz für die Sprungerschöpfung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die HP der Panzerung und des Rumpf des Schiffs" }, { "number": "10%", "text": "Reduktion des Sprungtreibstoffbedarfs" } ], "header": "Jump Freighters Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Frachtraumkapazität des Schiffs" }, { "number": "5%", "text": "Bonus auf den Trägheitsmodifikator des Schiffs" } ], "header": "Amarr Freighter Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Reinforced Bulkhead CPU requirements" }, { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to ship armor and hull hitpoints" }, { "number": "10%", "text": "reduction in jump fuel requirement" } ], "header": "Jump Freighters bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to ship cargo capacity" }, { "number": "5%", "text": "bonus to ship inertia modifier" } ], "header": "Amarr Freighter bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de reducción de los requisitos de CPU del mamparo reforzado." }, { "number": "90%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación a los puntos de vida del blindaje y el casco de la nave." }, { "number": "10%", "text": "de reducción del requisito de combustible para saltos." } ], "header": "Bonificaciones de Cargueros de salto (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la capacidad de carga de la nave." }, { "number": "5%", "text": "de bonificación al modificador de inercia de la nave." } ], "header": "Bonificaciones de Carguero amarriano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "réduction de la charge CPU requise pour les cloisons renforcées" }, { "number": "90%", "text": "de réduction de la distance effectuée pour l'épuisement de saut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus au blindage et aux PV de la coque du vaisseau" }, { "number": "10%", "text": "de réduction au carburant de saut hyperspatial requis" } ], "header": " Bonus (par niveau de compétence) Transports de fret hyperspatiaux :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la capacité de la soute du vaisseau" }, { "number": "5%", "text": "de bonus au modificateur d'inertie du vaisseau" } ], "header": " Bonus (par niveau de compétence) Transport de fret amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Reinforced Bulkhead CPU requirements" }, { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to ship armor and hull hitpoints" }, { "number": "10%", "text": "reduction in jump fuel requirement" } ], "header": "Jump Freighters bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to ship cargo capacity" }, { "number": "5%", "text": "bonus to ship inertia modifier" } ], "header": "Amarr Freighter bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "強化隔壁のCPU要件が減少" }, { "number": "90%", "text": "ジャンプによる疲弊が飛行距離に及ぼす影響を低減" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "艦船のアーマー・船体のヒットポイントが増加" }, { "number": "10%", "text": "ジャンプ燃料使用量が減少" } ], "header": "ジャンプドライブ搭載型輸送艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "艦船のカーゴ容量が増加" }, { "number": "5%", "text": "艦船の慣性修正乗数が増加" } ], "header": "アマー超大型輸送艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "강화 격벽 CPU 사용량 감소" }, { "number": "90%", "text": "이동 거리에 따른 점프 피로도 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "함선 장갑 및 선체 내구도 증가" }, { "number": "10%", "text": "요구되는 점프 연료량 감소" } ], "header": "점프 프레이터 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "화물 적재량 증가" }, { "number": "5%", "text": "관성 계수 증가" } ], "header": "아마르 프레이터 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "сокращается потребность усиленных переборок в мощностях ЦПУ" }, { "number": "на 90%", "text": "медленнее накапливается усталость от гиперпереходов" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается запас прочности брони и корпуса корабля" }, { "number": "на 10%", "text": "сокращается потребление топлива гипердвигателем корабля" } ], "header": "За каждую степень освоения навыка Джамп-фрейтеры:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается вместимость грузового отсека корабля" }, { "number": "на 5%", "text": "уменьшается инертность конструкции корабля" } ], "header": "За каждую степень освоения навыка Амаррские фрейтеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "加强型舱隔壁的CPU需求降低" }, { "number": "90%", "text": "减少跳跃距离对产生跳跃疲劳的影响" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "舰船装甲值和结构值加成" }, { "number": "10%", "text": "跳跃燃料需求减少" } ], "header": "战略货舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "舰船货柜舱容量加成" }, { "number": "5%", "text": "舰船惯性调整系数加成" } ], "header": "艾玛货舰操作每升一级:" } ] }, "typeID": 28850 }, { "traits_de": { "role": { "bonuses": [ { "number": "65%", "text": "Reduktion des Stromnetz-Bedarfs von Panzerungs-Fernreparatursystemen" }, { "number": "50%", "text": "Reduktion des Stromnetz-Bedarfs von Energiespeicher-Ferntransmittern" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "Reduktion der Aktivierungskosten von Energiespeicher-Ferntransmittern" }, { "number": "15%", "text": "Reduktion der Aktivierungskosten von Panzerungs-Fernreparatursystemen" }, { "number": "7.5%", "text": "Bonus auf die HP der Panzerplatte" } ], "header": "Logistics Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "150%", "text": "Bonus auf die Reichweite von Energiespeicher-Ferntransmittern" }, { "number": "20%", "text": "Bonus auf die Transfermenge von Versorgungsdrohnen" }, { "number": "60%", "text": "Bonus auf die optimale Reichweite und den Präzisionsabfall von Panzerungsfernreparatursystemen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "65%", "text": "reduction in Remote Armor Repairer powergrid requirement" }, { "number": "50%", "text": "reduction in Remote Capacitor Transmitter powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "reduction in Remote Capacitor Transmitter activation cost" }, { "number": "15%", "text": "reduction in Remote Armor Repairer activation cost" }, { "number": "7.5%", "text": "bonus to Armor Plate hitpoints" } ], "header": "Logistics Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "150%", "text": "bonus to Remote Capacitor Transmitter range" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Armor Repairer optimal range and falloff" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "65%", "text": "de reducción de los requisitos del sistema de potencia del reparador de blindaje remoto." }, { "number": "50%", "text": "de reducción de los requisitos del sistema de potencia del transmisor de condensador remoto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de reducción del coste de activación del transmisor de condensador remoto." }, { "number": "15%", "text": "de reducción del coste de activación del reparador de blindaje remoto." }, { "number": "7.5%", "text": "de bonificación a los puntos de vida de las placas de blindaje." } ], "header": "Bonificaciones de Cruceros logísticos (por nivel de habilidad):" }, { "bonuses": [ { "number": "150%", "text": "de bonificación al alcance del transmisor de condensador remoto." }, { "number": "20%", "text": "de bonificación a la cantidad de transferencia de los drones logísticos." }, { "number": "60%", "text": "de bonificación a los alcances óptimo y efectivo del reparador de blindaje remoto." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "65%", "text": "de réduction du réseau d'alimentation requis par les réparateurs de blindage à distance" }, { "number": "50%", "text": "de réduction du réseau d'alimentation requis par les transmetteurs de capaciteur à distance" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de réduction du coût d'activation des transmetteurs de capaciteur à distance" }, { "number": "15%", "text": "de réduction du coût d'activation des réparateurs de blindage à distance" }, { "number": "7.5%", "text": "de bonus aux points de vie du revêtement de blindage" } ], "header": " Bonus (par niveau de compétence) Croiseurs logistiques :" }, { "bonuses": [ { "number": "150%", "text": "de bonus à la portée du transmetteur de capaciteur à distance" }, { "number": "20%", "text": "de bonus à la quantité de transfert du drone logistique" }, { "number": "60%", "text": "de bonus à la portée optimale et à la perte du réparateur de blindage à distance" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "65%", "text": "reduction in Remote Armor Repairer powergrid requirement" }, { "number": "50%", "text": "reduction in Remote Capacitor Transmitter powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "reduction in Remote Capacitor Transmitter activation cost" }, { "number": "15%", "text": "reduction in Remote Armor Repairer activation cost" }, { "number": "7.5%", "text": "bonus to Armor Plate hitpoints" } ], "header": "Logistics Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "150%", "text": "bonus to Remote Capacitor Transmitter range" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Armor Repairer optimal range and falloff" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "65%", "text": "リモートアーマーリペアラのパワーグリッド使用量が軽減" }, { "number": "50%", "text": "リモートキャパシタトランスミッターのパワーグリッド使用量が軽減" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "リモートキャパシタトランスミッターの起動コストが軽減" }, { "number": "15%", "text": "リモートアーマーリペアラの起動コストが軽減" }, { "number": "7.5%", "text": "アーマープレートHPが増加" } ], "header": "支援型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "150%", "text": "リモートキャパシタトランスミッターの範囲が拡大" }, { "number": "20%", "text": "支援型ドローンの転送量が向上" }, { "number": "60%", "text": "リモートアーマーリペアラの最適射程距離および精度低下範囲が改善" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "65%", "text": "원격 장갑수리 장치 파워그리드 요구치 감소" }, { "number": "50%", "text": "원격 캐패시터 전송기 파워그리드 요구치 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "원격 캐패시터 전송기 활성화 비용 감소" }, { "number": "15%", "text": "원격 장갑수리 장치 활성화 비용 감소" }, { "number": "7.5%", "text": "장갑 플레이트 내구도 증가" } ], "header": "로지스틱스 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "150%", "text": "원격 캐패시터 전송기 사거리 증가" }, { "number": "20%", "text": "로지스틱스 드론 수리량 증가" }, { "number": "60%", "text": "원격 장갑수리 장치 최적사거리 및 유효사거리 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 65%", "text": "сокращается потребность установок дистанционного ремонта брони в мощности реактора" }, { "number": "на 50%", "text": "сокращается потребность установок дистанционного энергоснабжения в мощности реактора" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 15%", "text": "сокращается потребление энергии установками дистанционного энергоснабжения" }, { "number": "на 15%", "text": "сокращается потребление энергии установками дистанционного ремонта брони" }, { "number": "на 7.5%", "text": "бонус к прочности бронеплиты" } ], "header": "За каждую степень освоения навыка Корабли обеспечения:" }, { "bonuses": [ { "number": "на 150%", "text": "увеличивается дальность действия установок дистанционного энергоснабжения" }, { "number": "на 20%", "text": "повышается производительность ремонтных дронов" }, { "number": "на 60%", "text": "увеличивается оптимальная и добавочная дальность действия установок дистанционного ремонта брони" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "65%", "text": "远程装甲维修器能量栅格需求降低" }, { "number": "50%", "text": "远程电容传输装置能量栅格需求降低" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "远程电容传输装置启动消耗减少" }, { "number": "15%", "text": "远程装甲维修器启动消耗减少" }, { "number": "7.5%", "text": "装甲板装甲值加成" } ], "header": "后勤巡洋舰每升一级:" }, { "bonuses": [ { "number": "150%", "text": "远程电容传输装置距离加成" }, { "number": "20%", "text": "后勤无人机传输量加成" }, { "number": "60%", "text": "远程装甲维修器最佳射程和失准范围加成" } ], "header": "艾玛巡洋舰操作每升一级:" } ] }, "typeID": 11987 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Reduktion des CPU-Bedarfs von Schildfernboostern" }, { "number": "50%", "text": "Reduktion des Stromnetz-Bedarfs von Energiespeicher-Ferntransmittern" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "Reduktion der Aktivierungskosten von Energiespeicher-Ferntransmittern" }, { "number": "15%", "text": "Reduktion der Aktivierungskosten von Schildfernboostern" }, { "number": "7.5%", "text": "Bonus auf die HP der Schilderweiterung" } ], "header": "Logistics Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "150%", "text": "Bonus auf die Reichweite von Energiespeicher-Ferntransmittern" }, { "number": "20%", "text": "Bonus auf die Transfermenge von Versorgungsdrohnen" }, { "number": "60%", "text": "Bonus auf die optimale Reichweite und den Präzisionsabfall von Schildfernboostern" } ], "header": "Caldari Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Remote Shield Booster CPU requirement" }, { "number": "50%", "text": "reduction in Remote Capacitor Transmitter powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "reduction in Remote Capacitor Transmitter activation cost" }, { "number": "15%", "text": "reduction in Remote Shield Booster activation cost" }, { "number": "7.5%", "text": "bonus to Shield Extender hitpoints" } ], "header": "Logistics Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "150%", "text": "bonus to Remote Capacitor Transmitter range" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Shield Booster optimal range and falloff" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de reducción de los requisitos de CPU del potenciador de escudo remoto." }, { "number": "50%", "text": "de reducción de los requisitos del sistema de potencia del transmisor de condensador remoto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de reducción del coste de activación del transmisor de condensador remoto." }, { "number": "15%", "text": "de reducción del coste de activación del potenciador de escudo remoto." }, { "number": "7.5%", "text": "de bonificación a los puntos de vida del extensor de escudo." } ], "header": "Bonificaciones de Cruceros logísticos (por nivel de habilidad):" }, { "bonuses": [ { "number": "150%", "text": "de bonificación al alcance del transmisor de condensador remoto." }, { "number": "20%", "text": "de bonificación a la cantidad de transferencia de los drones logísticos." }, { "number": "60%", "text": "de bonificación a los alcances óptimo y efectivo del potenciador de escudo remoto." } ], "header": "Bonificaciones de Crucero caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de réduction au CPU requis par les boosters de bouclier à distance" }, { "number": "50%", "text": "de réduction au réseau d'alimentation requis par les transmetteurs de capaciteur à distance" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "de réduction du coût d'activation des transmetteurs de capaciteur à distance" }, { "number": "15%", "text": "de réduction du coût d'activation des boosters de bouclier à distance" }, { "number": "7.5%", "text": "de bonus aux points de vie de l'extenseur de bouclier" } ], "header": " Bonus (par niveau de compétence) Croiseurs logistiques :" }, { "bonuses": [ { "number": "150%", "text": "de bonus à la portée du transmetteur de capaciteur à distance" }, { "number": "20%", "text": "de bonus à la quantité de transfert du drone logistique" }, { "number": "60%", "text": "de bonus à la portée optimale et à la déperdition dubooster de bouclier à distance" } ], "header": " Bonus (par niveau de compétence) Croiseur caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Remote Shield Booster CPU requirement" }, { "number": "50%", "text": "reduction in Remote Capacitor Transmitter powergrid requirement" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "reduction in Remote Capacitor Transmitter activation cost" }, { "number": "15%", "text": "reduction in Remote Shield Booster activation cost" }, { "number": "7.5%", "text": "bonus to Shield Extender hitpoints" } ], "header": "Logistics Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "150%", "text": "bonus to Remote Capacitor Transmitter range" }, { "number": "20%", "text": "bonus to Logistic Drone transfer amount" }, { "number": "60%", "text": "bonus to Remote Shield Booster optimal range and falloff" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "リモートシールドブースターのCPU使用量が軽減" }, { "number": "50%", "text": "リモートキャパシタトランスミッターのパワーグリッド使用量が軽減" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "リモートキャパシタトランスミッターの起動コストが軽減" }, { "number": "15%", "text": "リモートシールドブースターの起動コストが軽減" }, { "number": "7.5%", "text": "シールドエクステンダーHPが増加" } ], "header": "支援型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "150%", "text": "リモートキャパシタトランスミッターの範囲が拡大" }, { "number": "20%", "text": "支援型ドローンの転送量が向上" }, { "number": "60%", "text": "リモートシールドブースターの最適射程距離および精度低下範囲が改善" } ], "header": "カルダリ巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "원격 실드 부스터 CPU 사용량 감소" }, { "number": "50%", "text": "원격 캐패시터 전송기 파워그리드 요구치 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "원격 캐패시터 전송기 활성화 비용 감소" }, { "number": "15%", "text": "원격 실드 부스터 활성화 비용 감소" }, { "number": "7.5%", "text": "실드 확장장치 실드량 증가" } ], "header": "로지스틱스 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "150%", "text": "원격 캐패시터 전송기 사거리 증가" }, { "number": "20%", "text": "로지스틱스 드론 수리량 증가" }, { "number": "60%", "text": "원격 실드 부스터 최적사거리 및 유효사거리 증가" } ], "header": "칼다리 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "сокращается потребность установок дистанционной накачки щитов в мощностях ЦПУ" }, { "number": "на 50%", "text": "сокращается потребность установок дистанционного энергоснабжения в мощности реактора" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 15%", "text": "сокращается потребление энергии установками дистанционного энергоснабжения" }, { "number": "на 15%", "text": "сокращается потребление энергии установками дистанционной накачки щитов" }, { "number": "на 7.5%", "text": "бонус к прочности расширителя щитов" } ], "header": "За каждую степень освоения навыка Корабли обеспечения:" }, { "bonuses": [ { "number": "на 150%", "text": "увеличивается дальность действия установок дистанционного энергоснабжения" }, { "number": "на 20%", "text": "повышается производительность ремонтных дронов" }, { "number": "на 60%", "text": "увеличивается оптимальная и добавочная дальность действия установок дистанционной накачки щитов" } ], "header": "За каждую степень освоения навыка Калдарские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "远程护盾回充增量器CPU需求降低" }, { "number": "50%", "text": "远程电容传输装置能量栅格需求降低" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "15%", "text": "远程电容传输装置启动消耗减少" }, { "number": "15%", "text": "远程护盾回充增量器启动消耗减少" }, { "number": "7.5%", "text": "护盾扩展装置护盾值加成" } ], "header": "后勤巡洋舰每升一级:" }, { "bonuses": [ { "number": "150%", "text": "远程电容传输装置距离加成" }, { "number": "20%", "text": "后勤无人机传输量加成" }, { "number": "60%", "text": "远程护盾回充增量器最佳射程和失准范围加成" } ], "header": "加达里巡洋舰操作每升一级:" } ] }, "typeID": 11985 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "text": "·Kann Angriffsschadensregulierer ausrüsten" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die optimale Reichweite von kleinen Hybridgeschütztürmen" }, { "number": "5%", "text": "Bonus auf den Schaden von kleinen Hybridgeschütztürmen" } ], "header": "Assault Frigates Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf die optimale Reichweite von kleinen Hybridgeschütztürmen" }, { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Caldari Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Small Hybrid Turret optimal range" }, { "number": "5%", "text": "bonus to Small Hybrid Turret damage" } ], "header": "Assault Frigates bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Small Hybrid Turret optimal range" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "text": "·Es posible equipar controles de daños por asalto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta híbrida pequeña." }, { "number": "5%", "text": "de bonificación al daño de la torreta híbrida pequeña." } ], "header": "Bonificaciones de Fragatas de asalto (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta híbrida pequeña." }, { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Fragata caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "text": "·Peut être équipé des contrôles des dégâts d'assaut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée optimale des petites tourelles hybrides" }, { "number": "5%", "text": "de bonus aux dégâts des petites tourelles hybrides" } ], "header": " Bonus (par niveau de compétence) Frégates d’assaut :" }, { "bonuses": [ { "number": "10%", "text": "de bonus à la portée optimale des petites tourelles hybrides" }, { "number": "4%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": " Bonus (par niveau de compétence) Frégate caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Small Hybrid Turret optimal range" }, { "number": "5%", "text": "bonus to Small Hybrid Turret damage" } ], "header": "Assault Frigates bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Small Hybrid Turret optimal range" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "text": "·アサルトダメージ制御を装備可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "小型ハイブリッドタレットの最適射程距離が拡大" }, { "number": "5%", "text": "小型ハイブリッドタレットのダメージが増加" } ], "header": "強襲型フリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "小型ハイブリッドタレットの最適射程距離が拡大" }, { "number": "4%", "text": "全てのシールドレジスタンスが増加" } ], "header": "カルダリフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "text": "·어썰트 데미지 컨트롤 장착가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "소형 하이브리드 터렛 최적사거리 증가" }, { "number": "5%", "text": "소형 하이브리드 터렛 피해량 증가" } ], "header": "어썰트 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "소형 하이브리드 터렛 최적사거리 증가" }, { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "칼다리 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "text": "·Позволяет установить ударные модули боевой живучести" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из малых гибридных орудий" }, { "number": "на 5%", "text": "увеличивается урон боеприпасов малых гибридных орудий" } ], "header": "За каждую степень освоения навыка Ударные фрегаты:" }, { "bonuses": [ { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из малых гибридных орудий" }, { "number": "на 4%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Калдарские фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "text": "·可以装配突击损伤控制装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "小型混合炮台最佳射程加成" }, { "number": "5%", "text": "小型混合炮台伤害加成" } ], "header": "突击护卫舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "小型混合炮台最佳射程加成" }, { "number": "4%", "text": "护盾抗性加成" } ], "header": "加达里护卫舰操作每升一级:" } ] }, "typeID": 11381 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die optimale Reichweite von Zielmarkierungsmodulen" }, { "number": "10%", "text": "Bonus auf die Effektivität von Zielmarkierungsmodulen" } ], "header": "Minmatar Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "40%", "text": "Bonus auf die optimale Reichweite von Stasisnetzen" }, { "number": "3%", "text": "Reduktion des Signaturradius des Schiffs" } ], "header": "Electronic Attack Ships Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Target Painter optimal range" }, { "number": "10%", "text": "bonus to Target Painter effectiveness" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "40%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "3%", "text": "reduction in ship signature radius" } ], "header": "Electronic Attack Ships bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance óptimo del revelador de objetivo." }, { "number": "10%", "text": "de bonificación a la efectividad del revelador de objetivo." } ], "header": "Bonificaciones de Fragata minmatariana (por nivel de habilidad):" }, { "bonuses": [ { "number": "40%", "text": "de bonificación al alcance óptimo de la red ralentizadora." }, { "number": "3%", "text": "de reducción del radio de la señal de la nave." } ], "header": "Bonificaciones de Naves de ataque electrónicas (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée optimale des marqueurs de cible" }, { "number": "10%", "text": "de bonus à l'efficacité du marqueur de cible" } ], "header": " Bonus (par niveau de compétence) Frégate minmatar :" }, { "bonuses": [ { "number": "40%", "text": "de bonus à la portée optimale des générateurs de stase" }, { "number": "3%", "text": "de réduction du rayon de signature du vaisseau" } ], "header": " Bonus (par niveau de compétence) Vaisseaux d'attaque électronique :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Target Painter optimal range" }, { "number": "10%", "text": "bonus to Target Painter effectiveness" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "40%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "3%", "text": "reduction in ship signature radius" } ], "header": "Electronic Attack Ships bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "10%", "text": "ターゲットペインターの最適射程距離が拡大" }, { "number": "10%", "text": "ターゲットペインターの効果が増加" } ], "header": "ミンマターフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "40%", "text": "ステイシスウェビファイアの最適射程距離が拡大" }, { "number": "3%", "text": "艦船のシグネチャ半径が縮小" } ], "header": "電子攻撃船ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "10%", "text": "타겟 페인터 최적사거리 증가" }, { "number": "10%", "text": "타겟 페인터 효과 증가" } ], "header": "민마타 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "40%", "text": "스테이시스 웹 생성기 최적사거리 증가" }, { "number": "3%", "text": "함선 시그니처 반경 감소" } ], "header": "전자전 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается оптимальная дальность действия систем подсветки целей" }, { "number": "на 10%", "text": "повышается эффективность действия систем подсветки целей" } ], "header": "За каждую степень освоения навыка Минматарские фрегаты:" }, { "bonuses": [ { "number": "на 40%", "text": "увеличивается оптимальная дальность действия стазис-индукторов" }, { "number": "на 3%", "text": "уменьшается размер сигнатуры корабля" } ], "header": "За каждую степень освоения навыка Дозорные фрегаты:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "10%", "text": "目标标记装置最佳射程加成" }, { "number": "10%", "text": "目标标记装置效果加成" } ], "header": "米玛塔尔护卫舰操作每升一级:" }, { "bonuses": [ { "number": "40%", "text": "停滞缠绕光束最佳射程加成" }, { "number": "3%", "text": "舰船信号半径降低" } ], "header": "电子攻击舰操作每升一级:" } ] }, "typeID": 11387 }, { "traits_de": { "role": { "bonuses": [ { "number": "90%", "text": "Reduktion der effektiv zurückgelegten Distanz für die Sprungerschöpfung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Frachtraumkapazität des Schiffs" }, { "number": "5%", "text": "Bonus auf die Maximalgeschwindigkeit des Schiffs" } ], "header": "Amarr Hauler Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to ship cargo capacity" }, { "number": "5%", "text": "bonus to ship max velocity" } ], "header": "Amarr Hauler bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "90%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la capacidad de carga de la nave." }, { "number": "5%", "text": "de bonificación a la velocidad máxima de la nave." } ], "header": "Bonificaciones de Nave de mercancías amarriana (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "90%", "text": "de réduction de la distance effectuée pour l'épuisement de saut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la capacité de la soute du vaisseau" }, { "number": "5%", "text": "de bonus à la vitesse maximale du vaisseau" } ], "header": " Bonus (par niveau de compétence) Cargo amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to ship cargo capacity" }, { "number": "5%", "text": "bonus to ship max velocity" } ], "header": "Amarr Hauler bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "90%", "text": "ジャンプによる疲弊が飛行距離に及ぼす影響を低減" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "艦船のカーゴ容量が増加" }, { "number": "5%", "text": "艦船の最高速度が上昇" } ], "header": "アマーハウラーボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "90%", "text": "이동 거리에 따른 점프 피로도 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "화물 적재량 증가" }, { "number": "5%", "text": "최대 속도 증가" } ], "header": "아마르 운반선 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 90%", "text": "медленнее накапливается усталость от гиперпереходов" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается вместимость грузового отсека корабля" }, { "number": "на 5%", "text": "увеличивается скорость полного хода корабля" } ], "header": "За каждую степень освоения навыка Amarr Hauler:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "90%", "text": "减少跳跃距离对产生跳跃疲劳的影响" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "舰船货柜舱容量加成" }, { "number": "5%", "text": "舰船最大速度加成" } ], "header": "艾玛运载舰每升一级:" } ] }, "typeID": 1944 }, { "traits_de": { "role": { "bonuses": [ { "number": "10+", "text": "Bonus auf die Virusstärke von Relikt- und Datenanalysatoren" }, { "text": "·Es können Covert Ops-Tarnmodule und getarnte Anziehungsfeldgeneratoren eingebaut werden" }, { "text": "·Die Verzögerung bei Reaktivierung von Tarnmodulen wird auf 5 Sekunden reduziert." }, { "number": "60%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die maximale Geschwindigkeit des Schiffs beim Einsatz von Tarnvorrichtungen" }, { "number": "15%", "text": "Reduktion des Energiespeicherverbrauchs des Warpantriebs" } ], "header": "Minmatar Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "20%", "text": "Reduktion des CPU-Bedarfs für Tarnmodule" }, { "number": "10%", "text": "Bonus auf die Stärke von Basis- und Gefechtsscansonden" }, { "number": "10%", "text": "Reduktion der Scan-Dauer von Vermessungssonden" } ], "header": "Covert Ops Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to ship max velocity when using Cloaking Devices" }, { "number": "15%", "text": "reduction in warp drive capacitor need" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in time required for Survey Probe scans" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "10+", "text": "de bonificación a la intensidad del virus de los analizadores de datos y de reliquias." }, { "text": "·Es posible equipar un dispositivo de camuflaje de operaciones encubiertas y un generador de campo cinosural encubierto." }, { "text": "·Reducción de la demora de reactivación del camuflaje a 5 segundos." }, { "number": "60%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la velocidad máxima de la nave al utilizar dispositivos de camuflaje." }, { "number": "15%", "text": "de reducción de la necesidad del condensador del motor de warp." } ], "header": "Bonificaciones de Fragata minmatariana (por nivel de habilidad):" }, { "bonuses": [ { "number": "20%", "text": "de reducción del requisito de CPU de los dispositivos de camuflaje." }, { "number": "10%", "text": "de bonificación a la intensidad de la sonda escáner de combate y la de núcleo." }, { "number": "10%", "text": "de reducción al tiempo necesario para los escaneos de las sondas de prospección." } ], "header": "Bonificaciones de Operaciones encubiertas (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "10+", "text": "de bonus à la puissance du virus des analyseurs de reliques et des analyseurs de données" }, { "text": "·Peut équiper un dispositif de camouflage opérations secrètes et un générateur de champ cynosural furtif" }, { "text": "·Délai de réactivation du camouflage réduit à 5 secondes" }, { "number": "60%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la vitesse maximale d'un vaisseau lorsqu'équipé d'un dispositif de camouflage actif" }, { "number": "15%", "text": "de réduction des besoins énergétiques du capaciteur pour le propulseur de warp" } ], "header": " Bonus (par niveau de compétence) Frégate minmatar :" }, { "bonuses": [ { "number": "20%", "text": "de réduction du CPU requis par les dispositifs de camouflage" }, { "number": "10%", "text": "de bonus à la puissance des sondes d'exploration principales et des sondes d'exploration de combat" }, { "number": "10%", "text": "de réduction de temps nécessaire pour le balayage des sondes d'exploration" } ], "header": " Bonus (par niveau de compétence) Opérations secrètes :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to ship max velocity when using Cloaking Devices" }, { "number": "15%", "text": "reduction in warp drive capacitor need" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in time required for Survey Probe scans" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "10+", "text": "遺物アナライザーとデータアナライザーのウイルス強度が増加" }, { "text": "·隠密行動用遮蔽装置と潜伏用サイノシュラルフィールドジェネレータを装備できる" }, { "text": "·遮蔽装置の再起動遅延が5秒に短縮" }, { "number": "60%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "遮蔽装置使用時の艦船の最高速度が上昇" }, { "number": "15%", "text": "ワープドライブの必要キャパシタ量が減少" } ], "header": "ミンマターフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "20%", "text": "遮蔽装置のCPU使用量が減少" }, { "number": "10%", "text": "コアスキャナープローブと戦闘スキャナープローブの強度が増加" }, { "number": "10%", "text": "衛星調査プローブスキャンにかかる時間が減少" } ], "header": "隠密行動艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "10+", "text": "유물 및 데이터 분석기 바이러스 침투력 증가" }, { "text": "·코버트 옵스 클로킹 장치 및 코버트 사이노슈럴 필드 생성기장착 가능" }, { "text": "·클로킹 재가동 지연 시간 5초로 감소" }, { "number": "60%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "클로킹 장치 사용 시 함선 최대 속도 증가" }, { "number": "15%", "text": "워프 드라이브 캐패시터 요구량 감소" } ], "header": "민마타 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "20%", "text": "클로킹 장치 CPU 사용량 감소" }, { "number": "10%", "text": "코어 프로브 및 정찰 프로브 스캔 강도 증가" }, { "number": "10%", "text": "조사 프로브 스캔 시간 감소" } ], "header": "코버트 옵스 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 10+", "text": "повышается степень опасности вирусов, применяемых в комплексах анализа данных и комплексах анализа артефактов" }, { "text": "·Корабли этого типа могут оснащаться всережимными системами маскировки и приводными маяками скрытого действия" }, { "text": "·Задержка повторного включения систем маскировки сокращена до 5 секунд" }, { "number": "на 60%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "бонус к максимальной скорости хода при использовании устройств маскировки" }, { "number": "на 15%", "text": "снижение потребления энергии варп-двигателем" } ], "header": "За каждую степень освоения навыка Минматарские фрегаты:" }, { "bonuses": [ { "number": "на 20%", "text": "сокращается потребность систем маскировки в мощностях ЦПУ" }, { "number": "на 10%", "text": "повышается чувствительность бортовой аппаратуры зондов навигационной разведки и боевых разведзондов" }, { "number": "на 10%", "text": "сокращается расход времени на сбор данных зондами луноразведки" } ], "header": "За каждую степень освоения навыка Диверсионные фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "10+", "text": "遗迹分析仪和数据分析仪病毒强度加成" }, { "text": "·可以装备隐秘行动隐形装置和隐秘诱导力场发生器" }, { "text": "·隐形装置重启延时降到5秒" }, { "number": "60%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "使用隐形装置时舰船的最大速度加成" }, { "number": "15%", "text": "跃迁引擎电容需求降低" } ], "header": "米玛塔尔护卫舰操作每升一级:" }, { "bonuses": [ { "number": "20%", "text": "隐形装置的CPU需求降低" }, { "number": "10%", "text": "核心和作战扫描探针强度加成" }, { "number": "10%", "text": "测量探针扫描时间减少" } ], "header": "隐形特勤舰操作每升一级:" } ] }, "typeID": 11182 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Bonus auf die HP der Schilderweiterung" }, { "number": "50%", "text": "Bonus auf die HP der Panzerplatte" }, { "number": "5%", "text": "zusätzlicher Bonus auf HP der Verstärkten Schottwand" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf den Schaden von großen Energiegeschütztürmen, schnellen schweren Lenkwaffen, Marschflugkörpern und Torpedos" }, { "number": "10%", "text": "Bonus auf die HP von und den Schaden durch Drohnen" }, { "number": "10%", "text": "Bonus auf die optimale Reichweite von Energie-Nosferatus und Energieneutralisierern" } ], "header": "Amarr Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Large Energy Turret, Rapid Heavy Missile, Cruise Missile and Torpedo damage" }, { "number": "10%", "text": "bonus to Drone hitpoints and damage" }, { "number": "10%", "text": "bonus to Energy Nosferatu and Energy Neutralizer optimal range" } ], "header": "Amarr Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de bonificación a los puntos de vida del extensor de escudo." }, { "number": "50%", "text": "de bonificación a los puntos de vida de las placas de blindaje." }, { "number": "5%", "text": "de bonificación adicional a los puntos de vida del mamparo reforzado." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al daño de las torretas de energía grande, los misiles pesados rápidos, los misiles de crucero y los torpedos." }, { "number": "10%", "text": "de bonificación a los puntos de vida y el daño de los drones." }, { "number": "10%", "text": "de bonificación al alcance óptimo del nosferatu de energía y el neutralizador energético." } ], "header": "Bonificaciones de Acorazado de Amarr (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de bonus aux points de vie de l'extenseur de bouclier" }, { "number": "50%", "text": "de bonus aux points de vie du revêtement de blindage" }, { "number": "5%", "text": "de bonus supplémentaire aux points de vie de la cloison renforcée" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus aux dégâts des grandes tourelles à énergie, missiles lourds, missiles de croisière et torpilles rapides" }, { "number": "10%", "text": "de bonus aux dégâts et aux points de vie des drones" }, { "number": "10%", "text": "de bonus à la portée optimale des Nosferatu à énergie et des neutraliseurs d'énergie" } ], "header": " Bonus (par niveau de compétence) Cuirassé amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Large Energy Turret, Rapid Heavy Missile, Cruise Missile and Torpedo damage" }, { "number": "10%", "text": "bonus to Drone hitpoints and damage" }, { "number": "10%", "text": "bonus to Energy Nosferatu and Energy Neutralizer optimal range" } ], "header": "Amarr Battleship bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "シールドエクステンダーHPが増加" }, { "number": "50%", "text": "アーマープレートHPが増加" }, { "number": "5%", "text": "強化隔壁HPがさらに増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "大型エネルギータレット、高速ヘビーミサイル、クルーズミサイル及びトルピードのダメージが増加" }, { "number": "10%", "text": "ドローンのHPとダメージが増加" }, { "number": "10%", "text": "エネルギーノスフェラトゥとエネルギーニュートラライザーの最適射程距離にボーナス" } ], "header": "アマー戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "실드 확장장치 실드량 증가" }, { "number": "50%", "text": "장갑 플레이트 내구도 증가" }, { "number": "5%", "text": "강화 격벽 내구도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "대형 에너지 터렛, 급속 헤비 미사일, 크루즈 미사일, 토피도 피해량 증가" }, { "number": "10%", "text": "드론 내구도 및 피해량 증가" }, { "number": "10%", "text": "에너지 노스페라투, 에너지 뉴트럴라이저 최적사거리 증가" } ], "header": "아마르 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "бонус к прочности расширителя щитов" }, { "number": "на 50%", "text": "бонус к прочности бронеплиты" }, { "number": "на 5%", "text": "дополнительный бонус к прочности укреплённой переборки" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "бонус к урону от больших лазерных орудий, скорострельных тяжёлых ракет, дальнобойных ракет и торпед" }, { "number": "на 10%", "text": "бонус к урону и запасу прочности дронов" }, { "number": "на 10%", "text": "бонус к оптимальной дальности энергопоглощения и дистанционных нейтрализаторов заряда" } ], "header": "За каждую степень освоения навыка Амаррские линкоры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "护盾扩展装置护盾值加成" }, { "number": "50%", "text": "装甲附甲板装甲值加成" }, { "number": "5%", "text": "强化舱隔壁结构值加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "大型能量炮台、重型快速导弹、巡航导弹和鱼雷伤害加成" }, { "number": "10%", "text": "无人机HP和伤害加成" }, { "number": "10%", "text": "掠能器和能量中和器最佳射程加成" } ], "header": "艾玛战列舰操作每升一级:" } ] }, "typeID": 32305 }, { "traits_de": { "role": { "bonuses": [ { "number": "80%", "text": "Reduktion der Aktivierungskosten von Antriebsblockern" }, { "number": "80%", "text": "Reduktion der Reaktivierungsverzögerung des Anti-Unterbrechers, des max. Erfassungsreichweitenabzugs und des Scanauflösungsabzugs" }, { "number": "100%", "text": "Bonus auf die Dauer des Anti-Unterbrechers" }, { "number": "60%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von Raketenwerfern" }, { "number": "4%", "text": "Bonus auf alle Panzerungsresistenzen" } ], "header": "Amarr Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "15%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "number": "5%", "text": "Bonus auf die optimale Reichweite von Warpunterbrechern und Warpstörern" } ], "header": "Interceptors Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "80%", "text": "reduction in Propulsion Jamming systems activation cost" }, { "number": "80%", "text": "reduction in Interdiction Nullifier reactivation delay, max lock range penalty, and scan resolution penalty" }, { "number": "100%", "text": "bonus to Interdiction Nullifier duration" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Rocket Launcher rate of fire" }, { "number": "4%", "text": "bonus to all armor resistances" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "number": "5%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" } ], "header": "Interceptors bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "80%", "text": "de reducción en el coste de activación de los sistemas perturbadores de propulsión." }, { "number": "80%", "text": "de reducción de la demora de reactivación y de penalización al alcance de fijación máximo y a la resolución de escaneo del anulador de interdicción." }, { "number": "100%", "text": "de bonificación a la duración del anulador de interdicción." }, { "number": "60%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro del lanzacohetes." }, { "number": "4%", "text": "de bonificación a todas las resistencias de blindaje." } ], "header": "Bonificaciones de Fragata amarriana (por nivel de habilidad):" }, { "bonuses": [ { "number": "15%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "number": "5%", "text": "de bonificación al alcance óptimo del distorsionador de warp y el disruptor de warp." } ], "header": "Bonificaciones de Interceptores (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "80%", "text": "de réduction du coût d'activation des systèmes de brouillage de propulsion" }, { "number": "80%", "text": "de réduction au délai de réactivation de la contremesure d’interdiction, à la pénalité de portée de verrouillage maximale et à la pénalité de résolution du balayage" }, { "number": "100%", "text": "de bonus à la durée de la contremesure d’interdiction" }, { "number": "60%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des roquettes" }, { "number": "4%", "text": "de bonus à toutes les résistances du blindage" } ], "header": " Bonus (par niveau de compétence) Frégate amarr :" }, { "bonuses": [ { "number": "15%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "number": "5%", "text": "de bonus à la portée optimale des inhibiteurs de warp et des perturbateurs de warp" } ], "header": " Bonus (par niveau de compétence) Intercepteurs :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "80%", "text": "reduction in Propulsion Jamming systems activation cost" }, { "number": "80%", "text": "reduction in Interdiction Nullifier reactivation delay, max lock range penalty, and scan resolution penalty" }, { "number": "100%", "text": "bonus to Interdiction Nullifier duration" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Rocket Launcher rate of fire" }, { "number": "4%", "text": "bonus to all armor resistances" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "number": "5%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" } ], "header": "Interceptors bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "80%", "text": "推進力ジャミングシステムの起動コストが軽減" }, { "number": "80%", "text": "インターディクション無効化の再起動遅延と、最大ロック射程とスキャン分解能のペナルティ減少" }, { "number": "100%", "text": "インターディクション無効化の持続時間にボーナス" }, { "number": "60%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "ロケットランチャーの発射速度が上昇" }, { "number": "4%", "text": "全てのアーマーレジスタンスが増加" } ], "header": "アマーフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "15%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "number": "5%", "text": "ワープスクランブラーとワープ妨害器の最適射程距離が拡大" } ], "header": "要撃型フリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "80%", "text": "추진기 재밍시스템 활성화 비용 감소" }, { "number": "80%", "text": "인터딕션 무효화 장치 재활성화 대기시간, 최대 타겟팅 거리 및 스캔 정밀도 페널티 감소" }, { "number": "100%", "text": "인터딕션 무효화 장치 지속시간 보너스" }, { "number": "60%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "로켓 런처 연사속도 보너스" }, { "number": "4%", "text": "모든 장갑 저항력 증가" } ], "header": "아마르 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "15%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "number": "5%", "text": "워프 스크램블러 및 워프 디스럽터 최적사거리 증가" } ], "header": "인터셉터 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 80%", "text": "сокращается потребление энергии средствами ограничения подвижности кораблей" }, { "number": "на 80%", "text": "уменьшение задержки повторного включения нейтрализатора варп-заграждений, штрафа к максимальной дальности захвата цели и разрешающей способности сенсоров" }, { "number": "на 100%", "text": "бонус к длительности действия нейтрализатора варп-заграждений" }, { "number": "на 60%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность ПУ лёгких штурмовых ракет" }, { "number": "на 4%", "text": "повышается сопротивляемость брони корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Амаррские фрегаты:" }, { "bonuses": [ { "number": "на 15%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "number": "на 5%", "text": "увеличивается оптимальная дальность действия варп-глушителей и варп-подавителей" } ], "header": "За каждую степень освоения навыка Перехватчики:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "80%", "text": "推进抑制系统启动消耗减少" }, { "number": "80%", "text": "拦截失效装置重启延迟、最大锁定距离惩罚和扫描分辨率惩罚降低" }, { "number": "100%", "text": "拦截失效装置持续时间加成" }, { "number": "60%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "火箭发射器射速加成" }, { "number": "4%", "text": "装甲抗性加成" } ], "header": "艾玛护卫舰操作每升一级:" }, { "bonuses": [ { "number": "15%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "number": "5%", "text": "跃迁扰频器和跃迁扰断器最佳射程加成" } ], "header": "截击舰操作每升一级:" } ] }, "typeID": 11186 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Bonus auf die HP der Schilderweiterung" }, { "number": "50%", "text": "Bonus auf die HP der Panzerplatte" }, { "number": "5%", "text": "zusätzlicher Bonus auf HP der Verstärkten Schottwand" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von großen Vorton-Projektoren" }, { "number": "5%", "text": "Bonus auf die Feuerrate von großen Vorton-Projektoren" } ], "header": "EDENCOM Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Vorton Projector damage" }, { "number": "5%", "text": "bonus to Large Vorton Projector rate of fire" } ], "header": "EDENCOM Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de bonificación a los puntos de vida del extensor de escudo." }, { "number": "50%", "text": "de bonificación a los puntos de vida de las placas de blindaje." }, { "number": "5%", "text": "de bonificación adicional a los puntos de vida del mamparo reforzado." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al daño del proyector vortónico grande." }, { "number": "5%", "text": "de bonificación a la cadencia de tiro del proyector vortónico grande." } ], "header": "Bonificaciones de Acorazado de EDENCOM (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de bonus aux points de vie de l'extenseur de bouclier" }, { "number": "50%", "text": "de bonus aux points de vie du revêtement de blindage" }, { "number": "5%", "text": "de bonus supplémentaire aux points de vie de la cloison renforcée" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "améliore les dégâts des grands projecteurs de vortons" }, { "number": "5%", "text": "améliore la cadence de tir des grands projecteurs de vortons" } ], "header": " Bonus (par niveau de compétence) Cuirassé EDENCOM :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Vorton Projector damage" }, { "number": "5%", "text": "bonus to Large Vorton Projector rate of fire" } ], "header": "EDENCOM Battleship bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "シールドエクステンダーHPが増加" }, { "number": "50%", "text": "アーマープレートHPが増加" }, { "number": "5%", "text": "強化隔壁HPがさらに増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "大型ヴォートンプロジェクターのダメージにボーナス" }, { "number": "5%", "text": "大型ヴォートンプロジェクターの発射間隔にボーナス" } ], "header": "EDENCOM戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "실드 확장장치 실드량 증가" }, { "number": "50%", "text": "장갑 플레이트 내구도 증가" }, { "number": "5%", "text": "강화 격벽 내구도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "대형 보르톤 프로젝터 피해량 증가" }, { "number": "5%", "text": "대형 보르톤 프로젝터 연사속도 증가" } ], "header": "EDENCOM 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "бонус к прочности расширителя щитов" }, { "number": "на 50%", "text": "бонус к прочности бронеплиты" }, { "number": "на 5%", "text": "дополнительный бонус к прочности укреплённой переборки" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "бонус к урону большого вортонного проектора" }, { "number": "на 5%", "text": "бонус к скорострельности большого вортонного проектора" } ], "header": "За каждую степень освоения навыка EDENCOM Battleship:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "护盾扩展装置护盾值加成" }, { "number": "50%", "text": "装甲附甲板装甲值加成" }, { "number": "5%", "text": "强化舱隔壁结构值加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "大型电弧弦投射器伤害加成" }, { "number": "5%", "text": "大型电弧弦投射器射速加成" } ], "header": "伊甸联合防御阵线战列舰操作每升一级:" } ] }, "typeID": 54733 }, { "traits_de": { "role": { "bonuses": [ { "number": "80%", "text": "Reduktion der Aktivierungskosten vonAntriebsblockern" }, { "number": "100%", "text": "Bonus auf den Nutzen der Überhitzung von Nachbrennern und Mikrowarpantrieben" }, { "number": "60%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Reduktion der Aktivierungskosten von kleinen Energiegeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Schaden von kleinen Energiegeschütztürmen" } ], "header": "Amarr Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "15%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "number": "7.5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Energiegeschütztürmen" } ], "header": "Interceptors Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "80%", "text": "reduction in Propulsion Jamming systems activation cost" }, { "number": "100%", "text": "bonus to the benefits of overheating Afterburners and Microwarpdrives" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "10%", "text": "bonus to Small Energy Turret damage" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "number": "7.5%", "text": "bonus to Small Energy Turret tracking speed" } ], "header": "Interceptors bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "80%", "text": "de reducción en el coste de activación de los sistemas perturbadores de propulsión." }, { "number": "100%", "text": "de bonificación a los beneficios de posquemadores y motores de microwarp sobrecalentados." }, { "number": "60%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de reducción del coste de activación de la torreta de energía pequeña." }, { "number": "10%", "text": "de bonificación al daño de la torreta de energía pequeña." } ], "header": "Bonificaciones de Fragata amarriana (por nivel de habilidad):" }, { "bonuses": [ { "number": "15%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta de energía pequeña." } ], "header": "Bonificaciones de Interceptores (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "80%", "text": "de réduction du coût d'activation des systèmes de brouillage de propulsion" }, { "number": "100%", "text": "de bonus aux avantages de la surchauffe sur les systèmes de post-combustion et les propulseurs de microwarp" }, { "number": "60%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de réduction du coût d'activation des petites tourelles à énergie" }, { "number": "10%", "text": "de bonus aux dégâts des petites tourelles à énergie" } ], "header": " Bonus (par niveau de compétence) Frégate amarr :" }, { "bonuses": [ { "number": "15%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "number": "7.5%", "text": "de bonus à la vitesse de poursuite des petites tourelles à énergie" } ], "header": " Bonus (par niveau de compétence) Intercepteurs :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "80%", "text": "reduction in Propulsion Jamming systems activation cost" }, { "number": "100%", "text": "bonus to the benefits of overheating Afterburners and Microwarpdrives" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "10%", "text": "bonus to Small Energy Turret damage" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "number": "7.5%", "text": "bonus to Small Energy Turret tracking speed" } ], "header": "Interceptors bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "80%", "text": "推進力ジャミングシステムの起動コストが軽減" }, { "number": "100%", "text": "オーバーヒートしたアフターバーナーとマイクロワープドライブの恩恵にボーナス" }, { "number": "60%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "小型エネルギータレットの起動コストが軽減" }, { "number": "10%", "text": "小型エネルギータレットのダメージが増加" } ], "header": "アマーフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "15%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "number": "7.5%", "text": "小型エネルギータレットの追跡速度が上昇" } ], "header": "要撃型フリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "80%", "text": "추진기 재밍시스템 활성화 비용 감소" }, { "number": "100%", "text": "애프터버너 및 마이크로 워프 드라이브 과부하 효과 증가" }, { "number": "60%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "소형 에너지 터렛 활성화 비용 감소" }, { "number": "10%", "text": "소형 에너지 터렛 피해량 증가" } ], "header": "아마르 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "15%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "number": "7.5%", "text": "소형 에너지 터렛 트래킹 속도 증가" } ], "header": "인터셉터 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 80%", "text": "сокращается потребление энергии средствами ограничения подвижности кораблей" }, { "number": "на 100%", "text": "бонус к преимуществам перегрева форсажных ускорителей и микроварп-ускорителей" }, { "number": "на 60%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "сокращается расход энергии при ведении огня из малых лазерных орудий" }, { "number": "на 10%", "text": "увеличивается урон малых лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские фрегаты:" }, { "bonuses": [ { "number": "на 15%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "number": "на 7.5%", "text": "повышается скорость наводки на цель малых лазерных орудий" } ], "header": "За каждую степень освоения навыка Перехватчики:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "80%", "text": "推进抑制系统启动消耗减少" }, { "number": "100%", "text": "加力燃烧器和微型跃迁推进器过载效果加成" }, { "number": "60%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "小型能量炮台启动消耗减少" }, { "number": "10%", "text": "小型能量炮台伤害加成" } ], "header": "艾玛护卫舰操作每升一级:" }, { "bonuses": [ { "number": "15%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "number": "7.5%", "text": "小型能量炮台跟踪速度加成" } ], "header": "截击舰操作每升一级:" } ] }, "typeID": 11184 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "6%", "text": "Bonus auf alle Schildresistenzen" }, { "number": "5%", "text": "Bonus auf den Schaden von kleinen Vorton-Projektoren" } ], "header": "EDENCOM Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "6%", "text": "bonus to all shield resistances" }, { "number": "5%", "text": "bonus to Small Vorton Projector damage" } ], "header": "EDENCOM Frigate bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "6%", "text": "de bonificación a todas las resistencias de escudo." }, { "number": "5%", "text": "de bonificación al daño del proyector vortónico pequeño." } ], "header": "Bonificaciones de Fragata de EDENCOM (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "6%", "text": "de bonus à toutes les résistances du bouclier" }, { "number": "5%", "text": "améliore les dégâts des petits projecteurs de vortons" } ], "header": " Bonus (par niveau de compétence) Frégate EDENCOM :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "6%", "text": "bonus to all shield resistances" }, { "number": "5%", "text": "bonus to Small Vorton Projector damage" } ], "header": "EDENCOM Frigate bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "6%", "text": "全てのシールドレジスタンスにボーナス" }, { "number": "5%", "text": "小型ヴォートンプロジェクターのダメージにボーナス" } ], "header": "EDENCOMフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "6%", "text": "모든 실드 저항력 증가" }, { "number": "5%", "text": "소형 보르톤 프로젝터 피해량 증가" } ], "header": "EDENCOM 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 6%", "text": "бонус к сопротивляемости щитов" }, { "number": "на 5%", "text": "бонус к урону малого вортонного проектора" } ], "header": "За каждую степень освоения навыка EDENCOM Frigate:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "6%", "text": "护盾抗性加成" }, { "number": "5%", "text": "小型电弧弦投射器伤害加成" } ], "header": "伊甸联合防御阵线护卫舰操作每升一级:" } ] }, "typeID": 54731 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Bonus auf die optimale Reichweite von kleinen Projektilgeschütztürmen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von kleinen Projektilgeschütztürmen" }, { "number": "10%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Projektilgeschütztürmen" } ], "header": "Minmatar Destroyer Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Small Projectile Turret optimal range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Small Projectile Turret damage" }, { "number": "10%", "text": "bonus to Small Projectile Turret tracking speed" } ], "header": "Minmatar Destroyer bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de bonificación al alcance óptimo de la torreta de proyectiles pequeña." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta de proyectiles pequeña." }, { "number": "10%", "text": "de bonificación a la velocidad de rastreo de la torreta de proyectiles pequeña." } ], "header": "Bonificaciones de Destructor minmatariano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "bonus à la portée optimale de la petite tourelle à projectiles" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus aux dégâts de la petite tourelle à projectiles" }, { "number": "10%", "text": "bonus à la vitesse de poursuite de la petite tourelle à projectiles" } ], "header": " Bonus (par niveau de compétence) Destroyer minmatar :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Small Projectile Turret optimal range" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Small Projectile Turret damage" }, { "number": "10%", "text": "bonus to Small Projectile Turret tracking speed" } ], "header": "Minmatar Destroyer bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "小型プロジェクタイルタレットの最適射程距離が拡大" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "小型プロジェクタイルタレットのダメージが増加" }, { "number": "10%", "text": "小型プロジェクタイルタレットの追跡速度が上昇" } ], "header": "ミンマター駆逐艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "소형 발사체 터렛 최적사거리 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "소형 발사체 터렛 피해량 증가" }, { "number": "10%", "text": "소형 발사체 터렛 트래킹 속도 증가" } ], "header": "민마타 디스트로이어 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "увеличивается оптимальная дальность ведения огня из малых баллистических орудий" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон боеприпасов малых баллистических орудий" }, { "number": "на 10%", "text": "повышается скорость наводки на цель малых баллистических орудий" } ], "header": "За каждую степень освоения навыка Минматарские эсминцы:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "小型射弹炮台最佳射程加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "小型射弹炮台伤害加成" }, { "number": "10%", "text": "小型射弹炮台跟踪速度加成" } ], "header": "米玛塔尔驱逐舰操作每升一级:" } ] }, "typeID": 33883 }, { "traits_de": { "role": { "bonuses": [ { "number": "10+", "text": "Bonus auf die Virusstärke von Relikt- und Datenanalysatoren" }, { "text": "·Es können Covert Ops-Tarnmodule und getarnte Anziehungsfeldgeneratoren eingebaut werden" }, { "text": "·Die Verzögerung bei Reaktivierung von Tarnmodulen wird auf 5 Sekunden reduziert." }, { "number": "60%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Reduktion der Abweichung von Kern- und Gefechtsscansonden" }, { "number": "15%", "text": "Reduktion des Energiespeicherverbrauchs des Warpantriebs" } ], "header": "Amarr Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "20%", "text": "Reduktion des CPU-Bedarfs für Tarnmodule" }, { "number": "10%", "text": "Bonus auf die Stärke von Basis- und Gefechtsscansonden" }, { "number": "10%", "text": "Reduktion der Scan-Dauer von Vermessungssonden" } ], "header": "Covert Ops Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "reduction to Core and Combat Scanner Probe deviation" }, { "number": "15%", "text": "reduction in warp drive capacitor need" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in time required for Survey Probe scans" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "10+", "text": "de bonificación a la intensidad del virus de los analizadores de datos y de reliquias." }, { "text": "·Es posible equipar un dispositivo de camuflaje de operaciones encubiertas y un generador de campo cinosural encubierto." }, { "text": "·Reducción de la demora de reactivación del camuflaje a 5 segundos." }, { "number": "60%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de reducción a la desviación de la sonda escáner de combate y la de núcleo." }, { "number": "15%", "text": "de reducción de la necesidad del condensador del motor de warp." } ], "header": "Bonificaciones de Fragata amarriana (por nivel de habilidad):" }, { "bonuses": [ { "number": "20%", "text": "de reducción del requisito de CPU de los dispositivos de camuflaje." }, { "number": "10%", "text": "de bonificación a la intensidad de la sonda escáner de combate y la de núcleo." }, { "number": "10%", "text": "de reducción al tiempo necesario para los escaneos de las sondas de prospección." } ], "header": "Bonificaciones de Operaciones encubiertas (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "10+", "text": "de bonus à la puissance du virus des analyseurs de reliques et des analyseurs de données" }, { "text": "·Peut équiper un dispositif de camouflage opérations secrètes et un générateur de champ cynosural furtif" }, { "text": "·Délai de réactivation du camouflage réduit à 5 secondes" }, { "number": "60%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "réduction de la déviation des sondes principales et des sondes de scanner de combat" }, { "number": "15%", "text": "de réduction des besoins énergétiques du capaciteur pour le propulseur de warp" } ], "header": " Bonus (par niveau de compétence) Frégate amarr :" }, { "bonuses": [ { "number": "20%", "text": "de réduction du CPU requis par les dispositifs de camouflage" }, { "number": "10%", "text": "de bonus à la puissance des sondes d'exploration principales et des sondes d'exploration de combat" }, { "number": "10%", "text": "de réduction de temps nécessaire pour le balayage des sondes d'exploration" } ], "header": " Bonus (par niveau de compétence) Opérations secrètes :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "reduction to Core and Combat Scanner Probe deviation" }, { "number": "15%", "text": "reduction in warp drive capacitor need" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "20%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in time required for Survey Probe scans" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "10+", "text": "遺物アナライザーとデータアナライザーのウイルス強度が増加" }, { "text": "·隠密行動用遮蔽装置と潜伏用サイノシュラルフィールドジェネレータを装備できる" }, { "text": "·遮蔽装置の再起動遅延が5秒に短縮" }, { "number": "60%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "コア及び戦闘スキャナープローブの誤差が減少" }, { "number": "15%", "text": "ワープドライブの必要キャパシタ量が減少" } ], "header": "アマーフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "20%", "text": "遮蔽装置のCPU使用量が減少" }, { "number": "10%", "text": "コアスキャナープローブと戦闘スキャナープローブの強度が増加" }, { "number": "10%", "text": "衛星調査プローブスキャンにかかる時間が減少" } ], "header": "隠密行動艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "10+", "text": "유물 및 데이터 분석기 바이러스 침투력 증가" }, { "text": "·코버트 옵스 클로킹 장치 및 코버트 사이노슈럴 필드 생성기장착 가능" }, { "text": "·클로킹 재가동 지연 시간 5초로 감소" }, { "number": "60%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "코어 프로브 및 정찰 프로브 스캔 오차 감소" }, { "number": "15%", "text": "워프 드라이브 캐패시터 요구량 감소" } ], "header": "아마르 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "20%", "text": "클로킹 장치 CPU 사용량 감소" }, { "number": "10%", "text": "코어 프로브 및 정찰 프로브 스캔 강도 증가" }, { "number": "10%", "text": "조사 프로브 스캔 시간 감소" } ], "header": "코버트 옵스 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 10+", "text": "повышается степень опасности вирусов, применяемых в комплексах анализа данных и комплексах анализа артефактов" }, { "text": "·Корабли этого типа могут оснащаться всережимными системами маскировки и приводными маяками скрытого действия" }, { "text": "·Задержка повторного включения систем маскировки сокращена до 5 секунд" }, { "number": "на 60%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "уменьшение отклонения зондов навигационной и боевой разведки" }, { "number": "на 15%", "text": "снижение потребления энергии варп-двигателем" } ], "header": "За каждую степень освоения навыка Амаррские фрегаты:" }, { "bonuses": [ { "number": "на 20%", "text": "сокращается потребность систем маскировки в мощностях ЦПУ" }, { "number": "на 10%", "text": "повышается чувствительность бортовой аппаратуры зондов навигационной разведки и боевых разведзондов" }, { "number": "на 10%", "text": "сокращается расход времени на сбор данных зондами луноразведки" } ], "header": "За каждую степень освоения навыка Диверсионные фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "10+", "text": "遗迹分析仪和数据分析仪病毒强度加成" }, { "text": "·可以装备隐秘行动隐形装置和隐秘诱导力场发生器" }, { "text": "·隐形装置重启延时降到5秒" }, { "number": "60%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "核心和作战扫描探针扫描偏差减少" }, { "number": "15%", "text": "跃迁引擎电容需求降低" } ], "header": "艾玛护卫舰操作每升一级:" }, { "bonuses": [ { "number": "20%", "text": "隐形装置的CPU需求降低" }, { "number": "10%", "text": "核心和作战扫描探针强度加成" }, { "number": "10%", "text": "测量探针扫描时间减少" } ], "header": "隐形特勤舰操作每升一级:" } ] }, "typeID": 11188 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Bonus auf die HP der Schilderweiterung" }, { "number": "50%", "text": "Bonus auf die HP der Panzerplatte" }, { "number": "5%", "text": "zusätzlicher Bonus auf HP der Verstärkten Schottwand" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von schnellen schweren Lenkwaffen-, Marschflugkörper- und Torpedo-Werfern" }, { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Caldari Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Rapid Heavy Missile, Cruise Missile and Torpedo Launcher rate of fire" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de bonificación a los puntos de vida del extensor de escudo." }, { "number": "50%", "text": "de bonificación a los puntos de vida de las placas de blindaje." }, { "number": "5%", "text": "de bonificación adicional a los puntos de vida del mamparo reforzado." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro rápida de los lanzamisiles pesados, los lanzamisiles de crucero y los lanzatorpedos." }, { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Acorazado caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de bonus aux points de vie de l'extenseur de bouclier" }, { "number": "50%", "text": "de bonus aux points de vie du revêtement de blindage" }, { "number": "5%", "text": "de bonus supplémentaire aux points de vie de la cloison renforcée" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles lourds, lance-missiles de croisière et lance-torpilles rapides" }, { "number": "4%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": " Bonus (par niveau de compétence) Cuirassé caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Rapid Heavy Missile, Cruise Missile and Torpedo Launcher rate of fire" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Battleship bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "シールドエクステンダーHPが増加" }, { "number": "50%", "text": "アーマープレートHPが増加" }, { "number": "5%", "text": "強化隔壁HPがさらに増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "高速ヘビーミサイル・クルーズミサイル・トルピードランチャーの発射間隔が短縮" }, { "number": "4%", "text": "全てのシールドレジスタンスが増加" } ], "header": "カルダリ戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "실드 확장장치 실드량 증가" }, { "number": "50%", "text": "장갑 플레이트 내구도 증가" }, { "number": "5%", "text": "강화 격벽 내구도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "급속 헤비 미사일, 크루즈 미사일, 토피도 런처 연사속도 증가" }, { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "칼다리 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "бонус к прочности расширителя щитов" }, { "number": "на 50%", "text": "бонус к прочности бронеплиты" }, { "number": "на 5%", "text": "дополнительный бонус к прочности укреплённой переборки" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность торпедных аппаратов, ПУ дальнобойных ракет, скорострельных ПУ тяжёлых ракет" }, { "number": "на 4%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Калдарские линкоры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "护盾扩展装置护盾值加成" }, { "number": "50%", "text": "装甲附甲板装甲值加成" }, { "number": "5%", "text": "强化舱隔壁结构值加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "重型快速导弹、巡航导弹和鱼雷发射器射速加成" }, { "number": "4%", "text": "护盾抗性加成" } ], "header": "加达里战列舰操作每升一级:" } ] }, "typeID": 32309 }, { "traits_de": { "misc": { "bonuses": [ { "number": "50%", "text": "Verringerung von CONCORD-Kopfgeldern" }, { "text": "·Bis zu 25 % Reduktion der Schild- und Panzerungsresistenzen" }, { "text": "·Bis zu 25 % Reduktion des Schadens durch Geschütztürme, Werfer, Drohnen und Smartbombs" }, { "text": "·Anziehungsfeld-Störsender sind für das ganze System aktiviert." } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "50%", "text": "reduction in CONCORD bounties" }, { "text": "·Up to 25% reduction in shield and armor resistances" }, { "text": "·Up to 25% reduction in turret, launcher, drone and smartbomb damage" }, { "text": "·System-wide cynosural field jammers are in effect" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "50%", "text": "de reducción a las recompensas de CONCORD." }, { "text": "·Hasta un 25 % de reducción de las resistencias de blindaje y escudo." }, { "text": "·Hasta un 25 % de reducción del daño de torretas, lanzadores, drones y bombas inteligentes." }, { "text": "·Se activan los aparatos perturbadores de campo cinosural en todo el sistema." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "50%", "text": "réduction des primes CONCORD" }, { "text": "·Jusqu'à 25 % de réduction des résistances de bouclier et de blindage" }, { "text": "·Jusqu'à 25 % de réduction des dégâts de tourelles, de lanceurs, de drones et de bombes de proximité" }, { "text": "·Brouilleurs de champ cynosural effectifs dans tout le système en action" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "50%", "text": "reduction in CONCORD bounties" }, { "text": "·Up to 25% reduction in shield and armor resistances" }, { "text": "·Up to 25% reduction in turret, launcher, drone and smartbomb damage" }, { "text": "·System-wide cynosural field jammers are in effect" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "50%", "text": "CONCORDの懸賞金削減" }, { "text": "·シールドとアーマーレジスタンスが最大25%減少" }, { "text": "·タレット、ランチャー、ドローン、スマートボムのダメージが最大25%減少" }, { "text": "·全システム用サイノシュラルフィールドジャマー装置が起動中" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "50%", "text": "CONCORD 현상금 감소" }, { "text": "·실드 및 장갑 저항력 최대 25% 감소" }, { "text": "·터렛, 런처, 드론, 스마트폭탄 피해량 최대 25% 감소" }, { "text": "·항성계 전체에 사이노슈럴 필드 재머 작동 중" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 50%", "text": "уменьшение наград, назначенных КОНКОРДом" }, { "text": "·Уменьшение сопротивляемости щитов и брони до 25%" }, { "text": "·Уменьшение урона от турелей, пусковых установок, дронов и импульсных излучателей до 25%" }, { "text": "·Действуют глушители поля приводного маяка с охватом всей системы" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "50%", "text": "统合部赏金减少" }, { "text": "·护盾和装甲抗性降低,最多25%" }, { "text": "·炮台、发射器、无人机和立体炸弹的威力被削弱,最多25%" }, { "text": "·全星系遭受反诱导力场干扰" } ], "header": "其它加成:" } }, "typeID": 3493 }, { "traits_de": { "misc": { "bonuses": [ { "number": "33%", "text": "Bonus auf den Schaden von leichten Lenkwaffen und Raketen" }, { "number": "95%", "text": "Reduktion des CPU-Bedarfs für Scansondenwerfer und Vermessungssondenwerfer" }, { "text": "·Zusätzliche Boni sind verfügbar, während einer der drei Taktischer-Zerstörer-Modi aktiv ist. Modi können nicht öfter als alle 2 Sekunden gewechselt werden." }, { "text": "·Verteidigungsmodus" }, { "number": "33.3%", "text": "Bonus auf alle Schildresistenzen, während der Verteidigungsmodus aktiviert ist" }, { "number": "33.3%", "text": "Reduktion des Signaturradius des Schiffs, während der Verteidigungsmodus aktiviert ist" }, { "number": "33.3%", "text": "Reduktion der Wiederaufladezeit des Schildes, während der Verteidigungsmodus aktiviert ist" }, { "text": "·Antriebsmodus" }, { "number": "66.6%", "text": "Bonus auf die Geschwindigkeitsteigerungen von Nachbrenner und Mikrowarpantrieb, während Antriebsmodus aktiviert ist" }, { "number": "66.6%", "text": "Bonus auf den Trägheitsmodifikator des Schiffs, während der Antriebsmodus aktiviert ist" }, { "text": "·Scharfschützenmodus" }, { "number": "66.6%", "text": "Bonus auf die Geschwindigkeit von leichten Lenkwaffen, während der Scharfschützenmodus aktiviert ist" }, { "number": "250%", "text": "Bonus auf die Geschwindigkeit von Raketen, während der Scharfschützenmodus aktiviert ist" }, { "number": "33.3%", "text": "Bonus auf den Schaden von leichten Lenkwaffen und Raketen, während der Scharfschützenmodus aktiviert ist" }, { "number": "100%", "text": "Bonus auf Sensorstärke und Zielerfassungsreichweite, während der Scharfschützenmodus aktiviert ist" }, { "number": "66.6%", "text": "Erhöhte Resistenzen gegen feindliche Sensordämpfer und Waffendisruptoren, während der Scharfschützenmodus aktiviert ist" } ], "header": "Verschiedene Boni:" }, "role": { "bonuses": [ { "number": "95%", "text": "Reduktion der Stromnetzvoraussetzungen und des CPU-Bedarfs für Kommandostrahlen" }, { "text": "·Kann Mikrosprungfeldgeneratoren ausrüsten" }, { "text": "·Kann ein Kommandostrahlen-Modul verwenden" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Reduktion der Hochfahrzeit von Mikrosprungfeldgeneratoren" }, { "number": "2%", "text": "Bonus auf Effektstärke und Dauer von Schild- und Informationskommandostrahlen" } ], "header": "Command Destroyers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "6%", "text": "Bonus auf die Feuerrate von Werfern für leichte Lenkwaffen und Raketen" }, { "number": "15%", "text": "Reduktion der Nachladezeit von Lenkwaffenwerfern" }, { "number": "5%", "text": "Reduktion des erlittenen Hitzeschadens am Modul" } ], "header": "Caldari Tactical Destroyer Boni (je Skillstufe):" } ] }, "traits_en-us": { "misc": { "bonuses": [ { "number": "33%", "text": "bonus to Light Missile and Rocket damage" }, { "number": "95%", "text": "reduction in Scan Probe Launcher and Survey Probe Launcher CPU requirements" }, { "text": "·Additional bonuses are available while one of three Tactical Destroyer Modes are active. Modes may be switched no more than once every 2 seconds." }, { "text": "·Defense Mode" }, { "number": "33.3%", "text": "bonus to all shield resistances while Defense Mode is enabled" }, { "number": "33.3%", "text": "reduction in ship signature radius while Defense Mode is enabled" }, { "number": "33.3%", "text": "reduction in shield recharge time while Defense Mode is enabled" }, { "text": "·Propulsion Mode" }, { "number": "66.6%", "text": "bonus to Afterburner and Microwarpdrive speed boost while Propulsion Mode is enabled" }, { "number": "66.6%", "text": "bonus to ship inertia modifier while Propulsion Mode is enabled" }, { "text": "·Sharpshooter Mode" }, { "number": "66.6%", "text": "bonus to Light Missile velocity while Sharpshooter Mode is enabled" }, { "number": "250%", "text": "bonus to Rocket velocity while Sharpshooter Mode is enabled" }, { "number": "33.3%", "text": "bonus to Light Missile and Rocket damage while Sharpshooter Mode is enabled" }, { "number": "100%", "text": "bonus to sensor strength and targeting range while Sharpshooter Mode is enabled" }, { "number": "66.6%", "text": "increased resistances against hostile Sensor Dampeners and Weapon Disruptors while Sharpshooter Mode is enabled" } ], "header": "Misc bonus:" }, "role": { "bonuses": [ { "number": "95%", "text": "reduction in powergrid and CPU requirements for Command Bursts" }, { "text": "·Can fit Micro Jump Field Generators" }, { "text": "·Can use one Command Burst module" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "reduction in Micro Jump Field Generator spool up time" }, { "number": "2%", "text": "bonus to Shield Command and Information Command Burst effect strength and duration" } ], "header": "Command Destroyers bonuses (per skill level):" }, { "bonuses": [ { "number": "6%", "text": "bonus to Light Missile launcher and Rocket launcher rate of fire" }, { "number": "15%", "text": "reduction in missile launcher reload time" }, { "number": "5%", "text": "reduction in module heat damage amount taken" } ], "header": "Caldari Tactical Destroyer bonuses (per skill level):" } ] }, "traits_es": { "misc": { "bonuses": [ { "number": "33%", "text": "de bonificación al daño de los misiles ligeros y los cohetes." }, { "number": "95%", "text": "de reducción de los requisitos de CPU del lanzasondas de escaneo y el lanzasondas de prospección." }, { "text": "·Hay bonificaciones adicionales disponibles mientras uno de los tres modos de destructor táctico está habilitado. No se puede cambiar de modo más de una vez cada 2 segundos." }, { "text": "·Modo de defensa" }, { "number": "33.3%", "text": "de bonificación a todas las resistencias de escudo mientras el modo de defensa está habilitado." }, { "number": "33.3%", "text": "de reducción del radio de la señal de la nave mientras el modo de defensa está habilitado." }, { "number": "33.3%", "text": "de reducción del tiempo de recarga de los escudos mientras el modo de defensa está habilitado." }, { "text": "·Modo de propulsión" }, { "number": "66.6%", "text": "de bonificación al impulso de velocidad del posquemador y el motor de microwarp mientras el modo de propulsión está habilitado." }, { "number": "66.6%", "text": "de bonificación al modificador de inercia de la nave mientras el modo de propulsión está habilitado." }, { "text": "·Modo de francotirador" }, { "number": "66.6%", "text": "de bonificación a la velocidad de los misiles ligeros mientras el modo de francotirador está habilitado." }, { "number": "250%", "text": "de bonificación a la velocidad de los cohetes mientras el modo de francotirador está habilitado." }, { "number": "33.3%", "text": "de bonificación al daño de los misiles ligeros y los cohetes mientras el modo de francotirador está habilitado." }, { "number": "100%", "text": "de bonificación a la intensidad del sensor y la distancia-objetivo mientras el modo de francotirador está habilitado." }, { "number": "66.6%", "text": "más resistencia frente a atenuadores de sensor y disruptores de armas hostiles mientras el modo de francotirador está habilitado." } ], "header": "Bonificación misc.:" }, "role": { "bonuses": [ { "number": "95%", "text": "de reducción de los requisitos del sistema de potencia y CPU para los estallidos de mando." }, { "text": "·Es posible equipar generadores de campo de microsalto." }, { "text": "·Es posible equipar un módulo de estallido de mando." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de reducción del tiempo de carga del generador de campo de microsalto." }, { "number": "2%", "text": "de bonificación a la intensidad y la duración del efecto del estallido de mando de escudo y mando de información." } ], "header": "Bonificaciones de Destructores de mando (por nivel de habilidad):" }, { "bonuses": [ { "number": "6%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles ligeros y los lanzacohetes." }, { "number": "15%", "text": "de reducción del tiempo de recarga de los lanzamisiles." }, { "number": "5%", "text": "de reducción de la cantidad de daño por calor del módulo." } ], "header": "Bonificaciones de Destructor táctico caldari (por nivel de habilidad):" } ] }, "traits_fr": { "misc": { "bonuses": [ { "number": "33%", "text": "de bonus aux dégâts des missiles légers et des roquettes" }, { "number": "95%", "text": "de réduction aux prérequis de CPU pour le lanceur de sonde de balayage et le lanceur de sonde d'exploration" }, { "text": "·Des bonus supplémentaires sont disponibles lorsque l'un des trois modes de destroyer tactique est actif. Il est possible de changer de mode une seule fois toutes les 2 secondes." }, { "text": "·Mode défense" }, { "number": "33.3%", "text": "de bonus à toutes les résistances du bouclier lorsque le mode défense est activé" }, { "number": "33.3%", "text": "de réduction du rayon de signature du vaisseau lorsque le mode défense est activé" }, { "number": "33.3%", "text": "de réduction au temps de recharge du bouclier lorsque mode défense est activé" }, { "text": "·Mode propulsion" }, { "number": "66.6%", "text": "de bonus à l'accélération du système de post-combustion et du propulseur de microwarp lorsque le mode propulsion est activé" }, { "number": "66.6%", "text": "de bonus au modificateur d'inertie du vaisseau lorsque le mode propulsion est activé" }, { "text": "·Mode tireur d'élite" }, { "number": "66.6%", "text": "de bonus à la vitesse des missiles légers lorsque le mode tireur d'élite est activé" }, { "number": "250%", "text": "de bonus à la vitesse des roquettes lorsque le mode tireur d'élite est activé" }, { "number": "33.3%", "text": "de bonus aux dégâts des missiles légers et des roquettes lorsque le mode tireur d'élite est activé" }, { "number": "100%", "text": "de bonus à la puissance du détecteur et à la portée de ciblage lorsque le mode tireur d'élite est activé" }, { "number": "66.6%", "text": "d'augmentation des résistances contre les atténuateurs de détection et les perturbateurs d'armement hostiles lorsque le mode tireur d'élite est activé" } ], "header": "Bonus divers :" }, "role": { "bonuses": [ { "number": "95%", "text": "de réduction des prérequis de réseau d'alimentation et de CPU pour les salves de commandement" }, { "text": "·Peut être équipé de générateurs de champ de microsaut" }, { "text": "·Peut utiliser un module de salve de commandement" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de réduction au temps de réactivation du générateur de champ de microsaut" }, { "number": "2%", "text": "de bonus à la puissance et la durée des effets des salves de commandement de bouclier et d'information" } ], "header": " Bonus (par niveau de compétence) Destroyers de commandement :" }, { "bonuses": [ { "number": "6%", "text": "de bonus à la cadence de tir des lance-missiles légers et des lance-roquettes" }, { "number": "15%", "text": "de réduction du temps de rechargement des lance-missiles" }, { "number": "5%", "text": "de réduction aux dégâts thermiques subis par le module" } ], "header": " Bonus (par niveau de compétence) Destroyer tactique caldari :" } ] }, "traits_it": { "misc": { "bonuses": [ { "number": "33%", "text": "bonus to Light Missile and Rocket damage" }, { "number": "95%", "text": "reduction in Scan Probe Launcher and Survey Probe Launcher CPU requirements" }, { "text": "·Additional bonuses are available while one of three Tactical Destroyer Modes are active. Modes may be switched no more than once every 2 seconds." }, { "text": "·Defense Mode" }, { "number": "33.3%", "text": "bonus to all shield resistances while Defense Mode is enabled" }, { "number": "33.3%", "text": "reduction in ship signature radius while Defense Mode is enabled" }, { "number": "33.3%", "text": "reduction in shield recharge time while Defense Mode is enabled" }, { "text": "·Propulsion Mode" }, { "number": "66.6%", "text": "bonus to Afterburner and Microwarpdrive speed boost while Propulsion Mode is enabled" }, { "number": "66.6%", "text": "bonus to ship inertia modifier while Propulsion Mode is enabled" }, { "text": "·Sharpshooter Mode" }, { "number": "66.6%", "text": "bonus to Light Missile velocity while Sharpshooter Mode is enabled" }, { "number": "250%", "text": "bonus to Rocket velocity while Sharpshooter Mode is enabled" }, { "number": "33.3%", "text": "bonus to Light Missile and Rocket damage while Sharpshooter Mode is enabled" }, { "number": "100%", "text": "bonus to sensor strength and targeting range while Sharpshooter Mode is enabled" }, { "number": "66.6%", "text": "increased resistances against hostile Sensor Dampeners and Weapon Disruptors while Sharpshooter Mode is enabled" } ], "header": "Misc bonus:" }, "role": { "bonuses": [ { "number": "95%", "text": "reduction in powergrid and CPU requirements for Command Bursts" }, { "text": "·Can fit Micro Jump Field Generators" }, { "text": "·Can use one Command Burst module" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "reduction in Micro Jump Field Generator spool up time" }, { "number": "2%", "text": "bonus to Shield Command and Information Command Burst effect strength and duration" } ], "header": "Command Destroyers bonuses (per skill level):" }, { "bonuses": [ { "number": "6%", "text": "bonus to Light Missile launcher and Rocket launcher rate of fire" }, { "number": "15%", "text": "reduction in missile launcher reload time" }, { "number": "5%", "text": "reduction in module heat damage amount taken" } ], "header": "Caldari Tactical Destroyer bonuses (per skill level):" } ] }, "traits_ja": { "misc": { "bonuses": [ { "number": "33%", "text": "ライトミサイルおよびロケットのダメージにボーナス" }, { "number": "95%", "text": "スキャンプローブランチャーと衛星調査プローブのCPU使用率を軽減" }, { "text": "·3種類の戦術駆逐艦モードを持ち、有効化したモードに応じて追加ボーナスを得る。少なくとも2秒経過しないとモードを切り替えることはできない。" }, { "text": "·防衛モード" }, { "number": "33.3%", "text": "防衛モード中、全てのシールドレジスタンスにボーナス" }, { "number": "33.3%", "text": "防衛モード中、艦船のシグネチャ半径が縮小" }, { "number": "33.3%", "text": "防衛モード中、シールドのリチャージ時間が短縮" }, { "text": "·推進モード" }, { "number": "66.6%", "text": "推進モード中、アフターバーナーとマイクロワープドライブの速度ブーストにボーナス" }, { "number": "66.6%", "text": "推進モード中、艦船の慣性乗数にボーナス" }, { "text": "·射撃モード" }, { "number": "66.6%", "text": "射撃モード中、ライトミサイルの速度にボーナス" }, { "number": "250%", "text": "射撃モード中、ロケットの速度にボーナス" }, { "number": "33.3%", "text": "射撃モード中、ライトミサイルおよびロケットのダメージにボーナス" }, { "number": "100%", "text": "射撃モード中、センサー強度とターゲット範囲にボーナス" }, { "number": "66.6%", "text": "射撃モード中、敵からのセンサーダンプナーと兵器妨害器へのレジスタンスが増加" } ], "header": "その他のボーナス:" }, "role": { "bonuses": [ { "number": "95%", "text": "コマンドバーストのパワーグリッド要件とCPU使用率を軽減" }, { "text": "·マイクロジャンプフィールドジェネレーターを装備可能" }, { "text": "·コマンドバーストモジュール1個使用可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "超小型ジャンプフィールドジェネレーターのスプールアップタイムを短縮" }, { "number": "2%", "text": "シールドコマンド、情報戦コマンドのバーストの効果と持続時間が増加" } ], "header": "指揮型駆逐艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "6%", "text": "ライトミサイルランチャーおよびロケットランチャーの発射レートにボーナス" }, { "number": "15%", "text": "ミサイルランチャーのリロード時間減少" }, { "number": "5%", "text": "モジュールが受けるヒートダメージ量が軽減" } ], "header": "カルダリ戦術駆逐艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "misc": { "bonuses": [ { "number": "33%", "text": "라이트 미사일 및 로켓 피해량 증가" }, { "number": "95%", "text": "스캔 프로브 런처 및 조사 프로브 런처 CPU 사용량 감소" }, { "text": "·세 가지 전술 디스트로이어 모드 중 한 가지가 활성화되면 추가 보너스가 부여됩니다. 2초에 한 번 모드를 전환할 수 있습니다." }, { "text": "·방어 모드" }, { "number": "33.3%", "text": "방어 모드 활성화 중 모든 실드 저항력 증가" }, { "number": "33.3%", "text": "방어 모드 활성화 중 함선 시그니처 반경 감소" }, { "number": "33.3%", "text": "방어 모드 활성화 중 실드 충전시간 감소" }, { "text": "·추진 모드" }, { "number": "66.6%", "text": "추진 모드 활성화 중 애프터버너 및 마이크로 워프 드라이브 속도 증가" }, { "number": "66.6%", "text": "추진 모드 활성화 중 관성 계수 감소" }, { "text": "·저격 모드" }, { "number": "66.6%", "text": "저격 모드 활성화 중 라이트 미사일 속도 증가" }, { "number": "250%", "text": "저격 모드 활성화 중 로켓 속도 증가" }, { "number": "33.3%", "text": "저격 모드 활성화 중 라이트 미사일 및 로켓 피해량 증가" }, { "number": "100%", "text": "저격 모드 활성화 중 센서 강도 및 타겟팅 거리 증가" }, { "number": "66.6%", "text": "저격 모드 활성화 중 센서 댐프너 및 무기 디스럽터 저항력 증가" } ], "header": "기타 보너스:" }, "role": { "bonuses": [ { "number": "95%", "text": "커맨드 버스트 파워그리드 및 CPU 요구치 감소" }, { "text": "·마이크로 점프 필드 생성기들을 장착할 수 있음" }, { "text": "·한 개의 커맨드 버스트 모듈만 사용 가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "마이크로 점프 필드 생성기 예열 시간 감소" }, { "number": "2%", "text": "실드 버스트 및 정보전 버스트 강도 및 지속시간 증가" } ], "header": "커맨드 디스트로이어 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "6%", "text": "라이트 미사일 런처 및 로켓 런처 연사속도 증가" }, { "number": "15%", "text": "미사일 런처 재장전 시간 감소" }, { "number": "5%", "text": "모듈이 받는 열 피해 감소" } ], "header": "칼다리 전술 디스트로이어 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 33%", "text": "бонус к урону лёгких ракет и ракетных снарядов" }, { "number": "на 95%", "text": "снижение требований к мощности ЦП для пусковых установок разведзондов и лунных зондов" }, { "text": "·Многорежимный эсминец получает дополнительные бонусы при работе в одном из трёх тактический режимов. Промежуток между сменой режимов должен составлять не менее 2 секунд." }, { "text": "·Защитный режим" }, { "number": "на 33.3%", "text": "бонус к общей сопротивляемости щитов в защитном режиме" }, { "number": "на 33.3%", "text": "сужение радиуса сигнатуры корабля в защитном режиме" }, { "number": "на 33.3%", "text": "сокращение времени перезарядки щитов в защитном режиме" }, { "text": "·Режим тяги" }, { "number": "на 66.6%", "text": "бонус к эффективности форсажного ускорителя и микроварп-ускорителя в режиме тяги" }, { "number": "на 66.6%", "text": "бонус к модификатору инертности корабля в режиме тяги" }, { "text": "·Режим снайпера" }, { "number": "на 66.6%", "text": "бонус к скорости полёта лёгких ракет в режиме снайпера" }, { "number": "на 250%", "text": "бонус к скорости ракетных снарядов в режиме снайпера" }, { "number": "на 33.3%", "text": "бонус к урону лёгких ракет и ракетных снарядов в режиме снайпера" }, { "number": "на 100%", "text": "бонус к мощности сенсоров и дальности наведения в режиме снайпера" }, { "number": "на 66.6%", "text": "повышение сопротивляемости вражеским модулям подавления сенсоров и модулям подавления орудий в режиме снайпера" } ], "header": "Прочие особенности проекта:" }, "role": { "bonuses": [ { "number": "на 95%", "text": "уменьшение требовательности энергосистем и ЦП для импульсных оптимизаторов" }, { "text": "·Позволяет установить генераторы разгонного поля" }, { "text": "·Может использовать один импульсный оптимизатор" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "сокращение времени раскрутки генератора разгонного поля" }, { "number": "на 2%", "text": "бонус к выраженности и длительности эффектов импульсных оптимизаторов щитов и РЭБ" } ], "header": "За каждую степень освоения навыка Лидеры:" }, { "bonuses": [ { "number": "на 6%", "text": "бонус к скорострельности пусковых установок лёгких ракет и ракетных снарядов" }, { "number": "на 15%", "text": "сокращение времени перезарядки ракетной установки" }, { "number": "на 5%", "text": "снижение теплового урона, получаемого модулями" } ], "header": "За каждую степень освоения навыка Калдарские многорежимные эсминцы:" } ] }, "traits_zh": { "misc": { "bonuses": [ { "number": "33%", "text": "轻型导弹和火箭伤害加成" }, { "number": "95%", "text": "扫描探针发射器和测量探针发射器CPU需求降低" }, { "text": "·当战术驱逐舰启用三种模式中任意一种会获得额外加成。每2秒钟只能切换一次模式。" }, { "text": "·防御模式" }, { "number": "33.3%", "text": "启用防御模式后护盾抗性加成" }, { "number": "33.3%", "text": "启用防御模式后信号半径降低" }, { "number": "33.3%", "text": "启用防御模式后护盾回充时间减少" }, { "text": "·高速模式" }, { "number": "66.6%", "text": "启用高速模式后加力燃烧器和微型跃迁推进器的速度增量加成" }, { "number": "66.6%", "text": "启用高速模式后舰船惯性调整系数加成" }, { "text": "·狙击模式" }, { "number": "66.6%", "text": "启用狙击模式后轻型导弹飞行速度加成" }, { "number": "250%", "text": "启用狙击模式后火箭飞行速度加成" }, { "number": "33.3%", "text": "启用狙击模式后轻型导弹和火箭伤害加成" }, { "number": "100%", "text": "启用狙击模式后感应强度和锁定距离加成" }, { "number": "66.6%", "text": "启用狙击模式后对敌方的感应抑阻器和武器扰断器的抗性提高" } ], "header": "其它加成:" }, "role": { "bonuses": [ { "number": "95%", "text": "指挥脉冲波能量栅格和CPU需求降低" }, { "text": "·可以装配微型跳跃力场发生器" }, { "text": "·可以装配一个指挥脉冲波装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "微型跳跃力场发生器加速时间减少" }, { "number": "2%", "text": "护盾指挥和信息战指挥脉冲波强度和持续时间加成" } ], "header": "指挥驱逐舰操作每升一级:" }, { "bonuses": [ { "number": "6%", "text": "轻型导弹发射器和火箭发射器射速加成" }, { "number": "15%", "text": "导弹发射器装填时间缩短" }, { "number": "5%", "text": "减少装备遭受的超载损伤" } ], "header": "加达里战术驱逐舰操作每升一级:" } ] }, "typeID": 89808 }, { "traits_de": { "role": { "bonuses": [ { "number": "275%", "text": "Bonus auf die HP und den Schaden von Wächterdrohnen und Schweren Drohnen" }, { "number": "100%", "text": "Bonus auf die HP der Schilderweiterung" }, { "number": "50%", "text": "Bonus auf die HP der Panzerplatte" }, { "number": "5%", "text": "zusätzlicher Bonus auf HP der Verstärkten Schottwand" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Caldari Battleship Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf den Kinetic- und Thermalschaden von Lenkwaffen" } ], "header": "Gallente Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "275%", "text": "bonus to Sentry Drone and Heavy Drone damage and hitpoints" }, { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to kinetic and thermal missile damage" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "275%", "text": "de bonificación al daño y los puntos de vida del dron centinela y el dron pesado." }, { "number": "100%", "text": "de bonificación a los puntos de vida del extensor de escudo." }, { "number": "50%", "text": "de bonificación a los puntos de vida de las placas de blindaje." }, { "number": "5%", "text": "de bonificación adicional a los puntos de vida del mamparo reforzado." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Acorazado caldari (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación al daño cinético y térmico de los misiles." } ], "header": "Bonificaciones de Acorazado gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "275%", "text": "de bonus aux dégats et aux PV des drones sentinelles et des drones lourds" }, { "number": "100%", "text": "de bonus aux points de vie de l'extenseur de bouclier" }, { "number": "50%", "text": "de bonus aux points de vie du revêtement de blindage" }, { "number": "5%", "text": "de bonus supplémentaire aux points de vie de la cloison renforcée" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": " Bonus (par niveau de compétence) Cuirassé caldari :" }, { "bonuses": [ { "number": "10%", "text": "de bonus aux dégâts cinétiques et thermiques des missiles" } ], "header": " Bonus (par niveau de compétence) Cuirassé gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "275%", "text": "bonus to Sentry Drone and Heavy Drone damage and hitpoints" }, { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to kinetic and thermal missile damage" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "275%", "text": "セントリードローンとヘビードローンのダメージとヒットポイントが増加" }, { "number": "100%", "text": "シールドエクステンダーHPが増加" }, { "number": "50%", "text": "アーマープレートHPが増加" }, { "number": "5%", "text": "強化隔壁HPがさらに増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "全てのシールドレジスタンスが増加" } ], "header": "カルダリ戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "ミサイルのキネティック・サーマルダメージが増加" } ], "header": "ガレンテ戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "275%", "text": "센트리 드론과 헤비 드론의 피해량 및 내구도 증가" }, { "number": "100%", "text": "실드 확장장치 실드량 증가" }, { "number": "50%", "text": "장갑 플레이트 내구도 증가" }, { "number": "5%", "text": "강화 격벽 내구도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "칼다리 배틀쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "미사일 키네틱 및 열 피해 증가" } ], "header": "갈란테 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 275%", "text": "увеличивается урон бортового оружия стационарных дронов и тяжёлых боевых дронов; увеличивается запас их прочности" }, { "number": "на 100%", "text": "бонус к прочности расширителя щитов" }, { "number": "на 50%", "text": "бонус к прочности бронеплиты" }, { "number": "на 5%", "text": "дополнительный бонус к прочности укреплённой переборки" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 4%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Калдарские линкоры:" }, { "bonuses": [ { "number": "на 10%", "text": "увеличивается урон кинетических и термических БЧ ракет" } ], "header": "За каждую степень освоения навыка Галлентские линкоры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "275%", "text": "岗哨无人机和重型无人机伤害和HP加成" }, { "number": "100%", "text": "护盾扩展装置护盾值加成" }, { "number": "50%", "text": "装甲附甲板装甲值加成" }, { "number": "5%", "text": "强化舱隔壁结构值加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "4%", "text": "护盾抗性加成" } ], "header": "加达里战列舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "动能和热能导弹伤害加成" } ], "header": "盖伦特战列舰操作每升一级:" } ] }, "typeID": 17918 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf den Schaden von großen Hybridgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Leistung von Panzerungsreparatursystemen" } ], "header": "Gallente Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Armor Repairer amount" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al daño de la torreta híbrida grande." }, { "number": "7.5%", "text": "de bonificación a la eficiencia de los reparadores de blindaje." } ], "header": "Bonificaciones de Acorazado gallente (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus aux dégâts de la grande tourelle hybride" }, { "number": "7.5%", "text": "bonus à la capacité du réparateur de blindage" } ], "header": " Bonus (par niveau de compétence) Cuirassé gallente :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Armor Repairer amount" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "10%", "text": "大型ハイブリッドタレットのダメージが増加" }, { "number": "7.5%", "text": "アーマーリペアラのリペア量が増加" } ], "header": "ガレンテ戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "10%", "text": "대형 하이브리드 터렛 피해량 증가" }, { "number": "7.5%", "text": "장갑수리 장치 수리량 증가" } ], "header": "갈란테 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается урон боеприпасов больших гибридных орудий" }, { "number": "на 7.5%", "text": "повышается производительность установок ремонта брони" } ], "header": "За каждую степень освоения навыка Галлентские линкоры:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "10%", "text": "大型混合炮台伤害加成" }, { "number": "7.5%", "text": "装甲维修器维修量加成" } ], "header": "盖伦特战列舰操作每升一级:" } ] }, "typeID": 33635 }, { "traits_de": { "role": { "bonuses": [ { "number": "115%", "text": "Bonus auf den Kinetikschaden von leichten Lenkwaffen und Raketen" }, { "number": "50%", "text": "Reduktion des Hitzeschadens an Modulen" }, { "text": "·Kann Angriffsschadensregulierer ausrüsten" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von Leichten Lenkwaffenwerfern und Raketenwerfern" } ], "header": "Assault Frigates Boni (je Skillstufe):" }, { "bonuses": [ { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Caldari Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "115%", "text": "bonus to kinetic Light Missile and Rocket damage" }, { "number": "50%", "text": "reduction in module heat damage amount taken" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket Launcher rate of fire" } ], "header": "Assault Frigates bonuses (per skill level):" }, { "bonuses": [ { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "115%", "text": "de bonificación al daño cinético de los misiles ligeros y los cohetes." }, { "number": "50%", "text": "de reducción de la cantidad de daño por calor del módulo." }, { "text": "·Es posible equipar controles de daños por asalto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles ligeros y los lanzacohetes." } ], "header": "Bonificaciones de Fragatas de asalto (por nivel de habilidad):" }, { "bonuses": [ { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Fragata caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "115%", "text": "de bonus aux dégâts cinétiques des missiles légers et des roquettes" }, { "number": "50%", "text": "de réduction aux dégâts de chaleur subis par un module" }, { "text": "·Peut être équipé des contrôles des dégâts d'assaut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles légers et des lance-roquettes" } ], "header": " Bonus (par niveau de compétence) Frégates d’assaut :" }, { "bonuses": [ { "number": "4%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": " Bonus (par niveau de compétence) Frégate caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "115%", "text": "bonus to kinetic Light Missile and Rocket damage" }, { "number": "50%", "text": "reduction in module heat damage amount taken" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket Launcher rate of fire" } ], "header": "Assault Frigates bonuses (per skill level):" }, { "bonuses": [ { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "115%", "text": "ライトミサイルとロケットのキネティックダメージが増加" }, { "number": "50%", "text": "モジュールが受けるヒートダメージ量が軽減" }, { "text": "·アサルトダメージ制御を装備可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "ライトミサイルとロケットランチャーの発射間隔が短縮" } ], "header": "強襲型フリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "4%", "text": "全てのシールドレジスタンスが増加" } ], "header": "カルダリフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "115%", "text": "키네틱 라이트 미사일과 로켓 피해량 증가" }, { "number": "50%", "text": "모듈이 받는 열 피해 감소" }, { "text": "·어썰트 데미지 컨트롤 장착가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "라이트 미사일 및 로켓 런처 연사속도 증가" } ], "header": "어썰트 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "칼다리 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 115%", "text": "увеличивается урон кинетических БЧ лёгких ракет и лёгких штурмовых ракет" }, { "number": "на 50%", "text": "уменьшается объём температурных повреждений модулей, получаемых ими при перегрузке" }, { "text": "·Позволяет установить ударные модули боевой живучести" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается скорострельность ПУ лёгких ракет и лёгких штурмовых ракет" } ], "header": "За каждую степень освоения навыка Ударные фрегаты:" }, { "bonuses": [ { "number": "на 4%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Калдарские фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "115%", "text": "轻型导弹和火箭动能伤害加成" }, { "number": "50%", "text": "减少装备遭受的超载损伤" }, { "text": "·可以装配突击损伤控制装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "火箭和轻型导弹发射器射速加成" } ], "header": "突击护卫舰操作每升一级:" }, { "bonuses": [ { "number": "4%", "text": "护盾抗性加成" } ], "header": "加达里护卫舰操作每升一级:" } ] }, "typeID": 32788 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von großen Projektilgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Leistung von Schildboostern" } ], "header": "Minmatar Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Battleship bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles grande." }, { "number": "7.5%", "text": "de bonificación a la eficiencia de los potenciadores de escudo." } ], "header": "Bonificaciones de Acorazado minmatariano (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus à la cadence de tir de la grande tourelle à projectiles" }, { "number": "7.5%", "text": "bonus à la capacité du booster de bouclier" } ], "header": " Bonus (par niveau de compétence) Cuirassé minmatar :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Battleship bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "5%", "text": "大型プロジェクタイルタレットの発射間隔が短縮" }, { "number": "7.5%", "text": "シールドブースターのブースト量が増加" } ], "header": "ミンマター戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "5%", "text": "대형 발사체 터렛 연사속도 증가" }, { "number": "7.5%", "text": "실드 부스터 회복량 증가" } ], "header": "민마타 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность больших баллистических орудий" }, { "number": "на 7.5%", "text": "повышается производительность установок накачки щитов" } ], "header": "За каждую степень освоения навыка Минматарские линкоры:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "5%", "text": "大型射弹炮台射速加成" }, { "number": "7.5%", "text": "护盾回充增量器回充量加成" } ], "header": "米玛塔尔战列舰操作每升一级:" } ] }, "typeID": 33631 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von großen Projektilgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Leistung von Schildboostern" } ], "header": "Minmatar Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Battleship bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles grande." }, { "number": "7.5%", "text": "de bonificación a la eficiencia de los potenciadores de escudo." } ], "header": "Bonificaciones de Acorazado minmatariano (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus à la cadence de tir de la grande tourelle à projectiles" }, { "number": "7.5%", "text": "bonus à la capacité du booster de bouclier" } ], "header": " Bonus (par niveau de compétence) Cuirassé minmatar :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Battleship bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "5%", "text": "大型プロジェクタイルタレットの発射間隔が短縮" }, { "number": "7.5%", "text": "シールドブースターのブースト量が増加" } ], "header": "ミンマター戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "5%", "text": "대형 발사체 터렛 연사속도 증가" }, { "number": "7.5%", "text": "실드 부스터 회복량 증가" } ], "header": "민마타 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность больших баллистических орудий" }, { "number": "на 7.5%", "text": "повышается производительность установок накачки щитов" } ], "header": "За каждую степень освоения навыка Минматарские линкоры:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "5%", "text": "大型射弹炮台射速加成" }, { "number": "7.5%", "text": "护盾回充增量器回充量加成" } ], "header": "米玛塔尔战列舰操作每升一级:" } ] }, "typeID": 33633 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "10%", "text": "Reduktion der Aktivierungskosten von mittelgroßen Energiegeschütztürmen" }, { "number": "5%", "text": "Bonus auf die Feuerrate von mittelgroßen Energiegeschütztürmen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Medium Energy Turret activation cost" }, { "number": "5%", "text": "bonus to Medium Energy Turret rate of fire" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de reducción del coste de activación de la torreta de energía mediana." }, { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de energía mediana." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "10%", "text": "réduction du coût d'activation de la tourelle à énergie intermédiaire" }, { "number": "5%", "text": "bonus à la cadence de tir de la tourelle à énergie intermédiaire" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Medium Energy Turret activation cost" }, { "number": "5%", "text": "bonus to Medium Energy Turret rate of fire" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "10%", "text": "中型エネルギータレットの起動コストが軽減" }, { "number": "5%", "text": "中型エネルギータレットの発射間隔が短縮" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "10%", "text": "중형 에너지 터렛 활성화 비용 감소" }, { "number": "5%", "text": "중형 에너지 터렛 연사속도 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 10%", "text": "сокращается расход энергии при ведении огня из средних лазерных орудий" }, { "number": "на 5%", "text": "повышается скорострельность средних лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "10%", "text": "中型能量炮台启动消耗减少" }, { "number": "5%", "text": "中型能量炮台射速加成" } ], "header": "艾玛巡洋舰操作每升一级:" } ] }, "typeID": 33639 }, { "traits_de": { "misc": { "bonuses": [ { "number": "58%", "text": "Bonus auf die Geschwindigkeit von Schiffen" }, { "number": "58%", "text": "Bonus auf die maximale Zielerfassungsreichweite" }, { "number": "29%", "text": "Bonus auf die Geschwindigkeit von Lenkwaffen" }, { "number": "58%", "text": "Bonus auf die Explosionsgeschwindigkeit von Lenkwaffen und Vorton-Projektoren" }, { "number": "29%", "text": "Abzug auf die Wendigkeit von Schiffen" }, { "number": "29%", "text": "Abzug auf die Stärke von Stasisnetzen" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "58%", "text": "bonus to ship velocity" }, { "number": "58%", "text": "bonus to maximum targeting range" }, { "number": "29%", "text": "bonus to missile velocity" }, { "number": "58%", "text": "bonus to missile and vorton projector explosion velocity" }, { "number": "29%", "text": "penalty to ship agility" }, { "number": "29%", "text": "penalty to stasis webifier strength" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "58%", "text": "de bonificación a la velocidad de la nave." }, { "number": "58%", "text": "de bonificación a la distancia-objetivo máxima." }, { "number": "29%", "text": "de bonificación a la velocidad de los misiles." }, { "number": "58%", "text": "de bonificación a la velocidad de explosión de los misiles y los proyectores vortónicos." }, { "number": "29%", "text": "de penalización a la agilidad de la nave." }, { "number": "29%", "text": "de penalización a la intensidad de la red ralentizadora." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "58%", "text": "de bonus à la vitesse du vaisseau" }, { "number": "58%", "text": "de bonus à la portée de ciblage maximum" }, { "number": "29%", "text": "de bonus à la vitesse des missiles" }, { "number": "58%", "text": "de bonus à la vitesse d'explosion des missiles et des projecteurs de vortons" }, { "number": "29%", "text": "de pénalité à la maniabilité du vaisseau" }, { "number": "29%", "text": "de pénalité à la puissance des générateurs de stase" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "58%", "text": "bonus to ship velocity" }, { "number": "58%", "text": "bonus to maximum targeting range" }, { "number": "29%", "text": "bonus to missile velocity" }, { "number": "58%", "text": "bonus to missile and vorton projector explosion velocity" }, { "number": "29%", "text": "penalty to ship agility" }, { "number": "29%", "text": "penalty to stasis webifier strength" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "58%", "text": "艦船の速度が上昇" }, { "number": "58%", "text": "最大ターゲット範囲が拡大" }, { "number": "29%", "text": "ミサイルの速度が上昇" }, { "number": "58%", "text": "ミサイルとヴォートンプロジェクターの爆発速度が上昇" }, { "number": "29%", "text": "艦船の機動性にペナルティ" }, { "number": "29%", "text": "ステイシスウェビファイヤーの強度にペナルティ" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "58%", "text": "함선 속도 보너스" }, { "number": "58%", "text": "최대 타겟팅 거리 보너스" }, { "number": "29%", "text": "미사일 속도 보너스" }, { "number": "58%", "text": "미사일 및 보르톤 프로젝터 폭발속도 증가" }, { "number": "29%", "text": "기동성 페널티" }, { "number": "29%", "text": "스테이시스 웹 생성기 강도 페널티" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 58%", "text": "бонус к скорости корабля" }, { "number": "на 58%", "text": "бонус к максимальной дальности наведения" }, { "number": "на 29%", "text": "бонус к скорости полёта ракет" }, { "number": "на 58%", "text": "бонус к скорости распространения взрыва для ракет и вортонных проекторов" }, { "number": "на 29%", "text": "штраф к манёвренности корабля" }, { "number": "на 29%", "text": "штраф к эффективности стазис-индуктора" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "58%", "text": "舰船速度加成" }, { "number": "58%", "text": "最大锁定距离加成" }, { "number": "29%", "text": "导弹飞行速度加成" }, { "number": "58%", "text": "导弹和电弧弦投射器爆炸速度加成" }, { "number": "29%", "text": "舰船灵活性惩罚" }, { "number": "29%", "text": "停滞缠绕光束强度惩罚" } ], "header": "其它加成:" } }, "typeID": 30851 }, { "traits_de": { "misc": { "bonuses": [ { "number": "10%", "text": "Reduktion der Kinetikresistenz von Schiffen" }, { "number": "20%", "text": "Bonus auf die Scanauflösung von Schiffen" }, { "number": "10%", "text": "Bonus auf die Zyklusgeschwindigkeit von Bergbaulasern" }, { "number": "10%", "text": "Bonus auf die Zyklusgeschwindigkeit von Panzerungsreparatursystemen und Schildboostern" }, { "number": "40%", "text": "Bonus auf Warpgeschwindigkeit von Schiffen" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "10%", "text": "reduction in ship kinetic resistances" }, { "number": "20%", "text": "bonus to ship scan resolution" }, { "number": "10%", "text": "bonus to mining laser cycle speed" }, { "number": "10%", "text": "bonus to local Armor Repairer and Shield Booster cycle speed" }, { "number": "40%", "text": "bonus to ship warp speed" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "10%", "text": "de reducción de las resistencias cinéticas de la nave." }, { "number": "20%", "text": "de bonificación a la resolución de escaneo de la nave." }, { "number": "10%", "text": "de bonificación a la velocidad de ciclo del láser minero." }, { "number": "10%", "text": "de bonificación a la velocidad de ciclo del reparador de blindaje y el potenciador de escudo locales." }, { "number": "40%", "text": "de bonificación a la velocidad de warp de la nave." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "10%", "text": "de réduction des résistances cinétiques du vaisseau" }, { "number": "20%", "text": "de bonus à la résolution du balayage du vaisseau" }, { "number": "10%", "text": "de bonus de vitesse de cycle des lasers d'extraction" }, { "number": "10%", "text": "de bonus au réparateur de blindage local et à la vitesse de cycle du booster de bouclier" }, { "number": "40%", "text": "de bonus à la vitesse de warp du vaisseau" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "10%", "text": "reduction in ship kinetic resistances" }, { "number": "20%", "text": "bonus to ship scan resolution" }, { "number": "10%", "text": "bonus to mining laser cycle speed" }, { "number": "10%", "text": "bonus to local Armor Repairer and Shield Booster cycle speed" }, { "number": "40%", "text": "bonus to ship warp speed" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "10%", "text": "艦船のキネティックレジスタンスが減少" }, { "number": "20%", "text": "艦船のスキャン分解能を強化" }, { "number": "10%", "text": "採掘レーザーのサイクル速度を短縮" }, { "number": "10%", "text": "ローカルアーマーリペアラとシールドブースターのサイクル速度が増加" }, { "number": "40%", "text": "艦船のワープ速度が増加" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "10%", "text": "키네틱 저항력 감소" }, { "number": "20%", "text": "함선 스캔 정밀도 증가" }, { "number": "10%", "text": "채굴 레이저 사이클 시간 감소" }, { "number": "10%", "text": "장갑수리 장치 및 실드 부스터 사이클 시간 감소" }, { "number": "40%", "text": "워프 속도 증가" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 10%", "text": "уменьшение сопротивляемости корабля кинетическому урону" }, { "number": "на 20%", "text": "бонус к разрешающей способности сенсоров корабля" }, { "number": "на 10%", "text": "бонус к скорости цикла бурового лазера" }, { "number": "на 10%", "text": "бонус к скорости цикла установки ремонта брони и модуля усиления щитов" }, { "number": "на 40%", "text": "бонус к скорости хода корабля в варп-режиме" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "10%", "text": "舰船动能抗性降低" }, { "number": "20%", "text": "舰船扫描分辨率加成" }, { "number": "10%", "text": "采矿激光器循环速度加成" }, { "number": "10%", "text": "自身装甲维修器和护盾回充增量器循环速度加成" }, { "number": "40%", "text": "舰船跃迁速度加成" } ], "header": "其它加成:" } }, "typeID": 56058 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Hybridgeschütztürmen" }, { "number": "10%", "text": "Bonus auf die HP und die Nachführungsgeschwindigkeit von Drohnen" } ], "header": "Gallente Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Small Hybrid Turret tracking speed" }, { "number": "10%", "text": "bonus to Drone hitpoints and tracking speed" } ], "header": "Gallente Frigate bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida pequeña." }, { "number": "10%", "text": "de bonificación a la velocidad de rastreo y los puntos de vida de los drones." } ], "header": "Bonificaciones de Fragata gallente (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonus à la vitesse de poursuite des petites tourelles hybrides" }, { "number": "10%", "text": "de bonus aux PV et à la vitesse de poursuite des drones" } ], "header": " Bonus (par niveau de compétence) Frégate gallente :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Small Hybrid Turret tracking speed" }, { "number": "10%", "text": "bonus to Drone hitpoints and tracking speed" } ], "header": "Gallente Frigate bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "小型ハイブリッドタレットの追跡速度が上昇" }, { "number": "10%", "text": "ドローンのヒットポイントと追跡速度が増加" } ], "header": "ガレンテフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "소형 하이브리드 터렛 트래킹 속도 증가" }, { "number": "10%", "text": "드론 내구도 및 트래킹 속도 증가" } ], "header": "갈란테 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 7.5%", "text": "повышается скорость наводки на цель малых гибридных орудий" }, { "number": "на 10%", "text": "повышается скорость наводки на цель бортового оружия дронов, увеличивается запас их прочности" } ], "header": "За каждую степень освоения навыка Галлентские фрегаты:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "7.5%", "text": "小型混合炮台跟踪速度加成" }, { "number": "10%", "text": "无人机HP和跟踪速度加成" } ], "header": "盖伦特护卫舰操作每升一级:" } ] }, "typeID": 593 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Bonus auf die optimale Reichweite von Panzerungsfernreparatursystemen" }, { "number": "600%", "text": "Bonus auf den Präzisionsabfall von Panzerungsfernreparatursystemen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die Leistung von Panzerungs-Fernreparatursystemen" }, { "number": "10%", "text": "Reduktion der Aktivierungskosten von Panzerungs-Fernreparatursystemen" } ], "header": "Gallente Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Remote Armor Repairer optimal range" }, { "number": "600%", "text": "bonus to Remote Armor Repairer falloff" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Remote Armor Repairer amount" }, { "number": "10%", "text": "reduction in Remote Armor Repairer activation cost" } ], "header": "Gallente Frigate bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de bonificación al alcance óptimo del reparador de blindaje remoto." }, { "number": "600%", "text": "de bonificación al alcance efectivo del reparador de blindaje remoto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación a la eficiencia de los reparadores de blindaje remotos." }, { "number": "10%", "text": "de reducción del coste de activación del reparador de blindaje remoto." } ], "header": "Bonificaciones de Fragata gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de bonus à la portée optimale du réparateur de blindage à distance" }, { "number": "600%", "text": "de bonus à la perte du réparateur de blindage à distance" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus au montant des réparateurs de blindage à distance" }, { "number": "10%", "text": "de réduction du coût d'activation des réparateurs de blindage à distance" } ], "header": " Bonus (par niveau de compétence) Frégate gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "bonus to Remote Armor Repairer optimal range" }, { "number": "600%", "text": "bonus to Remote Armor Repairer falloff" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Remote Armor Repairer amount" }, { "number": "10%", "text": "reduction in Remote Armor Repairer activation cost" } ], "header": "Gallente Frigate bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "リモートアーマーリペアラの最適射程距離が拡大" }, { "number": "600%", "text": "リモートアーマーリペアラの精度低下範囲が改善" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "リモートアーマーリペアラのリペア量が増加" }, { "number": "10%", "text": "リモートアーマーリペアラの起動コストが軽減" } ], "header": "ガレンテフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "원격 장갑수리 장치 최적사거리 증가" }, { "number": "600%", "text": "원격 장갑수리 장치 유효사거리 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "원격 장갑수리 장치 수리량 증가" }, { "number": "10%", "text": "원격 장갑수리 장치 활성화 비용 감소" } ], "header": "갈란테 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "увеличивается оптимальная дальность действия установок дистанционного ремонта брони" }, { "number": "на 600%", "text": "увеличивается добавочная дальность действия установок дистанционного ремонта брони" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "повышается производительность установок дистанционного ремонта брони" }, { "number": "на 10%", "text": "сокращается потребление энергии установками дистанционного ремонта брони" } ], "header": "За каждую степень освоения навыка Галлентские фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "远程装甲维修器最佳射程加成" }, { "number": "600%", "text": "远程装甲维修器失准范围加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "远程装甲维修器维修量加成" }, { "number": "10%", "text": "远程装甲维修器启动消耗减少" } ], "header": "盖伦特护卫舰操作每升一级:" } ] }, "typeID": 592 }, { "traits_de": { "misc": { "bonuses": [ { "number": "100%", "text": "Bonus auf die Geschwindigkeit von Schiffen" }, { "number": "100%", "text": "Bonus auf die maximale Zielerfassungsreichweite" }, { "number": "50%", "text": "Bonus auf die Geschwindigkeit von Lenkwaffen" }, { "number": "100%", "text": "Bonus auf die Explosionsgeschwindigkeit von Lenkwaffen und Vorton-Projektoren" }, { "number": "50%", "text": "Abzug auf die Wendigkeit von Schiffen" }, { "number": "50%", "text": "Abzug auf die Stärke von Stasisnetzen" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "100%", "text": "bonus to ship velocity" }, { "number": "100%", "text": "bonus to maximum targeting range" }, { "number": "50%", "text": "bonus to missile velocity" }, { "number": "100%", "text": "bonus to missile and vorton projector explosion velocity" }, { "number": "50%", "text": "penalty to ship agility" }, { "number": "50%", "text": "penalty to stasis webifier strength" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "100%", "text": "de bonificación a la velocidad de la nave." }, { "number": "100%", "text": "de bonificación a la distancia-objetivo máxima." }, { "number": "50%", "text": "de bonificación a la velocidad de los misiles." }, { "number": "100%", "text": "de bonificación a la velocidad de explosión de los misiles y los proyectores vortónicos." }, { "number": "50%", "text": "de penalización a la agilidad de la nave." }, { "number": "50%", "text": "de penalización a la intensidad de la red ralentizadora." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "100%", "text": "de bonus à la vitesse du vaisseau" }, { "number": "100%", "text": "de bonus à la portée de ciblage maximum" }, { "number": "50%", "text": "de bonus à la vitesse des missiles" }, { "number": "100%", "text": "de bonus à la vitesse d'explosion des missiles et des projecteurs de vortons" }, { "number": "50%", "text": "de pénalité à la maniabilité du vaisseau" }, { "number": "50%", "text": "de pénalité à la puissance des générateurs de stase" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "100%", "text": "bonus to ship velocity" }, { "number": "100%", "text": "bonus to maximum targeting range" }, { "number": "50%", "text": "bonus to missile velocity" }, { "number": "100%", "text": "bonus to missile and vorton projector explosion velocity" }, { "number": "50%", "text": "penalty to ship agility" }, { "number": "50%", "text": "penalty to stasis webifier strength" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "100%", "text": "艦船の速度が上昇" }, { "number": "100%", "text": "最大ターゲット範囲が拡大" }, { "number": "50%", "text": "ミサイルの速度が上昇" }, { "number": "100%", "text": "ミサイルとヴォートンプロジェクターの爆発速度が上昇" }, { "number": "50%", "text": "艦船の機動性にペナルティ" }, { "number": "50%", "text": "ステイシスウェビファイヤーの強度にペナルティ" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "100%", "text": "함선 속도 보너스" }, { "number": "100%", "text": "최대 타겟팅 거리 보너스" }, { "number": "50%", "text": "미사일 속도 보너스" }, { "number": "100%", "text": "미사일 및 보르톤 프로젝터 폭발속도 증가" }, { "number": "50%", "text": "기동성 페널티" }, { "number": "50%", "text": "스테이시스 웹 생성기 강도 페널티" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 100%", "text": "бонус к скорости корабля" }, { "number": "на 100%", "text": "бонус к максимальной дальности наведения" }, { "number": "на 50%", "text": "бонус к скорости полёта ракет" }, { "number": "на 100%", "text": "бонус к скорости распространения взрыва для ракет и вортонных проекторов" }, { "number": "на 50%", "text": "штраф к манёвренности корабля" }, { "number": "на 50%", "text": "штраф к эффективности стазис-индуктора" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "100%", "text": "舰船速度加成" }, { "number": "100%", "text": "最大锁定距离加成" }, { "number": "50%", "text": "导弹飞行速度加成" }, { "number": "100%", "text": "导弹和电弧弦投射器爆炸速度加成" }, { "number": "50%", "text": "舰船灵活性惩罚" }, { "number": "50%", "text": "停滞缠绕光束强度惩罚" } ], "header": "其它加成:" } }, "typeID": 30854 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "10%", "text": "Reduktion der Aktivierungskosten von kleinen Energiegeschütztürmen" }, { "number": "4%", "text": "Bonus auf alle Panzerungsresistenzen" } ], "header": "Amarr Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "4%", "text": "bonus to all armor resistances" } ], "header": "Amarr Frigate bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de reducción del coste de activación de la torreta de energía pequeña." }, { "number": "4%", "text": "de bonificación a todas las resistencias de blindaje." } ], "header": "Bonificaciones de Fragata amarriana (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "10%", "text": "de réduction du coût d'activation de la petite tourelle à énergie" }, { "number": "4%", "text": "de bonus à toutes les résistances du blindage" } ], "header": " Bonus (par niveau de compétence) Frégate amarr :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "10%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "4%", "text": "bonus to all armor resistances" } ], "header": "Amarr Frigate bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "10%", "text": "小型エネルギータレットの起動コストが軽減" }, { "number": "4%", "text": "全てのアーマーレジスタンスが増加" } ], "header": "アマーフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "10%", "text": "소형 에너지 터렛 활성화 비용 감소" }, { "number": "4%", "text": "모든 장갑 저항력 증가" } ], "header": "아마르 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 10%", "text": "сокращается расход энергии при ведении огня из малых лазерных орудий" }, { "number": "на 4%", "text": "повышается сопротивляемость брони корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Амаррские фрегаты:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "10%", "text": "小型能量炮台启动消耗减少" }, { "number": "4%", "text": "装甲抗性加成" } ], "header": "艾玛护卫舰操作每升一级:" } ] }, "typeID": 597 }, { "traits_de": { "role": { "bonuses": [ { "number": "20%", "text": "Reduktion der Aktivierungskosten von kleinen Energiegeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Schaden von kleinen Energiegeschütztürmen" }, { "number": "15%", "text": "Bonus auf die Effektivität von Waffenstörern" }, { "number": "8%", "text": "Bonus auf alle Panzerungsresistenzen" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "20%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "10%", "text": "bonus to Small Energy Turret damage" }, { "number": "15%", "text": "bonus to Weapon Disruptor effectiveness" }, { "number": "8%", "text": "bonus to all armor resistances" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "20%", "text": "de reducción del coste de activación de la torreta de energía pequeña." }, { "number": "10%", "text": "de bonificación al daño de la torreta de energía pequeña." }, { "number": "15%", "text": "de bonificación a la efectividad del disruptor de armas." }, { "number": "8%", "text": "de bonificación a todas las resistencias de blindaje." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "20%", "text": "de réduction du coût d'activation des petites tourelles à énergie" }, { "number": "10%", "text": "de bonus aux dégâts des petites tourelles à énergie" }, { "number": "15%", "text": "de bonus à l'efficacité du perturbateur d'armement" }, { "number": "8%", "text": "de bonus à toutes les résistances du blindage" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "20%", "text": "reduction in Small Energy Turret activation cost" }, { "number": "10%", "text": "bonus to Small Energy Turret damage" }, { "number": "15%", "text": "bonus to Weapon Disruptor effectiveness" }, { "number": "8%", "text": "bonus to all armor resistances" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "20%", "text": "小型エネルギータレットの起動コストが軽減" }, { "number": "10%", "text": "小型エネルギータレットのダメージが増加" }, { "number": "15%", "text": "兵器妨害器の有効性が向上" }, { "number": "8%", "text": "全てのアーマーレジスタンスが増加" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "20%", "text": "소형 에너지 터렛 활성화 비용 감소" }, { "number": "10%", "text": "소형 에너지 터렛 피해량 증가" }, { "number": "15%", "text": "무기 디스럽터 효과 증가" }, { "number": "8%", "text": "모든 장갑 저항력 증가" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 20%", "text": "сокращается расход энергии при ведении огня из малых лазерных орудий" }, { "number": "на 10%", "text": "увеличивается урон малых лазерных орудий" }, { "number": "на 15%", "text": "повышается эффективность действия постановщиков помех системам наводки" }, { "number": "на 8%", "text": "повышается сопротивляемость брони корабля всем видам воздействия" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "20%", "text": "小型能量炮台启动消耗减少" }, { "number": "10%", "text": "小型能量炮台伤害加成" }, { "number": "15%", "text": "武器扰断器效果加成" }, { "number": "8%", "text": "装甲抗性加成" } ], "header": "特有加成:" } }, "typeID": 596 }, { "traits_de": { "role": { "bonuses": [ { "number": "300%", "text": "Bonus auf den Präzisionsabfall von Schildfernboostern" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die Leistung von Schildfernboostern" }, { "number": "10%", "text": "Reduktion der Aktivierungskosten von Schildfernboostern" } ], "header": "Minmatar Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "300%", "text": "bonus to Remote Shield Booster falloff" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Remote Shield Booster amount" }, { "number": "10%", "text": "reduction in Remote Shield Booster activation cost" } ], "header": "Minmatar Frigate bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "300%", "text": "de bonificación al alcance efectivo del potenciador de escudo remoto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación a la eficiencia de los potenciadores de escudo remotos." }, { "number": "10%", "text": "de reducción del coste de activación del potenciador de escudo remoto." } ], "header": "Bonificaciones de Fragata minmatariana (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "300%", "text": "de bonus à la perte du booster de bouclier à distance" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus au montant des boosters de bouclier à distance" }, { "number": "10%", "text": "de réduction du coût d'activation des boosters de bouclier à distance" } ], "header": " Bonus (par niveau de compétence) Frégate minmatar :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "300%", "text": "bonus to Remote Shield Booster falloff" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Remote Shield Booster amount" }, { "number": "10%", "text": "reduction in Remote Shield Booster activation cost" } ], "header": "Minmatar Frigate bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "300%", "text": "リモートシールドブースターの精度低下範囲が改善" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "リモートシールドブースターのブースト量が増加" }, { "number": "10%", "text": "リモートシールドブースターの起動コストが軽減" } ], "header": "ミンマターフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "300%", "text": "원격 실드 부스터 유효사거리 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "원격 실드 부스터 회복량 증가" }, { "number": "10%", "text": "원격 실드 부스터 활성화 비용 감소" } ], "header": "민마타 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 300%", "text": "увеличивается добавочная дальность действия установок дистанционной накачки щитов" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "повышается производительность установок дистанционной накачки щитов" }, { "number": "на 10%", "text": "сокращается потребление энергии установками дистанционной накачки щитов" } ], "header": "За каждую степень освоения навыка Минматарские фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "300%", "text": "远程护盾回充增量器失准范围加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "远程护盾回充增量器回充量加成" }, { "number": "10%", "text": "远程护盾回充增量器启动消耗减少" } ], "header": "米玛塔尔护卫舰操作每升一级:" } ] }, "typeID": 599 }, { "traits_de": { "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von leichten Lenkwaffenwerfern und Raketenwerfern" }, { "number": "7.5%", "text": "Bonus auf die Leistung von Schildboostern" } ], "header": "Minmatar Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Frigate bonuses (per skill level):" } ] }, "traits_es": { "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de los misiles ligeros y los cohetes." }, { "number": "7.5%", "text": "de bonificación a la eficiencia de los potenciadores de escudo." } ], "header": "Bonificaciones de Fragata minmatariana (por nivel de habilidad):" } ] }, "traits_fr": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus à la cadence de tir des missiles légers et des roquettes" }, { "number": "7.5%", "text": "de bonus au montant des boosters de bouclier" } ], "header": " Bonus (par niveau de compétence) Frégate minmatar :" } ] }, "traits_it": { "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket rate of fire" }, { "number": "7.5%", "text": "bonus to Shield Booster amount" } ], "header": "Minmatar Frigate bonuses (per skill level):" } ] }, "traits_ja": { "skills": [ { "bonuses": [ { "number": "5%", "text": "ライトミサイルとロケットの発射間隔が短縮" }, { "number": "7.5%", "text": "シールドブースターのブースト量が増加" } ], "header": "ミンマターフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "skills": [ { "bonuses": [ { "number": "5%", "text": "라이트 미사일 및 로켓 연사속도 증가" }, { "number": "7.5%", "text": "실드 부스터 회복량 증가" } ], "header": "민마타 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается скорострельность ПУ лёгких ракет и лёгких штурмовых ракет" }, { "number": "на 7.5%", "text": "повышается производительность установок накачки щитов" } ], "header": "За каждую степень освоения навыка Минматарские фрегаты:" } ] }, "traits_zh": { "skills": [ { "bonuses": [ { "number": "5%", "text": "火箭和轻型导弹射速加成" }, { "number": "7.5%", "text": "护盾回充增量器回充量加成" } ], "header": "米玛塔尔护卫舰操作每升一级:" } ] }, "typeID": 598 }, { "traits_de": { "misc": { "bonuses": [ { "number": "25%", "text": "Reduktion der EM-Resistenz von Schiffen" }, { "number": "25%", "text": "Bonus auf die Wiederaufladerate des Energiespeichers von Schiffen" }, { "number": "25+", "text": "Bonus auf die Virenkohärenz von Relikt- und Datenanalysegeräten" }, { "number": "50%", "text": "Bonus auf die Stärke von Kern- und Gefechtsscansonden" }, { "text": "·Tarnvorrichtungen funktionieren in Systemen unter dem Einfluss dieses Sturmes nicht." } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "25%", "text": "reduction in ship EM resistances" }, { "number": "25%", "text": "bonus to ship capacitor recharge rate" }, { "number": "25+", "text": "bonus to Relic and Data Analyzer virus coherence" }, { "number": "50%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "text": "·Cloaking devices cannot operate within systems affected by this storm" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "25%", "text": "de reducción de las resistencias electromagnéticas de la nave." }, { "number": "25%", "text": "de bonificación a la velocidad de carga del condensador de la nave." }, { "number": "25+", "text": "de bonificación a la coherencia del virus de los analizadores de datos y de reliquias." }, { "number": "50%", "text": "de bonificación a la intensidad de la sonda escáner de combate y la de núcleo." }, { "text": "·Los dispositivos de camuflaje quedan inoperativos en los sistemas afectados por esta tormenta." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "25%", "text": "de réduction des résistances EM du vaisseau" }, { "number": "25%", "text": "de bonus à la vitesse de recharge du capaciteur du vaisseau" }, { "number": "25+", "text": "de bonus à la résistance virale des analyseurs de reliques et des analyseurs de données" }, { "number": "50%", "text": "de bonus à la puissance des sondes de balayage cosmiques et des sondes de balayage de combat" }, { "text": "·Les dispositifs de camouflage sont inutilisables dans les systèmes affectés par cette tempête" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "25%", "text": "reduction in ship EM resistances" }, { "number": "25%", "text": "bonus to ship capacitor recharge rate" }, { "number": "25+", "text": "bonus to Relic and Data Analyzer virus coherence" }, { "number": "50%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "text": "·Cloaking devices cannot operate within systems affected by this storm" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "25%", "text": "艦船EMレジスタンスが減少" }, { "number": "25%", "text": "艦船のキャパシタ充電速度が増加" }, { "number": "25+", "text": "遺物とデータアナライザーのウイルスコヒーレンスが上昇" }, { "number": "50%", "text": "コア及び戦闘スキャナープローブの強度が上昇" }, { "text": "·遮蔽装置は、この嵐の影響を受けているシステムの中では機能しない" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "25%", "text": "EM 저항력 감소" }, { "number": "25%", "text": "캐패시터 충전 속도 증가" }, { "number": "25+", "text": "유물 분석기 및 데이터 분석기 바이러스 결합도 증가" }, { "number": "50%", "text": "코어 프로브 및 정찰 프로브 강도 증가" }, { "text": "·폭풍의 영향을 받은 항성계에서 클로킹 장치를 사용할 수 없습니다." } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 25%", "text": "уменьшение сопротивляемости корабля ЭМ-урону" }, { "number": "на 25%", "text": "бонус к скорости перезарядки накопителя" }, { "number": "на 25+", "text": "бонус к целостности вируса артефактов и анализатора данных" }, { "number": "на 50%", "text": "бонус к чувствительности зондов навигационной и боевой разведки" }, { "text": "·Системы маскировки не могут работать в системах, подвергшихся воздействию этой бури" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "25%", "text": "舰船电磁抗性降低" }, { "number": "25%", "text": "舰船电容回充速率加成" }, { "number": "25+", "text": "遗迹分析仪和数据分析仪病毒同步率加成" }, { "number": "50%", "text": "核心和作战扫描探针强度加成" }, { "text": "·在受此风暴影响的星系中不能启用隐形装置" } ], "header": "其它加成:" } }, "typeID": 56057 }, { "traits_de": { "role": { "bonuses": [ { "number": "90%", "text": "Reduzierte effektiv zurückgelegte Distanz für die Sprungerschöpfung" }, { "text": "·Immun gegen Unterbrechungsfeldwerfer, Warpstörfeldgeneratoren und mobile kleine , mittelgroße und große Warpstörer" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" }, { "text": "·Immune to Interdiction Sphere Launcher, Warp Disruption Field Generator and Mobile Small, Medium and Large Warp Disruptor" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "90%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." }, { "text": "·Inmune al lanzaesferas de interdicción, al generador de campo disruptor de warp y al disruptor de warp móvil pequeño, mediano y grande." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "90%", "text": "de réduction de la distance effective comptabilisée pour l'épuisement de saut" }, { "text": "·Immunité contre les lanceurs de sphère d'interdiction, générateurs de champ perturbateur de warp et perturbateurs de warp mobiles légers, intermédiaires et grands perturbateurs de warp" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" }, { "text": "·Immune to Interdiction Sphere Launcher, Warp Disruption Field Generator and Mobile Small, Medium and Large Warp Disruptor" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "90%", "text": "ジャンプ疲労までの移動有効距離が減少" }, { "text": "·インターディクションスフィアランチャー、ワープ妨害フィールドジェネレーター、小型、中型、大型移動式ワープ妨害器の影響を受けない" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "90%", "text": "이동 거리에 따른 점프 피로도 감소" }, { "text": "·인터딕션 런처, 워프 디스럽션 필드 생성기, 이동식 소형/중형/대형 워프 디스럽터에 면역" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 90%", "text": "медленнее накапливается усталость от гиперпереходов" }, { "text": "·Невосприимчивость к воздействию систем запуска заградительных сфер, бортовых варп-заградителей, а также полевых варп-заградителей малой, средней и большой мощности" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "90%", "text": "减少跳跃疲劳对有效距离的影响" }, { "text": "·对拦截泡发射器、跃迁扰断力场发生器与小型、中型及大型机动跃迁扰断器免疫" } ], "header": "特有加成:" } }, "typeID": 11134 }, { "traits_de": { "role": { "bonuses": [ { "number": "200%", "text": "Bonus auf die Geschwindigkeit von Lenkwaffen" }, { "number": "50%", "text": "Nachteil auf die Flugdauer von Lenkwaffen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die maximale Reichweite von Warpunterbrechern und Warpstörern" } ], "header": "Gallente Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "15%", "text": "Bonus auf den Schaden von Lenkwaffen" } ], "header": "Caldari Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "200%", "text": "bonus to missile velocity" }, { "number": "50%", "text": "penalty to missile flight time" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor maximum range" } ], "header": "Gallente Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "bonus to missile damage" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "200%", "text": "de bonificación a la velocidad de los misiles." }, { "number": "50%", "text": "de penalización al tiempo de vuelo de los misiles." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance máximo del distorsionador de warp y el disruptor de warp." } ], "header": "Bonificaciones de Crucero gallente (por nivel de habilidad):" }, { "bonuses": [ { "number": "15%", "text": "de bonificación al daño de los misiles." } ], "header": "Bonificaciones de Crucero caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "200%", "text": "bonus à la vitesse des missiles" }, { "number": "50%", "text": "pénalité au temps de vol des missiles" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée des Inhibiteurs de warp et Perturbateurs de warp" } ], "header": " Bonus (par niveau de compétence) Croiseur gallente :" }, { "bonuses": [ { "number": "15%", "text": "bonus aux dégâts des missiles" } ], "header": " Bonus (par niveau de compétence) Croiseur caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "200%", "text": "bonus to missile velocity" }, { "number": "50%", "text": "penalty to missile flight time" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor maximum range" } ], "header": "Gallente Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "15%", "text": "bonus to missile damage" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "200%", "text": "ミサイルの速度が上昇" }, { "number": "50%", "text": "ミサイルの飛行時間にペナルティ" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "ワープスクランブラーとワープ妨害器の最大射程が上昇" } ], "header": "ガレンテ巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "15%", "text": "ミサイルの与えるダメージが増加" } ], "header": "カルダリ巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "200%", "text": "미사일 속도 증가" }, { "number": "50%", "text": "미사일 비행시간 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "워프 스크램블러 및 워프 디스럽터 최대사거리 증가" } ], "header": "갈란테 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "15%", "text": "미사일 피해량 증가" } ], "header": "칼다리 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 200%", "text": "повышается скорость полёта ракет" }, { "number": "на 50%", "text": "сокращается полётное время ракет" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "бонус к дальности действия варп-глушителей и варп-подавителей." } ], "header": "За каждую степень освоения навыка Галлентские крейсеры:" }, { "bonuses": [ { "number": "на 15%", "text": "увеличивается урон БЧ ракет" } ], "header": "За каждую степень освоения навыка Калдарские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "200%", "text": "导弹飞行速度加成" }, { "number": "50%", "text": "导弹飞行时间惩罚" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "跃迁扰频器和跃迁扰断器最大范围加成" } ], "header": "盖伦特巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "15%", "text": "导弹伤害加成" } ], "header": "加达里巡洋舰操作每升一级:" } ] }, "typeID": 33818 }, { "traits_de": { "role": { "bonuses": [ { "number": "90%", "text": "Reduzierte effektiv zurückgelegte Distanz für die Sprungerschöpfung" }, { "text": "·Immun gegen Unterbrechungsfeldwerfer, Warpstörfeldgeneratoren und mobile kleine , mittelgroße und große Warpstörer" } ], "header": "Funktionsbonus:" } }, "traits_en-us": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" }, { "text": "·Immune to Interdiction Sphere Launcher, Warp Disruption Field Generator and Mobile Small, Medium and Large Warp Disruptor" } ], "header": "Role Bonus:" } }, "traits_es": { "role": { "bonuses": [ { "number": "90%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." }, { "text": "·Inmune al lanzaesferas de interdicción, al generador de campo disruptor de warp y al disruptor de warp móvil pequeño, mediano y grande." } ], "header": "Bonificación por función:" } }, "traits_fr": { "role": { "bonuses": [ { "number": "90%", "text": "de réduction de la distance effective comptabilisée pour l'épuisement de saut" }, { "text": "·Immunité contre les lanceurs de sphère d'interdiction, générateurs de champ perturbateur de warp et perturbateurs de warp mobiles légers, intermédiaires et grands perturbateurs de warp" } ], "header": "Bonus de rôle :" } }, "traits_it": { "role": { "bonuses": [ { "number": "90%", "text": "reduction to effective distance traveled for jump fatigue" }, { "text": "·Immune to Interdiction Sphere Launcher, Warp Disruption Field Generator and Mobile Small, Medium and Large Warp Disruptor" } ], "header": "Role Bonus:" } }, "traits_ja": { "role": { "bonuses": [ { "number": "90%", "text": "ジャンプ疲労までの移動有効距離が減少" }, { "text": "·インターディクションスフィアランチャー、ワープ妨害フィールドジェネレーター、小型、中型、大型移動式ワープ妨害器の影響を受けない" } ], "header": "性能ボーナス:" } }, "traits_ko": { "role": { "bonuses": [ { "number": "90%", "text": "이동 거리에 따른 점프 피로도 감소" }, { "text": "·인터딕션 런처, 워프 디스럽션 필드 생성기, 이동식 소형/중형/대형 워프 디스럽터에 면역" } ], "header": "역할 보너스:" } }, "traits_ru": { "role": { "bonuses": [ { "number": "на 90%", "text": "медленнее накапливается усталость от гиперпереходов" }, { "text": "·Невосприимчивость к воздействию систем запуска заградительных сфер, бортовых варп-заградителей, а также полевых варп-заградителей малой, средней и большой мощности" } ], "header": "Профильные особенности проекта:" } }, "traits_zh": { "role": { "bonuses": [ { "number": "90%", "text": "减少跳跃疲劳对有效距离的影响" }, { "text": "·对拦截泡发射器、跃迁扰断力场发生器与小型、中型及大型机动跃迁扰断器免疫" } ], "header": "特有加成:" } }, "typeID": 11132 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Reduktion des CPU-Bedarfs von Tarnmodulen" }, { "number": "10+", "text": "Bonus auf die Virusstärke von Relikt- und Daten-Analysegeräten" }, { "text": "·Es können Covert Ops-Tarnmodule und getarnte Anziehungsfeldgeneratoren eingebaut werden" }, { "text": "·Die Verzögerung bei Reaktivierung von Tarnmodulen wird auf 5 Sekunden reduziert." }, { "number": "10%", "text": "Bonus auf die Erhöhung des Sicherheitsstatus durch die Zerstörung von Nicht-Kapselpiloten-Piraten bei der Verwendung dieses Schiffs" }, { "text": "·Die Effektivität von Panzerungsreparatursystemen und Schildboostern wurde um einen Prozentsatz entsprechend des 10-fachen Piloten-Sicherheitsstatus bei einer Mindestwert von 0 % und einem Höchstwert von 50 % erhöht." }, { "number": "60%", "text": "Bonus auf die Warpgeschwindigkeit und Warpbeschleunigung" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von kleinen Hybridgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von kleinen Hybridgeschütztürmen" } ], "header": "Gallente Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von kleinen Projektilgeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Präzisionsabfall von kleinen Projektilgeschütztürmen" } ], "header": "Minmatar Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von kleinen Energiegeschütztürmen" }, { "number": "10%", "text": "Bonus auf die optimale Reichweite von kleinen Energiegeschütztürmen" } ], "header": "Amarr Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von Leichten Lenkwaffenwerfern und Raketenwerfern" }, { "number": "10%", "text": "Bonus auf die Flugzeit von leichten Lenkwaffen und Raketen" } ], "header": "Caldari Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf die Stärke von Basis- und Gefechtsscansonden" }, { "number": "10%", "text": "Reduktion der Flugdauer von Überwachungssonden" }, { "number": "10%", "text": "Bonus auf die Warpgeschwindigkeit und Beschleunigung" } ], "header": "Covert Ops Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Small Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Small Hybrid Turret tracking speed" } ], "header": "Gallente Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Small Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Small Projectile Turret falloff" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Small Energy Turret damage" }, { "number": "10%", "text": "bonus to Small Energy Turret optimal range" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket Launcher rate of fire" }, { "number": "10%", "text": "bonus to Light Missile and Rocket flight time" } ], "header": "Caldari Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in Survey Probe flight time" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de reducción del requisito de CPU de los dispositivos de camuflaje." }, { "number": "10+", "text": "de bonificación a la intensidad del virus de los analizadores de datos y de reliquias." }, { "text": "·Es posible equipar un dispositivo de camuflaje de operaciones encubiertas y un generador de campo cinosural encubierto." }, { "text": "·Reducción de la demora de reactivación del camuflaje a 5 segundos." }, { "number": "10%", "text": "de bonificación a la ganancia del estado de seguridad al aniquilar piratas no capsulistas mientras se pilota esta nave." }, { "text": "·La efectividad del reparador de blindaje y del potenciador de escudo aumenta en un porcentaje igual a 10 veces el estado de seguridad del piloto, con un mínimo del 0 % y un máximo del 50 %." }, { "number": "60%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta híbrida pequeña." }, { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida pequeña." } ], "header": "Bonificaciones de Fragata gallente (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles pequeña." }, { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta de proyectiles pequeña." } ], "header": "Bonificaciones de Fragata minmatariana (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta de energía pequeña." }, { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta de energía pequeña." } ], "header": "Bonificaciones de Fragata amarriana (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles ligeros y los lanzacohetes." }, { "number": "10%", "text": "de bonificación al tiempo de vuelo de los misiles ligeros y los cohetes." } ], "header": "Bonificaciones de Fragata caldari (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación a la intensidad de la sonda escáner de combate y la de núcleo." }, { "number": "10%", "text": "de reducción del tiempo de vuelo de la sonda de prospección." }, { "number": "10%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificaciones de Operaciones encubiertas (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de réduction de la charge CPU consommée par le dispositif de camouflage" }, { "number": "10+", "text": "de bonus à la puissance du virus des analyseurs de reliques et des analyseurs de données" }, { "text": "·Peut être équipé d'un dispositif de camouflage des opérations secrètes et d'un générateur de champ cynosural furtif" }, { "text": "·Délai de réactivation du camouflage réduit à 5 secondes" }, { "number": "10%", "text": "de bonus aux gains de statut de sécurité liés à la destruction de pirates non capsuliers à bord de ce vaisseau" }, { "text": "·Efficacité des réparateurs de blindage et des boosters de boucliers majorée par un pourcentage égal à 10x le statut de sécurité du pilote, de 0 % à 50 % maximum." }, { "number": "60%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des petites tourelles hybrides" }, { "number": "7.5%", "text": "de bonus à la vitesse de poursuite des petites tourelles hybrides" } ], "header": " Bonus (par niveau de compétence) Frégate gallente :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des petites tourelles à projectiles" }, { "number": "10%", "text": "de bonus de déperdition des petites tourelles à projectiles" } ], "header": " Bonus (par niveau de compétence) Frégate minmatar :" }, { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des petites tourelles à énergie" }, { "number": "10%", "text": "de bonus à la portée optimale des petites tourelles à énergie" } ], "header": " Bonus (par niveau de compétence) Frégate amarr :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles légers et des lance-roquettes" }, { "number": "10%", "text": "de bonus au temps de vol des missiles légers et des roquettes" } ], "header": " Bonus (par niveau de compétence) Frégate caldari :" }, { "bonuses": [ { "number": "10%", "text": "de bonus à la puissance des sondes de balayage cosmiques et des sondes de balayage de combat" }, { "number": "10%", "text": "de réduction au temps de vol des sondes d'exploration" }, { "number": "10%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": " Bonus (par niveau de compétence) Opérations secrètes :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Cloaking Devices CPU requirement" }, { "number": "10+", "text": "bonus to Relic and Data Analyzer virus strength" }, { "text": "·Can fit Covert Ops Cloaking Device and Covert Cynosural Field Generator" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" }, { "number": "60%", "text": "bonus to warp speed and warp acceleration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Small Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Small Hybrid Turret tracking speed" } ], "header": "Gallente Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Small Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Small Projectile Turret falloff" } ], "header": "Minmatar Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Small Energy Turret damage" }, { "number": "10%", "text": "bonus to Small Energy Turret optimal range" } ], "header": "Amarr Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile and Rocket Launcher rate of fire" }, { "number": "10%", "text": "bonus to Light Missile and Rocket flight time" } ], "header": "Caldari Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Core and Combat Scanner Probe strength" }, { "number": "10%", "text": "reduction in Survey Probe flight time" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Covert Ops bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "遮蔽装置の必要CPUが減少" }, { "number": "10+", "text": "遺物とデータアナライザーのウイルス強度が上昇" }, { "text": "·光学迷彩型遮蔽装置と潜伏用サイノシュラルフィールドジェネレーターを装備可能" }, { "text": "·クロークの再起動遅延を5秒に短縮" }, { "number": "10%", "text": "この艦船を使用して非カプセラ海賊を撃破した際のセキュリティーステータスの上昇量が増加" }, { "text": "·アーマーリペアラ及びシールドブースターの効果を、パイロットのセキュリティステータスの10倍に当たるパーセンテージまで上げる。下限は0%で上限は50%。" }, { "number": "60%", "text": "ワープ速度とワープ加速度が上昇" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "小型ハイブリッドタレットのダメージにボーナス" }, { "number": "7.5%", "text": "小型ハイブリッドタレットの追跡速度にボーナス" } ], "header": "ガレンテフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "小型実体弾タレットの発射速度が上昇" }, { "number": "10%", "text": "小型実体弾タレットの精度低下範囲にボーナス" } ], "header": "ミンマターフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "小型エネルギータレットのダメージにボーナス" }, { "number": "10%", "text": "小型エネルギータレットの最適射程距離にボーナス" } ], "header": "アマーフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ライトミサイルおよびロケットランチャーの発射速度が上昇" }, { "number": "10%", "text": "ライトミサイルおよびロケットの飛行時間が上昇" } ], "header": "カルダリフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "コア及び戦闘スキャナープローブの強度が上昇" }, { "number": "10%", "text": "衛星調査プローブの飛行時間が減少" }, { "number": "10%", "text": "ワープ速度と加速度が上昇" } ], "header": "隠密行動艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "클로킹 장치 CPU 사용량 감소" }, { "number": "10+", "text": "유물 및 데이터 분석기 바이러스 침투력 증가" }, { "text": "·코버트 옵스 클로킹 장치 및 코버트 사이노슈럴 필드 생성기장착 가능" }, { "text": "·클로킹 재가동 지연 시간 5초로 감소" }, { "number": "10%", "text": "NPC 해적선 파괴 시 시큐리티 획득량 증가" }, { "text": "·파일럿 시큐리티 수치의 10배만큼의 %로 장갑수리 장치 및 실드 부스터 효과 증가 (0%~50%)" }, { "number": "60%", "text": "워프 속도 및 워프 가속도 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "소형 하이브리드 터렛 피해량 증가" }, { "number": "7.5%", "text": "소형 하이브리드 터렛 트래킹 속도 증가" } ], "header": "갈란테 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "소형 발사체 터렛 연사속도 증가" }, { "number": "10%", "text": "소형 발사체 터렛 유효사거리 증가" } ], "header": "민마타 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "소형 에너지 터렛 피해량 증가" }, { "number": "10%", "text": "소형 에너지 터렛 최적사거리 증가" } ], "header": "아마르 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "라이트 미사일 및 로켓 런처 연사속도 증가" }, { "number": "10%", "text": "라이트 미사일 및 로켓 비행시간 증가" } ], "header": "칼다리 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "코어 프로브 및 정찰 프로브 스캔 강도 증가" }, { "number": "10%", "text": "조사 프로브 비행시간 증가" }, { "number": "10%", "text": "워프 속도 및 가속도 증가" } ], "header": "코버트 옵스 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "сокращается потребность систем маскировки в мощностях ЦПУ" }, { "number": "на 10+", "text": "повышается степень опасности вирусов, применяемых в комплексах анализа данных и комплексах анализа артефактов" }, { "text": "·Корабли этого типа могут оснащаться всережимными системами маскировки и приводными маяками скрытого действия" }, { "text": "·Задержка повторного включения систем маскировки сокращена до 5 секунд" }, { "number": "на 10%", "text": "увеличивается прирост СС пилота при уничтожении пиратских кораблей под управлением NPC (в ходе пилотирования этого корабля)" }, { "text": "·Производительность установок ремонта брони и установок накачки щитов повышена; процентное значение повышения исчисляется умножением СС пилота на 10 и не может быть меньше 0% и больше 50%" }, { "number": "на 60%", "text": "бонус к разгону и скорости хода (в варп-режиме)" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон боеприпасов малых гибридных орудий" }, { "number": "на 7.5%", "text": "повышается скорость наводки на цель малых гибридных орудий" } ], "header": "За каждую степень освоения навыка Галлентские фрегаты:" }, { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность малых баллистических орудий" }, { "number": "на 10%", "text": "увеличивается добавочная дальность ведения огня из малых баллистических орудий" } ], "header": "За каждую степень освоения навыка Минматарские фрегаты:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон малых лазерных орудий" }, { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из малых лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские фрегаты:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается скорострельность ПУ лёгких ракет и лёгких штурмовых ракет" }, { "number": "на 10%", "text": "увеличивается полётное время лёгких ракет и лёгких штурмовых ракет" } ], "header": "За каждую степень освоения навыка Калдарские фрегаты:" }, { "bonuses": [ { "number": "на 10%", "text": "повышается чувствительность бортовой аппаратуры зондов навигационной разведки и боевых разведзондов" }, { "number": "на 10%", "text": "сокращается полётное время зондов луноразведки" }, { "number": "на 10%", "text": "повышается скорость полёта и ускорение корабля (только в варп-режиме)" } ], "header": "За каждую степень освоения навыка Диверсионные фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "隐形装置CPU需求降低" }, { "number": "10+", "text": "遗迹分析仪和数据分析仪病毒强度加成" }, { "text": "·可以装备隐秘行动隐形装置和隐秘诱导力场发生器" }, { "text": "·隐形装置重启延时降到5秒" }, { "number": "10%", "text": "驾驶该船只击毁NPC获得安全等级加成" }, { "text": "·装甲维修器和护盾回充增量器效果增强幅度相当于飞行员安全等级的10倍,下限为0%,上限为50%。" }, { "number": "60%", "text": "跃迁速度和跃迁加速加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "小型混合炮台伤害加成" }, { "number": "7.5%", "text": "小型混合炮台跟踪速度加成" } ], "header": "盖伦特护卫舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "小型射弹炮台射速加成" }, { "number": "10%", "text": "小型射弹炮台失准范围加成" } ], "header": "米玛塔尔护卫舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "小型能量炮台伤害加成" }, { "number": "10%", "text": "小型能量炮台最佳射程加成" } ], "header": "艾玛护卫舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "火箭和轻型导弹发射器射速加成" }, { "number": "10%", "text": "轻型导弹和火箭飞行时间加成" } ], "header": "加达里护卫舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "核心和作战扫描探针强度加成" }, { "number": "10%", "text": "测量探针飞行时间加成" }, { "number": "10%", "text": "跃迁速度和跃迁加速加成" } ], "header": "隐形特勤舰操作每升一级:" } ] }, "typeID": 44993 }, { "traits_de": { "misc": { "bonuses": [ { "number": "30%", "text": "Bonus auf die Effektivität von Panzerungs-Fernreparatursystemen und Schildfernboostern" }, { "number": "30%", "text": "Bonus auf die Energiespeicherkapazität" }, { "number": "15%", "text": "Abzug auf die Wiederaufladezeit des Energiespeichers" }, { "number": "15%", "text": "Abzug auf die Effektivität von Energiespeicher-Ferntransmittern" }, { "number": "15%", "text": "Abzug auf die Effektivität von Panzerungsreparatursystemen und Schildboostern" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "30%", "text": "bonus to remote armor repairer and remote shield booster effectiveness" }, { "number": "30%", "text": "bonus to capacitor capacity" }, { "number": "15%", "text": "penalty to capacitor recharge time" }, { "number": "15%", "text": "penalty to remote capacitor transmitter effectiveness" }, { "number": "15%", "text": "penalty to local armor repairer and shield booster effectiveness" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "30%", "text": "de bonificación a la efectividad del reparador de blindaje remoto y el potenciador de escudo remoto." }, { "number": "30%", "text": "de bonificación a la capacidad del condensador" }, { "number": "15%", "text": "de penalización al tiempo de carga del condensador." }, { "number": "15%", "text": "de penalización a la efectividad del transmisor de condensador remoto." }, { "number": "15%", "text": "de penalización a la efectividad del reparador de blindaje y del potenciador de escudo locales." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "30%", "text": "de bonus à l'efficacité des réparateurs de blindage à distance et des boosters de bouclier à distance" }, { "number": "30%", "text": "de bonus à la charge du capaciteur" }, { "number": "15%", "text": "de pénalité au temps de recharge du capaciteur" }, { "number": "15%", "text": "de pénalité à l'efficacité du transmetteur de capaciteur à distance" }, { "number": "15%", "text": "de pénalité à l'efficacité des réparateurs de blindage locaux et des boosters de bouclier" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "30%", "text": "bonus to remote armor repairer and remote shield booster effectiveness" }, { "number": "30%", "text": "bonus to capacitor capacity" }, { "number": "15%", "text": "penalty to capacitor recharge time" }, { "number": "15%", "text": "penalty to remote capacitor transmitter effectiveness" }, { "number": "15%", "text": "penalty to local armor repairer and shield booster effectiveness" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "30%", "text": "リモートアーマーリペアラとリモートシールドブースターの効果が上昇" }, { "number": "30%", "text": "キャパシタ容量が増加" }, { "number": "15%", "text": "キャパシタのリチャージ時間にペナルティ" }, { "number": "15%", "text": "リモートキャパシタトランスミッターの効果にペナルティ" }, { "number": "15%", "text": "ローカルアーマーリペアラとシールドブースターの効果にペナルティ" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "30%", "text": "원격 장갑수리 장치 및 실드 부스터 효과 보너스" }, { "number": "30%", "text": "캐패시터 용량 증가" }, { "number": "15%", "text": "캐패시터 충전시간 페널티" }, { "number": "15%", "text": "원격 캐패시터 전송기 효과 페널티" }, { "number": "15%", "text": "장갑수리 장치 및 실드 부스터 효과 페널티" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 30%", "text": "бонус к эффективности модуля дистанционного ремонта брони и модуля дистанционного усиления щитов" }, { "number": "на 30%", "text": "бонус к ёмкости накопителя" }, { "number": "на 15%", "text": "штраф к времени перезарядки накопителя" }, { "number": "на 15%", "text": "штраф к эффективности модуля дистанционного пополнения накопителя" }, { "number": "на 15%", "text": "штраф к эффективности локального ремонта брони и усиления щитов" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "30%", "text": "远程装甲维修器和远程护盾回充增量器效果加成" }, { "number": "30%", "text": "电容器电容量加成" }, { "number": "15%", "text": "电容器回充时间惩罚" }, { "number": "15%", "text": "远程电容传输装置效果惩罚" }, { "number": "15%", "text": "自身装甲维修器和护盾回充增量器效果惩罚" } ], "header": "其它加成:" } }, "typeID": 30846 }, { "traits_de": { "role": { "bonuses": [ { "number": "200%", "text": "Bonus auf die Geschwindigkeit von Lenkwaffen" }, { "number": "50%", "text": "Nachteil auf die Flugdauer von Lenkwaffen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die maximale Reichweite von Warpunterbrechern und Warpstörern" } ], "header": "Gallente Frigate Boni (je Skillstufe):" }, { "bonuses": [ { "number": "25%", "text": "Bonus auf den Schaden von Lenkwaffen" } ], "header": "Caldari Frigate Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "200%", "text": "bonus to missile velocity" }, { "number": "50%", "text": "penalty to missile flight time" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor maximum range" } ], "header": "Gallente Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "25%", "text": "bonus to missile damage" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "200%", "text": "de bonificación a la velocidad de los misiles." }, { "number": "50%", "text": "de penalización al tiempo de vuelo de los misiles." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance máximo del distorsionador de warp y el disruptor de warp." } ], "header": "Bonificaciones de Fragata gallente (por nivel de habilidad):" }, { "bonuses": [ { "number": "25%", "text": "de bonificación al daño de los misiles." } ], "header": "Bonificaciones de Fragata caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "200%", "text": "bonus à la vitesse des missiles" }, { "number": "50%", "text": "pénalité au temps de vol des missiles" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée des Inhibiteurs de warp et Perturbateurs de warp" } ], "header": " Bonus (par niveau de compétence) Frégate gallente :" }, { "bonuses": [ { "number": "25%", "text": "bonus aux dégâts des missiles" } ], "header": " Bonus (par niveau de compétence) Frégate caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "200%", "text": "bonus to missile velocity" }, { "number": "50%", "text": "penalty to missile flight time" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor maximum range" } ], "header": "Gallente Frigate bonuses (per skill level):" }, { "bonuses": [ { "number": "25%", "text": "bonus to missile damage" } ], "header": "Caldari Frigate bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "200%", "text": "ミサイルの速度が上昇" }, { "number": "50%", "text": "ミサイル飛行時間にペナルティ" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "ワープスクランブラーとワープ妨害器の最大射程が上昇" } ], "header": "ガレンテフリゲートボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "25%", "text": "ミサイルの与えるダメージが増加" } ], "header": "カルダリフリゲートボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "200%", "text": "미사일 속도 증가" }, { "number": "50%", "text": "미사일 비행시간 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "워프 스크램블러 및 워프 디스럽터 최대사거리 증가" } ], "header": "갈란테 프리깃 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "25%", "text": "미사일 피해량 증가" } ], "header": "칼다리 프리깃 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 200%", "text": "повышается скорость полёта ракет" }, { "number": "на 50%", "text": "сокращается полётное время ракет" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "бонус к дальности действия варп-глушителей и варп-подавителей." } ], "header": "За каждую степень освоения навыка Галлентские фрегаты:" }, { "bonuses": [ { "number": "на 25%", "text": "увеличивается урон БЧ ракет" } ], "header": "За каждую степень освоения навыка Калдарские фрегаты:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "200%", "text": "导弹飞行速度加成" }, { "number": "50%", "text": "导弹飞行时间惩罚" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "跃迁扰频器和跃迁扰断器最大范围加成" } ], "header": "盖伦特护卫舰操作每升一级:" }, { "bonuses": [ { "number": "25%", "text": "导弹伤害加成" } ], "header": "加达里护卫舰操作每升一级:" } ] }, "typeID": 33816 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Kann Module für Anziehungsfeldgenerator, getarnten Anziehungsfeldgenerator und getarnten Sprungtorgenerator ausrüsten" }, { "text": "·Keine Verzögerung bei der Zielaufschaltung nach der Deaktivierung von Tarnmodulen" }, { "text": "·Die Verzögerung bei Reaktivierung von Tarnmodulen wird auf 5 Sekunden reduziert." }, { "number": "75%", "text": "Reduktion der effektiv zurückgelegten Distanz für die Sprungerschöpfung" }, { "number": "10%", "text": "Bonus auf die Erhöhung des Sicherheitsstatus durch die Zerstörung von Nicht-Kapselpiloten-Piraten bei der Verwendung dieses Schiffs" }, { "text": "·Die Effektivität von Panzerungsreparatursystemen und Schildboostern wurde um einen Prozentsatz entsprechend des 10-fachen Piloten-Sicherheitsstatus bei einer Mindestwert von 0 % und einem Höchstwert von 50 % erhöht." }, { "number": "650%", "text": "Bonus auf die maximale Geschwindigkeit des Schiffs beim Einsatz von Tarnvorrichtungen" }, { "number": "100%", "text": "Bonus auf die HP der Schilderweiterung" }, { "number": "50%", "text": "Bonus auf die HP der Panzerplatte" }, { "number": "5%", "text": "zusätzlicher Bonus auf HP der Verstärkten Schottwand" }, { "number": "50%", "text": "Reduktion der Dauer von Anziehungsfeldgeneratoren und getarnten Anziehungsfeldgeneratoren" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die optimale Reichweite von Warpunterbrechern und Warpstörern" }, { "number": "20%", "text": "Bonus auf die optimale Reichweite von Stasisnetzen" }, { "number": "10%", "text": "Bonus auf die Warpgeschwindigkeit und Beschleunigung" } ], "header": "Black Ops Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf den Schaden von großen Energiegeschütztürmen" }, { "number": "10%", "text": "Bonus auf die optimale Reichweite von großen Energiegeschütztürmen" } ], "header": "Amarr Battleship Boni (je Skillstufe):" }, { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Feuerrate von schnellen schweren Lenkwaffen-, Marschflugkörper- und Torpedo-Werfern" }, { "number": "10%", "text": "Bonus auf die Flugzeit von Marschflugkörpern und Torpedos" } ], "header": "Caldari Battleship Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf die Feuerrate von großen Projektilgeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Präzisionsabfall von großen Projektilgeschütztürmen" } ], "header": "Minmatar Battleship Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Bonus auf den Schaden von großen Hybridgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Zielverfolgungsgeschwindigkeit von großen Hybridgeschütztürmen" } ], "header": "Gallente Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can fit Cynosural Field Generator, Covert Cynosural Field Generator, and Covert Jump Portal Generator modules" }, { "text": "·No targeting delay after Cloaking Device deactivation" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "75%", "text": "reduction to effective distance traveled for jump fatigue" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" }, { "number": "650%", "text": "bonus to ship max velocity when using Cloaking Devices" }, { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" }, { "number": "50%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator duration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" }, { "number": "20%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Black Ops bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Energy Turret damage" }, { "number": "10%", "text": "bonus to Large Energy Turret optimal range" } ], "header": "Amarr Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Rapid Heavy Missile, Cruise Missile and Torpedo Launcher rate of fire" }, { "number": "10%", "text": "bonus to Cruise Missile and Torpedo flight time" } ], "header": "Caldari Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Large Projectile Turret falloff" } ], "header": "Minmatar Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Large Hybrid Turret tracking speed" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar módulos de generador de campo cinosural, generador de campo cinosural encubierto y generador de portales de salto encubierto." }, { "text": "·No hay demora en la adquisición de objetivos tras la desactivación del dispositivo de camuflaje." }, { "text": "·Reducción de la demora de reactivación del camuflaje a 5 segundos." }, { "number": "75%", "text": "de reducción de la distancia efectiva hasta sufrir fatiga de salto." }, { "number": "10%", "text": "de bonificación a la ganancia del estado de seguridad al aniquilar piratas no capsulistas mientras se pilota esta nave." }, { "text": "·La efectividad del reparador de blindaje y del potenciador de escudo aumenta en un porcentaje igual a 10 veces el estado de seguridad del piloto, con un mínimo del 0 % y un máximo del 50 %." }, { "number": "650%", "text": "de bonificación a la velocidad máxima de la nave al utilizar dispositivos de camuflaje." }, { "number": "100%", "text": "de bonificación a los puntos de vida del extensor de escudo." }, { "number": "50%", "text": "de bonificación a los puntos de vida de las placas de blindaje." }, { "number": "5%", "text": "de bonificación adicional a los puntos de vida del mamparo reforzado." }, { "number": "50%", "text": "de reducción de la duración del generador de campo cinosural y el generador de campo cinosural encubierto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance óptimo del distorsionador de warp y el disruptor de warp." }, { "number": "20%", "text": "de bonificación al alcance óptimo de la red ralentizadora." }, { "number": "10%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificaciones de Operaciones secretas (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación al daño de la torreta de energía grande." }, { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta de energía grande." } ], "header": "Bonificaciones de Acorazado de Amarr (por nivel de habilidad):" }, { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la cadencia de tiro rápida de los lanzamisiles pesados, los lanzamisiles de crucero y los lanzatorpedos." }, { "number": "10%", "text": "de bonificación al tiempo de vuelo de los misiles de crucero y los torpedos." } ], "header": "Bonificaciones de Acorazado caldari (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles grande." }, { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta de proyectiles grande." } ], "header": "Bonificaciones de Acorazado minmatariano (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de bonificación al daño de la torreta híbrida grande." }, { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida grande." } ], "header": "Bonificaciones de Acorazado gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut équiper des modules générateur de champ cynosural, générateur de champ cynosural furtif et générateur de portail interstellaire furtif" }, { "text": "·Aucun délai de ciblage après la désactivation du dispositif de camouflage" }, { "text": "·Délai de réactivation du camouflage réduit à 5 secondes" }, { "number": "75%", "text": "de réduction de la distance effective comptabilisée pour l'épuisement de saut." }, { "number": "10%", "text": "de bonus aux gains de statut de sécurité liés à la destruction de pirates non capsuliers à bord de ce vaisseau" }, { "text": "·Efficacité des réparateurs de blindage et des boosters de boucliers majorée par un pourcentage égal à 10x le statut de sécurité du pilote, de 0 % à 50 % maximum." }, { "number": "650%", "text": "de bonus à la vitesse maximale d'un vaisseau lorsqu'équipé d'un dispositif de camouflage actif" }, { "number": "100%", "text": "de bonus aux points de vie de l'extenseur de bouclier" }, { "number": "50%", "text": "de bonus aux points de vie du revêtement de blindage" }, { "number": "5%", "text": "de bonus supplémentaire aux points de vie de la cloison renforcée" }, { "number": "50%", "text": "de réduction de la durée du générateur de champ cynosural et du générateur de champ cynosural furtif" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée optimale des inhibiteurs de warp et des perturbateurs de warp" }, { "number": "20%", "text": "de bonus à la portée optimale des générateurs de stase" }, { "number": "10%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": " Bonus (par niveau de compétence) Forces spéciales :" }, { "bonuses": [ { "number": "10%", "text": "de bonus aux dégâts des grandes tourelles à énergie" }, { "number": "10%", "text": "de bonus à la portée optimale des grandes tourelles à énergie" } ], "header": " Bonus (par niveau de compétence) Cuirassé amarr :" }, { "bonuses": [ { "number": "7.5%", "text": "de bonus à la cadence de tir des lance-missiles lourds, lance-missiles de croisière et lance-torpilles rapides" }, { "number": "10%", "text": "de bonus au temps de vol des missiles de croisière et des torpilles" } ], "header": " Bonus (par niveau de compétence) Cuirassé caldari :" }, { "bonuses": [ { "number": "10%", "text": "de bonus à la cadence de tir des grandes tourelles à projectiles" }, { "number": "10%", "text": "de bonus à la déperdition des grandes tourelles à projectiles" } ], "header": " Bonus (par niveau de compétence) Cuirassé minmatar :" }, { "bonuses": [ { "number": "10%", "text": "de bonus aux dégâts des grandes tourelles hybrides" }, { "number": "7.5%", "text": "de bonus à la vitesse de poursuite des grandes tourelles hybrides" } ], "header": " Bonus (par niveau de compétence) Cuirassé gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can fit Cynosural Field Generator, Covert Cynosural Field Generator, and Covert Jump Portal Generator modules" }, { "text": "·No targeting delay after Cloaking Device deactivation" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "75%", "text": "reduction to effective distance traveled for jump fatigue" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" }, { "number": "650%", "text": "bonus to ship max velocity when using Cloaking Devices" }, { "number": "100%", "text": "bonus to Shield Extender hitpoints" }, { "number": "50%", "text": "bonus to Armor Plate hitpoints" }, { "number": "5%", "text": "additional bonus to Reinforced Bulkhead hitpoints" }, { "number": "50%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator duration" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" }, { "number": "20%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Black Ops bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Energy Turret damage" }, { "number": "10%", "text": "bonus to Large Energy Turret optimal range" } ], "header": "Amarr Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Rapid Heavy Missile, Cruise Missile and Torpedo Launcher rate of fire" }, { "number": "10%", "text": "bonus to Cruise Missile and Torpedo flight time" } ], "header": "Caldari Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Large Projectile Turret falloff" } ], "header": "Minmatar Battleship bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Large Hybrid Turret tracking speed" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·サイノシュラルフィールドジェネレーター、潜伏用サイノシュラルフィールドジェネレーター、そして潜伏用ジャンプポータルジェネレーターを装備可能" }, { "text": "·遮蔽装置後のターゲット補足遅延なし" }, { "text": "·クロークの再起動遅延を5秒に短縮" }, { "number": "75%", "text": "ジャンプ疲労までの移動有効距離が減少" }, { "number": "10%", "text": "この艦船を使用して非カプセラ海賊を撃破した際のセキュリティーステータスの上昇量が増加" }, { "text": "·アーマーリペアラ及びシールドブースターの効果を、パイロットのセキュリティステータスの10倍に当たるパーセンテージまで上げる。下限は0%で上限は50%。" }, { "number": "650%", "text": "遮蔽装置使用時の艦船の最高速度が上昇" }, { "number": "100%", "text": "シールドエクステンダーHPが増加" }, { "number": "50%", "text": "アーマープレートHPが増加" }, { "number": "5%", "text": "強化隔壁HPがさらに増加" }, { "number": "50%", "text": "サイノシュラルフィールドジェネレーターと潜伏用サイノシュラルフィールドジェネレーターの持続時間が減少" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "ワープスクランブラーとワープ妨害器の最適射程距離が上昇" }, { "number": "20%", "text": "ステイシスウェビファイヤーの最適射程距離が拡大" }, { "number": "10%", "text": "ワープ速度と加速度が上昇" } ], "header": "秘密工作艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "大型エネルギータレットのダメージにボーナス" }, { "number": "10%", "text": "大型エネルギータレットの最適射程距離にボーナス" } ], "header": "アマー戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "7.5%", "text": "ラピッドヘビーミサイル、クルーズミサイル及びトルピードランチャーの発射間隔が短縮" }, { "number": "10%", "text": "クルーズミサイルおよびトルピードの飛行時間が増加" } ], "header": "カルダリ戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "大型実体弾タレットの発射速度が上昇" }, { "number": "10%", "text": "大型プロジェクタイルタレットの精度低下範囲が拡大" } ], "header": "ミンマター戦艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "大型ハイブリッドタレットのダメージにボーナス" }, { "number": "7.5%", "text": "大型ハイブリッドタレットの追跡速度にボーナス" } ], "header": "ガレンテ戦艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·사이노슈럴 필드 생성기, 코버트 사이노슈럴 필드 생성기, 코버트 점프 포탈 생성기 장착 가능" }, { "text": "·클로킹 장치 비활성화 후 타겟팅 딜레이 없음" }, { "text": "·클로킹 재가동 지연 시간 5초로 감소" }, { "number": "75%", "text": "이동 거리에 따른 점프 피로도 감소" }, { "number": "10%", "text": "NPC 해적선 파괴 시 시큐리티 획득량 증가" }, { "text": "·파일럿 시큐리티 수치의 10배만큼의 %로 장갑수리 장치 및 실드 부스터 효과 증가 (0%~50%)" }, { "number": "650%", "text": "클로킹 장치 사용 시 함선 최대 속도 증가" }, { "number": "100%", "text": "실드 확장장치 실드량 증가" }, { "number": "50%", "text": "장갑 플레이트 내구도 증가" }, { "number": "5%", "text": "강화 격벽 내구도 증가" }, { "number": "50%", "text": "사이노슈럴 필드 생성기 및 코버트 사이노슈럴 필드 생성기 지속시간 감소" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "워프 스크램블러 및 워프 디스럽터 최적사거리 증가" }, { "number": "20%", "text": "스테이시스 웹 생성기 최적사거리 증가" }, { "number": "10%", "text": "워프 속도 및 가속도 증가" } ], "header": "블랙옵스 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "대형 에너지 터렛 피해량 증가" }, { "number": "10%", "text": "대형 에너지 터렛 최적사거리 증가" } ], "header": "아마르 배틀쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "7.5%", "text": "급속 헤비 미사일, 크루즈 미사일, 토피도 런처 연사속도 증가" }, { "number": "10%", "text": "크루즈 미사일 및 토피도 비행시간 증가" } ], "header": "칼다리 배틀쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "대형 발사체 터렛 연사속도 증가" }, { "number": "10%", "text": "대형 발사체 터렛 유효사거리 증가" } ], "header": "민마타 배틀쉽 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "대형 하이브리드 터렛 피해량 증가" }, { "number": "7.5%", "text": "대형 하이브리드 터렛 트래킹 속도 증가" } ], "header": "갈란테 배틀쉽 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Возможно оснащение приводным маяком, приводным маяком скрытого действия и диверсионным генератором гиперпорталов" }, { "text": "·На кораблях этого типа устранена задержка включения систем захвата целей, вызываемая отключением систем маскировки" }, { "text": "·Задержка повторного включения систем маскировки сокращена до 5 секунд" }, { "number": "на 75%", "text": "медленнее накапливается усталость от гиперпереходов" }, { "number": "на 10%", "text": "увеличивается прирост СС пилота при уничтожении пиратских кораблей под управлением NPC (в ходе пилотирования этого корабля)" }, { "text": "·Производительность установок ремонта брони и установок накачки щитов повышена; процентное значение повышения исчисляется умножением СС пилота на 10 и не может быть меньше 0% и больше 50%" }, { "number": "на 650%", "text": "бонус к максимальной скорости хода при использовании устройств маскировки" }, { "number": "на 100%", "text": "бонус к прочности расширителя щитов" }, { "number": "на 50%", "text": "бонус к прочности бронеплиты" }, { "number": "на 5%", "text": "дополнительный бонус к прочности укреплённой переборки" }, { "number": "на 50%", "text": "сокращение времени работы приводного маяка и приводного маяка скрытого действия" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается оптимальная дальность действия варп-глушителей и варп-подавителей" }, { "number": "на 20%", "text": "увеличивается оптимальная дальность действия стазис-индукторов" }, { "number": "на 10%", "text": "повышается скорость полёта и ускорение корабля (только в варп-режиме)" } ], "header": "За каждую степень освоения навыка Тяжёлые диверсионные корабли:" }, { "bonuses": [ { "number": "на 10%", "text": "увеличивается урон больших лазерных орудий" }, { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из больших лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские линкоры:" }, { "bonuses": [ { "number": "на 7.5%", "text": "повышается скорострельность торпедных аппаратов, ПУ дальнобойных ракет, скорострельных ПУ тяжёлых ракет" }, { "number": "на 10%", "text": "увеличивается полётное время дальнобойных ракет и торпед" } ], "header": "За каждую степень освоения навыка Калдарские линкоры:" }, { "bonuses": [ { "number": "на 10%", "text": "повышается скорострельность больших баллистических орудий" }, { "number": "на 10%", "text": "увеличивается добавочная дальность ведения огня из больших баллистических орудий" } ], "header": "За каждую степень освоения навыка Минматарские линкоры:" }, { "bonuses": [ { "number": "на 10%", "text": "увеличивается урон боеприпасов больших гибридных орудий" }, { "number": "на 7.5%", "text": "повышается скорость наводки на цель больших гибридных орудий" } ], "header": "За каждую степень освоения навыка Галлентские линкоры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以装配诱导力场发生器、隐秘诱导力场发生器和隐秘跳跃通道发生器装备" }, { "text": "·重新启动隐形装置后不遭受锁定延时副作用" }, { "text": "·隐形装置重启延时降到5秒" }, { "number": "75%", "text": "减少跳跃疲劳对有效距离的影响" }, { "number": "10%", "text": "驾驶该船只击毁NPC获得安全等级加成" }, { "text": "·装甲维修器和护盾回充增量器效果增强幅度相当于飞行员安全等级的10倍,下限为0%,上限为50%。" }, { "number": "650%", "text": "使用隐形装置时舰船的最大速度加成" }, { "number": "100%", "text": "护盾扩展装置护盾值加成" }, { "number": "50%", "text": "装甲附甲板装甲值加成" }, { "number": "5%", "text": "强化舱隔壁结构值加成" }, { "number": "50%", "text": "诱导力场发生器和隐秘诱导力场发生器的持续时间缩短" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "跃迁扰频器和跃迁扰断器有效距离加成" }, { "number": "20%", "text": "停滞缠绕光束最佳射程加成" }, { "number": "10%", "text": "跃迁速度和跃迁加速加成" } ], "header": "黑隐特勤舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "大型能量炮台伤害加成" }, { "number": "10%", "text": "大型能量炮台最佳射程加成" } ], "header": "艾玛战列舰操作每升一级:" }, { "bonuses": [ { "number": "7.5%", "text": "重型快速导弹、巡航导弹和鱼雷发射器射速加成" }, { "number": "10%", "text": "巡航导弹和鱼雷飞行时间加成" } ], "header": "加达里战列舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "大型射弹炮台射速加成" }, { "number": "10%", "text": "大型射弹炮台失准范围加成" } ], "header": "米玛塔尔战列舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "大型混合炮台伤害加成" }, { "number": "7.5%", "text": "大型混合炮台跟踪速度加成" } ], "header": "盖伦特战列舰操作每升一级:" } ] }, "typeID": 44996 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Reduktion des CPU-Bedarfs von Tarnmodulen" }, { "text": "·Kann Covert-Ops-Tarnvorrichtung, Anziehungsfeldgenerator und getarnten Anziehungsfeldgenerator ausrüsten" }, { "text": "·Die Verzögerung bei Reaktivierung von Tarnmodulen wird auf 5 Sekunden reduziert." }, { "number": "80%", "text": "Reduktion des Flüssigozon-Verbrauchs von Anziehungsfeldgeneratoren und getarnten Anziehungsfeldgeneratoren" }, { "number": "50%", "text": "Reduktion der Dauer von Anziehungsfeldgeneratoren und getarnten Anziehungsfeldgeneratoren" }, { "number": "10%", "text": "Bonus auf die Erhöhung des Sicherheitsstatus durch die Zerstörung von Nicht-Kapselpiloten-Piraten bei der Verwendung dieses Schiffs" }, { "text": "·Die Effektivität von Panzerungsreparatursystemen und Schildboostern wurde um einen Prozentsatz entsprechend des 10-fachen Piloten-Sicherheitsstatus bei einer Mindestwert von 0 % und einem Höchstwert von 50 % erhöht." } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von mittelgroßen Projektilgeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Präzisionsabfall von mittelgroßen Projektilgeschütztürmen" } ], "header": "Minmatar Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die optimale Reichweite von Warpunterbrechern und Warpstörern" }, { "number": "10%", "text": "Bonus auf die optimale Reichweite von Stasisnetzen" }, { "number": "10%", "text": "Bonus auf die Warpgeschwindigkeit und Beschleunigung" } ], "header": "Recon Ships Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von schnellen leichten Lenkwaffenwerfern, schweren Lenkwaffenwerfern und schweren Angriffslenkwaffenwerfern" }, { "number": "10%", "text": "Bonus auf die Flugzeit von schweren Lenkwaffen und schweren Angriffslenkwaffen" } ], "header": "Caldari Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von mittelgroßen Energiegeschütztürmen" }, { "number": "10%", "text": "Bonus auf die optimale Reichweite von mittelgroßen Energiegeschütztürmen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von mittelgroßen Hybridgeschütztürmen" }, { "number": "7.5%", "text": "Bonus auf die Zielverfolgungsgeschwindigkeit von mittelgroßen Hybridgeschütztürmen" } ], "header": "Gallente Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Cloaking Devices CPU requirement" }, { "text": "·Can fit Covert Ops Cloaking Device, Cynosural Field Generator, and Covert Cynosural Field Generator modules" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "80%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator liquid ozone consumption" }, { "number": "50%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator duration" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Medium Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Medium Projectile Turret falloff" } ], "header": "Minmatar Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" }, { "number": "10%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Recon Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Rapid Light Missile, Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "10%", "text": "bonus to Heavy Missile and Heavy Assault Missile flight time" } ], "header": "Caldari Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Energy Turret damage" }, { "number": "10%", "text": "bonus to Medium Energy Turret optimal range" } ], "header": "Amarr Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Medium Hybrid Turret tracking speed" } ], "header": "Gallente Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de reducción del requisito de CPU de los dispositivos de camuflaje." }, { "text": "·Es posible equipar módulos de dispositivo de camuflaje de operaciones encubiertas, un generador de campo cinosural y un generador de campo cinosural encubierto." }, { "text": "·Reducción de la demora de reactivación del camuflaje a 5 segundos." }, { "number": "80%", "text": "de reducción del consumo de ozono líquido del generador de campo cinosural y el generador de campo cinosural encubierto." }, { "number": "50%", "text": "de reducción de la duración del generador de campo cinosural y el generador de campo cinosural encubierto." }, { "number": "10%", "text": "de bonificación a la ganancia del estado de seguridad al aniquilar piratas no capsulistas mientras se pilota esta nave." }, { "text": "·La efectividad del reparador de blindaje y del potenciador de escudo aumenta en un porcentaje igual a 10 veces el estado de seguridad del piloto, con un mínimo del 0 % y un máximo del 50 %." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles mediana." }, { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta de proyectiles mediana." } ], "header": "Bonificaciones de Crucero minmatariano (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al alcance óptimo del distorsionador de warp y el disruptor de warp." }, { "number": "10%", "text": "de bonificación al alcance óptimo de la red ralentizadora." }, { "number": "10%", "text": "de bonificación a la velocidad y la aceleración de warp." } ], "header": "Bonificaciones de Naves de reconocimiento (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro rápida de los lanzamisiles ligeros, los lanzamisiles pesados y los lanzamisiles de asalto pesados." }, { "number": "10%", "text": "de bonificación al tiempo de vuelo de los misiles pesados y los misiles de asalto pesados." } ], "header": "Bonificaciones de Crucero caldari (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta de energía mediana." }, { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta de energía mediana." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta híbrida mediana." }, { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida mediana." } ], "header": "Bonificaciones de Crucero gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de réduction de la charge CPU consommée par le dispositif de camouflage" }, { "text": "·Peut équiper des modules dispositif de camouflage d'opérations secrètes, générateur de champ cynosural et générateur de champ cynosural furtif" }, { "text": "·délai de réactivation du camouflage réduit à 5 secondes" }, { "number": "80%", "text": "de réduction de la consommation d'ozone liquide du générateur de champ cynosural et du générateur de champ cynosural furtif" }, { "number": "50%", "text": "de réduction de la durée du générateur de champ cynosural et du générateur de champ cynosural furtif" }, { "number": "10%", "text": "de bonus aux gains de statut de sécurité liés à la destruction de pirates non capsuliers à bord de ce vaisseau" }, { "text": "·Efficacité des réparateurs de blindage et des boosters de boucliers majorée par un pourcentage égal à 10x le statut de sécurité du pilote, de 0 % à 50 % maximum." } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des tourelles à projectiles intermédiaires" }, { "number": "10%", "text": "de bonus à la déperdition des tourelles à projectiles intermédiaires" } ], "header": " Bonus (par niveau de compétence) Croiseur minmatar :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la portée optimale des inhibiteurs de warp et des perturbateurs de warp" }, { "number": "10%", "text": "de bonus à la portée optimale des générateurs de stase" }, { "number": "10%", "text": "de bonus à la vitesse de warp et à l'accélération de warp" } ], "header": " Bonus (par niveau de compétence) Vaisseaux de reconnaissance :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles légers, lance-missiles lourds et lance-missiles d'assaut lourds" }, { "number": "10%", "text": "de bonus au temps de vol des missiles lourds et des missiles d'assaut lourds" } ], "header": " Bonus (par niveau de compétence) Croiseur caldari :" }, { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des tourelles à énergie intermédiaires" }, { "number": "10%", "text": "de bonus à la portée optimale des tourelles à énergie intermédiaires" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" }, { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des tourelles hybrides intermédiaires" }, { "number": "7.5%", "text": "de bonus à la vitesse de poursuite des tourelles hybrides intermédiaires" } ], "header": " Bonus (par niveau de compétence) Croiseur gallente :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "100%", "text": "reduction in Cloaking Devices CPU requirement" }, { "text": "·Can fit Covert Ops Cloaking Device, Cynosural Field Generator, and Covert Cynosural Field Generator modules" }, { "text": "·Cloak reactivation delay reduced to 5 seconds" }, { "number": "80%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator liquid ozone consumption" }, { "number": "50%", "text": "reduction in Cynosural Field Generator and Covert Cynosural Field Generator duration" }, { "number": "10%", "text": "bonus to security status gains from destruction of non-capsuleer pirates while flying this ship" }, { "text": "·Armor Repairer and Shield Booster effectiveness increased by a percentage equal to 10x pilot security status, with a floor of 0% and ceiling of 50%" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Medium Projectile Turret rate of fire" }, { "number": "10%", "text": "bonus to Medium Projectile Turret falloff" } ], "header": "Minmatar Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Warp Scrambler and Warp Disruptor optimal range" }, { "number": "10%", "text": "bonus to Stasis Webifier optimal range" }, { "number": "10%", "text": "bonus to warp speed and acceleration" } ], "header": "Recon Ships bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Rapid Light Missile, Heavy Missile and Heavy Assault Missile Launcher rate of fire" }, { "number": "10%", "text": "bonus to Heavy Missile and Heavy Assault Missile flight time" } ], "header": "Caldari Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Energy Turret damage" }, { "number": "10%", "text": "bonus to Medium Energy Turret optimal range" } ], "header": "Amarr Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Hybrid Turret damage" }, { "number": "7.5%", "text": "bonus to Medium Hybrid Turret tracking speed" } ], "header": "Gallente Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "100%", "text": "遮蔽装置の必要CPUが減少" }, { "text": "·光学迷彩型遮蔽装置とサイノシュラルフィールドジェネレーター、そして潜伏用サイノシュラルフィールドジェネレーターを装備可能" }, { "text": "·クロークの再起動遅延を5秒に短縮" }, { "number": "80%", "text": "サイノシュラルフィールドジェネレーターと潜伏用サイノシュラルフィールドジェネレーターの液体オゾン消費量が減少" }, { "number": "50%", "text": "サイノシュラルフィールドジェネレーターと潜伏用サイノシュラルフィールドジェネレーターの持続時間が減少" }, { "number": "10%", "text": "この艦船を使用して非カプセラ海賊を撃破した際のセキュリティーステータスの上昇量が増加" }, { "text": "·アーマーリペアラ及びシールドブースターの効果を、パイロットのセキュリティステータスの10倍に当たるパーセンテージまで上げる。下限は0%で上限は50%。" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "中型実体弾タレットの発射速度が上昇" }, { "number": "10%", "text": "中型実体弾タレットの精度低下範囲にボーナス" } ], "header": "ミンマター巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ワープスクランブラーとワープ妨害器の最適射程距離が上昇" }, { "number": "10%", "text": "ステイシスウェビファイヤーの最適射程距離が拡大" }, { "number": "10%", "text": "ワープ速度と加速度が上昇" } ], "header": "電子戦型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ラピッドライトミサイル、ヘビーミサイル及びヘビーアサルトミサイルランチャーの発射間隔が短縮" }, { "number": "10%", "text": "ヘビーミサイルとヘビーアサルトミサイルの飛行時間が増加" } ], "header": "カルダリ巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "中型エネルギータレットの与えるダメージが増加" }, { "number": "10%", "text": "中型エネルギータレットの最適射程距離にボーナス" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "中型ハイブリッドタレットのダメージが増加" }, { "number": "7.5%", "text": "中型ハイブリッドタレットの追跡速度にボーナス" } ], "header": "ガレンテ巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "100%", "text": "클로킹 장치 CPU 사용량 감소" }, { "text": "·코버트 옵스 클로킹 장치, 사이노슈럴 필드 생성기, 코버트 사이노슈럴 필드 생성기 장착 가능" }, { "text": "·클로킹 재가동 지연 시간 5초로 감소" }, { "number": "80%", "text": "사이노슈럴 필드 생성기 및 코버트 사이노슈럴 필드 생성기 액화 오존 소모량 감소" }, { "number": "50%", "text": "사이노슈럴 필드 생성기 및 코버트 사이노슈럴 필드 생성기 지속시간 감소" }, { "number": "10%", "text": "NPC 해적선 파괴 시 시큐리티 획득량 증가" }, { "text": "·파일럿 시큐리티 수치의 10배만큼의 %로 장갑수리 장치 및 실드 부스터 효과 증가 (0%~50%)" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "중형 발사체 터렛 연사속도 증가" }, { "number": "10%", "text": "중형 발사체 터렛 유효사거리 증가" } ], "header": "민마타 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "워프 스크램블러 및 워프 디스럽터 최적사거리 증가" }, { "number": "10%", "text": "스테이시스 웹 생성기 최적사거리 증가" }, { "number": "10%", "text": "워프 속도 및 가속도 증가" } ], "header": "리콘 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "급속 라이트 미사일, 헤비 미사일, 헤비 어썰트 미사일 런처 연사속도 증가" }, { "number": "10%", "text": "헤비 미사일 및 헤비 어썰트 미사일 비행시간 증가" } ], "header": "칼다리 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "중형 에너지 터렛 피해량 증가" }, { "number": "10%", "text": "중형 에너지 터렛 최적사거리 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "중형 하이브리드 터렛 피해량 증가" }, { "number": "7.5%", "text": "중형 하이브리드 터렛 트래킹 속도 증가" } ], "header": "갈란테 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 100%", "text": "сокращается потребность систем маскировки в мощностях ЦПУ" }, { "text": "·Возможно оснащение всережимной системой маскировки, приводным маяком и приводным маяком скрытого действия." }, { "text": "·Задержка повторного включения систем маскировки сокращена до 5 секунд" }, { "number": "на 80%", "text": "снижение потребления жидкого озона приводным маяком и приводным маяком скрытого действия" }, { "number": "на 50%", "text": "сокращение времени работы приводного маяка и приводного маяка скрытого действия" }, { "number": "на 10%", "text": "увеличивается прирост СС пилота при уничтожении пиратских кораблей под управлением NPC (в ходе пилотирования этого корабля)" }, { "text": "·Производительность установок ремонта брони и установок накачки щитов повышена; процентное значение повышения исчисляется умножением СС пилота на 10 и не может быть меньше 0% и больше 50%" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность средних баллистических орудий" }, { "number": "на 10%", "text": "увеличивается добавочная дальность ведения огня из средних баллистических орудий" } ], "header": "За каждую степень освоения навыка Минматарские крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается оптимальная дальность действия варп-глушителей и варп-подавителей" }, { "number": "на 10%", "text": "увеличивается оптимальная дальность действия стазис-индукторов" }, { "number": "на 10%", "text": "повышается скорость полёта и ускорение корабля (только в варп-режиме)" } ], "header": "За каждую степень освоения навыка Дозорные крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность скорострельных ПУ лёгких ракет, ПУ тяжёлых штурмовых ракет, ПУ тяжёлых ракет" }, { "number": "на 10%", "text": "увеличивается полётное время тяжёлых ракет и тяжёлых штурмовых ракет" } ], "header": "За каждую степень освоения навыка Калдарские крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон средних лазерных орудий" }, { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из средних лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон боеприпасов средних гибридных орудий" }, { "number": "на 7.5%", "text": "повышается скорость наводки на цель средних гибридных орудий" } ], "header": "За каждую степень освоения навыка Галлентские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "100%", "text": "隐形装置CPU需求降低" }, { "text": "·可以装配隐秘行动隐形装置、诱导力场发生器和隐秘诱导力场发生器装备" }, { "text": "·隐形装置重启延时降到5秒" }, { "number": "80%", "text": "诱导力场发生器和隐秘诱导力场发生器消耗的液态臭氧数量降低" }, { "number": "50%", "text": "诱导力场发生器和隐秘诱导力场发生器的持续时间缩短" }, { "number": "10%", "text": "驾驶该船只击毁NPC获得安全等级加成" }, { "text": "·装甲维修器和护盾回充增量器效果增强幅度相当于飞行员安全等级的10倍,下限为0%,上限为50%。" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "中型射弹炮台射速加成" }, { "number": "10%", "text": "中型射弹炮台失准范围加成" } ], "header": "米玛塔尔巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "跃迁扰频器和跃迁扰断器有效距离加成" }, { "number": "10%", "text": "停滞缠绕光束最佳射程加成" }, { "number": "10%", "text": "跃迁速度和跃迁加速加成" } ], "header": "侦察舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "重型导弹发射器 、重型攻击导弹发射器和轻型快速导弹发射器射速加成" }, { "number": "10%", "text": "重型导弹和重型攻击导弹飞行时间加成" } ], "header": "加达里巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "中型能量炮台伤害加成" }, { "number": "10%", "text": "中型能量炮台最佳射程加成" } ], "header": "艾玛巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "中型混合炮台伤害加成" }, { "number": "7.5%", "text": "中型混合炮台跟踪速度加成" } ], "header": "盖伦特巡洋舰操作每升一级:" } ] }, "typeID": 44995 }, { "traits_de": { "misc": { "bonuses": [ { "number": "30%", "text": "Bonus auf Schaden durch Geschütztürme, Lenkwaffen, Vorton-Projektoren und Drohnen" }, { "number": "15%", "text": "Abzug auf Nachführungsgeschwindigkeit von Geschütztürmen und Drohnen" }, { "number": "15%", "text": "Abzug auf den Explosionsradius von Lenkwaffen und Vorton-Projektoren" }, { "number": "15%", "text": "Abzug auf die Effektivität der Zielmarkierung" }, { "number": "15%", "text": "Abzug auf die maximale Zielerfassungsreichweite" } ], "header": "Verschiedene Boni:" } }, "traits_en-us": { "misc": { "bonuses": [ { "number": "30%", "text": "bonus to turret, missile, vorton projector and drone damage" }, { "number": "15%", "text": "penalty to turret and drone tracking speed" }, { "number": "15%", "text": "penalty to missile and vorton projector explosion radius" }, { "number": "15%", "text": "penalty to target painter effectiveness" }, { "number": "15%", "text": "penalty to maximum targeting range" } ], "header": "Misc bonus:" } }, "traits_es": { "misc": { "bonuses": [ { "number": "30%", "text": "de bonificación al daño de las torretas, los misiles, los proyectores vortónicos y los drones." }, { "number": "15%", "text": "de penalización a la velocidad de rastreo de las torretas y los drones." }, { "number": "15%", "text": "de penalización al radio de explosión de los misiles y los proyectores vortónicos." }, { "number": "15%", "text": "de penalización a la efectividad de los reveladores de objetivo." }, { "number": "15%", "text": "de penalización a la distancia-objetivo máxima." } ], "header": "Bonificación misc.:" } }, "traits_fr": { "misc": { "bonuses": [ { "number": "30%", "text": "de bonus aux dégâts des tourelles, missiles, projecteurs de vortons et drones" }, { "number": "15%", "text": "de pénalité à la vitesse de poursuite des tourelles et des drones" }, { "number": "15%", "text": "de pénalité au rayon d'explosion des missiles et projecteurs de vortons" }, { "number": "15%", "text": "de pénalité à l'efficacité du marqueur de cible" }, { "number": "15%", "text": "de pénalité à la portée de ciblage maximum" } ], "header": "Bonus divers :" } }, "traits_it": { "misc": { "bonuses": [ { "number": "30%", "text": "bonus to turret, missile, vorton projector and drone damage" }, { "number": "15%", "text": "penalty to turret and drone tracking speed" }, { "number": "15%", "text": "penalty to missile and vorton projector explosion radius" }, { "number": "15%", "text": "penalty to target painter effectiveness" }, { "number": "15%", "text": "penalty to maximum targeting range" } ], "header": "Misc bonus:" } }, "traits_ja": { "misc": { "bonuses": [ { "number": "30%", "text": "タレット、ミサイル、ヴォートンプロジェクター、ドローンのダメージ上昇" }, { "number": "15%", "text": "タレットとドローンの追跡速度が上昇" }, { "number": "15%", "text": "ミサイルとヴォートンプロジェクターの爆発半径にペナルティ" }, { "number": "15%", "text": "ターゲットペインターの効果にペナルティ" }, { "number": "15%", "text": "最大ターゲット範囲にペナルティ" } ], "header": "その他のボーナス:" } }, "traits_ko": { "misc": { "bonuses": [ { "number": "30%", "text": "터렛, 미사일, 보르톤 프로젝터, 드론 피해량 증가" }, { "number": "15%", "text": "터렛 및 드론 트래킹 속도 페널티" }, { "number": "15%", "text": "미사일 및 보르톤 프로젝터 폭발반경 감소" }, { "number": "15%", "text": "타겟 페인터 효과 페널티" }, { "number": "15%", "text": "최대 타겟팅 거리 페널티" } ], "header": "기타 보너스:" } }, "traits_ru": { "misc": { "bonuses": [ { "number": "на 30%", "text": "бонус к урону от турелей, ракет, вортонных проекторов и дронов" }, { "number": "на 15%", "text": "штраф к скорости наведения турелей и дронов" }, { "number": "на 15%", "text": "штраф к радиусу взрыва для ракет и вортонных проекторов" }, { "number": "на 15%", "text": "штраф к эффективности системы подсветки целей" }, { "number": "на 15%", "text": "штраф к максимальной дальности захвата целей" } ], "header": "Прочие особенности проекта:" } }, "traits_zh": { "misc": { "bonuses": [ { "number": "30%", "text": "炮台、导弹、电弧弦投射器和无人机伤害加成" }, { "number": "15%", "text": "炮台和无人机跟踪速度惩罚" }, { "number": "15%", "text": "导弹和电弧弦投射器爆炸半径惩罚" }, { "number": "15%", "text": "目标标记装置效果惩罚" }, { "number": "15%", "text": "锁定范围上限惩罚" } ], "header": "其它加成:" } }, "typeID": 30847 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "text": "·Kann Angriffsschadensregulierer ausrüsten" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Maximalgeschwindigkeit von schweren Lenkwaffen und schweren Angriffslenkwaffen" }, { "number": "5%", "text": "Bonus auf die Feuerrate von schnellen leichten Lenkwaffenwerfern, schweren Lenkwaffenwerfern und schweren Angriffslenkwaffenwerfern" } ], "header": "Heavy Assault Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von schweren Lenkwaffen und schweren Angriffslenkwaffen" }, { "number": "5%", "text": "Bonus auf alle Panzerungsresistenzen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Heavy Missile and Heavy Assault Missile max velocity" }, { "number": "5%", "text": "bonus to Rapid Light Missile, Heavy Missile and Heavy Assault Missile Launcher rate of fire" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile damage" }, { "number": "5%", "text": "bonus to all armor resistances" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "text": "·Es posible equipar controles de daños por asalto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la velocidad máxima de los misiles pesados y los misiles de asalto pesados." }, { "number": "5%", "text": "de bonificación a la cadencia de tiro rápida de los lanzamisiles ligeros, los lanzamisiles pesados y los lanzamisiles de asalto pesados." } ], "header": "Bonificaciones de Cruceros de asalto pesados (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de los misiles pesados y los misiles de asalto pesados." }, { "number": "5%", "text": "de bonificación a todas las resistencias de blindaje." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "text": "·Peut être équipé des contrôles des dégâts d'assaut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonus à la vitesse maximale des missiles lourds et des missiles d'assaut lourds" }, { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles légers, lance-missiles lourds et lance-missiles d'assaut lourds" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'assaut lourds :" }, { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des missiles lourds et des missiles d'assaut lourds" }, { "number": "5%", "text": "de bonus à toutes les résistances du blindage" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Heavy Missile and Heavy Assault Missile max velocity" }, { "number": "5%", "text": "bonus to Rapid Light Missile, Heavy Missile and Heavy Assault Missile Launcher rate of fire" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile damage" }, { "number": "5%", "text": "bonus to all armor resistances" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "text": "·アサルトダメージ制御を装備可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "ヘビーミサイルとヘビーアサルトミサイルの最高速度が上昇" }, { "number": "5%", "text": "高速ライトミサイル・ヘビーミサイル・ヘビーアサルトミサイルランチャーの発射間隔が短縮" } ], "header": "強襲型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ヘビーミサイルとヘビーアサルトミサイルのダメージが増加" }, { "number": "5%", "text": "全てのアーマーレジスタンスが増加" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "text": "·어썰트 데미지 컨트롤 장착가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "헤비 미사일 및 헤비 어썰트 미사일 최대 속도 증가" }, { "number": "5%", "text": "급속 라이트 미사일, 헤비 미사일, 헤비 어썰트 미사일 런처 연사속도 증가" } ], "header": "어썰트 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "헤비 미사일 및 헤비 어썰트 미사일 피해량 증가" }, { "number": "5%", "text": "모든 장갑 저항력 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "text": "·Позволяет установить ударные модули боевой живучести" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 7.5%", "text": "повышается скорость полёта тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 5%", "text": "повышается скорострельность скорострельных ПУ лёгких ракет, ПУ тяжёлых штурмовых ракет, ПУ тяжёлых ракет" } ], "header": "За каждую степень освоения навыка Ударные крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "увеличивается урон БЧ тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 5%", "text": "повышается сопротивляемость брони корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "text": "·可以装配突击损伤控制装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "重型导弹和重型攻击导弹最大速度加成" }, { "number": "5%", "text": "重型导弹发射器 、重型攻击导弹发射器和轻型快速导弹发射器射速加成" } ], "header": "重型突击巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "重型导弹和重型攻击导弹伤害加成" }, { "number": "5%", "text": "装甲抗性加成" } ], "header": "艾玛巡洋舰操作每升一级:" } ] }, "typeID": 12019 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "text": "·Kann Angriffsschadensregulierer ausrüsten" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von leichten Lenkwaffen, schweren Lenkwaffen und schweren Angriffslenkwaffen" }, { "number": "3%", "text": "Bonus auf alle Schild- und Panzerungsresistenzen" } ], "header": "Minmatar Cruiser Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Explosionsgeschwindigkeit von schweren Lenkwaffen und schweren Angriffslenkwaffen" }, { "number": "5%", "text": "Bonus auf die Feuerrate von Werfern für leichte Lenkwaffen, schwere Lenkwaffen sowie schwere Angriffslenkwaffen" } ], "header": "Heavy Assault Cruisers Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile, Heavy Missile and Heavy Assault Missile damage" }, { "number": "3%", "text": "bonus to all shield and armor resistances" } ], "header": "Minmatar Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile explosion velocity" }, { "number": "5%", "text": "bonus to Light Missile, Heavy Missile and Heavy Assault Missile launcher rate of fire" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "text": "·Es posible equipar controles de daños por asalto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de los misiles ligeros, los misiles pesados y los misiles de asalto pesados." }, { "number": "3%", "text": "de bonificación a todas las resistencias de blindaje y escudo." } ], "header": "Bonificaciones de Crucero minmatariano (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la velocidad de explosión de los misiles pesados y los misiles de asalto pesados." }, { "number": "5%", "text": "de bonificación a la cadencia de tiro de los lanzamisiles ligeros, los lanzamisiles pesados y los lanzamisiles de asalto pesados." } ], "header": "Bonificaciones de Cruceros de asalto pesados (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "text": "·Peut être équipé des contrôles des dégâts d'assaut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus aux dégâts des missiles légers, missiles lourds et missiles d'assaut lourds" }, { "number": "3%", "text": "de bonus à toutes les résistances de bouclier et de blindage" } ], "header": " Bonus (par niveau de compétence) Croiseur minmatar :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la vitesse d'explosion des missiles lourds et des missiles d'assaut lourds" }, { "number": "5%", "text": "de bonus à la cadence de tir des lance-missiles légers, lance-missiles lourds et lance-missiles d'assaut lourds" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'assaut lourds :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Light Missile, Heavy Missile and Heavy Assault Missile damage" }, { "number": "3%", "text": "bonus to all shield and armor resistances" } ], "header": "Minmatar Cruiser bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Heavy Missile and Heavy Assault Missile explosion velocity" }, { "number": "5%", "text": "bonus to Light Missile, Heavy Missile and Heavy Assault Missile launcher rate of fire" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "text": "·アサルトダメージ制御を装備可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "ライトミサイル、ヘビーミサイル、ヘビーアサルトミサイルのダメージが増加" }, { "number": "3%", "text": "全てのシールドとアーマーのレジスタンスが増加" } ], "header": "ミンマター巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "ヘビーミサイルとヘビーアサルトミサイルの爆発速度上昇" }, { "number": "5%", "text": "ライトミサイル、ヘビーミサイル及びヘビーアサルトミサイルランチャーの発射間隔が短縮" } ], "header": "強襲型巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "text": "·어썰트 데미지 컨트롤 장착가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "라이트 미사일, 헤비 미사일, 헤비 어썰트 미사일 피해량 증가" }, { "number": "3%", "text": "실드 및 장갑 저항력 증가" } ], "header": "민마타 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "헤비 미사일, 헤비 어썰트 미사일 폭발속도 증가" }, { "number": "5%", "text": "라이트 미사일, 헤비 미사일, 헤비 어썰트 미사일 연사속도 증가" } ], "header": "어썰트 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "text": "·Позволяет установить ударные модули боевой живучести" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "бонус к урону от лёгких ракет, тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 3%", "text": "бонус к сопротивляемости щитов и брони всем видам воздействия" } ], "header": "За каждую степень освоения навыка Минматарские крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "бонус к скорости распространения взрыва тяжёлых ракет и тяжёлых штурмовых ракет" }, { "number": "на 5%", "text": "бонус к скорострельности установок для лёгких и тяжёлых ракет, а также тяжёлых штурмовых ракет" } ], "header": "За каждую степень освоения навыка Ударные крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "text": "·可以装配突击损伤控制装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "轻型导弹、重型导弹和重型攻击导弹伤害加成" }, { "number": "3%", "text": "护盾和装甲抗性加成" } ], "header": "米玛塔尔巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "重型导弹和重型攻击导弹爆炸速度加成" }, { "number": "5%", "text": "轻型导弹、 重型导弹 和 重型攻击导弹发射器射速加成" } ], "header": "重型突击巡洋舰操作每升一级:" } ] }, "typeID": 12015 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Kann Module für Warpstörfeldgenerator und Anziehungsfeldgenerator ausrüsten" }, { "number": "20%", "text": "Bonus auf alle Panzerungsresistenzen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf die optimale Reichweite von mittelgroßen Energiegeschütztürmen" }, { "number": "5%", "text": "Bonus auf die Reichweite von Warpstörfeldgeneratoren" } ], "header": "Heavy Interdiction Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "10%", "text": "Reduktion der Aktivierungskosten von mittelgroßen Energiegeschütztürmen" }, { "number": "5%", "text": "Bonus auf den Schaden von mittelgroßen Energiegeschütztürmen" } ], "header": "Amarr Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "number": "20%", "text": "bonus to all armor resistances" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Medium Energy Turret optimal range" }, { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "reduction in Medium Energy Turret activation cost" }, { "number": "5%", "text": "bonus to Medium Energy Turret damage" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar módulos de generador de campo disruptor de warp y generador de campo cinosural." }, { "number": "20%", "text": "de bonificación a todas las resistencias de blindaje." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance óptimo de la torreta de energía mediana." }, { "number": "5%", "text": "de bonificación al alcance del generador de campo disruptor de warp." } ], "header": "Bonificaciones de Cruceros interdictores pesados (por nivel de habilidad):" }, { "bonuses": [ { "number": "10%", "text": "de reducción del coste de activación de la torreta de energía mediana." }, { "number": "5%", "text": "de bonificación al daño de la torreta de energía mediana." } ], "header": "Bonificaciones de Crucero amarriano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut équiper des modules générateur de champ perturbateur de warp et générateur de champ cynosural" }, { "number": "20%", "text": "de bonus à toutes les résistances de blindage" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus à la portée optimale de la tourelle à énergie intermédiaire" }, { "number": "5%", "text": "de bonus à la portée du générateur de champ perturbateur de warp" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'interdiction lourds :" }, { "bonuses": [ { "number": "10%", "text": "de réduction du coût d'activation des tourelles à énergie intermédiaires" }, { "number": "5%", "text": "de bonus aux dégâts de la tourelle à énergie intermédiaire" } ], "header": " Bonus (par niveau de compétence) Croiseur amarr :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "number": "20%", "text": "bonus to all armor resistances" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Medium Energy Turret optimal range" }, { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "10%", "text": "reduction in Medium Energy Turret activation cost" }, { "number": "5%", "text": "bonus to Medium Energy Turret damage" } ], "header": "Amarr Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·ワープ妨害フィールドジェネレーターとサイノシュラルフィールドジェネレーターを装備可能" }, { "number": "20%", "text": "全てのアーマーレジスタンスが増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "中型エネルギータレットの最適射程距離が拡大" }, { "number": "5%", "text": "ワープ妨害フィールドジェネレーターの範囲にボーナス" } ], "header": "ワープ妨害型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "10%", "text": "中型エネルギータレットの起動コストが軽減" }, { "number": "5%", "text": "中型エネルギータレットのダメージが増加" } ], "header": "アマー巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·워프 디스럽션 필드 생성기 및 사이노슈럴 필드 생성기 장착 가능" }, { "number": "20%", "text": "모든 장갑 저항력 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "중형 에너지 터렛 최적사거리 증가" }, { "number": "5%", "text": "워프 디스럽션 필드 생성기 사거리 증가" } ], "header": "인터딕터 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "10%", "text": "중형 에너지 터렛 활성화 비용 감소" }, { "number": "5%", "text": "중형 에너지 터렛 피해량 증가" } ], "header": "아마르 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Возможно оснащение бортовым варп-заградителем и приводным маяком" }, { "number": "на 20%", "text": "повышается сопротивляемость брони корабля всем видам воздействия" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается оптимальная дальность ведения огня из средних лазерных орудий" }, { "number": "на 5%", "text": "бонус к дальности действия бортового варп-заградителя" } ], "header": "За каждую степень освоения навыка Заградительные крейсеры:" }, { "bonuses": [ { "number": "на 10%", "text": "сокращается расход энергии при ведении огня из средних лазерных орудий" }, { "number": "на 5%", "text": "увеличивается урон средних лазерных орудий" } ], "header": "За каждую степень освоения навыка Амаррские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以装配跃迁扰断力场发生器和诱导力场发生器装备" }, { "number": "20%", "text": "装甲抗性加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "中型能量炮台最佳射程加成" }, { "number": "5%", "text": "跃迁扰断力场发生器的范围扩大" } ], "header": "重型拦截巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "10%", "text": "中型能量炮台启动消耗减少" }, { "number": "5%", "text": "中型能量炮台伤害加成" } ], "header": "艾玛巡洋舰操作每升一级:" } ] }, "typeID": 12017 }, { "traits_de": { "role": { "bonuses": [ { "number": "50%", "text": "Reduktion des Mikrowarpantrieb-Signaturradius" }, { "text": "·Kann Angriffsschadensregulierer ausrüsten" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "Bonus auf die Nachführungsgeschwindigkeit von mittleren Hybridgeschütztürmen" }, { "number": "5%", "text": "Bonus auf den Schaden von mittelgroßen Hybridgeschütztürmen" } ], "header": "Heavy Assault Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die optimale Reichweite von mittelgroßen Hybridgeschütztürmen" }, { "number": "4%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Caldari Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Medium Hybrid Turret tracking speed" }, { "number": "5%", "text": "bonus to Medium Hybrid Turret damage" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret optimal range" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "50%", "text": "de reducción de la penalización de radio de la señal del motor de microwarp." }, { "text": "·Es posible equipar controles de daños por asalto." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida mediana." }, { "number": "5%", "text": "de bonificación al daño de la torreta híbrida mediana." } ], "header": "Bonificaciones de Cruceros de asalto pesados (por nivel de habilidad):" }, { "bonuses": [ { "number": "7.5%", "text": "de bonificación al alcance óptimo de la torreta híbrida mediana." }, { "number": "4%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificaciones de Crucero caldari (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "50%", "text": "de réduction à la pénalité de rayon de signature des propulseurs de microwarp" }, { "text": "·Peut être équipé des contrôles des dégâts d'assaut" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "de bonus à la vitesse de poursuite des tourelles hybrides intermédiaires" }, { "number": "5%", "text": "de bonus aux dégâts des tourelles hybrides intermédiaires" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'assaut lourds :" }, { "bonuses": [ { "number": "7.5%", "text": "de bonus à la portée optimale des tourelles hybrides intermédiaires" }, { "number": "4%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": " Bonus (par niveau de compétence) Croiseur caldari :" } ] }, "traits_it": { "role": { "bonuses": [ { "number": "50%", "text": "reduction in Microwarpdrive signature radius penalty" }, { "text": "·Can fit Assault Damage Controls" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "bonus to Medium Hybrid Turret tracking speed" }, { "number": "5%", "text": "bonus to Medium Hybrid Turret damage" } ], "header": "Heavy Assault Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "7.5%", "text": "bonus to Medium Hybrid Turret optimal range" }, { "number": "4%", "text": "bonus to all shield resistances" } ], "header": "Caldari Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "number": "50%", "text": "マイクロワープドライブのシグネチャ半径ペナルティが軽減" }, { "text": "·アサルトダメージ制御を装備可能" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "中型ハイブリッドタレットの追跡速度が上昇" }, { "number": "5%", "text": "中型ハイブリッドタレットのダメージが増加" } ], "header": "強襲型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "7.5%", "text": "中型ハイブリッドタレットの最適射程距離が拡大" }, { "number": "4%", "text": "全てのシールドレジスタンスが増加" } ], "header": "カルダリ巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "number": "50%", "text": "마이크로 워프 드라이브 시그니처 반경 페널티 감소" }, { "text": "·어썰트 데미지 컨트롤 장착가능" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "중형 하이브리드 터렛 트래킹 속도 증가" }, { "number": "5%", "text": "중형 하이브리드 터렛 피해량 증가" } ], "header": "어썰트 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "7.5%", "text": "중형 하이브리드 터렛 최적사거리 증가" }, { "number": "4%", "text": "모든 실드 저항력 증가" } ], "header": "칼다리 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "number": "на 50%", "text": "уменьшается влияние микроварп-ускорителей на размер сигнатуры корабля" }, { "text": "·Позволяет установить ударные модули боевой живучести" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 5%", "text": "бонус к скорости наведения средних гибридных орудий" }, { "number": "на 5%", "text": "увеличивается урон боеприпасов средних гибридных орудий" } ], "header": "За каждую степень освоения навыка Ударные крейсеры:" }, { "bonuses": [ { "number": "на 7.5%", "text": "увеличивается оптимальная дальность ведения огня из средних гибридных орудий" }, { "number": "на 4%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "За каждую степень освоения навыка Калдарские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "number": "50%", "text": "微型跃迁推进器的信号半径惩罚加成" }, { "text": "·可以装配突击损伤控制装备" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "5%", "text": "中型混合炮台跟踪速度加成" }, { "number": "5%", "text": "中型混合炮台伤害加成" } ], "header": "重型突击巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "7.5%", "text": "中型混合炮台最佳射程加成" }, { "number": "4%", "text": "护盾抗性加成" } ], "header": "加达里巡洋舰操作每升一级:" } ] }, "typeID": 12011 }, { "traits_de": { "role": { "bonuses": [ { "text": "·Kann Module für Warpstörfeldgenerator und Anziehungsfeldgenerator ausrüsten" }, { "number": "20%", "text": "Bonus auf alle Schildresistenzen" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "Bonus auf den Präzisionsabfall von mittelgroßen Projektilgeschütztürmen" }, { "number": "5%", "text": "Bonus auf die Reichweite von Warpstörfeldgeneratoren" } ], "header": "Heavy Interdiction Cruisers Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf die Feuerrate von mittelgroßen Projektilgeschütztürmen" }, { "number": "5%", "text": "Bonus auf den Schaden von mittelgroßen Projektilgeschütztürmen" } ], "header": "Minmatar Cruiser Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "number": "20%", "text": "bonus to all shield resistances" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Medium Projectile Turret falloff" }, { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Projectile Turret rate of fire" }, { "number": "5%", "text": "bonus to Medium Projectile Turret damage" } ], "header": "Minmatar Cruiser bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "text": "·Es posible equipar módulos de generador de campo disruptor de warp y generador de campo cinosural." }, { "number": "20%", "text": "de bonificación a todas las resistencias de escudo." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta de proyectiles mediana." }, { "number": "5%", "text": "de bonificación al alcance del generador de campo disruptor de warp." } ], "header": "Bonificaciones de Cruceros interdictores pesados (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación a la cadencia de tiro de la torreta de proyectiles mediana." }, { "number": "5%", "text": "de bonificación al daño de la torreta de proyectiles mediana." } ], "header": "Bonificaciones de Crucero minmatariano (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "text": "·Peut équiper des modules générateur de champ perturbateur de warp et générateur de champ cynosural" }, { "number": "20%", "text": "de bonus à toutes les résistances de bouclier" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "de bonus de distance de perte des tourelles à projectiles intermédiaires" }, { "number": "5%", "text": "de bonus à la portée du générateur de champ perturbateur de warp" } ], "header": " Bonus (par niveau de compétence) Croiseurs d'interdiction lourds :" }, { "bonuses": [ { "number": "5%", "text": "de bonus à la cadence de tir des tourelles à projectiles intermédiaires" }, { "number": "5%", "text": "de bonus aux dégâts de la tourelle à projectiles intermédiaires" } ], "header": " Bonus (par niveau de compétence) Croiseur minmatar :" } ] }, "traits_it": { "role": { "bonuses": [ { "text": "·Can fit Warp Disruption Field Generator and Cynosural Field Generator modules" }, { "number": "20%", "text": "bonus to all shield resistances" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "bonus to Medium Projectile Turret falloff" }, { "number": "5%", "text": "bonus to Warp Disruption Field Generator range" } ], "header": "Heavy Interdiction Cruisers bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Medium Projectile Turret rate of fire" }, { "number": "5%", "text": "bonus to Medium Projectile Turret damage" } ], "header": "Minmatar Cruiser bonuses (per skill level):" } ] }, "traits_ja": { "role": { "bonuses": [ { "text": "·ワープ妨害フィールドジェネレーターとサイノシュラルフィールドジェネレーターを装備可能" }, { "number": "20%", "text": "全てのシールドレジスタンスが増加" } ], "header": "性能ボーナス:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "中型プロジェクタイルタレットの精度低下範囲が拡大" }, { "number": "5%", "text": "ワープ妨害フィールドジェネレーターの範囲にボーナス" } ], "header": "ワープ妨害型巡洋艦ボーナス(スキルレベルごとに):" }, { "bonuses": [ { "number": "5%", "text": "中型プロジェクタイルタレットの発射間隔が短縮" }, { "number": "5%", "text": "中型プロジェクタイルタレットのダメージが増加" } ], "header": "ミンマター巡洋艦ボーナス(スキルレベルごとに):" } ] }, "traits_ko": { "role": { "bonuses": [ { "text": "·워프 디스럽션 필드 생성기 및 사이노슈럴 필드 생성기 장착 가능" }, { "number": "20%", "text": "모든 실드 저항력 증가" } ], "header": "역할 보너스:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "중형 발사체 터렛 유효사거리 증가" }, { "number": "5%", "text": "워프 디스럽션 필드 생성기 사거리 증가" } ], "header": "인터딕터 크루저 보너스 (스킬 레벨당):" }, { "bonuses": [ { "number": "5%", "text": "중형 발사체 터렛 연사속도 증가" }, { "number": "5%", "text": "중형 발사체 터렛 피해량 증가" } ], "header": "민마타 크루저 보너스 (스킬 레벨당):" } ] }, "traits_ru": { "role": { "bonuses": [ { "text": "·Возможно оснащение бортовым варп-заградителем и приводным маяком" }, { "number": "на 20%", "text": "повышается сопротивляемость щитов корабля всем видам воздействия" } ], "header": "Профильные особенности проекта:" }, "skills": [ { "bonuses": [ { "number": "на 10%", "text": "увеличивается добавочная дальность ведения огня из средних баллистических орудий" }, { "number": "на 5%", "text": "бонус к дальности действия бортового варп-заградителя" } ], "header": "За каждую степень освоения навыка Заградительные крейсеры:" }, { "bonuses": [ { "number": "на 5%", "text": "повышается скорострельность средних баллистических орудий" }, { "number": "на 5%", "text": "увеличивается урон боеприпасов средних баллистических орудий" } ], "header": "За каждую степень освоения навыка Минматарские крейсеры:" } ] }, "traits_zh": { "role": { "bonuses": [ { "text": "·可以装配跃迁扰断力场发生器和诱导力场发生器装备" }, { "number": "20%", "text": "护盾抗性加成" } ], "header": "特有加成:" }, "skills": [ { "bonuses": [ { "number": "10%", "text": "中型射弹炮台失准范围加成" }, { "number": "5%", "text": "跃迁扰断力场发生器的范围扩大" } ], "header": "重型拦截巡洋舰操作每升一级:" }, { "bonuses": [ { "number": "5%", "text": "中型射弹炮台射速加成" }, { "number": "5%", "text": "中型射弹炮台伤害加成" } ], "header": "米玛塔尔巡洋舰操作每升一级:" } ] }, "typeID": 12013 }, { "traits_de": { "role": { "bonuses": [ { "number": "100%", "text": "Bonus auf den Schaden von großen Hybridgeschütztürmen" }, { "number": "100%", "text": "Bonus auf die Reichweite und Geschwindigkeit von Traktorstrahlen" }, { "number": "70%", "text": "Reduzierte Verzögerung bei Reaktivierung von Mikrosprungantrieben" }, { "text": "·Es können Bastionsmodule eingebaut werden" } ], "header": "Funktionsbonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "Bonus auf die Leistung von Panzerungsreparatursystemen" }, { "number": "7.5%", "text": "Bonus auf die Zielverfolgungsgeschwindigkeit von großen Hybridgeschütztürmen" } ], "header": "Marauders Boni (je Skillstufe):" }, { "bonuses": [ { "number": "5%", "text": "Bonus auf den Schaden von großen Hybridgeschütztürmen" }, { "number": "10%", "text": "Bonus auf den Präzisionsabfall von großen Hybridgeschütztürmen" } ], "header": "Gallente Battleship Boni (je Skillstufe):" } ] }, "traits_en-us": { "role": { "bonuses": [ { "number": "100%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "100%", "text": "bonus to Tractor Beam range and velocity" }, { "number": "70%", "text": "reduction in Micro Jump Drive reactivation delay" }, { "text": "·Can fit Bastion modules" } ], "header": "Role Bonus:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "bonus to Armor Repairer amount" }, { "number": "7.5%", "text": "bonus to Large Hybrid Turret tracking speed" } ], "header": "Marauders bonuses (per skill level):" }, { "bonuses": [ { "number": "5%", "text": "bonus to Large Hybrid Turret damage" }, { "number": "10%", "text": "bonus to Large Hybrid Turret falloff" } ], "header": "Gallente Battleship bonuses (per skill level):" } ] }, "traits_es": { "role": { "bonuses": [ { "number": "100%", "text": "de bonificación al daño de la torreta híbrida grande." }, { "number": "100%", "text": "de bonificación al alcance y la velocidad de los rayos tractores." }, { "number": "70%", "text": "de reducción de la demora de reactivación del motor de microsalto." }, { "text": "·Es posible equipar módulos de baluarte." } ], "header": "Bonificación por función:" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonificación a la eficiencia de los reparadores de blindaje." }, { "number": "7.5%", "text": "de bonificación a la velocidad de rastreo de la torreta híbrida grande." } ], "header": "Bonificaciones de Depredadores (por nivel de habilidad):" }, { "bonuses": [ { "number": "5%", "text": "de bonificación al daño de la torreta híbrida grande." }, { "number": "10%", "text": "de bonificación al alcance efectivo de la torreta híbrida grande." } ], "header": "Bonificaciones de Acorazado gallente (por nivel de habilidad):" } ] }, "traits_fr": { "role": { "bonuses": [ { "number": "100%", "text": "de bonus aux dégâts de la grande tourelle à énergie" }, { "number": "100%", "text": "de bonus à la portée et vitesse du rayon de tractage" }, { "number": "70%", "text": "de réduction du temps de réactivation du propulseur de microsauts" }, { "text": "·Peut installer des modules de bastion" } ], "header": "Bonus de rôle :" }, "skills": [ { "bonuses": [ { "number": "7.5%", "text": "de bonus au montant des réparateurs de blindage ================================================ FILE: tests/test_locale/file_dialog.py ================================================ # noinspection PyPackageRequirements import os import sys import wx script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..'))) from _development.helpers_locale import GetPath, GetUnicodePath class MyForm(wx.Frame): # ---------------------------------------------------------------------- def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, "CTRL-O to open, CTRL-S to save", size=(500, 500)) # Add a panel so it looks the correct on all platforms panel = wx.Panel(self, wx.ID_ANY) SAVE_FILE_ID = wx.NewId() self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID) LOAD_FILE_ID = wx.NewId() self.Bind(wx.EVT_MENU, self.loadFile, id=LOAD_FILE_ID) accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('O'), LOAD_FILE_ID), (wx.ACCEL_CTRL, ord('S'), SAVE_FILE_ID)] ) self.SetAcceleratorTable(accel_tbl) # ---------------------------------------------------------------------- def loadFile(self, event): with wx.FileDialog( self, "Open", "", "", "Python files (*.py)|*.py", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST ) as dlg: dlg.ShowModal() path = dlg.GetPath() try: os_walk_without_codec = GetPath(path) except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e: os_walk_without_codec = e try: os_walk_with_system_codec = GetPath(path, None, sys.getdefaultencoding()) except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e: os_walk_with_system_codec = e try: os_walk_unicode_without_codec = GetUnicodePath(path) except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e: os_walk_unicode_without_codec = e try: os_walk_unicode_with_system_codec = GetUnicodePath(path, None, sys.getdefaultencoding()) except (UnicodeEncodeError, UnicodeTranslateError, UnicodeError, UnicodeDecodeError, UnicodeWarning, TypeError) as e: os_walk_unicode_with_system_codec = e print("Simple print:") print(path) print("Type:") print((type(path))) print("OS Walk: No Codec:") print(os_walk_without_codec) print("OS Walk: Default System Codec:") print(os_walk_with_system_codec) print("OS Unicode Walk: No Codec:") print(os_walk_unicode_without_codec) print("OS Unicode Walk: Default System Codec:") print(os_walk_unicode_with_system_codec) # ---------------------------------------------------------------------- def saveFile(self, event): with wx.FileDialog( self, "Save As", "", "", "Python files (*.py)|*.py", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT ) as dlg: dlg.ShowModal() dlg.GetPath() # Run the program if __name__ == "__main__": app = wx.App(False) frame = MyForm() frame.Show() app.MainLoop() ================================================ FILE: tests/test_locale/readme.md ================================================ Use this to dynamically test languages. ================================================ FILE: tests/test_locale/test_Pyfa/test_codec_english.py ================================================ # English import os import platform import sys script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from _development.helpers_locale import GetPath def test_codec_english(): use_codec = { "Windows": "cp1252", "Linux" : "utf8", "Darwin" : "utf8", } os_name = platform.system() current_directory = os.path.dirname(os.path.abspath(__file__)) try: decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." try: with open(decoded_file, 'r') as f: read_data = f.read() f.closed except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." assert read_data == "True" ================================================ FILE: tests/test_locale/test_Pyfa/testcodec ================================================ True ================================================ FILE: tests/test_locale/test_os_walk.py ================================================ import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..'))) from _development.helpers_locale import GetPath def test_os_walk(): current_directory = os.path.dirname(os.path.abspath(str(__file__))) subfolders = os.listdir(current_directory) subfolders = [e for e in subfolders if not (e.endswith(".py") or e.endswith(".pyc") or e.endswith(".md"))] subfolder_count = 0 for subfolder in subfolders: subdir = GetPath(current_directory, subfolder) testfile = GetPath(subdir, "testcodec") if "__pycache__" in testfile: # Grabbed a Travis temp folder, skip any assertions, but count it. subfolder_count += 1 continue # noinspection PyBroadException try: with open(testfile, 'r') as f: read_data = f.read() # noinspection PyStatementEffect f.closed except: print("Test File:") print(testfile) assert False, "Failed to read file." read_data = read_data.replace("\n", "") assert read_data == "True" subfolder_count += 1 assert len(subfolders) == subfolder_count ================================================ FILE: tests/test_locale/test_знаф/test_codec_russian.py ================================================ # Russian import os import platform import sys script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from _development.helpers_locale import GetPath def test_codec_russian(): use_codec = { "Windows": "cp1251", "Linux" : "utf8", "Darwin" : "mac_cyrillic", } os_name = platform.system() current_directory = os.path.dirname(os.path.abspath(__file__)) try: decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." try: with open(decoded_file, 'r') as f: read_data = f.read() f.closed except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." assert read_data == "True" ================================================ FILE: tests/test_locale/test_знаф/testcodec ================================================ True ================================================ FILE: tests/test_locale/test_פטכש/test_codec_hebrew.py ================================================ # Hebrew import os import platform import sys script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from _development.helpers_locale import GetPath def test_codec_hebrew(): use_codec = { "Windows": "cp1252", "Linux" : "utf8", "Darwin" : "utf8", } os_name = platform.system() current_directory = os.path.dirname(os.path.abspath(__file__)) try: decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." try: with open(decoded_file, 'r') as f: read_data = f.read() f.closed except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." assert read_data == "True" ================================================ FILE: tests/test_locale/test_פטכש/testcodec ================================================ True ================================================ FILE: tests/test_locale/test_测试/test_codec_chinese_simplified.py ================================================ # Chinese (Simplified) import os import platform import sys script_dir = os.path.dirname(os.path.abspath(__file__)) # Add root to python paths, this allows us to import submodules sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from _development.helpers_locale import GetPath def test_codec_chinese_simplified(): use_codec = { "Windows": "cp1252", "Linux" : "utf8", "Darwin" : "utf8", } os_name = platform.system() current_directory = os.path.dirname(os.path.abspath(__file__)) try: decoded_file = GetPath(current_directory, "testcodec", use_codec[os_name]) except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to decrypt file path." try: with open(decoded_file, 'r') as f: read_data = f.read() f.closed except: assert False, "Specified codec (" + use_codec[os_name] + ") failed to read file." assert read_data == "True" ================================================ FILE: tests/test_locale/test_测试/testcodec ================================================ True ================================================ FILE: tests/test_modules/test_eos/test_gamedata.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) # noinspection PyPackageRequirements def test_race(DB, RifterFit, KeepstarFit): """ Test race code """ assert RifterFit.ship.item.race == 'minmatar' assert KeepstarFit.ship.item.race == 'upwell' ================================================ FILE: tests/test_modules/test_eos/test_modifiedAttributeDict.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import math import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) script_dir = os.path.realpath(os.path.join(script_dir, '..', '..', '..')) print(script_dir) sys.path.append(script_dir) # noinspection PyPackageRequirements def test_multiply_stacking_penalties(DB, Saveddata, RifterFit): """ Tests the stacking penalties under multiply """ char0 = Saveddata['Character'].getAll0() RifterFit.character = char0 starting_em_resist = RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") mod = Saveddata['Module'](DB['db'].getItem("EM Ward Amplifier II")) item_modifer = mod.item.getAttribute("emDamageResistanceBonus") RifterFit.calculateModifiedAttributes() for _ in range(10): if _ == 0: # First run we have no modules, se don't try and calculate them. calculated_resist = RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") else: # Calculate what our next resist should be # Denominator: [math.exp((i / 2.67) ** 2.0) for i in xrange(8)] current_effectiveness = 1 / math.exp(((_ - 1) / 2.67) ** 2.0) new_item_modifier = 1 + ((item_modifer * current_effectiveness) / 100) calculated_resist = (em_resist * new_item_modifier) # Add another resist module to our fit. RifterFit.modules.append(mod) # Modify our fit so that Eos generates new numbers for us. RifterFit.clear() RifterFit.calculateModifiedAttributes() em_resist = RifterFit.ship.getModifiedItemAttr("shieldEmDamageResonance") assert em_resist == calculated_resist # print(str(em_resist) + "==" + str(calculated_resist)) ================================================ FILE: tests/test_modules/test_eos/test_saveddata/test_booster.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..', '..'))) # noinspection PyPackageRequirements def test_itemModifiedAttributes(DB, StrongBluePillBooster): assert StrongBluePillBooster.itemModifiedAttributes is not None def test_isInvalid(DB, StrongBluePillBooster): assert StrongBluePillBooster.isInvalid is False def test_slot(DB, StrongBluePillBooster): assert StrongBluePillBooster.slot == 1 def test_item(DB, Gamedata, StrongBluePillBooster): assert isinstance(StrongBluePillBooster.item, Gamedata['Item']) def test_clear(DB, StrongBluePillBooster): try: StrongBluePillBooster.clear() assert True except: assert False ================================================ FILE: tests/test_modules/test_eos/test_saveddata/test_fit_2.py ================================================ # TODO: Drop the `_2` from the file name once one of our fit files are renamed # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..', '..'))) # noinspection PyPackageRequirements def test_calculateModifiedAttributes(DB, RifterFit, KeepstarFit): rifter_modifier_dicts = { '_ModifiedAttributeDict__affectedBy' : 26, '_ModifiedAttributeDict__forced' : 0, '_ModifiedAttributeDict__intermediary' : 0, '_ModifiedAttributeDict__modified' : 26, '_ModifiedAttributeDict__multipliers' : 22, '_ModifiedAttributeDict__overrides' : 0, '_ModifiedAttributeDict__penalizedMultipliers': 0, '_ModifiedAttributeDict__postIncreases' : 0, '_ModifiedAttributeDict__preAssigns' : 0, '_ModifiedAttributeDict__preIncreases' : 4, } # Test before calculating attributes for test_dict in rifter_modifier_dicts: assert len(getattr(RifterFit.ship.itemModifiedAttributes, test_dict)) == 0 RifterFit.calculateModifiedAttributes() for test_dict in rifter_modifier_dicts: assert len(getattr(RifterFit.ship.itemModifiedAttributes, test_dict)) == rifter_modifier_dicts[test_dict] # Keepstars don't have any basic skills that would change their attributes keepstar_modifier_dicts = { '_ModifiedAttributeDict__affectedBy' : 0, '_ModifiedAttributeDict__forced' : 0, '_ModifiedAttributeDict__intermediary' : 0, '_ModifiedAttributeDict__modified' : 0, '_ModifiedAttributeDict__multipliers' : 0, '_ModifiedAttributeDict__overrides' : 0, '_ModifiedAttributeDict__penalizedMultipliers': 0, '_ModifiedAttributeDict__postIncreases' : 0, '_ModifiedAttributeDict__preAssigns' : 0, '_ModifiedAttributeDict__preIncreases' : 0, } # quick hack to disable test. Need to rewrite ttests to not point to the DB assert 1==1 return # Test before calculating attributes for test_dict in keepstar_modifier_dicts: assert len(getattr(KeepstarFit.ship.itemModifiedAttributes, test_dict)) == 0 KeepstarFit.calculateModifiedAttributes() for test_dict in keepstar_modifier_dicts: assert len(getattr(KeepstarFit.ship.itemModifiedAttributes, test_dict)) == keepstar_modifier_dicts[test_dict] def test_calculateModifiedAttributes_withProjected(DB, RifterFit, HeronFit): # TODO: This test is not currently functional or meaningful as projections are not happening correctly. # This is true for all tested branches (master, dev, etc) rifter_modifier_dicts = { '_ModifiedAttributeDict__affectedBy' : 26, '_ModifiedAttributeDict__forced' : 0, '_ModifiedAttributeDict__intermediary' : 0, '_ModifiedAttributeDict__modified' : 26, '_ModifiedAttributeDict__multipliers' : 22, '_ModifiedAttributeDict__overrides' : 0, '_ModifiedAttributeDict__penalizedMultipliers': 0, '_ModifiedAttributeDict__postIncreases' : 0, '_ModifiedAttributeDict__preAssigns' : 0, '_ModifiedAttributeDict__preIncreases' : 4, } # quick hack to disable test. Need to rewrite ttests to not point to the DB assert 1==1 return # Test before calculating attributes for test_dict in rifter_modifier_dicts: assert len(getattr(RifterFit.ship.itemModifiedAttributes, test_dict)) == 0 # Get base stats max_target_range_1 = RifterFit.ship.getModifiedItemAttr('maxTargetRange') scan_resolution_1 = RifterFit.ship.getModifiedItemAttr('scanResolution') RifterFit.clear() RifterFit.calculateModifiedAttributes() # Get self calculated stats max_target_range_2 = RifterFit.ship.getModifiedItemAttr('maxTargetRange') scan_resolution_2 = RifterFit.ship.getModifiedItemAttr('scanResolution') RifterFit.clear() # Project Heron fit onto Rifter RifterFit._Fit__projectedFits[HeronFit.ID] = HeronFit # DB['saveddata_session'].commit() # DB['saveddata_session'].flush() # DB['saveddata_session'].refresh(HeronFit) RifterFit.calculateModifiedAttributes() # Get stats with projections max_target_range_3 = RifterFit.ship.getModifiedItemAttr('maxTargetRange') scan_resolution_3 = RifterFit.ship.getModifiedItemAttr('scanResolution') RifterFit.clear() RifterFit.calculateModifiedAttributes() # Get stats with projections max_target_range_4 = RifterFit.ship.getModifiedItemAttr('maxTargetRange') scan_resolution_4 = RifterFit.ship.getModifiedItemAttr('scanResolution') RifterFit.clear() HeronFit.calculateModifiedAttributes(targetFit=RifterFit) RifterFit.calculateModifiedAttributes() # Get stats with projections max_target_range_5 = RifterFit.ship.getModifiedItemAttr('maxTargetRange') scan_resolution_5 = RifterFit.ship.getModifiedItemAttr('scanResolution') for test_dict in rifter_modifier_dicts: assert len(getattr(RifterFit.ship.itemModifiedAttributes, test_dict)) == rifter_modifier_dicts[test_dict] ================================================ FILE: tests/test_modules/test_eos/test_utils/test_stats.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..', '..'))) import pytest from eos.utils.stats import DmgTypes, RRTypes @pytest.fixture() def setup_damage_types(): return DmgTypes(10, 20, 30, 40) def test_dmgtypes_names(): assert DmgTypes.names() == ['em', 'thermal', 'kinetic', 'explosive'] assert DmgTypes.names(True) == ['em', 'th', 'kin', 'exp'] assert DmgTypes.names(short=True) == ['em', 'th', 'kin', 'exp'] def test_dmgtypes__repr(setup_damage_types): assert setup_damage_types.__repr__() == '' def test_dmgtypes_names_lambda(): assert DmgTypes.names(False, lambda v: v.capitalize()) == ['Em', 'Thermal', 'Kinetic', 'Explosive'] assert DmgTypes.names(True, lambda v: v.upper()) == ['EM', 'TH', 'KIN', 'EXP'] @pytest.fixture() def setup_rr_types(): return RRTypes(10, 20, 30, 40) def test_rrtypes_names(): assert RRTypes.names() == ['shield', 'armor', 'hull'] assert RRTypes.names(True) == ['shield', 'armor', 'hull'] assert RRTypes.names(ehpOnly=True) == ['shield', 'armor', 'hull'] assert RRTypes.names(False) == ['shield', 'armor', 'hull', 'capacitor'] def test_rrtypes__repr(setup_rr_types): assert setup_rr_types.__repr__() == '' def test_rrtypes_names_lambda(): assert RRTypes.names(True, lambda v: v.capitalize()) == ['Shield', 'Armor', 'Hull'] assert RRTypes.names(postProcessor=lambda v: v.upper(), ehpOnly=False) == ['SHIELD', 'ARMOR', 'HULL', 'CAPACITOR'] ================================================ FILE: tests/test_modules/test_gui/test_aboutData.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from gui.aboutData import versionString, licenses, developers, credits, description def test_aboutData(): """ Simple test to validate all about data exists """ assert versionString.__len__() > 0 assert licenses.__len__() > 0 assert developers.__len__() > 0 assert credits.__len__() > 0 assert description.__len__() > 0 ================================================ FILE: tests/test_modules/test_service/test_attribute.py ================================================ # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) from service.attribute import Attribute def test_attribute(): """ We don't really have much to test here, so throw a generic attribute at it and validate we get the expected results :return: """ sAttr = Attribute.getInstance() info = sAttr.getAttributeInfo("maxRange") assert info.attributeID == 54 assert type(info.attributeID) is int assert info.attributeName == 'maxRange' assert type(info.attributeName) is str assert info.defaultValue == 0.0 assert type(info.defaultValue) is float assert info.description == 'Distance below which range does not affect the to-hit equation.' assert type(info.description) is str assert info.displayName == 'Optimal Range' assert type(info.displayName) is str assert info.highIsGood is True assert type(info.highIsGood) is bool assert info.iconID == 1391 assert type(info.iconID) is int assert info.name == 'maxRange' assert type(info.name) is str assert info.published is True assert type(info.published) is bool assert info.unitID == 1 assert type(info.unitID) is int assert info.unit.ID == 1 assert type(info.unit.ID) is int assert info.unit.displayName == 'm' assert type(info.unit.displayName) is str assert info.unit.name == 'Length' assert type(info.unit.name) is str assert info.unit.unitID == 1 assert type(info.unit.unitID) is int assert info.unit.unitName == 'Length' assert type(info.unit.unitName) is str ================================================ FILE: tests/test_modules/test_service/test_fit.py ================================================ # Add root folder to python paths import os import sys script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..', '..', '..'))) # This import is here to hack around circular import issues import gui.mainFrame # noinspection PyPackageRequirements from service.fit import Fit def test_getAllFits(DB, RifterFit, KeepstarFit): assert len(Fit.getAllFits()) == 0 DB['db'].save(RifterFit) DB['db'].save(KeepstarFit) # For some reason in Travis this adds the first fit twice. WHY?!? assert len(Fit.getAllFits()) != 0 # Cleanup after ourselves DB['db'].remove(RifterFit) DB['db'].remove(KeepstarFit) def test_getFitsWithShip_RifterFit(DB, RifterFit): DB['db'].save(RifterFit) assert Fit.getFitsWithShip(587)[0][1] == 'My Rifter Fit' DB['db'].remove(RifterFit) ================================================ FILE: tests/test_placeholder.py ================================================ # This test does nothing. It just lets us right click and run all tests straight from the `tests` folder. def test_nothing(): assert True ================================================ FILE: tests/test_unread_desc.py ================================================ """ 2017/04/05: unread description tests module. """ # noinspection PyPackageRequirements import pytest # Add root folder to python paths # This must be done on every test in order to pass in Travis import os import sys # nopep8 import re script_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.realpath(os.path.join(script_dir, '..'))) sys._called_from_test = True # need db open for tests. (see eos/config.py#17 # This import is here to hack around circular import issues import gui.mainFrame # noinspection PyPep8 from service.port import Port, IPortUser """ NOTE: description character length is restricted 4hundred by EVE client. these things apply to multi byte environment too. o read xml fit data (and encode to utf-8 if need. o construct xml dom object, and extract "fitting" elements. o apply _resolve_ship method to each "fitting" elements. (time measurement o extract "hardware" elements from "fitting" element. o apply _resolve_module method to each "hardware" elements. (time measurement xml files: "jeffy_ja-en[99].xml" NOTE of @decorator: o Function to receive arguments of function to be decorated o A function that accepts the decorate target function itself as an argument o A function that accepts arguments of the decorator itself for local coverage: py.test --cov=./ --cov-report=html """ class PortUser(IPortUser): def on_port_processing(self, action, data=None): print(data) return True #stpw = Stopwatch('test measurementer') @pytest.fixture() def print_db_info(): # Output debug info import eos print() print("------------ data base connection info ------------") print(eos.db.saveddata_engine) print(eos.db.gamedata_engine) print() # noinspection PyUnusedLocal def test_import_xml(print_db_info): usr = PortUser() # for path in XML_FILES: xml_file = "jeffy_ja-en[99].xml" fit_count = int(re.search(r"\[(\d+)\]", xml_file).group(1)) fits = None with open(os.path.join(script_dir, xml_file), "r") as file_: srcString = file_.read() srcString = str(srcString, "utf-8") # (basestring, IPortUser, basestring) -> list[eos.saveddata.fit.Fit] usr.on_port_process_start() #stpw.reset() #with stpw: fits = Port.importXml(srcString, usr) assert fits is not None and len(fits) is fit_count ================================================ FILE: tox.ini ================================================ [tox] envlist = pep8 skipsdist = True [testenv] passenv = CI TRAVIS TRAVIS_* deps = -rrequirements.txt -rrequirements_test.txt basepython = python3.11 commands = py.test -vv --cov Pyfa tests2/ [testenv:pep8] deps = flake8 # TODO: Remove E731 and convert lambdas to defs commands = flake8 --exclude=.svn,CVS,.bzr,.hg,.git,__pycache__,venv,tests,.tox,build,dist,__init__.py,floatspin.py --ignore=E121,E126,E127,E128,E203,E731,F401,E722,E741 service gui eos utils config.py pyfa.py --max-line-length=165 ================================================ FILE: utils/__init__.py ================================================ ================================================ FILE: utils/cjk.py ================================================ def isCharCjk(char): # https://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode ranges = ( ('\u4e00', '\u9fff'), ('\u3400', '\u4dbf'), ('\u20000', '\u2a6df'), ('\u2a700', '\u2b73f'), ('\u2b740', '\u2b81f'), ('\u2b820', '\u2ceaf'), ('\uf900', '\ufaff'), ('\u2f800', '\u2fa1f'), ('\uac00', '\ud7af')) for low, high in ranges: if low <= char <= high: return True return False def isStringCjk(string): checked = set() for char in string: if char in checked: continue checked.add(char) if isCharCjk(char): return True return False ================================================ FILE: utils/deprecated.py ================================================ import warnings import functools def deprecated(func): """This is a decorator which can be used to mark functions as deprecated. It will result in a warning being emitted when the function is used.""" @functools.wraps(func) def new_func(*args, **kwargs): warnings.simplefilter('always', DeprecationWarning) # turn off filter warnings.warn("Call to deprecated function {}.".format(func.__name__), category=DeprecationWarning, stacklevel=2) warnings.simplefilter('default', DeprecationWarning) # reset filter return func(*args, **kwargs) return new_func ================================================ FILE: utils/repr.py ================================================ def makeReprStr(instance, spec=None): arg_list = [] for field in spec or (): if isinstance(field, str): repr_name, attr_name = field, field else: repr_name, attr_name = field attr_val = getattr(instance, attr_name, 'N/A') arg_list.append('{}={}'.format(repr_name, attr_val)) return '<{}({})>'.format(type(instance).__name__, ', '.join(arg_list)) ================================================ FILE: utils/stopwatch.py ================================================ # coding: utf-8 import time import os class Stopwatch: """ --- on python console --- import re from utils.stopwatch import Stopwatch # measurementor stpw = Stopwatch("test") # measurement re.sub def m_re_sub(t, set_count, executes, texts): t.reset() while set_count: set_count -= 1 with t: while executes: executes -= 1 ret = re.sub("[a|s]+", "-", texts) # stat string return str(t) # statistics loop: 1000(exec re.sub: 100000) m_re_sub(stpw, 1000, 100000, "asdfadsasdaasdfadsasda") ----------- records ----------- text: "asdfadsasda" 'elapsed record(ms): min=0.000602411446948, max=220.85578571' 'elapsed record(ms): min=0.000602411446948, max=217.331377504' text: "asdfadsasdaasdfadsasda" 'elapsed record(ms): min=0.000602411446948, max=287.784902967' 'elapsed record(ms): min=0.000602411432737, max=283.653264016' NOTE: about max The value is large only at the first execution, Will it be optimized, after that it will be significantly smaller """ # time.clock() is μs? 1/1000ms # https://docs.python.jp/2.7/library/time.html#time.clock _tfunc = time.clock if os.name == "nt" else time.time def __init__(self, name='', logger=None): self.name = name self.start = Stopwatch._tfunc() self.__last = self.start # __last field is means last checkpoint system clock value? self.logger = logger self.min = 0.0 self.max = 0.0 self.__first = True @property def stat(self): # :return: (float, float) return self.min, self.max @property def elapsed(self): # :return: time as ms return (Stopwatch._tfunc() - self.start) * 1000 @property def last(self): return self.__last * 1000 def __update_stat(self, v): # :param v: float unit of ms if self.__first: self.__first = False return if self.min == 0.0 or self.min > v: self.min = v if self.max < v: self.max = v def checkpoint(self, name=''): span = self.elapsed self.__update_stat(span) text = 'Stopwatch("{tname}") - {checkpoint} - {last:.6f}ms ({elapsed:.12f}ms elapsed)'.format( tname=self.name, checkpoint=str(name, "utf-8"), last=self.last, elapsed=span ).strip() self.__last = Stopwatch._tfunc() if self.logger: self.logger.debug(text) else: print(text) @staticmethod def CpuClock(): start = Stopwatch._tfunc() time.sleep(1) return Stopwatch._tfunc() - start def reset(self): # clear stat self.min = 0.0 self.max = 0.0 self.__first = True def __enter__(self): self.start = Stopwatch._tfunc() return self def __exit__(self, type_, value, traceback): # https://docs.python.org/2.7/reference/datamodel.html?highlight=__enter__#object.__exit__ # If the context was exited without an exception, all three arguments will be None self.checkpoint('finished') # ex: "type=None, value=None, traceback=None" # print "type=%s, value=%s, traceback=%s" % (type, value, traceback) return True def __repr__(self): return "elapsed record(ms): min=%s, max=%s" % self.stat ================================================ FILE: utils/strfunctions.py ================================================ """ string manipulation module """ import re def sequential_rep(text_, *args): # type: (basestring, tuple) -> basestring """ :param text_: string content :param args: like , , , , ... :return: if text_ length was zero or invalid parameters then no manipulation to text_ """ arg_len = len(args) if arg_len % 2 == 0 and isinstance(text_, str) and len(text_) > 0: i = 0 while i < arg_len: text_ = re.sub(args[i], args[i + 1], text_) i += 2 return text_ def replace_ltgt(text_): # type: (basestring) -> basestring """if fit name contained "<" or ">" then reprace to named html entity by EVE client. :param text_: string content of fit name from exported by EVE client. :return: if text_ is not instance of basestring then no manipulation to text_. """ return text_.replace("<", "<").replace(">", ">") if isinstance(text_, str) else text_ ================================================ FILE: utils/timer.py ================================================ import time class Timer: def __init__(self, name='', logger=None): self.name = name self.start = time.time() self.__last = self.start self.logger = logger @property def elapsed(self): return (time.time() - self.start) * 1000 @property def last(self): return (time.time() - self.__last) * 1000 def checkpoint(self, name=''): text = 'Timer - {timer} - {checkpoint} - {last:.2f}ms ({elapsed:.2f}ms elapsed)'.format( timer=self.name, checkpoint=name, last=self.last, elapsed=self.elapsed ).strip() self.__last = time.time() if self.logger: self.logger.debug(text) else: print(text) def __enter__(self): return self def __exit__(self, type, value, traceback): self.checkpoint('finished') pass class CountdownTimer: def __init__(self, timeout): self.timeout = timeout self.start = time.time() def elapsed(self): return time.time() - self.start def remainder(self): return max(self.timeout - self.elapsed(), 0) ================================================ FILE: version.yml ================================================ version: v2.66.3